remult 3.3.0-next.1 → 3.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm/graphql.js +1 -1
- package/esm/remult-knex/index.js +10 -3
- package/esm/remult-mongo.js +7 -3
- package/esm/server/get-remult-admin-html.js +125 -111
- package/esm/server/remult-admin.js +2 -0
- package/esm/server/remult-api-server.js +1 -1
- package/esm/src/data-api.js +30 -19
- package/esm/src/data-providers/rest-data-provider.js +48 -37
- package/esm/src/data-providers/sql-database.js +14 -3
- package/esm/src/live-query/SubscriptionChannel.js +52 -4
- package/esm/src/remult-proxy.js +4 -4
- package/esm/src/remult3/RepositoryImplementation.js +53 -25
- package/esm/src/server-action.js +2 -2
- package/esm/src/valueConverters.js +9 -5
- package/graphql.js +1 -1
- package/index.d.ts +1 -1
- package/package.json +1 -1
- package/remult-knex/index.js +18 -9
- package/remult-mongo.js +6 -2
- package/server/get-remult-admin-html.js +1 -1
- package/server/remult-admin.d.ts +2 -0
- package/server/remult-admin.js +2 -1
- package/server/remult-api-server.js +1 -0
- package/src/data-api.d.ts +4 -4
- package/src/data-api.js +50 -30
- package/src/data-interfaces.d.ts +6 -6
- package/src/data-providers/rest-data-provider.d.ts +4 -4
- package/src/data-providers/rest-data-provider.js +48 -37
- package/src/data-providers/sql-database.js +14 -3
- package/src/live-query/SubscriptionChannel.d.ts +52 -4
- package/src/live-query/SubscriptionChannel.js +52 -4
- package/src/remult-proxy.js +4 -4
- package/src/remult3/RepositoryImplementation.d.ts +11 -10
- package/src/remult3/RepositoryImplementation.js +237 -177
- package/src/remult3/remult3.d.ts +25 -23
- package/src/server-action.js +2 -2
- package/src/valueConverters.d.ts +3 -1
- package/src/valueConverters.js +9 -6
package/esm/src/server-action.js
CHANGED
|
@@ -193,7 +193,7 @@ export function BackendMethod(options) {
|
|
|
193
193
|
reg(controllerOptions.key +
|
|
194
194
|
'/' +
|
|
195
195
|
(options?.apiPrefix ? options.apiPrefix + '/' : '') +
|
|
196
|
-
key, options ? options.queue ?? false : false, options.allowed, async (d, req, res) => {
|
|
196
|
+
key, options ? (options.queue ?? false) : false, options.allowed, async (d, req, res) => {
|
|
197
197
|
d.args = d.args.map((x) => (isCustomUndefined(x) ? undefined : x));
|
|
198
198
|
let allowed = options.allowed;
|
|
199
199
|
try {
|
|
@@ -295,7 +295,7 @@ export function BackendMethod(options) {
|
|
|
295
295
|
id: defs.getOriginalId(),
|
|
296
296
|
},
|
|
297
297
|
}, baseUrl, http);
|
|
298
|
-
await defs.
|
|
298
|
+
await defs._updateResultsFromServerAction(r.rowInfo);
|
|
299
299
|
return r.result;
|
|
300
300
|
}
|
|
301
301
|
catch (err) {
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { InputTypes } from '../inputTypes.js';
|
|
2
|
+
const zeroDate = new Date('0000-01-01');
|
|
2
3
|
export class ValueConverters {
|
|
3
4
|
static Date = {
|
|
4
5
|
toJson: (val) => {
|
|
@@ -65,6 +66,8 @@ export class ValueConverters {
|
|
|
65
66
|
fromJson: (value) => {
|
|
66
67
|
if (!value || value == '' || value == '0000-00-00')
|
|
67
68
|
return null;
|
|
69
|
+
if (value == '0000-01-01')
|
|
70
|
+
return zeroDate;
|
|
68
71
|
let d = new Date(Date.parse(value));
|
|
69
72
|
d.setMinutes(d.getMinutes() + d.getTimezoneOffset());
|
|
70
73
|
return d;
|
|
@@ -88,6 +91,8 @@ export class ValueConverters {
|
|
|
88
91
|
static DateOnlyString = {
|
|
89
92
|
...ValueConverters.DateOnly,
|
|
90
93
|
toDb: (d) => {
|
|
94
|
+
if (d === zeroDate)
|
|
95
|
+
return '00000000';
|
|
91
96
|
let val = ValueConverters.DateOnly.toJson(d);
|
|
92
97
|
if (!val)
|
|
93
98
|
return undefined;
|
|
@@ -98,12 +103,11 @@ export class ValueConverters {
|
|
|
98
103
|
return null;
|
|
99
104
|
if (!val)
|
|
100
105
|
return undefined;
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
'-' +
|
|
105
|
-
val.substring(6, 8));
|
|
106
|
+
if (val === '00000000')
|
|
107
|
+
return zeroDate;
|
|
108
|
+
return new Date(Number(val.substring(0, 4)), Number(val.substring(4, 6)) - 1, Number(val.substring(6, 8)));
|
|
106
109
|
},
|
|
110
|
+
zeroDate,
|
|
107
111
|
};
|
|
108
112
|
static Boolean = {
|
|
109
113
|
toDb: (val) => val,
|
package/graphql.js
CHANGED
|
@@ -443,7 +443,7 @@ function remultGraphql(options) {
|
|
|
443
443
|
setResult((_a = {},
|
|
444
444
|
_a[toCamelCase(getMetaType(meta))] = y,
|
|
445
445
|
_a));
|
|
446
|
-
} }), arg1.id, arg1.patch)];
|
|
446
|
+
} }), { get: function () { return undefined; } }, arg1.id, arg1.patch)];
|
|
447
447
|
case 1:
|
|
448
448
|
_a.sent();
|
|
449
449
|
return [2 /*return*/];
|
package/index.d.ts
CHANGED
|
@@ -2,7 +2,7 @@ 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 { 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, ClassFieldDecorator, ClassFieldDecoratorContextStub, //n1 consider removing in ts5
|
|
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
8
|
export { EntityBase, ControllerBase, FieldType, getFields, ValueListFieldType, getValueList, ValueListFieldOptions, ValueListInfo, } from './src/remult3/RepositoryImplementation.js';
|
package/package.json
CHANGED
package/remult-knex/index.js
CHANGED
|
@@ -354,7 +354,7 @@ var KnexEntityDataProvider = /** @class */ (function () {
|
|
|
354
354
|
});
|
|
355
355
|
});
|
|
356
356
|
};
|
|
357
|
-
KnexEntityDataProvider.prototype.update = function (id, data) {
|
|
357
|
+
KnexEntityDataProvider.prototype.update = function (id, data, options) {
|
|
358
358
|
return tslib_1.__awaiter(this, void 0, void 0, function () {
|
|
359
359
|
var e, f, updateObject, _a, _b, x, v, key, e_4_1, where;
|
|
360
360
|
var e_4, _c;
|
|
@@ -407,6 +407,8 @@ var KnexEntityDataProvider = /** @class */ (function () {
|
|
|
407
407
|
.where(function (b) { return where.forEach(function (w) { return w(b); }); })];
|
|
408
408
|
case 12:
|
|
409
409
|
_d.sent();
|
|
410
|
+
if ((options === null || options === void 0 ? void 0 : options.select) === 'none')
|
|
411
|
+
return [2 /*return*/, undefined];
|
|
410
412
|
return [2 /*return*/, (0, sql_database_js_1.getRowAfterUpdate)(this.entity, this, data, id, 'update')];
|
|
411
413
|
}
|
|
412
414
|
});
|
|
@@ -435,7 +437,7 @@ var KnexEntityDataProvider = /** @class */ (function () {
|
|
|
435
437
|
});
|
|
436
438
|
});
|
|
437
439
|
};
|
|
438
|
-
KnexEntityDataProvider.prototype.insert = function (data) {
|
|
440
|
+
KnexEntityDataProvider.prototype.insert = function (data, options) {
|
|
439
441
|
return tslib_1.__awaiter(this, void 0, void 0, function () {
|
|
440
442
|
var e, insertObject, _a, _b, x, v, key, e_5_1, insert, newId_1, result, result;
|
|
441
443
|
var e_5, _c;
|
|
@@ -480,7 +482,8 @@ var KnexEntityDataProvider = /** @class */ (function () {
|
|
|
480
482
|
return [7 /*endfinally*/];
|
|
481
483
|
case 10:
|
|
482
484
|
insert = this.getEntityFrom(e).insert(insertObject);
|
|
483
|
-
if (!(0, RepositoryImplementation_js_1.isAutoIncrement)(this.entity.idMetadata.field)
|
|
485
|
+
if (!((0, RepositoryImplementation_js_1.isAutoIncrement)(this.entity.idMetadata.field) &&
|
|
486
|
+
!((options === null || options === void 0 ? void 0 : options.select) === 'none'))) return [3 /*break*/, 15];
|
|
484
487
|
if (!(this.knex.client.config.client === 'mysql2' ||
|
|
485
488
|
this.knex.client.config.client === 'mysql')) return [3 /*break*/, 12];
|
|
486
489
|
return [4 /*yield*/, insert];
|
|
@@ -493,16 +496,22 @@ var KnexEntityDataProvider = /** @class */ (function () {
|
|
|
493
496
|
result = _d.sent();
|
|
494
497
|
newId_1 = result[0][this.entity.idMetadata.field.dbName];
|
|
495
498
|
_d.label = 14;
|
|
496
|
-
case 14:
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
499
|
+
case 14:
|
|
500
|
+
if ((options === null || options === void 0 ? void 0 : options.select) === 'none')
|
|
501
|
+
return [2 /*return*/, undefined];
|
|
502
|
+
return [2 /*return*/, this.find({
|
|
503
|
+
where: new filter_interfaces_js_1.Filter(function (x) {
|
|
504
|
+
return x.isEqualTo(_this.entity.idMetadata.field, newId_1);
|
|
505
|
+
}),
|
|
506
|
+
}).then(function (y) { return y[0]; })];
|
|
501
507
|
case 15: return [4 /*yield*/, insert];
|
|
502
508
|
case 16:
|
|
503
509
|
_d.sent();
|
|
504
510
|
_d.label = 17;
|
|
505
|
-
case 17:
|
|
511
|
+
case 17:
|
|
512
|
+
if ((options === null || options === void 0 ? void 0 : options.select) === 'none')
|
|
513
|
+
return [2 /*return*/, undefined];
|
|
514
|
+
return [2 /*return*/, (0, sql_database_js_1.getRowAfterUpdate)(this.entity, this, data, undefined, 'insert')];
|
|
506
515
|
}
|
|
507
516
|
});
|
|
508
517
|
});
|
package/remult-mongo.js
CHANGED
|
@@ -476,7 +476,7 @@ var MongoEntityDataProvider = /** @class */ (function () {
|
|
|
476
476
|
});
|
|
477
477
|
});
|
|
478
478
|
};
|
|
479
|
-
MongoEntityDataProvider.prototype.update = function (id, data) {
|
|
479
|
+
MongoEntityDataProvider.prototype.update = function (id, data, options) {
|
|
480
480
|
return tslib_1.__awaiter(this, void 0, void 0, function () {
|
|
481
481
|
var _a, collection, e, f, newR, keys, _b, _c, f_1, r, _d, _e;
|
|
482
482
|
var e_11, _f;
|
|
@@ -514,6 +514,8 @@ var MongoEntityDataProvider = /** @class */ (function () {
|
|
|
514
514
|
{ session: this.session }])];
|
|
515
515
|
case 3:
|
|
516
516
|
r = _g.sent();
|
|
517
|
+
if ((options === null || options === void 0 ? void 0 : options.select) === 'none')
|
|
518
|
+
return [2 /*return*/, undefined];
|
|
517
519
|
return [2 /*return*/, (0, sql_database_js_1.getRowAfterUpdate)(this.entity, this, data, id, 'update')];
|
|
518
520
|
}
|
|
519
521
|
});
|
|
@@ -541,7 +543,7 @@ var MongoEntityDataProvider = /** @class */ (function () {
|
|
|
541
543
|
});
|
|
542
544
|
});
|
|
543
545
|
};
|
|
544
|
-
MongoEntityDataProvider.prototype.insert = function (data) {
|
|
546
|
+
MongoEntityDataProvider.prototype.insert = function (data, options) {
|
|
545
547
|
return tslib_1.__awaiter(this, void 0, void 0, function () {
|
|
546
548
|
var _a, collection, e, r, _b, _c, _d;
|
|
547
549
|
return tslib_1.__generator(this, function (_e) {
|
|
@@ -556,6 +558,8 @@ var MongoEntityDataProvider = /** @class */ (function () {
|
|
|
556
558
|
}])];
|
|
557
559
|
case 3:
|
|
558
560
|
r = _e.sent();
|
|
561
|
+
if ((options === null || options === void 0 ? void 0 : options.select) === 'none')
|
|
562
|
+
return [2 /*return*/, undefined];
|
|
559
563
|
_d = this.translateFromDb;
|
|
560
564
|
return [4 /*yield*/, collection.findOne({ _id: r.insertedId }, { session: this.session })];
|
|
561
565
|
case 4: return [4 /*yield*/, _d.apply(this, [_e.sent(), e])];
|