remult 0.14.4 → 0.14.7
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/package.json +1 -5
- package/postgres/postgres-data-provider.d.ts +4 -1
- package/postgres/postgres-data-provider.js +2 -2
- package/postgres/postgresColumnSyntax.d.ts +1 -1
- package/remult-knex/index.d.ts +5 -2
- package/remult-knex/index.js +8 -8
- package/remult-middleware.js +0 -1
- package/server/expressBridge.d.ts +4 -2
- package/server/expressBridge.js +17 -16
- package/src/backend-tests/my-test.backend-spec.js +3 -3
- package/src/filter/filter-consumer-bridge-to-sql-request.d.ts +1 -1
- package/src/validators.js +2 -2
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "remult",
|
|
3
|
-
"version": "0.14.
|
|
3
|
+
"version": "0.14.7",
|
|
4
4
|
"description": "A CRUD framework for full-stack TypeScript",
|
|
5
5
|
"homepage": "https://remult.dev/",
|
|
6
6
|
"repository": {
|
|
@@ -11,10 +11,6 @@
|
|
|
11
11
|
"author": {
|
|
12
12
|
"name": "Noam Honig"
|
|
13
13
|
},
|
|
14
|
-
"exports": {
|
|
15
|
-
".": "./index.js",
|
|
16
|
-
"./remult-middleware": "./remult-middleware.js"
|
|
17
|
-
},
|
|
18
14
|
"dependencies": {
|
|
19
15
|
"uuid": "^8.3.2",
|
|
20
16
|
"reflect-metadata": "^0.1.13",
|
|
@@ -1,6 +1,9 @@
|
|
|
1
|
-
import { SqlDatabase, SqlCommand, SqlImplementation, EntityMetadata, FieldMetadata } from '../';
|
|
2
1
|
import { PoolConfig, QueryResult } from 'pg';
|
|
3
2
|
import { Remult } from '../src/context';
|
|
3
|
+
import { EntityMetadata } from '../src/remult3';
|
|
4
|
+
import { SqlCommand, SqlImplementation } from '../src/sql-command';
|
|
5
|
+
import { SqlDatabase } from '../src/data-providers/sql-database';
|
|
6
|
+
import { FieldMetadata } from '../src/column-interfaces';
|
|
4
7
|
export interface PostgresPool extends PostgresCommandSource {
|
|
5
8
|
connect(): Promise<PostgresClient>;
|
|
6
9
|
}
|
|
@@ -2,12 +2,12 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.createPostgresConnection = exports.preparePostgresQueueStorage = exports.PostgresSchemaBuilder = exports.verifyStructureOfAllEntities = exports.PostgresDataProvider = void 0;
|
|
4
4
|
var tslib_1 = require("tslib");
|
|
5
|
-
var __1 = require("../");
|
|
6
5
|
var pg_1 = require("pg");
|
|
7
6
|
var context_1 = require("../src/context");
|
|
8
7
|
var postgresColumnSyntax_1 = require("./postgresColumnSyntax");
|
|
9
8
|
var filter_consumer_bridge_to_sql_request_1 = require("../src/filter/filter-consumer-bridge-to-sql-request");
|
|
10
9
|
var remult3_1 = require("../src/remult3");
|
|
10
|
+
var sql_database_1 = require("../src/data-providers/sql-database");
|
|
11
11
|
var PostgresDataProvider = /** @class */ (function () {
|
|
12
12
|
function PostgresDataProvider(pool) {
|
|
13
13
|
this.pool = pool;
|
|
@@ -377,7 +377,7 @@ function createPostgresConnection(options) {
|
|
|
377
377
|
if (!config.connectionString && options.connectionString) {
|
|
378
378
|
config.connectionString = options.connectionString;
|
|
379
379
|
}
|
|
380
|
-
db = new
|
|
380
|
+
db = new sql_database_1.SqlDatabase(new PostgresDataProvider(new pg_1.Pool(config)));
|
|
381
381
|
remult = new context_1.Remult();
|
|
382
382
|
remult.setDataProvider(db);
|
|
383
383
|
if (!(options.autoCreateTables === undefined || options.autoCreateTables)) return [3 /*break*/, 2];
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { FieldMetadata } from '../';
|
|
1
|
+
import { FieldMetadata } from '../src/column-interfaces';
|
|
2
2
|
export declare function postgresColumnSyntax(x: FieldMetadata, dbName: string): string;
|
package/remult-knex/index.d.ts
CHANGED
|
@@ -1,7 +1,10 @@
|
|
|
1
|
-
import { DataProvider, EntityDataProvider, EntityFilter, EntityMetadata, FieldMetadata, Filter, Remult } from "..";
|
|
2
1
|
import { Knex } from 'knex';
|
|
3
|
-
import { FilterConsumer } from "../src/filter/filter-interfaces";
|
|
2
|
+
import { Filter, FilterConsumer } from "../src/filter/filter-interfaces";
|
|
4
3
|
import { dbNameProvider } from "../src/filter/filter-consumer-bridge-to-sql-request";
|
|
4
|
+
import { Remult } from "../src/context";
|
|
5
|
+
import { EntityFilter, EntityMetadata } from "../src/remult3";
|
|
6
|
+
import { DataProvider, EntityDataProvider } from '../src/data-interfaces';
|
|
7
|
+
import { FieldMetadata } from '../src/column-interfaces';
|
|
5
8
|
export declare class KnexDataProvider implements DataProvider {
|
|
6
9
|
knex: Knex;
|
|
7
10
|
constructor(knex: Knex);
|
package/remult-knex/index.js
CHANGED
|
@@ -2,13 +2,13 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.createKnexDataProvider = exports.buildColumn = exports.KnexSchemaBuilder = exports.FilterConsumerBridgeToKnexRequest = exports.KnexDataProvider = void 0;
|
|
4
4
|
var tslib_1 = require("tslib");
|
|
5
|
-
var __1 = require("..");
|
|
6
5
|
var knex_1 = require("knex");
|
|
7
6
|
var filter_interfaces_1 = require("../src/filter/filter-interfaces");
|
|
8
7
|
var filter_consumer_bridge_to_sql_request_1 = require("../src/filter/filter-consumer-bridge-to-sql-request");
|
|
9
8
|
var context_1 = require("../src/context");
|
|
10
9
|
var remult3_1 = require("../src/remult3");
|
|
11
10
|
var valueConverters_1 = require("../valueConverters");
|
|
11
|
+
var column_1 = require("../src/column");
|
|
12
12
|
var KnexDataProvider = /** @class */ (function () {
|
|
13
13
|
function KnexDataProvider(knex) {
|
|
14
14
|
this.knex = knex;
|
|
@@ -181,7 +181,7 @@ var KnexEntityDataProvider = /** @class */ (function () {
|
|
|
181
181
|
case 1:
|
|
182
182
|
e = _d.sent();
|
|
183
183
|
f = new FilterConsumerBridgeToKnexRequest(e);
|
|
184
|
-
|
|
184
|
+
filter_interfaces_1.Filter.fromEntityFilter(this.entity, this.entity.idMetadata.getIdFilter(id)).__applyToConsumer(f);
|
|
185
185
|
resultFilter = this.entity.idMetadata.getIdFilter(id);
|
|
186
186
|
if (data.id != undefined)
|
|
187
187
|
resultFilter = this.entity.idMetadata.getIdFilter(data.id);
|
|
@@ -225,7 +225,7 @@ var KnexEntityDataProvider = /** @class */ (function () {
|
|
|
225
225
|
return [4 /*yield*/, this.knex(e.entityName).update(updateObject).where(function (b) { return where.forEach(function (w) { return w(b); }); })];
|
|
226
226
|
case 12:
|
|
227
227
|
_d.sent();
|
|
228
|
-
return [2 /*return*/, this.find({ where:
|
|
228
|
+
return [2 /*return*/, this.find({ where: filter_interfaces_1.Filter.fromEntityFilter(this.entity, resultFilter) }).then(function (y) { return y[0]; })];
|
|
229
229
|
}
|
|
230
230
|
});
|
|
231
231
|
});
|
|
@@ -239,7 +239,7 @@ var KnexEntityDataProvider = /** @class */ (function () {
|
|
|
239
239
|
case 1:
|
|
240
240
|
e = _a.sent();
|
|
241
241
|
f = new FilterConsumerBridgeToKnexRequest(e);
|
|
242
|
-
|
|
242
|
+
filter_interfaces_1.Filter.fromEntityFilter(this.entity, this.entity.idMetadata.getIdFilter(id)).__applyToConsumer(f);
|
|
243
243
|
return [4 /*yield*/, f.resolveWhere()];
|
|
244
244
|
case 2:
|
|
245
245
|
where = _a.sent();
|
|
@@ -261,10 +261,10 @@ var KnexEntityDataProvider = /** @class */ (function () {
|
|
|
261
261
|
case 0: return [4 /*yield*/, this.init()];
|
|
262
262
|
case 1:
|
|
263
263
|
e = _d.sent();
|
|
264
|
-
if (this.entity.idMetadata.field instanceof
|
|
264
|
+
if (this.entity.idMetadata.field instanceof column_1.CompoundIdField)
|
|
265
265
|
resultFilter = this.entity.idMetadata.field.resultIdFilter(undefined, data);
|
|
266
266
|
else
|
|
267
|
-
resultFilter =
|
|
267
|
+
resultFilter = filter_interfaces_1.Filter.fromEntityFilter(this.entity, this.entity.idMetadata.getIdFilter(data[this.entity.idMetadata.field.key]));
|
|
268
268
|
insertObject = {};
|
|
269
269
|
_d.label = 2;
|
|
270
270
|
case 2:
|
|
@@ -305,7 +305,7 @@ var KnexEntityDataProvider = /** @class */ (function () {
|
|
|
305
305
|
case 11:
|
|
306
306
|
result = _d.sent();
|
|
307
307
|
newId_1 = result[0].id;
|
|
308
|
-
resultFilter = new
|
|
308
|
+
resultFilter = new filter_interfaces_1.Filter(function (x) { return x.isEqualTo(_this.entity.idMetadata.field, newId_1); });
|
|
309
309
|
return [3 /*break*/, 14];
|
|
310
310
|
case 12: return [4 /*yield*/, insert];
|
|
311
311
|
case 13:
|
|
@@ -789,7 +789,7 @@ function createKnexDataProvider(config, autoCreateTables) {
|
|
|
789
789
|
k = knex_1.default(config);
|
|
790
790
|
result = new KnexDataProvider(k);
|
|
791
791
|
if (!autoCreateTables) return [3 /*break*/, 2];
|
|
792
|
-
return [4 /*yield*/, new KnexSchemaBuilder(k).verifyStructureOfAllEntities(new
|
|
792
|
+
return [4 /*yield*/, new KnexSchemaBuilder(k).verifyStructureOfAllEntities(new context_1.Remult(result))];
|
|
793
793
|
case 1:
|
|
794
794
|
_a.sent();
|
|
795
795
|
_a.label = 2;
|
package/remult-middleware.js
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
|
-
import { DataProvider, Remult, IdEntity, Repository } from '../';
|
|
2
1
|
import { queuedJobInfoResponse } from '../src/server-action';
|
|
2
|
+
import { DataProvider } from '../src/data-interfaces';
|
|
3
3
|
import { DataApi, DataApiRequest, DataApiResponse } from '../src/data-api';
|
|
4
|
-
import { AllowedForInstance } from '../src/context';
|
|
4
|
+
import { AllowedForInstance, Remult } from '../src/context';
|
|
5
5
|
import { ClassType } from '../classType';
|
|
6
|
+
import { Repository } from '../src/remult3';
|
|
7
|
+
import { IdEntity } from '../src/id-entity';
|
|
6
8
|
export declare type RemultMiddlewareOptions = {
|
|
7
9
|
/** Sets a database connection for Remult.
|
|
8
10
|
*
|
package/server/expressBridge.js
CHANGED
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.JobsInQueueEntity = exports.EntityQueueStorage = exports.ExpressRequestBridgeToDataApiRequest = exports.SiteArea = exports.remultMiddlewareBase = void 0;
|
|
4
4
|
var tslib_1 = require("tslib");
|
|
5
|
-
var __1 = require("../");
|
|
6
5
|
var register_actions_on_server_1 = require("./register-actions-on-server");
|
|
7
6
|
var register_entities_on_server_1 = require("./register-entities-on-server");
|
|
8
7
|
var JsonEntityFileStorage_1 = require("./JsonEntityFileStorage");
|
|
@@ -10,6 +9,8 @@ var server_action_1 = require("../src/server-action");
|
|
|
10
9
|
var data_api_1 = require("../src/data-api");
|
|
11
10
|
var context_1 = require("../src/context");
|
|
12
11
|
var remult3_1 = require("../src/remult3");
|
|
12
|
+
var json_data_provider_1 = require("../src/data-providers/json-data-provider");
|
|
13
|
+
var id_entity_1 = require("../src/id-entity");
|
|
13
14
|
function remultMiddlewareBase(app, options) {
|
|
14
15
|
var _this = this;
|
|
15
16
|
if (!options) {
|
|
@@ -31,7 +32,7 @@ function remultMiddlewareBase(app, options) {
|
|
|
31
32
|
dataProvider = dataProvider.then(function (dp) {
|
|
32
33
|
if (dp)
|
|
33
34
|
return dp;
|
|
34
|
-
return new
|
|
35
|
+
return new json_data_provider_1.JsonDataProvider(new JsonEntityFileStorage_1.JsonEntityFileStorage('./db'));
|
|
35
36
|
});
|
|
36
37
|
if (options.initApi) {
|
|
37
38
|
dataProvider = dataProvider.then(function (dp) { return tslib_1.__awaiter(_this, void 0, void 0, function () {
|
|
@@ -39,7 +40,7 @@ function remultMiddlewareBase(app, options) {
|
|
|
39
40
|
return tslib_1.__generator(this, function (_a) {
|
|
40
41
|
switch (_a.label) {
|
|
41
42
|
case 0:
|
|
42
|
-
remult = new
|
|
43
|
+
remult = new context_1.Remult(dp);
|
|
43
44
|
return [4 /*yield*/, options.initApi(remult)];
|
|
44
45
|
case 1:
|
|
45
46
|
_a.sent();
|
|
@@ -52,7 +53,7 @@ function remultMiddlewareBase(app, options) {
|
|
|
52
53
|
if (options.logApiEndPoints !== undefined)
|
|
53
54
|
bridge.logApiEndPoints = options.logApiEndPoints;
|
|
54
55
|
if (options.rootPath === undefined)
|
|
55
|
-
options.rootPath =
|
|
56
|
+
options.rootPath = context_1.Remult.apiBaseUrl;
|
|
56
57
|
var apiArea = bridge.addArea(options.rootPath);
|
|
57
58
|
if (!options.disableAutoApi) {
|
|
58
59
|
var actions = [];
|
|
@@ -82,7 +83,7 @@ var ExpressBridge = /** @class */ (function () {
|
|
|
82
83
|
}
|
|
83
84
|
ExpressBridge.prototype.openApiDoc = function (options) {
|
|
84
85
|
var e_1, _a, e_2, _b;
|
|
85
|
-
var r = new
|
|
86
|
+
var r = new context_1.Remult();
|
|
86
87
|
if (!options.version)
|
|
87
88
|
options.version = "1.0.0";
|
|
88
89
|
var spec = {
|
|
@@ -446,7 +447,7 @@ var SiteArea = /** @class */ (function () {
|
|
|
446
447
|
case 0:
|
|
447
448
|
myReq = new ExpressRequestBridgeToDataApiRequest(req);
|
|
448
449
|
myRes = new ExpressResponseBridgeToDataApiResponse(res, req);
|
|
449
|
-
remult = new
|
|
450
|
+
remult = new context_1.Remult();
|
|
450
451
|
_b = (_a = remult).setDataProvider;
|
|
451
452
|
return [4 /*yield*/, this.bridge.dataProvider];
|
|
452
453
|
case 1:
|
|
@@ -811,43 +812,43 @@ var JobsInQueueEntity = /** @class */ (function (_super) {
|
|
|
811
812
|
return _super !== null && _super.apply(this, arguments) || this;
|
|
812
813
|
}
|
|
813
814
|
tslib_1.__decorate([
|
|
814
|
-
|
|
815
|
+
remult3_1.Fields.string(),
|
|
815
816
|
tslib_1.__metadata("design:type", String)
|
|
816
817
|
], JobsInQueueEntity.prototype, "userId", void 0);
|
|
817
818
|
tslib_1.__decorate([
|
|
818
|
-
|
|
819
|
+
remult3_1.Fields.string(),
|
|
819
820
|
tslib_1.__metadata("design:type", String)
|
|
820
821
|
], JobsInQueueEntity.prototype, "url", void 0);
|
|
821
822
|
tslib_1.__decorate([
|
|
822
|
-
|
|
823
|
+
remult3_1.Fields.date(),
|
|
823
824
|
tslib_1.__metadata("design:type", Date)
|
|
824
825
|
], JobsInQueueEntity.prototype, "submitTime", void 0);
|
|
825
826
|
tslib_1.__decorate([
|
|
826
|
-
|
|
827
|
+
remult3_1.Fields.date(),
|
|
827
828
|
tslib_1.__metadata("design:type", Date)
|
|
828
829
|
], JobsInQueueEntity.prototype, "doneTime", void 0);
|
|
829
830
|
tslib_1.__decorate([
|
|
830
|
-
|
|
831
|
+
remult3_1.Fields.string(),
|
|
831
832
|
tslib_1.__metadata("design:type", String)
|
|
832
833
|
], JobsInQueueEntity.prototype, "result", void 0);
|
|
833
834
|
tslib_1.__decorate([
|
|
834
|
-
|
|
835
|
+
remult3_1.Fields.boolean(),
|
|
835
836
|
tslib_1.__metadata("design:type", Boolean)
|
|
836
837
|
], JobsInQueueEntity.prototype, "done", void 0);
|
|
837
838
|
tslib_1.__decorate([
|
|
838
|
-
|
|
839
|
+
remult3_1.Fields.boolean(),
|
|
839
840
|
tslib_1.__metadata("design:type", Boolean)
|
|
840
841
|
], JobsInQueueEntity.prototype, "error", void 0);
|
|
841
842
|
tslib_1.__decorate([
|
|
842
|
-
|
|
843
|
+
remult3_1.Fields.number(),
|
|
843
844
|
tslib_1.__metadata("design:type", Number)
|
|
844
845
|
], JobsInQueueEntity.prototype, "progress", void 0);
|
|
845
846
|
JobsInQueueEntity = tslib_1.__decorate([
|
|
846
|
-
|
|
847
|
+
remult3_1.Entity(undefined, {
|
|
847
848
|
dbName: 'jobsInQueue'
|
|
848
849
|
})
|
|
849
850
|
], JobsInQueueEntity);
|
|
850
851
|
return JobsInQueueEntity;
|
|
851
|
-
}(
|
|
852
|
+
}(id_entity_1.IdEntity));
|
|
852
853
|
exports.JobsInQueueEntity = JobsInQueueEntity;
|
|
853
854
|
context_1.allEntities.splice(context_1.allEntities.indexOf(JobsInQueueEntity), 1);
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
var tslib_1 = require("tslib");
|
|
4
|
-
var __1 = require("../..");
|
|
5
4
|
var remult_knex_1 = require("../../remult-knex");
|
|
6
5
|
var dotenv_1 = require("dotenv");
|
|
7
6
|
var backend_database_test_setup_backend_spec_1 = require("./backend-database-test-setup.backend-spec");
|
|
8
7
|
var entityWithValidations_1 = require("../shared-tests/entityWithValidations");
|
|
8
|
+
var sql_database_1 = require("../data-providers/sql-database");
|
|
9
9
|
dotenv_1.config();
|
|
10
10
|
backend_database_test_setup_backend_spec_1.testPostgresImplementation("sql filter", function (_a) {
|
|
11
11
|
var createEntity = _a.createEntity;
|
|
@@ -18,7 +18,7 @@ backend_database_test_setup_backend_spec_1.testPostgresImplementation("sql filte
|
|
|
18
18
|
s = _c.sent();
|
|
19
19
|
_b = expect;
|
|
20
20
|
return [4 /*yield*/, s.find({
|
|
21
|
-
where:
|
|
21
|
+
where: sql_database_1.SqlDatabase.customFilter(function (build) { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
|
|
22
22
|
return tslib_1.__generator(this, function (_a) {
|
|
23
23
|
build.sql = s.metadata.fields.myId.options.dbName + ' in (1,3)';
|
|
24
24
|
return [2 /*return*/];
|
|
@@ -45,7 +45,7 @@ backend_database_test_setup_backend_spec_1.testPostgresImplementation("sql filte
|
|
|
45
45
|
return [4 /*yield*/, s.find({
|
|
46
46
|
where: {
|
|
47
47
|
$or: [
|
|
48
|
-
|
|
48
|
+
sql_database_1.SqlDatabase.customFilter(function (build) { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
|
|
49
49
|
return tslib_1.__generator(this, function (_a) {
|
|
50
50
|
build.sql = s.metadata.fields.myId.options.dbName + ' in (1,3)';
|
|
51
51
|
return [2 /*return*/];
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { SqlCommand } from "../sql-command";
|
|
2
2
|
import { Filter, FilterConsumer } from './filter-interfaces';
|
|
3
3
|
import { FieldMetadata } from "../column-interfaces";
|
|
4
|
-
import { EntityMetadata } from "
|
|
4
|
+
import { EntityMetadata } from "../remult3/remult3";
|
|
5
5
|
export declare class FilterConsumerBridgeToSqlRequest implements FilterConsumer {
|
|
6
6
|
private r;
|
|
7
7
|
private nameProvider;
|
package/src/validators.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.Validators = void 0;
|
|
4
4
|
var tslib_1 = require("tslib");
|
|
5
|
-
var
|
|
5
|
+
var context_1 = require("./context");
|
|
6
6
|
var Validators = /** @class */ (function () {
|
|
7
7
|
function Validators() {
|
|
8
8
|
}
|
|
@@ -45,7 +45,7 @@ var Validators = /** @class */ (function () {
|
|
|
45
45
|
if (message === void 0) { message = undefined; }
|
|
46
46
|
return tslib_1.__awaiter(void 0, void 0, void 0, function () {
|
|
47
47
|
return tslib_1.__generator(this, function (_a) {
|
|
48
|
-
if (
|
|
48
|
+
if (context_1.isBackend())
|
|
49
49
|
return [2 /*return*/, Validators.unique(entity, col, message)];
|
|
50
50
|
return [2 /*return*/];
|
|
51
51
|
});
|