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
@@ -1,82 +0,0 @@
1
- import { InMemoryDataProvider } from "../..";
2
- import { Remult } from "../context";
3
- import { Entity, EntityBase, Fields } from "../remult3";
4
- @Entity("parent", {
5
- saving: async (self) => {
6
- await new Promise((r) => setTimeout(() => {
7
- r({});
8
- }, 10));
9
- self.myField += ",parent";
10
- }
11
- })
12
- export class parent extends EntityBase {
13
- @Fields.integer()
14
- id = 0;
15
- @Fields.string()
16
- myField = '';
17
- @Fields.string({ saving: self => self.autoSavedField = "auto" })
18
- autoSavedField = '';
19
- }
20
- @Entity("child", {
21
- saving: async (self) => {
22
- await new Promise((r) => setTimeout(() => {
23
- r({});
24
- }, 10));
25
- self.myField += "child";
26
- }
27
- })
28
- export class child extends parent {
29
- }
30
- @Entity("child2", {})
31
- export class child2 extends parent {
32
- }
33
- it("saving works well ", async () => {
34
- let remult = new Remult(new InMemoryDataProvider());
35
- let x = await remult.repo(child).create().save();
36
- expect(x.myField).toBe("child,parent");
37
- expect(x.autoSavedField).toBe("auto");
38
- });
39
- it("saving works well when child doesnt have saving", async () => {
40
- let remult = new Remult(new InMemoryDataProvider());
41
- let x = await remult.repo(child2).create().save();
42
- expect(x.myField).toBe(",parent");
43
- expect(x.autoSavedField).toBe("auto");
44
- });
45
- it("test saving of delete", async () => {
46
- let remult = new Remult(new InMemoryDataProvider());
47
- let x = await remult.repo(child).create().save();
48
- await x.delete();
49
- let done = false;
50
- try {
51
- await x.save();
52
- done = true;
53
- }
54
- catch (err) { }
55
- expect(done).toBe(false);
56
- });
57
- @Entity("error", {
58
- saving: async (self) => {
59
- if (!self.isNew() && self.name == '2') {
60
- self.name = '3';
61
- await self.save();
62
- }
63
- }
64
- })
65
- export class anError extends EntityBase {
66
- @Fields.integer()
67
- id = 0;
68
- @Fields.string()
69
- name = '';
70
- }
71
- it("test error on save within saving", async () => {
72
- let remult = new Remult(new InMemoryDataProvider());
73
- let x = await remult.repo(anError).create({ id: 1, name: '1' }).save();
74
- x.name = '2';
75
- let done = false;
76
- try {
77
- await x.save();
78
- done = true;
79
- }
80
- catch (err) { }
81
- expect(done).toBe(false);
82
- });
@@ -1 +0,0 @@
1
- export {};
@@ -1,375 +0,0 @@
1
- import { Done } from "./Done";
2
- import { Remult } from '../context';
3
- import { InMemoryDataProvider } from '../data-providers/in-memory-database';
4
- import { Entity, EntityBase, Fields } from '../remult3';
5
- import { processHttpException, toPromise } from "../buildRestDataProvider";
6
- describe("test exception", () => {
7
- it("test save exception", async () => {
8
- var mem = new InMemoryDataProvider();
9
- var c = new Remult();
10
- c.dataProvider = ({
11
- getEntityDataProvider: e => {
12
- let r = mem.getEntityDataProvider(e);
13
- return {
14
- count: undefined, delete: undefined, find: undefined, insert: async (x) => {
15
- return toPromise(new Promise((res, err) => {
16
- err({
17
- error: {
18
- message: 'error',
19
- modelState: {
20
- id: 'error for id'
21
- }
22
- }
23
- });
24
- }));
25
- }, update: undefined
26
- };
27
- },
28
- transaction: undefined
29
- });
30
- var ok = new Done();
31
- let type = class extends EntityBase {
32
- id;
33
- };
34
- Entity('test')(type);
35
- Fields.string()(type.prototype, "id");
36
- var x = c.repo(type).create();
37
- try {
38
- await x._.save();
39
- }
40
- catch (err) {
41
- expect(x._.fields.id.error).toBe('error for id');
42
- expect(err.message).toBe("error");
43
- expect(err.modelState.id).toBe('error for id');
44
- ok.ok();
45
- }
46
- ok.test();
47
- });
48
- });
49
- function log(what) {
50
- return what;
51
- }
52
- describe("angular http client exception ", () => {
53
- it("waiting for proxy to restart", async () => {
54
- let err = await processHttpException({
55
- "headers": {
56
- "normalizedNames": {},
57
- "lazyUpdate": null
58
- },
59
- "status": 504,
60
- "statusText": "Gateway Timeout",
61
- "url": "http://localhost:4201/api/stam",
62
- "ok": false,
63
- "name": "HttpErrorResponse",
64
- "message": "Http failure response for http://localhost:4201/api/stam: 504 Gateway Timeout",
65
- "error": "Error occured while trying to proxy to: localhost:4201/api/stam"
66
- });
67
- expect(err).toEqual({
68
- "message": "Error occured while trying to proxy to: localhost:4201/api/stam",
69
- "httpStatusCode": 504
70
- });
71
- ;
72
- });
73
- it("network disconnect", async () => {
74
- let err = await processHttpException({
75
- "headers": {
76
- "normalizedNames": {},
77
- "lazyUpdate": null,
78
- "headers": {}
79
- },
80
- "status": 0,
81
- "statusText": "Unknown Error",
82
- "url": "api/stam",
83
- "ok": false,
84
- "name": "HttpErrorResponse",
85
- "message": "Http failure response for api/stam: 0 Unknown Error",
86
- "error": {
87
- "isTrusted": true
88
- }
89
- });
90
- expect(err).toEqual({
91
- message: "Network Error",
92
- "httpStatusCode": 0
93
- });
94
- });
95
- it("Forbidden", async () => {
96
- let err = await processHttpException({
97
- "headers": {
98
- "normalizedNames": {},
99
- "lazyUpdate": null
100
- },
101
- "status": 403,
102
- "statusText": "Forbidden",
103
- "url": "http://localhost:4201/api/stam",
104
- "ok": false,
105
- "name": "HttpErrorResponse",
106
- "message": "Http failure response for http://localhost:4201/api/stam: 403 Forbidden",
107
- "error": "Forbidden"
108
- });
109
- expect(err).toEqual({
110
- "message": "Forbidden",
111
- "httpStatusCode": 403
112
- });
113
- });
114
- it("syntax error", async () => {
115
- let err = await processHttpException({
116
- "headers": {
117
- "normalizedNames": {},
118
- "lazyUpdate": null
119
- },
120
- "status": 400,
121
- "statusText": "Bad Request",
122
- "url": "http://localhost:4201/api/stam",
123
- "ok": false,
124
- "name": "HttpErrorResponse",
125
- "message": "Http failure response for http://localhost:4201/api/stam: 400 Bad Request",
126
- "error": {
127
- "message": "Cannot read property 'toString' of undefined",
128
- "stack": "TypeError: Cannot read property 'toString' of undefined\n at Object.saving (C:\\repos\\radweb\\dist\\test-angular\\test-angular\\src\\app\\products-test\\products.component.js:50:19)\n at rowHelperImplementation.<anonymous> (C:\\repos\\radweb\\dist\\test-angular\\core\\src\\remult3\\RepositoryImplementation.js:648:44)\n at Generator.next (<anonymous>)\n at fulfilled (C:\\repos\\radweb\\node_modules\\tslib\\tslib.js:114:62)\n at processTicksAndRejections (internal/process/task_queues.js:95:5)"
129
- }
130
- });
131
- expect(err.message).toBe("Cannot read property 'toString' of undefined");
132
- expect(err.stack).toContain("toString");
133
- });
134
- it("validation error", async () => {
135
- let err = await processHttpException({
136
- "headers": {
137
- "normalizedNames": {},
138
- "lazyUpdate": null
139
- },
140
- "status": 400,
141
- "statusText": "Bad Request",
142
- "url": "http://localhost:4201/api/stam",
143
- "ok": false,
144
- "name": "HttpErrorResponse",
145
- "message": "Http failure response for http://localhost:4201/api/stam: 400 Bad Request",
146
- "error": {
147
- "modelState": {
148
- "name": "name error"
149
- },
150
- "message": "Name: name error"
151
- }
152
- });
153
- expect(err).toEqual({
154
- "modelState": {
155
- "name": "name error"
156
- },
157
- "message": "Name: name error",
158
- "httpStatusCode": 400
159
- });
160
- });
161
- });
162
- describe("fetch client exception ", () => {
163
- it("waiting for proxy to restart", async () => {
164
- let err = await processHttpException({
165
- "message": "Request failed with status code 504",
166
- "name": "Error",
167
- "stack": "Error: Request failed with status code 504\n at createError (http://localhost:4201/vendor.js:127382:15)\n at settle (http://localhost:4201/vendor.js:94395:12)\n at XMLHttpRequest.onloadend [as __zone_symbol__ON_PROPERTYloadend] (http://localhost:4201/vendor.js:42269:7)\n at XMLHttpRequest.wrapFn (http://localhost:4201/polyfills.js:12099:39)\n at ZoneDelegate.invokeTask (http://localhost:4201/polyfills.js:11742:31)\n at Object.onInvokeTask (http://localhost:4201/vendor.js:73020:33)\n at ZoneDelegate.invokeTask (http://localhost:4201/polyfills.js:11741:60)\n at Zone.runTask (http://localhost:4201/polyfills.js:11514:47)\n at ZoneTask.invokeTask [as invoke] (http://localhost:4201/polyfills.js:11823:34)\n at invokeTask (http://localhost:4201/polyfills.js:12936:14)",
168
- "isAxiosError": true,
169
- "response": {
170
- "data": "Error occured while trying to proxy to: localhost:4201/api/stam"
171
- },
172
- "config": {
173
- "transitional": {
174
- "silentJSONParsing": true,
175
- "forcedJSONParsing": true,
176
- "clarifyTimeoutError": false
177
- },
178
- "transformRequest": [
179
- null
180
- ],
181
- "transformResponse": [
182
- null
183
- ],
184
- "timeout": 0,
185
- "xsrfCookieName": "XSRF-TOKEN",
186
- "xsrfHeaderName": "X-XSRF-TOKEN",
187
- "maxContentLength": -1,
188
- "maxBodyLength": -1,
189
- "headers": {
190
- "Accept": "application/json, text/plain, */*",
191
- "Content-Type": "application/json"
192
- },
193
- "method": "post",
194
- "url": "api/stam",
195
- "data": "{\"id\":\"a0637d3c-405c-4d79-a473-a7d043aaebfd\",\"name\":\"noam\"}"
196
- },
197
- "status": 504
198
- });
199
- expect(err).toEqual({
200
- "message": "Error occured while trying to proxy to: localhost:4201/api/stam",
201
- "httpStatusCode": 504
202
- });
203
- ;
204
- });
205
- it("network disconnect", async () => {
206
- let err = await processHttpException({
207
- "message": "Network Error",
208
- "name": "Error",
209
- "stack": "Error: Network Error\n at createError (http://localhost:4201/vendor.js:127382:15)\n at XMLHttpRequest.handleError [as __zone_symbol__ON_PROPERTYerror] (http://localhost:4201/vendor.js:42320:14)\n at XMLHttpRequest.wrapFn (http://localhost:4201/polyfills.js:12099:39)\n at ZoneDelegate.invokeTask (http://localhost:4201/polyfills.js:11742:31)\n at Object.onInvokeTask (http://localhost:4201/vendor.js:73020:33)\n at ZoneDelegate.invokeTask (http://localhost:4201/polyfills.js:11741:60)\n at Zone.runTask (http://localhost:4201/polyfills.js:11514:47)\n at ZoneTask.invokeTask [as invoke] (http://localhost:4201/polyfills.js:11823:34)\n at invokeTask (http://localhost:4201/polyfills.js:12936:14)\n at XMLHttpRequest.globalZoneAwareCallback (http://localhost:4201/polyfills.js:12962:17)",
210
- "isAxiosError": true,
211
- "response": undefined,
212
- "config": {
213
- "transitional": {
214
- "silentJSONParsing": true,
215
- "forcedJSONParsing": true,
216
- "clarifyTimeoutError": false
217
- },
218
- "transformRequest": [
219
- null
220
- ],
221
- "transformResponse": [
222
- null
223
- ],
224
- "timeout": 0,
225
- "xsrfCookieName": "XSRF-TOKEN",
226
- "xsrfHeaderName": "X-XSRF-TOKEN",
227
- "maxContentLength": -1,
228
- "maxBodyLength": -1,
229
- "headers": {
230
- "Accept": "application/json, text/plain, */*",
231
- "Content-Type": "application/json"
232
- },
233
- "method": "post",
234
- "url": "api/stam",
235
- "data": "{\"id\":\"fa1cf12e-7049-4b95-bf81-665de4a263bb\",\"name\":\"noam\"}"
236
- },
237
- "status": null
238
- });
239
- expect(err).toEqual({
240
- "message": "Network Error"
241
- });
242
- });
243
- it("Forbidden", async () => {
244
- let err = await processHttpException({
245
- "message": "Request failed with status code 403",
246
- "name": "Error",
247
- "stack": "Error: Request failed with status code 403\n at createError (http://localhost:4201/vendor.js:127382:15)\n at settle (http://localhost:4201/vendor.js:94395:12)\n at XMLHttpRequest.onloadend [as __zone_symbol__ON_PROPERTYloadend] (http://localhost:4201/vendor.js:42269:7)\n at XMLHttpRequest.wrapFn (http://localhost:4201/polyfills.js:12099:39)\n at ZoneDelegate.invokeTask (http://localhost:4201/polyfills.js:11742:31)\n at Object.onInvokeTask (http://localhost:4201/vendor.js:73020:33)\n at ZoneDelegate.invokeTask (http://localhost:4201/polyfills.js:11741:60)\n at Zone.runTask (http://localhost:4201/polyfills.js:11514:47)\n at ZoneTask.invokeTask [as invoke] (http://localhost:4201/polyfills.js:11823:34)\n at invokeTask (http://localhost:4201/polyfills.js:12936:14)",
248
- "isAxiosError": true,
249
- "response": {
250
- "data": "Forbidden"
251
- },
252
- "config": {
253
- "transitional": {
254
- "silentJSONParsing": true,
255
- "forcedJSONParsing": true,
256
- "clarifyTimeoutError": false
257
- },
258
- "transformRequest": [
259
- null
260
- ],
261
- "transformResponse": [
262
- null
263
- ],
264
- "timeout": 0,
265
- "xsrfCookieName": "XSRF-TOKEN",
266
- "xsrfHeaderName": "X-XSRF-TOKEN",
267
- "maxContentLength": -1,
268
- "maxBodyLength": -1,
269
- "headers": {
270
- "Accept": "application/json, text/plain, */*",
271
- "Content-Type": "application/json"
272
- },
273
- "method": "post",
274
- "url": "api/stam",
275
- "data": "{\"id\":\"6a896b08-de4a-451a-9905-bf17c7690f78\",\"name\":\"noam\"}"
276
- },
277
- "status": 403
278
- });
279
- expect(err).toEqual({
280
- "message": "Forbidden",
281
- "httpStatusCode": 403
282
- });
283
- });
284
- it("syntax error", async () => {
285
- let err = await processHttpException({
286
- "message": "Request failed with status code 400",
287
- "name": "Error",
288
- "stack": "Error: Request failed with status code 400\n at createError (http://localhost:4201/vendor.js:127382:15)\n at settle (http://localhost:4201/vendor.js:94395:12)\n at XMLHttpRequest.onloadend [as __zone_symbol__ON_PROPERTYloadend] (http://localhost:4201/vendor.js:42269:7)\n at XMLHttpRequest.wrapFn (http://localhost:4201/polyfills.js:12099:39)\n at ZoneDelegate.invokeTask (http://localhost:4201/polyfills.js:11742:31)\n at Object.onInvokeTask (http://localhost:4201/vendor.js:73020:33)\n at ZoneDelegate.invokeTask (http://localhost:4201/polyfills.js:11741:60)\n at Zone.runTask (http://localhost:4201/polyfills.js:11514:47)\n at ZoneTask.invokeTask [as invoke] (http://localhost:4201/polyfills.js:11823:34)\n at invokeTask (http://localhost:4201/polyfills.js:12936:14)",
289
- "isAxiosError": true,
290
- "response": {
291
- "data": {
292
- "message": "Cannot read property 'toString' of undefined",
293
- "stack": "TypeError: Cannot read property 'toString' of undefined\n at Object.saving (C:\\repos\\radweb\\dist\\test-angular\\test-angular\\src\\app\\products-test\\products.component.js:51:19)\n at rowHelperImplementation.<anonymous> (C:\\repos\\radweb\\dist\\test-angular\\core\\src\\remult3\\RepositoryImplementation.js:648:44)\n at Generator.next (<anonymous>)\n at fulfilled (C:\\repos\\radweb\\node_modules\\tslib\\tslib.js:114:62)\n at processTicksAndRejections (internal/process/task_queues.js:95:5)"
294
- }
295
- },
296
- "config": {
297
- "transitional": {
298
- "silentJSONParsing": true,
299
- "forcedJSONParsing": true,
300
- "clarifyTimeoutError": false
301
- },
302
- "transformRequest": [
303
- null
304
- ],
305
- "transformResponse": [
306
- null
307
- ],
308
- "timeout": 0,
309
- "xsrfCookieName": "XSRF-TOKEN",
310
- "xsrfHeaderName": "X-XSRF-TOKEN",
311
- "maxContentLength": -1,
312
- "maxBodyLength": -1,
313
- "headers": {
314
- "Accept": "application/json, text/plain, */*",
315
- "Content-Type": "application/json"
316
- },
317
- "method": "post",
318
- "url": "api/stam",
319
- "data": "{\"id\":\"e53e981d-4339-4d92-bb6b-18c6dfb3a9bb\",\"name\":\"noam\"}"
320
- },
321
- "status": 400
322
- });
323
- expect(err.message).toBe("Cannot read property 'toString' of undefined");
324
- expect(err.stack).toContain("toString");
325
- });
326
- it("validation error", async () => {
327
- let err = await processHttpException({
328
- "message": "Request failed with status code 400",
329
- "name": "Error",
330
- "stack": "Error: Request failed with status code 400\n at createError (http://localhost:4201/vendor.js:127382:15)\n at settle (http://localhost:4201/vendor.js:94395:12)\n at XMLHttpRequest.onloadend [as __zone_symbol__ON_PROPERTYloadend] (http://localhost:4201/vendor.js:42269:7)\n at XMLHttpRequest.wrapFn (http://localhost:4201/polyfills.js:12099:39)\n at ZoneDelegate.invokeTask (http://localhost:4201/polyfills.js:11742:31)\n at Object.onInvokeTask (http://localhost:4201/vendor.js:73020:33)\n at ZoneDelegate.invokeTask (http://localhost:4201/polyfills.js:11741:60)\n at Zone.runTask (http://localhost:4201/polyfills.js:11514:47)\n at ZoneTask.invokeTask [as invoke] (http://localhost:4201/polyfills.js:11823:34)\n at invokeTask (http://localhost:4201/polyfills.js:12936:14)",
331
- "isAxiosError": true,
332
- "response": {
333
- "data": {
334
- "modelState": {
335
- "name": "name error"
336
- },
337
- "message": "Name: name error"
338
- }
339
- },
340
- "config": {
341
- "transitional": {
342
- "silentJSONParsing": true,
343
- "forcedJSONParsing": true,
344
- "clarifyTimeoutError": false
345
- },
346
- "transformRequest": [
347
- null
348
- ],
349
- "transformResponse": [
350
- null
351
- ],
352
- "timeout": 0,
353
- "xsrfCookieName": "XSRF-TOKEN",
354
- "xsrfHeaderName": "X-XSRF-TOKEN",
355
- "maxContentLength": -1,
356
- "maxBodyLength": -1,
357
- "headers": {
358
- "Accept": "application/json, text/plain, */*",
359
- "Content-Type": "application/json"
360
- },
361
- "method": "post",
362
- "url": "api/stam",
363
- "data": "{\"id\":\"d4c16ebf-5d9b-4eff-98cd-1c3f26d6aa08\",\"name\":\"noam\"}"
364
- },
365
- "status": 400
366
- });
367
- expect(err).toEqual({
368
- "modelState": {
369
- "name": "name error"
370
- },
371
- "message": "Name: name error",
372
- "httpStatusCode": 400
373
- });
374
- });
375
- });
@@ -1 +0,0 @@
1
- export {};
@@ -1,115 +0,0 @@
1
- import { TestDataApiResponse } from "./TestDataApiResponse";
2
- import { Done } from "./Done";
3
- import { Remult } from '../context';
4
- import { JsonDataProvider } from '../data-providers/json-data-provider';
5
- import { InMemoryDataProvider } from '../data-providers/in-memory-database';
6
- import { DataApi } from '../data-api';
7
- import { Categories as newCategories } from './remult-3-entities';
8
- import { Entity, EntityBase, Fields } from '../remult3';
9
- import { tasks } from './tasks';
10
- import { deleteAll } from "../shared-tests/deleteAll";
11
- @Entity('entityWithAutoId')
12
- class entityWithAutoId extends EntityBase {
13
- @Fields.autoIncrement()
14
- id;
15
- @Fields.string()
16
- name;
17
- }
18
- describe("test json database", () => {
19
- let db = new JsonDataProvider(localStorage);
20
- let remult = new Remult();
21
- remult.dataProvider = (db);
22
- async function deleteAll1() {
23
- await deleteAll(remult.repo(newCategories));
24
- }
25
- it("test auto increment", async () => {
26
- let remult = new Remult();
27
- remult.dataProvider = (new InMemoryDataProvider());
28
- let p = await remult.repo(entityWithAutoId).create({ name: 'a' }).save();
29
- expect(p.id).toBe(1);
30
- p = await remult.repo(entityWithAutoId).create({ name: 'b' }).save();
31
- expect(p.id).toBe(2);
32
- });
33
- it("test insert is in the correct order in the result array", async () => {
34
- const mem = new InMemoryDataProvider();
35
- const remult = new Remult(mem);
36
- await remult.repo(entityWithAutoId).insert([
37
- { name: 'a' },
38
- { name: 'b' },
39
- { name: 'c' }
40
- ]);
41
- expect(mem.rows[await remult.repo(entityWithAutoId).metadata.getDbName()]).toEqual([
42
- { id: 1, name: 'a' },
43
- { id: 2, name: 'b' },
44
- { id: 3, name: 'c' }
45
- ]);
46
- });
47
- it("test basics", async () => {
48
- await deleteAll1();
49
- expect(await remult.repo(newCategories).count()).toBe(0);
50
- let promisis = [];
51
- for (let index = 1; index < 4; index++) {
52
- let c = remult.repo(newCategories).create();
53
- c.id = index;
54
- c.categoryName = "noam" + index;
55
- promisis.push(c._.save());
56
- }
57
- await Promise.all(promisis);
58
- expect(await remult.repo(newCategories).count()).toBe(3, 'count');
59
- let cats = await remult.repo(newCategories).find();
60
- expect(cats.length).toBe(3);
61
- expect(cats[0].id).toBe(1);
62
- expect(cats[0].categoryName).toBe("noam1");
63
- });
64
- });
65
- describe("test tasks", () => {
66
- it("test tasks", async () => {
67
- let storage = '';
68
- let db = new JsonDataProvider({
69
- getItem: () => storage,
70
- setItem: (x, y) => storage = y
71
- });
72
- let cont = new Remult();
73
- cont.dataProvider = (db);
74
- let c = cont.repo(tasks);
75
- let t = c.create();
76
- t.id = 1;
77
- await t._.save();
78
- t = c.create();
79
- t.id = 2;
80
- t.completed = true;
81
- await t._.save();
82
- t = c.create();
83
- t.id = 3;
84
- t.completed = true;
85
- await t._.save();
86
- expect(await c.count({ completed: { $ne: true } })).toBe(1);
87
- expect(await c.count({ completed: true })).toBe(2);
88
- expect(await c.count({ completed: false })).toBe(1);
89
- var api = new DataApi(c, cont);
90
- let tr = new TestDataApiResponse();
91
- let d = new Done();
92
- tr.success = async (data) => {
93
- d.ok();
94
- expect(data.length).toBe(1);
95
- };
96
- await api.getArray(tr, {
97
- get: x => {
98
- if (x == 'completed.ne')
99
- return 'true';
100
- return undefined;
101
- }
102
- });
103
- d.test();
104
- });
105
- });
106
- it("test data api response fails on wrong answer", () => {
107
- var r = new TestDataApiResponse();
108
- r.progress(0.5);
109
- expect(() => r.created({})).toThrowError();
110
- expect(() => r.deleted()).toThrowError();
111
- expect(() => r.error({})).toThrowError();
112
- expect(() => r.forbidden()).toThrowError();
113
- expect(() => r.notFound()).toThrowError();
114
- expect(() => r.success({})).toThrowError();
115
- });
@@ -1,9 +0,0 @@
1
- import { EntityBase } from '../remult3';
2
- export type test<Type> = {
3
- [Properties in keyof Type]: Type[Properties];
4
- };
5
- export type test2<Type> = Partial<test<Type>>;
6
- export declare class testUpdateDate extends EntityBase {
7
- id: number;
8
- date: Date;
9
- }