prisma-ts-select 0.1.6 → 0.1.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/bin.cjs CHANGED
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env node
2
2
  'use strict';
3
3
 
4
- require('./chunk-GSIFF2TF.cjs');
4
+ require('./chunk-RX2M26LV.cjs');
5
5
 
package/dist/bin.js CHANGED
@@ -1,2 +1,2 @@
1
1
  #!/usr/bin/env node
2
- import './chunk-NFKUA5XM.js';
2
+ import './chunk-F7HSD6UA.js';
@@ -51,6 +51,7 @@ generatorHandler({
51
51
  }, []).join(", ")}`);
52
52
  }
53
53
  const modelToId = {};
54
+ const m2mMap = {};
54
55
  const models = options.dmmf.datamodel.models.reduce((acc, model) => {
55
56
  const modelObj = acc[model.name] = acc[model.name] ?? {
56
57
  fields: {},
@@ -79,6 +80,11 @@ generatorHandler({
79
80
  } else {
80
81
  if (!isManyToManyRelationShip(field)) continue;
81
82
  const joinTableName = "_" + field.relationName;
83
+ const src = model.name, tgt = field.type;
84
+ (m2mMap[src] ??= {})[tgt] ??= /* @__PURE__ */ new Set();
85
+ m2mMap[src][tgt].add(joinTableName);
86
+ (m2mMap[tgt] ??= {})[src] ??= /* @__PURE__ */ new Set();
87
+ m2mMap[tgt][src].add(joinTableName);
82
88
  const joinTableModel = acc[joinTableName] = acc[joinTableName] ?? {
83
89
  fields: {
84
90
  "A": "",
@@ -214,7 +220,7 @@ export { ${provider}Dialect as dialect, ${provider}Dialect, ${ctxName} as dialec
214
220
  const PLACEHOLDER = "type SelectFnContext<_TSources extends TArrSources, _TFields extends TFieldsType> = BaseSelectFnContext<_TSources, _TFields>;";
215
221
  const JOIN_RETURN_RE = /type _fJoinReturn<[^>]+>[^;]+;/;
216
222
  const joinReturnReplacement = omittedMethods.length > 0 ? `type _fJoinReturn<TSources extends TArrSources, TFields extends TFieldsType, TCTEs extends Record<string, Record<string, any>> = {}> = Omit<_fJoin<TSources, TFields, TCTEs>, ${omittedMethods.map((m) => `"${m}"`).join(" | ")}>;` : `type _fJoinReturn<TSources extends TArrSources, TFields extends TFieldsType, TCTEs extends Record<string, Record<string, any>> = {}> = _fJoin<TSources, TFields, TCTEs>;`;
217
- const replacedExtendDts = extendDts.replace("declare const DB: DBType;", declaration).replace(
223
+ const replacedExtendDts = extendDts.replace("declare const DB: DBType;", declaration).replace("type M2MMap = {};", generateM2MMapDeclaration(m2mMap)).replace(
218
224
  PLACEHOLDER,
219
225
  `type SelectFnContext<_TSources extends TArrSources, _TFields extends TFieldsType> = Omit<BaseSelectFnContext<_TSources, _TFields>, keyof DialectFns<ColEntries<_TSources, _TFields>, WhereCriteria<_TSources, _TFields>>> & DialectFns<ColEntries<_TSources, _TFields>, WhereCriteria<_TSources, _TFields>>;`
220
226
  ).replace(JOIN_RETURN_RE, joinReturnReplacement);
@@ -300,3 +306,19 @@ function generateReadonlyDeclaration(db) {
300
306
  ${traverse(db, 1)}
301
307
  };`;
302
308
  }
309
+ function generateM2MMapDeclaration(m2mMap) {
310
+ if (Object.keys(m2mMap).length === 0) return "type M2MMap = {};";
311
+ const lines = ["type M2MMap = {"];
312
+ for (const [source, targets] of Object.entries(m2mMap)) {
313
+ lines.push(` readonly "${source}": {`);
314
+ for (const [target, junctions] of Object.entries(targets)) {
315
+ const junctionLiterals = Array.from(junctions).map((j) => `"${j}"`).join(" | ");
316
+ lines.push(` readonly "${target}": ${junctionLiterals};`);
317
+ }
318
+ lines.push(" };");
319
+ }
320
+ lines.push("};");
321
+ return lines.join("\n");
322
+ }
323
+
324
+ export { generateM2MMapDeclaration };
@@ -59,6 +59,7 @@ generatorHelper.generatorHandler({
59
59
  }, []).join(", ")}`);
60
60
  }
61
61
  const modelToId = {};
62
+ const m2mMap = {};
62
63
  const models = options.dmmf.datamodel.models.reduce((acc, model) => {
63
64
  const modelObj = acc[model.name] = acc[model.name] ?? {
64
65
  fields: {},
@@ -87,6 +88,11 @@ generatorHelper.generatorHandler({
87
88
  } else {
88
89
  if (!isManyToManyRelationShip(field)) continue;
89
90
  const joinTableName = "_" + field.relationName;
91
+ const src = model.name, tgt = field.type;
92
+ (m2mMap[src] ??= {})[tgt] ??= /* @__PURE__ */ new Set();
93
+ m2mMap[src][tgt].add(joinTableName);
94
+ (m2mMap[tgt] ??= {})[src] ??= /* @__PURE__ */ new Set();
95
+ m2mMap[tgt][src].add(joinTableName);
90
96
  const joinTableModel = acc[joinTableName] = acc[joinTableName] ?? {
91
97
  fields: {
92
98
  "A": "",
@@ -222,7 +228,7 @@ export { ${provider}Dialect as dialect, ${provider}Dialect, ${ctxName} as dialec
222
228
  const PLACEHOLDER = "type SelectFnContext<_TSources extends TArrSources, _TFields extends TFieldsType> = BaseSelectFnContext<_TSources, _TFields>;";
223
229
  const JOIN_RETURN_RE = /type _fJoinReturn<[^>]+>[^;]+;/;
224
230
  const joinReturnReplacement = omittedMethods.length > 0 ? `type _fJoinReturn<TSources extends TArrSources, TFields extends TFieldsType, TCTEs extends Record<string, Record<string, any>> = {}> = Omit<_fJoin<TSources, TFields, TCTEs>, ${omittedMethods.map((m) => `"${m}"`).join(" | ")}>;` : `type _fJoinReturn<TSources extends TArrSources, TFields extends TFieldsType, TCTEs extends Record<string, Record<string, any>> = {}> = _fJoin<TSources, TFields, TCTEs>;`;
225
- const replacedExtendDts = extendDts.replace("declare const DB: DBType;", declaration).replace(
231
+ const replacedExtendDts = extendDts.replace("declare const DB: DBType;", declaration).replace("type M2MMap = {};", generateM2MMapDeclaration(m2mMap)).replace(
226
232
  PLACEHOLDER,
227
233
  `type SelectFnContext<_TSources extends TArrSources, _TFields extends TFieldsType> = Omit<BaseSelectFnContext<_TSources, _TFields>, keyof DialectFns<ColEntries<_TSources, _TFields>, WhereCriteria<_TSources, _TFields>>> & DialectFns<ColEntries<_TSources, _TFields>, WhereCriteria<_TSources, _TFields>>;`
228
234
  ).replace(JOIN_RETURN_RE, joinReturnReplacement);
@@ -308,3 +314,19 @@ function generateReadonlyDeclaration(db) {
308
314
  ${traverse(db, 1)}
309
315
  };`;
310
316
  }
317
+ function generateM2MMapDeclaration(m2mMap) {
318
+ if (Object.keys(m2mMap).length === 0) return "type M2MMap = {};";
319
+ const lines = ["type M2MMap = {"];
320
+ for (const [source, targets] of Object.entries(m2mMap)) {
321
+ lines.push(` readonly "${source}": {`);
322
+ for (const [target, junctions] of Object.entries(targets)) {
323
+ const junctionLiterals = Array.from(junctions).map((j) => `"${j}"`).join(" | ");
324
+ lines.push(` readonly "${target}": ${junctionLiterals};`);
325
+ }
326
+ lines.push(" };");
327
+ }
328
+ lines.push("};");
329
+ return lines.join("\n");
330
+ }
331
+
332
+ exports.generateM2MMapDeclaration = generateM2MMapDeclaration;
@@ -47,7 +47,7 @@ declare const mysqlV6ContextFns: <TColEntries extends [string, unknown] = never,
47
47
  hour: (col: SQLExpr<Date> | FilterCols<TColEntries, Date>) => SQLExpr<bigint>;
48
48
  minute: (col: SQLExpr<Date> | FilterCols<TColEntries, Date>) => SQLExpr<number>;
49
49
  second: (col: SQLExpr<Date> | FilterCols<TColEntries, Date>) => SQLExpr<number>;
50
- $if: <T>(cond: TCriteria | SQLExpr<unknown>, trueVal: SQLExpr<T>, falseVal: SQLExpr<T>) => SQLExpr<T>;
50
+ $if: <T>(cond: SQLExpr<unknown> | TCriteria, trueVal: SQLExpr<T>, falseVal: SQLExpr<T>) => SQLExpr<T>;
51
51
  ifNull: <T>(col: FilterCols<TColEntries, T> | SQLExpr<T>, fallback: SQLExpr<NonNullable<T>>) => SQLExpr<NonNullable<T>>;
52
52
  greatest: <T>(args_0: FilterCols<TColEntries, T> | SQLExpr<T>, ...args: (FilterCols<TColEntries, T> | SQLExpr<T>)[]) => SQLExpr<T | null>;
53
53
  least: <T>(args_0: FilterCols<TColEntries, T> | SQLExpr<T>, ...args: (FilterCols<TColEntries, T> | SQLExpr<T>)[]) => SQLExpr<T | null>;
@@ -26,7 +26,7 @@ declare const sqliteContextFns: <TColEntries extends [string, unknown] = never,
26
26
  total: (col: ColName<TColEntries>) => SQLExpr<number>;
27
27
  min: <Col extends ColName<TColEntries>>(col: Col) => SQLExpr<SqliteMinMaxResult<TColEntries, Col>>;
28
28
  max: <Col extends ColName<TColEntries>>(col: Col) => SQLExpr<SqliteMinMaxResult<TColEntries, Col>>;
29
- concat: (args_0: FilterCols<TColEntries, string> | SQLExpr<string>, ...args: (FilterCols<TColEntries, string> | SQLExpr<string>)[]) => SQLExpr<string>;
29
+ concat: (args_0: SQLExpr<string> | FilterCols<TColEntries, string>, ...args: (SQLExpr<string> | FilterCols<TColEntries, string>)[]) => SQLExpr<string>;
30
30
  substr: (col: FilterCols<TColEntries, string> | SQLExpr<string>, start: number, len?: number) => SQLExpr<string>;
31
31
  instr: (col: FilterCols<TColEntries, string> | SQLExpr<string>, substr: string) => SQLExpr<bigint>;
32
32
  char: (...codes: number[]) => SQLExpr<string>;
@@ -60,7 +60,7 @@ declare const sqliteContextFns: <TColEntries extends [string, unknown] = never,
60
60
  log2: (x: FilterCols<TColEntries, number> | SQLExpr<number>) => SQLExpr<number>;
61
61
  log10: (x: FilterCols<TColEntries, number> | SQLExpr<number>) => SQLExpr<number>;
62
62
  jsonExtract: (col: FilterJsonCols<TColEntries> | SQLExpr<JSONValue>, path: string) => SQLExpr<JSONValue>;
63
- jsonArray: (args_0: SQLExpr<unknown> | ColName<TColEntries>, ...args: (SQLExpr<unknown> | ColName<TColEntries>)[]) => SQLExpr<JSONValue[]>;
63
+ jsonArray: (args_0: ColName<TColEntries> | SQLExpr<unknown>, ...args: (ColName<TColEntries> | SQLExpr<unknown>)[]) => SQLExpr<JSONValue[]>;
64
64
  jsonObject: (pairs: [string, ColName<TColEntries> | SQLExpr<unknown>][]) => SQLExpr<JSONObject>;
65
65
  cast: <T extends keyof SqliteCastTypeMap>(expr: ColName<TColEntries> | SQLExpr<unknown>, type: T) => SQLExpr<SqliteCastTypeMap[T]>;
66
66
  };
@@ -4,6 +4,7 @@ import { S as SQLExpr, L as LitToType } from './sql-expr-BGSEwzCi.js';
4
4
  type PrismaClient = any;
5
5
 
6
6
  declare const DB: DBType;
7
+ type M2MMap = {};
7
8
  type TDB = typeof DB;
8
9
  type DeepWriteable<T> = {
9
10
  -readonly [P in keyof T]: DeepWriteable<T[P]>;
@@ -346,10 +347,12 @@ type BaseSelectFnContext<_TSources extends TArrSources, _TFields extends TFields
346
347
  }>], elseVal?: TElse) => TElse extends SQLExpr<T> ? SQLExpr<T> : SQLExpr<T | null>;
347
348
  };
348
349
  type SelectFnContext<_TSources extends TArrSources, _TFields extends TFieldsType> = BaseSelectFnContext<_TSources, _TFields>;
349
- type ImplicitJoinsFrom<TSources extends TArrSources> = AvailableJoins<TSources> & `_${string}`;
350
- type AvailableM2MTargets<TSources extends TArrSources> = keyof Relations<ImplicitJoinsFrom<TSources>> extends infer T ? T extends TTables & string ? T extends `_${string}` ? never : T : never : never;
351
- type GetJunctionTable<TSource extends TTables, TTarget extends TTables> = keyof Relations<TSource> & keyof Relations<TTarget> & `_${string}` & TTables;
352
- type AvailableRefNames<TSources extends TArrSources> = ImplicitJoinsFrom<TSources> extends `_${infer R}` ? R : never;
350
+ type IsUnion<T, _T extends T = T> = _T extends _T ? ([T] extends [_T] ? false : true) : never;
351
+ type ResolveSourceTable<TSources extends TArrSources, TInput extends string> = TSources[number] extends infer T ? T extends TVirtualTableSource ? never : T extends string ? T extends TInput ? T & TTables : never : T extends [infer Table extends TTables, infer Alias extends string] ? Alias extends TInput ? Table : Table extends TInput ? Table : never : never : never;
352
+ type AvailableM2MSources<TSources extends TArrSources> = TSources[number] extends infer T ? T extends TVirtualTableSource ? never : T extends string ? T extends keyof M2MMap ? T : never : T extends [infer Table extends string, infer Alias extends string] ? Table extends keyof M2MMap ? Alias : never : never : never;
353
+ type AvailableM2MTargets<TSource extends TTables> = TSource extends keyof M2MMap ? keyof M2MMap[TSource] & string : never;
354
+ type GetJunctionTable<TSource extends TTables, TTarget extends TTables> = TSource extends keyof M2MMap ? TTarget extends keyof M2MMap[TSource] ? M2MMap[TSource][TTarget & keyof M2MMap[TSource]] & TTables : never : never;
355
+ type AvailableRefNames<TSource extends TTables> = TSource extends keyof M2MMap ? M2MMap[TSource][keyof M2MMap[TSource]] extends infer J ? J extends `_${infer R}` ? R : never : never : never;
353
356
  declare class _fJoin<TSources extends TArrSources, TFields extends TFieldsType, TCTEs extends Record<string, Record<string, any>> = {}> extends _fWhere<TSources, TFields> {
354
357
  join<const TName extends keyof TCTEs & string>(cteName: TName, local: keyof TCTEs[TName] & string, remote: GetJoinCols<TSources[number]>, opts?: {
355
358
  joinType?: JoinType;
@@ -391,10 +394,11 @@ declare class _fJoin<TSources extends TArrSources, TFields extends TFieldsType,
391
394
  where?: JoinWhereCriteria<Table, TAlias>;
392
395
  joinType?: JoinType;
393
396
  }): _fJoinReturn<[...TSources, [TAlias] extends [never] ? Table : [Table, TAlias]], TFields & Record<Table, GetFieldsFromTable<Table>>, TCTEs>;
394
- manyToManyJoin<const TTableInput extends `${AvailableM2MTargets<TSources>}` | `${AvailableM2MTargets<TSources>} ${string}`, TTarget extends AvailableM2MTargets<TSources> = ExtractTableName<TTableInput> & AvailableM2MTargets<TSources>, TAlias extends string | never = ExtractAlias<TTableInput>, const TRefName extends AvailableRefNames<TSources> | undefined = undefined, TJunction extends TTables = TRefName extends string ? `_${TRefName}` & TTables : GetJunctionTable<GetRealTableNames<TSources[number]>, TTarget>>(targetTable: TTableInput, options?: {
395
- source?: `${GetAliasTableNames<TSources[number]>}.${string}`;
396
- refName?: TRefName;
397
- }): _fJoin<[
397
+ manyToManyJoin<const TSourceInput extends AvailableM2MSources<TSources>, TSource extends TTables = ResolveSourceTable<TSources, TSourceInput>, const TTargetInput extends `${AvailableM2MTargets<TSource>}` | `${AvailableM2MTargets<TSource>} ${string}` = never, TTarget extends TTables = ExtractTableName<TTargetInput> & TTables, TAlias extends string | never = ExtractAlias<TTargetInput>, const TRefName extends AvailableRefNames<TSource> | undefined = undefined, TJunction extends TTables = TRefName extends string ? `_${TRefName}` & TTables : GetJunctionTable<TSource, TTarget>>(sourceTable: TSourceInput, targetTable: TTargetInput, ...args: IsUnion<TJunction> extends true ? [options: {
398
+ refName: AvailableRefNames<TSource>;
399
+ }] : [options?: {
400
+ refName?: AvailableRefNames<TSource>;
401
+ }]): _fJoin<[
398
402
  ...TSources,
399
403
  TJunction,
400
404
  [TAlias] extends [never] ? TTarget : [TTarget, TAlias]
@@ -284,6 +284,7 @@ var esc = (s2) => s2.replace(/'/g, "''");
284
284
 
285
285
  // src/extend.ts
286
286
  var DB = {};
287
+ var SAFE_IDENT_RE = /^\w+$/;
287
288
  var DbSelect = class {
288
289
  constructor(db) {
289
290
  this.db = db;
@@ -793,58 +794,58 @@ var _fJoin = class __fJoin extends _fWhere {
793
794
  joinUnsafeIgnoreType(tableOrOptions, field, reference, _opts) {
794
795
  return this.join(tableOrOptions, field, reference, _opts);
795
796
  }
796
- manyToManyJoin(targetTable, options) {
797
- const opts = options;
797
+ manyToManyJoin(sourceTable, targetTable, ...args) {
798
+ const opts = args[0];
798
799
  const refName = opts?.refName;
800
+ const safeIdent = (v2, ctx) => {
801
+ if (!SAFE_IDENT_RE.test(v2)) throw new Error(`manyToManyJoin: unsafe identifier in ${ctx}: "${v2}"`);
802
+ return v2;
803
+ };
804
+ const [sourceTblRaw] = sourceTable.split(" ");
805
+ const safeSourceTbl = safeIdent(sourceTblRaw, "source");
806
+ const sourceEntry = this.values.tables.find(
807
+ (t2) => t2.table === safeSourceTbl || t2.alias === safeSourceTbl
808
+ );
809
+ if (!sourceEntry) throw new Error(`manyToManyJoin: source "${safeSourceTbl}" not in joined tables (by table name or alias)`);
810
+ const sourceTableName = sourceEntry.table;
811
+ const sourceAlias = sourceEntry.alias || sourceEntry.table;
799
812
  const [tbl, alias] = targetTable.split(" ");
800
- let sourceTableName;
801
- let sourceAlias;
802
- let srcLocalCol;
803
- if (opts?.source) {
804
- const [srcAliasOrTable, col] = opts.source.split(".");
805
- const entry = this.values.tables.find((t2) => (t2.alias || t2.table) === srcAliasOrTable);
806
- sourceTableName = entry?.table ?? srcAliasOrTable;
807
- sourceAlias = srcAliasOrTable;
808
- srcLocalCol = col;
809
- } else {
810
- const candidates = this.values.tables.filter((entry) => {
811
- const relations = DB[entry.table]?.relations;
812
- return relations && Object.keys(relations).some(
813
- (k2) => k2.startsWith("_") && DB[k2]?.relations?.[tbl] !== void 0
814
- );
815
- });
816
- if (candidates.length === 0) throw new Error(
817
- `manyToManyJoin: no source with junction to "${tbl}" among joined tables`
818
- );
819
- if (candidates.length > 1) {
820
- const names = candidates.map((c2) => c2.alias ?? c2.table).join(", ");
821
- throw new Error(`manyToManyJoin: ambiguous source for "${tbl}" (${names}). Pass { source: "alias.col" }.`);
822
- }
823
- const found = candidates[0];
824
- sourceTableName = found.table;
825
- sourceAlias = found.alias || found.table;
826
- const srcRelations2 = DB[sourceTableName]?.relations;
827
- const junctionKey = refName ? `_${refName}` : Object.keys(srcRelations2 ?? {}).find(
828
- (k2) => k2.startsWith("_") && DB[k2]?.relations?.[tbl] !== void 0
829
- );
830
- const junctionRelEntry = junctionKey ? srcRelations2[junctionKey] : void 0;
831
- srcLocalCol = junctionRelEntry ? Object.keys(junctionRelEntry)[0] : "id";
832
- }
813
+ const safeTbl = safeIdent(tbl, "target");
814
+ const safeAlias = alias ? safeIdent(alias, "alias") : void 0;
815
+ const safeRef = refName ? safeIdent(refName, "refName") : void 0;
833
816
  const srcEntry = DB[sourceTableName];
834
817
  if (!srcEntry) throw new Error(`manyToManyJoin: unknown source table "${sourceTableName}"`);
835
818
  const srcRelations = srcEntry.relations;
836
- const junctionTable = refName ? `_${refName}` : Object.keys(srcRelations).find(
837
- (k2) => k2.startsWith("_") && DB[k2]?.relations?.[tbl] !== void 0
819
+ const junctionTable = safeRef ? `_${safeRef}` : Object.keys(srcRelations).find(
820
+ (k2) => k2.startsWith("_") && DB[k2]?.relations?.[safeTbl] !== void 0
838
821
  );
839
822
  if (!junctionTable) throw new Error(
840
- `manyToManyJoin: no junction between "${sourceTableName}" and "${tbl}"`
823
+ `manyToManyJoin: no junction between "${sourceTableName}" and "${safeTbl}"`
824
+ );
825
+ const junctionRelEntry = srcRelations[junctionTable];
826
+ const junctionKeys = junctionRelEntry ? Object.keys(junctionRelEntry) : [];
827
+ if (junctionRelEntry && junctionKeys.length === 0) throw new Error(
828
+ `manyToManyJoin: junction "${junctionTable}" has no relation columns for source "${sourceTableName}"`
829
+ );
830
+ const srcLocalCol = junctionKeys[0] ?? (() => {
831
+ throw new Error(`manyToManyJoin: cannot determine source local col for junction "${junctionTable}"`);
832
+ })();
833
+ const srcJunctionCol = junctionRelEntry?.[srcLocalCol]?.[0] ?? (() => {
834
+ throw new Error(`manyToManyJoin: cannot determine source junction col for "${junctionTable}"`);
835
+ })();
836
+ const tgtRelEntry = DB[junctionTable]?.relations?.[safeTbl];
837
+ const tgtKeys = tgtRelEntry ? Object.keys(tgtRelEntry) : [];
838
+ if (tgtRelEntry && tgtKeys.length === 0) throw new Error(
839
+ `manyToManyJoin: junction "${junctionTable}" has no relation columns for target "${safeTbl}"`
841
840
  );
842
- const srcJunctionCol = srcRelations[junctionTable]?.[srcLocalCol]?.[0] ?? "A";
843
- const tgtRelEntry = DB[junctionTable]?.relations?.[tbl];
844
- const tgtJunctionCol = tgtRelEntry ? Object.keys(tgtRelEntry)[0] : "B";
845
- const tgtLocalCol = tgtRelEntry?.[tgtJunctionCol]?.[0] ?? "id";
841
+ const tgtJunctionCol = tgtKeys[0] ?? (() => {
842
+ throw new Error(`manyToManyJoin: cannot determine target junction col for "${junctionTable}"`);
843
+ })();
844
+ const tgtLocalCol = tgtRelEntry?.[tgtJunctionCol]?.[0] ?? (() => {
845
+ throw new Error(`manyToManyJoin: cannot determine target local col for "${junctionTable}"`);
846
+ })();
846
847
  const remoteRef = `${sourceAlias}.${srcLocalCol}`;
847
- return this.joinUnsafeIgnoreType(junctionTable, srcJunctionCol, remoteRef).joinUnsafeIgnoreType(alias ? `${tbl} ${alias}` : tbl, tgtLocalCol, `${junctionTable}.${tgtJunctionCol}`);
848
+ return this.joinUnsafeIgnoreType(junctionTable, srcJunctionCol, remoteRef).joinUnsafeIgnoreType(safeAlias ? `${safeTbl} ${safeAlias}` : safeTbl, tgtLocalCol, `${junctionTable}.${tgtJunctionCol}`);
848
849
  }
849
850
  innerJoin(tableOrOptions, field, reference) {
850
851
  return this._joinImpl("INNER", tableOrOptions, field, reference);
@@ -1,4 +1,10 @@
1
1
  'use strict';
2
2
 
3
- require('./chunk-GSIFF2TF.cjs');
3
+ var chunkRX2M26LV_cjs = require('./chunk-RX2M26LV.cjs');
4
4
 
5
+
6
+
7
+ Object.defineProperty(exports, "generateM2MMapDeclaration", {
8
+ enumerable: true,
9
+ get: function () { return chunkRX2M26LV_cjs.generateM2MMapDeclaration; }
10
+ });
@@ -1,2 +1,3 @@
1
+ declare function generateM2MMapDeclaration(m2mMap: Record<string, Record<string, Set<string>>>): string;
1
2
 
2
- export { }
3
+ export { generateM2MMapDeclaration };
@@ -1,2 +1,3 @@
1
+ declare function generateM2MMapDeclaration(m2mMap: Record<string, Record<string, Set<string>>>): string;
1
2
 
2
- export { }
3
+ export { generateM2MMapDeclaration };
package/dist/generator.js CHANGED
@@ -1 +1 @@
1
- import './chunk-NFKUA5XM.js';
1
+ export { generateM2MMapDeclaration } from './chunk-F7HSD6UA.js';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "prisma-ts-select",
3
- "version": "0.1.6",
3
+ "version": "0.1.7",
4
4
  "type": "module",
5
5
  "bin": {
6
6
  "prisma-ts-select": "dist/bin.cjs"