remult 0.26.23 → 0.27.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/filter/filter-interfaces.js +1 -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 +15 -7
- package/esm/src/remult3/RepositoryImplementation.js +165 -125
- package/esm/src/remult3/entity.js +1 -1
- package/esm/src/remult3/relation-loader.js +2 -2
- package/esm/src/remult3/remult3.js +15 -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.d.ts +1 -1
- 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 +2 -2
- package/remult-knex/index.js +7 -5
- package/remult-mongo.d.ts +1 -1
- package/remult-next.d.ts +5 -6
- 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.d.ts +1 -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.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 +21 -21
- package/server/remult-api-server.js +54 -48
- package/src/CompoundIdField.d.ts +2 -2
- 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 +4 -4
- 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 +4 -4
- package/src/data-api.js +4 -4
- package/src/data-interfaces.d.ts +1 -1
- 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.d.ts +1 -1
- package/src/data-providers/sql-database.js +11 -11
- package/src/data-providers/web-sql-data-provider.d.ts +2 -2
- package/src/entity.d.ts +1 -1
- 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 +2 -1
- package/src/filter/filter-interfaces.js +10 -7
- 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 +17 -17
- package/src/remult3/Fields.js +22 -13
- package/src/remult3/RepositoryImplementation.d.ts +51 -46
- package/src/remult3/RepositoryImplementation.js +421 -368
- 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 +4 -4
- package/src/remult3/classDescribers.js +3 -4
- package/src/remult3/columnInfo.d.ts +1 -1
- 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 +3 -3
- package/src/remult3/relationInfoMember.js +4 -5
- package/src/remult3/remult3.d.ts +23 -20
- package/src/remult3/remult3.js +15 -0
- package/src/remult3/repository-internals.d.ts +3 -3
- package/src/remult3/repository-internals.js +2 -2
- package/src/server-action.d.ts +2 -2
- 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
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
|
@@ -2,7 +2,7 @@ import type { Remult } from './context.js';
|
|
|
2
2
|
import type { ErrorInfo } from './data-interfaces.js';
|
|
3
3
|
import type { EntityMetadata, FindOptions, Repository } from './remult3/remult3.js';
|
|
4
4
|
import type { rowHelperImplementation } from './remult3/RepositoryImplementation.js';
|
|
5
|
-
export declare class DataApi<T =
|
|
5
|
+
export declare class DataApi<T = unknown> {
|
|
6
6
|
private repository;
|
|
7
7
|
private remult;
|
|
8
8
|
constructor(repository: Repository<T>, remult: Remult);
|
|
@@ -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>;
|
|
@@ -45,4 +45,4 @@ export interface DataApiRequest {
|
|
|
45
45
|
get(key: string): any;
|
|
46
46
|
}
|
|
47
47
|
export declare function determineSort(sortUrlParm: string, dirUrlParam: string): any;
|
|
48
|
-
export declare function serializeError(data: ErrorInfo): ErrorInfo<
|
|
48
|
+
export declare function serializeError(data: ErrorInfo): ErrorInfo<unknown>;
|
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.d.ts
CHANGED
|
@@ -35,7 +35,7 @@ export interface RestDataProviderHttpProvider {
|
|
|
35
35
|
get(url: string): Promise<any>;
|
|
36
36
|
}
|
|
37
37
|
export declare function extractSort(sort: any): Sort;
|
|
38
|
-
export interface ErrorInfo<entityType =
|
|
38
|
+
export interface ErrorInfo<entityType = unknown> {
|
|
39
39
|
message?: string;
|
|
40
40
|
modelState?: {
|
|
41
41
|
[Properties in keyof Partial<MembersOnly<entityType>>]?: string;
|
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-';
|
|
@@ -37,7 +37,7 @@ export declare class SqlDatabase implements DataProvider, HasWrapIdentifier, Can
|
|
|
37
37
|
* Wraps an identifier with the database's identifier syntax.
|
|
38
38
|
*/
|
|
39
39
|
wrapIdentifier: (name: string) => string;
|
|
40
|
-
ensureSchema(entities: EntityMetadata
|
|
40
|
+
ensureSchema(entities: EntityMetadata[]): Promise<void>;
|
|
41
41
|
/**
|
|
42
42
|
* Gets the entity data provider.
|
|
43
43
|
* @param entity - The entity metadata.
|
|
@@ -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;
|
|
@@ -10,9 +10,9 @@ export declare class WebSqlDataProvider implements SqlImplementation, __RowsOfDa
|
|
|
10
10
|
end(): Promise<void>;
|
|
11
11
|
getLimitSqlSyntax(limit: number, offset: number): string;
|
|
12
12
|
entityIsUsedForTheFirstTime(entity: EntityMetadata): Promise<void>;
|
|
13
|
-
ensureSchema(entities: EntityMetadata
|
|
13
|
+
ensureSchema(entities: EntityMetadata[]): Promise<void>;
|
|
14
14
|
dropTable(entity: EntityMetadata): Promise<void>;
|
|
15
|
-
createTable(entity: EntityMetadata
|
|
15
|
+
createTable(entity: EntityMetadata): Promise<void>;
|
|
16
16
|
createCommand(): SqlCommand;
|
|
17
17
|
transaction(action: (dataProvider: SqlImplementation) => Promise<void>): Promise<void>;
|
|
18
18
|
private addColumnSqlSyntax;
|
package/src/entity.d.ts
CHANGED
|
@@ -2,7 +2,7 @@ import type { Allowed, AllowedForInstance } from './context.js';
|
|
|
2
2
|
import type { FieldMetadata } from './column-interfaces.js';
|
|
3
3
|
import type { EntityFilter, EntityIdFields, EntityMetadata, EntityOrderBy, EntityRef, FieldsMetadata, LifecycleEvent } from './remult3/remult3.js';
|
|
4
4
|
import type { FilterPreciseValues } from './filter/filter-interfaces.js';
|
|
5
|
-
export interface EntityOptions<entityType =
|
|
5
|
+
export interface EntityOptions<entityType = unknown> {
|
|
6
6
|
/**A human readable name for the entity */
|
|
7
7
|
caption?: string;
|
|
8
8
|
/**
|
|
@@ -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, 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;
|
|
@@ -182,6 +182,7 @@ export declare class Filter {
|
|
|
182
182
|
*/
|
|
183
183
|
static resolve<entityType>(filter: EntityFilter<entityType> | (() => EntityFilter<entityType> | Promise<EntityFilter<entityType>>)): Promise<EntityFilter<entityType>>;
|
|
184
184
|
toJson(): any;
|
|
185
|
+
static translateCustomWhere<T>(r: Filter, entity: EntityMetadata<T>, remult: Remult): Promise<Filter>;
|
|
185
186
|
}
|
|
186
187
|
export interface FilterConsumer {
|
|
187
188
|
or(orElements: Filter[]): void;
|
|
@@ -221,7 +222,7 @@ export declare class FilterSerializer implements FilterConsumer {
|
|
|
221
222
|
result: any;
|
|
222
223
|
constructor();
|
|
223
224
|
databaseCustom(databaseCustom: any): void;
|
|
224
|
-
custom(key:
|
|
225
|
+
custom(key: string, customItem: any): void;
|
|
225
226
|
hasUndefined: boolean;
|
|
226
227
|
add(key: string, val: any): void;
|
|
227
228
|
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) {
|
|
@@ -342,7 +349,6 @@ var Filter = /** @class */ (function () {
|
|
|
342
349
|
this.__applyToConsumer(r);
|
|
343
350
|
return r.result;
|
|
344
351
|
};
|
|
345
|
-
//@internal
|
|
346
352
|
Filter.translateCustomWhere = function (r, entity, remult) {
|
|
347
353
|
return tslib_1.__awaiter(this, void 0, void 0, function () {
|
|
348
354
|
var f;
|
|
@@ -758,7 +764,6 @@ function entityFilterToJson(entityDefs, where) {
|
|
|
758
764
|
return {};
|
|
759
765
|
return Filter.fromEntityFilter(entityDefs, where).toJson();
|
|
760
766
|
}
|
|
761
|
-
exports.entityFilterToJson = entityFilterToJson;
|
|
762
767
|
function buildFilterFromRequestParameters(entity, filterInfo) {
|
|
763
768
|
var e_5, _a;
|
|
764
769
|
var where = {};
|
|
@@ -989,7 +994,6 @@ function buildFilterFromRequestParameters(entity, filterInfo) {
|
|
|
989
994
|
return array;
|
|
990
995
|
}
|
|
991
996
|
}
|
|
992
|
-
exports.buildFilterFromRequestParameters = buildFilterFromRequestParameters;
|
|
993
997
|
var customTranslator = /** @class */ (function () {
|
|
994
998
|
function customTranslator(translateCustom) {
|
|
995
999
|
this.translateCustom = translateCustom;
|
|
@@ -1149,7 +1153,6 @@ function __updateEntityBasedOnWhere(entityDefs, where, r) {
|
|
|
1149
1153
|
});
|
|
1150
1154
|
}
|
|
1151
1155
|
}
|
|
1152
|
-
exports.__updateEntityBasedOnWhere = __updateEntityBasedOnWhere;
|
|
1153
1156
|
var preciseValuesCollector = /** @class */ (function () {
|
|
1154
1157
|
function preciseValuesCollector() {
|
|
1155
1158
|
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;
|