@websolutespa/payload-plugin-bowl 2.0.1 → 3.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 (455) hide show
  1. package/CHANGELOG.md +23 -4
  2. package/README.md +1 -1
  3. package/dist/blocks/MenuItem.js +219 -0
  4. package/dist/blocks/MenuItem.js.map +1 -0
  5. package/dist/blocks/index.js +4 -0
  6. package/dist/blocks/index.js.map +1 -0
  7. package/dist/blocks/withComponentBlock.js +31 -0
  8. package/dist/blocks/withComponentBlock.js.map +1 -0
  9. package/dist/bowl.js +331 -0
  10. package/dist/bowl.js.map +1 -0
  11. package/dist/collections/Address.js +7 -0
  12. package/dist/collections/Address.js.map +1 -0
  13. package/dist/collections/Category.js +94 -0
  14. package/dist/collections/Category.js.map +1 -0
  15. package/dist/collections/ConsentPreference.js +34 -0
  16. package/dist/collections/ConsentPreference.js.map +1 -0
  17. package/dist/collections/Continent.js +24 -0
  18. package/dist/collections/Continent.js.map +1 -0
  19. package/dist/collections/Country.js +66 -0
  20. package/dist/collections/Country.js.map +1 -0
  21. package/dist/collections/CountryZone.js +24 -0
  22. package/dist/collections/CountryZone.js.map +1 -0
  23. package/dist/collections/EmailConfig.js +84 -0
  24. package/dist/collections/EmailConfig.js.map +1 -0
  25. package/dist/collections/EndUsers.js +24 -0
  26. package/dist/collections/EndUsers.js.map +1 -0
  27. package/dist/collections/Label.js +26 -0
  28. package/dist/collections/Label.js.map +1 -0
  29. package/dist/collections/Language.js +35 -0
  30. package/dist/collections/Language.js.map +1 -0
  31. package/dist/collections/LegalNotice.js +29 -0
  32. package/dist/collections/LegalNotice.js.map +1 -0
  33. package/dist/collections/Market.js +106 -0
  34. package/dist/collections/Market.js.map +1 -0
  35. package/dist/collections/Media.js +40 -0
  36. package/dist/collections/Media.js.map +1 -0
  37. package/dist/collections/Menu.js +49 -0
  38. package/dist/collections/Menu.js.map +1 -0
  39. package/dist/collections/Municipality.js +68 -0
  40. package/dist/collections/Municipality.js.map +1 -0
  41. package/dist/collections/Province.js +59 -0
  42. package/dist/collections/Province.js.map +1 -0
  43. package/dist/collections/Redirect.js +90 -0
  44. package/dist/collections/Redirect.js.map +1 -0
  45. package/dist/collections/Region.js +45 -0
  46. package/dist/collections/Region.js.map +1 -0
  47. package/dist/collections/SubContinent.js +36 -0
  48. package/dist/collections/SubContinent.js.map +1 -0
  49. package/dist/collections/Template.js +79 -0
  50. package/dist/collections/Template.js.map +1 -0
  51. package/dist/collections/Users.js +11 -0
  52. package/dist/collections/Users.js.map +1 -0
  53. package/dist/components/Category/CategoryMenu.js +47 -0
  54. package/dist/components/Category/CategoryMenu.js.map +1 -0
  55. package/dist/components/Category/CategoryTree.js +430 -0
  56. package/dist/components/Category/CategoryTree.js.map +1 -0
  57. package/dist/components/Category/CategoryTree.scss +330 -0
  58. package/dist/components/Category/CategoryTreeRoute.js +51 -0
  59. package/dist/components/Category/CategoryTreeRoute.js.map +1 -0
  60. package/dist/components/Category/category.service.js +32 -0
  61. package/dist/components/Category/category.service.js.map +1 -0
  62. package/dist/components/DataTree/DataTree.js +281 -0
  63. package/dist/components/DataTree/DataTree.js.map +1 -0
  64. package/dist/components/DataTree/DataTree.scss +363 -0
  65. package/dist/components/DataTree/DataTreeProvider.js +67 -0
  66. package/dist/components/DataTree/DataTreeProvider.js.map +1 -0
  67. package/dist/components/DataTree/EventEmitter.js +38 -0
  68. package/dist/components/DataTree/EventEmitter.js.map +1 -0
  69. package/dist/components/DataTree/useDataTree.js +52 -0
  70. package/dist/components/DataTree/useDataTree.js.map +1 -0
  71. package/dist/components/DecoratedList/DecoratedList.js +17 -0
  72. package/dist/components/DecoratedList/DecoratedList.js.map +1 -0
  73. package/dist/components/IconServer/IconServer.js +15 -0
  74. package/dist/components/IconServer/IconServer.js.map +1 -0
  75. package/dist/components/IconServer/IconServer.scss +14 -0
  76. package/dist/components/ImportExport/ImportExportList.js +91 -0
  77. package/dist/components/ImportExport/ImportExportList.js.map +1 -0
  78. package/dist/components/ImportExport/ImportExportList.scss +70 -0
  79. package/dist/components/ImportExport/ImportExportRedirect.js +142 -0
  80. package/dist/components/ImportExport/ImportExportRedirect.js.map +1 -0
  81. package/dist/components/ImportExport/ImportModal.js +458 -0
  82. package/dist/components/ImportExport/ImportModal.js.map +1 -0
  83. package/dist/components/ImportExport/ImportModal.scss +99 -0
  84. package/dist/components/ImportExport/types.js +3 -0
  85. package/dist/components/ImportExport/types.js.map +1 -0
  86. package/dist/components/LeaveWithoutSaving/LeaveWithoutSaving.js +83 -0
  87. package/dist/components/LeaveWithoutSaving/LeaveWithoutSaving.js.map +1 -0
  88. package/dist/components/LeaveWithoutSaving/LeaveWithoutSaving.scss +46 -0
  89. package/dist/components/LeaveWithoutSaving/usePreventLeave.js +119 -0
  90. package/dist/components/LeaveWithoutSaving/usePreventLeave.js.map +1 -0
  91. package/dist/components/LocalizedDescription/LocalizedDescriptionClient.js +15 -0
  92. package/dist/components/LocalizedDescription/LocalizedDescriptionClient.js.map +1 -0
  93. package/dist/components/LocalizedDescription/LocalizedDescriptionServer.js +13 -0
  94. package/dist/components/LocalizedDescription/LocalizedDescriptionServer.js.map +1 -0
  95. package/dist/components/LogoServer/LogoServer.js +20 -0
  96. package/dist/components/LogoServer/LogoServer.js.map +1 -0
  97. package/dist/components/LogoServer/LogoServer.scss +21 -0
  98. package/dist/core/access/access.js +181 -0
  99. package/dist/core/access/access.js.map +1 -0
  100. package/dist/core/access/access.test.js +454 -0
  101. package/dist/core/access/access.test.js.map +1 -0
  102. package/dist/core/access/index.js +3 -0
  103. package/dist/core/access/index.js.map +1 -0
  104. package/dist/core/api/action.service.js +441 -0
  105. package/dist/core/api/action.service.js.map +1 -0
  106. package/dist/core/api/action.service.test.js +218 -0
  107. package/dist/core/api/action.service.test.js.map +1 -0
  108. package/dist/core/api/cache.service.js +33 -0
  109. package/dist/core/api/cache.service.js.map +1 -0
  110. package/dist/core/api/cache.service.test.js +33 -0
  111. package/dist/core/api/cache.service.test.js.map +1 -0
  112. package/dist/core/api/category.service.js +53 -0
  113. package/dist/core/api/category.service.js.map +1 -0
  114. package/dist/core/api/collection.service.js +457 -0
  115. package/dist/core/api/collection.service.js.map +1 -0
  116. package/dist/core/api/collection.service.test.js +318 -0
  117. package/dist/core/api/collection.service.test.js.map +1 -0
  118. package/dist/core/api/email.service.js +84 -0
  119. package/dist/core/api/email.service.js.map +1 -0
  120. package/dist/core/api/global.service.js +18 -0
  121. package/dist/core/api/global.service.js.map +1 -0
  122. package/dist/core/api/health.service.js +12 -0
  123. package/dist/core/api/health.service.js.map +1 -0
  124. package/dist/core/api/index.js +16 -0
  125. package/dist/core/api/index.js.map +1 -0
  126. package/dist/core/api/locale.service.js +58 -0
  127. package/dist/core/api/locale.service.js.map +1 -0
  128. package/dist/core/api/locale.service.test.js +46 -0
  129. package/dist/core/api/locale.service.test.js.map +1 -0
  130. package/dist/core/api/menu.service.js +81 -0
  131. package/dist/core/api/menu.service.js.map +1 -0
  132. package/dist/core/api/menu.service.test.js +300 -0
  133. package/dist/core/api/menu.service.test.js.map +1 -0
  134. package/dist/core/api/page.service.js +171 -0
  135. package/dist/core/api/page.service.js.map +1 -0
  136. package/dist/core/api/page.service.test.js +68 -0
  137. package/dist/core/api/page.service.test.js.map +1 -0
  138. package/dist/core/api/pagination.service.js +29 -0
  139. package/dist/core/api/pagination.service.js.map +1 -0
  140. package/dist/core/api/pagination.service.test.js +175 -0
  141. package/dist/core/api/pagination.service.test.js.map +1 -0
  142. package/dist/core/api/redirect.service.js +106 -0
  143. package/dist/core/api/redirect.service.js.map +1 -0
  144. package/dist/core/api/redirect.service.test.js +106 -0
  145. package/dist/core/api/redirect.service.test.js.map +1 -0
  146. package/dist/core/api/route.service.js +451 -0
  147. package/dist/core/api/route.service.js.map +1 -0
  148. package/dist/core/api/route.service.test.js +214 -0
  149. package/dist/core/api/route.service.test.js.map +1 -0
  150. package/dist/core/api/static.service.js +249 -0
  151. package/dist/core/api/static.service.js.map +1 -0
  152. package/dist/core/api/static.service.test.js +240 -0
  153. package/dist/core/api/static.service.test.js.map +1 -0
  154. package/dist/core/api/store.service.js +336 -0
  155. package/dist/core/api/store.service.js.map +1 -0
  156. package/dist/core/api/store.service.test.js +105 -0
  157. package/dist/core/api/store.service.test.js.map +1 -0
  158. package/dist/core/api/types.js +21 -0
  159. package/dist/core/api/types.js.map +1 -0
  160. package/dist/core/api/utils.js +83 -0
  161. package/dist/core/api/utils.js.map +1 -0
  162. package/dist/core/api/where.service.js +231 -0
  163. package/dist/core/api/where.service.js.map +1 -0
  164. package/dist/core/collections/index.js +12 -0
  165. package/dist/core/collections/index.js.map +1 -0
  166. package/dist/core/collections/withAction.js +91 -0
  167. package/dist/core/collections/withAction.js.map +1 -0
  168. package/dist/core/collections/withAction.test.js +68 -0
  169. package/dist/core/collections/withAction.test.js.map +1 -0
  170. package/dist/core/collections/withAddress.js +122 -0
  171. package/dist/core/collections/withAddress.js.map +1 -0
  172. package/dist/core/collections/withBlock.js +17 -0
  173. package/dist/core/collections/withBlock.js.map +1 -0
  174. package/dist/core/collections/withBlock.test.js +68 -0
  175. package/dist/core/collections/withBlock.test.js.map +1 -0
  176. package/dist/core/collections/withCollection.js +61 -0
  177. package/dist/core/collections/withCollection.js.map +1 -0
  178. package/dist/core/collections/withCollection.test.js +64 -0
  179. package/dist/core/collections/withCollection.test.js.map +1 -0
  180. package/dist/core/collections/withEndUser.js +301 -0
  181. package/dist/core/collections/withEndUser.js.map +1 -0
  182. package/dist/core/collections/withGlobal.js +27 -0
  183. package/dist/core/collections/withGlobal.js.map +1 -0
  184. package/dist/core/collections/withGlobal.test.js +57 -0
  185. package/dist/core/collections/withGlobal.test.js.map +1 -0
  186. package/dist/core/collections/withMenu.js +19 -0
  187. package/dist/core/collections/withMenu.js.map +1 -0
  188. package/dist/core/collections/withMenu.test.js +63 -0
  189. package/dist/core/collections/withMenu.test.js.map +1 -0
  190. package/dist/core/collections/withPage.js +126 -0
  191. package/dist/core/collections/withPage.js.map +1 -0
  192. package/dist/core/collections/withPage.test.js +103 -0
  193. package/dist/core/collections/withPage.test.js.map +1 -0
  194. package/dist/core/collections/withStaticCollection.js +60 -0
  195. package/dist/core/collections/withStaticCollection.js.map +1 -0
  196. package/dist/core/collections/withStaticCollection.test.js +84 -0
  197. package/dist/core/collections/withStaticCollection.test.js.map +1 -0
  198. package/dist/core/collections/withUser.js +56 -0
  199. package/dist/core/collections/withUser.js.map +1 -0
  200. package/dist/core/decorators/category.js +28 -0
  201. package/dist/core/decorators/category.js.map +1 -0
  202. package/dist/core/decorators/components.js +9 -0
  203. package/dist/core/decorators/components.js.map +1 -0
  204. package/dist/core/decorators/href.js +25 -0
  205. package/dist/core/decorators/href.js.map +1 -0
  206. package/dist/core/decorators/index.js +11 -0
  207. package/dist/core/decorators/index.js.map +1 -0
  208. package/dist/core/decorators/localize.js +27 -0
  209. package/dist/core/decorators/localize.js.map +1 -0
  210. package/dist/core/decorators/menu.js +246 -0
  211. package/dist/core/decorators/menu.js.map +1 -0
  212. package/dist/core/decorators/nav.js +42 -0
  213. package/dist/core/decorators/nav.js.map +1 -0
  214. package/dist/core/decorators/rich-text.js +39 -0
  215. package/dist/core/decorators/rich-text.js.map +1 -0
  216. package/dist/core/decorators/schema.js +16 -0
  217. package/dist/core/decorators/schema.js.map +1 -0
  218. package/dist/core/decorators/upload.js +44 -0
  219. package/dist/core/decorators/upload.js.map +1 -0
  220. package/dist/core/encryption/encryption.js +66 -0
  221. package/dist/core/encryption/encryption.js.map +1 -0
  222. package/dist/core/encryption/index.js +3 -0
  223. package/dist/core/encryption/index.js.map +1 -0
  224. package/dist/core/fields/index.js +28 -0
  225. package/dist/core/fields/index.js.map +1 -0
  226. package/dist/core/fields/withAbstract.js +15 -0
  227. package/dist/core/fields/withAbstract.js.map +1 -0
  228. package/dist/core/fields/withAbstract.test.js +72 -0
  229. package/dist/core/fields/withAbstract.test.js.map +1 -0
  230. package/dist/core/fields/withAnchor.js +56 -0
  231. package/dist/core/fields/withAnchor.js.map +1 -0
  232. package/dist/core/fields/withCategory.js +21 -0
  233. package/dist/core/fields/withCategory.js.map +1 -0
  234. package/dist/core/fields/withCategory.test.js +63 -0
  235. package/dist/core/fields/withCategory.test.js.map +1 -0
  236. package/dist/core/fields/withCheckbox.js +19 -0
  237. package/dist/core/fields/withCheckbox.js.map +1 -0
  238. package/dist/core/fields/withCheckbox.test.js +59 -0
  239. package/dist/core/fields/withCheckbox.test.js.map +1 -0
  240. package/dist/core/fields/withComponents.js +17 -0
  241. package/dist/core/fields/withComponents.js.map +1 -0
  242. package/dist/core/fields/withComponents.test.js +62 -0
  243. package/dist/core/fields/withComponents.test.js.map +1 -0
  244. package/dist/core/fields/withDate.js +18 -0
  245. package/dist/core/fields/withDate.js.map +1 -0
  246. package/dist/core/fields/withDate.test.js +56 -0
  247. package/dist/core/fields/withDate.test.js.map +1 -0
  248. package/dist/core/fields/withDescription.js +15 -0
  249. package/dist/core/fields/withDescription.js.map +1 -0
  250. package/dist/core/fields/withDescription.test.js +72 -0
  251. package/dist/core/fields/withDescription.test.js.map +1 -0
  252. package/dist/core/fields/withId.js +19 -0
  253. package/dist/core/fields/withId.js.map +1 -0
  254. package/dist/core/fields/withId.test.js +61 -0
  255. package/dist/core/fields/withId.test.js.map +1 -0
  256. package/dist/core/fields/withIsActive.js +15 -0
  257. package/dist/core/fields/withIsActive.js.map +1 -0
  258. package/dist/core/fields/withIsActive.test.js +59 -0
  259. package/dist/core/fields/withIsActive.test.js.map +1 -0
  260. package/dist/core/fields/withIsDefault.js +15 -0
  261. package/dist/core/fields/withIsDefault.js.map +1 -0
  262. package/dist/core/fields/withIsDefault.test.js +59 -0
  263. package/dist/core/fields/withIsDefault.test.js.map +1 -0
  264. package/dist/core/fields/withLink.js +116 -0
  265. package/dist/core/fields/withLink.js.map +1 -0
  266. package/dist/core/fields/withLink.test.js +144 -0
  267. package/dist/core/fields/withLink.test.js.map +1 -0
  268. package/dist/core/fields/withMarkets.js +21 -0
  269. package/dist/core/fields/withMarkets.js.map +1 -0
  270. package/dist/core/fields/withMarkets.test.js +65 -0
  271. package/dist/core/fields/withMarkets.test.js.map +1 -0
  272. package/dist/core/fields/withMedia.js +20 -0
  273. package/dist/core/fields/withMedia.js.map +1 -0
  274. package/dist/core/fields/withMedia.test.js +41 -0
  275. package/dist/core/fields/withMedia.test.js.map +1 -0
  276. package/dist/core/fields/withMedias.js +25 -0
  277. package/dist/core/fields/withMedias.js.map +1 -0
  278. package/dist/core/fields/withMedias.test.js +46 -0
  279. package/dist/core/fields/withMedias.test.js.map +1 -0
  280. package/dist/core/fields/withName.js +17 -0
  281. package/dist/core/fields/withName.js.map +1 -0
  282. package/dist/core/fields/withName.test.js +59 -0
  283. package/dist/core/fields/withName.test.js.map +1 -0
  284. package/dist/core/fields/withNav.js +28 -0
  285. package/dist/core/fields/withNav.js.map +1 -0
  286. package/dist/core/fields/withNavs.js +53 -0
  287. package/dist/core/fields/withNavs.js.map +1 -0
  288. package/dist/core/fields/withOrder.js +80 -0
  289. package/dist/core/fields/withOrder.js.map +1 -0
  290. package/dist/core/fields/withOrder.test.js +56 -0
  291. package/dist/core/fields/withOrder.test.js.map +1 -0
  292. package/dist/core/fields/withRelated.js +18 -0
  293. package/dist/core/fields/withRelated.js.map +1 -0
  294. package/dist/core/fields/withRelated.test.js +62 -0
  295. package/dist/core/fields/withRelated.test.js.map +1 -0
  296. package/dist/core/fields/withRichText.js +68 -0
  297. package/dist/core/fields/withRichText.js.map +1 -0
  298. package/dist/core/fields/withRichText.test.js +72 -0
  299. package/dist/core/fields/withRichText.test.js.map +1 -0
  300. package/dist/core/fields/withRoles.js +27 -0
  301. package/dist/core/fields/withRoles.js.map +1 -0
  302. package/dist/core/fields/withRoles.test.js +49 -0
  303. package/dist/core/fields/withRoles.test.js.map +1 -0
  304. package/dist/core/fields/withSelect.js +23 -0
  305. package/dist/core/fields/withSelect.js.map +1 -0
  306. package/dist/core/fields/withSelect.test.js +59 -0
  307. package/dist/core/fields/withSelect.test.js.map +1 -0
  308. package/dist/core/fields/withSeoWeight.js +19 -0
  309. package/dist/core/fields/withSeoWeight.js.map +1 -0
  310. package/dist/core/fields/withSlug.js +33 -0
  311. package/dist/core/fields/withSlug.js.map +1 -0
  312. package/dist/core/fields/withSlug.test.js +71 -0
  313. package/dist/core/fields/withSlug.test.js.map +1 -0
  314. package/dist/core/fields/withTemplate.js +49 -0
  315. package/dist/core/fields/withTemplate.js.map +1 -0
  316. package/dist/core/fields/withTemplate.test.js +93 -0
  317. package/dist/core/fields/withTemplate.test.js.map +1 -0
  318. package/dist/core/fields/withTenants.js +21 -0
  319. package/dist/core/fields/withTenants.js.map +1 -0
  320. package/dist/core/fields/withTenants.test.js +42 -0
  321. package/dist/core/fields/withTenants.test.js.map +1 -0
  322. package/dist/core/fields/withText.js +18 -0
  323. package/dist/core/fields/withText.js.map +1 -0
  324. package/dist/core/fields/withText.test.js +56 -0
  325. package/dist/core/fields/withText.test.js.map +1 -0
  326. package/dist/core/fields/withTitle.js +17 -0
  327. package/dist/core/fields/withTitle.js.map +1 -0
  328. package/dist/core/fields/withTitle.test.js +58 -0
  329. package/dist/core/fields/withTitle.test.js.map +1 -0
  330. package/dist/core/index.js +11 -0
  331. package/dist/core/index.js.map +1 -0
  332. package/dist/core/logger/index.js +3 -0
  333. package/dist/core/logger/index.js.map +1 -0
  334. package/dist/core/logger/logger.js +9 -0
  335. package/dist/core/logger/logger.js.map +1 -0
  336. package/dist/core/translations/index.js +3 -0
  337. package/dist/core/translations/index.js.map +1 -0
  338. package/dist/core/translations/translations.js +137 -0
  339. package/dist/core/translations/translations.js.map +1 -0
  340. package/dist/core/translations/translations.test.js +72 -0
  341. package/dist/core/translations/translations.test.js.map +1 -0
  342. package/dist/core/utils/findByIDHandler.js +28 -0
  343. package/dist/core/utils/findByIDHandler.js.map +1 -0
  344. package/dist/core/utils/findHandler.js +31 -0
  345. package/dist/core/utils/findHandler.js.map +1 -0
  346. package/dist/core/utils/getPreviewURL.js +45 -0
  347. package/dist/core/utils/getPreviewURL.js.map +1 -0
  348. package/dist/core/utils/getRequestCollection.js +49 -0
  349. package/dist/core/utils/getRequestCollection.js.map +1 -0
  350. package/dist/core/utils/index.js +7 -0
  351. package/dist/core/utils/index.js.map +1 -0
  352. package/dist/core/utils/mergeCollections.js +18 -0
  353. package/dist/core/utils/mergeCollections.js.map +1 -0
  354. package/dist/core/utils/mergeFields.js +20 -0
  355. package/dist/core/utils/mergeFields.js.map +1 -0
  356. package/dist/core/utils/mergeGlobals.js +17 -0
  357. package/dist/core/utils/mergeGlobals.js.map +1 -0
  358. package/dist/core/utils/richText.js +29 -0
  359. package/dist/core/utils/richText.js.map +1 -0
  360. package/dist/core/utils/sortByGroup.js +36 -0
  361. package/dist/core/utils/sortByGroup.js.map +1 -0
  362. package/dist/debug.js +25 -0
  363. package/dist/debug.js.map +1 -0
  364. package/dist/declaration.d.js +3 -0
  365. package/dist/declaration.d.js.map +1 -0
  366. package/dist/exports/client.d.ts +36 -0
  367. package/dist/exports/client.d.ts.map +1 -0
  368. package/dist/exports/client.js +8 -0
  369. package/dist/exports/client.js.map +1 -0
  370. package/dist/exports/rsc.d.ts +18 -0
  371. package/dist/exports/rsc.d.ts.map +1 -0
  372. package/dist/exports/rsc.js +5 -0
  373. package/dist/exports/rsc.js.map +1 -0
  374. package/dist/fields/color-picker/ColorCell.js +19 -0
  375. package/dist/fields/color-picker/ColorCell.js.map +1 -0
  376. package/dist/fields/color-picker/ColorField.js +131 -0
  377. package/dist/fields/color-picker/ColorField.js.map +1 -0
  378. package/dist/fields/color-picker/index.js +26 -0
  379. package/dist/fields/color-picker/index.js.map +1 -0
  380. package/dist/fields/color-picker/styles.scss +113 -0
  381. package/dist/fields/color-picker/utils.js +6 -0
  382. package/dist/fields/color-picker/utils.js.map +1 -0
  383. package/dist/fields/index.js +3 -0
  384. package/dist/fields/index.js.map +1 -0
  385. package/dist/globals/App.js +97 -0
  386. package/dist/globals/App.js.map +1 -0
  387. package/dist/globals/Locale.js +82 -0
  388. package/dist/globals/Locale.js.map +1 -0
  389. package/dist/globals/LocaleRowLabel.js +16 -0
  390. package/dist/globals/LocaleRowLabel.js.map +1 -0
  391. package/dist/index.d.ts +891 -844
  392. package/dist/index.d.ts.map +1 -0
  393. package/dist/index.js +11 -9263
  394. package/dist/index.js.map +1 -0
  395. package/dist/mapper.js +199 -0
  396. package/dist/mapper.js.map +1 -0
  397. package/dist/options.js +76 -0
  398. package/dist/options.js.map +1 -0
  399. package/dist/test/blocks/blocks.js +13 -0
  400. package/dist/test/blocks/blocks.js.map +1 -0
  401. package/dist/test/collections/ActionCollection.js +12 -0
  402. package/dist/test/collections/ActionCollection.js.map +1 -0
  403. package/dist/test/collections/AdminCollection.js +18 -0
  404. package/dist/test/collections/AdminCollection.js.map +1 -0
  405. package/dist/test/collections/BlockCollection.js +16 -0
  406. package/dist/test/collections/BlockCollection.js.map +1 -0
  407. package/dist/test/collections/Collection.js +12 -0
  408. package/dist/test/collections/Collection.js.map +1 -0
  409. package/dist/test/collections/FieldCollection.js +84 -0
  410. package/dist/test/collections/FieldCollection.js.map +1 -0
  411. package/dist/test/collections/GlobalCollection.js +12 -0
  412. package/dist/test/collections/GlobalCollection.js.map +1 -0
  413. package/dist/test/collections/LinkCollection.js +12 -0
  414. package/dist/test/collections/LinkCollection.js.map +1 -0
  415. package/dist/test/collections/MenuCollection.js +12 -0
  416. package/dist/test/collections/MenuCollection.js.map +1 -0
  417. package/dist/test/collections/PageCollection.js +12 -0
  418. package/dist/test/collections/PageCollection.js.map +1 -0
  419. package/dist/test/collections/RoleCollection.js +19 -0
  420. package/dist/test/collections/RoleCollection.js.map +1 -0
  421. package/dist/test/collections/RoleFieldCollection.js +40 -0
  422. package/dist/test/collections/RoleFieldCollection.js.map +1 -0
  423. package/dist/test/collections/StaticCollection.js +56 -0
  424. package/dist/test/collections/StaticCollection.js.map +1 -0
  425. package/dist/test/collections/StorePageCollection.js +12 -0
  426. package/dist/test/collections/StorePageCollection.js.map +1 -0
  427. package/dist/test/collections/TenantCollection.js +22 -0
  428. package/dist/test/collections/TenantCollection.js.map +1 -0
  429. package/dist/test/collections/TranslationCollection.js +16 -0
  430. package/dist/test/collections/TranslationCollection.js.map +1 -0
  431. package/dist/test/collections/TypeACollection.js +18 -0
  432. package/dist/test/collections/TypeACollection.js.map +1 -0
  433. package/dist/test/collections/TypeBCollection.js +18 -0
  434. package/dist/test/collections/TypeBCollection.js.map +1 -0
  435. package/dist/test/collections/actions/NewsletterAction.js +29 -0
  436. package/dist/test/collections/actions/NewsletterAction.js.map +1 -0
  437. package/dist/test/collections/actions/RegisterAction.js +44 -0
  438. package/dist/test/collections/actions/RegisterAction.js.map +1 -0
  439. package/dist/test/collections/users/EndUsers.js +40 -0
  440. package/dist/test/collections/users/EndUsers.js.map +1 -0
  441. package/dist/test/collections/users/Users.js +20 -0
  442. package/dist/test/collections/users/Users.js.map +1 -0
  443. package/dist/test/index.js +32 -0
  444. package/dist/test/index.js.map +1 -0
  445. package/dist/test/payload.config.js +106 -0
  446. package/dist/test/payload.config.js.map +1 -0
  447. package/dist/test/utils.js +52 -0
  448. package/dist/test/utils.js.map +1 -0
  449. package/dist/translations.js +467 -0
  450. package/dist/translations.js.map +1 -0
  451. package/dist/types.js +31 -0
  452. package/dist/types.js.map +1 -0
  453. package/package.json +119 -37
  454. package/scss/styles.scss +0 -1
  455. package/dist/index.css +0 -796
@@ -0,0 +1,71 @@
1
+ import { config, FieldCollection, getTestConfig } from '@/test';
2
+ import { textToSlug } from '@websolutespa/payload-utils';
3
+ import { clearContext, endUsers, getContext, users } from '@websolutespa/test/payload';
4
+ import { v4 as uuid } from 'uuid';
5
+ import { afterAll, beforeAll, describe, expect, it } from 'vitest';
6
+ describe('withSlug field', ()=>{
7
+ let payload;
8
+ let client;
9
+ let userToken;
10
+ let endUserToken;
11
+ let apiKey;
12
+ let testConfig;
13
+ beforeAll(async ()=>{
14
+ const context = await getContext(config);
15
+ payload = context.payload;
16
+ client = context.client;
17
+ userToken = await client.getToken('users', users.admin);
18
+ endUserToken = await client.getToken('end_users', endUsers.user);
19
+ apiKey = users.api.apiKey;
20
+ testConfig = await getTestConfig(client, userToken);
21
+ });
22
+ afterAll(async ()=>{
23
+ await clearContext();
24
+ });
25
+ describe('Field config', ()=>{
26
+ let collection;
27
+ let field;
28
+ beforeAll(async ()=>{
29
+ collection = payload.config.collections.find((x)=>x.slug === FieldCollection.slug);
30
+ });
31
+ it('should have a field named "slug" of type "text"', ()=>{
32
+ field = collection.fields.find((field)=>field.type === 'text' && field.name === 'slug');
33
+ expect(field).toBeDefined();
34
+ });
35
+ it('should be localized', ()=>{
36
+ expect(field.localized).toEqual(true);
37
+ });
38
+ it('should have a "beforeValidate" hook defined', ()=>{
39
+ expect(field.hooks.beforeValidate).toBeDefined();
40
+ });
41
+ });
42
+ describe('Document creation', ()=>{
43
+ it('should have a valid "slug" field', async ()=>{
44
+ const postData = {
45
+ _id: uuid(),
46
+ title: uuid(),
47
+ slug: uuid()
48
+ };
49
+ const { doc: fieldsDoc } = await client.post(`/${FieldCollection.slug}?locale=${testConfig.defaultLocale}`, postData, {
50
+ headers: {
51
+ Authorization: `JWT ${userToken}`
52
+ }
53
+ });
54
+ expect(fieldsDoc.slug).toEqual(textToSlug(postData.slug));
55
+ });
56
+ it('should have a valid "slug" field (title field used as value fallback)', async ()=>{
57
+ const postData = {
58
+ _id: uuid(),
59
+ title: uuid()
60
+ };
61
+ const { doc: fieldsDoc } = await client.post(`/${FieldCollection.slug}?locale=${testConfig.defaultLocale}`, postData, {
62
+ headers: {
63
+ Authorization: `JWT ${userToken}`
64
+ }
65
+ });
66
+ expect(fieldsDoc.slug).toEqual(textToSlug(postData.title));
67
+ });
68
+ });
69
+ });
70
+
71
+ //# sourceMappingURL=withSlug.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/core/fields/withSlug.test.ts"],"sourcesContent":["import { config, FieldCollection, getTestConfig, TestConfig } from '@/test';\r\nimport { textToSlug } from '@websolutespa/payload-utils';\r\nimport { clearContext, endUsers, getContext, RestClient, users } from '@websolutespa/test/payload';\r\nimport { Payload, SanitizedCollectionConfig, TextField } from 'payload';\r\nimport { v4 as uuid } from 'uuid';\r\nimport { afterAll, beforeAll, describe, expect, it } from 'vitest';\r\n\r\ndescribe('withSlug field', () => {\r\n\r\n let payload: Payload;\r\n let client: RestClient;\r\n let userToken: string;\r\n let endUserToken: string;\r\n let apiKey: string;\r\n let testConfig: TestConfig;\r\n\r\n beforeAll(async () => {\r\n const context = await getContext(config);\r\n payload = context.payload;\r\n client = context.client;\r\n userToken = await client.getToken('users', users.admin);\r\n endUserToken = await client.getToken('end_users', endUsers.user);\r\n apiKey = users.api.apiKey;\r\n testConfig = await getTestConfig(client, userToken);\r\n });\r\n\r\n afterAll(async () => {\r\n await clearContext();\r\n });\r\n\r\n describe('Field config', () => {\r\n let collection: SanitizedCollectionConfig;\r\n let field: TextField;\r\n\r\n beforeAll(async () => {\r\n collection = payload.config.collections.find(x => x.slug === FieldCollection.slug)!;\r\n });\r\n\r\n it('should have a field named \"slug\" of type \"text\"', () => {\r\n field = collection.fields.find(field => field.type === 'text' && field.name === 'slug') as TextField;\r\n expect(field).toBeDefined();\r\n });\r\n\r\n it('should be localized', () => {\r\n expect(field.localized).toEqual(true);\r\n });\r\n\r\n it('should have a \"beforeValidate\" hook defined', () => {\r\n expect(field.hooks!.beforeValidate).toBeDefined();\r\n });\r\n });\r\n\r\n describe('Document creation', () => {\r\n it('should have a valid \"slug\" field', async () => {\r\n const postData = {\r\n _id: uuid(),\r\n title: uuid(),\r\n slug: uuid(),\r\n };\r\n\r\n const { doc: fieldsDoc } = await client.post(`/${FieldCollection.slug}?locale=${testConfig.defaultLocale}`, postData, {\r\n headers: {\r\n Authorization: `JWT ${userToken}`,\r\n },\r\n });\r\n\r\n expect(fieldsDoc.slug).toEqual(textToSlug(postData.slug));\r\n });\r\n\r\n it('should have a valid \"slug\" field (title field used as value fallback)', async () => {\r\n const postData = {\r\n _id: uuid(),\r\n title: uuid(),\r\n };\r\n\r\n const { doc: fieldsDoc } = await client.post(`/${FieldCollection.slug}?locale=${testConfig.defaultLocale}`, postData, {\r\n headers: {\r\n Authorization: `JWT ${userToken}`,\r\n },\r\n });\r\n\r\n expect(fieldsDoc.slug).toEqual(textToSlug(postData.title));\r\n });\r\n });\r\n});\r\n"],"names":["config","FieldCollection","getTestConfig","textToSlug","clearContext","endUsers","getContext","users","v4","uuid","afterAll","beforeAll","describe","expect","it","payload","client","userToken","endUserToken","apiKey","testConfig","context","getToken","admin","user","api","collection","field","collections","find","x","slug","fields","type","name","toBeDefined","localized","toEqual","hooks","beforeValidate","postData","_id","title","doc","fieldsDoc","post","defaultLocale","headers","Authorization"],"mappings":"AAAA,SAASA,MAAM,EAAEC,eAAe,EAAEC,aAAa,QAAoB,SAAS;AAC5E,SAASC,UAAU,QAAQ,8BAA8B;AACzD,SAASC,YAAY,EAAEC,QAAQ,EAAEC,UAAU,EAAcC,KAAK,QAAQ,6BAA6B;AAEnG,SAASC,MAAMC,IAAI,QAAQ,OAAO;AAClC,SAASC,QAAQ,EAAEC,SAAS,EAAEC,QAAQ,EAAEC,MAAM,EAAEC,EAAE,QAAQ,SAAS;AAEnEF,SAAS,kBAAkB;IAEzB,IAAIG;IACJ,IAAIC;IACJ,IAAIC;IACJ,IAAIC;IACJ,IAAIC;IACJ,IAAIC;IAEJT,UAAU;QACR,MAAMU,UAAU,MAAMf,WAAWN;QACjCe,UAAUM,QAAQN,OAAO;QACzBC,SAASK,QAAQL,MAAM;QACvBC,YAAY,MAAMD,OAAOM,QAAQ,CAAC,SAASf,MAAMgB,KAAK;QACtDL,eAAe,MAAMF,OAAOM,QAAQ,CAAC,aAAajB,SAASmB,IAAI;QAC/DL,SAASZ,MAAMkB,GAAG,CAACN,MAAM;QACzBC,aAAa,MAAMlB,cAAcc,QAAQC;IAC3C;IAEAP,SAAS;QACP,MAAMN;IACR;IAEAQ,SAAS,gBAAgB;QACvB,IAAIc;QACJ,IAAIC;QAEJhB,UAAU;YACRe,aAAaX,QAAQf,MAAM,CAAC4B,WAAW,CAACC,IAAI,CAACC,CAAAA,IAAKA,EAAEC,IAAI,KAAK9B,gBAAgB8B,IAAI;QACnF;QAEAjB,GAAG,mDAAmD;YACpDa,QAAQD,WAAWM,MAAM,CAACH,IAAI,CAACF,CAAAA,QAASA,MAAMM,IAAI,KAAK,UAAUN,MAAMO,IAAI,KAAK;YAChFrB,OAAOc,OAAOQ,WAAW;QAC3B;QAEArB,GAAG,uBAAuB;YACxBD,OAAOc,MAAMS,SAAS,EAAEC,OAAO,CAAC;QAClC;QAEAvB,GAAG,+CAA+C;YAChDD,OAAOc,MAAMW,KAAK,CAAEC,cAAc,EAAEJ,WAAW;QACjD;IACF;IAEAvB,SAAS,qBAAqB;QAC5BE,GAAG,oCAAoC;YACrC,MAAM0B,WAAW;gBACfC,KAAKhC;gBACLiC,OAAOjC;gBACPsB,MAAMtB;YACR;YAEA,MAAM,EAAEkC,KAAKC,SAAS,EAAE,GAAG,MAAM5B,OAAO6B,IAAI,CAAC,CAAC,CAAC,EAAE5C,gBAAgB8B,IAAI,CAAC,QAAQ,EAAEX,WAAW0B,aAAa,CAAC,CAAC,EAAEN,UAAU;gBACpHO,SAAS;oBACPC,eAAe,CAAC,IAAI,EAAE/B,UAAU,CAAC;gBACnC;YACF;YAEAJ,OAAO+B,UAAUb,IAAI,EAAEM,OAAO,CAAClC,WAAWqC,SAAST,IAAI;QACzD;QAEAjB,GAAG,yEAAyE;YAC1E,MAAM0B,WAAW;gBACfC,KAAKhC;gBACLiC,OAAOjC;YACT;YAEA,MAAM,EAAEkC,KAAKC,SAAS,EAAE,GAAG,MAAM5B,OAAO6B,IAAI,CAAC,CAAC,CAAC,EAAE5C,gBAAgB8B,IAAI,CAAC,QAAQ,EAAEX,WAAW0B,aAAa,CAAC,CAAC,EAAEN,UAAU;gBACpHO,SAAS;oBACPC,eAAe,CAAC,IAAI,EAAE/B,UAAU,CAAC;gBACnC;YACF;YAEAJ,OAAO+B,UAAUb,IAAI,EAAEM,OAAO,CAAClC,WAAWqC,SAASE,KAAK;QAC1D;IACF;AACF"}
@@ -0,0 +1,49 @@
1
+ import { deepMerge } from '@websolutespa/payload-utils';
2
+ import { options } from '../../options';
3
+ export const TemplateDefaults = {
4
+ name: 'template',
5
+ type: 'relationship',
6
+ relationTo: options.slug.template,
7
+ hasMany: false
8
+ };
9
+ const filterOptionsBySlug = (slug)=>()=>{
10
+ const where = {
11
+ or: [
12
+ {
13
+ hasCompatibleCollections: {
14
+ equals: false
15
+ }
16
+ },
17
+ {
18
+ and: [
19
+ {
20
+ hasCompatibleCollections: {
21
+ equals: true
22
+ }
23
+ },
24
+ {
25
+ compatibleCollections: {
26
+ contains: slug
27
+ }
28
+ }
29
+ ]
30
+ }
31
+ ]
32
+ };
33
+ return where;
34
+ };
35
+ export const withTemplate = ({ slugToUse, ...options })=>{
36
+ const field = deepMerge(TemplateDefaults, options);
37
+ field.filterOptions = filterOptionsBySlug(slugToUse);
38
+ return field;
39
+ };
40
+ export const withTemplateRequired = ({ slugToUse, ...options })=>{
41
+ const field = deepMerge({
42
+ ...TemplateDefaults,
43
+ required: true
44
+ }, options);
45
+ field.filterOptions = filterOptionsBySlug(slugToUse);
46
+ return field;
47
+ };
48
+
49
+ //# sourceMappingURL=withTemplate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/core/fields/withTemplate.ts"],"sourcesContent":["import { deepMerge } from '@websolutespa/payload-utils';\r\nimport { FilterOptions, RelationshipField, Where } from 'payload';\r\nimport { options } from '../../options';\r\n\r\nexport type WithTemplateProps = (Omit<RelationshipField, 'type' | 'name' | 'relationTo'> & { slugToUse: string });\r\nexport type WithTemplate = WithTemplateProps & { type: 'withTemplate' };\r\n\r\nexport const TemplateDefaults: RelationshipField = {\r\n name: 'template',\r\n type: 'relationship',\r\n relationTo: options.slug.template,\r\n hasMany: false,\r\n};\r\n\r\nconst filterOptionsBySlug = (slug: string): FilterOptions => () => {\r\n const where: Where = {\r\n or: [\r\n {\r\n hasCompatibleCollections: { equals: false },\r\n },\r\n {\r\n and: [\r\n {\r\n hasCompatibleCollections: { equals: true },\r\n },\r\n {\r\n compatibleCollections: { contains: slug },\r\n },\r\n ],\r\n },\r\n ],\r\n };\r\n return where;\r\n};\r\n\r\nexport const withTemplate = ({ slugToUse, ...options }: WithTemplateProps): RelationshipField => {\r\n const field = deepMerge<RelationshipField>(TemplateDefaults, options as RelationshipField);\r\n field.filterOptions = filterOptionsBySlug(slugToUse);\r\n return field;\r\n};\r\n\r\nexport const withTemplateRequired = ({ slugToUse, ...options }: WithTemplateProps): RelationshipField => {\r\n const field = deepMerge<RelationshipField>({\r\n ...TemplateDefaults,\r\n required: true,\r\n }, options as RelationshipField);\r\n field.filterOptions = filterOptionsBySlug(slugToUse);\r\n return field;\r\n};\r\n\r\n"],"names":["deepMerge","options","TemplateDefaults","name","type","relationTo","slug","template","hasMany","filterOptionsBySlug","where","or","hasCompatibleCollections","equals","and","compatibleCollections","contains","withTemplate","slugToUse","field","filterOptions","withTemplateRequired","required"],"mappings":"AAAA,SAASA,SAAS,QAAQ,8BAA8B;AAExD,SAASC,OAAO,QAAQ,gBAAgB;AAKxC,OAAO,MAAMC,mBAAsC;IACjDC,MAAM;IACNC,MAAM;IACNC,YAAYJ,QAAQK,IAAI,CAACC,QAAQ;IACjCC,SAAS;AACX,EAAE;AAEF,MAAMC,sBAAsB,CAACH,OAAgC;QAC3D,MAAMI,QAAe;YACnBC,IAAI;gBACF;oBACEC,0BAA0B;wBAAEC,QAAQ;oBAAM;gBAC5C;gBACA;oBACEC,KAAK;wBACH;4BACEF,0BAA0B;gCAAEC,QAAQ;4BAAK;wBAC3C;wBACA;4BACEE,uBAAuB;gCAAEC,UAAUV;4BAAK;wBAC1C;qBACD;gBACH;aACD;QACH;QACA,OAAOI;IACT;AAEA,OAAO,MAAMO,eAAe,CAAC,EAAEC,SAAS,EAAE,GAAGjB,SAA4B;IACvE,MAAMkB,QAAQnB,UAA6BE,kBAAkBD;IAC7DkB,MAAMC,aAAa,GAAGX,oBAAoBS;IAC1C,OAAOC;AACT,EAAE;AAEF,OAAO,MAAME,uBAAuB,CAAC,EAAEH,SAAS,EAAE,GAAGjB,SAA4B;IAC/E,MAAMkB,QAAQnB,UAA6B;QACzC,GAAGE,gBAAgB;QACnBoB,UAAU;IACZ,GAAGrB;IACHkB,MAAMC,aAAa,GAAGX,oBAAoBS;IAC1C,OAAOC;AACT,EAAE"}
@@ -0,0 +1,93 @@
1
+ import { config, FieldCollection, getTestConfig, PageCollection } from '@/test';
2
+ import { clearContext, endUsers, getContext, users } from '@websolutespa/test/payload';
3
+ import { v4 as uuid } from 'uuid';
4
+ import { afterAll, beforeAll, describe, expect, it } from 'vitest';
5
+ import { options } from '../../options';
6
+ describe('withTemplate field', ()=>{
7
+ let payload;
8
+ let client;
9
+ let userToken;
10
+ let endUserToken;
11
+ let apiKey;
12
+ let testConfig;
13
+ beforeAll(async ()=>{
14
+ const context = await getContext(config);
15
+ payload = context.payload;
16
+ client = context.client;
17
+ userToken = await client.getToken('users', users.admin);
18
+ endUserToken = await client.getToken('end_users', endUsers.user);
19
+ apiKey = users.api.apiKey;
20
+ testConfig = await getTestConfig(client, userToken);
21
+ });
22
+ afterAll(async ()=>{
23
+ await clearContext();
24
+ });
25
+ describe('Field config', ()=>{
26
+ let collection;
27
+ let field;
28
+ beforeAll(async ()=>{
29
+ collection = payload.config.collections.find((x)=>x.slug === FieldCollection.slug);
30
+ });
31
+ it('should have a field named "template" of type "relationship"', ()=>{
32
+ field = collection.fields.find((field)=>field.type === 'relationship' && field.name === 'template');
33
+ expect(field).toBeDefined();
34
+ });
35
+ it('should allow only one relation', ()=>{
36
+ expect(field.hasMany).toEqual(false);
37
+ });
38
+ it('should allow relationship with the "template" collection', ()=>{
39
+ expect(field.relationTo).toEqual(options.slug.template);
40
+ });
41
+ it('should filter the relationship options (filterOptions property)', ()=>{
42
+ expect(field.filterOptions).toBeDefined();
43
+ });
44
+ });
45
+ describe('Document creation', ()=>{
46
+ let fieldsDoc;
47
+ let postData;
48
+ beforeAll(async ()=>{
49
+ postData = {
50
+ _id: uuid(),
51
+ title: uuid(),
52
+ template: testConfig.documents.template.id
53
+ };
54
+ ({ doc: fieldsDoc } = await client.post(`/${FieldCollection.slug}?locale=${testConfig.defaultLocale}`, postData, {
55
+ headers: {
56
+ Authorization: `JWT ${userToken}`
57
+ }
58
+ }));
59
+ });
60
+ it('should have a valid "template" field', async ()=>{
61
+ expect(fieldsDoc.template.id).toEqual(postData.template);
62
+ });
63
+ it('should not allow incompatible templates', async ()=>{
64
+ try {
65
+ const { doc: incompatibleTemplateDoc } = await client.post(`/${options.slug.template}?locale=${testConfig.defaultLocale}`, {
66
+ id: uuid(),
67
+ name: uuid(),
68
+ hasCompatibleCollections: true,
69
+ compatibleCollections: [
70
+ PageCollection.slug
71
+ ]
72
+ }, {
73
+ headers: {
74
+ Authorization: `JWT ${userToken}`
75
+ }
76
+ });
77
+ postData._id = uuid();
78
+ postData.template = incompatibleTemplateDoc.id;
79
+ ({ doc: fieldsDoc } = await client.post(`/${FieldCollection.slug}?locale=${testConfig.defaultLocale}`, postData, {
80
+ headers: {
81
+ Authorization: `JWT ${userToken}`
82
+ }
83
+ }));
84
+ expect(fieldsDoc).toBeUndefined();
85
+ } catch (error) {
86
+ expect(error).toBeDefined();
87
+ expect(error.status).toBe(400);
88
+ }
89
+ });
90
+ });
91
+ });
92
+
93
+ //# sourceMappingURL=withTemplate.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/core/fields/withTemplate.test.ts"],"sourcesContent":["import { config, FieldCollection, getTestConfig, PageCollection, TestConfig } from '@/test';\r\nimport { clearContext, endUsers, getContext, RestClient, users } from '@websolutespa/test/payload';\r\nimport { Payload, RelationshipField, SanitizedCollectionConfig } from 'payload';\r\nimport { v4 as uuid } from 'uuid';\r\nimport { afterAll, beforeAll, describe, expect, it } from 'vitest';\r\nimport { options } from '../../options';\r\n\r\ndescribe('withTemplate field', () => {\r\n\r\n let payload: Payload;\r\n let client: RestClient;\r\n let userToken: string;\r\n let endUserToken: string;\r\n let apiKey: string;\r\n let testConfig: TestConfig;\r\n\r\n beforeAll(async () => {\r\n const context = await getContext(config);\r\n payload = context.payload;\r\n client = context.client;\r\n userToken = await client.getToken('users', users.admin);\r\n endUserToken = await client.getToken('end_users', endUsers.user);\r\n apiKey = users.api.apiKey;\r\n testConfig = await getTestConfig(client, userToken);\r\n });\r\n\r\n afterAll(async () => {\r\n await clearContext();\r\n });\r\n\r\n describe('Field config', () => {\r\n let collection: SanitizedCollectionConfig;\r\n let field: RelationshipField;\r\n\r\n beforeAll(async () => {\r\n collection = payload.config.collections.find(x => x.slug === FieldCollection.slug)!;\r\n });\r\n\r\n it('should have a field named \"template\" of type \"relationship\"', () => {\r\n field = collection.fields.find(field => field.type === 'relationship' && field.name === 'template') as RelationshipField;\r\n expect(field).toBeDefined();\r\n });\r\n\r\n it('should allow only one relation', () => {\r\n expect(field.hasMany).toEqual(false);\r\n });\r\n\r\n it('should allow relationship with the \"template\" collection', () => {\r\n expect(field.relationTo).toEqual(options.slug.template);\r\n });\r\n\r\n it('should filter the relationship options (filterOptions property)', () => {\r\n expect(field.filterOptions).toBeDefined();\r\n });\r\n });\r\n\r\n describe('Document creation', () => {\r\n let fieldsDoc: any;\r\n let postData: any;\r\n\r\n beforeAll(async () => {\r\n postData = {\r\n _id: uuid(),\r\n title: uuid(),\r\n template: testConfig.documents.template.id,\r\n };\r\n ({ doc: fieldsDoc } = await client.post(`/${FieldCollection.slug}?locale=${testConfig.defaultLocale}`, postData, {\r\n headers: {\r\n Authorization: `JWT ${userToken}`,\r\n },\r\n }));\r\n });\r\n\r\n it('should have a valid \"template\" field', async () => {\r\n expect(fieldsDoc.template.id).toEqual(postData.template);\r\n });\r\n\r\n it('should not allow incompatible templates', async () => {\r\n try {\r\n const { doc: incompatibleTemplateDoc } = await client.post(`/${options.slug.template}?locale=${testConfig.defaultLocale}`, {\r\n id: uuid(),\r\n name: uuid(),\r\n hasCompatibleCollections: true,\r\n compatibleCollections: [PageCollection.slug],\r\n }, {\r\n headers: {\r\n Authorization: `JWT ${userToken}`,\r\n },\r\n });\r\n postData._id = uuid();\r\n postData.template = incompatibleTemplateDoc.id;\r\n ({ doc: fieldsDoc } = await client.post(`/${FieldCollection.slug}?locale=${testConfig.defaultLocale}`, postData, {\r\n headers: {\r\n Authorization: `JWT ${userToken}`,\r\n },\r\n }));\r\n expect(fieldsDoc).toBeUndefined();\r\n } catch (error: any) {\r\n expect(error).toBeDefined();\r\n expect(error.status).toBe(400);\r\n }\r\n });\r\n });\r\n});\r\n"],"names":["config","FieldCollection","getTestConfig","PageCollection","clearContext","endUsers","getContext","users","v4","uuid","afterAll","beforeAll","describe","expect","it","options","payload","client","userToken","endUserToken","apiKey","testConfig","context","getToken","admin","user","api","collection","field","collections","find","x","slug","fields","type","name","toBeDefined","hasMany","toEqual","relationTo","template","filterOptions","fieldsDoc","postData","_id","title","documents","id","doc","post","defaultLocale","headers","Authorization","incompatibleTemplateDoc","hasCompatibleCollections","compatibleCollections","toBeUndefined","error","status","toBe"],"mappings":"AAAA,SAASA,MAAM,EAAEC,eAAe,EAAEC,aAAa,EAAEC,cAAc,QAAoB,SAAS;AAC5F,SAASC,YAAY,EAAEC,QAAQ,EAAEC,UAAU,EAAcC,KAAK,QAAQ,6BAA6B;AAEnG,SAASC,MAAMC,IAAI,QAAQ,OAAO;AAClC,SAASC,QAAQ,EAAEC,SAAS,EAAEC,QAAQ,EAAEC,MAAM,EAAEC,EAAE,QAAQ,SAAS;AACnE,SAASC,OAAO,QAAQ,gBAAgB;AAExCH,SAAS,sBAAsB;IAE7B,IAAII;IACJ,IAAIC;IACJ,IAAIC;IACJ,IAAIC;IACJ,IAAIC;IACJ,IAAIC;IAEJV,UAAU;QACR,MAAMW,UAAU,MAAMhB,WAAWN;QACjCgB,UAAUM,QAAQN,OAAO;QACzBC,SAASK,QAAQL,MAAM;QACvBC,YAAY,MAAMD,OAAOM,QAAQ,CAAC,SAAShB,MAAMiB,KAAK;QACtDL,eAAe,MAAMF,OAAOM,QAAQ,CAAC,aAAalB,SAASoB,IAAI;QAC/DL,SAASb,MAAMmB,GAAG,CAACN,MAAM;QACzBC,aAAa,MAAMnB,cAAce,QAAQC;IAC3C;IAEAR,SAAS;QACP,MAAMN;IACR;IAEAQ,SAAS,gBAAgB;QACvB,IAAIe;QACJ,IAAIC;QAEJjB,UAAU;YACRgB,aAAaX,QAAQhB,MAAM,CAAC6B,WAAW,CAACC,IAAI,CAACC,CAAAA,IAAKA,EAAEC,IAAI,KAAK/B,gBAAgB+B,IAAI;QACnF;QAEAlB,GAAG,+DAA+D;YAChEc,QAAQD,WAAWM,MAAM,CAACH,IAAI,CAACF,CAAAA,QAASA,MAAMM,IAAI,KAAK,kBAAkBN,MAAMO,IAAI,KAAK;YACxFtB,OAAOe,OAAOQ,WAAW;QAC3B;QAEAtB,GAAG,kCAAkC;YACnCD,OAAOe,MAAMS,OAAO,EAAEC,OAAO,CAAC;QAChC;QAEAxB,GAAG,4DAA4D;YAC7DD,OAAOe,MAAMW,UAAU,EAAED,OAAO,CAACvB,QAAQiB,IAAI,CAACQ,QAAQ;QACxD;QAEA1B,GAAG,mEAAmE;YACpED,OAAOe,MAAMa,aAAa,EAAEL,WAAW;QACzC;IACF;IAEAxB,SAAS,qBAAqB;QAC5B,IAAI8B;QACJ,IAAIC;QAEJhC,UAAU;YACRgC,WAAW;gBACTC,KAAKnC;gBACLoC,OAAOpC;gBACP+B,UAAUnB,WAAWyB,SAAS,CAACN,QAAQ,CAACO,EAAE;YAC5C;YACC,CAAA,EAAEC,KAAKN,SAAS,EAAE,GAAG,MAAMzB,OAAOgC,IAAI,CAAC,CAAC,CAAC,EAAEhD,gBAAgB+B,IAAI,CAAC,QAAQ,EAAEX,WAAW6B,aAAa,CAAC,CAAC,EAAEP,UAAU;gBAC/GQ,SAAS;oBACPC,eAAe,CAAC,IAAI,EAAElC,UAAU,CAAC;gBACnC;YACF,EAAC;QACH;QAEAJ,GAAG,wCAAwC;YACzCD,OAAO6B,UAAUF,QAAQ,CAACO,EAAE,EAAET,OAAO,CAACK,SAASH,QAAQ;QACzD;QAEA1B,GAAG,2CAA2C;YAC5C,IAAI;gBACF,MAAM,EAAEkC,KAAKK,uBAAuB,EAAE,GAAG,MAAMpC,OAAOgC,IAAI,CAAC,CAAC,CAAC,EAAElC,QAAQiB,IAAI,CAACQ,QAAQ,CAAC,QAAQ,EAAEnB,WAAW6B,aAAa,CAAC,CAAC,EAAE;oBACzHH,IAAItC;oBACJ0B,MAAM1B;oBACN6C,0BAA0B;oBAC1BC,uBAAuB;wBAACpD,eAAe6B,IAAI;qBAAC;gBAC9C,GAAG;oBACDmB,SAAS;wBACPC,eAAe,CAAC,IAAI,EAAElC,UAAU,CAAC;oBACnC;gBACF;gBACAyB,SAASC,GAAG,GAAGnC;gBACfkC,SAASH,QAAQ,GAAGa,wBAAwBN,EAAE;gBAC7C,CAAA,EAAEC,KAAKN,SAAS,EAAE,GAAG,MAAMzB,OAAOgC,IAAI,CAAC,CAAC,CAAC,EAAEhD,gBAAgB+B,IAAI,CAAC,QAAQ,EAAEX,WAAW6B,aAAa,CAAC,CAAC,EAAEP,UAAU;oBAC/GQ,SAAS;wBACPC,eAAe,CAAC,IAAI,EAAElC,UAAU,CAAC;oBACnC;gBACF,EAAC;gBACDL,OAAO6B,WAAWc,aAAa;YACjC,EAAE,OAAOC,OAAY;gBACnB5C,OAAO4C,OAAOrB,WAAW;gBACzBvB,OAAO4C,MAAMC,MAAM,EAAEC,IAAI,CAAC;YAC5B;QACF;IACF;AACF"}
@@ -0,0 +1,21 @@
1
+ import { deepMerge } from '@websolutespa/payload-utils';
2
+ import { options } from '../../options';
3
+ import { isAdmin } from '../access';
4
+ export const TenantsDefault = {
5
+ name: 'tenants',
6
+ type: 'relationship',
7
+ hasMany: true,
8
+ relationTo: [
9
+ options.slug.market
10
+ ],
11
+ access: {
12
+ create: isAdmin,
13
+ update: isAdmin
14
+ }
15
+ };
16
+ export const withTenants = (srcOptions = {})=>{
17
+ const field = deepMerge(TenantsDefault, srcOptions);
18
+ return field;
19
+ };
20
+
21
+ //# sourceMappingURL=withTenants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/core/fields/withTenants.ts"],"sourcesContent":["import { deepMerge } from '@websolutespa/payload-utils';\r\nimport { RelationshipField } from 'payload';\r\nimport { options } from '../../options';\r\nimport { isAdmin } from '../access';\r\n\r\nexport type WithTenantsProps = (Omit<RelationshipField, 'type' | 'name' | 'hasMany' | 'relationTo'> & { name?: string, relationTo?: string | string[] });\r\nexport type WithTenants = WithTenantsProps & { type: 'withTenants' };\r\n\r\nexport const TenantsDefault: RelationshipField = {\r\n name: 'tenants',\r\n type: 'relationship',\r\n hasMany: true,\r\n relationTo: [options.slug.market],\r\n access: {\r\n create: isAdmin,\r\n update: isAdmin,\r\n },\r\n};\r\n\r\nexport const withTenants = (srcOptions: WithTenantsProps = {}): RelationshipField => {\r\n const field = deepMerge<RelationshipField>(TenantsDefault, srcOptions as RelationshipField);\r\n return field;\r\n};\r\n"],"names":["deepMerge","options","isAdmin","TenantsDefault","name","type","hasMany","relationTo","slug","market","access","create","update","withTenants","srcOptions","field"],"mappings":"AAAA,SAASA,SAAS,QAAQ,8BAA8B;AAExD,SAASC,OAAO,QAAQ,gBAAgB;AACxC,SAASC,OAAO,QAAQ,YAAY;AAKpC,OAAO,MAAMC,iBAAoC;IAC/CC,MAAM;IACNC,MAAM;IACNC,SAAS;IACTC,YAAY;QAACN,QAAQO,IAAI,CAACC,MAAM;KAAC;IACjCC,QAAQ;QACNC,QAAQT;QACRU,QAAQV;IACV;AACF,EAAE;AAEF,OAAO,MAAMW,cAAc,CAACC,aAA+B,CAAC,CAAC;IAC3D,MAAMC,QAAQf,UAA6BG,gBAAgBW;IAC3D,OAAOC;AACT,EAAE"}
@@ -0,0 +1,42 @@
1
+ import { config } from '@/test';
2
+ import { clearContext, endUsers, getContext, users } from '@websolutespa/test/payload';
3
+ import { afterAll, beforeAll, describe, expect, it } from 'vitest';
4
+ import { options } from '../../options';
5
+ describe('withTenants field', ()=>{
6
+ let payload;
7
+ let client;
8
+ let userToken;
9
+ let endUserToken;
10
+ let apiKey;
11
+ beforeAll(async ()=>{
12
+ const context = await getContext(config);
13
+ payload = context.payload;
14
+ client = context.client;
15
+ userToken = await client.getToken('users', users.admin);
16
+ endUserToken = await client.getToken('end_users', endUsers.user);
17
+ apiKey = users.api.apiKey;
18
+ });
19
+ afterAll(async ()=>{
20
+ await clearContext();
21
+ });
22
+ describe('Field config', ()=>{
23
+ let collection;
24
+ let field;
25
+ beforeAll(async ()=>{
26
+ collection = payload.config.collections.find((collection)=>collection.slug === options.slug.users);
27
+ });
28
+ it('Users collection should have a field named "tenants" of type "relationship"', ()=>{
29
+ field = collection.fields.find((field)=>field.type === 'relationship' && field.name === 'tenants');
30
+ expect(field).toBeDefined();
31
+ });
32
+ it('should allow multiple relations', ()=>{
33
+ expect(field.hasMany).toEqual(true);
34
+ });
35
+ it('should be editable only by admins', ()=>{
36
+ expect(field.access.create.name).toEqual('isAdmin');
37
+ expect(field.access.update.name).toEqual('isAdmin');
38
+ });
39
+ });
40
+ });
41
+
42
+ //# sourceMappingURL=withTenants.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/core/fields/withTenants.test.ts"],"sourcesContent":["import { config } from '@/test';\r\nimport { clearContext, endUsers, getContext, RestClient, users } from '@websolutespa/test/payload';\r\nimport { Payload, RelationshipField, SanitizedCollectionConfig } from 'payload';\r\nimport { afterAll, beforeAll, describe, expect, it } from 'vitest';\r\nimport { options } from '../../options';\r\n\r\ndescribe('withTenants field', () => {\r\n\r\n let payload: Payload;\r\n let client: RestClient;\r\n let userToken: string;\r\n let endUserToken: string;\r\n let apiKey: string;\r\n\r\n beforeAll(async () => {\r\n const context = await getContext(config);\r\n payload = context.payload;\r\n client = context.client;\r\n userToken = await client.getToken('users', users.admin);\r\n endUserToken = await client.getToken('end_users', endUsers.user);\r\n apiKey = users.api.apiKey;\r\n });\r\n\r\n afterAll(async () => {\r\n await clearContext();\r\n });\r\n\r\n describe('Field config', () => {\r\n let collection: SanitizedCollectionConfig;\r\n let field: RelationshipField;\r\n\r\n beforeAll(async () => {\r\n collection = payload.config.collections.find(collection => collection.slug === options.slug.users)!;\r\n });\r\n\r\n it('Users collection should have a field named \"tenants\" of type \"relationship\"', () => {\r\n field = collection.fields.find(field => field.type === 'relationship' && field.name === 'tenants') as RelationshipField;\r\n expect(field).toBeDefined();\r\n });\r\n\r\n it('should allow multiple relations', () => {\r\n expect(field.hasMany).toEqual(true);\r\n });\r\n\r\n it('should be editable only by admins', () => {\r\n expect(field.access!.create!.name).toEqual('isAdmin');\r\n expect(field.access!.update!.name).toEqual('isAdmin');\r\n });\r\n });\r\n});\r\n"],"names":["config","clearContext","endUsers","getContext","users","afterAll","beforeAll","describe","expect","it","options","payload","client","userToken","endUserToken","apiKey","context","getToken","admin","user","api","collection","field","collections","find","slug","fields","type","name","toBeDefined","hasMany","toEqual","access","create","update"],"mappings":"AAAA,SAASA,MAAM,QAAQ,SAAS;AAChC,SAASC,YAAY,EAAEC,QAAQ,EAAEC,UAAU,EAAcC,KAAK,QAAQ,6BAA6B;AAEnG,SAASC,QAAQ,EAAEC,SAAS,EAAEC,QAAQ,EAAEC,MAAM,EAAEC,EAAE,QAAQ,SAAS;AACnE,SAASC,OAAO,QAAQ,gBAAgB;AAExCH,SAAS,qBAAqB;IAE5B,IAAII;IACJ,IAAIC;IACJ,IAAIC;IACJ,IAAIC;IACJ,IAAIC;IAEJT,UAAU;QACR,MAAMU,UAAU,MAAMb,WAAWH;QACjCW,UAAUK,QAAQL,OAAO;QACzBC,SAASI,QAAQJ,MAAM;QACvBC,YAAY,MAAMD,OAAOK,QAAQ,CAAC,SAASb,MAAMc,KAAK;QACtDJ,eAAe,MAAMF,OAAOK,QAAQ,CAAC,aAAaf,SAASiB,IAAI;QAC/DJ,SAASX,MAAMgB,GAAG,CAACL,MAAM;IAC3B;IAEAV,SAAS;QACP,MAAMJ;IACR;IAEAM,SAAS,gBAAgB;QACvB,IAAIc;QACJ,IAAIC;QAEJhB,UAAU;YACRe,aAAaV,QAAQX,MAAM,CAACuB,WAAW,CAACC,IAAI,CAACH,CAAAA,aAAcA,WAAWI,IAAI,KAAKf,QAAQe,IAAI,CAACrB,KAAK;QACnG;QAEAK,GAAG,+EAA+E;YAChFa,QAAQD,WAAWK,MAAM,CAACF,IAAI,CAACF,CAAAA,QAASA,MAAMK,IAAI,KAAK,kBAAkBL,MAAMM,IAAI,KAAK;YACxFpB,OAAOc,OAAOO,WAAW;QAC3B;QAEApB,GAAG,mCAAmC;YACpCD,OAAOc,MAAMQ,OAAO,EAAEC,OAAO,CAAC;QAChC;QAEAtB,GAAG,qCAAqC;YACtCD,OAAOc,MAAMU,MAAM,CAAEC,MAAM,CAAEL,IAAI,EAAEG,OAAO,CAAC;YAC3CvB,OAAOc,MAAMU,MAAM,CAAEE,MAAM,CAAEN,IAAI,EAAEG,OAAO,CAAC;QAC7C;IACF;AACF"}
@@ -0,0 +1,18 @@
1
+ import { deepMerge } from '@websolutespa/payload-utils';
2
+ export const TextDefaults = {
3
+ name: 'text',
4
+ type: 'text'
5
+ };
6
+ export const withText = (options = {})=>{
7
+ const field = deepMerge(TextDefaults, options);
8
+ return field;
9
+ };
10
+ export const withTextRequired = (options = {})=>{
11
+ const field = deepMerge({
12
+ ...TextDefaults,
13
+ required: true
14
+ }, options);
15
+ return field;
16
+ };
17
+
18
+ //# sourceMappingURL=withText.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/core/fields/withText.ts"],"sourcesContent":["import { deepMerge } from '@websolutespa/payload-utils';\r\nimport { TextField } from 'payload';\r\n\r\nexport type WithTextProps = (Omit<TextField, 'type' | 'name' | 'hasMany'> & { name?: string });\r\nexport type WithText = WithTextProps & { type: 'withText' };\r\n\r\nexport const TextDefaults: TextField = {\r\n name: 'text',\r\n type: 'text',\r\n};\r\n\r\nexport const withText = (options: WithTextProps = {}): TextField => {\r\n const field = deepMerge<TextField>(TextDefaults, options as Partial<TextField>);\r\n return field;\r\n};\r\n\r\nexport const withTextRequired = (options: WithTextProps = {}): TextField => {\r\n const field = deepMerge<TextField>({\r\n ...TextDefaults,\r\n required: true,\r\n }, options as Partial<TextField>);\r\n return field;\r\n};\r\n"],"names":["deepMerge","TextDefaults","name","type","withText","options","field","withTextRequired","required"],"mappings":"AAAA,SAASA,SAAS,QAAQ,8BAA8B;AAMxD,OAAO,MAAMC,eAA0B;IACrCC,MAAM;IACNC,MAAM;AACR,EAAE;AAEF,OAAO,MAAMC,WAAW,CAACC,UAAyB,CAAC,CAAC;IAClD,MAAMC,QAAQN,UAAqBC,cAAcI;IACjD,OAAOC;AACT,EAAE;AAEF,OAAO,MAAMC,mBAAmB,CAACF,UAAyB,CAAC,CAAC;IAC1D,MAAMC,QAAQN,UAAqB;QACjC,GAAGC,YAAY;QACfO,UAAU;IACZ,GAAGH;IACH,OAAOC;AACT,EAAE"}
@@ -0,0 +1,56 @@
1
+ import { config, FieldCollection, getTestConfig } from '@/test';
2
+ import { clearContext, endUsers, getContext, users } from '@websolutespa/test/payload';
3
+ import { v4 as uuid } from 'uuid';
4
+ import { afterAll, beforeAll, describe, expect, it } from 'vitest';
5
+ describe('withText field', ()=>{
6
+ let payload;
7
+ let client;
8
+ let userToken;
9
+ let endUserToken;
10
+ let apiKey;
11
+ let testConfig;
12
+ beforeAll(async ()=>{
13
+ const context = await getContext(config);
14
+ payload = context.payload;
15
+ client = context.client;
16
+ userToken = await client.getToken('users', users.admin);
17
+ endUserToken = await client.getToken('end_users', endUsers.user);
18
+ apiKey = users.api.apiKey;
19
+ testConfig = await getTestConfig(client, userToken);
20
+ });
21
+ afterAll(async ()=>{
22
+ await clearContext();
23
+ });
24
+ describe('Field config', ()=>{
25
+ let collection;
26
+ let field;
27
+ beforeAll(async ()=>{
28
+ collection = payload.config.collections.find((x)=>x.slug === FieldCollection.slug);
29
+ });
30
+ it('should have a field named "text" of type "text"', ()=>{
31
+ field = collection?.fields?.find((field)=>field.type === 'text' && field.name === 'text');
32
+ expect(field).toBeDefined();
33
+ });
34
+ });
35
+ describe('Document creation', ()=>{
36
+ let fieldsDoc;
37
+ let postData;
38
+ beforeAll(async ()=>{
39
+ postData = {
40
+ _id: uuid(),
41
+ title: uuid(),
42
+ Text: uuid()
43
+ };
44
+ ({ doc: fieldsDoc } = await client.post(`/${FieldCollection.slug}?locale=${testConfig.defaultLocale}`, postData, {
45
+ headers: {
46
+ Authorization: `JWT ${userToken}`
47
+ }
48
+ }));
49
+ });
50
+ it('should have a valid "text" field', async ()=>{
51
+ expect(fieldsDoc.text).toEqual(postData.text);
52
+ });
53
+ });
54
+ });
55
+
56
+ //# sourceMappingURL=withText.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/core/fields/withText.test.ts"],"sourcesContent":["import { config, FieldCollection, getTestConfig, TestConfig } from '@/test';\r\nimport { clearContext, endUsers, getContext, RestClient, users } from '@websolutespa/test/payload';\r\nimport { Payload, SanitizedCollectionConfig, TextField } from 'payload';\r\nimport { v4 as uuid } from 'uuid';\r\nimport { afterAll, beforeAll, describe, expect, it } from 'vitest';\r\n\r\ndescribe('withText field', () => {\r\n\r\n let payload: Payload;\r\n let client: RestClient;\r\n let userToken: string;\r\n let endUserToken: string;\r\n let apiKey: string;\r\n let testConfig: TestConfig;\r\n\r\n beforeAll(async () => {\r\n const context = await getContext(config);\r\n payload = context.payload;\r\n client = context.client;\r\n userToken = await client.getToken('users', users.admin);\r\n endUserToken = await client.getToken('end_users', endUsers.user);\r\n apiKey = users.api.apiKey;\r\n testConfig = await getTestConfig(client, userToken);\r\n });\r\n\r\n afterAll(async () => {\r\n await clearContext();\r\n });\r\n\r\n describe('Field config', () => {\r\n let collection: SanitizedCollectionConfig;\r\n let field: TextField;\r\n\r\n beforeAll(async () => {\r\n collection = payload.config.collections.find(x => x.slug === FieldCollection.slug)!;\r\n });\r\n\r\n it('should have a field named \"text\" of type \"text\"', () => {\r\n field = collection?.fields?.find(field => field.type === 'text' && field.name === 'text') as TextField;\r\n expect(field).toBeDefined();\r\n });\r\n });\r\n\r\n describe('Document creation', () => {\r\n let fieldsDoc: any;\r\n let postData: any;\r\n\r\n beforeAll(async () => {\r\n postData = {\r\n _id: uuid(),\r\n title: uuid(),\r\n Text: uuid(),\r\n };\r\n\r\n ({ doc: fieldsDoc } = await client.post(`/${FieldCollection.slug}?locale=${testConfig.defaultLocale}`, postData, {\r\n headers: {\r\n Authorization: `JWT ${userToken}`,\r\n },\r\n }));\r\n });\r\n\r\n it('should have a valid \"text\" field', async () => {\r\n expect(fieldsDoc.text).toEqual(postData.text);\r\n });\r\n });\r\n});\r\n"],"names":["config","FieldCollection","getTestConfig","clearContext","endUsers","getContext","users","v4","uuid","afterAll","beforeAll","describe","expect","it","payload","client","userToken","endUserToken","apiKey","testConfig","context","getToken","admin","user","api","collection","field","collections","find","x","slug","fields","type","name","toBeDefined","fieldsDoc","postData","_id","title","Text","doc","post","defaultLocale","headers","Authorization","text","toEqual"],"mappings":"AAAA,SAASA,MAAM,EAAEC,eAAe,EAAEC,aAAa,QAAoB,SAAS;AAC5E,SAASC,YAAY,EAAEC,QAAQ,EAAEC,UAAU,EAAcC,KAAK,QAAQ,6BAA6B;AAEnG,SAASC,MAAMC,IAAI,QAAQ,OAAO;AAClC,SAASC,QAAQ,EAAEC,SAAS,EAAEC,QAAQ,EAAEC,MAAM,EAAEC,EAAE,QAAQ,SAAS;AAEnEF,SAAS,kBAAkB;IAEzB,IAAIG;IACJ,IAAIC;IACJ,IAAIC;IACJ,IAAIC;IACJ,IAAIC;IACJ,IAAIC;IAEJT,UAAU;QACR,MAAMU,UAAU,MAAMf,WAAWL;QACjCc,UAAUM,QAAQN,OAAO;QACzBC,SAASK,QAAQL,MAAM;QACvBC,YAAY,MAAMD,OAAOM,QAAQ,CAAC,SAASf,MAAMgB,KAAK;QACtDL,eAAe,MAAMF,OAAOM,QAAQ,CAAC,aAAajB,SAASmB,IAAI;QAC/DL,SAASZ,MAAMkB,GAAG,CAACN,MAAM;QACzBC,aAAa,MAAMjB,cAAca,QAAQC;IAC3C;IAEAP,SAAS;QACP,MAAMN;IACR;IAEAQ,SAAS,gBAAgB;QACvB,IAAIc;QACJ,IAAIC;QAEJhB,UAAU;YACRe,aAAaX,QAAQd,MAAM,CAAC2B,WAAW,CAACC,IAAI,CAACC,CAAAA,IAAKA,EAAEC,IAAI,KAAK7B,gBAAgB6B,IAAI;QACnF;QAEAjB,GAAG,mDAAmD;YACpDa,QAAQD,YAAYM,QAAQH,KAAKF,CAAAA,QAASA,MAAMM,IAAI,KAAK,UAAUN,MAAMO,IAAI,KAAK;YAClFrB,OAAOc,OAAOQ,WAAW;QAC3B;IACF;IAEAvB,SAAS,qBAAqB;QAC5B,IAAIwB;QACJ,IAAIC;QAEJ1B,UAAU;YACR0B,WAAW;gBACTC,KAAK7B;gBACL8B,OAAO9B;gBACP+B,MAAM/B;YACR;YAEC,CAAA,EAAEgC,KAAKL,SAAS,EAAE,GAAG,MAAMpB,OAAO0B,IAAI,CAAC,CAAC,CAAC,EAAExC,gBAAgB6B,IAAI,CAAC,QAAQ,EAAEX,WAAWuB,aAAa,CAAC,CAAC,EAAEN,UAAU;gBAC/GO,SAAS;oBACPC,eAAe,CAAC,IAAI,EAAE5B,UAAU,CAAC;gBACnC;YACF,EAAC;QACH;QAEAH,GAAG,oCAAoC;YACrCD,OAAOuB,UAAUU,IAAI,EAAEC,OAAO,CAACV,SAASS,IAAI;QAC9C;IACF;AACF"}
@@ -0,0 +1,17 @@
1
+ import { deepMerge } from '@websolutespa/payload-utils';
2
+ import { withText } from './withText';
3
+ export const withTitle = (options = {})=>{
4
+ return withText(deepMerge({
5
+ name: 'title',
6
+ localized: true
7
+ }, options));
8
+ };
9
+ export const withTitleRequired = (options = {})=>{
10
+ return withText(deepMerge({
11
+ name: 'title',
12
+ localized: true,
13
+ required: true
14
+ }, options));
15
+ };
16
+
17
+ //# sourceMappingURL=withTitle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/core/fields/withTitle.ts"],"sourcesContent":["import { deepMerge } from '@websolutespa/payload-utils';\r\nimport { TextField } from 'payload';\r\nimport { withText } from './withText';\r\n\r\nexport type WithTitleProps = (Omit<TextField, 'type' | 'name' | 'hasMany'> & { name?: string });\r\nexport type WithTitle = WithTitleProps & { type: 'withTitle' };\r\n\r\nexport const withTitle = (options: WithTitleProps = {}): TextField => {\r\n return withText(deepMerge<TextField>({\r\n name: 'title',\r\n localized: true,\r\n }, options as Partial<TextField>));\r\n};\r\n\r\nexport const withTitleRequired = (options: WithTitleProps = {}): TextField => {\r\n return withText(deepMerge<TextField>({\r\n name: 'title',\r\n localized: true,\r\n required: true,\r\n }, options as Partial<TextField>));\r\n};\r\n"],"names":["deepMerge","withText","withTitle","options","name","localized","withTitleRequired","required"],"mappings":"AAAA,SAASA,SAAS,QAAQ,8BAA8B;AAExD,SAASC,QAAQ,QAAQ,aAAa;AAKtC,OAAO,MAAMC,YAAY,CAACC,UAA0B,CAAC,CAAC;IACpD,OAAOF,SAASD,UAAqB;QACnCI,MAAM;QACNC,WAAW;IACb,GAAGF;AACL,EAAE;AAEF,OAAO,MAAMG,oBAAoB,CAACH,UAA0B,CAAC,CAAC;IAC5D,OAAOF,SAASD,UAAqB;QACnCI,MAAM;QACNC,WAAW;QACXE,UAAU;IACZ,GAAGJ;AACL,EAAE"}
@@ -0,0 +1,58 @@
1
+ import { config, FieldCollection, getTestConfig } from '@/test';
2
+ import { clearContext, endUsers, getContext, users } from '@websolutespa/test/payload';
3
+ import { v4 as uuid } from 'uuid';
4
+ import { afterAll, beforeAll, describe, expect, it } from 'vitest';
5
+ describe('withTitle field', ()=>{
6
+ let payload;
7
+ let client;
8
+ let userToken;
9
+ let endUserToken;
10
+ let apiKey;
11
+ let testConfig;
12
+ beforeAll(async ()=>{
13
+ const context = await getContext(config);
14
+ payload = context.payload;
15
+ client = context.client;
16
+ userToken = await client.getToken('users', users.admin);
17
+ endUserToken = await client.getToken('end_users', endUsers.user);
18
+ apiKey = users.api.apiKey;
19
+ testConfig = await getTestConfig(client, userToken);
20
+ });
21
+ afterAll(async ()=>{
22
+ await clearContext();
23
+ });
24
+ describe('Field config', ()=>{
25
+ let collection;
26
+ let field;
27
+ beforeAll(async ()=>{
28
+ collection = payload.config.collections.find((x)=>x.slug === FieldCollection.slug);
29
+ });
30
+ it('should have a field named "title" of type "text"', ()=>{
31
+ field = collection.fields.find((field)=>field.type === 'text' && field.name === 'title');
32
+ expect(field).toBeDefined();
33
+ });
34
+ it('should be localized', ()=>{
35
+ expect(field.localized).toEqual(true);
36
+ });
37
+ });
38
+ describe('Document creation', ()=>{
39
+ let fieldsDoc;
40
+ let postData;
41
+ beforeAll(async ()=>{
42
+ postData = {
43
+ _id: uuid(),
44
+ title: uuid()
45
+ };
46
+ ({ doc: fieldsDoc } = await client.post(`/${FieldCollection.slug}?locale=${testConfig.defaultLocale}`, postData, {
47
+ headers: {
48
+ Authorization: `JWT ${userToken}`
49
+ }
50
+ }));
51
+ });
52
+ it('should have a valid "title" field', async ()=>{
53
+ expect(fieldsDoc.title).toEqual(postData.title);
54
+ });
55
+ });
56
+ });
57
+
58
+ //# sourceMappingURL=withTitle.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/core/fields/withTitle.test.ts"],"sourcesContent":["import { config, FieldCollection, getTestConfig, TestConfig } from '@/test';\r\nimport { clearContext, endUsers, getContext, RestClient, users } from '@websolutespa/test/payload';\r\nimport { Payload, SanitizedCollectionConfig, TextField } from 'payload';\r\nimport { v4 as uuid } from 'uuid';\r\nimport { afterAll, beforeAll, describe, expect, it } from 'vitest';\r\n\r\ndescribe('withTitle field', () => {\r\n\r\n let payload: Payload;\r\n let client: RestClient;\r\n let userToken: string;\r\n let endUserToken: string;\r\n let apiKey: string;\r\n let testConfig: TestConfig;\r\n\r\n beforeAll(async () => {\r\n const context = await getContext(config);\r\n payload = context.payload;\r\n client = context.client;\r\n userToken = await client.getToken('users', users.admin);\r\n endUserToken = await client.getToken('end_users', endUsers.user);\r\n apiKey = users.api.apiKey;\r\n testConfig = await getTestConfig(client, userToken);\r\n });\r\n\r\n afterAll(async () => {\r\n await clearContext();\r\n });\r\n\r\n describe('Field config', () => {\r\n let collection: SanitizedCollectionConfig;\r\n let field: TextField;\r\n\r\n beforeAll(async () => {\r\n collection = payload.config.collections.find(x => x.slug === FieldCollection.slug)!;\r\n });\r\n\r\n it('should have a field named \"title\" of type \"text\"', () => {\r\n field = collection.fields.find(field => field.type === 'text' && field.name === 'title') as TextField;\r\n expect(field).toBeDefined();\r\n });\r\n\r\n it('should be localized', () => {\r\n expect(field.localized).toEqual(true);\r\n });\r\n });\r\n\r\n describe('Document creation', () => {\r\n let fieldsDoc: any;\r\n let postData: any;\r\n\r\n beforeAll(async () => {\r\n postData = {\r\n _id: uuid(),\r\n title: uuid(),\r\n };\r\n\r\n ({ doc: fieldsDoc } = await client.post(`/${FieldCollection.slug}?locale=${testConfig.defaultLocale}`, postData, {\r\n headers: {\r\n Authorization: `JWT ${userToken}`,\r\n },\r\n }));\r\n });\r\n\r\n it('should have a valid \"title\" field', async () => {\r\n expect(fieldsDoc.title).toEqual(postData.title);\r\n });\r\n });\r\n});\r\n"],"names":["config","FieldCollection","getTestConfig","clearContext","endUsers","getContext","users","v4","uuid","afterAll","beforeAll","describe","expect","it","payload","client","userToken","endUserToken","apiKey","testConfig","context","getToken","admin","user","api","collection","field","collections","find","x","slug","fields","type","name","toBeDefined","localized","toEqual","fieldsDoc","postData","_id","title","doc","post","defaultLocale","headers","Authorization"],"mappings":"AAAA,SAASA,MAAM,EAAEC,eAAe,EAAEC,aAAa,QAAoB,SAAS;AAC5E,SAASC,YAAY,EAAEC,QAAQ,EAAEC,UAAU,EAAcC,KAAK,QAAQ,6BAA6B;AAEnG,SAASC,MAAMC,IAAI,QAAQ,OAAO;AAClC,SAASC,QAAQ,EAAEC,SAAS,EAAEC,QAAQ,EAAEC,MAAM,EAAEC,EAAE,QAAQ,SAAS;AAEnEF,SAAS,mBAAmB;IAE1B,IAAIG;IACJ,IAAIC;IACJ,IAAIC;IACJ,IAAIC;IACJ,IAAIC;IACJ,IAAIC;IAEJT,UAAU;QACR,MAAMU,UAAU,MAAMf,WAAWL;QACjCc,UAAUM,QAAQN,OAAO;QACzBC,SAASK,QAAQL,MAAM;QACvBC,YAAY,MAAMD,OAAOM,QAAQ,CAAC,SAASf,MAAMgB,KAAK;QACtDL,eAAe,MAAMF,OAAOM,QAAQ,CAAC,aAAajB,SAASmB,IAAI;QAC/DL,SAASZ,MAAMkB,GAAG,CAACN,MAAM;QACzBC,aAAa,MAAMjB,cAAca,QAAQC;IAC3C;IAEAP,SAAS;QACP,MAAMN;IACR;IAEAQ,SAAS,gBAAgB;QACvB,IAAIc;QACJ,IAAIC;QAEJhB,UAAU;YACRe,aAAaX,QAAQd,MAAM,CAAC2B,WAAW,CAACC,IAAI,CAACC,CAAAA,IAAKA,EAAEC,IAAI,KAAK7B,gBAAgB6B,IAAI;QACnF;QAEAjB,GAAG,oDAAoD;YACrDa,QAAQD,WAAWM,MAAM,CAACH,IAAI,CAACF,CAAAA,QAASA,MAAMM,IAAI,KAAK,UAAUN,MAAMO,IAAI,KAAK;YAChFrB,OAAOc,OAAOQ,WAAW;QAC3B;QAEArB,GAAG,uBAAuB;YACxBD,OAAOc,MAAMS,SAAS,EAAEC,OAAO,CAAC;QAClC;IACF;IAEAzB,SAAS,qBAAqB;QAC5B,IAAI0B;QACJ,IAAIC;QAEJ5B,UAAU;YACR4B,WAAW;gBACTC,KAAK/B;gBACLgC,OAAOhC;YACT;YAEC,CAAA,EAAEiC,KAAKJ,SAAS,EAAE,GAAG,MAAMtB,OAAO2B,IAAI,CAAC,CAAC,CAAC,EAAEzC,gBAAgB6B,IAAI,CAAC,QAAQ,EAAEX,WAAWwB,aAAa,CAAC,CAAC,EAAEL,UAAU;gBAC/GM,SAAS;oBACPC,eAAe,CAAC,IAAI,EAAE7B,UAAU,CAAC;gBACnC;YACF,EAAC;QACH;QAEAH,GAAG,qCAAqC;YACtCD,OAAOyB,UAAUG,KAAK,EAAEJ,OAAO,CAACE,SAASE,KAAK;QAChD;IACF;AACF"}
@@ -0,0 +1,11 @@
1
+ export * from './access';
2
+ export * from './api';
3
+ export * from './collections';
4
+ export * from './decorators';
5
+ export * from './encryption';
6
+ export * from './fields';
7
+ export * from './logger';
8
+ export * from './translations';
9
+ export * from './utils';
10
+
11
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/core/index.ts"],"sourcesContent":["export * from './access';\r\nexport * from './api';\r\nexport * from './collections';\r\nexport * from './decorators';\r\nexport * from './encryption';\r\nexport * from './fields';\r\nexport * from './logger';\r\nexport * from './translations';\r\nexport * from './utils';\r\n\r\n"],"names":[],"mappings":"AAAA,cAAc,WAAW;AACzB,cAAc,QAAQ;AACtB,cAAc,gBAAgB;AAC9B,cAAc,eAAe;AAC7B,cAAc,eAAe;AAC7B,cAAc,WAAW;AACzB,cAAc,WAAW;AACzB,cAAc,iBAAiB;AAC/B,cAAc,UAAU"}
@@ -0,0 +1,3 @@
1
+ export * from './logger';
2
+
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/core/logger/index.ts"],"sourcesContent":["export * from './logger';\r\n\r\n"],"names":[],"mappings":"AAAA,cAAc,WAAW"}
@@ -0,0 +1,9 @@
1
+ export function log(...rest) {
2
+ if (process.env.TS_JEST === '1') {
3
+ return;
4
+ }
5
+ console.log(...rest);
6
+ // console.log(process.env);
7
+ }
8
+
9
+ //# sourceMappingURL=logger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/core/logger/logger.ts"],"sourcesContent":["export function log(...rest: unknown[]): void {\r\n if (process.env.TS_JEST === '1') {\r\n return;\r\n }\r\n console.log(...rest);\r\n // console.log(process.env);\r\n}\r\n"],"names":["log","rest","process","env","TS_JEST","console"],"mappings":"AAAA,OAAO,SAASA,IAAI,GAAGC,IAAe;IACpC,IAAIC,QAAQC,GAAG,CAACC,OAAO,KAAK,KAAK;QAC/B;IACF;IACAC,QAAQL,GAAG,IAAIC;AACf,4BAA4B;AAC9B"}
@@ -0,0 +1,3 @@
1
+ export * from './translations';
2
+
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/core/translations/index.ts"],"sourcesContent":["export * from './translations';\r\n"],"names":[],"mappings":"AAAA,cAAc,iBAAiB"}