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
@@ -1,12 +1,44 @@
1
1
  import { actionInfo, serverActionField } from './server-action';
2
2
  import { RestDataProvider } from './data-providers/rest-data-provider';
3
- import { RepositoryImplementation } from "./remult3/RepositoryImplementation";
4
- import { LiveQueryClient } from "./live-query/LiveQueryClient";
5
- import { SseSubscriptionClient } from "./live-query/SseSubscriptionClient";
6
- import { RemultProxy } from "./remult-proxy";
7
- import { buildRestDataProvider, isExternalHttpProvider } from "./buildRestDataProvider";
3
+ import { RepositoryImplementation } from './remult3/RepositoryImplementation';
4
+ import { LiveQueryClient } from './live-query/LiveQueryClient';
5
+ import { SseSubscriptionClient } from './live-query/SseSubscriptionClient';
6
+ import { RemultProxy, remult } from './remult-proxy';
7
+ import { buildRestDataProvider, isExternalHttpProvider, } from './buildRestDataProvider';
8
+ export class RemultAsyncLocalStorage {
9
+ constructor(remultObjectStorage) {
10
+ this.remultObjectStorage = remultObjectStorage;
11
+ }
12
+ static enable() {
13
+ ;
14
+ remult.remultFactory = () => {
15
+ const r = RemultAsyncLocalStorage.instance.getRemult();
16
+ if (r)
17
+ return r;
18
+ else
19
+ throw new Error('remult object was requested outside of a valid context, try running it within initApi or a remult request cycle');
20
+ };
21
+ }
22
+ static disable() {
23
+ ;
24
+ remult.resetFactory();
25
+ }
26
+ run(remult, callback) {
27
+ if (this.remultObjectStorage)
28
+ this.remultObjectStorage.run(remult, callback);
29
+ else
30
+ callback();
31
+ }
32
+ getRemult() {
33
+ if (!this.remultObjectStorage) {
34
+ throw new Error("can't use static remult in this environment, `async_hooks` were not initialized");
35
+ }
36
+ return this.remultObjectStorage.getStore();
37
+ }
38
+ }
39
+ RemultAsyncLocalStorage.instance = new RemultAsyncLocalStorage(undefined);
8
40
  export function isBackend() {
9
- return actionInfo.runningOnServer;
41
+ return actionInfo.runningOnServer || !remult.dataProvider.isProxy;
10
42
  }
11
43
  export class Remult {
12
44
  constructor(provider) {
@@ -16,7 +48,7 @@ export class Remult {
16
48
  this.repCache = new Map();
17
49
  /* @internal*/
18
50
  this.liveQueryPublisher = {
19
- itemChanged: async () => { }
51
+ itemChanged: async () => { },
20
52
  };
21
53
  /* @internal*/
22
54
  this.liveQuerySubscriber = new LiveQueryClient(() => this.apiClient, () => this.user?.id);
@@ -25,7 +57,7 @@ export class Remult {
25
57
  /** The api client that will be used by `remult` to perform calls to the `api` */
26
58
  this.apiClient = {
27
59
  url: '/api',
28
- subscriptionClient: new SseSubscriptionClient()
60
+ subscriptionClient: new SseSubscriptionClient(),
29
61
  };
30
62
  if (provider && provider.getEntityDataProvider) {
31
63
  this.dataProvider = provider;
@@ -34,7 +66,7 @@ export class Remult {
34
66
  if (isExternalHttpProvider(provider)) {
35
67
  this.apiClient.httpClient = provider;
36
68
  }
37
- else if (typeof (provider) === "function")
69
+ else if (typeof provider === 'function')
38
70
  this.apiClient.httpClient = provider;
39
71
  else if (provider) {
40
72
  const apiClient = provider;
@@ -60,10 +92,10 @@ export class Remult {
60
92
  dataProvider = this.dataProvider;
61
93
  let dpCache = this.repCache.get(dataProvider);
62
94
  if (!dpCache)
63
- this.repCache.set(dataProvider, dpCache = new Map());
95
+ this.repCache.set(dataProvider, (dpCache = new Map()));
64
96
  let r = dpCache.get(entity);
65
97
  if (!r) {
66
- dpCache.set(entity, r = new RepositoryImplementation(entity, this, dataProvider));
98
+ dpCache.set(entity, (r = new RepositoryImplementation(entity, this, dataProvider)));
67
99
  }
68
100
  return r;
69
101
  }
@@ -111,7 +143,7 @@ export class Remult {
111
143
  }
112
144
  }
113
145
  }
114
- else if (typeof (allowed) === "function") {
146
+ else if (typeof allowed === 'function') {
115
147
  return allowed(instance, this);
116
148
  }
117
149
  else
@@ -124,22 +156,31 @@ export class Remult {
124
156
  * @param backendMethod - the backend method to call
125
157
  * @param classInstance - the class instance of the backend method, for static backend methods use undefined
126
158
  * @param args - the arguments to send to the backend method
127
- */
159
+ */
128
160
  call(backendMethod, classInstance, ...args) {
129
- const z = (backendMethod[serverActionField]);
161
+ const z = backendMethod[serverActionField];
130
162
  if (!z.doWork)
131
- throw Error("The method received is not a valid backend method");
163
+ throw Error('The method received is not a valid backend method');
132
164
  //@ts-ignore
133
165
  return z.doWork(args, classInstance, this.apiClient.url, buildRestDataProvider(this.apiClient.httpClient));
134
166
  }
135
167
  clearAllCache() {
136
168
  this.repCache.clear();
137
169
  }
170
+ static run(callback, options) {
171
+ const remult = new Remult();
172
+ if (options.dataProvider)
173
+ remult.dataProvider = options.dataProvider;
174
+ let r;
175
+ RemultAsyncLocalStorage.instance.run(remult, () => {
176
+ r = callback();
177
+ });
178
+ return r;
179
+ }
138
180
  }
139
181
  /** A helper callback that can be used to debug and trace all find operations. Useful in debugging scenarios */
140
182
  Remult.onFind = (metadata, options) => { };
141
183
  RemultProxy.defaultRemult = new Remult();
142
- ;
143
184
  export const allEntities = [];
144
185
  export const classHelpers = new Map();
145
186
  export class ClassHelper {
@@ -152,7 +193,7 @@ export function setControllerSettings(target, options) {
152
193
  while (true) {
153
194
  let helper = classHelpers.get(r);
154
195
  if (!helper)
155
- classHelpers.set(r, helper = new ClassHelper());
196
+ classHelpers.set(r, (helper = new ClassHelper()));
156
197
  helper.classes.set(target, options);
157
198
  let p = Object.getPrototypeOf(r.prototype);
158
199
  if (p == null)
@@ -171,10 +212,10 @@ Allow.authenticated = (...args) => {
171
212
  if (args[0].authenticated)
172
213
  return args[0].authenticated();
173
214
  }
174
- return RemultProxy.defaultRemult.authenticated();
215
+ return remult.authenticated();
175
216
  };
176
217
  export const queryConfig = {
177
- defaultPageSize: 200
218
+ defaultPageSize: 200,
178
219
  };
179
220
  export class EventSource {
180
221
  constructor() {
@@ -184,9 +225,9 @@ export class EventSource {
184
225
  this.listeners.push(what);
185
226
  await what();
186
227
  return () => {
187
- this.listeners = this.listeners.filter(x => x != what);
228
+ this.listeners = this.listeners.filter((x) => x != what);
188
229
  };
189
- }
230
+ },
190
231
  };
191
232
  }
192
233
  async fire() {
@@ -199,7 +240,7 @@ export async function doTransaction(remult, what) {
199
240
  const trans = new transactionLiveQueryPublisher(remult.liveQueryPublisher);
200
241
  let ok = true;
201
242
  const result = await remult.dataProvider.transaction(async (ds) => {
202
- remult.dataProvider = (ds);
243
+ remult.dataProvider = ds;
203
244
  remult.liveQueryPublisher = trans;
204
245
  await what();
205
246
  ok = true;
@@ -215,11 +256,11 @@ class transactionLiveQueryPublisher {
215
256
  async itemChanged(entityKey, changes) {
216
257
  let items = this.transactionItems.get(entityKey);
217
258
  if (!items) {
218
- this.transactionItems.set(entityKey, items = []);
259
+ this.transactionItems.set(entityKey, (items = []));
219
260
  }
220
261
  for (const c of changes) {
221
262
  if (c.oldId !== undefined) {
222
- const item = items.find(y => y.id === c.oldId);
263
+ const item = items.find((y) => y.id === c.oldId);
223
264
  if (item !== undefined) {
224
265
  if (c.deleted)
225
266
  item.deleted = true;
@@ -36,4 +36,3 @@ export interface DataApiRequest {
36
36
  }
37
37
  export declare function determineSort(sortUrlParm: string, dirUrlParam: string): any;
38
38
  export declare function serializeError(data: ErrorInfo): ErrorInfo<any>;
39
- export declare function getLiveQueryChannel(queryId: string, userId: string): string;
@@ -1,36 +1,36 @@
1
- import { customUrlToken, buildFilterFromRequestParameters } from './filter/filter-interfaces';
1
+ import { customUrlToken, buildFilterFromRequestParameters, } from './filter/filter-interfaces';
2
2
  import { doTransaction } from './context';
3
3
  import { Filter } from './filter/filter-interfaces';
4
4
  import { ForbiddenError } from './server-action';
5
- import { findOptionsToJson, liveQueryAction } from './data-providers/rest-data-provider';
5
+ import { findOptionsToJson, liveQueryAction, } from './data-providers/rest-data-provider';
6
6
  export class DataApi {
7
7
  constructor(repository, remult) {
8
8
  this.repository = repository;
9
9
  this.remult = remult;
10
10
  }
11
11
  httpGet(res, req, serializeContext) {
12
- const action = req?.get("__action");
12
+ const action = req?.get('__action');
13
13
  if (action?.startsWith(liveQueryAction))
14
- return this.liveQuery(res, req, undefined, serializeContext, getLiveQueryChannel(action.substring(liveQueryAction.length), this.remult.user?.id));
14
+ return this.liveQuery(res, req, undefined, serializeContext, action.substring(liveQueryAction.length));
15
15
  switch (action) {
16
- case "get":
17
- case "count":
16
+ case 'get':
17
+ case 'count':
18
18
  return this.count(res, req, undefined);
19
19
  }
20
20
  return this.getArray(res, req, undefined);
21
21
  }
22
22
  async httpPost(res, req, body, serializeContext) {
23
- const action = req?.get("__action");
23
+ const action = req?.get('__action');
24
24
  if (action?.startsWith(liveQueryAction))
25
- return this.liveQuery(res, req, undefined, serializeContext, getLiveQueryChannel(action.substring(liveQueryAction.length), this.remult.user?.id));
25
+ return this.liveQuery(res, req, undefined, serializeContext, action.substring(liveQueryAction.length));
26
26
  switch (action) {
27
- case "get":
27
+ case 'get':
28
28
  return this.getArray(res, req, body);
29
- case "count":
29
+ case 'count':
30
30
  return this.count(res, req, body);
31
- case "endLiveQuery":
32
- await this.remult.liveQueryStorage.remove(getLiveQueryChannel(body.id, this.remult.user?.id));
33
- res.success("ok");
31
+ case 'endLiveQuery':
32
+ await this.remult.liveQueryStorage.remove(body.id);
33
+ res.success('ok');
34
34
  return;
35
35
  default:
36
36
  return this.post(res, body);
@@ -49,7 +49,9 @@ export class DataApi {
49
49
  return;
50
50
  }
51
51
  try {
52
- response.success({ count: +await this.repository.count(await this.buildWhere(request, filterBody)) });
52
+ response.success({
53
+ count: +(await this.repository.count(await this.buildWhere(request, filterBody))),
54
+ });
53
55
  }
54
56
  catch (err) {
55
57
  response.error(err);
@@ -59,16 +61,16 @@ export class DataApi {
59
61
  let findOptions = { load: () => [] };
60
62
  findOptions.where = await this.buildWhere(request, filterBody);
61
63
  if (request) {
62
- let sort = request.get("_sort");
64
+ let sort = request.get('_sort');
63
65
  if (sort != undefined) {
64
66
  let dir = request.get('_order');
65
67
  findOptions.orderBy = determineSort(sort, dir);
66
68
  }
67
- let limit = +request.get("_limit");
69
+ let limit = +request.get('_limit');
68
70
  if (!limit && DataApi.defaultGetLimit)
69
71
  limit = DataApi.defaultGetLimit;
70
72
  findOptions.limit = limit;
71
- findOptions.page = +request.get("_page");
73
+ findOptions.page = +request.get('_page');
72
74
  }
73
75
  if (this.remult.isAllowed(this.repository.metadata.options.apiRequireId)) {
74
76
  let hasId = false;
@@ -90,7 +92,7 @@ export class DataApi {
90
92
  isLessThan: () => { },
91
93
  isNotNull: () => { },
92
94
  isNull: () => { },
93
- or: () => { }
95
+ or: () => { },
94
96
  });
95
97
  }
96
98
  if (!hasId) {
@@ -98,8 +100,7 @@ export class DataApi {
98
100
  throw new ForbiddenError();
99
101
  }
100
102
  }
101
- const r = await this.repository.find(findOptions)
102
- .then(async (r) => {
103
+ const r = await this.repository.find(findOptions).then(async (r) => {
103
104
  return await Promise.all(r.map(async (y) => this.repository.getEntityRef(y).toApiJson()));
104
105
  });
105
106
  return { r, findOptions };
@@ -130,12 +131,12 @@ export class DataApi {
130
131
  const data = {
131
132
  requestJson: await serializeContext(),
132
133
  findOptionsJson: findOptionsToJson(r.findOptions, this.repository.metadata),
133
- lastIds: r.r.map(y => this.repository.metadata.idMetadata.getId(y))
134
+ lastIds: r.r.map((y) => this.repository.metadata.idMetadata.getId(y)),
134
135
  };
135
136
  await this.remult.liveQueryStorage.add({
136
137
  entityKey: this.repository.metadata.key,
137
138
  id: queryChannel,
138
- data
139
+ data,
139
140
  });
140
141
  response.success(r.r);
141
142
  }
@@ -149,19 +150,19 @@ export class DataApi {
149
150
  async buildWhere(request, filterBody) {
150
151
  var where = [];
151
152
  if (this.repository.metadata.options.apiPrefilter) {
152
- if (typeof this.repository.metadata.options.apiPrefilter === "function")
153
+ if (typeof this.repository.metadata.options.apiPrefilter === 'function')
153
154
  where.push(await this.repository.metadata.options.apiPrefilter());
154
155
  else
155
156
  where.push(this.repository.metadata.options.apiPrefilter);
156
157
  }
157
158
  if (request) {
158
159
  where.push(buildFilterFromRequestParameters(this.repository.metadata, {
159
- get: key => {
160
+ get: (key) => {
160
161
  let result = request.get(key);
161
- if (key.startsWith(customUrlToken) && result)
162
+ if (key.startsWith(customUrlToken) && result && typeof result === "string")
162
163
  return JSON.parse(result);
163
164
  return result;
164
- }
165
+ },
165
166
  }));
166
167
  }
167
168
  if (filterBody)
@@ -170,21 +171,24 @@ export class DataApi {
170
171
  }
171
172
  async doOnId(response, id, what) {
172
173
  try {
173
- var where = [this.repository.metadata.idMetadata.getIdFilter(id)];
174
+ var where = [
175
+ this.repository.metadata.idMetadata.getIdFilter(id),
176
+ ];
174
177
  if (this.repository.metadata.options.apiPrefilter) {
175
- if (typeof this.repository.metadata.options.apiPrefilter === "function")
178
+ if (typeof this.repository.metadata.options.apiPrefilter === 'function')
176
179
  where.push(await this.repository.metadata.options.apiPrefilter());
177
180
  else
178
181
  where.push(this.repository.metadata.options.apiPrefilter);
179
182
  }
180
- await this.repository.find({
181
- where: { $and: where }
183
+ await this.repository
184
+ .find({
185
+ where: { $and: where },
182
186
  })
183
187
  .then(async (r) => {
184
188
  if (r.length == 0)
185
189
  response.notFound();
186
190
  else if (r.length > 1)
187
- response.error({ message: "id is not unique" });
191
+ response.error({ message: 'id is not unique' });
188
192
  else
189
193
  await what(r[0]);
190
194
  });
@@ -254,10 +258,10 @@ export function determineSort(sortUrlParm, dirUrlParam) {
254
258
  let result = {};
255
259
  sortUrlParm.split(',').map((name, i) => {
256
260
  let key = name.trim();
257
- if (i < dirItems.length && dirItems[i].toLowerCase().trim().startsWith("d"))
258
- return result[key] = "desc";
261
+ if (i < dirItems.length && dirItems[i].toLowerCase().trim().startsWith('d'))
262
+ return (result[key] = 'desc');
259
263
  else
260
- return result[key] = "asc";
264
+ return (result[key] = 'asc');
261
265
  });
262
266
  return result;
263
267
  }
@@ -272,6 +276,3 @@ export function serializeError(data) {
272
276
  data = { message: x };
273
277
  return data;
274
278
  }
275
- export function getLiveQueryChannel(queryId, userId) {
276
- return `users:${userId}:queries:${queryId}`;
277
- }
@@ -4,8 +4,8 @@ import { EntityMetadata, OmitEB } from './remult3';
4
4
  export interface DataProvider {
5
5
  getEntityDataProvider(entity: EntityMetadata): EntityDataProvider;
6
6
  transaction(action: (dataProvider: DataProvider) => Promise<void>): Promise<void>;
7
- supportsRawFilter?: boolean;
8
7
  ensureSchema?(entities: EntityMetadata[]): Promise<void>;
8
+ isProxy?: boolean;
9
9
  }
10
10
  export interface Storage {
11
11
  ensureSchema(): Promise<void>;
@@ -4,7 +4,7 @@ export function extractSort(sort) {
4
4
  return sort;
5
5
  if (sort instanceof Array) {
6
6
  let r = new Sort();
7
- sort.forEach(i => {
7
+ sort.forEach((i) => {
8
8
  r.Segments.push(i);
9
9
  });
10
10
  return r;
@@ -1,4 +1,4 @@
1
- import { customDatabaseFilterToken, Filter } from '../filter/filter-interfaces';
1
+ import { customDatabaseFilterToken, Filter, } from '../filter/filter-interfaces';
2
2
  import { CompoundIdField } from '../column';
3
3
  export class ArrayEntityDataProvider {
4
4
  constructor(entity, rows) {
@@ -15,8 +15,8 @@ export class ArrayEntityDataProvider {
15
15
  static rawFilter(filter) {
16
16
  return {
17
17
  [customDatabaseFilterToken]: {
18
- arrayFilter: filter
19
- }
18
+ arrayFilter: filter,
19
+ },
20
20
  };
21
21
  }
22
22
  verifyThatRowHasAllNotNullColumns(r) {
@@ -58,7 +58,7 @@ export class ArrayEntityDataProvider {
58
58
  let rows = this.rows;
59
59
  if (options) {
60
60
  if (options.where) {
61
- rows = rows.filter(i => {
61
+ rows = rows.filter((i) => {
62
62
  let x = new FilterConsumerBridgeToObject(i);
63
63
  options.where.__applyToConsumer(x);
64
64
  return x.ok;
@@ -72,7 +72,7 @@ export class ArrayEntityDataProvider {
72
72
  rows = pageArray(rows, options);
73
73
  }
74
74
  if (rows)
75
- return rows.map(i => {
75
+ return rows.map((i) => {
76
76
  return this.translateFromJson(i);
77
77
  });
78
78
  }
@@ -91,7 +91,7 @@ export class ArrayEntityDataProvider {
91
91
  return result;
92
92
  }
93
93
  idMatches(id) {
94
- return item => {
94
+ return (item) => {
95
95
  let x = new FilterConsumerBridgeToObject(item);
96
96
  Filter.fromEntityFilter(this.entity, this.entity.idMetadata.getIdFilter(id)).__applyToConsumer(x);
97
97
  return x.ok;
@@ -139,9 +139,9 @@ export class ArrayEntityDataProvider {
139
139
  }
140
140
  }
141
141
  if (data[idf.key])
142
- this.rows.forEach(i => {
142
+ this.rows.forEach((i) => {
143
143
  if (data[idf.key] == i[idf.key])
144
- throw Error("id already exists");
144
+ throw Error('id already exists');
145
145
  });
146
146
  }
147
147
  let j = this.translateToJson(data);
@@ -161,7 +161,7 @@ function pageArray(rows, options) {
161
161
  if (page < 1)
162
162
  page = 1;
163
163
  let x = 0;
164
- return rows.filter(i => {
164
+ return rows.filter((i) => {
165
165
  x++;
166
166
  let max = page * options.limit;
167
167
  let min = max - options.limit;
@@ -1,5 +1,5 @@
1
1
  import { DataProvider, EntityDataProvider } from '../data-interfaces';
2
- import { __RowsOfDataForTesting } from "../__RowsOfDataForTesting";
2
+ import { __RowsOfDataForTesting } from '../__RowsOfDataForTesting';
3
3
  import { EntityMetadata } from '../remult3';
4
4
  export declare class InMemoryDataProvider implements DataProvider, __RowsOfDataForTesting {
5
5
  transaction(action: (dataProvider: DataProvider) => Promise<void>): Promise<void>;
@@ -12,5 +12,7 @@ export class InMemoryDataProvider {
12
12
  this.rows[name] = [];
13
13
  return new ArrayEntityDataProvider(entity, this.rows[name]);
14
14
  }
15
- toString() { return "InMemoryDataProvider"; }
15
+ toString() {
16
+ return 'InMemoryDataProvider';
17
+ }
16
18
  }
@@ -26,27 +26,27 @@ class JsonEntityDataProvider {
26
26
  return what(dp, () => this.helper.setItem(dbName, JSON.stringify(data, undefined, 2)));
27
27
  }
28
28
  find(options) {
29
- return this.p = this.p.then(() => this.loadEntityData((dp, save) => dp.find(options)));
29
+ return (this.p = this.p.then(() => this.loadEntityData((dp, save) => dp.find(options))));
30
30
  }
31
31
  count(where) {
32
- return this.p = this.p.then(() => this.loadEntityData((dp, save) => dp.count(where)));
32
+ return (this.p = this.p.then(() => this.loadEntityData((dp, save) => dp.count(where))));
33
33
  }
34
34
  update(id, data) {
35
- return this.p = this.p.then(() => this.loadEntityData((dp, save) => dp.update(id, data).then(x => {
35
+ return (this.p = this.p.then(() => this.loadEntityData((dp, save) => dp.update(id, data).then((x) => {
36
36
  save();
37
37
  return x;
38
- })));
38
+ }))));
39
39
  }
40
40
  delete(id) {
41
- return this.p = this.p.then(() => this.loadEntityData((dp, save) => dp.delete(id).then(x => {
41
+ return (this.p = this.p.then(() => this.loadEntityData((dp, save) => dp.delete(id).then((x) => {
42
42
  save();
43
43
  return x;
44
- })));
44
+ }))));
45
45
  }
46
46
  async insert(data) {
47
- return this.p = this.p.then(() => this.loadEntityData((dp, save) => dp.insert(data).then(x => {
47
+ return (this.p = this.p.then(() => this.loadEntityData((dp, save) => dp.insert(data).then((x) => {
48
48
  save();
49
49
  return x;
50
- })));
50
+ }))));
51
51
  }
52
52
  }
@@ -8,7 +8,7 @@ export declare class RestDataProvider implements DataProvider {
8
8
  constructor(apiProvider: () => ApiClient);
9
9
  getEntityDataProvider(entity: EntityMetadata): RestEntityDataProvider;
10
10
  transaction(action: (dataProvider: DataProvider) => Promise<void>): Promise<void>;
11
- supportsRawFilter: boolean;
11
+ isProxy: boolean;
12
12
  }
13
13
  export declare class RestEntityDataProvider implements EntityDataProvider {
14
14
  private url;