remult 0.17.0-exp.7 → 0.17.0-exp.8

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 (328) hide show
  1. package/README.md +28 -5
  2. package/core/assign.d.ts +1 -0
  3. package/core/assign.js +9 -0
  4. package/core/classType.d.ts +3 -0
  5. package/core/classType.js +2 -0
  6. package/core/graphql.d.ts +5 -0
  7. package/core/graphql.js +164 -0
  8. package/core/index.d.ts +25 -0
  9. package/core/index.js +64 -0
  10. package/core/inputTypes.d.ts +9 -0
  11. package/core/inputTypes.js +16 -0
  12. package/core/postgres/index.d.ts +2 -0
  13. package/core/postgres/index.js +5 -0
  14. package/core/postgres/postgres-data-provider.d.ts +28 -0
  15. package/core/postgres/postgres-data-provider.js +159 -0
  16. package/core/postgres/schema-builder.d.ts +15 -0
  17. package/core/postgres/schema-builder.js +270 -0
  18. package/core/remult-express.d.ts +6 -0
  19. package/core/remult-express.js +34 -0
  20. package/core/remult-fastify.d.ts +3 -0
  21. package/core/remult-fastify.js +62 -0
  22. package/core/remult-fresh.d.ts +22 -0
  23. package/core/remult-fresh.js +59 -0
  24. package/core/remult-knex/index.d.ts +51 -0
  25. package/core/remult-knex/index.js +813 -0
  26. package/core/remult-mongo.d.ts +9 -0
  27. package/core/remult-mongo.js +455 -0
  28. package/core/server/JsonEntityFileStorage.d.ts +10 -0
  29. package/core/server/JsonEntityFileStorage.js +35 -0
  30. package/core/server/core.d.ts +2 -0
  31. package/core/server/core.js +8 -0
  32. package/core/server/expressBridge.d.ts +102 -0
  33. package/core/server/expressBridge.js +1077 -0
  34. package/core/server/index.d.ts +4 -0
  35. package/core/server/index.js +13 -0
  36. package/core/server/initAsyncHooks.d.ts +1 -0
  37. package/core/server/initAsyncHooks.js +13 -0
  38. package/core/src/__EntityValueProvider.d.ts +10 -0
  39. package/core/src/__EntityValueProvider.js +2 -0
  40. package/core/src/__RowsOfDataForTesting.d.ts +3 -0
  41. package/core/src/__RowsOfDataForTesting.js +2 -0
  42. package/core/src/backend-tests/backend-database-test-setup.backend-spec.d.ts +6 -0
  43. package/core/src/backend-tests/backend-database-test-setup.backend-spec.js +241 -0
  44. package/core/src/backend-tests/my-test.backend-spec.d.ts +1 -0
  45. package/core/src/backend-tests/my-test.backend-spec.js +217 -0
  46. package/core/src/backend-tests/test-http-server.backend-spec.d.ts +1 -0
  47. package/core/src/backend-tests/test-http-server.backend-spec.js +351 -0
  48. package/core/src/column-interfaces.d.ts +95 -0
  49. package/core/src/column-interfaces.js +11 -0
  50. package/core/src/column.d.ts +49 -0
  51. package/core/src/column.js +175 -0
  52. package/core/src/context.d.ts +115 -0
  53. package/core/src/context.js +403 -0
  54. package/core/src/data-api.d.ts +33 -0
  55. package/core/src/data-api.js +368 -0
  56. package/core/src/data-interfaces.d.ts +37 -0
  57. package/core/src/data-interfaces.js +16 -0
  58. package/core/src/data-providers/array-entity-data-provider.d.ts +22 -0
  59. package/core/src/data-providers/array-entity-data-provider.js +379 -0
  60. package/core/src/data-providers/in-memory-database.d.ts +9 -0
  61. package/core/src/data-providers/in-memory-database.js +31 -0
  62. package/core/src/data-providers/json-data-provider.d.ts +12 -0
  63. package/core/src/data-providers/json-data-provider.js +88 -0
  64. package/core/src/data-providers/rest-data-provider.d.ts +38 -0
  65. package/core/src/data-providers/rest-data-provider.js +301 -0
  66. package/core/src/data-providers/sql-database.d.ts +16 -0
  67. package/core/src/data-providers/sql-database.js +444 -0
  68. package/core/src/data-providers/web-sql-data-provider.d.ts +18 -0
  69. package/core/src/data-providers/web-sql-data-provider.js +182 -0
  70. package/core/src/entity.d.ts +82 -0
  71. package/core/src/entity.js +2 -0
  72. package/core/src/filter/filter-consumer-bridge-to-sql-request.d.ts +50 -0
  73. package/core/src/filter/filter-consumer-bridge-to-sql-request.js +281 -0
  74. package/core/src/filter/filter-consumer-bridge-to-url-builder.d.ts +1 -0
  75. package/core/src/filter/filter-consumer-bridge-to-url-builder.js +2 -0
  76. package/core/src/filter/filter-interfaces.d.ts +85 -0
  77. package/core/src/filter/filter-interfaces.js +630 -0
  78. package/core/src/id-entity.d.ts +4 -0
  79. package/core/src/id-entity.js +17 -0
  80. package/core/src/remult-proxy.d.ts +2 -0
  81. package/core/src/remult-proxy.js +91 -0
  82. package/core/src/remult3/DecoratorReplacer.d.ts +10 -0
  83. package/core/src/remult3/DecoratorReplacer.js +24 -0
  84. package/core/src/remult3/RepositoryImplementation.d.ts +323 -0
  85. package/core/src/remult3/RepositoryImplementation.js +2970 -0
  86. package/core/src/remult3/index.d.ts +2 -0
  87. package/core/src/remult3/index.js +5 -0
  88. package/core/src/remult3/remult3.d.ts +312 -0
  89. package/core/src/remult3/remult3.js +2 -0
  90. package/core/src/server-action.d.ts +72 -0
  91. package/core/src/server-action.js +612 -0
  92. package/core/src/shared-tests/db-tests-setup.d.ts +23 -0
  93. package/core/src/shared-tests/db-tests-setup.js +172 -0
  94. package/core/src/shared-tests/db-tests.db-tests.d.ts +26 -0
  95. package/core/src/shared-tests/db-tests.db-tests.js +1629 -0
  96. package/core/src/shared-tests/deleteAll.d.ts +2 -0
  97. package/core/src/shared-tests/deleteAll.js +21 -0
  98. package/core/src/shared-tests/entityWithValidations.d.ts +14 -0
  99. package/core/src/shared-tests/entityWithValidations.js +80 -0
  100. package/core/src/shared-tests/index.d.ts +4 -0
  101. package/core/src/shared-tests/index.js +6 -0
  102. package/core/src/shared-tests/test-custom-id-column.spec.d.ts +1 -0
  103. package/core/src/shared-tests/test-custom-id-column.spec.js +111 -0
  104. package/core/src/shared-tests/test-special-value.spec.d.ts +10 -0
  105. package/core/src/shared-tests/test-special-value.spec.js +128 -0
  106. package/core/src/shared-tests/test-update-with-null.spec.d.ts +1 -0
  107. package/core/src/shared-tests/test-update-with-null.spec.js +87 -0
  108. package/core/src/sort.d.ts +15 -0
  109. package/core/src/sort.js +139 -0
  110. package/core/src/sql-command.d.ts +15 -0
  111. package/core/src/sql-command.js +2 -0
  112. package/core/src/tests/Done.d.ts +5 -0
  113. package/core/src/tests/Done.js +17 -0
  114. package/core/src/tests/TestDataApiResponse.d.ts +10 -0
  115. package/core/src/tests/TestDataApiResponse.js +29 -0
  116. package/core/src/tests/c.d.ts +8 -0
  117. package/core/src/tests/c.js +28 -0
  118. package/core/src/tests/createData.d.ts +7 -0
  119. package/core/src/tests/createData.js +50 -0
  120. package/core/src/tests/d.d.ts +6 -0
  121. package/core/src/tests/d.js +27 -0
  122. package/core/src/tests/dWithPrefilter.d.ts +7 -0
  123. package/core/src/tests/dWithPrefilter.js +45 -0
  124. package/core/src/tests/entityForCustomFilter.d.ts +16 -0
  125. package/core/src/tests/entityForCustomFilter.js +68 -0
  126. package/core/src/tests/entityWithValidationsOnColumn.d.ts +5 -0
  127. package/core/src/tests/entityWithValidationsOnColumn.js +29 -0
  128. package/core/src/tests/frontend-database-tests-setup.spec.d.ts +4 -0
  129. package/core/src/tests/frontend-database-tests-setup.spec.js +101 -0
  130. package/core/src/tests/h.d.ts +6 -0
  131. package/core/src/tests/h.js +44 -0
  132. package/core/src/tests/remult-3-entities.d.ts +23 -0
  133. package/core/src/tests/remult-3-entities.js +81 -0
  134. package/core/src/tests/tasks.d.ts +6 -0
  135. package/core/src/tests/tasks.js +30 -0
  136. package/core/src/tests/testHelper.spec.d.ts +34 -0
  137. package/core/src/tests/testHelper.spec.js +374 -0
  138. package/core/src/tests/testModel/models.d.ts +16 -0
  139. package/core/src/tests/testModel/models.js +39 -0
  140. package/core/src/validators.d.ts +14 -0
  141. package/core/src/validators.js +60 -0
  142. package/core/src/valueConverters.d.ts +12 -0
  143. package/core/src/valueConverters.js +170 -0
  144. package/core/urlBuilder.d.ts +6 -0
  145. package/core/urlBuilder.js +25 -0
  146. package/esm/core/assign.d.ts +1 -0
  147. package/esm/core/assign.js +5 -0
  148. package/esm/core/classType.d.ts +3 -0
  149. package/esm/core/classType.js +1 -0
  150. package/esm/core/graphql.d.ts +5 -0
  151. package/esm/core/graphql.js +102 -0
  152. package/esm/core/index.d.ts +25 -0
  153. package/esm/core/index.js +24 -0
  154. package/esm/core/inputTypes.d.ts +9 -0
  155. package/esm/core/inputTypes.js +9 -0
  156. package/esm/core/postgres/index.d.ts +2 -0
  157. package/esm/core/postgres/index.js +2 -0
  158. package/esm/core/postgres/postgres-data-provider.d.ts +28 -0
  159. package/esm/core/postgres/postgres-data-provider.js +97 -0
  160. package/esm/core/postgres/schema-builder.d.ts +15 -0
  161. package/esm/core/postgres/schema-builder.js +128 -0
  162. package/esm/core/remult-express.d.ts +6 -0
  163. package/esm/core/remult-express.js +23 -0
  164. package/esm/core/remult-fastify.d.ts +3 -0
  165. package/esm/core/remult-fastify.js +53 -0
  166. package/esm/core/remult-fresh.d.ts +22 -0
  167. package/esm/core/remult-fresh.js +37 -0
  168. package/esm/core/remult-knex/index.d.ts +51 -0
  169. package/esm/core/remult-knex/index.js +392 -0
  170. package/esm/core/remult-mongo.d.ts +9 -0
  171. package/esm/core/remult-mongo.js +221 -0
  172. package/esm/core/server/JsonEntityFileStorage.d.ts +10 -0
  173. package/esm/core/server/JsonEntityFileStorage.js +24 -0
  174. package/esm/core/server/core.d.ts +2 -0
  175. package/esm/core/server/core.js +2 -0
  176. package/esm/core/server/expressBridge.d.ts +102 -0
  177. package/esm/core/server/expressBridge.js +834 -0
  178. package/esm/core/server/index.d.ts +4 -0
  179. package/esm/core/server/index.js +7 -0
  180. package/esm/core/server/initAsyncHooks.d.ts +1 -0
  181. package/esm/core/server/initAsyncHooks.js +9 -0
  182. package/esm/core/src/__EntityValueProvider.d.ts +10 -0
  183. package/esm/core/src/__EntityValueProvider.js +1 -0
  184. package/esm/core/src/__RowsOfDataForTesting.d.ts +3 -0
  185. package/esm/core/src/__RowsOfDataForTesting.js +1 -0
  186. package/esm/core/src/backend-tests/backend-database-test-setup.backend-spec.d.ts +6 -0
  187. package/esm/core/src/backend-tests/backend-database-test-setup.backend-spec.js +123 -0
  188. package/esm/core/src/backend-tests/my-test.backend-spec.d.ts +1 -0
  189. package/esm/core/src/backend-tests/my-test.backend-spec.js +107 -0
  190. package/esm/core/src/backend-tests/test-http-server.backend-spec.d.ts +1 -0
  191. package/esm/core/src/backend-tests/test-http-server.backend-spec.js +155 -0
  192. package/esm/core/src/column-interfaces.d.ts +95 -0
  193. package/esm/core/src/column-interfaces.js +7 -0
  194. package/esm/core/src/column.d.ts +49 -0
  195. package/esm/core/src/column.js +133 -0
  196. package/esm/core/src/context.d.ts +115 -0
  197. package/esm/core/src/context.js +271 -0
  198. package/esm/core/src/data-api.d.ts +33 -0
  199. package/esm/core/src/data-api.js +204 -0
  200. package/esm/core/src/data-interfaces.d.ts +37 -0
  201. package/esm/core/src/data-interfaces.js +12 -0
  202. package/esm/core/src/data-providers/array-entity-data-provider.d.ts +22 -0
  203. package/esm/core/src/data-providers/array-entity-data-provider.js +264 -0
  204. package/esm/core/src/data-providers/in-memory-database.d.ts +9 -0
  205. package/esm/core/src/data-providers/in-memory-database.js +16 -0
  206. package/esm/core/src/data-providers/json-data-provider.d.ts +12 -0
  207. package/esm/core/src/data-providers/json-data-provider.js +52 -0
  208. package/esm/core/src/data-providers/rest-data-provider.d.ts +38 -0
  209. package/esm/core/src/data-providers/rest-data-provider.js +201 -0
  210. package/esm/core/src/data-providers/sql-database.d.ts +16 -0
  211. package/esm/core/src/data-providers/sql-database.js +264 -0
  212. package/esm/core/src/data-providers/web-sql-data-provider.d.ts +18 -0
  213. package/esm/core/src/data-providers/web-sql-data-provider.js +121 -0
  214. package/esm/core/src/entity.d.ts +82 -0
  215. package/esm/core/src/entity.js +1 -0
  216. package/esm/core/src/filter/filter-consumer-bridge-to-sql-request.d.ts +50 -0
  217. package/esm/core/src/filter/filter-consumer-bridge-to-sql-request.js +139 -0
  218. package/esm/core/src/filter/filter-consumer-bridge-to-url-builder.d.ts +1 -0
  219. package/esm/core/src/filter/filter-consumer-bridge-to-url-builder.js +1 -0
  220. package/esm/core/src/filter/filter-interfaces.d.ts +85 -0
  221. package/esm/core/src/filter/filter-interfaces.js +467 -0
  222. package/esm/core/src/id-entity.d.ts +4 -0
  223. package/esm/core/src/id-entity.js +8 -0
  224. package/esm/core/src/remult-proxy.d.ts +2 -0
  225. package/esm/core/src/remult-proxy.js +52 -0
  226. package/esm/core/src/remult3/DecoratorReplacer.d.ts +10 -0
  227. package/esm/core/src/remult3/DecoratorReplacer.js +20 -0
  228. package/esm/core/src/remult3/RepositoryImplementation.d.ts +323 -0
  229. package/esm/core/src/remult3/RepositoryImplementation.js +1799 -0
  230. package/esm/core/src/remult3/index.d.ts +2 -0
  231. package/esm/core/src/remult3/index.js +2 -0
  232. package/esm/core/src/remult3/remult3.d.ts +312 -0
  233. package/esm/core/src/remult3/remult3.js +1 -0
  234. package/esm/core/src/server-action.d.ts +72 -0
  235. package/esm/core/src/server-action.js +372 -0
  236. package/esm/core/src/shared-tests/db-tests-setup.d.ts +23 -0
  237. package/esm/core/src/shared-tests/db-tests-setup.js +68 -0
  238. package/esm/core/src/shared-tests/db-tests.db-tests.d.ts +26 -0
  239. package/esm/core/src/shared-tests/db-tests.db-tests.js +723 -0
  240. package/esm/core/src/shared-tests/deleteAll.d.ts +2 -0
  241. package/esm/core/src/shared-tests/deleteAll.js +4 -0
  242. package/esm/core/src/shared-tests/entityWithValidations.d.ts +14 -0
  243. package/esm/core/src/shared-tests/entityWithValidations.js +53 -0
  244. package/esm/core/src/shared-tests/index.d.ts +4 -0
  245. package/esm/core/src/shared-tests/index.js +4 -0
  246. package/esm/core/src/shared-tests/test-custom-id-column.spec.d.ts +1 -0
  247. package/esm/core/src/shared-tests/test-custom-id-column.spec.js +63 -0
  248. package/esm/core/src/shared-tests/test-special-value.spec.d.ts +10 -0
  249. package/esm/core/src/shared-tests/test-special-value.spec.js +88 -0
  250. package/esm/core/src/shared-tests/test-update-with-null.spec.d.ts +1 -0
  251. package/esm/core/src/shared-tests/test-update-with-null.spec.js +45 -0
  252. package/esm/core/src/sort.d.ts +15 -0
  253. package/esm/core/src/sort.js +82 -0
  254. package/esm/core/src/sql-command.d.ts +15 -0
  255. package/esm/core/src/sql-command.js +1 -0
  256. package/esm/core/src/tests/Done.d.ts +5 -0
  257. package/esm/core/src/tests/Done.js +11 -0
  258. package/esm/core/src/tests/TestDataApiResponse.d.ts +10 -0
  259. package/esm/core/src/tests/TestDataApiResponse.js +22 -0
  260. package/esm/core/src/tests/c.d.ts +8 -0
  261. package/esm/core/src/tests/c.js +22 -0
  262. package/esm/core/src/tests/createData.d.ts +7 -0
  263. package/esm/core/src/tests/createData.js +22 -0
  264. package/esm/core/src/tests/d.d.ts +6 -0
  265. package/esm/core/src/tests/d.js +19 -0
  266. package/esm/core/src/tests/dWithPrefilter.d.ts +7 -0
  267. package/esm/core/src/tests/dWithPrefilter.js +32 -0
  268. package/esm/core/src/tests/entityForCustomFilter.d.ts +16 -0
  269. package/esm/core/src/tests/entityForCustomFilter.js +44 -0
  270. package/esm/core/src/tests/entityWithValidationsOnColumn.d.ts +5 -0
  271. package/esm/core/src/tests/entityWithValidationsOnColumn.js +21 -0
  272. package/esm/core/src/tests/frontend-database-tests-setup.spec.d.ts +4 -0
  273. package/esm/core/src/tests/frontend-database-tests-setup.spec.js +38 -0
  274. package/esm/core/src/tests/h.d.ts +6 -0
  275. package/esm/core/src/tests/h.js +35 -0
  276. package/esm/core/src/tests/remult-3-entities.d.ts +23 -0
  277. package/esm/core/src/tests/remult-3-entities.js +72 -0
  278. package/esm/core/src/tests/tasks.d.ts +6 -0
  279. package/esm/core/src/tests/tasks.js +24 -0
  280. package/esm/core/src/tests/testHelper.spec.d.ts +34 -0
  281. package/esm/core/src/tests/testHelper.spec.js +222 -0
  282. package/esm/core/src/tests/testModel/models.d.ts +16 -0
  283. package/esm/core/src/tests/testModel/models.js +31 -0
  284. package/esm/core/src/validators.d.ts +14 -0
  285. package/esm/core/src/validators.js +33 -0
  286. package/esm/core/src/valueConverters.d.ts +12 -0
  287. package/esm/core/src/valueConverters.js +171 -0
  288. package/esm/core/urlBuilder.d.ts +6 -0
  289. package/esm/core/urlBuilder.js +19 -0
  290. package/esm/test-servers/shared/Task.d.ts +9 -0
  291. package/esm/test-servers/shared/Task.js +62 -0
  292. package/index.d.ts +1 -2
  293. package/package.json +1 -9
  294. package/postgres/schema-builder.js +4 -4
  295. package/remult-express.d.ts +0 -24
  296. package/remult-express.js +3 -143
  297. package/remult-fastify.js +2 -0
  298. package/remult-knex/index.js +18 -10
  299. package/server/expressBridge.d.ts +10 -44
  300. package/server/expressBridge.js +21 -38
  301. package/src/backend-tests/backend-database-test-setup.backend-spec.d.ts +1 -0
  302. package/src/backend-tests/backend-database-test-setup.backend-spec.js +11 -1
  303. package/src/backend-tests/my-test.backend-spec.js +57 -0
  304. package/src/column.d.ts +3 -3
  305. package/src/context.d.ts +0 -17
  306. package/src/context.js +1 -126
  307. package/src/data-api.js +33 -104
  308. package/src/data-providers/array-entity-data-provider.js +16 -1
  309. package/src/data-providers/rest-data-provider.d.ts +0 -4
  310. package/src/data-providers/rest-data-provider.js +7 -11
  311. package/src/data-providers/sql-database.js +1 -1
  312. package/src/data-providers/web-sql-data-provider.js +1 -1
  313. package/src/remult-proxy.d.ts +1 -1
  314. package/src/remult-proxy.js +9 -19
  315. package/src/remult3/RepositoryImplementation.d.ts +3 -6
  316. package/src/remult3/RepositoryImplementation.js +42 -68
  317. package/src/remult3/remult3.d.ts +6 -10
  318. package/src/server-action.d.ts +0 -4
  319. package/src/server-action.js +11 -10
  320. package/src/shared-tests/db-tests-setup.d.ts +1 -1
  321. package/src/shared-tests/db-tests-setup.js +1 -0
  322. package/src/sort.d.ts +0 -1
  323. package/src/sort.js +0 -18
  324. package/src/tests/testHelper.spec.d.ts +0 -2
  325. package/src/tests/testHelper.spec.js +95 -99
  326. package/src/valueConverters.js +3 -1
  327. package/test-servers/shared/Task.d.ts +9 -0
  328. package/test-servers/shared/Task.js +81 -0
package/README.md CHANGED
@@ -3,6 +3,7 @@
3
3
  <img src="https://github.com/remult/remult/raw/master/docs/.vuepress/public/logo.png" width="140" height="140">
4
4
  </a>
5
5
  <h1>Remult</h1>
6
+ <p>A CRUD framework for full-stack TypeScript</p>
6
7
  <a href="https://circleci.com/gh/remult/remult/tree/master" rel="nofollow">
7
8
  <img alt="CircleCI" src="https://circleci.com/gh/remult/remult/tree/master.svg?style=shield">
8
9
  </a>
@@ -24,14 +25,29 @@
24
25
  <a href="https://twitter.com/intent/tweet?text=Remult%20-%20open-source%20CRUD%20framework%20for%20full-stack%20TypeScript%0A%0A%40remultjs%0A&url=https%3A%2F%2Fgithub.com%2Fremult%2Fremult">
25
26
  <img alt="Twitter URL" src="https://img.shields.io/twitter/url?style=social&url=https%3A%2F%2Ftwitter.com%2Fintent%2Ftweet%3Ftext%3DRemult%2520-%2520open-source%2520CRUD%2520framework%2520for%2520full-stack%2520TypeScript%250A%250A%2540remultjs%250A%26url%3Dhttps%253A%252F%252Fgithub.com%252Fremult%252Fremult">
26
27
  </a>
27
- <a href="https://twitter.com/remultjs" rel="nofollow">
28
- <img alt="Twitter Follow" src="https://img.shields.io/twitter/url.svg?label=Follow%20%40remultjs&style=social&url=https%3A%2F%2Ftwitter.com%2FRemultJs">
29
- </a>
30
28
  </div>
29
+
30
+
31
+ <br/>
32
+
33
+ <div align="center">
34
+ <a href="#getting-started">Getting Started</a> |
35
+ <a href="#documentation">Documentation</a> |
36
+ <a href="#example-apps">Example Apps</a>
37
+ </div>
38
+
31
39
  <hr/>
40
+ <br/>
32
41
 
33
- [Getting Started](#getting-started) | [Documentation](#documentation) |
34
- [Example Apps](#example-apps)
42
+ <a href="https://www.youtube.com/watch?v=rEoScmSVNUE" target="_blank">
43
+ <p align="center">
44
+ <img src="https://github.com/remult/remult/raw/master/static/images/video-thumbnail.jpg" alt="Video thumbnail" />
45
+ </p>
46
+ </a>
47
+
48
+ <a href="https://www.youtube.com/watch?v=rEoScmSVNUE" target="_blank">
49
+ <p align="center">Watch code demo on YouTube here (14 mins)</p>
50
+ </a>
35
51
 
36
52
  ## What is Remult?
37
53
 
@@ -39,6 +55,13 @@
39
55
  as a single source of truth for your API, frontend type-safe API client and
40
56
  backend ORM**.
41
57
 
58
+ * :zap: Zero-boilerplate CRUD API routes with paging, sorting, and filtering for Express / Fastify / Next.js / NestJS / Koa / others...
59
+ * :ok_hand: Fullstack type-safety for API queries, mutations and RPC, without code generation
60
+ * :sparkles: Input validation, defined once, runs both on the backend and on the frontend for best UX
61
+ * :lock: Fine-grained code-based API authorization
62
+ * :relieved: Incrementally adoptable
63
+ * :rocket: Production ready
64
+
42
65
  ### Status
43
66
 
44
67
  Remult is **production-ready** and, in fact, used in production apps since 2018.
@@ -0,0 +1 @@
1
+ export declare function assign<T>(item: T, valuesToSet: Partial<T>): T;
package/core/assign.js ADDED
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.assign = void 0;
4
+ function assign(item, valuesToSet) {
5
+ if (valuesToSet)
6
+ Object.assign(item, valuesToSet);
7
+ return item;
8
+ }
9
+ exports.assign = assign;
@@ -0,0 +1,3 @@
1
+ export declare type ClassType<T> = {
2
+ new (...args: any[]): T;
3
+ };
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,5 @@
1
+ import { RemultServer } from "./server/expressBridge";
2
+ export declare function remultGraphql(api: RemultServer): {
3
+ rootValue: {};
4
+ schema: string;
5
+ };
@@ -0,0 +1,164 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.remultGraphql = void 0;
4
+ var tslib_1 = require("tslib");
5
+ var _1 = require(".");
6
+ var context_1 = require("./src/context");
7
+ var remult3_1 = require("./src/remult3");
8
+ var data_api_1 = require("./src/data-api");
9
+ function remultGraphql(api) {
10
+ var e_1, _a;
11
+ var _this = this;
12
+ var _b;
13
+ var r = new _1.Remult();
14
+ var types = '';
15
+ var query = '';
16
+ var root = {};
17
+ var _loop_1 = function (e) {
18
+ var e_2, _a, e_3, _b, e_4, _c, e_5, _d;
19
+ var meta = r.repo(e).metadata;
20
+ var fields = '';
21
+ var filterFields = '';
22
+ var key = remult3_1.getEntityKey(e);
23
+ if (key) {
24
+ try {
25
+ for (var _e = (e_2 = void 0, tslib_1.__values(meta.fields)), _f = _e.next(); !_f.done; _f = _e.next()) {
26
+ var f = _f.value;
27
+ {
28
+ var type = "String";
29
+ switch (f.valueType) {
30
+ case Boolean:
31
+ type = "Boolean";
32
+ case Number:
33
+ {
34
+ if (((_b = f.valueConverter) === null || _b === void 0 ? void 0 : _b.fieldTypeInDb) == 'integer')
35
+ type = "Int";
36
+ else
37
+ type = "Float";
38
+ }
39
+ }
40
+ fields += "\n\t" + f.key + ":" + type;
41
+ try {
42
+ for (var _g = (e_3 = void 0, tslib_1.__values(["", "_ne"])), _h = _g.next(); !_h.done; _h = _g.next()) {
43
+ var operator = _h.value;
44
+ filterFields += "\n\t" + f.key + operator + ":" + type;
45
+ }
46
+ }
47
+ catch (e_3_1) { e_3 = { error: e_3_1 }; }
48
+ finally {
49
+ try {
50
+ if (_h && !_h.done && (_b = _g.return)) _b.call(_g);
51
+ }
52
+ finally { if (e_3) throw e_3.error; }
53
+ }
54
+ if (f.valueType === String || f.valueType === Number)
55
+ try {
56
+ for (var _j = (e_4 = void 0, tslib_1.__values(["_gt", "_gte", "_lt", "_lte"])), _k = _j.next(); !_k.done; _k = _j.next()) {
57
+ var operator = _k.value;
58
+ filterFields += "\n\t" + f.key + operator + ":" + type;
59
+ }
60
+ }
61
+ catch (e_4_1) { e_4 = { error: e_4_1 }; }
62
+ finally {
63
+ try {
64
+ if (_k && !_k.done && (_c = _j.return)) _c.call(_j);
65
+ }
66
+ finally { if (e_4) throw e_4.error; }
67
+ }
68
+ if (f.valueType === String)
69
+ try {
70
+ for (var _l = (e_5 = void 0, tslib_1.__values(["_st", "_contains"])), _m = _l.next(); !_m.done; _m = _l.next()) {
71
+ var operator = _m.value;
72
+ filterFields += "\n\t" + f.key + operator + ":" + type;
73
+ }
74
+ }
75
+ catch (e_5_1) { e_5 = { error: e_5_1 }; }
76
+ finally {
77
+ try {
78
+ if (_m && !_m.done && (_d = _l.return)) _d.call(_l);
79
+ }
80
+ finally { if (e_5) throw e_5.error; }
81
+ }
82
+ if (f.allowNull)
83
+ filterFields += "\n\t" + f.key + "_null:Boolean";
84
+ filterFields += "\n\t" + f.key + "_in:[" + type + "]";
85
+ }
86
+ }
87
+ }
88
+ catch (e_2_1) { e_2 = { error: e_2_1 }; }
89
+ finally {
90
+ try {
91
+ if (_f && !_f.done && (_a = _e.return)) _a.call(_e);
92
+ }
93
+ finally { if (e_2) throw e_2.error; }
94
+ }
95
+ types += "type " + key + "{" + fields + "\n}\n";
96
+ types += "input " + key + "Filter{" + filterFields + "\n\tOR:[" + key + "Filter]\n}\n";
97
+ query += "\n\t" + key + "(options: options, filter:" + key + "Filter): [" + key + "]";
98
+ root[key] = function (_a, req) {
99
+ var options = _a.options, filter = _a.filter;
100
+ return tslib_1.__awaiter(_this, void 0, void 0, function () {
101
+ var remult, repo, dApi, result, err;
102
+ return tslib_1.__generator(this, function (_b) {
103
+ switch (_b.label) {
104
+ case 0: return [4 /*yield*/, api.getRemult(req)];
105
+ case 1:
106
+ remult = _b.sent();
107
+ repo = remult.repo(e);
108
+ dApi = new data_api_1.DataApi(repo, remult);
109
+ return [4 /*yield*/, dApi.getArray({
110
+ success: function (x) { return result = x; },
111
+ created: undefined,
112
+ deleted: undefined,
113
+ error: function (x) { return err = x; },
114
+ forbidden: function () { return err = 'forbidden'; },
115
+ notFound: function () { return err = 'not found'; },
116
+ progress: undefined
117
+ }, {
118
+ get: function (key) {
119
+ if (options)
120
+ switch (key) {
121
+ case "_limit":
122
+ return options.limit;
123
+ case "_page":
124
+ return options.page;
125
+ case "_sort":
126
+ return options.sort;
127
+ case "_order":
128
+ return options.order;
129
+ }
130
+ }
131
+ }, filter)];
132
+ case 2:
133
+ _b.sent();
134
+ if (err)
135
+ throw err;
136
+ return [2 /*return*/, result];
137
+ }
138
+ });
139
+ });
140
+ };
141
+ }
142
+ };
143
+ try {
144
+ for (var allEntities_1 = tslib_1.__values(context_1.allEntities), allEntities_1_1 = allEntities_1.next(); !allEntities_1_1.done; allEntities_1_1 = allEntities_1.next()) {
145
+ var e = allEntities_1_1.value;
146
+ _loop_1(e);
147
+ }
148
+ }
149
+ catch (e_1_1) { e_1 = { error: e_1_1 }; }
150
+ finally {
151
+ try {
152
+ if (allEntities_1_1 && !allEntities_1_1.done && (_a = allEntities_1.return)) _a.call(allEntities_1);
153
+ }
154
+ finally { if (e_1) throw e_1.error; }
155
+ }
156
+ if (query.length > 0) {
157
+ query = "type Query {" + query + "\n}";
158
+ }
159
+ return {
160
+ rootValue: root,
161
+ schema: "\ninput options{\n limit:Int\n page:Int\n sort:String\n order:String\n}\n" + types + "\n" + query + "\n"
162
+ };
163
+ }
164
+ exports.remultGraphql = remultGraphql;
@@ -0,0 +1,25 @@
1
+ export { Field, Fields, StringFieldOptions, FieldsMetadata, Entity, EntityBase, ControllerBase, FieldRef, IdFieldRef, FieldsRef, EntityMetadata, EntityOrderBy, EntityFilter, FindOptions, QueryResult, QueryOptions, Repository, FieldType, FindFirstOptions, ComparisonValueFilter, ValueFilter, IdFilter, ContainsStringValueFilter, getFields, EntityRef, getEntityRef, SortSegments, ValueListFieldType, getValueList, ValueListFieldOptions, ValueListInfo, OmitEB, Paginator, CaptionTransformer } from './src/remult3';
2
+ export { describeClass } from './src/remult3/DecoratorReplacer';
3
+ export { EntityOptions } from './src/entity';
4
+ export { DataProvider, EntityDataProvider, EntityDataProviderFindOptions, ErrorInfo, RestDataProviderHttpProvider } from './src/data-interfaces';
5
+ export { SqlCommand, SqlImplementation, SqlResult } from './src/sql-command';
6
+ export { FieldMetadata, FieldOptions, FieldValidator, ValueConverter, ValueListItem, // reconsider, maybe it should go to remult angular as the abstraction ?
7
+ ValueOrExpression } from './src/column-interfaces';
8
+ export { RestDataProvider } from './src/data-providers/rest-data-provider';
9
+ export { InMemoryDataProvider } from './src/data-providers/in-memory-database';
10
+ export { ArrayEntityDataProvider } from './src/data-providers/array-entity-data-provider';
11
+ export { WebSqlDataProvider } from './src/data-providers/web-sql-data-provider';
12
+ export { SqlDatabase, } from './src/data-providers/sql-database';
13
+ export { CustomSqlFilterObject, CustomSqlFilterBuilder } from './src/filter/filter-consumer-bridge-to-sql-request';
14
+ export { JsonDataProvider, JsonEntityStorage } from './src/data-providers/json-data-provider';
15
+ export { Controller, BackendMethodOptions, BackendMethod, ProgressListener } from './src/server-action';
16
+ export { Allowed, Allow, Remult, RemultContext, ApiClient, isBackend, AllowedForInstance, EventDispatcher, EventSource, ExternalHttpProvider, Unobserve, UserInfo } from './src/context';
17
+ export { IdEntity } from './src/id-entity';
18
+ export { SortSegment, Sort } from './src/sort';
19
+ export { OneToMany, CompoundIdField } from './src/column';
20
+ export { Filter } from './src/filter/filter-interfaces';
21
+ export { FilterConsumerBridgeToSqlRequest } from './src/filter/filter-consumer-bridge-to-sql-request';
22
+ export { UrlBuilder } from './urlBuilder';
23
+ export { Validators } from './src/validators';
24
+ export { ValueConverters } from './src/valueConverters';
25
+ export { remult } from './src/remult-proxy';
package/core/index.js ADDED
@@ -0,0 +1,64 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.remult = exports.ValueConverters = exports.Validators = exports.UrlBuilder = exports.FilterConsumerBridgeToSqlRequest = exports.Filter = exports.CompoundIdField = exports.OneToMany = exports.Sort = exports.IdEntity = exports.EventSource = exports.isBackend = exports.Remult = exports.Allow = exports.ProgressListener = exports.BackendMethod = exports.Controller = exports.JsonDataProvider = exports.CustomSqlFilterBuilder = exports.SqlDatabase = exports.WebSqlDataProvider = exports.ArrayEntityDataProvider = exports.InMemoryDataProvider = exports.RestDataProvider = exports.describeClass = exports.CaptionTransformer = exports.ValueListInfo = exports.getValueList = exports.ValueListFieldType = exports.getEntityRef = exports.getFields = exports.FieldType = exports.ControllerBase = exports.EntityBase = exports.Entity = exports.Fields = exports.Field = void 0;
4
+ /*
5
+ * Public API Surface of remult
6
+ */
7
+ var remult3_1 = require("./src/remult3");
8
+ Object.defineProperty(exports, "Field", { enumerable: true, get: function () { return remult3_1.Field; } });
9
+ Object.defineProperty(exports, "Fields", { enumerable: true, get: function () { return remult3_1.Fields; } });
10
+ Object.defineProperty(exports, "Entity", { enumerable: true, get: function () { return remult3_1.Entity; } });
11
+ Object.defineProperty(exports, "EntityBase", { enumerable: true, get: function () { return remult3_1.EntityBase; } });
12
+ Object.defineProperty(exports, "ControllerBase", { enumerable: true, get: function () { return remult3_1.ControllerBase; } });
13
+ Object.defineProperty(exports, "FieldType", { enumerable: true, get: function () { return remult3_1.FieldType; } });
14
+ Object.defineProperty(exports, "getFields", { enumerable: true, get: function () { return remult3_1.getFields; } });
15
+ Object.defineProperty(exports, "getEntityRef", { enumerable: true, get: function () { return remult3_1.getEntityRef; } });
16
+ Object.defineProperty(exports, "ValueListFieldType", { enumerable: true, get: function () { return remult3_1.ValueListFieldType; } });
17
+ Object.defineProperty(exports, "getValueList", { enumerable: true, get: function () { return remult3_1.getValueList; } });
18
+ Object.defineProperty(exports, "ValueListInfo", { enumerable: true, get: function () { return remult3_1.ValueListInfo; } });
19
+ Object.defineProperty(exports, "CaptionTransformer", { enumerable: true, get: function () { return remult3_1.CaptionTransformer; } });
20
+ var DecoratorReplacer_1 = require("./src/remult3/DecoratorReplacer");
21
+ Object.defineProperty(exports, "describeClass", { enumerable: true, get: function () { return DecoratorReplacer_1.describeClass; } });
22
+ var rest_data_provider_1 = require("./src/data-providers/rest-data-provider"); //V
23
+ Object.defineProperty(exports, "RestDataProvider", { enumerable: true, get: function () { return rest_data_provider_1.RestDataProvider; } });
24
+ var in_memory_database_1 = require("./src/data-providers/in-memory-database"); //V
25
+ Object.defineProperty(exports, "InMemoryDataProvider", { enumerable: true, get: function () { return in_memory_database_1.InMemoryDataProvider; } });
26
+ var array_entity_data_provider_1 = require("./src/data-providers/array-entity-data-provider"); //V
27
+ Object.defineProperty(exports, "ArrayEntityDataProvider", { enumerable: true, get: function () { return array_entity_data_provider_1.ArrayEntityDataProvider; } });
28
+ var web_sql_data_provider_1 = require("./src/data-providers/web-sql-data-provider"); //V
29
+ Object.defineProperty(exports, "WebSqlDataProvider", { enumerable: true, get: function () { return web_sql_data_provider_1.WebSqlDataProvider; } });
30
+ var sql_database_1 = require("./src/data-providers/sql-database"); //V
31
+ Object.defineProperty(exports, "SqlDatabase", { enumerable: true, get: function () { return sql_database_1.SqlDatabase; } });
32
+ var filter_consumer_bridge_to_sql_request_1 = require("./src/filter/filter-consumer-bridge-to-sql-request");
33
+ Object.defineProperty(exports, "CustomSqlFilterBuilder", { enumerable: true, get: function () { return filter_consumer_bridge_to_sql_request_1.CustomSqlFilterBuilder; } });
34
+ var json_data_provider_1 = require("./src/data-providers/json-data-provider"); //V
35
+ Object.defineProperty(exports, "JsonDataProvider", { enumerable: true, get: function () { return json_data_provider_1.JsonDataProvider; } });
36
+ //export * from './src/data-api'; //reconsider if to make internal
37
+ var server_action_1 = require("./src/server-action");
38
+ Object.defineProperty(exports, "Controller", { enumerable: true, get: function () { return server_action_1.Controller; } });
39
+ Object.defineProperty(exports, "BackendMethod", { enumerable: true, get: function () { return server_action_1.BackendMethod; } });
40
+ Object.defineProperty(exports, "ProgressListener", { enumerable: true, get: function () { return server_action_1.ProgressListener; } });
41
+ var context_1 = require("./src/context");
42
+ Object.defineProperty(exports, "Allow", { enumerable: true, get: function () { return context_1.Allow; } });
43
+ Object.defineProperty(exports, "Remult", { enumerable: true, get: function () { return context_1.Remult; } });
44
+ Object.defineProperty(exports, "isBackend", { enumerable: true, get: function () { return context_1.isBackend; } });
45
+ Object.defineProperty(exports, "EventSource", { enumerable: true, get: function () { return context_1.EventSource; } });
46
+ var id_entity_1 = require("./src/id-entity");
47
+ Object.defineProperty(exports, "IdEntity", { enumerable: true, get: function () { return id_entity_1.IdEntity; } });
48
+ var sort_1 = require("./src/sort");
49
+ Object.defineProperty(exports, "Sort", { enumerable: true, get: function () { return sort_1.Sort; } });
50
+ var column_1 = require("./src/column");
51
+ Object.defineProperty(exports, "OneToMany", { enumerable: true, get: function () { return column_1.OneToMany; } });
52
+ Object.defineProperty(exports, "CompoundIdField", { enumerable: true, get: function () { return column_1.CompoundIdField; } });
53
+ var filter_interfaces_1 = require("./src/filter/filter-interfaces");
54
+ Object.defineProperty(exports, "Filter", { enumerable: true, get: function () { return filter_interfaces_1.Filter; } });
55
+ var filter_consumer_bridge_to_sql_request_2 = require("./src/filter/filter-consumer-bridge-to-sql-request");
56
+ Object.defineProperty(exports, "FilterConsumerBridgeToSqlRequest", { enumerable: true, get: function () { return filter_consumer_bridge_to_sql_request_2.FilterConsumerBridgeToSqlRequest; } });
57
+ var urlBuilder_1 = require("./urlBuilder");
58
+ Object.defineProperty(exports, "UrlBuilder", { enumerable: true, get: function () { return urlBuilder_1.UrlBuilder; } });
59
+ var validators_1 = require("./src/validators");
60
+ Object.defineProperty(exports, "Validators", { enumerable: true, get: function () { return validators_1.Validators; } });
61
+ var valueConverters_1 = require("./src/valueConverters");
62
+ Object.defineProperty(exports, "ValueConverters", { enumerable: true, get: function () { return valueConverters_1.ValueConverters; } });
63
+ var remult_proxy_1 = require("./src/remult-proxy");
64
+ Object.defineProperty(exports, "remult", { enumerable: true, get: function () { return remult_proxy_1.remult; } });
@@ -0,0 +1,9 @@
1
+ export declare class InputTypes {
2
+ static number: string;
3
+ static date: string;
4
+ static checkbox: string;
5
+ static password: string;
6
+ static email: string;
7
+ static tel: string;
8
+ static time: string;
9
+ }
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.InputTypes = void 0;
4
+ var InputTypes = /** @class */ (function () {
5
+ function InputTypes() {
6
+ }
7
+ InputTypes.number = 'number';
8
+ InputTypes.date = 'date';
9
+ InputTypes.checkbox = 'checkbox';
10
+ InputTypes.password = 'password';
11
+ InputTypes.email = 'email';
12
+ InputTypes.tel = 'tel';
13
+ InputTypes.time = "time";
14
+ return InputTypes;
15
+ }());
16
+ exports.InputTypes = InputTypes;
@@ -0,0 +1,2 @@
1
+ export * from './postgres-data-provider';
2
+ export * from './schema-builder';
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ var tslib_1 = require("tslib");
4
+ tslib_1.__exportStar(require("./postgres-data-provider"), exports);
5
+ tslib_1.__exportStar(require("./schema-builder"), exports);
@@ -0,0 +1,28 @@
1
+ import { PoolConfig, QueryResult } from 'pg';
2
+ import { EntityMetadata } from '../src/remult3';
3
+ import { SqlCommand, SqlImplementation } from '../src/sql-command';
4
+ import { SqlDatabase } from '../src/data-providers/sql-database';
5
+ export interface PostgresPool extends PostgresCommandSource {
6
+ connect(): Promise<PostgresClient>;
7
+ }
8
+ export interface PostgresClient extends PostgresCommandSource {
9
+ release(): void;
10
+ }
11
+ export declare class PostgresDataProvider implements SqlImplementation {
12
+ private pool;
13
+ entityIsUsedForTheFirstTime(entity: EntityMetadata): Promise<void>;
14
+ getLimitSqlSyntax(limit: number, offset: number): string;
15
+ createCommand(): SqlCommand;
16
+ constructor(pool: PostgresPool);
17
+ transaction(action: (dataProvider: SqlImplementation) => Promise<void>): Promise<void>;
18
+ }
19
+ export interface PostgresCommandSource {
20
+ query(queryText: string, values?: any[]): Promise<QueryResult>;
21
+ }
22
+ export declare function createPostgresConnection(options?: {
23
+ connectionString?: string;
24
+ sslInDev?: boolean;
25
+ configuration?: "heroku" | PoolConfig;
26
+ autoCreateTables?: boolean;
27
+ }): Promise<SqlDatabase>;
28
+ export declare function preparePostgresQueueStorage(sql: SqlDatabase): Promise<import("../server/expressBridge").EntityQueueStorage>;
@@ -0,0 +1,159 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.preparePostgresQueueStorage = exports.createPostgresConnection = exports.PostgresDataProvider = void 0;
4
+ var tslib_1 = require("tslib");
5
+ var pg_1 = require("pg");
6
+ var context_1 = require("../src/context");
7
+ var schema_builder_1 = require("./schema-builder");
8
+ var sql_database_1 = require("../src/data-providers/sql-database");
9
+ var PostgresDataProvider = /** @class */ (function () {
10
+ function PostgresDataProvider(pool) {
11
+ this.pool = pool;
12
+ }
13
+ PostgresDataProvider.prototype.entityIsUsedForTheFirstTime = function (entity) {
14
+ return tslib_1.__awaiter(this, void 0, void 0, function () {
15
+ return tslib_1.__generator(this, function (_a) {
16
+ return [2 /*return*/];
17
+ });
18
+ });
19
+ };
20
+ PostgresDataProvider.prototype.getLimitSqlSyntax = function (limit, offset) {
21
+ return ' limit ' + limit + ' offset ' + offset;
22
+ };
23
+ PostgresDataProvider.prototype.createCommand = function () {
24
+ return new PostgresBridgeToSQLCommand(this.pool);
25
+ };
26
+ PostgresDataProvider.prototype.transaction = function (action) {
27
+ return tslib_1.__awaiter(this, void 0, void 0, function () {
28
+ var client, err_1;
29
+ return tslib_1.__generator(this, function (_a) {
30
+ switch (_a.label) {
31
+ case 0: return [4 /*yield*/, this.pool.connect()];
32
+ case 1:
33
+ client = _a.sent();
34
+ _a.label = 2;
35
+ case 2:
36
+ _a.trys.push([2, 6, 8, 10]);
37
+ return [4 /*yield*/, client.query('BEGIN')];
38
+ case 3:
39
+ _a.sent();
40
+ return [4 /*yield*/, action({
41
+ createCommand: function () { return new PostgresBridgeToSQLCommand(client); },
42
+ entityIsUsedForTheFirstTime: this.entityIsUsedForTheFirstTime,
43
+ transaction: function () { throw "nested transactions not allowed"; },
44
+ getLimitSqlSyntax: this.getLimitSqlSyntax
45
+ })];
46
+ case 4:
47
+ _a.sent();
48
+ return [4 /*yield*/, client.query('COMMIT')];
49
+ case 5:
50
+ _a.sent();
51
+ return [3 /*break*/, 10];
52
+ case 6:
53
+ err_1 = _a.sent();
54
+ return [4 /*yield*/, client.query('ROLLBACK')];
55
+ case 7:
56
+ _a.sent();
57
+ throw err_1;
58
+ case 8: return [4 /*yield*/, client.release()];
59
+ case 9:
60
+ _a.sent();
61
+ return [7 /*endfinally*/];
62
+ case 10: return [2 /*return*/];
63
+ }
64
+ });
65
+ });
66
+ };
67
+ return PostgresDataProvider;
68
+ }());
69
+ exports.PostgresDataProvider = PostgresDataProvider;
70
+ var PostgresBridgeToSQLCommand = /** @class */ (function () {
71
+ function PostgresBridgeToSQLCommand(source) {
72
+ this.source = source;
73
+ this.values = [];
74
+ }
75
+ PostgresBridgeToSQLCommand.prototype.addParameterAndReturnSqlToken = function (val) {
76
+ this.values.push(val);
77
+ return '$' + this.values.length;
78
+ };
79
+ PostgresBridgeToSQLCommand.prototype.execute = function (sql) {
80
+ return this.source.query(sql, this.values).then(function (r) { return new PostgresBridgeToSQLQueryResult(r); });
81
+ };
82
+ return PostgresBridgeToSQLCommand;
83
+ }());
84
+ var PostgresBridgeToSQLQueryResult = /** @class */ (function () {
85
+ function PostgresBridgeToSQLQueryResult(r) {
86
+ this.r = r;
87
+ this.rows = r.rows;
88
+ }
89
+ PostgresBridgeToSQLQueryResult.prototype.getColumnKeyInResultForIndexInSelect = function (index) {
90
+ return this.r.fields[index].name;
91
+ };
92
+ return PostgresBridgeToSQLQueryResult;
93
+ }());
94
+ function createPostgresConnection(options) {
95
+ return tslib_1.__awaiter(this, void 0, void 0, function () {
96
+ var config, db, remult;
97
+ return tslib_1.__generator(this, function (_a) {
98
+ switch (_a.label) {
99
+ case 0:
100
+ if (!options)
101
+ options = {};
102
+ config = {};
103
+ if (options.configuration)
104
+ if (options.configuration == "heroku") {
105
+ config = {
106
+ connectionString: process.env.DATABASE_URL,
107
+ ssl: process.env.NODE_ENV !== "production" && !options.sslInDev ? false : {
108
+ rejectUnauthorized: false
109
+ }
110
+ };
111
+ }
112
+ else
113
+ config = options.configuration;
114
+ else {
115
+ if (!options.connectionString)
116
+ options.connectionString = process.env.DATABASE_URL;
117
+ }
118
+ if (!config.connectionString && options.connectionString) {
119
+ config.connectionString = options.connectionString;
120
+ }
121
+ db = new sql_database_1.SqlDatabase(new PostgresDataProvider(new pg_1.Pool(config)));
122
+ remult = new context_1.Remult();
123
+ remult.dataProvider = (db);
124
+ if (!(options.autoCreateTables === undefined || options.autoCreateTables)) return [3 /*break*/, 2];
125
+ return [4 /*yield*/, schema_builder_1.verifyStructureOfAllEntities(db, remult)];
126
+ case 1:
127
+ _a.sent();
128
+ _a.label = 2;
129
+ case 2: return [2 /*return*/, db];
130
+ }
131
+ });
132
+ });
133
+ }
134
+ exports.createPostgresConnection = createPostgresConnection;
135
+ function preparePostgresQueueStorage(sql) {
136
+ return tslib_1.__awaiter(this, void 0, void 0, function () {
137
+ var c, JobsInQueueEntity, e;
138
+ return tslib_1.__generator(this, function (_a) {
139
+ switch (_a.label) {
140
+ case 0:
141
+ c = new context_1.Remult();
142
+ c.dataProvider = (sql);
143
+ return [4 /*yield*/, Promise.resolve().then(function () { return require('../server/expressBridge'); })];
144
+ case 1:
145
+ JobsInQueueEntity = (_a.sent()).JobsInQueueEntity;
146
+ e = c.repo(JobsInQueueEntity);
147
+ return [4 /*yield*/, new schema_builder_1.PostgresSchemaBuilder(sql).createIfNotExist(e.metadata)];
148
+ case 2:
149
+ _a.sent();
150
+ return [4 /*yield*/, new schema_builder_1.PostgresSchemaBuilder(sql).verifyAllColumns(e.metadata)];
151
+ case 3:
152
+ _a.sent();
153
+ return [4 /*yield*/, Promise.resolve().then(function () { return require('../server/expressBridge'); })];
154
+ case 4: return [2 /*return*/, new (_a.sent()).EntityQueueStorage(c.repo(JobsInQueueEntity))];
155
+ }
156
+ });
157
+ });
158
+ }
159
+ exports.preparePostgresQueueStorage = preparePostgresQueueStorage;
@@ -0,0 +1,15 @@
1
+ import { FieldMetadata } from '../src/column-interfaces';
2
+ import { Remult } from '../src/context';
3
+ import { SqlDatabase } from '../src/data-providers/sql-database';
4
+ import { EntityMetadata } from '../src/remult3';
5
+ export declare function postgresColumnSyntax(x: FieldMetadata, dbName: string): string;
6
+ export declare function verifyStructureOfAllEntities(db: SqlDatabase, remult: Remult): Promise<void>;
7
+ export declare class PostgresSchemaBuilder {
8
+ private pool;
9
+ verifyStructureOfAllEntities(remult: Remult): Promise<void>;
10
+ createIfNotExist(entity: EntityMetadata): Promise<void>;
11
+ addColumnIfNotExist<T extends EntityMetadata>(entity: T, c: ((e: T) => FieldMetadata)): Promise<void>;
12
+ verifyAllColumns<T extends EntityMetadata>(entity: T): Promise<void>;
13
+ additionalWhere: string;
14
+ constructor(pool: SqlDatabase, schema?: string);
15
+ }