@payloadcms/ui 4.0.0-internal.21664f3 → 4.0.0-internal.2f0d313

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 (488) hide show
  1. package/dist/css/app.css +121 -0
  2. package/dist/css/forms.css +0 -6
  3. package/dist/css/spacing.css +11 -3
  4. package/dist/css/z-index.css +1 -0
  5. package/dist/elements/AddNewRelation/index.css +0 -1
  6. package/dist/elements/AppHeader/index.css +1 -3
  7. package/dist/elements/AppHeader/index.d.ts.map +1 -1
  8. package/dist/elements/AppHeader/index.js +5 -1
  9. package/dist/elements/AppHeader/index.js.map +1 -1
  10. package/dist/elements/ArrayAction/index.d.ts +3 -0
  11. package/dist/elements/ArrayAction/index.d.ts.map +1 -1
  12. package/dist/elements/ArrayAction/index.js +83 -29
  13. package/dist/elements/ArrayAction/index.js.map +1 -1
  14. package/dist/elements/BulkUpload/AddFilesView/index.css +10 -4
  15. package/dist/elements/BulkUpload/AddFilesView/index.d.ts.map +1 -1
  16. package/dist/elements/BulkUpload/AddFilesView/index.js +71 -51
  17. package/dist/elements/BulkUpload/AddFilesView/index.js.map +1 -1
  18. package/dist/elements/BulkUpload/EditMany/DrawerContent.js +2 -2
  19. package/dist/elements/BulkUpload/EditMany/DrawerContent.js.map +1 -1
  20. package/dist/elements/BulkUpload/FileSidebar/index.css +4 -0
  21. package/dist/elements/BulkUpload/FormsManager/createFormData.d.ts +2 -2
  22. package/dist/elements/BulkUpload/FormsManager/createFormData.d.ts.map +1 -1
  23. package/dist/elements/BulkUpload/FormsManager/createFormData.js +4 -15
  24. package/dist/elements/BulkUpload/FormsManager/createFormData.js.map +1 -1
  25. package/dist/elements/BulkUpload/FormsManager/index.d.ts.map +1 -1
  26. package/dist/elements/BulkUpload/FormsManager/index.js +1 -1
  27. package/dist/elements/BulkUpload/FormsManager/index.js.map +1 -1
  28. package/dist/elements/Button/index.css +2 -2
  29. package/dist/elements/Button/index.d.ts.map +1 -1
  30. package/dist/elements/Button/index.js +2 -0
  31. package/dist/elements/Button/index.js.map +1 -1
  32. package/dist/elements/ClipboardAction/clipboardUtilities.d.ts +8 -1
  33. package/dist/elements/ClipboardAction/clipboardUtilities.d.ts.map +1 -1
  34. package/dist/elements/ClipboardAction/clipboardUtilities.js +40 -8
  35. package/dist/elements/ClipboardAction/clipboardUtilities.js.map +1 -1
  36. package/dist/elements/ClipboardAction/clipboardUtilities.spec.js +120 -0
  37. package/dist/elements/ClipboardAction/clipboardUtilities.spec.js.map +1 -0
  38. package/dist/elements/ClipboardAction/index.d.ts.map +1 -1
  39. package/dist/elements/ClipboardAction/index.js +17 -1
  40. package/dist/elements/ClipboardAction/index.js.map +1 -1
  41. package/dist/elements/ClipboardAction/isClipboardDataValid.spec.js +144 -0
  42. package/dist/elements/ClipboardAction/isClipboardDataValid.spec.js.map +1 -0
  43. package/dist/elements/ClipboardAction/mergeFormStateFromClipboard.d.ts +10 -0
  44. package/dist/elements/ClipboardAction/mergeFormStateFromClipboard.d.ts.map +1 -1
  45. package/dist/elements/ClipboardAction/mergeFormStateFromClipboard.js +65 -3
  46. package/dist/elements/ClipboardAction/mergeFormStateFromClipboard.js.map +1 -1
  47. package/dist/elements/ClipboardAction/mergeFormStateFromClipboard.spec.js +345 -1
  48. package/dist/elements/ClipboardAction/mergeFormStateFromClipboard.spec.js.map +1 -1
  49. package/dist/elements/ClipboardAction/types.d.ts +3 -0
  50. package/dist/elements/ClipboardAction/types.d.ts.map +1 -1
  51. package/dist/elements/ClipboardAction/types.js.map +1 -1
  52. package/dist/elements/ClipboardAction/useCanPasteClipboard.d.ts +10 -0
  53. package/dist/elements/ClipboardAction/useCanPasteClipboard.d.ts.map +1 -0
  54. package/dist/elements/ClipboardAction/useCanPasteClipboard.js +21 -0
  55. package/dist/elements/ClipboardAction/useCanPasteClipboard.js.map +1 -0
  56. package/dist/elements/CodeEditor/index.css +0 -5
  57. package/dist/elements/CommandPalette/index.css +0 -7
  58. package/dist/elements/CopyToClipboard/index.d.ts +1 -0
  59. package/dist/elements/CopyToClipboard/index.d.ts.map +1 -1
  60. package/dist/elements/CopyToClipboard/index.js +10 -8
  61. package/dist/elements/CopyToClipboard/index.js.map +1 -1
  62. package/dist/elements/CreateDocumentButton/index.d.ts.map +1 -1
  63. package/dist/elements/CreateDocumentButton/index.js +4 -1
  64. package/dist/elements/CreateDocumentButton/index.js.map +1 -1
  65. package/dist/elements/DatePicker/DatePicker.d.ts.map +1 -1
  66. package/dist/elements/DatePicker/DatePicker.js +1 -0
  67. package/dist/elements/DatePicker/DatePicker.js.map +1 -1
  68. package/dist/elements/DatePicker/index.css +1 -1
  69. package/dist/elements/DeleteDocument/index.d.ts.map +1 -1
  70. package/dist/elements/DeleteDocument/index.js +16 -1
  71. package/dist/elements/DeleteDocument/index.js.map +1 -1
  72. package/dist/elements/Drawer/index.css +10 -4
  73. package/dist/elements/Dropzone/index.css +10 -4
  74. package/dist/elements/DuplicateDocument/SelectLocalesDrawer/index.js +3 -2
  75. package/dist/elements/DuplicateDocument/SelectLocalesDrawer/index.js.map +1 -1
  76. package/dist/elements/EditMany/DrawerContent.js +2 -2
  77. package/dist/elements/EditMany/DrawerContent.js.map +1 -1
  78. package/dist/elements/FieldSelect/reduceFieldOptions.d.ts.map +1 -1
  79. package/dist/elements/FieldSelect/reduceFieldOptions.js +3 -1
  80. package/dist/elements/FieldSelect/reduceFieldOptions.js.map +1 -1
  81. package/dist/elements/FieldSelect/reduceFieldOptions.spec.js +143 -0
  82. package/dist/elements/FieldSelect/reduceFieldOptions.spec.js.map +1 -0
  83. package/dist/elements/FileDetails/StaticFileDetails/index.css +8 -9
  84. package/dist/elements/FileManager/FilePreview/index.css +3 -3
  85. package/dist/elements/FileManager/FileToolbar/index.d.ts.map +1 -1
  86. package/dist/elements/FileManager/FileToolbar/index.js +3 -0
  87. package/dist/elements/FileManager/FileToolbar/index.js.map +1 -1
  88. package/dist/elements/FileManager/index.css +35 -52
  89. package/dist/elements/FileManager/index.d.ts +1 -1
  90. package/dist/elements/FileManager/index.d.ts.map +1 -1
  91. package/dist/elements/FileManager/index.js +385 -282
  92. package/dist/elements/FileManager/index.js.map +1 -1
  93. package/dist/elements/Hierarchy/ColumnBrowser/ColumnItem/index.css +0 -1
  94. package/dist/elements/Hierarchy/Tree/HierarchySidebarTab.d.ts.map +1 -1
  95. package/dist/elements/Hierarchy/Tree/HierarchySidebarTab.js +109 -89
  96. package/dist/elements/Hierarchy/Tree/HierarchySidebarTab.js.map +1 -1
  97. package/dist/elements/Hierarchy/Tree/HierarchySidebarTab.server.d.ts.map +1 -1
  98. package/dist/elements/Hierarchy/Tree/HierarchySidebarTab.server.js +2 -0
  99. package/dist/elements/Hierarchy/Tree/HierarchySidebarTab.server.js.map +1 -1
  100. package/dist/elements/Hierarchy/Tree/TreeNode/index.css +0 -1
  101. package/dist/elements/IDLabel/index.css +6 -0
  102. package/dist/elements/IDLabel/index.d.ts +1 -1
  103. package/dist/elements/IDLabel/index.d.ts.map +1 -1
  104. package/dist/elements/IDLabel/index.js +16 -21
  105. package/dist/elements/IDLabel/index.js.map +1 -1
  106. package/dist/elements/InputStepper/index.css +0 -1
  107. package/dist/elements/ListHeader/TitleActions/ListBulkUploadButton.d.ts +1 -7
  108. package/dist/elements/ListHeader/TitleActions/ListBulkUploadButton.d.ts.map +1 -1
  109. package/dist/elements/ListHeader/TitleActions/ListBulkUploadButton.js +26 -32
  110. package/dist/elements/ListHeader/TitleActions/ListBulkUploadButton.js.map +1 -1
  111. package/dist/elements/Locked/index.css +0 -8
  112. package/dist/elements/Locked/index.d.ts.map +1 -1
  113. package/dist/elements/Locked/index.js +70 -64
  114. package/dist/elements/Locked/index.js.map +1 -1
  115. package/dist/elements/MiniCarousel/index.css +39 -37
  116. package/dist/elements/Nav/SidebarTabs/index.client.d.ts.map +1 -1
  117. package/dist/elements/Nav/SidebarTabs/index.client.js +12 -5
  118. package/dist/elements/Nav/SidebarTabs/index.client.js.map +1 -1
  119. package/dist/elements/Nav/SidebarTabs/index.css +0 -5
  120. package/dist/elements/Nav/SidebarTabs/renderTabServerFn.d.ts +1 -0
  121. package/dist/elements/Nav/SidebarTabs/renderTabServerFn.d.ts.map +1 -1
  122. package/dist/elements/Nav/SidebarTabs/renderTabServerFn.js +2 -1
  123. package/dist/elements/Nav/SidebarTabs/renderTabServerFn.js.map +1 -1
  124. package/dist/elements/NavGroup/index.css +0 -1
  125. package/dist/elements/Popup/PopupButtonList/index.css +1 -1
  126. package/dist/elements/Popup/index.js +1 -1
  127. package/dist/elements/Popup/index.js.map +1 -1
  128. package/dist/elements/PreviewButton/index.d.ts +1 -2
  129. package/dist/elements/PreviewButton/index.d.ts.map +1 -1
  130. package/dist/elements/PreviewButton/index.js +11 -5
  131. package/dist/elements/PreviewButton/index.js.map +1 -1
  132. package/dist/elements/PreviewSizes/index.css +8 -9
  133. package/dist/elements/PublishButton/ScheduleDrawer/index.js +1 -1
  134. package/dist/elements/PublishButton/ScheduleDrawer/index.js.map +1 -1
  135. package/dist/elements/QueryPresets/QueryPresetBar/index.js +1 -3
  136. package/dist/elements/QueryPresets/QueryPresetBar/index.js.map +1 -1
  137. package/dist/elements/ReactSelect/ClearIndicator/index.css +0 -1
  138. package/dist/elements/ReactSelect/MultiValue/index.css +0 -1
  139. package/dist/elements/ReactSelect/MultiValueLabel/index.css +2 -2
  140. package/dist/elements/ReactSelect/index.css +0 -3
  141. package/dist/elements/RelationshipTable/Pagination.d.ts +0 -1
  142. package/dist/elements/RelationshipTable/Pagination.d.ts.map +1 -1
  143. package/dist/elements/RelationshipTable/Pagination.js +27 -77
  144. package/dist/elements/RelationshipTable/Pagination.js.map +1 -1
  145. package/dist/elements/RelationshipTable/index.css +0 -2
  146. package/dist/elements/RelationshipTable/index.d.ts +1 -0
  147. package/dist/elements/RelationshipTable/index.d.ts.map +1 -1
  148. package/dist/elements/RelationshipTable/index.js +41 -5
  149. package/dist/elements/RelationshipTable/index.js.map +1 -1
  150. package/dist/elements/RenderTitle/index.css +4 -0
  151. package/dist/elements/RenderTitle/index.d.ts.map +1 -1
  152. package/dist/elements/RenderTitle/index.js +18 -13
  153. package/dist/elements/RenderTitle/index.js.map +1 -1
  154. package/dist/elements/SelectRow/index.d.ts +4 -3
  155. package/dist/elements/SelectRow/index.d.ts.map +1 -1
  156. package/dist/elements/SelectRow/index.js +10 -7
  157. package/dist/elements/SelectRow/index.js.map +1 -1
  158. package/dist/elements/SidebarToggle/index.css +0 -17
  159. package/dist/elements/SortColumn/index.d.ts.map +1 -1
  160. package/dist/elements/SortColumn/index.js +42 -38
  161. package/dist/elements/SortColumn/index.js.map +1 -1
  162. package/dist/elements/SortHeader/index.d.ts.map +1 -1
  163. package/dist/elements/SortHeader/index.js +29 -26
  164. package/dist/elements/SortHeader/index.js.map +1 -1
  165. package/dist/elements/StepNav/index.css +64 -14
  166. package/dist/elements/StepNav/index.d.ts.map +1 -1
  167. package/dist/elements/StepNav/index.js +143 -69
  168. package/dist/elements/StepNav/index.js.map +1 -1
  169. package/dist/elements/Table/DefaultCell/index.d.ts.map +1 -1
  170. package/dist/elements/Table/DefaultCell/index.js +3 -11
  171. package/dist/elements/Table/DefaultCell/index.js.map +1 -1
  172. package/dist/elements/Table/OrderableRow.d.ts +3 -1
  173. package/dist/elements/Table/OrderableRow.d.ts.map +1 -1
  174. package/dist/elements/Table/OrderableRow.js +17 -1
  175. package/dist/elements/Table/OrderableRow.js.map +1 -1
  176. package/dist/elements/Table/OrderableTable.d.ts.map +1 -1
  177. package/dist/elements/Table/OrderableTable.js +19 -2
  178. package/dist/elements/Table/OrderableTable.js.map +1 -1
  179. package/dist/elements/Table/index.css +1 -0
  180. package/dist/elements/TableSection/index.css +0 -1
  181. package/dist/elements/Thumbnail/index.d.ts +1 -1
  182. package/dist/elements/Thumbnail/index.d.ts.map +1 -1
  183. package/dist/elements/Thumbnail/index.js.map +1 -1
  184. package/dist/elements/TimezonePicker/index.d.ts.map +1 -1
  185. package/dist/elements/TimezonePicker/index.js +5 -1
  186. package/dist/elements/TimezonePicker/index.js.map +1 -1
  187. package/dist/elements/Tooltip/index.css +15 -34
  188. package/dist/elements/Tooltip/index.d.ts +11 -3
  189. package/dist/elements/Tooltip/index.d.ts.map +1 -1
  190. package/dist/elements/Tooltip/index.js +151 -85
  191. package/dist/elements/Tooltip/index.js.map +1 -1
  192. package/dist/elements/Upload/UploadFromURLModal/index.d.ts +1 -1
  193. package/dist/elements/Upload/UploadFromURLModal/index.d.ts.map +1 -1
  194. package/dist/elements/Upload/UploadFromURLModal/index.js.map +1 -1
  195. package/dist/elements/Upload/index.css +39 -37
  196. package/dist/elements/Upload/index.d.ts.map +1 -1
  197. package/dist/elements/Upload/index.js +37 -99
  198. package/dist/elements/Upload/index.js.map +1 -1
  199. package/dist/elements/Upload/usePasteFromClipboard.d.ts +14 -0
  200. package/dist/elements/Upload/usePasteFromClipboard.d.ts.map +1 -0
  201. package/dist/elements/Upload/usePasteFromClipboard.js +93 -0
  202. package/dist/elements/Upload/usePasteFromClipboard.js.map +1 -0
  203. package/dist/elements/Upload/useUploadFromUrl.d.ts +20 -0
  204. package/dist/elements/Upload/useUploadFromUrl.d.ts.map +1 -0
  205. package/dist/elements/Upload/useUploadFromUrl.js +201 -0
  206. package/dist/elements/Upload/useUploadFromUrl.js.map +1 -0
  207. package/dist/elements/UploadDropzoneContent/index.css +31 -0
  208. package/dist/elements/UploadDropzoneContent/index.d.ts +17 -0
  209. package/dist/elements/UploadDropzoneContent/index.d.ts.map +1 -0
  210. package/dist/elements/UploadDropzoneContent/index.js +62 -0
  211. package/dist/elements/UploadDropzoneContent/index.js.map +1 -0
  212. package/dist/elements/WhereBuilder/conditionValue.d.ts +32 -0
  213. package/dist/elements/WhereBuilder/conditionValue.d.ts.map +1 -0
  214. package/dist/elements/WhereBuilder/conditionValue.js +32 -0
  215. package/dist/elements/WhereBuilder/conditionValue.js.map +1 -0
  216. package/dist/elements/WhereBuilder/conditionValue.spec.js +65 -0
  217. package/dist/elements/WhereBuilder/conditionValue.spec.js.map +1 -0
  218. package/dist/elements/WhereBuilder/index.d.ts.map +1 -1
  219. package/dist/elements/WhereBuilder/index.js +15 -4
  220. package/dist/elements/WhereBuilder/index.js.map +1 -1
  221. package/dist/exports/client/index.d.ts +5 -1
  222. package/dist/exports/client/index.d.ts.map +1 -1
  223. package/dist/exports/client/index.js +1 -1
  224. package/dist/exports/client/index.js.map +3 -3
  225. package/dist/fields/Array/ArrayRow.d.ts +1 -0
  226. package/dist/fields/Array/ArrayRow.d.ts.map +1 -1
  227. package/dist/fields/Array/ArrayRow.js +99 -160
  228. package/dist/fields/Array/ArrayRow.js.map +1 -1
  229. package/dist/fields/Array/index.d.ts.map +1 -1
  230. package/dist/fields/Array/index.js +38 -10
  231. package/dist/fields/Array/index.js.map +1 -1
  232. package/dist/fields/Blocks/BlockRow.d.ts +1 -0
  233. package/dist/fields/Blocks/BlockRow.d.ts.map +1 -1
  234. package/dist/fields/Blocks/BlockRow.js +136 -195
  235. package/dist/fields/Blocks/BlockRow.js.map +1 -1
  236. package/dist/fields/Blocks/RowActions.d.ts +3 -0
  237. package/dist/fields/Blocks/RowActions.d.ts.map +1 -1
  238. package/dist/fields/Blocks/RowActions.js +26 -20
  239. package/dist/fields/Blocks/RowActions.js.map +1 -1
  240. package/dist/fields/Blocks/index.d.ts.map +1 -1
  241. package/dist/fields/Blocks/index.js +38 -10
  242. package/dist/fields/Blocks/index.js.map +1 -1
  243. package/dist/fields/Checkbox/Input.d.ts +2 -0
  244. package/dist/fields/Checkbox/Input.d.ts.map +1 -1
  245. package/dist/fields/Checkbox/Input.js +32 -26
  246. package/dist/fields/Checkbox/Input.js.map +1 -1
  247. package/dist/fields/Checkbox/index.css +37 -73
  248. package/dist/fields/FieldError/index.css +0 -9
  249. package/dist/fields/FieldError/index.d.ts.map +1 -1
  250. package/dist/fields/FieldError/index.js +19 -9
  251. package/dist/fields/FieldError/index.js.map +1 -1
  252. package/dist/fields/Join/index.css +9 -0
  253. package/dist/fields/Join/index.d.ts.map +1 -1
  254. package/dist/fields/Join/index.js +13 -9
  255. package/dist/fields/Join/index.js.map +1 -1
  256. package/dist/fields/RadioGroup/index.css +0 -7
  257. package/dist/fields/Relationship/Input.d.ts.map +1 -1
  258. package/dist/fields/Relationship/Input.js +32 -14
  259. package/dist/fields/Relationship/Input.js.map +1 -1
  260. package/dist/fields/Relationship/select-components/MultiValueLabel/index.css +1 -1
  261. package/dist/fields/Slug/index.css +0 -1
  262. package/dist/fields/Slug/index.d.ts.map +1 -1
  263. package/dist/fields/Slug/index.js +75 -111
  264. package/dist/fields/Slug/index.js.map +1 -1
  265. package/dist/fields/Upload/Input.d.ts.map +1 -1
  266. package/dist/fields/Upload/Input.js +26 -0
  267. package/dist/fields/Upload/Input.js.map +1 -1
  268. package/dist/fields/Upload/index.css +19 -4
  269. package/dist/forms/Form/fieldReducer.d.ts.map +1 -1
  270. package/dist/forms/Form/fieldReducer.js +3 -1
  271. package/dist/forms/Form/fieldReducer.js.map +1 -1
  272. package/dist/forms/Form/index.d.ts.map +1 -1
  273. package/dist/forms/Form/index.js +12 -15
  274. package/dist/forms/Form/index.js.map +1 -1
  275. package/dist/forms/Form/types.d.ts +1 -1
  276. package/dist/forms/Form/types.d.ts.map +1 -1
  277. package/dist/forms/Form/types.js.map +1 -1
  278. package/dist/forms/RenderFields/index.css +16 -2
  279. package/dist/forms/WatchChildErrors/index.d.ts.map +1 -1
  280. package/dist/forms/WatchChildErrors/index.js +2 -2
  281. package/dist/forms/WatchChildErrors/index.js.map +1 -1
  282. package/dist/forms/fieldSchemasToFormState/addFieldStatePromise.js +1 -1
  283. package/dist/forms/fieldSchemasToFormState/addFieldStatePromise.js.map +1 -1
  284. package/dist/forms/fieldSchemasToFormState/renderField.d.ts.map +1 -1
  285. package/dist/forms/fieldSchemasToFormState/renderField.js +1 -3
  286. package/dist/forms/fieldSchemasToFormState/renderField.js.map +1 -1
  287. package/dist/icons/Edit/index.d.ts +0 -1
  288. package/dist/icons/Edit/index.d.ts.map +1 -1
  289. package/dist/icons/Edit/index.js +4 -4
  290. package/dist/icons/Edit/index.js.map +1 -1
  291. package/dist/layouts/Root/index.d.ts +1 -1
  292. package/dist/layouts/Root/index.d.ts.map +1 -1
  293. package/dist/layouts/Root/index.js +8 -2
  294. package/dist/layouts/Root/index.js.map +1 -1
  295. package/dist/providers/Actions/index.d.ts +1 -0
  296. package/dist/providers/Actions/index.d.ts.map +1 -1
  297. package/dist/providers/Actions/index.js +43 -11
  298. package/dist/providers/Actions/index.js.map +1 -1
  299. package/dist/providers/Auth/AuthSessionDebug/index.css +48 -0
  300. package/dist/providers/Auth/AuthSessionDebug/index.d.ts +13 -0
  301. package/dist/providers/Auth/AuthSessionDebug/index.d.ts.map +1 -0
  302. package/dist/providers/Auth/AuthSessionDebug/index.js +93 -0
  303. package/dist/providers/Auth/AuthSessionDebug/index.js.map +1 -0
  304. package/dist/providers/Auth/AuthSessionDebug/utilities.d.ts +21 -0
  305. package/dist/providers/Auth/AuthSessionDebug/utilities.d.ts.map +1 -0
  306. package/dist/providers/Auth/AuthSessionDebug/utilities.js +53 -0
  307. package/dist/providers/Auth/AuthSessionDebug/utilities.js.map +1 -0
  308. package/dist/providers/Auth/authSessionRequests.d.ts +27 -0
  309. package/dist/providers/Auth/authSessionRequests.d.ts.map +1 -0
  310. package/dist/providers/Auth/authSessionRequests.js +119 -0
  311. package/dist/providers/Auth/authSessionRequests.js.map +1 -0
  312. package/dist/providers/Auth/authSessionRequests.spec.js +121 -0
  313. package/dist/providers/Auth/authSessionRequests.spec.js.map +1 -0
  314. package/dist/providers/Auth/index.d.ts +2 -56
  315. package/dist/providers/Auth/index.d.ts.map +1 -1
  316. package/dist/providers/Auth/index.js +283 -135
  317. package/dist/providers/Auth/index.js.map +1 -1
  318. package/dist/providers/Auth/sessionActivity.d.ts +23 -0
  319. package/dist/providers/Auth/sessionActivity.d.ts.map +1 -0
  320. package/dist/providers/Auth/sessionActivity.js +49 -0
  321. package/dist/providers/Auth/sessionActivity.js.map +1 -0
  322. package/dist/providers/Auth/sessionActivity.spec.js +44 -0
  323. package/dist/providers/Auth/sessionActivity.spec.js.map +1 -0
  324. package/dist/providers/Auth/sessionTiming.d.ts +11 -0
  325. package/dist/providers/Auth/sessionTiming.d.ts.map +1 -0
  326. package/dist/providers/Auth/sessionTiming.js +18 -0
  327. package/dist/providers/Auth/sessionTiming.js.map +1 -0
  328. package/dist/providers/Auth/tabSessionSync/index.d.ts +17 -0
  329. package/dist/providers/Auth/tabSessionSync/index.d.ts.map +1 -0
  330. package/dist/providers/Auth/tabSessionSync/index.js +263 -0
  331. package/dist/providers/Auth/tabSessionSync/index.js.map +1 -0
  332. package/dist/providers/Auth/tabSessionSync/index.spec.js +463 -0
  333. package/dist/providers/Auth/tabSessionSync/index.spec.js.map +1 -0
  334. package/dist/providers/Auth/tabSessionSync/types.d.ts +107 -0
  335. package/dist/providers/Auth/tabSessionSync/types.d.ts.map +1 -0
  336. package/dist/providers/Auth/tabSessionSync/types.js +6 -0
  337. package/dist/providers/Auth/tabSessionSync/types.js.map +1 -0
  338. package/dist/providers/Auth/tabSessionSync/useTabSessionSync.d.ts +11 -0
  339. package/dist/providers/Auth/tabSessionSync/useTabSessionSync.d.ts.map +1 -0
  340. package/dist/providers/Auth/tabSessionSync/useTabSessionSync.js +90 -0
  341. package/dist/providers/Auth/tabSessionSync/useTabSessionSync.js.map +1 -0
  342. package/dist/providers/Auth/tabSessionSync/utilities.d.ts +26 -0
  343. package/dist/providers/Auth/tabSessionSync/utilities.d.ts.map +1 -0
  344. package/dist/providers/Auth/tabSessionSync/utilities.js +159 -0
  345. package/dist/providers/Auth/tabSessionSync/utilities.js.map +1 -0
  346. package/dist/providers/Auth/types.d.ts +65 -0
  347. package/dist/providers/Auth/types.d.ts.map +1 -0
  348. package/dist/providers/Auth/types.js +2 -0
  349. package/dist/providers/Auth/types.js.map +1 -0
  350. package/dist/providers/Auth/useAuthSessionTimers.d.ts +26 -0
  351. package/dist/providers/Auth/useAuthSessionTimers.d.ts.map +1 -0
  352. package/dist/providers/Auth/useAuthSessionTimers.js +203 -0
  353. package/dist/providers/Auth/useAuthSessionTimers.js.map +1 -0
  354. package/dist/providers/Auth/useAuthSessionTimers.spec.js +311 -0
  355. package/dist/providers/Auth/useAuthSessionTimers.spec.js.map +1 -0
  356. package/dist/providers/DocumentTitle/index.d.ts +1 -0
  357. package/dist/providers/DocumentTitle/index.d.ts.map +1 -1
  358. package/dist/providers/DocumentTitle/index.js +2 -0
  359. package/dist/providers/DocumentTitle/index.js.map +1 -1
  360. package/dist/providers/Embed/index.d.ts +24 -0
  361. package/dist/providers/Embed/index.d.ts.map +1 -0
  362. package/dist/providers/Embed/index.js +105 -0
  363. package/dist/providers/Embed/index.js.map +1 -0
  364. package/dist/providers/FormErrorHandler/index.d.ts +24 -0
  365. package/dist/providers/FormErrorHandler/index.d.ts.map +1 -0
  366. package/dist/providers/FormErrorHandler/index.js +6 -0
  367. package/dist/providers/FormErrorHandler/index.js.map +1 -0
  368. package/dist/providers/Locale/index.d.ts.map +1 -1
  369. package/dist/providers/Locale/index.js +41 -36
  370. package/dist/providers/Locale/index.js.map +1 -1
  371. package/dist/providers/Root/index.d.ts +1 -0
  372. package/dist/providers/Root/index.d.ts.map +1 -1
  373. package/dist/providers/Root/index.js +37 -31
  374. package/dist/providers/Root/index.js.map +1 -1
  375. package/dist/providers/RouteTransition/ProgressBar/index.js +4 -1
  376. package/dist/providers/RouteTransition/ProgressBar/index.js.map +1 -1
  377. package/dist/providers/RouteTransition/ProgressBar/index.spec.js +44 -0
  378. package/dist/providers/RouteTransition/ProgressBar/index.spec.js.map +1 -0
  379. package/dist/providers/RouteTransition/index.d.ts +2 -0
  380. package/dist/providers/RouteTransition/index.d.ts.map +1 -1
  381. package/dist/providers/RouteTransition/index.js +42 -14
  382. package/dist/providers/RouteTransition/index.js.map +1 -1
  383. package/dist/providers/SidebarTabs/index.d.ts +3 -2
  384. package/dist/providers/SidebarTabs/index.d.ts.map +1 -1
  385. package/dist/providers/SidebarTabs/index.js.map +1 -1
  386. package/dist/providers/TableColumns/buildColumnState/index.d.ts.map +1 -1
  387. package/dist/providers/TableColumns/buildColumnState/index.js +1 -1
  388. package/dist/providers/TableColumns/buildColumnState/index.js.map +1 -1
  389. package/dist/providers/TableColumns/buildColumnState/index.spec.js +40 -0
  390. package/dist/providers/TableColumns/buildColumnState/index.spec.js.map +1 -0
  391. package/dist/providers/Theme/index.d.ts +3 -0
  392. package/dist/providers/Theme/index.d.ts.map +1 -1
  393. package/dist/providers/Theme/index.js +107 -95
  394. package/dist/providers/Theme/index.js.map +1 -1
  395. package/dist/providers/UploadHandlers/index.d.ts +2 -7
  396. package/dist/providers/UploadHandlers/index.d.ts.map +1 -1
  397. package/dist/providers/UploadHandlers/index.js +102 -42
  398. package/dist/providers/UploadHandlers/index.js.map +1 -1
  399. package/dist/styles.css +13 -10
  400. package/dist/templates/Default/index.d.ts +1 -0
  401. package/dist/templates/Default/index.d.ts.map +1 -1
  402. package/dist/templates/Default/index.js +2 -0
  403. package/dist/templates/Default/index.js.map +1 -1
  404. package/dist/utilities/combineFieldLabel.d.ts.map +1 -1
  405. package/dist/utilities/combineFieldLabel.js +5 -1
  406. package/dist/utilities/combineFieldLabel.js.map +1 -1
  407. package/dist/utilities/formatMetadata.d.ts.map +1 -1
  408. package/dist/utilities/formatMetadata.js +0 -5
  409. package/dist/utilities/formatMetadata.js.map +1 -1
  410. package/dist/utilities/generateFieldID.d.ts +1 -1
  411. package/dist/utilities/generateFieldID.d.ts.map +1 -1
  412. package/dist/utilities/generateFieldID.js +2 -2
  413. package/dist/utilities/generateFieldID.js.map +1 -1
  414. package/dist/utilities/getFilesFromClipboard.d.ts +10 -0
  415. package/dist/utilities/getFilesFromClipboard.d.ts.map +1 -0
  416. package/dist/utilities/getFilesFromClipboard.js +49 -0
  417. package/dist/utilities/getFilesFromClipboard.js.map +1 -0
  418. package/dist/utilities/getRequestEmbed.d.ts +14 -0
  419. package/dist/utilities/getRequestEmbed.d.ts.map +1 -0
  420. package/dist/utilities/getRequestEmbed.js +10 -0
  421. package/dist/utilities/getRequestEmbed.js.map +1 -0
  422. package/dist/utilities/handleServerFunctions.d.ts +32 -8
  423. package/dist/utilities/handleServerFunctions.d.ts.map +1 -1
  424. package/dist/utilities/handleServerFunctions.js +17 -37
  425. package/dist/utilities/handleServerFunctions.js.map +1 -1
  426. package/dist/utilities/renderTable.d.ts.map +1 -1
  427. package/dist/utilities/renderTable.js +18 -2
  428. package/dist/utilities/renderTable.js.map +1 -1
  429. package/dist/utilities/serverFunctionRegistry.d.ts +12 -7
  430. package/dist/utilities/serverFunctionRegistry.d.ts.map +1 -1
  431. package/dist/utilities/serverFunctionRegistry.js +25 -7
  432. package/dist/utilities/serverFunctionRegistry.js.map +1 -1
  433. package/dist/utilities/slugify.d.ts.map +1 -1
  434. package/dist/utilities/slugify.js +50 -6
  435. package/dist/utilities/slugify.js.map +1 -1
  436. package/dist/views/Dashboard/Default/ModularDashboard/DashboardStepNav.d.ts.map +1 -1
  437. package/dist/views/Dashboard/Default/ModularDashboard/DashboardStepNav.js +3 -2
  438. package/dist/views/Dashboard/Default/ModularDashboard/DashboardStepNav.js.map +1 -1
  439. package/dist/views/Dashboard/Default/ModularDashboard/WidgetEditControl.d.ts.map +1 -1
  440. package/dist/views/Dashboard/Default/ModularDashboard/WidgetEditControl.js +7 -7
  441. package/dist/views/Dashboard/Default/ModularDashboard/WidgetEditControl.js.map +1 -1
  442. package/dist/views/Dashboard/Default/ModularDashboard/index.client.d.ts.map +1 -1
  443. package/dist/views/Dashboard/Default/ModularDashboard/index.client.js +104 -66
  444. package/dist/views/Dashboard/Default/ModularDashboard/index.client.js.map +1 -1
  445. package/dist/views/Dashboard/Default/ModularDashboard/index.css +29 -144
  446. package/dist/views/Dashboard/Default/ModularDashboard/renderWidget/RenderWidget.js +4 -4
  447. package/dist/views/Dashboard/Default/ModularDashboard/renderWidget/RenderWidget.js.map +1 -1
  448. package/dist/views/Dashboard/Default/ModularDashboard/renderWidget/renderWidgetServerFn.js +10 -10
  449. package/dist/views/Dashboard/Default/ModularDashboard/renderWidget/renderWidgetServerFn.js.map +1 -1
  450. package/dist/views/Edit/index.css +61 -53
  451. package/dist/views/HierarchyList/index.css +1 -1
  452. package/dist/views/List/ListHeader/index.d.ts +1 -10
  453. package/dist/views/List/ListHeader/index.d.ts.map +1 -1
  454. package/dist/views/List/ListHeader/index.js +1 -3
  455. package/dist/views/List/ListHeader/index.js.map +1 -1
  456. package/dist/views/List/index.client.d.ts.map +1 -1
  457. package/dist/views/List/index.client.js +0 -14
  458. package/dist/views/List/index.client.js.map +1 -1
  459. package/dist/views/List/index.css +6 -1
  460. package/dist/views/List/index.d.ts.map +1 -1
  461. package/dist/views/List/index.js +4 -0
  462. package/dist/views/List/index.js.map +1 -1
  463. package/dist/views/Logout/index.d.ts.map +1 -1
  464. package/dist/views/Logout/index.js +11 -0
  465. package/dist/views/Logout/index.js.map +1 -1
  466. package/dist/views/Root/getCustomCollectionViewByRoute.d.ts.map +1 -1
  467. package/dist/views/Root/getCustomCollectionViewByRoute.js.map +1 -1
  468. package/dist/views/Root/getCustomGlobalViewByRoute.d.ts.map +1 -1
  469. package/dist/views/Root/getCustomGlobalViewByRoute.js.map +1 -1
  470. package/dist/views/Root/getCustomViewByKey.d.ts.map +1 -1
  471. package/dist/views/Root/getCustomViewByKey.js.map +1 -1
  472. package/dist/views/Root/index.d.ts +12 -1
  473. package/dist/views/Root/index.d.ts.map +1 -1
  474. package/dist/views/Root/index.js +11 -3
  475. package/dist/views/Root/index.js.map +1 -1
  476. package/dist/views/Version/generateVersionViewMetadata.js.map +1 -1
  477. package/dist/views/Versions/generateVersionsViewMetadata.js.map +1 -1
  478. package/package.json +5 -10
  479. package/dist/elements/RelationshipTable/Pagination.css +0 -39
  480. package/dist/scss/app.scss +0 -183
  481. package/dist/scss/colors.scss +0 -191
  482. package/dist/scss/custom.css +0 -1
  483. package/dist/scss/queries.scss +0 -27
  484. package/dist/scss/styles.scss +0 -9
  485. package/dist/scss/svg.scss +0 -10
  486. package/dist/scss/toastify.scss +0 -61
  487. package/dist/scss/vars.scss +0 -192
  488. package/dist/scss/z-index.scss +0 -9
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/providers/Actions/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAuC,MAAM,OAAO,CAAA;AAE3D,KAAK,kBAAkB,GAAG;IACxB,OAAO,EAAE;QACP,CAAC,GAAG,EAAE,MAAM,GAAG,KAAK,CAAC,SAAS,CAAA;KAC/B,CAAA;IACD,cAAc,EAAE,CAAC,OAAO,EAAE,kBAAkB,CAAC,SAAS,CAAC,KAAK,IAAI,CAAA;CACjE,CAAA;AAOD,eAAO,MAAM,UAAU,0BAA4B,CAAA;AAEnD,eAAO,MAAM,eAAe,EAAE,KAAK,CAAC,EAAE,CAAC;IACrC,QAAQ,CAAC,OAAO,CAAC,EAAE;QACjB,CAAC,GAAG,EAAE,MAAM,GAAG,KAAK,CAAC,SAAS,CAAA;KAC/B,CAAA;IACD,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CACnC,CAgBA,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/providers/Actions/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAkD,MAAM,OAAO,CAAA;AAItE,KAAK,kBAAkB,GAAG;IACxB,OAAO,EAAE;QACP,CAAC,GAAG,EAAE,MAAM,GAAG,KAAK,CAAC,SAAS,CAAA;KAC/B,CAAA;IACD,cAAc,EAAE,CAAC,OAAO,EAAE,kBAAkB,CAAC,SAAS,CAAC,KAAK,IAAI,CAAA;CACjE,CAAA;AAOD,eAAO,MAAM,UAAU,0BAA4B,CAAA;AAEnD,eAAO,MAAM,eAAe,EAAE,KAAK,CAAC,EAAE,CAAC;IACrC,QAAQ,CAAC,OAAO,CAAC,EAAE;QACjB,CAAC,GAAG,EAAE,MAAM,GAAG,KAAK,CAAC,SAAS,CAAA;KAC/B,CAAA;IACD,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;IAClC,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAC1B,CAuBA,CAAA"}
@@ -2,22 +2,54 @@
2
2
 
3
3
  import { c as _c } from "react/compiler-runtime";
4
4
  import { jsx as _jsx } from "react/jsx-runtime";
5
- import React, { createContext, use, useState } from 'react';
5
+ import React, { createContext, use, useEffect, useState } from 'react';
6
+ import { useEffectEvent } from '../../hooks/useEffectEvent.js';
6
7
  const ActionsContext = /*#__PURE__*/createContext({
7
8
  Actions: {},
8
9
  setViewActions: () => {}
9
10
  });
10
11
  export const useActions = () => use(ActionsContext);
11
12
  export const ActionsProvider = t0 => {
12
- const $ = _c(4);
13
+ const $ = _c(10);
13
14
  const {
14
15
  Actions,
15
- children
16
+ children,
17
+ viewKey
16
18
  } = t0;
17
19
  const [viewActions, setViewActions] = useState(Actions);
18
20
  let t1;
19
- if ($[0] !== Actions || $[1] !== children || $[2] !== viewActions) {
20
- t1 = _jsx(ActionsContext, {
21
+ if ($[0] !== Actions) {
22
+ t1 = () => {
23
+ setViewActions(Actions);
24
+ };
25
+ $[0] = Actions;
26
+ $[1] = t1;
27
+ } else {
28
+ t1 = $[1];
29
+ }
30
+ const resetViewActions = useEffectEvent(t1);
31
+ let t2;
32
+ if ($[2] !== resetViewActions) {
33
+ t2 = () => {
34
+ resetViewActions();
35
+ };
36
+ $[2] = resetViewActions;
37
+ $[3] = t2;
38
+ } else {
39
+ t2 = $[3];
40
+ }
41
+ let t3;
42
+ if ($[4] !== viewKey) {
43
+ t3 = [viewKey];
44
+ $[4] = viewKey;
45
+ $[5] = t3;
46
+ } else {
47
+ t3 = $[5];
48
+ }
49
+ useEffect(t2, t3);
50
+ let t4;
51
+ if ($[6] !== Actions || $[7] !== children || $[8] !== viewActions) {
52
+ t4 = _jsx(ActionsContext, {
21
53
  value: {
22
54
  Actions: {
23
55
  ...viewActions,
@@ -27,13 +59,13 @@ export const ActionsProvider = t0 => {
27
59
  },
28
60
  children
29
61
  });
30
- $[0] = Actions;
31
- $[1] = children;
32
- $[2] = viewActions;
33
- $[3] = t1;
62
+ $[6] = Actions;
63
+ $[7] = children;
64
+ $[8] = viewActions;
65
+ $[9] = t4;
34
66
  } else {
35
- t1 = $[3];
67
+ t4 = $[9];
36
68
  }
37
- return t1;
69
+ return t4;
38
70
  };
39
71
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["c","_c","React","createContext","use","useState","ActionsContext","Actions","setViewActions","useActions","ActionsProvider","t0","$","children","viewActions","t1","_jsx","value"],"sources":["../../../src/providers/Actions/index.tsx"],"sourcesContent":["'use client'\n\nimport React, { createContext, use, useState } from 'react'\n\ntype ActionsContextType = {\n Actions: {\n [key: string]: React.ReactNode\n }\n setViewActions: (actions: ActionsContextType['Actions']) => void\n}\n\nconst ActionsContext = createContext<ActionsContextType>({\n Actions: {},\n setViewActions: () => {},\n})\n\nexport const useActions = () => use(ActionsContext)\n\nexport const ActionsProvider: React.FC<{\n readonly Actions?: {\n [key: string]: React.ReactNode\n }\n readonly children: React.ReactNode\n}> = ({ Actions, children }) => {\n const [viewActions, setViewActions] = useState(Actions)\n\n return (\n <ActionsContext\n value={{\n Actions: {\n ...viewActions,\n ...Actions,\n },\n setViewActions,\n }}\n >\n {children}\n </ActionsContext>\n )\n}\n"],"mappings":"AAAA;;AAAA,SAAAA,CAAA,IAAAC,EAAA;;AAEA,OAAOC,KAAA,IAASC,aAAa,EAAEC,GAAG,EAAEC,QAAQ,QAAQ;AASpD,MAAMC,cAAA,gBAAiBH,aAAA,CAAkC;EACvDI,OAAA,EAAS,CAAC;EACVC,cAAA,EAAgBA,CAAA,MAAO;AACzB;AAEA,OAAO,MAAMC,UAAA,GAAaA,CAAA,KAAML,GAAA,CAAIE,cAAA;AAEpC,OAAO,MAAMI,eAAA,GAKRC,EAAA;EAAA,MAAAC,CAAA,GAAAX,EAAA;EAAC;IAAAM,OAAA;IAAAM;EAAA,IAAAF,EAAqB;EACzB,OAAAG,WAAA,EAAAN,cAAA,IAAsCH,QAAA,CAASE,OAAA;EAAA,IAAAQ,EAAA;EAAA,IAAAH,CAAA,QAAAL,OAAA,IAAAK,CAAA,QAAAC,QAAA,IAAAD,CAAA,QAAAE,WAAA;IAG7CC,EAAA,GAAAC,IAAA,CAAAV,cAAA;MAAAW,KAAA;QAAAV,OAAA;UAAA,GAGSO,WAAW;UAAA,GACXP;QAAO;QAAAC;MAAA;MAAAK;IAAA,C;;;;;;;;SAJhBE,E;CAYJ","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["c","_c","React","createContext","use","useEffect","useState","useEffectEvent","ActionsContext","Actions","setViewActions","useActions","ActionsProvider","t0","$","children","viewKey","viewActions","t1","resetViewActions","t2","t3","t4","_jsx","value"],"sources":["../../../src/providers/Actions/index.tsx"],"sourcesContent":["'use client'\n\nimport React, { createContext, use, useEffect, useState } from 'react'\n\nimport { useEffectEvent } from '../../hooks/useEffectEvent.js'\n\ntype ActionsContextType = {\n Actions: {\n [key: string]: React.ReactNode\n }\n setViewActions: (actions: ActionsContextType['Actions']) => void\n}\n\nconst ActionsContext = createContext<ActionsContextType>({\n Actions: {},\n setViewActions: () => {},\n})\n\nexport const useActions = () => use(ActionsContext)\n\nexport const ActionsProvider: React.FC<{\n readonly Actions?: {\n [key: string]: React.ReactNode\n }\n readonly children: React.ReactNode\n readonly viewKey?: string\n}> = ({ Actions, children, viewKey }) => {\n const [viewActions, setViewActions] = useState(Actions)\n const resetViewActions = useEffectEvent(() => {\n setViewActions(Actions)\n })\n\n useEffect(() => {\n resetViewActions()\n }, [viewKey])\n\n return (\n <ActionsContext\n value={{\n Actions: {\n ...viewActions,\n ...Actions,\n },\n setViewActions,\n }}\n >\n {children}\n </ActionsContext>\n )\n}\n"],"mappings":"AAAA;;AAAA,SAAAA,CAAA,IAAAC,EAAA;;AAEA,OAAOC,KAAA,IAASC,aAAa,EAAEC,GAAG,EAAEC,SAAS,EAAEC,QAAQ,QAAQ;AAE/D,SAASC,cAAc,QAAQ;AAS/B,MAAMC,cAAA,gBAAiBL,aAAA,CAAkC;EACvDM,OAAA,EAAS,CAAC;EACVC,cAAA,EAAgBA,CAAA,MAAO;AACzB;AAEA,OAAO,MAAMC,UAAA,GAAaA,CAAA,KAAMP,GAAA,CAAII,cAAA;AAEpC,OAAO,MAAMI,eAAA,GAMRC,EAAA;EAAA,MAAAC,CAAA,GAAAb,EAAA;EAAC;IAAAQ,OAAA;IAAAM,QAAA;IAAAC;EAAA,IAAAH,EAA8B;EAClC,OAAAI,WAAA,EAAAP,cAAA,IAAsCJ,QAAA,CAASG,OAAA;EAAA,IAAAS,EAAA;EAAA,IAAAJ,CAAA,QAAAL,OAAA;IACPS,EAAA,GAAAA,CAAA;MACtCR,cAAA,CAAeD,OAAA;IAAA;IACjBK,CAAA,MAAAL,OAAA;IAAAK,CAAA,MAAAI,EAAA;EAAA;IAAAA,EAAA,GAAAJ,CAAA;EAAA;EAFA,MAAAK,gBAAA,GAAyBZ,cAAA,CAAeW,EAExC;EAAA,IAAAE,EAAA;EAAA,IAAAN,CAAA,QAAAK,gBAAA;IAEUC,EAAA,GAAAA,CAAA;MACRD,gBAAA;IAAA;IACFL,CAAA,MAAAK,gBAAA;IAAAL,CAAA,MAAAM,EAAA;EAAA;IAAAA,EAAA,GAAAN,CAAA;EAAA;EAAA,IAAAO,EAAA;EAAA,IAAAP,CAAA,QAAAE,OAAA;IAAGK,EAAA,IAACL,OAAA;IAAQF,CAAA,MAAAE,OAAA;IAAAF,CAAA,MAAAO,EAAA;EAAA;IAAAA,EAAA,GAAAP,CAAA;EAAA;EAFZT,SAAA,CAAUe,EAEV,EAAGC,EAAS;EAAA,IAAAC,EAAA;EAAA,IAAAR,CAAA,QAAAL,OAAA,IAAAK,CAAA,QAAAC,QAAA,IAAAD,CAAA,QAAAG,WAAA;IAGVK,EAAA,GAAAC,IAAA,CAAAf,cAAA;MAAAgB,KAAA;QAAAf,OAAA;UAAA,GAGSQ,WAAW;UAAA,GACXR;QAAO;QAAAC;MAAA;MAAAK;IAAA,C;;;;;;;;SAJhBO,E;CAYJ","ignoreList":[]}
@@ -0,0 +1,48 @@
1
+ @layer payload-default {
2
+ .auth-session-debug {
3
+ background: rgba(20, 20, 24, 0.92);
4
+ border: 1px solid rgba(255, 255, 255, 0.2);
5
+ border-radius: 8px;
6
+ bottom: 16px;
7
+ box-shadow: 0 8px 24px rgba(0, 0, 0, 0.3);
8
+ color: #fff;
9
+ display: grid;
10
+ font-family: monospace;
11
+ font-size: 13px;
12
+ gap: 6px;
13
+ line-height: 1.4;
14
+ padding: 12px 14px;
15
+ pointer-events: none;
16
+ position: fixed;
17
+ right: 16px;
18
+ z-index: 1000;
19
+ }
20
+
21
+ .auth-session-debug__activity {
22
+ align-items: center;
23
+ display: flex;
24
+ gap: 8px;
25
+ }
26
+
27
+ .auth-session-debug__activity-indicator {
28
+ border-radius: 50%;
29
+ height: 8px;
30
+ width: 8px;
31
+ }
32
+
33
+ .auth-session-debug__activity--waiting .auth-session-debug__activity-indicator {
34
+ background: #a1a1aa;
35
+ }
36
+
37
+ .auth-session-debug__activity--tracking .auth-session-debug__activity-indicator {
38
+ background: #f59e0b;
39
+ }
40
+
41
+ .auth-session-debug__activity--will-refresh .auth-session-debug__activity-indicator {
42
+ background: #22c55e;
43
+ }
44
+
45
+ .auth-session-debug__activity--closed .auth-session-debug__activity-indicator {
46
+ background: #ef4444;
47
+ }
48
+ }
@@ -0,0 +1,13 @@
1
+ import React from 'react';
2
+ import './index.css';
3
+ type Props = {
4
+ children?: React.ReactNode;
5
+ };
6
+ /**
7
+ * Displays the current auth session's expiration, refresh, and activity lifecycle.
8
+ *
9
+ * Register this component as an admin provider to render it on every admin page.
10
+ */
11
+ export declare const AuthSessionDebug: React.FC<Props>;
12
+ export {};
13
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/providers/Auth/AuthSessionDebug/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAA;AASzB,OAAO,aAAa,CAAA;AAEpB,KAAK,KAAK,GAAG;IACX,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;CAC3B,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAkD5C,CAAA"}
@@ -0,0 +1,93 @@
1
+ 'use client';
2
+
3
+ import { c as _c } from "react/compiler-runtime";
4
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
5
+ import React from 'react';
6
+ import { useAuth } from '../index.js';
7
+ import { formatCountdown, getActivityStatus, getActivityWindowStatus, getRefreshWindowStatus } from './utilities.js';
8
+ import './index.css';
9
+ /**
10
+ * Displays the current auth session's expiration, refresh, and activity lifecycle.
11
+ *
12
+ * Register this component as an admin provider to render it on every admin page.
13
+ */
14
+ export const AuthSessionDebug = t0 => {
15
+ const $ = _c(7);
16
+ const {
17
+ children
18
+ } = t0;
19
+ const {
20
+ authSession
21
+ } = useAuth();
22
+ const [nowMs, setNowMs] = React.useState();
23
+ let t1;
24
+ let t2;
25
+ if ($[0] === Symbol.for("react.memo_cache_sentinel")) {
26
+ t1 = () => {
27
+ const updateCountdown = () => setNowMs(Date.now());
28
+ updateCountdown();
29
+ const interval = window.setInterval(updateCountdown, 1000);
30
+ return () => window.clearInterval(interval);
31
+ };
32
+ t2 = [];
33
+ $[0] = t1;
34
+ $[1] = t2;
35
+ } else {
36
+ t1 = $[0];
37
+ t2 = $[1];
38
+ }
39
+ React.useEffect(t1, t2);
40
+ const expiresInMs = Math.max(0, (authSession?.expiresAt ?? 0) - (nowMs ?? 0));
41
+ let t3;
42
+ if ($[2] !== authSession || $[3] !== children || $[4] !== expiresInMs || $[5] !== nowMs) {
43
+ const activityStatus = authSession && nowMs !== undefined ? getActivityStatus({
44
+ authSession,
45
+ nowMs
46
+ }) : "waiting";
47
+ const activityWindowStatus = authSession && nowMs !== undefined ? getActivityWindowStatus({
48
+ activityStatus,
49
+ authSession,
50
+ nowMs
51
+ }) : "";
52
+ const refreshWindowStatus = authSession && nowMs !== undefined ? getRefreshWindowStatus({
53
+ authSession,
54
+ nowMs
55
+ }) : "";
56
+ t3 = _jsxs(_Fragment, {
57
+ children: [children, authSession && nowMs !== undefined ? _jsxs("aside", {
58
+ "aria-label": "Auth session countdown",
59
+ className: "auth-session-debug",
60
+ "data-auth-session-debug": true,
61
+ "data-auth-session-expires-at": authSession.expiresAt,
62
+ children: [_jsx("strong", {
63
+ children: "Auth session"
64
+ }), _jsxs("span", {
65
+ children: ["Access expires in: ", formatCountdown(expiresInMs)]
66
+ }), _jsxs("span", {
67
+ children: ["Refresh window: ", _jsx("span", {
68
+ "data-auth-session-refresh-window": true,
69
+ children: refreshWindowStatus
70
+ })]
71
+ }), _jsxs("span", {
72
+ className: `auth-session-debug__activity auth-session-debug__activity--${activityStatus}`,
73
+ children: [_jsx("span", {
74
+ "aria-hidden": true,
75
+ className: "auth-session-debug__activity-indicator"
76
+ }), "Activity window: ", _jsx("span", {
77
+ "data-auth-session-activity": true,
78
+ children: activityWindowStatus
79
+ })]
80
+ })]
81
+ }) : null]
82
+ });
83
+ $[2] = authSession;
84
+ $[3] = children;
85
+ $[4] = expiresInMs;
86
+ $[5] = nowMs;
87
+ $[6] = t3;
88
+ } else {
89
+ t3 = $[6];
90
+ }
91
+ return t3;
92
+ };
93
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":["c","_c","React","useAuth","formatCountdown","getActivityStatus","getActivityWindowStatus","getRefreshWindowStatus","AuthSessionDebug","t0","$","children","authSession","nowMs","setNowMs","useState","t1","t2","Symbol","for","updateCountdown","Date","now","interval","window","setInterval","clearInterval","useEffect","expiresInMs","Math","max","expiresAt","t3","activityStatus","undefined","activityWindowStatus","refreshWindowStatus","_jsxs","_Fragment","className","_jsx"],"sources":["../../../../src/providers/Auth/AuthSessionDebug/index.tsx"],"sourcesContent":["'use client'\n\nimport React from 'react'\n\nimport { useAuth } from '../index.js'\nimport {\n formatCountdown,\n getActivityStatus,\n getActivityWindowStatus,\n getRefreshWindowStatus,\n} from './utilities.js'\nimport './index.css'\n\ntype Props = {\n children?: React.ReactNode\n}\n\n/**\n * Displays the current auth session's expiration, refresh, and activity lifecycle.\n *\n * Register this component as an admin provider to render it on every admin page.\n */\nexport const AuthSessionDebug: React.FC<Props> = ({ children }) => {\n const { authSession } = useAuth()\n const [nowMs, setNowMs] = React.useState<number>()\n\n React.useEffect(() => {\n const updateCountdown = () => setNowMs(Date.now())\n\n updateCountdown()\n\n const interval = window.setInterval(updateCountdown, 1000)\n\n return () => window.clearInterval(interval)\n }, [])\n\n const expiresInMs = Math.max(0, (authSession?.expiresAt ?? 0) - (nowMs ?? 0))\n const activityStatus =\n authSession && nowMs !== undefined ? getActivityStatus({ authSession, nowMs }) : 'waiting'\n const activityWindowStatus =\n authSession && nowMs !== undefined\n ? getActivityWindowStatus({ activityStatus, authSession, nowMs })\n : ''\n const refreshWindowStatus =\n authSession && nowMs !== undefined ? getRefreshWindowStatus({ authSession, nowMs }) : ''\n\n return (\n <>\n {children}\n\n {authSession && nowMs !== undefined ? (\n <aside\n aria-label=\"Auth session countdown\"\n className=\"auth-session-debug\"\n data-auth-session-debug\n data-auth-session-expires-at={authSession.expiresAt}\n >\n <strong>Auth session</strong>\n <span>Access expires in: {formatCountdown(expiresInMs)}</span>\n <span>\n Refresh window: <span data-auth-session-refresh-window>{refreshWindowStatus}</span>\n </span>\n <span\n className={`auth-session-debug__activity auth-session-debug__activity--${activityStatus}`}\n >\n <span aria-hidden className=\"auth-session-debug__activity-indicator\" />\n Activity window: <span data-auth-session-activity>{activityWindowStatus}</span>\n </span>\n </aside>\n ) : null}\n </>\n )\n}\n"],"mappings":"AAAA;;AAAA,SAAAA,CAAA,IAAAC,EAAA;;AAEA,OAAOC,KAAA,MAAW;AAElB,SAASC,OAAO,QAAQ;AACxB,SACEC,eAAe,EACfC,iBAAiB,EACjBC,uBAAuB,EACvBC,sBAAsB,QACjB;AACP,OAAO;AAMP;;;;;AAKA,OAAO,MAAMC,gBAAA,GAAoCC,EAAA;EAAA,MAAAC,CAAA,GAAAT,EAAA;EAAC;IAAAU;EAAA,IAAAF,EAAY;EAC5D;IAAAG;EAAA,IAAwBT,OAAA;EACxB,OAAAU,KAAA,EAAAC,QAAA,IAA0BZ,KAAA,CAAAa,QAAA,CAAc;EAAA,IAAAC,EAAA;EAAA,IAAAC,EAAA;EAAA,IAAAP,CAAA,QAAAQ,MAAA,CAAAC,GAAA;IAExBH,EAAA,GAAAA,CAAA;MACd,MAAAI,eAAA,GAAAA,CAAA,KAA8BN,QAAA,CAASO,IAAA,CAAAC,GAAA,CAAQ;MAE/CF,eAAA;MAEA,MAAAG,QAAA,GAAiBC,MAAA,CAAAC,WAAA,CAAmBL,eAAA,MAAiB;MAAA,aAExCI,MAAA,CAAAE,aAAA,CAAqBH,QAAA;IAAA;IACjCN,EAAA;IAAEP,CAAA,MAAAM,EAAA;IAAAN,CAAA,MAAAO,EAAA;EAAA;IAAAD,EAAA,GAAAN,CAAA;IAAAO,EAAA,GAAAP,CAAA;EAAA;EARLR,KAAA,CAAAyB,SAAA,CAAgBX,EAQhB,EAAGC,EAAE;EAEL,MAAAW,WAAA,GAAoBC,IAAA,CAAAC,GAAA,IAAY,CAAClB,WAAA,EAAAmB,SAAA,KAA0B,KAAMlB,KAAA,KAAS;EAAA,IAAAmB,EAAA;EAAA,IAAAtB,CAAA,QAAAE,WAAA,IAAAF,CAAA,QAAAC,QAAA,IAAAD,CAAA,QAAAkB,WAAA,IAAAlB,CAAA,QAAAG,KAAA;IAC1E,MAAAoB,cAAA,GACErB,WAAA,IAAeC,KAAA,KAAAqB,SAAU,GAAY7B,iBAAA;MAAAO,WAAA;MAAAC;IAAA,CAAuC,IAAK;IACnF,MAAAsB,oBAAA,GACEvB,WAAA,IAAeC,KAAA,KAAAqB,SAAU,GACrB5B,uBAAA;MAAA2B,cAAA;MAAArB,WAAA;MAAAC;IAAA,CAA6D,IAC7D;IACN,MAAAuB,mBAAA,GACExB,WAAA,IAAeC,KAAA,KAAAqB,SAAU,GAAY3B,sBAAA;MAAAK,WAAA;MAAAC;IAAA,CAA4C,IAAK;IAGtFmB,EAAA,GAAAK,KAAA,CAAAC,SAAA;MAAA3B,QAAA,GACGA,QAAA,EAEAC,WAAA,IAAeC,KAAA,KAAAqB,SAAU,GACxBG,KAAA,CAAC;QAAA,cACY;QAAAE,SAAA,EACD;QAAA;QAAA,gCAEoB3B,WAAA,CAAAmB,SAAA;QAAApB,QAAA,GAE9B6B,IAAA,CAAC;UAAA7B,QAAA,EAAO;QAAA,C,GACR0B,KAAA,CAAC;UAAA1B,QAAA,GAAK,uBAAoBP,eAAA,CAAgBwB,WAAA;QAAA,C,GAC1CS,KAAA,CAAC;UAAA1B,QAAA,GAAK,oBACY6B,IAAA,CAAC;YAAA;YAAA7B,QAAA,EAAuCyB;UAAA,C;YAE1DC,KAAA,CAAC;UAAAE,SAAA,EACY,8DAA8DN,cAAA,EAAgB;UAAAtB,QAAA,GAEzF6B,IAAA,CAAC;YAAA;YAAAD,SAAA,EAA2B;UAAA,C,GAA2C,qBACtDC,IAAA,CAAC;YAAA;YAAA7B,QAAA,EAAiCwB;UAAA,C;;eAGrD;IAAA,C;;;;;;;;;SAtBNH,E;CAyBJ","ignoreList":[]}
@@ -0,0 +1,21 @@
1
+ import type { AuthSession } from '../types.js';
2
+ export type ActivityStatus = 'closed' | 'tracking' | 'waiting' | 'will-refresh';
3
+ type GetActivityStatusArgs = {
4
+ authSession: AuthSession;
5
+ nowMs: number;
6
+ };
7
+ type GetActivityWindowStatusArgs = {
8
+ activityStatus: ActivityStatus;
9
+ authSession: AuthSession;
10
+ nowMs: number;
11
+ };
12
+ type GetRefreshWindowStatusArgs = {
13
+ authSession: AuthSession;
14
+ nowMs: number;
15
+ };
16
+ export declare const formatCountdown: (durationMs: number) => string;
17
+ export declare const getActivityStatus: ({ authSession, nowMs, }: GetActivityStatusArgs) => ActivityStatus;
18
+ export declare const getActivityWindowStatus: ({ activityStatus, authSession, nowMs, }: GetActivityWindowStatusArgs) => string;
19
+ export declare const getRefreshWindowStatus: ({ authSession, nowMs, }: GetRefreshWindowStatusArgs) => string;
20
+ export {};
21
+ //# sourceMappingURL=utilities.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utilities.d.ts","sourceRoot":"","sources":["../../../../src/providers/Auth/AuthSessionDebug/utilities.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAE9C,MAAM,MAAM,cAAc,GAAG,QAAQ,GAAG,UAAU,GAAG,SAAS,GAAG,cAAc,CAAA;AAE/E,KAAK,qBAAqB,GAAG;IAC3B,WAAW,EAAE,WAAW,CAAA;IACxB,KAAK,EAAE,MAAM,CAAA;CACd,CAAA;AAED,KAAK,2BAA2B,GAAG;IACjC,cAAc,EAAE,cAAc,CAAA;IAC9B,WAAW,EAAE,WAAW,CAAA;IACxB,KAAK,EAAE,MAAM,CAAA;CACd,CAAA;AAED,KAAK,0BAA0B,GAAG;IAChC,WAAW,EAAE,WAAW,CAAA;IACxB,KAAK,EAAE,MAAM,CAAA;CACd,CAAA;AAED,eAAO,MAAM,eAAe,eAAgB,MAAM,KAAG,MAMpD,CAAA;AAED,eAAO,MAAM,iBAAiB,4BAG3B,qBAAqB,KAAG,cAc1B,CAAA;AAED,eAAO,MAAM,uBAAuB,4CAIjC,2BAA2B,KAAG,MAkBhC,CAAA;AAED,eAAO,MAAM,sBAAsB,4BAGhC,0BAA0B,KAAG,MAU/B,CAAA"}
@@ -0,0 +1,53 @@
1
+ export const formatCountdown = durationMs => {
2
+ const totalSeconds = Math.max(0, Math.ceil(durationMs / 1000));
3
+ const minutes = Math.floor(totalSeconds / 60);
4
+ const seconds = totalSeconds % 60;
5
+ return `${String(minutes).padStart(2, '0')}:${String(seconds).padStart(2, '0')}`;
6
+ };
7
+ export const getActivityStatus = ({
8
+ authSession,
9
+ nowMs
10
+ }) => {
11
+ if (nowMs >= authSession.reminderStartsAt) {
12
+ return 'closed';
13
+ }
14
+ if (authSession.activityRecorded) {
15
+ return 'will-refresh';
16
+ }
17
+ if (nowMs >= authSession.activityTrackingStartsAt) {
18
+ return 'tracking';
19
+ }
20
+ return 'waiting';
21
+ };
22
+ export const getActivityWindowStatus = ({
23
+ activityStatus,
24
+ authSession,
25
+ nowMs
26
+ }) => {
27
+ if (activityStatus === 'closed') {
28
+ return 'Closed · no refresh';
29
+ }
30
+ if (activityStatus === 'will-refresh') {
31
+ if (nowMs < authSession.refreshStartsAt) {
32
+ return `Recorded · refresh in ${formatCountdown(authSession.refreshStartsAt - nowMs)}`;
33
+ }
34
+ return 'Recorded · refreshing';
35
+ }
36
+ if (activityStatus === 'tracking') {
37
+ return `Open · closes in ${formatCountdown(authSession.reminderStartsAt - nowMs)}`;
38
+ }
39
+ return `Opens in ${formatCountdown(authSession.activityTrackingStartsAt - nowMs)}`;
40
+ };
41
+ export const getRefreshWindowStatus = ({
42
+ authSession,
43
+ nowMs
44
+ }) => {
45
+ if (nowMs >= authSession.reminderStartsAt) {
46
+ return 'Closed';
47
+ }
48
+ if (nowMs >= authSession.refreshStartsAt) {
49
+ return 'Open';
50
+ }
51
+ return `Opens in ${formatCountdown(authSession.refreshStartsAt - nowMs)}`;
52
+ };
53
+ //# sourceMappingURL=utilities.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utilities.js","names":["formatCountdown","durationMs","totalSeconds","Math","max","ceil","minutes","floor","seconds","String","padStart","getActivityStatus","authSession","nowMs","reminderStartsAt","activityRecorded","activityTrackingStartsAt","getActivityWindowStatus","activityStatus","refreshStartsAt","getRefreshWindowStatus"],"sources":["../../../../src/providers/Auth/AuthSessionDebug/utilities.ts"],"sourcesContent":["import type { AuthSession } from '../types.js'\n\nexport type ActivityStatus = 'closed' | 'tracking' | 'waiting' | 'will-refresh'\n\ntype GetActivityStatusArgs = {\n authSession: AuthSession\n nowMs: number\n}\n\ntype GetActivityWindowStatusArgs = {\n activityStatus: ActivityStatus\n authSession: AuthSession\n nowMs: number\n}\n\ntype GetRefreshWindowStatusArgs = {\n authSession: AuthSession\n nowMs: number\n}\n\nexport const formatCountdown = (durationMs: number): string => {\n const totalSeconds = Math.max(0, Math.ceil(durationMs / 1000))\n const minutes = Math.floor(totalSeconds / 60)\n const seconds = totalSeconds % 60\n\n return `${String(minutes).padStart(2, '0')}:${String(seconds).padStart(2, '0')}`\n}\n\nexport const getActivityStatus = ({\n authSession,\n nowMs,\n}: GetActivityStatusArgs): ActivityStatus => {\n if (nowMs >= authSession.reminderStartsAt) {\n return 'closed'\n }\n\n if (authSession.activityRecorded) {\n return 'will-refresh'\n }\n\n if (nowMs >= authSession.activityTrackingStartsAt) {\n return 'tracking'\n }\n\n return 'waiting'\n}\n\nexport const getActivityWindowStatus = ({\n activityStatus,\n authSession,\n nowMs,\n}: GetActivityWindowStatusArgs): string => {\n if (activityStatus === 'closed') {\n return 'Closed · no refresh'\n }\n\n if (activityStatus === 'will-refresh') {\n if (nowMs < authSession.refreshStartsAt) {\n return `Recorded · refresh in ${formatCountdown(authSession.refreshStartsAt - nowMs)}`\n }\n\n return 'Recorded · refreshing'\n }\n\n if (activityStatus === 'tracking') {\n return `Open · closes in ${formatCountdown(authSession.reminderStartsAt - nowMs)}`\n }\n\n return `Opens in ${formatCountdown(authSession.activityTrackingStartsAt - nowMs)}`\n}\n\nexport const getRefreshWindowStatus = ({\n authSession,\n nowMs,\n}: GetRefreshWindowStatusArgs): string => {\n if (nowMs >= authSession.reminderStartsAt) {\n return 'Closed'\n }\n\n if (nowMs >= authSession.refreshStartsAt) {\n return 'Open'\n }\n\n return `Opens in ${formatCountdown(authSession.refreshStartsAt - nowMs)}`\n}\n"],"mappings":"AAoBA,OAAO,MAAMA,eAAA,GAAmBC,UAAA;EAC9B,MAAMC,YAAA,GAAeC,IAAA,CAAKC,GAAG,CAAC,GAAGD,IAAA,CAAKE,IAAI,CAACJ,UAAA,GAAa;EACxD,MAAMK,OAAA,GAAUH,IAAA,CAAKI,KAAK,CAACL,YAAA,GAAe;EAC1C,MAAMM,OAAA,GAAUN,YAAA,GAAe;EAE/B,OAAO,GAAGO,MAAA,CAAOH,OAAA,EAASI,QAAQ,CAAC,GAAG,QAAQD,MAAA,CAAOD,OAAA,EAASE,QAAQ,CAAC,GAAG,MAAM;AAClF;AAEA,OAAO,MAAMC,iBAAA,GAAoBA,CAAC;EAChCC,WAAW;EACXC;AAAK,CACiB;EACtB,IAAIA,KAAA,IAASD,WAAA,CAAYE,gBAAgB,EAAE;IACzC,OAAO;EACT;EAEA,IAAIF,WAAA,CAAYG,gBAAgB,EAAE;IAChC,OAAO;EACT;EAEA,IAAIF,KAAA,IAASD,WAAA,CAAYI,wBAAwB,EAAE;IACjD,OAAO;EACT;EAEA,OAAO;AACT;AAEA,OAAO,MAAMC,uBAAA,GAA0BA,CAAC;EACtCC,cAAc;EACdN,WAAW;EACXC;AAAK,CACuB;EAC5B,IAAIK,cAAA,KAAmB,UAAU;IAC/B,OAAO;EACT;EAEA,IAAIA,cAAA,KAAmB,gBAAgB;IACrC,IAAIL,KAAA,GAAQD,WAAA,CAAYO,eAAe,EAAE;MACvC,OAAO,yBAAyBnB,eAAA,CAAgBY,WAAA,CAAYO,eAAe,GAAGN,KAAA,GAAQ;IACxF;IAEA,OAAO;EACT;EAEA,IAAIK,cAAA,KAAmB,YAAY;IACjC,OAAO,oBAAoBlB,eAAA,CAAgBY,WAAA,CAAYE,gBAAgB,GAAGD,KAAA,GAAQ;EACpF;EAEA,OAAO,YAAYb,eAAA,CAAgBY,WAAA,CAAYI,wBAAwB,GAAGH,KAAA,GAAQ;AACpF;AAEA,OAAO,MAAMO,sBAAA,GAAyBA,CAAC;EACrCR,WAAW;EACXC;AAAK,CACsB;EAC3B,IAAIA,KAAA,IAASD,WAAA,CAAYE,gBAAgB,EAAE;IACzC,OAAO;EACT;EAEA,IAAID,KAAA,IAASD,WAAA,CAAYO,eAAe,EAAE;IACxC,OAAO;EACT;EAEA,OAAO,YAAYnB,eAAA,CAAgBY,WAAA,CAAYO,eAAe,GAAGN,KAAA,GAAQ;AAC3E","ignoreList":[]}
@@ -0,0 +1,27 @@
1
+ import type { AuthenticatedUser } from 'payload';
2
+ export type AuthRequestContext = {
3
+ /** Accepts the result when its session is still active and cancels any deferred invalidation. */
4
+ acceptResult: () => boolean;
5
+ /** Invalidates the session after newer queued auth requests have had a chance to restore it. */
6
+ invalidateWhenIdle: (invalidate: () => void) => void;
7
+ /** Whether the session changed or logout began after this request was queued. */
8
+ isResultStale: () => boolean;
9
+ };
10
+ export type AuthSessionRequests = {
11
+ discardPendingResults: () => void;
12
+ isLoggingOut: () => boolean;
13
+ logOut: ({ clearSession, request, }: {
14
+ clearSession: () => void;
15
+ request: () => Promise<void>;
16
+ }) => Promise<void>;
17
+ queue: <Result>(request: (context: AuthRequestContext) => Promise<Result>) => Promise<Result>;
18
+ refresh: (request: (context: AuthRequestContext) => Promise<AuthenticatedUser | null>) => Promise<AuthenticatedUser | null>;
19
+ };
20
+ /**
21
+ * Coordinates requests that read or update the current auth session.
22
+ *
23
+ * Requests run in order, concurrent refreshes and logouts share a promise, and outdated results can
24
+ * be discarded after the session changes.
25
+ */
26
+ export declare function createAuthSessionRequests(): AuthSessionRequests;
27
+ //# sourceMappingURL=authSessionRequests.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"authSessionRequests.d.ts","sourceRoot":"","sources":["../../../src/providers/Auth/authSessionRequests.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAA;AAEhD,MAAM,MAAM,kBAAkB,GAAG;IAC/B,iGAAiG;IACjG,YAAY,EAAE,MAAM,OAAO,CAAA;IAC3B,gGAAgG;IAChG,kBAAkB,EAAE,CAAC,UAAU,EAAE,MAAM,IAAI,KAAK,IAAI,CAAA;IACpD,iFAAiF;IACjF,aAAa,EAAE,MAAM,OAAO,CAAA;CAC7B,CAAA;AAED,MAAM,MAAM,mBAAmB,GAAG;IAChC,qBAAqB,EAAE,MAAM,IAAI,CAAA;IACjC,YAAY,EAAE,MAAM,OAAO,CAAA;IAC3B,MAAM,EAAE,CAAC,EACP,YAAY,EACZ,OAAO,GACR,EAAE;QACD,YAAY,EAAE,MAAM,IAAI,CAAA;QACxB,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;KAC7B,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IACnB,KAAK,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC,OAAO,EAAE,kBAAkB,KAAK,OAAO,CAAC,MAAM,CAAC,KAAK,OAAO,CAAC,MAAM,CAAC,CAAA;IAC7F,OAAO,EAAE,CACP,OAAO,EAAE,CAAC,OAAO,EAAE,kBAAkB,KAAK,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC,KACxE,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC,CAAA;CACvC,CAAA;AAED;;;;;GAKG;AACH,wBAAgB,yBAAyB,IAAI,mBAAmB,CA0J/D"}
@@ -0,0 +1,119 @@
1
+ /**
2
+ * Coordinates requests that read or update the current auth session.
3
+ *
4
+ * Requests run in order, concurrent refreshes and logouts share a promise, and outdated results can
5
+ * be discarded after the session changes.
6
+ */export function createAuthSessionRequests() {
7
+ let authRequestQueue = Promise.resolve();
8
+ let authRequestSequence = 0;
9
+ let isLoggingOut = false;
10
+ let logoutRequest;
11
+ let pendingAuthInvalidation;
12
+ let refreshRequest;
13
+ let sessionGeneration = 0;
14
+ const clearPendingInvalidation = () => {
15
+ pendingAuthInvalidation = undefined;
16
+ };
17
+ const discardPendingResults = () => {
18
+ sessionGeneration += 1;
19
+ clearPendingInvalidation();
20
+ };
21
+ const queue = request => {
22
+ const requestGeneration = sessionGeneration;
23
+ const requestSequence = ++authRequestSequence;
24
+ const runRequest = async () => {
25
+ const isResultStale = () => sessionGeneration !== requestGeneration || isLoggingOut;
26
+ const result = await request({
27
+ acceptResult: () => {
28
+ if (isResultStale()) {
29
+ return false;
30
+ }
31
+ clearPendingInvalidation();
32
+ return true;
33
+ },
34
+ invalidateWhenIdle: invalidate => {
35
+ if (isResultStale()) {
36
+ return;
37
+ }
38
+ if (requestSequence < authRequestSequence) {
39
+ pendingAuthInvalidation = {
40
+ generation: requestGeneration,
41
+ run: invalidate
42
+ };
43
+ } else {
44
+ invalidate();
45
+ }
46
+ },
47
+ isResultStale
48
+ });
49
+ if (requestSequence === authRequestSequence) {
50
+ const pendingInvalidation = pendingAuthInvalidation;
51
+ clearPendingInvalidation();
52
+ if (pendingInvalidation?.generation === sessionGeneration) {
53
+ pendingInvalidation.run();
54
+ }
55
+ }
56
+ return result;
57
+ };
58
+ const queuedRequest = authRequestQueue.then(runRequest, runRequest);
59
+ authRequestQueue = queuedRequest.then(() => undefined, () => undefined);
60
+ return queuedRequest;
61
+ };
62
+ const refresh = request => {
63
+ const requestGeneration = sessionGeneration;
64
+ const activeRequest = refreshRequest;
65
+ if (isLoggingOut) {
66
+ return Promise.resolve(null);
67
+ }
68
+ if (activeRequest?.generation === requestGeneration) {
69
+ return activeRequest.promise;
70
+ }
71
+ const refreshPromise = queue(request);
72
+ refreshRequest = {
73
+ generation: requestGeneration,
74
+ promise: refreshPromise
75
+ };
76
+ /** Stops sharing this refresh after it settles without clearing a newer refresh request. */
77
+ const clearRefreshRequest = () => {
78
+ if (refreshRequest?.promise === refreshPromise) {
79
+ refreshRequest = undefined;
80
+ }
81
+ };
82
+ void refreshPromise.then(clearRefreshRequest, clearRefreshRequest);
83
+ return refreshPromise;
84
+ };
85
+ const logOut = ({
86
+ clearSession,
87
+ request
88
+ }) => {
89
+ if (logoutRequest !== undefined) {
90
+ return logoutRequest;
91
+ }
92
+ isLoggingOut = true;
93
+ clearSession();
94
+ const pendingLogout = queue(async () => {
95
+ try {
96
+ await request();
97
+ } finally {
98
+ isLoggingOut = false;
99
+ }
100
+ });
101
+ logoutRequest = pendingLogout;
102
+ /** Stops sharing this logout after it settles without clearing a newer logout request. */
103
+ const clearLogoutRequest = () => {
104
+ if (logoutRequest === pendingLogout) {
105
+ logoutRequest = undefined;
106
+ }
107
+ };
108
+ void pendingLogout.then(clearLogoutRequest, clearLogoutRequest);
109
+ return pendingLogout;
110
+ };
111
+ return {
112
+ discardPendingResults,
113
+ isLoggingOut: () => isLoggingOut,
114
+ logOut,
115
+ queue,
116
+ refresh
117
+ };
118
+ }
119
+ //# sourceMappingURL=authSessionRequests.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"authSessionRequests.js","names":["createAuthSessionRequests","authRequestQueue","Promise","resolve","authRequestSequence","isLoggingOut","logoutRequest","pendingAuthInvalidation","refreshRequest","sessionGeneration","clearPendingInvalidation","undefined","discardPendingResults","queue","request","requestGeneration","requestSequence","runRequest","isResultStale","result","acceptResult","invalidateWhenIdle","invalidate","generation","run","pendingInvalidation","queuedRequest","then","refresh","activeRequest","promise","refreshPromise","clearRefreshRequest","logOut","clearSession","pendingLogout","clearLogoutRequest"],"sources":["../../../src/providers/Auth/authSessionRequests.ts"],"sourcesContent":["import type { AuthenticatedUser } from 'payload'\n\nexport type AuthRequestContext = {\n /** Accepts the result when its session is still active and cancels any deferred invalidation. */\n acceptResult: () => boolean\n /** Invalidates the session after newer queued auth requests have had a chance to restore it. */\n invalidateWhenIdle: (invalidate: () => void) => void\n /** Whether the session changed or logout began after this request was queued. */\n isResultStale: () => boolean\n}\n\nexport type AuthSessionRequests = {\n discardPendingResults: () => void\n isLoggingOut: () => boolean\n logOut: ({\n clearSession,\n request,\n }: {\n clearSession: () => void\n request: () => Promise<void>\n }) => Promise<void>\n queue: <Result>(request: (context: AuthRequestContext) => Promise<Result>) => Promise<Result>\n refresh: (\n request: (context: AuthRequestContext) => Promise<AuthenticatedUser | null>,\n ) => Promise<AuthenticatedUser | null>\n}\n\n/**\n * Coordinates requests that read or update the current auth session.\n *\n * Requests run in order, concurrent refreshes and logouts share a promise, and outdated results can\n * be discarded after the session changes.\n */\nexport function createAuthSessionRequests(): AuthSessionRequests {\n let authRequestQueue = Promise.resolve()\n let authRequestSequence = 0\n let isLoggingOut = false\n let logoutRequest: Promise<void> | undefined\n let pendingAuthInvalidation:\n | {\n generation: number\n run: () => void\n }\n | undefined\n let refreshRequest:\n | {\n generation: number\n promise: Promise<AuthenticatedUser | null>\n }\n | undefined\n let sessionGeneration = 0\n\n const clearPendingInvalidation = (): void => {\n pendingAuthInvalidation = undefined\n }\n\n const discardPendingResults = (): void => {\n sessionGeneration += 1\n clearPendingInvalidation()\n }\n\n const queue = <Result>(\n request: (context: AuthRequestContext) => Promise<Result>,\n ): Promise<Result> => {\n const requestGeneration = sessionGeneration\n const requestSequence = ++authRequestSequence\n const runRequest = async (): Promise<Result> => {\n const isResultStale = () => sessionGeneration !== requestGeneration || isLoggingOut\n const result = await request({\n acceptResult: () => {\n if (isResultStale()) {\n return false\n }\n\n clearPendingInvalidation()\n return true\n },\n invalidateWhenIdle: (invalidate) => {\n if (isResultStale()) {\n return\n }\n\n if (requestSequence < authRequestSequence) {\n pendingAuthInvalidation = { generation: requestGeneration, run: invalidate }\n } else {\n invalidate()\n }\n },\n isResultStale,\n })\n\n if (requestSequence === authRequestSequence) {\n const pendingInvalidation = pendingAuthInvalidation\n\n clearPendingInvalidation()\n\n if (pendingInvalidation?.generation === sessionGeneration) {\n pendingInvalidation.run()\n }\n }\n\n return result\n }\n const queuedRequest = authRequestQueue.then(runRequest, runRequest)\n\n authRequestQueue = queuedRequest.then(\n () => undefined,\n () => undefined,\n )\n\n return queuedRequest\n }\n\n const refresh = (\n request: (context: AuthRequestContext) => Promise<AuthenticatedUser | null>,\n ): Promise<AuthenticatedUser | null> => {\n const requestGeneration = sessionGeneration\n const activeRequest = refreshRequest\n\n if (isLoggingOut) {\n return Promise.resolve(null)\n }\n\n if (activeRequest?.generation === requestGeneration) {\n return activeRequest.promise\n }\n\n const refreshPromise = queue(request)\n\n refreshRequest = { generation: requestGeneration, promise: refreshPromise }\n /** Stops sharing this refresh after it settles without clearing a newer refresh request. */\n const clearRefreshRequest = () => {\n if (refreshRequest?.promise === refreshPromise) {\n refreshRequest = undefined\n }\n }\n\n void refreshPromise.then(clearRefreshRequest, clearRefreshRequest)\n\n return refreshPromise\n }\n\n const logOut = ({\n clearSession,\n request,\n }: {\n clearSession: () => void\n request: () => Promise<void>\n }): Promise<void> => {\n if (logoutRequest !== undefined) {\n return logoutRequest\n }\n\n isLoggingOut = true\n clearSession()\n\n const pendingLogout = queue(async () => {\n try {\n await request()\n } finally {\n isLoggingOut = false\n }\n })\n\n logoutRequest = pendingLogout\n /** Stops sharing this logout after it settles without clearing a newer logout request. */\n const clearLogoutRequest = () => {\n if (logoutRequest === pendingLogout) {\n logoutRequest = undefined\n }\n }\n\n void pendingLogout.then(\n clearLogoutRequest, // onSuccess\n clearLogoutRequest, // onFailure\n )\n\n return pendingLogout\n }\n\n return {\n discardPendingResults,\n isLoggingOut: () => isLoggingOut,\n logOut,\n queue,\n refresh,\n }\n}\n"],"mappings":"AA2BA;;;;;GAMA,OAAO,SAASA,0BAAA;EACd,IAAIC,gBAAA,GAAmBC,OAAA,CAAQC,OAAO;EACtC,IAAIC,mBAAA,GAAsB;EAC1B,IAAIC,YAAA,GAAe;EACnB,IAAIC,aAAA;EACJ,IAAIC,uBAAA;EAMJ,IAAIC,cAAA;EAMJ,IAAIC,iBAAA,GAAoB;EAExB,MAAMC,wBAAA,GAA2BA,CAAA;IAC/BH,uBAAA,GAA0BI,SAAA;EAC5B;EAEA,MAAMC,qBAAA,GAAwBA,CAAA;IAC5BH,iBAAA,IAAqB;IACrBC,wBAAA;EACF;EAEA,MAAMG,KAAA,GACJC,OAAA;IAEA,MAAMC,iBAAA,GAAoBN,iBAAA;IAC1B,MAAMO,eAAA,GAAkB,EAAEZ,mBAAA;IAC1B,MAAMa,UAAA,GAAa,MAAAA,CAAA;MACjB,MAAMC,aAAA,GAAgBA,CAAA,KAAMT,iBAAA,KAAsBM,iBAAA,IAAqBV,YAAA;MACvE,MAAMc,MAAA,GAAS,MAAML,OAAA,CAAQ;QAC3BM,YAAA,EAAcA,CAAA;UACZ,IAAIF,aAAA,IAAiB;YACnB,OAAO;UACT;UAEAR,wBAAA;UACA,OAAO;QACT;QACAW,kBAAA,EAAqBC,UAAA;UACnB,IAAIJ,aAAA,IAAiB;YACnB;UACF;UAEA,IAAIF,eAAA,GAAkBZ,mBAAA,EAAqB;YACzCG,uBAAA,GAA0B;cAAEgB,UAAA,EAAYR,iBAAA;cAAmBS,GAAA,EAAKF;YAAW;UAC7E,OAAO;YACLA,UAAA;UACF;QACF;QACAJ;MACF;MAEA,IAAIF,eAAA,KAAoBZ,mBAAA,EAAqB;QAC3C,MAAMqB,mBAAA,GAAsBlB,uBAAA;QAE5BG,wBAAA;QAEA,IAAIe,mBAAA,EAAqBF,UAAA,KAAed,iBAAA,EAAmB;UACzDgB,mBAAA,CAAoBD,GAAG;QACzB;MACF;MAEA,OAAOL,MAAA;IACT;IACA,MAAMO,aAAA,GAAgBzB,gBAAA,CAAiB0B,IAAI,CAACV,UAAA,EAAYA,UAAA;IAExDhB,gBAAA,GAAmByB,aAAA,CAAcC,IAAI,CACnC,MAAMhB,SAAA,EACN,MAAMA,SAAA;IAGR,OAAOe,aAAA;EACT;EAEA,MAAME,OAAA,GACJd,OAAA;IAEA,MAAMC,iBAAA,GAAoBN,iBAAA;IAC1B,MAAMoB,aAAA,GAAgBrB,cAAA;IAEtB,IAAIH,YAAA,EAAc;MAChB,OAAOH,OAAA,CAAQC,OAAO,CAAC;IACzB;IAEA,IAAI0B,aAAA,EAAeN,UAAA,KAAeR,iBAAA,EAAmB;MACnD,OAAOc,aAAA,CAAcC,OAAO;IAC9B;IAEA,MAAMC,cAAA,GAAiBlB,KAAA,CAAMC,OAAA;IAE7BN,cAAA,GAAiB;MAAEe,UAAA,EAAYR,iBAAA;MAAmBe,OAAA,EAASC;IAAe;IAC1E;IACA,MAAMC,mBAAA,GAAsBA,CAAA;MAC1B,IAAIxB,cAAA,EAAgBsB,OAAA,KAAYC,cAAA,EAAgB;QAC9CvB,cAAA,GAAiBG,SAAA;MACnB;IACF;IAEA,KAAKoB,cAAA,CAAeJ,IAAI,CAACK,mBAAA,EAAqBA,mBAAA;IAE9C,OAAOD,cAAA;EACT;EAEA,MAAME,MAAA,GAASA,CAAC;IACdC,YAAY;IACZpB;EAAO,CAIR;IACC,IAAIR,aAAA,KAAkBK,SAAA,EAAW;MAC/B,OAAOL,aAAA;IACT;IAEAD,YAAA,GAAe;IACf6B,YAAA;IAEA,MAAMC,aAAA,GAAgBtB,KAAA,CAAM;MAC1B,IAAI;QACF,MAAMC,OAAA;MACR,UAAU;QACRT,YAAA,GAAe;MACjB;IACF;IAEAC,aAAA,GAAgB6B,aAAA;IAChB;IACA,MAAMC,kBAAA,GAAqBA,CAAA;MACzB,IAAI9B,aAAA,KAAkB6B,aAAA,EAAe;QACnC7B,aAAA,GAAgBK,SAAA;MAClB;IACF;IAEA,KAAKwB,aAAA,CAAcR,IAAI,CACrBS,kBAAA,EACAA,kBAAA;IAGF,OAAOD,aAAA;EACT;EAEA,OAAO;IACLvB,qBAAA;IACAP,YAAA,EAAcA,CAAA,KAAMA,YAAA;IACpB4B,MAAA;IACApB,KAAA;IACAe;EACF;AACF","ignoreList":[]}
@@ -0,0 +1,121 @@
1
+ import { describe, expect, it } from 'vitest';
2
+ import { createAuthSessionRequests } from './authSessionRequests.js';
3
+ describe('createAuthSessionRequests', () => {
4
+ it('should serialize auth requests in queue order', async () => {
5
+ const authRequests = createAuthSessionRequests();
6
+ const first = createDeferred();
7
+ const order = [];
8
+ const firstRequest = authRequests.queue(async () => {
9
+ order.push('first:start');
10
+ await first.promise;
11
+ order.push('first:end');
12
+ });
13
+ const secondRequest = authRequests.queue(async () => {
14
+ order.push('second');
15
+ });
16
+ expect(order).toEqual([]);
17
+ await Promise.resolve();
18
+ expect(order).toEqual(['first:start']);
19
+ first.resolve();
20
+ await Promise.all([firstRequest, secondRequest]);
21
+ expect(order).toEqual(['first:start', 'first:end', 'second']);
22
+ });
23
+ it('should share a refresh while session results remain current', async () => {
24
+ const authRequests = createAuthSessionRequests();
25
+ const refresh = createDeferred();
26
+ let runs = 0;
27
+ const run = () => authRequests.refresh(async () => {
28
+ runs += 1;
29
+ return refresh.promise;
30
+ });
31
+ const first = run();
32
+ const second = run();
33
+ expect(first).toBe(second);
34
+ refresh.resolve(null);
35
+ await Promise.all([first, second]);
36
+ expect(runs).toBe(1);
37
+ });
38
+ it('should discard a queued result after the session changes', async () => {
39
+ const authRequests = createAuthSessionRequests();
40
+ const operation = createDeferred();
41
+ let isResultStaleAfterSettlement = false;
42
+ const request = authRequests.queue(async ({
43
+ isResultStale
44
+ }) => {
45
+ await operation.promise;
46
+ isResultStaleAfterSettlement = isResultStale();
47
+ });
48
+ await Promise.resolve();
49
+ authRequests.discardPendingResults();
50
+ operation.resolve();
51
+ await request;
52
+ expect(isResultStaleAfterSettlement).toBe(true);
53
+ });
54
+ it('should settle a logout once and prevent refresh from committing', async () => {
55
+ const authRequests = createAuthSessionRequests();
56
+ const logout = createDeferred();
57
+ let clears = 0;
58
+ let logoutRequests = 0;
59
+ const first = authRequests.logOut({
60
+ clearSession: () => {
61
+ clears += 1;
62
+ authRequests.discardPendingResults();
63
+ },
64
+ request: async () => {
65
+ logoutRequests += 1;
66
+ await logout.promise;
67
+ }
68
+ });
69
+ const second = authRequests.logOut({
70
+ clearSession: () => {
71
+ clears += 1;
72
+ },
73
+ request: async () => {
74
+ logoutRequests += 1;
75
+ }
76
+ });
77
+ expect(first).toBe(second);
78
+ expect(authRequests.isLoggingOut()).toBe(true);
79
+ expect(await authRequests.refresh(async () => null)).toBeNull();
80
+ logout.resolve();
81
+ await first;
82
+ expect({
83
+ clears,
84
+ logoutRequests
85
+ }).toEqual({
86
+ clears: 1,
87
+ logoutRequests: 1
88
+ });
89
+ });
90
+ it('should discard a deferred invalidation after the session changes', async () => {
91
+ const authRequests = createAuthSessionRequests();
92
+ let invalidations = 0;
93
+ const first = authRequests.refresh(async ({
94
+ invalidateWhenIdle
95
+ }) => {
96
+ invalidateWhenIdle(() => {
97
+ invalidations += 1;
98
+ });
99
+ return null;
100
+ });
101
+ const second = authRequests.queue(async () => {
102
+ authRequests.discardPendingResults();
103
+ });
104
+ await Promise.all([first, second]);
105
+ expect(invalidations).toBe(0);
106
+ });
107
+ });
108
+ function createDeferred() {
109
+ let resolve;
110
+ const promise = new Promise(resolvePromise => {
111
+ resolve = resolvePromise;
112
+ });
113
+ if (!resolve) {
114
+ throw new Error('Expected deferred promise resolver.');
115
+ }
116
+ return {
117
+ promise,
118
+ resolve
119
+ };
120
+ }
121
+ //# sourceMappingURL=authSessionRequests.spec.js.map