neoorm 0.9.0 → 0.9.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -17,7 +17,7 @@ export { many, manyToMany } from "./many-to-many.js";
17
17
  export type { FkBuilder, FkDeferrable, FkMeta, OnDeleteAction, OnUpdateAction, } from "./relation.js";
18
18
  export { fk } from "./relation.js";
19
19
  export type { InlineM2MInverseRelations, InlineM2MInverseWhereMap, InlineM2MInverseWriteMap, InlineM2MRelations, InlineM2MWhereMap, InlineM2MWriteMap, InverseRelations, JunctionM2MRelations, NestedCreateInput, OutgoingFkRelations, RelationCreateMap, RelationUpdateMap, SqlNameToAccessor, } from "./relation-types.js";
20
- export type { BloomIndexOptions, ColumnDef, ColumnNaming, ColumnRefs, ForeignKeyBuilder, ForeignKeyDef, IndexDef, IndexExpr, IndexKeyInput, IndexMethod, IndexWherePredicate, PrimaryKeyDef, ScalarColumnKeys, TableDef, TableExtra, TableOptions, } from "./table.js";
20
+ export type { BloomIndexOptions, ColumnDef, ColumnKey, ColumnNaming, ColumnRef, ColumnRefs, ForeignKeyBuilder, ForeignKeyDef, IndexBuilder, IndexDef, IndexExpr, IndexKeyInput, IndexMethod, IndexScopeHelpers, IndexWhereInput, IndexWherePredicate, IndexWhereValue, PrimaryKeyDef, ScalarColumnKeys, TableDef, TableExtra, TableOptions, TableScope, } from "./table.js";
21
21
  export { expr, foreignKey, index, primaryKey, table, unique } from "./table.js";
22
22
  export { clearTableRegistry } from "./table-registry.js";
23
23
  export type { AggregateArgs, ApplyOmit, ApplySelect, ColumnWhereInput, ComparableFilter, ConnectInput, ConnectOrCreateItem, CountArgs, CountSelect, CreateArgs, CreateInput, CreateManyAndReturnArgs, CreateManyArgs, CreateManyInput, CursorInput, DeleteArgs, DeleteManyAndReturnArgs, DeleteManyArgs, ExistsArgs, FindByIdArgs, FindFirstArgs, FindManyArgs, FindOrCreateArgs, FindOrCreateResult, FindUniqueArgs, GroupByArgs, GroupByHaving, GroupByOrderBy, HiddenKeys, InferAggregateResult, InferCountResult, InferFindResult, InferGroupByResult, InferInsertRow, InferMutationResult, InferPkFields, InferSelectRow, InferWithResult, JsonFilter, LogicalWhereInput, ManyRelationFilter, NumericHaving, NumericUpdateOps, OmitInput, OrderByInput, OrderDirection, PaginateArgs, PaginateResult, PluginColumnWhereOperators, QueryMode, RelationAccessors, RelationCountInput, RelationWhereMap, RelationWriteInput, ScalarPkName, ScalarSetOp, SchemaTables, SearchTsParser, SearchTsQuery, SelectInput, StringFilter, StripCapable, StripOmitKeys, StripResult, UniqueWhere, UpdateArgs, UpdateInput, UpdateManyAndReturnArgs, UpdateManyArgs, UpsertArgs, WhereInput, WhereOperators, WithInclude, WithInput, WithInputMap, WithRelationOptions, } from "./types.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/schema/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/schema/index.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/schema/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAkBH,OAAO,EACN,MAAM,EACN,IAAI,EACJ,KAAK,EACL,IAAI,EACJ,MAAM,EACN,IAAI,EACJ,SAAS,EACT,OAAO,EACP,MAAM,EACN,SAAS,EACT,QAAQ,EACR,KAAK,EACL,EAAE,EACF,IAAI,EACJ,GAAG,EACH,SAAS,EACT,SAAS,EACT,QAAQ,EACR,QAAQ,EACR,IAAI,EACJ,KAAK,EACL,KAAK,EACL,OAAO,EACP,QAAQ,EACR,IAAI,EACJ,MAAM,EACN,IAAI,EACJ,SAAS,EACT,IAAI,EACJ,SAAS,EACT,UAAU,EACV,OAAO,EACP,SAAS,EACT,QAAQ,EACR,IAAI,EACJ,SAAS,EACT,GAAG,GACH,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAMlD,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAQrD,OAAO,EAAE,EAAE,EAAE,MAAM,eAAe,CAAC;AAkCnC,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAChF,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/schema/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAkBH,OAAO,EACN,MAAM,EACN,IAAI,EACJ,KAAK,EACL,IAAI,EACJ,MAAM,EACN,IAAI,EACJ,SAAS,EACT,OAAO,EACP,MAAM,EACN,SAAS,EACT,QAAQ,EACR,KAAK,EACL,EAAE,EACF,IAAI,EACJ,GAAG,EACH,SAAS,EACT,SAAS,EACT,QAAQ,EACR,QAAQ,EACR,IAAI,EACJ,KAAK,EACL,KAAK,EACL,OAAO,EACP,QAAQ,EACR,IAAI,EACJ,MAAM,EACN,IAAI,EACJ,SAAS,EACT,IAAI,EACJ,SAAS,EACT,UAAU,EACV,OAAO,EACP,SAAS,EACT,QAAQ,EACR,IAAI,EACJ,SAAS,EACT,GAAG,GACH,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAMlD,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAQrD,OAAO,EAAE,EAAE,EAAE,MAAM,eAAe,CAAC;AAyCnC,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAChF,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC"}
@@ -1,4 +1,5 @@
1
1
  import type { ColumnBuilder, ColumnMeta } from "./column.js";
2
+ import type { InferColumnValue } from "./column-where.js";
2
3
  import type { ManyToManyExtra } from "./many-to-many.js";
3
4
  import type { FkBuilder, FkDeferrable, OnDeleteAction, OnUpdateAction } from "./relation.js";
4
5
  export type ColumnDef = ColumnBuilder<unknown> | FkBuilder | ManyToManyExtra;
@@ -97,7 +98,7 @@ export type ColumnNaming = "snakeCase" | "camelCase";
97
98
  /** Options for {@link table}. */
98
99
  export type TableOptions<TColumns extends Record<string, ColumnDef> = Record<string, ColumnDef>, TExtras extends readonly TableExtra[] = readonly TableExtra[]> = {
99
100
  columnNaming?: ColumnNaming;
100
- extras?: (t: ColumnRefs<TColumns>) => TExtras;
101
+ extras?: (t: TableScope<TColumns>) => TExtras;
101
102
  };
102
103
  export type TableDef<TName extends string = string, TColumns extends Record<string, ColumnDef> = Record<string, ColumnDef>, TTargetRef extends string = string, TExtras extends readonly TableExtra[] = readonly TableExtra[]> = {
103
104
  readonly _tableName: TName;
@@ -108,8 +109,60 @@ export type TableDef<TName extends string = string, TColumns extends Record<stri
108
109
  readonly _columnNaming?: ColumnNaming;
109
110
  };
110
111
  export type ColumnRefs<TColumns extends Record<string, ColumnDef>> = {
111
- readonly [K in keyof TColumns]: K & string;
112
+ readonly [K in keyof TColumns]: K & string & {
113
+ readonly __colName?: K & string;
114
+ readonly __tableCols?: TColumns;
115
+ };
112
116
  };
117
+ /**
118
+ * Branded column-name ref. Runtime is still a plain string; the phantom
119
+ * `__tableCols` lets top-level `index()` / `unique()` infer the table's
120
+ * columns from `t.col` args so `.where()` gets key completion.
121
+ */
122
+ export type ColumnRef<TColumns extends Record<string, ColumnDef> = Record<string, ColumnDef>> = string & {
123
+ readonly __tableCols?: TColumns;
124
+ };
125
+ /**
126
+ * Column-name key for index/PK/FK declarations. Without table context
127
+ * (default columns) any string is accepted; once `TColumns` is inferred
128
+ * from `t.col` refs, only real column names validate so typos error.
129
+ * Expression keys stay separate (`IndexExpr` in each signature).
130
+ */
131
+ export type ColumnKey<TColumns extends Record<string, ColumnDef> = Record<string, ColumnDef>> = Extract<keyof TColumns & string, string> & {
132
+ readonly __tableCols?: TColumns;
133
+ };
134
+ /**
135
+ * Per-column value for a partial-index predicate.
136
+ * Scalar columns keep their precise types (including string-literal unions
137
+ * for enums) so IDEs autocomplete values; anything else (dates, json,
138
+ * bigint, …) falls back to the primitive union `compileIndexWhere`
139
+ * supports at runtime.
140
+ */
141
+ export type IndexWhereValue<TCol extends ColumnDef> = InferColumnValue<TCol, Record<string, TableDef>> extends infer V ? [V] extends [boolean | number | string | null] ? V | null : boolean | number | string | null : never;
142
+ /**
143
+ * Equality-only predicate for partial indexes.
144
+ * Keys come from the table's columns, so IDEs get autocomplete. Matches
145
+ * what `compileIndexWhere` supports at runtime (`= / IS NULL` joined by
146
+ * `AND`); no `OR` / operator bags.
147
+ */
148
+ export type IndexWhereInput<TColumns extends Record<string, ColumnDef>> = {
149
+ [K in ScalarColumnKeys<TColumns>]?: IndexWhereValue<TColumns[K]>;
150
+ };
151
+ type IndexScopeKeys<TColumns extends Record<string, ColumnDef>> = readonly (Extract<keyof TColumns & string, string> | IndexExpr)[];
152
+ /**
153
+ * `index()` / `unique()` bound to the enclosing `table()` so `.where()`
154
+ * is typed. Exposed as `t.index` / `t.unique` on the extras scope.
155
+ * Omitted when the table has a column with the same name (use the
156
+ * top-level `index()` / `unique()` instead, which infers the same typed
157
+ * predicate from `t.col` keys).
158
+ */
159
+ export type IndexScopeHelpers<TColumns extends Record<string, ColumnDef>> = ("index" extends Extract<keyof TColumns, string> ? Record<never, never> : {
160
+ index(...keys: IndexScopeKeys<TColumns>): IndexBuilder<TColumns>;
161
+ }) & ("unique" extends Extract<keyof TColumns, string> ? Record<never, never> : {
162
+ unique(...keys: IndexScopeKeys<TColumns>): IndexBuilder<TColumns>;
163
+ });
164
+ /** Extras-callback scope: column refs plus typed `t.index` / `t.unique`. */
165
+ export type TableScope<TColumns extends Record<string, ColumnDef>> = ColumnRefs<TColumns> & IndexScopeHelpers<TColumns>;
113
166
  /**
114
167
  * `WITH` storage options for `USING bloom` indexes.
115
168
  *
@@ -121,7 +174,7 @@ export type BloomIndexOptions = {
121
174
  length?: number;
122
175
  cols?: readonly number[];
123
176
  };
124
- export type IndexBuilder = {
177
+ export type IndexBuilder<TColumns extends Record<string, ColumnDef> = Record<string, ColumnDef>> = {
125
178
  readonly kind: "index";
126
179
  readonly keys: readonly IndexKeyInput[];
127
180
  readonly columns: readonly string[];
@@ -129,30 +182,47 @@ export type IndexBuilder = {
129
182
  readonly _using?: IndexMethod;
130
183
  readonly _opclass?: string;
131
184
  readonly _with?: BloomIndexOptions;
132
- using(method: IndexMethod): IndexBuilder;
133
- ops(opclass: string): IndexBuilder;
185
+ using(method: IndexMethod): IndexBuilder<TColumns>;
186
+ ops(opclass: string): IndexBuilder<TColumns>;
134
187
  /** Bloom `WITH` options (requires `.using("bloom")`). */
135
- with(options: BloomIndexOptions): IndexBuilder;
188
+ with(options: BloomIndexOptions): IndexBuilder<TColumns>;
136
189
  /** Partial index: only index rows matching the predicate. */
137
- where(predicate: IndexWherePredicate): IndexDef;
190
+ where(predicate: IndexWhereInput<TColumns>): IndexDef;
138
191
  };
139
192
  export declare function isIndexExpr(value: unknown): value is IndexExpr;
140
193
  /** SQL expression index key (`lower(email)`), not a column identifier. */
141
194
  export declare function expr(sql: string): IndexExpr;
142
- /** Create a non-unique index on one or more columns (use in table extras). */
143
- export declare function index(...keys: readonly IndexKeyInput[]): IndexBuilder;
144
- /** Create a unique index on one or more columns (use in table extras). Supports `.where()` for partial uniques. */
145
- export declare function unique(...keys: readonly IndexKeyInput[]): IndexBuilder;
195
+ /**
196
+ * Create a non-unique index on one or more columns (use in table extras).
197
+ * When keys come from the extras scope (`t.col`), the table's columns are
198
+ * inferred: `.where()` gets key completion and unknown key names error.
199
+ * Raw strings stay untyped.
200
+ */
201
+ export declare function index<TColumns extends Record<string, ColumnDef> = Record<string, ColumnDef>>(...keys: readonly (ColumnKey<TColumns> | IndexExpr)[]): IndexBuilder<TColumns>;
202
+ /**
203
+ * Create a unique index on one or more columns (use in table extras).
204
+ * Supports `.where()` for partial uniques; when keys come from the extras
205
+ * scope (`t.col`), the predicate is typed and unknown key names error.
206
+ * Raw strings stay untyped.
207
+ */
208
+ export declare function unique<TColumns extends Record<string, ColumnDef> = Record<string, ColumnDef>>(...keys: readonly (ColumnKey<TColumns> | IndexExpr)[]): IndexBuilder<TColumns>;
209
+ /** Strip column-ref brands back to plain string literals. */
210
+ type UnbrandColumnNames<T extends readonly string[]> = {
211
+ [I in keyof T]: T[I] extends {
212
+ readonly __colName?: infer N extends string;
213
+ } ? N : T[I];
214
+ };
146
215
  /** Declare a composite primary key (use in table extras). */
147
- export declare function primaryKey<C extends string>(...columns: readonly C[]): {
216
+ export declare function primaryKey<TColumns extends Record<string, ColumnDef> = Record<string, ColumnDef>, const T extends readonly string[] = readonly []>(...columns: T & readonly ColumnKey<TColumns>[]): {
148
217
  kind: "primaryKey";
149
- columns: readonly C[];
218
+ columns: UnbrandColumnNames<T>;
150
219
  };
151
220
  /**
152
221
  * Declare a composite foreign-key constraint as a first-class relation
153
222
  * (use in table extras). Local columns must not also be `fk()`.
223
+ * Keys from the extras scope (`t.col`) are validated against the table.
154
224
  */
155
- export declare function foreignKey(...columns: readonly string[]): ForeignKeyBuilder<"", "", "">;
225
+ export declare function foreignKey<TColumns extends Record<string, ColumnDef> = Record<string, ColumnDef>>(...columns: readonly ColumnKey<TColumns>[]): ForeignKeyBuilder<"", "", "">;
156
226
  /**
157
227
  * Define a table and its columns.
158
228
  *
@@ -168,8 +238,8 @@ export declare function foreignKey(...columns: readonly string[]): ForeignKeyBui
168
238
  * }),
169
239
  * ```
170
240
  */
171
- export declare function table<TColumns extends Record<string, ColumnDef>, TExtras extends readonly TableExtra[] = readonly []>(columns: TColumns, config?: ((t: ColumnRefs<TColumns>) => TExtras) | TableOptions<TColumns, TExtras>): TableDef<"", TColumns, `.${PkColumnName<TColumns>}`, TExtras> & TableColumns<"", TColumns>;
172
- export declare function table<TName extends string, TColumns extends Record<string, ColumnDef>, TExtras extends readonly TableExtra[] = readonly []>(sqlName: TName, columns: TColumns, config?: ((t: ColumnRefs<TColumns>) => TExtras) | TableOptions<TColumns, TExtras>): TableDef<TName, TColumns, `${TName}.${PkColumnName<TColumns>}`, TExtras> & TableColumns<TName, TColumns>;
241
+ export declare function table<TColumns extends Record<string, ColumnDef>, TExtras extends readonly TableExtra[] = readonly []>(columns: TColumns, config?: ((t: TableScope<TColumns>) => TExtras) | TableOptions<TColumns, TExtras>): TableDef<"", TColumns, `.${PkColumnName<TColumns>}`, TExtras> & TableColumns<"", TColumns>;
242
+ export declare function table<TName extends string, TColumns extends Record<string, ColumnDef>, TExtras extends readonly TableExtra[] = readonly []>(sqlName: TName, columns: TColumns, config?: ((t: TableScope<TColumns>) => TExtras) | TableOptions<TColumns, TExtras>): TableDef<TName, TColumns, `${TName}.${PkColumnName<TColumns>}`, TExtras> & TableColumns<TName, TColumns>;
173
243
  export declare function findPrimaryKeyColumn(columns: Record<string, ColumnDef>): string | undefined;
174
244
  export {};
175
245
  //# sourceMappingURL=table.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"table.d.ts","sourceRoot":"","sources":["../../src/schema/table.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"table.d.ts","sourceRoot":"","sources":["../../src/schema/table.ts"],"names":[],"mappings":"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"}
@@ -52,17 +52,30 @@ function createIndexBuilder(state) {
52
52
  },
53
53
  };
54
54
  }
55
- /** Create a non-unique index on one or more columns (use in table extras). */
55
+ /**
56
+ * Create a non-unique index on one or more columns (use in table extras).
57
+ * When keys come from the extras scope (`t.col`), the table's columns are
58
+ * inferred: `.where()` gets key completion and unknown key names error.
59
+ * Raw strings stay untyped.
60
+ */
56
61
  export function index(...keys) {
57
62
  return createIndexBuilder({ keys, unique: false });
58
63
  }
59
- /** Create a unique index on one or more columns (use in table extras). Supports `.where()` for partial uniques. */
64
+ /**
65
+ * Create a unique index on one or more columns (use in table extras).
66
+ * Supports `.where()` for partial uniques; when keys come from the extras
67
+ * scope (`t.col`), the predicate is typed and unknown key names error.
68
+ * Raw strings stay untyped.
69
+ */
60
70
  export function unique(...keys) {
61
71
  return createIndexBuilder({ keys, unique: true });
62
72
  }
63
73
  /** Declare a composite primary key (use in table extras). */
64
74
  export function primaryKey(...columns) {
65
- return { kind: "primaryKey", columns };
75
+ return {
76
+ kind: "primaryKey",
77
+ columns: columns,
78
+ };
66
79
  }
67
80
  function createForeignKeyBuilder(state) {
68
81
  return {
@@ -108,6 +121,7 @@ function createForeignKeyBuilder(state) {
108
121
  /**
109
122
  * Declare a composite foreign-key constraint as a first-class relation
110
123
  * (use in table extras). Local columns must not also be `fk()`.
124
+ * Keys from the extras scope (`t.col`) are validated against the table.
111
125
  */
112
126
  export function foreignKey(...columns) {
113
127
  return createForeignKeyBuilder({
@@ -160,16 +174,27 @@ function buildTableDef(sqlName, columns, extras, columnNaming) {
160
174
  return Object.assign(def, columns);
161
175
  }
162
176
  export function table(first, second, third) {
177
+ // Extras scope: column-name refs plus `t.index` / `t.unique` helpers that
178
+ // return table-typed builders (typed `.where()`). The helpers are only
179
+ // attached when they don't shadow a same-named column.
180
+ const toScope = (columnMap) => {
181
+ const scope = Object.fromEntries(Object.keys(columnMap).map((k) => [k, k]));
182
+ if (!("index" in scope)) {
183
+ scope.index = index;
184
+ }
185
+ if (!("unique" in scope)) {
186
+ scope.unique = unique;
187
+ }
188
+ return scope;
189
+ };
163
190
  if (typeof first === "string" && isColumnMap(second)) {
164
- const refs = Object.fromEntries(Object.keys(second).map((k) => [k, k]));
165
- const extras = resolveExtras(refs, third);
191
+ const extras = resolveExtras(toScope(second), third);
166
192
  return buildTableDef(first, second, extras, configColumnNaming(third));
167
193
  }
168
194
  if (!isColumnMap(first)) {
169
195
  throw schemaError(SchemaErrorCode.invalid_column, "table() expects a column map as the first argument, or a SQL name followed by a column map");
170
196
  }
171
- const refs = Object.fromEntries(Object.keys(first).map((k) => [k, k]));
172
- const extras = resolveExtras(refs, second);
197
+ const extras = resolveExtras(toScope(first), second);
173
198
  return buildTableDef("", first, extras, configColumnNaming(second));
174
199
  }
175
200
  export function findPrimaryKeyColumn(columns) {
@@ -1 +1 @@
1
- {"version":3,"file":"table.js","sourceRoot":"","sources":["../../src/schema/table.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAS5D,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAIpD,4EAA4E;AAC5E,MAAM,UAAU,aAAa,CAAC,GAAc;IAC3C,IAAI,CAAC,CAAC,OAAO,IAAI,GAAG,CAAC;QAAE,OAAO,SAAS,CAAC;IACxC,OAAO,GAAG,CAAC,KAAK,CAAC;AAClB,CAAC;AAoND,SAAS,iBAAiB,CAAC,IAA8B;IACxD,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,EAAiB,EAAE,CAAC,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC;AACrE,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,KAAc;IACzC,OAAO,CACN,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,KAAK,IAAI;QACb,KAA2B,CAAC,IAAI,KAAK,WAAW;QACjD,OAAQ,KAA2B,CAAC,GAAG,KAAK,QAAQ,CACpD,CAAC;AACH,CAAC;AAED,0EAA0E;AAC1E,MAAM,UAAU,IAAI,CAAC,GAAW;IAC/B,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,EAAE,CAAC;AACnC,CAAC;AAED,SAAS,kBAAkB,CAAC,KAM3B;IACA,MAAM,GAAG,GAAa;QACrB,IAAI,EAAE,OAAO;QACb,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,OAAO,EAAE,iBAAiB,CAAC,KAAK,CAAC,IAAI,CAAC;QACtC,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC9C,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACpD,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC3C,CAAC;IACF,OAAO;QACN,IAAI,EAAE,OAAO;QACb,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,OAAO,EAAE,GAAG,CAAC,OAAO;QACpB,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/C,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACrD,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC5C,KAAK,CAAC,MAAmB;YACxB,OAAO,kBAAkB,CAAC,EAAE,GAAG,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;QACxD,CAAC;QACD,GAAG,CAAC,OAAe;YAClB,OAAO,kBAAkB,CAAC,EAAE,GAAG,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;QAClD,CAAC;QACD,IAAI,CAAC,OAA0B;YAC9B,OAAO,kBAAkB,CAAC,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;QACxD,CAAC;QACD,KAAK,CAAC,SAA8B;YACnC,OAAO,EAAE,GAAG,GAAG,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;QACrC,CAAC;KACD,CAAC;AACH,CAAC;AAED,8EAA8E;AAC9E,MAAM,UAAU,KAAK,CAAC,GAAG,IAA8B;IACtD,OAAO,kBAAkB,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;AACpD,CAAC;AAED,mHAAmH;AACnH,MAAM,UAAU,MAAM,CAAC,GAAG,IAA8B;IACvD,OAAO,kBAAkB,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;AACnD,CAAC;AAED,6DAA6D;AAC7D,MAAM,UAAU,UAAU,CACzB,GAAG,OAAqB;IAExB,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,CAAC;AACxC,CAAC;AAED,SAAS,uBAAuB,CAK/B,KAA4C;IAE5C,OAAO;QACN,IAAI,EAAE,YAAY;QAClB,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,WAAW,EAAE,KAAK,CAAC,WAAW;QAC9B,aAAa,EAAE,KAAK,CAAC,aAAa;QAClC,GAAG,EAAE,KAAK,CAAC,GAAG;QACd,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC1D,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC1D,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAChE,GAAG,CAAC,KAAK,CAAC,cAAc;YACvB,CAAC,CAAC,EAAE,cAAc,EAAE,KAAK,CAAC,cAAc,EAAE;YAC1C,CAAC,CAAC,EAAE,CAAC;QACN,UAAU,CACT,KAAY,EACZ,GAAG,aAAgC;YAEnC,OAAO,uBAAuB,CAAC;gBAC9B,GAAG,KAAK;gBACR,WAAW,EAAE,KAAK;gBAClB,aAAa;aACb,CAAC,CAAC;QACJ,CAAC;QACD,EAAE,CAAuB,IAAW;YACnC,OAAO,uBAAuB,CAAC,EAAE,GAAG,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC;QACzD,CAAC;QACD,OAAO,CAAuB,IAAW;YACxC,OAAO,uBAAuB,CAAC,EAAE,GAAG,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;QAC9D,CAAC;QACD,QAAQ,CAAC,MAAsB;YAC9B,OAAO,uBAAuB,CAAC,EAAE,GAAG,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,CAAC;QACjE,CAAC;QACD,QAAQ,CAAC,MAAsB;YAC9B,OAAO,uBAAuB,CAAC,EAAE,GAAG,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,CAAC;QACjE,CAAC;QACD,UAAU,CAAC,MAAM,GAAiB,WAAW;YAC5C,OAAO,uBAAuB,CAAC,EAAE,GAAG,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC,CAAC;QACnE,CAAC;QACD,GAAG,CAAC,IAAY;YACf,OAAO,uBAAuB,CAAC,EAAE,GAAG,KAAK,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC,CAAC;QACpE,CAAC;KACD,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,UAAU,CACzB,GAAG,OAA0B;IAE7B,OAAO,uBAAuB,CAAC;QAC9B,IAAI,EAAE,YAAY;QAClB,OAAO;QACP,WAAW,EAAE,EAAE;QACf,aAAa,EAAE,EAAE;QACjB,GAAG,EAAE,EAAE;QACP,QAAQ,EAAE,EAAE;KACZ,CAAC,CAAC;AACJ,CAAC;AAED,SAAS,WAAW,CAAC,KAAc;IAClC,OAAO,CACN,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,KAAK,IAAI;QACd,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QACrB,CAAC,CAAC,MAAM,IAAI,KAAK,CAAC,CAClB,CAAC;AACH,CAAC;AAED,SAAS,aAAa,CACrB,IAA0B,EAC1B,MAEyB;IAEzB,IAAI,CAAC,MAAM,EAAE,CAAC;QACb,OAAO,EAAE,CAAC;IACX,CAAC;IACD,IAAI,OAAO,MAAM,KAAK,UAAU,EAAE,CAAC;QAClC,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC;IACrB,CAAC;IACD,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AACjD,CAAC;AAED,SAAS,kBAAkB,CAC1B,MAIY;IAEZ,IACC,OAAO,MAAM,KAAK,QAAQ;QAC1B,MAAM,KAAK,IAAI;QACf,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EACpB,CAAC;QACF,OAAO,SAAS,CAAC;IAClB,CAAC;IACD,IAAI,CAAC,CAAC,cAAc,IAAI,MAAM,CAAC;QAAE,OAAO,SAAS,CAAC;IAClD,MAAM,MAAM,GAAG,MAAM,CAAC,YAAY,CAAC;IACnC,IAAI,MAAM,KAAK,WAAW,IAAI,MAAM,KAAK,WAAW;QAAE,OAAO,MAAM,CAAC;IACpE,OAAO,SAAS,CAAC;AAClB,CAAC;AAED,SAAS,aAAa,CAKrB,OAAc,EACd,OAAiB,EACjB,MAAe,EACf,YAA2B;IAG3B,MAAM,YAAY,GAAG,oBAAoB,CAAC,OAAO,CAAC,CAAC;IAEnD,MAAM,GAAG,GAAG;QACX,UAAU,EAAE,OAAO;QACnB,QAAQ,EAAE,OAAO;QACjB,OAAO,EAAE,MAAM;QACf,UAAU,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,OAAO,IAAI,YAAY,EAAE,CAAC,CAAC,CAAC,GAAG,OAAO,GAAG;QACvE,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAO3B,CAAC;IAE/B,aAAa,CAAC,GAAG,EAAE,OAA6C,CAAC,CAAC;IAElE,OAAO,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,OAAO,CAMH,CAAC;AAChC,CAAC;AAuCD,MAAM,UAAU,KAAK,CACpB,KAAyC,EACzC,MAG0C,EAC1C,KAE0C;IAE1C,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC;QACtD,MAAM,IAAI,GAAG,MAAM,CAAC,WAAW,CAC9B,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CACG,CAAC;QAC3C,MAAM,MAAM,GAAG,aAAa,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAC1C,OAAO,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAC;IACxE,CAAC;IAED,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,MAAM,WAAW,CAChB,eAAe,CAAC,cAAc,EAC9B,4FAA4F,CAC5F,CAAC;IACH,CAAC;IAED,MAAM,IAAI,GAAG,MAAM,CAAC,WAAW,CAC9B,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CACI,CAAC;IAC3C,MAAM,MAAM,GAAG,aAAa,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAC3C,OAAO,aAAa,CAAC,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAC;AACrE,CAAC;AAED,MAAM,UAAU,oBAAoB,CACnC,OAAkC;IAElC,KAAK,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QACrD,IAAI,aAAa,CAAC,GAAG,CAAC,EAAE,OAAO,KAAK,IAAI;YAAE,OAAO,MAAM,CAAC;IACzD,CAAC;IACD,KAAK,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QACrD,IAAI,aAAa,CAAC,GAAG,CAAC,EAAE,IAAI,KAAK,IAAI;YAAE,OAAO,MAAM,CAAC;IACtD,CAAC;IACD,OAAO,SAAS,CAAC;AAClB,CAAC"}
1
+ {"version":3,"file":"table.js","sourceRoot":"","sources":["../../src/schema/table.ts"],"names":[],"mappings":"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"}
package/docs/examples.md CHANGED
@@ -506,7 +506,7 @@ See [Plugins](plugins.md).
506
506
  Composite unique constraint and partial unique (soft-delete emails):
507
507
 
508
508
  ```ts
509
- import { bool, fk, id, index, table, text, unique } from "neoorm/schema";
509
+ import { bool, fk, id, table, text, unique } from "neoorm/schema";
510
510
 
511
511
  posts: table(
512
512
  {
@@ -517,7 +517,7 @@ posts: table(
517
517
  },
518
518
  (t) => [
519
519
  unique(t.authorId, t.title),
520
- index(t.title).where({ published: true }),
520
+ t.index(t.title).where({ published: true }),
521
521
  ],
522
522
  ),
523
523
 
@@ -527,7 +527,7 @@ users: table(
527
527
  email: text().notNull(),
528
528
  deleted: bool().notNull().default(false),
529
529
  },
530
- (t) => [unique(t.email).where({ deleted: false })],
530
+ (t) => [t.unique(t.email).where({ deleted: false })],
531
531
  ),
532
532
  ```
533
533
 
package/docs/schema.md CHANGED
@@ -279,7 +279,7 @@ posts: table(
279
279
  ),
280
280
  ```
281
281
 
282
- Helpers: `unique(...cols)`, `index(...cols)`, `primaryKey(...cols)`, `expr("sql")`. `unique()` and `index()` support `.using()`, `.ops()`, `.with()` (bloom only), and `.where()` for partial indexes.
282
+ Helpers: `unique(...cols)`, `index(...cols)`, `primaryKey(...cols)`, `expr("sql")`. `unique()` and `index()` support `.using()`, `.ops()`, `.with()` (bloom only), and `.where()` for partial indexes. Key names from the extras scope (`t.col`) are validated against the table's columns; raw strings are unchecked.
283
283
 
284
284
  ### Index methods and expressions
285
285
 
@@ -305,11 +305,16 @@ Bloom indexes (Postgres only) are tuned with `.with({ length, cols })`: `cols` m
305
305
 
306
306
  ```ts
307
307
  (t) => [
308
- index(t.title).where({ published: true }),
309
- unique(t.email).where({ deleted: false }),
308
+ t.index(t.title).where({ published: true }),
309
+ t.unique(t.email).where({ deleted: false }),
310
310
  ],
311
311
  ```
312
312
 
313
+ Use `t.index` / `t.unique` or the top-level `index()` / `unique()` with
314
+ `t.col` keys — in both cases the `where` predicate is typed: keys and scalar
315
+ values autocomplete from the table's columns. Raw-string keys
316
+ (`unique("email")`) still accept `.where()` with an untyped predicate.
317
+
313
318
  Equality map of column refs → values; compiled to `WHERE "published" = true` (or `= 1` on SQLite). Partial uniques emit as `CREATE UNIQUE INDEX ... WHERE ...`, not table-level `UNIQUE (...)`. They are valid `findUnique` / `upsert` / `findOrCreate` targets: `where` uses the indexed columns, and the index predicate is applied automatically (`AND` on lookups, `ON CONFLICT (…) WHERE …` on Postgres and SQLite).
314
319
 
315
320
  ## Many-to-many
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "neoorm",
3
- "version": "0.9.0",
3
+ "version": "0.9.2",
4
4
  "description": "TypeScript-first PostgreSQL, SQLite, MySQL, and MariaDB ORM with schema DSL, codegen, and typed relations",
5
5
  "license": "MIT",
6
6
  "repository": {