remult 0.21.1 → 0.22.0

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 (451) hide show
  1. package/README.md +47 -46
  2. package/SseSubscriptionServer.js +9 -9
  3. package/ably.js +1 -1
  4. package/esm/SseSubscriptionServer.js +11 -11
  5. package/esm/ably.js +2 -2
  6. package/esm/angular/interfaces/index.d.ts +1 -0
  7. package/esm/angular/interfaces/index.js +1 -0
  8. package/esm/angular/interfaces/src/column-collection.d.ts +70 -0
  9. package/esm/angular/interfaces/src/column-collection.js +341 -0
  10. package/esm/angular/interfaces/src/data-area-settings.d.ts +15 -0
  11. package/esm/angular/interfaces/src/data-area-settings.js +35 -0
  12. package/esm/angular/interfaces/src/data-control-interfaces.d.ts +36 -0
  13. package/esm/angular/interfaces/src/data-control-interfaces.js +57 -0
  14. package/esm/angular/interfaces/src/dataList.d.ts +13 -0
  15. package/esm/angular/interfaces/src/dataList.js +42 -0
  16. package/esm/angular/interfaces/src/filter-helper.d.ts +13 -0
  17. package/esm/angular/interfaces/src/filter-helper.js +59 -0
  18. package/esm/angular/interfaces/src/grid-settings.d.ts +145 -0
  19. package/esm/angular/interfaces/src/grid-settings.js +387 -0
  20. package/esm/angular/interfaces/src/public_api.d.ts +4 -0
  21. package/esm/angular/interfaces/src/public_api.js +4 -0
  22. package/esm/angular/src/angular/RemultAngularPluginsService.d.ts +4 -0
  23. package/esm/angular/src/angular/RemultAngularPluginsService.js +3 -0
  24. package/esm/angular/src/angular/data-control/data-control2.component.d.ts +49 -0
  25. package/esm/angular/src/angular/data-control/data-control2.component.js +138 -0
  26. package/esm/core/SseSubscriptionServer.d.ts +33 -0
  27. package/esm/core/SseSubscriptionServer.js +107 -0
  28. package/esm/core/assign.d.ts +1 -0
  29. package/esm/core/assign.js +5 -0
  30. package/esm/core/classType.d.ts +3 -0
  31. package/esm/core/classType.js +1 -0
  32. package/esm/core/index.d.ts +27 -0
  33. package/esm/core/index.js +25 -0
  34. package/esm/core/inputTypes.d.ts +9 -0
  35. package/esm/core/inputTypes.js +9 -0
  36. package/esm/core/live-query/data-provider-live-query-storage.d.ts +22 -0
  37. package/esm/core/live-query/data-provider-live-query-storage.js +71 -0
  38. package/esm/core/postgres/index.d.ts +2 -0
  39. package/esm/core/postgres/index.js +2 -0
  40. package/esm/core/postgres/postgres-data-provider.d.ts +36 -0
  41. package/esm/core/postgres/postgres-data-provider.js +120 -0
  42. package/esm/core/postgres/schema-builder.d.ts +17 -0
  43. package/esm/core/postgres/schema-builder.js +153 -0
  44. package/esm/core/remult-fresh.d.ts +17 -0
  45. package/esm/core/remult-fresh.js +29 -0
  46. package/esm/core/remult-knex/index.d.ts +30 -0
  47. package/esm/core/remult-knex/index.js +446 -0
  48. package/esm/core/remult-mongo.d.ts +24 -0
  49. package/esm/core/remult-mongo.js +254 -0
  50. package/esm/core/server/JsonEntityFileStorage.d.ts +10 -0
  51. package/esm/core/server/JsonEntityFileStorage.js +25 -0
  52. package/esm/core/server/core.d.ts +4 -0
  53. package/esm/core/server/core.js +4 -0
  54. package/esm/core/server/expressBridge.d.ts +182 -0
  55. package/esm/core/server/expressBridge.js +938 -0
  56. package/esm/core/server/index.d.ts +6 -0
  57. package/esm/core/server/index.js +9 -0
  58. package/esm/core/server/initAsyncHooks.d.ts +1 -0
  59. package/esm/core/server/initAsyncHooks.js +9 -0
  60. package/esm/core/server/initDataProvider.d.ts +2 -0
  61. package/esm/core/server/initDataProvider.js +14 -0
  62. package/esm/core/src/__EntityValueProvider.d.ts +11 -0
  63. package/esm/core/src/__EntityValueProvider.js +1 -0
  64. package/esm/core/src/__RowsOfDataForTesting.d.ts +3 -0
  65. package/esm/core/src/__RowsOfDataForTesting.js +1 -0
  66. package/esm/core/src/backend-tests/backend-database-test-setup.backend-spec.d.ts +6 -0
  67. package/esm/core/src/backend-tests/backend-database-test-setup.backend-spec.js +147 -0
  68. package/esm/core/src/backend-tests/my-test.backend-spec.d.ts +1 -0
  69. package/esm/core/src/backend-tests/my-test.backend-spec.js +197 -0
  70. package/esm/core/src/backend-tests/test-http-server.backend-spec.d.ts +1 -0
  71. package/esm/core/src/backend-tests/test-http-server.backend-spec.js +167 -0
  72. package/esm/core/src/buildRestDataProvider.d.ts +31 -0
  73. package/esm/core/src/buildRestDataProvider.js +113 -0
  74. package/esm/core/src/column-interfaces.d.ts +154 -0
  75. package/esm/core/src/column-interfaces.js +7 -0
  76. package/esm/core/src/column.d.ts +58 -0
  77. package/esm/core/src/column.js +174 -0
  78. package/esm/core/src/context.d.ts +134 -0
  79. package/esm/core/src/context.js +286 -0
  80. package/esm/core/src/data-api.d.ts +39 -0
  81. package/esm/core/src/data-api.js +279 -0
  82. package/esm/core/src/data-interfaces.d.ts +41 -0
  83. package/esm/core/src/data-interfaces.js +12 -0
  84. package/esm/core/src/data-providers/array-entity-data-provider.d.ts +22 -0
  85. package/esm/core/src/data-providers/array-entity-data-provider.js +252 -0
  86. package/esm/core/src/data-providers/in-memory-database.d.ts +9 -0
  87. package/esm/core/src/data-providers/in-memory-database.js +14 -0
  88. package/esm/core/src/data-providers/json-data-provider.d.ts +12 -0
  89. package/esm/core/src/data-providers/json-data-provider.js +55 -0
  90. package/esm/core/src/data-providers/rest-data-provider.d.ts +49 -0
  91. package/esm/core/src/data-providers/rest-data-provider.js +256 -0
  92. package/esm/core/src/data-providers/sql-database.d.ts +33 -0
  93. package/esm/core/src/data-providers/sql-database.js +384 -0
  94. package/esm/core/src/data-providers/web-sql-data-provider.d.ts +24 -0
  95. package/esm/core/src/data-providers/web-sql-data-provider.js +143 -0
  96. package/esm/core/src/entity.d.ts +91 -0
  97. package/esm/core/src/entity.js +1 -0
  98. package/esm/core/src/filter/filter-consumer-bridge-to-sql-request.d.ts +50 -0
  99. package/esm/core/src/filter/filter-consumer-bridge-to-sql-request.js +150 -0
  100. package/esm/core/src/filter/filter-consumer-bridge-to-url-builder.d.ts +1 -0
  101. package/esm/core/src/filter/filter-consumer-bridge-to-url-builder.js +1 -0
  102. package/esm/core/src/filter/filter-interfaces.d.ts +85 -0
  103. package/esm/core/src/filter/filter-interfaces.js +477 -0
  104. package/esm/core/src/live-query/LiveQueryClient.d.ts +20 -0
  105. package/esm/core/src/live-query/LiveQueryClient.js +188 -0
  106. package/esm/core/src/live-query/SseSubscriptionClient.d.ts +5 -0
  107. package/esm/core/src/live-query/SseSubscriptionClient.js +86 -0
  108. package/esm/core/src/live-query/SubscriptionChannel.d.ts +72 -0
  109. package/esm/core/src/live-query/SubscriptionChannel.js +123 -0
  110. package/esm/core/src/live-query/SubscriptionServer.d.ts +53 -0
  111. package/esm/core/src/live-query/SubscriptionServer.js +111 -0
  112. package/esm/core/src/live-query/live-query-tests.spec.d.ts +6 -0
  113. package/esm/core/src/live-query/live-query-tests.spec.js +952 -0
  114. package/esm/core/src/remult-proxy.d.ts +35 -0
  115. package/esm/core/src/remult-proxy.js +113 -0
  116. package/esm/core/src/remult3/DecoratorReplacer.d.ts +10 -0
  117. package/esm/core/src/remult3/DecoratorReplacer.js +20 -0
  118. package/esm/core/src/remult3/RepositoryImplementation.d.ts +355 -0
  119. package/esm/core/src/remult3/RepositoryImplementation.js +2109 -0
  120. package/esm/core/src/remult3/index.d.ts +2 -0
  121. package/esm/core/src/remult3/index.js +2 -0
  122. package/esm/core/src/remult3/remult3.d.ts +395 -0
  123. package/esm/core/src/remult3/remult3.js +2 -0
  124. package/esm/core/src/server-action.d.ts +81 -0
  125. package/esm/core/src/server-action.js +394 -0
  126. package/esm/core/src/shared-tests/db-tests-setup.d.ts +32 -0
  127. package/esm/core/src/shared-tests/db-tests-setup.js +78 -0
  128. package/esm/core/src/shared-tests/db-tests.db-tests.d.ts +25 -0
  129. package/esm/core/src/shared-tests/db-tests.db-tests.js +810 -0
  130. package/esm/core/src/shared-tests/deleteAll.d.ts +2 -0
  131. package/esm/core/src/shared-tests/deleteAll.js +4 -0
  132. package/esm/core/src/shared-tests/entityWithValidations.d.ts +14 -0
  133. package/esm/core/src/shared-tests/entityWithValidations.js +43 -0
  134. package/esm/core/src/shared-tests/index.d.ts +4 -0
  135. package/esm/core/src/shared-tests/index.js +4 -0
  136. package/esm/core/src/shared-tests/test-custom-id-column.spec.d.ts +1 -0
  137. package/esm/core/src/shared-tests/test-custom-id-column.spec.js +67 -0
  138. package/esm/core/src/shared-tests/test-special-value.spec.d.ts +10 -0
  139. package/esm/core/src/shared-tests/test-special-value.spec.js +73 -0
  140. package/esm/core/src/shared-tests/test-update-with-null.spec.d.ts +1 -0
  141. package/esm/core/src/shared-tests/test-update-with-null.spec.js +31 -0
  142. package/esm/core/src/sort.d.ts +16 -0
  143. package/esm/core/src/sort.js +103 -0
  144. package/esm/core/src/sql-command.d.ts +19 -0
  145. package/esm/core/src/sql-command.js +1 -0
  146. package/esm/core/src/test.d.ts +3 -0
  147. package/esm/core/src/test.js +12 -0
  148. package/esm/core/src/tests/Done.d.ts +5 -0
  149. package/esm/core/src/tests/Done.js +9 -0
  150. package/esm/core/src/tests/RowProvider.spec.d.ts +16 -0
  151. package/esm/core/src/tests/RowProvider.spec.js +631 -0
  152. package/esm/core/src/tests/TestDataApiResponse.d.ts +10 -0
  153. package/esm/core/src/tests/TestDataApiResponse.js +22 -0
  154. package/esm/core/src/tests/basicRowFunctionality.spec.d.ts +8 -0
  155. package/esm/core/src/tests/basicRowFunctionality.spec.js +2103 -0
  156. package/esm/core/src/tests/c.d.ts +8 -0
  157. package/esm/core/src/tests/c.js +13 -0
  158. package/esm/core/src/tests/createData.d.ts +7 -0
  159. package/esm/core/src/tests/createData.js +22 -0
  160. package/esm/core/src/tests/d.d.ts +6 -0
  161. package/esm/core/src/tests/d.js +11 -0
  162. package/esm/core/src/tests/dWithPrefilter.d.ts +7 -0
  163. package/esm/core/src/tests/dWithPrefilter.js +18 -0
  164. package/esm/core/src/tests/entityForCustomFilter.d.ts +16 -0
  165. package/esm/core/src/tests/entityForCustomFilter.js +33 -0
  166. package/esm/core/src/tests/entityWithValidationsOnColumn.d.ts +5 -0
  167. package/esm/core/src/tests/entityWithValidationsOnColumn.js +13 -0
  168. package/esm/core/src/tests/frontend-database-tests-setup.spec.d.ts +4 -0
  169. package/esm/core/src/tests/frontend-database-tests-setup.spec.js +37 -0
  170. package/esm/core/src/tests/h.d.ts +6 -0
  171. package/esm/core/src/tests/h.js +24 -0
  172. package/esm/core/src/tests/remult-3-basic-tests.spec.d.ts +1 -0
  173. package/esm/core/src/tests/remult-3-basic-tests.spec.js +236 -0
  174. package/esm/core/src/tests/remult-3-entities.d.ts +23 -0
  175. package/esm/core/src/tests/remult-3-entities.js +39 -0
  176. package/esm/core/src/tests/tasks.d.ts +6 -0
  177. package/esm/core/src/tests/tasks.js +10 -0
  178. package/esm/core/src/tests/test-context-as-storage.spec.d.ts +0 -0
  179. package/esm/core/src/tests/test-context-as-storage.spec.js +1 -0
  180. package/esm/core/src/tests/test-data-api/predefined-filter.spec.d.ts +1 -0
  181. package/esm/core/src/tests/test-data-api/predefined-filter.spec.js +389 -0
  182. package/esm/core/src/tests/test-data-api/test-put-with-validation.spec.d.ts +5 -0
  183. package/esm/core/src/tests/test-data-api/test-put-with-validation.spec.js +152 -0
  184. package/esm/core/src/tests/test-decorator-precedence.spec.d.ts +1 -0
  185. package/esm/core/src/tests/test-decorator-precedence.spec.js +38 -0
  186. package/esm/core/src/tests/test-default-value.spec.d.ts +1 -0
  187. package/esm/core/src/tests/test-default-value.spec.js +33 -0
  188. package/esm/core/src/tests/test-entity-inheritance.spec.d.ts +14 -0
  189. package/esm/core/src/tests/test-entity-inheritance.spec.js +82 -0
  190. package/esm/core/src/tests/test-exceptions.spec.d.ts +1 -0
  191. package/esm/core/src/tests/test-exceptions.spec.js +375 -0
  192. package/esm/core/src/tests/test-json.spec.d.ts +1 -0
  193. package/esm/core/src/tests/test-json.spec.js +115 -0
  194. package/esm/core/src/tests/test-many-to-one-relation-in-entity.spec.d.ts +9 -0
  195. package/esm/core/src/tests/test-many-to-one-relation-in-entity.spec.js +809 -0
  196. package/esm/core/src/tests/test-non-active-record.spec.d.ts +1 -0
  197. package/esm/core/src/tests/test-non-active-record.spec.js +66 -0
  198. package/esm/core/src/tests/test-object-column.spec.d.ts +1 -0
  199. package/esm/core/src/tests/test-object-column.spec.js +189 -0
  200. package/esm/core/src/tests/test-paged-foreach.spec.d.ts +1 -0
  201. package/esm/core/src/tests/test-paged-foreach.spec.js +328 -0
  202. package/esm/core/src/tests/test-remult-angular.spec.d.ts +1 -0
  203. package/esm/core/src/tests/test-remult-angular.spec.js +23 -0
  204. package/esm/core/src/tests/test-server-controller.spec.d.ts +7 -0
  205. package/esm/core/src/tests/test-server-controller.spec.js +489 -0
  206. package/esm/core/src/tests/test-server-expressions.spec.d.ts +1 -0
  207. package/esm/core/src/tests/test-server-expressions.spec.js +178 -0
  208. package/esm/core/src/tests/test-server-method-on-entity.spec.d.ts +1 -0
  209. package/esm/core/src/tests/test-server-method-on-entity.spec.js +306 -0
  210. package/esm/core/src/tests/test-sql-expression.spec.d.ts +5 -0
  211. package/esm/core/src/tests/test-sql-expression.spec.js +205 -0
  212. package/esm/core/src/tests/test-sql.spec.d.ts +1 -0
  213. package/esm/core/src/tests/test-sql.spec.js +170 -0
  214. package/esm/core/src/tests/test-subscribe.spec.d.ts +1 -0
  215. package/esm/core/src/tests/test-subscribe.spec.js +135 -0
  216. package/esm/core/src/tests/test-type-recovery.spec.d.ts +1 -0
  217. package/esm/core/src/tests/test-type-recovery.spec.js +49 -0
  218. package/esm/core/src/tests/test-where-api.spec.d.ts +1 -0
  219. package/esm/core/src/tests/test-where-api.spec.js +434 -0
  220. package/esm/core/src/tests/testHelper.spec.d.ts +36 -0
  221. package/esm/core/src/tests/testHelper.spec.js +226 -0
  222. package/esm/core/src/tests/testModel/models.d.ts +16 -0
  223. package/esm/core/src/tests/testModel/models.js +25 -0
  224. package/esm/core/src/validators.d.ts +14 -0
  225. package/esm/core/src/validators.js +33 -0
  226. package/esm/core/src/valueConverters.d.ts +13 -0
  227. package/esm/core/src/valueConverters.js +197 -0
  228. package/esm/core/urlBuilder.d.ts +6 -0
  229. package/esm/core/urlBuilder.js +20 -0
  230. package/esm/graphql.js +194 -73
  231. package/esm/index.d.ts +10 -10
  232. package/esm/index.js +8 -8
  233. package/esm/inputTypes.js +1 -1
  234. package/esm/live-query/data-provider-live-query-storage.d.ts +3 -3
  235. package/esm/live-query/data-provider-live-query-storage.js +12 -9
  236. package/esm/myLog.js +2 -2
  237. package/esm/postgres/postgres-data-provider.d.ts +2 -2
  238. package/esm/postgres/postgres-data-provider.js +20 -14
  239. package/esm/postgres/schema-builder.d.ts +1 -1
  240. package/esm/postgres/schema-builder.js +28 -21
  241. package/esm/remult-express.js +2 -2
  242. package/esm/remult-fastify.js +9 -7
  243. package/esm/remult-fresh.d.ts +1 -1
  244. package/esm/remult-fresh.js +5 -8
  245. package/esm/remult-knex/index.d.ts +4 -4
  246. package/esm/remult-knex/index.js +75 -59
  247. package/esm/remult-mongo.js +36 -27
  248. package/esm/remult-next.d.ts +3 -3
  249. package/esm/remult-next.js +17 -11
  250. package/esm/remult-sveltekit.js +10 -10
  251. package/esm/server/JsonEntityFileStorage.js +3 -1
  252. package/esm/server/core.d.ts +2 -2
  253. package/esm/server/core.js +2 -2
  254. package/esm/server/expressBridge.d.ts +3 -12
  255. package/esm/server/expressBridge.js +265 -278
  256. package/esm/server/index.d.ts +2 -2
  257. package/esm/server/index.js +5 -2
  258. package/esm/server/initAsyncHooks.js +1 -1
  259. package/esm/server/initDataProvider.js +1 -1
  260. package/esm/src/backend-tests/backend-database-test-setup.backend-spec.d.ts +1 -1
  261. package/esm/src/backend-tests/backend-database-test-setup.backend-spec.js +47 -38
  262. package/esm/src/buildRestDataProvider.d.ts +1 -1
  263. package/esm/src/buildRestDataProvider.js +21 -13
  264. package/esm/src/column-interfaces.d.ts +9 -9
  265. package/esm/src/column.d.ts +4 -0
  266. package/esm/src/column.js +23 -11
  267. package/esm/src/context.d.ts +20 -8
  268. package/esm/src/context.js +65 -24
  269. package/esm/src/data-api.d.ts +0 -1
  270. package/esm/src/data-api.js +38 -37
  271. package/esm/src/data-interfaces.d.ts +1 -1
  272. package/esm/src/data-interfaces.js +1 -1
  273. package/esm/src/data-providers/array-entity-data-provider.js +9 -9
  274. package/esm/src/data-providers/in-memory-database.d.ts +1 -1
  275. package/esm/src/data-providers/in-memory-database.js +3 -1
  276. package/esm/src/data-providers/json-data-provider.js +8 -8
  277. package/esm/src/data-providers/rest-data-provider.d.ts +1 -1
  278. package/esm/src/data-providers/rest-data-provider.js +52 -36
  279. package/esm/src/data-providers/sql-database.d.ts +5 -5
  280. package/esm/src/data-providers/sql-database.js +53 -36
  281. package/esm/src/data-providers/web-sql-data-provider.d.ts +4 -4
  282. package/esm/src/data-providers/web-sql-data-provider.js +15 -13
  283. package/esm/src/entity.d.ts +24 -24
  284. package/esm/src/filter/filter-consumer-bridge-to-sql-request.d.ts +4 -4
  285. package/esm/src/filter/filter-consumer-bridge-to-sql-request.js +35 -20
  286. package/esm/src/filter/filter-interfaces.d.ts +7 -7
  287. package/esm/src/filter/filter-interfaces.js +108 -88
  288. package/esm/src/live-query/LiveQueryClient.js +37 -29
  289. package/esm/src/live-query/SseSubscriptionClient.d.ts +1 -1
  290. package/esm/src/live-query/SseSubscriptionClient.js +14 -14
  291. package/esm/src/live-query/SubscriptionChannel.d.ts +3 -3
  292. package/esm/src/live-query/SubscriptionChannel.js +27 -25
  293. package/esm/src/live-query/SubscriptionServer.js +24 -20
  294. package/esm/src/remult-proxy.d.ts +1 -1
  295. package/esm/src/remult-proxy.js +87 -29
  296. package/esm/src/remult3/DecoratorReplacer.d.ts +2 -2
  297. package/esm/src/remult3/RepositoryImplementation.d.ts +51 -41
  298. package/esm/src/remult3/RepositoryImplementation.js +336 -206
  299. package/esm/src/remult3/remult3.d.ts +56 -51
  300. package/esm/src/remult3/remult3.js +0 -1
  301. package/esm/src/server-action.d.ts +12 -5
  302. package/esm/src/server-action.js +79 -53
  303. package/esm/src/shared-tests/db-tests-setup.d.ts +8 -8
  304. package/esm/src/shared-tests/db-tests-setup.js +10 -10
  305. package/esm/src/shared-tests/db-tests.db-tests.d.ts +1 -1
  306. package/esm/src/shared-tests/db-tests.db-tests.js +279 -177
  307. package/esm/src/shared-tests/deleteAll.d.ts +1 -1
  308. package/esm/src/shared-tests/deleteAll.js +1 -1
  309. package/esm/src/shared-tests/entityWithValidations.js +1 -1
  310. package/esm/src/shared-tests/test-custom-id-column.spec.js +4 -4
  311. package/esm/src/shared-tests/test-special-value.spec.js +12 -12
  312. package/esm/src/shared-tests/test-update-with-null.spec.js +10 -6
  313. package/esm/src/sort.d.ts +2 -2
  314. package/esm/src/sort.js +12 -10
  315. package/esm/src/tests/TestDataApiResponse.d.ts +1 -1
  316. package/esm/src/tests/TestDataApiResponse.js +3 -4
  317. package/esm/src/tests/createData.js +2 -2
  318. package/esm/src/tests/d.js +1 -1
  319. package/esm/src/tests/dWithPrefilter.js +1 -1
  320. package/esm/src/tests/entityForCustomFilter.d.ts +4 -4
  321. package/esm/src/tests/entityForCustomFilter.js +12 -4
  322. package/esm/src/tests/entityWithValidationsOnColumn.js +1 -1
  323. package/esm/src/tests/frontend-database-tests-setup.spec.d.ts +1 -1
  324. package/esm/src/tests/frontend-database-tests-setup.spec.js +14 -14
  325. package/esm/src/tests/h.js +4 -4
  326. package/esm/src/tests/remult-3-entities.d.ts +2 -2
  327. package/esm/src/tests/remult-3-entities.js +6 -6
  328. package/esm/src/tests/testHelper.spec.d.ts +7 -7
  329. package/esm/src/tests/testHelper.spec.js +50 -39
  330. package/esm/src/tests/testModel/models.js +4 -4
  331. package/esm/src/validators.d.ts +1 -1
  332. package/esm/src/validators.js +10 -7
  333. package/esm/src/valueConverters.d.ts +1 -1
  334. package/esm/src/valueConverters.js +68 -55
  335. package/esm/test-servers/shared/Task.d.ts +9 -0
  336. package/esm/test-servers/shared/Task.js +32 -0
  337. package/esm/test.d.ts +5 -0
  338. package/esm/test.js +6 -0
  339. package/graphql.js +157 -45
  340. package/index.d.ts +10 -10
  341. package/inputTypes.js +1 -1
  342. package/live-query/data-provider-live-query-storage.d.ts +3 -3
  343. package/live-query/data-provider-live-query-storage.js +7 -4
  344. package/myLog.js +2 -2
  345. package/package.json +2 -2
  346. package/postgres/postgres-data-provider.d.ts +2 -2
  347. package/postgres/postgres-data-provider.js +21 -16
  348. package/postgres/schema-builder.d.ts +1 -1
  349. package/postgres/schema-builder.js +22 -15
  350. package/remult-express.js +1 -1
  351. package/remult-fastify.js +7 -7
  352. package/remult-fresh.d.ts +1 -1
  353. package/remult-fresh.js +1 -4
  354. package/remult-knex/index.d.ts +4 -4
  355. package/remult-knex/index.js +50 -35
  356. package/remult-mongo.js +33 -23
  357. package/remult-next.d.ts +3 -3
  358. package/remult-next.js +15 -11
  359. package/remult-sveltekit.js +14 -15
  360. package/server/core.d.ts +2 -2
  361. package/server/expressBridge.d.ts +3 -12
  362. package/server/expressBridge.js +278 -279
  363. package/server/index.d.ts +2 -2
  364. package/server/index.js +5 -2
  365. package/server/initAsyncHooks.js +2 -2
  366. package/server/initDataProvider.js +1 -1
  367. package/src/backend-tests/backend-database-test-setup.backend-spec.d.ts +1 -1
  368. package/src/backend-tests/backend-database-test-setup.backend-spec.js +40 -31
  369. package/src/buildRestDataProvider.d.ts +1 -1
  370. package/src/buildRestDataProvider.js +18 -10
  371. package/src/column-interfaces.d.ts +9 -9
  372. package/src/column.d.ts +4 -0
  373. package/src/column.js +20 -8
  374. package/src/context.d.ts +20 -8
  375. package/src/context.js +61 -18
  376. package/src/data-api.d.ts +0 -1
  377. package/src/data-api.js +40 -43
  378. package/src/data-interfaces.d.ts +1 -1
  379. package/src/data-providers/array-entity-data-provider.js +2 -2
  380. package/src/data-providers/in-memory-database.d.ts +1 -1
  381. package/src/data-providers/in-memory-database.js +3 -1
  382. package/src/data-providers/json-data-provider.js +33 -15
  383. package/src/data-providers/rest-data-provider.d.ts +1 -1
  384. package/src/data-providers/rest-data-provider.js +47 -32
  385. package/src/data-providers/sql-database.d.ts +5 -5
  386. package/src/data-providers/sql-database.js +41 -24
  387. package/src/data-providers/web-sql-data-provider.d.ts +4 -4
  388. package/src/data-providers/web-sql-data-provider.js +10 -8
  389. package/src/entity.d.ts +24 -24
  390. package/src/filter/filter-consumer-bridge-to-sql-request.d.ts +4 -4
  391. package/src/filter/filter-consumer-bridge-to-sql-request.js +34 -17
  392. package/src/filter/filter-interfaces.d.ts +7 -7
  393. package/src/filter/filter-interfaces.js +73 -47
  394. package/src/live-query/LiveQueryClient.js +35 -25
  395. package/src/live-query/SseSubscriptionClient.d.ts +1 -1
  396. package/src/live-query/SseSubscriptionClient.js +80 -76
  397. package/src/live-query/SubscriptionChannel.d.ts +3 -3
  398. package/src/live-query/SubscriptionChannel.js +26 -18
  399. package/src/live-query/SubscriptionServer.js +23 -17
  400. package/src/remult-proxy.d.ts +1 -1
  401. package/src/remult-proxy.js +84 -35
  402. package/src/remult3/DecoratorReplacer.d.ts +2 -2
  403. package/src/remult3/RepositoryImplementation.d.ts +51 -41
  404. package/src/remult3/RepositoryImplementation.js +402 -257
  405. package/src/remult3/remult3.d.ts +56 -51
  406. package/src/remult3/remult3.js +0 -1
  407. package/src/server-action.d.ts +12 -5
  408. package/src/server-action.js +78 -48
  409. package/src/shared-tests/db-tests-setup.d.ts +8 -8
  410. package/src/shared-tests/db-tests-setup.js +6 -6
  411. package/src/shared-tests/db-tests.db-tests.d.ts +1 -1
  412. package/src/shared-tests/db-tests.db-tests.js +350 -153
  413. package/src/shared-tests/deleteAll.d.ts +1 -1
  414. package/src/shared-tests/entityWithValidations.js +1 -1
  415. package/src/shared-tests/test-custom-id-column.spec.js +4 -4
  416. package/src/shared-tests/test-special-value.spec.js +9 -9
  417. package/src/shared-tests/test-update-with-null.spec.js +8 -4
  418. package/src/sort.d.ts +2 -2
  419. package/src/sort.js +9 -7
  420. package/src/tests/TestDataApiResponse.d.ts +1 -1
  421. package/src/tests/TestDataApiResponse.js +3 -4
  422. package/src/tests/createData.js +1 -1
  423. package/src/tests/d.js +1 -1
  424. package/src/tests/dWithPrefilter.js +1 -1
  425. package/src/tests/entityForCustomFilter.d.ts +4 -4
  426. package/src/tests/entityForCustomFilter.js +16 -6
  427. package/src/tests/entityWithValidationsOnColumn.js +1 -1
  428. package/src/tests/frontend-database-tests-setup.spec.d.ts +1 -1
  429. package/src/tests/frontend-database-tests-setup.spec.js +8 -8
  430. package/src/tests/h.js +3 -3
  431. package/src/tests/remult-3-entities.d.ts +2 -2
  432. package/src/tests/remult-3-entities.js +8 -4
  433. package/src/tests/testHelper.spec.d.ts +7 -7
  434. package/src/tests/testHelper.spec.js +38 -27
  435. package/src/tests/testModel/models.js +3 -3
  436. package/src/validators.d.ts +1 -1
  437. package/src/validators.js +18 -9
  438. package/src/valueConverters.d.ts +1 -1
  439. package/src/valueConverters.js +38 -21
  440. package/esm/remult-svletekit.d.ts +0 -3
  441. package/esm/remult-svletekit.js +0 -83
  442. package/esm/src/id-entity.d.ts +0 -4
  443. package/esm/src/id-entity.js +0 -8
  444. package/esm/src/remult3/getId.d.ts +0 -2
  445. package/esm/src/remult3/getId.js +0 -7
  446. package/postgres/getEntityTypescriptPostgres.d.ts +0 -1
  447. package/postgres/getEntityTypescriptPostgres.js +0 -125
  448. package/src/id-entity.d.ts +0 -4
  449. package/src/id-entity.js +0 -17
  450. package/src/remult3/getId.d.ts +0 -2
  451. package/src/remult3/getId.js +0 -11
@@ -23,7 +23,8 @@ var models_1 = require("../tests/testModel/models");
23
23
  var DecoratorReplacer_1 = require("../remult3/DecoratorReplacer");
24
24
  var data_provider_live_query_storage_1 = require("../../live-query/data-provider-live-query-storage");
25
25
  var uuid_1 = require("uuid");
26
- db_tests_setup_1.testAll("what", function (_a) {
26
+ var valueConverters_1 = require("../valueConverters");
27
+ db_tests_setup_1.testAll('what', function (_a) {
27
28
  var remult = _a.remult, createEntity = _a.createEntity;
28
29
  return tslib_1.__awaiter(void 0, void 0, void 0, function () {
29
30
  var _b;
@@ -42,27 +43,29 @@ db_tests_setup_1.testAll("what", function (_a) {
42
43
  });
43
44
  });
44
45
  }, false);
45
- db_tests_setup_1.testAll("data types", function (_a) {
46
+ db_tests_setup_1.testAll('data types', function (_a) {
46
47
  var remult = _a.remult, createEntity = _a.createEntity;
47
48
  return tslib_1.__awaiter(void 0, void 0, void 0, function () {
48
49
  var r;
49
50
  return tslib_1.__generator(this, function (_b) {
50
51
  switch (_b.label) {
51
52
  case 0: return [4 /*yield*/, createEntity(stam)];
52
- case 1: return [4 /*yield*/, (_b.sent()).create({
53
+ case 1: return [4 /*yield*/, (_b.sent())
54
+ .create({
53
55
  id: 1,
54
56
  //@ts-ignore
55
- title: 42
56
- }).save()];
57
+ title: 42,
58
+ })
59
+ .save()];
57
60
  case 2:
58
61
  r = _b.sent();
59
- expect(r.title).toEqual("42");
62
+ expect(r.title).toEqual('42');
60
63
  return [2 /*return*/];
61
64
  }
62
65
  });
63
66
  });
64
67
  }, false);
65
- db_tests_setup_1.testAll("filter works on all db", function (_a) {
68
+ db_tests_setup_1.testAll('filter works on all db', function (_a) {
66
69
  var createEntity = _a.createEntity;
67
70
  return tslib_1.__awaiter(void 0, void 0, void 0, function () {
68
71
  var s, _b;
@@ -80,7 +83,7 @@ db_tests_setup_1.testAll("filter works on all db", function (_a) {
80
83
  });
81
84
  });
82
85
  }, false);
83
- db_tests_setup_1.testAll("test in statement and ", function (_a) {
86
+ db_tests_setup_1.testAll('test in statement and ', function (_a) {
84
87
  var createEntity = _a.createEntity;
85
88
  return tslib_1.__awaiter(void 0, void 0, void 0, function () {
86
89
  var repo, _b;
@@ -98,7 +101,7 @@ db_tests_setup_1.testAll("test in statement and ", function (_a) {
98
101
  });
99
102
  });
100
103
  }, false);
101
- db_tests_setup_1.testAll("filter with and", function (_a) {
104
+ db_tests_setup_1.testAll('filter with and', function (_a) {
102
105
  var createEntity = _a.createEntity;
103
106
  return tslib_1.__awaiter(void 0, void 0, void 0, function () {
104
107
  var s, _b;
@@ -116,7 +119,7 @@ db_tests_setup_1.testAll("filter with and", function (_a) {
116
119
  });
117
120
  });
118
121
  }, false);
119
- db_tests_setup_1.testAll("test empty in", function (_a) {
122
+ db_tests_setup_1.testAll('test empty in', function (_a) {
120
123
  var createEntity = _a.createEntity;
121
124
  return tslib_1.__awaiter(void 0, void 0, void 0, function () {
122
125
  var s, _b;
@@ -134,7 +137,7 @@ db_tests_setup_1.testAll("test empty in", function (_a) {
134
137
  });
135
138
  });
136
139
  }, false);
137
- db_tests_setup_1.testAll("filter works on all db or", function (_a) {
140
+ db_tests_setup_1.testAll('filter works on all db or', function (_a) {
138
141
  var createEntity = _a.createEntity;
139
142
  return tslib_1.__awaiter(void 0, void 0, void 0, function () {
140
143
  var s, _b;
@@ -152,7 +155,7 @@ db_tests_setup_1.testAll("filter works on all db or", function (_a) {
152
155
  });
153
156
  });
154
157
  }, false);
155
- db_tests_setup_1.testAll("filter works on all db or_1", function (_a) {
158
+ db_tests_setup_1.testAll('filter works on all db or_1', function (_a) {
156
159
  var createEntity = _a.createEntity;
157
160
  return tslib_1.__awaiter(void 0, void 0, void 0, function () {
158
161
  var s, _b;
@@ -170,7 +173,7 @@ db_tests_setup_1.testAll("filter works on all db or_1", function (_a) {
170
173
  });
171
174
  });
172
175
  }, false);
173
- db_tests_setup_1.testAll("filter works on all db or_2", function (_a) {
176
+ db_tests_setup_1.testAll('filter works on all db or_2', function (_a) {
174
177
  var createEntity = _a.createEntity;
175
178
  return tslib_1.__awaiter(void 0, void 0, void 0, function () {
176
179
  var s, _b;
@@ -188,7 +191,7 @@ db_tests_setup_1.testAll("filter works on all db or_2", function (_a) {
188
191
  });
189
192
  });
190
193
  }, false);
191
- db_tests_setup_1.testAll("entity with different id column still works well", function (_a) {
194
+ db_tests_setup_1.testAll('entity with different id column still works well', function (_a) {
192
195
  var createEntity = _a.createEntity;
193
196
  return tslib_1.__awaiter(void 0, void 0, void 0, function () {
194
197
  var s, c, _b;
@@ -217,7 +220,7 @@ db_tests_setup_1.testAll("entity with different id column still works well", fun
217
220
  });
218
221
  });
219
222
  }, false);
220
- db_tests_setup_1.testAll("empty find works", function (_a) {
223
+ db_tests_setup_1.testAll('empty find works', function (_a) {
221
224
  var remult = _a.remult, createEntity = _a.createEntity;
222
225
  return tslib_1.__awaiter(void 0, void 0, void 0, function () {
223
226
  var c, l;
@@ -241,7 +244,7 @@ db_tests_setup_1.testAll("empty find works", function (_a) {
241
244
  });
242
245
  });
243
246
  }, false);
244
- db_tests_setup_1.testAll("test descending", function (_a) {
247
+ db_tests_setup_1.testAll('test descending', function (_a) {
245
248
  var createEntity = _a.createEntity;
246
249
  return tslib_1.__awaiter(void 0, void 0, void 0, function () {
247
250
  var repo, rows;
@@ -258,7 +261,7 @@ db_tests_setup_1.testAll("test descending", function (_a) {
258
261
  _b.sent();
259
262
  return [4 /*yield*/, repo.find({
260
263
  orderBy: { categoryName: 'desc' },
261
- page: -1
264
+ page: -1,
262
265
  })];
263
266
  case 4:
264
267
  rows = _b.sent();
@@ -268,7 +271,7 @@ db_tests_setup_1.testAll("test descending", function (_a) {
268
271
  });
269
272
  });
270
273
  }, false);
271
- db_tests_setup_1.testAll("test descending 2", function (_a) {
274
+ db_tests_setup_1.testAll('test descending 2', function (_a) {
272
275
  var createEntity = _a.createEntity;
273
276
  return tslib_1.__awaiter(void 0, void 0, void 0, function () {
274
277
  var repo, rows;
@@ -277,12 +280,15 @@ db_tests_setup_1.testAll("test descending 2", function (_a) {
277
280
  case 0: return [4 /*yield*/, createEntity(remult_3_entities_1.Categories)];
278
281
  case 1:
279
282
  repo = _b.sent();
280
- return [4 /*yield*/, repo.insert([{ id: 1, categoryName: 'a' }, { id: 2, categoryName: 'b' }])];
283
+ return [4 /*yield*/, repo.insert([
284
+ { id: 1, categoryName: 'a' },
285
+ { id: 2, categoryName: 'b' },
286
+ ])];
281
287
  case 2:
282
288
  _b.sent();
283
289
  return [4 /*yield*/, repo.find({
284
290
  orderBy: { categoryName: 'desc' },
285
- page: -1
291
+ page: -1,
286
292
  })];
287
293
  case 3:
288
294
  rows = _b.sent();
@@ -292,7 +298,7 @@ db_tests_setup_1.testAll("test descending 2", function (_a) {
292
298
  });
293
299
  });
294
300
  }, false);
295
- db_tests_setup_1.testAll("partial updates", function (_a) {
301
+ db_tests_setup_1.testAll('partial updates', function (_a) {
296
302
  var remult = _a.remult, createEntity = _a.createEntity;
297
303
  return tslib_1.__awaiter(void 0, void 0, void 0, function () {
298
304
  var c, l;
@@ -301,7 +307,9 @@ db_tests_setup_1.testAll("partial updates", function (_a) {
301
307
  case 0: return [4 /*yield*/, createEntity(remult_3_entities_1.Categories)];
302
308
  case 1:
303
309
  c = (_b.sent()).create({
304
- id: 5, categoryName: 'test', description: 'desc'
310
+ id: 5,
311
+ categoryName: 'test',
312
+ description: 'desc',
305
313
  });
306
314
  return [4 /*yield*/, c._.save()];
307
315
  case 2:
@@ -324,7 +332,7 @@ db_tests_setup_1.testAll("partial updates", function (_a) {
324
332
  });
325
333
  });
326
334
  }, false);
327
- db_tests_setup_1.testAll("put with validations on entity fails", function (_a) {
335
+ db_tests_setup_1.testAll('put with validations on entity fails', function (_a) {
328
336
  var remult = _a.remult, createEntity = _a.createEntity;
329
337
  return tslib_1.__awaiter(void 0, void 0, void 0, function () {
330
338
  var s, c, api, t, d, x;
@@ -350,7 +358,7 @@ db_tests_setup_1.testAll("put with validations on entity fails", function (_a) {
350
358
  });
351
359
  }); };
352
360
  return [4 /*yield*/, api.put(t, 1, {
353
- name: '1'
361
+ name: '1',
354
362
  })];
355
363
  case 3:
356
364
  _b.sent();
@@ -368,7 +376,7 @@ db_tests_setup_1.testAll("put with validations on entity fails", function (_a) {
368
376
  });
369
377
  });
370
378
  });
371
- db_tests_setup_1.testAll("test date only with null works", function (_a) {
379
+ db_tests_setup_1.testAll('test date only with null works', function (_a) {
372
380
  var createEntity = _a.createEntity;
373
381
  return tslib_1.__awaiter(void 0, void 0, void 0, function () {
374
382
  var repo, r, _b;
@@ -408,7 +416,7 @@ db_tests_setup_1.testAll("test date only with null works", function (_a) {
408
416
  });
409
417
  });
410
418
  }, false);
411
- db_tests_setup_1.testAll("test date with null works", function (_a) {
419
+ db_tests_setup_1.testAll('test date with null works', function (_a) {
412
420
  var createEntity = _a.createEntity;
413
421
  return tslib_1.__awaiter(void 0, void 0, void 0, function () {
414
422
  var repo, r, _b;
@@ -424,7 +432,7 @@ db_tests_setup_1.testAll("test date with null works", function (_a) {
424
432
  return [4 /*yield*/, repo.findFirst()];
425
433
  case 3:
426
434
  r = _c.sent();
427
- expect(r.fullDate).toBeNull("expected null after");
435
+ expect(r.fullDate).toBeNull('expected null after');
428
436
  _b = expect;
429
437
  return [4 /*yield*/, repo.count({ fullDate: null })];
430
438
  case 4:
@@ -448,14 +456,16 @@ db_tests_setup_1.testAll("test date with null works", function (_a) {
448
456
  });
449
457
  });
450
458
  }, false);
451
- db_tests_setup_1.testAll("test original value of date", function (_a) {
459
+ db_tests_setup_1.testAll('test original value of date', function (_a) {
452
460
  var createEntity = _a.createEntity;
453
461
  return tslib_1.__awaiter(void 0, void 0, void 0, function () {
454
462
  var r;
455
463
  return tslib_1.__generator(this, function (_b) {
456
464
  switch (_b.label) {
457
465
  case 0: return [4 /*yield*/, createEntity(testDateWithNull)];
458
- case 1: return [4 /*yield*/, (_b.sent()).create({ id: 1, d: new Date(1976, 6, 16) }).save()];
466
+ case 1: return [4 /*yield*/, (_b.sent())
467
+ .create({ id: 1, d: new Date(1976, 6, 16) })
468
+ .save()];
459
469
  case 2:
460
470
  r = _b.sent();
461
471
  expect(r.$.d.originalValue.getFullYear()).toBe(1976);
@@ -489,7 +499,7 @@ var testDateWithNull = /** @class */ (function (_super) {
489
499
  ], testDateWithNull);
490
500
  return testDateWithNull;
491
501
  }(remult3_1.EntityBase));
492
- db_tests_setup_1.testAll("test string with null works", function (_a) {
502
+ db_tests_setup_1.testAll('test string with null works', function (_a) {
493
503
  var createEntity = _a.createEntity;
494
504
  return tslib_1.__awaiter(void 0, void 0, void 0, function () {
495
505
  var repo, r;
@@ -511,7 +521,7 @@ db_tests_setup_1.testAll("test string with null works", function (_a) {
511
521
  });
512
522
  });
513
523
  });
514
- db_tests_setup_1.testAll("test tasks", function (_a) {
524
+ db_tests_setup_1.testAll('test tasks', function (_a) {
515
525
  var createEntity = _a.createEntity;
516
526
  return tslib_1.__awaiter(void 0, void 0, void 0, function () {
517
527
  var c, t, _b, _c, _d;
@@ -580,7 +590,7 @@ db_tests_setup_1.testAll("test filtering of null/''", function (_a) {
580
590
  case 5:
581
591
  _b.apply(void 0, [_d.sent()]).toBe(2);
582
592
  _c = expect;
583
- return [4 /*yield*/, repo.count({ refH: { "!=": null } })];
593
+ return [4 /*yield*/, repo.count({ refH: { '!=': null } })];
584
594
  case 6:
585
595
  _c.apply(void 0, [_d.sent()]).toBe(1);
586
596
  return [2 /*return*/];
@@ -588,7 +598,7 @@ db_tests_setup_1.testAll("test filtering of null/''", function (_a) {
588
598
  });
589
599
  });
590
600
  }, false);
591
- db_tests_setup_1.testAll("test paging with complex object", function (_a) {
601
+ db_tests_setup_1.testAll('test paging with complex object', function (_a) {
592
602
  var remult = _a.remult, createEntity = _a.createEntity;
593
603
  return tslib_1.__awaiter(void 0, void 0, void 0, function () {
594
604
  var c1, c2, c3, i, _b, _c, x, e_1_1;
@@ -630,7 +640,7 @@ db_tests_setup_1.testAll("test paging with complex object", function (_a) {
630
640
  case 11:
631
641
  _e.trys.push([11, 16, 17, 22]);
632
642
  _b = tslib_1.__asyncValues(remult.repo(p).query({
633
- orderBy: { c: "asc", id: "asc" }
643
+ orderBy: { c: 'asc', id: 'asc' },
634
644
  }));
635
645
  _e.label = 12;
636
646
  case 12: return [4 /*yield*/, _b.next()];
@@ -664,7 +674,7 @@ db_tests_setup_1.testAll("test paging with complex object", function (_a) {
664
674
  });
665
675
  });
666
676
  }, false);
667
- db_tests_setup_1.testAll("test paging with complex object_2", function (_a) {
677
+ db_tests_setup_1.testAll('test paging with complex object_2', function (_a) {
668
678
  var remult = _a.remult, createEntity = _a.createEntity;
669
679
  return tslib_1.__awaiter(void 0, void 0, void 0, function () {
670
680
  var c1, _b;
@@ -771,7 +781,7 @@ db_tests_setup_1.testAll("test filter doesn't collapse", function (_a) {
771
781
  });
772
782
  });
773
783
  });
774
- db_tests_setup_1.testAll("test that it works with inheritance", function (_a) {
784
+ db_tests_setup_1.testAll('test that it works with inheritance', function (_a) {
775
785
  var createEntity = _a.createEntity;
776
786
  return tslib_1.__awaiter(void 0, void 0, void 0, function () {
777
787
  var c, id, _b, _c, _d;
@@ -793,15 +803,15 @@ db_tests_setup_1.testAll("test that it works with inheritance", function (_a) {
793
803
  return [3 /*break*/, 2];
794
804
  case 5:
795
805
  _b = expect;
796
- return [4 /*yield*/, (c.count(entityForCustomFilter_1.entityForrawFilter1.oneAndThree()))];
806
+ return [4 /*yield*/, c.count(entityForCustomFilter_1.entityForrawFilter1.oneAndThree())];
797
807
  case 6:
798
808
  _b.apply(void 0, [_e.sent()]).toBe(2);
799
809
  _c = expect;
800
- return [4 /*yield*/, (c.findFirst(entityForCustomFilter_1.entityForrawFilter1.testNumericValue(2)))];
810
+ return [4 /*yield*/, c.findFirst(entityForCustomFilter_1.entityForrawFilter1.testNumericValue(2))];
801
811
  case 7:
802
812
  _c.apply(void 0, [(_e.sent()).id]).toBe(2);
803
813
  _d = expect;
804
- return [4 /*yield*/, (c.findFirst(entityForCustomFilter_1.entityForrawFilter1.testObjectValue({ val: 2 })))];
814
+ return [4 /*yield*/, c.findFirst(entityForCustomFilter_1.entityForrawFilter1.testObjectValue({ val: 2 }))];
805
815
  case 8:
806
816
  _d.apply(void 0, [(_e.sent()).id]).toBe(2);
807
817
  return [2 /*return*/];
@@ -809,7 +819,7 @@ db_tests_setup_1.testAll("test that it works with inheritance", function (_a) {
809
819
  });
810
820
  });
811
821
  });
812
- db_tests_setup_1.testAll("put with validations on column fails", function (_a) {
822
+ db_tests_setup_1.testAll('put with validations on column fails', function (_a) {
813
823
  var remult = _a.remult, createEntity = _a.createEntity;
814
824
  return tslib_1.__awaiter(void 0, void 0, void 0, function () {
815
825
  var s, c, api, t, d, x;
@@ -835,7 +845,7 @@ db_tests_setup_1.testAll("put with validations on column fails", function (_a) {
835
845
  });
836
846
  }); };
837
847
  return [4 /*yield*/, api.put(t, 1, {
838
- name: '1'
848
+ name: '1',
839
849
  })];
840
850
  case 3:
841
851
  _b.sent();
@@ -849,7 +859,7 @@ db_tests_setup_1.testAll("put with validations on column fails", function (_a) {
849
859
  });
850
860
  });
851
861
  });
852
- db_tests_setup_1.testAllDbs("Insert", function (_a) {
862
+ db_tests_setup_1.testAllDbs('Insert', function (_a) {
853
863
  var createData = _a.createData;
854
864
  return tslib_1.__awaiter(void 0, void 0, void 0, function () {
855
865
  var forCat, rows, c;
@@ -881,7 +891,7 @@ db_tests_setup_1.testAllDbs("Insert", function (_a) {
881
891
  });
882
892
  });
883
893
  }, false);
884
- db_tests_setup_1.testAllDbs("test delete", function (_a) {
894
+ db_tests_setup_1.testAllDbs('test delete', function (_a) {
885
895
  var createData = _a.createData;
886
896
  return tslib_1.__awaiter(void 0, void 0, void 0, function () {
887
897
  var c, rows;
@@ -912,7 +922,7 @@ db_tests_setup_1.testAllDbs("test delete", function (_a) {
912
922
  });
913
923
  });
914
924
  }, false);
915
- db_tests_setup_1.testAllDbs("test filter packer", function (_a) {
925
+ db_tests_setup_1.testAllDbs('test filter packer', function (_a) {
916
926
  var insertFourRows = _a.insertFourRows;
917
927
  return tslib_1.__awaiter(void 0, void 0, void 0, function () {
918
928
  var r, rows;
@@ -926,22 +936,31 @@ db_tests_setup_1.testAllDbs("test filter packer", function (_a) {
926
936
  rows = _b.sent();
927
937
  expect(rows.length).toBe(4);
928
938
  return [4 /*yield*/, r.find({
929
- where: filter_interfaces_1.Filter.entityFilterFromJson(r.metadata, filter_interfaces_1.entityFilterToJson(r.metadata, { description: 'x' }))
939
+ where: filter_interfaces_1.Filter.entityFilterFromJson(r.metadata, filter_interfaces_1.entityFilterToJson(r.metadata, { description: 'x' })),
930
940
  })];
931
941
  case 3:
932
942
  rows = _b.sent();
933
943
  expect(rows.length).toBe(2);
934
- return [4 /*yield*/, r.find({ where: filter_interfaces_1.Filter.entityFilterFromJson(r.metadata, filter_interfaces_1.entityFilterToJson(r.metadata, { id: 4 })) })];
944
+ return [4 /*yield*/, r.find({
945
+ where: filter_interfaces_1.Filter.entityFilterFromJson(r.metadata, filter_interfaces_1.entityFilterToJson(r.metadata, { id: 4 })),
946
+ })];
935
947
  case 4:
936
948
  rows = _b.sent();
937
949
  expect(rows.length).toBe(1);
938
950
  expect(rows[0].categoryName).toBe('yael');
939
- return [4 /*yield*/, r.find({ where: filter_interfaces_1.Filter.entityFilterFromJson(r.metadata, filter_interfaces_1.entityFilterToJson(r.metadata, { description: 'y', categoryName: 'yoni' })) })];
951
+ return [4 /*yield*/, r.find({
952
+ where: filter_interfaces_1.Filter.entityFilterFromJson(r.metadata, filter_interfaces_1.entityFilterToJson(r.metadata, {
953
+ description: 'y',
954
+ categoryName: 'yoni',
955
+ })),
956
+ })];
940
957
  case 5:
941
958
  rows = _b.sent();
942
959
  expect(rows.length).toBe(1);
943
960
  expect(rows[0].id).toBe(2);
944
- return [4 /*yield*/, r.find({ where: filter_interfaces_1.Filter.entityFilterFromJson(r.metadata, filter_interfaces_1.entityFilterToJson(r.metadata, { id: { $ne: [2, 4] } })) })];
961
+ return [4 /*yield*/, r.find({
962
+ where: filter_interfaces_1.Filter.entityFilterFromJson(r.metadata, filter_interfaces_1.entityFilterToJson(r.metadata, { id: { $ne: [2, 4] } })),
963
+ })];
945
964
  case 6:
946
965
  rows = _b.sent();
947
966
  expect(rows.length).toBe(2);
@@ -950,7 +969,7 @@ db_tests_setup_1.testAllDbs("test filter packer", function (_a) {
950
969
  });
951
970
  });
952
971
  }, false);
953
- db_tests_setup_1.testAll("Test unique Validation,", function (_a) {
972
+ db_tests_setup_1.testAll('Test unique Validation,', function (_a) {
954
973
  var createEntity = _a.createEntity;
955
974
  return tslib_1.__awaiter(void 0, void 0, void 0, function () {
956
975
  var type, c, cat, saved, err_1;
@@ -979,8 +998,8 @@ db_tests_setup_1.testAll("Test unique Validation,", function (_a) {
979
998
  case 2: return [2 /*return*/];
980
999
  }
981
1000
  });
982
- }); }
983
- })(type.prototype, "a");
1001
+ }); },
1002
+ })(type.prototype, 'a');
984
1003
  return [4 /*yield*/, createEntity(type)];
985
1004
  case 1:
986
1005
  c = _b.sent();
@@ -1003,7 +1022,7 @@ db_tests_setup_1.testAll("Test unique Validation,", function (_a) {
1003
1022
  return [3 /*break*/, 6];
1004
1023
  case 5:
1005
1024
  err_1 = _b.sent();
1006
- expect(cat._.fields.a.error).toEqual("already exists");
1025
+ expect(cat._.fields.a.error).toEqual('already exists');
1007
1026
  return [3 /*break*/, 6];
1008
1027
  case 6:
1009
1028
  expect(saved).toBe(false);
@@ -1012,7 +1031,7 @@ db_tests_setup_1.testAll("Test unique Validation,", function (_a) {
1012
1031
  });
1013
1032
  });
1014
1033
  });
1015
- db_tests_setup_1.testAll("Test unique Validation 2", function (_a) {
1034
+ db_tests_setup_1.testAll('Test unique Validation 2', function (_a) {
1016
1035
  var createEntity = _a.createEntity;
1017
1036
  return tslib_1.__awaiter(void 0, void 0, void 0, function () {
1018
1037
  var type, c, cat, saved, err_2;
@@ -1028,8 +1047,8 @@ db_tests_setup_1.testAll("Test unique Validation 2", function (_a) {
1028
1047
  }(remult_3_entities_1.Categories));
1029
1048
  remult3_1.Entity('sdfgds')(type);
1030
1049
  remult3_1.Fields.string({
1031
- validate: validators_1.Validators.unique
1032
- })(type.prototype, "a");
1050
+ validate: validators_1.Validators.unique,
1051
+ })(type.prototype, 'a');
1033
1052
  return [4 /*yield*/, createEntity(type)];
1034
1053
  case 1:
1035
1054
  c = _b.sent();
@@ -1051,7 +1070,7 @@ db_tests_setup_1.testAll("Test unique Validation 2", function (_a) {
1051
1070
  return [3 /*break*/, 6];
1052
1071
  case 5:
1053
1072
  err_2 = _b.sent();
1054
- expect(cat._.fields.a.error).toEqual("already exists");
1073
+ expect(cat._.fields.a.error).toEqual('already exists');
1055
1074
  return [3 /*break*/, 6];
1056
1075
  case 6:
1057
1076
  expect(saved).toBe(false);
@@ -1078,17 +1097,19 @@ var testNumbers = /** @class */ (function (_super) {
1078
1097
  ], testNumbers);
1079
1098
  return testNumbers;
1080
1099
  }(remult3_1.EntityBase));
1081
- db_tests_setup_1.testAll("test that integer and int work", function (_a) {
1100
+ db_tests_setup_1.testAll('test that integer and int work', function (_a) {
1082
1101
  var createEntity = _a.createEntity;
1083
1102
  return tslib_1.__awaiter(void 0, void 0, void 0, function () {
1084
1103
  var e;
1085
1104
  return tslib_1.__generator(this, function (_b) {
1086
1105
  switch (_b.label) {
1087
1106
  case 0: return [4 /*yield*/, createEntity(testNumbers)];
1088
- case 1: return [4 /*yield*/, (_b.sent()).create({
1107
+ case 1: return [4 /*yield*/, (_b.sent())
1108
+ .create({
1089
1109
  id: 1.5,
1090
- a: 1.5
1091
- }).save()];
1110
+ a: 1.5,
1111
+ })
1112
+ .save()];
1092
1113
  case 2:
1093
1114
  e = _b.sent();
1094
1115
  expect(e.id).toBe(2);
@@ -1098,7 +1119,7 @@ db_tests_setup_1.testAll("test that integer and int work", function (_a) {
1098
1119
  });
1099
1120
  });
1100
1121
  });
1101
- db_tests_setup_1.testAll("post with logic works and max in entity", function (_a) {
1122
+ db_tests_setup_1.testAll('post with logic works and max in entity', function (_a) {
1102
1123
  var remult = _a.remult, createEntity = _a.createEntity;
1103
1124
  return tslib_1.__awaiter(void 0, void 0, void 0, function () {
1104
1125
  var c, api, t, d;
@@ -1129,7 +1150,7 @@ db_tests_setup_1.testAll("post with logic works and max in entity", function (_a
1129
1150
  });
1130
1151
  });
1131
1152
  });
1132
- db_tests_setup_1.testAllDbs("get array works with filter in body", function (_a) {
1153
+ db_tests_setup_1.testAllDbs('get array works with filter in body', function (_a) {
1133
1154
  var createData = _a.createData, remult = _a.remult;
1134
1155
  return tslib_1.__awaiter(void 0, void 0, void 0, function () {
1135
1156
  var c, api, t, d;
@@ -1165,9 +1186,9 @@ db_tests_setup_1.testAllDbs("get array works with filter in body", function (_a)
1165
1186
  return [4 /*yield*/, api.getArray(t, {
1166
1187
  get: function (x) {
1167
1188
  return undefined;
1168
- }
1189
+ },
1169
1190
  }, {
1170
- "status.in": '[1, 2]'
1191
+ 'status.in': '[1, 2]',
1171
1192
  })];
1172
1193
  case 2:
1173
1194
  _b.sent();
@@ -1177,7 +1198,7 @@ db_tests_setup_1.testAllDbs("get array works with filter in body", function (_a)
1177
1198
  });
1178
1199
  });
1179
1200
  }, false);
1180
- db_tests_setup_1.testAllDbs("entity order by works", function (_a) {
1201
+ db_tests_setup_1.testAllDbs('entity order by works', function (_a) {
1181
1202
  var createData = _a.createData;
1182
1203
  return tslib_1.__awaiter(void 0, void 0, void 0, function () {
1183
1204
  var type, c, x, x, x;
@@ -1192,7 +1213,7 @@ db_tests_setup_1.testAllDbs("entity order by works", function (_a) {
1192
1213
  return type;
1193
1214
  }(remult_3_entities_1.Categories));
1194
1215
  remult3_1.Entity('', {
1195
- defaultOrderBy: { categoryName: "asc" },
1216
+ defaultOrderBy: { categoryName: 'asc' },
1196
1217
  })(type);
1197
1218
  return [4 /*yield*/, createData(function (insert) { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
1198
1219
  return tslib_1.__generator(this, function (_a) {
@@ -1200,10 +1221,10 @@ db_tests_setup_1.testAllDbs("entity order by works", function (_a) {
1200
1221
  case 0: return [4 /*yield*/, insert(1, 'noam')];
1201
1222
  case 1:
1202
1223
  _a.sent();
1203
- return [4 /*yield*/, insert(2, "yoni")];
1224
+ return [4 /*yield*/, insert(2, 'yoni')];
1204
1225
  case 2:
1205
1226
  _a.sent();
1206
- return [4 /*yield*/, insert(3, "yael")];
1227
+ return [4 /*yield*/, insert(3, 'yael')];
1207
1228
  case 3:
1208
1229
  _a.sent();
1209
1230
  return [2 /*return*/];
@@ -1235,7 +1256,7 @@ db_tests_setup_1.testAllDbs("entity order by works", function (_a) {
1235
1256
  });
1236
1257
  });
1237
1258
  }, false);
1238
- db_tests_setup_1.testAllDbs("put with validation works", function (_a) {
1259
+ db_tests_setup_1.testAllDbs('put with validation works', function (_a) {
1239
1260
  var createData = _a.createData, remult = _a.remult;
1240
1261
  return tslib_1.__awaiter(void 0, void 0, void 0, function () {
1241
1262
  var count, type, c, api, t, d, x;
@@ -1255,7 +1276,7 @@ db_tests_setup_1.testAllDbs("put with validation works", function (_a) {
1255
1276
  saving: function () {
1256
1277
  if (!entityWithValidations_1.testConfiguration.restDbRunningOnServer)
1257
1278
  count++;
1258
- }
1279
+ },
1259
1280
  })(type);
1260
1281
  return [4 /*yield*/, createData(function (insert) { return tslib_1.__awaiter(void 0, void 0, void 0, function () { return tslib_1.__generator(this, function (_a) {
1261
1282
  switch (_a.label) {
@@ -1276,13 +1297,13 @@ db_tests_setup_1.testAllDbs("put with validation works", function (_a) {
1276
1297
  }); };
1277
1298
  count = 0;
1278
1299
  return [4 /*yield*/, api.put(t, 1, {
1279
- categoryName: 'noam 1'
1300
+ categoryName: 'noam 1',
1280
1301
  })];
1281
1302
  case 2:
1282
1303
  _b.sent();
1283
1304
  d.test();
1284
1305
  return [4 /*yield*/, c.find({
1285
- where: { id: 1 }
1306
+ where: { id: 1 },
1286
1307
  })];
1287
1308
  case 3:
1288
1309
  x = _b.sent();
@@ -1293,7 +1314,7 @@ db_tests_setup_1.testAllDbs("put with validation works", function (_a) {
1293
1314
  });
1294
1315
  });
1295
1316
  });
1296
- db_tests_setup_1.testAll("saves correctly to db", function (_a) {
1317
+ db_tests_setup_1.testAll('saves correctly to db', function (_a) {
1297
1318
  var createEntity = _a.createEntity;
1298
1319
  return tslib_1.__awaiter(void 0, void 0, void 0, function () {
1299
1320
  var type, r;
@@ -1311,7 +1332,7 @@ db_tests_setup_1.testAll("saves correctly to db", function (_a) {
1311
1332
  }(remult3_1.EntityBase));
1312
1333
  remult3_1.Entity('asdf', { allowApiCrud: true })(type);
1313
1334
  remult3_1.Fields.number()(type.prototype, 'id');
1314
- remult3_1.Fields.boolean()(type.prototype, "ok");
1335
+ remult3_1.Fields.boolean()(type.prototype, 'ok');
1315
1336
  return [4 /*yield*/, createEntity(type)];
1316
1337
  case 1:
1317
1338
  r = (_b.sent()).create();
@@ -1345,7 +1366,7 @@ var autoIncrement = /** @class */ (function (_super) {
1345
1366
  tslib_1.__metadata("design:type", Number)
1346
1367
  ], autoIncrement.prototype, "stam", void 0);
1347
1368
  autoIncrement = tslib_1.__decorate([
1348
- remult3_1.Entity("autoi", { allowApiCrud: true })
1369
+ remult3_1.Entity('autoi', { allowApiCrud: true })
1349
1370
  ], autoIncrement);
1350
1371
  return autoIncrement;
1351
1372
  }(remult3_1.EntityBase));
@@ -1373,7 +1394,7 @@ db_tests_setup_1.testAll("auto increment can't be affected by insert or update",
1373
1394
  });
1374
1395
  });
1375
1396
  }, false);
1376
- db_tests_setup_1.testAll("Paging", function (_a) {
1397
+ db_tests_setup_1.testAll('Paging', function (_a) {
1377
1398
  var createEntity = _a.createEntity;
1378
1399
  return tslib_1.__awaiter(void 0, void 0, void 0, function () {
1379
1400
  var s, _b, _c;
@@ -1383,11 +1404,11 @@ db_tests_setup_1.testAll("Paging", function (_a) {
1383
1404
  case 1:
1384
1405
  s = _d.sent();
1385
1406
  _b = expect;
1386
- return [4 /*yield*/, s.find({ limit: 3, orderBy: { myId: "asc" } })];
1407
+ return [4 /*yield*/, s.find({ limit: 3, orderBy: { myId: 'asc' } })];
1387
1408
  case 2:
1388
1409
  _b.apply(void 0, [(_d.sent()).length]).toBe(3);
1389
1410
  _c = expect;
1390
- return [4 /*yield*/, s.find({ limit: 3, orderBy: { myId: "asc" }, page: 2 })];
1411
+ return [4 /*yield*/, s.find({ limit: 3, orderBy: { myId: 'asc' }, page: 2 })];
1391
1412
  case 3:
1392
1413
  _c.apply(void 0, [(_d.sent()).length]).toBe(1);
1393
1414
  return [2 /*return*/];
@@ -1395,7 +1416,7 @@ db_tests_setup_1.testAll("Paging", function (_a) {
1395
1416
  });
1396
1417
  });
1397
1418
  }, false);
1398
- db_tests_setup_1.testAll("filter", function (_a) {
1419
+ db_tests_setup_1.testAll('filter', function (_a) {
1399
1420
  var createEntity = _a.createEntity;
1400
1421
  return tslib_1.__awaiter(void 0, void 0, void 0, function () {
1401
1422
  var s, _b;
@@ -1410,7 +1431,7 @@ db_tests_setup_1.testAll("filter", function (_a) {
1410
1431
  _b = expect;
1411
1432
  return [4 /*yield*/, s.count({
1412
1433
  a: 'z',
1413
- $and: [testFilter.search('')]
1434
+ $and: [testFilter.search('')],
1414
1435
  })];
1415
1436
  case 3:
1416
1437
  _b.apply(void 0, [_c.sent()]).toBe(0);
@@ -1419,7 +1440,105 @@ db_tests_setup_1.testAll("filter", function (_a) {
1419
1440
  });
1420
1441
  });
1421
1442
  }, false);
1422
- db_tests_setup_1.testAll("large string field", function (_a) {
1443
+ db_tests_setup_1.testAll('filter 2_1', function (_a) {
1444
+ var createEntity = _a.createEntity;
1445
+ return tslib_1.__awaiter(void 0, void 0, void 0, function () {
1446
+ var s, _b;
1447
+ return tslib_1.__generator(this, function (_c) {
1448
+ switch (_c.label) {
1449
+ case 0: return [4 /*yield*/, createEntity(testFilter)];
1450
+ case 1:
1451
+ s = _c.sent();
1452
+ return [4 /*yield*/, s.insert({ id: 1, a: 'a', b: 'b', c: 'c' })];
1453
+ case 2:
1454
+ _c.sent();
1455
+ _b = expect;
1456
+ return [4 /*yield*/, s.count({
1457
+ $and: [{ a: { '!=': 'b' } }, { a: { '!=': 'c' } }],
1458
+ })];
1459
+ case 3:
1460
+ _b.apply(void 0, [_c.sent()]).toBe(1);
1461
+ return [2 /*return*/];
1462
+ }
1463
+ });
1464
+ });
1465
+ }, false);
1466
+ db_tests_setup_1.testAll('filter 2', function (_a) {
1467
+ var createEntity = _a.createEntity;
1468
+ return tslib_1.__awaiter(void 0, void 0, void 0, function () {
1469
+ var s, _b;
1470
+ return tslib_1.__generator(this, function (_c) {
1471
+ switch (_c.label) {
1472
+ case 0: return [4 /*yield*/, createEntity(testFilter)];
1473
+ case 1:
1474
+ s = _c.sent();
1475
+ return [4 /*yield*/, s.insert({ id: 1, a: 'a', b: 'b', c: 'c' })];
1476
+ case 2:
1477
+ _c.sent();
1478
+ _b = expect;
1479
+ return [4 /*yield*/, s.count({
1480
+ $and: [testFilter.differentFrom('b'), testFilter.differentFrom('c')],
1481
+ })];
1482
+ case 3:
1483
+ _b.apply(void 0, [_c.sent()]).toBe(1);
1484
+ return [2 /*return*/];
1485
+ }
1486
+ });
1487
+ });
1488
+ }, false);
1489
+ db_tests_setup_1.testAll('filter 3', function (_a) {
1490
+ var createEntity = _a.createEntity;
1491
+ return tslib_1.__awaiter(void 0, void 0, void 0, function () {
1492
+ var s, _b;
1493
+ return tslib_1.__generator(this, function (_c) {
1494
+ switch (_c.label) {
1495
+ case 0: return [4 /*yield*/, createEntity(testFilter)];
1496
+ case 1:
1497
+ s = _c.sent();
1498
+ return [4 /*yield*/, s.insert({ id: 1, a: 'a', b: 'b', c: 'c' })];
1499
+ case 2:
1500
+ _c.sent();
1501
+ _b = expect;
1502
+ return [4 /*yield*/, s.count({
1503
+ $and: [
1504
+ testFilter.differentFromArray(['x', 'b']),
1505
+ testFilter.differentFromArray(['y', 'c']),
1506
+ ],
1507
+ })];
1508
+ case 3:
1509
+ _b.apply(void 0, [_c.sent()]).toBe(1);
1510
+ return [2 /*return*/];
1511
+ }
1512
+ });
1513
+ });
1514
+ }, false);
1515
+ db_tests_setup_1.testAll('filter 4', function (_a) {
1516
+ var createEntity = _a.createEntity;
1517
+ return tslib_1.__awaiter(void 0, void 0, void 0, function () {
1518
+ var s, _b;
1519
+ return tslib_1.__generator(this, function (_c) {
1520
+ switch (_c.label) {
1521
+ case 0: return [4 /*yield*/, createEntity(testFilter)];
1522
+ case 1:
1523
+ s = _c.sent();
1524
+ return [4 /*yield*/, s.insert({ id: 1, a: 'a', b: 'b', c: 'c' })];
1525
+ case 2:
1526
+ _c.sent();
1527
+ _b = expect;
1528
+ return [4 /*yield*/, s.count({
1529
+ $and: [
1530
+ testFilter.differentFromObj({ str: 'b' }),
1531
+ testFilter.differentFromObj({ str: 'c' }),
1532
+ ],
1533
+ })];
1534
+ case 3:
1535
+ _b.apply(void 0, [_c.sent()]).toBe(1);
1536
+ return [2 /*return*/];
1537
+ }
1538
+ });
1539
+ });
1540
+ }, false);
1541
+ db_tests_setup_1.testAll('large string field', function (_a) {
1423
1542
  var createEntity = _a.createEntity;
1424
1543
  return tslib_1.__awaiter(void 0, void 0, void 0, function () {
1425
1544
  var s, r;
@@ -1428,13 +1547,13 @@ db_tests_setup_1.testAll("large string field", function (_a) {
1428
1547
  case 0: return [4 /*yield*/, createEntity(stam)];
1429
1548
  case 1:
1430
1549
  s = _b.sent();
1431
- return [4 /*yield*/, s.insert({ title: "1234567890".repeat(100) })];
1550
+ return [4 /*yield*/, s.insert({ title: '1234567890'.repeat(100) })];
1432
1551
  case 2:
1433
1552
  _b.sent();
1434
1553
  return [4 /*yield*/, s.findFirst()];
1435
1554
  case 3:
1436
1555
  r = _b.sent();
1437
- expect(r.title).toBe("1234567890".repeat(100));
1556
+ expect(r.title).toBe('1234567890'.repeat(100));
1438
1557
  return [2 /*return*/];
1439
1558
  }
1440
1559
  });
@@ -1448,14 +1567,28 @@ var testFilter = /** @class */ (function () {
1448
1567
  this.c = '';
1449
1568
  }
1450
1569
  testFilter.search = filter_interfaces_1.Filter.createCustom(function (str, remult) { return ({
1451
- $and: [{
1452
- $or: [
1453
- { a: 'a' },
1454
- { b: 'a' },
1455
- { c: 'a' }
1456
- ]
1457
- }]
1570
+ $and: [
1571
+ {
1572
+ $or: [{ a: 'a' }, { b: 'a' }, { c: 'a' }],
1573
+ },
1574
+ ],
1458
1575
  }); });
1576
+ testFilter.differentFrom = filter_interfaces_1.Filter.createCustom(function (str) {
1577
+ return {
1578
+ a: { '!=': str },
1579
+ };
1580
+ });
1581
+ testFilter.differentFromObj = filter_interfaces_1.Filter.createCustom(function (_a) {
1582
+ var str = _a.str;
1583
+ return {
1584
+ a: { '!=': str },
1585
+ };
1586
+ });
1587
+ testFilter.differentFromArray = filter_interfaces_1.Filter.createCustom(function (str) {
1588
+ return {
1589
+ a: { '!=': str },
1590
+ };
1591
+ });
1459
1592
  tslib_1.__decorate([
1460
1593
  remult3_1.Fields.integer(),
1461
1594
  tslib_1.__metadata("design:type", Number)
@@ -1473,7 +1606,7 @@ var testFilter = /** @class */ (function () {
1473
1606
  tslib_1.__metadata("design:type", String)
1474
1607
  ], testFilter.prototype, "c", void 0);
1475
1608
  testFilter = tslib_1.__decorate([
1476
- remult3_1.Entity("testfilter", { allowApiCrud: true })
1609
+ remult3_1.Entity('testfilter', { allowApiCrud: true })
1477
1610
  ], testFilter);
1478
1611
  return testFilter;
1479
1612
  }());
@@ -1514,7 +1647,7 @@ var stam = /** @class */ (function (_super) {
1514
1647
  tslib_1.__metadata("design:type", String)
1515
1648
  ], stam.prototype, "title", void 0);
1516
1649
  stam = tslib_1.__decorate([
1517
- remult3_1.Entity("a", { allowApiCrud: true })
1650
+ remult3_1.Entity('a', { allowApiCrud: true })
1518
1651
  ], stam);
1519
1652
  return stam;
1520
1653
  }(remult3_1.EntityBase));
@@ -1567,7 +1700,7 @@ var tasksWithEnum = /** @class */ (function (_super) {
1567
1700
  ], tasksWithEnum.prototype, "priority", void 0);
1568
1701
  tasksWithEnum = tslib_1.__decorate([
1569
1702
  remult3_1.Entity('tasksWithEnum', {
1570
- allowApiCrud: true
1703
+ allowApiCrud: true,
1571
1704
  })
1572
1705
  ], tasksWithEnum);
1573
1706
  return tasksWithEnum;
@@ -1579,7 +1712,7 @@ var Priority;
1579
1712
  Priority[Priority["High"] = 1] = "High";
1580
1713
  Priority[Priority["Critical"] = 2] = "Critical";
1581
1714
  })(Priority = exports.Priority || (exports.Priority = {}));
1582
- db_tests_setup_1.testAll("task with enum", function (_a) {
1715
+ db_tests_setup_1.testAll('task with enum', function (_a) {
1583
1716
  var createEntity = _a.createEntity;
1584
1717
  return tslib_1.__awaiter(void 0, void 0, void 0, function () {
1585
1718
  var r, item, _b, _c;
@@ -1590,7 +1723,7 @@ db_tests_setup_1.testAll("task with enum", function (_a) {
1590
1723
  r = _d.sent();
1591
1724
  return [4 /*yield*/, r.insert({
1592
1725
  title: 'a',
1593
- priority: Priority.Critical
1726
+ priority: Priority.Critical,
1594
1727
  })];
1595
1728
  case 2:
1596
1729
  _d.sent();
@@ -1634,7 +1767,7 @@ var tasksWithStringEnum = /** @class */ (function (_super) {
1634
1767
  ], tasksWithStringEnum.prototype, "priority", void 0);
1635
1768
  tasksWithStringEnum = tslib_1.__decorate([
1636
1769
  remult3_1.Entity('tasksWithStringEnum', {
1637
- allowApiCrud: true
1770
+ allowApiCrud: true,
1638
1771
  })
1639
1772
  ], tasksWithStringEnum);
1640
1773
  return tasksWithStringEnum;
@@ -1646,7 +1779,7 @@ var PriorityWithString;
1646
1779
  PriorityWithString["High"] = "High";
1647
1780
  PriorityWithString["Critical"] = "Critical";
1648
1781
  })(PriorityWithString = exports.PriorityWithString || (exports.PriorityWithString = {}));
1649
- db_tests_setup_1.testAll("task with enum string", function (_a) {
1782
+ db_tests_setup_1.testAll('task with enum string', function (_a) {
1650
1783
  var createEntity = _a.createEntity;
1651
1784
  return tslib_1.__awaiter(void 0, void 0, void 0, function () {
1652
1785
  var r, item, _b, _c;
@@ -1657,7 +1790,7 @@ db_tests_setup_1.testAll("task with enum string", function (_a) {
1657
1790
  r = _d.sent();
1658
1791
  return [4 /*yield*/, r.insert({
1659
1792
  title: 'a',
1660
- priority: PriorityWithString.Critical
1793
+ priority: PriorityWithString.Critical,
1661
1794
  })];
1662
1795
  case 2:
1663
1796
  _d.sent();
@@ -1678,7 +1811,7 @@ db_tests_setup_1.testAll("task with enum string", function (_a) {
1678
1811
  });
1679
1812
  });
1680
1813
  });
1681
- db_tests_setup_1.testAll("test transaction rollback", function (_a) {
1814
+ db_tests_setup_1.testAll('test transaction rollback', function (_a) {
1682
1815
  var db = _a.db, createEntity = _a.createEntity;
1683
1816
  return tslib_1.__awaiter(void 0, void 0, void 0, function () {
1684
1817
  var fail, r, _b, _c;
@@ -1689,7 +1822,7 @@ db_tests_setup_1.testAll("test transaction rollback", function (_a) {
1689
1822
  return [4 /*yield*/, createEntity(stam)];
1690
1823
  case 1:
1691
1824
  r = _d.sent();
1692
- return [4 /*yield*/, r.insert({ title: "task b", id: 1 })];
1825
+ return [4 /*yield*/, r.insert({ title: 'task b', id: 1 })];
1693
1826
  case 2:
1694
1827
  _d.sent();
1695
1828
  _d.label = 3;
@@ -1701,14 +1834,14 @@ db_tests_setup_1.testAll("test transaction rollback", function (_a) {
1701
1834
  switch (_b.label) {
1702
1835
  case 0:
1703
1836
  remultWithTransaction = new context_1.Remult(db).repo(stam);
1704
- return [4 /*yield*/, remultWithTransaction.insert({ title: "task a", id: 2 })];
1837
+ return [4 /*yield*/, remultWithTransaction.insert({ title: 'task a', id: 2 })];
1705
1838
  case 1:
1706
1839
  _b.sent();
1707
1840
  _a = expect;
1708
1841
  return [4 /*yield*/, remultWithTransaction.count()];
1709
1842
  case 2:
1710
1843
  _a.apply(void 0, [_b.sent()]).toBe(2);
1711
- throw "error";
1844
+ throw 'error';
1712
1845
  }
1713
1846
  });
1714
1847
  }); })];
@@ -1730,7 +1863,7 @@ db_tests_setup_1.testAll("test transaction rollback", function (_a) {
1730
1863
  });
1731
1864
  });
1732
1865
  }, false, { exclude: [db_tests_setup_1.TestDbs.inMemory] });
1733
- db_tests_setup_1.testAll("test date", function (_a) {
1866
+ db_tests_setup_1.testAll('test date', function (_a) {
1734
1867
  var createEntity = _a.createEntity;
1735
1868
  return tslib_1.__awaiter(void 0, void 0, void 0, function () {
1736
1869
  var e, r, item;
@@ -1744,9 +1877,9 @@ db_tests_setup_1.testAll("test date", function (_a) {
1744
1877
  }
1745
1878
  return class_4;
1746
1879
  }());
1747
- DecoratorReplacer_1.describeClass(e, remult3_1.Entity("tdate", { allowApiCrud: true }), {
1880
+ DecoratorReplacer_1.describeClass(e, remult3_1.Entity('tdate', { allowApiCrud: true }), {
1748
1881
  a: remult3_1.Fields.number(),
1749
- d: remult3_1.Fields.date()
1882
+ d: remult3_1.Fields.date(),
1750
1883
  });
1751
1884
  return [4 /*yield*/, createEntity(e)];
1752
1885
  case 1:
@@ -1763,7 +1896,7 @@ db_tests_setup_1.testAll("test date", function (_a) {
1763
1896
  });
1764
1897
  });
1765
1898
  }, false);
1766
- db_tests_setup_1.testAll("test live query storage", function (_a) {
1899
+ db_tests_setup_1.testAll('test live query storage', function (_a) {
1767
1900
  var db = _a.db, remult = _a.remult, createEntity = _a.createEntity;
1768
1901
  return tslib_1.__awaiter(void 0, void 0, void 0, function () {
1769
1902
  var x, id, _b;
@@ -1780,12 +1913,12 @@ db_tests_setup_1.testAll("test live query storage", function (_a) {
1780
1913
  _c.label = 3;
1781
1914
  case 3:
1782
1915
  id = uuid_1.v4();
1783
- return [4 /*yield*/, x.add({ id: id, entityKey: 'x', data: "noam" })];
1916
+ return [4 /*yield*/, x.add({ id: id, entityKey: 'x', data: 'noam' })];
1784
1917
  case 4:
1785
1918
  _c.sent();
1786
- return [4 /*yield*/, x.forEach("x", function (args) { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
1919
+ return [4 /*yield*/, x.forEach('x', function (args) { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
1787
1920
  return tslib_1.__generator(this, function (_a) {
1788
- expect(args.query.data).toBe("noam");
1921
+ expect(args.query.data).toBe('noam');
1789
1922
  return [2 /*return*/];
1790
1923
  });
1791
1924
  }); })];
@@ -1794,15 +1927,15 @@ db_tests_setup_1.testAll("test live query storage", function (_a) {
1794
1927
  _b = expect;
1795
1928
  return [4 /*yield*/, x.keepAliveAndReturnUnknownQueryIds([id])];
1796
1929
  case 6:
1797
- _b.apply(void 0, [(_c.sent())]).toEqual([]);
1930
+ _b.apply(void 0, [_c.sent()]).toEqual([]);
1798
1931
  return [2 /*return*/];
1799
1932
  }
1800
1933
  });
1801
1934
  });
1802
1935
  }, false, {
1803
- exclude: [db_tests_setup_1.TestDbs.restDataProvider]
1936
+ exclude: [db_tests_setup_1.TestDbs.restDataProvider],
1804
1937
  });
1805
- db_tests_setup_1.testAll("test contains with names with casing", function (_a) {
1938
+ db_tests_setup_1.testAll('test contains with names with casing', function (_a) {
1806
1939
  var createEntity = _a.createEntity;
1807
1940
  return tslib_1.__awaiter(void 0, void 0, void 0, function () {
1808
1941
  var e, r, item;
@@ -1816,28 +1949,28 @@ db_tests_setup_1.testAll("test contains with names with casing", function (_a) {
1816
1949
  }
1817
1950
  return class_5;
1818
1951
  }());
1819
- DecoratorReplacer_1.describeClass(e, remult3_1.Entity("testNameContains", { allowApiCrud: true }), {
1952
+ DecoratorReplacer_1.describeClass(e, remult3_1.Entity('testNameContains', { allowApiCrud: true }), {
1820
1953
  a: remult3_1.Fields.number(),
1821
- firstName: remult3_1.Fields.string()
1954
+ firstName: remult3_1.Fields.string(),
1822
1955
  });
1823
1956
  return [4 /*yield*/, createEntity(e)];
1824
1957
  case 1:
1825
1958
  r = _b.sent();
1826
- return [4 /*yield*/, r.insert({ a: 1, firstName: "noam" })];
1959
+ return [4 /*yield*/, r.insert({ a: 1, firstName: 'noam' })];
1827
1960
  case 2:
1828
1961
  _b.sent();
1829
- return [4 /*yield*/, r.findFirst({ firstName: { $contains: "oa" } })];
1962
+ return [4 /*yield*/, r.findFirst({ firstName: { $contains: 'oa' } })];
1830
1963
  case 3:
1831
1964
  item = _b.sent();
1832
- expect(item.firstName).toBe("noam");
1965
+ expect(item.firstName).toBe('noam');
1833
1966
  return [2 /*return*/];
1834
1967
  }
1835
1968
  });
1836
1969
  });
1837
1970
  }, false, {
1838
- exclude: [db_tests_setup_1.TestDbs.mongo]
1971
+ exclude: [db_tests_setup_1.TestDbs.mongo],
1839
1972
  });
1840
- db_tests_setup_1.testAll("test live query storage", function (x) { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
1973
+ db_tests_setup_1.testAll('test live query storage', function (x) { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
1841
1974
  var s, entityKey, id;
1842
1975
  return tslib_1.__generator(this, function (_a) {
1843
1976
  switch (_a.label) {
@@ -1848,7 +1981,7 @@ db_tests_setup_1.testAll("test live query storage", function (x) { return tslib_
1848
1981
  return [4 /*yield*/, s.ensureSchema()];
1849
1982
  case 2:
1850
1983
  _a.sent();
1851
- entityKey = "ek";
1984
+ entityKey = 'ek';
1852
1985
  id = 'id';
1853
1986
  return [4 /*yield*/, s.add({ id: id, entityKey: entityKey, data: {} })];
1854
1987
  case 3:
@@ -1873,7 +2006,7 @@ db_tests_setup_1.testAll("test live query storage", function (x) { return tslib_
1873
2006
  }
1874
2007
  });
1875
2008
  }); }, false, { exclude: [db_tests_setup_1.TestDbs.restDataProvider] });
1876
- db_tests_setup_1.testAll("test json structure using object", function (_a) {
2009
+ db_tests_setup_1.testAll('test json structure using object', function (_a) {
1877
2010
  var createEntity = _a.createEntity;
1878
2011
  return tslib_1.__awaiter(void 0, void 0, void 0, function () {
1879
2012
  var e, r, item;
@@ -1886,20 +2019,20 @@ db_tests_setup_1.testAll("test json structure using object", function (_a) {
1886
2019
  }
1887
2020
  return class_6;
1888
2021
  }());
1889
- DecoratorReplacer_1.describeClass(e, remult3_1.Entity("testJsonStructure", { allowApiCrud: true }), {
2022
+ DecoratorReplacer_1.describeClass(e, remult3_1.Entity('testJsonStructure', { allowApiCrud: true }), {
1890
2023
  a: remult3_1.Fields.number(),
1891
- person: remult3_1.Fields.object()
2024
+ person: remult3_1.Fields.object(),
1892
2025
  });
1893
2026
  return [4 /*yield*/, createEntity(e)];
1894
2027
  case 1:
1895
2028
  r = _b.sent();
1896
- return [4 /*yield*/, r.insert({ a: 1, person: { firstName: "noam", lastName: "honig" } })];
2029
+ return [4 /*yield*/, r.insert({ a: 1, person: { firstName: 'noam', lastName: 'honig' } })];
1897
2030
  case 2:
1898
2031
  _b.sent();
1899
2032
  return [4 /*yield*/, r.findFirst()];
1900
2033
  case 3:
1901
2034
  item = _b.sent();
1902
- expect(item.person).toEqual({ firstName: "noam", lastName: "honig" });
2035
+ expect(item.person).toEqual({ firstName: 'noam', lastName: 'honig' });
1903
2036
  return [2 /*return*/];
1904
2037
  }
1905
2038
  });
@@ -1908,7 +2041,7 @@ db_tests_setup_1.testAll("test json structure using object", function (_a) {
1908
2041
  var testObject = /** @class */ (function () {
1909
2042
  function testObject() {
1910
2043
  this.id = 0;
1911
- this.person = { firstName: "noam", lastName: "honig" };
2044
+ this.person = { firstName: 'noam', lastName: 'honig' };
1912
2045
  }
1913
2046
  tslib_1.__decorate([
1914
2047
  remult3_1.Fields.integer(),
@@ -1919,11 +2052,11 @@ var testObject = /** @class */ (function () {
1919
2052
  tslib_1.__metadata("design:type", Object)
1920
2053
  ], testObject.prototype, "person", void 0);
1921
2054
  testObject = tslib_1.__decorate([
1922
- remult3_1.Entity("testObject", { allowApiCrud: true })
2055
+ remult3_1.Entity('testObject', { allowApiCrud: true })
1923
2056
  ], testObject);
1924
2057
  return testObject;
1925
2058
  }());
1926
- db_tests_setup_1.testAll("test object entity", function (_a) {
2059
+ db_tests_setup_1.testAll('test object entity', function (_a) {
1927
2060
  var createEntity = _a.createEntity;
1928
2061
  return tslib_1.__awaiter(void 0, void 0, void 0, function () {
1929
2062
  var r, item;
@@ -1932,13 +2065,13 @@ db_tests_setup_1.testAll("test object entity", function (_a) {
1932
2065
  case 0: return [4 /*yield*/, createEntity(testObject)];
1933
2066
  case 1:
1934
2067
  r = _b.sent();
1935
- return [4 /*yield*/, r.insert({ id: 1, person: { firstName: "noam", lastName: "honig" } })];
2068
+ return [4 /*yield*/, r.insert({ id: 1, person: { firstName: 'noam', lastName: 'honig' } })];
1936
2069
  case 2:
1937
2070
  _b.sent();
1938
2071
  return [4 /*yield*/, r.findFirst()];
1939
2072
  case 3:
1940
2073
  item = _b.sent();
1941
- expect(item.person).toEqual({ firstName: "noam", lastName: "honig" });
2074
+ expect(item.person).toEqual({ firstName: 'noam', lastName: 'honig' });
1942
2075
  return [2 /*return*/];
1943
2076
  }
1944
2077
  });
@@ -1947,7 +2080,7 @@ db_tests_setup_1.testAll("test object entity", function (_a) {
1947
2080
  var testObjectJson = /** @class */ (function () {
1948
2081
  function testObjectJson() {
1949
2082
  this.id = 0;
1950
- this.person = { firstName: "noam", lastName: "honig" };
2083
+ this.person = { firstName: 'noam', lastName: 'honig' };
1951
2084
  }
1952
2085
  tslib_1.__decorate([
1953
2086
  remult3_1.Fields.integer(),
@@ -1958,11 +2091,11 @@ var testObjectJson = /** @class */ (function () {
1958
2091
  tslib_1.__metadata("design:type", Object)
1959
2092
  ], testObjectJson.prototype, "person", void 0);
1960
2093
  testObjectJson = tslib_1.__decorate([
1961
- remult3_1.Entity("testObjectJson", { allowApiCrud: true })
2094
+ remult3_1.Entity('testObjectJson', { allowApiCrud: true })
1962
2095
  ], testObjectJson);
1963
2096
  return testObjectJson;
1964
2097
  }());
1965
- db_tests_setup_1.testAll("test object entity", function (_a) {
2098
+ db_tests_setup_1.testAll('test object entity', function (_a) {
1966
2099
  var createEntity = _a.createEntity;
1967
2100
  return tslib_1.__awaiter(void 0, void 0, void 0, function () {
1968
2101
  var r, item;
@@ -1971,19 +2104,19 @@ db_tests_setup_1.testAll("test object entity", function (_a) {
1971
2104
  case 0: return [4 /*yield*/, createEntity(testObjectJson)];
1972
2105
  case 1:
1973
2106
  r = _b.sent();
1974
- return [4 /*yield*/, r.insert({ id: 1, person: { firstName: "noam", lastName: "honig" } })];
2107
+ return [4 /*yield*/, r.insert({ id: 1, person: { firstName: 'noam', lastName: 'honig' } })];
1975
2108
  case 2:
1976
2109
  _b.sent();
1977
2110
  return [4 /*yield*/, r.findFirst()];
1978
2111
  case 3:
1979
2112
  item = _b.sent();
1980
- expect(item.person).toEqual({ firstName: "noam", lastName: "honig" });
2113
+ expect(item.person).toEqual({ firstName: 'noam', lastName: 'honig' });
1981
2114
  return [2 /*return*/];
1982
2115
  }
1983
2116
  });
1984
2117
  });
1985
2118
  }, false);
1986
- db_tests_setup_1.testAll("test json structure", function (_a) {
2119
+ db_tests_setup_1.testAll('test json structure', function (_a) {
1987
2120
  var createEntity = _a.createEntity;
1988
2121
  return tslib_1.__awaiter(void 0, void 0, void 0, function () {
1989
2122
  var e, r, item;
@@ -1996,26 +2129,26 @@ db_tests_setup_1.testAll("test json structure", function (_a) {
1996
2129
  }
1997
2130
  return class_7;
1998
2131
  }());
1999
- DecoratorReplacer_1.describeClass(e, remult3_1.Entity("testJsonFieldType", { allowApiCrud: true }), {
2132
+ DecoratorReplacer_1.describeClass(e, remult3_1.Entity('testJsonFieldType', { allowApiCrud: true }), {
2000
2133
  a: remult3_1.Fields.number(),
2001
- person: remult3_1.Fields.json()
2134
+ person: remult3_1.Fields.json(),
2002
2135
  });
2003
2136
  return [4 /*yield*/, createEntity(e)];
2004
2137
  case 1:
2005
2138
  r = _b.sent();
2006
- return [4 /*yield*/, r.insert({ a: 1, person: { firstName: "noam", lastName: "honig" } })];
2139
+ return [4 /*yield*/, r.insert({ a: 1, person: { firstName: 'noam', lastName: 'honig' } })];
2007
2140
  case 2:
2008
2141
  _b.sent();
2009
2142
  return [4 /*yield*/, r.findFirst()];
2010
2143
  case 3:
2011
2144
  item = _b.sent();
2012
- expect(item.person).toEqual({ firstName: "noam", lastName: "honig" });
2145
+ expect(item.person).toEqual({ firstName: 'noam', lastName: 'honig' });
2013
2146
  return [2 /*return*/];
2014
2147
  }
2015
2148
  });
2016
2149
  });
2017
2150
  }, false);
2018
- db_tests_setup_1.testAll("test json structure 2", function (_a) {
2151
+ db_tests_setup_1.testAll('test json structure 2', function (_a) {
2019
2152
  var createEntity = _a.createEntity;
2020
2153
  return tslib_1.__awaiter(void 0, void 0, void 0, function () {
2021
2154
  var e, r, item;
@@ -2029,26 +2162,26 @@ db_tests_setup_1.testAll("test json structure 2", function (_a) {
2029
2162
  }
2030
2163
  return class_8;
2031
2164
  }());
2032
- DecoratorReplacer_1.describeClass(e, remult3_1.Entity("testJsonFieldType2", { allowApiCrud: true }), {
2165
+ DecoratorReplacer_1.describeClass(e, remult3_1.Entity('testJsonFieldType2', { allowApiCrud: true }), {
2033
2166
  a: remult3_1.Fields.number(),
2034
- items: remult3_1.Fields.json()
2167
+ items: remult3_1.Fields.json(),
2035
2168
  });
2036
2169
  return [4 /*yield*/, createEntity(e)];
2037
2170
  case 1:
2038
2171
  r = _b.sent();
2039
- return [4 /*yield*/, r.insert({ a: 1, items: ["a", "b"] })];
2172
+ return [4 /*yield*/, r.insert({ a: 1, items: ['a', 'b'] })];
2040
2173
  case 2:
2041
2174
  _b.sent();
2042
2175
  return [4 /*yield*/, r.findFirst()];
2043
2176
  case 3:
2044
2177
  item = _b.sent();
2045
- expect(item.items).toEqual(["a", "b"]);
2178
+ expect(item.items).toEqual(['a', 'b']);
2046
2179
  return [2 /*return*/];
2047
2180
  }
2048
2181
  });
2049
2182
  });
2050
- }, false, { exclude: [db_tests_setup_1.TestDbs.mongo] });
2051
- db_tests_setup_1.testAll("test json structure 3", function (_a) {
2183
+ }, false);
2184
+ db_tests_setup_1.testAll('test json structure 3', function (_a) {
2052
2185
  var createEntity = _a.createEntity;
2053
2186
  return tslib_1.__awaiter(void 0, void 0, void 0, function () {
2054
2187
  var e, r, item, _b;
@@ -2062,22 +2195,22 @@ db_tests_setup_1.testAll("test json structure 3", function (_a) {
2062
2195
  }
2063
2196
  return class_9;
2064
2197
  }());
2065
- DecoratorReplacer_1.describeClass(e, remult3_1.Entity("testJsonFieldType3", { allowApiCrud: true }), {
2198
+ DecoratorReplacer_1.describeClass(e, remult3_1.Entity('testJsonFieldType3', { allowApiCrud: true }), {
2066
2199
  a: remult3_1.Fields.number(),
2067
- items: remult3_1.Fields.object()
2200
+ items: remult3_1.Fields.object(),
2068
2201
  });
2069
2202
  return [4 /*yield*/, createEntity(e)];
2070
2203
  case 1:
2071
2204
  r = _c.sent();
2072
- return [4 /*yield*/, r.insert({ a: 1, items: ["a", "b"] })];
2205
+ return [4 /*yield*/, r.insert({ a: 1, items: ['a', 'b'] })];
2073
2206
  case 2:
2074
2207
  _c.sent();
2075
2208
  return [4 /*yield*/, r.findFirst()];
2076
2209
  case 3:
2077
2210
  item = _c.sent();
2078
- expect(item.items).toEqual(["a", "b"]);
2211
+ expect(item.items).toEqual(['a', 'b']);
2079
2212
  _b = expect;
2080
- return [4 /*yield*/, r.count({ items: { $contains: "b" } })];
2213
+ return [4 /*yield*/, r.count({ items: { $contains: 'b' } })];
2081
2214
  case 4:
2082
2215
  _b.apply(void 0, [_c.sent()]).toBe(1);
2083
2216
  return [2 /*return*/];
@@ -2085,5 +2218,69 @@ db_tests_setup_1.testAll("test json structure 3", function (_a) {
2085
2218
  });
2086
2219
  });
2087
2220
  }, false, {
2088
- exclude: [db_tests_setup_1.TestDbs.mongo]
2221
+ exclude: [db_tests_setup_1.TestDbs.mongo],
2089
2222
  });
2223
+ db_tests_setup_1.testAll('test relation to number id', function (_a) {
2224
+ var createEntity = _a.createEntity;
2225
+ return tslib_1.__awaiter(void 0, void 0, void 0, function () {
2226
+ var category, task, catRepo, taskRepo, cat, _b, _c, _d;
2227
+ return tslib_1.__generator(this, function (_e) {
2228
+ switch (_e.label) {
2229
+ case 0:
2230
+ category = /** @class */ (function () {
2231
+ function class_10() {
2232
+ this.id = 0;
2233
+ this.name = '';
2234
+ }
2235
+ return class_10;
2236
+ }());
2237
+ DecoratorReplacer_1.describeClass(category, remult3_1.Entity('rel_ID_categories', { allowApiCrud: true }), {
2238
+ id: remult3_1.Fields.autoIncrement(),
2239
+ name: remult3_1.Fields.string(),
2240
+ });
2241
+ task = /** @class */ (function () {
2242
+ function class_11() {
2243
+ this.id = 0;
2244
+ this.title = '';
2245
+ }
2246
+ return class_11;
2247
+ }());
2248
+ DecoratorReplacer_1.describeClass(task, remult3_1.Entity('rel_ID_task', { allowApiCrud: true }), {
2249
+ id: remult3_1.Fields.autoIncrement(),
2250
+ title: remult3_1.Fields.string(),
2251
+ category: remult3_1.Field(function () { return category; }),
2252
+ });
2253
+ return [4 /*yield*/, createEntity(category)];
2254
+ case 1:
2255
+ catRepo = _e.sent();
2256
+ return [4 /*yield*/, createEntity(task)];
2257
+ case 2:
2258
+ taskRepo = _e.sent();
2259
+ return [4 /*yield*/, catRepo.insert([{ name: 'cat0' }, { name: 'cat1' }])];
2260
+ case 3:
2261
+ cat = _e.sent();
2262
+ return [4 /*yield*/, taskRepo.insert([
2263
+ { title: 't1', category: cat[0] },
2264
+ { title: 't2', category: cat[0] },
2265
+ { title: 't3', category: cat[1] },
2266
+ ])];
2267
+ case 4:
2268
+ _e.sent();
2269
+ expect(taskRepo.fields.category.valueConverter.fieldTypeInDb).toBe(valueConverters_1.ValueConverters.Integer.fieldTypeInDb);
2270
+ _b = expect;
2271
+ return [4 /*yield*/, taskRepo.count({ category: cat[0] })];
2272
+ case 5:
2273
+ _b.apply(void 0, [_e.sent()]).toBe(2);
2274
+ _c = expect;
2275
+ return [4 /*yield*/, taskRepo.count({ category: cat[1] })];
2276
+ case 6:
2277
+ _c.apply(void 0, [_e.sent()]).toBe(1);
2278
+ _d = expect;
2279
+ return [4 /*yield*/, taskRepo.count({ category: { $id: cat[0].id } })];
2280
+ case 7:
2281
+ _d.apply(void 0, [_e.sent()]).toBe(2);
2282
+ return [2 /*return*/];
2283
+ }
2284
+ });
2285
+ });
2286
+ }, false, { exclude: [db_tests_setup_1.TestDbs.mongo] });