@anfenn/dync 1.0.3 → 1.0.4
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/README.md +31 -13
- package/dist/{chunk-66PSQW4D.js → chunk-PCA4XM2N.js} +17 -17
- package/dist/chunk-PCA4XM2N.js.map +1 -0
- package/dist/{dexie-Bv-fV10P.d.cts → dexie-1_xyU5MV.d.cts} +41 -38
- package/dist/{dexie-DJFApKsM.d.ts → dexie-ChZ0o0Sz.d.ts} +41 -38
- package/dist/dexie.cjs +40 -40
- 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 +40 -40
- package/dist/dexie.js.map +1 -1
- package/dist/index.cjs +16 -16
- 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-CkYsQYyn.d.ts → index.shared-Byhq6TyU.d.ts} +1 -1
- package/dist/{index.shared-BGwvMH8f.d.cts → index.shared-DsDBNWlz.d.cts} +1 -1
- package/dist/react/index.cjs +2 -2
- package/dist/react/index.cjs.map +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/core/tableEnhancers.ts +17 -17
- package/src/storage/dexie/DexieAdapter.ts +2 -2
- package/src/storage/dexie/{DexieStorageCollection.ts → DexieCollection.ts} +12 -12
- package/src/storage/dexie/DexieTable.ts +123 -0
- package/src/storage/dexie/{DexieStorageWhereClause.ts → DexieWhereClause.ts} +21 -21
- package/src/storage/dexie/index.ts +3 -3
- package/src/storage/memory/MemoryTable.ts +40 -40
- package/src/storage/sqlite/SQLiteTable.ts +34 -36
- package/src/storage/types.ts +22 -19
- package/dist/chunk-66PSQW4D.js.map +0 -1
- package/src/storage/dexie/DexieStorageTable.ts +0 -123
package/dist/dexie.js
CHANGED
|
@@ -17,68 +17,68 @@ var DexieQueryContext = class {
|
|
|
17
17
|
// src/storage/dexie/helpers.ts
|
|
18
18
|
var normalizeIndexName = (index) => Array.isArray(index) ? `[${index.join("+")}]` : index;
|
|
19
19
|
|
|
20
|
-
// src/storage/dexie/
|
|
21
|
-
var
|
|
20
|
+
// src/storage/dexie/DexieWhereClause.ts
|
|
21
|
+
var DexieWhereClause = class {
|
|
22
22
|
clause;
|
|
23
23
|
constructor(clause) {
|
|
24
24
|
this.clause = clause;
|
|
25
25
|
}
|
|
26
26
|
equals(value) {
|
|
27
|
-
return new
|
|
27
|
+
return new DexieCollection(this.clause.equals(value));
|
|
28
28
|
}
|
|
29
29
|
above(value) {
|
|
30
|
-
return new
|
|
30
|
+
return new DexieCollection(this.clause.above(value));
|
|
31
31
|
}
|
|
32
32
|
aboveOrEqual(value) {
|
|
33
|
-
return new
|
|
33
|
+
return new DexieCollection(this.clause.aboveOrEqual(value));
|
|
34
34
|
}
|
|
35
35
|
below(value) {
|
|
36
|
-
return new
|
|
36
|
+
return new DexieCollection(this.clause.below(value));
|
|
37
37
|
}
|
|
38
38
|
belowOrEqual(value) {
|
|
39
|
-
return new
|
|
39
|
+
return new DexieCollection(this.clause.belowOrEqual(value));
|
|
40
40
|
}
|
|
41
41
|
between(lower, upper, includeLower, includeUpper) {
|
|
42
|
-
return new
|
|
42
|
+
return new DexieCollection(this.clause.between(lower, upper, includeLower, includeUpper));
|
|
43
43
|
}
|
|
44
44
|
inAnyRange(ranges, options) {
|
|
45
45
|
const normalizedOptions = options ? {
|
|
46
46
|
includeLowers: options.includeLower,
|
|
47
47
|
includeUppers: options.includeUpper
|
|
48
48
|
} : void 0;
|
|
49
|
-
return new
|
|
49
|
+
return new DexieCollection(this.clause.inAnyRange(ranges, normalizedOptions));
|
|
50
50
|
}
|
|
51
51
|
startsWith(prefix) {
|
|
52
|
-
return new
|
|
52
|
+
return new DexieCollection(this.clause.startsWith(prefix));
|
|
53
53
|
}
|
|
54
54
|
startsWithIgnoreCase(prefix) {
|
|
55
|
-
return new
|
|
55
|
+
return new DexieCollection(this.clause.startsWithIgnoreCase(prefix));
|
|
56
56
|
}
|
|
57
57
|
startsWithAnyOf(...args) {
|
|
58
58
|
const values = this.flattenArgs(args);
|
|
59
|
-
return new
|
|
59
|
+
return new DexieCollection(this.clause.startsWithAnyOf(...values));
|
|
60
60
|
}
|
|
61
61
|
startsWithAnyOfIgnoreCase(...args) {
|
|
62
62
|
const values = this.flattenArgs(args);
|
|
63
|
-
return new
|
|
63
|
+
return new DexieCollection(this.clause.startsWithAnyOfIgnoreCase(...values));
|
|
64
64
|
}
|
|
65
65
|
equalsIgnoreCase(value) {
|
|
66
|
-
return new
|
|
66
|
+
return new DexieCollection(this.clause.equalsIgnoreCase(value));
|
|
67
67
|
}
|
|
68
68
|
anyOf(...args) {
|
|
69
69
|
const values = this.flattenArgs(args);
|
|
70
|
-
return new
|
|
70
|
+
return new DexieCollection(this.clause.anyOf(...values));
|
|
71
71
|
}
|
|
72
72
|
anyOfIgnoreCase(...args) {
|
|
73
73
|
const values = this.flattenArgs(args);
|
|
74
|
-
return new
|
|
74
|
+
return new DexieCollection(this.clause.anyOfIgnoreCase(...values));
|
|
75
75
|
}
|
|
76
76
|
noneOf(...args) {
|
|
77
77
|
const values = this.flattenArgs(args);
|
|
78
|
-
return new
|
|
78
|
+
return new DexieCollection(this.clause.noneOf(values));
|
|
79
79
|
}
|
|
80
80
|
notEqual(value) {
|
|
81
|
-
return new
|
|
81
|
+
return new DexieCollection(this.clause.notEqual(value));
|
|
82
82
|
}
|
|
83
83
|
flattenArgs(args) {
|
|
84
84
|
if (args.length === 1 && Array.isArray(args[0])) {
|
|
@@ -88,8 +88,8 @@ var DexieStorageWhereClause = class {
|
|
|
88
88
|
}
|
|
89
89
|
};
|
|
90
90
|
|
|
91
|
-
// src/storage/dexie/
|
|
92
|
-
var
|
|
91
|
+
// src/storage/dexie/DexieCollection.ts
|
|
92
|
+
var DexieCollection = class _DexieCollection {
|
|
93
93
|
collection;
|
|
94
94
|
constructor(collection) {
|
|
95
95
|
this.collection = collection;
|
|
@@ -152,25 +152,25 @@ var DexieStorageCollection = class _DexieStorageCollection {
|
|
|
152
152
|
return this.collection.sortBy(key);
|
|
153
153
|
}
|
|
154
154
|
distinct() {
|
|
155
|
-
return new
|
|
155
|
+
return new _DexieCollection(this.collection.distinct());
|
|
156
156
|
}
|
|
157
157
|
jsFilter(predicate) {
|
|
158
|
-
return new
|
|
158
|
+
return new _DexieCollection(this.collection.filter(predicate));
|
|
159
159
|
}
|
|
160
160
|
or(index) {
|
|
161
|
-
return new
|
|
161
|
+
return new DexieWhereClause(this.collection.or(normalizeIndexName(index)));
|
|
162
162
|
}
|
|
163
163
|
clone(props) {
|
|
164
|
-
return new
|
|
164
|
+
return new _DexieCollection(this.collection.clone(props));
|
|
165
165
|
}
|
|
166
166
|
reverse() {
|
|
167
|
-
return new
|
|
167
|
+
return new _DexieCollection(this.collection.reverse());
|
|
168
168
|
}
|
|
169
169
|
offset(offset) {
|
|
170
|
-
return new
|
|
170
|
+
return new _DexieCollection(this.collection.offset(offset));
|
|
171
171
|
}
|
|
172
172
|
limit(count) {
|
|
173
|
-
return new
|
|
173
|
+
return new _DexieCollection(this.collection.limit(count));
|
|
174
174
|
}
|
|
175
175
|
toCollection() {
|
|
176
176
|
return this.clone();
|
|
@@ -186,8 +186,8 @@ var DexieStorageCollection = class _DexieStorageCollection {
|
|
|
186
186
|
}
|
|
187
187
|
};
|
|
188
188
|
|
|
189
|
-
// src/storage/dexie/
|
|
190
|
-
var
|
|
189
|
+
// src/storage/dexie/DexieTable.ts
|
|
190
|
+
var DexieTable = class {
|
|
191
191
|
name;
|
|
192
192
|
schema;
|
|
193
193
|
primaryKey;
|
|
@@ -198,8 +198,8 @@ var DexieStorageTable = class {
|
|
|
198
198
|
update: (key, changes) => this.table.update(key, changes),
|
|
199
199
|
delete: (key) => this.table.delete(key),
|
|
200
200
|
get: (key) => this.table.get(key),
|
|
201
|
-
bulkAdd: (items) => this.table.bulkAdd(items),
|
|
202
|
-
bulkPut: (items) => this.table.bulkPut(items),
|
|
201
|
+
bulkAdd: (items) => this.table.bulkAdd(items, { allKeys: true }),
|
|
202
|
+
bulkPut: (items) => this.table.bulkPut(items, { allKeys: true }),
|
|
203
203
|
bulkUpdate: (keysAndChanges) => this.table.bulkUpdate(keysAndChanges),
|
|
204
204
|
bulkDelete: (keys) => this.table.bulkDelete(keys),
|
|
205
205
|
clear: () => this.table.clear()
|
|
@@ -237,10 +237,10 @@ var DexieStorageTable = class {
|
|
|
237
237
|
return this.table.count();
|
|
238
238
|
}
|
|
239
239
|
bulkAdd(items) {
|
|
240
|
-
return this.table.bulkAdd(items);
|
|
240
|
+
return this.table.bulkAdd(items, { allKeys: true });
|
|
241
241
|
}
|
|
242
242
|
bulkPut(items) {
|
|
243
|
-
return this.table.bulkPut(items);
|
|
243
|
+
return this.table.bulkPut(items, { allKeys: true });
|
|
244
244
|
}
|
|
245
245
|
bulkGet(keys) {
|
|
246
246
|
return this.table.bulkGet(keys);
|
|
@@ -252,19 +252,19 @@ var DexieStorageTable = class {
|
|
|
252
252
|
return this.table.bulkDelete(keys);
|
|
253
253
|
}
|
|
254
254
|
where(index) {
|
|
255
|
-
return new
|
|
255
|
+
return new DexieWhereClause(this.table.where(normalizeIndexName(index)));
|
|
256
256
|
}
|
|
257
257
|
orderBy(index) {
|
|
258
|
-
return new
|
|
258
|
+
return new DexieCollection(this.table.orderBy(normalizeIndexName(index)));
|
|
259
259
|
}
|
|
260
260
|
reverse() {
|
|
261
|
-
return new
|
|
261
|
+
return new DexieCollection(this.table.reverse());
|
|
262
262
|
}
|
|
263
263
|
offset(offset) {
|
|
264
|
-
return new
|
|
264
|
+
return new DexieCollection(this.table.offset(offset));
|
|
265
265
|
}
|
|
266
266
|
limit(count) {
|
|
267
|
-
return new
|
|
267
|
+
return new DexieCollection(this.table.limit(count));
|
|
268
268
|
}
|
|
269
269
|
mapToClass(ctor) {
|
|
270
270
|
this.table.mapToClass(ctor);
|
|
@@ -278,7 +278,7 @@ var DexieStorageTable = class {
|
|
|
278
278
|
await Promise.all(tasks.map((task) => task ? Promise.resolve(task) : Promise.resolve()));
|
|
279
279
|
}
|
|
280
280
|
jsFilter(predicate) {
|
|
281
|
-
return new
|
|
281
|
+
return new DexieCollection(this.table.filter(predicate));
|
|
282
282
|
}
|
|
283
283
|
};
|
|
284
284
|
|
|
@@ -322,7 +322,7 @@ var DexieAdapter = class {
|
|
|
322
322
|
table(name) {
|
|
323
323
|
if (!this.tableCache.has(name)) {
|
|
324
324
|
const table = this.db.table(name);
|
|
325
|
-
this.tableCache.set(name, new
|
|
325
|
+
this.tableCache.set(name, new DexieTable(table));
|
|
326
326
|
}
|
|
327
327
|
return this.tableCache.get(name);
|
|
328
328
|
}
|
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/DexieStorageWhereClause.ts","../src/storage/dexie/DexieStorageCollection.ts","../src/storage/dexie/DexieStorageTable.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 { DexieStorageTable } from './DexieStorageTable';\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 DexieStorageTable(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 as DexieWhereClause } from 'dexie';\nimport type { StorageCollection, StorageWhereClause } from '../types';\nimport { DexieStorageCollection } from './DexieStorageCollection';\n\nexport class DexieStorageWhereClause<T = any> implements StorageWhereClause<T> {\n private readonly clause: DexieWhereClause<T, any, T>;\n\n constructor(clause: DexieWhereClause<T, any, T>) {\n this.clause = clause;\n }\n\n equals(value: any): StorageCollection<T> {\n return new DexieStorageCollection(this.clause.equals(value));\n }\n\n above(value: any): StorageCollection<T> {\n return new DexieStorageCollection(this.clause.above(value));\n }\n\n aboveOrEqual(value: any): StorageCollection<T> {\n return new DexieStorageCollection(this.clause.aboveOrEqual(value));\n }\n\n below(value: any): StorageCollection<T> {\n return new DexieStorageCollection(this.clause.below(value));\n }\n\n belowOrEqual(value: any): StorageCollection<T> {\n return new DexieStorageCollection(this.clause.belowOrEqual(value));\n }\n\n between(lower: any, upper: any, includeLower?: boolean, includeUpper?: boolean): StorageCollection<T> {\n return new DexieStorageCollection(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 DexieStorageCollection(this.clause.inAnyRange(ranges as any, normalizedOptions));\n }\n\n startsWith(prefix: string): StorageCollection<T> {\n return new DexieStorageCollection(this.clause.startsWith(prefix));\n }\n\n startsWithIgnoreCase(prefix: string): StorageCollection<T> {\n return new DexieStorageCollection(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 DexieStorageCollection(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 DexieStorageCollection(this.clause.startsWithAnyOfIgnoreCase(...values));\n }\n\n equalsIgnoreCase(value: string): StorageCollection<T> {\n return new DexieStorageCollection(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 DexieStorageCollection(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 DexieStorageCollection(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 DexieStorageCollection(this.clause.noneOf(values as any));\n }\n\n notEqual(value: any): StorageCollection<T> {\n return new DexieStorageCollection(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 as DexieCollection } from 'dexie';\nimport type { StorageCollection, StorageWhereClause } from '../types';\nimport { normalizeIndexName } from './helpers';\nimport { DexieStorageWhereClause } from './DexieStorageWhereClause';\n\nexport class DexieStorageCollection<T = any> implements StorageCollection<T> {\n private readonly collection: DexieCollection<T, any, T>;\n\n constructor(collection: DexieCollection<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 DexieStorageCollection(this.collection.distinct());\n }\n\n jsFilter(predicate: (item: T) => boolean): StorageCollection<T> {\n return new DexieStorageCollection(this.collection.filter(predicate));\n }\n\n or(index: string): StorageWhereClause<T> {\n return new DexieStorageWhereClause(this.collection.or(normalizeIndexName(index)));\n }\n\n clone(props?: Record<string, unknown>): StorageCollection<T> {\n return new DexieStorageCollection(this.collection.clone(props));\n }\n\n reverse(): StorageCollection<T> {\n return new DexieStorageCollection(this.collection.reverse());\n }\n\n offset(offset: number): StorageCollection<T> {\n return new DexieStorageCollection(this.collection.offset(offset));\n }\n\n limit(count: number): StorageCollection<T> {\n return new DexieStorageCollection(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 as DexieTable } from 'dexie';\nimport type { StorageCollection, StorageTable, StorageWhereClause } from '../types';\nimport { normalizeIndexName } from './helpers';\nimport { DexieStorageCollection } from './DexieStorageCollection';\nimport { DexieStorageWhereClause } from './DexieStorageWhereClause';\n\nexport class DexieStorageTable<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) => this.table.add(item),\n put: (item: T) => this.table.put(item),\n update: (key: unknown, changes: Partial<T>) => this.table.update(key as any, changes as any),\n delete: (key: unknown) => this.table.delete(key as any),\n get: (key: unknown) => this.table.get(key as any),\n bulkAdd: (items: T[]) => this.table.bulkAdd(items),\n bulkPut: (items: T[]) => this.table.bulkPut(items),\n bulkUpdate: (keysAndChanges: Array<{ key: unknown; changes: Partial<T> }>) => this.table.bulkUpdate(keysAndChanges as any),\n bulkDelete: (keys: Array<unknown>) => this.table.bulkDelete(keys as any),\n clear: () => this.table.clear(),\n });\n\n private readonly table: DexieTable<T, any, T>;\n\n constructor(table: DexieTable<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: T): Promise<unknown> {\n return this.table.add(item);\n }\n\n put(item: T): Promise<unknown> {\n return this.table.put(item);\n }\n\n update(key: unknown, changes: Partial<T>): Promise<number> {\n return this.table.update(key as any, changes as any);\n }\n\n delete(key: unknown): 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: unknown): 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: T[]): Promise<unknown> {\n return this.table.bulkAdd(items);\n }\n\n bulkPut(items: T[]): Promise<unknown> {\n return this.table.bulkPut(items);\n }\n\n bulkGet(keys: Array<unknown>): Promise<Array<T | undefined>> {\n return this.table.bulkGet(keys as any);\n }\n\n bulkUpdate(keysAndChanges: Array<{ key: unknown; changes: Partial<T> }>): Promise<number> {\n return this.table.bulkUpdate(keysAndChanges as any);\n }\n\n bulkDelete(keys: Array<unknown>): Promise<void> {\n return this.table.bulkDelete(keys as any);\n }\n\n where(index: string | string[]): StorageWhereClause<T> {\n return new DexieStorageWhereClause(this.table.where(normalizeIndexName(index)));\n }\n\n orderBy(index: string | string[]): StorageCollection<T> {\n return new DexieStorageCollection(this.table.orderBy(normalizeIndexName(index)));\n }\n\n reverse(): StorageCollection<T> {\n return new DexieStorageCollection(this.table.reverse());\n }\n\n offset(offset: number): StorageCollection<T> {\n return new DexieStorageCollection(this.table.offset(offset));\n }\n\n limit(count: number): StorageCollection<T> {\n return new DexieStorageCollection(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 DexieStorageCollection(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 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":[]}
|
package/dist/index.cjs
CHANGED
|
@@ -513,7 +513,7 @@ function enhanceSyncTable({ table, tableName, withTransaction, state, enhancedTa
|
|
|
513
513
|
}
|
|
514
514
|
};
|
|
515
515
|
const wrappedBulkAdd = async (items) => {
|
|
516
|
-
if (items.length === 0) return;
|
|
516
|
+
if (items.length === 0) return [];
|
|
517
517
|
const now = (/* @__PURE__ */ new Date()).toISOString();
|
|
518
518
|
const syncedItems = items.map((item) => {
|
|
519
519
|
const localId = item._localId || createLocalId();
|
|
@@ -541,7 +541,7 @@ function enhanceSyncTable({ table, tableName, withTransaction, state, enhancedTa
|
|
|
541
541
|
return result;
|
|
542
542
|
};
|
|
543
543
|
const wrappedBulkPut = async (items) => {
|
|
544
|
-
if (items.length === 0) return;
|
|
544
|
+
if (items.length === 0) return [];
|
|
545
545
|
const now = (/* @__PURE__ */ new Date()).toISOString();
|
|
546
546
|
const syncedItems = items.map((item) => {
|
|
547
547
|
const localId = item._localId || createLocalId();
|
|
@@ -2047,23 +2047,23 @@ var MemoryTable = class {
|
|
|
2047
2047
|
return this.baseBulkAdd(items);
|
|
2048
2048
|
}
|
|
2049
2049
|
baseBulkAdd(items) {
|
|
2050
|
-
|
|
2050
|
+
const keys = [];
|
|
2051
2051
|
for (let index = 0; index < items.length; index += 1) {
|
|
2052
2052
|
const item = items[index];
|
|
2053
|
-
|
|
2053
|
+
keys.push(this.baseAdd(item));
|
|
2054
2054
|
}
|
|
2055
|
-
return
|
|
2055
|
+
return keys;
|
|
2056
2056
|
}
|
|
2057
2057
|
async bulkPut(items) {
|
|
2058
2058
|
return this.baseBulkPut(items);
|
|
2059
2059
|
}
|
|
2060
2060
|
baseBulkPut(items) {
|
|
2061
|
-
|
|
2061
|
+
const keys = [];
|
|
2062
2062
|
for (let index = 0; index < items.length; index += 1) {
|
|
2063
2063
|
const item = items[index];
|
|
2064
|
-
|
|
2064
|
+
keys.push(this.basePut(item));
|
|
2065
2065
|
}
|
|
2066
|
-
return
|
|
2066
|
+
return keys;
|
|
2067
2067
|
}
|
|
2068
2068
|
async bulkGet(keys) {
|
|
2069
2069
|
return Promise.all(keys.map((key) => this.get(key)));
|
|
@@ -3283,12 +3283,12 @@ var SQLiteTable = class {
|
|
|
3283
3283
|
return this.baseBulkAdd(items);
|
|
3284
3284
|
}
|
|
3285
3285
|
async baseBulkAdd(items) {
|
|
3286
|
-
if (!items.length) return
|
|
3286
|
+
if (!items.length) return [];
|
|
3287
3287
|
const columns = this.columnNames;
|
|
3288
3288
|
const columnCount = columns.length;
|
|
3289
3289
|
const maxParamsPerBatch = 500;
|
|
3290
3290
|
const batchSize = Math.max(1, Math.floor(maxParamsPerBatch / columnCount));
|
|
3291
|
-
|
|
3291
|
+
const allKeys = [];
|
|
3292
3292
|
for (let i = 0; i < items.length; i += batchSize) {
|
|
3293
3293
|
const batch = items.slice(i, i + batchSize);
|
|
3294
3294
|
const records = batch.map((item) => this.prepareRecordForWrite(item));
|
|
@@ -3297,25 +3297,25 @@ var SQLiteTable = class {
|
|
|
3297
3297
|
const values = [];
|
|
3298
3298
|
for (const record of records) {
|
|
3299
3299
|
values.push(...this.extractColumnValues(record));
|
|
3300
|
+
allKeys.push(record[LOCAL_PK]);
|
|
3300
3301
|
}
|
|
3301
3302
|
await this.adapter.run(
|
|
3302
3303
|
`INSERT INTO ${quoteIdentifier(this.name)} (${columns.map((c) => quoteIdentifier(c)).join(", ")}) VALUES ${placeholders}`,
|
|
3303
3304
|
values
|
|
3304
3305
|
);
|
|
3305
|
-
lastKey = records[records.length - 1][LOCAL_PK];
|
|
3306
3306
|
}
|
|
3307
|
-
return
|
|
3307
|
+
return allKeys;
|
|
3308
3308
|
}
|
|
3309
3309
|
async bulkPut(items) {
|
|
3310
3310
|
return this.baseBulkPut(items);
|
|
3311
3311
|
}
|
|
3312
3312
|
async baseBulkPut(items) {
|
|
3313
|
-
if (!items.length) return
|
|
3313
|
+
if (!items.length) return [];
|
|
3314
3314
|
const columns = this.columnNames;
|
|
3315
3315
|
const columnCount = columns.length;
|
|
3316
3316
|
const maxParamsPerBatch = 500;
|
|
3317
3317
|
const batchSize = Math.max(1, Math.floor(maxParamsPerBatch / columnCount));
|
|
3318
|
-
|
|
3318
|
+
const allKeys = [];
|
|
3319
3319
|
for (let i = 0; i < items.length; i += batchSize) {
|
|
3320
3320
|
const batch = items.slice(i, i + batchSize);
|
|
3321
3321
|
const records = batch.map((item) => this.prepareRecordForWrite(item));
|
|
@@ -3324,14 +3324,14 @@ var SQLiteTable = class {
|
|
|
3324
3324
|
const values = [];
|
|
3325
3325
|
for (const record of records) {
|
|
3326
3326
|
values.push(...this.extractColumnValues(record));
|
|
3327
|
+
allKeys.push(record[LOCAL_PK]);
|
|
3327
3328
|
}
|
|
3328
3329
|
await this.adapter.run(
|
|
3329
3330
|
`INSERT OR REPLACE INTO ${quoteIdentifier(this.name)} (${columns.map((c) => quoteIdentifier(c)).join(", ")}) VALUES ${placeholders}`,
|
|
3330
3331
|
values
|
|
3331
3332
|
);
|
|
3332
|
-
lastKey = records[records.length - 1][LOCAL_PK];
|
|
3333
3333
|
}
|
|
3334
|
-
return
|
|
3334
|
+
return allKeys;
|
|
3335
3335
|
}
|
|
3336
3336
|
async bulkGet(keys) {
|
|
3337
3337
|
if (!keys.length) return [];
|