@prisma-next/contract-authoring 0.3.0-dev.135 → 0.3.0-dev.146
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 +17 -23
- package/dist/index.d.mts +2 -293
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +1 -237
- package/package.json +5 -9
- package/src/descriptors.ts +18 -0
- package/src/index.ts +1 -26
- package/dist/index.mjs.map +0 -1
- package/src/builder-state.ts +0 -201
- package/src/contract-builder.ts +0 -169
- package/src/model-builder.ts +0 -160
- package/src/table-builder.ts +0 -330
- package/src/types.ts +0 -119
package/README.md
CHANGED
|
@@ -1,50 +1,44 @@
|
|
|
1
1
|
# @prisma-next/contract-authoring
|
|
2
2
|
|
|
3
|
-
**Status:**
|
|
3
|
+
**Status:** Shared descriptor types for family-specific contract authoring
|
|
4
4
|
|
|
5
|
-
This package
|
|
5
|
+
This package holds the small, target-neutral descriptor vocabulary shared by Prisma Next authoring surfaces, targets, extensions, and ID helpers.
|
|
6
6
|
|
|
7
7
|
## Overview
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
`@prisma-next/contract-authoring` is not the active TypeScript contract DSL. It exists to give multiple packages a common way to describe authored storage details without depending on SQL-specific packages.
|
|
10
10
|
|
|
11
11
|
## Responsibilities
|
|
12
12
|
|
|
13
|
-
- **
|
|
14
|
-
- **
|
|
15
|
-
- **
|
|
16
|
-
- **
|
|
17
|
-
- **Composition Surface**: Enables target-family specific packages (e.g., `@prisma-next/sql-contract-ts`) to compose generic core with family-specific types
|
|
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
|
|
13
|
+
- **Column descriptors**: `ColumnTypeDescriptor` captures a codec ID, native type, and optional `typeParams` / `typeRef`
|
|
14
|
+
- **Index descriptors**: `IndexDef` captures index column lists plus optional `name`, `using`, and `config`
|
|
15
|
+
- **Foreign key defaults**: `ForeignKeyDefaultsState` captures default FK materialization choices shared by authoring surfaces
|
|
16
|
+
- **Shared authoring vocabulary**: Gives target-family packages such as `@prisma-next/sql-contract-ts` a target-neutral descriptor layer
|
|
20
17
|
|
|
21
18
|
## Package Status
|
|
22
19
|
|
|
23
|
-
This package
|
|
20
|
+
This package is the extracted shared descriptor layer from the contract authoring split. The current SQL TypeScript authoring implementation lives in `@prisma-next/sql-contract-ts`.
|
|
24
21
|
|
|
25
22
|
## Architecture
|
|
26
23
|
|
|
27
|
-
- **
|
|
28
|
-
- **
|
|
29
|
-
- **
|
|
30
|
-
- **No target-specific logic**: This package must remain target-family agnostic and cannot import from `@prisma-next/sql-*` or other family-specific modules
|
|
24
|
+
- **No builders or lowering**: This package does not own `defineContract`, `field`, `model`, `rel`, or any lowering pipeline
|
|
25
|
+
- **No target-specific logic**: It must remain target-family agnostic and cannot import from `@prisma-next/sql-*` or other family-specific modules
|
|
26
|
+
- **Shared by multiple layers**: SQL authoring, target packs, extension packs, and ID helpers all consume these types
|
|
31
27
|
|
|
32
28
|
## Dependencies
|
|
33
29
|
|
|
34
|
-
-
|
|
35
|
-
- `ts-toolbelt` - Type utilities
|
|
30
|
+
- Runtime dependencies: none
|
|
36
31
|
|
|
37
32
|
## Exports
|
|
38
33
|
|
|
39
|
-
-
|
|
40
|
-
-
|
|
41
|
-
-
|
|
42
|
-
- Factory function: `defineContract()` (generic)
|
|
34
|
+
- `ColumnTypeDescriptor`
|
|
35
|
+
- `IndexDef`
|
|
36
|
+
- `ForeignKeyDefaultsState`
|
|
43
37
|
|
|
44
38
|
## Usage
|
|
45
39
|
|
|
46
|
-
This package is intended for
|
|
40
|
+
This package is intended for internal composition. End-user contract authoring code should import from the family-specific surface, such as `@prisma-next/sql-contract-ts`, rather than from this package directly.
|
|
47
41
|
|
|
48
42
|
## See Also
|
|
49
43
|
|
|
50
|
-
- `@prisma-next/sql-contract-ts` - SQL
|
|
44
|
+
- `@prisma-next/sql-contract-ts` - SQL TypeScript contract authoring surface
|
package/dist/index.d.mts
CHANGED
|
@@ -1,311 +1,20 @@
|
|
|
1
|
-
|
|
2
|
-
import { TargetPackRef } from "@prisma-next/contract/framework-components";
|
|
3
|
-
|
|
4
|
-
//#region src/builder-state.d.ts
|
|
5
|
-
|
|
6
|
-
/**
|
|
7
|
-
* Duplicated from sql-contract to avoid cross-layer dependency
|
|
8
|
-
* (framework authoring cannot depend on the SQL domain's contract package).
|
|
9
|
-
*/
|
|
10
|
-
type ReferentialAction = 'noAction' | 'restrict' | 'cascade' | 'setNull' | 'setDefault';
|
|
11
|
-
/**
|
|
12
|
-
* Column type descriptor containing both codec ID and native type.
|
|
13
|
-
* Used when defining columns with descriptor objects instead of string IDs.
|
|
14
|
-
*
|
|
15
|
-
* For parameterized types (e.g., `vector(1536)`), the `typeParams` field
|
|
16
|
-
* carries codec-owned parameters that affect both TypeScript type generation
|
|
17
|
-
* and native DDL output.
|
|
18
|
-
*/
|
|
1
|
+
//#region src/descriptors.d.ts
|
|
19
2
|
type ColumnTypeDescriptor<TCodecId extends string = string> = {
|
|
20
3
|
readonly codecId: TCodecId;
|
|
21
4
|
readonly nativeType: string;
|
|
22
5
|
readonly typeParams?: Record<string, unknown>;
|
|
23
6
|
readonly typeRef?: string;
|
|
24
7
|
};
|
|
25
|
-
/**
|
|
26
|
-
* Base column properties shared by all column states.
|
|
27
|
-
*/
|
|
28
|
-
type ColumnBuilderStateBase<Name extends string, Type extends string> = {
|
|
29
|
-
readonly name: Name;
|
|
30
|
-
readonly type: Type;
|
|
31
|
-
readonly nativeType: string;
|
|
32
|
-
readonly typeParams?: Record<string, unknown>;
|
|
33
|
-
readonly typeRef?: string;
|
|
34
|
-
};
|
|
35
|
-
type StorageTypeInstanceState = {
|
|
36
|
-
readonly codecId: string;
|
|
37
|
-
readonly nativeType: string;
|
|
38
|
-
readonly typeParams: Record<string, unknown>;
|
|
39
|
-
};
|
|
40
|
-
/**
|
|
41
|
-
* Column builder state.
|
|
42
|
-
*
|
|
43
|
-
* Both nullable and non-nullable columns can define defaults to match database behavior.
|
|
44
|
-
*/
|
|
45
|
-
type ColumnBuilderState<Name extends string, Nullable extends boolean, Type extends string> = ColumnBuilderStateBase<Name, Type> & (Nullable extends true ? {
|
|
46
|
-
readonly nullable: true;
|
|
47
|
-
readonly default?: ColumnDefault;
|
|
48
|
-
} : {
|
|
49
|
-
readonly nullable: false;
|
|
50
|
-
readonly default?: ColumnDefault;
|
|
51
|
-
readonly executionDefault?: ExecutionMutationDefaultValue;
|
|
52
|
-
});
|
|
53
|
-
/**
|
|
54
|
-
* Unique constraint definition for table builder.
|
|
55
|
-
*/
|
|
56
|
-
interface UniqueConstraintDef {
|
|
57
|
-
readonly columns: readonly string[];
|
|
58
|
-
readonly name?: string;
|
|
59
|
-
}
|
|
60
|
-
/**
|
|
61
|
-
* Index definition for table builder.
|
|
62
|
-
*/
|
|
63
8
|
interface IndexDef {
|
|
64
9
|
readonly columns: readonly string[];
|
|
65
10
|
readonly name?: string;
|
|
66
|
-
/**
|
|
67
|
-
* Optional index access method. Extension-specific methods are represented
|
|
68
|
-
* as strings and interpreted by the owning extension package.
|
|
69
|
-
*/
|
|
70
11
|
readonly using?: string;
|
|
71
|
-
/**
|
|
72
|
-
* Optional extension-owned index configuration payload.
|
|
73
|
-
*/
|
|
74
12
|
readonly config?: Record<string, unknown>;
|
|
75
13
|
}
|
|
76
|
-
/**
|
|
77
|
-
* Options for configuring a foreign key's name and referential actions.
|
|
78
|
-
*/
|
|
79
|
-
type ForeignKeyOptions = {
|
|
80
|
-
readonly name?: string;
|
|
81
|
-
readonly onDelete?: ReferentialAction;
|
|
82
|
-
readonly onUpdate?: ReferentialAction;
|
|
83
|
-
};
|
|
84
|
-
/**
|
|
85
|
-
* Foreign key definition for table builder.
|
|
86
|
-
*/
|
|
87
|
-
interface ForeignKeyDef extends ForeignKeyOptions {
|
|
88
|
-
readonly columns: readonly string[];
|
|
89
|
-
readonly references: {
|
|
90
|
-
readonly table: string;
|
|
91
|
-
readonly columns: readonly string[];
|
|
92
|
-
};
|
|
93
|
-
readonly constraint?: boolean;
|
|
94
|
-
readonly index?: boolean;
|
|
95
|
-
}
|
|
96
|
-
interface TableBuilderState<Name extends string, Columns extends Record<string, ColumnBuilderState<string, boolean, string>>, PrimaryKey extends readonly string[] | undefined> {
|
|
97
|
-
readonly name: Name;
|
|
98
|
-
readonly columns: Columns;
|
|
99
|
-
readonly primaryKey?: PrimaryKey;
|
|
100
|
-
readonly primaryKeyName?: string;
|
|
101
|
-
readonly uniques: readonly UniqueConstraintDef[];
|
|
102
|
-
readonly indexes: readonly IndexDef[];
|
|
103
|
-
readonly foreignKeys: readonly ForeignKeyDef[];
|
|
104
|
-
}
|
|
105
|
-
type RelationDefinition = {
|
|
106
|
-
readonly to: string;
|
|
107
|
-
readonly cardinality: '1:1' | '1:N' | 'N:1' | 'N:M';
|
|
108
|
-
readonly on: {
|
|
109
|
-
readonly parentCols: readonly string[];
|
|
110
|
-
readonly childCols: readonly string[];
|
|
111
|
-
};
|
|
112
|
-
readonly through?: {
|
|
113
|
-
readonly table: string;
|
|
114
|
-
readonly parentCols: readonly string[];
|
|
115
|
-
readonly childCols: readonly string[];
|
|
116
|
-
};
|
|
117
|
-
};
|
|
118
|
-
interface ModelBuilderState<Name extends string, Table extends string, Fields extends Record<string, string>, Relations extends Record<string, RelationDefinition>> {
|
|
119
|
-
readonly name: Name;
|
|
120
|
-
readonly table: Table;
|
|
121
|
-
readonly fields: Fields;
|
|
122
|
-
readonly relations: Relations;
|
|
123
|
-
}
|
|
124
14
|
interface ForeignKeyDefaultsState {
|
|
125
15
|
readonly constraint: boolean;
|
|
126
16
|
readonly index: boolean;
|
|
127
17
|
}
|
|
128
|
-
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> {
|
|
129
|
-
readonly target?: Target;
|
|
130
|
-
readonly tables: Tables;
|
|
131
|
-
readonly models: Models;
|
|
132
|
-
readonly storageHash?: StorageHash;
|
|
133
|
-
readonly extensionPacks?: ExtensionPacks;
|
|
134
|
-
readonly capabilities?: Capabilities;
|
|
135
|
-
readonly storageTypes?: Record<string, StorageTypeInstanceState>;
|
|
136
|
-
readonly foreignKeyDefaults?: ForeignKeyDefaultsState;
|
|
137
|
-
/**
|
|
138
|
-
* Array of extension pack namespace identifiers (e.g., ['pgvector', 'postgis']).
|
|
139
|
-
* Populated when extension packs are registered during contract building.
|
|
140
|
-
* Used to track which extension packs are included in the contract.
|
|
141
|
-
* Can be undefined or empty if no extension packs are registered.
|
|
142
|
-
* Namespace format matches the extension pack ID (e.g., 'pgvector', not 'pgvector@1.0.0').
|
|
143
|
-
*/
|
|
144
|
-
readonly extensionNamespaces?: readonly string[];
|
|
145
|
-
}
|
|
146
|
-
interface ColumnBuilder<Name extends string, Nullable extends boolean, Type extends string> {
|
|
147
|
-
nullable<Value extends boolean>(value?: Value): ColumnBuilder<Name, Value, Type>;
|
|
148
|
-
type<Id extends string>(id: Id): ColumnBuilder<Name, Nullable, Id>;
|
|
149
|
-
build(): ColumnBuilderState<Name, Nullable, Type>;
|
|
150
|
-
}
|
|
151
|
-
//#endregion
|
|
152
|
-
//#region src/model-builder.d.ts
|
|
153
|
-
declare class ModelBuilder<Name extends string, Table extends string, Fields extends Record<string, string> = Record<never, never>, Relations extends Record<string, RelationDefinition> = Record<never, never>> {
|
|
154
|
-
private readonly _name;
|
|
155
|
-
private readonly _table;
|
|
156
|
-
private readonly _fields;
|
|
157
|
-
private readonly _relations;
|
|
158
|
-
constructor(name: Name, table: Table, fields?: Fields, relations?: Relations);
|
|
159
|
-
field<FieldName extends string, ColumnName extends string>(fieldName: FieldName, columnName: ColumnName): ModelBuilder<Name, Table, Fields & Record<FieldName, ColumnName>, Relations>;
|
|
160
|
-
relation<RelationName extends string, ToModel extends string, ToTable extends string>(name: RelationName, options: {
|
|
161
|
-
toModel: ToModel;
|
|
162
|
-
toTable: ToTable;
|
|
163
|
-
cardinality: '1:1' | '1:N' | 'N:1';
|
|
164
|
-
on: {
|
|
165
|
-
parentTable: Table;
|
|
166
|
-
parentColumns: readonly string[];
|
|
167
|
-
childTable: ToTable;
|
|
168
|
-
childColumns: readonly string[];
|
|
169
|
-
};
|
|
170
|
-
}): ModelBuilder<Name, Table, Fields, Relations & Record<RelationName, RelationDefinition>>;
|
|
171
|
-
relation<RelationName extends string, ToModel extends string, ToTable extends string, JunctionTable extends string>(name: RelationName, options: {
|
|
172
|
-
toModel: ToModel;
|
|
173
|
-
toTable: ToTable;
|
|
174
|
-
cardinality: 'N:M';
|
|
175
|
-
through: {
|
|
176
|
-
table: JunctionTable;
|
|
177
|
-
parentColumns: readonly string[];
|
|
178
|
-
childColumns: readonly string[];
|
|
179
|
-
};
|
|
180
|
-
on: {
|
|
181
|
-
parentTable: Table;
|
|
182
|
-
parentColumns: readonly string[];
|
|
183
|
-
childTable: JunctionTable;
|
|
184
|
-
childColumns: readonly string[];
|
|
185
|
-
};
|
|
186
|
-
}): ModelBuilder<Name, Table, Fields, Relations & Record<RelationName, RelationDefinition>>;
|
|
187
|
-
build(): ModelBuilderState<Name, Table, Fields, Relations>;
|
|
188
|
-
}
|
|
189
|
-
//#endregion
|
|
190
|
-
//#region src/table-builder.d.ts
|
|
191
|
-
/**
|
|
192
|
-
* Column options for nullable columns.
|
|
193
|
-
*/
|
|
194
|
-
interface NullableColumnOptions<Descriptor extends ColumnTypeDescriptor> {
|
|
195
|
-
type: Descriptor;
|
|
196
|
-
nullable: true;
|
|
197
|
-
typeParams?: Record<string, unknown>;
|
|
198
|
-
default?: ColumnDefault;
|
|
199
|
-
}
|
|
200
|
-
/**
|
|
201
|
-
* Column options for non-nullable columns.
|
|
202
|
-
* Non-nullable columns can optionally have a default value.
|
|
203
|
-
*/
|
|
204
|
-
interface NonNullableColumnOptions<Descriptor extends ColumnTypeDescriptor> {
|
|
205
|
-
type: Descriptor;
|
|
206
|
-
nullable?: false;
|
|
207
|
-
typeParams?: Record<string, unknown>;
|
|
208
|
-
default?: ColumnDefault;
|
|
209
|
-
}
|
|
210
|
-
type GeneratedColumnOptions<Descriptor extends ColumnTypeDescriptor> = Omit<NonNullableColumnOptions<Descriptor>, 'default' | 'nullable'> & {
|
|
211
|
-
/**
|
|
212
|
-
* Generated columns are always non-nullable and use mutation-time defaults
|
|
213
|
-
* that the runtime injects when the column is omitted from insert input.
|
|
214
|
-
*/
|
|
215
|
-
nullable?: false;
|
|
216
|
-
generated: ExecutionMutationDefaultValue;
|
|
217
|
-
};
|
|
218
|
-
type IndexOptions = {
|
|
219
|
-
readonly name?: string;
|
|
220
|
-
readonly using?: string;
|
|
221
|
-
readonly config?: Record<string, unknown>;
|
|
222
|
-
};
|
|
223
|
-
/**
|
|
224
|
-
* Creates a new table builder with the given name.
|
|
225
|
-
* This is the preferred way to create a TableBuilder - it ensures
|
|
226
|
-
* type parameters are inferred correctly without unsafe casts.
|
|
227
|
-
*/
|
|
228
|
-
declare function createTable<Name extends string>(name: Name): TableBuilder<Name>;
|
|
229
|
-
/**
|
|
230
|
-
* Builder for defining table structure with type-safe chaining.
|
|
231
|
-
* Use `createTable(name)` to create instances.
|
|
232
|
-
*/
|
|
233
|
-
declare class TableBuilder<Name extends string, Columns extends Record<string, ColumnBuilderState<string, boolean, string>> = Record<never, ColumnBuilderState<string, boolean, string>>, PrimaryKey extends readonly string[] | undefined = undefined> {
|
|
234
|
-
private readonly _state;
|
|
235
|
-
/** @internal Use createTable() instead */
|
|
236
|
-
constructor(name: Name, columns: Columns, primaryKey: PrimaryKey, primaryKeyName: string | undefined, uniques: readonly UniqueConstraintDef[], indexes: readonly IndexDef[], foreignKeys: readonly ForeignKeyDef[]);
|
|
237
|
-
private get _name();
|
|
238
|
-
private get _columns();
|
|
239
|
-
private get _primaryKey();
|
|
240
|
-
/** Add a nullable column to the table. */
|
|
241
|
-
column<ColName extends string, Descriptor extends ColumnTypeDescriptor>(name: ColName, options: NullableColumnOptions<Descriptor>): TableBuilder<Name, Columns & Record<ColName, ColumnBuilderState<ColName, true, Descriptor['codecId']>>, PrimaryKey>;
|
|
242
|
-
/**
|
|
243
|
-
* Add a non-nullable column to the table.
|
|
244
|
-
* Non-nullable columns can optionally have a default value.
|
|
245
|
-
*/
|
|
246
|
-
column<ColName extends string, Descriptor extends ColumnTypeDescriptor>(name: ColName, options: NonNullableColumnOptions<Descriptor>): TableBuilder<Name, Columns & Record<ColName, ColumnBuilderState<ColName, false, Descriptor['codecId']>>, PrimaryKey>;
|
|
247
|
-
generated<ColName extends string, Descriptor extends ColumnTypeDescriptor>(name: ColName, options: GeneratedColumnOptions<Descriptor>): TableBuilder<Name, Columns & Record<ColName, ColumnBuilderState<ColName, false, Descriptor['codecId']>>, PrimaryKey>;
|
|
248
|
-
private columnInternal;
|
|
249
|
-
primaryKey<PK extends readonly string[]>(columns: PK, name?: string): TableBuilder<Name, Columns, PK>;
|
|
250
|
-
unique(columns: readonly string[], name?: string): TableBuilder<Name, Columns, PrimaryKey>;
|
|
251
|
-
index(columns: readonly string[], name?: string): TableBuilder<Name, Columns, PrimaryKey>;
|
|
252
|
-
index(columns: readonly string[], options?: IndexOptions): TableBuilder<Name, Columns, PrimaryKey>;
|
|
253
|
-
index(indexDef: IndexDef): TableBuilder<Name, Columns, PrimaryKey>;
|
|
254
|
-
foreignKey(columns: readonly string[], references: {
|
|
255
|
-
table: string;
|
|
256
|
-
columns: readonly string[];
|
|
257
|
-
}, opts?: string | (ForeignKeyOptions & {
|
|
258
|
-
constraint?: boolean;
|
|
259
|
-
index?: boolean;
|
|
260
|
-
})): TableBuilder<Name, Columns, PrimaryKey>;
|
|
261
|
-
build(): TableBuilderState<Name, Columns, PrimaryKey>;
|
|
262
|
-
}
|
|
263
|
-
//#endregion
|
|
264
|
-
//#region src/contract-builder.d.ts
|
|
265
|
-
declare class ContractBuilder<Target extends string | undefined = undefined, Tables extends Record<string, TableBuilderState<string, Record<string, ColumnBuilderState<string, boolean, string>>, readonly string[] | undefined>> = Record<never, never>, Models extends Record<string, ModelBuilderState<string, string, Record<string, string>, Record<string, RelationDefinition>>> = Record<never, never>, StorageHash extends string | undefined = undefined, ExtensionPacks extends Record<string, unknown> | undefined = undefined, Capabilities extends Record<string, Record<string, boolean>> | undefined = undefined> {
|
|
266
|
-
protected readonly state: ContractBuilderState<Target, Tables, Models, StorageHash, ExtensionPacks, Capabilities>;
|
|
267
|
-
constructor(state?: ContractBuilderState<Target, Tables, Models, StorageHash, ExtensionPacks, Capabilities>);
|
|
268
|
-
target<T extends string>(packRef: TargetPackRef<string, T>): ContractBuilder<T, Tables, Models, StorageHash, ExtensionPacks, Capabilities>;
|
|
269
|
-
capabilities<C extends Record<string, Record<string, boolean>>>(capabilities: C): ContractBuilder<Target, Tables, Models, StorageHash, ExtensionPacks, C>;
|
|
270
|
-
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>;
|
|
271
|
-
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<never, never>, Record<never, never>>) => M | undefined): ContractBuilder<Target, Tables, Models & Record<ModelName, ReturnType<M['build']>>, StorageHash, ExtensionPacks, Capabilities>;
|
|
272
|
-
storageHash<H extends string>(hash: H): ContractBuilder<Target, Tables, Models, H, ExtensionPacks, Capabilities>;
|
|
273
|
-
foreignKeyDefaults(config: ForeignKeyDefaultsState): ContractBuilder<Target, Tables, Models, StorageHash, ExtensionPacks, Capabilities>;
|
|
274
|
-
}
|
|
275
|
-
declare function defineContract(): ContractBuilder;
|
|
276
|
-
//#endregion
|
|
277
|
-
//#region src/types.d.ts
|
|
278
|
-
type BuildStorageColumn<Nullable extends boolean, Type extends string> = {
|
|
279
|
-
readonly nativeType: string;
|
|
280
|
-
readonly codecId: Type;
|
|
281
|
-
readonly nullable: Nullable;
|
|
282
|
-
readonly typeParams?: Record<string, unknown>;
|
|
283
|
-
readonly typeRef?: string;
|
|
284
|
-
readonly default?: ColumnDefault;
|
|
285
|
-
};
|
|
286
|
-
type ExtractColumns<T extends TableBuilderState<string, Record<string, ColumnBuilderState<string, boolean, string>>, readonly string[] | undefined>> = T extends TableBuilderState<string, infer C, readonly string[] | undefined> ? C : never;
|
|
287
|
-
type ExtractPrimaryKey<T extends TableBuilderState<string, Record<string, ColumnBuilderState<string, boolean, string>>, readonly string[] | undefined>> = T extends TableBuilderState<string, Record<string, ColumnBuilderState<string, boolean, string>>, infer PK> ? PK : never;
|
|
288
|
-
type BuildStorage<Tables extends Record<string, TableBuilderState<string, Record<string, ColumnBuilderState<string, boolean, string>>, readonly string[] | undefined>>> = {
|
|
289
|
-
readonly tables: { readonly [K in keyof Tables]: {
|
|
290
|
-
readonly columns: { readonly [ColK in keyof ExtractColumns<Tables[K]>]: ExtractColumns<Tables[K]>[ColK] extends ColumnBuilderState<string, infer Null, infer TType> ? BuildStorageColumn<Null & boolean, TType> : never };
|
|
291
|
-
} };
|
|
292
|
-
};
|
|
293
|
-
type BuildStorageTables<Tables extends Record<string, TableBuilderState<string, Record<string, ColumnBuilderState<string, boolean, string>>, readonly string[] | undefined>>> = { readonly [K in keyof Tables]: {
|
|
294
|
-
readonly columns: { readonly [ColK in keyof ExtractColumns<Tables[K]>]: ExtractColumns<Tables[K]>[ColK] extends ColumnBuilderState<string, infer Null, infer TType> ? BuildStorageColumn<Null & boolean, TType> : never };
|
|
295
|
-
} };
|
|
296
|
-
type Mutable<T> = { -readonly [K in keyof T]-?: T[K] };
|
|
297
|
-
type BuildModelFields<Fields extends Record<string, string>> = { readonly [K in keyof Fields]: {
|
|
298
|
-
readonly column: Fields[K];
|
|
299
|
-
} };
|
|
300
|
-
type ExtractModelFields<T extends ModelBuilderState<string, string, Record<string, string>, Record<string, RelationDefinition>>> = T extends ModelBuilderState<string, string, infer F, Record<string, RelationDefinition>> ? F : never;
|
|
301
|
-
type BuildModels<Models extends Record<string, ModelBuilderState<string, string, Record<string, string>, Record<string, RelationDefinition>>>> = { readonly [K in keyof Models]: {
|
|
302
|
-
readonly storage: {
|
|
303
|
-
readonly table: Models[K]['table'];
|
|
304
|
-
readonly fields: BuildModelFields<ExtractModelFields<Models[K]>>;
|
|
305
|
-
};
|
|
306
|
-
readonly fields: Record<string, DomainField>;
|
|
307
|
-
readonly relations: Record<string, DomainRelation>;
|
|
308
|
-
} };
|
|
309
18
|
//#endregion
|
|
310
|
-
export { type
|
|
19
|
+
export { type ColumnTypeDescriptor, type ForeignKeyDefaultsState, type IndexDef };
|
|
311
20
|
//# 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":"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AAA,CAAA;EAUjB,mBAAA,KAAoB,EGcJ,oBHbR,CGchB,MHZoB,EGapB,MHb0B,EGc1B,MHd0B,EGe1B,WHf0B,EGgB1B,cHhB0B,EGiB1B,YHjB0B,CAAA;EAOzB,WAAA,CAAA,KAAsB,CAAtB,EGcO,oBHde,CGcM,MHdN,EGcc,MHdd,EGcsB,MHdtB,EGc8B,WHd9B,EGc2C,cHd3C,EGc2D,YHd3D,CAAA;EACV,MAAA,CAAA,UAAA,MAAA,CAAA,CAAA,OAAA,EGwBJ,aHxBI,CAAA,MAAA,EGwBkB,CHxBlB,CAAA,CAAA,EGyBZ,eHzBY,CGyBI,CHzBJ,EGyBO,MHzBP,EGyBe,MHzBf,EGyBuB,WHzBvB,EGyBoC,cHzBpC,EGyBoD,YHzBpD,CAAA;EACA,YAAA,CAAA,UG+BQ,MH/BR,CAAA,MAAA,EG+BuB,MH/BvB,CAAA,MAAA,EAAA,OAAA,CAAA,CAAA,CAAA,CAAA,YAAA,EGgCC,CHhCD,CAAA,EGiCZ,eHjCY,CGiCI,MHjCJ,EGiCY,MHjCZ,EGiCoB,MHjCpB,EGiC4B,WHjC5B,EGiCyC,cHjCzC,EGiCyD,CHjCzD,CAAA;EAEO,KAAA,CAAA,kBAAA,MAAA,EAAA,UGwCV,YHxCU,CGyClB,SHzCkB,EG0ClB,MH1CkB,CAAA,MAAA,EG0CH,kBH1CG,CAAA,MAAA,EAAA,OAAA,EAAA,MAAA,CAAA,CAAA,EAAA,SAAA,MAAA,EAAA,GAAA,SAAA,CAAA,CAAA,CAAA,IAAA,EG8Cd,SH9Cc,EAAA,QAAA,EAAA,CAAA,CAAA,EG+CN,YH/CM,CG+CO,SH/CP,CAAA,EAAA,GG+CsB,CH/CtB,GAAA,SAAA,CAAA,EGgDnB,eHhDmB,CGiDpB,MHjDoB,EGkDpB,MHlDoB,GGkDX,MHlDW,CGkDJ,SHlDI,EGkDO,UHlDP,CGkDkB,CHlDlB,CAAA,OAAA,CAAA,CAAA,CAAA,EGmDpB,MHnDoB,EGoDpB,WHpDoB,EGqDpB,cHrDoB,EGsDpB,YHtDoB,CAAA;EAAM,KAAA,CAAA,kBAAA,MAAA,EAAA,kBAAA,MAAA,EAAA,UG8EhB,YH9EgB,CG+ExB,SH/EwB,EGgFxB,SHhFwB,EGiFxB,MHjFwB,CAAA,MAAA,EAA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"}
|
|
1
|
+
{"version":3,"file":"index.d.mts","names":[],"sources":["../src/descriptors.ts"],"sourcesContent":[],"mappings":";KAAY;EAAA,SAAA,OAAA,EACQ,QADY;EAOf,SAAA,UAAQ,EAAA,MAIL;EAGH,SAAA,UAAA,CAAA,EAXO,MAWgB,CAAA,MAAA,EAAA,OAAA,CAAA;;;UAPvB,QAAA;;;;oBAIG;;UAGH,uBAAA"}
|
package/dist/index.mjs
CHANGED
|
@@ -1,237 +1 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
//#region src/model-builder.ts
|
|
4
|
-
var ModelBuilder = class ModelBuilder {
|
|
5
|
-
_name;
|
|
6
|
-
_table;
|
|
7
|
-
_fields;
|
|
8
|
-
_relations;
|
|
9
|
-
constructor(name, table, fields = {}, relations = {}) {
|
|
10
|
-
this._name = name;
|
|
11
|
-
this._table = table;
|
|
12
|
-
this._fields = fields;
|
|
13
|
-
this._relations = relations;
|
|
14
|
-
}
|
|
15
|
-
field(fieldName, columnName) {
|
|
16
|
-
return new ModelBuilder(this._name, this._table, {
|
|
17
|
-
...this._fields,
|
|
18
|
-
[fieldName]: columnName
|
|
19
|
-
}, this._relations);
|
|
20
|
-
}
|
|
21
|
-
relation(name, options) {
|
|
22
|
-
if (options.on.parentTable !== this._table) throw new Error(`Relation "${name}" parentTable "${options.on.parentTable}" does not match model table "${this._table}"`);
|
|
23
|
-
if (options.cardinality === "N:M") {
|
|
24
|
-
if (!options.through) throw new Error(`Relation "${name}" with cardinality "N:M" requires through field`);
|
|
25
|
-
if (options.on.childTable !== options.through.table) throw new Error(`Relation "${name}" childTable "${options.on.childTable}" does not match through.table "${options.through.table}"`);
|
|
26
|
-
} else if (options.on.childTable !== options.toTable) throw new Error(`Relation "${name}" childTable "${options.on.childTable}" does not match toTable "${options.toTable}"`);
|
|
27
|
-
const relationDef = {
|
|
28
|
-
to: options.toModel,
|
|
29
|
-
cardinality: options.cardinality,
|
|
30
|
-
on: {
|
|
31
|
-
parentCols: options.on.parentColumns,
|
|
32
|
-
childCols: options.on.childColumns
|
|
33
|
-
},
|
|
34
|
-
...options.through ? { through: {
|
|
35
|
-
table: options.through.table,
|
|
36
|
-
parentCols: options.through.parentColumns,
|
|
37
|
-
childCols: options.through.childColumns
|
|
38
|
-
} } : void 0
|
|
39
|
-
};
|
|
40
|
-
return new ModelBuilder(this._name, this._table, this._fields, {
|
|
41
|
-
...this._relations,
|
|
42
|
-
[name]: relationDef
|
|
43
|
-
});
|
|
44
|
-
}
|
|
45
|
-
build() {
|
|
46
|
-
return {
|
|
47
|
-
name: this._name,
|
|
48
|
-
table: this._table,
|
|
49
|
-
fields: this._fields,
|
|
50
|
-
relations: this._relations
|
|
51
|
-
};
|
|
52
|
-
}
|
|
53
|
-
};
|
|
54
|
-
|
|
55
|
-
//#endregion
|
|
56
|
-
//#region src/table-builder.ts
|
|
57
|
-
function isIndexDef(value) {
|
|
58
|
-
return !Array.isArray(value);
|
|
59
|
-
}
|
|
60
|
-
/**
|
|
61
|
-
* Creates a new table builder with the given name.
|
|
62
|
-
* This is the preferred way to create a TableBuilder - it ensures
|
|
63
|
-
* type parameters are inferred correctly without unsafe casts.
|
|
64
|
-
*/
|
|
65
|
-
function createTable(name) {
|
|
66
|
-
return new TableBuilder(name, {}, void 0, void 0, [], [], []);
|
|
67
|
-
}
|
|
68
|
-
/**
|
|
69
|
-
* Builder for defining table structure with type-safe chaining.
|
|
70
|
-
* Use `createTable(name)` to create instances.
|
|
71
|
-
*/
|
|
72
|
-
var TableBuilder = class TableBuilder {
|
|
73
|
-
_state;
|
|
74
|
-
/** @internal Use createTable() instead */
|
|
75
|
-
constructor(name, columns, primaryKey, primaryKeyName, uniques, indexes, foreignKeys) {
|
|
76
|
-
this._state = {
|
|
77
|
-
name,
|
|
78
|
-
columns,
|
|
79
|
-
primaryKey,
|
|
80
|
-
primaryKeyName,
|
|
81
|
-
uniques,
|
|
82
|
-
indexes,
|
|
83
|
-
foreignKeys
|
|
84
|
-
};
|
|
85
|
-
}
|
|
86
|
-
get _name() {
|
|
87
|
-
return this._state.name;
|
|
88
|
-
}
|
|
89
|
-
get _columns() {
|
|
90
|
-
return this._state.columns;
|
|
91
|
-
}
|
|
92
|
-
get _primaryKey() {
|
|
93
|
-
return this._state.primaryKey;
|
|
94
|
-
}
|
|
95
|
-
/**
|
|
96
|
-
* Implementation of the column method.
|
|
97
|
-
*/
|
|
98
|
-
column(name, options) {
|
|
99
|
-
return this.columnInternal(name, options);
|
|
100
|
-
}
|
|
101
|
-
generated(name, options) {
|
|
102
|
-
const { generated, ...columnOptions } = options;
|
|
103
|
-
return this.columnInternal(name, columnOptions, generated);
|
|
104
|
-
}
|
|
105
|
-
columnInternal(name, options, executionDefault) {
|
|
106
|
-
const nullable = options.nullable ?? false;
|
|
107
|
-
const { codecId, nativeType, typeParams: descriptorTypeParams, typeRef } = options.type;
|
|
108
|
-
const columnState = {
|
|
109
|
-
name,
|
|
110
|
-
nullable,
|
|
111
|
-
type: codecId,
|
|
112
|
-
nativeType,
|
|
113
|
-
...ifDefined("typeParams", options.typeParams ?? descriptorTypeParams),
|
|
114
|
-
...ifDefined("typeRef", typeRef),
|
|
115
|
-
...ifDefined("default", "default" in options ? options.default : void 0),
|
|
116
|
-
...ifDefined("executionDefault", executionDefault)
|
|
117
|
-
};
|
|
118
|
-
const newColumns = {
|
|
119
|
-
...this._columns,
|
|
120
|
-
[name]: columnState
|
|
121
|
-
};
|
|
122
|
-
return new TableBuilder(this._state.name, newColumns, this._state.primaryKey, this._state.primaryKeyName, this._state.uniques, this._state.indexes, this._state.foreignKeys);
|
|
123
|
-
}
|
|
124
|
-
primaryKey(columns, name) {
|
|
125
|
-
return new TableBuilder(this._state.name, this._state.columns, columns, name, this._state.uniques, this._state.indexes, this._state.foreignKeys);
|
|
126
|
-
}
|
|
127
|
-
unique(columns, name) {
|
|
128
|
-
const constraint = name ? {
|
|
129
|
-
columns,
|
|
130
|
-
name
|
|
131
|
-
} : { columns };
|
|
132
|
-
return new TableBuilder(this._state.name, this._state.columns, this._state.primaryKey, this._state.primaryKeyName, [...this._state.uniques, constraint], this._state.indexes, this._state.foreignKeys);
|
|
133
|
-
}
|
|
134
|
-
index(columnsOrIndexDef, nameOrOptions) {
|
|
135
|
-
const indexDef = isIndexDef(columnsOrIndexDef) ? columnsOrIndexDef : {
|
|
136
|
-
columns: columnsOrIndexDef,
|
|
137
|
-
...typeof nameOrOptions === "string" ? { name: nameOrOptions } : {},
|
|
138
|
-
...typeof nameOrOptions === "object" && nameOrOptions !== null ? {
|
|
139
|
-
...nameOrOptions.name !== void 0 ? { name: nameOrOptions.name } : {},
|
|
140
|
-
...nameOrOptions.using !== void 0 ? { using: nameOrOptions.using } : {},
|
|
141
|
-
...nameOrOptions.config !== void 0 ? { config: nameOrOptions.config } : {}
|
|
142
|
-
} : {}
|
|
143
|
-
};
|
|
144
|
-
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);
|
|
145
|
-
}
|
|
146
|
-
foreignKey(columns, references, opts) {
|
|
147
|
-
const resolved = typeof opts === "string" ? { name: opts } : opts;
|
|
148
|
-
const fkDef = {
|
|
149
|
-
columns,
|
|
150
|
-
references,
|
|
151
|
-
...ifDefined("name", resolved?.name),
|
|
152
|
-
...ifDefined("onDelete", resolved?.onDelete),
|
|
153
|
-
...ifDefined("onUpdate", resolved?.onUpdate),
|
|
154
|
-
...ifDefined("constraint", resolved?.constraint),
|
|
155
|
-
...ifDefined("index", resolved?.index)
|
|
156
|
-
};
|
|
157
|
-
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]);
|
|
158
|
-
}
|
|
159
|
-
build() {
|
|
160
|
-
return {
|
|
161
|
-
name: this._name,
|
|
162
|
-
columns: this._columns,
|
|
163
|
-
...this._primaryKey !== void 0 ? { primaryKey: this._primaryKey } : {},
|
|
164
|
-
...this._state.primaryKeyName !== void 0 ? { primaryKeyName: this._state.primaryKeyName } : {},
|
|
165
|
-
uniques: this._state.uniques,
|
|
166
|
-
indexes: this._state.indexes,
|
|
167
|
-
foreignKeys: this._state.foreignKeys
|
|
168
|
-
};
|
|
169
|
-
}
|
|
170
|
-
};
|
|
171
|
-
|
|
172
|
-
//#endregion
|
|
173
|
-
//#region src/contract-builder.ts
|
|
174
|
-
var ContractBuilder = class ContractBuilder {
|
|
175
|
-
state;
|
|
176
|
-
constructor(state) {
|
|
177
|
-
this.state = state ?? {
|
|
178
|
-
tables: {},
|
|
179
|
-
models: {}
|
|
180
|
-
};
|
|
181
|
-
}
|
|
182
|
-
target(packRef) {
|
|
183
|
-
return new ContractBuilder({
|
|
184
|
-
...this.state,
|
|
185
|
-
target: packRef.targetId
|
|
186
|
-
});
|
|
187
|
-
}
|
|
188
|
-
capabilities(capabilities) {
|
|
189
|
-
return new ContractBuilder({
|
|
190
|
-
...this.state,
|
|
191
|
-
capabilities
|
|
192
|
-
});
|
|
193
|
-
}
|
|
194
|
-
table(name, callback) {
|
|
195
|
-
const tableBuilder = createTable(name);
|
|
196
|
-
const result = callback(tableBuilder);
|
|
197
|
-
const tableState = (result instanceof TableBuilder ? result : tableBuilder).build();
|
|
198
|
-
return new ContractBuilder({
|
|
199
|
-
...this.state,
|
|
200
|
-
tables: {
|
|
201
|
-
...this.state.tables,
|
|
202
|
-
[name]: tableState
|
|
203
|
-
}
|
|
204
|
-
});
|
|
205
|
-
}
|
|
206
|
-
model(name, table, callback) {
|
|
207
|
-
const modelBuilder = new ModelBuilder(name, table);
|
|
208
|
-
const result = callback(modelBuilder);
|
|
209
|
-
const modelState = (result instanceof ModelBuilder ? result : modelBuilder).build();
|
|
210
|
-
return new ContractBuilder({
|
|
211
|
-
...this.state,
|
|
212
|
-
models: {
|
|
213
|
-
...this.state.models,
|
|
214
|
-
[name]: modelState
|
|
215
|
-
}
|
|
216
|
-
});
|
|
217
|
-
}
|
|
218
|
-
storageHash(hash) {
|
|
219
|
-
return new ContractBuilder({
|
|
220
|
-
...this.state,
|
|
221
|
-
storageHash: hash
|
|
222
|
-
});
|
|
223
|
-
}
|
|
224
|
-
foreignKeyDefaults(config) {
|
|
225
|
-
return new ContractBuilder({
|
|
226
|
-
...this.state,
|
|
227
|
-
foreignKeyDefaults: config
|
|
228
|
-
});
|
|
229
|
-
}
|
|
230
|
-
};
|
|
231
|
-
function defineContract() {
|
|
232
|
-
return new ContractBuilder();
|
|
233
|
-
}
|
|
234
|
-
|
|
235
|
-
//#endregion
|
|
236
|
-
export { ContractBuilder, ModelBuilder, TableBuilder, createTable, defineContract };
|
|
237
|
-
//# sourceMappingURL=index.mjs.map
|
|
1
|
+
export { };
|