remult 0.22.2 → 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 (255) 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/src/backend-tests/backend-database-test-setup.backend-spec.js +10 -0
  5. package/esm/src/id-entity.d.ts +4 -0
  6. package/esm/src/id-entity.js +8 -0
  7. package/esm/src/remult3/RepositoryImplementation.js +7 -5
  8. package/esm/src/shared-tests/db-tests.db-tests.js +35 -0
  9. package/package.json +1 -1
  10. package/postgres/postgresColumnSyntax.d.ts +2 -0
  11. package/postgres/postgresColumnSyntax.js +34 -0
  12. package/remult-knex/index.js +2 -2
  13. package/remult-middleware.d.ts +2 -0
  14. package/remult-middleware.js +70 -0
  15. package/server/register-actions-on-server.d.ts +3 -0
  16. package/server/register-actions-on-server.js +50 -0
  17. package/server/register-entities-on-server.d.ts +3 -0
  18. package/server/register-entities-on-server.js +19 -0
  19. package/src/backend-tests/backend-database-test-setup.backend-spec.js +10 -0
  20. package/{esm/core/src → src}/backend-tests/my-test.backend-spec.d.ts +1 -1
  21. package/src/backend-tests/my-test.backend-spec.js +217 -0
  22. package/src/backend-tests/test-http-server.backend-spec.d.ts +6 -0
  23. package/src/backend-tests/test-http-server.backend-spec.js +342 -0
  24. package/src/id-entity.d.ts +4 -0
  25. package/src/id-entity.js +17 -0
  26. package/src/remult3/RepositoryImplementation.js +15 -13
  27. package/src/shared-tests/db-tests.db-tests.js +64 -0
  28. package/{esm/core/src/valueConverters.d.ts → valueConverters.d.ts} +12 -13
  29. package/valueConverters.js +168 -0
  30. package/esm/angular/interfaces/index.d.ts +0 -1
  31. package/esm/angular/interfaces/index.js +0 -1
  32. package/esm/angular/interfaces/src/column-collection.d.ts +0 -70
  33. package/esm/angular/interfaces/src/column-collection.js +0 -341
  34. package/esm/angular/interfaces/src/data-area-settings.d.ts +0 -15
  35. package/esm/angular/interfaces/src/data-area-settings.js +0 -35
  36. package/esm/angular/interfaces/src/data-control-interfaces.d.ts +0 -36
  37. package/esm/angular/interfaces/src/data-control-interfaces.js +0 -57
  38. package/esm/angular/interfaces/src/dataList.d.ts +0 -13
  39. package/esm/angular/interfaces/src/dataList.js +0 -42
  40. package/esm/angular/interfaces/src/filter-helper.d.ts +0 -13
  41. package/esm/angular/interfaces/src/filter-helper.js +0 -59
  42. package/esm/angular/interfaces/src/grid-settings.d.ts +0 -145
  43. package/esm/angular/interfaces/src/grid-settings.js +0 -387
  44. package/esm/angular/interfaces/src/public_api.d.ts +0 -4
  45. package/esm/angular/interfaces/src/public_api.js +0 -4
  46. package/esm/angular/src/angular/RemultAngularPluginsService.d.ts +0 -4
  47. package/esm/angular/src/angular/RemultAngularPluginsService.js +0 -3
  48. package/esm/angular/src/angular/data-control/data-control2.component.d.ts +0 -49
  49. package/esm/angular/src/angular/data-control/data-control2.component.js +0 -138
  50. package/esm/core/SseSubscriptionServer.d.ts +0 -33
  51. package/esm/core/SseSubscriptionServer.js +0 -107
  52. package/esm/core/assign.d.ts +0 -1
  53. package/esm/core/assign.js +0 -5
  54. package/esm/core/classType.d.ts +0 -3
  55. package/esm/core/classType.js +0 -1
  56. package/esm/core/index.d.ts +0 -27
  57. package/esm/core/index.js +0 -25
  58. package/esm/core/inputTypes.d.ts +0 -9
  59. package/esm/core/inputTypes.js +0 -9
  60. package/esm/core/live-query/data-provider-live-query-storage.d.ts +0 -22
  61. package/esm/core/live-query/data-provider-live-query-storage.js +0 -71
  62. package/esm/core/postgres/index.d.ts +0 -2
  63. package/esm/core/postgres/index.js +0 -2
  64. package/esm/core/postgres/postgres-data-provider.d.ts +0 -36
  65. package/esm/core/postgres/postgres-data-provider.js +0 -120
  66. package/esm/core/postgres/schema-builder.d.ts +0 -17
  67. package/esm/core/postgres/schema-builder.js +0 -153
  68. package/esm/core/remult-fresh.d.ts +0 -17
  69. package/esm/core/remult-fresh.js +0 -29
  70. package/esm/core/remult-knex/index.d.ts +0 -30
  71. package/esm/core/remult-knex/index.js +0 -446
  72. package/esm/core/remult-mongo.d.ts +0 -24
  73. package/esm/core/remult-mongo.js +0 -254
  74. package/esm/core/server/JsonEntityFileStorage.d.ts +0 -10
  75. package/esm/core/server/JsonEntityFileStorage.js +0 -25
  76. package/esm/core/server/core.d.ts +0 -4
  77. package/esm/core/server/core.js +0 -4
  78. package/esm/core/server/expressBridge.d.ts +0 -182
  79. package/esm/core/server/expressBridge.js +0 -938
  80. package/esm/core/server/index.d.ts +0 -6
  81. package/esm/core/server/index.js +0 -9
  82. package/esm/core/server/initAsyncHooks.d.ts +0 -1
  83. package/esm/core/server/initAsyncHooks.js +0 -9
  84. package/esm/core/server/initDataProvider.d.ts +0 -2
  85. package/esm/core/server/initDataProvider.js +0 -14
  86. package/esm/core/src/__EntityValueProvider.d.ts +0 -11
  87. package/esm/core/src/__EntityValueProvider.js +0 -1
  88. package/esm/core/src/__RowsOfDataForTesting.d.ts +0 -3
  89. package/esm/core/src/__RowsOfDataForTesting.js +0 -1
  90. package/esm/core/src/backend-tests/backend-database-test-setup.backend-spec.d.ts +0 -6
  91. package/esm/core/src/backend-tests/backend-database-test-setup.backend-spec.js +0 -147
  92. package/esm/core/src/backend-tests/my-test.backend-spec.js +0 -197
  93. package/esm/core/src/backend-tests/test-http-server.backend-spec.d.ts +0 -1
  94. package/esm/core/src/backend-tests/test-http-server.backend-spec.js +0 -167
  95. package/esm/core/src/buildRestDataProvider.d.ts +0 -31
  96. package/esm/core/src/buildRestDataProvider.js +0 -113
  97. package/esm/core/src/column-interfaces.d.ts +0 -154
  98. package/esm/core/src/column-interfaces.js +0 -7
  99. package/esm/core/src/column.d.ts +0 -58
  100. package/esm/core/src/column.js +0 -174
  101. package/esm/core/src/context.d.ts +0 -134
  102. package/esm/core/src/context.js +0 -286
  103. package/esm/core/src/data-api.d.ts +0 -39
  104. package/esm/core/src/data-api.js +0 -279
  105. package/esm/core/src/data-interfaces.d.ts +0 -41
  106. package/esm/core/src/data-interfaces.js +0 -12
  107. package/esm/core/src/data-providers/array-entity-data-provider.d.ts +0 -22
  108. package/esm/core/src/data-providers/array-entity-data-provider.js +0 -252
  109. package/esm/core/src/data-providers/in-memory-database.d.ts +0 -9
  110. package/esm/core/src/data-providers/in-memory-database.js +0 -14
  111. package/esm/core/src/data-providers/json-data-provider.d.ts +0 -12
  112. package/esm/core/src/data-providers/json-data-provider.js +0 -55
  113. package/esm/core/src/data-providers/rest-data-provider.d.ts +0 -49
  114. package/esm/core/src/data-providers/rest-data-provider.js +0 -256
  115. package/esm/core/src/data-providers/sql-database.d.ts +0 -33
  116. package/esm/core/src/data-providers/sql-database.js +0 -384
  117. package/esm/core/src/data-providers/web-sql-data-provider.d.ts +0 -24
  118. package/esm/core/src/data-providers/web-sql-data-provider.js +0 -143
  119. package/esm/core/src/entity.d.ts +0 -91
  120. package/esm/core/src/entity.js +0 -1
  121. package/esm/core/src/filter/filter-consumer-bridge-to-sql-request.d.ts +0 -50
  122. package/esm/core/src/filter/filter-consumer-bridge-to-sql-request.js +0 -150
  123. package/esm/core/src/filter/filter-consumer-bridge-to-url-builder.d.ts +0 -1
  124. package/esm/core/src/filter/filter-consumer-bridge-to-url-builder.js +0 -1
  125. package/esm/core/src/filter/filter-interfaces.d.ts +0 -85
  126. package/esm/core/src/filter/filter-interfaces.js +0 -477
  127. package/esm/core/src/live-query/LiveQueryClient.d.ts +0 -20
  128. package/esm/core/src/live-query/LiveQueryClient.js +0 -188
  129. package/esm/core/src/live-query/SseSubscriptionClient.d.ts +0 -5
  130. package/esm/core/src/live-query/SseSubscriptionClient.js +0 -86
  131. package/esm/core/src/live-query/SubscriptionChannel.d.ts +0 -72
  132. package/esm/core/src/live-query/SubscriptionChannel.js +0 -123
  133. package/esm/core/src/live-query/SubscriptionServer.d.ts +0 -53
  134. package/esm/core/src/live-query/SubscriptionServer.js +0 -111
  135. package/esm/core/src/live-query/live-query-tests.spec.d.ts +0 -6
  136. package/esm/core/src/live-query/live-query-tests.spec.js +0 -952
  137. package/esm/core/src/remult-proxy.d.ts +0 -35
  138. package/esm/core/src/remult-proxy.js +0 -113
  139. package/esm/core/src/remult3/DecoratorReplacer.d.ts +0 -10
  140. package/esm/core/src/remult3/DecoratorReplacer.js +0 -20
  141. package/esm/core/src/remult3/RepositoryImplementation.d.ts +0 -355
  142. package/esm/core/src/remult3/RepositoryImplementation.js +0 -2109
  143. package/esm/core/src/remult3/index.d.ts +0 -2
  144. package/esm/core/src/remult3/index.js +0 -2
  145. package/esm/core/src/remult3/remult3.d.ts +0 -395
  146. package/esm/core/src/remult3/remult3.js +0 -2
  147. package/esm/core/src/server-action.d.ts +0 -81
  148. package/esm/core/src/server-action.js +0 -394
  149. package/esm/core/src/shared-tests/db-tests-setup.d.ts +0 -32
  150. package/esm/core/src/shared-tests/db-tests-setup.js +0 -78
  151. package/esm/core/src/shared-tests/db-tests.db-tests.d.ts +0 -25
  152. package/esm/core/src/shared-tests/db-tests.db-tests.js +0 -810
  153. package/esm/core/src/shared-tests/deleteAll.d.ts +0 -2
  154. package/esm/core/src/shared-tests/deleteAll.js +0 -4
  155. package/esm/core/src/shared-tests/entityWithValidations.d.ts +0 -14
  156. package/esm/core/src/shared-tests/entityWithValidations.js +0 -43
  157. package/esm/core/src/shared-tests/index.d.ts +0 -4
  158. package/esm/core/src/shared-tests/index.js +0 -4
  159. package/esm/core/src/shared-tests/test-custom-id-column.spec.d.ts +0 -1
  160. package/esm/core/src/shared-tests/test-custom-id-column.spec.js +0 -67
  161. package/esm/core/src/shared-tests/test-special-value.spec.d.ts +0 -10
  162. package/esm/core/src/shared-tests/test-special-value.spec.js +0 -73
  163. package/esm/core/src/shared-tests/test-update-with-null.spec.d.ts +0 -1
  164. package/esm/core/src/shared-tests/test-update-with-null.spec.js +0 -31
  165. package/esm/core/src/sort.d.ts +0 -16
  166. package/esm/core/src/sort.js +0 -103
  167. package/esm/core/src/sql-command.d.ts +0 -19
  168. package/esm/core/src/sql-command.js +0 -1
  169. package/esm/core/src/test.d.ts +0 -3
  170. package/esm/core/src/test.js +0 -12
  171. package/esm/core/src/tests/Done.d.ts +0 -5
  172. package/esm/core/src/tests/Done.js +0 -9
  173. package/esm/core/src/tests/RowProvider.spec.d.ts +0 -16
  174. package/esm/core/src/tests/RowProvider.spec.js +0 -631
  175. package/esm/core/src/tests/TestDataApiResponse.d.ts +0 -10
  176. package/esm/core/src/tests/TestDataApiResponse.js +0 -22
  177. package/esm/core/src/tests/basicRowFunctionality.spec.d.ts +0 -8
  178. package/esm/core/src/tests/basicRowFunctionality.spec.js +0 -2103
  179. package/esm/core/src/tests/c.d.ts +0 -8
  180. package/esm/core/src/tests/c.js +0 -13
  181. package/esm/core/src/tests/createData.d.ts +0 -7
  182. package/esm/core/src/tests/createData.js +0 -22
  183. package/esm/core/src/tests/d.d.ts +0 -6
  184. package/esm/core/src/tests/d.js +0 -11
  185. package/esm/core/src/tests/dWithPrefilter.d.ts +0 -7
  186. package/esm/core/src/tests/dWithPrefilter.js +0 -18
  187. package/esm/core/src/tests/entityForCustomFilter.d.ts +0 -16
  188. package/esm/core/src/tests/entityForCustomFilter.js +0 -33
  189. package/esm/core/src/tests/entityWithValidationsOnColumn.d.ts +0 -5
  190. package/esm/core/src/tests/entityWithValidationsOnColumn.js +0 -13
  191. package/esm/core/src/tests/frontend-database-tests-setup.spec.d.ts +0 -4
  192. package/esm/core/src/tests/frontend-database-tests-setup.spec.js +0 -37
  193. package/esm/core/src/tests/h.d.ts +0 -6
  194. package/esm/core/src/tests/h.js +0 -24
  195. package/esm/core/src/tests/remult-3-basic-tests.spec.d.ts +0 -1
  196. package/esm/core/src/tests/remult-3-basic-tests.spec.js +0 -236
  197. package/esm/core/src/tests/remult-3-entities.d.ts +0 -23
  198. package/esm/core/src/tests/remult-3-entities.js +0 -39
  199. package/esm/core/src/tests/tasks.d.ts +0 -6
  200. package/esm/core/src/tests/tasks.js +0 -10
  201. package/esm/core/src/tests/test-context-as-storage.spec.d.ts +0 -0
  202. package/esm/core/src/tests/test-context-as-storage.spec.js +0 -1
  203. package/esm/core/src/tests/test-data-api/predefined-filter.spec.d.ts +0 -1
  204. package/esm/core/src/tests/test-data-api/predefined-filter.spec.js +0 -389
  205. package/esm/core/src/tests/test-data-api/test-put-with-validation.spec.d.ts +0 -5
  206. package/esm/core/src/tests/test-data-api/test-put-with-validation.spec.js +0 -152
  207. package/esm/core/src/tests/test-decorator-precedence.spec.d.ts +0 -1
  208. package/esm/core/src/tests/test-decorator-precedence.spec.js +0 -38
  209. package/esm/core/src/tests/test-default-value.spec.d.ts +0 -1
  210. package/esm/core/src/tests/test-default-value.spec.js +0 -33
  211. package/esm/core/src/tests/test-entity-inheritance.spec.d.ts +0 -14
  212. package/esm/core/src/tests/test-entity-inheritance.spec.js +0 -82
  213. package/esm/core/src/tests/test-exceptions.spec.d.ts +0 -1
  214. package/esm/core/src/tests/test-exceptions.spec.js +0 -375
  215. package/esm/core/src/tests/test-json.spec.d.ts +0 -1
  216. package/esm/core/src/tests/test-json.spec.js +0 -115
  217. package/esm/core/src/tests/test-many-to-one-relation-in-entity.spec.d.ts +0 -9
  218. package/esm/core/src/tests/test-many-to-one-relation-in-entity.spec.js +0 -809
  219. package/esm/core/src/tests/test-non-active-record.spec.d.ts +0 -1
  220. package/esm/core/src/tests/test-non-active-record.spec.js +0 -66
  221. package/esm/core/src/tests/test-object-column.spec.d.ts +0 -1
  222. package/esm/core/src/tests/test-object-column.spec.js +0 -189
  223. package/esm/core/src/tests/test-paged-foreach.spec.d.ts +0 -1
  224. package/esm/core/src/tests/test-paged-foreach.spec.js +0 -328
  225. package/esm/core/src/tests/test-remult-angular.spec.d.ts +0 -1
  226. package/esm/core/src/tests/test-remult-angular.spec.js +0 -23
  227. package/esm/core/src/tests/test-server-controller.spec.d.ts +0 -7
  228. package/esm/core/src/tests/test-server-controller.spec.js +0 -489
  229. package/esm/core/src/tests/test-server-expressions.spec.d.ts +0 -1
  230. package/esm/core/src/tests/test-server-expressions.spec.js +0 -178
  231. package/esm/core/src/tests/test-server-method-on-entity.spec.d.ts +0 -1
  232. package/esm/core/src/tests/test-server-method-on-entity.spec.js +0 -306
  233. package/esm/core/src/tests/test-sql-expression.spec.d.ts +0 -5
  234. package/esm/core/src/tests/test-sql-expression.spec.js +0 -205
  235. package/esm/core/src/tests/test-sql.spec.d.ts +0 -1
  236. package/esm/core/src/tests/test-sql.spec.js +0 -170
  237. package/esm/core/src/tests/test-subscribe.spec.d.ts +0 -1
  238. package/esm/core/src/tests/test-subscribe.spec.js +0 -135
  239. package/esm/core/src/tests/test-type-recovery.spec.d.ts +0 -1
  240. package/esm/core/src/tests/test-type-recovery.spec.js +0 -49
  241. package/esm/core/src/tests/test-where-api.spec.d.ts +0 -1
  242. package/esm/core/src/tests/test-where-api.spec.js +0 -434
  243. package/esm/core/src/tests/testHelper.spec.d.ts +0 -36
  244. package/esm/core/src/tests/testHelper.spec.js +0 -226
  245. package/esm/core/src/tests/testModel/models.d.ts +0 -16
  246. package/esm/core/src/tests/testModel/models.js +0 -25
  247. package/esm/core/src/validators.d.ts +0 -14
  248. package/esm/core/src/validators.js +0 -33
  249. package/esm/core/src/valueConverters.js +0 -197
  250. package/esm/core/urlBuilder.d.ts +0 -6
  251. package/esm/core/urlBuilder.js +0 -20
  252. package/esm/test-servers/shared/Task.d.ts +0 -9
  253. package/esm/test-servers/shared/Task.js +0 -32
  254. package/esm/test.d.ts +0 -5
  255. package/esm/test.js +0 -6
@@ -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;
@@ -3018,21 +3018,23 @@ function decorateColumnSettings(settings, remult) {
3018
3018
  isIdNumeric_1 =
3019
3019
  remult.repo(settings.valueType).metadata.idMetadata.field
3020
3020
  .valueType === Number;
3021
- try {
3022
- for (var _b = tslib_1.__values([
3023
- 'fieldTypeInDb',
3024
- ]), _c = _b.next(); !_c.done; _c = _b.next()) {
3025
- var key = _c.value;
3026
- //@ts-ignore
3027
- target[key] = valueConverters_1.ValueConverters.Integer[key];
3028
- }
3029
- }
3030
- catch (e_40_1) { e_40 = { error: e_40_1 }; }
3031
- finally {
3021
+ if (isIdNumeric_1) {
3032
3022
  try {
3033
- if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
3023
+ for (var _b = tslib_1.__values([
3024
+ 'fieldTypeInDb',
3025
+ ]), _c = _b.next(); !_c.done; _c = _b.next()) {
3026
+ var key = _c.value;
3027
+ //@ts-ignore
3028
+ target[key] = valueConverters_1.ValueConverters.Integer[key];
3029
+ }
3030
+ }
3031
+ catch (e_40_1) { e_40 = { error: e_40_1 }; }
3032
+ finally {
3033
+ try {
3034
+ if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
3035
+ }
3036
+ finally { if (e_40) throw e_40.error; }
3034
3037
  }
3035
- finally { if (e_40) throw e_40.error; }
3036
3038
  }
3037
3039
  }
3038
3040
  }