bun-query-builder 0.1.15 → 0.1.16
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/actions/data.d.ts +0 -8
- package/dist/bin/cli.js +1462 -2819
- package/dist/browser.d.ts +6 -15
- package/dist/drivers/mysql.d.ts +1 -13
- package/dist/drivers/postgres.d.ts +1 -13
- package/dist/drivers/sqlite.d.ts +1 -13
- package/dist/dynamodb/migration-tracker.d.ts +4 -0
- package/dist/dynamodb-single-table.d.ts +14 -8
- package/dist/orm.d.ts +25 -3
- package/dist/src/browser.js +0 -1
- package/dist/src/dynamodb/index.js +0 -1
- package/dist/src/index.js +1388 -2743
- package/package.json +5 -5
- package/dist/__tests__/type-narrowing-compile.d.ts +0 -1
- package/dist/__tests__/type-narrowing.test.d.ts +0 -1
- package/dist/db.d.ts +0 -31
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 }) =>
|
|
65
|
+
async login: (credentials: { email: string, password: string }) => Promise<;
|
|
75
66
|
/**
|
|
76
67
|
* Register a new user
|
|
77
68
|
*/
|
|
78
|
-
async register: (data: { name: string, email: string, password: string }) =>
|
|
69
|
+
async register: (data: { name: string, email: string, password: string }) => Promise<;
|
|
79
70
|
/**
|
|
80
71
|
* Logout and clear token
|
|
81
72
|
*/
|
|
82
|
-
async logout: () =>
|
|
73
|
+
async logout: () => Promise<void>;
|
|
83
74
|
/**
|
|
84
75
|
* Get current authenticated user
|
|
85
76
|
*/
|
|
86
|
-
async user:
|
|
77
|
+
async user: unknown;
|
|
87
78
|
/**
|
|
88
79
|
* Check if user is authenticated
|
|
89
80
|
*/
|
|
90
|
-
async check: () =>
|
|
81
|
+
async check: () => Promise<boolean>;
|
|
91
82
|
/**
|
|
92
83
|
* Get the current token
|
|
93
84
|
*/
|
package/dist/drivers/mysql.d.ts
CHANGED
|
@@ -15,17 +15,5 @@ export declare interface DialectDriver {
|
|
|
15
15
|
recordMigrationQuery: () => string
|
|
16
16
|
}
|
|
17
17
|
export declare class MySQLDriver implements DialectDriver {
|
|
18
|
-
|
|
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
|
-
|
|
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
|
}
|
package/dist/drivers/sqlite.d.ts
CHANGED
|
@@ -15,17 +15,5 @@ export declare interface DialectDriver {
|
|
|
15
15
|
recordMigrationQuery: () => string
|
|
16
16
|
}
|
|
17
17
|
export declare class SQLiteDriver implements DialectDriver {
|
|
18
|
-
|
|
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) =>
|
|
16
|
+
* simpleEntity: (entityName: string, idField?: string) => SingleTableEntity,
|
|
17
17
|
* oneToMany: (parentEntity: string,
|
|
18
18
|
* childEntity: string,
|
|
19
19
|
* parentIdField?: string,
|
|
20
|
-
* childIdField?: string,) =>
|
|
20
|
+
* childIdField?: string,) => { parent: SingleTableEntity, child: SingleTableEntity },
|
|
21
21
|
* manyToMany: (entityName: string,
|
|
22
22
|
* relationName: string,
|
|
23
23
|
* idField?: string,
|
|
24
|
-
* relatedIdField?: string,) =>
|
|
25
|
-
* hierarchical: (entityName: string, rootIdField?: string, pathField?: string) =>
|
|
24
|
+
* relatedIdField?: string,) => { entity: SingleTableEntity, relation: SingleTableEntity },
|
|
25
|
+
* hierarchical: (entityName: string, rootIdField?: string, pathField?: string) => SingleTableEntity
|
|
26
26
|
* }
|
|
27
27
|
* ```
|
|
28
28
|
*/
|
|
@@ -32,26 +32,32 @@ 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) =>
|
|
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,
|
|
41
|
+
oneToMany: (parentEntity: string,
|
|
42
|
+
childEntity: string,
|
|
43
|
+
parentIdField?: string,
|
|
44
|
+
childIdField?: string,) => ;
|
|
42
45
|
/**
|
|
43
46
|
* Many-to-many relationship pattern using adjacency list
|
|
44
47
|
* Entity: PK=ENTITY#<entityId>, SK=METADATA
|
|
45
48
|
* Relationship: PK=ENTITY#<entityId>, SK=RELATED#<relatedId>
|
|
46
49
|
* Inverse: PK=ENTITY#<relatedId>, SK=RELATED#<entityId> (via GSI)
|
|
47
50
|
*/
|
|
48
|
-
manyToMany: (entityName: string,
|
|
51
|
+
manyToMany: (entityName: string,
|
|
52
|
+
relationName: string,
|
|
53
|
+
idField?: string,
|
|
54
|
+
relatedIdField?: string,) => ;
|
|
49
55
|
/**
|
|
50
56
|
* Hierarchical data pattern (e.g., org chart, file system)
|
|
51
57
|
* PK: ROOT#<rootId>
|
|
52
58
|
* SK: PATH#<path> (e.g., PATH#/folder1/folder2/file)
|
|
53
59
|
*/
|
|
54
|
-
hierarchical: (entityName: string, rootIdField?: string, pathField?: string) =>
|
|
60
|
+
hierarchical: (entityName: string, rootIdField?: string, pathField?: string) => SingleTableEntity
|
|
55
61
|
};
|
|
56
62
|
/**
|
|
57
63
|
* Entity definition for single table design
|
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 {
|
|
@@ -210,7 +215,12 @@ declare type WhereOperator = '=' | '!=' | '<' | '>' | '<=' | '>=' | 'like' | 'in
|
|
|
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>>;
|
|
223
|
+
toArray(): Record<string, unknown>;
|
|
214
224
|
getRelation(name: string): ModelInstance<any, any>[] | ModelInstance<any, any> | null | undefined;
|
|
215
225
|
setRelation(name: string, data: ModelInstance<any, any>[] | ModelInstance<any, any> | null): void;
|
|
216
226
|
getLoadedRelations(): Record<string, ModelInstance<any, any>[] | ModelInstance<any, any> | null>;
|
|
@@ -224,8 +234,9 @@ declare class ModelInstance<TDef extends ModelDefinition, TSelected extends Colu
|
|
|
224
234
|
forceFill(data: Partial<InferModelAttributes<TDef>>): this;
|
|
225
235
|
save(): this;
|
|
226
236
|
update(data: Partial<Pick<InferModelAttributes<TDef>, FillableKeys<TDef>>>): this;
|
|
237
|
+
fresh(): ModelInstance<TDef, TSelected> | null;
|
|
227
238
|
delete(): boolean;
|
|
228
|
-
refresh(): this;
|
|
239
|
+
refresh(): this | null;
|
|
229
240
|
replicate(): ModelInstance<TDef, TSelected>;
|
|
230
241
|
toJSON(): Omit<Pick<ModelAttributes<TDef>, TSelected & keyof ModelAttributes<TDef>>, HiddenKeys<TDef>>;
|
|
231
242
|
toArray(): Omit<Pick<ModelAttributes<TDef>, TSelected & keyof ModelAttributes<TDef>>, HiddenKeys<TDef>>;
|
|
@@ -242,10 +253,21 @@ declare class ModelQueryBuilder<TDef extends ModelDefinition, TSelected extends
|
|
|
242
253
|
orWhere<K extends ColumnName<TDef>>(column: K, operator: WhereOperator, value: K extends keyof ModelAttributes<TDef> ? ModelAttributes<TDef>[K] : unknown): ModelQueryBuilder<TDef, TSelected>;
|
|
243
254
|
orWhere<K extends ColumnName<TDef>>(column: K, operatorOrValue: WhereOperator | unknown, value?: unknown): ModelQueryBuilder<TDef, TSelected>;
|
|
244
255
|
whereIn<K extends ColumnName<TDef>>(column: K, values: (K extends keyof ModelAttributes<TDef> ? ModelAttributes<TDef>[K] : unknown)[]): ModelQueryBuilder<TDef, TSelected>;
|
|
256
|
+
orWhereIn<K extends ColumnName<TDef>>(column: K, values: (K extends keyof ModelAttributes<TDef> ? ModelAttributes<TDef>[K] : unknown)[]): ModelQueryBuilder<TDef, TSelected>;
|
|
245
257
|
whereNotIn<K extends ColumnName<TDef>>(column: K, values: (K extends keyof ModelAttributes<TDef> ? ModelAttributes<TDef>[K] : unknown)[]): ModelQueryBuilder<TDef, TSelected>;
|
|
258
|
+
orWhereNotIn<K extends ColumnName<TDef>>(column: K, values: (K extends keyof ModelAttributes<TDef> ? ModelAttributes<TDef>[K] : unknown)[]): ModelQueryBuilder<TDef, TSelected>;
|
|
246
259
|
whereNull<K extends ColumnName<TDef>>(column: K): ModelQueryBuilder<TDef, TSelected>;
|
|
260
|
+
orWhereNull<K extends ColumnName<TDef>>(column: K): ModelQueryBuilder<TDef, TSelected>;
|
|
247
261
|
whereNotNull<K extends ColumnName<TDef>>(column: K): ModelQueryBuilder<TDef, TSelected>;
|
|
262
|
+
orWhereNotNull<K extends ColumnName<TDef>>(column: K): ModelQueryBuilder<TDef, TSelected>;
|
|
248
263
|
whereLike<K extends ColumnName<TDef>>(column: K, pattern: string): ModelQueryBuilder<TDef, TSelected>;
|
|
264
|
+
orWhereLike<K extends ColumnName<TDef>>(column: K, pattern: string): ModelQueryBuilder<TDef, TSelected>;
|
|
265
|
+
whereNotLike<K extends ColumnName<TDef>>(column: K, pattern: string): ModelQueryBuilder<TDef, TSelected>;
|
|
266
|
+
orWhereNotLike<K extends ColumnName<TDef>>(column: K, pattern: string): ModelQueryBuilder<TDef, TSelected>;
|
|
267
|
+
whereRaw(fragment: string, ...params: unknown[]): ModelQueryBuilder<TDef, TSelected>;
|
|
268
|
+
orWhereRaw(fragment: string, ...params: unknown[]): ModelQueryBuilder<TDef, TSelected>;
|
|
269
|
+
whereGroup(callback: (builder: ModelQueryBuilder<TDef, TSelected>) => unknown): ModelQueryBuilder<TDef, TSelected>;
|
|
270
|
+
orWhereGroup(callback: (builder: ModelQueryBuilder<TDef, TSelected>) => unknown): ModelQueryBuilder<TDef, TSelected>;
|
|
249
271
|
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
272
|
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
273
|
when(condition: unknown, callback: (builder: ModelQueryBuilder<TDef, TSelected>) => ModelQueryBuilder<TDef, TSelected>): ModelQueryBuilder<TDef, TSelected>;
|
|
@@ -283,8 +305,8 @@ declare class ModelQueryBuilder<TDef extends ModelDefinition, TSelected extends
|
|
|
283
305
|
to: number | null
|
|
284
306
|
};
|
|
285
307
|
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;
|
|
308
|
+
max<K extends ColumnName<TDef>>(column: K): number | null;
|
|
309
|
+
min<K extends ColumnName<TDef>>(column: K): number | null;
|
|
288
310
|
avg<K extends NumericColumns<TDef>>(column: K): number;
|
|
289
311
|
sum<K extends NumericColumns<TDef>>(column: K): number;
|
|
290
312
|
delete(): number;
|
package/dist/src/browser.js
CHANGED