@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.
@@ -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 index;
103
+ private readonly column;
104
104
  private readonly baseCollection?;
105
- constructor(table: MemoryTable<T>, index: string | string[], baseCollection?: MemoryCollection<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 | string[]): StorageWhereClause<T>;
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(index: string | string[], baseCollection?: MemoryCollection<T>): MemoryWhereClause<T>;
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 | string[]): StorageWhereClause<T>;
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 index;
103
+ private readonly column;
104
104
  private readonly baseCollection?;
105
- constructor(table: MemoryTable<T>, index: string | string[], baseCollection?: MemoryCollection<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 | string[]): StorageWhereClause<T>;
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(index: string | string[], baseCollection?: MemoryCollection<T>): MemoryWhereClause<T>;
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 | string[]): StorageWhereClause<T>;
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(normalizeIndexName(index)));
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) => {
@@ -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
@@ -1,3 +1,3 @@
1
- export { e as DexieAdapter, D as DexieQueryContext, c as StorageAdapter } from './dexie-1_xyU5MV.cjs';
1
+ export { e as DexieAdapter, D as DexieQueryContext, c as StorageAdapter } from './dexie-BqktVP7s.cjs';
2
2
  import 'dexie';
3
3
  import './types-CSbIAfu2.cjs';
package/dist/dexie.d.ts CHANGED
@@ -1,3 +1,3 @@
1
- export { e as DexieAdapter, D as DexieQueryContext, c as StorageAdapter } from './dexie-ChZ0o0Sz.js';
1
+ export { e as DexieAdapter, D as DexieQueryContext, c as StorageAdapter } from './dexie-DRLMKLl5.js';
2
2
  import 'dexie';
3
3
  import './types-CSbIAfu2.js';
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(normalizeIndexName(index)));
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":[]}