remult 0.22.1 → 0.22.3

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 (257) hide show
  1. package/esm/graphql.js +27 -27
  2. package/esm/postgres/schema-builder.js +4 -4
  3. package/esm/remult-knex/index.js +2 -2
  4. package/esm/remult-mongo.js +6 -6
  5. package/esm/src/backend-tests/backend-database-test-setup.backend-spec.js +30 -0
  6. package/esm/src/id-entity.d.ts +4 -0
  7. package/esm/src/id-entity.js +8 -0
  8. package/esm/src/remult3/RepositoryImplementation.js +7 -5
  9. package/esm/src/shared-tests/db-tests.db-tests.js +35 -0
  10. package/package.json +1 -1
  11. package/postgres/postgresColumnSyntax.d.ts +2 -0
  12. package/postgres/postgresColumnSyntax.js +34 -0
  13. package/remult-knex/index.js +2 -2
  14. package/remult-middleware.d.ts +2 -0
  15. package/remult-middleware.js +70 -0
  16. package/remult-mongo.js +6 -6
  17. package/server/register-actions-on-server.d.ts +3 -0
  18. package/server/register-actions-on-server.js +50 -0
  19. package/server/register-entities-on-server.d.ts +3 -0
  20. package/server/register-entities-on-server.js +19 -0
  21. package/src/backend-tests/backend-database-test-setup.backend-spec.js +60 -0
  22. package/{esm/core/src → src}/backend-tests/my-test.backend-spec.d.ts +1 -1
  23. package/src/backend-tests/my-test.backend-spec.js +217 -0
  24. package/src/backend-tests/test-http-server.backend-spec.d.ts +6 -0
  25. package/src/backend-tests/test-http-server.backend-spec.js +342 -0
  26. package/src/id-entity.d.ts +4 -0
  27. package/src/id-entity.js +17 -0
  28. package/src/remult3/RepositoryImplementation.js +15 -13
  29. package/src/shared-tests/db-tests.db-tests.js +64 -0
  30. package/{esm/core/src/valueConverters.d.ts → valueConverters.d.ts} +12 -13
  31. package/valueConverters.js +168 -0
  32. package/esm/angular/interfaces/index.d.ts +0 -1
  33. package/esm/angular/interfaces/index.js +0 -1
  34. package/esm/angular/interfaces/src/column-collection.d.ts +0 -70
  35. package/esm/angular/interfaces/src/column-collection.js +0 -341
  36. package/esm/angular/interfaces/src/data-area-settings.d.ts +0 -15
  37. package/esm/angular/interfaces/src/data-area-settings.js +0 -35
  38. package/esm/angular/interfaces/src/data-control-interfaces.d.ts +0 -36
  39. package/esm/angular/interfaces/src/data-control-interfaces.js +0 -57
  40. package/esm/angular/interfaces/src/dataList.d.ts +0 -13
  41. package/esm/angular/interfaces/src/dataList.js +0 -42
  42. package/esm/angular/interfaces/src/filter-helper.d.ts +0 -13
  43. package/esm/angular/interfaces/src/filter-helper.js +0 -59
  44. package/esm/angular/interfaces/src/grid-settings.d.ts +0 -145
  45. package/esm/angular/interfaces/src/grid-settings.js +0 -387
  46. package/esm/angular/interfaces/src/public_api.d.ts +0 -4
  47. package/esm/angular/interfaces/src/public_api.js +0 -4
  48. package/esm/angular/src/angular/RemultAngularPluginsService.d.ts +0 -4
  49. package/esm/angular/src/angular/RemultAngularPluginsService.js +0 -3
  50. package/esm/angular/src/angular/data-control/data-control2.component.d.ts +0 -49
  51. package/esm/angular/src/angular/data-control/data-control2.component.js +0 -138
  52. package/esm/core/SseSubscriptionServer.d.ts +0 -33
  53. package/esm/core/SseSubscriptionServer.js +0 -107
  54. package/esm/core/assign.d.ts +0 -1
  55. package/esm/core/assign.js +0 -5
  56. package/esm/core/classType.d.ts +0 -3
  57. package/esm/core/classType.js +0 -1
  58. package/esm/core/index.d.ts +0 -27
  59. package/esm/core/index.js +0 -25
  60. package/esm/core/inputTypes.d.ts +0 -9
  61. package/esm/core/inputTypes.js +0 -9
  62. package/esm/core/live-query/data-provider-live-query-storage.d.ts +0 -22
  63. package/esm/core/live-query/data-provider-live-query-storage.js +0 -71
  64. package/esm/core/postgres/index.d.ts +0 -2
  65. package/esm/core/postgres/index.js +0 -2
  66. package/esm/core/postgres/postgres-data-provider.d.ts +0 -36
  67. package/esm/core/postgres/postgres-data-provider.js +0 -120
  68. package/esm/core/postgres/schema-builder.d.ts +0 -17
  69. package/esm/core/postgres/schema-builder.js +0 -153
  70. package/esm/core/remult-fresh.d.ts +0 -17
  71. package/esm/core/remult-fresh.js +0 -29
  72. package/esm/core/remult-knex/index.d.ts +0 -30
  73. package/esm/core/remult-knex/index.js +0 -446
  74. package/esm/core/remult-mongo.d.ts +0 -24
  75. package/esm/core/remult-mongo.js +0 -254
  76. package/esm/core/server/JsonEntityFileStorage.d.ts +0 -10
  77. package/esm/core/server/JsonEntityFileStorage.js +0 -25
  78. package/esm/core/server/core.d.ts +0 -4
  79. package/esm/core/server/core.js +0 -4
  80. package/esm/core/server/expressBridge.d.ts +0 -182
  81. package/esm/core/server/expressBridge.js +0 -938
  82. package/esm/core/server/index.d.ts +0 -6
  83. package/esm/core/server/index.js +0 -9
  84. package/esm/core/server/initAsyncHooks.d.ts +0 -1
  85. package/esm/core/server/initAsyncHooks.js +0 -9
  86. package/esm/core/server/initDataProvider.d.ts +0 -2
  87. package/esm/core/server/initDataProvider.js +0 -14
  88. package/esm/core/src/__EntityValueProvider.d.ts +0 -11
  89. package/esm/core/src/__EntityValueProvider.js +0 -1
  90. package/esm/core/src/__RowsOfDataForTesting.d.ts +0 -3
  91. package/esm/core/src/__RowsOfDataForTesting.js +0 -1
  92. package/esm/core/src/backend-tests/backend-database-test-setup.backend-spec.d.ts +0 -6
  93. package/esm/core/src/backend-tests/backend-database-test-setup.backend-spec.js +0 -147
  94. package/esm/core/src/backend-tests/my-test.backend-spec.js +0 -197
  95. package/esm/core/src/backend-tests/test-http-server.backend-spec.d.ts +0 -1
  96. package/esm/core/src/backend-tests/test-http-server.backend-spec.js +0 -167
  97. package/esm/core/src/buildRestDataProvider.d.ts +0 -31
  98. package/esm/core/src/buildRestDataProvider.js +0 -113
  99. package/esm/core/src/column-interfaces.d.ts +0 -154
  100. package/esm/core/src/column-interfaces.js +0 -7
  101. package/esm/core/src/column.d.ts +0 -58
  102. package/esm/core/src/column.js +0 -174
  103. package/esm/core/src/context.d.ts +0 -134
  104. package/esm/core/src/context.js +0 -286
  105. package/esm/core/src/data-api.d.ts +0 -39
  106. package/esm/core/src/data-api.js +0 -279
  107. package/esm/core/src/data-interfaces.d.ts +0 -41
  108. package/esm/core/src/data-interfaces.js +0 -12
  109. package/esm/core/src/data-providers/array-entity-data-provider.d.ts +0 -22
  110. package/esm/core/src/data-providers/array-entity-data-provider.js +0 -252
  111. package/esm/core/src/data-providers/in-memory-database.d.ts +0 -9
  112. package/esm/core/src/data-providers/in-memory-database.js +0 -14
  113. package/esm/core/src/data-providers/json-data-provider.d.ts +0 -12
  114. package/esm/core/src/data-providers/json-data-provider.js +0 -55
  115. package/esm/core/src/data-providers/rest-data-provider.d.ts +0 -49
  116. package/esm/core/src/data-providers/rest-data-provider.js +0 -256
  117. package/esm/core/src/data-providers/sql-database.d.ts +0 -33
  118. package/esm/core/src/data-providers/sql-database.js +0 -384
  119. package/esm/core/src/data-providers/web-sql-data-provider.d.ts +0 -24
  120. package/esm/core/src/data-providers/web-sql-data-provider.js +0 -143
  121. package/esm/core/src/entity.d.ts +0 -91
  122. package/esm/core/src/entity.js +0 -1
  123. package/esm/core/src/filter/filter-consumer-bridge-to-sql-request.d.ts +0 -50
  124. package/esm/core/src/filter/filter-consumer-bridge-to-sql-request.js +0 -150
  125. package/esm/core/src/filter/filter-consumer-bridge-to-url-builder.d.ts +0 -1
  126. package/esm/core/src/filter/filter-consumer-bridge-to-url-builder.js +0 -1
  127. package/esm/core/src/filter/filter-interfaces.d.ts +0 -85
  128. package/esm/core/src/filter/filter-interfaces.js +0 -477
  129. package/esm/core/src/live-query/LiveQueryClient.d.ts +0 -20
  130. package/esm/core/src/live-query/LiveQueryClient.js +0 -188
  131. package/esm/core/src/live-query/SseSubscriptionClient.d.ts +0 -5
  132. package/esm/core/src/live-query/SseSubscriptionClient.js +0 -86
  133. package/esm/core/src/live-query/SubscriptionChannel.d.ts +0 -72
  134. package/esm/core/src/live-query/SubscriptionChannel.js +0 -123
  135. package/esm/core/src/live-query/SubscriptionServer.d.ts +0 -53
  136. package/esm/core/src/live-query/SubscriptionServer.js +0 -111
  137. package/esm/core/src/live-query/live-query-tests.spec.d.ts +0 -6
  138. package/esm/core/src/live-query/live-query-tests.spec.js +0 -952
  139. package/esm/core/src/remult-proxy.d.ts +0 -35
  140. package/esm/core/src/remult-proxy.js +0 -113
  141. package/esm/core/src/remult3/DecoratorReplacer.d.ts +0 -10
  142. package/esm/core/src/remult3/DecoratorReplacer.js +0 -20
  143. package/esm/core/src/remult3/RepositoryImplementation.d.ts +0 -355
  144. package/esm/core/src/remult3/RepositoryImplementation.js +0 -2109
  145. package/esm/core/src/remult3/index.d.ts +0 -2
  146. package/esm/core/src/remult3/index.js +0 -2
  147. package/esm/core/src/remult3/remult3.d.ts +0 -395
  148. package/esm/core/src/remult3/remult3.js +0 -2
  149. package/esm/core/src/server-action.d.ts +0 -81
  150. package/esm/core/src/server-action.js +0 -394
  151. package/esm/core/src/shared-tests/db-tests-setup.d.ts +0 -32
  152. package/esm/core/src/shared-tests/db-tests-setup.js +0 -78
  153. package/esm/core/src/shared-tests/db-tests.db-tests.d.ts +0 -25
  154. package/esm/core/src/shared-tests/db-tests.db-tests.js +0 -810
  155. package/esm/core/src/shared-tests/deleteAll.d.ts +0 -2
  156. package/esm/core/src/shared-tests/deleteAll.js +0 -4
  157. package/esm/core/src/shared-tests/entityWithValidations.d.ts +0 -14
  158. package/esm/core/src/shared-tests/entityWithValidations.js +0 -43
  159. package/esm/core/src/shared-tests/index.d.ts +0 -4
  160. package/esm/core/src/shared-tests/index.js +0 -4
  161. package/esm/core/src/shared-tests/test-custom-id-column.spec.d.ts +0 -1
  162. package/esm/core/src/shared-tests/test-custom-id-column.spec.js +0 -67
  163. package/esm/core/src/shared-tests/test-special-value.spec.d.ts +0 -10
  164. package/esm/core/src/shared-tests/test-special-value.spec.js +0 -73
  165. package/esm/core/src/shared-tests/test-update-with-null.spec.d.ts +0 -1
  166. package/esm/core/src/shared-tests/test-update-with-null.spec.js +0 -31
  167. package/esm/core/src/sort.d.ts +0 -16
  168. package/esm/core/src/sort.js +0 -103
  169. package/esm/core/src/sql-command.d.ts +0 -19
  170. package/esm/core/src/sql-command.js +0 -1
  171. package/esm/core/src/test.d.ts +0 -3
  172. package/esm/core/src/test.js +0 -12
  173. package/esm/core/src/tests/Done.d.ts +0 -5
  174. package/esm/core/src/tests/Done.js +0 -9
  175. package/esm/core/src/tests/RowProvider.spec.d.ts +0 -16
  176. package/esm/core/src/tests/RowProvider.spec.js +0 -631
  177. package/esm/core/src/tests/TestDataApiResponse.d.ts +0 -10
  178. package/esm/core/src/tests/TestDataApiResponse.js +0 -22
  179. package/esm/core/src/tests/basicRowFunctionality.spec.d.ts +0 -8
  180. package/esm/core/src/tests/basicRowFunctionality.spec.js +0 -2103
  181. package/esm/core/src/tests/c.d.ts +0 -8
  182. package/esm/core/src/tests/c.js +0 -13
  183. package/esm/core/src/tests/createData.d.ts +0 -7
  184. package/esm/core/src/tests/createData.js +0 -22
  185. package/esm/core/src/tests/d.d.ts +0 -6
  186. package/esm/core/src/tests/d.js +0 -11
  187. package/esm/core/src/tests/dWithPrefilter.d.ts +0 -7
  188. package/esm/core/src/tests/dWithPrefilter.js +0 -18
  189. package/esm/core/src/tests/entityForCustomFilter.d.ts +0 -16
  190. package/esm/core/src/tests/entityForCustomFilter.js +0 -33
  191. package/esm/core/src/tests/entityWithValidationsOnColumn.d.ts +0 -5
  192. package/esm/core/src/tests/entityWithValidationsOnColumn.js +0 -13
  193. package/esm/core/src/tests/frontend-database-tests-setup.spec.d.ts +0 -4
  194. package/esm/core/src/tests/frontend-database-tests-setup.spec.js +0 -37
  195. package/esm/core/src/tests/h.d.ts +0 -6
  196. package/esm/core/src/tests/h.js +0 -24
  197. package/esm/core/src/tests/remult-3-basic-tests.spec.d.ts +0 -1
  198. package/esm/core/src/tests/remult-3-basic-tests.spec.js +0 -236
  199. package/esm/core/src/tests/remult-3-entities.d.ts +0 -23
  200. package/esm/core/src/tests/remult-3-entities.js +0 -39
  201. package/esm/core/src/tests/tasks.d.ts +0 -6
  202. package/esm/core/src/tests/tasks.js +0 -10
  203. package/esm/core/src/tests/test-context-as-storage.spec.d.ts +0 -0
  204. package/esm/core/src/tests/test-context-as-storage.spec.js +0 -1
  205. package/esm/core/src/tests/test-data-api/predefined-filter.spec.d.ts +0 -1
  206. package/esm/core/src/tests/test-data-api/predefined-filter.spec.js +0 -389
  207. package/esm/core/src/tests/test-data-api/test-put-with-validation.spec.d.ts +0 -5
  208. package/esm/core/src/tests/test-data-api/test-put-with-validation.spec.js +0 -152
  209. package/esm/core/src/tests/test-decorator-precedence.spec.d.ts +0 -1
  210. package/esm/core/src/tests/test-decorator-precedence.spec.js +0 -38
  211. package/esm/core/src/tests/test-default-value.spec.d.ts +0 -1
  212. package/esm/core/src/tests/test-default-value.spec.js +0 -33
  213. package/esm/core/src/tests/test-entity-inheritance.spec.d.ts +0 -14
  214. package/esm/core/src/tests/test-entity-inheritance.spec.js +0 -82
  215. package/esm/core/src/tests/test-exceptions.spec.d.ts +0 -1
  216. package/esm/core/src/tests/test-exceptions.spec.js +0 -375
  217. package/esm/core/src/tests/test-json.spec.d.ts +0 -1
  218. package/esm/core/src/tests/test-json.spec.js +0 -115
  219. package/esm/core/src/tests/test-many-to-one-relation-in-entity.spec.d.ts +0 -9
  220. package/esm/core/src/tests/test-many-to-one-relation-in-entity.spec.js +0 -809
  221. package/esm/core/src/tests/test-non-active-record.spec.d.ts +0 -1
  222. package/esm/core/src/tests/test-non-active-record.spec.js +0 -66
  223. package/esm/core/src/tests/test-object-column.spec.d.ts +0 -1
  224. package/esm/core/src/tests/test-object-column.spec.js +0 -189
  225. package/esm/core/src/tests/test-paged-foreach.spec.d.ts +0 -1
  226. package/esm/core/src/tests/test-paged-foreach.spec.js +0 -328
  227. package/esm/core/src/tests/test-remult-angular.spec.d.ts +0 -1
  228. package/esm/core/src/tests/test-remult-angular.spec.js +0 -23
  229. package/esm/core/src/tests/test-server-controller.spec.d.ts +0 -7
  230. package/esm/core/src/tests/test-server-controller.spec.js +0 -489
  231. package/esm/core/src/tests/test-server-expressions.spec.d.ts +0 -1
  232. package/esm/core/src/tests/test-server-expressions.spec.js +0 -178
  233. package/esm/core/src/tests/test-server-method-on-entity.spec.d.ts +0 -1
  234. package/esm/core/src/tests/test-server-method-on-entity.spec.js +0 -306
  235. package/esm/core/src/tests/test-sql-expression.spec.d.ts +0 -5
  236. package/esm/core/src/tests/test-sql-expression.spec.js +0 -205
  237. package/esm/core/src/tests/test-sql.spec.d.ts +0 -1
  238. package/esm/core/src/tests/test-sql.spec.js +0 -170
  239. package/esm/core/src/tests/test-subscribe.spec.d.ts +0 -1
  240. package/esm/core/src/tests/test-subscribe.spec.js +0 -135
  241. package/esm/core/src/tests/test-type-recovery.spec.d.ts +0 -1
  242. package/esm/core/src/tests/test-type-recovery.spec.js +0 -49
  243. package/esm/core/src/tests/test-where-api.spec.d.ts +0 -1
  244. package/esm/core/src/tests/test-where-api.spec.js +0 -434
  245. package/esm/core/src/tests/testHelper.spec.d.ts +0 -36
  246. package/esm/core/src/tests/testHelper.spec.js +0 -226
  247. package/esm/core/src/tests/testModel/models.d.ts +0 -16
  248. package/esm/core/src/tests/testModel/models.js +0 -25
  249. package/esm/core/src/validators.d.ts +0 -14
  250. package/esm/core/src/validators.js +0 -33
  251. package/esm/core/src/valueConverters.js +0 -197
  252. package/esm/core/urlBuilder.d.ts +0 -6
  253. package/esm/core/urlBuilder.js +0 -20
  254. package/esm/test-servers/shared/Task.d.ts +0 -9
  255. package/esm/test-servers/shared/Task.js +0 -32
  256. package/esm/test.d.ts +0 -5
  257. package/esm/test.js +0 -6
@@ -92,6 +92,16 @@ exports.mySqlTest = db_tests_setup_1.addDatabaseToTest(testKnexSqlImpl(Knex.defa
92
92
  database: 'test',
93
93
  },
94
94
  }), 'mysql2'));
95
+ db_tests_setup_1.addDatabaseToTest(testKnexSqlImpl(Knex.default({
96
+ client: 'mysql',
97
+ connection: {
98
+ user: 'root',
99
+ password: 'MASTERKEY',
100
+ host: '127.0.0.1',
101
+ database: 'test',
102
+ port: 3307
103
+ },
104
+ }), 'mysql'));
95
105
  var pg = postgres_1.createPostgresConnection();
96
106
  function testPostgresImplementation(key, what, focus) {
97
107
  var _this = this;
@@ -390,4 +400,54 @@ exports.testMongoNoTrans('transactions mongo no trans', function (_a) {
390
400
  });
391
401
  });
392
402
  }, false);
403
+ exports.testMongoNoTrans('test Dates', function (_a) {
404
+ var createEntity = _a.createEntity;
405
+ return tslib_1.__awaiter(void 0, void 0, void 0, function () {
406
+ var c, r, x, client, mongoDb, _b, _c, _d, _e, _f, _g;
407
+ return tslib_1.__generator(this, function (_h) {
408
+ switch (_h.label) {
409
+ case 0:
410
+ c = /** @class */ (function () {
411
+ function class_2() {
412
+ }
413
+ return class_2;
414
+ }());
415
+ DecoratorReplacer_1.describeClass(c, remult3_1.Entity('test_dates_on_mongo'), {
416
+ id: remult3_1.Fields.integer(),
417
+ date: remult3_1.Fields.date(),
418
+ });
419
+ return [4 /*yield*/, createEntity(c)];
420
+ case 1:
421
+ r = _h.sent();
422
+ return [4 /*yield*/, r.insert({ id: 1, date: new Date(1976, 5, 16) })];
423
+ case 2:
424
+ x = _h.sent();
425
+ client = new mongodb_1.MongoClient('mongodb://localhost:27017/local');
426
+ return [4 /*yield*/, client.connect()];
427
+ case 3:
428
+ _h.sent();
429
+ mongoDb = client.db('test');
430
+ _b = expect;
431
+ _d = (_c = mongoDb).collection;
432
+ return [4 /*yield*/, r.metadata.getDbName()];
433
+ case 4: return [4 /*yield*/, _d.apply(_c, [_h.sent()]).findOne()];
434
+ case 5:
435
+ _b.apply(void 0, [(_h.sent())
436
+ .date instanceof Date]).toBe(true);
437
+ x.date = new Date(1978, 2, 15);
438
+ return [4 /*yield*/, r.save(x)];
439
+ case 6:
440
+ _h.sent();
441
+ _e = expect;
442
+ _g = (_f = mongoDb).collection;
443
+ return [4 /*yield*/, r.metadata.getDbName()];
444
+ case 7: return [4 /*yield*/, _g.apply(_f, [_h.sent()]).findOne()];
445
+ case 8:
446
+ _e.apply(void 0, [(_h.sent())
447
+ .date instanceof Date]).toBe(true);
448
+ return [2 /*return*/];
449
+ }
450
+ });
451
+ });
452
+ }, false);
393
453
  require("../shared-tests");
@@ -1 +1 @@
1
- export {};
1
+ export {};
@@ -0,0 +1,217 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ var tslib_1 = require("tslib");
4
+ var context_1 = require("../context");
5
+ var remult_knex_1 = require("../../remult-knex");
6
+ var dotenv_1 = require("dotenv");
7
+ var backend_database_test_setup_backend_spec_1 = require("./backend-database-test-setup.backend-spec");
8
+ var entityWithValidations_1 = require("../shared-tests/entityWithValidations");
9
+ var sql_database_1 = require("../data-providers/sql-database");
10
+ var expressBridge_1 = require("../../server/expressBridge");
11
+ var initAsyncHooks_1 = require("../../server/initAsyncHooks");
12
+ var remult_proxy_1 = require("../remult-proxy");
13
+ dotenv_1.config();
14
+ backend_database_test_setup_backend_spec_1.testPostgresImplementation("default order by", function (_a) {
15
+ var createEntity = _a.createEntity;
16
+ return tslib_1.__awaiter(void 0, void 0, void 0, function () {
17
+ var s, _b;
18
+ return tslib_1.__generator(this, function (_c) {
19
+ switch (_c.label) {
20
+ case 0: return [4 /*yield*/, entityWithValidations_1.entityWithValidations.create4RowsInDp(createEntity)];
21
+ case 1:
22
+ s = _c.sent();
23
+ return [4 /*yield*/, s.update(1, { name: "updated name" })];
24
+ case 2:
25
+ _c.sent();
26
+ _b = expect;
27
+ return [4 /*yield*/, s.find()];
28
+ case 3:
29
+ _b.apply(void 0, [(_c.sent()).map(function (x) { return x.myId; })]).toEqual([1, 2, 3, 4]);
30
+ return [2 /*return*/];
31
+ }
32
+ });
33
+ });
34
+ }, false);
35
+ backend_database_test_setup_backend_spec_1.testKnexPGSqlImpl("default order by", function (_a) {
36
+ var createEntity = _a.createEntity;
37
+ return tslib_1.__awaiter(void 0, void 0, void 0, function () {
38
+ var s, _b;
39
+ return tslib_1.__generator(this, function (_c) {
40
+ switch (_c.label) {
41
+ case 0: return [4 /*yield*/, entityWithValidations_1.entityWithValidations.create4RowsInDp(createEntity)];
42
+ case 1:
43
+ s = _c.sent();
44
+ return [4 /*yield*/, s.update(1, { name: "updated name" })];
45
+ case 2:
46
+ _c.sent();
47
+ _b = expect;
48
+ return [4 /*yield*/, s.find()];
49
+ case 3:
50
+ _b.apply(void 0, [(_c.sent()).map(function (x) { return x.myId; })]).toEqual([1, 2, 3, 4]);
51
+ return [2 /*return*/];
52
+ }
53
+ });
54
+ });
55
+ }, false);
56
+ backend_database_test_setup_backend_spec_1.testPostgresImplementation("sql filter", function (_a) {
57
+ var createEntity = _a.createEntity;
58
+ return tslib_1.__awaiter(void 0, void 0, void 0, function () {
59
+ var s, _b;
60
+ return tslib_1.__generator(this, function (_c) {
61
+ switch (_c.label) {
62
+ case 0: return [4 /*yield*/, entityWithValidations_1.entityWithValidations.create4RowsInDp(createEntity)];
63
+ case 1:
64
+ s = _c.sent();
65
+ _b = expect;
66
+ return [4 /*yield*/, s.find({
67
+ where: sql_database_1.SqlDatabase.customFilter(function (build) { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
68
+ return tslib_1.__generator(this, function (_a) {
69
+ build.sql = s.metadata.fields.myId.options.dbName + ' in (1,3)';
70
+ return [2 /*return*/];
71
+ });
72
+ }); })
73
+ })];
74
+ case 2:
75
+ _b.apply(void 0, [(_c.sent()).length]).toBe(2);
76
+ return [2 /*return*/];
77
+ }
78
+ });
79
+ });
80
+ }, false);
81
+ backend_database_test_setup_backend_spec_1.testPostgresImplementation("sql filter2", function (_a) {
82
+ var createEntity = _a.createEntity;
83
+ return tslib_1.__awaiter(void 0, void 0, void 0, function () {
84
+ var s, _b;
85
+ return tslib_1.__generator(this, function (_c) {
86
+ switch (_c.label) {
87
+ case 0: return [4 /*yield*/, entityWithValidations_1.entityWithValidations.create4RowsInDp(createEntity)];
88
+ case 1:
89
+ s = _c.sent();
90
+ _b = expect;
91
+ return [4 /*yield*/, s.find({
92
+ where: {
93
+ $or: [
94
+ sql_database_1.SqlDatabase.customFilter(function (build) { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
95
+ return tslib_1.__generator(this, function (_a) {
96
+ build.sql = s.metadata.fields.myId.options.dbName + ' in (1,3)';
97
+ return [2 /*return*/];
98
+ });
99
+ }); }),
100
+ {
101
+ myId: 2
102
+ }
103
+ ]
104
+ }
105
+ })];
106
+ case 2:
107
+ _b.apply(void 0, [(_c.sent()).length]).toBe(3);
108
+ return [2 /*return*/];
109
+ }
110
+ });
111
+ });
112
+ }, false);
113
+ backend_database_test_setup_backend_spec_1.testKnexPGSqlImpl("knex filter", function (_a) {
114
+ var createEntity = _a.createEntity;
115
+ return tslib_1.__awaiter(void 0, void 0, void 0, function () {
116
+ var s, _b;
117
+ return tslib_1.__generator(this, function (_c) {
118
+ switch (_c.label) {
119
+ case 0: return [4 /*yield*/, entityWithValidations_1.entityWithValidations.create4RowsInDp(createEntity)];
120
+ case 1:
121
+ s = _c.sent();
122
+ _b = expect;
123
+ return [4 /*yield*/, s.find({
124
+ where: remult_knex_1.KnexDataProvider.customFilter(function () { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
125
+ return tslib_1.__generator(this, function (_a) {
126
+ return [2 /*return*/, function (build) { return build.whereIn(s.metadata.fields.myId.options.dbName, [1, 3]); }];
127
+ });
128
+ }); })
129
+ })];
130
+ case 2:
131
+ _b.apply(void 0, [(_c.sent()).length]).toBe(2);
132
+ return [2 /*return*/];
133
+ }
134
+ });
135
+ });
136
+ }, false);
137
+ backend_database_test_setup_backend_spec_1.testKnexPGSqlImpl("knex filter2", function (_a) {
138
+ var createEntity = _a.createEntity;
139
+ return tslib_1.__awaiter(void 0, void 0, void 0, function () {
140
+ var s, _b;
141
+ return tslib_1.__generator(this, function (_c) {
142
+ switch (_c.label) {
143
+ case 0: return [4 /*yield*/, entityWithValidations_1.entityWithValidations.create4RowsInDp(createEntity)];
144
+ case 1:
145
+ s = _c.sent();
146
+ _b = expect;
147
+ return [4 /*yield*/, s.find({
148
+ where: {
149
+ $or: [remult_knex_1.KnexDataProvider.customFilter(function () { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
150
+ return tslib_1.__generator(this, function (_a) {
151
+ return [2 /*return*/, function (build) { return build.whereIn(s.metadata.fields.myId.options.dbName, [1, 3]); }];
152
+ });
153
+ }); }), {
154
+ myId: 4
155
+ }]
156
+ }
157
+ })];
158
+ case 2:
159
+ _b.apply(void 0, [(_c.sent()).length]).toBe(3);
160
+ return [2 /*return*/];
161
+ }
162
+ });
163
+ });
164
+ }, false);
165
+ it("test async hooks and static remult", function () { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
166
+ var gotException, promises;
167
+ return tslib_1.__generator(this, function (_a) {
168
+ switch (_a.label) {
169
+ case 0:
170
+ gotException = true;
171
+ try {
172
+ expressBridge_1.RemultAsyncLocalStorage.instance.getRemult();
173
+ gotException = false;
174
+ }
175
+ catch (_b) { }
176
+ expect(gotException).toBe(true);
177
+ initAsyncHooks_1.initAsyncHooks();
178
+ expect(expressBridge_1.RemultAsyncLocalStorage.instance.getRemult()).toBe(undefined);
179
+ expressBridge_1.RemultAsyncLocalStorage.enable();
180
+ try {
181
+ remult_proxy_1.remult.isAllowed(false);
182
+ gotException = false;
183
+ }
184
+ catch (_c) { }
185
+ expect(gotException).toBe(true);
186
+ promises = [];
187
+ expressBridge_1.RemultAsyncLocalStorage.instance.run(new context_1.Remult(), function () {
188
+ remult_proxy_1.remult.user = { id: 'noam' };
189
+ promises.push(new Promise(function (res) {
190
+ setTimeout(function () {
191
+ expect(remult_proxy_1.remult.user.id).toBe('noam');
192
+ res({});
193
+ }, 10);
194
+ }));
195
+ expressBridge_1.RemultAsyncLocalStorage.instance.run(new context_1.Remult(), function () {
196
+ remult_proxy_1.remult.user = { id: 'yoni' };
197
+ promises.push(new Promise(function (res) {
198
+ setTimeout(function () {
199
+ expect(remult_proxy_1.remult.user.id).toBe('yoni');
200
+ res({});
201
+ }, 10);
202
+ }));
203
+ });
204
+ promises.push(new Promise(function (res) {
205
+ setTimeout(function () {
206
+ expect(remult_proxy_1.remult.user.id).toBe('noam');
207
+ res({});
208
+ }, 10);
209
+ }));
210
+ });
211
+ return [4 /*yield*/, Promise.all(promises)];
212
+ case 1:
213
+ _a.sent();
214
+ return [2 /*return*/];
215
+ }
216
+ });
217
+ }); });
@@ -0,0 +1,6 @@
1
+ export declare class Task {
2
+ id: string;
3
+ title: string;
4
+ completed: boolean;
5
+ static testForbidden(): void;
6
+ }
@@ -0,0 +1,342 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Task = void 0;
4
+ var tslib_1 = require("tslib");
5
+ var axios_1 = require("axios");
6
+ var remult_fresh_1 = require("../../remult-fresh");
7
+ var in_memory_database_1 = require("../data-providers/in-memory-database");
8
+ var remult_proxy_1 = require("../remult-proxy");
9
+ var remult3_1 = require("../remult3");
10
+ var server_action_1 = require("../server-action");
11
+ var remult_3_entities_1 = require("../tests/remult-3-entities");
12
+ remult_proxy_1.remult.apiClient.url = 'http://localhost:3003/api';
13
+ var path = remult_proxy_1.remult.apiClient.url + '/tasks';
14
+ var environments = [
15
+ // ["next", 3000],
16
+ // ["nest", 3001],
17
+ // ["koa", 3002],
18
+ // ["fastify", 3003],
19
+ // ["express", 3004],
20
+ // ["generic server", 3005],
21
+ // ["optine", 3006],
22
+ // ["fresh", 8000]
23
+ ];
24
+ function test(name, test) {
25
+ var e_1, _a;
26
+ var _this = this;
27
+ var _loop_1 = function (env, port) {
28
+ var theTest = function () { return tslib_1.__awaiter(_this, void 0, void 0, function () {
29
+ return tslib_1.__generator(this, function (_a) {
30
+ switch (_a.label) {
31
+ case 0:
32
+ remult_proxy_1.remult.apiClient.url = "http://localhost:" + port + "/api";
33
+ path = remult_proxy_1.remult.apiClient.url + '/tasks';
34
+ return [4 /*yield*/, test()];
35
+ case 1:
36
+ _a.sent();
37
+ return [2 /*return*/];
38
+ }
39
+ });
40
+ }); };
41
+ var testName = env + (" " + port + ": " + name);
42
+ fit(testName, theTest);
43
+ };
44
+ try {
45
+ for (var environments_1 = tslib_1.__values(environments), environments_1_1 = environments_1.next(); !environments_1_1.done; environments_1_1 = environments_1.next()) {
46
+ var _b = tslib_1.__read(environments_1_1.value, 2), env = _b[0], port = _b[1];
47
+ _loop_1(env, port);
48
+ }
49
+ }
50
+ catch (e_1_1) { e_1 = { error: e_1_1 }; }
51
+ finally {
52
+ try {
53
+ if (environments_1_1 && !environments_1_1.done && (_a = environments_1.return)) _a.call(environments_1);
54
+ }
55
+ finally { if (e_1) throw e_1.error; }
56
+ }
57
+ }
58
+ test("works", function () { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
59
+ var repo, tasks, _a;
60
+ return tslib_1.__generator(this, function (_b) {
61
+ switch (_b.label) {
62
+ case 0: return [4 /*yield*/, create3Tasks()];
63
+ case 1:
64
+ repo = _b.sent();
65
+ return [4 /*yield*/, repo.find({ where: { completed: true } })];
66
+ case 2:
67
+ tasks = _b.sent();
68
+ expect(tasks.length).toBe(1);
69
+ return [4 /*yield*/, repo.save(tslib_1.__assign(tslib_1.__assign({}, tasks[0]), { completed: false }))];
70
+ case 3:
71
+ _b.sent();
72
+ _a = expect;
73
+ return [4 /*yield*/, repo.count({ completed: true })];
74
+ case 4:
75
+ _a.apply(void 0, [_b.sent()]).toBe(0);
76
+ return [2 /*return*/];
77
+ }
78
+ });
79
+ }); });
80
+ test("test multiple items", function () { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
81
+ var repo, _a;
82
+ return tslib_1.__generator(this, function (_b) {
83
+ switch (_b.label) {
84
+ case 0: return [4 /*yield*/, create3Tasks()];
85
+ case 1:
86
+ repo = _b.sent();
87
+ _a = expect;
88
+ return [4 /*yield*/, repo.count({
89
+ title: { "!=": ["a", "c"] }
90
+ })];
91
+ case 2:
92
+ _a.apply(void 0, [_b.sent()]).toBe(1);
93
+ return [2 /*return*/];
94
+ }
95
+ });
96
+ }); });
97
+ test("validation", function () { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
98
+ var r, err, error_1;
99
+ return tslib_1.__generator(this, function (_a) {
100
+ switch (_a.label) {
101
+ case 0: return [4 /*yield*/, create3Tasks()];
102
+ case 1:
103
+ r = _a.sent();
104
+ err = undefined;
105
+ _a.label = 2;
106
+ case 2:
107
+ _a.trys.push([2, 4, , 5]);
108
+ return [4 /*yield*/, r.insert({ "title": "" })];
109
+ case 3:
110
+ _a.sent();
111
+ return [3 /*break*/, 5];
112
+ case 4:
113
+ error_1 = _a.sent();
114
+ err = error_1;
115
+ return [3 /*break*/, 5];
116
+ case 5:
117
+ expect(err).toEqual({
118
+ message: "Title: Should not be empty",
119
+ httpStatusCode: 400,
120
+ modelState: {
121
+ title: "Should not be empty"
122
+ }
123
+ });
124
+ return [2 /*return*/];
125
+ }
126
+ });
127
+ }); });
128
+ test("forbidden", function () { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
129
+ var err, error_2;
130
+ return tslib_1.__generator(this, function (_a) {
131
+ switch (_a.label) {
132
+ case 0:
133
+ err = undefined;
134
+ _a.label = 1;
135
+ case 1:
136
+ _a.trys.push([1, 3, , 4]);
137
+ return [4 /*yield*/, Task.testForbidden()];
138
+ case 2:
139
+ _a.sent();
140
+ return [3 /*break*/, 4];
141
+ case 3:
142
+ error_2 = _a.sent();
143
+ err = error_2;
144
+ return [3 /*break*/, 4];
145
+ case 4:
146
+ expect(err.httpStatusCode).toEqual(403);
147
+ return [2 /*return*/];
148
+ }
149
+ });
150
+ }); });
151
+ test("test http 404", function () { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
152
+ var repo, task, result, error, err_1;
153
+ return tslib_1.__generator(this, function (_a) {
154
+ switch (_a.label) {
155
+ case 0:
156
+ repo = create3Tasks();
157
+ return [4 /*yield*/, repo];
158
+ case 1: return [4 /*yield*/, (_a.sent()).findFirst()];
159
+ case 2:
160
+ task = _a.sent();
161
+ return [4 /*yield*/, axios_1.default.get(path + "/" + task.id)];
162
+ case 3:
163
+ result = _a.sent();
164
+ expect(result.data.id).toBe(task.id);
165
+ expect(result.status).toBe(200);
166
+ error = undefined;
167
+ _a.label = 4;
168
+ case 4:
169
+ _a.trys.push([4, 6, , 7]);
170
+ return [4 /*yield*/, axios_1.default.get(path + "/123")];
171
+ case 5:
172
+ result = _a.sent();
173
+ return [3 /*break*/, 7];
174
+ case 6:
175
+ err_1 = _a.sent();
176
+ error = err_1;
177
+ return [3 /*break*/, 7];
178
+ case 7:
179
+ expect(error.response.status).toBe(404);
180
+ return [2 /*return*/];
181
+ }
182
+ });
183
+ }); });
184
+ test("test http 201", function () { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
185
+ var result;
186
+ return tslib_1.__generator(this, function (_a) {
187
+ switch (_a.label) {
188
+ case 0: return [4 /*yield*/, axios_1.default.post(path, { title: "z", id: "" })];
189
+ case 1:
190
+ result = _a.sent();
191
+ expect(result.data.title).toBe("z");
192
+ expect(result.status).toBe(201);
193
+ return [4 /*yield*/, axios_1.default.delete(path + "/" + result.data.id)];
194
+ case 2:
195
+ result = _a.sent();
196
+ expect(result.status).toBe(204);
197
+ return [2 /*return*/];
198
+ }
199
+ });
200
+ }); });
201
+ test("test regular api call", function () { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
202
+ var result;
203
+ return tslib_1.__generator(this, function (_a) {
204
+ switch (_a.label) {
205
+ case 0: return [4 /*yield*/, create3Tasks()];
206
+ case 1:
207
+ _a.sent();
208
+ return [4 /*yield*/, axios_1.default.get(remult_proxy_1.remult.apiClient.url + "/test")];
209
+ case 2:
210
+ result = _a.sent();
211
+ expect(result.data.result).toBe(3);
212
+ return [2 /*return*/];
213
+ }
214
+ });
215
+ }); });
216
+ var FreshResponseTest = /** @class */ (function () {
217
+ function FreshResponseTest(body, init) {
218
+ this.body = body;
219
+ this.init = init;
220
+ }
221
+ FreshResponseTest.json = function (data, init) {
222
+ return new this(data, init);
223
+ };
224
+ return FreshResponseTest;
225
+ }());
226
+ it("test fresh", function () { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
227
+ var api, r;
228
+ return tslib_1.__generator(this, function (_a) {
229
+ switch (_a.label) {
230
+ case 0:
231
+ api = remult_fresh_1.remultFresh({
232
+ entities: [remult_3_entities_1.Categories],
233
+ dataProvider: new in_memory_database_1.InMemoryDataProvider(),
234
+ rootPath: '/api'
235
+ }, FreshResponseTest);
236
+ return [4 /*yield*/, api.handle({
237
+ url: '/api/Categories',
238
+ json: function () {
239
+ return undefined;
240
+ },
241
+ method: "get"
242
+ }, {
243
+ next: function () {
244
+ return undefined;
245
+ },
246
+ })];
247
+ case 1:
248
+ r = _a.sent();
249
+ expect(r.body).toEqual([]);
250
+ return [2 /*return*/];
251
+ }
252
+ });
253
+ }); });
254
+ var Task = /** @class */ (function () {
255
+ function Task() {
256
+ this.title = '';
257
+ this.completed = false;
258
+ }
259
+ Task.testForbidden = function () {
260
+ };
261
+ tslib_1.__decorate([
262
+ remult3_1.Fields.uuid(),
263
+ tslib_1.__metadata("design:type", String)
264
+ ], Task.prototype, "id", void 0);
265
+ tslib_1.__decorate([
266
+ remult3_1.Fields.string({
267
+ // validate: Validators.required should only be on backend
268
+ }),
269
+ tslib_1.__metadata("design:type", Object)
270
+ ], Task.prototype, "title", void 0);
271
+ tslib_1.__decorate([
272
+ remult3_1.Fields.boolean(),
273
+ tslib_1.__metadata("design:type", Object)
274
+ ], Task.prototype, "completed", void 0);
275
+ tslib_1.__decorate([
276
+ server_action_1.BackendMethod({ allowed: false }),
277
+ tslib_1.__metadata("design:type", Function),
278
+ tslib_1.__metadata("design:paramtypes", []),
279
+ tslib_1.__metadata("design:returntype", void 0)
280
+ ], Task, "testForbidden", null);
281
+ Task = tslib_1.__decorate([
282
+ remult3_1.Entity("tasks", {
283
+ allowApiCrud: true
284
+ })
285
+ ], Task);
286
+ return Task;
287
+ }());
288
+ exports.Task = Task;
289
+ function create3Tasks() {
290
+ return tslib_1.__awaiter(this, void 0, void 0, function () {
291
+ var taskRepo, _a, _b, task, e_2_1, _c, _d;
292
+ var e_2, _e;
293
+ return tslib_1.__generator(this, function (_f) {
294
+ switch (_f.label) {
295
+ case 0:
296
+ remult_proxy_1.remult.apiClient.httpClient = axios_1.default;
297
+ taskRepo = remult_proxy_1.remult.repo(Task);
298
+ _f.label = 1;
299
+ case 1:
300
+ _f.trys.push([1, 7, 8, 9]);
301
+ return [4 /*yield*/, taskRepo.find()];
302
+ case 2:
303
+ _a = tslib_1.__values.apply(void 0, [_f.sent()]), _b = _a.next();
304
+ _f.label = 3;
305
+ case 3:
306
+ if (!!_b.done) return [3 /*break*/, 6];
307
+ task = _b.value;
308
+ return [4 /*yield*/, taskRepo.delete(task)];
309
+ case 4:
310
+ _f.sent();
311
+ _f.label = 5;
312
+ case 5:
313
+ _b = _a.next();
314
+ return [3 /*break*/, 3];
315
+ case 6: return [3 /*break*/, 9];
316
+ case 7:
317
+ e_2_1 = _f.sent();
318
+ e_2 = { error: e_2_1 };
319
+ return [3 /*break*/, 9];
320
+ case 8:
321
+ try {
322
+ if (_b && !_b.done && (_e = _a.return)) _e.call(_a);
323
+ }
324
+ finally { if (e_2) throw e_2.error; }
325
+ return [7 /*endfinally*/];
326
+ case 9:
327
+ _c = expect;
328
+ return [4 /*yield*/, taskRepo.count()];
329
+ case 10:
330
+ _c.apply(void 0, [_f.sent()]).toBe(0);
331
+ return [4 /*yield*/, taskRepo.insert([{ title: "a" }, { title: "b", completed: true }, { title: "c" }])];
332
+ case 11:
333
+ _f.sent();
334
+ _d = expect;
335
+ return [4 /*yield*/, taskRepo.count()];
336
+ case 12:
337
+ _d.apply(void 0, [_f.sent()]).toBe(3);
338
+ return [2 /*return*/, taskRepo];
339
+ }
340
+ });
341
+ });
342
+ }
@@ -0,0 +1,4 @@
1
+ import { EntityBase } from './remult3';
2
+ export declare class IdEntity extends EntityBase {
3
+ id: string;
4
+ }
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.IdEntity = void 0;
4
+ var tslib_1 = require("tslib");
5
+ var remult3_1 = require("./remult3");
6
+ var IdEntity = /** @class */ (function (_super) {
7
+ tslib_1.__extends(IdEntity, _super);
8
+ function IdEntity() {
9
+ return _super !== null && _super.apply(this, arguments) || this;
10
+ }
11
+ tslib_1.__decorate([
12
+ remult3_1.Fields.uuid(),
13
+ tslib_1.__metadata("design:type", String)
14
+ ], IdEntity.prototype, "id", void 0);
15
+ return IdEntity;
16
+ }(remult3_1.EntityBase));
17
+ exports.IdEntity = IdEntity;