bun-query-builder 0.1.15 → 0.1.17

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/browser.d.ts CHANGED
@@ -56,38 +56,29 @@ export declare function createBrowserDb<Tables extends Record<string, any>>(): {
56
56
  export declare function createBrowserModel<const TDef extends BrowserModelDefinition>(definition: TDef): void;
57
57
  /**
58
58
  * Auth helpers for browser
59
- * @defaultValue
60
- * ```ts
61
- * {
62
- * async login: (credentials: { email: string, password: string }) => unknown,
63
- * async register: (data: { name: string, email: string, password: string }) => unknown,
64
- * async logout: () => unknown,
65
- * async user: () => unknown,
66
- * async check: () => unknown
67
- * }
68
- * ```
59
+ * @defaultValue `{ async login: () => unknown, async register: () => unknown }`
69
60
  */
70
61
  export declare const browserAuth: {
71
62
  /**
72
63
  * Login and store token
73
64
  */
74
- async login: (credentials: { email: string, password: string }) => unknown;
65
+ async login: (credentials: BrowserAuthCredentials) => Promise<BrowserAuthResult>;
75
66
  /**
76
67
  * Register a new user
77
68
  */
78
- async register: (data: { name: string, email: string, password: string }) => unknown;
69
+ async register: (data: BrowserAuthRegistrationData) => Promise<BrowserAuthResult>;
79
70
  /**
80
71
  * Logout and clear token
81
72
  */
82
- async logout: () => unknown;
73
+ async logout: () => Promise<void>;
83
74
  /**
84
75
  * Get current authenticated user
85
76
  */
86
- async user: () => unknown;
77
+ async user: unknown;
87
78
  /**
88
79
  * Check if user is authenticated
89
80
  */
90
- async check: () => unknown;
81
+ async check: () => Promise<boolean>;
91
82
  /**
92
83
  * Get the current token
93
84
  */
@@ -168,6 +159,17 @@ declare interface QueryState {
168
159
  selectColumns: string[]
169
160
  withRelations: string[]
170
161
  }
162
+ export declare interface BrowserAuthCredentials {
163
+ email: string
164
+ password: string
165
+ }
166
+ export declare interface BrowserAuthRegistrationData extends BrowserAuthCredentials {
167
+ name: string
168
+ }
169
+ export declare interface BrowserAuthResult {
170
+ user: Record<string, unknown>
171
+ token: string
172
+ }
171
173
  // Primitive type mappings
172
174
  declare type PrimitiveTypeMap = {
173
175
  string: string
@@ -256,7 +258,7 @@ declare type BrowserRelationNames<TDef> = | BrowserBelongsToNames<TDef>
256
258
  | BrowserHasOneThroughNames<TDef>
257
259
  | BrowserHasManyThroughNames<TDef>;
258
260
  // Types for query building
259
- export type WhereOperator = '=' | '!=' | '<' | '>' | '<=' | '>=' | 'like' | 'in' | 'not in' | 'is' | 'is not';
261
+ export type WhereOperator = '=' | '!=' | '<' | '>' | '<=' | '>=' | 'like' | 'not like' | 'in' | 'not in' | 'is' | 'is not';
260
262
  /**
261
263
  * Custom error class for browser query errors
262
264
  */
@@ -15,17 +15,5 @@ export declare interface DialectDriver {
15
15
  recordMigrationQuery: () => string
16
16
  }
17
17
  export declare class MySQLDriver implements DialectDriver {
18
- createEnumType(_enumTypeName: string, _values: string[]): string;
19
- createTable(table: TablePlan): string;
20
- createIndex(tableName: string, index: IndexPlan): string;
21
- addForeignKey(tableName: string, columnName: string, refTable: string, refColumn: string, onDelete?: string, onUpdate?: string): string;
22
- addColumn(tableName: string, column: ColumnPlan): string;
23
- modifyColumn(tableName: string, column: ColumnPlan): string;
24
- dropTable(tableName: string): string;
25
- dropColumn(tableName: string, columnName: string): string;
26
- dropIndex(tableName: string, indexName: string): string;
27
- dropEnumType(_enumTypeName: string): string;
28
- createMigrationsTable(): string;
29
- getExecutedMigrationsQuery(): string;
30
- recordMigrationQuery(): string;
18
+
31
19
  }
@@ -15,17 +15,5 @@ export declare interface DialectDriver {
15
15
  recordMigrationQuery: () => string
16
16
  }
17
17
  export declare class PostgresDriver implements DialectDriver {
18
- createEnumType(enumTypeName: string, values: string[]): string;
19
- createTable(table: TablePlan): string;
20
- createIndex(tableName: string, index: IndexPlan): string;
21
- addForeignKey(tableName: string, columnName: string, refTable: string, refColumn: string, onDelete?: string, onUpdate?: string): string;
22
- addColumn(tableName: string, column: ColumnPlan): string;
23
- modifyColumn(tableName: string, column: ColumnPlan): string;
24
- dropTable(tableName: string): string;
25
- dropColumn(tableName: string, columnName: string): string;
26
- dropIndex(tableName: string, indexName: string): string;
27
- dropEnumType(enumTypeName: string): string;
28
- createMigrationsTable(): string;
29
- getExecutedMigrationsQuery(): string;
30
- recordMigrationQuery(): string;
18
+
31
19
  }
@@ -15,17 +15,5 @@ export declare interface DialectDriver {
15
15
  recordMigrationQuery: () => string
16
16
  }
17
17
  export declare class SQLiteDriver implements DialectDriver {
18
- createEnumType(_enumTypeName: string, _values: string[]): string;
19
- createTable(table: TablePlan): string;
20
- createIndex(tableName: string, index: IndexPlan): string;
21
- addForeignKey(tableName: string, columnName: string, refTable: string, refColumn: string, onDelete?: string, onUpdate?: string): string;
22
- addColumn(tableName: string, column: ColumnPlan): string;
23
- modifyColumn(tableName: string, column: ColumnPlan): string;
24
- dropTable(tableName: string): string;
25
- dropColumn(tableName: string, columnName: string): string;
26
- dropIndex(tableName: string, indexName: string): string;
27
- dropEnumType(_enumTypeName: string): string;
28
- createMigrationsTable(): string;
29
- getExecutedMigrationsQuery(): string;
30
- recordMigrationQuery(): string;
18
+
31
19
  }
@@ -1,6 +1,10 @@
1
1
  import { DynamoDBClient } from './client';
2
2
  import type { DynamoDBMigrationState } from './migrations';
3
3
  import type { DynamoDBTableDefinition } from '../drivers/dynamodb';
4
+ // ============================================================================
5
+ // Constants
6
+ // ============================================================================
7
+ declare const MIGRATIONS_TABLE: '_qb_migrations';
4
8
  /**
5
9
  * Tracks and manages DynamoDB migration state
6
10
  */
@@ -13,16 +13,16 @@ export declare function createRepository<T extends Record<string, any>>(manager:
13
13
  * @defaultValue
14
14
  * ```ts
15
15
  * {
16
- * simpleEntity: (entityName: string, idField?: string) => unknown,
16
+ * simpleEntity: (entityName: string, idField?: string) => SingleTableEntity,
17
17
  * oneToMany: (parentEntity: string,
18
18
  * childEntity: string,
19
19
  * parentIdField?: string,
20
- * childIdField?: string,) => unknown,
20
+ * childIdField?: string,) => OneToManyPattern,
21
21
  * manyToMany: (entityName: string,
22
22
  * relationName: string,
23
23
  * idField?: string,
24
- * relatedIdField?: string,) => unknown,
25
- * hierarchical: (entityName: string, rootIdField?: string, pathField?: string) => unknown
24
+ * relatedIdField?: string,) => ManyToManyPattern,
25
+ * hierarchical: (entityName: string, rootIdField?: string, pathField?: string) => SingleTableEntity
26
26
  * }
27
27
  * ```
28
28
  */
@@ -32,26 +32,26 @@ export declare const SingleTablePatterns: {
32
32
  * PK: USER#<userId>
33
33
  * SK: PROFILE for metadata, or related items like ORDER#<orderId>
34
34
  */
35
- simpleEntity: (entityName: string, idField?: string) => unknown;
35
+ simpleEntity: (entityName: string, idField?: string) => SingleTableEntity;
36
36
  /**
37
37
  * One-to-many relationship pattern
38
38
  * Parent: PK=PARENT#<parentId>, SK=METADATA
39
39
  * Child: PK=PARENT#<parentId>, SK=CHILD#<childId>
40
40
  */
41
- oneToMany: (parentEntity: string, childEntity: string, parentIdField?: string, childIdField?: string,) => unknown;
41
+ oneToMany: (parentEntity: string, childEntity: string, parentIdField?: string, childIdField?: string,) => OneToManyPattern;
42
42
  /**
43
43
  * Many-to-many relationship pattern using adjacency list
44
44
  * Entity: PK=ENTITY#<entityId>, SK=METADATA
45
45
  * Relationship: PK=ENTITY#<entityId>, SK=RELATED#<relatedId>
46
46
  * Inverse: PK=ENTITY#<relatedId>, SK=RELATED#<entityId> (via GSI)
47
47
  */
48
- manyToMany: (entityName: string, relationName: string, idField?: string, relatedIdField?: string,) => unknown;
48
+ manyToMany: (entityName: string, relationName: string, idField?: string, relatedIdField?: string,) => ManyToManyPattern;
49
49
  /**
50
50
  * Hierarchical data pattern (e.g., org chart, file system)
51
51
  * PK: ROOT#<rootId>
52
52
  * SK: PATH#<path> (e.g., PATH#/folder1/folder2/file)
53
53
  */
54
- hierarchical: (entityName: string, rootIdField?: string, pathField?: string) => unknown
54
+ hierarchical: (entityName: string, rootIdField?: string, pathField?: string) => SingleTableEntity
55
55
  };
56
56
  /**
57
57
  * Entity definition for single table design
@@ -86,6 +86,14 @@ export declare interface SingleTableConfig {
86
86
  }[]
87
87
  entities: SingleTableEntity[]
88
88
  }
89
+ export declare interface OneToManyPattern {
90
+ parent: SingleTableEntity
91
+ child: SingleTableEntity
92
+ }
93
+ export declare interface ManyToManyPattern {
94
+ entity: SingleTableEntity
95
+ relation: SingleTableEntity
96
+ }
89
97
  /**
90
98
  * Single Table Design Manager
91
99
  *
package/dist/orm.d.ts CHANGED
@@ -41,6 +41,11 @@ export declare interface TypedAttribute<T = unknown> {
41
41
  // eslint-disable-next-line ts/no-empty-object-type
42
42
  export declare interface ModelHookInstance extends Record<string, unknown> {
43
43
  get(key: string): unknown
44
+ getAttribute?(key: string): unknown
45
+ getAttributes?(): Record<string, unknown>
46
+ only?(keys: ReadonlyArray<string>): Record<string, unknown>
47
+ except?(keys: ReadonlyArray<string>): Record<string, unknown>
48
+ toArray?(): Record<string, unknown>
44
49
  }
45
50
  // Base model definition
46
51
  export declare interface ModelDefinition {
@@ -203,14 +208,18 @@ export type InferRelationNames<TDef> = | InferBelongsToNames<TDef>
203
208
  | InferBelongsToManyNames<TDef>
204
209
  | InferHasOneThroughNames<TDef>
205
210
  | InferHasManyThroughNames<TDef>;
206
- declare type WhereOperator = '=' | '!=' | '<' | '>' | '<=' | '>=' | 'like' | 'in' | 'not in';
211
+ declare type WhereOperator = '=' | '!=' | '<' | '>' | '<=' | '>=' | 'like' | 'not like' | 'in' | 'not in';
207
212
  /**
208
213
  * Model instance - represents a single database record
209
214
  */
210
215
  declare class ModelInstance<TDef extends ModelDefinition, TSelected extends ColumnName<TDef> = ColumnName<TDef>> {
211
216
  constructor(definition: TDef, attributes?: Partial<ModelAttributes<TDef>>);
212
217
  get<K extends TSelected>(key: K): K extends keyof ModelAttributes<TDef> ? ModelAttributes<TDef>[K] : never;
218
+ getAttribute<K extends TSelected>(key: K): K extends keyof ModelAttributes<TDef> ? ModelAttributes<TDef>[K] : unknown;
219
+ getAttributes(): Pick<ModelAttributes<TDef>, TSelected & keyof ModelAttributes<TDef>>;
213
220
  set<K extends ColumnName<TDef>>(key: K, value: K extends keyof ModelAttributes<TDef> ? ModelAttributes<TDef>[K] : unknown): void;
221
+ only<K extends TSelected>(keys: ReadonlyArray<K>): Partial<ModelAttributes<TDef>>;
222
+ except<K extends TSelected>(keys: ReadonlyArray<K>): Partial<ModelAttributes<TDef>>;
214
223
  getRelation(name: string): ModelInstance<any, any>[] | ModelInstance<any, any> | null | undefined;
215
224
  setRelation(name: string, data: ModelInstance<any, any>[] | ModelInstance<any, any> | null): void;
216
225
  getLoadedRelations(): Record<string, ModelInstance<any, any>[] | ModelInstance<any, any> | null>;
@@ -224,8 +233,9 @@ declare class ModelInstance<TDef extends ModelDefinition, TSelected extends Colu
224
233
  forceFill(data: Partial<InferModelAttributes<TDef>>): this;
225
234
  save(): this;
226
235
  update(data: Partial<Pick<InferModelAttributes<TDef>, FillableKeys<TDef>>>): this;
236
+ fresh(): ModelInstance<TDef, TSelected> | null;
227
237
  delete(): boolean;
228
- refresh(): this;
238
+ refresh(): this | null;
229
239
  replicate(): ModelInstance<TDef, TSelected>;
230
240
  toJSON(): Omit<Pick<ModelAttributes<TDef>, TSelected & keyof ModelAttributes<TDef>>, HiddenKeys<TDef>>;
231
241
  toArray(): Omit<Pick<ModelAttributes<TDef>, TSelected & keyof ModelAttributes<TDef>>, HiddenKeys<TDef>>;
@@ -242,10 +252,21 @@ declare class ModelQueryBuilder<TDef extends ModelDefinition, TSelected extends
242
252
  orWhere<K extends ColumnName<TDef>>(column: K, operator: WhereOperator, value: K extends keyof ModelAttributes<TDef> ? ModelAttributes<TDef>[K] : unknown): ModelQueryBuilder<TDef, TSelected>;
243
253
  orWhere<K extends ColumnName<TDef>>(column: K, operatorOrValue: WhereOperator | unknown, value?: unknown): ModelQueryBuilder<TDef, TSelected>;
244
254
  whereIn<K extends ColumnName<TDef>>(column: K, values: (K extends keyof ModelAttributes<TDef> ? ModelAttributes<TDef>[K] : unknown)[]): ModelQueryBuilder<TDef, TSelected>;
255
+ orWhereIn<K extends ColumnName<TDef>>(column: K, values: (K extends keyof ModelAttributes<TDef> ? ModelAttributes<TDef>[K] : unknown)[]): ModelQueryBuilder<TDef, TSelected>;
245
256
  whereNotIn<K extends ColumnName<TDef>>(column: K, values: (K extends keyof ModelAttributes<TDef> ? ModelAttributes<TDef>[K] : unknown)[]): ModelQueryBuilder<TDef, TSelected>;
257
+ orWhereNotIn<K extends ColumnName<TDef>>(column: K, values: (K extends keyof ModelAttributes<TDef> ? ModelAttributes<TDef>[K] : unknown)[]): ModelQueryBuilder<TDef, TSelected>;
246
258
  whereNull<K extends ColumnName<TDef>>(column: K): ModelQueryBuilder<TDef, TSelected>;
259
+ orWhereNull<K extends ColumnName<TDef>>(column: K): ModelQueryBuilder<TDef, TSelected>;
247
260
  whereNotNull<K extends ColumnName<TDef>>(column: K): ModelQueryBuilder<TDef, TSelected>;
261
+ orWhereNotNull<K extends ColumnName<TDef>>(column: K): ModelQueryBuilder<TDef, TSelected>;
248
262
  whereLike<K extends ColumnName<TDef>>(column: K, pattern: string): ModelQueryBuilder<TDef, TSelected>;
263
+ orWhereLike<K extends ColumnName<TDef>>(column: K, pattern: string): ModelQueryBuilder<TDef, TSelected>;
264
+ whereNotLike<K extends ColumnName<TDef>>(column: K, pattern: string): ModelQueryBuilder<TDef, TSelected>;
265
+ orWhereNotLike<K extends ColumnName<TDef>>(column: K, pattern: string): ModelQueryBuilder<TDef, TSelected>;
266
+ whereRaw(fragment: string, ...params: unknown[]): ModelQueryBuilder<TDef, TSelected>;
267
+ orWhereRaw(fragment: string, ...params: unknown[]): ModelQueryBuilder<TDef, TSelected>;
268
+ whereGroup(callback: (builder: ModelQueryBuilder<TDef, TSelected>) => unknown): ModelQueryBuilder<TDef, TSelected>;
269
+ orWhereGroup(callback: (builder: ModelQueryBuilder<TDef, TSelected>) => unknown): ModelQueryBuilder<TDef, TSelected>;
249
270
  whereBetween<K extends ColumnName<TDef>>(column: K, range: [min: K extends keyof ModelAttributes<TDef> ? ModelAttributes<TDef>[K] : unknown, max: K extends keyof ModelAttributes<TDef> ? ModelAttributes<TDef>[K] : unknown]): ModelQueryBuilder<TDef, TSelected>;
250
271
  whereNotBetween<K extends ColumnName<TDef>>(column: K, range: [min: K extends keyof ModelAttributes<TDef> ? ModelAttributes<TDef>[K] : unknown, max: K extends keyof ModelAttributes<TDef> ? ModelAttributes<TDef>[K] : unknown]): ModelQueryBuilder<TDef, TSelected>;
251
272
  when(condition: unknown, callback: (builder: ModelQueryBuilder<TDef, TSelected>) => ModelQueryBuilder<TDef, TSelected>): ModelQueryBuilder<TDef, TSelected>;
@@ -283,8 +304,8 @@ declare class ModelQueryBuilder<TDef extends ModelDefinition, TSelected extends
283
304
  to: number | null
284
305
  };
285
306
  pluck<K extends ColumnName<TDef>>(column: K): (K extends keyof ModelAttributes<TDef> ? ModelAttributes<TDef>[K] : unknown)[];
286
- max<K extends ColumnName<TDef>>(column: K): number;
287
- min<K extends ColumnName<TDef>>(column: K): number;
307
+ max<K extends ColumnName<TDef>>(column: K): number | null;
308
+ min<K extends ColumnName<TDef>>(column: K): number | null;
288
309
  avg<K extends NumericColumns<TDef>>(column: K): number;
289
310
  sum<K extends NumericColumns<TDef>>(column: K): number;
290
311
  delete(): number;
@@ -37,7 +37,6 @@ var __export = (target, all) => {
37
37
  });
38
38
  };
39
39
  var __esm = (fn, res) => () => (fn && (res = fn(fn = 0)), res);
40
- var __promiseAll = (args) => Promise.all(args);
41
40
  var __require = import.meta.require;
42
41
 
43
42
  // src/browser.ts
@@ -37,7 +37,6 @@ var __export = (target, all) => {
37
37
  });
38
38
  };
39
39
  var __esm = (fn, res) => () => (fn && (res = fn(fn = 0)), res);
40
- var __promiseAll = (args) => Promise.all(args);
41
40
  var __require = import.meta.require;
42
41
 
43
42
  // src/drivers/dynamodb.ts