remult 3.3.18 → 3.3.19-next.2
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/esm/index.js +7 -6
- package/esm/remult-d1.js +1 -0
- package/esm/remult-knex/index.js +112 -2
- package/esm/remult-mongo.js +17 -8
- package/esm/remult-sqlite-core.js +1 -0
- package/esm/src/data-interfaces.js +4 -4
- package/esm/src/data-providers/array-entity-data-provider.js +14 -2
- package/esm/src/data-providers/indexed-db-data-provider.js +811 -0
- package/esm/src/data-providers/json-data-provider.js +2 -2
- package/esm/src/data-providers/rest-data-provider.js +11 -12
- package/esm/src/data-providers/sql-database.js +110 -43
- package/esm/src/remult3/RepositoryImplementation.js +90 -60
- package/index.d.ts +31 -17
- package/index.js +5 -2
- package/package.json +1 -1
- package/remult-d1.d.ts +1 -0
- package/remult-d1.js +1 -0
- package/remult-knex/index.d.ts +2 -2
- package/remult-knex/index.js +329 -44
- package/remult-mongo.js +80 -36
- package/remult-sqlite-core.d.ts +1 -0
- package/remult-sqlite-core.js +1 -0
- package/src/column-interfaces.d.ts +4 -0
- package/src/data-interfaces.d.ts +2 -3
- package/src/data-interfaces.js +4 -4
- package/src/data-providers/array-entity-data-provider.d.ts +2 -2
- package/src/data-providers/array-entity-data-provider.js +92 -14
- package/src/data-providers/indexed-db-data-provider.d.ts +39 -0
- package/src/data-providers/indexed-db-data-provider.js +1387 -0
- package/src/data-providers/json-data-provider.js +2 -2
- package/src/data-providers/rest-data-provider.d.ts +2 -3
- package/src/data-providers/rest-data-provider.js +18 -17
- package/src/data-providers/sql-database.js +254 -105
- package/src/remult3/RepositoryImplementation.d.ts +1 -1
- package/src/remult3/RepositoryImplementation.js +384 -270
- package/src/remult3/remult3.d.ts +2 -2
- package/src/sql-command.d.ts +2 -0
- package/src/standard-schema/index.d.ts +1 -1
package/remult-mongo.js
CHANGED
|
@@ -521,23 +521,27 @@ var MongoEntityDataProvider = /** @class */ (function () {
|
|
|
521
521
|
});
|
|
522
522
|
});
|
|
523
523
|
};
|
|
524
|
-
MongoEntityDataProvider.prototype.delete = function (
|
|
524
|
+
MongoEntityDataProvider.prototype.delete = function (ids) {
|
|
525
525
|
return tslib_1.__awaiter(this, void 0, void 0, function () {
|
|
526
526
|
var _a, e, collection, f, _b, _c;
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
527
|
+
var _d;
|
|
528
|
+
return tslib_1.__generator(this, function (_e) {
|
|
529
|
+
switch (_e.label) {
|
|
530
|
+
case 0:
|
|
531
|
+
if (ids.length === 0)
|
|
532
|
+
return [2 /*return*/];
|
|
533
|
+
return [4 /*yield*/, this.collection()];
|
|
530
534
|
case 1:
|
|
531
|
-
_a =
|
|
535
|
+
_a = _e.sent(), e = _a.e, collection = _a.collection;
|
|
532
536
|
f = new FilterConsumerBridgeToMongo(e);
|
|
533
|
-
index_js_1.Filter.fromEntityFilter(this.entity, this.entity.idMetadata.getIdFilter(
|
|
534
|
-
_c = (_b = collection).
|
|
537
|
+
index_js_1.Filter.fromEntityFilter(this.entity, (_d = this.entity.idMetadata).getIdFilter.apply(_d, tslib_1.__spreadArray([], tslib_1.__read(ids), false))).__applyToConsumer(f);
|
|
538
|
+
_c = (_b = collection).deleteMany;
|
|
535
539
|
return [4 /*yield*/, f.resolveWhere()];
|
|
536
|
-
case 2: return [4 /*yield*/, _c.apply(_b, [
|
|
540
|
+
case 2: return [4 /*yield*/, _c.apply(_b, [_e.sent(), {
|
|
537
541
|
session: this.session,
|
|
538
542
|
}])];
|
|
539
543
|
case 3:
|
|
540
|
-
|
|
544
|
+
_e.sent();
|
|
541
545
|
return [2 /*return*/];
|
|
542
546
|
}
|
|
543
547
|
});
|
|
@@ -545,25 +549,65 @@ var MongoEntityDataProvider = /** @class */ (function () {
|
|
|
545
549
|
};
|
|
546
550
|
MongoEntityDataProvider.prototype.insert = function (data, options) {
|
|
547
551
|
return tslib_1.__awaiter(this, void 0, void 0, function () {
|
|
548
|
-
var _a, collection, e,
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
552
|
+
var _a, collection, e, docs, data_1, data_1_1, row, _b, _c, e_12_1, r, result, i, _d, _e, _f;
|
|
553
|
+
var e_12, _g;
|
|
554
|
+
return tslib_1.__generator(this, function (_h) {
|
|
555
|
+
switch (_h.label) {
|
|
556
|
+
case 0:
|
|
557
|
+
if (data.length === 0)
|
|
558
|
+
return [2 /*return*/, []];
|
|
559
|
+
return [4 /*yield*/, this.collection()];
|
|
552
560
|
case 1:
|
|
553
|
-
_a =
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
case 2:
|
|
557
|
-
|
|
558
|
-
|
|
561
|
+
_a = _h.sent(), collection = _a.collection, e = _a.e;
|
|
562
|
+
docs = [];
|
|
563
|
+
_h.label = 2;
|
|
564
|
+
case 2:
|
|
565
|
+
_h.trys.push([2, 7, 8, 9]);
|
|
566
|
+
data_1 = tslib_1.__values(data), data_1_1 = data_1.next();
|
|
567
|
+
_h.label = 3;
|
|
559
568
|
case 3:
|
|
560
|
-
|
|
569
|
+
if (!!data_1_1.done) return [3 /*break*/, 6];
|
|
570
|
+
row = data_1_1.value;
|
|
571
|
+
_c = (_b = docs).push;
|
|
572
|
+
return [4 /*yield*/, this.translateToDb(row, e)];
|
|
573
|
+
case 4:
|
|
574
|
+
_c.apply(_b, [_h.sent()]);
|
|
575
|
+
_h.label = 5;
|
|
576
|
+
case 5:
|
|
577
|
+
data_1_1 = data_1.next();
|
|
578
|
+
return [3 /*break*/, 3];
|
|
579
|
+
case 6: return [3 /*break*/, 9];
|
|
580
|
+
case 7:
|
|
581
|
+
e_12_1 = _h.sent();
|
|
582
|
+
e_12 = { error: e_12_1 };
|
|
583
|
+
return [3 /*break*/, 9];
|
|
584
|
+
case 8:
|
|
585
|
+
try {
|
|
586
|
+
if (data_1_1 && !data_1_1.done && (_g = data_1.return)) _g.call(data_1);
|
|
587
|
+
}
|
|
588
|
+
finally { if (e_12) throw e_12.error; }
|
|
589
|
+
return [7 /*endfinally*/];
|
|
590
|
+
case 9: return [4 /*yield*/, collection.insertMany(docs, { session: this.session })];
|
|
591
|
+
case 10:
|
|
592
|
+
r = _h.sent();
|
|
561
593
|
if ((options === null || options === void 0 ? void 0 : options.select) === 'none')
|
|
562
|
-
return [2 /*return*/, undefined];
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
case
|
|
594
|
+
return [2 /*return*/, data.map(function () { return undefined; })];
|
|
595
|
+
result = [];
|
|
596
|
+
i = 0;
|
|
597
|
+
_h.label = 11;
|
|
598
|
+
case 11:
|
|
599
|
+
if (!(i < data.length)) return [3 /*break*/, 15];
|
|
600
|
+
_e = (_d = result).push;
|
|
601
|
+
_f = this.translateFromDb;
|
|
602
|
+
return [4 /*yield*/, collection.findOne({ _id: r.insertedIds[i] }, { session: this.session })];
|
|
603
|
+
case 12: return [4 /*yield*/, _f.apply(this, [_h.sent(), e])];
|
|
604
|
+
case 13:
|
|
605
|
+
_e.apply(_d, [_h.sent()]);
|
|
606
|
+
_h.label = 14;
|
|
607
|
+
case 14:
|
|
608
|
+
i++;
|
|
609
|
+
return [3 /*break*/, 11];
|
|
610
|
+
case 15: return [2 /*return*/, result];
|
|
567
611
|
}
|
|
568
612
|
});
|
|
569
613
|
});
|
|
@@ -593,8 +637,8 @@ var FilterConsumerBridgeToMongo = /** @class */ (function () {
|
|
|
593
637
|
}
|
|
594
638
|
FilterConsumerBridgeToMongo.prototype.resolveWhere = function () {
|
|
595
639
|
return tslib_1.__awaiter(this, void 0, void 0, function () {
|
|
596
|
-
var p, p_1, p_1_1, pr,
|
|
597
|
-
var
|
|
640
|
+
var p, p_1, p_1_1, pr, e_13_1;
|
|
641
|
+
var e_13, _a;
|
|
598
642
|
return tslib_1.__generator(this, function (_b) {
|
|
599
643
|
switch (_b.label) {
|
|
600
644
|
case 0:
|
|
@@ -604,7 +648,7 @@ var FilterConsumerBridgeToMongo = /** @class */ (function () {
|
|
|
604
648
|
_b.label = 1;
|
|
605
649
|
case 1:
|
|
606
650
|
_b.trys.push([1, 6, 7, 8]);
|
|
607
|
-
p_1 = (
|
|
651
|
+
p_1 = (e_13 = void 0, tslib_1.__values(p)), p_1_1 = p_1.next();
|
|
608
652
|
_b.label = 2;
|
|
609
653
|
case 2:
|
|
610
654
|
if (!!p_1_1.done) return [3 /*break*/, 5];
|
|
@@ -618,14 +662,14 @@ var FilterConsumerBridgeToMongo = /** @class */ (function () {
|
|
|
618
662
|
return [3 /*break*/, 2];
|
|
619
663
|
case 5: return [3 /*break*/, 8];
|
|
620
664
|
case 6:
|
|
621
|
-
|
|
622
|
-
|
|
665
|
+
e_13_1 = _b.sent();
|
|
666
|
+
e_13 = { error: e_13_1 };
|
|
623
667
|
return [3 /*break*/, 8];
|
|
624
668
|
case 7:
|
|
625
669
|
try {
|
|
626
670
|
if (p_1_1 && !p_1_1.done && (_a = p_1.return)) _a.call(p_1);
|
|
627
671
|
}
|
|
628
|
-
finally { if (
|
|
672
|
+
finally { if (e_13) throw e_13.error; }
|
|
629
673
|
return [7 /*endfinally*/];
|
|
630
674
|
case 8: return [3 /*break*/, 0];
|
|
631
675
|
case 9:
|
|
@@ -644,8 +688,8 @@ var FilterConsumerBridgeToMongo = /** @class */ (function () {
|
|
|
644
688
|
FilterConsumerBridgeToMongo.prototype.or = function (orElements) {
|
|
645
689
|
var _this = this;
|
|
646
690
|
this.promises.push((function () { return tslib_1.__awaiter(_this, void 0, void 0, function () {
|
|
647
|
-
var result, orElements_1, orElements_1_1, element, f, where,
|
|
648
|
-
var
|
|
691
|
+
var result, orElements_1, orElements_1_1, element, f, where, e_14_1;
|
|
692
|
+
var e_14, _a;
|
|
649
693
|
var _b;
|
|
650
694
|
return tslib_1.__generator(this, function (_c) {
|
|
651
695
|
switch (_c.label) {
|
|
@@ -676,14 +720,14 @@ var FilterConsumerBridgeToMongo = /** @class */ (function () {
|
|
|
676
720
|
return [3 /*break*/, 2];
|
|
677
721
|
case 5: return [3 /*break*/, 8];
|
|
678
722
|
case 6:
|
|
679
|
-
|
|
680
|
-
|
|
723
|
+
e_14_1 = _c.sent();
|
|
724
|
+
e_14 = { error: e_14_1 };
|
|
681
725
|
return [3 /*break*/, 8];
|
|
682
726
|
case 7:
|
|
683
727
|
try {
|
|
684
728
|
if (orElements_1_1 && !orElements_1_1.done && (_a = orElements_1.return)) _a.call(orElements_1);
|
|
685
729
|
}
|
|
686
|
-
finally { if (
|
|
730
|
+
finally { if (e_14) throw e_14.error; }
|
|
687
731
|
return [7 /*endfinally*/];
|
|
688
732
|
case 8:
|
|
689
733
|
this.result.push(function () { return ({
|
package/remult-sqlite-core.d.ts
CHANGED
|
@@ -9,6 +9,7 @@ export declare class SqliteCoreDataProvider implements SqlImplementation, CanBui
|
|
|
9
9
|
doesNotSupportReturningSyntaxOnlyForUpdate: boolean;
|
|
10
10
|
constructor(createCommand: () => SqlCommand, end: () => Promise<void>, doesNotSupportReturningSyntax?: boolean, doesNotSupportReturningSyntaxOnlyForUpdate?: boolean);
|
|
11
11
|
orderByNullsFirst?: boolean;
|
|
12
|
+
maxParametersInOneSqlStatement: number;
|
|
12
13
|
getLimitSqlSyntax(limit: number, offset: number): string;
|
|
13
14
|
afterMutation?: VoidFunction;
|
|
14
15
|
provideMigrationBuilder(builder: MigrationCode): MigrationBuilder;
|
package/remult-sqlite-core.js
CHANGED
|
@@ -13,6 +13,7 @@ var SqliteCoreDataProvider = /** @class */ (function () {
|
|
|
13
13
|
this.end = end;
|
|
14
14
|
this.doesNotSupportReturningSyntax = doesNotSupportReturningSyntax;
|
|
15
15
|
this.doesNotSupportReturningSyntaxOnlyForUpdate = doesNotSupportReturningSyntaxOnlyForUpdate;
|
|
16
|
+
this.maxParametersInOneSqlStatement = 999;
|
|
16
17
|
}
|
|
17
18
|
SqliteCoreDataProvider.prototype.getLimitSqlSyntax = function (limit, offset) {
|
|
18
19
|
return ' limit ' + limit + ' offset ' + offset;
|
|
@@ -276,6 +276,7 @@ export interface ValueConverter<valueType> {
|
|
|
276
276
|
toJson?(val: valueType): any;
|
|
277
277
|
/**
|
|
278
278
|
* Converts a value from the database format to the valueType.
|
|
279
|
+
* Defaults to `fromJson` when not provided.
|
|
279
280
|
*
|
|
280
281
|
* @param val The value to convert.
|
|
281
282
|
* @returns The converted value.
|
|
@@ -286,6 +287,7 @@ export interface ValueConverter<valueType> {
|
|
|
286
287
|
fromDb?(val: any): valueType;
|
|
287
288
|
/**
|
|
288
289
|
* Converts a value of valueType to the database format.
|
|
290
|
+
* Defaults to `toJson` when not provided.
|
|
289
291
|
*
|
|
290
292
|
* @param val The value to convert.
|
|
291
293
|
* @returns The converted value.
|
|
@@ -297,6 +299,7 @@ export interface ValueConverter<valueType> {
|
|
|
297
299
|
toDbSql?(val: string): string;
|
|
298
300
|
/**
|
|
299
301
|
* Converts a value of valueType to a string suitable for an HTML input element.
|
|
302
|
+
* Defaults to `toJson` when not provided.
|
|
300
303
|
*
|
|
301
304
|
* @param val The value to convert.
|
|
302
305
|
* @param inputType The type of the input element (optional).
|
|
@@ -308,6 +311,7 @@ export interface ValueConverter<valueType> {
|
|
|
308
311
|
toInput?(val: valueType, inputType?: string): string;
|
|
309
312
|
/**
|
|
310
313
|
* Converts a string from an HTML input element to the valueType.
|
|
314
|
+
* Defaults to `fromJson` when not provided.
|
|
311
315
|
*
|
|
312
316
|
* @param val The value to convert.
|
|
313
317
|
* @param inputType The type of the input element (optional).
|
package/src/data-interfaces.d.ts
CHANGED
|
@@ -29,11 +29,10 @@ export interface EntityDataProvider {
|
|
|
29
29
|
find(options?: EntityDataProviderFindOptions): Promise<Array<any>>;
|
|
30
30
|
groupBy(options?: EntityDataProviderGroupByOptions): Promise<any[]>;
|
|
31
31
|
update(id: any, data: any, options?: InsertOrUpdateOptions): Promise<any>;
|
|
32
|
-
delete(
|
|
33
|
-
insert(data: any, options?: InsertOrUpdateOptions): Promise<any>;
|
|
32
|
+
delete(ids: any[]): Promise<void>;
|
|
33
|
+
insert(data: any[], options?: InsertOrUpdateOptions): Promise<any[]>;
|
|
34
34
|
}
|
|
35
35
|
export interface ProxyEntityDataProvider {
|
|
36
|
-
insertMany(data: any[], options?: InsertOrUpdateOptions): Promise<any[]>;
|
|
37
36
|
deleteMany(where: Filter | 'all'): Promise<number>;
|
|
38
37
|
updateMany(where: Filter | 'all', data: any): Promise<number>;
|
|
39
38
|
query(options: EntityDataProviderFindOptions, aggregateOptions: EntityDataProviderGroupByOptions): Promise<{
|
package/src/data-interfaces.js
CHANGED
|
@@ -44,11 +44,11 @@ var EntityDataProviderPromiseWrapper = /** @class */ (function () {
|
|
|
44
44
|
function EntityDataProviderPromiseWrapper(dataProvider) {
|
|
45
45
|
this.dataProvider = dataProvider;
|
|
46
46
|
}
|
|
47
|
-
EntityDataProviderPromiseWrapper.prototype.delete = function (
|
|
48
|
-
return this.dataProvider.then(function (dp) { return dp.delete(
|
|
47
|
+
EntityDataProviderPromiseWrapper.prototype.delete = function (ids) {
|
|
48
|
+
return this.dataProvider.then(function (dp) { return dp.delete(ids); });
|
|
49
49
|
};
|
|
50
|
-
EntityDataProviderPromiseWrapper.prototype.insert = function (data) {
|
|
51
|
-
return this.dataProvider.then(function (dp) { return dp.insert(data); });
|
|
50
|
+
EntityDataProviderPromiseWrapper.prototype.insert = function (data, options) {
|
|
51
|
+
return this.dataProvider.then(function (dp) { return dp.insert(data, options); });
|
|
52
52
|
};
|
|
53
53
|
EntityDataProviderPromiseWrapper.prototype.count = function (where) {
|
|
54
54
|
return this.dataProvider.then(function (dp) { return dp.count(where); });
|
|
@@ -10,8 +10,8 @@ export declare class ArrayEntityDataProvider implements EntityDataProvider {
|
|
|
10
10
|
count(where?: Filter): Promise<number>;
|
|
11
11
|
find(options?: EntityDataProviderFindOptions): Promise<any[]>;
|
|
12
12
|
update(id: any, data: any): Promise<any>;
|
|
13
|
-
delete(
|
|
14
|
-
insert(data: any): Promise<any>;
|
|
13
|
+
delete(ids: any[]): Promise<void>;
|
|
14
|
+
insert(data: any[]): Promise<any[]>;
|
|
15
15
|
}
|
|
16
16
|
export type CustomArrayFilter = (item: any) => boolean;
|
|
17
17
|
export interface CustomArrayFilterObject {
|
|
@@ -539,7 +539,44 @@ var ArrayEntityDataProvider = /** @class */ (function () {
|
|
|
539
539
|
});
|
|
540
540
|
});
|
|
541
541
|
};
|
|
542
|
-
ArrayEntityDataProvider.prototype.delete = function (
|
|
542
|
+
ArrayEntityDataProvider.prototype.delete = function (ids) {
|
|
543
|
+
return tslib_1.__awaiter(this, void 0, void 0, function () {
|
|
544
|
+
var ids_1, ids_1_1, id, e_16_1;
|
|
545
|
+
var e_16, _a;
|
|
546
|
+
return tslib_1.__generator(this, function (_b) {
|
|
547
|
+
switch (_b.label) {
|
|
548
|
+
case 0:
|
|
549
|
+
_b.trys.push([0, 5, 6, 7]);
|
|
550
|
+
ids_1 = tslib_1.__values(ids), ids_1_1 = ids_1.next();
|
|
551
|
+
_b.label = 1;
|
|
552
|
+
case 1:
|
|
553
|
+
if (!!ids_1_1.done) return [3 /*break*/, 4];
|
|
554
|
+
id = ids_1_1.value;
|
|
555
|
+
return [4 /*yield*/, this.deleteOne(id)];
|
|
556
|
+
case 2:
|
|
557
|
+
_b.sent();
|
|
558
|
+
_b.label = 3;
|
|
559
|
+
case 3:
|
|
560
|
+
ids_1_1 = ids_1.next();
|
|
561
|
+
return [3 /*break*/, 1];
|
|
562
|
+
case 4: return [3 /*break*/, 7];
|
|
563
|
+
case 5:
|
|
564
|
+
e_16_1 = _b.sent();
|
|
565
|
+
e_16 = { error: e_16_1 };
|
|
566
|
+
return [3 /*break*/, 7];
|
|
567
|
+
case 6:
|
|
568
|
+
try {
|
|
569
|
+
if (ids_1_1 && !ids_1_1.done && (_a = ids_1.return)) _a.call(ids_1);
|
|
570
|
+
}
|
|
571
|
+
finally { if (e_16) throw e_16.error; }
|
|
572
|
+
return [7 /*endfinally*/];
|
|
573
|
+
case 7: return [2 /*return*/];
|
|
574
|
+
}
|
|
575
|
+
});
|
|
576
|
+
});
|
|
577
|
+
};
|
|
578
|
+
//@internal
|
|
579
|
+
ArrayEntityDataProvider.prototype.deleteOne = function (id) {
|
|
543
580
|
return tslib_1.__awaiter(this, void 0, void 0, function () {
|
|
544
581
|
var names, idMatches, i;
|
|
545
582
|
return tslib_1.__generator(this, function (_a) {
|
|
@@ -551,7 +588,7 @@ var ArrayEntityDataProvider = /** @class */ (function () {
|
|
|
551
588
|
for (i = 0; i < this.rows().length; i++) {
|
|
552
589
|
if (idMatches(this.rows()[i])) {
|
|
553
590
|
this.rows().splice(i, 1);
|
|
554
|
-
return [2 /*return
|
|
591
|
+
return [2 /*return*/];
|
|
555
592
|
}
|
|
556
593
|
}
|
|
557
594
|
throw new Error("ArrayEntityDataProvider: Couldn't find row with id \"".concat(id, "\" in entity \"").concat(this.entity.key, "\" to delete"));
|
|
@@ -560,9 +597,50 @@ var ArrayEntityDataProvider = /** @class */ (function () {
|
|
|
560
597
|
});
|
|
561
598
|
};
|
|
562
599
|
ArrayEntityDataProvider.prototype.insert = function (data) {
|
|
600
|
+
return tslib_1.__awaiter(this, void 0, void 0, function () {
|
|
601
|
+
var result, data_1, data_1_1, row, _a, _b, e_17_1;
|
|
602
|
+
var e_17, _c;
|
|
603
|
+
return tslib_1.__generator(this, function (_d) {
|
|
604
|
+
switch (_d.label) {
|
|
605
|
+
case 0:
|
|
606
|
+
result = [];
|
|
607
|
+
_d.label = 1;
|
|
608
|
+
case 1:
|
|
609
|
+
_d.trys.push([1, 6, 7, 8]);
|
|
610
|
+
data_1 = tslib_1.__values(data), data_1_1 = data_1.next();
|
|
611
|
+
_d.label = 2;
|
|
612
|
+
case 2:
|
|
613
|
+
if (!!data_1_1.done) return [3 /*break*/, 5];
|
|
614
|
+
row = data_1_1.value;
|
|
615
|
+
_b = (_a = result).push;
|
|
616
|
+
return [4 /*yield*/, this.insertOne(row)];
|
|
617
|
+
case 3:
|
|
618
|
+
_b.apply(_a, [_d.sent()]);
|
|
619
|
+
_d.label = 4;
|
|
620
|
+
case 4:
|
|
621
|
+
data_1_1 = data_1.next();
|
|
622
|
+
return [3 /*break*/, 2];
|
|
623
|
+
case 5: return [3 /*break*/, 8];
|
|
624
|
+
case 6:
|
|
625
|
+
e_17_1 = _d.sent();
|
|
626
|
+
e_17 = { error: e_17_1 };
|
|
627
|
+
return [3 /*break*/, 8];
|
|
628
|
+
case 7:
|
|
629
|
+
try {
|
|
630
|
+
if (data_1_1 && !data_1_1.done && (_c = data_1.return)) _c.call(data_1);
|
|
631
|
+
}
|
|
632
|
+
finally { if (e_17) throw e_17.error; }
|
|
633
|
+
return [7 /*endfinally*/];
|
|
634
|
+
case 8: return [2 /*return*/, result];
|
|
635
|
+
}
|
|
636
|
+
});
|
|
637
|
+
});
|
|
638
|
+
};
|
|
639
|
+
//@internal
|
|
640
|
+
ArrayEntityDataProvider.prototype.insertOne = function (data) {
|
|
563
641
|
return tslib_1.__awaiter(this, void 0, void 0, function () {
|
|
564
642
|
var names, j, idf, idDbName, _a, _b, row;
|
|
565
|
-
var
|
|
643
|
+
var e_18, _c;
|
|
566
644
|
var _this = this;
|
|
567
645
|
return tslib_1.__generator(this, function (_d) {
|
|
568
646
|
switch (_d.label) {
|
|
@@ -582,17 +660,17 @@ var ArrayEntityDataProvider = /** @class */ (function () {
|
|
|
582
660
|
j[idDbName] = row[idDbName] + 1;
|
|
583
661
|
}
|
|
584
662
|
}
|
|
585
|
-
catch (
|
|
663
|
+
catch (e_18_1) { e_18 = { error: e_18_1 }; }
|
|
586
664
|
finally {
|
|
587
665
|
try {
|
|
588
666
|
if (_b && !_b.done && (_c = _a.return)) _c.call(_a);
|
|
589
667
|
}
|
|
590
|
-
finally { if (
|
|
668
|
+
finally { if (e_18) throw e_18.error; }
|
|
591
669
|
}
|
|
592
670
|
}
|
|
593
671
|
else {
|
|
594
672
|
if (this.rows().find(function (x) {
|
|
595
|
-
var
|
|
673
|
+
var e_19, _a;
|
|
596
674
|
try {
|
|
597
675
|
for (var _b = tslib_1.__values(_this.entity.idMetadata.fields), _c = _b.next(); !_c.done; _c = _b.next()) {
|
|
598
676
|
var f = _c.value;
|
|
@@ -600,12 +678,12 @@ var ArrayEntityDataProvider = /** @class */ (function () {
|
|
|
600
678
|
return false;
|
|
601
679
|
}
|
|
602
680
|
}
|
|
603
|
-
catch (
|
|
681
|
+
catch (e_19_1) { e_19 = { error: e_19_1 }; }
|
|
604
682
|
finally {
|
|
605
683
|
try {
|
|
606
684
|
if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
|
|
607
685
|
}
|
|
608
|
-
finally { if (
|
|
686
|
+
finally { if (e_19) throw e_19.error; }
|
|
609
687
|
}
|
|
610
688
|
return true;
|
|
611
689
|
})) {
|
|
@@ -656,7 +734,7 @@ var FilterConsumerBridgeToObject = /** @class */ (function () {
|
|
|
656
734
|
throw new Error('Custom Filter should be translated before it gets here');
|
|
657
735
|
};
|
|
658
736
|
FilterConsumerBridgeToObject.prototype.or = function (orElements) {
|
|
659
|
-
var
|
|
737
|
+
var e_20, _a;
|
|
660
738
|
try {
|
|
661
739
|
for (var orElements_1 = tslib_1.__values(orElements), orElements_1_1 = orElements_1.next(); !orElements_1_1.done; orElements_1_1 = orElements_1.next()) {
|
|
662
740
|
var element = orElements_1_1.value;
|
|
@@ -667,12 +745,12 @@ var FilterConsumerBridgeToObject = /** @class */ (function () {
|
|
|
667
745
|
}
|
|
668
746
|
}
|
|
669
747
|
}
|
|
670
|
-
catch (
|
|
748
|
+
catch (e_20_1) { e_20 = { error: e_20_1 }; }
|
|
671
749
|
finally {
|
|
672
750
|
try {
|
|
673
751
|
if (orElements_1_1 && !orElements_1_1.done && (_a = orElements_1.return)) _a.call(orElements_1);
|
|
674
752
|
}
|
|
675
|
-
finally { if (
|
|
753
|
+
finally { if (e_20) throw e_20.error; }
|
|
676
754
|
}
|
|
677
755
|
this.ok = false;
|
|
678
756
|
};
|
|
@@ -691,7 +769,7 @@ var FilterConsumerBridgeToObject = /** @class */ (function () {
|
|
|
691
769
|
this.ok = false;
|
|
692
770
|
};
|
|
693
771
|
FilterConsumerBridgeToObject.prototype.isIn = function (col, val) {
|
|
694
|
-
var
|
|
772
|
+
var e_21, _a;
|
|
695
773
|
try {
|
|
696
774
|
for (var val_1 = tslib_1.__values(val), val_1_1 = val_1.next(); !val_1_1.done; val_1_1 = val_1.next()) {
|
|
697
775
|
var v = val_1_1.value;
|
|
@@ -700,12 +778,12 @@ var FilterConsumerBridgeToObject = /** @class */ (function () {
|
|
|
700
778
|
}
|
|
701
779
|
}
|
|
702
780
|
}
|
|
703
|
-
catch (
|
|
781
|
+
catch (e_21_1) { e_21 = { error: e_21_1 }; }
|
|
704
782
|
finally {
|
|
705
783
|
try {
|
|
706
784
|
if (val_1_1 && !val_1_1.done && (_a = val_1.return)) _a.call(val_1);
|
|
707
785
|
}
|
|
708
|
-
finally { if (
|
|
786
|
+
finally { if (e_21) throw e_21.error; }
|
|
709
787
|
}
|
|
710
788
|
this.ok = false;
|
|
711
789
|
};
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import type { DataProvider, EntityDataProvider } from '../data-interfaces.js';
|
|
2
|
+
import type { ClassType } from '../../classType.js';
|
|
3
|
+
import type { EntityMetadata, MembersOnly } from '../remult3/remult3.js';
|
|
4
|
+
export type IndexedDbIndexDef<entityType> = keyof MembersOnly<entityType> | readonly (keyof MembersOnly<entityType>)[];
|
|
5
|
+
export declare class IndexedDbIndexBuilder {
|
|
6
|
+
ensureIndexes<entityType>(entity: ClassType<entityType>, indexes: readonly IndexedDbIndexDef<entityType>[]): this;
|
|
7
|
+
}
|
|
8
|
+
export type IndexedDbDataProviderOptions = {
|
|
9
|
+
indexes?: (x: IndexedDbIndexBuilder) => void;
|
|
10
|
+
encrypt?: boolean;
|
|
11
|
+
getEncryptionKey?: () => CryptoKey | Promise<CryptoKey>;
|
|
12
|
+
};
|
|
13
|
+
export declare class IndexedDbDataProvider implements DataProvider {
|
|
14
|
+
private dbName;
|
|
15
|
+
constructor(dbName?: string, options?: IndexedDbDataProviderOptions);
|
|
16
|
+
getEntityDataProvider(entity: EntityMetadata): EntityDataProvider;
|
|
17
|
+
transaction(action: (dataProvider: DataProvider) => Promise<void>): Promise<void>;
|
|
18
|
+
ensureSchema(entities: EntityMetadata[]): Promise<void>;
|
|
19
|
+
close(): void;
|
|
20
|
+
}
|
|
21
|
+
export type IdbFetchOp = {
|
|
22
|
+
type: 'keys';
|
|
23
|
+
keys: IDBValidKey[];
|
|
24
|
+
index?: string;
|
|
25
|
+
} | {
|
|
26
|
+
type: 'range';
|
|
27
|
+
range: IDBKeyRange;
|
|
28
|
+
index?: string;
|
|
29
|
+
};
|
|
30
|
+
export type IdbPrefetch = {
|
|
31
|
+
type: 'all';
|
|
32
|
+
} | IdbFetchOp | {
|
|
33
|
+
type: 'or';
|
|
34
|
+
parts: IdbFetchOp[];
|
|
35
|
+
};
|
|
36
|
+
export type IdbIndexInfo = {
|
|
37
|
+
name: string;
|
|
38
|
+
keyPath: string | string[];
|
|
39
|
+
};
|