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
@@ -0,0 +1,2 @@
1
+ import { Repository } from "../remult3";
2
+ export declare function deleteAll<entityType>(r: Repository<entityType>): Promise<Repository<entityType>>;
@@ -0,0 +1,4 @@
1
+ export async function deleteAll(r) {
2
+ await Promise.all((await r.find()).map(x => r.delete(x)));
3
+ return r;
4
+ }
@@ -0,0 +1,14 @@
1
+ import { ClassType } from '../../classType';
2
+ import { Remult } from '../context';
3
+ import { EntityBase, Repository } from '../remult3';
4
+ export declare var testConfiguration: {
5
+ restDbRunningOnServer: boolean;
6
+ };
7
+ export declare class entityWithValidations extends EntityBase {
8
+ private remult;
9
+ myId: number;
10
+ name: string;
11
+ static savingRowCount: number;
12
+ constructor(remult: Remult);
13
+ static create4RowsInDp(createEntity: (entity: ClassType<any>) => Promise<Repository<entityWithValidations>>): Promise<Repository<entityWithValidations>>;
14
+ }
@@ -0,0 +1,43 @@
1
+ import { Entity, EntityBase, Fields } from '../remult3';
2
+ export var testConfiguration = { restDbRunningOnServer: false };
3
+ @Entity('', {
4
+ allowApiCrud: true,
5
+ saving: async (t) => {
6
+ if (!t.name || t.name.length < 3)
7
+ t._.fields.name.error = 'invalid';
8
+ if (!testConfiguration.restDbRunningOnServer)
9
+ entityWithValidations.savingRowCount++;
10
+ }
11
+ })
12
+ export class entityWithValidations extends EntityBase {
13
+ remult;
14
+ @Fields.integer()
15
+ myId;
16
+ @Fields.string()
17
+ name;
18
+ static savingRowCount = 0;
19
+ constructor(remult) {
20
+ super();
21
+ this.remult = remult;
22
+ }
23
+ static async create4RowsInDp(createEntity) {
24
+ let s = await createEntity(entityWithValidations);
25
+ let c = s.create();
26
+ c.myId = 1;
27
+ c.name = 'noam';
28
+ await c._.save();
29
+ c = s.create();
30
+ c.myId = 2;
31
+ c.name = 'yael';
32
+ await c._.save();
33
+ c = s.create();
34
+ c.myId = 3;
35
+ c.name = 'yoni';
36
+ await c._.save();
37
+ c = s.create();
38
+ c.myId = 4;
39
+ c.name = 'maayan';
40
+ await c._.save();
41
+ return s;
42
+ }
43
+ }
@@ -0,0 +1,4 @@
1
+ import './db-tests.db-tests';
2
+ import './test-custom-id-column.spec';
3
+ import './test-special-value.spec';
4
+ import './test-update-with-null.spec';
@@ -0,0 +1,4 @@
1
+ import './db-tests.db-tests';
2
+ import './test-custom-id-column.spec';
3
+ import './test-special-value.spec';
4
+ import './test-update-with-null.spec';
@@ -0,0 +1,67 @@
1
+ import { Entity, EntityBase, Fields } from '../remult3';
2
+ import { describeClass } from '../remult3/DecoratorReplacer';
3
+ import { testAll } from './db-tests-setup';
4
+ describe("custom id column", () => {
5
+ testAll("basic test", async ({ createEntity }) => {
6
+ let type = class extends EntityBase {
7
+ a;
8
+ b;
9
+ };
10
+ describeClass(type, Entity('custom', { allowApiCrud: true }), {
11
+ a: Fields.number(),
12
+ b: Fields.number()
13
+ });
14
+ let c = await createEntity(type);
15
+ let r = c.create();
16
+ r.a = 1;
17
+ r.b = 1;
18
+ await r._.save();
19
+ r = c.create();
20
+ r.a = 2;
21
+ r.b = 2;
22
+ await r._.save();
23
+ expect(c.metadata.idMetadata.field.key).toBe(c.metadata.fields.a.key);
24
+ });
25
+ testAll("basic test id column not first column", async ({ createEntity }) => {
26
+ let type = class extends EntityBase {
27
+ a;
28
+ id;
29
+ };
30
+ Entity('custom2', { allowApiCrud: true })(type);
31
+ Fields.number()(type.prototype, 'a');
32
+ Fields.number()(type.prototype, 'id');
33
+ let c = await createEntity(type);
34
+ let r = c.create();
35
+ r.a = 1;
36
+ r.id = 5;
37
+ await r._.save();
38
+ r = c.create();
39
+ r.a = 2;
40
+ r.id = 6;
41
+ await r._.save();
42
+ expect(r._.repository.metadata.idMetadata.field.key).toBe(r._.fields.id.metadata.key);
43
+ expect((await c.findId(6)).a).toBe(2);
44
+ });
45
+ });
46
+ //typing game
47
+ // var z = <Z>(y: Z) => {
48
+ // }
49
+ // z<number>(1);
50
+ // function myBackendMethod<T>(types: T, values: values<T>) {
51
+ // }
52
+ // type values<T> = {
53
+ // [Property in keyof T]: T[Property] extends new (...args: any[]) => infer R ? R : any;
54
+ // };
55
+ // const a1 = AccountManager;
56
+ // const a = {
57
+ // a: String.prototype,
58
+ // b: AccountManager.prototype
59
+ // };
60
+ // var zzz: AccountManager = undefined!;
61
+ // myBackendMethod({
62
+ // a: String,
63
+ // b: AccountManager
64
+ // }, {
65
+ // b: new AccountManager(),
66
+ // a: "asdf"
67
+ // })
@@ -0,0 +1,10 @@
1
+ export declare class GroupsValue {
2
+ private readonly value;
3
+ hasAny(): boolean;
4
+ constructor(value: string);
5
+ evilGet(): string;
6
+ listGroups(): string[];
7
+ removeGroup(group: string): GroupsValue;
8
+ addGroup(group: string): GroupsValue;
9
+ selected(group: string): boolean;
10
+ }
@@ -0,0 +1,73 @@
1
+ import { Entity, EntityBase, Field, FieldType, Fields } from "../remult3";
2
+ import { testAll } from "./db-tests-setup";
3
+ @FieldType({
4
+ valueConverter: {
5
+ toJson: x => x ? x.value : '',
6
+ fromJson: x => new GroupsValue(x),
7
+ displayValue: x => x.value
8
+ }
9
+ })
10
+ export class GroupsValue {
11
+ value;
12
+ hasAny() {
13
+ return this.value != '';
14
+ }
15
+ constructor(value) {
16
+ this.value = value;
17
+ }
18
+ evilGet() {
19
+ return this.value;
20
+ }
21
+ listGroups() {
22
+ if (!this.value)
23
+ return [];
24
+ return this.value.split(',');
25
+ }
26
+ removeGroup(group) {
27
+ let groups = this.value.split(",").map(x => x.trim());
28
+ let index = groups.indexOf(group);
29
+ let result = '';
30
+ if (index >= 0) {
31
+ groups.splice(index, 1);
32
+ result = groups.join(", ");
33
+ }
34
+ return new GroupsValue(result);
35
+ }
36
+ addGroup(group) {
37
+ let r = this.value;
38
+ if (r)
39
+ r += ', ';
40
+ else
41
+ r = '';
42
+ r += group;
43
+ return new GroupsValue(r);
44
+ }
45
+ selected(group) {
46
+ if (!this.value)
47
+ return false;
48
+ return this.value.indexOf(group) >= 0;
49
+ }
50
+ }
51
+ @Entity("testGroups", { allowApiCrud: true })
52
+ class testGroups extends EntityBase {
53
+ @Fields.integer()
54
+ id = 0;
55
+ @Field(() => GroupsValue)
56
+ g;
57
+ }
58
+ testAll("test save and load", async ({ createEntity }) => {
59
+ let re = await createEntity(testGroups);
60
+ await re.create({ id: 1 }).save();
61
+ let x = await re.findFirst();
62
+ expect(x.g.evilGet()).toBe('');
63
+ x.g = x.g.addGroup("xx");
64
+ expect(x.$.g.valueChanged()).toBe(true);
65
+ await x.save();
66
+ expect(x.g.evilGet()).toBe('xx');
67
+ });
68
+ testAll("test2 save and load", async ({ createEntity }) => {
69
+ let re = await createEntity(testGroups);
70
+ await re.create({ id: 1, g: new GroupsValue(undefined) }).save();
71
+ let x = await re.findFirst();
72
+ expect(x.g.evilGet()).toBe('');
73
+ });
@@ -0,0 +1,31 @@
1
+ import { Entity, EntityBase, Field, Fields } from "../remult3";
2
+ import { testAll } from "./db-tests-setup";
3
+ @Entity('testNull', { allowApiCrud: true })
4
+ class testNull extends EntityBase {
5
+ @Fields.integer()
6
+ id = 0;
7
+ @Field(undefined, { allowNull: true })
8
+ myCol;
9
+ @Fields.integer({ allowNull: true })
10
+ numberWithNull = null;
11
+ }
12
+ testAll("test that update null works", async ({ createEntity }) => {
13
+ let r = await createEntity(testNull);
14
+ let i = r.create({ id: 1, myCol: { value: 'abc' } });
15
+ await i.save();
16
+ expect(i.myCol?.value).toBe("abc");
17
+ i.myCol = null;
18
+ expect(i.myCol).toBe(null);
19
+ await i.save();
20
+ expect(i.myCol).toBe(null);
21
+ }, false);
22
+ testAll("test number with null", async ({ createEntity }) => {
23
+ let r = await createEntity(testNull);
24
+ const i = await r.insert({ id: 1, myCol: { value: 'abc' }, numberWithNull: null });
25
+ expect(i.numberWithNull).toBe(null);
26
+ expect(await r.count({ numberWithNull: null })).toBe(1);
27
+ i.numberWithNull = 0;
28
+ await i.save();
29
+ expect(i.numberWithNull).toBe(0);
30
+ expect(await r.count({ numberWithNull: null })).toBe(0);
31
+ }, false);
@@ -0,0 +1,16 @@
1
+ import { FieldMetadata } from "./column-interfaces";
2
+ import { EntityMetadata, EntityOrderBy } from "./remult3";
3
+ export declare class Sort {
4
+ toEntityOrderBy(): EntityOrderBy<any>;
5
+ constructor(...segments: SortSegment[]);
6
+ Segments: SortSegment[];
7
+ reverse(): Sort;
8
+ compare(a: any, b: any): number;
9
+ static translateOrderByToSort<T>(entityDefs: EntityMetadata<T>, orderBy: EntityOrderBy<T>): Sort;
10
+ static createUniqueSort<T>(entityMetadata: EntityMetadata<T>, orderBy: Sort): Sort;
11
+ static createUniqueEntityOrderBy<T>(entityMetadata: EntityMetadata<T>, orderBy: EntityOrderBy<T>): EntityOrderBy<T>;
12
+ }
13
+ export interface SortSegment {
14
+ field: FieldMetadata;
15
+ isDescending?: boolean;
16
+ }
@@ -0,0 +1,103 @@
1
+ import { CompoundIdField } from "./column";
2
+ export class Sort {
3
+ toEntityOrderBy() {
4
+ let result = {};
5
+ for (const seg of this.Segments) {
6
+ if (seg.isDescending) {
7
+ result[seg.field.key] = "desc";
8
+ }
9
+ else
10
+ result[seg.field.key] = "asc";
11
+ }
12
+ return result;
13
+ }
14
+ constructor(...segments) {
15
+ this.Segments = segments;
16
+ }
17
+ Segments;
18
+ reverse() {
19
+ let r = new Sort();
20
+ for (const s of this.Segments) {
21
+ r.Segments.push({ field: s.field, isDescending: !s.isDescending });
22
+ }
23
+ return r;
24
+ }
25
+ compare(a, b) {
26
+ let r = 0;
27
+ for (let i = 0; i < this.Segments.length; i++) {
28
+ let seg = this.Segments[i];
29
+ let left = a[seg.field.key];
30
+ let right = b[seg.field.key];
31
+ if (left > right)
32
+ r = 1;
33
+ else if (left < right)
34
+ r = -1;
35
+ if (r != 0) {
36
+ if (seg.isDescending)
37
+ r *= -1;
38
+ return r;
39
+ }
40
+ }
41
+ return r;
42
+ }
43
+ static translateOrderByToSort(entityDefs, orderBy) {
44
+ if (!orderBy)
45
+ return undefined;
46
+ let sort;
47
+ if (orderBy) {
48
+ sort = new Sort();
49
+ for (const key in orderBy) {
50
+ if (Object.prototype.hasOwnProperty.call(orderBy, key)) {
51
+ const element = orderBy[key];
52
+ let field = entityDefs.fields.find(key);
53
+ if (field) {
54
+ switch (element) {
55
+ case "desc":
56
+ sort.Segments.push({ field, isDescending: true });
57
+ break;
58
+ case "asc":
59
+ sort.Segments.push({ field });
60
+ }
61
+ }
62
+ }
63
+ }
64
+ }
65
+ return sort;
66
+ }
67
+ static createUniqueSort(entityMetadata, orderBy) {
68
+ if (!orderBy || Object.keys(orderBy).length === 0)
69
+ orderBy = Sort.translateOrderByToSort(entityMetadata, entityMetadata.options.defaultOrderBy);
70
+ if (!orderBy)
71
+ orderBy = new Sort({ field: entityMetadata.idMetadata.field });
72
+ if (entityMetadata.idMetadata.field instanceof CompoundIdField) {
73
+ for (const field of entityMetadata.idMetadata.field.fields) {
74
+ if (!orderBy.Segments.find(x => x.field == field)) {
75
+ orderBy.Segments.push({ field: field });
76
+ }
77
+ }
78
+ }
79
+ else if (!orderBy.Segments.find(x => x.field == entityMetadata.idMetadata.field)) {
80
+ orderBy.Segments.push({ field: entityMetadata.idMetadata.field });
81
+ }
82
+ return orderBy;
83
+ }
84
+ static createUniqueEntityOrderBy(entityMetadata, orderBy) {
85
+ if (!orderBy || Object.keys(orderBy).length === 0)
86
+ orderBy = entityMetadata.options.defaultOrderBy;
87
+ if (!orderBy)
88
+ orderBy = { [entityMetadata.idMetadata.field.key]: "asc" };
89
+ else
90
+ orderBy = { ...orderBy };
91
+ if (entityMetadata.idMetadata.field instanceof CompoundIdField) {
92
+ for (const field of entityMetadata.idMetadata.field.fields) {
93
+ if (!orderBy[field.key]) {
94
+ orderBy[field.key] = "asc";
95
+ }
96
+ }
97
+ }
98
+ else if (!orderBy[entityMetadata.idMetadata.field.key]) {
99
+ orderBy[entityMetadata.idMetadata.field.key] = "asc";
100
+ }
101
+ return orderBy;
102
+ }
103
+ }
@@ -0,0 +1,19 @@
1
+ import { EntityMetadata } from './remult3';
2
+ export interface SqlImplementation {
3
+ getLimitSqlSyntax(limit: number, offset: number): any;
4
+ createCommand(): SqlCommand;
5
+ transaction(action: (sql: SqlImplementation) => Promise<void>): Promise<void>;
6
+ entityIsUsedForTheFirstTime(entity: EntityMetadata): Promise<void>;
7
+ ensureSchema?(entities: EntityMetadata[]): Promise<void>;
8
+ supportsJsonColumnType?: boolean;
9
+ }
10
+ export interface SqlCommand extends SqlCommandWithParameters {
11
+ execute(sql: string): Promise<SqlResult>;
12
+ }
13
+ export interface SqlCommandWithParameters {
14
+ addParameterAndReturnSqlToken(val: any): string;
15
+ }
16
+ export interface SqlResult {
17
+ rows: any[];
18
+ getColumnKeyInResultForIndexInSelect(index: number): string;
19
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,3 @@
1
+ import 'core-js/es7/reflect';
2
+ import 'zone.js/dist/zone';
3
+ import 'zone.js/dist/zone-testing';
@@ -0,0 +1,12 @@
1
+ // This file is required by karma.conf.js and loads recursively all the .spec and framework files
2
+ import 'core-js/es7/reflect';
3
+ import 'zone.js/dist/zone';
4
+ import 'zone.js/dist/zone-testing';
5
+ import { getTestBed } from '@angular/core/testing';
6
+ import { BrowserDynamicTestingModule, platformBrowserDynamicTesting } from '@angular/platform-browser-dynamic/testing';
7
+ // First, initialize the Angular testing environment.
8
+ getTestBed().initTestEnvironment(BrowserDynamicTestingModule, platformBrowserDynamicTesting());
9
+ // Then we find all the tests.
10
+ const context = require.context('./', true, /\.spec\.ts$/);
11
+ // And load the modules.
12
+ context.keys().map(context);
@@ -0,0 +1,5 @@
1
+ export declare class Done {
2
+ happened: boolean;
3
+ ok(): void;
4
+ test(message?: string): void;
5
+ }
@@ -0,0 +1,9 @@
1
+ export class Done {
2
+ happened = false;
3
+ ok() {
4
+ this.happened = true;
5
+ }
6
+ test(message = 'expected to be done') {
7
+ expect(this.happened).toBe(true, message);
8
+ }
9
+ }
@@ -0,0 +1,16 @@
1
+ import { ArrayEntityDataProvider } from "../data-providers/array-entity-data-provider";
2
+ import { Remult } from '../context';
3
+ import { CategoriesForTesting } from './remult-3-entities';
4
+ import { EntityMetadata, Repository } from '../remult3';
5
+ export declare class Language {
6
+ id: number;
7
+ caption: string;
8
+ static Hebrew: Language;
9
+ static Russian: Language;
10
+ constructor(id: number, caption: string);
11
+ }
12
+ export declare function insertFourRows(): Promise<[Repository<CategoriesForTesting>, Remult]>;
13
+ export declare class myDp extends ArrayEntityDataProvider {
14
+ constructor(entity: EntityMetadata);
15
+ update(id: any, data: any): Promise<any>;
16
+ }