@baasix/baasix 0.1.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 (666) hide show
  1. package/LICENSE.MD +85 -0
  2. package/README.md +526 -0
  3. package/assets/banner.jpg +0 -0
  4. package/assets/banner_small.jpg +0 -0
  5. package/assets/logo_icon.svg +20 -0
  6. package/assets/logo_icon_rounded.svg +20 -0
  7. package/dist/LICENSE.MD +85 -0
  8. package/dist/README.md +526 -0
  9. package/dist/app/404/index.html +1 -0
  10. package/dist/app/404.html +1 -0
  11. package/dist/app/_next/static/chunks/041e1f03-56ae8a902a7f2fe6.js +24 -0
  12. package/dist/app/_next/static/chunks/1117-05479929a8da73e3.js +1 -0
  13. package/dist/app/_next/static/chunks/1299.77cc7b7b76b75cba.js +1 -0
  14. package/dist/app/_next/static/chunks/1303-35a96e9c9cdeab9d.js +1 -0
  15. package/dist/app/_next/static/chunks/1509-56ac00cdaaecdf53.js +1 -0
  16. package/dist/app/_next/static/chunks/1668-e3eabd0f6753c780.js +1 -0
  17. package/dist/app/_next/static/chunks/1783-d9fb550fd324300c.js +1 -0
  18. package/dist/app/_next/static/chunks/2117-29b5fa47421595ad.js +2 -0
  19. package/dist/app/_next/static/chunks/2344.35b46d2179a765b5.js +1 -0
  20. package/dist/app/_next/static/chunks/257.990da16794a31292.js +1 -0
  21. package/dist/app/_next/static/chunks/2676-73b0ee7c80073a84.js +1 -0
  22. package/dist/app/_next/static/chunks/3563-b8842744384391fe.js +1 -0
  23. package/dist/app/_next/static/chunks/363642f4-933b579ed3c85f60.js +1 -0
  24. package/dist/app/_next/static/chunks/3817-e20c8f0a0810fc95.js +1 -0
  25. package/dist/app/_next/static/chunks/3834.84944e390d902509.js +2 -0
  26. package/dist/app/_next/static/chunks/4043-3a30c8a75896f241.js +1 -0
  27. package/dist/app/_next/static/chunks/4225-14090c7c0cd9dec6.js +1 -0
  28. package/dist/app/_next/static/chunks/4438-c9a12ca15b6e9160.js +1 -0
  29. package/dist/app/_next/static/chunks/4458-679fd0c6884f456a.js +1 -0
  30. package/dist/app/_next/static/chunks/4475-8bdfbd536fba8c48.js +1 -0
  31. package/dist/app/_next/static/chunks/4883-8a924721bb21b3b0.js +1 -0
  32. package/dist/app/_next/static/chunks/489-683ab07188f9df2b.js +1 -0
  33. package/dist/app/_next/static/chunks/4952-1b97320cf61f3f21.js +1 -0
  34. package/dist/app/_next/static/chunks/5094-8d53e403235d4ca6.js +1 -0
  35. package/dist/app/_next/static/chunks/5101-3a146e0625747ad1.js +1 -0
  36. package/dist/app/_next/static/chunks/54a60aa6-d9747982e0a81f58.js +79 -0
  37. package/dist/app/_next/static/chunks/5650-f096291df402bfc2.js +1 -0
  38. package/dist/app/_next/static/chunks/600-539045311240f579.js +1 -0
  39. package/dist/app/_next/static/chunks/6170-803b82e19d3ade6d.js +89 -0
  40. package/dist/app/_next/static/chunks/6241-30d7169d1010e5a4.js +1 -0
  41. package/dist/app/_next/static/chunks/6530-a91e10cffa4200c4.js +1 -0
  42. package/dist/app/_next/static/chunks/6547-4bbbdb5c399aef1e.js +1 -0
  43. package/dist/app/_next/static/chunks/6712-781937c53a2c49da.js +1 -0
  44. package/dist/app/_next/static/chunks/6fcbdc68-90be1a5480b8d353.js +1 -0
  45. package/dist/app/_next/static/chunks/70e0d97a-aeaf0cdc26ba1a58.js +1 -0
  46. package/dist/app/_next/static/chunks/7214-5154a89d08d24dde.js +1 -0
  47. package/dist/app/_next/static/chunks/7324-b53229c59a640880.js +10 -0
  48. package/dist/app/_next/static/chunks/7636-66424f0b51d350e9.js +1 -0
  49. package/dist/app/_next/static/chunks/7874-39a3f2541165a675.js +1 -0
  50. package/dist/app/_next/static/chunks/7982-9da12b83f11e3f5f.js +1 -0
  51. package/dist/app/_next/static/chunks/8213a2eb-da25a3b3c5521b2b.js +1 -0
  52. package/dist/app/_next/static/chunks/8473-6598318371eca31b.js +1 -0
  53. package/dist/app/_next/static/chunks/8640fa6b-72e43370f68e5587.js +1 -0
  54. package/dist/app/_next/static/chunks/9090-3ef676f29c95f1c7.js +1 -0
  55. package/dist/app/_next/static/chunks/9124-a02f9e209e6e3cce.js +1 -0
  56. package/dist/app/_next/static/chunks/926-156f32067d111d6b.js +1 -0
  57. package/dist/app/_next/static/chunks/9487-b17481605e513b83.js +1 -0
  58. package/dist/app/_next/static/chunks/9599-a7e572bb88c3392b.js +1 -0
  59. package/dist/app/_next/static/chunks/9881-419697138376e755.js +1 -0
  60. package/dist/app/_next/static/chunks/app/(authenticated)/activity-log/all-activity/page-8917930b4d663405.js +1 -0
  61. package/dist/app/_next/static/chunks/app/(authenticated)/activity-log/email-log/page-b27a6ee32782d7df.js +1 -0
  62. package/dist/app/_next/static/chunks/app/(authenticated)/activity-log/notifications/page-b7eda523ede2702c.js +1 -0
  63. package/dist/app/_next/static/chunks/app/(authenticated)/activity-log/page-1cfa62d1caedaed0.js +1 -0
  64. package/dist/app/_next/static/chunks/app/(authenticated)/activity-log/sessions/page-3e21e20db90aeff7.js +1 -0
  65. package/dist/app/_next/static/chunks/app/(authenticated)/activity-log/workflow-executions/page-27bcc26b747fb29b.js +1 -0
  66. package/dist/app/_next/static/chunks/app/(authenticated)/activity-log/workflow-logs/page-9f9e9e952aef436e.js +1 -0
  67. package/dist/app/_next/static/chunks/app/(authenticated)/change-password/page-8d61aa499eabb127.js +1 -0
  68. package/dist/app/_next/static/chunks/app/(authenticated)/dashboard/page-1ceeac9e72997a8a.js +1 -0
  69. package/dist/app/_next/static/chunks/app/(authenticated)/data-browser/page-8cda2b57759dd670.js +1 -0
  70. package/dist/app/_next/static/chunks/app/(authenticated)/file-manager/page-8c6f1b1da66ad7e4.js +1 -0
  71. package/dist/app/_next/static/chunks/app/(authenticated)/layout-f70d225b2759c998.js +1 -0
  72. package/dist/app/_next/static/chunks/app/(authenticated)/settings/migrations/page-aacec8f7cfb40ab2.js +1 -0
  73. package/dist/app/_next/static/chunks/app/(authenticated)/settings/permissions/page-828110cfcde429c6.js +1 -0
  74. package/dist/app/_next/static/chunks/app/(authenticated)/settings/project/page-420e794bb76bd204.js +1 -0
  75. package/dist/app/_next/static/chunks/app/(authenticated)/settings/roles/page-9001d02b28f70708.js +1 -0
  76. package/dist/app/_next/static/chunks/app/(authenticated)/settings/schema/page-899574f35091dd58.js +1 -0
  77. package/dist/app/_next/static/chunks/app/(authenticated)/settings/tasks/page-ad7ab3e27c83f44f.js +1 -0
  78. package/dist/app/_next/static/chunks/app/(authenticated)/settings/templates/edit/page-bd83414cb8c4cb04.js +1 -0
  79. package/dist/app/_next/static/chunks/app/(authenticated)/settings/templates/page-3181447f8772b1d3.js +1 -0
  80. package/dist/app/_next/static/chunks/app/(authenticated)/settings/tenants/page-ef9bfbacef5a1d73.js +1 -0
  81. package/dist/app/_next/static/chunks/app/(authenticated)/users/invites/page-480306b7b2bbac7e.js +1 -0
  82. package/dist/app/_next/static/chunks/app/(authenticated)/users/list/page-74da51254c2606b3.js +1 -0
  83. package/dist/app/_next/static/chunks/app/(authenticated)/users/page-e99c6f0b915001b2.js +1 -0
  84. package/dist/app/_next/static/chunks/app/(authenticated)/users/preferences/page-1a935630ce8f2b12.js +1 -0
  85. package/dist/app/_next/static/chunks/app/(authenticated)/users/user-roles/page-901dfb8ea1f39ca8.js +1 -0
  86. package/dist/app/_next/static/chunks/app/(authenticated)/workflows/detail/page-9a6b839aea688ca4.js +1 -0
  87. package/dist/app/_next/static/chunks/app/(authenticated)/workflows/edit/page-11774efbc2fecae2.js +1 -0
  88. package/dist/app/_next/static/chunks/app/(authenticated)/workflows/execution/page-8ec1aea90412c03d.js +1 -0
  89. package/dist/app/_next/static/chunks/app/(authenticated)/workflows/page-88bc5b36ccb0a1f7.js +1 -0
  90. package/dist/app/_next/static/chunks/app/(public)/forgot-password/page-ed263fd46ef81c20.js +1 -0
  91. package/dist/app/_next/static/chunks/app/(public)/layout-f538977545844af8.js +1 -0
  92. package/dist/app/_next/static/chunks/app/(public)/login/page-c0a10b137f346096.js +1 -0
  93. package/dist/app/_next/static/chunks/app/(public)/register/page-4cb7644893efd9b3.js +1 -0
  94. package/dist/app/_next/static/chunks/app/_not-found/page-653f8815b78256cc.js +1 -0
  95. package/dist/app/_next/static/chunks/app/layout-591ca7a3e16528a1.js +1 -0
  96. package/dist/app/_next/static/chunks/app/page-dd19d124b5fa2577.js +1 -0
  97. package/dist/app/_next/static/chunks/c37d3baf.c2ff165f5b02c692.js +1 -0
  98. package/dist/app/_next/static/chunks/d0deef33.0379166a4ec23470.js +1 -0
  99. package/dist/app/_next/static/chunks/fd9d1056-54169f07cd680d6c.js +1 -0
  100. package/dist/app/_next/static/chunks/framework-8e0e0f4a6b83a956.js +1 -0
  101. package/dist/app/_next/static/chunks/main-324e91f5a430cddf.js +1 -0
  102. package/dist/app/_next/static/chunks/main-app-55bcae20c77aaf0e.js +1 -0
  103. package/dist/app/_next/static/chunks/pages/_app-3c9ca398d360b709.js +1 -0
  104. package/dist/app/_next/static/chunks/pages/_error-cf5ca766ac8f493f.js +1 -0
  105. package/dist/app/_next/static/chunks/polyfills-42372ed130431b0a.js +1 -0
  106. package/dist/app/_next/static/chunks/webpack-2c306566f7ee1b63.js +1 -0
  107. package/dist/app/_next/static/css/6c4002bae4e236b2.css +3 -0
  108. package/dist/app/_next/static/css/a275cc2b185e04f8.css +1 -0
  109. package/dist/app/_next/static/eCWhKA8XHqmB1zgFcEtN2/_buildManifest.js +1 -0
  110. package/dist/app/_next/static/eCWhKA8XHqmB1zgFcEtN2/_ssgManifest.js +1 -0
  111. package/dist/app/activity-log/all-activity/index.html +1 -0
  112. package/dist/app/activity-log/all-activity/index.txt +14 -0
  113. package/dist/app/activity-log/email-log/index.html +1 -0
  114. package/dist/app/activity-log/email-log/index.txt +14 -0
  115. package/dist/app/activity-log/index.html +1 -0
  116. package/dist/app/activity-log/index.txt +14 -0
  117. package/dist/app/activity-log/notifications/index.html +1 -0
  118. package/dist/app/activity-log/notifications/index.txt +14 -0
  119. package/dist/app/activity-log/sessions/index.html +1 -0
  120. package/dist/app/activity-log/sessions/index.txt +14 -0
  121. package/dist/app/activity-log/workflow-executions/index.html +1 -0
  122. package/dist/app/activity-log/workflow-executions/index.txt +14 -0
  123. package/dist/app/activity-log/workflow-logs/index.html +1 -0
  124. package/dist/app/activity-log/workflow-logs/index.txt +14 -0
  125. package/dist/app/change-password/index.html +1 -0
  126. package/dist/app/change-password/index.txt +14 -0
  127. package/dist/app/dashboard/index.html +1 -0
  128. package/dist/app/dashboard/index.txt +14 -0
  129. package/dist/app/data-browser/index.html +1 -0
  130. package/dist/app/data-browser/index.txt +14 -0
  131. package/dist/app/file-manager/index.html +1 -0
  132. package/dist/app/file-manager/index.txt +14 -0
  133. package/dist/app/forgot-password/index.html +1 -0
  134. package/dist/app/forgot-password/index.txt +13 -0
  135. package/dist/app/index.html +1 -0
  136. package/dist/app/index.txt +9 -0
  137. package/dist/app/login/index.html +1 -0
  138. package/dist/app/login/index.txt +13 -0
  139. package/dist/app/logo-dark.png +0 -0
  140. package/dist/app/logo-icon.svg +81 -0
  141. package/dist/app/logo-light.png +0 -0
  142. package/dist/app/register/index.html +1 -0
  143. package/dist/app/register/index.txt +13 -0
  144. package/dist/app/settings/migrations/index.html +1 -0
  145. package/dist/app/settings/migrations/index.txt +14 -0
  146. package/dist/app/settings/permissions/index.html +1 -0
  147. package/dist/app/settings/permissions/index.txt +14 -0
  148. package/dist/app/settings/project/index.html +1 -0
  149. package/dist/app/settings/project/index.txt +14 -0
  150. package/dist/app/settings/roles/index.html +1 -0
  151. package/dist/app/settings/roles/index.txt +14 -0
  152. package/dist/app/settings/schema/index.html +1 -0
  153. package/dist/app/settings/schema/index.txt +14 -0
  154. package/dist/app/settings/tasks/index.html +1 -0
  155. package/dist/app/settings/tasks/index.txt +14 -0
  156. package/dist/app/settings/templates/edit/index.html +1 -0
  157. package/dist/app/settings/templates/edit/index.txt +14 -0
  158. package/dist/app/settings/templates/index.html +1 -0
  159. package/dist/app/settings/templates/index.txt +14 -0
  160. package/dist/app/settings/tenants/index.html +1 -0
  161. package/dist/app/settings/tenants/index.txt +14 -0
  162. package/dist/app/users/index.html +1 -0
  163. package/dist/app/users/index.txt +14 -0
  164. package/dist/app/users/invites/index.html +1 -0
  165. package/dist/app/users/invites/index.txt +14 -0
  166. package/dist/app/users/list/index.html +1 -0
  167. package/dist/app/users/list/index.txt +14 -0
  168. package/dist/app/users/preferences/index.html +1 -0
  169. package/dist/app/users/preferences/index.txt +14 -0
  170. package/dist/app/users/user-roles/index.html +1 -0
  171. package/dist/app/users/user-roles/index.txt +14 -0
  172. package/dist/app/workflows/detail/index.html +1 -0
  173. package/dist/app/workflows/detail/index.txt +14 -0
  174. package/dist/app/workflows/edit/index.html +1 -0
  175. package/dist/app/workflows/edit/index.txt +14 -0
  176. package/dist/app/workflows/execution/index.html +1 -0
  177. package/dist/app/workflows/execution/index.txt +14 -0
  178. package/dist/app/workflows/index.html +1 -0
  179. package/dist/app/workflows/index.txt +14 -0
  180. package/dist/app.d.ts +36 -0
  181. package/dist/app.d.ts.map +1 -0
  182. package/dist/app.js +546 -0
  183. package/dist/app.js.map +1 -0
  184. package/dist/auth/adapters/baasix-adapter.d.ts +12 -0
  185. package/dist/auth/adapters/baasix-adapter.d.ts.map +1 -0
  186. package/dist/auth/adapters/baasix-adapter.js +318 -0
  187. package/dist/auth/adapters/baasix-adapter.js.map +1 -0
  188. package/dist/auth/adapters/index.d.ts +6 -0
  189. package/dist/auth/adapters/index.d.ts.map +1 -0
  190. package/dist/auth/adapters/index.js +5 -0
  191. package/dist/auth/adapters/index.js.map +1 -0
  192. package/dist/auth/core.d.ts +73 -0
  193. package/dist/auth/core.d.ts.map +1 -0
  194. package/dist/auth/core.js +528 -0
  195. package/dist/auth/core.js.map +1 -0
  196. package/dist/auth/index.d.ts +56 -0
  197. package/dist/auth/index.d.ts.map +1 -0
  198. package/dist/auth/index.js +58 -0
  199. package/dist/auth/index.js.map +1 -0
  200. package/dist/auth/oauth2/index.d.ts +5 -0
  201. package/dist/auth/oauth2/index.d.ts.map +1 -0
  202. package/dist/auth/oauth2/index.js +5 -0
  203. package/dist/auth/oauth2/index.js.map +1 -0
  204. package/dist/auth/oauth2/utils.d.ts +90 -0
  205. package/dist/auth/oauth2/utils.d.ts.map +1 -0
  206. package/dist/auth/oauth2/utils.js +167 -0
  207. package/dist/auth/oauth2/utils.js.map +1 -0
  208. package/dist/auth/providers/apple.d.ts +28 -0
  209. package/dist/auth/providers/apple.d.ts.map +1 -0
  210. package/dist/auth/providers/apple.js +192 -0
  211. package/dist/auth/providers/apple.js.map +1 -0
  212. package/dist/auth/providers/credential.d.ts +87 -0
  213. package/dist/auth/providers/credential.d.ts.map +1 -0
  214. package/dist/auth/providers/credential.js +162 -0
  215. package/dist/auth/providers/credential.js.map +1 -0
  216. package/dist/auth/providers/facebook.d.ts +26 -0
  217. package/dist/auth/providers/facebook.d.ts.map +1 -0
  218. package/dist/auth/providers/facebook.js +112 -0
  219. package/dist/auth/providers/facebook.js.map +1 -0
  220. package/dist/auth/providers/github.d.ts +29 -0
  221. package/dist/auth/providers/github.d.ts.map +1 -0
  222. package/dist/auth/providers/github.js +144 -0
  223. package/dist/auth/providers/github.js.map +1 -0
  224. package/dist/auth/providers/google.d.ts +32 -0
  225. package/dist/auth/providers/google.d.ts.map +1 -0
  226. package/dist/auth/providers/google.js +145 -0
  227. package/dist/auth/providers/google.js.map +1 -0
  228. package/dist/auth/providers/index.d.ts +22 -0
  229. package/dist/auth/providers/index.d.ts.map +1 -0
  230. package/dist/auth/providers/index.js +17 -0
  231. package/dist/auth/providers/index.js.map +1 -0
  232. package/dist/auth/routes.d.ts +63 -0
  233. package/dist/auth/routes.d.ts.map +1 -0
  234. package/dist/auth/routes.js +827 -0
  235. package/dist/auth/routes.js.map +1 -0
  236. package/dist/auth/services/index.d.ts +10 -0
  237. package/dist/auth/services/index.d.ts.map +1 -0
  238. package/dist/auth/services/index.js +7 -0
  239. package/dist/auth/services/index.js.map +1 -0
  240. package/dist/auth/services/session.d.ts +81 -0
  241. package/dist/auth/services/session.d.ts.map +1 -0
  242. package/dist/auth/services/session.js +186 -0
  243. package/dist/auth/services/session.js.map +1 -0
  244. package/dist/auth/services/token.d.ts +41 -0
  245. package/dist/auth/services/token.d.ts.map +1 -0
  246. package/dist/auth/services/token.js +44 -0
  247. package/dist/auth/services/token.js.map +1 -0
  248. package/dist/auth/services/verification.d.ts +77 -0
  249. package/dist/auth/services/verification.d.ts.map +1 -0
  250. package/dist/auth/services/verification.js +143 -0
  251. package/dist/auth/services/verification.js.map +1 -0
  252. package/dist/auth/types.d.ts +318 -0
  253. package/dist/auth/types.d.ts.map +1 -0
  254. package/dist/auth/types.js +6 -0
  255. package/dist/auth/types.js.map +1 -0
  256. package/dist/customTypes/arrays.d.ts +200 -0
  257. package/dist/customTypes/arrays.d.ts.map +1 -0
  258. package/dist/customTypes/arrays.js +309 -0
  259. package/dist/customTypes/arrays.js.map +1 -0
  260. package/dist/customTypes/index.d.ts +8 -0
  261. package/dist/customTypes/index.d.ts.map +1 -0
  262. package/dist/customTypes/index.js +11 -0
  263. package/dist/customTypes/index.js.map +1 -0
  264. package/dist/customTypes/postgis.d.ts +146 -0
  265. package/dist/customTypes/postgis.d.ts.map +1 -0
  266. package/dist/customTypes/postgis.js +315 -0
  267. package/dist/customTypes/postgis.js.map +1 -0
  268. package/dist/customTypes/ranges.d.ts +128 -0
  269. package/dist/customTypes/ranges.d.ts.map +1 -0
  270. package/dist/customTypes/ranges.js +257 -0
  271. package/dist/customTypes/ranges.js.map +1 -0
  272. package/dist/index.d.ts +37 -0
  273. package/dist/index.d.ts.map +1 -0
  274. package/dist/index.js +42 -0
  275. package/dist/index.js.map +1 -0
  276. package/dist/migrations/0.1.0-alpha.0_initial_setup.d.ts +29 -0
  277. package/dist/migrations/0.1.0-alpha.0_initial_setup.d.ts.map +1 -0
  278. package/dist/migrations/0.1.0-alpha.0_initial_setup.js +72 -0
  279. package/dist/migrations/0.1.0-alpha.0_initial_setup.js.map +1 -0
  280. package/dist/migrations/_example_migration.d.ts +31 -0
  281. package/dist/migrations/_example_migration.d.ts.map +1 -0
  282. package/dist/migrations/_example_migration.js +75 -0
  283. package/dist/migrations/_example_migration.js.map +1 -0
  284. package/dist/plugins/definePlugin.d.ts +49 -0
  285. package/dist/plugins/definePlugin.d.ts.map +1 -0
  286. package/dist/plugins/definePlugin.js +131 -0
  287. package/dist/plugins/definePlugin.js.map +1 -0
  288. package/dist/plugins/softDelete.d.ts +179 -0
  289. package/dist/plugins/softDelete.d.ts.map +1 -0
  290. package/dist/plugins/softDelete.js +235 -0
  291. package/dist/plugins/softDelete.js.map +1 -0
  292. package/dist/routes/auth.route.d.ts +14 -0
  293. package/dist/routes/auth.route.d.ts.map +1 -0
  294. package/dist/routes/auth.route.js +421 -0
  295. package/dist/routes/auth.route.js.map +1 -0
  296. package/dist/routes/file.route.d.ts +7 -0
  297. package/dist/routes/file.route.d.ts.map +1 -0
  298. package/dist/routes/file.route.js +274 -0
  299. package/dist/routes/file.route.js.map +1 -0
  300. package/dist/routes/items.route.d.ts +7 -0
  301. package/dist/routes/items.route.d.ts.map +1 -0
  302. package/dist/routes/items.route.js +369 -0
  303. package/dist/routes/items.route.js.map +1 -0
  304. package/dist/routes/migration.route.d.ts +7 -0
  305. package/dist/routes/migration.route.d.ts.map +1 -0
  306. package/dist/routes/migration.route.js +225 -0
  307. package/dist/routes/migration.route.js.map +1 -0
  308. package/dist/routes/notification.route.d.ts +7 -0
  309. package/dist/routes/notification.route.d.ts.map +1 -0
  310. package/dist/routes/notification.route.js +124 -0
  311. package/dist/routes/notification.route.js.map +1 -0
  312. package/dist/routes/openapi.route.d.ts +7 -0
  313. package/dist/routes/openapi.route.d.ts.map +1 -0
  314. package/dist/routes/openapi.route.js +2169 -0
  315. package/dist/routes/openapi.route.js.map +1 -0
  316. package/dist/routes/permission.route.d.ts +7 -0
  317. package/dist/routes/permission.route.d.ts.map +1 -0
  318. package/dist/routes/permission.route.js +158 -0
  319. package/dist/routes/permission.route.js.map +1 -0
  320. package/dist/routes/realtime.route.d.ts +21 -0
  321. package/dist/routes/realtime.route.d.ts.map +1 -0
  322. package/dist/routes/realtime.route.js +243 -0
  323. package/dist/routes/realtime.route.js.map +1 -0
  324. package/dist/routes/reports.route.d.ts +7 -0
  325. package/dist/routes/reports.route.d.ts.map +1 -0
  326. package/dist/routes/reports.route.js +95 -0
  327. package/dist/routes/reports.route.js.map +1 -0
  328. package/dist/routes/schema.route.d.ts +7 -0
  329. package/dist/routes/schema.route.d.ts.map +1 -0
  330. package/dist/routes/schema.route.js +1780 -0
  331. package/dist/routes/schema.route.js.map +1 -0
  332. package/dist/routes/settings.route.d.ts +7 -0
  333. package/dist/routes/settings.route.d.ts.map +1 -0
  334. package/dist/routes/settings.route.js +154 -0
  335. package/dist/routes/settings.route.js.map +1 -0
  336. package/dist/routes/templates.route.d.ts +7 -0
  337. package/dist/routes/templates.route.d.ts.map +1 -0
  338. package/dist/routes/templates.route.js +91 -0
  339. package/dist/routes/templates.route.js.map +1 -0
  340. package/dist/routes/utils.route.d.ts +7 -0
  341. package/dist/routes/utils.route.d.ts.map +1 -0
  342. package/dist/routes/utils.route.js +33 -0
  343. package/dist/routes/utils.route.js.map +1 -0
  344. package/dist/routes/workflow.route.d.ts +7 -0
  345. package/dist/routes/workflow.route.d.ts.map +1 -0
  346. package/dist/routes/workflow.route.js +787 -0
  347. package/dist/routes/workflow.route.js.map +1 -0
  348. package/dist/services/AssetsService.d.ts +39 -0
  349. package/dist/services/AssetsService.d.ts.map +1 -0
  350. package/dist/services/AssetsService.js +255 -0
  351. package/dist/services/AssetsService.js.map +1 -0
  352. package/dist/services/CacheService.d.ts +169 -0
  353. package/dist/services/CacheService.d.ts.map +1 -0
  354. package/dist/services/CacheService.js +722 -0
  355. package/dist/services/CacheService.js.map +1 -0
  356. package/dist/services/FilesService.d.ts +30 -0
  357. package/dist/services/FilesService.d.ts.map +1 -0
  358. package/dist/services/FilesService.js +268 -0
  359. package/dist/services/FilesService.js.map +1 -0
  360. package/dist/services/HooksManager.d.ts +38 -0
  361. package/dist/services/HooksManager.d.ts.map +1 -0
  362. package/dist/services/HooksManager.js +165 -0
  363. package/dist/services/HooksManager.js.map +1 -0
  364. package/dist/services/ItemsService.d.ts +273 -0
  365. package/dist/services/ItemsService.d.ts.map +1 -0
  366. package/dist/services/ItemsService.js +2458 -0
  367. package/dist/services/ItemsService.js.map +1 -0
  368. package/dist/services/MailService.d.ts +76 -0
  369. package/dist/services/MailService.d.ts.map +1 -0
  370. package/dist/services/MailService.js +585 -0
  371. package/dist/services/MailService.js.map +1 -0
  372. package/dist/services/MigrationService.d.ts +243 -0
  373. package/dist/services/MigrationService.d.ts.map +1 -0
  374. package/dist/services/MigrationService.js +914 -0
  375. package/dist/services/MigrationService.js.map +1 -0
  376. package/dist/services/NotificationService.d.ts +35 -0
  377. package/dist/services/NotificationService.d.ts.map +1 -0
  378. package/dist/services/NotificationService.js +159 -0
  379. package/dist/services/NotificationService.js.map +1 -0
  380. package/dist/services/PermissionService.d.ts +128 -0
  381. package/dist/services/PermissionService.d.ts.map +1 -0
  382. package/dist/services/PermissionService.js +373 -0
  383. package/dist/services/PermissionService.js.map +1 -0
  384. package/dist/services/PluginManager.d.ts +138 -0
  385. package/dist/services/PluginManager.d.ts.map +1 -0
  386. package/dist/services/PluginManager.js +463 -0
  387. package/dist/services/PluginManager.js.map +1 -0
  388. package/dist/services/RealtimeService.d.ts +209 -0
  389. package/dist/services/RealtimeService.d.ts.map +1 -0
  390. package/dist/services/RealtimeService.js +978 -0
  391. package/dist/services/RealtimeService.js.map +1 -0
  392. package/dist/services/ReportService.d.ts +13 -0
  393. package/dist/services/ReportService.d.ts.map +1 -0
  394. package/dist/services/ReportService.js +91 -0
  395. package/dist/services/ReportService.js.map +1 -0
  396. package/dist/services/SettingsService.d.ts +60 -0
  397. package/dist/services/SettingsService.d.ts.map +1 -0
  398. package/dist/services/SettingsService.js +474 -0
  399. package/dist/services/SettingsService.js.map +1 -0
  400. package/dist/services/SocketService.d.ts +129 -0
  401. package/dist/services/SocketService.d.ts.map +1 -0
  402. package/dist/services/SocketService.js +600 -0
  403. package/dist/services/SocketService.js.map +1 -0
  404. package/dist/services/StatsService.d.ts +10 -0
  405. package/dist/services/StatsService.d.ts.map +1 -0
  406. package/dist/services/StatsService.js +40 -0
  407. package/dist/services/StatsService.js.map +1 -0
  408. package/dist/services/StorageService.d.ts +20 -0
  409. package/dist/services/StorageService.d.ts.map +1 -0
  410. package/dist/services/StorageService.js +164 -0
  411. package/dist/services/StorageService.js.map +1 -0
  412. package/dist/services/TasksService.d.ts +74 -0
  413. package/dist/services/TasksService.d.ts.map +1 -0
  414. package/dist/services/TasksService.js +404 -0
  415. package/dist/services/TasksService.js.map +1 -0
  416. package/dist/services/WorkflowService.d.ts +305 -0
  417. package/dist/services/WorkflowService.d.ts.map +1 -0
  418. package/dist/services/WorkflowService.js +1811 -0
  419. package/dist/services/WorkflowService.js.map +1 -0
  420. package/dist/templates/logo/logo.png +0 -0
  421. package/dist/templates/mails/default.liquid +23 -0
  422. package/dist/types/aggregation.d.ts +40 -0
  423. package/dist/types/aggregation.d.ts.map +1 -0
  424. package/dist/types/aggregation.js +6 -0
  425. package/dist/types/aggregation.js.map +1 -0
  426. package/dist/types/assets.d.ts +32 -0
  427. package/dist/types/assets.d.ts.map +1 -0
  428. package/dist/types/assets.js +6 -0
  429. package/dist/types/assets.js.map +1 -0
  430. package/dist/types/auth.d.ts +50 -0
  431. package/dist/types/auth.d.ts.map +1 -0
  432. package/dist/types/auth.js +6 -0
  433. package/dist/types/auth.js.map +1 -0
  434. package/dist/types/cache.d.ts +47 -0
  435. package/dist/types/cache.d.ts.map +1 -0
  436. package/dist/types/cache.js +6 -0
  437. package/dist/types/cache.js.map +1 -0
  438. package/dist/types/database.d.ts +16 -0
  439. package/dist/types/database.d.ts.map +1 -0
  440. package/dist/types/database.js +6 -0
  441. package/dist/types/database.js.map +1 -0
  442. package/dist/types/fields.d.ts +71 -0
  443. package/dist/types/fields.d.ts.map +1 -0
  444. package/dist/types/fields.js +6 -0
  445. package/dist/types/fields.js.map +1 -0
  446. package/dist/types/files.d.ts +33 -0
  447. package/dist/types/files.d.ts.map +1 -0
  448. package/dist/types/files.js +6 -0
  449. package/dist/types/files.js.map +1 -0
  450. package/dist/types/hooks.d.ts +29 -0
  451. package/dist/types/hooks.d.ts.map +1 -0
  452. package/dist/types/hooks.js +6 -0
  453. package/dist/types/hooks.js.map +1 -0
  454. package/dist/types/import-export.d.ts +62 -0
  455. package/dist/types/import-export.d.ts.map +1 -0
  456. package/dist/types/import-export.js +6 -0
  457. package/dist/types/import-export.js.map +1 -0
  458. package/dist/types/index.d.ts +31 -0
  459. package/dist/types/index.d.ts.map +1 -0
  460. package/dist/types/index.js +58 -0
  461. package/dist/types/index.js.map +1 -0
  462. package/dist/types/mail.d.ts +34 -0
  463. package/dist/types/mail.d.ts.map +1 -0
  464. package/dist/types/mail.js +6 -0
  465. package/dist/types/mail.js.map +1 -0
  466. package/dist/types/notifications.d.ts +16 -0
  467. package/dist/types/notifications.d.ts.map +1 -0
  468. package/dist/types/notifications.js +6 -0
  469. package/dist/types/notifications.js.map +1 -0
  470. package/dist/types/plugin.d.ts +351 -0
  471. package/dist/types/plugin.d.ts.map +1 -0
  472. package/dist/types/plugin.js +8 -0
  473. package/dist/types/plugin.js.map +1 -0
  474. package/dist/types/query.d.ts +71 -0
  475. package/dist/types/query.d.ts.map +1 -0
  476. package/dist/types/query.js +6 -0
  477. package/dist/types/query.js.map +1 -0
  478. package/dist/types/relations.d.ts +111 -0
  479. package/dist/types/relations.d.ts.map +1 -0
  480. package/dist/types/relations.js +6 -0
  481. package/dist/types/relations.js.map +1 -0
  482. package/dist/types/reports.d.ts +17 -0
  483. package/dist/types/reports.d.ts.map +1 -0
  484. package/dist/types/reports.js +6 -0
  485. package/dist/types/reports.js.map +1 -0
  486. package/dist/types/schema.d.ts +26 -0
  487. package/dist/types/schema.d.ts.map +1 -0
  488. package/dist/types/schema.js +6 -0
  489. package/dist/types/schema.js.map +1 -0
  490. package/dist/types/seed.d.ts +27 -0
  491. package/dist/types/seed.d.ts.map +1 -0
  492. package/dist/types/seed.js +6 -0
  493. package/dist/types/seed.js.map +1 -0
  494. package/dist/types/services.d.ts +68 -0
  495. package/dist/types/services.d.ts.map +1 -0
  496. package/dist/types/services.js +6 -0
  497. package/dist/types/services.js.map +1 -0
  498. package/dist/types/settings.d.ts +36 -0
  499. package/dist/types/settings.d.ts.map +1 -0
  500. package/dist/types/settings.js +6 -0
  501. package/dist/types/settings.js.map +1 -0
  502. package/dist/types/sockets.d.ts +26 -0
  503. package/dist/types/sockets.d.ts.map +1 -0
  504. package/dist/types/sockets.js +6 -0
  505. package/dist/types/sockets.js.map +1 -0
  506. package/dist/types/sort.d.ts +25 -0
  507. package/dist/types/sort.d.ts.map +1 -0
  508. package/dist/types/sort.js +6 -0
  509. package/dist/types/sort.js.map +1 -0
  510. package/dist/types/spatial.d.ts +19 -0
  511. package/dist/types/spatial.d.ts.map +1 -0
  512. package/dist/types/spatial.js +6 -0
  513. package/dist/types/spatial.js.map +1 -0
  514. package/dist/types/stats.d.ts +21 -0
  515. package/dist/types/stats.d.ts.map +1 -0
  516. package/dist/types/stats.js +6 -0
  517. package/dist/types/stats.js.map +1 -0
  518. package/dist/types/storage.d.ts +19 -0
  519. package/dist/types/storage.d.ts.map +1 -0
  520. package/dist/types/storage.js +6 -0
  521. package/dist/types/storage.js.map +1 -0
  522. package/dist/types/tasks.d.ts +14 -0
  523. package/dist/types/tasks.d.ts.map +1 -0
  524. package/dist/types/tasks.js +6 -0
  525. package/dist/types/tasks.js.map +1 -0
  526. package/dist/types/utils.d.ts +54 -0
  527. package/dist/types/utils.d.ts.map +1 -0
  528. package/dist/types/utils.js +6 -0
  529. package/dist/types/utils.js.map +1 -0
  530. package/dist/types/workflow.d.ts +17 -0
  531. package/dist/types/workflow.d.ts.map +1 -0
  532. package/dist/types/workflow.js +6 -0
  533. package/dist/types/workflow.js.map +1 -0
  534. package/dist/utils/aggregationUtils.d.ts +192 -0
  535. package/dist/utils/aggregationUtils.d.ts.map +1 -0
  536. package/dist/utils/aggregationUtils.js +450 -0
  537. package/dist/utils/aggregationUtils.js.map +1 -0
  538. package/dist/utils/auth.d.ts +93 -0
  539. package/dist/utils/auth.d.ts.map +1 -0
  540. package/dist/utils/auth.js +557 -0
  541. package/dist/utils/auth.js.map +1 -0
  542. package/dist/utils/cache.d.ts +64 -0
  543. package/dist/utils/cache.d.ts.map +1 -0
  544. package/dist/utils/cache.js +464 -0
  545. package/dist/utils/cache.js.map +1 -0
  546. package/dist/utils/common.d.ts +53 -0
  547. package/dist/utils/common.d.ts.map +1 -0
  548. package/dist/utils/common.js +162 -0
  549. package/dist/utils/common.js.map +1 -0
  550. package/dist/utils/db.d.ts +101 -0
  551. package/dist/utils/db.d.ts.map +1 -0
  552. package/dist/utils/db.js +413 -0
  553. package/dist/utils/db.js.map +1 -0
  554. package/dist/utils/dirname.d.ts +30 -0
  555. package/dist/utils/dirname.d.ts.map +1 -0
  556. package/dist/utils/dirname.js +95 -0
  557. package/dist/utils/dirname.js.map +1 -0
  558. package/dist/utils/dynamicVariableResolver.d.ts +17 -0
  559. package/dist/utils/dynamicVariableResolver.d.ts.map +1 -0
  560. package/dist/utils/dynamicVariableResolver.js +262 -0
  561. package/dist/utils/dynamicVariableResolver.js.map +1 -0
  562. package/dist/utils/env.d.ts +38 -0
  563. package/dist/utils/env.d.ts.map +1 -0
  564. package/dist/utils/env.js +80 -0
  565. package/dist/utils/env.js.map +1 -0
  566. package/dist/utils/errorHandler.d.ts +14 -0
  567. package/dist/utils/errorHandler.d.ts.map +1 -0
  568. package/dist/utils/errorHandler.js +79 -0
  569. package/dist/utils/errorHandler.js.map +1 -0
  570. package/dist/utils/fieldExpansion.d.ts +30 -0
  571. package/dist/utils/fieldExpansion.d.ts.map +1 -0
  572. package/dist/utils/fieldExpansion.js +145 -0
  573. package/dist/utils/fieldExpansion.js.map +1 -0
  574. package/dist/utils/fieldUtils.d.ts +179 -0
  575. package/dist/utils/fieldUtils.d.ts.map +1 -0
  576. package/dist/utils/fieldUtils.js +424 -0
  577. package/dist/utils/fieldUtils.js.map +1 -0
  578. package/dist/utils/filterOperators.d.ts +472 -0
  579. package/dist/utils/filterOperators.d.ts.map +1 -0
  580. package/dist/utils/filterOperators.js +1229 -0
  581. package/dist/utils/filterOperators.js.map +1 -0
  582. package/dist/utils/importUtils.d.ts +127 -0
  583. package/dist/utils/importUtils.d.ts.map +1 -0
  584. package/dist/utils/importUtils.js +437 -0
  585. package/dist/utils/importUtils.js.map +1 -0
  586. package/dist/utils/index.d.ts +75 -0
  587. package/dist/utils/index.d.ts.map +1 -0
  588. package/dist/utils/index.js +101 -0
  589. package/dist/utils/index.js.map +1 -0
  590. package/dist/utils/logger.d.ts +41 -0
  591. package/dist/utils/logger.d.ts.map +1 -0
  592. package/dist/utils/logger.js +217 -0
  593. package/dist/utils/logger.js.map +1 -0
  594. package/dist/utils/orderUtils.d.ts +117 -0
  595. package/dist/utils/orderUtils.d.ts.map +1 -0
  596. package/dist/utils/orderUtils.js +249 -0
  597. package/dist/utils/orderUtils.js.map +1 -0
  598. package/dist/utils/queryBuilder.d.ts +118 -0
  599. package/dist/utils/queryBuilder.d.ts.map +1 -0
  600. package/dist/utils/queryBuilder.js +489 -0
  601. package/dist/utils/queryBuilder.js.map +1 -0
  602. package/dist/utils/relationLoader.d.ts +65 -0
  603. package/dist/utils/relationLoader.d.ts.map +1 -0
  604. package/dist/utils/relationLoader.js +1081 -0
  605. package/dist/utils/relationLoader.js.map +1 -0
  606. package/dist/utils/relationPathResolver.d.ts +30 -0
  607. package/dist/utils/relationPathResolver.d.ts.map +1 -0
  608. package/dist/utils/relationPathResolver.js +173 -0
  609. package/dist/utils/relationPathResolver.js.map +1 -0
  610. package/dist/utils/relationUtils.d.ts +139 -0
  611. package/dist/utils/relationUtils.d.ts.map +1 -0
  612. package/dist/utils/relationUtils.js +711 -0
  613. package/dist/utils/relationUtils.js.map +1 -0
  614. package/dist/utils/router.d.ts +6 -0
  615. package/dist/utils/router.d.ts.map +1 -0
  616. package/dist/utils/router.js +95 -0
  617. package/dist/utils/router.js.map +1 -0
  618. package/dist/utils/schema.d.ts +88 -0
  619. package/dist/utils/schema.d.ts.map +1 -0
  620. package/dist/utils/schema.js +24 -0
  621. package/dist/utils/schema.js.map +1 -0
  622. package/dist/utils/schemaManager.d.ts +238 -0
  623. package/dist/utils/schemaManager.d.ts.map +1 -0
  624. package/dist/utils/schemaManager.js +1992 -0
  625. package/dist/utils/schemaManager.js.map +1 -0
  626. package/dist/utils/schemaValidator.d.ts +83 -0
  627. package/dist/utils/schemaValidator.d.ts.map +1 -0
  628. package/dist/utils/schemaValidator.js +491 -0
  629. package/dist/utils/schemaValidator.js.map +1 -0
  630. package/dist/utils/seed.d.ts +45 -0
  631. package/dist/utils/seed.d.ts.map +1 -0
  632. package/dist/utils/seed.js +248 -0
  633. package/dist/utils/seed.js.map +1 -0
  634. package/dist/utils/sessionCleanup.d.ts +10 -0
  635. package/dist/utils/sessionCleanup.d.ts.map +1 -0
  636. package/dist/utils/sessionCleanup.js +49 -0
  637. package/dist/utils/sessionCleanup.js.map +1 -0
  638. package/dist/utils/sortUtils.d.ts +117 -0
  639. package/dist/utils/sortUtils.d.ts.map +1 -0
  640. package/dist/utils/sortUtils.js +232 -0
  641. package/dist/utils/sortUtils.js.map +1 -0
  642. package/dist/utils/spatialUtils.d.ts +244 -0
  643. package/dist/utils/spatialUtils.d.ts.map +1 -0
  644. package/dist/utils/spatialUtils.js +359 -0
  645. package/dist/utils/spatialUtils.js.map +1 -0
  646. package/dist/utils/systemschema.d.ts +11040 -0
  647. package/dist/utils/systemschema.d.ts.map +1 -0
  648. package/dist/utils/systemschema.js +1777 -0
  649. package/dist/utils/systemschema.js.map +1 -0
  650. package/dist/utils/tenantUtils.d.ts +34 -0
  651. package/dist/utils/tenantUtils.d.ts.map +1 -0
  652. package/dist/utils/tenantUtils.js +124 -0
  653. package/dist/utils/tenantUtils.js.map +1 -0
  654. package/dist/utils/typeMapper.d.ts +25 -0
  655. package/dist/utils/typeMapper.d.ts.map +1 -0
  656. package/dist/utils/typeMapper.js +282 -0
  657. package/dist/utils/typeMapper.js.map +1 -0
  658. package/dist/utils/valueValidator.d.ts +60 -0
  659. package/dist/utils/valueValidator.d.ts.map +1 -0
  660. package/dist/utils/valueValidator.js +303 -0
  661. package/dist/utils/valueValidator.js.map +1 -0
  662. package/dist/utils/workflow.d.ts +87 -0
  663. package/dist/utils/workflow.d.ts.map +1 -0
  664. package/dist/utils/workflow.js +205 -0
  665. package/dist/utils/workflow.js.map +1 -0
  666. package/package.json +115 -0
@@ -0,0 +1,248 @@
1
+ /**
2
+ * Database Seeding Utility
3
+ *
4
+ * Provides utilities for seeding the database with initial data.
5
+ * Useful for development, testing, and setting up new environments.
6
+ */
7
+ import { ItemsService } from '../services/ItemsService.js';
8
+ import { schemaManager } from './schemaManager.js';
9
+ /**
10
+ * Seeding utility class
11
+ */
12
+ class SeedUtility {
13
+ /**
14
+ * Seed a single collection
15
+ */
16
+ async seedCollection(options) {
17
+ const { collection, data, clearBefore = false, skipDuplicates = true } = options;
18
+ const result = {
19
+ collection,
20
+ created: 0,
21
+ skipped: 0,
22
+ errors: 0,
23
+ errorDetails: [],
24
+ };
25
+ try {
26
+ const service = new ItemsService(collection);
27
+ // Clear existing data if requested
28
+ if (clearBefore) {
29
+ console.log(`[Seed] Clearing existing data in ${collection}...`);
30
+ const existing = await service.readByQuery({});
31
+ for (const item of existing.data) {
32
+ await service.deleteOne(item.id, { force: true });
33
+ }
34
+ console.log(`[Seed] Cleared ${existing.data.length} items from ${collection}`);
35
+ }
36
+ // Normalize data to array
37
+ const dataArray = Array.isArray(data) ? data : [data];
38
+ // Get unique fields for duplicate checking
39
+ const uniqueFields = skipDuplicates ? this.getUniqueFields(collection) : [];
40
+ // Seed each item
41
+ for (const item of dataArray) {
42
+ try {
43
+ // Check for duplicates
44
+ if (skipDuplicates && uniqueFields.length > 0) {
45
+ const isDuplicate = await this.checkDuplicate(service, item, uniqueFields);
46
+ if (isDuplicate) {
47
+ result.skipped++;
48
+ console.log(`[Seed] Skipped duplicate in ${collection}:`, item);
49
+ continue;
50
+ }
51
+ }
52
+ // Create item
53
+ await service.createOne(item);
54
+ result.created++;
55
+ }
56
+ catch (error) {
57
+ result.errors++;
58
+ result.errorDetails.push({
59
+ item,
60
+ error: error.message,
61
+ });
62
+ console.error(`[Seed] Error creating item in ${collection}:`, error.message);
63
+ }
64
+ }
65
+ console.log(`[Seed] Completed ${collection}: created=${result.created}, skipped=${result.skipped}, errors=${result.errors}`);
66
+ return result;
67
+ }
68
+ catch (error) {
69
+ console.error(`[Seed] Fatal error seeding ${collection}:`, error);
70
+ throw error;
71
+ }
72
+ }
73
+ /**
74
+ * Seed multiple collections
75
+ */
76
+ async seedMultiple(seeds) {
77
+ const results = [];
78
+ console.log(`[Seed] Starting to seed ${seeds.length} collections...`);
79
+ for (const seed of seeds) {
80
+ const result = await this.seedCollection(seed);
81
+ results.push(result);
82
+ }
83
+ console.log('[Seed] All collections seeded successfully');
84
+ return results;
85
+ }
86
+ /**
87
+ * Get unique fields for a collection
88
+ */
89
+ getUniqueFields(collection) {
90
+ const schema = schemaManager.getSchema(collection);
91
+ if (!schema) {
92
+ return [];
93
+ }
94
+ const uniqueFields = [];
95
+ for (const [fieldName, fieldDef] of Object.entries(schema.columns)) {
96
+ const fieldDefTyped = fieldDef;
97
+ if (fieldDefTyped.isUnique || fieldDefTyped.primaryKey) {
98
+ uniqueFields.push(fieldName);
99
+ }
100
+ }
101
+ return uniqueFields;
102
+ }
103
+ /**
104
+ * Check if item already exists based on unique fields
105
+ */
106
+ async checkDuplicate(service, item, uniqueFields) {
107
+ for (const field of uniqueFields) {
108
+ if (field in item && item[field] != null) {
109
+ try {
110
+ const existing = await service.readByQuery({
111
+ filter: { [field]: item[field] },
112
+ limit: 1,
113
+ });
114
+ if (existing.data.length > 0) {
115
+ return true;
116
+ }
117
+ }
118
+ catch {
119
+ // Ignore errors
120
+ }
121
+ }
122
+ }
123
+ return false;
124
+ }
125
+ /**
126
+ * Create seed data template for a collection
127
+ */
128
+ generateTemplate(collection, count = 5) {
129
+ const schema = schemaManager.getSchema(collection);
130
+ if (!schema) {
131
+ console.error(`Schema not found for collection: ${collection}`);
132
+ return [];
133
+ }
134
+ const templates = [];
135
+ for (let i = 0; i < count; i++) {
136
+ const template = {};
137
+ for (const [fieldName, fieldDef] of Object.entries(schema.columns)) {
138
+ const fieldDefTyped = fieldDef;
139
+ const dataType = fieldDefTyped.dataType;
140
+ // Skip auto-increment and timestamp fields
141
+ if (fieldDefTyped.primaryKey && fieldDefTyped.generated)
142
+ continue;
143
+ if (['createdAt', 'updatedAt', 'deletedAt'].includes(fieldName))
144
+ continue;
145
+ // Generate sample data based on type
146
+ template[fieldName] = this.generateSampleValue(fieldName, dataType, i);
147
+ }
148
+ templates.push(template);
149
+ }
150
+ return templates;
151
+ }
152
+ /**
153
+ * Generate sample value for a field
154
+ */
155
+ generateSampleValue(fieldName, dataType, index) {
156
+ const lowerFieldName = fieldName.toLowerCase();
157
+ // Generate based on field name
158
+ if (lowerFieldName.includes('email')) {
159
+ return `user${index + 1}@example.com`;
160
+ }
161
+ if (lowerFieldName.includes('name')) {
162
+ return `Sample Name ${index + 1}`;
163
+ }
164
+ if (lowerFieldName.includes('title')) {
165
+ return `Sample Title ${index + 1}`;
166
+ }
167
+ if (lowerFieldName.includes('description')) {
168
+ return `Sample description for item ${index + 1}`;
169
+ }
170
+ if (lowerFieldName.includes('url')) {
171
+ return `https://example.com/item-${index + 1}`;
172
+ }
173
+ if (lowerFieldName.includes('phone')) {
174
+ return `+1-555-${String(index + 1).padStart(4, '0')}`;
175
+ }
176
+ // Generate based on data type
177
+ switch (dataType) {
178
+ case 'string':
179
+ case 'text':
180
+ return `Sample ${fieldName} ${index + 1}`;
181
+ case 'integer':
182
+ case 'bigInteger':
183
+ return index + 1;
184
+ case 'float':
185
+ case 'decimal':
186
+ return (index + 1) * 1.5;
187
+ case 'boolean':
188
+ return index % 2 === 0;
189
+ case 'date':
190
+ case 'datetime':
191
+ case 'timestamp':
192
+ const date = new Date();
193
+ date.setDate(date.getDate() + index);
194
+ return date;
195
+ case 'json':
196
+ case 'jsonb':
197
+ return { sample: true, index: index + 1 };
198
+ case 'array':
199
+ return [`item${index + 1}`, `value${index + 1}`];
200
+ case 'uuid':
201
+ return null; // Let database generate
202
+ default:
203
+ return null;
204
+ }
205
+ }
206
+ /**
207
+ * Print seed summary
208
+ */
209
+ printSummary(results) {
210
+ console.log('\n' + '='.repeat(60));
211
+ console.log('SEED SUMMARY');
212
+ console.log('='.repeat(60));
213
+ let totalCreated = 0;
214
+ let totalSkipped = 0;
215
+ let totalErrors = 0;
216
+ for (const result of results) {
217
+ console.log(`\n${result.collection}:`);
218
+ console.log(` Created: ${result.created}`);
219
+ console.log(` Skipped: ${result.skipped}`);
220
+ console.log(` Errors: ${result.errors}`);
221
+ if (result.errorDetails.length > 0) {
222
+ console.log(` Error Details:`);
223
+ for (const detail of result.errorDetails.slice(0, 3)) {
224
+ console.log(` - ${detail.error}`);
225
+ }
226
+ if (result.errorDetails.length > 3) {
227
+ console.log(` ... and ${result.errorDetails.length - 3} more`);
228
+ }
229
+ }
230
+ totalCreated += result.created;
231
+ totalSkipped += result.skipped;
232
+ totalErrors += result.errors;
233
+ }
234
+ console.log('\n' + '-'.repeat(60));
235
+ console.log(`TOTALS:`);
236
+ console.log(` Collections: ${results.length}`);
237
+ console.log(` Created: ${totalCreated}`);
238
+ console.log(` Skipped: ${totalSkipped}`);
239
+ console.log(` Errors: ${totalErrors}`);
240
+ console.log('='.repeat(60) + '\n');
241
+ }
242
+ }
243
+ // Export singleton instance
244
+ const seedUtility = new SeedUtility();
245
+ export default seedUtility;
246
+ // Export convenience functions
247
+ export const { seedCollection, seedMultiple, generateTemplate, printSummary, } = seedUtility;
248
+ //# sourceMappingURL=seed.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"seed.js","sourceRoot":"","sources":["../../baasix/utils/seed.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Clean up expired sessions from the database
3
+ */
4
+ declare function cleanupSessions(): Promise<number>;
5
+ /**
6
+ * Start periodic cleanup of expired sessions
7
+ */
8
+ export declare function startSessionCleanup(): void;
9
+ export default cleanupSessions;
10
+ //# sourceMappingURL=sessionCleanup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sessionCleanup.d.ts","sourceRoot":"","sources":["../../baasix/utils/sessionCleanup.ts"],"names":[],"mappings":"AAIA;;GAEG;AACH,iBAAe,eAAe,IAAI,OAAO,CAAC,MAAM,CAAC,CAgChD;AAED;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,IAAI,CAY1C;AAED,eAAe,eAAe,CAAC"}
@@ -0,0 +1,49 @@
1
+ import { db } from './db.js';
2
+ import { schemaManager } from './schemaManager.js';
3
+ import { lt } from 'drizzle-orm';
4
+ /**
5
+ * Clean up expired sessions from the database
6
+ */
7
+ async function cleanupSessions() {
8
+ try {
9
+ const sessionsTable = schemaManager.getTable('baasix_Sessions');
10
+ if (!sessionsTable) {
11
+ console.warn('baasix_Sessions table not found, skipping session cleanup');
12
+ return 0;
13
+ }
14
+ // Delete sessions where expiresAt is less than current time
15
+ const expiresAtColumn = sessionsTable['expiresAt'];
16
+ if (!expiresAtColumn) {
17
+ console.warn('expiresAt column not found in baasix_Sessions, skipping cleanup');
18
+ return 0;
19
+ }
20
+ const result = await db
21
+ .delete(sessionsTable)
22
+ .where(lt(expiresAtColumn, new Date()));
23
+ const deletedCount = result.rowCount || 0;
24
+ if (deletedCount > 0) {
25
+ console.info(`Session cleanup: removed ${deletedCount} expired session(s)`);
26
+ }
27
+ return deletedCount;
28
+ }
29
+ catch (error) {
30
+ console.error('Error during session cleanup:', error.message);
31
+ return 0;
32
+ }
33
+ }
34
+ /**
35
+ * Start periodic cleanup of expired sessions
36
+ */
37
+ export function startSessionCleanup() {
38
+ console.info('Session cleanup service started');
39
+ // Run initial cleanup after a short delay (to ensure tables are ready)
40
+ setTimeout(() => {
41
+ cleanupSessions();
42
+ }, 5000);
43
+ // Clean up every hour
44
+ setInterval(async () => {
45
+ await cleanupSessions();
46
+ }, 3600000); // Every hour
47
+ }
48
+ export default cleanupSessions;
49
+ //# sourceMappingURL=sessionCleanup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sessionCleanup.js","sourceRoot":"","sources":["../../baasix/utils/sessionCleanup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,SAAS,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC;AAEjC;;GAEG;AACH,KAAK,UAAU,eAAe;IAC5B,IAAI,CAAC;QACH,MAAM,aAAa,GAAG,aAAa,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC;QAEhE,IAAI,CAAC,aAAa,EAAE,CAAC;YACnB,OAAO,CAAC,IAAI,CAAC,2DAA2D,CAAC,CAAC;YAC1E,OAAO,CAAC,CAAC;QACX,CAAC;QAED,4DAA4D;QAC5D,MAAM,eAAe,GAAG,aAAa,CAAC,WAAW,CAAC,CAAC;QAEnD,IAAI,CAAC,eAAe,EAAE,CAAC;YACrB,OAAO,CAAC,IAAI,CAAC,iEAAiE,CAAC,CAAC;YAChF,OAAO,CAAC,CAAC;QACX,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,EAAE;aACpB,MAAM,CAAC,aAAa,CAAC;aACrB,KAAK,CAAC,EAAE,CAAC,eAAe,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC;QAE1C,MAAM,YAAY,GAAI,MAAc,CAAC,QAAQ,IAAI,CAAC,CAAC;QAEnD,IAAI,YAAY,GAAG,CAAC,EAAE,CAAC;YACrB,OAAO,CAAC,IAAI,CAAC,4BAA4B,YAAY,qBAAqB,CAAC,CAAC;QAC9E,CAAC;QAED,OAAO,YAAY,CAAC;IACtB,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,OAAO,CAAC,KAAK,CAAC,+BAA+B,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;QAC9D,OAAO,CAAC,CAAC;IACX,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,mBAAmB;IACjC,OAAO,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;IAEhD,uEAAuE;IACvE,UAAU,CAAC,GAAG,EAAE;QACd,eAAe,EAAE,CAAC;IACpB,CAAC,EAAE,IAAI,CAAC,CAAC;IAET,sBAAsB;IACtB,WAAW,CAAC,KAAK,IAAI,EAAE;QACrB,MAAM,eAAe,EAAE,CAAC;IAC1B,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,aAAa;AAC5B,CAAC;AAED,eAAe,eAAe,CAAC"}
@@ -0,0 +1,117 @@
1
+ /**
2
+ * Sort Utilities
3
+ *
4
+ * Provides functions for sorting items within collections.
5
+ * Can be used by routes and extensions.
6
+ */
7
+ export interface SortOptions {
8
+ /**
9
+ * Collection name
10
+ */
11
+ collection: string;
12
+ /**
13
+ * ID of the item to move
14
+ */
15
+ item: string | number;
16
+ /**
17
+ * ID of the target item to move before/after
18
+ */
19
+ to: string | number;
20
+ /**
21
+ * Position mode: 'before' places item before target, 'after' places item after target
22
+ * @default 'before'
23
+ */
24
+ mode?: 'before' | 'after';
25
+ /**
26
+ * Accountability object from request (for permission checks)
27
+ * If not provided, bypassPermissions must be true
28
+ */
29
+ accountability?: {
30
+ user?: any;
31
+ role?: any;
32
+ roles?: string[];
33
+ permissions?: any[];
34
+ tenant?: string | null;
35
+ };
36
+ /**
37
+ * Whether to skip permission checks (for internal use)
38
+ * @default false
39
+ */
40
+ bypassPermissions?: boolean;
41
+ /**
42
+ * Database transaction to use
43
+ */
44
+ transaction?: any;
45
+ }
46
+ export interface SortResult {
47
+ item: string | number;
48
+ collection: string;
49
+ newSort: number;
50
+ }
51
+ /**
52
+ * Sort an item within a collection by moving it before another item.
53
+ * This updates the sort field of the target item and all items after it.
54
+ *
55
+ * @example
56
+ * ```typescript
57
+ * import { sortItems } from '@baasix/utils';
58
+ *
59
+ * // Move item 'abc' before item 'xyz' in the 'tasks' collection
60
+ * const result = await sortItems({
61
+ * collection: 'tasks',
62
+ * item: 'abc',
63
+ * to: 'xyz',
64
+ * accountability: req.accountability, // Pass accountability for permission checks
65
+ * });
66
+ *
67
+ * // Or bypass permissions for internal operations
68
+ * const result = await sortItems({
69
+ * collection: 'tasks',
70
+ * item: 'abc',
71
+ * to: 'xyz',
72
+ * bypassPermissions: true,
73
+ * });
74
+ * ```
75
+ */
76
+ export declare function sortItems(options: SortOptions): Promise<SortResult>;
77
+ /**
78
+ * Reorder items in a collection by setting their sort values in order.
79
+ * Useful for bulk reordering operations.
80
+ *
81
+ * @example
82
+ * ```typescript
83
+ * import { reorderItems } from '@baasix/utils';
84
+ *
85
+ * // Reorder items in the specified order
86
+ * await reorderItems({
87
+ * collection: 'tasks',
88
+ * items: ['id1', 'id2', 'id3'], // Items will be sorted in this order
89
+ * });
90
+ * ```
91
+ */
92
+ export declare function reorderItems(options: {
93
+ collection: string;
94
+ items: (string | number)[];
95
+ startSort?: number;
96
+ transaction?: any;
97
+ }): Promise<void>;
98
+ /**
99
+ * Get the next available sort value for a collection.
100
+ * Useful when adding new items to the end of a sorted list.
101
+ *
102
+ * @example
103
+ * ```typescript
104
+ * import { getNextSortValue } from '@baasix/utils';
105
+ *
106
+ * const nextSort = await getNextSortValue('tasks');
107
+ * // Use nextSort when creating a new item
108
+ * ```
109
+ */
110
+ export declare function getNextSortValue(collection: string, transaction?: any): Promise<number>;
111
+ declare const _default: {
112
+ sortItems: typeof sortItems;
113
+ reorderItems: typeof reorderItems;
114
+ getNextSortValue: typeof getNextSortValue;
115
+ };
116
+ export default _default;
117
+ //# sourceMappingURL=sortUtils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sortUtils.d.ts","sourceRoot":"","sources":["../../baasix/utils/sortUtils.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAUH,MAAM,WAAW,WAAW;IAC1B;;OAEG;IACH,UAAU,EAAE,MAAM,CAAC;IACnB;;OAEG;IACH,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;IACtB;;OAEG;IACH,EAAE,EAAE,MAAM,GAAG,MAAM,CAAC;IACpB;;;OAGG;IACH,IAAI,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC;IAC1B;;;OAGG;IACH,cAAc,CAAC,EAAE;QACf,IAAI,CAAC,EAAE,GAAG,CAAC;QACX,IAAI,CAAC,EAAE,GAAG,CAAC;QACX,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;QACjB,WAAW,CAAC,EAAE,GAAG,EAAE,CAAC;QACpB,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;KACxB,CAAC;IACF;;;OAGG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B;;OAEG;IACH,WAAW,CAAC,EAAE,GAAG,CAAC;CACnB;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAsB,SAAS,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC,CAsIzE;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,YAAY,CAAC,OAAO,EAAE;IAC1C,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,GAAG,CAAC;CACnB,GAAG,OAAO,CAAC,IAAI,CAAC,CAqChB;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,gBAAgB,CAAC,UAAU,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC,CAyB7F;;;;;;AAED,wBAIE"}
@@ -0,0 +1,232 @@
1
+ /**
2
+ * Sort Utilities
3
+ *
4
+ * Provides functions for sorting items within collections.
5
+ * Can be used by routes and extensions.
6
+ */
7
+ import { schemaManager } from "./schemaManager.js";
8
+ import { db as dbInstance } from "./db.js";
9
+ import { eq, sql } from "drizzle-orm";
10
+ import { APIError } from "./errorHandler.js";
11
+ import { invalidateCollection } from "../services/CacheService.js";
12
+ import { isAdmin } from "./auth.js";
13
+ import permissionService from "../services/PermissionService.js";
14
+ /**
15
+ * Sort an item within a collection by moving it before another item.
16
+ * This updates the sort field of the target item and all items after it.
17
+ *
18
+ * @example
19
+ * ```typescript
20
+ * import { sortItems } from '@baasix/utils';
21
+ *
22
+ * // Move item 'abc' before item 'xyz' in the 'tasks' collection
23
+ * const result = await sortItems({
24
+ * collection: 'tasks',
25
+ * item: 'abc',
26
+ * to: 'xyz',
27
+ * accountability: req.accountability, // Pass accountability for permission checks
28
+ * });
29
+ *
30
+ * // Or bypass permissions for internal operations
31
+ * const result = await sortItems({
32
+ * collection: 'tasks',
33
+ * item: 'abc',
34
+ * to: 'xyz',
35
+ * bypassPermissions: true,
36
+ * });
37
+ * ```
38
+ */
39
+ export async function sortItems(options) {
40
+ const { collection, item, to, accountability, bypassPermissions = false, transaction, mode = 'before' } = options;
41
+ const db = transaction || dbInstance;
42
+ // Validate inputs
43
+ if (!item) {
44
+ throw new APIError("Missing item ID to sort", 400);
45
+ }
46
+ if (!to) {
47
+ throw new APIError("Missing target ID to sort to", 400);
48
+ }
49
+ // Check if the collection exists
50
+ let schemaInfo;
51
+ try {
52
+ schemaInfo = schemaManager.getSchema(collection);
53
+ if (!schemaInfo) {
54
+ throw new APIError(`Collection '${collection}' does not exist`, 404);
55
+ }
56
+ }
57
+ catch (error) {
58
+ throw new APIError(`Collection '${collection}' does not exist`, 404);
59
+ }
60
+ // Permission checks (unless bypassed)
61
+ if (!bypassPermissions) {
62
+ if (!accountability) {
63
+ throw new APIError("Accountability is required for permission checks. Use bypassPermissions: true for internal operations.", 400);
64
+ }
65
+ // Check if user is admin
66
+ const userIsAdmin = isAdmin({ accountability });
67
+ if (!userIsAdmin) {
68
+ // Check if user is authenticated (not public role)
69
+ const roleName = typeof accountability.role === 'object'
70
+ ? accountability.role?.name
71
+ : accountability.role;
72
+ if (!accountability.user || roleName === 'public') {
73
+ throw new APIError("Authentication required", 401);
74
+ }
75
+ // Check if user has sort permission for this collection
76
+ const role = accountability.role;
77
+ const roleId = typeof role === 'object' ? role.id : role;
78
+ const hasAccess = await permissionService.canAccess(roleId, collection, "update", ["sort"]);
79
+ if (!hasAccess) {
80
+ throw new APIError(`You don't have permission to sort items in '${collection}'`, 403);
81
+ }
82
+ }
83
+ }
84
+ // Get the table
85
+ const table = schemaManager.getTable(collection);
86
+ const primaryKeyField = schemaManager.getPrimaryKey(collection);
87
+ // Check if the table has a sort field
88
+ if (!table || !table.sort) {
89
+ throw new APIError(`Collection '${collection}' does not have a sort field`, 400);
90
+ }
91
+ // Find the item to move and the target item
92
+ const itemToMove = await db
93
+ .select()
94
+ .from(table)
95
+ .where(eq(table[primaryKeyField], item))
96
+ .limit(1);
97
+ const targetItem = await db
98
+ .select()
99
+ .from(table)
100
+ .where(eq(table[primaryKeyField], to))
101
+ .limit(1);
102
+ if (!itemToMove || itemToMove.length === 0) {
103
+ throw new APIError(`Item with ID ${item} not found`, 404);
104
+ }
105
+ if (!targetItem || targetItem.length === 0) {
106
+ throw new APIError(`Target item with ID ${to} not found`, 404);
107
+ }
108
+ // Get the current sort value of the target item
109
+ const targetSort = targetItem[0].sort || 0;
110
+ // Calculate the new sort value based on mode
111
+ let newSortValue;
112
+ if (mode === 'after') {
113
+ // Place after target: newSort = targetSort + 1, shift items >= newSort
114
+ newSortValue = targetSort + 1;
115
+ // Update all items with sort value >= newSortValue (increment by 1)
116
+ await db.execute(sql `
117
+ UPDATE "${sql.raw(collection)}"
118
+ SET "sort" = "sort" + 1
119
+ WHERE "sort" >= ${newSortValue}
120
+ AND "${sql.raw(primaryKeyField)}" != ${item}
121
+ `);
122
+ }
123
+ else {
124
+ // Place before target (default): newSort = targetSort, shift items >= targetSort
125
+ newSortValue = targetSort;
126
+ // Update all items with sort value >= targetSort (increment by 1)
127
+ await db.execute(sql `
128
+ UPDATE "${sql.raw(collection)}"
129
+ SET "sort" = "sort" + 1
130
+ WHERE "sort" >= ${targetSort}
131
+ AND "${sql.raw(primaryKeyField)}" != ${item}
132
+ `);
133
+ }
134
+ // Update the sort value of the item we're moving
135
+ await db.execute(sql `
136
+ UPDATE "${sql.raw(collection)}"
137
+ SET "sort" = ${newSortValue}
138
+ WHERE "${sql.raw(primaryKeyField)}" = ${item}
139
+ `);
140
+ // Invalidate collection cache after sort changes
141
+ await invalidateCollection(collection);
142
+ return {
143
+ item,
144
+ collection,
145
+ newSort: newSortValue,
146
+ };
147
+ }
148
+ /**
149
+ * Reorder items in a collection by setting their sort values in order.
150
+ * Useful for bulk reordering operations.
151
+ *
152
+ * @example
153
+ * ```typescript
154
+ * import { reorderItems } from '@baasix/utils';
155
+ *
156
+ * // Reorder items in the specified order
157
+ * await reorderItems({
158
+ * collection: 'tasks',
159
+ * items: ['id1', 'id2', 'id3'], // Items will be sorted in this order
160
+ * });
161
+ * ```
162
+ */
163
+ export async function reorderItems(options) {
164
+ const { collection, items, startSort = 1, transaction } = options;
165
+ const db = transaction || dbInstance;
166
+ if (!items || items.length === 0) {
167
+ throw new APIError("Missing items array to reorder", 400);
168
+ }
169
+ // Check if the collection exists
170
+ const schemaInfo = schemaManager.getSchema(collection);
171
+ if (!schemaInfo) {
172
+ throw new APIError(`Collection '${collection}' does not exist`, 404);
173
+ }
174
+ // Get the table
175
+ const table = schemaManager.getTable(collection);
176
+ const primaryKeyField = schemaManager.getPrimaryKey(collection);
177
+ // Check if the table has a sort field
178
+ if (!table || !table.sort) {
179
+ throw new APIError(`Collection '${collection}' does not have a sort field`, 400);
180
+ }
181
+ // Update each item's sort value
182
+ for (let i = 0; i < items.length; i++) {
183
+ const itemId = items[i];
184
+ const sortValue = startSort + i;
185
+ await db.execute(sql `
186
+ UPDATE "${sql.raw(collection)}"
187
+ SET "sort" = ${sortValue}
188
+ WHERE "${sql.raw(primaryKeyField)}" = ${itemId}
189
+ `);
190
+ }
191
+ // Invalidate collection cache after sort changes
192
+ await invalidateCollection(collection);
193
+ }
194
+ /**
195
+ * Get the next available sort value for a collection.
196
+ * Useful when adding new items to the end of a sorted list.
197
+ *
198
+ * @example
199
+ * ```typescript
200
+ * import { getNextSortValue } from '@baasix/utils';
201
+ *
202
+ * const nextSort = await getNextSortValue('tasks');
203
+ * // Use nextSort when creating a new item
204
+ * ```
205
+ */
206
+ export async function getNextSortValue(collection, transaction) {
207
+ const db = transaction || dbInstance;
208
+ // Check if the collection exists
209
+ const schemaInfo = schemaManager.getSchema(collection);
210
+ if (!schemaInfo) {
211
+ throw new APIError(`Collection '${collection}' does not exist`, 404);
212
+ }
213
+ // Get the table
214
+ const table = schemaManager.getTable(collection);
215
+ // Check if the table has a sort field
216
+ if (!table || !table.sort) {
217
+ throw new APIError(`Collection '${collection}' does not have a sort field`, 400);
218
+ }
219
+ // Get the maximum sort value
220
+ const result = await db.execute(sql `
221
+ SELECT COALESCE(MAX("sort"), 0) + 1 as next_sort
222
+ FROM "${sql.raw(collection)}"
223
+ `);
224
+ const rows = result.rows || result;
225
+ return rows[0]?.next_sort || 1;
226
+ }
227
+ export default {
228
+ sortItems,
229
+ reorderItems,
230
+ getNextSortValue,
231
+ };
232
+ //# sourceMappingURL=sortUtils.js.map