remult 0.26.21 → 0.26.23-next.0
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 +3 -4
- package/assign.js +1 -2
- package/esm/graphql.js +1 -1
- package/esm/remult-hono.js +3 -1
- package/esm/remult-knex/index.js +3 -1
- package/esm/remult-sqlite3.js +4 -1
- package/esm/remult-sveltekit.js +1 -0
- package/esm/server/index.js +3 -2
- package/esm/server/initAsyncHooks.js +3 -3
- package/esm/server/remult-admin.js +1 -4
- package/esm/server/remult-api-server.js +47 -48
- package/esm/src/CompoundIdField.js +9 -9
- package/esm/src/data-api.js +1 -1
- package/esm/src/data-providers/json-entity-opfs-storage.js +9 -5
- package/esm/src/data-providers/sql-database.js +9 -9
- package/esm/src/filter/filter-consumer-bridge-to-sql-request.js +3 -1
- package/esm/src/live-query/LiveQueryClient.js +0 -1
- package/esm/src/remult-proxy.js +1 -3
- package/esm/src/remult-static.js +1 -0
- package/esm/src/remult3/Fields.js +4 -3
- package/esm/src/remult3/RepositoryImplementation.js +143 -104
- package/esm/src/remult3/entity.js +1 -1
- package/esm/src/remult3/relation-loader.js +2 -2
- package/esm/src/remult3/remult3.js +9 -0
- package/esm/src/server-action.js +16 -12
- package/esm/src/sort.js +0 -2
- package/esm/src/validators.js +3 -3
- package/esm/src/valueConverters.js +2 -2
- package/graphql.js +3 -4
- package/index.js +2 -2
- package/live-query/data-provider-live-query-storage.js +6 -6
- package/migrations/compare-migration-snapshots.js +48 -49
- package/migrations/generate-migrations.js +1 -2
- package/migrations/migrate.js +2 -3
- package/migrations/migration-types.d.ts +1 -1
- package/migrations/migration-types.js +4 -4
- package/migrations/update-migrations-ts-file.js +1 -2
- package/myLog.js +1 -2
- package/package.json +1 -1
- package/postgres/postgres-data-provider.d.ts +2 -2
- package/postgres/postgres-data-provider.js +5 -5
- package/postgres/schema-builder.js +3 -3
- package/remult-express.js +4 -3
- package/remult-fastify.js +4 -3
- package/remult-fresh.js +1 -2
- package/remult-hapi.js +4 -3
- package/remult-hono.js +6 -3
- package/remult-knex/index.d.ts +1 -1
- package/remult-knex/index.js +7 -5
- package/remult-mongo.d.ts +1 -1
- package/remult-next.d.ts +4 -5
- package/remult-next.js +11 -6
- package/remult-nuxt.js +1 -2
- package/remult-solid-start.js +1 -2
- package/remult-sqlite3.js +4 -1
- package/remult-sveltekit.js +33 -35
- package/server/JsonEntityFileStorage.d.ts +1 -1
- package/server/get-remult-admin-html.js +1 -2
- package/server/index.d.ts +1 -1
- package/server/index.js +4 -3
- package/server/initAsyncHooks.d.ts +10 -10
- package/server/initAsyncHooks.js +5 -2
- package/server/initDataProvider.js +1 -2
- package/server/initDataProviderOrJson.js +1 -2
- package/server/remult-admin.js +3 -7
- package/server/remult-api-server.d.ts +22 -22
- package/server/remult-api-server.js +54 -48
- package/src/CompoundIdField.d.ts +1 -1
- package/src/CompoundIdField.js +9 -0
- package/src/buildRestDataProvider.d.ts +1 -1
- package/src/buildRestDataProvider.js +8 -8
- package/src/column-interfaces.d.ts +8 -8
- package/src/column-interfaces.js +1 -2
- package/src/column.d.ts +4 -4
- package/src/column.js +2 -2
- package/src/context.d.ts +4 -4
- package/src/context.js +5 -5
- package/src/data-api.d.ts +2 -2
- package/src/data-api.js +4 -4
- package/src/data-interfaces.js +1 -2
- package/src/data-providers/json-entity-opfs-storage.js +30 -16
- package/src/data-providers/rest-data-provider.d.ts +3 -3
- package/src/data-providers/rest-data-provider.js +4 -4
- package/src/data-providers/sql-database.js +11 -11
- package/src/filter/filter-consumer-bridge-to-sql-request.d.ts +3 -3
- package/src/filter/filter-consumer-bridge-to-sql-request.js +21 -19
- package/src/filter/filter-interfaces.d.ts +1 -1
- package/src/filter/filter-interfaces.js +10 -6
- package/src/isOfType.js +2 -3
- package/src/live-query/SubscriptionServer.js +95 -97
- package/src/remult-proxy.js +1 -3
- package/src/remult-static.d.ts +2 -2
- package/src/remult-static.js +7 -4
- package/src/remult3/Fields.d.ts +2 -2
- package/src/remult3/Fields.js +11 -9
- package/src/remult3/RepositoryImplementation.d.ts +41 -39
- package/src/remult3/RepositoryImplementation.js +416 -365
- package/src/remult3/__updateEntityBasedOnWhere.js +1 -2
- package/src/remult3/addValidator.d.ts +1 -1
- package/src/remult3/addValidator.js +1 -2
- package/src/remult3/classDescribers.d.ts +3 -3
- package/src/remult3/classDescribers.js +3 -4
- package/src/remult3/entity.js +2 -4
- package/src/remult3/getEntityRef.js +4 -4
- package/src/remult3/relation-loader.d.ts +1 -1
- package/src/remult3/relationInfoMember.d.ts +2 -2
- package/src/remult3/relationInfoMember.js +4 -5
- package/src/remult3/remult3.d.ts +13 -10
- package/src/remult3/remult3.js +9 -0
- package/src/remult3/repository-internals.d.ts +3 -3
- package/src/remult3/repository-internals.js +2 -2
- package/src/server-action.d.ts +1 -1
- package/src/server-action.js +65 -58
- package/src/sort.d.ts +1 -1
- package/src/sort.js +0 -2
- package/src/sql-command.d.ts +1 -1
- package/src/validators.d.ts +1 -1
- package/src/validators.js +13 -11
- package/src/valueConverters.js +3 -2
|
@@ -211,7 +211,7 @@ export interface FieldMetadata<valueType = any, entityType = any> {
|
|
|
211
211
|
* input.value = repo.fields.birthDate.toInput(person) // will return '1976-06-16'
|
|
212
212
|
* @see {@link ValueConverter#toInput} for configuration details
|
|
213
213
|
*/
|
|
214
|
-
toInput(value: valueType, inputType?: string): string;
|
|
214
|
+
toInput(value: valueType | null | undefined, inputType?: string): string;
|
|
215
215
|
/** Adapts the value for usage with html input
|
|
216
216
|
* @example
|
|
217
217
|
* @Fields.dateOnly()
|
|
@@ -239,7 +239,7 @@ export interface ValueConverter<valueType> {
|
|
|
239
239
|
* @example
|
|
240
240
|
* fromJson: val => new Date(val)
|
|
241
241
|
*/
|
|
242
|
-
fromJson?(val: any): valueType;
|
|
242
|
+
fromJson?(val: any): valueType | null | undefined;
|
|
243
243
|
/**
|
|
244
244
|
* Converts a value of valueType to a JSON DTO. This method is typically used when sending data
|
|
245
245
|
* to a REST API or serializing an object to a JSON payload.
|
|
@@ -250,7 +250,7 @@ export interface ValueConverter<valueType> {
|
|
|
250
250
|
* @example
|
|
251
251
|
* toJson: val => val?.toISOString()
|
|
252
252
|
*/
|
|
253
|
-
toJson?(val: valueType): any;
|
|
253
|
+
toJson?(val: valueType | null | undefined): any;
|
|
254
254
|
/**
|
|
255
255
|
* Converts a value from the database format to the valueType.
|
|
256
256
|
*
|
|
@@ -260,7 +260,7 @@ export interface ValueConverter<valueType> {
|
|
|
260
260
|
* @example
|
|
261
261
|
* fromDb: val => new Date(val)
|
|
262
262
|
*/
|
|
263
|
-
fromDb?(val: any): valueType;
|
|
263
|
+
fromDb?(val: any): valueType | null | undefined;
|
|
264
264
|
/**
|
|
265
265
|
* Converts a value of valueType to the database format.
|
|
266
266
|
*
|
|
@@ -270,7 +270,7 @@ export interface ValueConverter<valueType> {
|
|
|
270
270
|
* @example
|
|
271
271
|
* toDb: val => val?.toISOString()
|
|
272
272
|
*/
|
|
273
|
-
toDb?(val: valueType): any;
|
|
273
|
+
toDb?(val: valueType | null | undefined): any;
|
|
274
274
|
/**
|
|
275
275
|
* Converts a value of valueType to a string suitable for an HTML input element.
|
|
276
276
|
*
|
|
@@ -281,7 +281,7 @@ export interface ValueConverter<valueType> {
|
|
|
281
281
|
* @example
|
|
282
282
|
* toInput: (val, inputType) => val?.toISOString().substring(0, 10)
|
|
283
283
|
*/
|
|
284
|
-
toInput?(val: valueType, inputType?: string): string;
|
|
284
|
+
toInput?(val: valueType | null | undefined, inputType?: string): string;
|
|
285
285
|
/**
|
|
286
286
|
* Converts a string from an HTML input element to the valueType.
|
|
287
287
|
*
|
|
@@ -292,7 +292,7 @@ export interface ValueConverter<valueType> {
|
|
|
292
292
|
* @example
|
|
293
293
|
* fromInput: (val, inputType) => new Date(val)
|
|
294
294
|
*/
|
|
295
|
-
fromInput?(val: string, inputType?: string): valueType;
|
|
295
|
+
fromInput?(val: string, inputType?: string): valueType | null | undefined;
|
|
296
296
|
/**
|
|
297
297
|
* Returns a displayable string representation of a value of valueType.
|
|
298
298
|
*
|
|
@@ -302,7 +302,7 @@ export interface ValueConverter<valueType> {
|
|
|
302
302
|
* @example
|
|
303
303
|
* displayValue: val => val?.toLocaleDateString()
|
|
304
304
|
*/
|
|
305
|
-
displayValue?(val: valueType): string;
|
|
305
|
+
displayValue?(val: valueType | null | undefined): string;
|
|
306
306
|
/**
|
|
307
307
|
* Specifies the storage type used in the database for this field. This can be used to explicitly define the data type and precision of the field in the database.
|
|
308
308
|
*
|
package/src/column-interfaces.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.valueOrExpressionToValue =
|
|
3
|
+
exports.valueOrExpressionToValue = valueOrExpressionToValue;
|
|
4
4
|
function valueOrExpressionToValue(f) {
|
|
5
5
|
if (typeof f === 'function') {
|
|
6
6
|
var x = f;
|
|
@@ -8,4 +8,3 @@ function valueOrExpressionToValue(f) {
|
|
|
8
8
|
}
|
|
9
9
|
return f;
|
|
10
10
|
}
|
|
11
|
-
exports.valueOrExpressionToValue = valueOrExpressionToValue;
|
package/src/column.d.ts
CHANGED
|
@@ -6,14 +6,14 @@ export declare class LookupColumn<T> {
|
|
|
6
6
|
private allowNull;
|
|
7
7
|
toJson(): any;
|
|
8
8
|
setId(val: any): void;
|
|
9
|
-
waitLoadOf(id: any): Promise<T
|
|
9
|
+
waitLoadOf(id: any): Promise<T | undefined> | null;
|
|
10
10
|
get(id: any): any;
|
|
11
11
|
storedItem?: {
|
|
12
12
|
item: T;
|
|
13
13
|
};
|
|
14
14
|
set(item: T): void;
|
|
15
|
-
id
|
|
16
|
-
constructor(repository: Repository<T>, isReferenceRelation:
|
|
15
|
+
id?: idType<T>;
|
|
16
|
+
constructor(repository: Repository<T>, isReferenceRelation: boolean, allowNull: boolean);
|
|
17
17
|
get item(): T;
|
|
18
|
-
waitLoad(): Promise<T>;
|
|
18
|
+
waitLoad(): Promise<T | null | undefined>;
|
|
19
19
|
}
|
package/src/column.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.LookupColumn =
|
|
3
|
+
exports.LookupColumn = void 0;
|
|
4
|
+
exports.makeTitle = makeTitle;
|
|
4
5
|
var tslib_1 = require("tslib");
|
|
5
6
|
var getEntityRef_js_1 = require("./remult3/getEntityRef.js");
|
|
6
7
|
var repository_internals_js_1 = require("./remult3/repository-internals.js");
|
|
@@ -13,7 +14,6 @@ function makeTitle(name) {
|
|
|
13
14
|
.replace('Email', 'eMail')
|
|
14
15
|
.replace(' I D', ' ID'));
|
|
15
16
|
}
|
|
16
|
-
exports.makeTitle = makeTitle;
|
|
17
17
|
var LookupColumn = /** @class */ (function () {
|
|
18
18
|
function LookupColumn(repository, isReferenceRelation, allowNull) {
|
|
19
19
|
this.repository = repository;
|
package/src/context.d.ts
CHANGED
|
@@ -11,14 +11,14 @@ export declare class RemultAsyncLocalStorage {
|
|
|
11
11
|
constructor(remultObjectStorage: RemultAsyncLocalStorageCore<{
|
|
12
12
|
remult: Remult;
|
|
13
13
|
inInitRequest?: boolean;
|
|
14
|
-
}>);
|
|
14
|
+
}> | undefined);
|
|
15
15
|
run<T>(remult: Remult, callback: (remult: Remult) => Promise<T>): Promise<T>;
|
|
16
|
-
isInInitRequest(): boolean;
|
|
16
|
+
isInInitRequest(): boolean | undefined;
|
|
17
17
|
setInInitRequest(val: boolean): void;
|
|
18
18
|
getStore(): {
|
|
19
19
|
remult: Remult;
|
|
20
20
|
inInitRequest?: boolean;
|
|
21
|
-
};
|
|
21
|
+
} | undefined;
|
|
22
22
|
}
|
|
23
23
|
export type RemultAsyncLocalStorageCore<T> = {
|
|
24
24
|
run<R>(store: T, callback: () => Promise<R>): Promise<R>;
|
|
@@ -202,6 +202,6 @@ export interface itemChange {
|
|
|
202
202
|
deleted: boolean;
|
|
203
203
|
}
|
|
204
204
|
export declare function doTransaction(remult: Remult, what: (dp: DataProvider) => Promise<void>): Promise<void>;
|
|
205
|
-
export declare function withRemult<T>(callback: (remult:
|
|
205
|
+
export declare function withRemult<T>(callback: (remult: Remult) => Promise<T>, options?: {
|
|
206
206
|
dataProvider?: DataProvider | Promise<DataProvider> | (() => Promise<DataProvider | undefined>);
|
|
207
207
|
}): Promise<T>;
|
package/src/context.js
CHANGED
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.EventSource = exports.queryConfig = exports.Allow = exports.ClassHelper = exports.Remult = exports.RemultAsyncLocalStorage = void 0;
|
|
4
|
+
exports.isBackend = isBackend;
|
|
5
|
+
exports.setControllerSettings = setControllerSettings;
|
|
6
|
+
exports.doTransaction = doTransaction;
|
|
7
|
+
exports.withRemult = withRemult;
|
|
4
8
|
var tslib_1 = require("tslib");
|
|
5
9
|
var rest_data_provider_js_1 = require("./data-providers/rest-data-provider.js");
|
|
6
10
|
var LiveQueryClient_js_1 = require("./live-query/LiveQueryClient.js");
|
|
@@ -65,7 +69,6 @@ if (!remult_static_js_1.remultStatic.asyncContext)
|
|
|
65
69
|
function isBackend() {
|
|
66
70
|
return remult_static_js_1.remultStatic.actionInfo.runningOnServer || !remult_proxy_js_1.remult.dataProvider.isProxy;
|
|
67
71
|
}
|
|
68
|
-
exports.isBackend = isBackend;
|
|
69
72
|
var Remult = /** @class */ (function () {
|
|
70
73
|
function Remult(provider) {
|
|
71
74
|
var _this = this;
|
|
@@ -252,7 +255,6 @@ function setControllerSettings(target, options) {
|
|
|
252
255
|
r = p.constructor;
|
|
253
256
|
}
|
|
254
257
|
}
|
|
255
|
-
exports.setControllerSettings = setControllerSettings;
|
|
256
258
|
var Allow = /** @class */ (function () {
|
|
257
259
|
function Allow() {
|
|
258
260
|
}
|
|
@@ -381,7 +383,6 @@ function doTransaction(remult, what) {
|
|
|
381
383
|
});
|
|
382
384
|
});
|
|
383
385
|
}
|
|
384
|
-
exports.doTransaction = doTransaction;
|
|
385
386
|
var transactionLiveQueryPublisher = /** @class */ (function () {
|
|
386
387
|
function transactionLiveQueryPublisher(orig) {
|
|
387
388
|
this.orig = orig;
|
|
@@ -485,4 +486,3 @@ function withRemult(callback, options) {
|
|
|
485
486
|
});
|
|
486
487
|
});
|
|
487
488
|
}
|
|
488
|
-
exports.withRemult = withRemult;
|
package/src/data-api.d.ts
CHANGED
|
@@ -23,8 +23,8 @@ export declare class DataApi<T = any> {
|
|
|
23
23
|
private doOnId;
|
|
24
24
|
updateManyThroughPutRequest(response: DataApiResponse, request: DataApiRequest, body: any): Promise<void>;
|
|
25
25
|
updateManyImplementation(response: DataApiResponse, request: DataApiRequest, body: {
|
|
26
|
-
where
|
|
27
|
-
set
|
|
26
|
+
where?: any;
|
|
27
|
+
set?: any;
|
|
28
28
|
}): Promise<void>;
|
|
29
29
|
actualUpdate(row: any, body: any): Promise<rowHelperImplementation<T>>;
|
|
30
30
|
put(response: DataApiResponse, id: any, body: any): Promise<void>;
|
package/src/data-api.js
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.DataApi = void 0;
|
|
4
|
+
exports.determineSort = determineSort;
|
|
5
|
+
exports.serializeError = serializeError;
|
|
4
6
|
var tslib_1 = require("tslib");
|
|
5
7
|
var context_js_1 = require("./context.js");
|
|
6
8
|
var rest_data_provider_js_1 = require("./data-providers/rest-data-provider.js");
|
|
@@ -515,7 +517,7 @@ var DataApi = /** @class */ (function () {
|
|
|
515
517
|
return [4 /*yield*/, this.buildWhere(request, body)];
|
|
516
518
|
case 1:
|
|
517
519
|
where_2 = _a.sent();
|
|
518
|
-
filter_interfaces_js_1.Filter.throwErrorIfFilterIsEmpty(where_2, '
|
|
520
|
+
filter_interfaces_js_1.Filter.throwErrorIfFilterIsEmpty(where_2, 'updateMany');
|
|
519
521
|
return [4 /*yield*/, (0, context_js_1.doTransaction)(this.remult, function () { return tslib_1.__awaiter(_this, void 0, void 0, function () {
|
|
520
522
|
var updated, _a, _b, _c, x, e_3_1;
|
|
521
523
|
var _d, e_3, _e, _f;
|
|
@@ -767,7 +769,6 @@ function determineSort(sortUrlParm, dirUrlParam) {
|
|
|
767
769
|
});
|
|
768
770
|
return result;
|
|
769
771
|
}
|
|
770
|
-
exports.determineSort = determineSort;
|
|
771
772
|
function serializeError(data) {
|
|
772
773
|
if (data instanceof TypeError) {
|
|
773
774
|
data = { message: data.message, stack: data.stack };
|
|
@@ -779,4 +780,3 @@ function serializeError(data) {
|
|
|
779
780
|
data = { message: x };
|
|
780
781
|
return data;
|
|
781
782
|
}
|
|
782
|
-
exports.serializeError = serializeError;
|
package/src/data-interfaces.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.extractSort =
|
|
3
|
+
exports.extractSort = extractSort;
|
|
4
4
|
var sort_js_1 = require("./sort.js");
|
|
5
5
|
function extractSort(sort) {
|
|
6
6
|
if (sort instanceof Array) {
|
|
@@ -12,4 +12,3 @@ function extractSort(sort) {
|
|
|
12
12
|
}
|
|
13
13
|
return sort;
|
|
14
14
|
}
|
|
15
|
-
exports.extractSort = extractSort;
|
|
@@ -7,7 +7,28 @@ var JsonEntityOpfsStorage = /** @class */ (function () {
|
|
|
7
7
|
}
|
|
8
8
|
JsonEntityOpfsStorage.prototype.getItem = function (entityDbName) {
|
|
9
9
|
return tslib_1.__awaiter(this, void 0, void 0, function () {
|
|
10
|
-
var
|
|
10
|
+
var opfsFile, readable;
|
|
11
|
+
return tslib_1.__generator(this, function (_a) {
|
|
12
|
+
switch (_a.label) {
|
|
13
|
+
case 0: return [4 /*yield*/, this.init()];
|
|
14
|
+
case 1: return [4 /*yield*/, (_a.sent()).getFileHandle(entityDbName + '.json', {
|
|
15
|
+
create: true,
|
|
16
|
+
})];
|
|
17
|
+
case 2:
|
|
18
|
+
opfsFile = _a.sent();
|
|
19
|
+
return [4 /*yield*/, opfsFile.getFile()];
|
|
20
|
+
case 3:
|
|
21
|
+
readable = _a.sent();
|
|
22
|
+
return [4 /*yield*/, readable.text()];
|
|
23
|
+
case 4: return [2 /*return*/, _a.sent()];
|
|
24
|
+
}
|
|
25
|
+
});
|
|
26
|
+
});
|
|
27
|
+
};
|
|
28
|
+
//@internal
|
|
29
|
+
JsonEntityOpfsStorage.prototype.init = function () {
|
|
30
|
+
return tslib_1.__awaiter(this, void 0, void 0, function () {
|
|
31
|
+
var _a;
|
|
11
32
|
return tslib_1.__generator(this, function (_b) {
|
|
12
33
|
switch (_b.label) {
|
|
13
34
|
case 0:
|
|
@@ -17,16 +38,7 @@ var JsonEntityOpfsStorage = /** @class */ (function () {
|
|
|
17
38
|
case 1:
|
|
18
39
|
_a.opfsRoot = _b.sent();
|
|
19
40
|
_b.label = 2;
|
|
20
|
-
case 2: return [
|
|
21
|
-
create: true,
|
|
22
|
-
})];
|
|
23
|
-
case 3:
|
|
24
|
-
opfsFile = _b.sent();
|
|
25
|
-
return [4 /*yield*/, opfsFile.getFile()];
|
|
26
|
-
case 4:
|
|
27
|
-
readable = _b.sent();
|
|
28
|
-
return [4 /*yield*/, readable.text()];
|
|
29
|
-
case 5: return [2 /*return*/, _b.sent()];
|
|
41
|
+
case 2: return [2 /*return*/, this.opfsRoot];
|
|
30
42
|
}
|
|
31
43
|
});
|
|
32
44
|
});
|
|
@@ -36,19 +48,21 @@ var JsonEntityOpfsStorage = /** @class */ (function () {
|
|
|
36
48
|
var opfsFile, writable;
|
|
37
49
|
return tslib_1.__generator(this, function (_a) {
|
|
38
50
|
switch (_a.label) {
|
|
39
|
-
case 0: return [4 /*yield*/, this.
|
|
51
|
+
case 0: return [4 /*yield*/, this.init()];
|
|
52
|
+
case 1: return [4 /*yield*/, (_a.sent()).getFileHandle(entityDbName + '.json', {
|
|
40
53
|
create: true,
|
|
41
54
|
})];
|
|
42
|
-
case
|
|
55
|
+
case 2: return [4 /*yield*/, _a.sent()];
|
|
56
|
+
case 3:
|
|
43
57
|
opfsFile = _a.sent();
|
|
44
58
|
return [4 /*yield*/, opfsFile.createWritable()];
|
|
45
|
-
case
|
|
59
|
+
case 4:
|
|
46
60
|
writable = _a.sent();
|
|
47
61
|
return [4 /*yield*/, writable.write(json)];
|
|
48
|
-
case
|
|
62
|
+
case 5:
|
|
49
63
|
_a.sent();
|
|
50
64
|
return [4 /*yield*/, writable.close()];
|
|
51
|
-
case
|
|
65
|
+
case 6:
|
|
52
66
|
_a.sent();
|
|
53
67
|
return [2 /*return*/];
|
|
54
68
|
}
|
|
@@ -15,8 +15,8 @@ export declare class RestEntityDataProvider implements EntityDataProvider, Proxy
|
|
|
15
15
|
private http;
|
|
16
16
|
private entity;
|
|
17
17
|
constructor(url: () => string, http: () => RestDataProviderHttpProvider, entity: EntityMetadata);
|
|
18
|
-
translateFromJson(row: any):
|
|
19
|
-
translateToJson(row: any):
|
|
18
|
+
translateFromJson(row: any): any;
|
|
19
|
+
translateToJson(row: any): any;
|
|
20
20
|
count(where: Filter): Promise<number>;
|
|
21
21
|
deleteMany(where: Filter): Promise<number>;
|
|
22
22
|
updateMany(where: Filter, data: any): Promise<number>;
|
|
@@ -29,7 +29,7 @@ export declare class RestEntityDataProvider implements EntityDataProvider, Proxy
|
|
|
29
29
|
}
|
|
30
30
|
export declare class RestDataProviderHttpProviderUsingFetch implements RestDataProviderHttpProvider {
|
|
31
31
|
private fetch?;
|
|
32
|
-
constructor(fetch?: (input: RequestInfo, init?: RequestInit) => Promise<Response>);
|
|
32
|
+
constructor(fetch?: ((input: RequestInfo, init?: RequestInit) => Promise<Response>) | undefined);
|
|
33
33
|
get(url: string): Promise<any>;
|
|
34
34
|
put(url: string, data: any): Promise<any>;
|
|
35
35
|
delete(url: string): Promise<any>;
|
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.liveQueryAction = exports.
|
|
3
|
+
exports.liveQueryAction = exports.RestDataProviderHttpProviderUsingFetch = exports.RestEntityDataProvider = exports.RestDataProvider = void 0;
|
|
4
|
+
exports.findOptionsToJson = findOptionsToJson;
|
|
5
|
+
exports.findOptionsFromJson = findOptionsFromJson;
|
|
6
|
+
exports.addFilterToUrlAndReturnTrueIfSuccessful = addFilterToUrlAndReturnTrueIfSuccessful;
|
|
4
7
|
var tslib_1 = require("tslib");
|
|
5
8
|
var urlBuilder_js_1 = require("../../urlBuilder.js");
|
|
6
9
|
var buildRestDataProvider_js_1 = require("../buildRestDataProvider.js");
|
|
@@ -58,7 +61,6 @@ function findOptionsToJson(options, meta) {
|
|
|
58
61
|
options = tslib_1.__assign(tslib_1.__assign({}, options), { load: options.load(meta.fields).map(function (y) { return y.key; }) });
|
|
59
62
|
return options;
|
|
60
63
|
}
|
|
61
|
-
exports.findOptionsToJson = findOptionsToJson;
|
|
62
64
|
//@internal
|
|
63
65
|
function findOptionsFromJson(json, meta) {
|
|
64
66
|
var e_1, _a;
|
|
@@ -109,7 +111,6 @@ function findOptionsFromJson(json, meta) {
|
|
|
109
111
|
}
|
|
110
112
|
return r;
|
|
111
113
|
}
|
|
112
|
-
exports.findOptionsFromJson = findOptionsFromJson;
|
|
113
114
|
var RestEntityDataProvider = /** @class */ (function () {
|
|
114
115
|
function RestEntityDataProvider(url, http, entity) {
|
|
115
116
|
this.url = url;
|
|
@@ -470,5 +471,4 @@ function addFilterToUrlAndReturnTrueIfSuccessful(filter, url) {
|
|
|
470
471
|
}
|
|
471
472
|
return true;
|
|
472
473
|
}
|
|
473
|
-
exports.addFilterToUrlAndReturnTrueIfSuccessful = addFilterToUrlAndReturnTrueIfSuccessful;
|
|
474
474
|
exports.liveQueryAction = 'liveQuery-';
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.SqlDatabase = void 0;
|
|
4
|
+
exports.getRowAfterUpdate = getRowAfterUpdate;
|
|
4
5
|
var tslib_1 = require("tslib");
|
|
5
6
|
var filter_consumer_bridge_to_sql_request_js_1 = require("../filter/filter-consumer-bridge-to-sql-request.js");
|
|
6
7
|
var filter_interfaces_js_1 = require("../filter/filter-interfaces.js");
|
|
@@ -268,16 +269,16 @@ var SqlDatabase = /** @class */ (function () {
|
|
|
268
269
|
exports.SqlDatabase = SqlDatabase;
|
|
269
270
|
var icons = new Map([
|
|
270
271
|
// CRUD
|
|
271
|
-
['INSERT', '⚪'],
|
|
272
|
-
['SELECT', '🔵'],
|
|
273
|
-
['UPDATE', '🟣'],
|
|
274
|
-
['DELETE', '🟤'],
|
|
272
|
+
['INSERT', '⚪'], // Used to insert new data into a database.
|
|
273
|
+
['SELECT', '🔵'], // Used to select data from a database and retrieve it.
|
|
274
|
+
['UPDATE', '🟣'], // Used to update existing data within a database.
|
|
275
|
+
['DELETE', '🟤'], // Used to delete existing data from a database.
|
|
275
276
|
// Additional
|
|
276
|
-
['CREATE', '🟩'],
|
|
277
|
-
['ALTER', '🟨'],
|
|
278
|
-
['DROP', '🟥'],
|
|
279
|
-
['TRUNCATE', '⬛'],
|
|
280
|
-
['GRANT', '🟪'],
|
|
277
|
+
['CREATE', '🟩'], // Used to create a new table, or database.
|
|
278
|
+
['ALTER', '🟨'], // Used to modify an existing database object, such as a table.
|
|
279
|
+
['DROP', '🟥'], // Used to delete an entire table or database.
|
|
280
|
+
['TRUNCATE', '⬛'], // Used to remove all records from a table, including all spaces allocated for the records are removed.
|
|
281
|
+
['GRANT', '🟪'], // Used to give a specific user permission to perform certain tasks.
|
|
281
282
|
['REVOKE', '🟫'], // Used to take back permissions from a user.
|
|
282
283
|
]);
|
|
283
284
|
var LogSQLCommand = /** @class */ (function () {
|
|
@@ -805,4 +806,3 @@ function getRowAfterUpdate(meta, dataProvider, data, id, operation) {
|
|
|
805
806
|
return r[0];
|
|
806
807
|
});
|
|
807
808
|
}
|
|
808
|
-
exports.getRowAfterUpdate = getRowAfterUpdate;
|
|
@@ -57,7 +57,7 @@ export declare class CustomSqlFilterBuilder implements SqlCommandWithParameters,
|
|
|
57
57
|
* @param {FieldMetadata<valueType>} [field] - The field metadata.
|
|
58
58
|
* @returns {string} - The SQL token.
|
|
59
59
|
*/
|
|
60
|
-
param: <valueType>(val: valueType, field?: FieldMetadata<valueType
|
|
60
|
+
param: <valueType>(val: valueType, field?: FieldMetadata<valueType>) => string;
|
|
61
61
|
/**
|
|
62
62
|
* Converts an entity filter into a raw SQL condition - and appends to it any `backendPrefilter` and `backendPreprocessFilter`
|
|
63
63
|
* @param {RepositoryOverloads<entityType>} repo - The repository.
|
|
@@ -66,9 +66,9 @@ export declare class CustomSqlFilterBuilder implements SqlCommandWithParameters,
|
|
|
66
66
|
*/
|
|
67
67
|
filterToRaw: <entityType>(repo: RepositoryOverloads<entityType>, condition: EntityFilter<entityType>) => Promise<string>;
|
|
68
68
|
}
|
|
69
|
-
export declare function isDbReadonly<entityType>(field: FieldMetadata, dbNames: EntityDbNames<entityType>): boolean;
|
|
69
|
+
export declare function isDbReadonly<entityType>(field: FieldMetadata, dbNames: EntityDbNames<entityType>): boolean | "" | undefined;
|
|
70
70
|
export declare function shouldNotCreateField<entityType>(field: FieldMetadata, dbNames: EntityDbNames<entityType>): boolean;
|
|
71
|
-
export declare function shouldCreateEntity(entity: EntityMetadata<
|
|
71
|
+
export declare function shouldCreateEntity(entity: EntityMetadata<unknown>, e: EntityDbNamesBase): boolean;
|
|
72
72
|
export declare type EntityDbNamesBase = {
|
|
73
73
|
$entityName: string;
|
|
74
74
|
$dbNameOf(field: FieldMetadata<any> | string): string;
|
|
@@ -1,6 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.CustomSqlFilterBuilder = exports.FilterConsumerBridgeToSqlRequest = void 0;
|
|
4
|
+
exports.isDbReadonly = isDbReadonly;
|
|
5
|
+
exports.shouldNotCreateField = shouldNotCreateField;
|
|
6
|
+
exports.shouldCreateEntity = shouldCreateEntity;
|
|
7
|
+
exports.dbNamesOf = dbNamesOf;
|
|
8
|
+
exports.dbNamesOfWithForceSqlExpression = dbNamesOfWithForceSqlExpression;
|
|
9
|
+
exports.entityDbName = entityDbName;
|
|
10
|
+
exports.fieldDbName = fieldDbName;
|
|
4
11
|
var tslib_1 = require("tslib");
|
|
5
12
|
var sql_database_js_1 = require("../data-providers/sql-database.js");
|
|
6
13
|
var remult_proxy_js_1 = require("../remult-proxy.js");
|
|
@@ -332,17 +339,14 @@ function isDbReadonly(field, dbNames) {
|
|
|
332
339
|
field.isServerExpression ||
|
|
333
340
|
(field.options.sqlExpression && field.dbName != dbNames.$dbNameOf(field)));
|
|
334
341
|
}
|
|
335
|
-
exports.isDbReadonly = isDbReadonly;
|
|
336
342
|
function shouldNotCreateField(field, dbNames) {
|
|
337
|
-
return (field.isServerExpression ||
|
|
343
|
+
return Boolean(field.isServerExpression ||
|
|
338
344
|
(field.options.sqlExpression && field.dbName != dbNames.$dbNameOf(field)));
|
|
339
345
|
}
|
|
340
|
-
exports.shouldNotCreateField = shouldNotCreateField;
|
|
341
346
|
function shouldCreateEntity(entity, e) {
|
|
342
347
|
return (!entity.options.sqlExpression &&
|
|
343
348
|
e.$entityName.toLowerCase().indexOf('from ') < 0);
|
|
344
349
|
}
|
|
345
|
-
exports.shouldCreateEntity = shouldCreateEntity;
|
|
346
350
|
function dbNamesOf(repo, wrapIdentifierOrOptions) {
|
|
347
351
|
return tslib_1.__awaiter(this, void 0, void 0, function () {
|
|
348
352
|
return tslib_1.__generator(this, function (_a) {
|
|
@@ -350,7 +354,6 @@ function dbNamesOf(repo, wrapIdentifierOrOptions) {
|
|
|
350
354
|
});
|
|
351
355
|
});
|
|
352
356
|
}
|
|
353
|
-
exports.dbNamesOf = dbNamesOf;
|
|
354
357
|
function dbNamesOfWithForceSqlExpression(repo, wrapIdentifierOrOptions) {
|
|
355
358
|
return tslib_1.__awaiter(this, void 0, void 0, function () {
|
|
356
359
|
return tslib_1.__generator(this, function (_a) {
|
|
@@ -358,12 +361,11 @@ function dbNamesOfWithForceSqlExpression(repo, wrapIdentifierOrOptions) {
|
|
|
358
361
|
});
|
|
359
362
|
});
|
|
360
363
|
}
|
|
361
|
-
|
|
362
|
-
function
|
|
363
|
-
if (forceSqlExpression === void 0) { forceSqlExpression = false; }
|
|
364
|
-
return tslib_1.__awaiter(this, void 0, void 0, function () {
|
|
364
|
+
function internalDbNamesOf(repo_1, wrapIdentifierOrOptions_1) {
|
|
365
|
+
return tslib_1.__awaiter(this, arguments, void 0, function (repo, wrapIdentifierOrOptions, forceSqlExpression) {
|
|
365
366
|
var options, meta, result, _a, _b, field, r, e_3_1;
|
|
366
367
|
var _c, e_3, _d;
|
|
368
|
+
if (forceSqlExpression === void 0) { forceSqlExpression = false; }
|
|
367
369
|
return tslib_1.__generator(this, function (_e) {
|
|
368
370
|
switch (_e.label) {
|
|
369
371
|
case 0:
|
|
@@ -408,6 +410,7 @@ function internalDbNamesOf(repo, wrapIdentifierOrOptions, forceSqlExpression) {
|
|
|
408
410
|
else if (options.tableName === true) {
|
|
409
411
|
r = result.$entityName + '.' + r;
|
|
410
412
|
}
|
|
413
|
+
;
|
|
411
414
|
result[field.key] = r;
|
|
412
415
|
_e.label = 5;
|
|
413
416
|
case 5:
|
|
@@ -429,10 +432,10 @@ function internalDbNamesOf(repo, wrapIdentifierOrOptions, forceSqlExpression) {
|
|
|
429
432
|
});
|
|
430
433
|
});
|
|
431
434
|
}
|
|
432
|
-
function entityDbName(
|
|
433
|
-
|
|
434
|
-
return tslib_1.__awaiter(this, void 0, void 0, function () {
|
|
435
|
+
function entityDbName(metadata_1) {
|
|
436
|
+
return tslib_1.__awaiter(this, arguments, void 0, function (metadata, wrapIdentifier) {
|
|
435
437
|
var prev;
|
|
438
|
+
if (wrapIdentifier === void 0) { wrapIdentifier = function (x) { return x; }; }
|
|
436
439
|
return tslib_1.__generator(this, function (_a) {
|
|
437
440
|
switch (_a.label) {
|
|
438
441
|
case 0:
|
|
@@ -457,13 +460,12 @@ function entityDbName(metadata, wrapIdentifier) {
|
|
|
457
460
|
});
|
|
458
461
|
});
|
|
459
462
|
}
|
|
460
|
-
exports.entityDbName = entityDbName;
|
|
461
463
|
var sqlExpressionInProgressKey = Symbol.for("sqlExpressionInProgressKey");
|
|
462
|
-
function fieldDbName(
|
|
463
|
-
|
|
464
|
-
if (forceSqlExpression === void 0) { forceSqlExpression = false; }
|
|
465
|
-
return tslib_1.__awaiter(this, void 0, void 0, function () {
|
|
464
|
+
function fieldDbName(f_1, meta_1) {
|
|
465
|
+
return tslib_1.__awaiter(this, arguments, void 0, function (f, meta, wrapIdentifier, forceSqlExpression) {
|
|
466
466
|
var result_1, rel, field, fInfo;
|
|
467
|
+
if (wrapIdentifier === void 0) { wrapIdentifier = function (x) { return x; }; }
|
|
468
|
+
if (forceSqlExpression === void 0) { forceSqlExpression = false; }
|
|
467
469
|
return tslib_1.__generator(this, function (_a) {
|
|
468
470
|
switch (_a.label) {
|
|
469
471
|
case 0:
|
|
@@ -476,6 +478,7 @@ function fieldDbName(f, meta, wrapIdentifier, forceSqlExpression) {
|
|
|
476
478
|
_a.label = 1;
|
|
477
479
|
case 1:
|
|
478
480
|
_a.trys.push([1, , 3, 4]);
|
|
481
|
+
;
|
|
479
482
|
f[sqlExpressionInProgressKey] = true;
|
|
480
483
|
return [4 /*yield*/, f.options.sqlExpression(meta)];
|
|
481
484
|
case 2:
|
|
@@ -509,4 +512,3 @@ function fieldDbName(f, meta, wrapIdentifier, forceSqlExpression) {
|
|
|
509
512
|
});
|
|
510
513
|
});
|
|
511
514
|
}
|
|
512
|
-
exports.fieldDbName = fieldDbName;
|
|
@@ -221,7 +221,7 @@ export declare class FilterSerializer implements FilterConsumer {
|
|
|
221
221
|
result: any;
|
|
222
222
|
constructor();
|
|
223
223
|
databaseCustom(databaseCustom: any): void;
|
|
224
|
-
custom(key:
|
|
224
|
+
custom(key: string, customItem: any): void;
|
|
225
225
|
hasUndefined: boolean;
|
|
226
226
|
add(key: string, val: any): void;
|
|
227
227
|
or(orElements: Filter[]): void;
|
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.FilterSerializer = exports.customDatabaseFilterToken = exports.customUrlToken = exports.NotFilter = exports.OrFilter = exports.AndFilter = exports.Filter = void 0;
|
|
4
|
+
exports.entityFilterToJson = entityFilterToJson;
|
|
5
|
+
exports.buildFilterFromRequestParameters = buildFilterFromRequestParameters;
|
|
6
|
+
exports.__updateEntityBasedOnWhere = __updateEntityBasedOnWhere;
|
|
4
7
|
var tslib_1 = require("tslib");
|
|
5
8
|
var getEntityRef_js_1 = require("../remult3/getEntityRef.js");
|
|
6
9
|
var relationInfoMember_js_1 = require("../remult3/relationInfoMember.js");
|
|
@@ -206,13 +209,17 @@ var Filter = /** @class */ (function () {
|
|
|
206
209
|
var fieldToFilter_1 = whereItem[key];
|
|
207
210
|
{
|
|
208
211
|
if (key == '$or') {
|
|
209
|
-
result.push(new (OrFilter.bind.apply(OrFilter, tslib_1.__spreadArray([void 0], tslib_1.__read(fieldToFilter_1.map(function (x) {
|
|
212
|
+
result.push(new (OrFilter.bind.apply(OrFilter, tslib_1.__spreadArray([void 0], tslib_1.__read(fieldToFilter_1.map(function (x) {
|
|
213
|
+
return Filter.fromEntityFilter(entity, x);
|
|
214
|
+
})), false)))());
|
|
210
215
|
}
|
|
211
216
|
else if (key == '$not') {
|
|
212
217
|
result.push(new NotFilter(Filter.fromEntityFilter(entity, fieldToFilter_1)));
|
|
213
218
|
}
|
|
214
219
|
else if (key == '$and') {
|
|
215
|
-
result.push(new (AndFilter.bind.apply(AndFilter, tslib_1.__spreadArray([void 0], tslib_1.__read(fieldToFilter_1.map(function (x) {
|
|
220
|
+
result.push(new (AndFilter.bind.apply(AndFilter, tslib_1.__spreadArray([void 0], tslib_1.__read(fieldToFilter_1.map(function (x) {
|
|
221
|
+
return Filter.fromEntityFilter(entity, x);
|
|
222
|
+
})), false)))());
|
|
216
223
|
}
|
|
217
224
|
else if (key.startsWith(exports.customUrlToken)) {
|
|
218
225
|
result.push(new Filter(function (x) {
|
|
@@ -758,7 +765,6 @@ function entityFilterToJson(entityDefs, where) {
|
|
|
758
765
|
return {};
|
|
759
766
|
return Filter.fromEntityFilter(entityDefs, where).toJson();
|
|
760
767
|
}
|
|
761
|
-
exports.entityFilterToJson = entityFilterToJson;
|
|
762
768
|
function buildFilterFromRequestParameters(entity, filterInfo) {
|
|
763
769
|
var e_5, _a;
|
|
764
770
|
var where = {};
|
|
@@ -989,7 +995,6 @@ function buildFilterFromRequestParameters(entity, filterInfo) {
|
|
|
989
995
|
return array;
|
|
990
996
|
}
|
|
991
997
|
}
|
|
992
|
-
exports.buildFilterFromRequestParameters = buildFilterFromRequestParameters;
|
|
993
998
|
var customTranslator = /** @class */ (function () {
|
|
994
999
|
function customTranslator(translateCustom) {
|
|
995
1000
|
this.translateCustom = translateCustom;
|
|
@@ -1149,7 +1154,6 @@ function __updateEntityBasedOnWhere(entityDefs, where, r) {
|
|
|
1149
1154
|
});
|
|
1150
1155
|
}
|
|
1151
1156
|
}
|
|
1152
|
-
exports.__updateEntityBasedOnWhere = __updateEntityBasedOnWhere;
|
|
1153
1157
|
var preciseValuesCollector = /** @class */ (function () {
|
|
1154
1158
|
function preciseValuesCollector() {
|
|
1155
1159
|
this.rawValues = {};
|
package/src/isOfType.js
CHANGED
|
@@ -1,14 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.isOfType = isOfType;
|
|
4
|
+
exports.cast = cast;
|
|
4
5
|
function isOfType(obj, checkMethod) {
|
|
5
6
|
return typeof obj[checkMethod] !== 'undefined';
|
|
6
7
|
}
|
|
7
|
-
exports.isOfType = isOfType;
|
|
8
8
|
function cast(obj, checkMethod) {
|
|
9
9
|
if (isOfType(obj, checkMethod)) {
|
|
10
10
|
return obj;
|
|
11
11
|
}
|
|
12
12
|
throw new Error("Object is not of type ".concat(checkMethod.toString()));
|
|
13
13
|
}
|
|
14
|
-
exports.cast = cast;
|