@loadspark/core 0.0.1

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 (445) hide show
  1. package/LICENSE.md +71 -0
  2. package/README.md +628 -0
  3. package/dist/access/accessors.d.ts +22 -0
  4. package/dist/access/accessors.d.ts.map +1 -0
  5. package/dist/access/accessors.js +20 -0
  6. package/dist/access/accessors.js.map +1 -0
  7. package/dist/access/builders.d.ts +4 -0
  8. package/dist/access/builders.d.ts.map +1 -0
  9. package/dist/access/builders.js +26 -0
  10. package/dist/access/builders.js.map +1 -0
  11. package/dist/access/index.d.ts +4 -0
  12. package/dist/access/index.d.ts.map +1 -0
  13. package/dist/access/index.js +5 -0
  14. package/dist/access/index.js.map +1 -0
  15. package/dist/access/roles.d.ts +38 -0
  16. package/dist/access/roles.d.ts.map +1 -0
  17. package/dist/access/roles.js +33 -0
  18. package/dist/access/roles.js.map +1 -0
  19. package/dist/collections/users/access.d.ts +30 -0
  20. package/dist/collections/users/access.d.ts.map +1 -0
  21. package/dist/collections/users/access.js +96 -0
  22. package/dist/collections/users/access.js.map +1 -0
  23. package/dist/collections/users/config.d.ts +9 -0
  24. package/dist/collections/users/config.d.ts.map +1 -0
  25. package/dist/collections/users/config.js +55 -0
  26. package/dist/collections/users/config.js.map +1 -0
  27. package/dist/collections/users/fields.d.ts +4 -0
  28. package/dist/collections/users/fields.d.ts.map +1 -0
  29. package/dist/collections/users/fields.js +97 -0
  30. package/dist/collections/users/fields.js.map +1 -0
  31. package/dist/collections/users/hooks.d.ts +25 -0
  32. package/dist/collections/users/hooks.d.ts.map +1 -0
  33. package/dist/collections/users/hooks.js +50 -0
  34. package/dist/collections/users/hooks.js.map +1 -0
  35. package/dist/collections/users/types.d.ts +18 -0
  36. package/dist/collections/users/types.d.ts.map +1 -0
  37. package/dist/collections/users/types.js +8 -0
  38. package/dist/collections/users/types.js.map +1 -0
  39. package/dist/constants.d.ts +45 -0
  40. package/dist/constants.d.ts.map +1 -0
  41. package/dist/constants.js +46 -0
  42. package/dist/constants.js.map +1 -0
  43. package/dist/exports/access/index.d.ts +2 -0
  44. package/dist/exports/access/index.d.ts.map +1 -0
  45. package/dist/exports/access/index.js +3 -0
  46. package/dist/exports/access/index.js.map +1 -0
  47. package/dist/exports/fields/AlertBox/client.d.ts +2 -0
  48. package/dist/exports/fields/AlertBox/client.d.ts.map +1 -0
  49. package/dist/exports/fields/AlertBox/client.js +3 -0
  50. package/dist/exports/fields/AlertBox/client.js.map +1 -0
  51. package/dist/exports/fields/AlertBox/index.d.ts +2 -0
  52. package/dist/exports/fields/AlertBox/index.d.ts.map +1 -0
  53. package/dist/exports/fields/AlertBox/index.js +3 -0
  54. package/dist/exports/fields/AlertBox/index.js.map +1 -0
  55. package/dist/exports/fields/ColourText/client.d.ts +2 -0
  56. package/dist/exports/fields/ColourText/client.d.ts.map +1 -0
  57. package/dist/exports/fields/ColourText/client.js +3 -0
  58. package/dist/exports/fields/ColourText/client.js.map +1 -0
  59. package/dist/exports/fields/ColourText/index.d.ts +2 -0
  60. package/dist/exports/fields/ColourText/index.d.ts.map +1 -0
  61. package/dist/exports/fields/ColourText/index.js +3 -0
  62. package/dist/exports/fields/ColourText/index.js.map +1 -0
  63. package/dist/exports/fields/Combo/client.d.ts +2 -0
  64. package/dist/exports/fields/Combo/client.d.ts.map +1 -0
  65. package/dist/exports/fields/Combo/client.js +3 -0
  66. package/dist/exports/fields/Combo/client.js.map +1 -0
  67. package/dist/exports/fields/Combo/index.d.ts +2 -0
  68. package/dist/exports/fields/Combo/index.d.ts.map +1 -0
  69. package/dist/exports/fields/Combo/index.js +3 -0
  70. package/dist/exports/fields/Combo/index.js.map +1 -0
  71. package/dist/exports/fields/Countries/index.d.ts +2 -0
  72. package/dist/exports/fields/Countries/index.d.ts.map +1 -0
  73. package/dist/exports/fields/Countries/index.js +3 -0
  74. package/dist/exports/fields/Countries/index.js.map +1 -0
  75. package/dist/exports/fields/Number/client.d.ts +2 -0
  76. package/dist/exports/fields/Number/client.d.ts.map +1 -0
  77. package/dist/exports/fields/Number/client.js +3 -0
  78. package/dist/exports/fields/Number/client.js.map +1 -0
  79. package/dist/exports/fields/Number/index.d.ts +2 -0
  80. package/dist/exports/fields/Number/index.d.ts.map +1 -0
  81. package/dist/exports/fields/Number/index.js +3 -0
  82. package/dist/exports/fields/Number/index.js.map +1 -0
  83. package/dist/exports/fields/OpeningHours/client.d.ts +2 -0
  84. package/dist/exports/fields/OpeningHours/client.d.ts.map +1 -0
  85. package/dist/exports/fields/OpeningHours/client.js +3 -0
  86. package/dist/exports/fields/OpeningHours/client.js.map +1 -0
  87. package/dist/exports/fields/OpeningHours/index.d.ts +2 -0
  88. package/dist/exports/fields/OpeningHours/index.d.ts.map +1 -0
  89. package/dist/exports/fields/OpeningHours/index.js +3 -0
  90. package/dist/exports/fields/OpeningHours/index.js.map +1 -0
  91. package/dist/exports/fields/Pattern/client.d.ts +2 -0
  92. package/dist/exports/fields/Pattern/client.d.ts.map +1 -0
  93. package/dist/exports/fields/Pattern/client.js +3 -0
  94. package/dist/exports/fields/Pattern/client.js.map +1 -0
  95. package/dist/exports/fields/Pattern/index.d.ts +2 -0
  96. package/dist/exports/fields/Pattern/index.d.ts.map +1 -0
  97. package/dist/exports/fields/Pattern/index.js +3 -0
  98. package/dist/exports/fields/Pattern/index.js.map +1 -0
  99. package/dist/exports/fields/Range/client.d.ts +2 -0
  100. package/dist/exports/fields/Range/client.d.ts.map +1 -0
  101. package/dist/exports/fields/Range/client.js +3 -0
  102. package/dist/exports/fields/Range/client.js.map +1 -0
  103. package/dist/exports/fields/Range/index.d.ts +2 -0
  104. package/dist/exports/fields/Range/index.d.ts.map +1 -0
  105. package/dist/exports/fields/Range/index.js +3 -0
  106. package/dist/exports/fields/Range/index.js.map +1 -0
  107. package/dist/exports/fields/Telephone/client.d.ts +2 -0
  108. package/dist/exports/fields/Telephone/client.d.ts.map +1 -0
  109. package/dist/exports/fields/Telephone/client.js +3 -0
  110. package/dist/exports/fields/Telephone/client.js.map +1 -0
  111. package/dist/exports/fields/Telephone/index.d.ts +2 -0
  112. package/dist/exports/fields/Telephone/index.d.ts.map +1 -0
  113. package/dist/exports/fields/Telephone/index.js +3 -0
  114. package/dist/exports/fields/Telephone/index.js.map +1 -0
  115. package/dist/exports/fields/client.d.ts +2 -0
  116. package/dist/exports/fields/client.d.ts.map +1 -0
  117. package/dist/exports/fields/client.js +2 -0
  118. package/dist/exports/fields/client.js.map +1 -0
  119. package/dist/exports/fields/index.d.ts +10 -0
  120. package/dist/exports/fields/index.d.ts.map +1 -0
  121. package/dist/exports/fields/index.js +11 -0
  122. package/dist/exports/fields/index.js.map +1 -0
  123. package/dist/exports/translations/index.d.ts +2 -0
  124. package/dist/exports/translations/index.d.ts.map +1 -0
  125. package/dist/exports/translations/index.js +3 -0
  126. package/dist/exports/translations/index.js.map +1 -0
  127. package/dist/exports/users/index.d.ts +4 -0
  128. package/dist/exports/users/index.d.ts.map +1 -0
  129. package/dist/exports/users/index.js +5 -0
  130. package/dist/exports/users/index.js.map +1 -0
  131. package/dist/exports/validations/index.d.ts +4 -0
  132. package/dist/exports/validations/index.d.ts.map +1 -0
  133. package/dist/exports/validations/index.js +5 -0
  134. package/dist/exports/validations/index.js.map +1 -0
  135. package/dist/fields/AlertBox/Component.d.ts +14 -0
  136. package/dist/fields/AlertBox/Component.d.ts.map +1 -0
  137. package/dist/fields/AlertBox/Component.js +32 -0
  138. package/dist/fields/AlertBox/Component.js.map +1 -0
  139. package/dist/fields/AlertBox/icons/AlertIcon.d.ts +3 -0
  140. package/dist/fields/AlertBox/icons/AlertIcon.d.ts.map +1 -0
  141. package/dist/fields/AlertBox/icons/AlertIcon.js +27 -0
  142. package/dist/fields/AlertBox/icons/AlertIcon.js.map +1 -0
  143. package/dist/fields/AlertBox/icons/ErrorIcon.d.ts +3 -0
  144. package/dist/fields/AlertBox/icons/ErrorIcon.d.ts.map +1 -0
  145. package/dist/fields/AlertBox/icons/ErrorIcon.js +35 -0
  146. package/dist/fields/AlertBox/icons/ErrorIcon.js.map +1 -0
  147. package/dist/fields/AlertBox/icons/InfoIcon.d.ts +3 -0
  148. package/dist/fields/AlertBox/icons/InfoIcon.d.ts.map +1 -0
  149. package/dist/fields/AlertBox/icons/InfoIcon.js +29 -0
  150. package/dist/fields/AlertBox/icons/InfoIcon.js.map +1 -0
  151. package/dist/fields/AlertBox/index.d.ts +76 -0
  152. package/dist/fields/AlertBox/index.d.ts.map +1 -0
  153. package/dist/fields/AlertBox/index.js +64 -0
  154. package/dist/fields/AlertBox/index.js.map +1 -0
  155. package/dist/fields/AlertBox/styles.css +42 -0
  156. package/dist/fields/ColourText/Component.d.ts +8 -0
  157. package/dist/fields/ColourText/Component.d.ts.map +1 -0
  158. package/dist/fields/ColourText/Component.js +102 -0
  159. package/dist/fields/ColourText/Component.js.map +1 -0
  160. package/dist/fields/ColourText/index.d.ts +35 -0
  161. package/dist/fields/ColourText/index.d.ts.map +1 -0
  162. package/dist/fields/ColourText/index.js +41 -0
  163. package/dist/fields/ColourText/index.js.map +1 -0
  164. package/dist/fields/ColourText/styles.css +21 -0
  165. package/dist/fields/ColourText/validate.d.ts +3 -0
  166. package/dist/fields/ColourText/validate.d.ts.map +1 -0
  167. package/dist/fields/ColourText/validate.js +30 -0
  168. package/dist/fields/ColourText/validate.js.map +1 -0
  169. package/dist/fields/Combo/Component.d.ts +16 -0
  170. package/dist/fields/Combo/Component.d.ts.map +1 -0
  171. package/dist/fields/Combo/Component.js +105 -0
  172. package/dist/fields/Combo/Component.js.map +1 -0
  173. package/dist/fields/Combo/beforeValidate.d.ts +4 -0
  174. package/dist/fields/Combo/beforeValidate.d.ts.map +1 -0
  175. package/dist/fields/Combo/beforeValidate.js +30 -0
  176. package/dist/fields/Combo/beforeValidate.js.map +1 -0
  177. package/dist/fields/Combo/index.d.ts +58 -0
  178. package/dist/fields/Combo/index.d.ts.map +1 -0
  179. package/dist/fields/Combo/index.js +74 -0
  180. package/dist/fields/Combo/index.js.map +1 -0
  181. package/dist/fields/Countries/index.d.ts +49 -0
  182. package/dist/fields/Countries/index.d.ts.map +1 -0
  183. package/dist/fields/Countries/index.js +59 -0
  184. package/dist/fields/Countries/index.js.map +1 -0
  185. package/dist/fields/Number/Component.d.ts +14 -0
  186. package/dist/fields/Number/Component.d.ts.map +1 -0
  187. package/dist/fields/Number/Component.js +108 -0
  188. package/dist/fields/Number/Component.js.map +1 -0
  189. package/dist/fields/Number/index.d.ts +64 -0
  190. package/dist/fields/Number/index.d.ts.map +1 -0
  191. package/dist/fields/Number/index.js +66 -0
  192. package/dist/fields/Number/index.js.map +1 -0
  193. package/dist/fields/Number/styles.css +0 -0
  194. package/dist/fields/OpeningHours/Component.d.ts +7 -0
  195. package/dist/fields/OpeningHours/Component.d.ts.map +1 -0
  196. package/dist/fields/OpeningHours/Component.js +161 -0
  197. package/dist/fields/OpeningHours/Component.js.map +1 -0
  198. package/dist/fields/OpeningHours/index.d.ts +51 -0
  199. package/dist/fields/OpeningHours/index.d.ts.map +1 -0
  200. package/dist/fields/OpeningHours/index.js +49 -0
  201. package/dist/fields/OpeningHours/index.js.map +1 -0
  202. package/dist/fields/OpeningHours/styles.css +124 -0
  203. package/dist/fields/OpeningHours/validate.d.ts +3 -0
  204. package/dist/fields/OpeningHours/validate.d.ts.map +1 -0
  205. package/dist/fields/OpeningHours/validate.js +39 -0
  206. package/dist/fields/OpeningHours/validate.js.map +1 -0
  207. package/dist/fields/Pattern/Component.d.ts +14 -0
  208. package/dist/fields/Pattern/Component.d.ts.map +1 -0
  209. package/dist/fields/Pattern/Component.js +88 -0
  210. package/dist/fields/Pattern/Component.js.map +1 -0
  211. package/dist/fields/Pattern/index.d.ts +59 -0
  212. package/dist/fields/Pattern/index.d.ts.map +1 -0
  213. package/dist/fields/Pattern/index.js +55 -0
  214. package/dist/fields/Pattern/index.js.map +1 -0
  215. package/dist/fields/Pattern/styles.css +34 -0
  216. package/dist/fields/Range/Component.d.ts +13 -0
  217. package/dist/fields/Range/Component.d.ts.map +1 -0
  218. package/dist/fields/Range/Component.js +138 -0
  219. package/dist/fields/Range/Component.js.map +1 -0
  220. package/dist/fields/Range/index.d.ts +82 -0
  221. package/dist/fields/Range/index.d.ts.map +1 -0
  222. package/dist/fields/Range/index.js +63 -0
  223. package/dist/fields/Range/index.js.map +1 -0
  224. package/dist/fields/Range/range.scss +138 -0
  225. package/dist/fields/Range/types.d.ts +5 -0
  226. package/dist/fields/Range/types.d.ts.map +1 -0
  227. package/dist/fields/Range/types.js +3 -0
  228. package/dist/fields/Range/types.js.map +1 -0
  229. package/dist/fields/Telephone/Component.d.ts +13 -0
  230. package/dist/fields/Telephone/Component.d.ts.map +1 -0
  231. package/dist/fields/Telephone/Component.js +92 -0
  232. package/dist/fields/Telephone/Component.js.map +1 -0
  233. package/dist/fields/Telephone/index.d.ts +99 -0
  234. package/dist/fields/Telephone/index.d.ts.map +1 -0
  235. package/dist/fields/Telephone/index.js +59 -0
  236. package/dist/fields/Telephone/index.js.map +1 -0
  237. package/dist/fields/Telephone/validate.d.ts +3 -0
  238. package/dist/fields/Telephone/validate.d.ts.map +1 -0
  239. package/dist/fields/Telephone/validate.js +13 -0
  240. package/dist/fields/Telephone/validate.js.map +1 -0
  241. package/dist/index.d.ts +10 -0
  242. package/dist/index.d.ts.map +1 -0
  243. package/dist/index.js +35 -0
  244. package/dist/index.js.map +1 -0
  245. package/dist/translations/index.d.ts +6 -0
  246. package/dist/translations/index.d.ts.map +1 -0
  247. package/dist/translations/index.js +92 -0
  248. package/dist/translations/index.js.map +1 -0
  249. package/dist/translations/languages/ar.d.ts +576 -0
  250. package/dist/translations/languages/ar.d.ts.map +1 -0
  251. package/dist/translations/languages/ar.js +329 -0
  252. package/dist/translations/languages/ar.js.map +1 -0
  253. package/dist/translations/languages/az.d.ts +576 -0
  254. package/dist/translations/languages/az.d.ts.map +1 -0
  255. package/dist/translations/languages/az.js +329 -0
  256. package/dist/translations/languages/az.js.map +1 -0
  257. package/dist/translations/languages/bg.d.ts +576 -0
  258. package/dist/translations/languages/bg.d.ts.map +1 -0
  259. package/dist/translations/languages/bg.js +329 -0
  260. package/dist/translations/languages/bg.js.map +1 -0
  261. package/dist/translations/languages/bnBd.d.ts +576 -0
  262. package/dist/translations/languages/bnBd.d.ts.map +1 -0
  263. package/dist/translations/languages/bnBd.js +329 -0
  264. package/dist/translations/languages/bnBd.js.map +1 -0
  265. package/dist/translations/languages/bnIn.d.ts +576 -0
  266. package/dist/translations/languages/bnIn.d.ts.map +1 -0
  267. package/dist/translations/languages/bnIn.js +329 -0
  268. package/dist/translations/languages/bnIn.js.map +1 -0
  269. package/dist/translations/languages/ca.d.ts +576 -0
  270. package/dist/translations/languages/ca.d.ts.map +1 -0
  271. package/dist/translations/languages/ca.js +329 -0
  272. package/dist/translations/languages/ca.js.map +1 -0
  273. package/dist/translations/languages/cs.d.ts +576 -0
  274. package/dist/translations/languages/cs.d.ts.map +1 -0
  275. package/dist/translations/languages/cs.js +329 -0
  276. package/dist/translations/languages/cs.js.map +1 -0
  277. package/dist/translations/languages/da.d.ts +576 -0
  278. package/dist/translations/languages/da.d.ts.map +1 -0
  279. package/dist/translations/languages/da.js +329 -0
  280. package/dist/translations/languages/da.js.map +1 -0
  281. package/dist/translations/languages/de.d.ts +576 -0
  282. package/dist/translations/languages/de.d.ts.map +1 -0
  283. package/dist/translations/languages/de.js +329 -0
  284. package/dist/translations/languages/de.js.map +1 -0
  285. package/dist/translations/languages/en.d.ts +576 -0
  286. package/dist/translations/languages/en.d.ts.map +1 -0
  287. package/dist/translations/languages/en.js +329 -0
  288. package/dist/translations/languages/en.js.map +1 -0
  289. package/dist/translations/languages/es.d.ts +576 -0
  290. package/dist/translations/languages/es.d.ts.map +1 -0
  291. package/dist/translations/languages/es.js +329 -0
  292. package/dist/translations/languages/es.js.map +1 -0
  293. package/dist/translations/languages/et.d.ts +576 -0
  294. package/dist/translations/languages/et.d.ts.map +1 -0
  295. package/dist/translations/languages/et.js +329 -0
  296. package/dist/translations/languages/et.js.map +1 -0
  297. package/dist/translations/languages/fa.d.ts +576 -0
  298. package/dist/translations/languages/fa.d.ts.map +1 -0
  299. package/dist/translations/languages/fa.js +329 -0
  300. package/dist/translations/languages/fa.js.map +1 -0
  301. package/dist/translations/languages/fr.d.ts +576 -0
  302. package/dist/translations/languages/fr.d.ts.map +1 -0
  303. package/dist/translations/languages/fr.js +329 -0
  304. package/dist/translations/languages/fr.js.map +1 -0
  305. package/dist/translations/languages/he.d.ts +576 -0
  306. package/dist/translations/languages/he.d.ts.map +1 -0
  307. package/dist/translations/languages/he.js +329 -0
  308. package/dist/translations/languages/he.js.map +1 -0
  309. package/dist/translations/languages/hr.d.ts +576 -0
  310. package/dist/translations/languages/hr.d.ts.map +1 -0
  311. package/dist/translations/languages/hr.js +329 -0
  312. package/dist/translations/languages/hr.js.map +1 -0
  313. package/dist/translations/languages/hu.d.ts +576 -0
  314. package/dist/translations/languages/hu.d.ts.map +1 -0
  315. package/dist/translations/languages/hu.js +329 -0
  316. package/dist/translations/languages/hu.js.map +1 -0
  317. package/dist/translations/languages/hy.d.ts +576 -0
  318. package/dist/translations/languages/hy.d.ts.map +1 -0
  319. package/dist/translations/languages/hy.js +329 -0
  320. package/dist/translations/languages/hy.js.map +1 -0
  321. package/dist/translations/languages/id.d.ts +576 -0
  322. package/dist/translations/languages/id.d.ts.map +1 -0
  323. package/dist/translations/languages/id.js +329 -0
  324. package/dist/translations/languages/id.js.map +1 -0
  325. package/dist/translations/languages/is.d.ts +576 -0
  326. package/dist/translations/languages/is.d.ts.map +1 -0
  327. package/dist/translations/languages/is.js +329 -0
  328. package/dist/translations/languages/is.js.map +1 -0
  329. package/dist/translations/languages/it.d.ts +576 -0
  330. package/dist/translations/languages/it.d.ts.map +1 -0
  331. package/dist/translations/languages/it.js +329 -0
  332. package/dist/translations/languages/it.js.map +1 -0
  333. package/dist/translations/languages/ja.d.ts +576 -0
  334. package/dist/translations/languages/ja.d.ts.map +1 -0
  335. package/dist/translations/languages/ja.js +329 -0
  336. package/dist/translations/languages/ja.js.map +1 -0
  337. package/dist/translations/languages/ko.d.ts +576 -0
  338. package/dist/translations/languages/ko.d.ts.map +1 -0
  339. package/dist/translations/languages/ko.js +329 -0
  340. package/dist/translations/languages/ko.js.map +1 -0
  341. package/dist/translations/languages/lt.d.ts +576 -0
  342. package/dist/translations/languages/lt.d.ts.map +1 -0
  343. package/dist/translations/languages/lt.js +329 -0
  344. package/dist/translations/languages/lt.js.map +1 -0
  345. package/dist/translations/languages/lv.d.ts +576 -0
  346. package/dist/translations/languages/lv.d.ts.map +1 -0
  347. package/dist/translations/languages/lv.js +329 -0
  348. package/dist/translations/languages/lv.js.map +1 -0
  349. package/dist/translations/languages/my.d.ts +576 -0
  350. package/dist/translations/languages/my.d.ts.map +1 -0
  351. package/dist/translations/languages/my.js +329 -0
  352. package/dist/translations/languages/my.js.map +1 -0
  353. package/dist/translations/languages/nb.d.ts +576 -0
  354. package/dist/translations/languages/nb.d.ts.map +1 -0
  355. package/dist/translations/languages/nb.js +329 -0
  356. package/dist/translations/languages/nb.js.map +1 -0
  357. package/dist/translations/languages/nl.d.ts +576 -0
  358. package/dist/translations/languages/nl.d.ts.map +1 -0
  359. package/dist/translations/languages/nl.js +329 -0
  360. package/dist/translations/languages/nl.js.map +1 -0
  361. package/dist/translations/languages/pl.d.ts +576 -0
  362. package/dist/translations/languages/pl.d.ts.map +1 -0
  363. package/dist/translations/languages/pl.js +329 -0
  364. package/dist/translations/languages/pl.js.map +1 -0
  365. package/dist/translations/languages/pt.d.ts +576 -0
  366. package/dist/translations/languages/pt.d.ts.map +1 -0
  367. package/dist/translations/languages/pt.js +329 -0
  368. package/dist/translations/languages/pt.js.map +1 -0
  369. package/dist/translations/languages/ro.d.ts +576 -0
  370. package/dist/translations/languages/ro.d.ts.map +1 -0
  371. package/dist/translations/languages/ro.js +329 -0
  372. package/dist/translations/languages/ro.js.map +1 -0
  373. package/dist/translations/languages/rs.d.ts +576 -0
  374. package/dist/translations/languages/rs.d.ts.map +1 -0
  375. package/dist/translations/languages/rs.js +329 -0
  376. package/dist/translations/languages/rs.js.map +1 -0
  377. package/dist/translations/languages/rsLatin.d.ts +576 -0
  378. package/dist/translations/languages/rsLatin.d.ts.map +1 -0
  379. package/dist/translations/languages/rsLatin.js +329 -0
  380. package/dist/translations/languages/rsLatin.js.map +1 -0
  381. package/dist/translations/languages/ru.d.ts +576 -0
  382. package/dist/translations/languages/ru.d.ts.map +1 -0
  383. package/dist/translations/languages/ru.js +329 -0
  384. package/dist/translations/languages/ru.js.map +1 -0
  385. package/dist/translations/languages/sk.d.ts +576 -0
  386. package/dist/translations/languages/sk.d.ts.map +1 -0
  387. package/dist/translations/languages/sk.js +329 -0
  388. package/dist/translations/languages/sk.js.map +1 -0
  389. package/dist/translations/languages/sl.d.ts +576 -0
  390. package/dist/translations/languages/sl.d.ts.map +1 -0
  391. package/dist/translations/languages/sl.js +329 -0
  392. package/dist/translations/languages/sl.js.map +1 -0
  393. package/dist/translations/languages/sv.d.ts +576 -0
  394. package/dist/translations/languages/sv.d.ts.map +1 -0
  395. package/dist/translations/languages/sv.js +329 -0
  396. package/dist/translations/languages/sv.js.map +1 -0
  397. package/dist/translations/languages/ta.d.ts +576 -0
  398. package/dist/translations/languages/ta.d.ts.map +1 -0
  399. package/dist/translations/languages/ta.js +329 -0
  400. package/dist/translations/languages/ta.js.map +1 -0
  401. package/dist/translations/languages/th.d.ts +576 -0
  402. package/dist/translations/languages/th.d.ts.map +1 -0
  403. package/dist/translations/languages/th.js +329 -0
  404. package/dist/translations/languages/th.js.map +1 -0
  405. package/dist/translations/languages/tr.d.ts +576 -0
  406. package/dist/translations/languages/tr.d.ts.map +1 -0
  407. package/dist/translations/languages/tr.js +329 -0
  408. package/dist/translations/languages/tr.js.map +1 -0
  409. package/dist/translations/languages/uk.d.ts +576 -0
  410. package/dist/translations/languages/uk.d.ts.map +1 -0
  411. package/dist/translations/languages/uk.js +329 -0
  412. package/dist/translations/languages/uk.js.map +1 -0
  413. package/dist/translations/languages/vi.d.ts +576 -0
  414. package/dist/translations/languages/vi.d.ts.map +1 -0
  415. package/dist/translations/languages/vi.js +329 -0
  416. package/dist/translations/languages/vi.js.map +1 -0
  417. package/dist/translations/languages/zh.d.ts +576 -0
  418. package/dist/translations/languages/zh.d.ts.map +1 -0
  419. package/dist/translations/languages/zh.js +329 -0
  420. package/dist/translations/languages/zh.js.map +1 -0
  421. package/dist/translations/languages/zhTw.d.ts +576 -0
  422. package/dist/translations/languages/zhTw.d.ts.map +1 -0
  423. package/dist/translations/languages/zhTw.js +329 -0
  424. package/dist/translations/languages/zhTw.js.map +1 -0
  425. package/dist/types.d.ts +269 -0
  426. package/dist/types.d.ts.map +1 -0
  427. package/dist/types.js +257 -0
  428. package/dist/types.js.map +1 -0
  429. package/dist/utils.d.ts +32 -0
  430. package/dist/utils.d.ts.map +1 -0
  431. package/dist/utils.js +82 -0
  432. package/dist/utils.js.map +1 -0
  433. package/dist/validations/dates.d.ts +230 -0
  434. package/dist/validations/dates.d.ts.map +1 -0
  435. package/dist/validations/dates.js +254 -0
  436. package/dist/validations/dates.js.map +1 -0
  437. package/dist/validations/numbers.d.ts +118 -0
  438. package/dist/validations/numbers.d.ts.map +1 -0
  439. package/dist/validations/numbers.js +151 -0
  440. package/dist/validations/numbers.js.map +1 -0
  441. package/dist/validations/relationLinkedUser.d.ts +43 -0
  442. package/dist/validations/relationLinkedUser.d.ts.map +1 -0
  443. package/dist/validations/relationLinkedUser.js +54 -0
  444. package/dist/validations/relationLinkedUser.js.map +1 -0
  445. package/package.json +228 -0
@@ -0,0 +1,20 @@
1
+ import { anyone, buildUserLinkedAccess } from './builders.js';
2
+ import { hasAdminRole, hasSuperAdminRole } from './roles.js';
3
+ /**
4
+ * Allows access to all resources if the user is a super-admin or admin but if the user is a regular user, it will only allow access to their own resources.
5
+ */ export const userLinkedAccess = buildUserLinkedAccess;
6
+ /**
7
+ * Allows access to all resources, regardless of authentication status.
8
+ */ export const hasPublicAccess = anyone;
9
+ /**
10
+ * Grants access to the field if the user is a super-admin.
11
+ * @param ctx
12
+ * @returns
13
+ */ export const hasSuperAdminFieldLevelAccess = (ctx)=>hasSuperAdminRole(ctx.req.user);
14
+ /**
15
+ * Grants access to the field if the user is an admin or super-admin.
16
+ * @param ctx
17
+ * @returns
18
+ */ export const hasAdminFieldLevelAccess = (ctx)=>hasSuperAdminRole(ctx.req.user) || hasAdminRole(ctx.req.user);
19
+
20
+ //# sourceMappingURL=accessors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/access/accessors.ts"],"sourcesContent":["import type { Access, FieldAccess } from 'payload'\n\nimport { anyone, buildUserLinkedAccess } from './builders.js'\nimport { hasAdminRole, hasSuperAdminRole } from './roles.js'\n\n/**\n * Allows access to all resources if the user is a super-admin or admin but if the user is a regular user, it will only allow access to their own resources.\n */\nexport const userLinkedAccess = buildUserLinkedAccess\n\n/**\n * Allows access to all resources, regardless of authentication status.\n */\nexport const hasPublicAccess: Access = anyone\n\n/**\n * Grants access to the field if the user is a super-admin.\n * @param ctx\n * @returns\n */\nexport const hasSuperAdminFieldLevelAccess: FieldAccess = (ctx) => hasSuperAdminRole(ctx.req.user)\n\n/**\n * Grants access to the field if the user is an admin or super-admin.\n * @param ctx\n * @returns\n */\nexport const hasAdminFieldLevelAccess: FieldAccess = (ctx) =>\n hasSuperAdminRole(ctx.req.user) || hasAdminRole(ctx.req.user)\n"],"names":["anyone","buildUserLinkedAccess","hasAdminRole","hasSuperAdminRole","userLinkedAccess","hasPublicAccess","hasSuperAdminFieldLevelAccess","ctx","req","user","hasAdminFieldLevelAccess"],"mappings":"AAEA,SAASA,MAAM,EAAEC,qBAAqB,QAAQ,gBAAe;AAC7D,SAASC,YAAY,EAAEC,iBAAiB,QAAQ,aAAY;AAE5D;;CAEC,GACD,OAAO,MAAMC,mBAAmBH,sBAAqB;AAErD;;CAEC,GACD,OAAO,MAAMI,kBAA0BL,OAAM;AAE7C;;;;CAIC,GACD,OAAO,MAAMM,gCAA6C,CAACC,MAAQJ,kBAAkBI,IAAIC,GAAG,CAACC,IAAI,EAAC;AAElG;;;;CAIC,GACD,OAAO,MAAMC,2BAAwC,CAACH,MACpDJ,kBAAkBI,IAAIC,GAAG,CAACC,IAAI,KAAKP,aAAaK,IAAIC,GAAG,CAACC,IAAI,EAAC"}
@@ -0,0 +1,4 @@
1
+ import type { Access, Where } from 'payload';
2
+ export declare const buildUserLinkedAccess: (opts?: Where) => Access;
3
+ export declare const anyone: Access;
4
+ //# sourceMappingURL=builders.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"builders.d.ts","sourceRoot":"","sources":["../../src/access/builders.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAI5C,eAAO,MAAM,qBAAqB,UACxB,KAAK,KAAG,MAsBf,CAAA;AAEH,eAAO,MAAM,MAAM,EAAE,MAAmB,CAAA"}
@@ -0,0 +1,26 @@
1
+ import { hasAdminRole, hasSuperAdminRole, isAuthenticated } from './roles.js';
2
+ export const buildUserLinkedAccess = (opts)=>(ctx)=>{
3
+ const user = ctx.req.user ?? null;
4
+ if (!isAuthenticated(user)) {
5
+ return false;
6
+ }
7
+ if (hasSuperAdminRole(user) || hasAdminRole(user)) {
8
+ return true;
9
+ }
10
+ if (!opts) {
11
+ return {
12
+ user: {
13
+ equals: user.id
14
+ }
15
+ };
16
+ }
17
+ return {
18
+ user: {
19
+ equals: user.id
20
+ },
21
+ ...opts
22
+ };
23
+ };
24
+ export const anyone = ()=>true;
25
+
26
+ //# sourceMappingURL=builders.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/access/builders.ts"],"sourcesContent":["import type { Access, Where } from 'payload'\n\nimport { hasAdminRole, hasSuperAdminRole, isAuthenticated } from './roles.js'\n\nexport const buildUserLinkedAccess =\n (opts?: Where): Access =>\n (ctx) => {\n const user = ctx.req.user ?? null\n\n if (!isAuthenticated(user)) {\n return false\n }\n\n if (hasSuperAdminRole(user) || hasAdminRole(user)) {\n return true\n }\n\n if (!opts) {\n return {\n user: { equals: user!.id },\n } satisfies Where\n }\n\n return {\n user: { equals: user!.id },\n ...opts,\n } satisfies Where\n }\n\nexport const anyone: Access = () => true\n"],"names":["hasAdminRole","hasSuperAdminRole","isAuthenticated","buildUserLinkedAccess","opts","ctx","user","req","equals","id","anyone"],"mappings":"AAEA,SAASA,YAAY,EAAEC,iBAAiB,EAAEC,eAAe,QAAQ,aAAY;AAE7E,OAAO,MAAMC,wBACX,CAACC,OACD,CAACC;QACC,MAAMC,OAAOD,IAAIE,GAAG,CAACD,IAAI,IAAI;QAE7B,IAAI,CAACJ,gBAAgBI,OAAO;YAC1B,OAAO;QACT;QAEA,IAAIL,kBAAkBK,SAASN,aAAaM,OAAO;YACjD,OAAO;QACT;QAEA,IAAI,CAACF,MAAM;YACT,OAAO;gBACLE,MAAM;oBAAEE,QAAQF,KAAMG,EAAE;gBAAC;YAC3B;QACF;QAEA,OAAO;YACLH,MAAM;gBAAEE,QAAQF,KAAMG,EAAE;YAAC;YACzB,GAAGL,IAAI;QACT;IACF,EAAC;AAEH,OAAO,MAAMM,SAAiB,IAAM,KAAI"}
@@ -0,0 +1,4 @@
1
+ export * from './accessors.js';
2
+ export * from './builders.js';
3
+ export * from './roles.js';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/access/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAA;AAC9B,cAAc,eAAe,CAAA;AAC7B,cAAc,YAAY,CAAA"}
@@ -0,0 +1,5 @@
1
+ export * from './accessors.js';
2
+ export * from './builders.js';
3
+ export * from './roles.js';
4
+
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/access/index.ts"],"sourcesContent":["export * from './accessors.js'\nexport * from './builders.js'\nexport * from './roles.js'\n"],"names":[],"mappings":"AAAA,cAAc,iBAAgB;AAC9B,cAAc,gBAAe;AAC7B,cAAc,aAAY"}
@@ -0,0 +1,38 @@
1
+ import type { TypedUser } from 'payload';
2
+ import { UserRole } from '../collections/users/types.js';
3
+ /**
4
+ * Type-safe version of `user?.role`
5
+ *
6
+ * @param user
7
+ * @returns UserRole | undefined
8
+ */
9
+ export declare const getRole: (user?: null | TypedUser) => undefined | UserRole;
10
+ /**
11
+ * Checks if the user is a super-admin
12
+ *
13
+ * @param user
14
+ * @returns boolean
15
+ */
16
+ export declare const hasSuperAdminRole: (user: null | TypedUser | undefined) => boolean;
17
+ /**
18
+ * Checks if the user is an admin
19
+ *
20
+ * @param user
21
+ * @returns boolean
22
+ */
23
+ export declare const hasAdminRole: (user: null | TypedUser | undefined) => boolean;
24
+ /**
25
+ * Checks if the user is a regular user
26
+ *
27
+ * @param user
28
+ * @returns boolean
29
+ */
30
+ export declare const hasUserRole: (user: null | TypedUser | undefined) => boolean;
31
+ /**
32
+ * Checks if the user is authenticated
33
+ *
34
+ * @param user
35
+ * @returns boolean
36
+ */
37
+ export declare const isAuthenticated: (user: null | TypedUser | undefined) => boolean;
38
+ //# sourceMappingURL=roles.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"roles.d.ts","sourceRoot":"","sources":["../../src/access/roles.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AAExC,OAAO,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAA;AAExD;;;;;GAKG;AACH,eAAO,MAAM,OAAO,UAAW,IAAI,GAAG,SAAS,KAAG,SAAS,GAAG,QAAmC,CAAA;AAEjG;;;;;GAKG;AACH,eAAO,MAAM,iBAAiB,SAAU,IAAI,GAAG,SAAS,GAAG,SAAS,YAChC,CAAA;AAEpC;;;;;GAKG;AACH,eAAO,MAAM,YAAY,SAAU,IAAI,GAAG,SAAS,GAAG,SAAS,YAAkC,CAAA;AAEjG;;;;;GAKG;AACH,eAAO,MAAM,WAAW,SAAU,IAAI,GAAG,SAAS,GAAG,SAAS,YAAiC,CAAA;AAE/F;;;;;GAKG;AACH,eAAO,MAAM,eAAe,SAAU,IAAI,GAAG,SAAS,GAAG,SAAS,YAAkB,CAAA"}
@@ -0,0 +1,33 @@
1
+ import { UserRole } from '../collections/users/types.js';
2
+ /**
3
+ * Type-safe version of `user?.role`
4
+ *
5
+ * @param user
6
+ * @returns UserRole | undefined
7
+ */ export const getRole = (user)=>user?.role ?? undefined;
8
+ /**
9
+ * Checks if the user is a super-admin
10
+ *
11
+ * @param user
12
+ * @returns boolean
13
+ */ export const hasSuperAdminRole = (user)=>user?.role === UserRole.SuperAdmin;
14
+ /**
15
+ * Checks if the user is an admin
16
+ *
17
+ * @param user
18
+ * @returns boolean
19
+ */ export const hasAdminRole = (user)=>user?.role === UserRole.Admin;
20
+ /**
21
+ * Checks if the user is a regular user
22
+ *
23
+ * @param user
24
+ * @returns boolean
25
+ */ export const hasUserRole = (user)=>user?.role === UserRole.User;
26
+ /**
27
+ * Checks if the user is authenticated
28
+ *
29
+ * @param user
30
+ * @returns boolean
31
+ */ export const isAuthenticated = (user)=>Boolean(user);
32
+
33
+ //# sourceMappingURL=roles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/access/roles.ts"],"sourcesContent":["import type { TypedUser } from 'payload'\n\nimport { UserRole } from '../collections/users/types.js'\n\n/**\n * Type-safe version of `user?.role`\n *\n * @param user\n * @returns UserRole | undefined\n */\nexport const getRole = (user?: null | TypedUser): undefined | UserRole => user?.role ?? undefined\n\n/**\n * Checks if the user is a super-admin\n *\n * @param user\n * @returns boolean\n */\nexport const hasSuperAdminRole = (user: null | TypedUser | undefined) =>\n user?.role === UserRole.SuperAdmin\n\n/**\n * Checks if the user is an admin\n *\n * @param user\n * @returns boolean\n */\nexport const hasAdminRole = (user: null | TypedUser | undefined) => user?.role === UserRole.Admin\n\n/**\n * Checks if the user is a regular user\n *\n * @param user\n * @returns boolean\n */\nexport const hasUserRole = (user: null | TypedUser | undefined) => user?.role === UserRole.User\n\n/**\n * Checks if the user is authenticated\n *\n * @param user\n * @returns boolean\n */\nexport const isAuthenticated = (user: null | TypedUser | undefined) => Boolean(user)\n"],"names":["UserRole","getRole","user","role","undefined","hasSuperAdminRole","SuperAdmin","hasAdminRole","Admin","hasUserRole","User","isAuthenticated","Boolean"],"mappings":"AAEA,SAASA,QAAQ,QAAQ,gCAA+B;AAExD;;;;;CAKC,GACD,OAAO,MAAMC,UAAU,CAACC,OAAkDA,MAAMC,QAAQC,UAAS;AAEjG;;;;;CAKC,GACD,OAAO,MAAMC,oBAAoB,CAACH,OAChCA,MAAMC,SAASH,SAASM,UAAU,CAAA;AAEpC;;;;;CAKC,GACD,OAAO,MAAMC,eAAe,CAACL,OAAuCA,MAAMC,SAASH,SAASQ,KAAK,CAAA;AAEjG;;;;;CAKC,GACD,OAAO,MAAMC,cAAc,CAACP,OAAuCA,MAAMC,SAASH,SAASU,IAAI,CAAA;AAE/F;;;;;CAKC,GACD,OAAO,MAAMC,kBAAkB,CAACT,OAAuCU,QAAQV,MAAK"}
@@ -0,0 +1,30 @@
1
+ import type { Access } from 'payload';
2
+ /**
3
+ * Super-admins and admins can create users
4
+ *
5
+ * @param ctx
6
+ */
7
+ export declare const createUserAccess: Access;
8
+ /**
9
+ * Super-admins can read all users
10
+ * Admins and regular users can read all users except super-admins
11
+ *
12
+ * @param ctx
13
+ */
14
+ export declare const readUserAccess: Access;
15
+ /**
16
+ * Super-admins can update all users
17
+ * Admins can update all users except super-admins
18
+ * Regular users can only update themselves
19
+ *
20
+ * @param ctx
21
+ */
22
+ export declare const updateUserAccess: Access;
23
+ /**
24
+ * Super-admins can delete all users
25
+ * Admins can delete all users except super-admins
26
+ *
27
+ * @param ctx
28
+ */
29
+ export declare const deleteUserAccess: Access;
30
+ //# sourceMappingURL=access.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"access.d.ts","sourceRoot":"","sources":["../../../src/collections/users/access.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAS,MAAM,SAAS,CAAA;AAU5C;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,EAAE,MAU9B,CAAA;AAED;;;;;GAKG;AACH,eAAO,MAAM,cAAc,EAAE,MAgB5B,CAAA;AAED;;;;;;GAMG;AACH,eAAO,MAAM,gBAAgB,EAAE,MAsB9B,CAAA;AAED;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB,EAAE,MAoB9B,CAAA"}
@@ -0,0 +1,96 @@
1
+ import { hasAdminRole, hasSuperAdminRole, hasUserRole, isAuthenticated } from '../../access/index.js';
2
+ import { UserRole } from './types.js';
3
+ /**
4
+ * Super-admins and admins can create users
5
+ *
6
+ * @param ctx
7
+ */ export const createUserAccess = (ctx)=>{
8
+ if (!isAuthenticated(ctx.req.user)) {
9
+ return false;
10
+ }
11
+ if (hasSuperAdminRole(ctx.req.user) || hasAdminRole(ctx.req.user)) {
12
+ return true;
13
+ }
14
+ return false;
15
+ };
16
+ /**
17
+ * Super-admins can read all users
18
+ * Admins and regular users can read all users except super-admins
19
+ *
20
+ * @param ctx
21
+ */ export const readUserAccess = (ctx)=>{
22
+ if (!isAuthenticated(ctx.req.user)) {
23
+ return false;
24
+ }
25
+ if (hasSuperAdminRole(ctx.req.user)) {
26
+ return true;
27
+ }
28
+ if (hasAdminRole(ctx.req.user) || hasUserRole(ctx.req.user)) {
29
+ return {
30
+ role: {
31
+ not_equals: UserRole.SuperAdmin
32
+ }
33
+ };
34
+ }
35
+ return false;
36
+ };
37
+ /**
38
+ * Super-admins can update all users
39
+ * Admins can update all users except super-admins
40
+ * Regular users can only update themselves
41
+ *
42
+ * @param ctx
43
+ */ export const updateUserAccess = (ctx)=>{
44
+ if (!isAuthenticated(ctx.req.user)) {
45
+ return false;
46
+ }
47
+ if (hasSuperAdminRole(ctx.req.user)) {
48
+ return true;
49
+ }
50
+ if (hasAdminRole(ctx.req.user)) {
51
+ return {
52
+ role: {
53
+ not_equals: UserRole.SuperAdmin
54
+ }
55
+ };
56
+ }
57
+ if (hasUserRole(ctx.req.user)) {
58
+ return {
59
+ id: {
60
+ equals: ctx.req.user.id
61
+ }
62
+ };
63
+ }
64
+ return false;
65
+ };
66
+ /**
67
+ * Super-admins can delete all users
68
+ * Admins can delete all users except super-admins
69
+ *
70
+ * @param ctx
71
+ */ export const deleteUserAccess = (ctx)=>{
72
+ if (!isAuthenticated(ctx.req.user)) {
73
+ return false;
74
+ }
75
+ if (hasSuperAdminRole(ctx.req.user)) {
76
+ // Super-admins should never be able to delete themselves.
77
+ return {
78
+ id: {
79
+ not_equals: ctx.req.user.id
80
+ }
81
+ };
82
+ }
83
+ if (hasAdminRole(ctx.req.user)) {
84
+ return {
85
+ id: {
86
+ not_equals: ctx.req.user.id
87
+ },
88
+ role: {
89
+ not_equals: UserRole.SuperAdmin
90
+ }
91
+ };
92
+ }
93
+ return false;
94
+ };
95
+
96
+ //# sourceMappingURL=access.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/collections/users/access.ts"],"sourcesContent":["import type { Access, Where } from 'payload'\n\nimport {\n hasAdminRole,\n hasSuperAdminRole,\n hasUserRole,\n isAuthenticated,\n} from '../../access/index.js'\nimport { UserRole } from './types.js'\n\n/**\n * Super-admins and admins can create users\n *\n * @param ctx\n */\nexport const createUserAccess: Access = (ctx) => {\n if (!isAuthenticated(ctx.req.user)) {\n return false\n }\n\n if (hasSuperAdminRole(ctx.req.user) || hasAdminRole(ctx.req.user)) {\n return true\n }\n\n return false\n}\n\n/**\n * Super-admins can read all users\n * Admins and regular users can read all users except super-admins\n *\n * @param ctx\n */\nexport const readUserAccess: Access = (ctx) => {\n if (!isAuthenticated(ctx.req.user)) {\n return false\n }\n\n if (hasSuperAdminRole(ctx.req.user)) {\n return true\n }\n\n if (hasAdminRole(ctx.req.user) || hasUserRole(ctx.req.user)) {\n return {\n role: { not_equals: UserRole.SuperAdmin },\n } as Where\n }\n\n return false\n}\n\n/**\n * Super-admins can update all users\n * Admins can update all users except super-admins\n * Regular users can only update themselves\n *\n * @param ctx\n */\nexport const updateUserAccess: Access = (ctx) => {\n if (!isAuthenticated(ctx.req.user)) {\n return false\n }\n\n if (hasSuperAdminRole(ctx.req.user)) {\n return true\n }\n\n if (hasAdminRole(ctx.req.user)) {\n return {\n role: { not_equals: UserRole.SuperAdmin },\n } as Where\n }\n\n if (hasUserRole(ctx.req.user)) {\n return {\n id: { equals: ctx.req.user!.id },\n } as Where\n }\n\n return false\n}\n\n/**\n * Super-admins can delete all users\n * Admins can delete all users except super-admins\n *\n * @param ctx\n */\nexport const deleteUserAccess: Access = (ctx) => {\n if (!isAuthenticated(ctx.req.user)) {\n return false\n }\n\n if (hasSuperAdminRole(ctx.req.user)) {\n // Super-admins should never be able to delete themselves.\n return {\n id: { not_equals: ctx.req.user!.id },\n } as Where\n }\n\n if (hasAdminRole(ctx.req.user)) {\n return {\n id: { not_equals: ctx.req.user!.id },\n role: { not_equals: UserRole.SuperAdmin },\n } as Where\n }\n\n return false\n}\n"],"names":["hasAdminRole","hasSuperAdminRole","hasUserRole","isAuthenticated","UserRole","createUserAccess","ctx","req","user","readUserAccess","role","not_equals","SuperAdmin","updateUserAccess","id","equals","deleteUserAccess"],"mappings":"AAEA,SACEA,YAAY,EACZC,iBAAiB,EACjBC,WAAW,EACXC,eAAe,QACV,wBAAuB;AAC9B,SAASC,QAAQ,QAAQ,aAAY;AAErC;;;;CAIC,GACD,OAAO,MAAMC,mBAA2B,CAACC;IACvC,IAAI,CAACH,gBAAgBG,IAAIC,GAAG,CAACC,IAAI,GAAG;QAClC,OAAO;IACT;IAEA,IAAIP,kBAAkBK,IAAIC,GAAG,CAACC,IAAI,KAAKR,aAAaM,IAAIC,GAAG,CAACC,IAAI,GAAG;QACjE,OAAO;IACT;IAEA,OAAO;AACT,EAAC;AAED;;;;;CAKC,GACD,OAAO,MAAMC,iBAAyB,CAACH;IACrC,IAAI,CAACH,gBAAgBG,IAAIC,GAAG,CAACC,IAAI,GAAG;QAClC,OAAO;IACT;IAEA,IAAIP,kBAAkBK,IAAIC,GAAG,CAACC,IAAI,GAAG;QACnC,OAAO;IACT;IAEA,IAAIR,aAAaM,IAAIC,GAAG,CAACC,IAAI,KAAKN,YAAYI,IAAIC,GAAG,CAACC,IAAI,GAAG;QAC3D,OAAO;YACLE,MAAM;gBAAEC,YAAYP,SAASQ,UAAU;YAAC;QAC1C;IACF;IAEA,OAAO;AACT,EAAC;AAED;;;;;;CAMC,GACD,OAAO,MAAMC,mBAA2B,CAACP;IACvC,IAAI,CAACH,gBAAgBG,IAAIC,GAAG,CAACC,IAAI,GAAG;QAClC,OAAO;IACT;IAEA,IAAIP,kBAAkBK,IAAIC,GAAG,CAACC,IAAI,GAAG;QACnC,OAAO;IACT;IAEA,IAAIR,aAAaM,IAAIC,GAAG,CAACC,IAAI,GAAG;QAC9B,OAAO;YACLE,MAAM;gBAAEC,YAAYP,SAASQ,UAAU;YAAC;QAC1C;IACF;IAEA,IAAIV,YAAYI,IAAIC,GAAG,CAACC,IAAI,GAAG;QAC7B,OAAO;YACLM,IAAI;gBAAEC,QAAQT,IAAIC,GAAG,CAACC,IAAI,CAAEM,EAAE;YAAC;QACjC;IACF;IAEA,OAAO;AACT,EAAC;AAED;;;;;CAKC,GACD,OAAO,MAAME,mBAA2B,CAACV;IACvC,IAAI,CAACH,gBAAgBG,IAAIC,GAAG,CAACC,IAAI,GAAG;QAClC,OAAO;IACT;IAEA,IAAIP,kBAAkBK,IAAIC,GAAG,CAACC,IAAI,GAAG;QACnC,0DAA0D;QAC1D,OAAO;YACLM,IAAI;gBAAEH,YAAYL,IAAIC,GAAG,CAACC,IAAI,CAAEM,EAAE;YAAC;QACrC;IACF;IAEA,IAAId,aAAaM,IAAIC,GAAG,CAACC,IAAI,GAAG;QAC9B,OAAO;YACLM,IAAI;gBAAEH,YAAYL,IAAIC,GAAG,CAACC,IAAI,CAAEM,EAAE;YAAC;YACnCJ,MAAM;gBAAEC,YAAYP,SAASQ,UAAU;YAAC;QAC1C;IACF;IAEA,OAAO;AACT,EAAC"}
@@ -0,0 +1,9 @@
1
+ import { type CollectionConfig } from 'payload';
2
+ import type { UserOverrides } from './types.js';
3
+ /**
4
+ * Default config for the Users Collection
5
+ *
6
+ * @param overrides
7
+ */
8
+ export declare const getUsersConfig: (overrides: UserOverrides) => CollectionConfig;
9
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/collections/users/config.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,gBAAgB,EAAa,MAAM,SAAS,CAAA;AAE1D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAM/C;;;;GAIG;AACH,eAAO,MAAM,cAAc,cAAe,aAAa,KAAG,gBA0CzD,CAAA"}
@@ -0,0 +1,55 @@
1
+ import { deepMerge } from 'payload';
2
+ import { createUserAccess, deleteUserAccess, readUserAccess, updateUserAccess } from './access.js';
3
+ import { getUserFields } from './fields.js';
4
+ import { firstUserIsAdmin, usersBeforeCreateOperation } from './hooks.js';
5
+ /**
6
+ * Default config for the Users Collection
7
+ *
8
+ * @param overrides
9
+ */ export const getUsersConfig = (overrides)=>{
10
+ const config = deepMerge({
11
+ slug: 'users',
12
+ access: {
13
+ create: createUserAccess,
14
+ delete: deleteUserAccess,
15
+ read: readUserAccess,
16
+ update: updateUserAccess
17
+ },
18
+ admin: {
19
+ defaultColumns: [
20
+ 'email',
21
+ 'role'
22
+ ],
23
+ group: {
24
+ de: 'Benutzer Verwaltung',
25
+ en: 'User Management'
26
+ },
27
+ useAsTitle: 'email'
28
+ },
29
+ auth: true,
30
+ fields: [
31
+ ...getUserFields(overrides.fieldOverrides),
32
+ ...overrides?.additionalFields ?? []
33
+ ],
34
+ hooks: {
35
+ beforeOperation: [
36
+ usersBeforeCreateOperation
37
+ ],
38
+ beforeValidate: [
39
+ firstUserIsAdmin
40
+ ]
41
+ },
42
+ labels: {
43
+ plural: ({ t })=>{
44
+ return t('loadspark-core:users:labels:plural');
45
+ },
46
+ singular: ({ t })=>{
47
+ return t('loadspark-core:users:labels:singular');
48
+ }
49
+ },
50
+ timestamps: true
51
+ }, overrides.collectionOverrides ?? {});
52
+ return config;
53
+ };
54
+
55
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/collections/users/config.ts"],"sourcesContent":["import type { TFunction } from '@payloadcms/translations'\nimport type { loadsparkCoreTranslationsKeys } from 'src/translations/index.js'\n\nimport { type CollectionConfig, deepMerge } from 'payload'\n\nimport type { UserOverrides } from './types.js'\n\nimport { createUserAccess, deleteUserAccess, readUserAccess, updateUserAccess } from './access.js'\nimport { getUserFields } from './fields.js'\nimport { firstUserIsAdmin, usersBeforeCreateOperation } from './hooks.js'\n\n/**\n * Default config for the Users Collection\n *\n * @param overrides\n */\nexport const getUsersConfig = (overrides: UserOverrides): CollectionConfig => {\n const config = deepMerge<CollectionConfig, UserOverrides['collectionOverrides']>(\n {\n slug: 'users',\n access: {\n create: createUserAccess,\n delete: deleteUserAccess,\n read: readUserAccess,\n update: updateUserAccess,\n },\n admin: {\n defaultColumns: ['email', 'role'],\n group: {\n de: 'Benutzer Verwaltung',\n en: 'User Management',\n },\n useAsTitle: 'email',\n },\n auth: true,\n fields: [...getUserFields(overrides.fieldOverrides), ...(overrides?.additionalFields ?? [])],\n hooks: {\n beforeOperation: [usersBeforeCreateOperation],\n beforeValidate: [firstUserIsAdmin],\n },\n labels: {\n plural: ({ t }) => {\n return (t as TFunction<loadsparkCoreTranslationsKeys>)(\n 'loadspark-core:users:labels:plural',\n )\n },\n singular: ({ t }) => {\n return (t as TFunction<loadsparkCoreTranslationsKeys>)(\n 'loadspark-core:users:labels:singular',\n )\n },\n },\n timestamps: true,\n },\n overrides.collectionOverrides ?? {},\n )\n\n return config\n}\n"],"names":["deepMerge","createUserAccess","deleteUserAccess","readUserAccess","updateUserAccess","getUserFields","firstUserIsAdmin","usersBeforeCreateOperation","getUsersConfig","overrides","config","slug","access","create","delete","read","update","admin","defaultColumns","group","de","en","useAsTitle","auth","fields","fieldOverrides","additionalFields","hooks","beforeOperation","beforeValidate","labels","plural","t","singular","timestamps","collectionOverrides"],"mappings":"AAGA,SAAgCA,SAAS,QAAQ,UAAS;AAI1D,SAASC,gBAAgB,EAAEC,gBAAgB,EAAEC,cAAc,EAAEC,gBAAgB,QAAQ,cAAa;AAClG,SAASC,aAAa,QAAQ,cAAa;AAC3C,SAASC,gBAAgB,EAAEC,0BAA0B,QAAQ,aAAY;AAEzE;;;;CAIC,GACD,OAAO,MAAMC,iBAAiB,CAACC;IAC7B,MAAMC,SAASV,UACb;QACEW,MAAM;QACNC,QAAQ;YACNC,QAAQZ;YACRa,QAAQZ;YACRa,MAAMZ;YACNa,QAAQZ;QACV;QACAa,OAAO;YACLC,gBAAgB;gBAAC;gBAAS;aAAO;YACjCC,OAAO;gBACLC,IAAI;gBACJC,IAAI;YACN;YACAC,YAAY;QACd;QACAC,MAAM;QACNC,QAAQ;eAAInB,cAAcI,UAAUgB,cAAc;eAAOhB,WAAWiB,oBAAoB,EAAE;SAAE;QAC5FC,OAAO;YACLC,iBAAiB;gBAACrB;aAA2B;YAC7CsB,gBAAgB;gBAACvB;aAAiB;QACpC;QACAwB,QAAQ;YACNC,QAAQ,CAAC,EAAEC,CAAC,EAAE;gBACZ,OAAO,AAACA,EACN;YAEJ;YACAC,UAAU,CAAC,EAAED,CAAC,EAAE;gBACd,OAAO,AAACA,EACN;YAEJ;QACF;QACAE,YAAY;IACd,GACAzB,UAAU0B,mBAAmB,IAAI,CAAC;IAGpC,OAAOzB;AACT,EAAC"}
@@ -0,0 +1,4 @@
1
+ import { type Field } from 'payload';
2
+ import type { UserFieldOverrides } from './types.js';
3
+ export declare const getUserFields: (overrides?: UserFieldOverrides) => Field[];
4
+ //# sourceMappingURL=fields.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fields.d.ts","sourceRoot":"","sources":["../../../src/collections/users/fields.ts"],"names":[],"mappings":"AAEA,OAAO,EAAa,KAAK,KAAK,EAA8C,MAAM,SAAS,CAAA;AAG3F,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAA;AAKpD,eAAO,MAAM,aAAa,eAAgB,kBAAkB,KAAG,KAAK,EAiHnE,CAAA"}
@@ -0,0 +1,97 @@
1
+ import { deepMerge } from 'payload';
2
+ import { hasAdminRole, hasSuperAdminRole } from '../../access/index.js';
3
+ import { UserRole } from './types.js';
4
+ export const getUserFields = (overrides)=>{
5
+ const roleField = deepMerge({
6
+ name: 'role',
7
+ type: 'select',
8
+ access: {
9
+ create: (ctx)=>{
10
+ if (!ctx.data?.role) {
11
+ return false;
12
+ }
13
+ if (hasSuperAdminRole(ctx.req.user)) {
14
+ return true;
15
+ }
16
+ if (hasAdminRole(ctx.req.user)) {
17
+ return ctx.data.role === UserRole.User;
18
+ }
19
+ return false;
20
+ },
21
+ update: (ctx)=>{
22
+ if (!ctx.doc) {
23
+ return false;
24
+ }
25
+ if (!hasSuperAdminRole(ctx.req.user)) {
26
+ return false;
27
+ }
28
+ // Super-admins should never be able to update their own role.
29
+ if (ctx.doc.id === ctx.req.user?.id) {
30
+ return false;
31
+ }
32
+ return true;
33
+ }
34
+ },
35
+ defaultValue: 'user',
36
+ label: ({ t })=>{
37
+ return t('loadspark-core:users:roles:label');
38
+ },
39
+ options: [
40
+ {
41
+ label: ({ t })=>t('loadspark-core:users:roles:options:user'),
42
+ value: UserRole.User
43
+ },
44
+ {
45
+ label: ({ t })=>t('loadspark-core:users:roles:options:admin'),
46
+ value: UserRole.Admin
47
+ },
48
+ {
49
+ label: ({ t })=>t('loadspark-core:users:roles:options:superAdmin'),
50
+ value: UserRole.SuperAdmin
51
+ }
52
+ ],
53
+ required: true
54
+ }, overrides?.roleOverrides ?? {});
55
+ const generalTab = deepMerge({
56
+ custom: {
57
+ loadspark: {
58
+ core: {
59
+ users: {
60
+ wrapper: {
61
+ isTab: true,
62
+ tabName: 'general'
63
+ }
64
+ }
65
+ }
66
+ }
67
+ },
68
+ fields: [],
69
+ label: {
70
+ de: 'Allgemein',
71
+ en: 'General'
72
+ }
73
+ }, overrides?.generalTabOverrides ?? {});
74
+ const loadsparkTabField = deepMerge({
75
+ type: 'tabs',
76
+ custom: {
77
+ loadspark: {
78
+ core: {
79
+ users: {
80
+ wrapper: {
81
+ isWrapper: true
82
+ }
83
+ }
84
+ }
85
+ }
86
+ },
87
+ tabs: [
88
+ generalTab
89
+ ]
90
+ }, overrides?.tabOverrides ?? {});
91
+ return [
92
+ roleField,
93
+ loadsparkTabField
94
+ ];
95
+ };
96
+
97
+ //# sourceMappingURL=fields.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/collections/users/fields.ts"],"sourcesContent":["import type { TFunction } from '@payloadcms/translations'\n\nimport { deepMerge, type Field, type SelectField, type Tab, type TabsField } from 'payload'\n\nimport type { loadsparkCoreTranslationsKeys } from '../../translations/index.js'\nimport type { UserFieldOverrides } from './types.js'\n\nimport { hasAdminRole, hasSuperAdminRole } from '../../access/index.js'\nimport { UserRole } from './types.js'\n\nexport const getUserFields = (overrides?: UserFieldOverrides): Field[] => {\n const roleField = deepMerge<SelectField, UserFieldOverrides['roleOverrides']>(\n {\n name: 'role',\n type: 'select',\n access: {\n create: (ctx) => {\n if (!ctx.data?.role) {\n return false\n }\n\n if (hasSuperAdminRole(ctx.req.user)) {\n return true\n }\n\n if (hasAdminRole(ctx.req.user)) {\n return ctx.data.role === UserRole.User\n }\n\n return false\n },\n update: (ctx) => {\n if (!ctx.doc) {\n return false\n }\n\n if (!hasSuperAdminRole(ctx.req.user)) {\n return false\n }\n\n // Super-admins should never be able to update their own role.\n if (ctx.doc.id === ctx.req.user?.id) {\n return false\n }\n\n return true\n },\n },\n defaultValue: 'user',\n label: ({ t }) => {\n return (t as TFunction<loadsparkCoreTranslationsKeys>)('loadspark-core:users:roles:label')\n },\n options: [\n {\n label: ({ t }) =>\n (t as TFunction<loadsparkCoreTranslationsKeys>)(\n 'loadspark-core:users:roles:options:user',\n ),\n value: UserRole.User,\n },\n {\n label: ({ t }) =>\n (t as TFunction<loadsparkCoreTranslationsKeys>)(\n 'loadspark-core:users:roles:options:admin',\n ),\n value: UserRole.Admin,\n },\n {\n label: ({ t }) =>\n (t as TFunction<loadsparkCoreTranslationsKeys>)(\n 'loadspark-core:users:roles:options:superAdmin',\n ),\n value: UserRole.SuperAdmin,\n },\n ],\n required: true,\n },\n overrides?.roleOverrides ?? {},\n )\n\n const generalTab: Tab = deepMerge<Tab, UserFieldOverrides['generalTabOverrides']>(\n {\n custom: {\n loadspark: {\n core: {\n users: {\n wrapper: {\n isTab: true,\n tabName: 'general',\n },\n },\n },\n },\n },\n fields: [],\n label: {\n de: 'Allgemein',\n en: 'General',\n },\n },\n overrides?.generalTabOverrides ?? {},\n )\n\n const loadsparkTabField: TabsField = deepMerge<TabsField, UserFieldOverrides['tabOverrides']>(\n {\n type: 'tabs',\n custom: {\n loadspark: {\n core: {\n users: {\n wrapper: {\n isWrapper: true,\n },\n },\n },\n },\n },\n tabs: [generalTab],\n },\n overrides?.tabOverrides ?? {},\n )\n\n return [roleField, loadsparkTabField]\n}\n"],"names":["deepMerge","hasAdminRole","hasSuperAdminRole","UserRole","getUserFields","overrides","roleField","name","type","access","create","ctx","data","role","req","user","User","update","doc","id","defaultValue","label","t","options","value","Admin","SuperAdmin","required","roleOverrides","generalTab","custom","loadspark","core","users","wrapper","isTab","tabName","fields","de","en","generalTabOverrides","loadsparkTabField","isWrapper","tabs","tabOverrides"],"mappings":"AAEA,SAASA,SAAS,QAAgE,UAAS;AAK3F,SAASC,YAAY,EAAEC,iBAAiB,QAAQ,wBAAuB;AACvE,SAASC,QAAQ,QAAQ,aAAY;AAErC,OAAO,MAAMC,gBAAgB,CAACC;IAC5B,MAAMC,YAAYN,UAChB;QACEO,MAAM;QACNC,MAAM;QACNC,QAAQ;YACNC,QAAQ,CAACC;gBACP,IAAI,CAACA,IAAIC,IAAI,EAAEC,MAAM;oBACnB,OAAO;gBACT;gBAEA,IAAIX,kBAAkBS,IAAIG,GAAG,CAACC,IAAI,GAAG;oBACnC,OAAO;gBACT;gBAEA,IAAId,aAAaU,IAAIG,GAAG,CAACC,IAAI,GAAG;oBAC9B,OAAOJ,IAAIC,IAAI,CAACC,IAAI,KAAKV,SAASa,IAAI;gBACxC;gBAEA,OAAO;YACT;YACAC,QAAQ,CAACN;gBACP,IAAI,CAACA,IAAIO,GAAG,EAAE;oBACZ,OAAO;gBACT;gBAEA,IAAI,CAAChB,kBAAkBS,IAAIG,GAAG,CAACC,IAAI,GAAG;oBACpC,OAAO;gBACT;gBAEA,8DAA8D;gBAC9D,IAAIJ,IAAIO,GAAG,CAACC,EAAE,KAAKR,IAAIG,GAAG,CAACC,IAAI,EAAEI,IAAI;oBACnC,OAAO;gBACT;gBAEA,OAAO;YACT;QACF;QACAC,cAAc;QACdC,OAAO,CAAC,EAAEC,CAAC,EAAE;YACX,OAAO,AAACA,EAA+C;QACzD;QACAC,SAAS;YACP;gBACEF,OAAO,CAAC,EAAEC,CAAC,EAAE,GACX,AAACA,EACC;gBAEJE,OAAOrB,SAASa,IAAI;YACtB;YACA;gBACEK,OAAO,CAAC,EAAEC,CAAC,EAAE,GACX,AAACA,EACC;gBAEJE,OAAOrB,SAASsB,KAAK;YACvB;YACA;gBACEJ,OAAO,CAAC,EAAEC,CAAC,EAAE,GACX,AAACA,EACC;gBAEJE,OAAOrB,SAASuB,UAAU;YAC5B;SACD;QACDC,UAAU;IACZ,GACAtB,WAAWuB,iBAAiB,CAAC;IAG/B,MAAMC,aAAkB7B,UACtB;QACE8B,QAAQ;YACNC,WAAW;gBACTC,MAAM;oBACJC,OAAO;wBACLC,SAAS;4BACPC,OAAO;4BACPC,SAAS;wBACX;oBACF;gBACF;YACF;QACF;QACAC,QAAQ,EAAE;QACVhB,OAAO;YACLiB,IAAI;YACJC,IAAI;QACN;IACF,GACAlC,WAAWmC,uBAAuB,CAAC;IAGrC,MAAMC,oBAA+BzC,UACnC;QACEQ,MAAM;QACNsB,QAAQ;YACNC,WAAW;gBACTC,MAAM;oBACJC,OAAO;wBACLC,SAAS;4BACPQ,WAAW;wBACb;oBACF;gBACF;YACF;QACF;QACAC,MAAM;YAACd;SAAW;IACpB,GACAxB,WAAWuC,gBAAgB,CAAC;IAG9B,OAAO;QAACtC;QAAWmC;KAAkB;AACvC,EAAC"}
@@ -0,0 +1,25 @@
1
+ import type { CollectionBeforeOperationHook, CollectionBeforeValidateHook } from 'payload';
2
+ /**
3
+ * Hook that automatically sets the first user as a super-admin.
4
+ *
5
+ * When creating the first user in the system (when userCount is 0),
6
+ * this hook automatically sets their role to 'super-admin'.
7
+ *
8
+ * @param data - The user data being validated
9
+ * @param operation - The operation being performed ('create' | 'update')
10
+ * @param req - The request object containing context
11
+ * @returns The modified user data, or undefined if no changes needed
12
+ */
13
+ export declare const firstUserIsAdmin: CollectionBeforeValidateHook;
14
+ /**
15
+ * Hook that populates the request context with the total user count.
16
+ *
17
+ * This hook runs before create operations and sets `req.context.userCount`
18
+ * to the total number of users in the database. This is used by other hooks
19
+ * (like `firstUserIsAdmin`) to determine if this is the first user.
20
+ *
21
+ * @param operation - The operation being performed
22
+ * @param req - The request object where context will be populated
23
+ */
24
+ export declare const usersBeforeCreateOperation: CollectionBeforeOperationHook;
25
+ //# sourceMappingURL=hooks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../../../src/collections/users/hooks.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,6BAA6B,EAAE,4BAA4B,EAAE,MAAM,SAAS,CAAA;AAI1F;;;;;;;;;;GAUG;AACH,eAAO,MAAM,gBAAgB,EAAE,4BAqB9B,CAAA;AAED;;;;;;;;;GASG;AACH,eAAO,MAAM,0BAA0B,EAAE,6BAQxC,CAAA"}
@@ -0,0 +1,50 @@
1
+ import { UserRole } from './types.js';
2
+ /**
3
+ * Hook that automatically sets the first user as a super-admin.
4
+ *
5
+ * When creating the first user in the system (when userCount is 0),
6
+ * this hook automatically sets their role to 'super-admin'.
7
+ *
8
+ * @param data - The user data being validated
9
+ * @param operation - The operation being performed ('create' | 'update')
10
+ * @param req - The request object containing context
11
+ * @returns The modified user data, or undefined if no changes needed
12
+ */ export const firstUserIsAdmin = ({ data, operation, req })=>{
13
+ if (!data) {
14
+ return;
15
+ }
16
+ const userCount = req.context.userCount;
17
+ if (typeof userCount !== 'number') {
18
+ return;
19
+ }
20
+ switch(operation){
21
+ case 'create':
22
+ // Automatically set first user as super-admin
23
+ if (userCount === 0 && data.role !== UserRole.SuperAdmin) {
24
+ data.role = UserRole.SuperAdmin;
25
+ }
26
+ return data;
27
+ }
28
+ return data;
29
+ };
30
+ /**
31
+ * Hook that populates the request context with the total user count.
32
+ *
33
+ * This hook runs before create operations and sets `req.context.userCount`
34
+ * to the total number of users in the database. This is used by other hooks
35
+ * (like `firstUserIsAdmin`) to determine if this is the first user.
36
+ *
37
+ * @param operation - The operation being performed
38
+ * @param req - The request object where context will be populated
39
+ */ export const usersBeforeCreateOperation = async ({ operation, req })=>{
40
+ if ([
41
+ 'create'
42
+ ].includes(operation)) {
43
+ const userCount = await req.payload.count({
44
+ collection: 'users'
45
+ });
46
+ req.context.userCount = userCount.totalDocs;
47
+ }
48
+ };
49
+
50
+ //# sourceMappingURL=hooks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/collections/users/hooks.ts"],"sourcesContent":["import type { CollectionBeforeOperationHook, CollectionBeforeValidateHook } from 'payload'\n\nimport { UserRole } from './types.js'\n\n/**\n * Hook that automatically sets the first user as a super-admin.\n *\n * When creating the first user in the system (when userCount is 0),\n * this hook automatically sets their role to 'super-admin'.\n *\n * @param data - The user data being validated\n * @param operation - The operation being performed ('create' | 'update')\n * @param req - The request object containing context\n * @returns The modified user data, or undefined if no changes needed\n */\nexport const firstUserIsAdmin: CollectionBeforeValidateHook = ({ data, operation, req }) => {\n if (!data) {\n return\n }\n\n const userCount = req.context.userCount\n\n if (typeof userCount !== 'number') {\n return\n }\n\n switch (operation) {\n case 'create':\n // Automatically set first user as super-admin\n if (userCount === 0 && data.role !== UserRole.SuperAdmin) {\n data.role = UserRole.SuperAdmin\n }\n return data\n }\n\n return data\n}\n\n/**\n * Hook that populates the request context with the total user count.\n *\n * This hook runs before create operations and sets `req.context.userCount`\n * to the total number of users in the database. This is used by other hooks\n * (like `firstUserIsAdmin`) to determine if this is the first user.\n *\n * @param operation - The operation being performed\n * @param req - The request object where context will be populated\n */\nexport const usersBeforeCreateOperation: CollectionBeforeOperationHook = async ({\n operation,\n req,\n}) => {\n if (['create'].includes(operation)) {\n const userCount = await req.payload.count({ collection: 'users' })\n req.context.userCount = userCount.totalDocs\n }\n}\n"],"names":["UserRole","firstUserIsAdmin","data","operation","req","userCount","context","role","SuperAdmin","usersBeforeCreateOperation","includes","payload","count","collection","totalDocs"],"mappings":"AAEA,SAASA,QAAQ,QAAQ,aAAY;AAErC;;;;;;;;;;CAUC,GACD,OAAO,MAAMC,mBAAiD,CAAC,EAAEC,IAAI,EAAEC,SAAS,EAAEC,GAAG,EAAE;IACrF,IAAI,CAACF,MAAM;QACT;IACF;IAEA,MAAMG,YAAYD,IAAIE,OAAO,CAACD,SAAS;IAEvC,IAAI,OAAOA,cAAc,UAAU;QACjC;IACF;IAEA,OAAQF;QACN,KAAK;YACH,8CAA8C;YAC9C,IAAIE,cAAc,KAAKH,KAAKK,IAAI,KAAKP,SAASQ,UAAU,EAAE;gBACxDN,KAAKK,IAAI,GAAGP,SAASQ,UAAU;YACjC;YACA,OAAON;IACX;IAEA,OAAOA;AACT,EAAC;AAED;;;;;;;;;CASC,GACD,OAAO,MAAMO,6BAA4D,OAAO,EAC9EN,SAAS,EACTC,GAAG,EACJ;IACC,IAAI;QAAC;KAAS,CAACM,QAAQ,CAACP,YAAY;QAClC,MAAME,YAAY,MAAMD,IAAIO,OAAO,CAACC,KAAK,CAAC;YAAEC,YAAY;QAAQ;QAChET,IAAIE,OAAO,CAACD,SAAS,GAAGA,UAAUS,SAAS;IAC7C;AACF,EAAC"}
@@ -0,0 +1,18 @@
1
+ import type { CollectionConfig, Field, SelectField, Tab, TabsField } from 'payload';
2
+ export type UserFieldOverrides = {
3
+ generalTabOverrides?: Omit<Tab, 'name' | 'type'>;
4
+ roleOverrides?: Omit<SelectField, 'hasMany' | 'name' | 'required' | 'type'>;
5
+ tabOverrides?: Omit<TabsField, 'label' | 'name' | 'type'>;
6
+ };
7
+ export type UserCollectionOverrides = Omit<CollectionConfig, 'auth' | 'fields' | 'slug'>;
8
+ export type UserOverrides = {
9
+ additionalFields?: Field[];
10
+ collectionOverrides?: UserCollectionOverrides;
11
+ fieldOverrides?: UserFieldOverrides;
12
+ };
13
+ export declare enum UserRole {
14
+ Admin = "admin",
15
+ SuperAdmin = "super-admin",
16
+ User = "user"
17
+ }
18
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/collections/users/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,KAAK,EAAE,WAAW,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AAEnF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,mBAAmB,CAAC,EAAE,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC,CAAA;IAChD,aAAa,CAAC,EAAE,IAAI,CAAC,WAAW,EAAE,SAAS,GAAG,MAAM,GAAG,UAAU,GAAG,MAAM,CAAC,CAAA;IAC3E,YAAY,CAAC,EAAE,IAAI,CAAC,SAAS,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,CAAC,CAAA;CAC1D,CAAA;AAED,MAAM,MAAM,uBAAuB,GAAG,IAAI,CAAC,gBAAgB,EAAE,MAAM,GAAG,QAAQ,GAAG,MAAM,CAAC,CAAA;AACxF,MAAM,MAAM,aAAa,GAAG;IAC1B,gBAAgB,CAAC,EAAE,KAAK,EAAE,CAAA;IAC1B,mBAAmB,CAAC,EAAE,uBAAuB,CAAA;IAC7C,cAAc,CAAC,EAAE,kBAAkB,CAAA;CACpC,CAAA;AAED,oBAAY,QAAQ;IAClB,KAAK,UAAU;IACf,UAAU,gBAAgB;IAC1B,IAAI,SAAS;CACd"}
@@ -0,0 +1,8 @@
1
+ export var UserRole = /*#__PURE__*/ function(UserRole) {
2
+ UserRole["Admin"] = "admin";
3
+ UserRole["SuperAdmin"] = "super-admin";
4
+ UserRole["User"] = "user";
5
+ return UserRole;
6
+ }({});
7
+
8
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/collections/users/types.ts"],"sourcesContent":["import type { CollectionConfig, Field, SelectField, Tab, TabsField } from 'payload'\n\nexport type UserFieldOverrides = {\n generalTabOverrides?: Omit<Tab, 'name' | 'type'>\n roleOverrides?: Omit<SelectField, 'hasMany' | 'name' | 'required' | 'type'>\n tabOverrides?: Omit<TabsField, 'label' | 'name' | 'type'>\n}\n\nexport type UserCollectionOverrides = Omit<CollectionConfig, 'auth' | 'fields' | 'slug'>\nexport type UserOverrides = {\n additionalFields?: Field[]\n collectionOverrides?: UserCollectionOverrides\n fieldOverrides?: UserFieldOverrides\n}\n\nexport enum UserRole {\n Admin = 'admin',\n SuperAdmin = 'super-admin',\n User = 'user',\n}\n"],"names":["UserRole"],"mappings":"AAeA,OAAO,IAAA,AAAKA,kCAAAA;;;;WAAAA;MAIX"}