remult 0.12.7 → 0.13.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.
Files changed (41) hide show
  1. package/graphql.js +2 -2
  2. package/index.d.ts +2 -1
  3. package/index.js +6 -5
  4. package/package.json +1 -1
  5. package/postgres/postgres-data-provider.js +3 -2
  6. package/postgres/postgresColumnSyntax.js +1 -1
  7. package/readme.md +7 -1
  8. package/remult-knex/index.js +6 -5
  9. package/remult-mongo.js +1 -1
  10. package/server/expressBridge.js +8 -8
  11. package/src/backend-tests/backend-database-test-setup.backend-spec.d.ts +1 -1
  12. package/src/backend-tests/backend-database-test-setup.backend-spec.js +1 -1
  13. package/src/backend-tests/my-test.backend-spec.js +112 -0
  14. package/src/context.js +1 -1
  15. package/src/data-api.js +73 -52
  16. package/src/data-providers/array-entity-data-provider.js +8 -7
  17. package/src/data-providers/web-sql-data-provider.js +12 -6
  18. package/src/entity.d.ts +0 -1
  19. package/src/filter/filter-interfaces.d.ts +2 -2
  20. package/src/filter/filter-interfaces.js +5 -2
  21. package/src/id-entity.js +1 -5
  22. package/src/remult3/RepositoryImplementation.d.ts +53 -16
  23. package/src/remult3/RepositoryImplementation.js +224 -78
  24. package/src/remult3/remult3.d.ts +4 -4
  25. package/src/shared-tests/db-tests.db-tests.js +34 -127
  26. package/src/shared-tests/entityWithValidations.js +2 -2
  27. package/src/shared-tests/test-custom-id-column.spec.js +26 -4
  28. package/src/shared-tests/test-special-value.spec.js +2 -2
  29. package/src/shared-tests/test-update-with-null.spec.js +2 -2
  30. package/src/tests/c.js +2 -2
  31. package/src/tests/d.js +2 -2
  32. package/src/tests/dWithPrefilter.js +2 -2
  33. package/src/tests/entityForCustomFilter.js +1 -1
  34. package/src/tests/entityWithValidationsOnColumn.js +2 -2
  35. package/src/tests/h.js +6 -4
  36. package/src/tests/remult-3-entities.js +11 -11
  37. package/src/tests/tasks.js +3 -3
  38. package/src/validators.d.ts +5 -3
  39. package/src/validators.js +9 -7
  40. package/valueConverters.d.ts +11 -24
  41. package/valueConverters.js +148 -210
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ControllerBase = exports.EntityBase = exports.Entity = exports.BuildEntity = exports.decorateColumnSettings = exports.Field = exports.UuidField = exports.ValueListFieldType = exports.IntegerField = exports.DateOnlyField = exports.JsonField = exports.FieldType = exports.columnDefsImpl = exports.buildCaption = exports.CaptionTransformer = exports.getEntityRef = exports.FieldRefImplementation = exports.controllerRefImpl = exports.getControllerRef = exports.getFields = exports.rowHelperImplementation = exports.createOldEntity = exports.columnsOfType = exports.getEntityKey = exports.getEntitySettings = exports.entityInfo_key = exports.entityInfo = exports.__updateEntityBasedOnWhere = exports.RepositoryImplementation = void 0;
3
+ exports.ControllerBase = exports.EntityBase = exports.Entity = exports.BuildEntity = exports.decorateColumnSettings = exports.storableMember = exports.Field = exports.getValueList = exports.ValueListInfo = exports.ValueListFieldType = exports.isAutoIncrement = exports.Fields = exports.Fields1 = exports.FieldType = exports.columnDefsImpl = exports.buildCaption = exports.CaptionTransformer = exports.getEntityRef = exports.FieldRefImplementation = exports.controllerRefImpl = exports.getControllerRef = exports.getFields = exports.rowHelperImplementation = exports.createOldEntity = exports.columnsOfType = exports.getEntityKey = exports.getEntitySettings = exports.entityInfo_key = exports.entityInfo = exports.__updateEntityBasedOnWhere = exports.RepositoryImplementation = void 0;
4
4
  var tslib_1 = require("tslib");
5
5
  var column_1 = require("../column");
6
6
  var context_1 = require("../context");
@@ -616,6 +616,7 @@ function getEntityKey(entity) {
616
616
  exports.getEntityKey = getEntityKey;
617
617
  exports.columnsOfType = new Map();
618
618
  function createOldEntity(entity, remult) {
619
+ var _this = this;
619
620
  var r = exports.columnsOfType.get(entity);
620
621
  if (!r)
621
622
  exports.columnsOfType.set(entity, r = []);
@@ -634,12 +635,21 @@ function createOldEntity(entity, remult) {
634
635
  info = tslib_1.__assign(tslib_1.__assign({}, baseSettings_1), info);
635
636
  var functions = ["saving", "saved", "deleting", "deleted", "validation"];
636
637
  var _loop_2 = function (key_1) {
637
- if (baseSettings_1[key_1]) {
638
+ if (baseSettings_1[key_1] && baseSettings_1[key_1] !== info[key_1]) {
638
639
  var x_1 = info[key_1];
639
- info[key_1] = function (a, b) {
640
- x_1(a, b);
641
- baseSettings_1[key_1](a, b);
642
- };
640
+ info[key_1] = function (a, b) { return tslib_1.__awaiter(_this, void 0, void 0, function () {
641
+ return tslib_1.__generator(this, function (_a) {
642
+ switch (_a.label) {
643
+ case 0: return [4 /*yield*/, x_1(a, b)];
644
+ case 1:
645
+ _a.sent();
646
+ return [4 /*yield*/, baseSettings_1[key_1](a, b)];
647
+ case 2:
648
+ _a.sent();
649
+ return [2 /*return*/];
650
+ }
651
+ });
652
+ }); };
643
653
  }
644
654
  };
645
655
  try {
@@ -1238,7 +1248,7 @@ var rowHelperImplementation = /** @class */ (function (_super) {
1238
1248
  try {
1239
1249
  for (_d = tslib_1.__values(this.metadata.fields), _e = _d.next(); !_e.done; _e = _d.next()) {
1240
1250
  field = _e.value;
1241
- if (field.dbReadOnly || field == this.metadata.idMetadata.field && this.metadata.options.dbAutoIncrementId) {
1251
+ if (field.dbReadOnly) {
1242
1252
  d[field.key] = undefined;
1243
1253
  ignoreKeys.push(field.key);
1244
1254
  f = this.fields.find(field);
@@ -2075,7 +2085,6 @@ var EntityFullInfo = /** @class */ (function () {
2075
2085
  finally { if (e_29) throw e_29.error; }
2076
2086
  }
2077
2087
  this.fields = r;
2078
- this.dbAutoIncrementId = entityInfo.dbAutoIncrementId;
2079
2088
  this.caption = buildCaption(entityInfo.caption, this.key, remult);
2080
2089
  if (entityInfo.id) {
2081
2090
  this.idMetadata.field = entityInfo.id(this.fields);
@@ -2142,46 +2151,102 @@ function FieldType() {
2142
2151
  options = [];
2143
2152
  }
2144
2153
  options.splice(0, 0, { valueType: target });
2145
- Reflect.defineMetadata(storableMember, options, target);
2154
+ Reflect.defineMetadata(exports.storableMember, options, target);
2146
2155
  return target;
2147
2156
  };
2148
2157
  }
2149
2158
  exports.FieldType = FieldType;
2150
- function JsonField() {
2151
- var options = [];
2152
- for (var _i = 0; _i < arguments.length; _i++) {
2153
- options[_i] = arguments[_i];
2154
- }
2155
- return Field.apply(void 0, tslib_1.__spread([{
2156
- valueConverter: {
2157
- toDb: function (x) { return x; },
2158
- fromDb: function (x) { return x; },
2159
- fieldTypeInDb: 'json'
2160
- }
2161
- }], options));
2162
- }
2163
- exports.JsonField = JsonField;
2164
- function DateOnlyField() {
2165
- var options = [];
2166
- for (var _i = 0; _i < arguments.length; _i++) {
2167
- options[_i] = arguments[_i];
2159
+ exports.Fields1 = {
2160
+ String: function () {
2161
+ return function (a) {
2162
+ };
2168
2163
  }
2169
- return Field.apply(void 0, tslib_1.__spread([{
2170
- valueConverter: valueConverters_1.DateOnlyValueConverter
2171
- }], options));
2172
- }
2173
- exports.DateOnlyField = DateOnlyField;
2174
- function IntegerField() {
2175
- var options = [];
2176
- for (var _i = 0; _i < arguments.length; _i++) {
2177
- options[_i] = arguments[_i];
2164
+ };
2165
+ var Fields = /** @class */ (function () {
2166
+ function Fields() {
2178
2167
  }
2179
- return Field.apply(void 0, tslib_1.__spread([{
2180
- valueType: Number,
2181
- valueConverter: valueConverters_1.IntegerValueConverter
2182
- }], options));
2168
+ Fields.Object = function () {
2169
+ var options = [];
2170
+ for (var _i = 0; _i < arguments.length; _i++) {
2171
+ options[_i] = arguments[_i];
2172
+ }
2173
+ return Field.apply(void 0, tslib_1.__spread([undefined], options));
2174
+ };
2175
+ Fields.DateOnly = function () {
2176
+ var options = [];
2177
+ for (var _i = 0; _i < arguments.length; _i++) {
2178
+ options[_i] = arguments[_i];
2179
+ }
2180
+ return Field.apply(void 0, tslib_1.__spread([function () { return Date; }, {
2181
+ valueConverter: valueConverters_1.ValueConverters.DateOnly
2182
+ }], options));
2183
+ };
2184
+ Fields.Date = function () {
2185
+ var options = [];
2186
+ for (var _i = 0; _i < arguments.length; _i++) {
2187
+ options[_i] = arguments[_i];
2188
+ }
2189
+ return Field.apply(void 0, tslib_1.__spread([function () { return Date; }], options));
2190
+ };
2191
+ Fields.Integer = function () {
2192
+ var options = [];
2193
+ for (var _i = 0; _i < arguments.length; _i++) {
2194
+ options[_i] = arguments[_i];
2195
+ }
2196
+ return Field.apply(void 0, tslib_1.__spread([function () { return Number; }, {
2197
+ valueConverter: valueConverters_1.ValueConverters.Integer
2198
+ }], options));
2199
+ };
2200
+ Fields.AutoIncrement = function () {
2201
+ var options = [];
2202
+ for (var _i = 0; _i < arguments.length; _i++) {
2203
+ options[_i] = arguments[_i];
2204
+ }
2205
+ return Field.apply(void 0, tslib_1.__spread([function () { return Number; }, {
2206
+ allowApiUpdate: false,
2207
+ dbReadOnly: true,
2208
+ valueConverter: tslib_1.__assign(tslib_1.__assign({}, valueConverters_1.ValueConverters.Integer), { fieldTypeInDb: 'autoincrement' })
2209
+ }], options));
2210
+ };
2211
+ Fields.Number = function () {
2212
+ var options = [];
2213
+ for (var _i = 0; _i < arguments.length; _i++) {
2214
+ options[_i] = arguments[_i];
2215
+ }
2216
+ return Field.apply(void 0, tslib_1.__spread([function () { return Number; }], options));
2217
+ };
2218
+ Fields.Uuid = function () {
2219
+ var options = [];
2220
+ for (var _i = 0; _i < arguments.length; _i++) {
2221
+ options[_i] = arguments[_i];
2222
+ }
2223
+ return Field.apply(void 0, tslib_1.__spread([function () { return String; }, {
2224
+ allowApiUpdate: false,
2225
+ defaultValue: function () { return uuid_1.v4(); }
2226
+ }], options));
2227
+ };
2228
+ Fields.String = function () {
2229
+ var options = [];
2230
+ for (var _i = 0; _i < arguments.length; _i++) {
2231
+ options[_i] = arguments[_i];
2232
+ }
2233
+ return Field.apply(void 0, tslib_1.__spread([function () { return String; }], options));
2234
+ };
2235
+ Fields.Boolean = function () {
2236
+ var options = [];
2237
+ for (var _i = 0; _i < arguments.length; _i++) {
2238
+ options[_i] = arguments[_i];
2239
+ }
2240
+ return Field.apply(void 0, tslib_1.__spread([function () { return Boolean; }], options));
2241
+ };
2242
+ return Fields;
2243
+ }());
2244
+ exports.Fields = Fields;
2245
+ function isAutoIncrement(f) {
2246
+ var _a;
2247
+ return ((_a = f.options.valueConverter) === null || _a === void 0 ? void 0 : _a.fieldTypeInDb) === 'autoincrement';
2183
2248
  }
2184
- exports.IntegerField = IntegerField;
2249
+ exports.isAutoIncrement = isAutoIncrement;
2185
2250
  function ValueListFieldType() {
2186
2251
  var options = [];
2187
2252
  for (var _i = 0; _i < arguments.length; _i++) {
@@ -2189,31 +2254,111 @@ function ValueListFieldType() {
2189
2254
  }
2190
2255
  return function (type) {
2191
2256
  return FieldType.apply(void 0, tslib_1.__spread([function (o) {
2192
- o.valueConverter = new valueConverters_1.ValueListValueConverter(type),
2257
+ o.valueConverter = ValueListInfo.get(type),
2193
2258
  o.displayValue = function (item, val) { return val.caption; };
2194
2259
  }], options))(type);
2195
2260
  };
2196
2261
  }
2197
2262
  exports.ValueListFieldType = ValueListFieldType;
2198
- function UuidField() {
2199
- var options = [];
2200
- for (var _i = 0; _i < arguments.length; _i++) {
2201
- options[_i] = arguments[_i];
2263
+ var ValueListInfo = /** @class */ (function () {
2264
+ function ValueListInfo(valueListType) {
2265
+ var e_30, _a;
2266
+ this.valueListType = valueListType;
2267
+ this.byIdMap = new Map();
2268
+ this.values = [];
2269
+ this.isNumeric = false;
2270
+ for (var member in this.valueListType) {
2271
+ var s = this.valueListType[member];
2272
+ if (s instanceof this.valueListType) {
2273
+ if (s.id === undefined)
2274
+ s.id = member;
2275
+ if (s.caption === undefined)
2276
+ s.caption = column_1.makeTitle(member);
2277
+ if (typeof s.id === 'number')
2278
+ this.isNumeric = true;
2279
+ this.byIdMap.set(s.id, s);
2280
+ this.values.push(s);
2281
+ }
2282
+ }
2283
+ if (this.isNumeric) {
2284
+ this.fieldTypeInDb = 'integer';
2285
+ }
2286
+ var options = Reflect.getMetadata(exports.storableMember, valueListType);
2287
+ if (options)
2288
+ try {
2289
+ for (var options_1 = tslib_1.__values(options), options_1_1 = options_1.next(); !options_1_1.done; options_1_1 = options_1.next()) {
2290
+ var op = options_1_1.value;
2291
+ if (op === null || op === void 0 ? void 0 : op.getValues)
2292
+ this.values = op.getValues();
2293
+ }
2294
+ }
2295
+ catch (e_30_1) { e_30 = { error: e_30_1 }; }
2296
+ finally {
2297
+ try {
2298
+ if (options_1_1 && !options_1_1.done && (_a = options_1.return)) _a.call(options_1);
2299
+ }
2300
+ finally { if (e_30) throw e_30.error; }
2301
+ }
2202
2302
  }
2203
- return Field.apply(void 0, tslib_1.__spread([{
2204
- allowApiUpdate: false,
2205
- defaultValue: function () { return uuid_1.v4(); }
2206
- }], options));
2303
+ ValueListInfo.get = function (type) {
2304
+ var r = typeCache.get(type);
2305
+ if (!r)
2306
+ r = new ValueListInfo(type);
2307
+ typeCache.set(type, r);
2308
+ return r;
2309
+ };
2310
+ ValueListInfo.prototype.getValues = function () {
2311
+ return this.values;
2312
+ };
2313
+ ValueListInfo.prototype.byId = function (key) {
2314
+ if (this.isNumeric)
2315
+ key = +key;
2316
+ return this.byIdMap.get(key);
2317
+ };
2318
+ ValueListInfo.prototype.fromJson = function (val) {
2319
+ return this.byId(val);
2320
+ };
2321
+ ValueListInfo.prototype.toJson = function (val) {
2322
+ if (!val)
2323
+ return undefined;
2324
+ return val.id;
2325
+ };
2326
+ ValueListInfo.prototype.fromDb = function (val) {
2327
+ return this.fromJson(val);
2328
+ };
2329
+ ValueListInfo.prototype.toDb = function (val) {
2330
+ return this.toJson(val);
2331
+ };
2332
+ ValueListInfo.prototype.toInput = function (val, inputType) {
2333
+ return this.toJson(val);
2334
+ };
2335
+ ValueListInfo.prototype.fromInput = function (val, inputType) {
2336
+ return this.fromJson(val);
2337
+ };
2338
+ ValueListInfo.prototype.displayValue = function (val) {
2339
+ if (!val)
2340
+ return '';
2341
+ return val.caption;
2342
+ };
2343
+ return ValueListInfo;
2344
+ }());
2345
+ exports.ValueListInfo = ValueListInfo;
2346
+ var typeCache = new Map();
2347
+ function getValueList(type) {
2348
+ return ValueListInfo.get(type).getValues();
2207
2349
  }
2208
- exports.UuidField = UuidField;
2209
- function Field() {
2350
+ exports.getValueList = getValueList;
2351
+ function Field(valueType) {
2210
2352
  var options = [];
2211
- for (var _i = 0; _i < arguments.length; _i++) {
2212
- options[_i] = arguments[_i];
2353
+ for (var _i = 1; _i < arguments.length; _i++) {
2354
+ options[_i - 1] = arguments[_i];
2213
2355
  }
2214
2356
  return function (target, key, c) {
2215
2357
  var factory = function (remult) {
2216
2358
  var r = buildOptions(options, remult);
2359
+ if (!r.valueType && valueType) {
2360
+ r.valueType = valueType();
2361
+ }
2217
2362
  if (!r.key) {
2218
2363
  r.key = key;
2219
2364
  }
@@ -2250,13 +2395,13 @@ function Field() {
2250
2395
  };
2251
2396
  }
2252
2397
  exports.Field = Field;
2253
- var storableMember = Symbol("storableMember");
2398
+ exports.storableMember = Symbol("storableMember");
2254
2399
  function buildOptions(options, remult) {
2255
- var e_30, _a;
2400
+ var e_31, _a;
2256
2401
  var r = {};
2257
2402
  try {
2258
- for (var options_1 = tslib_1.__values(options), options_1_1 = options_1.next(); !options_1_1.done; options_1_1 = options_1.next()) {
2259
- var o = options_1_1.value;
2403
+ for (var options_2 = tslib_1.__values(options), options_2_1 = options_2.next(); !options_2_1.done; options_2_1 = options_2.next()) {
2404
+ var o = options_2_1.value;
2260
2405
  if (o) {
2261
2406
  if (typeof o === "function")
2262
2407
  o(r, remult);
@@ -2265,18 +2410,18 @@ function buildOptions(options, remult) {
2265
2410
  }
2266
2411
  }
2267
2412
  }
2268
- catch (e_30_1) { e_30 = { error: e_30_1 }; }
2413
+ catch (e_31_1) { e_31 = { error: e_31_1 }; }
2269
2414
  finally {
2270
2415
  try {
2271
- if (options_1_1 && !options_1_1.done && (_a = options_1.return)) _a.call(options_1);
2416
+ if (options_2_1 && !options_2_1.done && (_a = options_2.return)) _a.call(options_2);
2272
2417
  }
2273
- finally { if (e_30) throw e_30.error; }
2418
+ finally { if (e_31) throw e_31.error; }
2274
2419
  }
2275
2420
  return r;
2276
2421
  }
2277
2422
  function decorateColumnSettings(settings, remult) {
2278
2423
  if (settings.valueType) {
2279
- var settingsOnTypeLevel = Reflect.getMetadata(storableMember, settings.valueType);
2424
+ var settingsOnTypeLevel = Reflect.getMetadata(exports.storableMember, settings.valueType);
2280
2425
  if (settingsOnTypeLevel) {
2281
2426
  settings = tslib_1.__assign(tslib_1.__assign({}, buildOptions(settingsOnTypeLevel, remult)), settings);
2282
2427
  }
@@ -2292,18 +2437,18 @@ function decorateColumnSettings(settings, remult) {
2292
2437
  if (settings.valueType == Number) {
2293
2438
  var x = settings;
2294
2439
  if (!settings.valueConverter)
2295
- x.valueConverter = valueConverters_1.NumberValueConverter;
2440
+ x.valueConverter = valueConverters_1.ValueConverters.Number;
2296
2441
  }
2297
2442
  if (settings.valueType == Date) {
2298
2443
  var x = settings;
2299
2444
  if (!settings.valueConverter) {
2300
- x.valueConverter = valueConverters_1.DateValueConverter;
2445
+ x.valueConverter = valueConverters_1.ValueConverters.Date;
2301
2446
  }
2302
2447
  }
2303
2448
  if (settings.valueType == Boolean) {
2304
2449
  var x = settings;
2305
2450
  if (!x.valueConverter)
2306
- x.valueConverter = valueConverters_1.BoolValueConverter;
2451
+ x.valueConverter = valueConverters_1.ValueConverters.Boolean;
2307
2452
  }
2308
2453
  if (!settings.valueConverter) {
2309
2454
  var ei = getEntitySettings(settings.valueType, false);
@@ -2314,7 +2459,7 @@ function decorateColumnSettings(settings, remult) {
2314
2459
  };
2315
2460
  }
2316
2461
  else
2317
- settings.valueConverter = valueConverters_1.DefaultValueConverter;
2462
+ settings.valueConverter = valueConverters_1.ValueConverters.Default;
2318
2463
  }
2319
2464
  if (!settings.valueConverter.toJson) {
2320
2465
  settings.valueConverter.toJson = function (x) { return x; };
@@ -2362,16 +2507,17 @@ function Entity(key) {
2362
2507
  if (Object.prototype.hasOwnProperty.call(target, customFilterMember)) {
2363
2508
  var element = target[customFilterMember];
2364
2509
  if ((_a = element === null || element === void 0 ? void 0 : element.customFilterInfo) === null || _a === void 0 ? void 0 : _a.customFilterTranslator) {
2365
- element.customFilterInfo.key = customFilterMember;
2510
+ if (!element.customFilterInfo.key)
2511
+ element.customFilterInfo.key = customFilterMember;
2366
2512
  }
2367
2513
  }
2368
2514
  }
2369
2515
  var factory = function (remult) {
2370
- var e_31, _a;
2516
+ var e_32, _a;
2371
2517
  var r = {};
2372
2518
  try {
2373
- for (var options_2 = tslib_1.__values(options), options_2_1 = options_2.next(); !options_2_1.done; options_2_1 = options_2.next()) {
2374
- var o = options_2_1.value;
2519
+ for (var options_3 = tslib_1.__values(options), options_3_1 = options_3.next(); !options_3_1.done; options_3_1 = options_3.next()) {
2520
+ var o = options_3_1.value;
2375
2521
  if (o) {
2376
2522
  if (typeof o === "function")
2377
2523
  o(r, remult);
@@ -2380,12 +2526,12 @@ function Entity(key) {
2380
2526
  }
2381
2527
  }
2382
2528
  }
2383
- catch (e_31_1) { e_31 = { error: e_31_1 }; }
2529
+ catch (e_32_1) { e_32 = { error: e_32_1 }; }
2384
2530
  finally {
2385
2531
  try {
2386
- if (options_2_1 && !options_2_1.done && (_a = options_2.return)) _a.call(options_2);
2532
+ if (options_3_1 && !options_3_1.done && (_a = options_3.return)) _a.call(options_3);
2387
2533
  }
2388
- finally { if (e_31) throw e_31.error; }
2534
+ finally { if (e_32) throw e_32.error; }
2389
2535
  }
2390
2536
  var base = Object.getPrototypeOf(target);
2391
2537
  if (base) {
@@ -2491,9 +2637,9 @@ var QueryResultImpl = /** @class */ (function () {
2491
2637
  });
2492
2638
  };
2493
2639
  QueryResultImpl.prototype.forEach = function (what) {
2494
- var e_32, _a;
2640
+ var e_33, _a;
2495
2641
  return tslib_1.__awaiter(this, void 0, void 0, function () {
2496
- var i, _b, _c, x, e_32_1;
2642
+ var i, _b, _c, x, e_33_1;
2497
2643
  return tslib_1.__generator(this, function (_d) {
2498
2644
  switch (_d.label) {
2499
2645
  case 0:
@@ -2515,8 +2661,8 @@ var QueryResultImpl = /** @class */ (function () {
2515
2661
  case 5: return [3 /*break*/, 2];
2516
2662
  case 6: return [3 /*break*/, 13];
2517
2663
  case 7:
2518
- e_32_1 = _d.sent();
2519
- e_32 = { error: e_32_1 };
2664
+ e_33_1 = _d.sent();
2665
+ e_33 = { error: e_33_1 };
2520
2666
  return [3 /*break*/, 13];
2521
2667
  case 8:
2522
2668
  _d.trys.push([8, , 11, 12]);
@@ -2527,7 +2673,7 @@ var QueryResultImpl = /** @class */ (function () {
2527
2673
  _d.label = 10;
2528
2674
  case 10: return [3 /*break*/, 12];
2529
2675
  case 11:
2530
- if (e_32) throw e_32.error;
2676
+ if (e_33) throw e_33.error;
2531
2677
  return [7 /*endfinally*/];
2532
2678
  case 12: return [7 /*endfinally*/];
2533
2679
  case 13: return [2 /*return*/, i];
@@ -13,7 +13,7 @@ export interface EntityRef<entityType> extends Subscribable {
13
13
  isNew(): boolean;
14
14
  wasChanged(): boolean;
15
15
  wasDeleted(): boolean;
16
- fields: Fields<entityType>;
16
+ fields: FieldsRef<entityType>;
17
17
  error: string;
18
18
  getId(): any;
19
19
  repository: Repository<entityType>;
@@ -27,7 +27,7 @@ export interface EntityRef<entityType> extends Subscribable {
27
27
  }
28
28
  export interface ControllerRef<entityType> extends Subscribable {
29
29
  hasErrors(): boolean;
30
- fields: Fields<entityType>;
30
+ fields: FieldsRef<entityType>;
31
31
  error: string;
32
32
  validate(): Promise<boolean>;
33
33
  readonly isLoading: boolean;
@@ -40,7 +40,7 @@ export declare type RefSubscriber = (() => void) | RefSubscriberBase;
40
40
  export interface Subscribable {
41
41
  subscribe(listener: RefSubscriber): Unobserve;
42
42
  }
43
- export declare type Fields<entityType> = {
43
+ export declare type FieldsRef<entityType> = {
44
44
  [Properties in keyof OmitEB<entityType>]: entityType[Properties] extends {
45
45
  id: (number | string);
46
46
  } ? IdFieldRef<entityType, entityType[Properties]> : FieldRef<entityType, entityType[Properties]>;
@@ -50,7 +50,7 @@ export declare type Fields<entityType> = {
50
50
  toArray(): FieldRef<entityType, any>[];
51
51
  };
52
52
  export declare type FieldsMetadata<entityType> = {
53
- [Properties in keyof OmitEB<entityType>]: FieldMetadata;
53
+ [Properties in keyof OmitEB<entityType>]: FieldMetadata<entityType[Properties]>;
54
54
  } & {
55
55
  find(fieldMetadataOrKey: FieldMetadata | string): FieldMetadata;
56
56
  [Symbol.iterator]: () => IterableIterator<FieldMetadata>;