@prisma-next/contract-authoring 0.3.0-dev.36 → 0.3.0-dev.37
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/README.md +2 -1
- package/dist/index.d.mts +14 -2
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +11 -6
- package/dist/index.mjs.map +1 -1
- package/package.json +3 -3
- package/src/builder-state.ts +8 -0
- package/src/contract-builder.ts +10 -0
- package/src/index.ts +1 -0
- package/src/table-builder.ts +8 -2
package/README.md
CHANGED
|
@@ -16,6 +16,7 @@ This package provides generic builder primitives that can be composed with targe
|
|
|
16
16
|
- **Type Helpers**: Provides generic type-level helpers for transforming builder states into contract structures
|
|
17
17
|
- **Composition Surface**: Enables target-family specific packages (e.g., `@prisma-next/sql-contract-ts`) to compose generic core with family-specific types
|
|
18
18
|
- **Defaults**: Reuses shared contract `ColumnDefault` for db-agnostic defaults (literal, function, and client-generated descriptors)
|
|
19
|
+
- **Foreign Keys Configuration**: Provides a `foreignKeys()` method on the base `ContractBuilder` to configure FK constraint and index emission behavior
|
|
19
20
|
|
|
20
21
|
## Package Status
|
|
21
22
|
|
|
@@ -35,7 +36,7 @@ This package was created in Phase 2 of the contract authoring extraction. It con
|
|
|
35
36
|
|
|
36
37
|
## Exports
|
|
37
38
|
|
|
38
|
-
- Builder state types: `ColumnBuilderState`, `TableBuilderState`, `ModelBuilderState`, `ContractBuilderState`, `RelationDefinition`, `ColumnBuilder`
|
|
39
|
+
- Builder state types: `ColumnBuilderState`, `TableBuilderState`, `ModelBuilderState`, `ContractBuilderState`, `ForeignKeysConfigState`, `RelationDefinition`, `ColumnBuilder`
|
|
39
40
|
- Builder classes: `TableBuilder`, `ModelBuilder`, `ContractBuilder`
|
|
40
41
|
- Type helpers: `BuildStorageColumn`, `BuildStorage`, `BuildModels`, `BuildRelations`, extract helpers, `Mutable`
|
|
41
42
|
- Factory function: `defineContract()` (generic)
|
package/dist/index.d.mts
CHANGED
|
@@ -77,6 +77,8 @@ interface ForeignKeyDef {
|
|
|
77
77
|
readonly columns: readonly string[];
|
|
78
78
|
};
|
|
79
79
|
readonly name?: string;
|
|
80
|
+
readonly constraint?: boolean;
|
|
81
|
+
readonly index?: boolean;
|
|
80
82
|
}
|
|
81
83
|
interface TableBuilderState<Name extends string, Columns extends Record<string, ColumnBuilderState<string, boolean, string>>, PrimaryKey extends readonly string[] | undefined> {
|
|
82
84
|
readonly name: Name;
|
|
@@ -106,6 +108,10 @@ interface ModelBuilderState<Name extends string, Table extends string, Fields ex
|
|
|
106
108
|
readonly fields: Fields;
|
|
107
109
|
readonly relations: Relations;
|
|
108
110
|
}
|
|
111
|
+
interface ForeignKeyDefaultsState {
|
|
112
|
+
readonly constraint: boolean;
|
|
113
|
+
readonly index: boolean;
|
|
114
|
+
}
|
|
109
115
|
interface ContractBuilderState<Target extends string | undefined = string | undefined, Tables extends Record<string, TableBuilderState<string, Record<string, ColumnBuilderState<string, boolean, string>>, readonly string[] | undefined>> = Record<never, TableBuilderState<string, Record<string, ColumnBuilderState<string, boolean, string>>, readonly string[] | undefined>>, Models extends Record<string, ModelBuilderState<string, string, Record<string, string>, Record<string, RelationDefinition>>> = Record<never, ModelBuilderState<string, string, Record<string, string>, Record<string, RelationDefinition>>>, StorageHash extends string | undefined = string | undefined, ExtensionPacks extends Record<string, unknown> | undefined = undefined, Capabilities extends Record<string, Record<string, boolean>> | undefined = undefined> {
|
|
110
116
|
readonly target?: Target;
|
|
111
117
|
readonly tables: Tables;
|
|
@@ -114,6 +120,7 @@ interface ContractBuilderState<Target extends string | undefined = string | unde
|
|
|
114
120
|
readonly extensionPacks?: ExtensionPacks;
|
|
115
121
|
readonly capabilities?: Capabilities;
|
|
116
122
|
readonly storageTypes?: Record<string, StorageTypeInstanceState>;
|
|
123
|
+
readonly foreignKeyDefaults?: ForeignKeyDefaultsState;
|
|
117
124
|
/**
|
|
118
125
|
* Array of extension pack namespace identifiers (e.g., ['pgvector', 'postgis']).
|
|
119
126
|
* Populated when extension packs are registered during contract building.
|
|
@@ -231,7 +238,11 @@ declare class TableBuilder<Name extends string, Columns extends Record<string, C
|
|
|
231
238
|
foreignKey(columns: readonly string[], references: {
|
|
232
239
|
table: string;
|
|
233
240
|
columns: readonly string[];
|
|
234
|
-
},
|
|
241
|
+
}, opts?: {
|
|
242
|
+
name?: string;
|
|
243
|
+
constraint?: boolean;
|
|
244
|
+
index?: boolean;
|
|
245
|
+
}): TableBuilder<Name, Columns, PrimaryKey>;
|
|
235
246
|
build(): TableBuilderState<Name, Columns, PrimaryKey>;
|
|
236
247
|
}
|
|
237
248
|
//#endregion
|
|
@@ -244,6 +255,7 @@ declare class ContractBuilder<Target extends string | undefined = undefined, Tab
|
|
|
244
255
|
table<TableName extends string, T extends TableBuilder<TableName, Record<string, ColumnBuilderState<string, boolean, string>>, readonly string[] | undefined>>(name: TableName, callback: (t: TableBuilder<TableName>) => T | undefined): ContractBuilder<Target, Tables & Record<TableName, ReturnType<T['build']>>, Models, StorageHash, ExtensionPacks, Capabilities>;
|
|
245
256
|
model<ModelName extends string, TableName extends string, M extends ModelBuilder<ModelName, TableName, Record<string, string>, Record<string, RelationDefinition>>>(name: ModelName, table: TableName, callback: (m: ModelBuilder<ModelName, TableName, Record<string, string>, Record<never, never>>) => M | undefined): ContractBuilder<Target, Tables, Models & Record<ModelName, ReturnType<M['build']>>, StorageHash, ExtensionPacks, Capabilities>;
|
|
246
257
|
storageHash<H extends string>(hash: H): ContractBuilder<Target, Tables, Models, H, ExtensionPacks, Capabilities>;
|
|
258
|
+
foreignKeyDefaults(config: ForeignKeyDefaultsState): ContractBuilder<Target, Tables, Models, StorageHash, ExtensionPacks, Capabilities>;
|
|
247
259
|
}
|
|
248
260
|
declare function defineContract(): ContractBuilder;
|
|
249
261
|
//#endregion
|
|
@@ -279,5 +291,5 @@ type BuildModels<Models extends Record<string, ModelBuilderState<string, string,
|
|
|
279
291
|
} };
|
|
280
292
|
type BuildRelations<Models extends Record<string, ModelBuilderState<string, string, Record<string, string>, Record<string, RelationDefinition>>>> = { readonly [K in keyof Models as Models[K]['table']]: ExtractModelRelations<Models[K]> };
|
|
281
293
|
//#endregion
|
|
282
|
-
export { type BuildModelFields, type BuildModels, type BuildRelations, type BuildStorage, type BuildStorageColumn, type BuildStorageTables, type ColumnBuilder, type ColumnBuilderState, type ColumnTypeDescriptor, ContractBuilder, type ContractBuilderState, type ExtractColumns, type ExtractModelFields, type ExtractModelRelations, type ExtractPrimaryKey, type ForeignKeyDef, type IndexDef, ModelBuilder, type ModelBuilderState, type Mutable, type RelationDefinition, TableBuilder, type TableBuilderState, type UniqueConstraintDef, createTable, defineContract };
|
|
294
|
+
export { type BuildModelFields, type BuildModels, type BuildRelations, type BuildStorage, type BuildStorageColumn, type BuildStorageTables, type ColumnBuilder, type ColumnBuilderState, type ColumnTypeDescriptor, ContractBuilder, type ContractBuilderState, type ExtractColumns, type ExtractModelFields, type ExtractModelRelations, type ExtractPrimaryKey, type ForeignKeyDef, type ForeignKeyDefaultsState, type IndexDef, ModelBuilder, type ModelBuilderState, type Mutable, type RelationDefinition, TableBuilder, type TableBuilderState, type UniqueConstraintDef, createTable, defineContract };
|
|
283
295
|
//# sourceMappingURL=index.d.mts.map
|
package/dist/index.d.mts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.mts","names":[],"sources":["../src/builder-state.ts","../src/model-builder.ts","../src/table-builder.ts","../src/contract-builder.ts","../src/types.ts"],"sourcesContent":[],"mappings":";;;;;;;;AAUA;AAKE;;;;AAS4B,KAdlB,oBAAA,GAckB;EAIlB,SAAA,OAAA,EAAA,MAAA;EAUA,SAAA,UAAA,EAAA,MAAA;EAWA,SAAA,UAAA,CAAA,EApCY,MAoCM,CAAA,MAAA,EAAA,OAAA,CAAA;EAIH,SAAA,OAAA,CAAA,EAAA,MAAA;CAAM;;;;KAjC5B,sBAsCsB,CAAA,aAAA,MAAA,EAAA,aAAA,MAAA,CAAA,GAAA;EACS,SAAA,IAAA,EAtCnB,IAsCmB;EAA6B,SAAA,IAAA,EArChD,IAqCgD;EAMhD,SAAA,UAAA,EAAA,MAAmB;EAQnB,SAAA,UAAQ,CAAA,EAjDD,MAiDC,CAAA,MAAA,EAAA,OAAA,CAAA;EAQR,SAAA,OAAa,CAAA,EAAA,MAAA;AAS9B,CAAA;AAEiC,KAhErB,wBAAA,GAgEqB;EAAf,SAAA,OAAA,EAAA,MAAA;EAGD,SAAA,UAAA,EAAA,MAAA;EACG,SAAA,UAAA,EAjEG,MAiEH,CAAA,MAAA,EAAA,OAAA,CAAA;CACI;;;;;AAOZ,KAlEA,+BAAA,GAkEkB,oGAAA;AAc9B;;;;;;;;AAS+B,KA9EnB,kBA8EmB,CAAA,aAAA,MAAA,EAAA,iBAAA,OAAA,EAAA,aAAA,MAAA,CAAA,GA1E3B,sBA0E2B,CA1EJ,IA0EI,EA1EE,IA0EF,CAAA,GAAA,CAzE5B,QAyE4B,SAAA,IAAA,GAAA;EAGd,SAAA,QAAA,EAAA,IAAoB;EAMhB,SAAA,OAAA,CAAA,EAjF+B,+BAiF/B;CAAf,GAAA;EAFF,SAAA,QAAA,EAAA,KAAA;EAFa,SAAA,OAAA,CAAA,EA1EU,aA0EV;EAWI,SAAA,gBAAA,CAAA,EApFe,6BAoFf;CAAf,CAAA;;;;AAMuE,UApF5D,mBAAA,CAoF4D;EAAf,SAAA,OAAA,EAAA,SAAA,MAAA,EAAA;EAA1D,SAAA,IAAA,CAAA,EAAA,MAAA;;;;;AAGA,UA/Ea,QAAA,CA+Eb;EAFE,SAAA,OAAA,EAAA,SAAA,MAAA,EAAA;EAKmB,SAAA,IAAA,CAAA,EAAA,MAAA;;;;;AAKN,UA/EF,aAAA,CA+EE;EACM,SAAA,OAAA,EAAA,SAAA,MAAA,EAAA;EACG,SAAA,UAAA,EAAA;IACF,SAAA,KAAA,EAAA,MAAA;IACe,SAAA,OAAA,EAAA,SAAA,MAAA,EAAA;EAAf,CAAA;EAAM,SAAA,IAAA,CAAA,EAAA,MAAA;AAWhC;AAC0C,UAtFzB,iBAsFyB,CAAA,aAAA,MAAA,EAAA,gBApFxB,MAoFwB,CAAA,MAAA,EApFT,kBAoFS,CAAA,MAAA,EAAA,OAAA,EAAA,MAAA,CAAA,CAAA,EAAA,mBAAA,SAAA,MAAA,EAAA,GAAA,SAAA,CAAA,CAAA;EAAsB,SAAA,IAAA,EAjF/C,IAiF+C;EAAM,SAAA,OAAA,EAhFlD,OAgFkD;EAAO,SAAA,UAAA,CAAA,EA/ErD,UA+EqD;EAA3B,SAAA,cAAA,CAAA,EAAA,MAAA;EACpB,SAAA,OAAA,EAAA,SA9ED,mBA8EC,EAAA;EAAmB,SAAA,OAAA,EAAA,SA7EpB,QA6EoB,EAAA;EAAM,SAAA,WAAA,EAAA,SA5EtB,aA4EsB,EAAA;;AAApB,KAzEvB,kBAAA,GAyEuB;EACL,SAAA,EAAA,EAAA,MAAA;EAAM,SAAA,WAAA,EAAA,KAAA,GAAA,KAAA,GAAA,KAAA,GAAA,KAAA;EAAU,SAAA,EAAA,EAAA;IAAnC,SAAA,UAAA,EAAA,SAAA,MAAA,EAAA;IAAkB,SAAA,SAAA,EAAA,SAAA,MAAA,EAAA;;;;IChLhB,SAAA,UAAY,EAAA,SAAA,MAAA,EAAA;IAGR,SAAA,SAAA,EAAA,SAAA,MAAA,EAAA;EAAyB,CAAA;CACP;AAAf,UDgHH,iBChHG,CAAA,aAAA,MAAA,EAAA,cAAA,MAAA,EAAA,eDmHH,MCnHG,CAAA,MAAA,EAAA,MAAA,CAAA,EAAA,kBDoHA,MCpHA,CAAA,MAAA,EDoHe,kBCpHf,CAAA,CAAA,CAAA;EAAqC,SAAA,IAAA,EDsHxC,ICtHwC;EAQ/C,SAAA,KAAA,ED+GQ,KC/GR;EACC,SAAA,MAAA,ED+GQ,MC/GR;EACC,SAAA,SAAA,ED+GU,SC/GV;;AAUG,UDwGE,oBCxGF,CAAA,eAAA,MAAA,GAAA,SAAA,GAAA,MAAA,GAAA,SAAA,EAAA,eD0GE,MC1GF,CAAA,MAAA,ED4GX,iBC5GW,CAAA,MAAA,ED8GT,MC9GS,CAAA,MAAA,ED8GM,kBC9GN,CAAA,MAAA,EAAA,OAAA,EAAA,MAAA,CAAA,CAAA,EAAA,SAAA,MAAA,EAAA,GAAA,SAAA,CAAA,CAAA,GDiHT,MCjHS,CAAA,KAAA,EDmHX,iBCnHW,CAAA,MAAA,EDqHT,MCrHS,CAAA,MAAA,EDqHM,kBCrHN,CAAA,MAAA,EAAA,OAAA,EAAA,MAAA,CAAA,CAAA,EAAA,SAAA,MAAA,EAAA,GAAA,SAAA,CAAA,CAAA,EAAA,eDyHE,MCzHF,CAAA,MAAA,ED2HX,iBC3HW,CAAA,MAAA,EAAA,MAAA,ED2HuB,MC3HvB,CAAA,MAAA,EAAA,MAAA,CAAA,ED2H+C,MC3H/C,CAAA,MAAA,ED2H8D,kBC3H9D,CAAA,CAAA,CAAA,GD4HT,MC5HS,CAAA,KAAA,ED8HX,iBC9HW,CAAA,MAAA,EAAA,MAAA,ED8HuB,MC9HvB,CAAA,MAAA,EAAA,MAAA,CAAA,ED8H+C,MC9H/C,CAAA,MAAA,ED8H8D,kBC9H9D,CAAA,CAAA,CAAA,EAAA,oBAAA,MAAA,GAAA,SAAA,GAAA,MAAA,GAAA,SAAA,EAAA,uBDiIU,MCjIV,CAAA,MAAA,EAAA,OAAA,CAAA,GAAA,SAAA,GAAA,SAAA,EAAA,qBDkIQ,MClIR,CAAA,MAAA,EDkIuB,MClIvB,CAAA,MAAA,EAAA,OAAA,CAAA,CAAA,GAAA,SAAA,GAAA,SAAA,CAAA,CAAA;EACC,SAAA,MAAA,CAAA,EDmII,MCnIJ;EACE,SAAA,MAAA,EDmIC,MCnID;EAAM,SAAA,MAAA,EDoIL,MCpIK;EAAO,SAAA,WAAA,CAAA,EDqIN,WCrIM;EAAgB,SAAA,cAAA,CAAA,EDsInB,cCtImB;EAAW,SAAA,YAAA,CAAA,EDuIhC,YCvIgC;EAAlB,SAAA,YAAA,CAAA,EDwId,MCxIc,CAAA,MAAA,EDwIC,wBCxID,CAAA;EAA+B;;;;;;;EAyBrD,SAAA,mBAAA,CAAA,EAAA,SAAA,MAAA,EAAA;;AAAa,UD0Hd,aC1Hc,CAAA,aAAA,MAAA,EAAA,iBAAA,OAAA,EAAA,aAAA,MAAA,CAAA,CAAA;EAAQ,QAAA,CAAA,cAAA,OAAA,CAAA,CAAA,KAAA,CAAA,ED2HG,KC3HH,CAAA,ED2HW,aC3HX,CD2HyB,IC3HzB,ED2H+B,KC3H/B,ED2HsC,IC3HtC,CAAA;EAAmB,IAAA,CAAA,WAAA,MAAA,CAAA,CAAA,EAAA,ED4H5B,EC5H4B,CAAA,ED4HvB,aC5HuB,CD4HT,IC5HS,ED4HH,QC5HG,ED4HO,EC5HP,CAAA;EAAc,KAAA,EAAA,ED6H7D,kBC7H6D,CD6H1C,IC7H0C,ED6HpC,QC7HoC,ED6H1B,IC7H0B,CAAA;;;;cAnD3D,uEAGI,yBAAyB,wCACtB,eAAe,sBAAsB;;;EDI7C,iBAAA,OAAoB;EAU3B,iBAAA,UAAsB;EACV,WAAA,CAAA,IAAA,ECPP,IDOO,EAAA,KAAA,ECNN,KDMM,EAAA,MAAA,CAAA,ECLL,MDKK,EAAA,SAAA,CAAA,ECJF,SDIE;EACA,KAAA,CAAA,kBAAA,MAAA,EAAA,mBAAA,MAAA,CAAA,CAAA,SAAA,ECIF,SDJE,EAAA,UAAA,ECKD,UDLC,CAAA,ECMZ,YDNY,CCMC,IDND,ECMO,KDNP,ECMc,MDNd,GCMuB,MDNvB,CCM8B,SDN9B,ECMyC,UDNzC,CAAA,ECMsD,SDNtD,CAAA;EAEO,QAAA,CAAA,qBAAA,MAAA,EAAA,gBAAA,MAAA,EAAA,gBAAA,MAAA,CAAA,CAAA,IAAA,ECiBd,YDjBc,EAAA,OAAA,EAAA;IAAM,OAAA,ECmBf,ODnBe;IAIlB,OAAA,ECgBG,ODhBH;IAUA,WAAA,EAAA,KAAA,GAAA,KAAA,GAAA,KAA+B;IAW/B,EAAA,EAAA;MAIe,WAAA,ECNN,KDMM;MAAM,aAAA,EAAA,SAAA,MAAA,EAAA;MAA7B,UAAA,ECJgB,ODIhB;MACD,YAAA,EAAA,SAAA,MAAA,EAAA;IACiD,CAAA;EAGzB,CAAA,CAAA,ECLtB,YDKsB,CCLT,IDKS,ECLH,KDKG,ECLI,MDKJ,ECLY,SDKZ,GCLwB,MDKxB,CCL+B,YDK/B,ECL6C,kBDK7C,CAAA,CAAA;EACS,QAAA,CAAA,qBAAA,MAAA,EAAA,gBAAA,MAAA,EAAA,gBAAA,MAAA,EAAA,sBAAA,MAAA,CAAA,CAAA,IAAA,ECC1B,YDD0B,EAAA,OAAA,EAAA;IAA6B,OAAA,ECGlD,ODHkD;IAMhD,OAAA,ECFF,ODEE;IAQA,WAAQ,EAAA,KAAA;IAQR,OAAA,EAAA;MASA,KAAA,ECxBF,aDwBmB;MAED,aAAA,EAAA,SAAA,MAAA,EAAA;MAAf,YAAA,EAAA,SAAA,MAAA,EAAA;IAGD,CAAA;IACG,EAAA,EAAA;MACI,WAAA,EC1BH,KD0BG;MAEK,aAAA,EAAA,SAAA,MAAA,EAAA;MACA,UAAA,EC3BT,aD2BS;MACI,YAAA,EAAA,SAAA,MAAA,EAAA;IAAa,CAAA;EAGlC,CAAA,CAAA,EC3BP,YD2BO,CC3BM,ID2BY,EC3BN,KD2BM,EC3BC,MD2BD,EC3BS,SD2BT,GC3BqB,MD2BrB,CC3B4B,YD2B5B,EC3B0C,kBD2B1C,CAAA,CAAA;EAcb,KAAA,CAAA,CAAA,ECiCN,iBDjCuB,CCiCL,IDjCK,ECiCC,KDjCD,ECiCQ,MDjCR,ECiCgB,SDjChB,CAAA;;;;;;AA5GlC;AAKE;UECQ,qBFKO,CAAA,mBELkC,oBFKlC,CAAA,CAAA;EACA,IAAA,EELT,UFKS;EAEO,QAAA,EAAA,IAAA;EAAM,UAAA,CAAA,EELf,MFKe,CAAA,MAAA,EAAA,OAAA,CAAA;EAIlB,OAAA,CAAA,EERA,+BFWW;AAOvB;AAWA;;;;UEtBU,wBF2BP,CAAA,mBE3BmD,oBF2BnD,CAAA,CAAA;EACiD,IAAA,EE3B5C,UF2B4C;EAGzB,QAAA,CAAA,EAAA,KAAA;EACS,UAAA,CAAA,EE7BrB,MF6BqB,CAAA,MAAA,EAAA,OAAA,CAAA;EAA6B,OAAA,CAAA,EE5BrD,aF4BqD;AAMjE;AAQA,KEvCK,sBFuCoB,CAAA,mBEvCsB,oBFuCtB,CAAA,GEvC8C,IFuC9C,CEtCvB,wBFsCuB,CEtCE,UFsCF,CAAA,EAAA,SAAA,GAAA,UAAA,CAAA,GAAA;EAQR;AASjB;;;EAKiB,QAAA,CAAA,EAAA,KAAA;EACG,SAAA,EErDP,6BFqDO;CACI;;;;;AAOxB;AAciB,iBExCD,WFwCkB,CAAA,aAAA,MAAA,CAAA,CAAA,IAAA,EExCqB,IFwCrB,CAAA,EExC4B,YFwC5B,CExCyC,IFwCzC,CAAA;;;;;AAOhB,cEvCL,YFuCK,CAAA,aAAA,MAAA,EAAA,gBErCA,MFqCA,CAAA,MAAA,EErCe,kBFqCf,CAAA,MAAA,EAAA,OAAA,EAAA,MAAA,CAAA,CAAA,GErC8D,MFqC9D,CAAA,KAAA,EEnCd,kBFmCc,CAAA,MAAA,EAAA,OAAA,EAAA,MAAA,CAAA,CAAA,EAAA,mBAAA,SAAA,MAAA,EAAA,GAAA,SAAA,GAAA,SAAA,CAAA,CAAA;EACC,iBAAA,MAAA;EACG;EAAS,WAAA,CAAA,IAAA,EE7BrB,IF6BqB,EAAA,OAAA,EE5BlB,OF4BkB,EAAA,UAAA,EE3Bf,UF2Be,EAAA,cAAA,EAAA,MAAA,GAAA,SAAA,EAAA,OAAA,EAAA,SEzBT,mBFyBS,EAAA,EAAA,OAAA,EAAA,SExBT,QFwBS,EAAA,EAAA,WAAA,EAAA,SEvBL,aFuBK,EAAA;EAGd,YAAA,KAAA,CAAA;EAMI,YAAA,QAAA,CAAA;EAAf,YAAA,WAAA,CAAA;EAFF;;;;EAOA,MAAA,CAAA,gBAAA,MAAA,EAAA,mBERgD,oBFQhD,CAAA,CAAA,IAAA,EEPM,OFON,EAAA,OAAA,EENS,qBFMT,CEN+B,UFM/B,CAAA,CAAA,EELC,YFKD,CEJA,IFIA,EEHA,OFGA,GEHU,MFGV,CEHiB,OFGjB,EEH0B,kBFG1B,CEH6C,OFG7C,EAAA,IAAA,EEH4D,UFG5D,CAAA,SAAA,CAAA,CAAA,CAAA,EEFA,UFEA,CAAA;EAFE;;;;EAUF,MAAA,CAAA,gBAAA,MAAA,EAAA,mBEHgD,oBFGhD,CAAA,CAAA,IAAA,EEFM,OFEN,EAAA,OAAA,EEDS,wBFCT,CEDkC,UFClC,CAAA,CAAA,EEAC,YFAD,CECA,IFDA,EEEA,OFFA,GEEU,MFFV,CEEiB,OFFjB,EEE0B,kBFF1B,CEE6C,OFF7C,EAAA,KAAA,EEE6D,UFF7D,CAAA,SAAA,CAAA,CAAA,CAAA,EEGA,UFHA,CAAA;EAFa,SAAA,CAAA,gBAAA,MAAA,EAAA,mBEsBsC,oBFtBtC,CAAA,CAAA,IAAA,EEuBP,OFvBO,EAAA,OAAA,EEwBJ,sBFxBI,CEwBmB,UFxBnB,CAAA,CAAA,EEyBZ,YFzBY,CE0Bb,IF1Ba,EE2Bb,OF3Ba,GE2BH,MF3BG,CE2BI,OF3BJ,EE2Ba,kBF3Bb,CE2BgC,OF3BhC,EAAA,KAAA,EE2BgD,UF3BhD,CAAA,SAAA,CAAA,CAAA,CAAA,EE4Bb,UF5Ba,CAAA;EAKqB,QAAA,cAAA;EAAuC,UAAA,CAAA,WAAA,SAAA,MAAA,EAAA,CAAA,CAAA,OAAA,EEgFhE,EFhFgE,EAAA,IAAA,CAAA,EAAA,MAAA,CAAA,EEkFxE,YFlFwE,CEkF3D,IFlF2D,EEkFrD,OFlFqD,EEkF5C,EFlF4C,CAAA;EAAf,MAAA,CAAA,OAAA,EAAA,SAAA,MAAA,EAAA,EAAA,IAAA,CAAA,EAAA,MAAA,CAAA,EE8FT,YF9FS,CE8FI,IF9FJ,EE8FU,OF9FV,EE8FmB,UF9FnB,CAAA;EAA1D,KAAA,CAAA,OAAA,EAAA,SAAA,MAAA,EAAA,EAAA,IAAA,CAAA,EAAA,MAAA,CAAA,EE2GgD,YF3GhD,CE2G6D,IF3G7D,EE2GmE,OF3GnE,EE2G4E,UF3G5E,CAAA;EAFE,UAAA,CAAA,OAAA,EAAA,SAAA,MAAA,EAAA,EAAA,UAAA,EAAA;IAKmB,KAAA,EAAA,MAAA;IACa,OAAA,EAAA,SAAA,MAAA,EAAA;EAAf,CAAA,EAAA,IAAA,CAAA,EAAA,MAAA,CAAA,EEwHlB,YFxHkB,CEwHL,IFxHK,EEwHC,OFxHD,EEwHU,UFxHV,CAAA;EAEH,KAAA,CAAA,CAAA,EEmIT,iBFnIS,CEmIS,IFnIT,EEmIe,OFnIf,EEmIwB,UFnIxB,CAAA;;;;AApJR,cGCC,eHDmB,CAAA,eAGF,MAAA,GAAA,SAAA,GAAA,SAAA,EAAA,eGAb,MHAa,CAAA,MAAA,EGE1B,iBHF0B,CAAA,MAAA,EGIxB,MHJwB,CAAA,MAAA,EGIT,kBHJS,CAAA,MAAA,EAAA,OAAA,EAAA,MAAA,CAAA,CAAA,EAAA,SAAA,MAAA,EAAA,GAAA,SAAA,CAAA,CAAA,GGOxB,MHPwB,CAAA,KAAA,EAAA,KAAA,CAAA,EAAA,eGQb,MHRa,CAAA,MAAA,EGU1B,iBHV0B,CAAA,MAAA,EAAA,MAAA,EGUQ,MHVR,CAAA,MAAA,EAAA,MAAA,CAAA,EGUgC,MHVhC,CAAA,MAAA,EGU+C,kBHV/C,CAAA,CAAA,CAAA,GGWxB,MHXwB,CAAA,KAAA,EAAA,KAAA,CAAA,EAAA,oBAAA,MAAA,GAAA,SAAA,GAAA,SAAA,EAAA,uBGaL,MHbK,CAAA,MAAA,EAAA,OAAA,CAAA,GAAA,SAAA,GAAA,SAAA,EAAA,qBGcP,MHdO,CAAA,MAAA,EGcQ,MHdR,CAAA,MAAA,EAAA,OAAA,CAAA,CAAA,GAAA,SAAA,GAAA,SAAA,CAAA,CAAA;EAOzB,mBAAA,KAAA,EGSuB,oBHTD,CGUvB,MHVuB,EGWvB,MHXuB,EGYvB,MHZuB,EGavB,WHbuB,EGcvB,cHduB,EGevB,YHfuB,CAAA;EACV,WAAA,CAAA,KAAA,CAAA,EGkBL,oBHlBK,CGkBgB,MHlBhB,EGkBwB,MHlBxB,EGkBgC,MHlBhC,EGkBwC,WHlBxC,EGkBqD,cHlBrD,EGkBqE,YHlBrE,CAAA;EACA,MAAA,CAAA,UAAA,MAAA,CAAA,CAAA,OAAA,EG4BJ,aH5BI,CAAA,MAAA,EG4BkB,CH5BlB,CAAA,CAAA,EG6BZ,eH7BY,CG6BI,CH7BJ,EG6BO,MH7BP,EG6Be,MH7Bf,EG6BuB,WH7BvB,EG6BoC,cH7BpC,EG6BoD,YH7BpD,CAAA;EAEO,YAAA,CAAA,UGkCC,MHlCD,CAAA,MAAA,EGkCgB,MHlChB,CAAA,MAAA,EAAA,OAAA,CAAA,CAAA,CAAA,CAAA,YAAA,EGmCN,CHnCM,CAAA,EGoCnB,eHpCmB,CGoCH,MHpCG,EGoCK,MHpCL,EGoCa,MHpCb,EGoCqB,WHpCrB,EGoCkC,cHpClC,EGoCkD,CHpClD,CAAA;EAAM,KAAA,CAAA,kBAAA,MAAA,EAAA,UG6ChB,YH7CgB,CG8CxB,SH9CwB,EG+CxB,MH/CwB,CAAA,MAAA,EG+CT,kBH/CS,CAAA,MAAA,EAAA,OAAA,EAAA,MAAA,CAAA,CAAA,EAAA,SAAA,MAAA,EAAA,GAAA,SAAA,CAAA,CAAA,CAAA,IAAA,EGmDpB,SHnDoB,EAAA,QAAA,EAAA,CAAA,CAAA,EGoDZ,YHpDY,CGoDC,SHpDD,CAAA,EAAA,GGoDgB,CHpDhB,GAAA,SAAA,CAAA,EGqDzB,eHrDyB,CGsD1B,MHtD0B,EGuD1B,MHvD0B,GGuDjB,MHvDiB,CGuDV,SHvDU,EGuDC,UHvDD,CGuDY,CHvDZ,CAAA,OAAA,CAAA,CAAA,CAAA,EGwD1B,MHxD0B,EGyD1B,WHzD0B,EG0D1B,cH1D0B,EG2D1B,YH3D0B,CAAA;EAIlB,KAAA,CAAA,kBAAA,MAAwB,EAAA,kBAGP,MAAA,EAAA,UG4Ef,YH5Ee,CG6EvB,SH7EuB,EG8EvB,SH9EuB,EG+EvB,MH/EuB,CAAA,MAAA,EAAA,MAAA,CAAA,EGgFvB,MHhFuB,CAAA,MAAA,EGgFR,kBHhFQ,CAAA,CAAA,CAAA,CAAA,IAAA,EGmFnB,SHnFmB,EAAA,KAAA,EGoFlB,SHpFkB,EAAA,QAAA,EAAA,CAAA,CAAA,EGsFpB,YHtFoB,CGsFP,SHtFO,EGsFI,SHtFJ,EGsFe,MHtFf,CAAA,MAAA,EAAA,MAAA,CAAA,EGsFuC,MHtFvC,CAAA,KAAA,EAAA,KAAA,CAAA,CAAA,EAAA,GGuFpB,CHvFoB,GAAA,SAAA,CAAA,EGwFxB,eHxFwB,CGyFzB,MHzFyB,EG0FzB,MH1FyB,EG2FzB,MH3FyB,GG2FhB,MH3FgB,CG2FT,SH3FS,EG2FE,UH3FF,CG2Fa,CH3Fb,CAAA,OAAA,CAAA,CAAA,CAAA,EG4FzB,WH5FyB,EG6FzB,cH7FyB,EG8FzB,YH9FyB,CAAA;EAOjB,WAAA,CAAA,UAAA,MAAA,CAAA,CAAA,IAA+B,EG6GjC,CH7GiC,CAAA,EG8GtC,eH9GsC,CG8GtB,MH9GsB,EG8Gd,MH9Gc,EG8GN,MH9GM,EG8GE,CH9GF,EG8GK,cH9GL,EG8GqB,YH9GrB,CAAA;AAW3C;AAI2B,iBGuGX,cAAA,CAAA,CHvGW,EGuGO,eHvGP;;;KI9Cf;;oBAEQ;EJCR,SAAA,QAAA,EIAS,QJAW;EAU3B,SAAA,UAAA,CAAA,EITmB,MJSG,CAAA,MAAA,EAAA,OAAA,CAAA;EACV,SAAA,OAAA,CAAA,EAAA,MAAA;CACA;AAEO,KITZ,cJSY,CAAA,UIRZ,iBJQY,CAAA,MAAA,EINpB,MJMoB,CAAA,MAAA,EINL,kBJMK,CAAA,MAAA,EAAA,OAAA,EAAA,MAAA,CAAA,CAAA,EAAA,SAAA,MAAA,EAAA,GAAA,SAAA,CAAA,CAAA,GIHpB,CJGoB,SIHV,iBJGU,CAAA,MAAA,EAAA,KAAA,EAAA,EAAA,SAAA,MAAA,EAAA,GAAA,SAAA,CAAA,GAAA,CAAA,GAAA,KAAA;AAAM,KIDlB,iBJCkB,CAAA,UIAlB,iBJAkB,CAAA,MAAA,EIE1B,MJF0B,CAAA,MAAA,EIEX,kBJFW,CAAA,MAAA,EAAA,OAAA,EAAA,MAAA,CAAA,CAAA,EAAA,SAAA,MAAA,EAAA,GAAA,SAAA,CAAA,CAAA,GIM5B,CJN4B,SIMlB,iBJNkB,CAAA,MAAA,EIQ1B,MJR0B,CAAA,MAAA,EIQX,kBJRW,CAAA,MAAA,EAAA,OAAA,EAAA,MAAA,CAAA,CAAA,EAAA,KAAA,GAAA,CAAA,GAAA,EAAA,GAAA,KAAA;AAIlB,KIUA,YJVA,CAAA,eIWK,MJRM,CAAA,MAAM,EIUzB,iBJVyB,CAAA,MAAA,EIYvB,MJZuB,CAAA,MAAA,EIYR,kBJZQ,CAAA,MAAA,EAAA,OAAA,EAAA,MAAA,CAAA,CAAA,EAAA,SAAA,MAAA,EAAA,GAAA,SAAA,CAAA,CAAA,CAAA,GAAA;EAOjB,SAAA,MAAA,EAAA,iBAWA,MIAa,MJAK,GAAA;IAIH,SAAA,OAAA,EAAA,oBAAM,MIFD,cJEC,CIFc,MJEd,CIFqB,CJErB,CAAA,CAAA,GIF2B,cJE3B,CIDvB,MJCuB,CIDhB,CJCgB,CAAA,CAAA,CIAvB,IJAuB,CAAA,SIAT,kBJAS,CAAA,MAAA,EAAA,KAAA,KAAA,EAAA,KAAA,MAAA,CAAA,GICrB,kBJDqB,CICF,IJDE,GAAA,OAAA,EICc,KJDd,CAAA,GAAA,KAAA,EAA7B;EACD,CAAA,EACiD;CAGzB;AACS,KIExB,kBJFwB,CAAA,eIGnB,MJHmB,CAAA,MAAA,EIKhC,iBJLgC,CAAA,MAAA,EIO9B,MJP8B,CAAA,MAAA,EIOf,kBJPe,CAAA,MAAA,EAAA,OAAA,EAAA,MAAA,CAAA,CAAA,EAAA,SAAA,MAAA,EAAA,GAAA,SAAA,CAAA,CAAA,CAAA,GAAA,iBAA6B,MIY1C,MJZ0C,GAAA;EAMhD,SAAA,OAAA,EAAmB,oBAQX,MIAK,cJAL,CIAoB,MJApB,CIA2B,CJA3B,CAAA,CAAA,GIAiC,cJAjC,CICjB,MJDiB,CICV,CJDU,CAAA,CAAA,CIEjB,IJFiB,CAAA,SIEH,kBJFG,CAAA,MAAA,EAAA,KAAA,KAAA,EAAA,KAAA,MAAA,CAAA,GIGf,kBJHe,CIGI,IJHJ,GAAA,OAAA,EIGoB,KJHpB,CAAA,GAAA,KAAA,EAQR;AASA,CAAA,EAEgB;AAAf,KIVN,OJUM,CAAA,CAAA,CAAA,GAAA,kBAGD,MIZO,CJYP,KIZa,CJYb,CIZe,CJYf,CAAA,EACG;AACI,KIXZ,gBJWY,CAAA,eIXoB,MJWpB,CAAA,MAAA,EAAA,MAAA,CAAA,CAAA,GAAA,iBAEK,MIZN,MJYM,GAAA;EACA,SAAA,MAAA,EIbsB,MJatB,CIb6B,CJa7B,CAAA;AACI,CAAA,EAAa;AAGlC,KIdA,kBJckB,CAAA,UIblB,iBJakB,CAAA,MAAA,EAAA,MAAA,EIV1B,MJU0B,CAAA,MAAA,EAAA,MAAA,CAAA,EIT1B,MJS0B,CAAA,MAAA,EITX,kBJSW,CAAA,CAAA,CAAA,GIN5B,CJM4B,SINlB,iBJMkB,CAAA,MAAA,EAAA,MAAA,EAAA,KAAA,EAAA,EINyB,MJMzB,CAAA,MAAA,EINwC,kBJMxC,CAAA,CAAA,GAAA,CAAA,GAAA,KAAA;AAcb,KIhBL,qBJgBsB,CAAA,UIftB,iBJesB,CAAA,MAAA,EAAA,MAAA,EIZ9B,MJY8B,CAAA,MAAA,EAAA,MAAA,CAAA,EIX9B,MJW8B,CAAA,MAAA,EIXf,kBJWe,CAAA,CAAA,CAAA,GIT9B,CJS8B,SITpB,iBJSoB,CAAA,MAAA,EAAA,MAAA,EITc,MJSd,CAAA,MAAA,EAAA,MAAA,CAAA,EAAA,KAAA,EAAA,CAAA,GAAA,CAAA,GAAA,KAAA;AAGjB,KIVL,WJUK,CAAA,eITA,MJSA,CAAA,MAAA,EIPb,iBJOa,CAAA,MAAA,EAAA,MAAA,EIPqB,MJOrB,CAAA,MAAA,EAAA,MAAA,CAAA,EIP6C,MJO7C,CAAA,MAAA,EIP4D,kBJO5D,CAAA,CAAA,CAAA,CAAA,GAAA,iBACkB,MILZ,MJKY,GAAA;EAAf,SAAA,OAAA,EAAA;IAEH,SAAA,KAAA,EINuB,MJMvB,CIN8B,CJM9B,CAAA,CAAA,OAAA,CAAA;EACC,CAAA;EACC,SAAA,MAAA,EIPE,gBJOF,CIPmB,kBJOnB,CIPsC,MJOtC,CIP6C,CJO7C,CAAA,CAAA,CAAA;AACG,CAAA,EAAS;AAGd,KIPL,cJOK,CAAoB,eINpB,MJMoB,CAAA,MAAA,EIJjC,iBJIiC,CAAA,MAAA,EAAA,MAAA,EIJC,MJID,CAAA,MAAA,EAAA,MAAA,CAAA,EIJyB,MJIzB,CAAA,MAAA,EIJwC,kBJIxC,CAAA,CAAA,CAAA,CAAA,GAAA,iBAMhB,MIPE,MJOF,IIPY,MJOZ,CIPmB,CJOnB,CAAA,CAAA,OAAA,CAAA,GIPiC,qBJOjC,CIPuD,MJOvD,CIP8D,CJO9D,CAAA,CAAA,EAAf"}
|
|
1
|
+
{"version":3,"file":"index.d.mts","names":[],"sources":["../src/builder-state.ts","../src/model-builder.ts","../src/table-builder.ts","../src/contract-builder.ts","../src/types.ts"],"sourcesContent":[],"mappings":";;;;;;;;AAUA;AAKE;;;;AAS4B,KAdlB,oBAAA,GAckB;EAIlB,SAAA,OAAA,EAAA,MAAA;EAUA,SAAA,UAAA,EAAA,MAAA;EAWA,SAAA,UAAA,CAAA,EApCY,MAoCM,CAAA,MAAA,EAAA,OAAA,CAAA;EAIH,SAAA,OAAA,CAAA,EAAA,MAAA;CAAM;;;;KAjC5B,sBAsCsB,CAAA,aAAA,MAAA,EAAA,aAAA,MAAA,CAAA,GAAA;EACS,SAAA,IAAA,EAtCnB,IAsCmB;EAA6B,SAAA,IAAA,EArChD,IAqCgD;EAMhD,SAAA,UAAA,EAAA,MAAmB;EAQnB,SAAA,UAAQ,CAAA,EAjDD,MAiDC,CAAA,MAAA,EAAA,OAAA,CAAA;EAQR,SAAA,OAAa,CAAA,EAAA,MAAA;AAW9B,CAAA;AAEiC,KAlErB,wBAAA,GAkEqB;EAAf,SAAA,OAAA,EAAA,MAAA;EAGD,SAAA,UAAA,EAAA,MAAA;EACG,SAAA,UAAA,EAnEG,MAmEH,CAAA,MAAA,EAAA,OAAA,CAAA;CACI;;;;;AAOZ,KApEA,+BAAA,GAoEkB,oGAAA;AAc9B;;;;;;;;AAS+B,KAhFnB,kBAgFmB,CAAA,aAAA,MAAA,EAAA,iBAAA,OAAA,EAAA,aAAA,MAAA,CAAA,GA5E3B,sBA4E2B,CA5EJ,IA4EI,EA5EE,IA4EF,CAAA,GAAA,CA3E5B,QA2E4B,SAAA,IAAA,GAAA;EAGd,SAAA,QAAA,EAAA,IAAA;EAKA,SAAA,OAAA,CAAA,EAlFmC,+BAkFf;CAMhB,GAAA;EAAf,SAAA,QAAA,EAAA,KAAA;EAFF,SAAA,OAAA,CAAA,EAnFuB,aAmFvB;EAFa,SAAA,gBAAA,CAAA,EAhFmB,6BAgFnB;CAWI,CAAA;;;;AAMiB,UA3FrB,mBAAA,CA2FqB;EAAuC,SAAA,OAAA,EAAA,SAAA,MAAA,EAAA;EAAf,SAAA,IAAA,CAAA,EAAA,MAAA;;;;;AAGA,UAtF7C,QAAA,CAsF6C;EAA1D,SAAA,OAAA,EAAA,SAAA,MAAA,EAAA;EAFE,SAAA,IAAA,CAAA,EAAA,MAAA;;;;;AASa,UArFF,aAAA,CAqFE;EACA,SAAA,OAAA,EAAA,SAAA,MAAA,EAAA;EACM,SAAA,UAAA,EAAA;IACG,SAAA,KAAA,EAAA,MAAA;IACF,SAAA,OAAA,EAAA,SAAA,MAAA,EAAA;EACe,CAAA;EAAf,SAAA,IAAA,CAAA,EAAA,MAAA;EACM,SAAA,UAAA,CAAA,EAAA,OAAA;EAAuB,SAAA,KAAA,CAAA,EAAA,OAAA;AAWvD;AAC0C,UA5FzB,iBA4FyB,CAAA,aAAA,MAAA,EAAA,gBA1FxB,MA0FwB,CAAA,MAAA,EA1FT,kBA0FS,CAAA,MAAA,EAAA,OAAA,EAAA,MAAA,CAAA,CAAA,EAAA,mBAAA,SAAA,MAAA,EAAA,GAAA,SAAA,CAAA,CAAA;EAAsB,SAAA,IAAA,EAvF/C,IAuF+C;EAAM,SAAA,OAAA,EAtFlD,OAsFkD;EAAO,SAAA,UAAA,CAAA,EArFrD,UAqFqD;EAA3B,SAAA,cAAA,CAAA,EAAA,MAAA;EACpB,SAAA,OAAA,EAAA,SApFD,mBAoFC,EAAA;EAAmB,SAAA,OAAA,EAAA,SAnFpB,QAmFoB,EAAA;EAAM,SAAA,WAAA,EAAA,SAlFtB,aAkFsB,EAAA;;AAApB,KA/EvB,kBAAA,GA+EuB;EACL,SAAA,EAAA,EAAA,MAAA;EAAM,SAAA,WAAA,EAAA,KAAA,GAAA,KAAA,GAAA,KAAA,GAAA,KAAA;EAAU,SAAA,EAAA,EAAA;IAAnC,SAAA,UAAA,EAAA,SAAA,MAAA,EAAA;IAAkB,SAAA,SAAA,EAAA,SAAA,MAAA,EAAA;;;;ICxLhB,SAAA,UAAY,EAAA,SAAA,MAAA,EAAA;IAGR,SAAA,SAAA,EAAA,SAAA,MAAA,EAAA;EAAyB,CAAA;CACP;AAAf,UDkHH,iBClHG,CAAA,aAAA,MAAA,EAAA,cAAA,MAAA,EAAA,eDqHH,MCrHG,CAAA,MAAA,EAAA,MAAA,CAAA,EAAA,kBDsHA,MCtHA,CAAA,MAAA,EDsHe,kBCtHf,CAAA,CAAA,CAAA;EAAqC,SAAA,IAAA,EDwHxC,ICxHwC;EAQ/C,SAAA,KAAA,EDiHQ,KCjHR;EACC,SAAA,MAAA,EDiHQ,MCjHR;EACC,SAAA,SAAA,EDiHU,SCjHV;;AAUG,UD0GE,uBAAA,CC1GF;EACC,SAAA,UAAA,EAAA,OAAA;EACE,SAAA,KAAA,EAAA,OAAA;;AAAa,UD6Gd,oBC7Gc,CAAA,eAAA,MAAA,GAAA,SAAA,GAAA,MAAA,GAAA,SAAA,EAAA,eD+Gd,MC/Gc,CAAA,MAAA,EDiH3B,iBCjH2B,CAAA,MAAA,EDmHzB,MCnHyB,CAAA,MAAA,EDmHV,kBCnHU,CAAA,MAAA,EAAA,OAAA,EAAA,MAAA,CAAA,CAAA,EAAA,SAAA,MAAA,EAAA,GAAA,SAAA,CAAA,CAAA,GDsHzB,MCtHyB,CAAA,KAAA,EDwH3B,iBCxH2B,CAAA,MAAA,ED0HzB,MC1HyB,CAAA,MAAA,ED0HV,kBC1HU,CAAA,MAAA,EAAA,OAAA,EAAA,MAAA,CAAA,CAAA,EAAA,SAAA,MAAA,EAAA,GAAA,SAAA,CAAA,CAAA,EAAA,eD8Hd,MC9Hc,CAAA,MAAA,EDgI3B,iBChI2B,CAAA,MAAA,EAAA,MAAA,EDgIO,MChIP,CAAA,MAAA,EAAA,MAAA,CAAA,EDgI+B,MChI/B,CAAA,MAAA,EDgI8C,kBChI9C,CAAA,CAAA,CAAA,GDiIzB,MCjIyB,CAAA,KAAA,EDmI3B,iBCnI2B,CAAA,MAAA,EAAA,MAAA,EDmIO,MCnIP,CAAA,MAAA,EAAA,MAAA,CAAA,EDmI+B,MCnI/B,CAAA,MAAA,EDmI8C,kBCnI9C,CAAA,CAAA,CAAA,EAAA,oBAAA,MAAA,GAAA,SAAA,GAAA,MAAA,GAAA,SAAA,EAAA,uBDsIN,MCtIM,CAAA,MAAA,EAAA,OAAA,CAAA,GAAA,SAAA,GAAA,SAAA,EAAA,qBDuIR,MCvIQ,CAAA,MAAA,EDuIO,MCvIP,CAAA,MAAA,EAAA,OAAA,CAAA,CAAA,GAAA,SAAA,GAAA,SAAA,CAAA,CAAA;EAAgB,SAAA,MAAA,CAAA,EDyI3B,MCzI2B;EAAW,SAAA,MAAA,ED0IvC,MC1IuC;EAAlB,SAAA,MAAA,ED2IrB,MC3IqB;EAA+B,SAAA,WAAA,CAAA,ED4I9C,WC5I8C;EAAlE,SAAA,cAAA,CAAA,ED6IuB,cC7IvB;EAaK,SAAA,YAAA,CAAA,EDiIgB,YCjIhB;EAEK,SAAA,YAAA,CAAA,EDgIW,MChIX,CAAA,MAAA,EDgI0B,wBChI1B,CAAA;EACA,SAAA,kBAAA,CAAA,EDgIiB,uBChIjB;EAGM;;;;;;;EAMmD,SAAA,mBAAA,CAAA,EAAA,SAAA,MAAA,EAAA;;AAAnE,UDkIY,aClIZ,CAAA,aAAA,MAAA,EAAA,iBAAA,OAAA,EAAA,aAAA,MAAA,CAAA,CAAA;EAOK,QAAA,CAAA,cAAA,OAAA,CAAA,CAAA,KAAA,CAAA,ED4HgC,KC5HhC,CAAA,ED4HwC,aC5HxC,CD4HsD,IC5HtD,ED4H4D,KC5H5D,ED4HmE,IC5HnE,CAAA;EAEK,IAAA,CAAA,WAAA,MAAA,CAAA,CAAA,EAAA,ED2He,EC3Hf,CAAA,ED2HoB,aC3HpB,CD2HkC,IC3HlC,ED2HwC,QC3HxC,ED2HkD,EC3HlD,CAAA;EACA,KAAA,EAAA,ED2HJ,kBC3HI,CD2He,IC3Hf,ED2HqB,QC3HrB,ED2H+B,IC3H/B,CAAA;;;;cA7DF,uEAGI,yBAAyB,wCACtB,eAAe,sBAAsB;;;EDI7C,iBAAA,OAAoB;EAU3B,iBAAA,UAAsB;EACV,WAAA,CAAA,IAAA,ECPP,IDOO,EAAA,KAAA,ECNN,KDMM,EAAA,MAAA,CAAA,ECLL,MDKK,EAAA,SAAA,CAAA,ECJF,SDIE;EACA,KAAA,CAAA,kBAAA,MAAA,EAAA,mBAAA,MAAA,CAAA,CAAA,SAAA,ECIF,SDJE,EAAA,UAAA,ECKD,UDLC,CAAA,ECMZ,YDNY,CCMC,IDND,ECMO,KDNP,ECMc,MDNd,GCMuB,MDNvB,CCM8B,SDN9B,ECMyC,UDNzC,CAAA,ECMsD,SDNtD,CAAA;EAEO,QAAA,CAAA,qBAAA,MAAA,EAAA,gBAAA,MAAA,EAAA,gBAAA,MAAA,CAAA,CAAA,IAAA,ECiBd,YDjBc,EAAA,OAAA,EAAA;IAAM,OAAA,ECmBf,ODnBe;IAIlB,OAAA,ECgBG,ODhBH;IAUA,WAAA,EAAA,KAAA,GAAA,KAAA,GAAA,KAA+B;IAW/B,EAAA,EAAA;MAIe,WAAA,ECNN,KDMM;MAAM,aAAA,EAAA,SAAA,MAAA,EAAA;MAA7B,UAAA,ECJgB,ODIhB;MACD,YAAA,EAAA,SAAA,MAAA,EAAA;IACiD,CAAA;EAGzB,CAAA,CAAA,ECLtB,YDKsB,CCLT,IDKS,ECLH,KDKG,ECLI,MDKJ,ECLY,SDKZ,GCLwB,MDKxB,CCL+B,YDK/B,ECL6C,kBDK7C,CAAA,CAAA;EACS,QAAA,CAAA,qBAAA,MAAA,EAAA,gBAAA,MAAA,EAAA,gBAAA,MAAA,EAAA,sBAAA,MAAA,CAAA,CAAA,IAAA,ECC1B,YDD0B,EAAA,OAAA,EAAA;IAA6B,OAAA,ECGlD,ODHkD;IAMhD,OAAA,ECFF,ODEE;IAQA,WAAQ,EAAA,KAAA;IAQR,OAAA,EAAA;MAWA,KAAA,EC1BF,aD0BmB;MAED,aAAA,EAAA,SAAA,MAAA,EAAA;MAAf,YAAA,EAAA,SAAA,MAAA,EAAA;IAGD,CAAA;IACG,EAAA,EAAA;MACI,WAAA,EC5BH,KD4BG;MAEK,aAAA,EAAA,SAAA,MAAA,EAAA;MACA,UAAA,EC7BT,aD6BS;MACI,YAAA,EAAA,SAAA,MAAA,EAAA;IAAa,CAAA;EAGlC,CAAA,CAAA,EC7BP,YD6BO,CC7BM,ID6BY,EC7BN,KD6BM,EC7BC,MD6BD,EC7BS,SD6BT,GC7BqB,MD6BrB,CC7B4B,YD6B5B,EC7B0C,kBD6B1C,CAAA,CAAA;EAcb,KAAA,CAAA,CAAA,EC+BN,iBD/BuB,CC+BL,ID/BK,EC+BC,KD/BD,EC+BQ,MD/BR,EC+BgB,SD/BhB,CAAA;;;;;;AA9GlC;AAKE;UECQ,qBFKO,CAAA,mBELkC,oBFKlC,CAAA,CAAA;EACA,IAAA,EELT,UFKS;EAEO,QAAA,EAAA,IAAA;EAAM,UAAA,CAAA,EELf,MFKe,CAAA,MAAA,EAAA,OAAA,CAAA;EAIlB,OAAA,CAAA,EERA,+BFWW;AAOvB;AAWA;;;;UEtBU,wBF2BP,CAAA,mBE3BmD,oBF2BnD,CAAA,CAAA;EACiD,IAAA,EE3B5C,UF2B4C;EAGzB,QAAA,CAAA,EAAA,KAAA;EACS,UAAA,CAAA,EE7BrB,MF6BqB,CAAA,MAAA,EAAA,OAAA,CAAA;EAA6B,OAAA,CAAA,EE5BrD,aF4BqD;AAMjE;AAQA,KEvCK,sBFuCoB,CAAA,mBEvCsB,oBFuCtB,CAAA,GEvC8C,IFuC9C,CEtCvB,wBFsCuB,CEtCE,UFsCF,CAAA,EAAA,SAAA,GAAA,UAAA,CAAA,GAAA;EAQR;AAWjB;;;EAKiB,QAAA,CAAA,EAAA,KAAA;EACG,SAAA,EEvDP,6BFuDO;CACI;;;;;AAOxB;AAciB,iBE1CD,WF0CkB,CAAA,aAAA,MAAA,CAAA,CAAA,IAAA,EE1CqB,IF0CrB,CAAA,EE1C4B,YF0C5B,CE1CyC,IF0CzC,CAAA;;;;;AAOhB,cEzCL,YFyCK,CAAA,aAAA,MAAA,EAAA,gBEvCA,MFuCA,CAAA,MAAA,EEvCe,kBFuCf,CAAA,MAAA,EAAA,OAAA,EAAA,MAAA,CAAA,CAAA,GEvC8D,MFuC9D,CAAA,KAAA,EErCd,kBFqCc,CAAA,MAAA,EAAA,OAAA,EAAA,MAAA,CAAA,CAAA,EAAA,mBAAA,SAAA,MAAA,EAAA,GAAA,SAAA,GAAA,SAAA,CAAA,CAAA;EACC,iBAAA,MAAA;EACG;EAAS,WAAA,CAAA,IAAA,EE/BrB,IF+BqB,EAAA,OAAA,EE9BlB,OF8BkB,EAAA,UAAA,EE7Bf,UF6Be,EAAA,cAAA,EAAA,MAAA,GAAA,SAAA,EAAA,OAAA,EAAA,SE3BT,mBF2BS,EAAA,EAAA,OAAA,EAAA,SE1BT,QF0BS,EAAA,EAAA,WAAA,EAAA,SEzBL,aFyBK,EAAA;EAGd,YAAA,KAAA,CAAA;EAKA,YAAA,QAAA,CAAA;EAMI,YAAA,WAAA,CAAA;EAAf;;;;EAOA,MAAA,CAAA,gBAAA,MAAA,EAAA,mBEjB8C,oBFiB9C,CAAA,CAAA,IAAA,EEhBI,OFgBJ,EAAA,OAAA,EEfO,qBFeP,CEf6B,UFe7B,CAAA,CAAA,EEdD,YFcC,CEbF,IFaE,EEZF,OFYE,GEZQ,MFYR,CEZe,OFYf,EEZwB,kBFYxB,CEZ2C,OFY3C,EAAA,IAAA,EEZ0D,UFY1D,CAAA,SAAA,CAAA,CAAA,CAAA,EEXF,UFWE,CAAA;EAFF;;;;EAQ0D,MAAA,CAAA,gBAAA,MAAA,EAAA,mBEVV,oBFUU,CAAA,CAAA,IAAA,EETpD,OFSoD,EAAA,OAAA,EERjD,wBFQiD,CERxB,UFQwB,CAAA,CAAA,EEPzD,YFOyD,CEN1D,IFM0D,EEL1D,OFK0D,GELhD,MFKgD,CELzC,OFKyC,EELhC,kBFKgC,CELb,OFKa,EAAA,KAAA,EELG,UFKH,CAAA,SAAA,CAAA,CAAA,CAAA,EEJ1D,UFI0D,CAAA;EAA1D,SAAA,CAAA,gBAAA,MAAA,EAAA,mBEamD,oBFbnD,CAAA,CAAA,IAAA,EEcM,OFdN,EAAA,OAAA,EEeS,sBFfT,CEegC,UFfhC,CAAA,CAAA,EEgBC,YFhBD,CEiBA,IFjBA,EEkBA,OFlBA,GEkBU,MFlBV,CEkBiB,OFlBjB,EEkB0B,kBFlB1B,CEkB6C,OFlB7C,EAAA,KAAA,EEkB6D,UFlB7D,CAAA,SAAA,CAAA,CAAA,CAAA,EEmBA,UFnBA,CAAA;EAFa,QAAA,cAAA;EAKqB,UAAA,CAAA,WAAA,SAAA,MAAA,EAAA,CAAA,CAAA,OAAA,EEyEzB,EFzEyB,EAAA,IAAA,CAAA,EAAA,MAAA,CAAA,EE2EjC,YF3EiC,CE2EpB,IF3EoB,EE2Ed,OF3Ec,EE2EL,EF3EK,CAAA;EAAuC,MAAA,CAAA,OAAA,EAAA,SAAA,MAAA,EAAA,EAAA,IAAA,CAAA,EAAA,MAAA,CAAA,EEuFxB,YFvFwB,CEuFX,IFvFW,EEuFL,OFvFK,EEuFI,UFvFJ,CAAA;EAAf,KAAA,CAAA,OAAA,EAAA,SAAA,MAAA,EAAA,EAAA,IAAA,CAAA,EAAA,MAAA,CAAA,EEoGV,YFpGU,CEoGG,IFpGH,EEoGS,OFpGT,EEoGkB,UFpGlB,CAAA;EAA1D,UAAA,CAAA,OAAA,EAAA,SAAA,MAAA,EAAA,EAAA,UAAA,EAAA;IAFE,KAAA,EAAA,MAAA;IAKmB,OAAA,EAAA,SAAA,MAAA,EAAA;EACa,CAAA,EAAA,IAInB,CAJmB,EAAA;IAAf,IAAA,CAAA,EAAA,MAAA;IAEH,UAAA,CAAA,EAAA,OAAA;IACD,KAAA,CAAA,EAAA,OAAA;EACA,CAAA,CAAA,EE6Gd,YF7Gc,CE6GD,IF7GC,EE6GK,OF7GL,EE6Gc,UF7Gd,CAAA;EACM,KAAA,CAAA,CAAA,EE+Hd,iBF/Hc,CE+HI,IF/HJ,EE+HU,OF/HV,EE+HmB,UF/HnB,CAAA;;;;AA9Jb,cGEC,eHFmB,CAAA,eAGF,MAAA,GAAA,SAAA,GAAA,SAAA,EAAA,eGCb,MHDa,CAAA,MAAA,EGG1B,iBHH0B,CAAA,MAAA,EGKxB,MHLwB,CAAA,MAAA,EGKT,kBHLS,CAAA,MAAA,EAAA,OAAA,EAAA,MAAA,CAAA,CAAA,EAAA,SAAA,MAAA,EAAA,GAAA,SAAA,CAAA,CAAA,GGQxB,MHRwB,CAAA,KAAA,EAAA,KAAA,CAAA,EAAA,eGSb,MHTa,CAAA,MAAA,EGW1B,iBHX0B,CAAA,MAAA,EAAA,MAAA,EGWQ,MHXR,CAAA,MAAA,EAAA,MAAA,CAAA,EGWgC,MHXhC,CAAA,MAAA,EGW+C,kBHX/C,CAAA,CAAA,CAAA,GGYxB,MHZwB,CAAA,KAAA,EAAA,KAAA,CAAA,EAAA,oBAAA,MAAA,GAAA,SAAA,GAAA,SAAA,EAAA,uBGcL,MHdK,CAAA,MAAA,EAAA,OAAA,CAAA,GAAA,SAAA,GAAA,SAAA,EAAA,qBGeP,MHfO,CAAA,MAAA,EGeQ,MHfR,CAAA,MAAA,EAAA,OAAA,CAAA,CAAA,GAAA,SAAA,GAAA,SAAA,CAAA,CAAA;EAOzB,mBAAA,KAAA,EGUuB,oBHVD,CGWvB,MHXuB,EGYvB,MHZuB,EGavB,MHbuB,EGcvB,WHduB,EGevB,cHfuB,EGgBvB,YHhBuB,CAAA;EACV,WAAA,CAAA,KAAA,CAAA,EGmBL,oBHnBK,CGmBgB,MHnBhB,EGmBwB,MHnBxB,EGmBgC,MHnBhC,EGmBwC,WHnBxC,EGmBqD,cHnBrD,EGmBqE,YHnBrE,CAAA;EACA,MAAA,CAAA,UAAA,MAAA,CAAA,CAAA,OAAA,EG6BJ,aH7BI,CAAA,MAAA,EG6BkB,CH7BlB,CAAA,CAAA,EG8BZ,eH9BY,CG8BI,CH9BJ,EG8BO,MH9BP,EG8Be,MH9Bf,EG8BuB,WH9BvB,EG8BoC,cH9BpC,EG8BoD,YH9BpD,CAAA;EAEO,YAAA,CAAA,UGmCC,MHnCD,CAAA,MAAA,EGmCgB,MHnChB,CAAA,MAAA,EAAA,OAAA,CAAA,CAAA,CAAA,CAAA,YAAA,EGoCN,CHpCM,CAAA,EGqCnB,eHrCmB,CGqCH,MHrCG,EGqCK,MHrCL,EGqCa,MHrCb,EGqCqB,WHrCrB,EGqCkC,cHrClC,EGqCkD,CHrClD,CAAA;EAAM,KAAA,CAAA,kBAAA,MAAA,EAAA,UG8ChB,YH9CgB,CG+CxB,SH/CwB,EGgDxB,MHhDwB,CAAA,MAAA,EGgDT,kBHhDS,CAAA,MAAA,EAAA,OAAA,EAAA,MAAA,CAAA,CAAA,EAAA,SAAA,MAAA,EAAA,GAAA,SAAA,CAAA,CAAA,CAAA,IAAA,EGoDpB,SHpDoB,EAAA,QAAA,EAAA,CAAA,CAAA,EGqDZ,YHrDY,CGqDC,SHrDD,CAAA,EAAA,GGqDgB,CHrDhB,GAAA,SAAA,CAAA,EGsDzB,eHtDyB,CGuD1B,MHvD0B,EGwD1B,MHxD0B,GGwDjB,MHxDiB,CGwDV,SHxDU,EGwDC,UHxDD,CGwDY,CHxDZ,CAAA,OAAA,CAAA,CAAA,CAAA,EGyD1B,MHzD0B,EG0D1B,WH1D0B,EG2D1B,cH3D0B,EG4D1B,YH5D0B,CAAA;EAIlB,KAAA,CAAA,kBAAA,MAAwB,EAAA,kBAGP,MAAA,EAAA,UG6Ef,YH7Ee,CG8EvB,SH9EuB,EG+EvB,SH/EuB,EGgFvB,MHhFuB,CAAA,MAAA,EAAA,MAAA,CAAA,EGiFvB,MHjFuB,CAAA,MAAA,EGiFR,kBHjFQ,CAAA,CAAA,CAAA,CAAA,IAAA,EGoFnB,SHpFmB,EAAA,KAAA,EGqFlB,SHrFkB,EAAA,QAAA,EAAA,CAAA,CAAA,EGuFpB,YHvFoB,CGuFP,SHvFO,EGuFI,SHvFJ,EGuFe,MHvFf,CAAA,MAAA,EAAA,MAAA,CAAA,EGuFuC,MHvFvC,CAAA,KAAA,EAAA,KAAA,CAAA,CAAA,EAAA,GGwFpB,CHxFoB,GAAA,SAAA,CAAA,EGyFxB,eHzFwB,CG0FzB,MH1FyB,EG2FzB,MH3FyB,EG4FzB,MH5FyB,GG4FhB,MH5FgB,CG4FT,SH5FS,EG4FE,UH5FF,CG4Fa,CH5Fb,CAAA,OAAA,CAAA,CAAA,CAAA,EG6FzB,WH7FyB,EG8FzB,cH9FyB,EG+FzB,YH/FyB,CAAA;EAOjB,WAAA,CAAA,UAAA,MAAA,CAAA,CAAA,IAA+B,EG8GjC,CH9GiC,CAAA,EG+GtC,eH/GsC,CG+GtB,MH/GsB,EG+Gd,MH/Gc,EG+GN,MH/GM,EG+GE,CH/GF,EG+GK,cH/GL,EG+GqB,YH/GrB,CAAA;EAW/B,kBAAA,CAAA,MAAkB,EG4GlB,uBH5GkB,CAAA,EG6GzB,eH7GyB,CG6GT,M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"}
|
package/dist/index.mjs
CHANGED
|
@@ -135,14 +135,13 @@ var TableBuilder = class TableBuilder {
|
|
|
135
135
|
} : { columns };
|
|
136
136
|
return new TableBuilder(this._state.name, this._state.columns, this._state.primaryKey, this._state.primaryKeyName, this._state.uniques, [...this._state.indexes, indexDef], this._state.foreignKeys);
|
|
137
137
|
}
|
|
138
|
-
foreignKey(columns, references,
|
|
139
|
-
const fkDef =
|
|
138
|
+
foreignKey(columns, references, opts) {
|
|
139
|
+
const fkDef = {
|
|
140
140
|
columns,
|
|
141
141
|
references,
|
|
142
|
-
name
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
references
|
|
142
|
+
...opts?.name !== void 0 && { name: opts.name },
|
|
143
|
+
...opts?.constraint !== void 0 && { constraint: opts.constraint },
|
|
144
|
+
...opts?.index !== void 0 && { index: opts.index }
|
|
146
145
|
};
|
|
147
146
|
return new TableBuilder(this._state.name, this._state.columns, this._state.primaryKey, this._state.primaryKeyName, this._state.uniques, this._state.indexes, [...this._state.foreignKeys, fkDef]);
|
|
148
147
|
}
|
|
@@ -211,6 +210,12 @@ var ContractBuilder = class ContractBuilder {
|
|
|
211
210
|
storageHash: hash
|
|
212
211
|
});
|
|
213
212
|
}
|
|
213
|
+
foreignKeyDefaults(config) {
|
|
214
|
+
return new ContractBuilder({
|
|
215
|
+
...this.state,
|
|
216
|
+
foreignKeyDefaults: config
|
|
217
|
+
});
|
|
218
|
+
}
|
|
214
219
|
};
|
|
215
220
|
function defineContract() {
|
|
216
221
|
return new ContractBuilder();
|
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","names":["relationDef: RelationDefinition","constraint: UniqueConstraintDef","indexDef: IndexDef","fkDef: ForeignKeyDef"],"sources":["../src/model-builder.ts","../src/table-builder.ts","../src/contract-builder.ts"],"sourcesContent":["import type { ModelBuilderState, RelationDefinition } from './builder-state';\n\nexport class ModelBuilder<\n Name extends string,\n Table extends string,\n Fields extends Record<string, string> = Record<never, never>,\n Relations extends Record<string, RelationDefinition> = Record<never, never>,\n> {\n private readonly _name: Name;\n private readonly _table: Table;\n private readonly _fields: Fields;\n private readonly _relations: Relations;\n\n constructor(\n name: Name,\n table: Table,\n fields: Fields = {} as Fields,\n relations: Relations = {} as Relations,\n ) {\n this._name = name;\n this._table = table;\n this._fields = fields;\n this._relations = relations;\n }\n\n field<FieldName extends string, ColumnName extends string>(\n fieldName: FieldName,\n columnName: ColumnName,\n ): ModelBuilder<Name, Table, Fields & Record<FieldName, ColumnName>, Relations> {\n return new ModelBuilder(\n this._name,\n this._table,\n {\n ...this._fields,\n [fieldName]: columnName,\n } as Fields & Record<FieldName, ColumnName>,\n this._relations,\n );\n }\n\n relation<RelationName extends string, ToModel extends string, ToTable extends string>(\n name: RelationName,\n options: {\n toModel: ToModel;\n toTable: ToTable;\n cardinality: '1:1' | '1:N' | 'N:1';\n on: {\n parentTable: Table;\n parentColumns: readonly string[];\n childTable: ToTable;\n childColumns: readonly string[];\n };\n },\n ): ModelBuilder<Name, Table, Fields, Relations & Record<RelationName, RelationDefinition>>;\n relation<\n RelationName extends string,\n ToModel extends string,\n ToTable extends string,\n JunctionTable extends string,\n >(\n name: RelationName,\n options: {\n toModel: ToModel;\n toTable: ToTable;\n cardinality: 'N:M';\n through: {\n table: JunctionTable;\n parentColumns: readonly string[];\n childColumns: readonly string[];\n };\n on: {\n parentTable: Table;\n parentColumns: readonly string[];\n childTable: JunctionTable;\n childColumns: readonly string[];\n };\n },\n ): ModelBuilder<Name, Table, Fields, Relations & Record<RelationName, RelationDefinition>>;\n relation<\n RelationName extends string,\n ToModel extends string,\n ToTable extends string,\n JunctionTable extends string = never,\n >(\n name: RelationName,\n options: {\n toModel: ToModel;\n toTable: ToTable;\n cardinality: '1:1' | '1:N' | 'N:1' | 'N:M';\n through?: {\n table: JunctionTable;\n parentColumns: readonly string[];\n childColumns: readonly string[];\n };\n on: {\n parentTable: Table;\n parentColumns: readonly string[];\n childTable: ToTable | JunctionTable;\n childColumns: readonly string[];\n };\n },\n ): ModelBuilder<Name, Table, Fields, Relations & Record<RelationName, RelationDefinition>> {\n // Validate parentTable matches model's table\n if (options.on.parentTable !== this._table) {\n throw new Error(\n `Relation \"${name}\" parentTable \"${options.on.parentTable}\" does not match model table \"${this._table}\"`,\n );\n }\n\n // Validate childTable matches toTable (for non-N:M) or through.table (for N:M)\n if (options.cardinality === 'N:M') {\n if (!options.through) {\n throw new Error(`Relation \"${name}\" with cardinality \"N:M\" requires through field`);\n }\n if (options.on.childTable !== options.through.table) {\n throw new Error(\n `Relation \"${name}\" childTable \"${options.on.childTable}\" does not match through.table \"${options.through.table}\"`,\n );\n }\n } else {\n if (options.on.childTable !== options.toTable) {\n throw new Error(\n `Relation \"${name}\" childTable \"${options.on.childTable}\" does not match toTable \"${options.toTable}\"`,\n );\n }\n }\n\n const relationDef: RelationDefinition = {\n to: options.toModel,\n cardinality: options.cardinality,\n on: {\n parentCols: options.on.parentColumns,\n childCols: options.on.childColumns,\n },\n ...(options.through\n ? {\n through: {\n table: options.through.table,\n parentCols: options.through.parentColumns,\n childCols: options.through.childColumns,\n },\n }\n : undefined),\n };\n\n return new ModelBuilder(this._name, this._table, this._fields, {\n ...this._relations,\n [name]: relationDef,\n } as Relations & Record<RelationName, RelationDefinition>);\n }\n\n build(): ModelBuilderState<Name, Table, Fields, Relations> {\n return {\n name: this._name,\n table: this._table,\n fields: this._fields,\n relations: this._relations,\n };\n }\n}\n","import type { ColumnDefault, ExecutionMutationDefaultValue } from '@prisma-next/contract/types';\nimport { ifDefined } from '@prisma-next/utils/defined';\nimport type {\n ColumnBuilderState,\n ColumnTypeDescriptor,\n ForeignKeyDef,\n IndexDef,\n NullableColumnCannotHaveDefault,\n TableBuilderState,\n UniqueConstraintDef,\n} from './builder-state';\n\n/**\n * Column options for nullable columns.\n * Nullable columns cannot have a default value.\n */\ninterface NullableColumnOptions<Descriptor extends ColumnTypeDescriptor> {\n type: Descriptor;\n nullable: true;\n typeParams?: Record<string, unknown>;\n default?: NullableColumnCannotHaveDefault;\n}\n\n/**\n * Column options for non-nullable columns.\n * Non-nullable columns can optionally have a default value.\n */\ninterface NonNullableColumnOptions<Descriptor extends ColumnTypeDescriptor> {\n type: Descriptor;\n nullable?: false;\n typeParams?: Record<string, unknown>;\n default?: ColumnDefault;\n}\n\ntype GeneratedColumnOptions<Descriptor extends ColumnTypeDescriptor> = Omit<\n NonNullableColumnOptions<Descriptor>,\n 'default' | 'nullable'\n> & {\n /**\n * Generated columns are always non-nullable and use mutation-time defaults\n * that the runtime injects when the column is omitted from insert input.\n */\n nullable?: false;\n generated: ExecutionMutationDefaultValue;\n};\n\n/**\n * Column options that enforce nullable/default mutual exclusivity.\n *\n * Invariant: A column with a default value is always NOT NULL.\n * - If `nullable: true`, the `default` property is forbidden\n * - If `nullable` is `false` or omitted, the `default` property is allowed\n */\ntype ColumnOptions<Descriptor extends ColumnTypeDescriptor> =\n | NullableColumnOptions<Descriptor>\n | NonNullableColumnOptions<Descriptor>;\n\ntype NullableFromOptions<TOptions> = TOptions extends { nullable: true } ? true : false;\n\ninterface TableBuilderInternalState<\n Name extends string,\n Columns extends Record<string, ColumnBuilderState<string, boolean, string>>,\n PrimaryKey extends readonly string[] | undefined,\n> {\n readonly name: Name;\n readonly columns: Columns;\n readonly primaryKey: PrimaryKey;\n readonly primaryKeyName: string | undefined;\n readonly uniques: readonly UniqueConstraintDef[];\n readonly indexes: readonly IndexDef[];\n readonly foreignKeys: readonly ForeignKeyDef[];\n}\n\n/**\n * Creates a new table builder with the given name.\n * This is the preferred way to create a TableBuilder - it ensures\n * type parameters are inferred correctly without unsafe casts.\n */\nexport function createTable<Name extends string>(name: Name): TableBuilder<Name> {\n return new TableBuilder(name, {}, undefined, undefined, [], [], []);\n}\n\n/**\n * Builder for defining table structure with type-safe chaining.\n * Use `createTable(name)` to create instances.\n */\nexport class TableBuilder<\n Name extends string,\n Columns extends Record<string, ColumnBuilderState<string, boolean, string>> = Record<\n never,\n ColumnBuilderState<string, boolean, string>\n >,\n PrimaryKey extends readonly string[] | undefined = undefined,\n> {\n private readonly _state: TableBuilderInternalState<Name, Columns, PrimaryKey>;\n\n /** @internal Use createTable() instead */\n constructor(\n name: Name,\n columns: Columns,\n primaryKey: PrimaryKey,\n primaryKeyName: string | undefined,\n uniques: readonly UniqueConstraintDef[],\n indexes: readonly IndexDef[],\n foreignKeys: readonly ForeignKeyDef[],\n ) {\n this._state = {\n name,\n columns,\n primaryKey,\n primaryKeyName,\n uniques,\n indexes,\n foreignKeys,\n };\n }\n\n private get _name(): Name {\n return this._state.name;\n }\n\n private get _columns(): Columns {\n return this._state.columns;\n }\n\n private get _primaryKey(): PrimaryKey {\n return this._state.primaryKey;\n }\n\n /**\n * Add a nullable column to the table.\n * Nullable columns cannot have a default value.\n */\n column<ColName extends string, Descriptor extends ColumnTypeDescriptor>(\n name: ColName,\n options: NullableColumnOptions<Descriptor>,\n ): TableBuilder<\n Name,\n Columns & Record<ColName, ColumnBuilderState<ColName, true, Descriptor['codecId']>>,\n PrimaryKey\n >;\n\n /**\n * Add a non-nullable column to the table.\n * Non-nullable columns can optionally have a default value.\n */\n column<ColName extends string, Descriptor extends ColumnTypeDescriptor>(\n name: ColName,\n options: NonNullableColumnOptions<Descriptor>,\n ): TableBuilder<\n Name,\n Columns & Record<ColName, ColumnBuilderState<ColName, false, Descriptor['codecId']>>,\n PrimaryKey\n >;\n\n /**\n * Implementation of the column method.\n */\n column<ColName extends string, Descriptor extends ColumnTypeDescriptor>(\n name: ColName,\n options: ColumnOptions<Descriptor>,\n ): TableBuilder<\n Name,\n Columns & Record<ColName, ColumnBuilderState<ColName, boolean, Descriptor['codecId']>>,\n PrimaryKey\n > {\n return this.columnInternal(name, options);\n }\n\n generated<ColName extends string, Descriptor extends ColumnTypeDescriptor>(\n name: ColName,\n options: GeneratedColumnOptions<Descriptor>,\n ): TableBuilder<\n Name,\n Columns & Record<ColName, ColumnBuilderState<ColName, false, Descriptor['codecId']>>,\n PrimaryKey\n > {\n const { generated, ...columnOptions } = options;\n return this.columnInternal(name, columnOptions, generated);\n }\n\n private columnInternal<\n ColName extends string,\n Descriptor extends ColumnTypeDescriptor,\n Options extends ColumnOptions<Descriptor>,\n >(\n name: ColName,\n options: Options,\n executionDefault?: ExecutionMutationDefaultValue,\n ): TableBuilder<\n Name,\n Columns &\n Record<\n ColName,\n ColumnBuilderState<ColName, NullableFromOptions<Options>, Descriptor['codecId']>\n >,\n PrimaryKey\n > {\n const nullable = options.nullable ?? false;\n const { codecId, nativeType, typeParams: descriptorTypeParams, typeRef } = options.type;\n const typeParams = options.typeParams ?? descriptorTypeParams;\n\n // The type safety is enforced at the call site via overloads:\n // - NullableColumnOptions forbids `default` when `nullable: true`\n // - NonNullableColumnOptions allows `default` when `nullable` is false/omitted\n const columnState = {\n name,\n nullable,\n type: codecId,\n nativeType,\n ...ifDefined('typeParams', typeParams),\n ...ifDefined('typeRef', typeRef),\n ...ifDefined('default', 'default' in options ? options.default : undefined),\n ...ifDefined('executionDefault', executionDefault),\n } as ColumnBuilderState<ColName, NullableFromOptions<Options>, Descriptor['codecId']>;\n const newColumns = { ...this._columns, [name]: columnState } as Columns &\n Record<\n ColName,\n ColumnBuilderState<ColName, NullableFromOptions<Options>, Descriptor['codecId']>\n >;\n return new TableBuilder(\n this._state.name,\n newColumns,\n this._state.primaryKey,\n this._state.primaryKeyName,\n this._state.uniques,\n this._state.indexes,\n this._state.foreignKeys,\n );\n }\n\n primaryKey<PK extends readonly string[]>(\n columns: PK,\n name?: string,\n ): TableBuilder<Name, Columns, PK> {\n return new TableBuilder(\n this._state.name,\n this._state.columns,\n columns,\n name,\n this._state.uniques,\n this._state.indexes,\n this._state.foreignKeys,\n );\n }\n\n unique(columns: readonly string[], name?: string): TableBuilder<Name, Columns, PrimaryKey> {\n const constraint: UniqueConstraintDef = name ? { columns, name } : { columns };\n return new TableBuilder(\n this._state.name,\n this._state.columns,\n this._state.primaryKey,\n this._state.primaryKeyName,\n [...this._state.uniques, constraint],\n this._state.indexes,\n this._state.foreignKeys,\n );\n }\n\n index(columns: readonly string[], name?: string): TableBuilder<Name, Columns, PrimaryKey> {\n const indexDef: IndexDef = name ? { columns, name } : { columns };\n return new TableBuilder(\n this._state.name,\n this._state.columns,\n this._state.primaryKey,\n this._state.primaryKeyName,\n this._state.uniques,\n [...this._state.indexes, indexDef],\n this._state.foreignKeys,\n );\n }\n\n foreignKey(\n columns: readonly string[],\n references: { table: string; columns: readonly string[] },\n name?: string,\n ): TableBuilder<Name, Columns, PrimaryKey> {\n const fkDef: ForeignKeyDef = name ? { columns, references, name } : { columns, references };\n return new TableBuilder(\n this._state.name,\n this._state.columns,\n this._state.primaryKey,\n this._state.primaryKeyName,\n this._state.uniques,\n this._state.indexes,\n [...this._state.foreignKeys, fkDef],\n );\n }\n\n build(): TableBuilderState<Name, Columns, PrimaryKey> {\n return {\n name: this._name,\n columns: this._columns,\n ...(this._primaryKey !== undefined ? { primaryKey: this._primaryKey } : {}),\n ...(this._state.primaryKeyName !== undefined\n ? { primaryKeyName: this._state.primaryKeyName }\n : {}),\n uniques: this._state.uniques,\n indexes: this._state.indexes,\n foreignKeys: this._state.foreignKeys,\n } as TableBuilderState<Name, Columns, PrimaryKey>;\n }\n}\n","import type { TargetPackRef } from '@prisma-next/contract/framework-components';\nimport type {\n ColumnBuilderState,\n ContractBuilderState,\n ModelBuilderState,\n RelationDefinition,\n TableBuilderState,\n} from './builder-state';\nimport { ModelBuilder } from './model-builder';\nimport { createTable, TableBuilder } from './table-builder';\n\nexport class ContractBuilder<\n Target extends string | undefined = undefined,\n Tables extends Record<\n string,\n TableBuilderState<\n string,\n Record<string, ColumnBuilderState<string, boolean, string>>,\n readonly string[] | undefined\n >\n > = Record<never, never>,\n Models extends Record<\n string,\n ModelBuilderState<string, string, Record<string, string>, Record<string, RelationDefinition>>\n > = Record<never, never>,\n StorageHash extends string | undefined = undefined,\n ExtensionPacks extends Record<string, unknown> | undefined = undefined,\n Capabilities extends Record<string, Record<string, boolean>> | undefined = undefined,\n> {\n protected readonly state: ContractBuilderState<\n Target,\n Tables,\n Models,\n StorageHash,\n ExtensionPacks,\n Capabilities\n >;\n\n constructor(\n state?: ContractBuilderState<Target, Tables, Models, StorageHash, ExtensionPacks, Capabilities>,\n ) {\n this.state =\n state ??\n ({\n tables: {},\n models: {},\n } as ContractBuilderState<Target, Tables, Models, StorageHash, ExtensionPacks, Capabilities>);\n }\n\n target<T extends string>(\n packRef: TargetPackRef<string, T>,\n ): ContractBuilder<T, Tables, Models, StorageHash, ExtensionPacks, Capabilities> {\n return new ContractBuilder<T, Tables, Models, StorageHash, ExtensionPacks, Capabilities>({\n ...this.state,\n target: packRef.targetId,\n });\n }\n\n capabilities<C extends Record<string, Record<string, boolean>>>(\n capabilities: C,\n ): ContractBuilder<Target, Tables, Models, StorageHash, ExtensionPacks, C> {\n return new ContractBuilder<Target, Tables, Models, StorageHash, ExtensionPacks, C>({\n ...this.state,\n capabilities,\n });\n }\n\n table<\n TableName extends string,\n T extends TableBuilder<\n TableName,\n Record<string, ColumnBuilderState<string, boolean, string>>,\n readonly string[] | undefined\n >,\n >(\n name: TableName,\n callback: (t: TableBuilder<TableName>) => T | undefined,\n ): ContractBuilder<\n Target,\n Tables & Record<TableName, ReturnType<T['build']>>,\n Models,\n StorageHash,\n ExtensionPacks,\n Capabilities\n > {\n const tableBuilder = createTable(name);\n const result = callback(tableBuilder);\n const finalBuilder = result instanceof TableBuilder ? result : tableBuilder;\n const tableState = finalBuilder.build();\n\n return new ContractBuilder<\n Target,\n Tables & Record<TableName, ReturnType<T['build']>>,\n Models,\n StorageHash,\n ExtensionPacks,\n Capabilities\n >({\n ...this.state,\n tables: { ...this.state.tables, [name]: tableState } as Tables &\n Record<TableName, ReturnType<T['build']>>,\n });\n }\n\n model<\n ModelName extends string,\n TableName extends string,\n M extends ModelBuilder<\n ModelName,\n TableName,\n Record<string, string>,\n Record<string, RelationDefinition>\n >,\n >(\n name: ModelName,\n table: TableName,\n callback: (\n m: ModelBuilder<ModelName, TableName, Record<string, string>, Record<never, never>>,\n ) => M | undefined,\n ): ContractBuilder<\n Target,\n Tables,\n Models & Record<ModelName, ReturnType<M['build']>>,\n StorageHash,\n ExtensionPacks,\n Capabilities\n > {\n const modelBuilder = new ModelBuilder<ModelName, TableName>(name, table);\n const result = callback(modelBuilder);\n const finalBuilder = result instanceof ModelBuilder ? result : modelBuilder;\n const modelState = finalBuilder.build();\n\n return new ContractBuilder<\n Target,\n Tables,\n Models & Record<ModelName, ReturnType<M['build']>>,\n StorageHash,\n ExtensionPacks,\n Capabilities\n >({\n ...this.state,\n models: { ...this.state.models, [name]: modelState } as Models &\n Record<ModelName, ReturnType<M['build']>>,\n });\n }\n\n storageHash<H extends string>(\n hash: H,\n ): ContractBuilder<Target, Tables, Models, H, ExtensionPacks, Capabilities> {\n return new ContractBuilder<Target, Tables, Models, H, ExtensionPacks, Capabilities>({\n ...this.state,\n storageHash: hash,\n });\n }\n}\n\nexport function defineContract(): ContractBuilder {\n return new ContractBuilder();\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.mjs","names":["relationDef: RelationDefinition","constraint: UniqueConstraintDef","indexDef: IndexDef","fkDef: ForeignKeyDef"],"sources":["../src/model-builder.ts","../src/table-builder.ts","../src/contract-builder.ts"],"sourcesContent":["import type { ModelBuilderState, RelationDefinition } from './builder-state';\n\nexport class ModelBuilder<\n Name extends string,\n Table extends string,\n Fields extends Record<string, string> = Record<never, never>,\n Relations extends Record<string, RelationDefinition> = Record<never, never>,\n> {\n private readonly _name: Name;\n private readonly _table: Table;\n private readonly _fields: Fields;\n private readonly _relations: Relations;\n\n constructor(\n name: Name,\n table: Table,\n fields: Fields = {} as Fields,\n relations: Relations = {} as Relations,\n ) {\n this._name = name;\n this._table = table;\n this._fields = fields;\n this._relations = relations;\n }\n\n field<FieldName extends string, ColumnName extends string>(\n fieldName: FieldName,\n columnName: ColumnName,\n ): ModelBuilder<Name, Table, Fields & Record<FieldName, ColumnName>, Relations> {\n return new ModelBuilder(\n this._name,\n this._table,\n {\n ...this._fields,\n [fieldName]: columnName,\n } as Fields & Record<FieldName, ColumnName>,\n this._relations,\n );\n }\n\n relation<RelationName extends string, ToModel extends string, ToTable extends string>(\n name: RelationName,\n options: {\n toModel: ToModel;\n toTable: ToTable;\n cardinality: '1:1' | '1:N' | 'N:1';\n on: {\n parentTable: Table;\n parentColumns: readonly string[];\n childTable: ToTable;\n childColumns: readonly string[];\n };\n },\n ): ModelBuilder<Name, Table, Fields, Relations & Record<RelationName, RelationDefinition>>;\n relation<\n RelationName extends string,\n ToModel extends string,\n ToTable extends string,\n JunctionTable extends string,\n >(\n name: RelationName,\n options: {\n toModel: ToModel;\n toTable: ToTable;\n cardinality: 'N:M';\n through: {\n table: JunctionTable;\n parentColumns: readonly string[];\n childColumns: readonly string[];\n };\n on: {\n parentTable: Table;\n parentColumns: readonly string[];\n childTable: JunctionTable;\n childColumns: readonly string[];\n };\n },\n ): ModelBuilder<Name, Table, Fields, Relations & Record<RelationName, RelationDefinition>>;\n relation<\n RelationName extends string,\n ToModel extends string,\n ToTable extends string,\n JunctionTable extends string = never,\n >(\n name: RelationName,\n options: {\n toModel: ToModel;\n toTable: ToTable;\n cardinality: '1:1' | '1:N' | 'N:1' | 'N:M';\n through?: {\n table: JunctionTable;\n parentColumns: readonly string[];\n childColumns: readonly string[];\n };\n on: {\n parentTable: Table;\n parentColumns: readonly string[];\n childTable: ToTable | JunctionTable;\n childColumns: readonly string[];\n };\n },\n ): ModelBuilder<Name, Table, Fields, Relations & Record<RelationName, RelationDefinition>> {\n // Validate parentTable matches model's table\n if (options.on.parentTable !== this._table) {\n throw new Error(\n `Relation \"${name}\" parentTable \"${options.on.parentTable}\" does not match model table \"${this._table}\"`,\n );\n }\n\n // Validate childTable matches toTable (for non-N:M) or through.table (for N:M)\n if (options.cardinality === 'N:M') {\n if (!options.through) {\n throw new Error(`Relation \"${name}\" with cardinality \"N:M\" requires through field`);\n }\n if (options.on.childTable !== options.through.table) {\n throw new Error(\n `Relation \"${name}\" childTable \"${options.on.childTable}\" does not match through.table \"${options.through.table}\"`,\n );\n }\n } else {\n if (options.on.childTable !== options.toTable) {\n throw new Error(\n `Relation \"${name}\" childTable \"${options.on.childTable}\" does not match toTable \"${options.toTable}\"`,\n );\n }\n }\n\n const relationDef: RelationDefinition = {\n to: options.toModel,\n cardinality: options.cardinality,\n on: {\n parentCols: options.on.parentColumns,\n childCols: options.on.childColumns,\n },\n ...(options.through\n ? {\n through: {\n table: options.through.table,\n parentCols: options.through.parentColumns,\n childCols: options.through.childColumns,\n },\n }\n : undefined),\n };\n\n return new ModelBuilder(this._name, this._table, this._fields, {\n ...this._relations,\n [name]: relationDef,\n } as Relations & Record<RelationName, RelationDefinition>);\n }\n\n build(): ModelBuilderState<Name, Table, Fields, Relations> {\n return {\n name: this._name,\n table: this._table,\n fields: this._fields,\n relations: this._relations,\n };\n }\n}\n","import type { ColumnDefault, ExecutionMutationDefaultValue } from '@prisma-next/contract/types';\nimport { ifDefined } from '@prisma-next/utils/defined';\nimport type {\n ColumnBuilderState,\n ColumnTypeDescriptor,\n ForeignKeyDef,\n IndexDef,\n NullableColumnCannotHaveDefault,\n TableBuilderState,\n UniqueConstraintDef,\n} from './builder-state';\n\n/**\n * Column options for nullable columns.\n * Nullable columns cannot have a default value.\n */\ninterface NullableColumnOptions<Descriptor extends ColumnTypeDescriptor> {\n type: Descriptor;\n nullable: true;\n typeParams?: Record<string, unknown>;\n default?: NullableColumnCannotHaveDefault;\n}\n\n/**\n * Column options for non-nullable columns.\n * Non-nullable columns can optionally have a default value.\n */\ninterface NonNullableColumnOptions<Descriptor extends ColumnTypeDescriptor> {\n type: Descriptor;\n nullable?: false;\n typeParams?: Record<string, unknown>;\n default?: ColumnDefault;\n}\n\ntype GeneratedColumnOptions<Descriptor extends ColumnTypeDescriptor> = Omit<\n NonNullableColumnOptions<Descriptor>,\n 'default' | 'nullable'\n> & {\n /**\n * Generated columns are always non-nullable and use mutation-time defaults\n * that the runtime injects when the column is omitted from insert input.\n */\n nullable?: false;\n generated: ExecutionMutationDefaultValue;\n};\n\n/**\n * Column options that enforce nullable/default mutual exclusivity.\n *\n * Invariant: A column with a default value is always NOT NULL.\n * - If `nullable: true`, the `default` property is forbidden\n * - If `nullable` is `false` or omitted, the `default` property is allowed\n */\ntype ColumnOptions<Descriptor extends ColumnTypeDescriptor> =\n | NullableColumnOptions<Descriptor>\n | NonNullableColumnOptions<Descriptor>;\n\ntype NullableFromOptions<TOptions> = TOptions extends { nullable: true } ? true : false;\n\ninterface TableBuilderInternalState<\n Name extends string,\n Columns extends Record<string, ColumnBuilderState<string, boolean, string>>,\n PrimaryKey extends readonly string[] | undefined,\n> {\n readonly name: Name;\n readonly columns: Columns;\n readonly primaryKey: PrimaryKey;\n readonly primaryKeyName: string | undefined;\n readonly uniques: readonly UniqueConstraintDef[];\n readonly indexes: readonly IndexDef[];\n readonly foreignKeys: readonly ForeignKeyDef[];\n}\n\n/**\n * Creates a new table builder with the given name.\n * This is the preferred way to create a TableBuilder - it ensures\n * type parameters are inferred correctly without unsafe casts.\n */\nexport function createTable<Name extends string>(name: Name): TableBuilder<Name> {\n return new TableBuilder(name, {}, undefined, undefined, [], [], []);\n}\n\n/**\n * Builder for defining table structure with type-safe chaining.\n * Use `createTable(name)` to create instances.\n */\nexport class TableBuilder<\n Name extends string,\n Columns extends Record<string, ColumnBuilderState<string, boolean, string>> = Record<\n never,\n ColumnBuilderState<string, boolean, string>\n >,\n PrimaryKey extends readonly string[] | undefined = undefined,\n> {\n private readonly _state: TableBuilderInternalState<Name, Columns, PrimaryKey>;\n\n /** @internal Use createTable() instead */\n constructor(\n name: Name,\n columns: Columns,\n primaryKey: PrimaryKey,\n primaryKeyName: string | undefined,\n uniques: readonly UniqueConstraintDef[],\n indexes: readonly IndexDef[],\n foreignKeys: readonly ForeignKeyDef[],\n ) {\n this._state = {\n name,\n columns,\n primaryKey,\n primaryKeyName,\n uniques,\n indexes,\n foreignKeys,\n };\n }\n\n private get _name(): Name {\n return this._state.name;\n }\n\n private get _columns(): Columns {\n return this._state.columns;\n }\n\n private get _primaryKey(): PrimaryKey {\n return this._state.primaryKey;\n }\n\n /**\n * Add a nullable column to the table.\n * Nullable columns cannot have a default value.\n */\n column<ColName extends string, Descriptor extends ColumnTypeDescriptor>(\n name: ColName,\n options: NullableColumnOptions<Descriptor>,\n ): TableBuilder<\n Name,\n Columns & Record<ColName, ColumnBuilderState<ColName, true, Descriptor['codecId']>>,\n PrimaryKey\n >;\n\n /**\n * Add a non-nullable column to the table.\n * Non-nullable columns can optionally have a default value.\n */\n column<ColName extends string, Descriptor extends ColumnTypeDescriptor>(\n name: ColName,\n options: NonNullableColumnOptions<Descriptor>,\n ): TableBuilder<\n Name,\n Columns & Record<ColName, ColumnBuilderState<ColName, false, Descriptor['codecId']>>,\n PrimaryKey\n >;\n\n /**\n * Implementation of the column method.\n */\n column<ColName extends string, Descriptor extends ColumnTypeDescriptor>(\n name: ColName,\n options: ColumnOptions<Descriptor>,\n ): TableBuilder<\n Name,\n Columns & Record<ColName, ColumnBuilderState<ColName, boolean, Descriptor['codecId']>>,\n PrimaryKey\n > {\n return this.columnInternal(name, options);\n }\n\n generated<ColName extends string, Descriptor extends ColumnTypeDescriptor>(\n name: ColName,\n options: GeneratedColumnOptions<Descriptor>,\n ): TableBuilder<\n Name,\n Columns & Record<ColName, ColumnBuilderState<ColName, false, Descriptor['codecId']>>,\n PrimaryKey\n > {\n const { generated, ...columnOptions } = options;\n return this.columnInternal(name, columnOptions, generated);\n }\n\n private columnInternal<\n ColName extends string,\n Descriptor extends ColumnTypeDescriptor,\n Options extends ColumnOptions<Descriptor>,\n >(\n name: ColName,\n options: Options,\n executionDefault?: ExecutionMutationDefaultValue,\n ): TableBuilder<\n Name,\n Columns &\n Record<\n ColName,\n ColumnBuilderState<ColName, NullableFromOptions<Options>, Descriptor['codecId']>\n >,\n PrimaryKey\n > {\n const nullable = options.nullable ?? false;\n const { codecId, nativeType, typeParams: descriptorTypeParams, typeRef } = options.type;\n const typeParams = options.typeParams ?? descriptorTypeParams;\n\n // The type safety is enforced at the call site via overloads:\n // - NullableColumnOptions forbids `default` when `nullable: true`\n // - NonNullableColumnOptions allows `default` when `nullable` is false/omitted\n const columnState = {\n name,\n nullable,\n type: codecId,\n nativeType,\n ...ifDefined('typeParams', typeParams),\n ...ifDefined('typeRef', typeRef),\n ...ifDefined('default', 'default' in options ? options.default : undefined),\n ...ifDefined('executionDefault', executionDefault),\n } as ColumnBuilderState<ColName, NullableFromOptions<Options>, Descriptor['codecId']>;\n const newColumns = { ...this._columns, [name]: columnState } as Columns &\n Record<\n ColName,\n ColumnBuilderState<ColName, NullableFromOptions<Options>, Descriptor['codecId']>\n >;\n return new TableBuilder(\n this._state.name,\n newColumns,\n this._state.primaryKey,\n this._state.primaryKeyName,\n this._state.uniques,\n this._state.indexes,\n this._state.foreignKeys,\n );\n }\n\n primaryKey<PK extends readonly string[]>(\n columns: PK,\n name?: string,\n ): TableBuilder<Name, Columns, PK> {\n return new TableBuilder(\n this._state.name,\n this._state.columns,\n columns,\n name,\n this._state.uniques,\n this._state.indexes,\n this._state.foreignKeys,\n );\n }\n\n unique(columns: readonly string[], name?: string): TableBuilder<Name, Columns, PrimaryKey> {\n const constraint: UniqueConstraintDef = name ? { columns, name } : { columns };\n return new TableBuilder(\n this._state.name,\n this._state.columns,\n this._state.primaryKey,\n this._state.primaryKeyName,\n [...this._state.uniques, constraint],\n this._state.indexes,\n this._state.foreignKeys,\n );\n }\n\n index(columns: readonly string[], name?: string): TableBuilder<Name, Columns, PrimaryKey> {\n const indexDef: IndexDef = name ? { columns, name } : { columns };\n return new TableBuilder(\n this._state.name,\n this._state.columns,\n this._state.primaryKey,\n this._state.primaryKeyName,\n this._state.uniques,\n [...this._state.indexes, indexDef],\n this._state.foreignKeys,\n );\n }\n\n foreignKey(\n columns: readonly string[],\n references: { table: string; columns: readonly string[] },\n opts?: { name?: string; constraint?: boolean; index?: boolean },\n ): TableBuilder<Name, Columns, PrimaryKey> {\n const fkDef: ForeignKeyDef = {\n columns,\n references,\n ...(opts?.name !== undefined && { name: opts.name }),\n ...(opts?.constraint !== undefined && { constraint: opts.constraint }),\n ...(opts?.index !== undefined && { index: opts.index }),\n };\n return new TableBuilder(\n this._state.name,\n this._state.columns,\n this._state.primaryKey,\n this._state.primaryKeyName,\n this._state.uniques,\n this._state.indexes,\n [...this._state.foreignKeys, fkDef],\n );\n }\n\n build(): TableBuilderState<Name, Columns, PrimaryKey> {\n return {\n name: this._name,\n columns: this._columns,\n ...(this._primaryKey !== undefined ? { primaryKey: this._primaryKey } : {}),\n ...(this._state.primaryKeyName !== undefined\n ? { primaryKeyName: this._state.primaryKeyName }\n : {}),\n uniques: this._state.uniques,\n indexes: this._state.indexes,\n foreignKeys: this._state.foreignKeys,\n } as TableBuilderState<Name, Columns, PrimaryKey>;\n }\n}\n","import type { TargetPackRef } from '@prisma-next/contract/framework-components';\nimport type {\n ColumnBuilderState,\n ContractBuilderState,\n ForeignKeyDefaultsState,\n ModelBuilderState,\n RelationDefinition,\n TableBuilderState,\n} from './builder-state';\nimport { ModelBuilder } from './model-builder';\nimport { createTable, TableBuilder } from './table-builder';\n\nexport class ContractBuilder<\n Target extends string | undefined = undefined,\n Tables extends Record<\n string,\n TableBuilderState<\n string,\n Record<string, ColumnBuilderState<string, boolean, string>>,\n readonly string[] | undefined\n >\n > = Record<never, never>,\n Models extends Record<\n string,\n ModelBuilderState<string, string, Record<string, string>, Record<string, RelationDefinition>>\n > = Record<never, never>,\n StorageHash extends string | undefined = undefined,\n ExtensionPacks extends Record<string, unknown> | undefined = undefined,\n Capabilities extends Record<string, Record<string, boolean>> | undefined = undefined,\n> {\n protected readonly state: ContractBuilderState<\n Target,\n Tables,\n Models,\n StorageHash,\n ExtensionPacks,\n Capabilities\n >;\n\n constructor(\n state?: ContractBuilderState<Target, Tables, Models, StorageHash, ExtensionPacks, Capabilities>,\n ) {\n this.state =\n state ??\n ({\n tables: {},\n models: {},\n } as ContractBuilderState<Target, Tables, Models, StorageHash, ExtensionPacks, Capabilities>);\n }\n\n target<T extends string>(\n packRef: TargetPackRef<string, T>,\n ): ContractBuilder<T, Tables, Models, StorageHash, ExtensionPacks, Capabilities> {\n return new ContractBuilder<T, Tables, Models, StorageHash, ExtensionPacks, Capabilities>({\n ...this.state,\n target: packRef.targetId,\n });\n }\n\n capabilities<C extends Record<string, Record<string, boolean>>>(\n capabilities: C,\n ): ContractBuilder<Target, Tables, Models, StorageHash, ExtensionPacks, C> {\n return new ContractBuilder<Target, Tables, Models, StorageHash, ExtensionPacks, C>({\n ...this.state,\n capabilities,\n });\n }\n\n table<\n TableName extends string,\n T extends TableBuilder<\n TableName,\n Record<string, ColumnBuilderState<string, boolean, string>>,\n readonly string[] | undefined\n >,\n >(\n name: TableName,\n callback: (t: TableBuilder<TableName>) => T | undefined,\n ): ContractBuilder<\n Target,\n Tables & Record<TableName, ReturnType<T['build']>>,\n Models,\n StorageHash,\n ExtensionPacks,\n Capabilities\n > {\n const tableBuilder = createTable(name);\n const result = callback(tableBuilder);\n const finalBuilder = result instanceof TableBuilder ? result : tableBuilder;\n const tableState = finalBuilder.build();\n\n return new ContractBuilder<\n Target,\n Tables & Record<TableName, ReturnType<T['build']>>,\n Models,\n StorageHash,\n ExtensionPacks,\n Capabilities\n >({\n ...this.state,\n tables: { ...this.state.tables, [name]: tableState } as Tables &\n Record<TableName, ReturnType<T['build']>>,\n });\n }\n\n model<\n ModelName extends string,\n TableName extends string,\n M extends ModelBuilder<\n ModelName,\n TableName,\n Record<string, string>,\n Record<string, RelationDefinition>\n >,\n >(\n name: ModelName,\n table: TableName,\n callback: (\n m: ModelBuilder<ModelName, TableName, Record<string, string>, Record<never, never>>,\n ) => M | undefined,\n ): ContractBuilder<\n Target,\n Tables,\n Models & Record<ModelName, ReturnType<M['build']>>,\n StorageHash,\n ExtensionPacks,\n Capabilities\n > {\n const modelBuilder = new ModelBuilder<ModelName, TableName>(name, table);\n const result = callback(modelBuilder);\n const finalBuilder = result instanceof ModelBuilder ? result : modelBuilder;\n const modelState = finalBuilder.build();\n\n return new ContractBuilder<\n Target,\n Tables,\n Models & Record<ModelName, ReturnType<M['build']>>,\n StorageHash,\n ExtensionPacks,\n Capabilities\n >({\n ...this.state,\n models: { ...this.state.models, [name]: modelState } as Models &\n Record<ModelName, ReturnType<M['build']>>,\n });\n }\n\n storageHash<H extends string>(\n hash: H,\n ): ContractBuilder<Target, Tables, Models, H, ExtensionPacks, Capabilities> {\n return new ContractBuilder<Target, Tables, Models, H, ExtensionPacks, Capabilities>({\n ...this.state,\n storageHash: hash,\n });\n }\n\n foreignKeyDefaults(\n config: ForeignKeyDefaultsState,\n ): ContractBuilder<Target, Tables, Models, StorageHash, ExtensionPacks, Capabilities> {\n return new ContractBuilder<Target, Tables, Models, StorageHash, ExtensionPacks, Capabilities>({\n ...this.state,\n foreignKeyDefaults: config,\n });\n }\n}\n\nexport function defineContract(): ContractBuilder {\n return new ContractBuilder();\n}\n"],"mappings":";;;AAEA,IAAa,eAAb,MAAa,aAKX;CACA,AAAiB;CACjB,AAAiB;CACjB,AAAiB;CACjB,AAAiB;CAEjB,YACE,MACA,OACA,SAAiB,EAAE,EACnB,YAAuB,EAAE,EACzB;AACA,OAAK,QAAQ;AACb,OAAK,SAAS;AACd,OAAK,UAAU;AACf,OAAK,aAAa;;CAGpB,MACE,WACA,YAC8E;AAC9E,SAAO,IAAI,aACT,KAAK,OACL,KAAK,QACL;GACE,GAAG,KAAK;IACP,YAAY;GACd,EACD,KAAK,WACN;;CAyCH,SAME,MACA,SAgByF;AAEzF,MAAI,QAAQ,GAAG,gBAAgB,KAAK,OAClC,OAAM,IAAI,MACR,aAAa,KAAK,iBAAiB,QAAQ,GAAG,YAAY,gCAAgC,KAAK,OAAO,GACvG;AAIH,MAAI,QAAQ,gBAAgB,OAAO;AACjC,OAAI,CAAC,QAAQ,QACX,OAAM,IAAI,MAAM,aAAa,KAAK,iDAAiD;AAErF,OAAI,QAAQ,GAAG,eAAe,QAAQ,QAAQ,MAC5C,OAAM,IAAI,MACR,aAAa,KAAK,gBAAgB,QAAQ,GAAG,WAAW,kCAAkC,QAAQ,QAAQ,MAAM,GACjH;aAGC,QAAQ,GAAG,eAAe,QAAQ,QACpC,OAAM,IAAI,MACR,aAAa,KAAK,gBAAgB,QAAQ,GAAG,WAAW,4BAA4B,QAAQ,QAAQ,GACrG;EAIL,MAAMA,cAAkC;GACtC,IAAI,QAAQ;GACZ,aAAa,QAAQ;GACrB,IAAI;IACF,YAAY,QAAQ,GAAG;IACvB,WAAW,QAAQ,GAAG;IACvB;GACD,GAAI,QAAQ,UACR,EACE,SAAS;IACP,OAAO,QAAQ,QAAQ;IACvB,YAAY,QAAQ,QAAQ;IAC5B,WAAW,QAAQ,QAAQ;IAC5B,EACF,GACD;GACL;AAED,SAAO,IAAI,aAAa,KAAK,OAAO,KAAK,QAAQ,KAAK,SAAS;GAC7D,GAAG,KAAK;IACP,OAAO;GACT,CAAyD;;CAG5D,QAA2D;AACzD,SAAO;GACL,MAAM,KAAK;GACX,OAAO,KAAK;GACZ,QAAQ,KAAK;GACb,WAAW,KAAK;GACjB;;;;;;;;;;;AC/EL,SAAgB,YAAiC,MAAgC;AAC/E,QAAO,IAAI,aAAa,MAAM,EAAE,EAAE,QAAW,QAAW,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;;;;;;AAOrE,IAAa,eAAb,MAAa,aAOX;CACA,AAAiB;;CAGjB,YACE,MACA,SACA,YACA,gBACA,SACA,SACA,aACA;AACA,OAAK,SAAS;GACZ;GACA;GACA;GACA;GACA;GACA;GACA;GACD;;CAGH,IAAY,QAAc;AACxB,SAAO,KAAK,OAAO;;CAGrB,IAAY,WAAoB;AAC9B,SAAO,KAAK,OAAO;;CAGrB,IAAY,cAA0B;AACpC,SAAO,KAAK,OAAO;;;;;CAgCrB,OACE,MACA,SAKA;AACA,SAAO,KAAK,eAAe,MAAM,QAAQ;;CAG3C,UACE,MACA,SAKA;EACA,MAAM,EAAE,WAAW,GAAG,kBAAkB;AACxC,SAAO,KAAK,eAAe,MAAM,eAAe,UAAU;;CAG5D,AAAQ,eAKN,MACA,SACA,kBASA;EACA,MAAM,WAAW,QAAQ,YAAY;EACrC,MAAM,EAAE,SAAS,YAAY,YAAY,sBAAsB,YAAY,QAAQ;EAMnF,MAAM,cAAc;GAClB;GACA;GACA,MAAM;GACN;GACA,GAAG,UAAU,cAVI,QAAQ,cAAc,qBAUD;GACtC,GAAG,UAAU,WAAW,QAAQ;GAChC,GAAG,UAAU,WAAW,aAAa,UAAU,QAAQ,UAAU,OAAU;GAC3E,GAAG,UAAU,oBAAoB,iBAAiB;GACnD;EACD,MAAM,aAAa;GAAE,GAAG,KAAK;IAAW,OAAO;GAAa;AAK5D,SAAO,IAAI,aACT,KAAK,OAAO,MACZ,YACA,KAAK,OAAO,YACZ,KAAK,OAAO,gBACZ,KAAK,OAAO,SACZ,KAAK,OAAO,SACZ,KAAK,OAAO,YACb;;CAGH,WACE,SACA,MACiC;AACjC,SAAO,IAAI,aACT,KAAK,OAAO,MACZ,KAAK,OAAO,SACZ,SACA,MACA,KAAK,OAAO,SACZ,KAAK,OAAO,SACZ,KAAK,OAAO,YACb;;CAGH,OAAO,SAA4B,MAAwD;EACzF,MAAMC,aAAkC,OAAO;GAAE;GAAS;GAAM,GAAG,EAAE,SAAS;AAC9E,SAAO,IAAI,aACT,KAAK,OAAO,MACZ,KAAK,OAAO,SACZ,KAAK,OAAO,YACZ,KAAK,OAAO,gBACZ,CAAC,GAAG,KAAK,OAAO,SAAS,WAAW,EACpC,KAAK,OAAO,SACZ,KAAK,OAAO,YACb;;CAGH,MAAM,SAA4B,MAAwD;EACxF,MAAMC,WAAqB,OAAO;GAAE;GAAS;GAAM,GAAG,EAAE,SAAS;AACjE,SAAO,IAAI,aACT,KAAK,OAAO,MACZ,KAAK,OAAO,SACZ,KAAK,OAAO,YACZ,KAAK,OAAO,gBACZ,KAAK,OAAO,SACZ,CAAC,GAAG,KAAK,OAAO,SAAS,SAAS,EAClC,KAAK,OAAO,YACb;;CAGH,WACE,SACA,YACA,MACyC;EACzC,MAAMC,QAAuB;GAC3B;GACA;GACA,GAAI,MAAM,SAAS,UAAa,EAAE,MAAM,KAAK,MAAM;GACnD,GAAI,MAAM,eAAe,UAAa,EAAE,YAAY,KAAK,YAAY;GACrE,GAAI,MAAM,UAAU,UAAa,EAAE,OAAO,KAAK,OAAO;GACvD;AACD,SAAO,IAAI,aACT,KAAK,OAAO,MACZ,KAAK,OAAO,SACZ,KAAK,OAAO,YACZ,KAAK,OAAO,gBACZ,KAAK,OAAO,SACZ,KAAK,OAAO,SACZ,CAAC,GAAG,KAAK,OAAO,aAAa,MAAM,CACpC;;CAGH,QAAsD;AACpD,SAAO;GACL,MAAM,KAAK;GACX,SAAS,KAAK;GACd,GAAI,KAAK,gBAAgB,SAAY,EAAE,YAAY,KAAK,aAAa,GAAG,EAAE;GAC1E,GAAI,KAAK,OAAO,mBAAmB,SAC/B,EAAE,gBAAgB,KAAK,OAAO,gBAAgB,GAC9C,EAAE;GACN,SAAS,KAAK,OAAO;GACrB,SAAS,KAAK,OAAO;GACrB,aAAa,KAAK,OAAO;GAC1B;;;;;;ACtSL,IAAa,kBAAb,MAAa,gBAiBX;CACA,AAAmB;CASnB,YACE,OACA;AACA,OAAK,QACH,SACC;GACC,QAAQ,EAAE;GACV,QAAQ,EAAE;GACX;;CAGL,OACE,SAC+E;AAC/E,SAAO,IAAI,gBAA8E;GACvF,GAAG,KAAK;GACR,QAAQ,QAAQ;GACjB,CAAC;;CAGJ,aACE,cACyE;AACzE,SAAO,IAAI,gBAAwE;GACjF,GAAG,KAAK;GACR;GACD,CAAC;;CAGJ,MAQE,MACA,UAQA;EACA,MAAM,eAAe,YAAY,KAAK;EACtC,MAAM,SAAS,SAAS,aAAa;EAErC,MAAM,cADe,kBAAkB,eAAe,SAAS,cAC/B,OAAO;AAEvC,SAAO,IAAI,gBAOT;GACA,GAAG,KAAK;GACR,QAAQ;IAAE,GAAG,KAAK,MAAM;KAAS,OAAO;IAAY;GAErD,CAAC;;CAGJ,MAUE,MACA,OACA,UAUA;EACA,MAAM,eAAe,IAAI,aAAmC,MAAM,MAAM;EACxE,MAAM,SAAS,SAAS,aAAa;EAErC,MAAM,cADe,kBAAkB,eAAe,SAAS,cAC/B,OAAO;AAEvC,SAAO,IAAI,gBAOT;GACA,GAAG,KAAK;GACR,QAAQ;IAAE,GAAG,KAAK,MAAM;KAAS,OAAO;IAAY;GAErD,CAAC;;CAGJ,YACE,MAC0E;AAC1E,SAAO,IAAI,gBAAyE;GAClF,GAAG,KAAK;GACR,aAAa;GACd,CAAC;;CAGJ,mBACE,QACoF;AACpF,SAAO,IAAI,gBAAmF;GAC5F,GAAG,KAAK;GACR,oBAAoB;GACrB,CAAC;;;AAIN,SAAgB,iBAAkC;AAChD,QAAO,IAAI,iBAAiB"}
|
package/package.json
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@prisma-next/contract-authoring",
|
|
3
|
-
"version": "0.3.0-dev.
|
|
3
|
+
"version": "0.3.0-dev.37",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"sideEffects": false,
|
|
6
6
|
"description": "Target-agnostic contract authoring builder core for Prisma Next",
|
|
7
7
|
"dependencies": {
|
|
8
8
|
"ts-toolbelt": "^9.6.0",
|
|
9
|
-
"@prisma-next/
|
|
10
|
-
"@prisma-next/
|
|
9
|
+
"@prisma-next/utils": "0.3.0-dev.37",
|
|
10
|
+
"@prisma-next/contract": "0.3.0-dev.37"
|
|
11
11
|
},
|
|
12
12
|
"devDependencies": {
|
|
13
13
|
"tsdown": "0.18.4",
|
package/src/builder-state.ts
CHANGED
|
@@ -86,6 +86,8 @@ export interface ForeignKeyDef {
|
|
|
86
86
|
readonly columns: readonly string[];
|
|
87
87
|
};
|
|
88
88
|
readonly name?: string;
|
|
89
|
+
readonly constraint?: boolean;
|
|
90
|
+
readonly index?: boolean;
|
|
89
91
|
}
|
|
90
92
|
|
|
91
93
|
export interface TableBuilderState<
|
|
@@ -128,6 +130,11 @@ export interface ModelBuilderState<
|
|
|
128
130
|
readonly relations: Relations;
|
|
129
131
|
}
|
|
130
132
|
|
|
133
|
+
export interface ForeignKeyDefaultsState {
|
|
134
|
+
readonly constraint: boolean;
|
|
135
|
+
readonly index: boolean;
|
|
136
|
+
}
|
|
137
|
+
|
|
131
138
|
export interface ContractBuilderState<
|
|
132
139
|
Target extends string | undefined = string | undefined,
|
|
133
140
|
Tables extends Record<
|
|
@@ -163,6 +170,7 @@ export interface ContractBuilderState<
|
|
|
163
170
|
readonly extensionPacks?: ExtensionPacks;
|
|
164
171
|
readonly capabilities?: Capabilities;
|
|
165
172
|
readonly storageTypes?: Record<string, StorageTypeInstanceState>;
|
|
173
|
+
readonly foreignKeyDefaults?: ForeignKeyDefaultsState;
|
|
166
174
|
/**
|
|
167
175
|
* Array of extension pack namespace identifiers (e.g., ['pgvector', 'postgis']).
|
|
168
176
|
* Populated when extension packs are registered during contract building.
|
package/src/contract-builder.ts
CHANGED
|
@@ -2,6 +2,7 @@ import type { TargetPackRef } from '@prisma-next/contract/framework-components';
|
|
|
2
2
|
import type {
|
|
3
3
|
ColumnBuilderState,
|
|
4
4
|
ContractBuilderState,
|
|
5
|
+
ForeignKeyDefaultsState,
|
|
5
6
|
ModelBuilderState,
|
|
6
7
|
RelationDefinition,
|
|
7
8
|
TableBuilderState,
|
|
@@ -152,6 +153,15 @@ export class ContractBuilder<
|
|
|
152
153
|
storageHash: hash,
|
|
153
154
|
});
|
|
154
155
|
}
|
|
156
|
+
|
|
157
|
+
foreignKeyDefaults(
|
|
158
|
+
config: ForeignKeyDefaultsState,
|
|
159
|
+
): ContractBuilder<Target, Tables, Models, StorageHash, ExtensionPacks, Capabilities> {
|
|
160
|
+
return new ContractBuilder<Target, Tables, Models, StorageHash, ExtensionPacks, Capabilities>({
|
|
161
|
+
...this.state,
|
|
162
|
+
foreignKeyDefaults: config,
|
|
163
|
+
});
|
|
164
|
+
}
|
|
155
165
|
}
|
|
156
166
|
|
|
157
167
|
export function defineContract(): ContractBuilder {
|
package/src/index.ts
CHANGED
package/src/table-builder.ts
CHANGED
|
@@ -273,9 +273,15 @@ export class TableBuilder<
|
|
|
273
273
|
foreignKey(
|
|
274
274
|
columns: readonly string[],
|
|
275
275
|
references: { table: string; columns: readonly string[] },
|
|
276
|
-
name?: string,
|
|
276
|
+
opts?: { name?: string; constraint?: boolean; index?: boolean },
|
|
277
277
|
): TableBuilder<Name, Columns, PrimaryKey> {
|
|
278
|
-
const fkDef: ForeignKeyDef =
|
|
278
|
+
const fkDef: ForeignKeyDef = {
|
|
279
|
+
columns,
|
|
280
|
+
references,
|
|
281
|
+
...(opts?.name !== undefined && { name: opts.name }),
|
|
282
|
+
...(opts?.constraint !== undefined && { constraint: opts.constraint }),
|
|
283
|
+
...(opts?.index !== undefined && { index: opts.index }),
|
|
284
|
+
};
|
|
279
285
|
return new TableBuilder(
|
|
280
286
|
this._state.name,
|
|
281
287
|
this._state.columns,
|