remult 3.3.19-next.2 → 3.4.0-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/SseSubscriptionServer.d.ts +2 -0
- package/SseSubscriptionServer.js +4 -2
- package/esm/SseSubscriptionServer.js +3 -1
- package/esm/index.js +6 -7
- package/esm/live-query/data-provider-live-query-storage.js +3 -1
- package/esm/remult-d1.js +0 -1
- package/esm/remult-knex/index.js +2 -112
- package/esm/remult-mongo.js +8 -17
- package/esm/remult-sqlite-core.js +0 -1
- package/esm/server/remult-api-server.js +6 -1
- package/esm/src/data-api.js +1 -0
- package/esm/src/data-interfaces.js +4 -4
- package/esm/src/data-providers/array-entity-data-provider.js +2 -14
- package/esm/src/data-providers/json-data-provider.js +2 -2
- package/esm/src/data-providers/rest-data-provider.js +12 -11
- package/esm/src/data-providers/sql-database.js +43 -110
- package/esm/src/live-query/LiveQueryClient.js +163 -52
- package/esm/src/live-query/SseSubscriptionClient.js +101 -43
- package/esm/src/live-query/SubscriptionChannel.js +37 -3
- package/esm/src/live-query/SubscriptionServer.js +11 -3
- package/esm/src/remult3/RepositoryImplementation.js +60 -90
- package/esm/src/remult3/remult3.js +6 -0
- package/index.d.ts +17 -31
- package/index.js +2 -5
- package/live-query/data-provider-live-query-storage.d.ts +4 -1
- package/live-query/data-provider-live-query-storage.js +18 -15
- package/package.json +1 -1
- package/remult-d1.d.ts +0 -1
- package/remult-d1.js +0 -1
- package/remult-knex/index.js +44 -329
- package/remult-mongo.js +36 -80
- package/remult-sqlite-core.d.ts +0 -1
- package/remult-sqlite-core.js +0 -1
- package/server/remult-api-server.js +13 -9
- package/src/data-api.js +1 -0
- package/src/data-interfaces.d.ts +3 -2
- 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 +14 -92
- package/src/data-providers/json-data-provider.js +2 -2
- package/src/data-providers/rest-data-provider.d.ts +3 -2
- package/src/data-providers/rest-data-provider.js +17 -18
- package/src/data-providers/sql-database.js +105 -254
- package/src/live-query/LiveQueryClient.js +215 -97
- package/src/live-query/SseSubscriptionClient.js +143 -83
- package/src/live-query/SubscriptionChannel.d.ts +8 -0
- package/src/live-query/SubscriptionChannel.js +47 -9
- package/src/live-query/SubscriptionServer.d.ts +7 -2
- package/src/live-query/SubscriptionServer.js +20 -10
- package/src/remult3/RepositoryImplementation.d.ts +1 -1
- package/src/remult3/RepositoryImplementation.js +270 -384
- package/src/remult3/remult3.d.ts +8 -2
- package/src/remult3/remult3.js +6 -0
- package/src/sql-command.d.ts +0 -2
- package/src/standard-schema/index.d.ts +1 -1
- package/esm/src/data-providers/indexed-db-data-provider.js +0 -811
- package/src/data-providers/indexed-db-data-provider.d.ts +0 -39
- package/src/data-providers/indexed-db-data-provider.js +0 -1387
|
@@ -282,7 +282,7 @@ export class RepositoryImplementation {
|
|
|
282
282
|
return ref.delete();
|
|
283
283
|
if (typeof item === 'string' || typeof item === 'number')
|
|
284
284
|
if (this._dataProvider.isProxy)
|
|
285
|
-
return this._edp.delete(
|
|
285
|
+
return this._edp.delete(item);
|
|
286
286
|
else {
|
|
287
287
|
let ref2 = await this.findId(item);
|
|
288
288
|
if (!ref2)
|
|
@@ -323,26 +323,36 @@ export class RepositoryImplementation {
|
|
|
323
323
|
}
|
|
324
324
|
async insert(entity, options) {
|
|
325
325
|
if (Array.isArray(entity)) {
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
if (
|
|
333
|
-
|
|
326
|
+
if (this._dataProvider.isProxy) {
|
|
327
|
+
let refs = [];
|
|
328
|
+
let raw = [];
|
|
329
|
+
for (const item of entity) {
|
|
330
|
+
this.__cleanupPartialObject(item);
|
|
331
|
+
let ref = getEntityRef(entity, false);
|
|
332
|
+
if (ref) {
|
|
333
|
+
if (!ref.isNew())
|
|
334
|
+
throw 'Item is not new';
|
|
335
|
+
}
|
|
336
|
+
else {
|
|
337
|
+
ref = (await this.getEntityRef(this.create(item)));
|
|
338
|
+
}
|
|
339
|
+
refs.push(ref);
|
|
340
|
+
raw.push(await ref.buildDtoForInsert());
|
|
334
341
|
}
|
|
335
|
-
|
|
336
|
-
|
|
342
|
+
const inserted = await this._edp.insertMany(raw, options);
|
|
343
|
+
if (options?.select === 'none')
|
|
344
|
+
return undefined;
|
|
345
|
+
return promiseAll(inserted, (item, i) => refs[i].processInsertResponseDto(item));
|
|
346
|
+
}
|
|
347
|
+
else {
|
|
348
|
+
let r = [];
|
|
349
|
+
for (const item of entity) {
|
|
350
|
+
r.push(await this.insert(item, options));
|
|
337
351
|
}
|
|
338
|
-
|
|
339
|
-
|
|
352
|
+
if (options?.select === 'none')
|
|
353
|
+
return undefined;
|
|
354
|
+
return r;
|
|
340
355
|
}
|
|
341
|
-
const inserted = await this._edp.insert(raw, options);
|
|
342
|
-
const result = await promiseAll(inserted, (row, i) => refs[i].processInsertResponseDto(row));
|
|
343
|
-
if (options?.select === 'none')
|
|
344
|
-
return undefined;
|
|
345
|
-
return result;
|
|
346
356
|
}
|
|
347
357
|
else {
|
|
348
358
|
let ref = getEntityRef(entity, false);
|
|
@@ -876,19 +886,14 @@ export class RepositoryImplementation {
|
|
|
876
886
|
return this._edp.deleteMany(where === 'all' ? 'all' : await this._translateWhereToFilter(where));
|
|
877
887
|
}
|
|
878
888
|
else {
|
|
889
|
+
let deleted = 0;
|
|
879
890
|
if (where === 'all')
|
|
880
891
|
where = undefined;
|
|
881
|
-
const prepared = [];
|
|
882
892
|
for await (const item of this.query({ where, aggregate: undefined })) {
|
|
883
|
-
|
|
884
|
-
|
|
893
|
+
await getEntityRef(item).delete();
|
|
894
|
+
deleted++;
|
|
885
895
|
}
|
|
886
|
-
|
|
887
|
-
if (ids.length)
|
|
888
|
-
await this._edp.delete(ids);
|
|
889
|
-
for (const x of prepared)
|
|
890
|
-
await x.ref.__finishDelete(x.event);
|
|
891
|
-
return prepared.length;
|
|
896
|
+
return deleted;
|
|
892
897
|
}
|
|
893
898
|
}
|
|
894
899
|
_cache = new Map();
|
|
@@ -1557,7 +1562,7 @@ export class rowHelperImplementation extends rowHelperBase {
|
|
|
1557
1562
|
}))[0];
|
|
1558
1563
|
}
|
|
1559
1564
|
else
|
|
1560
|
-
updatedRow =
|
|
1565
|
+
updatedRow = await this.edp.insert(d, options);
|
|
1561
1566
|
}
|
|
1562
1567
|
else {
|
|
1563
1568
|
let changesOnly = {};
|
|
@@ -1612,40 +1617,13 @@ export class rowHelperImplementation extends rowHelperBase {
|
|
|
1612
1617
|
}
|
|
1613
1618
|
}
|
|
1614
1619
|
async processInsertResponseDto(updatedRow) {
|
|
1615
|
-
|
|
1616
|
-
|
|
1617
|
-
|
|
1618
|
-
|
|
1619
|
-
e.id = this.getId();
|
|
1620
|
-
if (!this.repo._dataProvider.isProxy) {
|
|
1621
|
-
if (this.info.entityInfo.saved)
|
|
1622
|
-
await this.info.entityInfo.saved(this.instance, e);
|
|
1623
|
-
if (this.repo.listeners)
|
|
1624
|
-
for (const listener of this.repo.listeners) {
|
|
1625
|
-
await listener.saved?.(this.instance, true);
|
|
1626
|
-
}
|
|
1627
|
-
}
|
|
1628
|
-
this.repo._remult.liveQueryPublisher.itemChanged(this.repo.metadata.key, [{ id: this.getId(), oldId: this.getOriginalId(), deleted: false }]);
|
|
1629
|
-
this.saveOriginalData();
|
|
1630
|
-
this._isNew = false;
|
|
1631
|
-
return this.instance;
|
|
1632
|
-
}
|
|
1633
|
-
catch (err) {
|
|
1634
|
-
throw await this.catchSaveErrors(err);
|
|
1635
|
-
}
|
|
1620
|
+
await this.loadDataFrom(updatedRow);
|
|
1621
|
+
this.saveOriginalData();
|
|
1622
|
+
this._isNew = false;
|
|
1623
|
+
return this.instance;
|
|
1636
1624
|
}
|
|
1637
1625
|
async buildDtoForInsert() {
|
|
1638
1626
|
await this.__validateEntity();
|
|
1639
|
-
const e = this.buildLifeCycleEvent();
|
|
1640
|
-
if (!this.repo._dataProvider.isProxy) {
|
|
1641
|
-
for (const col of this.fields) {
|
|
1642
|
-
if (col.metadata.options.saving)
|
|
1643
|
-
await col.metadata.options.saving(this.instance, col, e);
|
|
1644
|
-
}
|
|
1645
|
-
if (this.info.entityInfo.saving) {
|
|
1646
|
-
await this.info.entityInfo.saving(this.instance, e);
|
|
1647
|
-
}
|
|
1648
|
-
}
|
|
1649
1627
|
this.__assertValidity();
|
|
1650
1628
|
let d = this.copyDataToObject(this.isNew());
|
|
1651
1629
|
for (const field of this.metadata.fields) {
|
|
@@ -1674,44 +1652,36 @@ export class rowHelperImplementation extends rowHelperBase {
|
|
|
1674
1652
|
return await this.repo._translateWhereToFilter(this.repo.metadata.idMetadata.getIdFilter(this.id));
|
|
1675
1653
|
}
|
|
1676
1654
|
async delete() {
|
|
1677
|
-
try {
|
|
1678
|
-
const { doDelete, event } = await this.__prepareDelete();
|
|
1679
|
-
if (doDelete)
|
|
1680
|
-
await this.edp.delete([this.id]);
|
|
1681
|
-
await this.__finishDelete(event);
|
|
1682
|
-
}
|
|
1683
|
-
catch (err) {
|
|
1684
|
-
throw await this.catchSaveErrors(err);
|
|
1685
|
-
}
|
|
1686
|
-
}
|
|
1687
|
-
//@internal
|
|
1688
|
-
async __prepareDelete() {
|
|
1689
1655
|
this.__clearErrorsAndReportChanged();
|
|
1690
1656
|
let doDelete = true;
|
|
1691
|
-
|
|
1657
|
+
let e = this.buildLifeCycleEvent(() => (doDelete = false));
|
|
1692
1658
|
if (!this.repo._dataProvider.isProxy) {
|
|
1693
1659
|
if (this.info.entityInfo.deleting)
|
|
1694
|
-
await this.info.entityInfo.deleting(this.instance,
|
|
1660
|
+
await this.info.entityInfo.deleting(this.instance, e);
|
|
1695
1661
|
}
|
|
1696
1662
|
this.__assertValidity();
|
|
1697
|
-
|
|
1698
|
-
|
|
1699
|
-
|
|
1700
|
-
|
|
1701
|
-
|
|
1702
|
-
|
|
1703
|
-
|
|
1704
|
-
|
|
1705
|
-
|
|
1706
|
-
}
|
|
1707
|
-
if (this.repo.listeners)
|
|
1708
|
-
for (const listener of this.repo.listeners) {
|
|
1709
|
-
await listener.deleted?.(this.instance);
|
|
1663
|
+
try {
|
|
1664
|
+
if (doDelete) {
|
|
1665
|
+
if (this.id === undefined)
|
|
1666
|
+
throw new Error('Invalid operation, id is undefined');
|
|
1667
|
+
await this.edp.delete(this.id);
|
|
1668
|
+
}
|
|
1669
|
+
if (!this.repo._dataProvider.isProxy) {
|
|
1670
|
+
if (this.info.entityInfo.deleted)
|
|
1671
|
+
await this.info.entityInfo.deleted(this.instance, e);
|
|
1710
1672
|
}
|
|
1711
|
-
|
|
1712
|
-
|
|
1713
|
-
|
|
1714
|
-
|
|
1673
|
+
if (this.repo.listeners)
|
|
1674
|
+
for (const listener of this.repo.listeners) {
|
|
1675
|
+
await listener.deleted?.(this.instance);
|
|
1676
|
+
}
|
|
1677
|
+
this.repo._remult.liveQueryPublisher.itemChanged(this.repo.metadata.key, [
|
|
1678
|
+
{ id: this.getId(), oldId: this.getOriginalId(), deleted: true },
|
|
1679
|
+
]);
|
|
1680
|
+
this._wasDeleted = true;
|
|
1681
|
+
}
|
|
1682
|
+
catch (err) {
|
|
1683
|
+
throw await this.catchSaveErrors(err);
|
|
1684
|
+
}
|
|
1715
1685
|
}
|
|
1716
1686
|
async loadDataFrom(data, loadItems) {
|
|
1717
1687
|
for (const col of this.info.fields) {
|
|
@@ -16,6 +16,12 @@ const wnn = [
|
|
|
16
16
|
];
|
|
17
17
|
export const flags = {
|
|
18
18
|
error500RetryCount: 4,
|
|
19
|
+
/** Client treats SSE as dead if no event for this long */
|
|
20
|
+
sseStaleMs: 20_000,
|
|
21
|
+
/** HTTP keep-alive while SSE is healthy (touches lastUsed) */
|
|
22
|
+
liveQueryKeepAliveMs: 30_000,
|
|
23
|
+
/** Version poll while SSE is stale */
|
|
24
|
+
liveQueryPollWhenStaleMs: 1_000,
|
|
19
25
|
};
|
|
20
26
|
/*p1 - issues in https://stackblitz.com/edit/demo-allow-delete-based-on-other-entity:
|
|
21
27
|
- don't like the ensure schema
|
package/index.d.ts
CHANGED
|
@@ -2,11 +2,10 @@ import type { ClassType } from './classType.js';
|
|
|
2
2
|
import type { DataProvider } from './src/data-interfaces.js';
|
|
3
3
|
export { ArrayEntityDataProvider } from './src/data-providers/array-entity-data-provider.js';
|
|
4
4
|
export type { ClassType } from './classType.js';
|
|
5
|
-
export
|
|
5
|
+
export { ValidateFieldEvent, MembersOnly, NumericKeys, FieldsMetadata, FieldRef, IdFieldRef, FieldsRef, EntityMetadata, EntityOrderBy, EntityFilter, FindOptions, FindOptionsBase, QueryResult, QueryOptions, UpsertOptions, Repository, GroupByOptions, GroupByResult, FindFirstOptions, ComparisonValueFilter, ValueFilter, IdFilter, ContainsStringValueFilter, EntityRef, SortSegments, Paginator, LiveQuery, LiveQueryChangeInfo, Subscribable, RefSubscriber, RefSubscriberBase, RelationOptions, ObjectMembersOnly, MembersToInclude, RepositoryRelations, EntityIdFields, EntitySelectFields, InsertOrUpdateOptions, ClassFieldDecorator, ClassFieldDecoratorContextStub, //n1 consider removing in ts5
|
|
6
6
|
LifecycleEvent, FieldsRefBase, FieldsRefForEntityBase, RepositoryRelationsForEntityBase, ControllerRefForControllerBase, ControllerRefBase, ControllerRef, EntityRefForEntityBase, IdMetadata, FindFirstOptionsBase, } from './src/remult3/remult3.js';
|
|
7
7
|
export { standardSchema } from './src/standard-schema/index.js';
|
|
8
|
-
export { EntityBase, ControllerBase, FieldType, getFields, ValueListFieldType, getValueList, ValueListInfo, } from './src/remult3/RepositoryImplementation.js';
|
|
9
|
-
export type { ValueListFieldOptions } from './src/remult3/RepositoryImplementation.js';
|
|
8
|
+
export { EntityBase, ControllerBase, FieldType, getFields, ValueListFieldType, getValueList, ValueListFieldOptions, ValueListInfo, } from './src/remult3/RepositoryImplementation.js';
|
|
10
9
|
export { LabelTransformer } from './src/remult3/RepositoryImplementation.js';
|
|
11
10
|
/**
|
|
12
11
|
* @deprecated use `LabelTransformer` instead
|
|
@@ -17,46 +16,33 @@ export declare const CaptionTransformer: {
|
|
|
17
16
|
};
|
|
18
17
|
export { Entity } from './src/remult3/entity.js';
|
|
19
18
|
export { getEntityRef } from './src/remult3/getEntityRef.js';
|
|
20
|
-
export { Field, Fields, Relations } from './src/remult3/Fields.js';
|
|
21
|
-
export type { StringFieldOptions } from './src/remult3/Fields.js';
|
|
19
|
+
export { Field, Fields, StringFieldOptions, Relations, } from './src/remult3/Fields.js';
|
|
22
20
|
export { IdEntity } from './src/remult3/IdEntity.js';
|
|
23
21
|
export { describeClass, describeBackendMethods, describeEntity, } from './src/remult3/classDescribers.js';
|
|
24
|
-
export
|
|
25
|
-
export { EntityError } from './src/data-interfaces.js';
|
|
26
|
-
export
|
|
27
|
-
export
|
|
28
|
-
export type { FieldMetadata, FieldOptions, FieldValidator, ValueConverter, ValueListItem, // reconsider, maybe it should go to remult angular as the abstraction ?
|
|
22
|
+
export { EntityOptions, PreprocessFilterEvent } from './src/entity.js';
|
|
23
|
+
export { DataProvider, EntityDataProvider, EntityDataProviderGroupByOptions, EntityDataProviderFindOptions, ErrorInfo, EntityError, RestDataProviderHttpProvider, } from './src/data-interfaces.js';
|
|
24
|
+
export { SqlCommand, SqlCommandWithParameters, SqlImplementation, SqlResult, } from './src/sql-command.js';
|
|
25
|
+
export { FieldMetadata, FieldOptions, FieldValidator, ValueConverter, ValueListItem, // reconsider, maybe it should go to remult angular as the abstraction ?
|
|
29
26
|
ValueOrExpression, } from './src/column-interfaces.js';
|
|
30
27
|
export { RestDataProvider } from './src/data-providers/rest-data-provider.js';
|
|
31
28
|
export { InMemoryDataProvider } from './src/data-providers/in-memory-database.js';
|
|
32
29
|
export { SqlDatabase } from './src/data-providers/sql-database.js';
|
|
33
|
-
export { CustomSqlFilterBuilder, dbNamesOf, } from './src/filter/filter-consumer-bridge-to-sql-request.js';
|
|
34
|
-
export
|
|
35
|
-
export { JsonDataProvider } from './src/data-providers/json-data-provider.js';
|
|
36
|
-
export type { JsonEntityStorage } from './src/data-providers/json-data-provider.js';
|
|
30
|
+
export { CustomSqlFilterBuilder, dbNamesOf, dbNamesOfOptions, CustomSqlFilterBuilderFunction, EntityDbNames, } from './src/filter/filter-consumer-bridge-to-sql-request.js';
|
|
31
|
+
export { JsonDataProvider, JsonEntityStorage, } from './src/data-providers/json-data-provider.js';
|
|
37
32
|
export { JsonEntityOpfsStorage } from './src/data-providers/json-entity-opfs-storage.js';
|
|
38
33
|
export { JsonEntityIndexedDbStorage } from './src/data-providers/json-entity-indexed-db-data-provider.js';
|
|
39
|
-
export {
|
|
40
|
-
export
|
|
41
|
-
export {
|
|
42
|
-
export
|
|
43
|
-
export { Allow, Remult, withRemult, isBackend, EventSource, } from './src/context.js';
|
|
44
|
-
export type { Allowed, RemultContext, ApiClient, AllowedForInstance, EventDispatcher, UserInfo, } from './src/context.js';
|
|
45
|
-
export type { ExternalHttpProvider } from './src/buildRestDataProvider.js';
|
|
46
|
-
export { Sort } from './src/sort.js';
|
|
47
|
-
export type { SortSegment } from './src/sort.js';
|
|
34
|
+
export { Controller, BackendMethodOptions, BackendMethod, ProgressListener, ForbiddenError, } from './src/server-action.js';
|
|
35
|
+
export { Allowed, Allow, Remult, withRemult, RemultContext, ApiClient, isBackend, AllowedForInstance, EventDispatcher, EventSource, UserInfo, } from './src/context.js';
|
|
36
|
+
export { ExternalHttpProvider } from './src/buildRestDataProvider.js';
|
|
37
|
+
export { SortSegment, Sort } from './src/sort.js';
|
|
48
38
|
export { CompoundIdField } from './src/CompoundIdField.js';
|
|
49
|
-
export { Filter } from './src/filter/filter-interfaces.js';
|
|
50
|
-
export type { FilterConsumer, FilterPreciseValues, } from './src/filter/filter-interfaces.js';
|
|
39
|
+
export { Filter, FilterConsumer, FilterPreciseValues, } from './src/filter/filter-interfaces.js';
|
|
51
40
|
export { UrlBuilder } from './urlBuilder.js';
|
|
52
|
-
export { Validators, valueValidator, createValidator, createValidatorWithArgs, createValueValidatorWithArgs, createValueValidator, } from './src/validators.js';
|
|
53
|
-
export type { ValidationMessage, ValueValidationMessage, Validator, ValidatorWithArgs, } from './src/validators.js';
|
|
41
|
+
export { Validators, ValidationMessage, ValueValidationMessage, Validator, ValidatorWithArgs, valueValidator, createValidator, createValidatorWithArgs, createValueValidatorWithArgs, createValueValidator, } from './src/validators.js';
|
|
54
42
|
export { ValueConverters } from './src/valueConverters.js';
|
|
55
43
|
export { remult } from './src/remult-proxy.js';
|
|
56
|
-
export { InMemoryLiveQueryStorage } from './src/live-query/SubscriptionServer.js';
|
|
57
|
-
export
|
|
58
|
-
export { SubscriptionChannel } from './src/live-query/SubscriptionChannel.js';
|
|
59
|
-
export type { SubscriptionListener, SubscriptionClientConnection, SubscriptionClient, LiveQueryChange, Unsubscribe, } from './src/live-query/SubscriptionChannel.js';
|
|
44
|
+
export { SubscriptionServer, LiveQueryStorage, StoredQuery, InMemoryLiveQueryStorage, } from './src/live-query/SubscriptionServer.js';
|
|
45
|
+
export { SubscriptionListener, SubscriptionClientConnection, SubscriptionClient, SubscriptionChannel, LiveQueryChange, Unsubscribe, } from './src/live-query/SubscriptionChannel.js';
|
|
60
46
|
/**
|
|
61
47
|
* A convenient shortcut function to quickly obtain a repository for a specific entity type in Remult.
|
|
62
48
|
*
|
package/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.createValueValidator = exports.createValueValidatorWithArgs = exports.createValidatorWithArgs = exports.createValidator = exports.valueValidator = exports.Validators = exports.UrlBuilder = exports.Filter = exports.CompoundIdField = exports.Sort = exports.EventSource = exports.isBackend = exports.withRemult = exports.Remult = exports.Allow = exports.ForbiddenError = exports.ProgressListener = exports.BackendMethod = exports.Controller = exports.
|
|
4
|
-
exports.SubscriptionChannel = exports.InMemoryLiveQueryStorage =
|
|
3
|
+
exports.remult = exports.ValueConverters = exports.createValueValidator = exports.createValueValidatorWithArgs = exports.createValidatorWithArgs = exports.createValidator = exports.valueValidator = exports.Validators = exports.UrlBuilder = exports.Filter = exports.CompoundIdField = exports.Sort = exports.EventSource = exports.isBackend = exports.withRemult = exports.Remult = exports.Allow = exports.ForbiddenError = exports.ProgressListener = exports.BackendMethod = exports.Controller = exports.JsonEntityIndexedDbStorage = exports.JsonEntityOpfsStorage = exports.JsonDataProvider = exports.dbNamesOf = exports.CustomSqlFilterBuilder = exports.SqlDatabase = exports.InMemoryDataProvider = exports.RestDataProvider = exports.EntityError = exports.describeEntity = exports.describeBackendMethods = exports.describeClass = exports.IdEntity = exports.Relations = exports.Fields = exports.Field = exports.getEntityRef = exports.Entity = exports.CaptionTransformer = exports.LabelTransformer = exports.ValueListInfo = exports.getValueList = exports.ValueListFieldType = exports.getFields = exports.FieldType = exports.ControllerBase = exports.EntityBase = exports.standardSchema = exports.ArrayEntityDataProvider = void 0;
|
|
4
|
+
exports.SubscriptionChannel = exports.InMemoryLiveQueryStorage = void 0;
|
|
5
5
|
exports.repo = repo;
|
|
6
6
|
var array_entity_data_provider_js_1 = require("./src/data-providers/array-entity-data-provider.js");
|
|
7
7
|
Object.defineProperty(exports, "ArrayEntityDataProvider", { enumerable: true, get: function () { return array_entity_data_provider_js_1.ArrayEntityDataProvider; } });
|
|
@@ -53,9 +53,6 @@ var json_entity_opfs_storage_js_1 = require("./src/data-providers/json-entity-op
|
|
|
53
53
|
Object.defineProperty(exports, "JsonEntityOpfsStorage", { enumerable: true, get: function () { return json_entity_opfs_storage_js_1.JsonEntityOpfsStorage; } });
|
|
54
54
|
var json_entity_indexed_db_data_provider_js_1 = require("./src/data-providers/json-entity-indexed-db-data-provider.js");
|
|
55
55
|
Object.defineProperty(exports, "JsonEntityIndexedDbStorage", { enumerable: true, get: function () { return json_entity_indexed_db_data_provider_js_1.JsonEntityIndexedDbStorage; } });
|
|
56
|
-
var indexed_db_data_provider_js_1 = require("./src/data-providers/indexed-db-data-provider.js");
|
|
57
|
-
Object.defineProperty(exports, "IndexedDbDataProvider", { enumerable: true, get: function () { return indexed_db_data_provider_js_1.IndexedDbDataProvider; } });
|
|
58
|
-
Object.defineProperty(exports, "IndexedDbIndexBuilder", { enumerable: true, get: function () { return indexed_db_data_provider_js_1.IndexedDbIndexBuilder; } });
|
|
59
56
|
//export * from './src/data-api'; //reconsider if to make internal
|
|
60
57
|
var server_action_js_1 = require("./src/server-action.js");
|
|
61
58
|
Object.defineProperty(exports, "Controller", { enumerable: true, get: function () { return server_action_js_1.Controller; } });
|
|
@@ -13,7 +13,10 @@ export declare class DataProviderLiveQueryStorage implements LiveQueryStorage, S
|
|
|
13
13
|
query: StoredQuery;
|
|
14
14
|
setData(data: any): Promise<void>;
|
|
15
15
|
}) => Promise<void>): Promise<void>;
|
|
16
|
-
keepAliveAndReturnUnknownQueryIds(queryIds: string[]): Promise<
|
|
16
|
+
keepAliveAndReturnUnknownQueryIds(queryIds: string[]): Promise<{
|
|
17
|
+
unknownQueryIds: string[];
|
|
18
|
+
versions: Record<string, number>;
|
|
19
|
+
}>;
|
|
17
20
|
}
|
|
18
21
|
export declare class LiveQueryStorageEntity extends EntityBase {
|
|
19
22
|
id: string;
|
|
@@ -170,46 +170,49 @@ var DataProviderLiveQueryStorage = /** @class */ (function () {
|
|
|
170
170
|
};
|
|
171
171
|
DataProviderLiveQueryStorage.prototype.keepAliveAndReturnUnknownQueryIds = function (queryIds) {
|
|
172
172
|
return tslib_1.__awaiter(this, void 0, void 0, function () {
|
|
173
|
-
var repo, _loop_2, _a, _b, query, e_2_1;
|
|
173
|
+
var repo, versions, _loop_2, _a, _b, query, e_2_1;
|
|
174
174
|
var e_2, _c;
|
|
175
|
-
|
|
176
|
-
|
|
175
|
+
var _d, _e;
|
|
176
|
+
return tslib_1.__generator(this, function (_f) {
|
|
177
|
+
switch (_f.label) {
|
|
177
178
|
case 0: return [4 /*yield*/, this.repo];
|
|
178
179
|
case 1:
|
|
179
|
-
repo =
|
|
180
|
+
repo = _f.sent();
|
|
181
|
+
versions = {};
|
|
180
182
|
_loop_2 = function (query) {
|
|
181
|
-
return tslib_1.__generator(this, function (
|
|
182
|
-
switch (
|
|
183
|
+
return tslib_1.__generator(this, function (_g) {
|
|
184
|
+
switch (_g.label) {
|
|
183
185
|
case 0:
|
|
184
186
|
query.lastUsedIso = new Date().toISOString();
|
|
185
187
|
return [4 /*yield*/, repo.save(query)];
|
|
186
188
|
case 1:
|
|
187
|
-
|
|
189
|
+
_g.sent();
|
|
190
|
+
versions[query.id] = (_e = (_d = query.data) === null || _d === void 0 ? void 0 : _d.version) !== null && _e !== void 0 ? _e : 0;
|
|
188
191
|
queryIds = queryIds.filter(function (x) { return x !== query.id; });
|
|
189
192
|
return [2 /*return*/];
|
|
190
193
|
}
|
|
191
194
|
});
|
|
192
195
|
};
|
|
193
|
-
|
|
196
|
+
_f.label = 2;
|
|
194
197
|
case 2:
|
|
195
|
-
|
|
198
|
+
_f.trys.push([2, 8, 9, 10]);
|
|
196
199
|
return [4 /*yield*/, repo.find({ where: { id: queryIds } })];
|
|
197
200
|
case 3:
|
|
198
|
-
_a = tslib_1.__values.apply(void 0, [
|
|
199
|
-
|
|
201
|
+
_a = tslib_1.__values.apply(void 0, [_f.sent()]), _b = _a.next();
|
|
202
|
+
_f.label = 4;
|
|
200
203
|
case 4:
|
|
201
204
|
if (!!_b.done) return [3 /*break*/, 7];
|
|
202
205
|
query = _b.value;
|
|
203
206
|
return [5 /*yield**/, _loop_2(query)];
|
|
204
207
|
case 5:
|
|
205
|
-
|
|
206
|
-
|
|
208
|
+
_f.sent();
|
|
209
|
+
_f.label = 6;
|
|
207
210
|
case 6:
|
|
208
211
|
_b = _a.next();
|
|
209
212
|
return [3 /*break*/, 4];
|
|
210
213
|
case 7: return [3 /*break*/, 10];
|
|
211
214
|
case 8:
|
|
212
|
-
e_2_1 =
|
|
215
|
+
e_2_1 = _f.sent();
|
|
213
216
|
e_2 = { error: e_2_1 };
|
|
214
217
|
return [3 /*break*/, 10];
|
|
215
218
|
case 9:
|
|
@@ -218,7 +221,7 @@ var DataProviderLiveQueryStorage = /** @class */ (function () {
|
|
|
218
221
|
}
|
|
219
222
|
finally { if (e_2) throw e_2.error; }
|
|
220
223
|
return [7 /*endfinally*/];
|
|
221
|
-
case 10: return [2 /*return*/, queryIds];
|
|
224
|
+
case 10: return [2 /*return*/, { unknownQueryIds: queryIds, versions: versions }];
|
|
222
225
|
}
|
|
223
226
|
});
|
|
224
227
|
});
|
package/package.json
CHANGED
package/remult-d1.d.ts
CHANGED
|
@@ -3,7 +3,6 @@ import { SqliteCoreDataProvider } from './remult-sqlite-core.js';
|
|
|
3
3
|
export declare function createD1DataProvider(d1: D1Database): SqlDatabase;
|
|
4
4
|
export declare class D1DataProvider extends SqliteCoreDataProvider {
|
|
5
5
|
private d1;
|
|
6
|
-
maxParametersInOneSqlStatement: number;
|
|
7
6
|
/**
|
|
8
7
|
* For production or local d1 using binding
|
|
9
8
|
*
|