bun-query-builder 0.2.69 → 0.3.0

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/client.d.ts CHANGED
@@ -31,7 +31,11 @@ import type { SchemaMeta } from './meta';
31
31
  * db.selectFrom('orders').whereRaw(raw`status = ${userStatus}`) // value escaped
32
32
  * ```
33
33
  */
34
- export declare function raw(strings: TemplateStringsArray | string, ...values: unknown[]): RawExpression;
34
+ export declare function raw(strings: TemplateStringsArray, ...values: unknown[]): RawExpression;
35
+ // eslint-disable-next-line pickier/no-unused-vars
36
+ export declare function raw(sqlOrStrings: TemplateStringsArray | string): RawExpression;
37
+ // eslint-disable-next-line pickier/no-unused-vars
38
+ export declare function raw(sql: string): RawExpression;
35
39
  /**
36
40
  * Render a SELECT-list entry to its SQL text, unwrapping SQL fragments instead
37
41
  * of letting them stringify to "[object Object]" (stacksjs/bun-query-builder#1016).
@@ -126,6 +130,14 @@ export declare function setQueryCacheMaxSize(size: number): void;
126
130
  declare interface RawExpression {
127
131
  raw: string
128
132
  }
133
+ /**
134
+ * A fragment with bound values, as `db.raw('stock - ?', [n])` builds it.
135
+ * `set()` and `where()` render it at its position and bind its values.
136
+ */
137
+ export declare interface BoundSqlFragment {
138
+ readonly sql: string
139
+ readonly parameters: readonly unknown[]
140
+ }
129
141
  export declare interface WhereRaw {
130
142
  raw: SqlFragment
131
143
  }
@@ -152,7 +164,7 @@ export declare interface BaseSelectQueryBuilder<DB extends AnyDatabaseSchema, TT
152
164
  distinctOn: (...columns: (keyof DB[TTable]['columns'] & string | string)[]) => SelectQueryBuilder<DB, TTable, TSelected, TJoined>
153
165
  selectRaw: (fragment: SqlFragment) => SelectQueryBuilder<DB, TTable, TSelected, TJoined>
154
166
  where: <K extends keyof DB[TTable]['columns'] & string>(
155
- expr: WhereExpression<DB[TTable]['columns']> | K,
167
+ expr: WhereExpression<DB[TTable]['columns']> | K | BoundSqlFragment,
156
168
  op?: WhereOperator,
157
169
  value?: WhereValue<DB[TTable]['columns'][K]>,
158
170
  ) => SelectQueryBuilder<DB, TTable, TSelected, TJoined>
@@ -189,12 +201,12 @@ export declare interface BaseSelectQueryBuilder<DB extends AnyDatabaseSchema, TT
189
201
  whereJsonContains: (column: string, json: unknown) => SelectQueryBuilder<DB, TTable, TSelected, TJoined>
190
202
  whereJsonPath?: (path: string, op: WhereOperator, value: unknown) => SelectQueryBuilder<DB, TTable, TSelected, TJoined>
191
203
  andWhere: <K extends keyof DB[TTable]['columns'] & string>(
192
- expr: WhereExpression<DB[TTable]['columns']> | K,
204
+ expr: WhereExpression<DB[TTable]['columns']> | K | BoundSqlFragment,
193
205
  op?: WhereOperator,
194
206
  value?: WhereValue<DB[TTable]['columns'][K]>,
195
207
  ) => SelectQueryBuilder<DB, TTable, TSelected, TJoined>
196
208
  orWhere: <K extends keyof DB[TTable]['columns'] & string>(
197
- expr: WhereExpression<DB[TTable]['columns']> | K,
209
+ expr: WhereExpression<DB[TTable]['columns']> | K | BoundSqlFragment,
198
210
  op?: WhereOperator,
199
211
  value?: WhereValue<DB[TTable]['columns'][K]>,
200
212
  ) => SelectQueryBuilder<DB, TTable, TSelected, TJoined>
@@ -360,7 +372,7 @@ export declare interface UpdateQueryBuilder<DB extends AnyDatabaseSchema, TTable
360
372
  }
361
373
  export declare interface DeleteQueryBuilder<DB extends AnyDatabaseSchema, TTable extends keyof DB & string> {
362
374
  where: <K extends keyof DB[TTable]['columns'] & string>(
363
- expr: WhereExpression<DB[TTable]['columns']> | K,
375
+ expr: WhereExpression<DB[TTable]['columns']> | K | BoundSqlFragment,
364
376
  op?: WhereOperator,
365
377
  value?: WhereValue<DB[TTable]['columns'][K]>,
366
378
  ) => DeleteQueryBuilder<DB, TTable>
@@ -397,7 +409,7 @@ export declare interface QueryBuilder<DB extends AnyDatabaseSchema> {
397
409
  table: <TTable extends keyof DB & string>(table: TTable) => TableQueryBuilder<DB, TTable>
398
410
  selectFromSub: (sub: { toSQL: () => string }, alias: string) => SelectQueryBuilder<DB, keyof DB & string, Record<string, unknown>>
399
411
  sql: DriverConnection
400
- raw: (strings: TemplateStringsArray, ...values: unknown[]) => SqlFragment
412
+ raw: ((sql: string, bindings?: readonly unknown[]) => BoundSqlFragment) & ((strings: TemplateStringsArray, ...values: unknown[]) => SqlFragment)
401
413
  simple: (strings: TemplateStringsArray, ...values: unknown[]) => unknown
402
414
  unsafe: <TRow extends Record<string, unknown> = Record<string, unknown>>(query: string, params?: unknown[]) => Promise<TRow[]>
403
415
  deferInsert?: DeferredInsert
@@ -530,19 +542,21 @@ declare type Primitive = string | number | boolean | bigint | Date | null | unde
530
542
  declare type ValueOrRef = Primitive;
531
543
  export type WhereOperator = '=' | '!=' | '<' | '>' | '<=' | '>=' | 'like' | 'in' | 'not in' | 'is' | 'is not';
532
544
  /**
533
- * Brand for SQL fragments produced by Bun's `sql\`...\`` tagged-template
534
- * (or any equivalent helper). Typed as `object` so the *Raw methods
535
- * (`whereRaw`, `selectRaw`, `groupByRaw`, `havingRaw`, `orderByRaw`)
536
- * refuse to compile when passed a bare string — concatenated user
537
- * input (`whereRaw(\`status = '${req.body.s}'\`)`) was the canonical
538
- * SQL-injection vector flagged by the audit as Q-3.
545
+ * Brand for SQL fragments, such as the exported `raw` helper builds. Typed as
546
+ * `object` so the *Raw methods (`whereRaw`, `selectRaw`, `groupByRaw`,
547
+ * `havingRaw`, `orderByRaw`) refuse to compile when passed a bare string —
548
+ * concatenated user input (`whereRaw(\`status = '${req.body.s}'\`)`) was the
549
+ * canonical SQL-injection vector flagged by the audit as Q-3.
539
550
  *
540
- * Callers who legitimately need raw SQL use `sql\`...\`` which
541
- * separates the SQL fragment from parameter values:
551
+ * Callers who need raw SQL use `raw`, which escapes interpolated values, or
552
+ * bind them with `db.raw('...', [values])` in `where()` and `set()`. A Bun
553
+ * `sql\`...\`` query is not a fragment: on Postgres and MySQL its text cannot be
554
+ * read back, and the *Raw methods take no bindings.
542
555
  *
543
556
  * ```ts
544
- * import { sql } from 'bun'
545
- * db.selectFrom('users').whereRaw(sql\`lower(name) = lower(${input})\`)
557
+ * import { raw } from 'bun-query-builder'
558
+ * db.selectFrom('users').whereRaw(raw\`lower(name) = lower(${input})\`)
559
+ * db.selectFrom('users').where(db.raw('lower(name) = lower(?)', [input]))
546
560
  * ```
547
561
  *
548
562
  * The runtime guard in each *Raw method also rejects bare strings as
@@ -658,7 +672,7 @@ export type TypedSelectQueryBuilder<DB extends AnyDatabaseSchema, TTable extends
658
672
  ) => TypedSelectQueryBuilder<DB, TTable, TSelected, TJoined, `${TSql} WHERE ${K} = ?`>) & (<K extends keyof DB[TTable]['columns'] & string, OP extends WhereOperator>(
659
673
  expr: [K, OP, WhereValue<DB[TTable]['columns'][K]>],
660
674
  ) => TypedSelectQueryBuilder<DB, TTable, TSelected, TJoined, `${TSql} WHERE ${K} ${Uppercase<OP>} ${OP extends 'in' | 'not in' ? '(?)' : '?'}`>) & ((
661
- expr: WhereExpression<DB[TTable]['columns']> | string,
675
+ expr: WhereExpression<DB[TTable]['columns']> | string | BoundSqlFragment,
662
676
  op?: WhereOperator,
663
677
  value?: WhereValue<DB[TTable]['columns'][keyof DB[TTable]['columns'] & string]>,
664
678
  ) => TypedSelectQueryBuilder<DB, TTable, TSelected, TJoined, `${TSql} WHERE ${string}`>)
@@ -667,7 +681,7 @@ export type TypedSelectQueryBuilder<DB extends AnyDatabaseSchema, TTable extends
667
681
  ) => TypedSelectQueryBuilder<DB, TTable, TSelected, TJoined, `${TSql} AND ${K} = ?`>) & (<K extends keyof DB[TTable]['columns'] & string, OP extends WhereOperator>(
668
682
  expr: [K, OP, WhereValue<DB[TTable]['columns'][K]>],
669
683
  ) => TypedSelectQueryBuilder<DB, TTable, TSelected, TJoined, `${TSql} AND ${K} ${Uppercase<OP>} ${OP extends 'in' | 'not in' ? '(?)' : '?'}`>) & ((
670
- expr: WhereExpression<DB[TTable]['columns']> | string,
684
+ expr: WhereExpression<DB[TTable]['columns']> | string | BoundSqlFragment,
671
685
  op?: WhereOperator,
672
686
  value?: WhereValue<DB[TTable]['columns'][keyof DB[TTable]['columns'] & string]>,
673
687
  ) => TypedSelectQueryBuilder<DB, TTable, TSelected, TJoined, `${TSql} AND ${string}`>)
@@ -676,7 +690,7 @@ export type TypedSelectQueryBuilder<DB extends AnyDatabaseSchema, TTable extends
676
690
  ) => TypedSelectQueryBuilder<DB, TTable, TSelected, TJoined, `${TSql} OR ${K} = ?`>) & (<K extends keyof DB[TTable]['columns'] & string, OP extends WhereOperator>(
677
691
  expr: [K, OP, WhereValue<DB[TTable]['columns'][K]>],
678
692
  ) => TypedSelectQueryBuilder<DB, TTable, TSelected, TJoined, `${TSql} OR ${K} ${Uppercase<OP>} ${OP extends 'in' | 'not in' ? '(?)' : '?'}`>) & ((
679
- expr: WhereExpression<DB[TTable]['columns']> | string,
693
+ expr: WhereExpression<DB[TTable]['columns']> | string | BoundSqlFragment,
680
694
  op?: WhereOperator,
681
695
  value?: WhereValue<DB[TTable]['columns'][keyof DB[TTable]['columns'] & string]>,
682
696
  ) => TypedSelectQueryBuilder<DB, TTable, TSelected, TJoined, `${TSql} OR ${string}`>)
package/dist/index.d.ts CHANGED
@@ -1,7 +1,11 @@
1
1
  export type { DeferredInsert } from './sqlite-deferred-inserts';
2
2
  // Resolve ambiguous re-exports by explicitly choosing which module's version to use
3
3
  export type { WhereOperator } from './browser';
4
- export type { ModelQueryBuilder } from './dynamodb/index';
4
+ // The ORM builder that `createModel(...).query()` and `defineModel(...).query()`
5
+ // return. It was the DynamoDB interface, which only the dynamodb entry point
6
+ // should name that; it stays reachable here under an explicit alias.
7
+ export type { ModelQueryBuilder } from './orm';
8
+ export type { ModelQueryBuilder as DynamoDBModelQueryBuilder } from './dynamodb/index';
5
9
  export type { ColumnName, QueryBuilder } from './client';
6
10
  export type { ModelRecord } from './schema';
7
11
  export type { ModelDefinition as OrmModelDefinition, ModelStatic as OrmModelStatic } from './orm';
package/dist/model.d.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  import { createBrowserModel, type BrowserModelDefinition } from './browser';
2
+ import { type ModelStatic, type ModelDefinition as OrmModelDefinition } from './orm';
2
3
  // Re-export the browser model types for convenience
3
4
  export type { BrowserModelDefinition as ModelDefinition };
4
5
  /**
@@ -83,7 +84,7 @@ export declare function registerModel<TModel>(name: string, model: TModel): TMod
83
84
  * @param definition - The model definition
84
85
  * @returns An isomorphic model with query methods
85
86
  */
86
- export declare function defineModel<const TDef extends BrowserModelDefinition>(definition: TDef): unknown;
87
+ export declare function defineModel<const TDef extends BrowserModelDefinition>(definition: TDef): DefinedModel<TDef>;
87
88
  /**
88
89
  * Register models on the global window.StacksBrowser object.
89
90
  * Call this in your app's entry point to make models available for STX auto-imports.
@@ -99,3 +100,22 @@ export declare function defineModel<const TDef extends BrowserModelDefinition>(d
99
100
  * ```
100
101
  */
101
102
  export declare function registerBrowserModels(models: Record<string, unknown>): void;
103
+ /**
104
+ * The definition as the ORM types read it. A literal definition normally
105
+ * satisfies the ORM's `ModelDefinition` already, which keeps its column and
106
+ * relation names narrow; intersecting unconditionally would widen them.
107
+ */
108
+ declare type ServerModelDefinition<TDef> = TDef extends OrmModelDefinition ? TDef : TDef & OrmModelDefinition;
109
+ /**
110
+ * What `defineModel()` returns: the ORM model, plus the raw definition for
111
+ * build tools that introspect it.
112
+ *
113
+ * It used to be typed as the browser model even though the package root runs
114
+ * on Bun and hands back the ORM model. So `whereRaw`, `with`, `whereGroup`,
115
+ * `increment` and the aggregates worked but did not type-check. Browser code
116
+ * builds its models with `createBrowserModel` from `bun-query-builder/browser`.
117
+ */
118
+ export type DefinedModel<TDef extends BrowserModelDefinition> = ModelStatic<ServerModelDefinition<TDef>> & {
119
+ definition: TDef
120
+ getName: () => TDef['name']
121
+ }
package/dist/orm.d.ts CHANGED
@@ -547,7 +547,10 @@ export type ModelStatic<TDef extends ModelDefinition> = StaticWhereOverloads<TDe
547
547
  createMany: (items: FillableAttributes<TDef>[]) => Promise<ModelRecord<TDef>[]>
548
548
  updateOrCreate: (search: Partial<ModelAttributes<TDef>>, data: FillableAttributes<TDef>) => Promise<ModelRecord<TDef>>
549
549
  firstOrCreate: (search: Partial<ModelAttributes<TDef>>, data?: FillableAttributes<TDef>) => Promise<ModelRecord<TDef>>
550
+ update: (id: number | string, data: FillableAttributes<TDef>) => Promise<ModelRecord<TDef>>
551
+ delete: (id: number | string) => Promise<boolean>
550
552
  destroy: (id: number | string) => Promise<boolean>
553
+ forceDelete: (id: number | string) => Promise<boolean>
551
554
  remove: (id: number | string) => Promise<boolean>
552
555
  truncate: () => Promise<void>
553
556
  getDefinition: () => TDef
@@ -584,7 +587,7 @@ declare class DriverExecutor implements OrmExecutor {
584
587
  * Model instance - represents a single database record
585
588
  */
586
589
  declare class ModelInstance<TDef extends ModelDefinition, TSelected extends ColumnName<TDef> = ColumnName<TDef>> {
587
- constructor(definition: TDef, attributes?: Partial<ModelAttributes<TDef>>);
590
+ constructor(definition: TDef, attributes: Partial<ModelAttributes<TDef>>, exists: boolean);
588
591
  get<K extends TSelected>(key: K): K extends keyof ModelAttributes<TDef> ? ModelAttributes<TDef>[K] : never;
589
592
  getAttribute<K extends TSelected>(key: K): K extends keyof ModelAttributes<TDef> ? ModelAttributes<TDef>[K] : unknown;
590
593
  getAttributes(): Pick<ModelAttributes<TDef>, TSelected & keyof ModelAttributes<TDef>>;
@@ -602,10 +605,13 @@ declare class ModelInstance<TDef extends ModelDefinition, TSelected extends Colu
602
605
  getChanges(): Partial<InferModelAttributes<TDef>>;
603
606
  fill(data: FillableAttributes<TDef>): this;
604
607
  forceFill(data: Partial<InferModelAttributes<TDef>>): this;
608
+ _prepareInsert(): Promise<Record<string, unknown>>;
609
+ _markInserted(data: Record<string, unknown>, generatedKey?: unknown): Promise<void>;
605
610
  save(): Promise<this>;
606
611
  update(data: FillableAttributes<TDef>): Promise<this>;
607
612
  fresh(): Promise<ModelInstance<TDef, TSelected> | null>;
608
613
  delete(): Promise<boolean>;
614
+ forceDelete(): Promise<boolean>;
609
615
  restore(): Promise<this>;
610
616
  trashed(): boolean;
611
617
  refresh(): Promise<this | null>;
@@ -673,7 +679,11 @@ declare class ModelQueryBuilder<TDef extends ModelDefinition, TSelected extends
673
679
  orWhereLike<K extends ColumnName<TDef>>(column: K, pattern: string): ModelQueryBuilder<TDef, TSelected>;
674
680
  whereNotLike<K extends ColumnName<TDef>>(column: K, pattern: string): ModelQueryBuilder<TDef, TSelected>;
675
681
  orWhereNotLike<K extends ColumnName<TDef>>(column: K, pattern: string): ModelQueryBuilder<TDef, TSelected>;
682
+ whereRaw(fragment: string, bindings: readonly unknown[]): ModelQueryBuilder<TDef, TSelected>;
683
+ whereRaw(fragment: string, ...bindings: unknown[]): ModelQueryBuilder<TDef, TSelected>;
676
684
  whereRaw(fragment: string, ...params: unknown[]): ModelQueryBuilder<TDef, TSelected>;
685
+ orWhereRaw(fragment: string, bindings: readonly unknown[]): ModelQueryBuilder<TDef, TSelected>;
686
+ orWhereRaw(fragment: string, ...bindings: unknown[]): ModelQueryBuilder<TDef, TSelected>;
677
687
  orWhereRaw(fragment: string, ...params: unknown[]): ModelQueryBuilder<TDef, TSelected>;
678
688
  whereGroup(callback: (builder: ModelQueryBuilder<TDef, TSelected>) => unknown): ModelQueryBuilder<TDef, TSelected>;
679
689
  orWhereGroup(callback: (builder: ModelQueryBuilder<TDef, TSelected>) => unknown): ModelQueryBuilder<TDef, TSelected>;
@@ -683,6 +693,8 @@ declare class ModelQueryBuilder<TDef extends ModelDefinition, TSelected extends
683
693
  orderBy<K extends ColumnName<TDef>>(column: K, direction?: 'asc' | 'desc'): ModelQueryBuilder<TDef, TSelected>;
684
694
  orderByDesc<K extends ColumnName<TDef>>(column: K): ModelQueryBuilder<TDef, TSelected>;
685
695
  orderByAsc<K extends ColumnName<TDef>>(column: K): ModelQueryBuilder<TDef, TSelected>;
696
+ latest(column?: ColumnName<TDef>): ModelQueryBuilder<TDef, TSelected>;
697
+ oldest(column?: ColumnName<TDef>): ModelQueryBuilder<TDef, TSelected>;
686
698
  limit(count: number): ModelQueryBuilder<TDef, TSelected>;
687
699
  take(count: number): ModelQueryBuilder<TDef, TSelected>;
688
700
  offset(count: number): ModelQueryBuilder<TDef, TSelected>;
@@ -694,6 +706,8 @@ declare class ModelQueryBuilder<TDef extends ModelDefinition, TSelected extends
694
706
  get(): Promise<ModelRecord<TDef, TSelected>[]>;
695
707
  first(): Promise<ModelRecord<TDef, TSelected> | undefined>;
696
708
  firstOrFail(): Promise<ModelRecord<TDef, TSelected>>;
709
+ find(id: number | string): Promise<ModelRecord<TDef, TSelected> | undefined>;
710
+ findOrFail(id: number | string): Promise<ModelRecord<TDef, TSelected>>;
697
711
  last(): Promise<ModelRecord<TDef, TSelected> | undefined>;
698
712
  count(): Promise<number>;
699
713
  exists(): Promise<boolean>;
@@ -720,5 +734,6 @@ declare class ModelQueryBuilder<TDef extends ModelDefinition, TSelected extends
720
734
  avg<K extends NumericColumns<TDef>>(column: K): Promise<number>;
721
735
  sum<K extends NumericColumns<TDef>>(column: K): Promise<number>;
722
736
  delete(): Promise<number>;
737
+ forceDelete(): Promise<number>;
723
738
  update(data: Partial<Pick<InferModelAttributes<TDef>, FillableKeys<TDef>>>): Promise<number>;
724
739
  }
@@ -0,0 +1,19 @@
1
+ export type { AnyDatabaseSchema, DatabaseSchema, ModelRecord } from './schema';
2
+ export type {
3
+ DatabaseConfig,
4
+ QueryBuilderConfig,
5
+ QueryBuilderOptions,
6
+ QueryHooks,
7
+ SqliteConfig,
8
+ SupportedDialect,
9
+ } from './types';
10
+ /**
11
+ * Request-time SQL entrypoint.
12
+ *
13
+ * The package root also exposes migrations, seeders, generators, DynamoDB,
14
+ * browser models, factories, and CLI actions. HTTP servers that only build
15
+ * and execute SQL should not evaluate those modules during process startup.
16
+ */
17
+ export * from './client';
18
+ export * from './config';
19
+ export * from './sqlite-pragmas';
@@ -43,15 +43,29 @@ export declare function renderInPredicate(column: string, values: readonly unkno
43
43
  * application that developed against SQLite therefore finds out at the point
44
44
  * its raw queries first meet Postgres, and the error does not name the cause.
45
45
  *
46
- * Only unquoted placeholders are rewritten. A `?` inside a string literal, a
47
- * quoted identifier, or a dollar-quoted block is data and is left exactly as
48
- * written — the naive global replace is the reason this needs to be a function
49
- * with tests rather than one line at a call site.
46
+ * Only unquoted placeholders are rewritten; see {@link mapPlaceholders} for
47
+ * what counts as quoted. Postgres' jsonb `?`, `?|` and `?&` operators cannot be
48
+ * told apart from placeholders, so write them as `jsonb_exists(col, key)`,
49
+ * `jsonb_exists_any(col, keys)` and `jsonb_exists_all(col, keys)`.
50
50
  *
51
51
  * Dialects that already take `?` get the string back unchanged, so this is safe
52
52
  * to apply unconditionally.
53
53
  */
54
54
  export declare function toDialectPlaceholders(sql: string, dialect: SupportedDialect): string;
55
+ /**
56
+ * How many `?` placeholders `sql` binds, by the same rules as
57
+ * {@link toDialectPlaceholders}.
58
+ */
59
+ export declare function countPlaceholders(sql: string): number;
60
+ /* … *\/` block comments, which nest
61
+ *
62
+ * The ORM used a bare `sql.replace(/\?/g, …)`, so on Postgres
63
+ * `whereRaw("name = '?'")` was sent as `name = '$1'` and quietly matched nothing,
64
+ * and a `?` in a comment consumed a binding. The comment rules are the ones
65
+ * {@link scanTopLevelKeywords} uses; backslash escapes are not honoured, for the
66
+ * reason given there.
67
+ */
68
+ export declare function mapPlaceholders(sql: string, replace: (ordinal: number) => string | undefined): { text: string, count: number };
55
69
  /* … *\/` block comments, which nest
56
70
  * - `$$…$$` / `$tag$…$tag$` dollar-quoted strings, without mistaking a `$1`
57
71
  * placeholder for the start of one
@@ -1,2 +1,2 @@
1
1
  // @bun
2
- import{Gt,Jt,zt,h,Ve,He,Yt,Ne,Xt,xn}from"../chunk-7xvyccgk.js";export{Ve as BrowserQueryBuilder,h as BrowserQueryError,Xt as browserAuth,He as browserQuery,Gt as configureBrowser,Yt as createBrowserDb,Ne as createBrowserModel,xn as default,Jt as getBrowserConfig,zt as isBrowser};
2
+ import{en,tn,nn,g,ze,Ye,rn,Ie,sn,kn}from"../chunk-4cs1xx1d.js";export{ze as BrowserQueryBuilder,g as BrowserQueryError,sn as browserAuth,Ye as browserQuery,en as configureBrowser,rn as createBrowserDb,Ie as createBrowserModel,kn as default,tn as getBrowserConfig,nn as isBrowser};
@@ -1,2 +1,2 @@
1
1
  // @bun
2
- import{U,D,gt,_e,E,xe,Le,Ke,ve,pt,d,V,ke,Fe,yt,je,Ot,It}from"../../chunk-kwpppy92.js";export{U as DynamoDBClient,ke as DynamoDBMigrationDriver,V as DynamoDBMigrationTracker,je as EntityQueryBuilder,d as MIGRATIONS_TABLE,_e as Model,ve as buildDynamoDBMigrationPlan,gt as configureModels,Ke as convertSchemaToDefinition,D as createClient,It as createDynamo,Fe as createMigrationDriver,Ot as dynamo,Le as extractModelSchema,xe as extractTableDefinition,E as hashTableDefinition,pt as isDefinitionEqual,yt as migrateModels};
2
+ import{Q,E,wt,qe,x,ke,We,Ue,Ce,St,d,G,Re,Ve,Dt,He,jt,qt}from"../../chunk-3xpe6b57.js";export{Q as DynamoDBClient,Re as DynamoDBMigrationDriver,G as DynamoDBMigrationTracker,He as EntityQueryBuilder,d as MIGRATIONS_TABLE,qe as Model,Ce as buildDynamoDBMigrationPlan,wt as configureModels,Ue as convertSchemaToDefinition,E as createClient,qt as createDynamo,Ve as createMigrationDriver,jt as dynamo,We as extractModelSchema,ke as extractTableDefinition,x as hashTableDefinition,St as isDefinitionEqual,Dt as migrateModels};
package/dist/src/index.js CHANGED
@@ -1,2 +1,2 @@
1
1
  // @bun
2
- import{J,S,Zt,en,l,kt,Ct,i,Qe,Ge,z,Y,X,N,Z,ee,te,ne,B,re,P,O,ie,se,I,ae,oe,Je,Be,ze,v,le,a,ce,ue,de,fe,f,Ye,b,k,C,me,he,_,ge,L,pe,K,F,R,j,ye,be,Te,we,q,Se,De,T,m,tn,nn,rn,Xe,Ze,et,tt,nt,sn,rt,Rt,an,on,ln,cn,it,un,dn,fn,$e,u,st,at,ot,lt,ct,At,W,Ee,mn,hn,ut,Pe,g,Oe,Ie,Mt,gn,Nt,pn,dt,ft,mt,Bt,Pt}from"../chunk-1dv5caj0.js";import{ht,c,U,D,gt,_e,E,xe,Le,Ke,ve,pt,d,V,ke,Fe,yt,je,Ot,It}from"../chunk-kwpppy92.js";import{n,bt,e,H,t,s,Q,qe,yn,_t,Lt,G,bn,Ue,p,Kt,Ft,y,Tn,wt,St,Dt,$t,wn,Sn,Dn,Et,xt,$n,En,jt,qt,Wt,Ut,Vt,vt,Ht,Qt}from"../chunk-8pz2q01r.js";import{Gt,Jt,zt,h,Ve,He,Yt,Ne,Xt}from"../chunk-7xvyccgk.js";export{Et as BelongsToManyRelationBuilder,Ve as BrowserQueryBuilder,h as BrowserQueryError,_t as DEFAULT_SQLITE_PRAGMAS,U as DynamoDBClient,ht as DynamoDBDriverImpl,m as DynamoDBItemBuilder,ke as DynamoDBMigrationDriver,V as DynamoDBMigrationTracker,T as DynamoDBQueryBuilder,it as DynamoDBToolingAdapter,je as EntityQueryBuilder,ot as GENERATED_MARKER,d as MIGRATIONS_TABLE,_e as Model,a as MySQLDriver,ce as PostgresDriver,fe as SQLiteDriver,Nt as Seeder,ue as SingleStoreDriver,Xe as SingleTableManager,sn as SingleTablePatterns,et as SingleTableQueryBuilder,Ze as SingleTableRepository,g as UTC_CLOCK_DEFAULT,de as VitessDriver,G as applySqliteBootstrapPragmas,Bt as auditSchemaDrift,Xt as browserAuth,He as browserQuery,$e as buildDatabaseSchema,ve as buildDynamoDBMigrationPlan,W as buildMigrationPlan,st as buildSchemaMeta,z as cacheClear,X as cacheConfig,Y as cacheStats,Pe as canonicalStorageType,Oe as canonicalizeDefault,Se as checkSchema,St as clearLocalModels,Vt as clearModelRegistry,Qe as clearQueryCache,e as config,Gt as configureBrowser,gt as configureModels,wn as configureOrm,Ke as convertSchemaToDefinition,Yt as createBrowserDb,Ne as createBrowserModel,D as createClient,It as createDynamo,rn as createDynamoDBClient,c as createDynamoDBDriver,nn as createDynamoDBItemBuilder,tn as createDynamoDBQueryBuilder,un as createDynamoDBToolingAdapter,wt as createFakerCompatLayer,Fe as createMigrationDriver,xt as createModel,i as createQueryBuilder,nt as createRepository,tt as createSingleTableManager,$n as createTableFromModel,B as dbInfo,P as dbOptimize,re as dbStats,O as dbWipe,bt as defaultConfig,yn as defineConfig,Ht as defineModel,gn as defineModels,pn as defineSeeder,ne as dumpDatabase,Ot as dynamo,Ct as escapeStringLiteral,k as executeMigration,ie as explain,K as explainAllQueries,ee as exportData,Dt as extractChanges,$t as extractInsertId,Le as extractModelSchema,xe as extractTableDefinition,dt as familyOfDeclared,ft as familyOfSqlType,se as file,Pt as formatSchemaDrift,be as freshDatabase,dn as generateAccessPatterns,F as generateDiagram,Ie as generateDiffOperations,Mt as generateDiffSql,hn as generateDiffSqlString,b as generateMigration,ze as generateModelSource,Ee as generateSql,mn as generateSqlString,qt as getAllModels,Jt as getBrowserConfig,Q as getConfig,Dn as getDatabase,f as getDialectDriver,jt as getModel,Wt as getModelRegistry,t as getPlaceholder,s as getPlaceholders,Ut as hasModel,ut as hashMigrationPlan,E as hashTableDefinition,te as importData,Ft as inflectSingular,I as inspectTable,oe as introspect,v as introspectDatabase,zt as isBrowser,pt as isDefinitionEqual,lt as isGeneratedMigrationSql,At as isLosslessTypeChange,n as isMysqlLike,Zt as iterateAllPivots,at as lastCreatedMigrationFiles,u as loadModels,le as makeModel,ye as makeSeeder,ln as marshallObject,me as migrateGenerate,ge as migrateList,yt as migrateModels,he as migrateRollback,_ as migrateStatus,ct as migrationBody,Be as modelNameForTable,L as modelShow,P as optimizeDatabase,Rt as parseStacksModels,pe as ping,K as queryExplainAll,l as quoteColumnForDialect,en as raw,Qt as registerBrowserModels,vt as registerModel,F as relationDiagram,Sn as releaseOrm,bn as resetConnection,C as resetDatabase,H as resolveDialect,rt as resolveKeyPattern,S as resolvePivot,Lt as resolveSqlitePragmas,J as runBenchmark,j as runSeeder,R as runSeeders,mt as satisfies,Ye as saveMigrationSnapshot,En as seedModel,qe as setConfig,Ge as setQueryCacheMaxSize,L as showModel,y as singularizerFor,Te as sql,Je as sqlTypeToAttr,fn as stacksModelToEntity,N as startConsole,Kt as stripTrailingS,ae as tableInfo,p as tableNameFor,kt as temporalLiteral,Z as tinker,Tn as toDialectPlaceholders,an as toDynamoDBItem,on as toModelInstance,Ue as toTableName,cn as unmarshallItem,we as unsafe,q as validateSchema,De as waitReady,O as wipeDatabase};
2
+ import{J,z,Y,X,O,Z,ee,te,ne,_,re,I,L,ie,se,K,ae,oe,Xe,Le,Ze,k,le,a,ce,ue,de,fe,m,et,T,C,R,me,he,F,ge,j,pe,q,W,A,U,ye,be,Te,we,V,Se,De,w,h,an,on,ln,tt,nt,rt,it,st,cn,at,Pt,un,dn,fn,mn,ot,hn,gn,pn,$e,u,lt,ct,ut,dt,ft,Ot,H,Ee,yn,bn,mt,Ke,p,Fe,je,_t,Tn,It,wn,ht,gt,pt,Lt,Kt}from"../chunk-vw9ss7z8.js";import{D,Sn,Ft,l,yt,bt,i,xe,ve}from"../chunk-c7m701dd.js";import{Tt,c,Q,E,wt,qe,x,ke,We,Ue,Ce,St,d,G,Re,Ve,Dt,He,jt,qt}from"../chunk-3xpe6b57.js";import{$t,Et,xt,vt,Dn,$n,En,kt,Ct,xn,vn,Wt,Ut,Vt,Ht,Qt,Rt,Gt,Jt}from"../chunk-cxpaxq2p.js";import{n,Qe,e,B,t,s,P,Ne,zt,At,Mt,v,Yt,Pe,b,Xt,Zt,f,Je}from"../chunk-hjgcemhy.js";import{en,tn,nn,g,ze,Ye,rn,Ie,sn}from"../chunk-4cs1xx1d.js";export{kt as BelongsToManyRelationBuilder,ze as BrowserQueryBuilder,g as BrowserQueryError,At as DEFAULT_SQLITE_PRAGMAS,Q as DynamoDBClient,Tt as DynamoDBDriverImpl,h as DynamoDBItemBuilder,Re as DynamoDBMigrationDriver,G as DynamoDBMigrationTracker,w as DynamoDBQueryBuilder,ot as DynamoDBToolingAdapter,He as EntityQueryBuilder,ut as GENERATED_MARKER,d as MIGRATIONS_TABLE,qe as Model,a as MySQLDriver,ce as PostgresDriver,fe as SQLiteDriver,It as Seeder,ue as SingleStoreDriver,tt as SingleTableManager,cn as SingleTablePatterns,rt as SingleTableQueryBuilder,nt as SingleTableRepository,p as UTC_CLOCK_DEFAULT,de as VitessDriver,v as applySqliteBootstrapPragmas,Lt as auditSchemaDrift,sn as browserAuth,Ye as browserQuery,$e as buildDatabaseSchema,Ce as buildDynamoDBMigrationPlan,H as buildMigrationPlan,lt as buildSchemaMeta,z as cacheClear,X as cacheConfig,Y as cacheStats,Ke as canonicalStorageType,Fe as canonicalizeDefault,Se as checkSchema,Et as clearLocalModels,Qt as clearModelRegistry,xe as clearQueryCache,e as config,en as configureBrowser,wt as configureModels,Dn as configureOrm,Ue as convertSchemaToDefinition,rn as createBrowserDb,Ie as createBrowserModel,E as createClient,qt as createDynamo,ln as createDynamoDBClient,c as createDynamoDBDriver,on as createDynamoDBItemBuilder,an as createDynamoDBQueryBuilder,hn as createDynamoDBToolingAdapter,$t as createFakerCompatLayer,Ve as createMigrationDriver,Ct as createModel,i as createQueryBuilder,st as createRepository,it as createSingleTableManager,xn as createTableFromModel,_ as dbInfo,I as dbOptimize,re as dbStats,L as dbWipe,Qe as defaultConfig,zt as defineConfig,Gt as defineModel,Tn as defineModels,wn as defineSeeder,ne as dumpDatabase,jt as dynamo,bt as escapeStringLiteral,C as executeMigration,ie as explain,q as explainAllQueries,ee as exportData,xt as extractChanges,vt as extractInsertId,We as extractModelSchema,ke as extractTableDefinition,ht as familyOfDeclared,gt as familyOfSqlType,se as file,Kt as formatSchemaDrift,be as freshDatabase,gn as generateAccessPatterns,W as generateDiagram,je as generateDiffOperations,_t as generateDiffSql,bn as generateDiffSqlString,T as generateMigration,Ze as generateModelSource,Ee as generateSql,yn as generateSqlString,Ut as getAllModels,tn as getBrowserConfig,P as getConfig,En as getDatabase,m as getDialectDriver,Wt as getModel,Vt as getModelRegistry,t as getPlaceholder,s as getPlaceholders,Ht as hasModel,mt as hashMigrationPlan,x as hashTableDefinition,te as importData,Zt as inflectSingular,K as inspectTable,oe as introspect,k as introspectDatabase,nn as isBrowser,St as isDefinitionEqual,dt as isGeneratedMigrationSql,Ot as isLosslessTypeChange,n as isMysqlLike,Sn as iterateAllPivots,ct as lastCreatedMigrationFiles,u as loadModels,le as makeModel,ye as makeSeeder,fn as marshallObject,me as migrateGenerate,ge as migrateList,Dt as migrateModels,he as migrateRollback,F as migrateStatus,ft as migrationBody,Le as modelNameForTable,j as modelShow,I as optimizeDatabase,Pt as parseStacksModels,pe as ping,q as queryExplainAll,l as quoteColumnForDialect,Ft as raw,Jt as registerBrowserModels,Rt as registerModel,W as relationDiagram,$n as releaseOrm,Yt as resetConnection,R as resetDatabase,B as resolveDialect,at as resolveKeyPattern,D as resolvePivot,Mt as resolveSqlitePragmas,J as runBenchmark,U as runSeeder,A as runSeeders,pt as satisfies,et as saveMigrationSnapshot,vn as seedModel,Ne as setConfig,ve as setQueryCacheMaxSize,j as showModel,f as singularizerFor,Te as sql,Xe as sqlTypeToAttr,pn as stacksModelToEntity,O as startConsole,Xt as stripTrailingS,ae as tableInfo,b as tableNameFor,yt as temporalLiteral,Z as tinker,Je as toDialectPlaceholders,un as toDynamoDBItem,dn as toModelInstance,Pe as toTableName,mn as unmarshallItem,we as unsafe,V as validateSchema,De as waitReady,L as wipeDatabase};
@@ -0,0 +1,2 @@
1
+ // @bun
2
+ import{n,Qe,e,B,t,s,P,Ne,zt,At,Mt,v,Yt}from"../chunk-hjgcemhy.js";import{Ft,l,yt,bt,i,xe,ve}from"../chunk-c7m701dd.js";export{At as DEFAULT_SQLITE_PRAGMAS,v as applySqliteBootstrapPragmas,xe as clearQueryCache,e as config,i as createQueryBuilder,Qe as defaultConfig,zt as defineConfig,bt as escapeStringLiteral,P as getConfig,t as getPlaceholder,s as getPlaceholders,n as isMysqlLike,l as quoteColumnForDialect,Ft as raw,Yt as resetConnection,B as resolveDialect,Mt as resolveSqlitePragmas,Ne as setConfig,ve as setQueryCacheMaxSize,yt as temporalLiteral};
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "bun-query-builder",
3
3
  "type": "module",
4
- "version": "0.2.69",
4
+ "version": "0.3.0",
5
5
  "description": "A simple yet performant query builder for TypeScript. Built with Bun.",
6
6
  "author": "Chris Breuer <chris@stacksjs.org>",
7
7
  "license": "MIT",
@@ -28,6 +28,10 @@
28
28
  "types": "./dist/browser.d.ts",
29
29
  "import": "./dist/src/browser.js"
30
30
  },
31
+ "./runtime": {
32
+ "types": "./dist/runtime.d.ts",
33
+ "import": "./dist/src/runtime.js"
34
+ },
31
35
  "./dynamodb": {
32
36
  "types": "./dist/dynamodb/index.d.ts",
33
37
  "import": "./dist/src/dynamodb/index.js"
@@ -77,13 +81,13 @@
77
81
  "typecheck": "bun --bun tsc"
78
82
  },
79
83
  "dependencies": {
80
- "@stacksjs/clapp": "^0.2.12",
84
+ "@stacksjs/clapp": "^0.2.16",
81
85
  "@stacksjs/ts-faker": "^0.1.8",
82
86
  "@stacksjs/ts-validation": "^0.5.2",
83
- "dynamodb-tooling": "^0.3.5"
87
+ "dynamodb-tooling": "^0.3.6"
84
88
  },
85
89
  "devDependencies": {
86
- "bunfig": "^0.15.17"
90
+ "bunfig": "^0.15.19"
87
91
  },
88
92
  "git-hooks": {
89
93
  "pre-commit": {