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