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
@@ -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
- }