remult 0.17.2 → 0.18.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.
Files changed (165) hide show
  1. package/SseSubscriptionServer.d.ts +23 -0
  2. package/SseSubscriptionServer.js +143 -0
  3. package/ably.d.ts +13 -0
  4. package/ably.js +59 -0
  5. package/esm/SseSubscriptionServer.d.ts +23 -0
  6. package/esm/SseSubscriptionServer.js +102 -0
  7. package/esm/ably.d.ts +13 -0
  8. package/esm/ably.js +28 -0
  9. package/esm/graphql.js +0 -1
  10. package/esm/index.d.ts +7 -4
  11. package/esm/index.js +4 -2
  12. package/esm/live-query/data-provider-live-query-storage.d.ts +23 -0
  13. package/esm/live-query/data-provider-live-query-storage.js +78 -0
  14. package/esm/myLog.d.ts +1 -0
  15. package/esm/myLog.js +5 -0
  16. package/esm/postgres/postgres-data-provider.d.ts +4 -2
  17. package/esm/postgres/postgres-data-provider.js +18 -6
  18. package/esm/postgres/schema-builder.d.ts +2 -1
  19. package/esm/postgres/schema-builder.js +49 -29
  20. package/esm/remult-knex/index.d.ts +10 -32
  21. package/esm/remult-knex/index.js +75 -51
  22. package/esm/remult-mongo.d.ts +9 -2
  23. package/esm/remult-mongo.js +24 -8
  24. package/esm/remult-next.d.ts +11 -0
  25. package/esm/remult-next.js +27 -0
  26. package/esm/server/core.d.ts +2 -0
  27. package/esm/server/core.js +2 -0
  28. package/esm/server/expressBridge.d.ts +19 -7
  29. package/esm/server/expressBridge.js +135 -31
  30. package/esm/server/index.d.ts +2 -1
  31. package/esm/server/index.js +2 -1
  32. package/esm/server/initDataProvider.d.ts +2 -0
  33. package/esm/server/initDataProvider.js +14 -0
  34. package/esm/src/buildRestDataProvider.d.ts +31 -0
  35. package/esm/src/buildRestDataProvider.js +110 -0
  36. package/esm/src/column-interfaces.d.ts +44 -8
  37. package/esm/src/column.d.ts +3 -3
  38. package/esm/src/context.d.ts +39 -36
  39. package/esm/src/context.js +87 -117
  40. package/esm/src/data-api.d.ts +9 -3
  41. package/esm/src/data-api.js +130 -63
  42. package/esm/src/data-interfaces.d.ts +5 -1
  43. package/esm/src/data-providers/array-entity-data-provider.d.ts +1 -1
  44. package/esm/src/data-providers/array-entity-data-provider.js +2 -17
  45. package/esm/src/data-providers/rest-data-provider.d.ts +4 -3
  46. package/esm/src/data-providers/rest-data-provider.js +64 -23
  47. package/esm/src/data-providers/sql-database.d.ts +7 -3
  48. package/esm/src/data-providers/sql-database.js +60 -17
  49. package/esm/src/data-providers/web-sql-data-provider.d.ts +3 -0
  50. package/esm/src/data-providers/web-sql-data-provider.js +23 -9
  51. package/esm/src/entity.d.ts +2 -2
  52. package/esm/src/filter/filter-consumer-bridge-to-sql-request.d.ts +16 -16
  53. package/esm/src/filter/filter-consumer-bridge-to-sql-request.js +29 -21
  54. package/esm/src/filter/filter-interfaces.d.ts +5 -5
  55. package/esm/src/filter/filter-interfaces.js +31 -26
  56. package/esm/src/live-query/LiveQueryClient.d.ts +1 -0
  57. package/esm/src/live-query/LiveQueryClient.js +184 -0
  58. package/esm/src/live-query/SseSubscriptionClient.d.ts +5 -0
  59. package/esm/src/live-query/SseSubscriptionClient.js +86 -0
  60. package/esm/src/live-query/SubscriptionChannel.d.ts +41 -0
  61. package/esm/src/live-query/SubscriptionChannel.js +121 -0
  62. package/esm/src/live-query/SubscriptionServer.d.ts +38 -0
  63. package/esm/src/live-query/SubscriptionServer.js +108 -0
  64. package/esm/src/remult-proxy.d.ts +1 -1
  65. package/esm/src/remult-proxy.js +52 -7
  66. package/esm/src/remult3/RepositoryImplementation.d.ts +14 -5
  67. package/esm/src/remult3/RepositoryImplementation.js +124 -44
  68. package/esm/src/remult3/getId.d.ts +2 -0
  69. package/esm/src/remult3/getId.js +7 -0
  70. package/esm/src/remult3/remult3.d.ts +67 -10
  71. package/esm/src/remult3/remult3.js +1 -0
  72. package/esm/src/server-action.d.ts +5 -1
  73. package/esm/src/server-action.js +11 -12
  74. package/esm/src/shared-tests/db-tests-setup.d.ts +12 -5
  75. package/esm/src/shared-tests/db-tests-setup.js +14 -6
  76. package/esm/src/shared-tests/db-tests.db-tests.js +71 -10
  77. package/esm/src/sort.d.ts +1 -0
  78. package/esm/src/sort.js +18 -0
  79. package/esm/src/sql-command.d.ts +5 -2
  80. package/esm/src/tests/entityForCustomFilter.d.ts +6 -6
  81. package/esm/src/tests/entityForCustomFilter.js +20 -21
  82. package/esm/src/tests/frontend-database-tests-setup.spec.js +3 -4
  83. package/esm/src/tests/testHelper.spec.d.ts +3 -1
  84. package/esm/src/tests/testHelper.spec.js +63 -60
  85. package/esm/src/valueConverters.js +15 -7
  86. package/graphql.js +0 -1
  87. package/index.d.ts +7 -4
  88. package/index.js +7 -3
  89. package/live-query/data-provider-live-query-storage.d.ts +23 -0
  90. package/live-query/data-provider-live-query-storage.js +236 -0
  91. package/myLog.d.ts +1 -0
  92. package/myLog.js +20 -0
  93. package/package.json +18 -1
  94. package/postgres/postgres-data-provider.d.ts +4 -2
  95. package/postgres/postgres-data-provider.js +54 -39
  96. package/postgres/schema-builder.d.ts +2 -1
  97. package/postgres/schema-builder.js +118 -70
  98. package/remult-express.js +1 -1
  99. package/remult-knex/index.d.ts +10 -32
  100. package/remult-knex/index.js +134 -87
  101. package/remult-mongo.d.ts +9 -2
  102. package/remult-mongo.js +39 -7
  103. package/remult-next.d.ts +11 -0
  104. package/remult-next.js +73 -0
  105. package/server/JsonEntityFileStorage.js +2 -2
  106. package/server/core.d.ts +2 -0
  107. package/server/core.js +5 -1
  108. package/server/expressBridge.d.ts +19 -7
  109. package/server/expressBridge.js +283 -69
  110. package/server/index.d.ts +2 -1
  111. package/server/index.js +3 -1
  112. package/server/initDataProvider.d.ts +2 -0
  113. package/server/initDataProvider.js +26 -0
  114. package/src/buildRestDataProvider.d.ts +31 -0
  115. package/src/buildRestDataProvider.js +162 -0
  116. package/src/column-interfaces.d.ts +44 -8
  117. package/src/column.d.ts +3 -3
  118. package/src/context.d.ts +39 -36
  119. package/src/context.js +171 -166
  120. package/src/data-api.d.ts +9 -3
  121. package/src/data-api.js +233 -88
  122. package/src/data-interfaces.d.ts +5 -1
  123. package/src/data-providers/array-entity-data-provider.d.ts +1 -1
  124. package/src/data-providers/array-entity-data-provider.js +2 -17
  125. package/src/data-providers/rest-data-provider.d.ts +4 -3
  126. package/src/data-providers/rest-data-provider.js +105 -39
  127. package/src/data-providers/sql-database.d.ts +7 -3
  128. package/src/data-providers/sql-database.js +89 -16
  129. package/src/data-providers/web-sql-data-provider.d.ts +3 -0
  130. package/src/data-providers/web-sql-data-provider.js +56 -11
  131. package/src/entity.d.ts +2 -2
  132. package/src/filter/filter-consumer-bridge-to-sql-request.d.ts +16 -16
  133. package/src/filter/filter-consumer-bridge-to-sql-request.js +59 -50
  134. package/src/filter/filter-interfaces.d.ts +5 -5
  135. package/src/filter/filter-interfaces.js +31 -26
  136. package/src/live-query/LiveQueryClient.d.ts +1 -0
  137. package/src/live-query/LiveQueryClient.js +283 -0
  138. package/src/live-query/SseSubscriptionClient.d.ts +5 -0
  139. package/src/live-query/SseSubscriptionClient.js +150 -0
  140. package/src/live-query/SubscriptionChannel.d.ts +41 -0
  141. package/src/live-query/SubscriptionChannel.js +209 -0
  142. package/src/live-query/SubscriptionServer.d.ts +38 -0
  143. package/src/live-query/SubscriptionServer.js +258 -0
  144. package/src/remult-proxy.d.ts +1 -1
  145. package/src/remult-proxy.js +153 -8
  146. package/src/remult3/RepositoryImplementation.d.ts +14 -5
  147. package/src/remult3/RepositoryImplementation.js +200 -85
  148. package/src/remult3/getId.d.ts +2 -0
  149. package/src/remult3/getId.js +11 -0
  150. package/src/remult3/remult3.d.ts +67 -10
  151. package/src/remult3/remult3.js +1 -0
  152. package/src/server-action.d.ts +5 -1
  153. package/src/server-action.js +11 -11
  154. package/src/shared-tests/db-tests-setup.d.ts +12 -5
  155. package/src/shared-tests/db-tests-setup.js +17 -8
  156. package/src/shared-tests/db-tests.db-tests.js +140 -8
  157. package/src/sort.d.ts +1 -0
  158. package/src/sort.js +18 -0
  159. package/src/sql-command.d.ts +5 -2
  160. package/src/tests/entityForCustomFilter.d.ts +6 -6
  161. package/src/tests/entityForCustomFilter.js +30 -31
  162. package/src/tests/frontend-database-tests-setup.spec.js +5 -6
  163. package/src/tests/testHelper.spec.d.ts +3 -1
  164. package/src/tests/testHelper.spec.js +104 -100
  165. package/src/valueConverters.js +15 -7
@@ -1,21 +1,21 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.entityForCustomFilter1 = exports.entityForCustomFilter = void 0;
3
+ exports.entityForrawFilter1 = exports.entityForrawFilter = void 0;
4
4
  var tslib_1 = require("tslib");
5
5
  var sql_database_1 = require("../data-providers/sql-database");
6
6
  var remult3_1 = require("../remult3");
7
7
  var filter_interfaces_1 = require("../filter/filter-interfaces");
8
8
  var array_entity_data_provider_1 = require("../data-providers/array-entity-data-provider");
9
9
  var filter_consumer_bridge_to_sql_request_1 = require("../filter/filter-consumer-bridge-to-sql-request");
10
- var entityForCustomFilter = /** @class */ (function (_super) {
11
- tslib_1.__extends(entityForCustomFilter, _super);
12
- function entityForCustomFilter() {
10
+ var entityForrawFilter = /** @class */ (function (_super) {
11
+ tslib_1.__extends(entityForrawFilter, _super);
12
+ function entityForrawFilter() {
13
13
  return _super !== null && _super.apply(this, arguments) || this;
14
14
  }
15
- entityForCustomFilter_1 = entityForCustomFilter;
16
- var entityForCustomFilter_1;
17
- entityForCustomFilter.filter = filter_interfaces_1.Filter.createCustom(function (remult, c) { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
18
- var r, meta_1, e_1;
15
+ entityForrawFilter_1 = entityForrawFilter;
16
+ var entityForrawFilter_1;
17
+ entityForrawFilter.filter = filter_interfaces_1.Filter.createCustom(function (c, remult) { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
18
+ var r, e_1;
19
19
  return tslib_1.__generator(this, function (_a) {
20
20
  switch (_a.label) {
21
21
  case 0:
@@ -25,16 +25,15 @@ var entityForCustomFilter = /** @class */ (function (_super) {
25
25
  if (c.two)
26
26
  r.push({ id: 2 });
27
27
  if (!c.dbOneOrThree) return [3 /*break*/, 2];
28
- meta_1 = remult.repo(entityForCustomFilter_1).metadata;
29
- return [4 /*yield*/, filter_consumer_bridge_to_sql_request_1.getDbNameProvider(meta_1)];
28
+ return [4 /*yield*/, filter_consumer_bridge_to_sql_request_1.dbNamesOf(remult.repo(entityForrawFilter_1))];
30
29
  case 1:
31
30
  e_1 = _a.sent();
32
31
  r.push({
33
32
  $and: [
34
- sql_database_1.SqlDatabase.customFilter(function (x) { return tslib_1.__awaiter(void 0, void 0, void 0, function () { return tslib_1.__generator(this, function (_a) {
35
- return [2 /*return*/, x.sql = e_1.nameOf(meta_1.fields.id) + ' in (' + x.addParameterAndReturnSqlToken(1) + "," + x.addParameterAndReturnSqlToken(3) + ")"];
33
+ sql_database_1.SqlDatabase.rawFilter(function (x) { return tslib_1.__awaiter(void 0, void 0, void 0, function () { return tslib_1.__generator(this, function (_a) {
34
+ return [2 /*return*/, x.sql = e_1.id + ' in (' + x.addParameterAndReturnSqlToken(1) + "," + x.addParameterAndReturnSqlToken(3) + ")"];
36
35
  }); }); }),
37
- array_entity_data_provider_1.ArrayEntityDataProvider.customFilter(function (x) { return x.id == 1 || x.id == 3; })
36
+ array_entity_data_provider_1.ArrayEntityDataProvider.rawFilter(function (x) { return x.id == 1 || x.id == 3; })
38
37
  ]
39
38
  });
40
39
  _a.label = 2;
@@ -42,27 +41,27 @@ var entityForCustomFilter = /** @class */ (function (_super) {
42
41
  }
43
42
  });
44
43
  }); });
45
- entityForCustomFilter.oneAndThree = filter_interfaces_1.Filter.createCustom(function () { return ({ id: [1, 3] }); });
46
- entityForCustomFilter.testNumericValue = filter_interfaces_1.Filter.createCustom(function (r, val) { return ({ id: val }); });
47
- entityForCustomFilter.testObjectValue = filter_interfaces_1.Filter.createCustom(function (r, val) { return ({ id: val.val }); });
44
+ entityForrawFilter.oneAndThree = filter_interfaces_1.Filter.createCustom(function () { return ({ id: [1, 3] }); });
45
+ entityForrawFilter.testNumericValue = filter_interfaces_1.Filter.createCustom(function (val) { return ({ id: val }); });
46
+ entityForrawFilter.testObjectValue = filter_interfaces_1.Filter.createCustom(function (val) { return ({ id: val.val }); });
48
47
  tslib_1.__decorate([
49
48
  remult3_1.Fields.integer(),
50
49
  tslib_1.__metadata("design:type", Number)
51
- ], entityForCustomFilter.prototype, "id", void 0);
52
- entityForCustomFilter = entityForCustomFilter_1 = tslib_1.__decorate([
53
- remult3_1.Entity('entityForCustomFilter', { allowApiCrud: true })
54
- ], entityForCustomFilter);
55
- return entityForCustomFilter;
50
+ ], entityForrawFilter.prototype, "id", void 0);
51
+ entityForrawFilter = entityForrawFilter_1 = tslib_1.__decorate([
52
+ remult3_1.Entity('entityForrawFilter', { allowApiCrud: true })
53
+ ], entityForrawFilter);
54
+ return entityForrawFilter;
56
55
  }(remult3_1.EntityBase));
57
- exports.entityForCustomFilter = entityForCustomFilter;
58
- var entityForCustomFilter1 = /** @class */ (function (_super) {
59
- tslib_1.__extends(entityForCustomFilter1, _super);
60
- function entityForCustomFilter1() {
56
+ exports.entityForrawFilter = entityForrawFilter;
57
+ var entityForrawFilter1 = /** @class */ (function (_super) {
58
+ tslib_1.__extends(entityForrawFilter1, _super);
59
+ function entityForrawFilter1() {
61
60
  return _super !== null && _super.apply(this, arguments) || this;
62
61
  }
63
- entityForCustomFilter1 = tslib_1.__decorate([
64
- remult3_1.Entity('entityForCustomFilter1', { allowApiCrud: true })
65
- ], entityForCustomFilter1);
66
- return entityForCustomFilter1;
67
- }(entityForCustomFilter));
68
- exports.entityForCustomFilter1 = entityForCustomFilter1;
62
+ entityForrawFilter1 = tslib_1.__decorate([
63
+ remult3_1.Entity('entityForrawFilter1', { allowApiCrud: true })
64
+ ], entityForrawFilter1);
65
+ return entityForrawFilter1;
66
+ }(entityForrawFilter));
67
+ exports.entityForrawFilter1 = entityForrawFilter1;
@@ -76,18 +76,17 @@ function testRest(key, what, focus) {
76
76
  var _this = this;
77
77
  if (focus === void 0) { focus = false; }
78
78
  db_tests_setup_1.itWithFocus(key + " - Rest Provider", function () { return tslib_1.__awaiter(_this, void 0, void 0, function () {
79
- var r, remult, db;
79
+ var r, db;
80
80
  var _this = this;
81
81
  return tslib_1.__generator(this, function (_a) {
82
82
  switch (_a.label) {
83
83
  case 0:
84
84
  r = new context_1.Remult();
85
85
  r.dataProvider = (new __1.InMemoryDataProvider());
86
- remult = new context_1.Remult();
87
86
  db = new testHelper_spec_1.MockRestDataProvider(r);
88
- remult.dataProvider = (db);
89
- return [4 /*yield*/, what({ db: db, remult: remult, createEntity: function (x) { return tslib_1.__awaiter(_this, void 0, void 0, function () { return tslib_1.__generator(this, function (_a) {
90
- return [2 /*return*/, remult.repo(x)];
87
+ __1.remult.dataProvider = (db);
88
+ return [4 /*yield*/, what({ db: db, remult: __1.remult, createEntity: function (x) { return tslib_1.__awaiter(_this, void 0, void 0, function () { return tslib_1.__generator(this, function (_a) {
89
+ return [2 /*return*/, __1.remult.repo(x)];
91
90
  }); }); } })];
92
91
  case 1:
93
92
  _a.sent();
@@ -97,5 +96,5 @@ function testRest(key, what, focus) {
97
96
  }); }, focus);
98
97
  }
99
98
  exports.testRest = testRest;
100
- db_tests_setup_1.addDatabaseToTest(testRest);
99
+ db_tests_setup_1.addDatabaseToTest(testRest, db_tests_setup_1.TestDbs.restDataProvider);
101
100
  require("../shared-tests/");
@@ -1,5 +1,6 @@
1
1
  import './frontend-database-tests-setup.spec';
2
2
  import { Remult } from "../context";
3
+ import { DataApi } from "../data-api";
3
4
  import { DataProvider, EntityDataProvider } from "../data-interfaces";
4
5
  import { InMemoryDataProvider } from "../data-providers/in-memory-database";
5
6
  import { EntityMetadata } from "../remult3";
@@ -30,5 +31,6 @@ export declare class MockRestDataProvider implements DataProvider {
30
31
  constructor(remult: Remult);
31
32
  getEntityDataProvider(metadata: EntityMetadata<any>): EntityDataProvider;
32
33
  transaction(action: (dataProvider: DataProvider) => Promise<void>): Promise<void>;
33
- supportsCustomFilter: boolean;
34
+ supportsRawFilter: boolean;
34
35
  }
36
+ export declare function createMockHttpDataProvider(dataApi: DataApi<any>): import("../data-interfaces").RestDataProviderHttpProvider;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.MockRestDataProvider = exports.testAllDataProviders = exports.testRestDb = exports.testInMemoryDb = exports.testSql = exports.ActionTestConfig = exports.testAsIfOnBackend = exports.fitForEach = exports.itForEach = void 0;
3
+ exports.createMockHttpDataProvider = exports.MockRestDataProvider = exports.testAllDataProviders = exports.testRestDb = exports.testInMemoryDb = exports.testSql = exports.ActionTestConfig = exports.testAsIfOnBackend = exports.fitForEach = exports.itForEach = void 0;
4
4
  var tslib_1 = require("tslib");
5
5
  require("./frontend-database-tests-setup.spec");
6
6
  var context_1 = require("../context");
@@ -13,6 +13,7 @@ var server_action_1 = require("../server-action");
13
13
  var entityWithValidations_1 = require("../shared-tests/entityWithValidations");
14
14
  var TestDataApiResponse_1 = require("./TestDataApiResponse");
15
15
  var remult_proxy_1 = require("../remult-proxy");
16
+ var buildRestDataProvider_1 = require("../buildRestDataProvider");
16
17
  jasmine.DEFAULT_TIMEOUT_INTERVAL = 999999;
17
18
  //actionInfo.runningOnServer = false;
18
19
  function itForEach(name, arrayOfT, runAsync) {
@@ -167,14 +168,13 @@ function testSql(runAsync) {
167
168
  exports.testSql = testSql;
168
169
  function testInMemoryDb(runAsync) {
169
170
  return tslib_1.__awaiter(this, void 0, void 0, function () {
170
- var remult, db;
171
+ var db;
171
172
  return tslib_1.__generator(this, function (_a) {
172
173
  switch (_a.label) {
173
174
  case 0:
174
- remult = new context_1.Remult();
175
175
  db = new in_memory_database_1.InMemoryDataProvider();
176
- remult.dataProvider = (db);
177
- return [4 /*yield*/, runAsync({ db: db, remult: remult })];
176
+ remult_proxy_1.remult.dataProvider = (db);
177
+ return [4 /*yield*/, runAsync({ db: db, remult: remult_proxy_1.remult })];
178
178
  case 1:
179
179
  _a.sent();
180
180
  return [2 /*return*/];
@@ -267,104 +267,11 @@ function urlToReq(url) {
267
267
  var MockRestDataProvider = /** @class */ (function () {
268
268
  function MockRestDataProvider(remult) {
269
269
  this.remult = remult;
270
- this.supportsCustomFilter = true;
270
+ this.supportsRawFilter = true;
271
271
  }
272
272
  MockRestDataProvider.prototype.getEntityDataProvider = function (metadata) {
273
- var _this = this;
274
273
  var dataApi = new data_api_1.DataApi(this.remult.repo(metadata.entityType), this.remult);
275
- return new rest_data_provider_1.RestEntityDataProvider(function () { return ""; }, function () { return new context_1.HttpProviderBridgeToRestDataProviderHttpProvider({
276
- delete: function (url) { return tslib_1.__awaiter(_this, void 0, void 0, function () {
277
- var urlSplit, r, result;
278
- return tslib_1.__generator(this, function (_a) {
279
- switch (_a.label) {
280
- case 0:
281
- urlSplit = url.split('/');
282
- r = new TestDataApiResponse_1.TestDataApiResponse();
283
- r.deleted = function () { };
284
- _a.label = 1;
285
- case 1:
286
- _a.trys.push([1, , 3, 4]);
287
- entityWithValidations_1.testConfiguration.restDbRunningOnServer = true;
288
- return [4 /*yield*/, dataApi.delete(r, urlSplit[urlSplit.length - 1])];
289
- case 2:
290
- _a.sent();
291
- return [3 /*break*/, 4];
292
- case 3:
293
- entityWithValidations_1.testConfiguration.restDbRunningOnServer = false;
294
- return [7 /*endfinally*/];
295
- case 4: return [2 /*return*/, result];
296
- }
297
- });
298
- }); },
299
- get: function (url) { return tslib_1.__awaiter(_this, void 0, void 0, function () {
300
- var r, result;
301
- return tslib_1.__generator(this, function (_a) {
302
- switch (_a.label) {
303
- case 0:
304
- r = new TestDataApiResponse_1.TestDataApiResponse();
305
- r.success = function (data) { result = data; };
306
- _a.label = 1;
307
- case 1:
308
- _a.trys.push([1, , 3, 4]);
309
- entityWithValidations_1.testConfiguration.restDbRunningOnServer = true;
310
- return [4 /*yield*/, dataApi.httpGet(r, urlToReq(url))];
311
- case 2:
312
- _a.sent();
313
- return [3 /*break*/, 4];
314
- case 3:
315
- entityWithValidations_1.testConfiguration.restDbRunningOnServer = false;
316
- return [7 /*endfinally*/];
317
- case 4: return [2 /*return*/, result];
318
- }
319
- });
320
- }); },
321
- post: function (url, data) { return tslib_1.__awaiter(_this, void 0, void 0, function () {
322
- var r, result;
323
- return tslib_1.__generator(this, function (_a) {
324
- switch (_a.label) {
325
- case 0:
326
- r = new TestDataApiResponse_1.TestDataApiResponse();
327
- r.created = function (data) { result = data; };
328
- r.success = function (data) { result = data; };
329
- _a.label = 1;
330
- case 1:
331
- _a.trys.push([1, , 3, 4]);
332
- entityWithValidations_1.testConfiguration.restDbRunningOnServer = true;
333
- return [4 /*yield*/, dataApi.httpPost(r, urlToReq(url), data)];
334
- case 2:
335
- _a.sent();
336
- return [3 /*break*/, 4];
337
- case 3:
338
- entityWithValidations_1.testConfiguration.restDbRunningOnServer = false;
339
- return [7 /*endfinally*/];
340
- case 4: return [2 /*return*/, result];
341
- }
342
- });
343
- }); },
344
- put: function (url, data) { return tslib_1.__awaiter(_this, void 0, void 0, function () {
345
- var urlSplit, r, result;
346
- return tslib_1.__generator(this, function (_a) {
347
- switch (_a.label) {
348
- case 0:
349
- urlSplit = url.split('/');
350
- r = new TestDataApiResponse_1.TestDataApiResponse();
351
- r.success = function (data) { result = data; };
352
- _a.label = 1;
353
- case 1:
354
- _a.trys.push([1, , 3, 4]);
355
- entityWithValidations_1.testConfiguration.restDbRunningOnServer = true;
356
- return [4 /*yield*/, dataApi.put(r, urlSplit[urlSplit.length - 1], data)];
357
- case 2:
358
- _a.sent();
359
- return [3 /*break*/, 4];
360
- case 3:
361
- entityWithValidations_1.testConfiguration.restDbRunningOnServer = false;
362
- return [7 /*endfinally*/];
363
- case 4: return [2 /*return*/, result];
364
- }
365
- });
366
- }); }
367
- }); }, metadata);
274
+ return new rest_data_provider_1.RestEntityDataProvider(function () { return ""; }, function () { return createMockHttpDataProvider(dataApi); }, metadata);
368
275
  };
369
276
  MockRestDataProvider.prototype.transaction = function (action) {
370
277
  throw new Error('Method not implemented.');
@@ -372,3 +279,100 @@ var MockRestDataProvider = /** @class */ (function () {
372
279
  return MockRestDataProvider;
373
280
  }());
374
281
  exports.MockRestDataProvider = MockRestDataProvider;
282
+ function createMockHttpDataProvider(dataApi) {
283
+ var _this = this;
284
+ return new buildRestDataProvider_1.HttpProviderBridgeToRestDataProviderHttpProvider({
285
+ delete: function (url) { return tslib_1.__awaiter(_this, void 0, void 0, function () {
286
+ var urlSplit, r, result;
287
+ return tslib_1.__generator(this, function (_a) {
288
+ switch (_a.label) {
289
+ case 0:
290
+ urlSplit = url.split('/');
291
+ r = new TestDataApiResponse_1.TestDataApiResponse();
292
+ r.deleted = function () { };
293
+ _a.label = 1;
294
+ case 1:
295
+ _a.trys.push([1, , 3, 4]);
296
+ entityWithValidations_1.testConfiguration.restDbRunningOnServer = true;
297
+ return [4 /*yield*/, dataApi.delete(r, urlSplit[urlSplit.length - 1])];
298
+ case 2:
299
+ _a.sent();
300
+ return [3 /*break*/, 4];
301
+ case 3:
302
+ entityWithValidations_1.testConfiguration.restDbRunningOnServer = false;
303
+ return [7 /*endfinally*/];
304
+ case 4: return [2 /*return*/, result];
305
+ }
306
+ });
307
+ }); },
308
+ get: function (url) { return tslib_1.__awaiter(_this, void 0, void 0, function () {
309
+ var r, result;
310
+ return tslib_1.__generator(this, function (_a) {
311
+ switch (_a.label) {
312
+ case 0:
313
+ r = new TestDataApiResponse_1.TestDataApiResponse();
314
+ r.success = function (data) { result = data; };
315
+ _a.label = 1;
316
+ case 1:
317
+ _a.trys.push([1, , 3, 4]);
318
+ entityWithValidations_1.testConfiguration.restDbRunningOnServer = true;
319
+ return [4 /*yield*/, dataApi.httpGet(r, urlToReq(url), function () { return ""; })];
320
+ case 2:
321
+ _a.sent();
322
+ return [3 /*break*/, 4];
323
+ case 3:
324
+ entityWithValidations_1.testConfiguration.restDbRunningOnServer = false;
325
+ return [7 /*endfinally*/];
326
+ case 4: return [2 /*return*/, result];
327
+ }
328
+ });
329
+ }); },
330
+ post: function (url, data) { return tslib_1.__awaiter(_this, void 0, void 0, function () {
331
+ var r, result;
332
+ return tslib_1.__generator(this, function (_a) {
333
+ switch (_a.label) {
334
+ case 0:
335
+ r = new TestDataApiResponse_1.TestDataApiResponse();
336
+ r.created = function (data) { result = data; };
337
+ r.success = function (data) { result = data; };
338
+ _a.label = 1;
339
+ case 1:
340
+ _a.trys.push([1, , 3, 4]);
341
+ entityWithValidations_1.testConfiguration.restDbRunningOnServer = true;
342
+ return [4 /*yield*/, dataApi.httpPost(r, urlToReq(url), data, function () { return ({}); })];
343
+ case 2:
344
+ _a.sent();
345
+ return [3 /*break*/, 4];
346
+ case 3:
347
+ entityWithValidations_1.testConfiguration.restDbRunningOnServer = false;
348
+ return [7 /*endfinally*/];
349
+ case 4: return [2 /*return*/, result];
350
+ }
351
+ });
352
+ }); },
353
+ put: function (url, data) { return tslib_1.__awaiter(_this, void 0, void 0, function () {
354
+ var urlSplit, r, result;
355
+ return tslib_1.__generator(this, function (_a) {
356
+ switch (_a.label) {
357
+ case 0:
358
+ urlSplit = url.split('/');
359
+ r = new TestDataApiResponse_1.TestDataApiResponse();
360
+ r.success = function (data) { result = data; };
361
+ _a.label = 1;
362
+ case 1:
363
+ _a.trys.push([1, , 3, 4]);
364
+ entityWithValidations_1.testConfiguration.restDbRunningOnServer = true;
365
+ return [4 /*yield*/, dataApi.put(r, urlSplit[urlSplit.length - 1], data)];
366
+ case 2:
367
+ _a.sent();
368
+ return [3 /*break*/, 4];
369
+ case 3:
370
+ entityWithValidations_1.testConfiguration.restDbRunningOnServer = false;
371
+ return [7 /*endfinally*/];
372
+ case 4: return [2 /*return*/, result];
373
+ }
374
+ });
375
+ }); }
376
+ });
377
+ }
378
+ exports.createMockHttpDataProvider = createMockHttpDataProvider;
@@ -8,6 +8,8 @@ var ValueConverters = /** @class */ (function () {
8
8
  }
9
9
  ValueConverters.Date = {
10
10
  toJson: function (val) {
11
+ if (val === null)
12
+ return null;
11
13
  if (!val)
12
14
  return '';
13
15
  if (typeof (val) === "string")
@@ -16,11 +18,12 @@ var ValueConverters = /** @class */ (function () {
16
18
  return val.toISOString();
17
19
  }
18
20
  else {
19
- console.log("ToJsonError", val);
20
- throw new Error("Expected date but got val");
21
+ throw new Error("Expected date but got " + val);
21
22
  }
22
23
  },
23
24
  fromJson: function (val) {
25
+ if (val === null)
26
+ return null;
24
27
  if (val == undefined)
25
28
  return undefined;
26
29
  if (val == '')
@@ -30,7 +33,15 @@ var ValueConverters = /** @class */ (function () {
30
33
  return new Date(Date.parse(val));
31
34
  },
32
35
  toDb: function (x) { return x; },
33
- fromDb: function (x) { return x; },
36
+ fromDb: function (val) {
37
+ if (typeof val === "number")
38
+ val = new Date(val);
39
+ if (typeof (val) === "string")
40
+ val = new Date(val);
41
+ if (val && !(val instanceof Date))
42
+ throw "expected date but got " + val;
43
+ return val;
44
+ },
34
45
  fromInput: function (x) { return ValueConverters.Date.fromJson(x); },
35
46
  toInput: function (x) { return ValueConverters.Date.toJson(x); },
36
47
  displayValue: function (val) {
@@ -68,10 +79,7 @@ var ValueConverters = /** @class */ (function () {
68
79
  } //when using date storage, the database expects and returns a date local and every where else we reflect on date iso
69
80
  ,
70
81
  fromDb: function (val) {
71
- var d = val;
72
- if (!d)
73
- return null;
74
- return val;
82
+ return ValueConverters.Date.fromDb(val);
75
83
  },
76
84
  fieldTypeInDb: 'date',
77
85
  displayValue: function (value) {