remult 0.22.5 → 0.22.6-exp.2

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 (358) hide show
  1. package/esm/graphql.js +29 -28
  2. package/esm/internals.js +7 -0
  3. package/esm/migrations/compare-migration-snapshots.js +61 -0
  4. package/esm/migrations/generate-migrations.js +68 -0
  5. package/esm/migrations/index.js +2 -0
  6. package/esm/migrations/migrate.js +85 -0
  7. package/esm/migrations/migration-types.js +36 -0
  8. package/esm/migrations/update-migrations-ts-file.js +115 -0
  9. package/esm/package.json +3 -0
  10. package/esm/postgres/schema-builder.js +4 -4
  11. package/esm/remult-better-sqlite3.js +47 -0
  12. package/esm/remult-bun-sqlite.js +41 -0
  13. package/esm/remult-duckdb.js +111 -0
  14. package/esm/remult-hapi.js +114 -0
  15. package/esm/remult-hono.js +104 -0
  16. package/esm/remult-mongo.js +1 -1
  17. package/esm/remult-nuxt.js +54 -0
  18. package/esm/remult-solid-start.js +97 -0
  19. package/esm/remult-sql-js.js +41 -0
  20. package/esm/remult-sqlite-core.js +137 -0
  21. package/esm/remult-sqlite3.js +61 -0
  22. package/esm/remult-turso.js +59 -0
  23. package/esm/server/get-remult-admin-html.js +3 -0
  24. package/esm/server/initDataProviderOrJson.js +6 -0
  25. package/esm/server/remult-admin.js +95 -0
  26. package/esm/server/remult-api-server.js +1157 -0
  27. package/esm/src/CompoundIdField.js +62 -0
  28. package/esm/src/backend-tests/backend-database-test-setup.backend-spec.js +11 -10
  29. package/esm/src/data-api.js +4 -2
  30. package/esm/src/data-providers/json-entity-opfs-storage.js +26 -0
  31. package/esm/src/isOfType.js +9 -0
  32. package/esm/src/live-query/SubscriptionServer.js +2 -2
  33. package/esm/src/remult-static.js +43 -0
  34. package/esm/src/remult3/Fields.js +335 -0
  35. package/esm/src/remult3/IdEntity.js +10 -0
  36. package/esm/src/remult3/RepositoryImplementation.js +7 -4
  37. package/esm/src/remult3/__updateEntityBasedOnWhere.js +28 -0
  38. package/esm/src/remult3/addValidator.js +15 -0
  39. package/esm/{core/src/remult3/DecoratorReplacer.js → src/remult3/classDescribers.js} +18 -3
  40. package/esm/src/remult3/entity.js +70 -0
  41. package/esm/src/remult3/getEntityRef.js +36 -0
  42. package/esm/src/remult3/relation-loader.js +153 -0
  43. package/esm/src/remult3/relationInfoMember.js +116 -0
  44. package/esm/src/remult3/repository-internals.js +7 -0
  45. package/esm/src/server-action-info.js +1 -0
  46. package/esm/src/shared-tests/db-tests.db-tests.js +1 -1
  47. package/graphql.js +2 -1
  48. package/internals.d.ts +15 -0
  49. package/internals.js +18 -0
  50. package/migrations/compare-migration-snapshots.d.ts +27 -0
  51. package/migrations/compare-migration-snapshots.js +164 -0
  52. package/migrations/generate-migrations.d.ts +21 -0
  53. package/migrations/generate-migrations.js +103 -0
  54. package/migrations/index.d.ts +3 -0
  55. package/migrations/index.js +7 -0
  56. package/migrations/migrate.d.ts +27 -0
  57. package/migrations/migrate.js +170 -0
  58. package/migrations/migration-types.d.ts +48 -0
  59. package/migrations/migration-types.js +88 -0
  60. package/migrations/update-migrations-ts-file.d.ts +1 -0
  61. package/migrations/update-migrations-ts-file.js +140 -0
  62. package/package.json +1 -1
  63. package/remult-better-sqlite3.d.ts +12 -0
  64. package/remult-better-sqlite3.js +64 -0
  65. package/remult-bun-sqlite.d.ts +11 -0
  66. package/remult-bun-sqlite.js +56 -0
  67. package/remult-duckdb.d.ts +9 -0
  68. package/remult-duckdb.js +150 -0
  69. package/remult-hapi.d.ts +6 -0
  70. package/remult-hapi.js +127 -0
  71. package/remult-hono.d.ts +7 -0
  72. package/remult-hono.js +115 -0
  73. package/remult-mongo.js +1 -1
  74. package/remult-nuxt.d.ts +6 -0
  75. package/remult-nuxt.js +78 -0
  76. package/remult-solid-start.d.ts +12 -0
  77. package/remult-solid-start.js +133 -0
  78. package/remult-sql-js.d.ts +5 -0
  79. package/remult-sql-js.js +73 -0
  80. package/remult-sqlite-core.d.ts +25 -0
  81. package/remult-sqlite-core.js +314 -0
  82. package/remult-sqlite3.d.ts +5 -0
  83. package/remult-sqlite3.js +76 -0
  84. package/remult-turso.d.ts +8 -0
  85. package/remult-turso.js +100 -0
  86. package/server/get-remult-admin-html.d.ts +1 -0
  87. package/server/get-remult-admin-html.js +6 -0
  88. package/server/initDataProviderOrJson.d.ts +2 -0
  89. package/server/initDataProviderOrJson.js +16 -0
  90. package/server/remult-admin.d.ts +43 -0
  91. package/server/remult-admin.js +123 -0
  92. package/{esm/core/server/expressBridge.d.ts → server/remult-api-server.d.ts} +75 -77
  93. package/server/remult-api-server.js +1626 -0
  94. package/src/CompoundIdField.d.ts +27 -0
  95. package/src/CompoundIdField.js +72 -0
  96. package/src/backend-tests/backend-database-test-setup.backend-spec.js +11 -10
  97. package/src/data-api.js +4 -2
  98. package/src/data-providers/json-entity-opfs-storage.d.ts +5 -0
  99. package/src/data-providers/json-entity-opfs-storage.js +74 -0
  100. package/src/isOfType.d.ts +2 -0
  101. package/src/isOfType.js +13 -0
  102. package/src/live-query/SubscriptionServer.js +2 -2
  103. package/src/remult-static.d.ts +26 -0
  104. package/src/remult-static.js +50 -0
  105. package/src/remult3/Fields.d.ts +170 -0
  106. package/src/remult3/Fields.js +419 -0
  107. package/src/remult3/IdEntity.d.ts +4 -0
  108. package/src/remult3/IdEntity.js +18 -0
  109. package/src/remult3/RepositoryImplementation.js +24 -22
  110. package/src/remult3/__updateEntityBasedOnWhere.d.ts +2 -0
  111. package/src/remult3/__updateEntityBasedOnWhere.js +31 -0
  112. package/src/remult3/addValidator.d.ts +2 -0
  113. package/src/remult3/addValidator.js +19 -0
  114. package/src/remult3/classDescribers.d.ts +16 -0
  115. package/src/remult3/classDescribers.js +40 -0
  116. package/src/remult3/columnInfo.d.ts +6 -0
  117. package/src/remult3/columnInfo.js +2 -0
  118. package/src/remult3/entity.d.ts +28 -0
  119. package/src/remult3/entity.js +86 -0
  120. package/src/remult3/getEntityRef.d.ts +18 -0
  121. package/src/remult3/getEntityRef.js +45 -0
  122. package/src/remult3/relation-loader-types.d.ts +7 -0
  123. package/src/remult3/relation-loader-types.js +2 -0
  124. package/src/remult3/relation-loader.d.ts +40 -0
  125. package/src/remult3/relation-loader.js +245 -0
  126. package/src/remult3/relationInfoMember.d.ts +30 -0
  127. package/src/remult3/relationInfoMember.js +149 -0
  128. package/src/remult3/repository-internals.d.ts +20 -0
  129. package/src/remult3/repository-internals.js +11 -0
  130. package/src/server-action-info.d.ts +1 -0
  131. package/src/server-action-info.js +4 -0
  132. package/src/shared-tests/db-tests.db-tests.js +1 -1
  133. package/esm/angular/interfaces/index.d.ts +0 -1
  134. package/esm/angular/interfaces/index.js +0 -1
  135. package/esm/angular/interfaces/src/column-collection.d.ts +0 -70
  136. package/esm/angular/interfaces/src/column-collection.js +0 -341
  137. package/esm/angular/interfaces/src/data-area-settings.d.ts +0 -15
  138. package/esm/angular/interfaces/src/data-area-settings.js +0 -35
  139. package/esm/angular/interfaces/src/data-control-interfaces.d.ts +0 -36
  140. package/esm/angular/interfaces/src/data-control-interfaces.js +0 -57
  141. package/esm/angular/interfaces/src/dataList.d.ts +0 -13
  142. package/esm/angular/interfaces/src/dataList.js +0 -42
  143. package/esm/angular/interfaces/src/filter-helper.d.ts +0 -13
  144. package/esm/angular/interfaces/src/filter-helper.js +0 -59
  145. package/esm/angular/interfaces/src/grid-settings.d.ts +0 -145
  146. package/esm/angular/interfaces/src/grid-settings.js +0 -387
  147. package/esm/angular/interfaces/src/public_api.d.ts +0 -4
  148. package/esm/angular/interfaces/src/public_api.js +0 -4
  149. package/esm/angular/src/angular/RemultAngularPluginsService.d.ts +0 -4
  150. package/esm/angular/src/angular/RemultAngularPluginsService.js +0 -3
  151. package/esm/angular/src/angular/data-control/data-control2.component.d.ts +0 -49
  152. package/esm/angular/src/angular/data-control/data-control2.component.js +0 -138
  153. package/esm/core/SseSubscriptionServer.d.ts +0 -33
  154. package/esm/core/SseSubscriptionServer.js +0 -107
  155. package/esm/core/assign.d.ts +0 -1
  156. package/esm/core/assign.js +0 -5
  157. package/esm/core/classType.d.ts +0 -3
  158. package/esm/core/index.d.ts +0 -27
  159. package/esm/core/index.js +0 -25
  160. package/esm/core/inputTypes.d.ts +0 -9
  161. package/esm/core/inputTypes.js +0 -9
  162. package/esm/core/live-query/data-provider-live-query-storage.d.ts +0 -22
  163. package/esm/core/live-query/data-provider-live-query-storage.js +0 -71
  164. package/esm/core/postgres/index.d.ts +0 -2
  165. package/esm/core/postgres/index.js +0 -2
  166. package/esm/core/postgres/postgres-data-provider.d.ts +0 -36
  167. package/esm/core/postgres/postgres-data-provider.js +0 -120
  168. package/esm/core/postgres/schema-builder.d.ts +0 -17
  169. package/esm/core/postgres/schema-builder.js +0 -153
  170. package/esm/core/remult-fresh.d.ts +0 -17
  171. package/esm/core/remult-fresh.js +0 -29
  172. package/esm/core/remult-knex/index.d.ts +0 -30
  173. package/esm/core/remult-knex/index.js +0 -446
  174. package/esm/core/remult-mongo.d.ts +0 -24
  175. package/esm/core/remult-mongo.js +0 -254
  176. package/esm/core/server/JsonEntityFileStorage.d.ts +0 -10
  177. package/esm/core/server/JsonEntityFileStorage.js +0 -25
  178. package/esm/core/server/core.d.ts +0 -4
  179. package/esm/core/server/core.js +0 -4
  180. package/esm/core/server/expressBridge.js +0 -938
  181. package/esm/core/server/index.d.ts +0 -6
  182. package/esm/core/server/index.js +0 -9
  183. package/esm/core/server/initAsyncHooks.d.ts +0 -1
  184. package/esm/core/server/initAsyncHooks.js +0 -9
  185. package/esm/core/server/initDataProvider.d.ts +0 -2
  186. package/esm/core/server/initDataProvider.js +0 -14
  187. package/esm/core/src/__EntityValueProvider.d.ts +0 -11
  188. package/esm/core/src/__RowsOfDataForTesting.d.ts +0 -3
  189. package/esm/core/src/__RowsOfDataForTesting.js +0 -1
  190. package/esm/core/src/backend-tests/backend-database-test-setup.backend-spec.d.ts +0 -6
  191. package/esm/core/src/backend-tests/backend-database-test-setup.backend-spec.js +0 -147
  192. package/esm/core/src/backend-tests/my-test.backend-spec.d.ts +0 -1
  193. package/esm/core/src/backend-tests/my-test.backend-spec.js +0 -197
  194. package/esm/core/src/backend-tests/test-http-server.backend-spec.d.ts +0 -1
  195. package/esm/core/src/backend-tests/test-http-server.backend-spec.js +0 -167
  196. package/esm/core/src/buildRestDataProvider.d.ts +0 -31
  197. package/esm/core/src/buildRestDataProvider.js +0 -113
  198. package/esm/core/src/column-interfaces.d.ts +0 -154
  199. package/esm/core/src/column-interfaces.js +0 -7
  200. package/esm/core/src/column.d.ts +0 -58
  201. package/esm/core/src/column.js +0 -174
  202. package/esm/core/src/context.d.ts +0 -134
  203. package/esm/core/src/context.js +0 -286
  204. package/esm/core/src/data-api.d.ts +0 -39
  205. package/esm/core/src/data-api.js +0 -279
  206. package/esm/core/src/data-interfaces.d.ts +0 -41
  207. package/esm/core/src/data-interfaces.js +0 -12
  208. package/esm/core/src/data-providers/array-entity-data-provider.d.ts +0 -22
  209. package/esm/core/src/data-providers/array-entity-data-provider.js +0 -252
  210. package/esm/core/src/data-providers/in-memory-database.d.ts +0 -9
  211. package/esm/core/src/data-providers/in-memory-database.js +0 -14
  212. package/esm/core/src/data-providers/json-data-provider.d.ts +0 -12
  213. package/esm/core/src/data-providers/json-data-provider.js +0 -55
  214. package/esm/core/src/data-providers/rest-data-provider.d.ts +0 -49
  215. package/esm/core/src/data-providers/rest-data-provider.js +0 -256
  216. package/esm/core/src/data-providers/sql-database.d.ts +0 -33
  217. package/esm/core/src/data-providers/sql-database.js +0 -384
  218. package/esm/core/src/data-providers/web-sql-data-provider.d.ts +0 -24
  219. package/esm/core/src/data-providers/web-sql-data-provider.js +0 -143
  220. package/esm/core/src/entity.d.ts +0 -91
  221. package/esm/core/src/entity.js +0 -1
  222. package/esm/core/src/filter/filter-consumer-bridge-to-sql-request.d.ts +0 -50
  223. package/esm/core/src/filter/filter-consumer-bridge-to-sql-request.js +0 -150
  224. package/esm/core/src/filter/filter-consumer-bridge-to-url-builder.d.ts +0 -1
  225. package/esm/core/src/filter/filter-consumer-bridge-to-url-builder.js +0 -1
  226. package/esm/core/src/filter/filter-interfaces.d.ts +0 -85
  227. package/esm/core/src/filter/filter-interfaces.js +0 -477
  228. package/esm/core/src/live-query/LiveQueryClient.d.ts +0 -20
  229. package/esm/core/src/live-query/LiveQueryClient.js +0 -188
  230. package/esm/core/src/live-query/SseSubscriptionClient.d.ts +0 -5
  231. package/esm/core/src/live-query/SseSubscriptionClient.js +0 -86
  232. package/esm/core/src/live-query/SubscriptionChannel.d.ts +0 -72
  233. package/esm/core/src/live-query/SubscriptionChannel.js +0 -123
  234. package/esm/core/src/live-query/SubscriptionServer.d.ts +0 -53
  235. package/esm/core/src/live-query/SubscriptionServer.js +0 -111
  236. package/esm/core/src/live-query/live-query-tests.spec.d.ts +0 -6
  237. package/esm/core/src/live-query/live-query-tests.spec.js +0 -952
  238. package/esm/core/src/remult-proxy.d.ts +0 -35
  239. package/esm/core/src/remult-proxy.js +0 -113
  240. package/esm/core/src/remult3/DecoratorReplacer.d.ts +0 -10
  241. package/esm/core/src/remult3/RepositoryImplementation.d.ts +0 -355
  242. package/esm/core/src/remult3/RepositoryImplementation.js +0 -2109
  243. package/esm/core/src/remult3/index.d.ts +0 -2
  244. package/esm/core/src/remult3/index.js +0 -2
  245. package/esm/core/src/remult3/remult3.d.ts +0 -395
  246. package/esm/core/src/remult3/remult3.js +0 -2
  247. package/esm/core/src/server-action.d.ts +0 -81
  248. package/esm/core/src/server-action.js +0 -394
  249. package/esm/core/src/shared-tests/db-tests-setup.d.ts +0 -32
  250. package/esm/core/src/shared-tests/db-tests-setup.js +0 -78
  251. package/esm/core/src/shared-tests/db-tests.db-tests.d.ts +0 -25
  252. package/esm/core/src/shared-tests/db-tests.db-tests.js +0 -810
  253. package/esm/core/src/shared-tests/deleteAll.d.ts +0 -2
  254. package/esm/core/src/shared-tests/deleteAll.js +0 -4
  255. package/esm/core/src/shared-tests/entityWithValidations.d.ts +0 -14
  256. package/esm/core/src/shared-tests/entityWithValidations.js +0 -43
  257. package/esm/core/src/shared-tests/index.d.ts +0 -4
  258. package/esm/core/src/shared-tests/index.js +0 -4
  259. package/esm/core/src/shared-tests/test-custom-id-column.spec.d.ts +0 -1
  260. package/esm/core/src/shared-tests/test-custom-id-column.spec.js +0 -67
  261. package/esm/core/src/shared-tests/test-special-value.spec.d.ts +0 -10
  262. package/esm/core/src/shared-tests/test-special-value.spec.js +0 -73
  263. package/esm/core/src/shared-tests/test-update-with-null.spec.d.ts +0 -1
  264. package/esm/core/src/shared-tests/test-update-with-null.spec.js +0 -31
  265. package/esm/core/src/sort.d.ts +0 -16
  266. package/esm/core/src/sort.js +0 -103
  267. package/esm/core/src/sql-command.d.ts +0 -19
  268. package/esm/core/src/sql-command.js +0 -1
  269. package/esm/core/src/test.d.ts +0 -3
  270. package/esm/core/src/test.js +0 -12
  271. package/esm/core/src/tests/Done.d.ts +0 -5
  272. package/esm/core/src/tests/Done.js +0 -9
  273. package/esm/core/src/tests/RowProvider.spec.d.ts +0 -16
  274. package/esm/core/src/tests/RowProvider.spec.js +0 -631
  275. package/esm/core/src/tests/TestDataApiResponse.d.ts +0 -10
  276. package/esm/core/src/tests/TestDataApiResponse.js +0 -22
  277. package/esm/core/src/tests/basicRowFunctionality.spec.d.ts +0 -8
  278. package/esm/core/src/tests/basicRowFunctionality.spec.js +0 -2103
  279. package/esm/core/src/tests/c.d.ts +0 -8
  280. package/esm/core/src/tests/c.js +0 -13
  281. package/esm/core/src/tests/createData.d.ts +0 -7
  282. package/esm/core/src/tests/createData.js +0 -22
  283. package/esm/core/src/tests/d.d.ts +0 -6
  284. package/esm/core/src/tests/d.js +0 -11
  285. package/esm/core/src/tests/dWithPrefilter.d.ts +0 -7
  286. package/esm/core/src/tests/dWithPrefilter.js +0 -18
  287. package/esm/core/src/tests/entityForCustomFilter.d.ts +0 -16
  288. package/esm/core/src/tests/entityForCustomFilter.js +0 -33
  289. package/esm/core/src/tests/entityWithValidationsOnColumn.d.ts +0 -5
  290. package/esm/core/src/tests/entityWithValidationsOnColumn.js +0 -13
  291. package/esm/core/src/tests/frontend-database-tests-setup.spec.d.ts +0 -4
  292. package/esm/core/src/tests/frontend-database-tests-setup.spec.js +0 -37
  293. package/esm/core/src/tests/h.d.ts +0 -6
  294. package/esm/core/src/tests/h.js +0 -24
  295. package/esm/core/src/tests/remult-3-basic-tests.spec.d.ts +0 -1
  296. package/esm/core/src/tests/remult-3-basic-tests.spec.js +0 -236
  297. package/esm/core/src/tests/remult-3-entities.d.ts +0 -23
  298. package/esm/core/src/tests/remult-3-entities.js +0 -39
  299. package/esm/core/src/tests/tasks.d.ts +0 -6
  300. package/esm/core/src/tests/tasks.js +0 -10
  301. package/esm/core/src/tests/test-context-as-storage.spec.d.ts +0 -0
  302. package/esm/core/src/tests/test-context-as-storage.spec.js +0 -1
  303. package/esm/core/src/tests/test-data-api/predefined-filter.spec.d.ts +0 -1
  304. package/esm/core/src/tests/test-data-api/predefined-filter.spec.js +0 -389
  305. package/esm/core/src/tests/test-data-api/test-put-with-validation.spec.d.ts +0 -5
  306. package/esm/core/src/tests/test-data-api/test-put-with-validation.spec.js +0 -152
  307. package/esm/core/src/tests/test-decorator-precedence.spec.d.ts +0 -1
  308. package/esm/core/src/tests/test-decorator-precedence.spec.js +0 -38
  309. package/esm/core/src/tests/test-default-value.spec.d.ts +0 -1
  310. package/esm/core/src/tests/test-default-value.spec.js +0 -33
  311. package/esm/core/src/tests/test-entity-inheritance.spec.d.ts +0 -14
  312. package/esm/core/src/tests/test-entity-inheritance.spec.js +0 -82
  313. package/esm/core/src/tests/test-exceptions.spec.d.ts +0 -1
  314. package/esm/core/src/tests/test-exceptions.spec.js +0 -375
  315. package/esm/core/src/tests/test-json.spec.d.ts +0 -1
  316. package/esm/core/src/tests/test-json.spec.js +0 -115
  317. package/esm/core/src/tests/test-many-to-one-relation-in-entity.spec.d.ts +0 -9
  318. package/esm/core/src/tests/test-many-to-one-relation-in-entity.spec.js +0 -809
  319. package/esm/core/src/tests/test-non-active-record.spec.d.ts +0 -1
  320. package/esm/core/src/tests/test-non-active-record.spec.js +0 -66
  321. package/esm/core/src/tests/test-object-column.spec.d.ts +0 -1
  322. package/esm/core/src/tests/test-object-column.spec.js +0 -189
  323. package/esm/core/src/tests/test-paged-foreach.spec.d.ts +0 -1
  324. package/esm/core/src/tests/test-paged-foreach.spec.js +0 -328
  325. package/esm/core/src/tests/test-remult-angular.spec.d.ts +0 -1
  326. package/esm/core/src/tests/test-remult-angular.spec.js +0 -23
  327. package/esm/core/src/tests/test-server-controller.spec.d.ts +0 -7
  328. package/esm/core/src/tests/test-server-controller.spec.js +0 -489
  329. package/esm/core/src/tests/test-server-expressions.spec.d.ts +0 -1
  330. package/esm/core/src/tests/test-server-expressions.spec.js +0 -178
  331. package/esm/core/src/tests/test-server-method-on-entity.spec.d.ts +0 -1
  332. package/esm/core/src/tests/test-server-method-on-entity.spec.js +0 -306
  333. package/esm/core/src/tests/test-sql-expression.spec.d.ts +0 -5
  334. package/esm/core/src/tests/test-sql-expression.spec.js +0 -205
  335. package/esm/core/src/tests/test-sql.spec.d.ts +0 -1
  336. package/esm/core/src/tests/test-sql.spec.js +0 -170
  337. package/esm/core/src/tests/test-subscribe.spec.d.ts +0 -1
  338. package/esm/core/src/tests/test-subscribe.spec.js +0 -135
  339. package/esm/core/src/tests/test-type-recovery.spec.d.ts +0 -1
  340. package/esm/core/src/tests/test-type-recovery.spec.js +0 -49
  341. package/esm/core/src/tests/test-where-api.spec.d.ts +0 -1
  342. package/esm/core/src/tests/test-where-api.spec.js +0 -434
  343. package/esm/core/src/tests/testHelper.spec.d.ts +0 -36
  344. package/esm/core/src/tests/testHelper.spec.js +0 -226
  345. package/esm/core/src/tests/testModel/models.d.ts +0 -16
  346. package/esm/core/src/tests/testModel/models.js +0 -25
  347. package/esm/core/src/validators.d.ts +0 -14
  348. package/esm/core/src/validators.js +0 -33
  349. package/esm/core/src/valueConverters.d.ts +0 -13
  350. package/esm/core/src/valueConverters.js +0 -197
  351. package/esm/core/urlBuilder.d.ts +0 -6
  352. package/esm/core/urlBuilder.js +0 -20
  353. package/esm/test-servers/shared/Task.d.ts +0 -9
  354. package/esm/test-servers/shared/Task.js +0 -32
  355. package/esm/test.d.ts +0 -5
  356. package/esm/test.js +0 -6
  357. /package/esm/{core/classType.js → src/remult3/columnInfo.js} +0 -0
  358. /package/esm/{core/src/__EntityValueProvider.js → src/remult3/relation-loader-types.js} +0 -0
@@ -1,86 +0,0 @@
1
- import { buildRestDataProvider } from "../buildRestDataProvider";
2
- import { remult } from "../remult-proxy";
3
- import { actionInfo } from "../server-action";
4
- import { streamUrl } from "./SubscriptionChannel";
5
- export class SseSubscriptionClient {
6
- openConnection(onReconnect) {
7
- let connectionId;
8
- const channels = new Map();
9
- const provider = buildRestDataProvider(remult.apiClient.httpClient);
10
- let connected = false;
11
- let source;
12
- const client = {
13
- close() {
14
- source.close();
15
- },
16
- async subscribe(channel, handler) {
17
- let listeners = channels.get(channel);
18
- if (!listeners) {
19
- channels.set(channel, listeners = []);
20
- await subscribeToChannel(channel);
21
- }
22
- listeners.push(handler);
23
- return () => {
24
- listeners.splice(listeners.indexOf(handler, 1));
25
- if (listeners.length == 0) {
26
- actionInfo.runActionWithoutBlockingUI(() => provider.post(remult.apiClient.url + '/' + streamUrl + '/unsubscribe', {
27
- channel: channel,
28
- clientId: connectionId
29
- }));
30
- channels.delete(channel);
31
- }
32
- };
33
- },
34
- };
35
- const createConnectionPromise = () => new Promise((res) => {
36
- createConnection();
37
- function createConnection() {
38
- if (source)
39
- source.close();
40
- source = new EventSource(remult.apiClient.url + '/' + streamUrl, {
41
- withCredentials: true
42
- });
43
- source.onmessage = e => {
44
- let message = JSON.parse(e.data);
45
- const listeners = channels.get(message.channel);
46
- if (listeners)
47
- listeners.forEach(x => x(message.data));
48
- };
49
- source.onerror = e => {
50
- console.error("Live Query Event Source Error", e);
51
- source.close();
52
- setTimeout(() => {
53
- createConnection();
54
- }, 500);
55
- };
56
- source.addEventListener("connectionId", async (e) => {
57
- //@ts-ignore
58
- connectionId = e.data;
59
- if (connected) {
60
- for (const channel of channels.keys()) {
61
- await subscribeToChannel(channel);
62
- }
63
- onReconnect();
64
- }
65
- else {
66
- connected = true;
67
- res(client);
68
- }
69
- });
70
- }
71
- });
72
- return createConnectionPromise();
73
- async function subscribeToChannel(channel) {
74
- const result = await actionInfo.runActionWithoutBlockingUI(() => {
75
- return provider.post(remult.apiClient.url + '/' + streamUrl + '/subscribe', {
76
- channel: channel,
77
- clientId: connectionId
78
- });
79
- });
80
- if (result === ConnectionNotFoundError) {
81
- await createConnectionPromise();
82
- }
83
- }
84
- }
85
- }
86
- export const ConnectionNotFoundError = "client connection not found";
@@ -1,72 +0,0 @@
1
- import { FindOptions, Remult } from '../../index';
2
- import type { LiveQueryChangeInfo, RepositoryImplementation } from '../remult3';
3
- export declare const streamUrl = "stream";
4
- export declare class LiveQuerySubscriber<entityType> {
5
- private repo;
6
- private query;
7
- sendDefaultState(onResult: (info: LiveQueryChangeInfo<entityType>) => void): void;
8
- queryChannel: string;
9
- subscribeCode: () => void;
10
- unsubscribe: VoidFunction;
11
- setAllItems(result: any[]): Promise<void>;
12
- private allItemsMessage;
13
- forListeners(what: (listener: (((reducer: (prevState: entityType[]) => entityType[]) => void))) => void, changes: LiveQueryChange[]): void;
14
- private createReducerType;
15
- handle(messages: LiveQueryChange[]): Promise<void>;
16
- defaultQueryState: entityType[];
17
- listeners: SubscriptionListener<LiveQueryChangeInfo<entityType>>[];
18
- id: any;
19
- constructor(repo: RepositoryImplementation<entityType>, query: SubscribeToQueryArgs<entityType>, userId: string);
20
- }
21
- export interface SubscriptionListener<type> {
22
- next(message: type): void;
23
- error(err: any): void;
24
- complete(): void;
25
- }
26
- export type Unsubscribe = VoidFunction;
27
- export interface SubscriptionClientConnection {
28
- subscribe(channel: string, onMessage: (message: any) => void, onError: (err: any) => void): Promise<Unsubscribe>;
29
- close(): void;
30
- }
31
- export interface SubscriptionClient {
32
- openConnection(onReconnect: VoidFunction): Promise<SubscriptionClientConnection>;
33
- }
34
- export declare const liveQueryKeepAliveRoute = "_liveQueryKeepAlive";
35
- interface SubscribeToQueryArgs<entityType = any> {
36
- entityKey: string;
37
- options: FindOptions<entityType>;
38
- }
39
- export declare type LiveQueryChange = {
40
- type: "all";
41
- data: any[];
42
- } | {
43
- type: "add";
44
- data: any;
45
- } | {
46
- type: 'replace';
47
- data: {
48
- oldId: any;
49
- item: any;
50
- };
51
- } | {
52
- type: "remove";
53
- data: {
54
- id: any;
55
- };
56
- };
57
- export interface SubscribeResult {
58
- result: [];
59
- queryChannel: string;
60
- }
61
- export interface ServerEventChannelSubscribeDTO {
62
- clientId: string;
63
- channel: string;
64
- }
65
- export declare class SubscriptionChannel<messageType> {
66
- channelKey: string;
67
- constructor(channelKey: string);
68
- publish(message: messageType, remult?: Remult): void;
69
- subscribe(next: (message: messageType) => void, remult?: Remult): Promise<Unsubscribe>;
70
- subscribe(listener: Partial<SubscriptionListener<messageType>>): Promise<Unsubscribe>;
71
- }
72
- export {};
@@ -1,123 +0,0 @@
1
- import { remult as defaultRemult, Sort } from '../../index';
2
- import { v4 as uuid } from 'uuid';
3
- import { getLiveQueryChannel } from '../data-api';
4
- export const streamUrl = 'stream';
5
- //@internal
6
- export class LiveQuerySubscriber {
7
- repo;
8
- query;
9
- sendDefaultState(onResult) {
10
- onResult(this.createReducerType(() => [...this.defaultQueryState], this.allItemsMessage(this.defaultQueryState)));
11
- }
12
- queryChannel;
13
- subscribeCode;
14
- unsubscribe = () => { };
15
- async setAllItems(result) {
16
- const items = await this.repo.fromJsonArray(result, this.query.options.load);
17
- this.forListeners(listener => {
18
- listener(x => {
19
- return items;
20
- });
21
- }, this.allItemsMessage(items));
22
- }
23
- allItemsMessage(items) {
24
- return [
25
- {
26
- type: "all",
27
- data: items
28
- }
29
- ];
30
- }
31
- forListeners(what, changes) {
32
- what(reducer => {
33
- this.defaultQueryState = reducer(this.defaultQueryState);
34
- if (changes.find(c => c.type === "add" || c.type === "replace")) {
35
- if (this.query.options.orderBy) {
36
- const o = Sort.translateOrderByToSort(this.repo.metadata, this.query.options.orderBy);
37
- this.defaultQueryState.sort((a, b) => o.compare(a, b));
38
- }
39
- }
40
- });
41
- for (const l of this.listeners) {
42
- what(reducer => {
43
- l.next(this.createReducerType(reducer, changes));
44
- });
45
- }
46
- }
47
- createReducerType(applyChanges, changes) {
48
- return {
49
- applyChanges,
50
- changes,
51
- items: this.defaultQueryState
52
- };
53
- }
54
- async handle(messages) {
55
- {
56
- let x = messages.filter(({ type }) => type == "add" || type == "replace");
57
- let loadedItems = await this.repo.fromJsonArray(x.map(m => m.data.item), this.query.options.load);
58
- for (let index = 0; index < x.length; index++) {
59
- const element = x[index];
60
- element.data.item = loadedItems[index];
61
- }
62
- }
63
- this.forListeners(listener => {
64
- listener(items => {
65
- if (!items)
66
- items = [];
67
- for (const message of messages) {
68
- switch (message.type) {
69
- case "all":
70
- this.setAllItems(message.data);
71
- break;
72
- case "replace": {
73
- items = items.map(x => this.repo.metadata.idMetadata.getId(x) === message.data.oldId ? message.data.item : x);
74
- break;
75
- }
76
- case "add":
77
- items = items.filter(x => this.repo.metadata.idMetadata.getId(x) !== this.repo.metadata.idMetadata.getId(message.data.item));
78
- items.push(message.data.item);
79
- break;
80
- case "remove":
81
- items = items.filter(x => this.repo.metadata.idMetadata.getId(x) !== message.data.id);
82
- break;
83
- }
84
- ;
85
- }
86
- return items;
87
- });
88
- }, messages);
89
- }
90
- defaultQueryState = [];
91
- listeners = [];
92
- id = uuid();
93
- constructor(repo, query, userId) {
94
- this.repo = repo;
95
- this.query = query;
96
- this.queryChannel = getLiveQueryChannel(this.id, userId);
97
- }
98
- }
99
- export const liveQueryKeepAliveRoute = '_liveQueryKeepAlive';
100
- export class SubscriptionChannel {
101
- channelKey;
102
- constructor(channelKey) {
103
- this.channelKey = channelKey;
104
- }
105
- publish(message, remult) {
106
- remult = remult || defaultRemult;
107
- remult.subscriptionServer.publishMessage(this.channelKey, message);
108
- }
109
- //@internal
110
- subscribe(next, remult) {
111
- remult = remult || defaultRemult;
112
- let listener = next;
113
- if (typeof (next) === "function") {
114
- listener = {
115
- next
116
- };
117
- }
118
- listener.error ??= () => { };
119
- listener.complete ??= () => { };
120
- return remult.liveQuerySubscriber.subscribeChannel(this.channelKey, listener);
121
- }
122
- }
123
- //TODO2 - consider moving the queued job mechanism into this.
@@ -1,53 +0,0 @@
1
- import { itemChange } from '../context';
2
- import { Repository } from '../remult3';
3
- export interface SubscriptionServer {
4
- publishMessage<T>(channel: string, message: T): Promise<void>;
5
- }
6
- export declare type PerformWithContext = (serializedRequest: any, entityKey: string, what: (repo: Repository<any>) => Promise<void>) => Promise<void>;
7
- export declare class LiveQueryPublisher implements LiveQueryChangesListener {
8
- private subscriptionServer;
9
- private liveQueryStorage;
10
- performWithContext: PerformWithContext;
11
- constructor(subscriptionServer: () => SubscriptionServer, liveQueryStorage: () => LiveQueryStorage, performWithContext: PerformWithContext);
12
- runPromise(p: Promise<any>): void;
13
- debugFileSaver: (x: any) => void;
14
- itemChanged(entityKey: string, changes: itemChange[]): Promise<void>;
15
- }
16
- export interface LiveQueryChangesListener {
17
- itemChanged(entityKey: string, changes: itemChange[]): Promise<void>;
18
- }
19
- export interface LiveQueryStorage {
20
- add(query: StoredQuery): Promise<void>;
21
- remove(queryId: string): Promise<void>;
22
- forEach(entityKey: string, callback: (args: {
23
- query: StoredQuery;
24
- setData(data: any): Promise<void>;
25
- }) => Promise<void>): Promise<void>;
26
- keepAliveAndReturnUnknownQueryIds(queryIds: string[]): Promise<string[]>;
27
- }
28
- export declare class InMemoryLiveQueryStorage implements LiveQueryStorage {
29
- debugFileSaver: (x: any) => void;
30
- debug(): void;
31
- keepAliveAndReturnUnknownQueryIds(ids: string[]): Promise<string[]>;
32
- queries: (StoredQuery & {
33
- lastUsed: string;
34
- })[];
35
- constructor();
36
- add(query: StoredQuery): Promise<void>;
37
- removeCountForTesting: number;
38
- remove(id: any): Promise<void>;
39
- forEach(entityKey: string, handle: (args: {
40
- query: StoredQuery;
41
- setData(data: any): Promise<void>;
42
- }) => Promise<void>): Promise<void>;
43
- }
44
- export interface StoredQuery {
45
- entityKey: string;
46
- id: string;
47
- data: any;
48
- }
49
- export interface QueryData {
50
- findOptionsJson: any;
51
- requestJson: any;
52
- lastIds: any[];
53
- }
@@ -1,111 +0,0 @@
1
- import { findOptionsFromJson } from '../data-providers/rest-data-provider';
2
- /* @internal*/
3
- export class LiveQueryPublisher {
4
- subscriptionServer;
5
- liveQueryStorage;
6
- performWithContext;
7
- constructor(subscriptionServer, liveQueryStorage, performWithContext) {
8
- this.subscriptionServer = subscriptionServer;
9
- this.liveQueryStorage = liveQueryStorage;
10
- this.performWithContext = performWithContext;
11
- }
12
- runPromise(p) { }
13
- debugFileSaver = (x) => { };
14
- async itemChanged(entityKey, changes) {
15
- //TODO 2 - optimize so that the user will get their messages first. Based on user id
16
- await (this.liveQueryStorage().forEach(entityKey, async ({ query: q, setData }) => {
17
- let query = { ...q.data };
18
- await this.performWithContext(query.requestJson, entityKey, async (repo) => {
19
- const messages = [];
20
- const currentItems = await repo.find(findOptionsFromJson(query.findOptionsJson, repo.metadata));
21
- const currentIds = currentItems.map(x => repo.getEntityRef(x).getId());
22
- for (const id of query.lastIds.filter(y => !currentIds.includes(y))) {
23
- let c = changes.find(c => c.oldId == id);
24
- if (c === undefined || id != c.oldId || !currentIds.includes(c.id))
25
- messages.push({
26
- type: "remove",
27
- data: {
28
- id: id
29
- }
30
- });
31
- }
32
- for (const item of currentItems) {
33
- const itemRef = repo.getEntityRef(item);
34
- let c = changes.find(c => c.id == itemRef.getId());
35
- if (c !== undefined && query.lastIds.includes(c.oldId)) {
36
- messages.push({
37
- type: "replace",
38
- data: {
39
- oldId: c.oldId,
40
- item: itemRef.toApiJson()
41
- }
42
- });
43
- }
44
- else if (!query.lastIds.includes(itemRef.getId())) {
45
- messages.push({
46
- type: "add",
47
- data: { item: itemRef.toApiJson() }
48
- });
49
- }
50
- }
51
- this.debugFileSaver({
52
- query: q.id,
53
- currentIds,
54
- changes,
55
- lastIds: query.lastIds,
56
- messages
57
- });
58
- query.lastIds = currentIds;
59
- await setData(query);
60
- if (messages.length > 0)
61
- this.subscriptionServer().publishMessage(q.id, messages);
62
- });
63
- }));
64
- }
65
- }
66
- export class InMemoryLiveQueryStorage {
67
- debugFileSaver = (x) => { };
68
- debug() {
69
- this.debugFileSaver(this.queries);
70
- }
71
- async keepAliveAndReturnUnknownQueryIds(ids) {
72
- const result = [];
73
- for (const id of ids) {
74
- let q = this.queries.find(q => q.id === id);
75
- if (q) {
76
- q.lastUsed = new Date().toISOString();
77
- }
78
- else
79
- result.push(id);
80
- }
81
- this.debug();
82
- return result;
83
- }
84
- queries = [];
85
- constructor() {
86
- }
87
- async add(query) {
88
- this.queries.push({ ...query, lastUsed: new Date().toISOString() });
89
- this.debug();
90
- }
91
- removeCountForTesting = 0;
92
- async remove(id) {
93
- this.queries = this.queries.filter(q => q.id !== id);
94
- this.removeCountForTesting++;
95
- this.debug();
96
- }
97
- async forEach(entityKey, handle) {
98
- let d = new Date();
99
- d.setMinutes(d.getMinutes() - 5);
100
- this.queries = this.queries.filter(x => x.lastUsed > d.toISOString());
101
- for (const q of this.queries) {
102
- if (q.entityKey === entityKey) {
103
- await handle({
104
- query: q,
105
- setData: async (data) => { q.data = data; },
106
- });
107
- }
108
- }
109
- this.debug();
110
- }
111
- }
@@ -1,6 +0,0 @@
1
- export declare class eventTestEntity {
2
- id: number;
3
- title: string;
4
- selectUser: string;
5
- birthDate: Date;
6
- }