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,489 +0,0 @@
1
- import { ActionTestConfig, testAsIfOnBackend } from './testHelper.spec';
2
- import { Remult, isBackend } from '../context';
3
- import { prepareArgsToSend, Controller, BackendMethod } from '../server-action';
4
- import { Field, Entity, getFields, ValueListFieldType, Fields, IdEntity } from '../remult3';
5
- import { remult, RemultProxy } from '../remult-proxy';
6
- import { describeClass } from '../remult3/DecoratorReplacer';
7
- import { InMemoryDataProvider } from '../data-providers/in-memory-database';
8
- @ValueListFieldType()
9
- export class myType {
10
- what;
11
- static x = new myType((n) => 'x' + n);
12
- static y = new myType((n) => 'y' + n);
13
- id;
14
- constructor(what) {
15
- this.what = what;
16
- }
17
- }
18
- @Entity('testEntity')
19
- class testEntity extends IdEntity {
20
- @Fields.string()
21
- name;
22
- @BackendMethod({ allowed: false })
23
- async forbidden() {
24
- }
25
- }
26
- @Controller('1')
27
- class testBasics {
28
- remult;
29
- constructor(remult) {
30
- this.remult = remult;
31
- }
32
- @Fields.date()
33
- theDate;
34
- @Field(() => myType)
35
- myType;
36
- @Field(() => testEntity)
37
- myEntity;
38
- @BackendMethod({ allowed: true })
39
- async testDate() {
40
- return this.theDate.getFullYear();
41
- }
42
- @BackendMethod({ allowed: true })
43
- async testDataType(n) {
44
- return this.myType.what(n);
45
- }
46
- @BackendMethod({ allowed: false })
47
- async forbidden() {
48
- }
49
- @BackendMethod({ allowed: true })
50
- async sendEntityAsParamter() {
51
- return this.myEntity.name;
52
- }
53
- static test;
54
- @Fields.string({
55
- validate: (y, x) => {
56
- if (y.a == "errorc") {
57
- x.error = "error on client";
58
- }
59
- else if (y.a == "error on server" && isBackend()) {
60
- x.error = "error on server";
61
- }
62
- }
63
- })
64
- a;
65
- @BackendMethod({ allowed: true })
66
- async doIt() {
67
- let result = 'hello ' + this.a;
68
- this.a = 'yael';
69
- return {
70
- onServer: isBackend(),
71
- result
72
- };
73
- }
74
- @BackendMethod({ allowed: true })
75
- static async sf(name, remult) {
76
- return {
77
- onServer: isBackend(),
78
- result: 'hello ' + name
79
- };
80
- }
81
- @BackendMethod({ allowed: true })
82
- static async testDate(d) {
83
- return d.getFullYear();
84
- }
85
- @BackendMethod({ allowed: false })
86
- static async testForbidden2() {
87
- }
88
- @BackendMethod({ allowed: true })
89
- static async testDataType(d, n) {
90
- return d.what(n);
91
- }
92
- @BackendMethod({ allowed: true })
93
- static async getValFromServer(remult) {
94
- return (await remult.repo(testEntity).findFirst()).name;
95
- }
96
- static async staticBackendMethodWithoutDecorator() {
97
- return isBackend();
98
- }
99
- static async staticBackendMethodWithoutDecoratorWithRemult(remult) {
100
- return (await remult.repo(testEntity).findFirst()).name;
101
- }
102
- async backendMethodWithoutDecorator() {
103
- return isBackend();
104
- }
105
- async backendMethodWithoutDecoratorWithRemult(remult) {
106
- return (await remult.repo(testEntity).findFirst()).name + this.a;
107
- }
108
- @BackendMethod({ allowed: true })
109
- static async sendEntityAsParamter(entity) {
110
- if (entity === null)
111
- return "null";
112
- return entity.name;
113
- }
114
- @BackendMethod({ allowed: true })
115
- static async syntaxError() {
116
- let z = undefined;
117
- return z.toString();
118
- }
119
- @BackendMethod({ allowed: true })
120
- async syntaxError() {
121
- let z = undefined;
122
- return z.toString();
123
- }
124
- }
125
- describeClass(testBasics, undefined, undefined, {
126
- staticBackendMethodWithoutDecorator: BackendMethod({ allowed: true })
127
- });
128
- describeClass(testBasics, undefined, undefined, {
129
- staticBackendMethodWithoutDecoratorWithRemult: BackendMethod({ allowed: true, paramTypes: [Remult] })
130
- });
131
- describeClass(testBasics, undefined, {
132
- backendMethodWithoutDecorator: BackendMethod({ allowed: true })
133
- });
134
- describeClass(testBasics, undefined, {
135
- backendMethodWithoutDecoratorWithRemult: BackendMethod({ allowed: true, paramTypes: [Remult] })
136
- });
137
- class Stam {
138
- @BackendMethod({ allowed: false })
139
- static async testForbidden1() {
140
- console.log("I am in forbidden");
141
- }
142
- }
143
- describe("test Server Controller basics", () => {
144
- let c = new Remult();
145
- c.dataProvider = (ActionTestConfig.db);
146
- beforeEach(async (done) => {
147
- await Promise.all((await c.repo(testEntity).find()).map(x => x.delete()));
148
- done();
149
- });
150
- it("forbidden static backend", async () => {
151
- let ok = true;
152
- try {
153
- await Stam.testForbidden1();
154
- ok = false;
155
- }
156
- catch (err) {
157
- expect(err.httpStatusCode).toBe(403);
158
- }
159
- expect(ok).toBe(true);
160
- });
161
- it("forbidden static backend", async () => {
162
- let ok = true;
163
- try {
164
- await testBasics.testForbidden2();
165
- ok = false;
166
- }
167
- catch (err) {
168
- expect(err.httpStatusCode).toBe(403);
169
- }
170
- expect(ok).toBe(true);
171
- });
172
- it("forbidden static backend", async () => {
173
- let ok = true;
174
- try {
175
- await testBasics.testForbidden2();
176
- ok = false;
177
- }
178
- catch (err) {
179
- expect(err.httpStatusCode).toBe(403);
180
- }
181
- expect(ok).toBe(true);
182
- });
183
- it("forbidden backend", async () => {
184
- let ok = true;
185
- try {
186
- await new testBasics(c).forbidden();
187
- ok = false;
188
- }
189
- catch (err) {
190
- expect(err.httpStatusCode).toBe(403);
191
- }
192
- expect(ok).toBe(true);
193
- });
194
- it("forbidden entity", async () => {
195
- let ok = true;
196
- try {
197
- await remult.repo(testEntity).create().forbidden();
198
- ok = false;
199
- }
200
- catch (err) {
201
- expect(err.httpStatusCode).toBe(403);
202
- }
203
- expect(ok).toBe(true);
204
- });
205
- it("test error", async () => {
206
- try {
207
- await testBasics.syntaxError();
208
- }
209
- catch (err) {
210
- expect(err.message).toContain("Cannot read prop");
211
- }
212
- });
213
- it("test error server method", async () => {
214
- try {
215
- await new testBasics(c).syntaxError();
216
- }
217
- catch (err) {
218
- expect(err.message).toContain("Cannot read prop");
219
- }
220
- });
221
- it("send entity to server ", async () => {
222
- let e = await c.repo(testEntity).create({ name: 'test' }).save();
223
- expect(await testBasics.sendEntityAsParamter(e)).toBe('test');
224
- });
225
- it("send entity to server ", async () => {
226
- expect(await testBasics.sendEntityAsParamter(null)).toBe('null');
227
- });
228
- it("send entity to server prepare args to send ", async () => {
229
- let e = await c.repo(testEntity).create({ name: 'test' }).save();
230
- expect(prepareArgsToSend([testEntity], [e])[0]).toBe(e.id);
231
- });
232
- it("data is saved on server", async () => {
233
- await c.repo(testEntity).create({ name: 'test' }).save();
234
- expect(await testBasics.getValFromServer()).toBe('test');
235
- });
236
- it("new backend method syntax static method with remult", async () => {
237
- await c.repo(testEntity).create({ name: 'test' }).save();
238
- expect(await testBasics.staticBackendMethodWithoutDecoratorWithRemult()).toBe('test');
239
- });
240
- it("new backend method syntax static method", async () => {
241
- expect(await testBasics.staticBackendMethodWithoutDecorator()).toBe(true);
242
- });
243
- it("new backend method syntax 1", async () => {
244
- expect(await new testBasics(undefined).backendMethodWithoutDecorator()).toBe(true);
245
- });
246
- it("new backend method syntax 2", async () => {
247
- await c.repo(testEntity).create({ name: 'test' }).save();
248
- const z = new testBasics(undefined);
249
- z.a = 'x';
250
- expect(await z.backendMethodWithoutDecoratorWithRemult()).toBe('testx');
251
- });
252
- it("test backend method caller", async () => {
253
- const c = new Remult({
254
- url: "xx", httpClient: {
255
- delete: () => undefined,
256
- get: () => undefined,
257
- post: async (url, data) => {
258
- expect(url).toBe("xx/sf");
259
- expect(data.args[0]).toEqual("noam");
260
- return { data: { result: "hello noam" } };
261
- },
262
- put: () => undefined
263
- }
264
- });
265
- const r = (await c.call(testBasics.sf, undefined, "noam"));
266
- expect(r.result).toBe("hello noam");
267
- });
268
- it("test backend method caller with proxy", async () => {
269
- const p = new RemultProxy();
270
- {
271
- const c = new Remult({
272
- url: "xx", httpClient: {
273
- delete: () => undefined,
274
- get: () => undefined,
275
- post: async (url, data) => {
276
- expect(url).toBe("xx/sf");
277
- expect(data.args[0]).toEqual("noam");
278
- return { data: { result: "hello noam" } };
279
- },
280
- put: () => undefined
281
- }
282
- });
283
- p.remultFactory = () => c;
284
- }
285
- const r = (await p.call(testBasics.sf, undefined, "noam"));
286
- expect(r.result).toBe("hello noam");
287
- });
288
- it("test backend method instance method", async () => {
289
- const c = new Remult({
290
- url: "xx", httpClient: {
291
- delete: () => undefined,
292
- get: () => undefined,
293
- post: async (url, data) => {
294
- expect(url).toBe("xx/1/doIt");
295
- return { result: { result: "hello noam" }, fields: {} };
296
- },
297
- put: () => undefined
298
- }
299
- });
300
- const b = new testBasics(remult);
301
- const r = (await c.call(b.doIt, b));
302
- expect(r.result).toBe("hello noam");
303
- });
304
- it("test backend method instance method with proxy", async () => {
305
- const c = new Remult({
306
- url: "xx", httpClient: {
307
- delete: () => undefined,
308
- get: () => undefined,
309
- post: async (url, data) => {
310
- expect(url).toBe("xx/1/doIt");
311
- return { result: { result: "hello noam" }, fields: {} };
312
- },
313
- put: () => undefined
314
- }
315
- });
316
- const p = new RemultProxy();
317
- p.remultFactory = () => c;
318
- const b = new testBasics(remult);
319
- const r = (await p.call(b.doIt, b));
320
- expect(r.result).toBe("hello noam");
321
- });
322
- it("test server function", async () => {
323
- let r = await testBasics.sf("noam");
324
- expect(r.onServer).toBe(true);
325
- expect(r.result).toBe('hello noam');
326
- });
327
- it("test server function on server", async () => {
328
- await testAsIfOnBackend(async () => {
329
- let r = await testBasics.sf("noam");
330
- expect(r.onServer).toBe(true);
331
- expect(r.result).toBe('hello noam');
332
- });
333
- });
334
- it("test server Method Date", async () => {
335
- let tb = new testBasics(c);
336
- tb.theDate = new Date(1976, 6, 16);
337
- expect(await tb.testDate()).toBe(1976);
338
- });
339
- it("test server Method Date on server", async () => {
340
- let tb = new testBasics(c);
341
- tb.theDate = new Date(1976, 6, 16);
342
- await testAsIfOnBackend(async () => {
343
- expect(await tb.testDate()).toBe(1976);
344
- });
345
- });
346
- it("test server Method myType", async () => {
347
- let tb = new testBasics(c);
348
- tb.myType = myType.y;
349
- expect(await tb.testDataType(7)).toBe('y7');
350
- });
351
- it("test server method entity", async () => {
352
- let e = await c.repo(testEntity).create({ name: 'test3' }).save();
353
- let tb = new testBasics(c);
354
- tb.myEntity = e;
355
- expect(await tb.sendEntityAsParamter()).toBe('test3');
356
- });
357
- it("test server function Date", async () => {
358
- let r = await testBasics.testDate(new Date(1976, 6, 16));
359
- expect(r).toBe(1976);
360
- });
361
- it("test server function custom type", async () => {
362
- let r = await testBasics.testDataType(myType.y, 2);
363
- expect(r).toBe('y2');
364
- });
365
- it("test server method", async () => {
366
- let x = new testBasics(new Remult());
367
- x.a = 'Noam';
368
- let r = await x.doIt();
369
- expect(r.onServer).toBe(true);
370
- expect(r.result).toBe('hello Noam');
371
- expect(x.a).toBe("yael");
372
- });
373
- it("test validation method", async () => {
374
- let x = new testBasics(new Remult());
375
- x.a = 'errorc';
376
- let happened = false;
377
- try {
378
- let r = await x.doIt();
379
- happened = true;
380
- }
381
- catch (err) {
382
- expect(err.modelState.a).toBe("error on client");
383
- expect(getFields(x).a.error).toBe("error on client");
384
- }
385
- expect(happened).toBe(false);
386
- });
387
- it("test validation on server", async () => {
388
- let x = new testBasics(new Remult());
389
- x.a = "error on server";
390
- let happened = false;
391
- try {
392
- let r = await x.doIt();
393
- happened = true;
394
- }
395
- catch (err) {
396
- expect(err.modelState.a).toBe("error on server");
397
- expect(getFields(x).a.error).toBe("error on server");
398
- }
399
- expect(happened).toBe(false);
400
- });
401
- it("test static backend method ", async () => {
402
- const myClass = class {
403
- static async doSomething2222() {
404
- return isBackend().toString();
405
- }
406
- };
407
- describeClass(myClass, undefined, undefined, {
408
- doSomething2222: BackendMethod({ allowed: true, apiPrefix: 'myPrefix' }),
409
- });
410
- expect(await myClass.doSomething2222()).toBe("true");
411
- });
412
- it("test backend method with adhoc entity", async () => {
413
- const myClass = class {
414
- id = 0;
415
- name = '';
416
- async doSomething() {
417
- return this.name + isBackend();
418
- }
419
- };
420
- describeClass(myClass, Controller('addHocController'), {
421
- id: Fields.autoIncrement(),
422
- name: Fields.string(),
423
- doSomething: BackendMethod({ allowed: true }),
424
- });
425
- const x = new myClass();
426
- x.name = "123";
427
- expect(await x.doSomething()).toBe("123true");
428
- });
429
- it("test static backend method with adhoc controller", async () => {
430
- const myClass = class {
431
- id = 0;
432
- name = '';
433
- static async adHockDoSomething() {
434
- return isBackend();
435
- }
436
- };
437
- describeClass(myClass, Controller('addHocController1'), {
438
- id: Fields.autoIncrement(),
439
- name: Fields.string()
440
- }, {
441
- adHockDoSomething: BackendMethod({ allowed: true }),
442
- });
443
- expect(await myClass.adHockDoSomething()).toBe(true);
444
- });
445
- it("test remult proxy for repository", async () => {
446
- let remult1 = new Remult(new InMemoryDataProvider());
447
- await remult1.repo(testEntity).insert({ name: "a" });
448
- let remult2 = new Remult(new InMemoryDataProvider());
449
- let remultProxy = new RemultProxy();
450
- let repo = remultProxy.repo(testEntity);
451
- remultProxy.remultFactory = () => remult1;
452
- expect(await repo.count()).toBe(1);
453
- remultProxy.remultFactory = () => remult2;
454
- expect(await repo.count()).toBe(0);
455
- let z = await repo.save({ name: "b" });
456
- expect(z.name).toBe("b");
457
- expect(await repo.count()).toBe(1);
458
- remultProxy.remultFactory = () => remult1;
459
- expect(await repo.find({
460
- where: {
461
- name: "b"
462
- }
463
- })).toEqual([]);
464
- });
465
- });
466
- describe("controller with extends ", () => {
467
- it("test inheritance in controllers", async () => {
468
- let c = new child();
469
- c.childField = 'c';
470
- c.parentField = 'p';
471
- let r = await c.run();
472
- expect(r.c).toBe('c');
473
- expect(r.p).toBe('p');
474
- });
475
- });
476
- @Controller("parent")
477
- class parent {
478
- @Fields.string()
479
- parentField;
480
- }
481
- @Controller("child")
482
- class child extends parent {
483
- @Fields.string()
484
- childField;
485
- @BackendMethod({ allowed: true })
486
- run() {
487
- return { p: this.parentField, c: this.childField };
488
- }
489
- }
@@ -1 +0,0 @@
1
- export {};
@@ -1,178 +0,0 @@
1
- import { Remult } from '../context';
2
- import { InMemoryDataProvider } from '../data-providers/in-memory-database';
3
- import { dbNamesOf } from '../filter/filter-consumer-bridge-to-sql-request';
4
- import { remult } from '../remult-proxy';
5
- import { Entity, EntityBase, Fields } from '../remult3';
6
- import { describeClass } from '../remult3/DecoratorReplacer';
7
- import { actionInfo } from '../server-action';
8
- describe("test server expression value", () => {
9
- beforeEach(() => actionInfo.runningOnServer = true);
10
- afterEach(() => actionInfo.runningOnServer = false);
11
- it("test basics create", async () => {
12
- let c = new Remult();
13
- c.dataProvider = (new InMemoryDataProvider());
14
- testServerExpression.testVal = 1;
15
- testServerExpression.testVal2 = 11;
16
- let r = c.repo(testServerExpression).create();
17
- r.code = 5;
18
- await r._.save();
19
- expect(r.test).toBe(1);
20
- expect(r.testPromise).toBe(11);
21
- expect(testServerExpression.testVal).toBe(2);
22
- expect(testServerExpression.testVal2).toBe(12);
23
- });
24
- it("test basics find", async () => {
25
- let c = new Remult();
26
- c.dataProvider = (new InMemoryDataProvider());
27
- testServerExpression.testVal = 1;
28
- testServerExpression.testVal2 = 11;
29
- let r = c.repo(testServerExpression).create();
30
- r.code = 5;
31
- await r._.save();
32
- testServerExpression.testVal = 1;
33
- testServerExpression.testVal2 = 11;
34
- r = (await c.repo(testServerExpression).find({}))[0];
35
- expect(r.test).toBe(1);
36
- expect(r.testPromise).toBe(11);
37
- expect(testServerExpression.testVal).toBe(2);
38
- expect(testServerExpression.testVal2).toBe(12);
39
- });
40
- it("test doesnt calc on client", async () => {
41
- actionInfo.runningOnServer = false;
42
- let c = new Remult();
43
- c.dataProvider = (new InMemoryDataProvider());
44
- testServerExpression.testVal = 1;
45
- testServerExpression.testVal2 = 11;
46
- let r = c.repo(testServerExpression).create();
47
- r.code = 5;
48
- await r._.save();
49
- expect(r.test).toBe(undefined);
50
- expect(r.testPromise).toBe(undefined);
51
- expect(testServerExpression.testVal).toBe(1);
52
- expect(testServerExpression.testVal2).toBe(11);
53
- });
54
- it("test basics find doesnt calc on client", async () => {
55
- actionInfo.runningOnServer = false;
56
- let c = new Remult();
57
- c.dataProvider = (new InMemoryDataProvider());
58
- let r = c.repo(testServerExpression).create();
59
- r.code = 5;
60
- await r._.save();
61
- testServerExpression.testVal = 1;
62
- testServerExpression.testVal2 = 11;
63
- r = (await c.repo(testServerExpression).find({}))[0];
64
- expect(r.test).toBe(undefined);
65
- expect(r.testPromise).toBe(undefined);
66
- expect(testServerExpression.testVal).toBe(1);
67
- expect(testServerExpression.testVal2).toBe(11);
68
- });
69
- it("test uuid", async () => {
70
- const e = class {
71
- id = '';
72
- num = 0;
73
- };
74
- describeClass(e, Entity("x"), {
75
- id: Fields.uuid(),
76
- num: Fields.number()
77
- });
78
- const repo = new Remult(new InMemoryDataProvider()).repo(e);
79
- let item = await repo.insert({ num: 1 });
80
- expect(item.id.length).toBe(36, item.id);
81
- item = await repo.insert({ id: '123', num: 2 });
82
- expect(item.id).toBe('123');
83
- });
84
- it("test cuid", async () => {
85
- const e = class {
86
- id = '';
87
- num = 0;
88
- };
89
- describeClass(e, Entity("x"), {
90
- id: Fields.cuid(),
91
- num: Fields.number()
92
- });
93
- const repo = new Remult(new InMemoryDataProvider()).repo(e);
94
- let item = await repo.insert({ num: 1 });
95
- expect(item.id.length).toBe(24, item.id);
96
- item = await repo.insert({ id: '123', num: 2 });
97
- expect(item.id).toBe('123');
98
- });
99
- it("test createdAt", async () => {
100
- const e = class {
101
- id = 1;
102
- createdAt;
103
- updatedAt;
104
- val = 0;
105
- };
106
- describeClass(e, Entity("x"), {
107
- id: Fields.autoIncrement(),
108
- createdAt: Fields.createdAt(),
109
- updatedAt: Fields.updatedAt(),
110
- val: Fields.number()
111
- });
112
- const repo = new Remult(new InMemoryDataProvider()).repo(e);
113
- let item = await repo.insert({});
114
- expect(item.createdAt.toDateString()).toBe(new Date().toDateString());
115
- expect(Math.abs((item.updatedAt.valueOf() - item.createdAt.valueOf()))).toBeLessThan(5);
116
- let c = item.createdAt;
117
- await new Promise(res => setTimeout(() => {
118
- res({});
119
- }, 10));
120
- item = await repo.save({ ...item, val: 3 });
121
- expect(item.val).toBe(3);
122
- expect(item.createdAt).toEqual(c);
123
- expect(item.createdAt).not.toEqual(item.updatedAt);
124
- });
125
- if (false)
126
- it("test recursive db names", async () => {
127
- const myClass = class {
128
- a;
129
- b;
130
- c;
131
- d;
132
- e;
133
- f;
134
- };
135
- describeClass(myClass, Entity("test-recursive-db-names"), {
136
- a: Fields.string(),
137
- b: Fields.string({ dbName: 'bb' }),
138
- c: Fields.string({ sqlExpression: () => "cc" }),
139
- d: Fields.string({ sqlExpression: async (e) => await e.fields.c.getDbName() + "dd" }),
140
- e: Fields.string({
141
- sqlExpression: async (e) => {
142
- const n = await dbNamesOf(e);
143
- return n.c + "ee";
144
- }
145
- }),
146
- f: Fields.string({
147
- sqlExpression: async (e) => {
148
- const n = await dbNamesOf(e);
149
- return n.f + "ff";
150
- }
151
- })
152
- });
153
- const r = await dbNamesOf(remult.repo(myClass));
154
- expect(r.a).toBe('a');
155
- expect(r.b).toBe('bb');
156
- expect(r.c).toBe('cc');
157
- expect(r.d).toBe('ccdd');
158
- expect(r.e).toBe("ccee");
159
- expect(r.f).toBe("Recursive getDbName call for field 'f'. ff");
160
- const z = await dbNamesOf(remult.repo(myClass).metadata);
161
- expect(z.a).toBe('a');
162
- const zz = await dbNamesOf(myClass);
163
- expect(zz.a).toBe('a');
164
- const zzz = await dbNamesOf(testServerExpression);
165
- expect(zzz.code).toBe('code');
166
- });
167
- });
168
- @Entity('testServerExpression')
169
- class testServerExpression extends EntityBase {
170
- static testVal = 1;
171
- static testVal2 = 10;
172
- @Fields.integer()
173
- code;
174
- @Fields.integer({ serverExpression: () => testServerExpression.testVal++ })
175
- test;
176
- @Fields.integer({ serverExpression: () => Promise.resolve(testServerExpression.testVal2++) })
177
- testPromise;
178
- }