@anfenn/dync 1.0.7 → 1.0.9
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/{chunk-PCA4XM2N.js → chunk-MOYMEJP5.js} +50 -160
- package/dist/chunk-MOYMEJP5.js.map +1 -0
- package/dist/{dexie-1_xyU5MV.d.cts → dexie-BqktVP7s.d.cts} +5 -9
- package/dist/{dexie-ChZ0o0Sz.d.ts → dexie-DRLMKLl5.d.ts} +5 -9
- package/dist/dexie.cjs +1 -7
- package/dist/dexie.cjs.map +1 -1
- package/dist/dexie.d.cts +1 -1
- package/dist/dexie.d.ts +1 -1
- package/dist/dexie.js +1 -7
- package/dist/dexie.js.map +1 -1
- package/dist/index.cjs +49 -159
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +2 -2
- package/dist/index.d.ts +2 -2
- package/dist/index.js +1 -1
- package/dist/{index.shared-DsDBNWlz.d.cts → index.shared-C8JTfet7.d.cts} +1 -1
- package/dist/{index.shared-Byhq6TyU.d.ts → index.shared-DajtjVW7.d.ts} +1 -1
- package/dist/react/index.d.cts +2 -2
- package/dist/react/index.d.ts +2 -2
- package/dist/react/index.js +1 -1
- package/package.json +1 -1
- package/src/storage/dexie/DexieTable.ts +2 -9
- package/src/storage/memory/MemoryTable.ts +3 -8
- package/src/storage/memory/MemoryWhereClause.ts +5 -5
- package/src/storage/sqlite/SQLiteTable.ts +3 -8
- package/src/storage/sqlite/SQLiteWhereClause.ts +41 -153
- package/src/storage/sqlite/helpers.ts +0 -6
- package/src/storage/sqlite/types.ts +1 -8
- package/src/storage/types.ts +1 -3
- package/dist/chunk-PCA4XM2N.js.map +0 -1
|
@@ -100,9 +100,9 @@ declare class MemoryCollection<T extends MemoryRecord = MemoryRecord> implements
|
|
|
100
100
|
|
|
101
101
|
declare class MemoryWhereClause<T extends MemoryRecord = MemoryRecord> implements StorageWhereClause<T> {
|
|
102
102
|
private readonly table;
|
|
103
|
-
private readonly
|
|
103
|
+
private readonly column;
|
|
104
104
|
private readonly baseCollection?;
|
|
105
|
-
constructor(table: MemoryTable<T>,
|
|
105
|
+
constructor(table: MemoryTable<T>, column: string, baseCollection?: MemoryCollection<T>);
|
|
106
106
|
equals(value: any): StorageCollection<T>;
|
|
107
107
|
above(value: any): StorageCollection<T>;
|
|
108
108
|
aboveOrEqual(value: any): StorageCollection<T>;
|
|
@@ -135,7 +135,6 @@ declare class MemoryTable<T extends MemoryRecord = MemoryRecord> implements Stor
|
|
|
135
135
|
readonly name: string;
|
|
136
136
|
readonly schema: unknown;
|
|
137
137
|
readonly primaryKey: unknown;
|
|
138
|
-
readonly hook: unknown;
|
|
139
138
|
readonly raw: {
|
|
140
139
|
add: (item: T) => Promise<string>;
|
|
141
140
|
put: (item: T) => Promise<string>;
|
|
@@ -174,17 +173,16 @@ declare class MemoryTable<T extends MemoryRecord = MemoryRecord> implements Stor
|
|
|
174
173
|
private baseBulkUpdate;
|
|
175
174
|
bulkDelete(keys: string[]): Promise<void>;
|
|
176
175
|
private baseBulkDelete;
|
|
177
|
-
where(index: string
|
|
176
|
+
where(index: string): StorageWhereClause<T>;
|
|
178
177
|
orderBy(index: string | string[]): StorageCollection<T>;
|
|
179
178
|
reverse(): StorageCollection<T>;
|
|
180
179
|
offset(offset: number): StorageCollection<T>;
|
|
181
180
|
limit(count: number): StorageCollection<T>;
|
|
182
|
-
mapToClass(_ctor: new (...args: any[]) => any): StorageTable<T>;
|
|
183
181
|
each(callback: (item: T) => void | Promise<void>): Promise<void>;
|
|
184
182
|
jsFilter(predicate: (item: T) => boolean): StorageCollection<T>;
|
|
185
183
|
private createCollection;
|
|
186
184
|
createCollectionFromPredicate(predicate: (record: T, key: string) => boolean, template?: MemoryCollection<T>): MemoryCollection<T>;
|
|
187
|
-
createWhereClause(
|
|
185
|
+
createWhereClause(column: string, baseCollection?: MemoryCollection<T>): MemoryWhereClause<T>;
|
|
188
186
|
entries(): Array<[string, T]>;
|
|
189
187
|
cloneRecord(record: T): T;
|
|
190
188
|
deleteByKey(key: string): void;
|
|
@@ -387,7 +385,6 @@ type AddItem<T> = Omit<T, '_localId'> & {
|
|
|
387
385
|
interface StorageTable<T = any> {
|
|
388
386
|
readonly name: string;
|
|
389
387
|
readonly schema: unknown;
|
|
390
|
-
readonly hook: unknown;
|
|
391
388
|
add(item: AddItem<T>): Promise<string>;
|
|
392
389
|
put(item: T): Promise<string>;
|
|
393
390
|
update(key: string, changes: Partial<T>): Promise<number>;
|
|
@@ -404,12 +401,11 @@ interface StorageTable<T = any> {
|
|
|
404
401
|
changes: Partial<T>;
|
|
405
402
|
}>): Promise<number>;
|
|
406
403
|
bulkDelete(keys: string[]): Promise<void>;
|
|
407
|
-
where(index: string
|
|
404
|
+
where(index: string): StorageWhereClause<T>;
|
|
408
405
|
orderBy(index: string | string[]): StorageCollection<T>;
|
|
409
406
|
reverse(): StorageCollection<T>;
|
|
410
407
|
offset(offset: number): StorageCollection<T>;
|
|
411
408
|
limit(count: number): StorageCollection<T>;
|
|
412
|
-
mapToClass(ctor: new (...args: any[]) => any): StorageTable<T>;
|
|
413
409
|
each(callback: (item: T) => void | Promise<void>): Promise<void>;
|
|
414
410
|
jsFilter(predicate: (item: T) => boolean): StorageCollection<T>;
|
|
415
411
|
readonly raw: {
|
|
@@ -100,9 +100,9 @@ declare class MemoryCollection<T extends MemoryRecord = MemoryRecord> implements
|
|
|
100
100
|
|
|
101
101
|
declare class MemoryWhereClause<T extends MemoryRecord = MemoryRecord> implements StorageWhereClause<T> {
|
|
102
102
|
private readonly table;
|
|
103
|
-
private readonly
|
|
103
|
+
private readonly column;
|
|
104
104
|
private readonly baseCollection?;
|
|
105
|
-
constructor(table: MemoryTable<T>,
|
|
105
|
+
constructor(table: MemoryTable<T>, column: string, baseCollection?: MemoryCollection<T>);
|
|
106
106
|
equals(value: any): StorageCollection<T>;
|
|
107
107
|
above(value: any): StorageCollection<T>;
|
|
108
108
|
aboveOrEqual(value: any): StorageCollection<T>;
|
|
@@ -135,7 +135,6 @@ declare class MemoryTable<T extends MemoryRecord = MemoryRecord> implements Stor
|
|
|
135
135
|
readonly name: string;
|
|
136
136
|
readonly schema: unknown;
|
|
137
137
|
readonly primaryKey: unknown;
|
|
138
|
-
readonly hook: unknown;
|
|
139
138
|
readonly raw: {
|
|
140
139
|
add: (item: T) => Promise<string>;
|
|
141
140
|
put: (item: T) => Promise<string>;
|
|
@@ -174,17 +173,16 @@ declare class MemoryTable<T extends MemoryRecord = MemoryRecord> implements Stor
|
|
|
174
173
|
private baseBulkUpdate;
|
|
175
174
|
bulkDelete(keys: string[]): Promise<void>;
|
|
176
175
|
private baseBulkDelete;
|
|
177
|
-
where(index: string
|
|
176
|
+
where(index: string): StorageWhereClause<T>;
|
|
178
177
|
orderBy(index: string | string[]): StorageCollection<T>;
|
|
179
178
|
reverse(): StorageCollection<T>;
|
|
180
179
|
offset(offset: number): StorageCollection<T>;
|
|
181
180
|
limit(count: number): StorageCollection<T>;
|
|
182
|
-
mapToClass(_ctor: new (...args: any[]) => any): StorageTable<T>;
|
|
183
181
|
each(callback: (item: T) => void | Promise<void>): Promise<void>;
|
|
184
182
|
jsFilter(predicate: (item: T) => boolean): StorageCollection<T>;
|
|
185
183
|
private createCollection;
|
|
186
184
|
createCollectionFromPredicate(predicate: (record: T, key: string) => boolean, template?: MemoryCollection<T>): MemoryCollection<T>;
|
|
187
|
-
createWhereClause(
|
|
185
|
+
createWhereClause(column: string, baseCollection?: MemoryCollection<T>): MemoryWhereClause<T>;
|
|
188
186
|
entries(): Array<[string, T]>;
|
|
189
187
|
cloneRecord(record: T): T;
|
|
190
188
|
deleteByKey(key: string): void;
|
|
@@ -387,7 +385,6 @@ type AddItem<T> = Omit<T, '_localId'> & {
|
|
|
387
385
|
interface StorageTable<T = any> {
|
|
388
386
|
readonly name: string;
|
|
389
387
|
readonly schema: unknown;
|
|
390
|
-
readonly hook: unknown;
|
|
391
388
|
add(item: AddItem<T>): Promise<string>;
|
|
392
389
|
put(item: T): Promise<string>;
|
|
393
390
|
update(key: string, changes: Partial<T>): Promise<number>;
|
|
@@ -404,12 +401,11 @@ interface StorageTable<T = any> {
|
|
|
404
401
|
changes: Partial<T>;
|
|
405
402
|
}>): Promise<number>;
|
|
406
403
|
bulkDelete(keys: string[]): Promise<void>;
|
|
407
|
-
where(index: string
|
|
404
|
+
where(index: string): StorageWhereClause<T>;
|
|
408
405
|
orderBy(index: string | string[]): StorageCollection<T>;
|
|
409
406
|
reverse(): StorageCollection<T>;
|
|
410
407
|
offset(offset: number): StorageCollection<T>;
|
|
411
408
|
limit(count: number): StorageCollection<T>;
|
|
412
|
-
mapToClass(ctor: new (...args: any[]) => any): StorageTable<T>;
|
|
413
409
|
each(callback: (item: T) => void | Promise<void>): Promise<void>;
|
|
414
410
|
jsFilter(predicate: (item: T) => boolean): StorageCollection<T>;
|
|
415
411
|
readonly raw: {
|
package/dist/dexie.cjs
CHANGED
|
@@ -228,7 +228,6 @@ var DexieTable = class {
|
|
|
228
228
|
name;
|
|
229
229
|
schema;
|
|
230
230
|
primaryKey;
|
|
231
|
-
hook;
|
|
232
231
|
raw = Object.freeze({
|
|
233
232
|
add: (item) => this.table.add(item),
|
|
234
233
|
put: (item) => this.table.put(item),
|
|
@@ -247,7 +246,6 @@ var DexieTable = class {
|
|
|
247
246
|
this.name = table.name;
|
|
248
247
|
this.schema = table.schema;
|
|
249
248
|
this.primaryKey = table.schema?.primKey;
|
|
250
|
-
this.hook = table.hook;
|
|
251
249
|
}
|
|
252
250
|
add(item) {
|
|
253
251
|
return this.table.add(item);
|
|
@@ -289,7 +287,7 @@ var DexieTable = class {
|
|
|
289
287
|
return this.table.bulkDelete(keys);
|
|
290
288
|
}
|
|
291
289
|
where(index) {
|
|
292
|
-
return new DexieWhereClause(this.table.where(
|
|
290
|
+
return new DexieWhereClause(this.table.where(index));
|
|
293
291
|
}
|
|
294
292
|
orderBy(index) {
|
|
295
293
|
return new DexieCollection(this.table.orderBy(normalizeIndexName(index)));
|
|
@@ -303,10 +301,6 @@ var DexieTable = class {
|
|
|
303
301
|
limit(count) {
|
|
304
302
|
return new DexieCollection(this.table.limit(count));
|
|
305
303
|
}
|
|
306
|
-
mapToClass(ctor) {
|
|
307
|
-
this.table.mapToClass(ctor);
|
|
308
|
-
return this;
|
|
309
|
-
}
|
|
310
304
|
async each(callback) {
|
|
311
305
|
const tasks = [];
|
|
312
306
|
await this.table.each((item) => {
|
package/dist/dexie.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/dexie.ts","../src/storage/dexie/DexieAdapter.ts","../src/storage/dexie/DexieQueryContext.ts","../src/storage/dexie/helpers.ts","../src/storage/dexie/DexieWhereClause.ts","../src/storage/dexie/DexieCollection.ts","../src/storage/dexie/DexieTable.ts"],"sourcesContent":["export { DexieAdapter, DexieQueryContext } from './storage/dexie';\nexport type { StorageAdapter } from './storage/types';\n","import Dexie from 'dexie';\nimport type { StorageAdapter, StorageTable, StorageTransactionContext, TransactionMode } from '../types';\nimport type { StorageSchemaDefinitionOptions } from '../sqlite/types';\nimport type { TableSchemaDefinition } from '../sqlite/schema';\nimport { DexieQueryContext } from './DexieQueryContext';\nimport { DexieTable } from './DexieTable';\n\nexport class DexieAdapter implements StorageAdapter {\n readonly type = 'DexieAdapter';\n readonly name: string;\n readonly db: Dexie;\n private readonly tableCache = new Map<string, StorageTable<any>>();\n\n constructor(databaseName: string) {\n this.db = new Dexie(databaseName);\n this.name = this.db.name;\n }\n\n async open(): Promise<void> {\n // Dexie auto-opens on first operation, so this is typically a no-op.\n // However, after delete() we explicitly re-open to ensure continued usability.\n }\n\n async close(): Promise<void> {\n if (this.db.isOpen()) {\n this.db.close();\n }\n this.tableCache.clear();\n }\n\n async delete(): Promise<void> {\n await this.db.delete();\n this.tableCache.clear();\n // Dexie.delete() closes the database, so re-open it to allow continued use.\n // Without this, subsequent operations would fail with DatabaseClosedError.\n await this.db.open();\n }\n\n async query<R>(callback: (ctx: DexieQueryContext) => Promise<R>): Promise<R> {\n return callback(new DexieQueryContext(this));\n }\n\n defineSchema(version: number, schema: Record<string, TableSchemaDefinition>, _options?: StorageSchemaDefinitionOptions): void {\n const normalized: Record<string, string> = {};\n for (const [tableName, definition] of Object.entries(schema)) {\n if (typeof definition !== 'string') {\n throw new Error(`DexieAdapter requires string schema definitions. Received non-string definition for table '${tableName}'.`);\n }\n normalized[tableName] = definition;\n }\n const dexieVersion = this.db.version(version);\n dexieVersion.stores(normalized);\n }\n\n table<T = any>(name: string): StorageTable<T> {\n if (!this.tableCache.has(name)) {\n const table = this.db.table<T>(name);\n this.tableCache.set(name, new DexieTable(table));\n }\n return this.tableCache.get(name)! as StorageTable<T>;\n }\n\n async transaction<T>(mode: TransactionMode, tableNames: string[], callback: (context: StorageTransactionContext) => Promise<T>): Promise<T> {\n return (this.db.transaction as any)(mode, ...tableNames, async () => {\n const tables: Record<string, StorageTable<any>> = {};\n for (const tableName of tableNames) {\n tables[tableName] = this.table(tableName);\n }\n return callback({ tables });\n });\n }\n}\n","import type { StorageTable, StorageTransactionContext, TransactionMode } from '../types';\nimport type { DexieAdapter } from './DexieAdapter';\n\nexport class DexieQueryContext {\n constructor(private readonly adapter: DexieAdapter) {}\n\n table<T = any>(name: string): StorageTable<T> {\n return this.adapter.table(name);\n }\n\n transaction<T>(mode: TransactionMode, tableNames: string[], callback: (context: StorageTransactionContext) => Promise<T>): Promise<T> {\n return this.adapter.transaction(mode, tableNames, callback);\n }\n}\n","export const normalizeIndexName = (index: string | string[]): string => (Array.isArray(index) ? `[${index.join('+')}]` : index);\n","import type { WhereClause } from 'dexie';\nimport type { StorageCollection, StorageWhereClause } from '../types';\nimport { DexieCollection } from './DexieCollection';\n\nexport class DexieWhereClause<T = any> implements StorageWhereClause<T> {\n private readonly clause: WhereClause<T, any, T>;\n\n constructor(clause: WhereClause<T, any, T>) {\n this.clause = clause;\n }\n\n equals(value: any): StorageCollection<T> {\n return new DexieCollection(this.clause.equals(value));\n }\n\n above(value: any): StorageCollection<T> {\n return new DexieCollection(this.clause.above(value));\n }\n\n aboveOrEqual(value: any): StorageCollection<T> {\n return new DexieCollection(this.clause.aboveOrEqual(value));\n }\n\n below(value: any): StorageCollection<T> {\n return new DexieCollection(this.clause.below(value));\n }\n\n belowOrEqual(value: any): StorageCollection<T> {\n return new DexieCollection(this.clause.belowOrEqual(value));\n }\n\n between(lower: any, upper: any, includeLower?: boolean, includeUpper?: boolean): StorageCollection<T> {\n return new DexieCollection(this.clause.between(lower, upper, includeLower, includeUpper));\n }\n\n inAnyRange(ranges: Array<[any, any]>, options?: { includeLower?: boolean; includeUpper?: boolean }): StorageCollection<T> {\n const normalizedOptions = options\n ? {\n includeLowers: options.includeLower,\n includeUppers: options.includeUpper,\n }\n : undefined;\n return new DexieCollection(this.clause.inAnyRange(ranges as any, normalizedOptions));\n }\n\n startsWith(prefix: string): StorageCollection<T> {\n return new DexieCollection(this.clause.startsWith(prefix));\n }\n\n startsWithIgnoreCase(prefix: string): StorageCollection<T> {\n return new DexieCollection(this.clause.startsWithIgnoreCase(prefix));\n }\n\n startsWithAnyOf(...prefixes: string[]): StorageCollection<T>;\n startsWithAnyOf(prefixes: string[]): StorageCollection<T>;\n startsWithAnyOf(...args: any[]): StorageCollection<T> {\n const values = this.flattenArgs<string>(args);\n return new DexieCollection(this.clause.startsWithAnyOf(...values));\n }\n\n startsWithAnyOfIgnoreCase(...prefixes: string[]): StorageCollection<T>;\n startsWithAnyOfIgnoreCase(prefixes: string[]): StorageCollection<T>;\n startsWithAnyOfIgnoreCase(...args: any[]): StorageCollection<T> {\n const values = this.flattenArgs<string>(args);\n return new DexieCollection(this.clause.startsWithAnyOfIgnoreCase(...values));\n }\n\n equalsIgnoreCase(value: string): StorageCollection<T> {\n return new DexieCollection(this.clause.equalsIgnoreCase(value));\n }\n\n anyOf(...values: any[]): StorageCollection<T>;\n anyOf(values: any[]): StorageCollection<T>;\n anyOf(...args: any[]): StorageCollection<T> {\n const values = this.flattenArgs<any>(args);\n return new DexieCollection(this.clause.anyOf(...values));\n }\n\n anyOfIgnoreCase(...values: string[]): StorageCollection<T>;\n anyOfIgnoreCase(values: string[]): StorageCollection<T>;\n anyOfIgnoreCase(...args: any[]): StorageCollection<T> {\n const values = this.flattenArgs<string>(args);\n return new DexieCollection(this.clause.anyOfIgnoreCase(...values));\n }\n\n noneOf(...values: any[]): StorageCollection<T>;\n noneOf(values: any[]): StorageCollection<T>;\n noneOf(...args: any[]): StorageCollection<T> {\n const values = this.flattenArgs<any>(args);\n return new DexieCollection(this.clause.noneOf(values as any));\n }\n\n notEqual(value: any): StorageCollection<T> {\n return new DexieCollection(this.clause.notEqual(value));\n }\n\n private flattenArgs<TValue>(args: any[]): TValue[] {\n if (args.length === 1 && Array.isArray(args[0])) {\n return args[0] as TValue[];\n }\n return args as TValue[];\n }\n}\n","import type { Collection } from 'dexie';\nimport type { StorageCollection, StorageWhereClause } from '../types';\nimport { normalizeIndexName } from './helpers';\nimport { DexieWhereClause } from './DexieWhereClause';\n\nexport class DexieCollection<T = any> implements StorageCollection<T> {\n private readonly collection: Collection<T, any, T>;\n\n constructor(collection: Collection<T, any, T>) {\n this.collection = collection;\n }\n\n first(): Promise<T | undefined> {\n return this.collection.first();\n }\n\n async last(): Promise<T | undefined> {\n return this.collection.last();\n }\n\n async each(callback: (item: T, index: number) => void | Promise<void>): Promise<void> {\n const tasks: Array<void | Promise<void>> = [];\n let index = 0;\n await this.collection.each((item) => {\n tasks.push(callback(item, index));\n index += 1;\n });\n await Promise.all(tasks.map((task) => (task ? Promise.resolve(task) : Promise.resolve())));\n }\n\n async eachKey(callback: (key: unknown, index: number) => void | Promise<void>): Promise<void> {\n const tasks: Array<void | Promise<void>> = [];\n let index = 0;\n await this.collection.eachKey((key) => {\n tasks.push(callback(key, index));\n index += 1;\n });\n await Promise.all(tasks.map((task) => (task ? Promise.resolve(task) : Promise.resolve())));\n }\n\n async eachPrimaryKey(callback: (key: unknown, index: number) => void | Promise<void>): Promise<void> {\n const tasks: Array<void | Promise<void>> = [];\n let index = 0;\n await this.collection.eachPrimaryKey((key) => {\n tasks.push(callback(key, index));\n index += 1;\n });\n await Promise.all(tasks.map((task) => (task ? Promise.resolve(task) : Promise.resolve())));\n }\n\n async eachUniqueKey(callback: (key: unknown, index: number) => void | Promise<void>): Promise<void> {\n const tasks: Array<void | Promise<void>> = [];\n let index = 0;\n await this.collection.eachUniqueKey((key) => {\n tasks.push(callback(key, index));\n index += 1;\n });\n await Promise.all(tasks.map((task) => (task ? Promise.resolve(task) : Promise.resolve())));\n }\n\n keys(): Promise<unknown[]> {\n return this.collection.keys();\n }\n\n primaryKeys(): Promise<unknown[]> {\n return this.collection.primaryKeys();\n }\n\n uniqueKeys(): Promise<unknown[]> {\n return this.collection.uniqueKeys();\n }\n\n count(): Promise<number> {\n return this.collection.count();\n }\n\n sortBy(key: string): Promise<T[]> {\n return this.collection.sortBy(key);\n }\n\n distinct(): StorageCollection<T> {\n return new DexieCollection(this.collection.distinct());\n }\n\n jsFilter(predicate: (item: T) => boolean): StorageCollection<T> {\n return new DexieCollection(this.collection.filter(predicate));\n }\n\n or(index: string): StorageWhereClause<T> {\n return new DexieWhereClause(this.collection.or(normalizeIndexName(index)));\n }\n\n clone(props?: Record<string, unknown>): StorageCollection<T> {\n return new DexieCollection(this.collection.clone(props));\n }\n\n reverse(): StorageCollection<T> {\n return new DexieCollection(this.collection.reverse());\n }\n\n offset(offset: number): StorageCollection<T> {\n return new DexieCollection(this.collection.offset(offset));\n }\n\n limit(count: number): StorageCollection<T> {\n return new DexieCollection(this.collection.limit(count));\n }\n\n toCollection(): StorageCollection<T> {\n return this.clone();\n }\n\n delete(): Promise<number> {\n return this.collection.delete();\n }\n\n modify(changes: Partial<T> | ((item: T) => void | Promise<void>)): Promise<number> {\n return this.collection.modify(changes as any);\n }\n\n toArray(): Promise<T[]> {\n return this.collection.toArray();\n }\n}\n","import type { Table } from 'dexie';\nimport type { AddItem, StorageCollection, StorageTable, StorageWhereClause } from '../types';\nimport { normalizeIndexName } from './helpers';\nimport { DexieCollection } from './DexieCollection';\nimport { DexieWhereClause } from './DexieWhereClause';\n\nexport class DexieTable<T = any> implements StorageTable<T> {\n readonly name: string;\n readonly schema: unknown;\n readonly primaryKey: unknown;\n readonly hook: unknown;\n readonly raw = Object.freeze({\n add: (item: T): Promise<string> => this.table.add(item) as Promise<string>,\n put: (item: T): Promise<string> => this.table.put(item) as Promise<string>,\n update: (key: string, changes: Partial<T>) => this.table.update(key as any, changes as any),\n delete: (key: string) => this.table.delete(key as any),\n get: (key: string) => this.table.get(key as any),\n bulkAdd: (items: T[]): Promise<string[]> => this.table.bulkAdd(items, { allKeys: true }) as Promise<string[]>,\n bulkPut: (items: T[]): Promise<string[]> => this.table.bulkPut(items, { allKeys: true }) as Promise<string[]>,\n bulkUpdate: (keysAndChanges: Array<{ key: string; changes: Partial<T> }>) => this.table.bulkUpdate(keysAndChanges as any),\n bulkDelete: (keys: string[]) => this.table.bulkDelete(keys as any),\n clear: () => this.table.clear(),\n });\n\n private readonly table: Table<T, any, T>;\n\n constructor(table: Table<T, any, T>) {\n this.table = table;\n this.name = table.name;\n this.schema = table.schema;\n this.primaryKey = table.schema?.primKey;\n this.hook = table.hook;\n }\n\n add(item: AddItem<T>): Promise<string> {\n return this.table.add(item as T);\n }\n\n put(item: T): Promise<string> {\n return this.table.put(item);\n }\n\n update(key: string, changes: Partial<T>): Promise<number> {\n return this.table.update(key as any, changes as any);\n }\n\n delete(key: string): Promise<void> {\n return this.table.delete(key as any).then(() => undefined);\n }\n\n clear(): Promise<void> {\n return this.table.clear();\n }\n\n get(key: string): Promise<T | undefined> {\n return this.table.get(key as any);\n }\n\n toArray(): Promise<T[]> {\n return this.table.toArray();\n }\n\n count(): Promise<number> {\n return this.table.count();\n }\n\n bulkAdd(items: AddItem<T>[]): Promise<string[]> {\n return this.table.bulkAdd(items as T[], { allKeys: true }) as Promise<string[]>;\n }\n\n bulkPut(items: T[]): Promise<string[]> {\n return this.table.bulkPut(items, { allKeys: true }) as Promise<string[]>;\n }\n\n bulkGet(keys: string[]): Promise<Array<T | undefined>> {\n return this.table.bulkGet(keys as any);\n }\n\n bulkUpdate(keysAndChanges: Array<{ key: string; changes: Partial<T> }>): Promise<number> {\n return this.table.bulkUpdate(keysAndChanges as any);\n }\n\n bulkDelete(keys: string[]): Promise<void> {\n return this.table.bulkDelete(keys as any);\n }\n\n where(index: string | string[]): StorageWhereClause<T> {\n return new DexieWhereClause(this.table.where(normalizeIndexName(index)));\n }\n\n orderBy(index: string | string[]): StorageCollection<T> {\n return new DexieCollection(this.table.orderBy(normalizeIndexName(index)));\n }\n\n reverse(): StorageCollection<T> {\n return new DexieCollection(this.table.reverse());\n }\n\n offset(offset: number): StorageCollection<T> {\n return new DexieCollection(this.table.offset(offset));\n }\n\n limit(count: number): StorageCollection<T> {\n return new DexieCollection(this.table.limit(count));\n }\n\n mapToClass(ctor: new (...args: any[]) => any): StorageTable<T> {\n this.table.mapToClass(ctor as any);\n return this;\n }\n\n async each(callback: (item: T) => void | Promise<void>): Promise<void> {\n const tasks: Array<void | Promise<void>> = [];\n await this.table.each((item) => {\n tasks.push(callback(item));\n });\n await Promise.all(tasks.map((task) => (task ? Promise.resolve(task) : Promise.resolve())));\n }\n\n jsFilter(predicate: (item: T) => boolean): StorageCollection<T> {\n return new DexieCollection(this.table.filter(predicate));\n }\n}\n"],"mappings":"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","names":["Dexie"]}
|
|
1
|
+
{"version":3,"sources":["../src/dexie.ts","../src/storage/dexie/DexieAdapter.ts","../src/storage/dexie/DexieQueryContext.ts","../src/storage/dexie/helpers.ts","../src/storage/dexie/DexieWhereClause.ts","../src/storage/dexie/DexieCollection.ts","../src/storage/dexie/DexieTable.ts"],"sourcesContent":["export { DexieAdapter, DexieQueryContext } from './storage/dexie';\nexport type { StorageAdapter } from './storage/types';\n","import Dexie from 'dexie';\nimport type { StorageAdapter, StorageTable, StorageTransactionContext, TransactionMode } from '../types';\nimport type { StorageSchemaDefinitionOptions } from '../sqlite/types';\nimport type { TableSchemaDefinition } from '../sqlite/schema';\nimport { DexieQueryContext } from './DexieQueryContext';\nimport { DexieTable } from './DexieTable';\n\nexport class DexieAdapter implements StorageAdapter {\n readonly type = 'DexieAdapter';\n readonly name: string;\n readonly db: Dexie;\n private readonly tableCache = new Map<string, StorageTable<any>>();\n\n constructor(databaseName: string) {\n this.db = new Dexie(databaseName);\n this.name = this.db.name;\n }\n\n async open(): Promise<void> {\n // Dexie auto-opens on first operation, so this is typically a no-op.\n // However, after delete() we explicitly re-open to ensure continued usability.\n }\n\n async close(): Promise<void> {\n if (this.db.isOpen()) {\n this.db.close();\n }\n this.tableCache.clear();\n }\n\n async delete(): Promise<void> {\n await this.db.delete();\n this.tableCache.clear();\n // Dexie.delete() closes the database, so re-open it to allow continued use.\n // Without this, subsequent operations would fail with DatabaseClosedError.\n await this.db.open();\n }\n\n async query<R>(callback: (ctx: DexieQueryContext) => Promise<R>): Promise<R> {\n return callback(new DexieQueryContext(this));\n }\n\n defineSchema(version: number, schema: Record<string, TableSchemaDefinition>, _options?: StorageSchemaDefinitionOptions): void {\n const normalized: Record<string, string> = {};\n for (const [tableName, definition] of Object.entries(schema)) {\n if (typeof definition !== 'string') {\n throw new Error(`DexieAdapter requires string schema definitions. Received non-string definition for table '${tableName}'.`);\n }\n normalized[tableName] = definition;\n }\n const dexieVersion = this.db.version(version);\n dexieVersion.stores(normalized);\n }\n\n table<T = any>(name: string): StorageTable<T> {\n if (!this.tableCache.has(name)) {\n const table = this.db.table<T>(name);\n this.tableCache.set(name, new DexieTable(table));\n }\n return this.tableCache.get(name)! as StorageTable<T>;\n }\n\n async transaction<T>(mode: TransactionMode, tableNames: string[], callback: (context: StorageTransactionContext) => Promise<T>): Promise<T> {\n return (this.db.transaction as any)(mode, ...tableNames, async () => {\n const tables: Record<string, StorageTable<any>> = {};\n for (const tableName of tableNames) {\n tables[tableName] = this.table(tableName);\n }\n return callback({ tables });\n });\n }\n}\n","import type { StorageTable, StorageTransactionContext, TransactionMode } from '../types';\nimport type { DexieAdapter } from './DexieAdapter';\n\nexport class DexieQueryContext {\n constructor(private readonly adapter: DexieAdapter) {}\n\n table<T = any>(name: string): StorageTable<T> {\n return this.adapter.table(name);\n }\n\n transaction<T>(mode: TransactionMode, tableNames: string[], callback: (context: StorageTransactionContext) => Promise<T>): Promise<T> {\n return this.adapter.transaction(mode, tableNames, callback);\n }\n}\n","export const normalizeIndexName = (index: string | string[]): string => (Array.isArray(index) ? `[${index.join('+')}]` : index);\n","import type { WhereClause } from 'dexie';\nimport type { StorageCollection, StorageWhereClause } from '../types';\nimport { DexieCollection } from './DexieCollection';\n\nexport class DexieWhereClause<T = any> implements StorageWhereClause<T> {\n private readonly clause: WhereClause<T, any, T>;\n\n constructor(clause: WhereClause<T, any, T>) {\n this.clause = clause;\n }\n\n equals(value: any): StorageCollection<T> {\n return new DexieCollection(this.clause.equals(value));\n }\n\n above(value: any): StorageCollection<T> {\n return new DexieCollection(this.clause.above(value));\n }\n\n aboveOrEqual(value: any): StorageCollection<T> {\n return new DexieCollection(this.clause.aboveOrEqual(value));\n }\n\n below(value: any): StorageCollection<T> {\n return new DexieCollection(this.clause.below(value));\n }\n\n belowOrEqual(value: any): StorageCollection<T> {\n return new DexieCollection(this.clause.belowOrEqual(value));\n }\n\n between(lower: any, upper: any, includeLower?: boolean, includeUpper?: boolean): StorageCollection<T> {\n return new DexieCollection(this.clause.between(lower, upper, includeLower, includeUpper));\n }\n\n inAnyRange(ranges: Array<[any, any]>, options?: { includeLower?: boolean; includeUpper?: boolean }): StorageCollection<T> {\n const normalizedOptions = options\n ? {\n includeLowers: options.includeLower,\n includeUppers: options.includeUpper,\n }\n : undefined;\n return new DexieCollection(this.clause.inAnyRange(ranges as any, normalizedOptions));\n }\n\n startsWith(prefix: string): StorageCollection<T> {\n return new DexieCollection(this.clause.startsWith(prefix));\n }\n\n startsWithIgnoreCase(prefix: string): StorageCollection<T> {\n return new DexieCollection(this.clause.startsWithIgnoreCase(prefix));\n }\n\n startsWithAnyOf(...prefixes: string[]): StorageCollection<T>;\n startsWithAnyOf(prefixes: string[]): StorageCollection<T>;\n startsWithAnyOf(...args: any[]): StorageCollection<T> {\n const values = this.flattenArgs<string>(args);\n return new DexieCollection(this.clause.startsWithAnyOf(...values));\n }\n\n startsWithAnyOfIgnoreCase(...prefixes: string[]): StorageCollection<T>;\n startsWithAnyOfIgnoreCase(prefixes: string[]): StorageCollection<T>;\n startsWithAnyOfIgnoreCase(...args: any[]): StorageCollection<T> {\n const values = this.flattenArgs<string>(args);\n return new DexieCollection(this.clause.startsWithAnyOfIgnoreCase(...values));\n }\n\n equalsIgnoreCase(value: string): StorageCollection<T> {\n return new DexieCollection(this.clause.equalsIgnoreCase(value));\n }\n\n anyOf(...values: any[]): StorageCollection<T>;\n anyOf(values: any[]): StorageCollection<T>;\n anyOf(...args: any[]): StorageCollection<T> {\n const values = this.flattenArgs<any>(args);\n return new DexieCollection(this.clause.anyOf(...values));\n }\n\n anyOfIgnoreCase(...values: string[]): StorageCollection<T>;\n anyOfIgnoreCase(values: string[]): StorageCollection<T>;\n anyOfIgnoreCase(...args: any[]): StorageCollection<T> {\n const values = this.flattenArgs<string>(args);\n return new DexieCollection(this.clause.anyOfIgnoreCase(...values));\n }\n\n noneOf(...values: any[]): StorageCollection<T>;\n noneOf(values: any[]): StorageCollection<T>;\n noneOf(...args: any[]): StorageCollection<T> {\n const values = this.flattenArgs<any>(args);\n return new DexieCollection(this.clause.noneOf(values as any));\n }\n\n notEqual(value: any): StorageCollection<T> {\n return new DexieCollection(this.clause.notEqual(value));\n }\n\n private flattenArgs<TValue>(args: any[]): TValue[] {\n if (args.length === 1 && Array.isArray(args[0])) {\n return args[0] as TValue[];\n }\n return args as TValue[];\n }\n}\n","import type { Collection } from 'dexie';\nimport type { StorageCollection, StorageWhereClause } from '../types';\nimport { normalizeIndexName } from './helpers';\nimport { DexieWhereClause } from './DexieWhereClause';\n\nexport class DexieCollection<T = any> implements StorageCollection<T> {\n private readonly collection: Collection<T, any, T>;\n\n constructor(collection: Collection<T, any, T>) {\n this.collection = collection;\n }\n\n first(): Promise<T | undefined> {\n return this.collection.first();\n }\n\n async last(): Promise<T | undefined> {\n return this.collection.last();\n }\n\n async each(callback: (item: T, index: number) => void | Promise<void>): Promise<void> {\n const tasks: Array<void | Promise<void>> = [];\n let index = 0;\n await this.collection.each((item) => {\n tasks.push(callback(item, index));\n index += 1;\n });\n await Promise.all(tasks.map((task) => (task ? Promise.resolve(task) : Promise.resolve())));\n }\n\n async eachKey(callback: (key: unknown, index: number) => void | Promise<void>): Promise<void> {\n const tasks: Array<void | Promise<void>> = [];\n let index = 0;\n await this.collection.eachKey((key) => {\n tasks.push(callback(key, index));\n index += 1;\n });\n await Promise.all(tasks.map((task) => (task ? Promise.resolve(task) : Promise.resolve())));\n }\n\n async eachPrimaryKey(callback: (key: unknown, index: number) => void | Promise<void>): Promise<void> {\n const tasks: Array<void | Promise<void>> = [];\n let index = 0;\n await this.collection.eachPrimaryKey((key) => {\n tasks.push(callback(key, index));\n index += 1;\n });\n await Promise.all(tasks.map((task) => (task ? Promise.resolve(task) : Promise.resolve())));\n }\n\n async eachUniqueKey(callback: (key: unknown, index: number) => void | Promise<void>): Promise<void> {\n const tasks: Array<void | Promise<void>> = [];\n let index = 0;\n await this.collection.eachUniqueKey((key) => {\n tasks.push(callback(key, index));\n index += 1;\n });\n await Promise.all(tasks.map((task) => (task ? Promise.resolve(task) : Promise.resolve())));\n }\n\n keys(): Promise<unknown[]> {\n return this.collection.keys();\n }\n\n primaryKeys(): Promise<unknown[]> {\n return this.collection.primaryKeys();\n }\n\n uniqueKeys(): Promise<unknown[]> {\n return this.collection.uniqueKeys();\n }\n\n count(): Promise<number> {\n return this.collection.count();\n }\n\n sortBy(key: string): Promise<T[]> {\n return this.collection.sortBy(key);\n }\n\n distinct(): StorageCollection<T> {\n return new DexieCollection(this.collection.distinct());\n }\n\n jsFilter(predicate: (item: T) => boolean): StorageCollection<T> {\n return new DexieCollection(this.collection.filter(predicate));\n }\n\n or(index: string): StorageWhereClause<T> {\n return new DexieWhereClause(this.collection.or(normalizeIndexName(index)));\n }\n\n clone(props?: Record<string, unknown>): StorageCollection<T> {\n return new DexieCollection(this.collection.clone(props));\n }\n\n reverse(): StorageCollection<T> {\n return new DexieCollection(this.collection.reverse());\n }\n\n offset(offset: number): StorageCollection<T> {\n return new DexieCollection(this.collection.offset(offset));\n }\n\n limit(count: number): StorageCollection<T> {\n return new DexieCollection(this.collection.limit(count));\n }\n\n toCollection(): StorageCollection<T> {\n return this.clone();\n }\n\n delete(): Promise<number> {\n return this.collection.delete();\n }\n\n modify(changes: Partial<T> | ((item: T) => void | Promise<void>)): Promise<number> {\n return this.collection.modify(changes as any);\n }\n\n toArray(): Promise<T[]> {\n return this.collection.toArray();\n }\n}\n","import type { Table } from 'dexie';\nimport type { AddItem, StorageCollection, StorageTable, StorageWhereClause } from '../types';\nimport { normalizeIndexName } from './helpers';\nimport { DexieCollection } from './DexieCollection';\nimport { DexieWhereClause } from './DexieWhereClause';\n\nexport class DexieTable<T = any> implements StorageTable<T> {\n readonly name: string;\n readonly schema: unknown;\n readonly primaryKey: unknown;\n readonly raw = Object.freeze({\n add: (item: T): Promise<string> => this.table.add(item) as Promise<string>,\n put: (item: T): Promise<string> => this.table.put(item) as Promise<string>,\n update: (key: string, changes: Partial<T>) => this.table.update(key as any, changes as any),\n delete: (key: string) => this.table.delete(key as any),\n get: (key: string) => this.table.get(key as any),\n bulkAdd: (items: T[]): Promise<string[]> => this.table.bulkAdd(items, { allKeys: true }) as Promise<string[]>,\n bulkPut: (items: T[]): Promise<string[]> => this.table.bulkPut(items, { allKeys: true }) as Promise<string[]>,\n bulkUpdate: (keysAndChanges: Array<{ key: string; changes: Partial<T> }>) => this.table.bulkUpdate(keysAndChanges as any),\n bulkDelete: (keys: string[]) => this.table.bulkDelete(keys as any),\n clear: () => this.table.clear(),\n });\n\n private readonly table: Table<T, any, T>;\n\n constructor(table: Table<T, any, T>) {\n this.table = table;\n this.name = table.name;\n this.schema = table.schema;\n this.primaryKey = table.schema?.primKey;\n }\n\n add(item: AddItem<T>): Promise<string> {\n return this.table.add(item as T);\n }\n\n put(item: T): Promise<string> {\n return this.table.put(item);\n }\n\n update(key: string, changes: Partial<T>): Promise<number> {\n return this.table.update(key as any, changes as any);\n }\n\n delete(key: string): Promise<void> {\n return this.table.delete(key as any).then(() => undefined);\n }\n\n clear(): Promise<void> {\n return this.table.clear();\n }\n\n get(key: string): Promise<T | undefined> {\n return this.table.get(key as any);\n }\n\n toArray(): Promise<T[]> {\n return this.table.toArray();\n }\n\n count(): Promise<number> {\n return this.table.count();\n }\n\n bulkAdd(items: AddItem<T>[]): Promise<string[]> {\n return this.table.bulkAdd(items as T[], { allKeys: true }) as Promise<string[]>;\n }\n\n bulkPut(items: T[]): Promise<string[]> {\n return this.table.bulkPut(items, { allKeys: true }) as Promise<string[]>;\n }\n\n bulkGet(keys: string[]): Promise<Array<T | undefined>> {\n return this.table.bulkGet(keys as any);\n }\n\n bulkUpdate(keysAndChanges: Array<{ key: string; changes: Partial<T> }>): Promise<number> {\n return this.table.bulkUpdate(keysAndChanges as any);\n }\n\n bulkDelete(keys: string[]): Promise<void> {\n return this.table.bulkDelete(keys as any);\n }\n\n where(index: string): StorageWhereClause<T> {\n return new DexieWhereClause(this.table.where(index));\n }\n\n orderBy(index: string | string[]): StorageCollection<T> {\n return new DexieCollection(this.table.orderBy(normalizeIndexName(index)));\n }\n\n reverse(): StorageCollection<T> {\n return new DexieCollection(this.table.reverse());\n }\n\n offset(offset: number): StorageCollection<T> {\n return new DexieCollection(this.table.offset(offset));\n }\n\n limit(count: number): StorageCollection<T> {\n return new DexieCollection(this.table.limit(count));\n }\n\n async each(callback: (item: T) => void | Promise<void>): Promise<void> {\n const tasks: Array<void | Promise<void>> = [];\n await this.table.each((item) => {\n tasks.push(callback(item));\n });\n await Promise.all(tasks.map((task) => (task ? Promise.resolve(task) : Promise.resolve())));\n }\n\n jsFilter(predicate: (item: T) => boolean): StorageCollection<T> {\n return new DexieCollection(this.table.filter(predicate));\n }\n}\n"],"mappings":"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","names":["Dexie"]}
|
package/dist/dexie.d.cts
CHANGED
package/dist/dexie.d.ts
CHANGED
package/dist/dexie.js
CHANGED
|
@@ -191,7 +191,6 @@ var DexieTable = class {
|
|
|
191
191
|
name;
|
|
192
192
|
schema;
|
|
193
193
|
primaryKey;
|
|
194
|
-
hook;
|
|
195
194
|
raw = Object.freeze({
|
|
196
195
|
add: (item) => this.table.add(item),
|
|
197
196
|
put: (item) => this.table.put(item),
|
|
@@ -210,7 +209,6 @@ var DexieTable = class {
|
|
|
210
209
|
this.name = table.name;
|
|
211
210
|
this.schema = table.schema;
|
|
212
211
|
this.primaryKey = table.schema?.primKey;
|
|
213
|
-
this.hook = table.hook;
|
|
214
212
|
}
|
|
215
213
|
add(item) {
|
|
216
214
|
return this.table.add(item);
|
|
@@ -252,7 +250,7 @@ var DexieTable = class {
|
|
|
252
250
|
return this.table.bulkDelete(keys);
|
|
253
251
|
}
|
|
254
252
|
where(index) {
|
|
255
|
-
return new DexieWhereClause(this.table.where(
|
|
253
|
+
return new DexieWhereClause(this.table.where(index));
|
|
256
254
|
}
|
|
257
255
|
orderBy(index) {
|
|
258
256
|
return new DexieCollection(this.table.orderBy(normalizeIndexName(index)));
|
|
@@ -266,10 +264,6 @@ var DexieTable = class {
|
|
|
266
264
|
limit(count) {
|
|
267
265
|
return new DexieCollection(this.table.limit(count));
|
|
268
266
|
}
|
|
269
|
-
mapToClass(ctor) {
|
|
270
|
-
this.table.mapToClass(ctor);
|
|
271
|
-
return this;
|
|
272
|
-
}
|
|
273
267
|
async each(callback) {
|
|
274
268
|
const tasks = [];
|
|
275
269
|
await this.table.each((item) => {
|
package/dist/dexie.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/storage/dexie/DexieAdapter.ts","../src/storage/dexie/DexieQueryContext.ts","../src/storage/dexie/helpers.ts","../src/storage/dexie/DexieWhereClause.ts","../src/storage/dexie/DexieCollection.ts","../src/storage/dexie/DexieTable.ts"],"sourcesContent":["import Dexie from 'dexie';\nimport type { StorageAdapter, StorageTable, StorageTransactionContext, TransactionMode } from '../types';\nimport type { StorageSchemaDefinitionOptions } from '../sqlite/types';\nimport type { TableSchemaDefinition } from '../sqlite/schema';\nimport { DexieQueryContext } from './DexieQueryContext';\nimport { DexieTable } from './DexieTable';\n\nexport class DexieAdapter implements StorageAdapter {\n readonly type = 'DexieAdapter';\n readonly name: string;\n readonly db: Dexie;\n private readonly tableCache = new Map<string, StorageTable<any>>();\n\n constructor(databaseName: string) {\n this.db = new Dexie(databaseName);\n this.name = this.db.name;\n }\n\n async open(): Promise<void> {\n // Dexie auto-opens on first operation, so this is typically a no-op.\n // However, after delete() we explicitly re-open to ensure continued usability.\n }\n\n async close(): Promise<void> {\n if (this.db.isOpen()) {\n this.db.close();\n }\n this.tableCache.clear();\n }\n\n async delete(): Promise<void> {\n await this.db.delete();\n this.tableCache.clear();\n // Dexie.delete() closes the database, so re-open it to allow continued use.\n // Without this, subsequent operations would fail with DatabaseClosedError.\n await this.db.open();\n }\n\n async query<R>(callback: (ctx: DexieQueryContext) => Promise<R>): Promise<R> {\n return callback(new DexieQueryContext(this));\n }\n\n defineSchema(version: number, schema: Record<string, TableSchemaDefinition>, _options?: StorageSchemaDefinitionOptions): void {\n const normalized: Record<string, string> = {};\n for (const [tableName, definition] of Object.entries(schema)) {\n if (typeof definition !== 'string') {\n throw new Error(`DexieAdapter requires string schema definitions. Received non-string definition for table '${tableName}'.`);\n }\n normalized[tableName] = definition;\n }\n const dexieVersion = this.db.version(version);\n dexieVersion.stores(normalized);\n }\n\n table<T = any>(name: string): StorageTable<T> {\n if (!this.tableCache.has(name)) {\n const table = this.db.table<T>(name);\n this.tableCache.set(name, new DexieTable(table));\n }\n return this.tableCache.get(name)! as StorageTable<T>;\n }\n\n async transaction<T>(mode: TransactionMode, tableNames: string[], callback: (context: StorageTransactionContext) => Promise<T>): Promise<T> {\n return (this.db.transaction as any)(mode, ...tableNames, async () => {\n const tables: Record<string, StorageTable<any>> = {};\n for (const tableName of tableNames) {\n tables[tableName] = this.table(tableName);\n }\n return callback({ tables });\n });\n }\n}\n","import type { StorageTable, StorageTransactionContext, TransactionMode } from '../types';\nimport type { DexieAdapter } from './DexieAdapter';\n\nexport class DexieQueryContext {\n constructor(private readonly adapter: DexieAdapter) {}\n\n table<T = any>(name: string): StorageTable<T> {\n return this.adapter.table(name);\n }\n\n transaction<T>(mode: TransactionMode, tableNames: string[], callback: (context: StorageTransactionContext) => Promise<T>): Promise<T> {\n return this.adapter.transaction(mode, tableNames, callback);\n }\n}\n","export const normalizeIndexName = (index: string | string[]): string => (Array.isArray(index) ? `[${index.join('+')}]` : index);\n","import type { WhereClause } from 'dexie';\nimport type { StorageCollection, StorageWhereClause } from '../types';\nimport { DexieCollection } from './DexieCollection';\n\nexport class DexieWhereClause<T = any> implements StorageWhereClause<T> {\n private readonly clause: WhereClause<T, any, T>;\n\n constructor(clause: WhereClause<T, any, T>) {\n this.clause = clause;\n }\n\n equals(value: any): StorageCollection<T> {\n return new DexieCollection(this.clause.equals(value));\n }\n\n above(value: any): StorageCollection<T> {\n return new DexieCollection(this.clause.above(value));\n }\n\n aboveOrEqual(value: any): StorageCollection<T> {\n return new DexieCollection(this.clause.aboveOrEqual(value));\n }\n\n below(value: any): StorageCollection<T> {\n return new DexieCollection(this.clause.below(value));\n }\n\n belowOrEqual(value: any): StorageCollection<T> {\n return new DexieCollection(this.clause.belowOrEqual(value));\n }\n\n between(lower: any, upper: any, includeLower?: boolean, includeUpper?: boolean): StorageCollection<T> {\n return new DexieCollection(this.clause.between(lower, upper, includeLower, includeUpper));\n }\n\n inAnyRange(ranges: Array<[any, any]>, options?: { includeLower?: boolean; includeUpper?: boolean }): StorageCollection<T> {\n const normalizedOptions = options\n ? {\n includeLowers: options.includeLower,\n includeUppers: options.includeUpper,\n }\n : undefined;\n return new DexieCollection(this.clause.inAnyRange(ranges as any, normalizedOptions));\n }\n\n startsWith(prefix: string): StorageCollection<T> {\n return new DexieCollection(this.clause.startsWith(prefix));\n }\n\n startsWithIgnoreCase(prefix: string): StorageCollection<T> {\n return new DexieCollection(this.clause.startsWithIgnoreCase(prefix));\n }\n\n startsWithAnyOf(...prefixes: string[]): StorageCollection<T>;\n startsWithAnyOf(prefixes: string[]): StorageCollection<T>;\n startsWithAnyOf(...args: any[]): StorageCollection<T> {\n const values = this.flattenArgs<string>(args);\n return new DexieCollection(this.clause.startsWithAnyOf(...values));\n }\n\n startsWithAnyOfIgnoreCase(...prefixes: string[]): StorageCollection<T>;\n startsWithAnyOfIgnoreCase(prefixes: string[]): StorageCollection<T>;\n startsWithAnyOfIgnoreCase(...args: any[]): StorageCollection<T> {\n const values = this.flattenArgs<string>(args);\n return new DexieCollection(this.clause.startsWithAnyOfIgnoreCase(...values));\n }\n\n equalsIgnoreCase(value: string): StorageCollection<T> {\n return new DexieCollection(this.clause.equalsIgnoreCase(value));\n }\n\n anyOf(...values: any[]): StorageCollection<T>;\n anyOf(values: any[]): StorageCollection<T>;\n anyOf(...args: any[]): StorageCollection<T> {\n const values = this.flattenArgs<any>(args);\n return new DexieCollection(this.clause.anyOf(...values));\n }\n\n anyOfIgnoreCase(...values: string[]): StorageCollection<T>;\n anyOfIgnoreCase(values: string[]): StorageCollection<T>;\n anyOfIgnoreCase(...args: any[]): StorageCollection<T> {\n const values = this.flattenArgs<string>(args);\n return new DexieCollection(this.clause.anyOfIgnoreCase(...values));\n }\n\n noneOf(...values: any[]): StorageCollection<T>;\n noneOf(values: any[]): StorageCollection<T>;\n noneOf(...args: any[]): StorageCollection<T> {\n const values = this.flattenArgs<any>(args);\n return new DexieCollection(this.clause.noneOf(values as any));\n }\n\n notEqual(value: any): StorageCollection<T> {\n return new DexieCollection(this.clause.notEqual(value));\n }\n\n private flattenArgs<TValue>(args: any[]): TValue[] {\n if (args.length === 1 && Array.isArray(args[0])) {\n return args[0] as TValue[];\n }\n return args as TValue[];\n }\n}\n","import type { Collection } from 'dexie';\nimport type { StorageCollection, StorageWhereClause } from '../types';\nimport { normalizeIndexName } from './helpers';\nimport { DexieWhereClause } from './DexieWhereClause';\n\nexport class DexieCollection<T = any> implements StorageCollection<T> {\n private readonly collection: Collection<T, any, T>;\n\n constructor(collection: Collection<T, any, T>) {\n this.collection = collection;\n }\n\n first(): Promise<T | undefined> {\n return this.collection.first();\n }\n\n async last(): Promise<T | undefined> {\n return this.collection.last();\n }\n\n async each(callback: (item: T, index: number) => void | Promise<void>): Promise<void> {\n const tasks: Array<void | Promise<void>> = [];\n let index = 0;\n await this.collection.each((item) => {\n tasks.push(callback(item, index));\n index += 1;\n });\n await Promise.all(tasks.map((task) => (task ? Promise.resolve(task) : Promise.resolve())));\n }\n\n async eachKey(callback: (key: unknown, index: number) => void | Promise<void>): Promise<void> {\n const tasks: Array<void | Promise<void>> = [];\n let index = 0;\n await this.collection.eachKey((key) => {\n tasks.push(callback(key, index));\n index += 1;\n });\n await Promise.all(tasks.map((task) => (task ? Promise.resolve(task) : Promise.resolve())));\n }\n\n async eachPrimaryKey(callback: (key: unknown, index: number) => void | Promise<void>): Promise<void> {\n const tasks: Array<void | Promise<void>> = [];\n let index = 0;\n await this.collection.eachPrimaryKey((key) => {\n tasks.push(callback(key, index));\n index += 1;\n });\n await Promise.all(tasks.map((task) => (task ? Promise.resolve(task) : Promise.resolve())));\n }\n\n async eachUniqueKey(callback: (key: unknown, index: number) => void | Promise<void>): Promise<void> {\n const tasks: Array<void | Promise<void>> = [];\n let index = 0;\n await this.collection.eachUniqueKey((key) => {\n tasks.push(callback(key, index));\n index += 1;\n });\n await Promise.all(tasks.map((task) => (task ? Promise.resolve(task) : Promise.resolve())));\n }\n\n keys(): Promise<unknown[]> {\n return this.collection.keys();\n }\n\n primaryKeys(): Promise<unknown[]> {\n return this.collection.primaryKeys();\n }\n\n uniqueKeys(): Promise<unknown[]> {\n return this.collection.uniqueKeys();\n }\n\n count(): Promise<number> {\n return this.collection.count();\n }\n\n sortBy(key: string): Promise<T[]> {\n return this.collection.sortBy(key);\n }\n\n distinct(): StorageCollection<T> {\n return new DexieCollection(this.collection.distinct());\n }\n\n jsFilter(predicate: (item: T) => boolean): StorageCollection<T> {\n return new DexieCollection(this.collection.filter(predicate));\n }\n\n or(index: string): StorageWhereClause<T> {\n return new DexieWhereClause(this.collection.or(normalizeIndexName(index)));\n }\n\n clone(props?: Record<string, unknown>): StorageCollection<T> {\n return new DexieCollection(this.collection.clone(props));\n }\n\n reverse(): StorageCollection<T> {\n return new DexieCollection(this.collection.reverse());\n }\n\n offset(offset: number): StorageCollection<T> {\n return new DexieCollection(this.collection.offset(offset));\n }\n\n limit(count: number): StorageCollection<T> {\n return new DexieCollection(this.collection.limit(count));\n }\n\n toCollection(): StorageCollection<T> {\n return this.clone();\n }\n\n delete(): Promise<number> {\n return this.collection.delete();\n }\n\n modify(changes: Partial<T> | ((item: T) => void | Promise<void>)): Promise<number> {\n return this.collection.modify(changes as any);\n }\n\n toArray(): Promise<T[]> {\n return this.collection.toArray();\n }\n}\n","import type { Table } from 'dexie';\nimport type { AddItem, StorageCollection, StorageTable, StorageWhereClause } from '../types';\nimport { normalizeIndexName } from './helpers';\nimport { DexieCollection } from './DexieCollection';\nimport { DexieWhereClause } from './DexieWhereClause';\n\nexport class DexieTable<T = any> implements StorageTable<T> {\n readonly name: string;\n readonly schema: unknown;\n readonly primaryKey: unknown;\n readonly hook: unknown;\n readonly raw = Object.freeze({\n add: (item: T): Promise<string> => this.table.add(item) as Promise<string>,\n put: (item: T): Promise<string> => this.table.put(item) as Promise<string>,\n update: (key: string, changes: Partial<T>) => this.table.update(key as any, changes as any),\n delete: (key: string) => this.table.delete(key as any),\n get: (key: string) => this.table.get(key as any),\n bulkAdd: (items: T[]): Promise<string[]> => this.table.bulkAdd(items, { allKeys: true }) as Promise<string[]>,\n bulkPut: (items: T[]): Promise<string[]> => this.table.bulkPut(items, { allKeys: true }) as Promise<string[]>,\n bulkUpdate: (keysAndChanges: Array<{ key: string; changes: Partial<T> }>) => this.table.bulkUpdate(keysAndChanges as any),\n bulkDelete: (keys: string[]) => this.table.bulkDelete(keys as any),\n clear: () => this.table.clear(),\n });\n\n private readonly table: Table<T, any, T>;\n\n constructor(table: Table<T, any, T>) {\n this.table = table;\n this.name = table.name;\n this.schema = table.schema;\n this.primaryKey = table.schema?.primKey;\n this.hook = table.hook;\n }\n\n add(item: AddItem<T>): Promise<string> {\n return this.table.add(item as T);\n }\n\n put(item: T): Promise<string> {\n return this.table.put(item);\n }\n\n update(key: string, changes: Partial<T>): Promise<number> {\n return this.table.update(key as any, changes as any);\n }\n\n delete(key: string): Promise<void> {\n return this.table.delete(key as any).then(() => undefined);\n }\n\n clear(): Promise<void> {\n return this.table.clear();\n }\n\n get(key: string): Promise<T | undefined> {\n return this.table.get(key as any);\n }\n\n toArray(): Promise<T[]> {\n return this.table.toArray();\n }\n\n count(): Promise<number> {\n return this.table.count();\n }\n\n bulkAdd(items: AddItem<T>[]): Promise<string[]> {\n return this.table.bulkAdd(items as T[], { allKeys: true }) as Promise<string[]>;\n }\n\n bulkPut(items: T[]): Promise<string[]> {\n return this.table.bulkPut(items, { allKeys: true }) as Promise<string[]>;\n }\n\n bulkGet(keys: string[]): Promise<Array<T | undefined>> {\n return this.table.bulkGet(keys as any);\n }\n\n bulkUpdate(keysAndChanges: Array<{ key: string; changes: Partial<T> }>): Promise<number> {\n return this.table.bulkUpdate(keysAndChanges as any);\n }\n\n bulkDelete(keys: string[]): Promise<void> {\n return this.table.bulkDelete(keys as any);\n }\n\n where(index: string | string[]): StorageWhereClause<T> {\n return new DexieWhereClause(this.table.where(normalizeIndexName(index)));\n }\n\n orderBy(index: string | string[]): StorageCollection<T> {\n return new DexieCollection(this.table.orderBy(normalizeIndexName(index)));\n }\n\n reverse(): StorageCollection<T> {\n return new DexieCollection(this.table.reverse());\n }\n\n offset(offset: number): StorageCollection<T> {\n return new DexieCollection(this.table.offset(offset));\n }\n\n limit(count: number): StorageCollection<T> {\n return new DexieCollection(this.table.limit(count));\n }\n\n mapToClass(ctor: new (...args: any[]) => any): StorageTable<T> {\n this.table.mapToClass(ctor as any);\n return this;\n }\n\n async each(callback: (item: T) => void | Promise<void>): Promise<void> {\n const tasks: Array<void | Promise<void>> = [];\n await this.table.each((item) => {\n tasks.push(callback(item));\n });\n await Promise.all(tasks.map((task) => (task ? Promise.resolve(task) : Promise.resolve())));\n }\n\n jsFilter(predicate: (item: T) => boolean): StorageCollection<T> {\n return new DexieCollection(this.table.filter(predicate));\n }\n}\n"],"mappings":"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","names":[]}
|
|
1
|
+
{"version":3,"sources":["../src/storage/dexie/DexieAdapter.ts","../src/storage/dexie/DexieQueryContext.ts","../src/storage/dexie/helpers.ts","../src/storage/dexie/DexieWhereClause.ts","../src/storage/dexie/DexieCollection.ts","../src/storage/dexie/DexieTable.ts"],"sourcesContent":["import Dexie from 'dexie';\nimport type { StorageAdapter, StorageTable, StorageTransactionContext, TransactionMode } from '../types';\nimport type { StorageSchemaDefinitionOptions } from '../sqlite/types';\nimport type { TableSchemaDefinition } from '../sqlite/schema';\nimport { DexieQueryContext } from './DexieQueryContext';\nimport { DexieTable } from './DexieTable';\n\nexport class DexieAdapter implements StorageAdapter {\n readonly type = 'DexieAdapter';\n readonly name: string;\n readonly db: Dexie;\n private readonly tableCache = new Map<string, StorageTable<any>>();\n\n constructor(databaseName: string) {\n this.db = new Dexie(databaseName);\n this.name = this.db.name;\n }\n\n async open(): Promise<void> {\n // Dexie auto-opens on first operation, so this is typically a no-op.\n // However, after delete() we explicitly re-open to ensure continued usability.\n }\n\n async close(): Promise<void> {\n if (this.db.isOpen()) {\n this.db.close();\n }\n this.tableCache.clear();\n }\n\n async delete(): Promise<void> {\n await this.db.delete();\n this.tableCache.clear();\n // Dexie.delete() closes the database, so re-open it to allow continued use.\n // Without this, subsequent operations would fail with DatabaseClosedError.\n await this.db.open();\n }\n\n async query<R>(callback: (ctx: DexieQueryContext) => Promise<R>): Promise<R> {\n return callback(new DexieQueryContext(this));\n }\n\n defineSchema(version: number, schema: Record<string, TableSchemaDefinition>, _options?: StorageSchemaDefinitionOptions): void {\n const normalized: Record<string, string> = {};\n for (const [tableName, definition] of Object.entries(schema)) {\n if (typeof definition !== 'string') {\n throw new Error(`DexieAdapter requires string schema definitions. Received non-string definition for table '${tableName}'.`);\n }\n normalized[tableName] = definition;\n }\n const dexieVersion = this.db.version(version);\n dexieVersion.stores(normalized);\n }\n\n table<T = any>(name: string): StorageTable<T> {\n if (!this.tableCache.has(name)) {\n const table = this.db.table<T>(name);\n this.tableCache.set(name, new DexieTable(table));\n }\n return this.tableCache.get(name)! as StorageTable<T>;\n }\n\n async transaction<T>(mode: TransactionMode, tableNames: string[], callback: (context: StorageTransactionContext) => Promise<T>): Promise<T> {\n return (this.db.transaction as any)(mode, ...tableNames, async () => {\n const tables: Record<string, StorageTable<any>> = {};\n for (const tableName of tableNames) {\n tables[tableName] = this.table(tableName);\n }\n return callback({ tables });\n });\n }\n}\n","import type { StorageTable, StorageTransactionContext, TransactionMode } from '../types';\nimport type { DexieAdapter } from './DexieAdapter';\n\nexport class DexieQueryContext {\n constructor(private readonly adapter: DexieAdapter) {}\n\n table<T = any>(name: string): StorageTable<T> {\n return this.adapter.table(name);\n }\n\n transaction<T>(mode: TransactionMode, tableNames: string[], callback: (context: StorageTransactionContext) => Promise<T>): Promise<T> {\n return this.adapter.transaction(mode, tableNames, callback);\n }\n}\n","export const normalizeIndexName = (index: string | string[]): string => (Array.isArray(index) ? `[${index.join('+')}]` : index);\n","import type { WhereClause } from 'dexie';\nimport type { StorageCollection, StorageWhereClause } from '../types';\nimport { DexieCollection } from './DexieCollection';\n\nexport class DexieWhereClause<T = any> implements StorageWhereClause<T> {\n private readonly clause: WhereClause<T, any, T>;\n\n constructor(clause: WhereClause<T, any, T>) {\n this.clause = clause;\n }\n\n equals(value: any): StorageCollection<T> {\n return new DexieCollection(this.clause.equals(value));\n }\n\n above(value: any): StorageCollection<T> {\n return new DexieCollection(this.clause.above(value));\n }\n\n aboveOrEqual(value: any): StorageCollection<T> {\n return new DexieCollection(this.clause.aboveOrEqual(value));\n }\n\n below(value: any): StorageCollection<T> {\n return new DexieCollection(this.clause.below(value));\n }\n\n belowOrEqual(value: any): StorageCollection<T> {\n return new DexieCollection(this.clause.belowOrEqual(value));\n }\n\n between(lower: any, upper: any, includeLower?: boolean, includeUpper?: boolean): StorageCollection<T> {\n return new DexieCollection(this.clause.between(lower, upper, includeLower, includeUpper));\n }\n\n inAnyRange(ranges: Array<[any, any]>, options?: { includeLower?: boolean; includeUpper?: boolean }): StorageCollection<T> {\n const normalizedOptions = options\n ? {\n includeLowers: options.includeLower,\n includeUppers: options.includeUpper,\n }\n : undefined;\n return new DexieCollection(this.clause.inAnyRange(ranges as any, normalizedOptions));\n }\n\n startsWith(prefix: string): StorageCollection<T> {\n return new DexieCollection(this.clause.startsWith(prefix));\n }\n\n startsWithIgnoreCase(prefix: string): StorageCollection<T> {\n return new DexieCollection(this.clause.startsWithIgnoreCase(prefix));\n }\n\n startsWithAnyOf(...prefixes: string[]): StorageCollection<T>;\n startsWithAnyOf(prefixes: string[]): StorageCollection<T>;\n startsWithAnyOf(...args: any[]): StorageCollection<T> {\n const values = this.flattenArgs<string>(args);\n return new DexieCollection(this.clause.startsWithAnyOf(...values));\n }\n\n startsWithAnyOfIgnoreCase(...prefixes: string[]): StorageCollection<T>;\n startsWithAnyOfIgnoreCase(prefixes: string[]): StorageCollection<T>;\n startsWithAnyOfIgnoreCase(...args: any[]): StorageCollection<T> {\n const values = this.flattenArgs<string>(args);\n return new DexieCollection(this.clause.startsWithAnyOfIgnoreCase(...values));\n }\n\n equalsIgnoreCase(value: string): StorageCollection<T> {\n return new DexieCollection(this.clause.equalsIgnoreCase(value));\n }\n\n anyOf(...values: any[]): StorageCollection<T>;\n anyOf(values: any[]): StorageCollection<T>;\n anyOf(...args: any[]): StorageCollection<T> {\n const values = this.flattenArgs<any>(args);\n return new DexieCollection(this.clause.anyOf(...values));\n }\n\n anyOfIgnoreCase(...values: string[]): StorageCollection<T>;\n anyOfIgnoreCase(values: string[]): StorageCollection<T>;\n anyOfIgnoreCase(...args: any[]): StorageCollection<T> {\n const values = this.flattenArgs<string>(args);\n return new DexieCollection(this.clause.anyOfIgnoreCase(...values));\n }\n\n noneOf(...values: any[]): StorageCollection<T>;\n noneOf(values: any[]): StorageCollection<T>;\n noneOf(...args: any[]): StorageCollection<T> {\n const values = this.flattenArgs<any>(args);\n return new DexieCollection(this.clause.noneOf(values as any));\n }\n\n notEqual(value: any): StorageCollection<T> {\n return new DexieCollection(this.clause.notEqual(value));\n }\n\n private flattenArgs<TValue>(args: any[]): TValue[] {\n if (args.length === 1 && Array.isArray(args[0])) {\n return args[0] as TValue[];\n }\n return args as TValue[];\n }\n}\n","import type { Collection } from 'dexie';\nimport type { StorageCollection, StorageWhereClause } from '../types';\nimport { normalizeIndexName } from './helpers';\nimport { DexieWhereClause } from './DexieWhereClause';\n\nexport class DexieCollection<T = any> implements StorageCollection<T> {\n private readonly collection: Collection<T, any, T>;\n\n constructor(collection: Collection<T, any, T>) {\n this.collection = collection;\n }\n\n first(): Promise<T | undefined> {\n return this.collection.first();\n }\n\n async last(): Promise<T | undefined> {\n return this.collection.last();\n }\n\n async each(callback: (item: T, index: number) => void | Promise<void>): Promise<void> {\n const tasks: Array<void | Promise<void>> = [];\n let index = 0;\n await this.collection.each((item) => {\n tasks.push(callback(item, index));\n index += 1;\n });\n await Promise.all(tasks.map((task) => (task ? Promise.resolve(task) : Promise.resolve())));\n }\n\n async eachKey(callback: (key: unknown, index: number) => void | Promise<void>): Promise<void> {\n const tasks: Array<void | Promise<void>> = [];\n let index = 0;\n await this.collection.eachKey((key) => {\n tasks.push(callback(key, index));\n index += 1;\n });\n await Promise.all(tasks.map((task) => (task ? Promise.resolve(task) : Promise.resolve())));\n }\n\n async eachPrimaryKey(callback: (key: unknown, index: number) => void | Promise<void>): Promise<void> {\n const tasks: Array<void | Promise<void>> = [];\n let index = 0;\n await this.collection.eachPrimaryKey((key) => {\n tasks.push(callback(key, index));\n index += 1;\n });\n await Promise.all(tasks.map((task) => (task ? Promise.resolve(task) : Promise.resolve())));\n }\n\n async eachUniqueKey(callback: (key: unknown, index: number) => void | Promise<void>): Promise<void> {\n const tasks: Array<void | Promise<void>> = [];\n let index = 0;\n await this.collection.eachUniqueKey((key) => {\n tasks.push(callback(key, index));\n index += 1;\n });\n await Promise.all(tasks.map((task) => (task ? Promise.resolve(task) : Promise.resolve())));\n }\n\n keys(): Promise<unknown[]> {\n return this.collection.keys();\n }\n\n primaryKeys(): Promise<unknown[]> {\n return this.collection.primaryKeys();\n }\n\n uniqueKeys(): Promise<unknown[]> {\n return this.collection.uniqueKeys();\n }\n\n count(): Promise<number> {\n return this.collection.count();\n }\n\n sortBy(key: string): Promise<T[]> {\n return this.collection.sortBy(key);\n }\n\n distinct(): StorageCollection<T> {\n return new DexieCollection(this.collection.distinct());\n }\n\n jsFilter(predicate: (item: T) => boolean): StorageCollection<T> {\n return new DexieCollection(this.collection.filter(predicate));\n }\n\n or(index: string): StorageWhereClause<T> {\n return new DexieWhereClause(this.collection.or(normalizeIndexName(index)));\n }\n\n clone(props?: Record<string, unknown>): StorageCollection<T> {\n return new DexieCollection(this.collection.clone(props));\n }\n\n reverse(): StorageCollection<T> {\n return new DexieCollection(this.collection.reverse());\n }\n\n offset(offset: number): StorageCollection<T> {\n return new DexieCollection(this.collection.offset(offset));\n }\n\n limit(count: number): StorageCollection<T> {\n return new DexieCollection(this.collection.limit(count));\n }\n\n toCollection(): StorageCollection<T> {\n return this.clone();\n }\n\n delete(): Promise<number> {\n return this.collection.delete();\n }\n\n modify(changes: Partial<T> | ((item: T) => void | Promise<void>)): Promise<number> {\n return this.collection.modify(changes as any);\n }\n\n toArray(): Promise<T[]> {\n return this.collection.toArray();\n }\n}\n","import type { Table } from 'dexie';\nimport type { AddItem, StorageCollection, StorageTable, StorageWhereClause } from '../types';\nimport { normalizeIndexName } from './helpers';\nimport { DexieCollection } from './DexieCollection';\nimport { DexieWhereClause } from './DexieWhereClause';\n\nexport class DexieTable<T = any> implements StorageTable<T> {\n readonly name: string;\n readonly schema: unknown;\n readonly primaryKey: unknown;\n readonly raw = Object.freeze({\n add: (item: T): Promise<string> => this.table.add(item) as Promise<string>,\n put: (item: T): Promise<string> => this.table.put(item) as Promise<string>,\n update: (key: string, changes: Partial<T>) => this.table.update(key as any, changes as any),\n delete: (key: string) => this.table.delete(key as any),\n get: (key: string) => this.table.get(key as any),\n bulkAdd: (items: T[]): Promise<string[]> => this.table.bulkAdd(items, { allKeys: true }) as Promise<string[]>,\n bulkPut: (items: T[]): Promise<string[]> => this.table.bulkPut(items, { allKeys: true }) as Promise<string[]>,\n bulkUpdate: (keysAndChanges: Array<{ key: string; changes: Partial<T> }>) => this.table.bulkUpdate(keysAndChanges as any),\n bulkDelete: (keys: string[]) => this.table.bulkDelete(keys as any),\n clear: () => this.table.clear(),\n });\n\n private readonly table: Table<T, any, T>;\n\n constructor(table: Table<T, any, T>) {\n this.table = table;\n this.name = table.name;\n this.schema = table.schema;\n this.primaryKey = table.schema?.primKey;\n }\n\n add(item: AddItem<T>): Promise<string> {\n return this.table.add(item as T);\n }\n\n put(item: T): Promise<string> {\n return this.table.put(item);\n }\n\n update(key: string, changes: Partial<T>): Promise<number> {\n return this.table.update(key as any, changes as any);\n }\n\n delete(key: string): Promise<void> {\n return this.table.delete(key as any).then(() => undefined);\n }\n\n clear(): Promise<void> {\n return this.table.clear();\n }\n\n get(key: string): Promise<T | undefined> {\n return this.table.get(key as any);\n }\n\n toArray(): Promise<T[]> {\n return this.table.toArray();\n }\n\n count(): Promise<number> {\n return this.table.count();\n }\n\n bulkAdd(items: AddItem<T>[]): Promise<string[]> {\n return this.table.bulkAdd(items as T[], { allKeys: true }) as Promise<string[]>;\n }\n\n bulkPut(items: T[]): Promise<string[]> {\n return this.table.bulkPut(items, { allKeys: true }) as Promise<string[]>;\n }\n\n bulkGet(keys: string[]): Promise<Array<T | undefined>> {\n return this.table.bulkGet(keys as any);\n }\n\n bulkUpdate(keysAndChanges: Array<{ key: string; changes: Partial<T> }>): Promise<number> {\n return this.table.bulkUpdate(keysAndChanges as any);\n }\n\n bulkDelete(keys: string[]): Promise<void> {\n return this.table.bulkDelete(keys as any);\n }\n\n where(index: string): StorageWhereClause<T> {\n return new DexieWhereClause(this.table.where(index));\n }\n\n orderBy(index: string | string[]): StorageCollection<T> {\n return new DexieCollection(this.table.orderBy(normalizeIndexName(index)));\n }\n\n reverse(): StorageCollection<T> {\n return new DexieCollection(this.table.reverse());\n }\n\n offset(offset: number): StorageCollection<T> {\n return new DexieCollection(this.table.offset(offset));\n }\n\n limit(count: number): StorageCollection<T> {\n return new DexieCollection(this.table.limit(count));\n }\n\n async each(callback: (item: T) => void | Promise<void>): Promise<void> {\n const tasks: Array<void | Promise<void>> = [];\n await this.table.each((item) => {\n tasks.push(callback(item));\n });\n await Promise.all(tasks.map((task) => (task ? Promise.resolve(task) : Promise.resolve())));\n }\n\n jsFilter(predicate: (item: T) => boolean): StorageCollection<T> {\n return new DexieCollection(this.table.filter(predicate));\n }\n}\n"],"mappings":"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","names":[]}
|