@jmruthers/pace-core 0.5.135 → 0.5.136

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 (522) hide show
  1. package/dist/{DataTable-C7GaRZye.d.ts → DataTable-CWAZZcXC.d.ts} +1 -1
  2. package/dist/{DataTable-A36PJG6N.js → DataTable-CYOHOX3O.js} +25 -13
  3. package/dist/{PublicLoadingSpinner-CUAnTvcg.d.ts → EventLogo-801uofbR.d.ts} +51 -135
  4. package/dist/UnifiedAuthProvider-5E5TUNMS.js +17 -0
  5. package/dist/{UnifiedAuthProvider-BVKmQd9u.d.ts → UnifiedAuthProvider-DJxGTftH.d.ts} +1 -1
  6. package/dist/{api-TNIBJWLM.js → api-45XYYO2A.js} +4 -3
  7. package/dist/{audit-T36HM7IM.js → audit-64X3VJXB.js} +3 -2
  8. package/dist/{chunk-CTJRBUX2.js → chunk-2TWNJ46Y.js} +2 -2
  9. package/dist/{chunk-UJI6WSMD.js → chunk-444EZN6N.js} +3 -3
  10. package/dist/chunk-444EZN6N.js.map +1 -0
  11. package/dist/{chunk-3CG5L6RN.js → chunk-4MT5BGGL.js} +90 -73
  12. package/dist/chunk-4MT5BGGL.js.map +1 -0
  13. package/dist/{chunk-PYUXFQJ3.js → chunk-56XJ3TU6.js} +2 -2
  14. package/dist/chunk-56XJ3TU6.js.map +1 -0
  15. package/dist/chunk-5DPZ5EAT.js +60 -0
  16. package/dist/chunk-5DPZ5EAT.js.map +1 -0
  17. package/dist/{chunk-66C4BSAY.js → chunk-ANBQRTPX.js} +9 -2
  18. package/dist/chunk-ANBQRTPX.js.map +1 -0
  19. package/dist/chunk-APIBCTL2.js +670 -0
  20. package/dist/chunk-APIBCTL2.js.map +1 -0
  21. package/dist/{chunk-GKHF54DI.js → chunk-BESYRHQM.js} +10 -4
  22. package/dist/chunk-BESYRHQM.js.map +1 -0
  23. package/dist/{chunk-WP5I5GLN.js → chunk-BVYWGZVV.js} +112 -97
  24. package/dist/chunk-BVYWGZVV.js.map +1 -0
  25. package/dist/{chunk-GEVIB2UB.js → chunk-ERISIBYU.js} +14 -5
  26. package/dist/chunk-ERISIBYU.js.map +1 -0
  27. package/dist/{chunk-CQZU6TFE.js → chunk-FHWWBIHA.js} +100 -62
  28. package/dist/chunk-FHWWBIHA.js.map +1 -0
  29. package/dist/{chunk-O3NWNXDY.js → chunk-FMUCXFII.js} +2 -2
  30. package/dist/chunk-FMUCXFII.js.map +1 -0
  31. package/dist/{chunk-GVDR7WNV.js → chunk-HJGGOMQ6.js} +194 -518
  32. package/dist/chunk-HJGGOMQ6.js.map +1 -0
  33. package/dist/{chunk-BDZUMRBD.js → chunk-K2WWTH7O.js} +13 -6
  34. package/dist/chunk-K2WWTH7O.js.map +1 -0
  35. package/dist/{chunk-BYXRHAIF.js → chunk-L6PGMCMD.js} +23 -14
  36. package/dist/chunk-L6PGMCMD.js.map +1 -0
  37. package/dist/chunk-LMC26NLJ.js +84 -0
  38. package/dist/chunk-LMC26NLJ.js.map +1 -0
  39. package/dist/{chunk-M6DDYFUD.js → chunk-LS353YLY.js} +19 -16
  40. package/dist/chunk-LS353YLY.js.map +1 -0
  41. package/dist/{chunk-ZYZCRSBD.js → chunk-LTV3XIJJ.js} +16 -11
  42. package/dist/chunk-LTV3XIJJ.js.map +1 -0
  43. package/dist/{chunk-HMNOSGVA.js → chunk-NOHEVYVX.js} +377 -666
  44. package/dist/chunk-NOHEVYVX.js.map +1 -0
  45. package/dist/{chunk-JCQZ6LA7.js → chunk-Q5QRDWKI.js} +9 -3
  46. package/dist/chunk-Q5QRDWKI.js.map +1 -0
  47. package/dist/chunk-S5OFRT4M.js +94 -0
  48. package/dist/chunk-S5OFRT4M.js.map +1 -0
  49. package/dist/{chunk-3DBFLLLU.js → chunk-SBVILCCA.js} +14 -9
  50. package/dist/chunk-SBVILCCA.js.map +1 -0
  51. package/dist/{chunk-TGIY2AR2.js → chunk-SL2YQDR6.js} +4 -3
  52. package/dist/{chunk-TGIY2AR2.js.map → chunk-SL2YQDR6.js.map} +1 -1
  53. package/dist/{chunk-VZ5OR6HD.js → chunk-TVYPTYOY.js} +55 -179
  54. package/dist/chunk-TVYPTYOY.js.map +1 -0
  55. package/dist/{chunk-ZV77RZMU.js → chunk-XARJS7CD.js} +2 -2
  56. package/dist/chunk-XDNLUEXI.js +138 -0
  57. package/dist/chunk-XDNLUEXI.js.map +1 -0
  58. package/dist/{chunk-F64FFPOZ.js → chunk-YLKIDTUK.js} +26 -20
  59. package/dist/chunk-YLKIDTUK.js.map +1 -0
  60. package/dist/{chunk-5F3NDPJV.js → chunk-ZZ2SS7NI.js} +10 -5
  61. package/dist/chunk-ZZ2SS7NI.js.map +1 -0
  62. package/dist/components.d.ts +7 -287
  63. package/dist/components.js +26 -157
  64. package/dist/components.js.map +1 -1
  65. package/dist/{file-reference-C9isKNPn.d.ts → file-reference-C6Gkn77H.d.ts} +1 -1
  66. package/dist/{formatting-DFcCxUEk.d.ts → formatting-CvUXy2mF.d.ts} +1 -1
  67. package/dist/hooks.d.ts +3 -3
  68. package/dist/hooks.js +22 -16
  69. package/dist/hooks.js.map +1 -1
  70. package/dist/index.d.ts +101 -9
  71. package/dist/index.js +43 -31
  72. package/dist/index.js.map +1 -1
  73. package/dist/providers.d.ts +1 -1
  74. package/dist/providers.js +5 -4
  75. package/dist/rbac/index.js +13 -12
  76. package/dist/styles/index.js +2 -1
  77. package/dist/theming/runtime.d.ts +2 -19
  78. package/dist/theming/runtime.js +2 -1
  79. package/dist/{types-D5rqZQXk.d.ts → types-Dfz9dmVH.d.ts} +12 -1
  80. package/dist/types.d.ts +2 -2
  81. package/dist/types.js +1 -1
  82. package/dist/{useInactivityTracker-MRUU55XI.js → useInactivityTracker-TO6ZOF35.js} +3 -2
  83. package/dist/{usePublicRouteParams-Dyt1tzI9.d.ts → usePublicRouteParams-B7PabvuH.d.ts} +1 -1
  84. package/dist/utils.d.ts +195 -232
  85. package/dist/utils.js +173 -331
  86. package/dist/utils.js.map +1 -1
  87. package/dist/{validation-DnhrNMju.d.ts → validation-8npbysjg.d.ts} +26 -8
  88. package/dist/validation.d.ts +261 -10
  89. package/dist/validation.js +82 -440
  90. package/dist/validation.js.map +1 -1
  91. package/docs/api/classes/ColumnFactory.md +1 -1
  92. package/docs/api/classes/ErrorBoundary.md +6 -6
  93. package/docs/api/classes/InvalidScopeError.md +1 -1
  94. package/docs/api/classes/MissingUserContextError.md +1 -1
  95. package/docs/api/classes/OrganisationContextRequiredError.md +1 -1
  96. package/docs/api/classes/PermissionDeniedError.md +1 -1
  97. package/docs/api/classes/PublicErrorBoundary.md +1 -1
  98. package/docs/api/classes/RBACAuditManager.md +6 -6
  99. package/docs/api/classes/RBACCache.md +1 -1
  100. package/docs/api/classes/RBACEngine.md +7 -7
  101. package/docs/api/classes/RBACError.md +1 -1
  102. package/docs/api/classes/RBACNotInitializedError.md +1 -1
  103. package/docs/api/classes/SecureSupabaseClient.md +1 -1
  104. package/docs/api/classes/StorageUtils.md +1 -1
  105. package/docs/api/enums/FileCategory.md +1 -1
  106. package/docs/api/interfaces/AggregateConfig.md +4 -4
  107. package/docs/api/interfaces/ButtonProps.md +1 -1
  108. package/docs/api/interfaces/CardProps.md +1 -1
  109. package/docs/api/interfaces/ColorPalette.md +1 -1
  110. package/docs/api/interfaces/ColorShade.md +29 -4
  111. package/docs/api/interfaces/DataAccessRecord.md +9 -9
  112. package/docs/api/interfaces/DataRecord.md +1 -1
  113. package/docs/api/interfaces/DataTableAction.md +18 -18
  114. package/docs/api/interfaces/DataTableColumn.md +61 -1
  115. package/docs/api/interfaces/DataTableProps.md +1 -1
  116. package/docs/api/interfaces/DataTableToolbarButton.md +7 -7
  117. package/docs/api/interfaces/EmptyStateConfig.md +5 -5
  118. package/docs/api/interfaces/EnhancedNavigationMenuProps.md +14 -14
  119. package/docs/api/interfaces/EventAppRoleData.md +1 -1
  120. package/docs/api/interfaces/EventLogoProps.md +152 -0
  121. package/docs/api/interfaces/ExportColumn.md +1 -1
  122. package/docs/api/interfaces/ExportOptions.md +8 -8
  123. package/docs/api/interfaces/FileDisplayProps.md +15 -15
  124. package/docs/api/interfaces/FileMetadata.md +1 -1
  125. package/docs/api/interfaces/FileReference.md +1 -1
  126. package/docs/api/interfaces/FileSizeLimits.md +1 -1
  127. package/docs/api/interfaces/FileUploadOptions.md +1 -1
  128. package/docs/api/interfaces/FileUploadProps.md +1 -1
  129. package/docs/api/interfaces/FooterProps.md +1 -1
  130. package/docs/api/interfaces/GrantEventAppRoleParams.md +1 -1
  131. package/docs/api/interfaces/InactivityWarningModalProps.md +1 -1
  132. package/docs/api/interfaces/InputProps.md +1 -1
  133. package/docs/api/interfaces/LabelProps.md +1 -1
  134. package/docs/api/interfaces/LoginFormProps.md +1 -1
  135. package/docs/api/interfaces/NavigationAccessRecord.md +10 -10
  136. package/docs/api/interfaces/NavigationContextType.md +9 -9
  137. package/docs/api/interfaces/NavigationGuardProps.md +10 -10
  138. package/docs/api/interfaces/NavigationItem.md +1 -1
  139. package/docs/api/interfaces/NavigationMenuProps.md +1 -1
  140. package/docs/api/interfaces/NavigationProviderProps.md +7 -7
  141. package/docs/api/interfaces/Organisation.md +1 -1
  142. package/docs/api/interfaces/OrganisationContextType.md +1 -1
  143. package/docs/api/interfaces/OrganisationMembership.md +1 -1
  144. package/docs/api/interfaces/OrganisationProviderProps.md +1 -1
  145. package/docs/api/interfaces/OrganisationSecurityError.md +1 -1
  146. package/docs/api/interfaces/PaceAppLayoutProps.md +27 -27
  147. package/docs/api/interfaces/PaceLoginPageProps.md +4 -4
  148. package/docs/api/interfaces/PageAccessRecord.md +8 -8
  149. package/docs/api/interfaces/PagePermissionContextType.md +8 -8
  150. package/docs/api/interfaces/PagePermissionGuardProps.md +11 -11
  151. package/docs/api/interfaces/PagePermissionProviderProps.md +7 -7
  152. package/docs/api/interfaces/PaletteData.md +4 -4
  153. package/docs/api/interfaces/PermissionEnforcerProps.md +11 -11
  154. package/docs/api/interfaces/ProtectedRouteProps.md +6 -6
  155. package/docs/api/interfaces/PublicErrorBoundaryProps.md +1 -1
  156. package/docs/api/interfaces/PublicErrorBoundaryState.md +1 -1
  157. package/docs/api/interfaces/PublicLoadingSpinnerProps.md +1 -1
  158. package/docs/api/interfaces/PublicPageFooterProps.md +1 -1
  159. package/docs/api/interfaces/PublicPageHeaderProps.md +1 -1
  160. package/docs/api/interfaces/PublicPageLayoutProps.md +1 -1
  161. package/docs/api/interfaces/RBACConfig.md +1 -1
  162. package/docs/api/interfaces/RBACLogger.md +1 -1
  163. package/docs/api/interfaces/RevokeEventAppRoleParams.md +1 -1
  164. package/docs/api/interfaces/RoleBasedRouterContextType.md +8 -8
  165. package/docs/api/interfaces/RoleBasedRouterProps.md +10 -10
  166. package/docs/api/interfaces/RoleManagementResult.md +1 -1
  167. package/docs/api/interfaces/RouteAccessRecord.md +10 -10
  168. package/docs/api/interfaces/RouteConfig.md +10 -10
  169. package/docs/api/interfaces/SecureDataContextType.md +9 -9
  170. package/docs/api/interfaces/SecureDataProviderProps.md +8 -8
  171. package/docs/api/interfaces/SessionRestorationLoaderProps.md +21 -0
  172. package/docs/api/interfaces/StorageConfig.md +1 -1
  173. package/docs/api/interfaces/StorageFileInfo.md +1 -1
  174. package/docs/api/interfaces/StorageFileMetadata.md +1 -1
  175. package/docs/api/interfaces/StorageListOptions.md +1 -1
  176. package/docs/api/interfaces/StorageListResult.md +1 -1
  177. package/docs/api/interfaces/StorageUploadOptions.md +1 -1
  178. package/docs/api/interfaces/StorageUploadResult.md +1 -1
  179. package/docs/api/interfaces/StorageUrlOptions.md +1 -1
  180. package/docs/api/interfaces/StyleImport.md +1 -1
  181. package/docs/api/interfaces/SwitchProps.md +1 -1
  182. package/docs/api/interfaces/ToastActionElement.md +1 -1
  183. package/docs/api/interfaces/ToastProps.md +1 -1
  184. package/docs/api/interfaces/UnifiedAuthContextType.md +53 -53
  185. package/docs/api/interfaces/UnifiedAuthProviderProps.md +13 -13
  186. package/docs/api/interfaces/UseInactivityTrackerOptions.md +9 -9
  187. package/docs/api/interfaces/UseInactivityTrackerReturn.md +8 -8
  188. package/docs/api/interfaces/UsePublicEventOptions.md +3 -3
  189. package/docs/api/interfaces/UsePublicEventReturn.md +5 -5
  190. package/docs/api/interfaces/UsePublicFileDisplayOptions.md +4 -4
  191. package/docs/api/interfaces/UsePublicFileDisplayReturn.md +9 -9
  192. package/docs/api/interfaces/UsePublicRouteParamsReturn.md +1 -1
  193. package/docs/api/interfaces/UseResolvedScopeOptions.md +4 -4
  194. package/docs/api/interfaces/UseResolvedScopeReturn.md +4 -4
  195. package/docs/api/interfaces/UserEventAccess.md +11 -11
  196. package/docs/api/interfaces/UserMenuProps.md +1 -1
  197. package/docs/api/interfaces/UserProfile.md +1 -1
  198. package/docs/api/modules.md +514 -212
  199. package/docs/api-reference/components.md +106 -26
  200. package/docs/architecture/README.md +0 -2
  201. package/docs/implementation-guides/data-tables.md +277 -13
  202. package/docs/implementation-guides/forms.md +1 -16
  203. package/docs/implementation-guides/permission-enforcement.md +8 -2
  204. package/examples/README.md +30 -14
  205. package/examples/STRUCTURE.md +125 -0
  206. package/examples/components/DataTable/HierarchicalActionsExample.tsx +421 -0
  207. package/examples/components/DataTable/HierarchicalExample.tsx +475 -0
  208. package/examples/components/DataTable/InitialPageSizeExample.tsx +177 -0
  209. package/examples/components/DataTable/PerformanceExample.tsx +506 -0
  210. package/examples/components/DataTable/index.ts +13 -0
  211. package/examples/components/Dialog/BasicHtmlTest.tsx +55 -0
  212. package/examples/components/Dialog/DebugHtmlExample.tsx +68 -0
  213. package/examples/components/Dialog/HtmlDialogExample.tsx +202 -0
  214. package/examples/components/Dialog/ScrollableDialogExample.tsx +290 -0
  215. package/examples/components/Dialog/SimpleHtmlTest.tsx +61 -0
  216. package/examples/components/Dialog/SmartDialogExample.tsx +322 -0
  217. package/examples/components/Dialog/index.ts +15 -0
  218. package/examples/components/index.ts +11 -0
  219. package/examples/features/index.ts +12 -0
  220. package/examples/{public-pages → features/public-pages}/CorrectPublicPageImplementation.tsx +1 -1
  221. package/examples/{public-pages → features/public-pages}/PublicEventPage.tsx +1 -1
  222. package/examples/{public-pages → features/public-pages}/PublicPageApp.tsx +1 -1
  223. package/examples/{public-pages → features/public-pages}/PublicPageUsageExample.tsx +1 -1
  224. package/examples/index.ts +11 -3
  225. package/package.json +30 -10
  226. package/src/components/Alert/Alert.tsx +1 -1
  227. package/src/components/Avatar/Avatar.tsx +1 -1
  228. package/src/components/Button/Button.tsx +1 -1
  229. package/src/components/Card/Card.tsx +1 -1
  230. package/src/components/Checkbox/Checkbox.tsx +1 -1
  231. package/src/components/DataTable/DataTable.test.tsx +1 -1
  232. package/src/components/DataTable/DataTable.tsx +1 -30
  233. package/src/components/DataTable/__tests__/DataTable.grouping-aggregation.test.tsx +562 -0
  234. package/src/components/DataTable/__tests__/styles.test.ts +2 -2
  235. package/src/components/DataTable/components/ActionButtons.tsx +0 -15
  236. package/src/components/DataTable/components/DataTableCore.tsx +4 -185
  237. package/src/components/DataTable/components/DataTableErrorBoundary.tsx +1 -1
  238. package/src/components/DataTable/components/DataTableModals.tsx +1 -27
  239. package/src/components/DataTable/components/EditableRow.tsx +1 -1
  240. package/src/components/DataTable/components/ImportModal.tsx +2 -14
  241. package/src/components/DataTable/components/PaginationControls.tsx +1 -1
  242. package/src/components/DataTable/components/UnifiedTableBody.tsx +109 -82
  243. package/src/components/DataTable/components/__tests__/ActionButtons.test.tsx +1 -1
  244. package/src/components/DataTable/components/__tests__/DataTableErrorBoundary.test.tsx +1 -1
  245. package/src/components/DataTable/components/__tests__/DataTableModals.test.tsx +1 -1
  246. package/src/components/DataTable/components/__tests__/ImportModal.test.tsx +1 -1
  247. package/src/components/DataTable/examples/GroupingAggregationExample.tsx +273 -0
  248. package/src/components/DataTable/examples/HierarchicalActionsExample.tsx +1 -1
  249. package/src/components/DataTable/examples/__tests__/HierarchicalActionsExample.test.tsx +1 -1
  250. package/src/components/DataTable/hooks/useColumnOrderPersistence.ts +1 -1
  251. package/src/components/DataTable/hooks/useColumnVisibilityPersistence.ts +1 -1
  252. package/src/components/DataTable/hooks/useDataTablePermissions.ts +2 -23
  253. package/src/components/DataTable/index.ts +4 -0
  254. package/src/components/DataTable/styles.ts +1 -1
  255. package/src/components/DataTable/types.ts +13 -0
  256. package/src/components/DataTable/utils/__tests__/exportUtils.test.ts +1 -1
  257. package/src/components/DataTable/utils/aggregationUtils.ts +161 -0
  258. package/src/components/DataTable/utils/exportUtils.ts +1 -1
  259. package/src/components/DataTable/utils/flexibleImport.ts +1 -11
  260. package/src/components/DataTable/utils/index.ts +1 -0
  261. package/src/components/DataTable/utils/paginationUtils.ts +1 -1
  262. package/src/components/Dialog/Dialog.tsx +2 -2
  263. package/src/components/ErrorBoundary/ErrorBoundary.test.tsx +35 -7
  264. package/src/components/ErrorBoundary/ErrorBoundary.tsx +5 -4
  265. package/src/components/EventSelector/EventSelector.tsx +3 -2
  266. package/src/components/FileDisplay/FileDisplay.tsx +2 -36
  267. package/src/components/FileUpload/FileUpload.test.tsx +2 -2
  268. package/src/components/FileUpload/FileUpload.tsx +2 -2
  269. package/src/components/Footer/Footer.tsx +1 -1
  270. package/src/components/Form/Form.test.tsx +4 -509
  271. package/src/components/Form/Form.tsx +1 -1
  272. package/src/components/Form/FormField.tsx +1 -1
  273. package/src/components/Form/index.ts +0 -12
  274. package/src/components/Header/Header.tsx +1 -1
  275. package/src/components/Input/Input.tsx +1 -1
  276. package/src/components/Label/Label.tsx +1 -1
  277. package/src/components/LoginForm/LoginForm.tsx +1 -1
  278. package/src/components/NavigationMenu/NavigationMenu.test.tsx +19 -3
  279. package/src/components/NavigationMenu/NavigationMenu.tsx +9 -8
  280. package/src/components/OrganisationSelector/OrganisationSelector.tsx +4 -3
  281. package/src/components/PaceAppLayout/PaceAppLayout.tsx +14 -12
  282. package/src/components/PaceAppLayout/__tests__/PaceAppLayout.integration.test.tsx +0 -16
  283. package/src/components/PaceAppLayout/__tests__/PaceAppLayout.security.test.tsx +0 -1
  284. package/src/components/PaceAppLayout/__tests__/PaceAppLayout.unit.test.tsx +0 -9
  285. package/src/components/PaceLoginPage/PaceLoginPage.test.tsx +35 -3
  286. package/src/components/PaceLoginPage/PaceLoginPage.tsx +13 -12
  287. package/src/components/PasswordReset/PasswordChangeForm.tsx +1 -1
  288. package/src/components/PasswordReset/index.ts +0 -2
  289. package/src/components/Progress/Progress.tsx +1 -1
  290. package/src/components/ProtectedRoute/ProtectedRoute.test.tsx +35 -8
  291. package/src/components/ProtectedRoute/ProtectedRoute.tsx +3 -2
  292. package/src/components/PublicLayout/PublicErrorBoundary.tsx +1 -1
  293. package/src/components/PublicLayout/PublicLoadingSpinner.tsx +1 -1
  294. package/src/components/PublicLayout/PublicPageContextChecker.tsx +44 -43
  295. package/src/components/PublicLayout/PublicPageFooter.tsx +1 -1
  296. package/src/components/PublicLayout/PublicPageHeader.tsx +1 -15
  297. package/src/components/PublicLayout/PublicPageProvider.tsx +3 -2
  298. package/src/components/PublicLayout/__tests__/PublicPageContextChecker.test.tsx +2 -0
  299. package/src/components/PublicLayout/index.ts +4 -2
  300. package/src/components/Select/Select.tsx +1 -1
  301. package/src/components/{SessionRestorationLoader.tsx → SessionRestorationLoader/SessionRestorationLoader.tsx} +3 -2
  302. package/src/components/SessionRestorationLoader/index.ts +3 -0
  303. package/src/components/Switch/Switch.tsx +1 -1
  304. package/src/components/Table/Table.tsx +1 -1
  305. package/src/components/Toast/Toast.tsx +1 -1
  306. package/src/components/Tooltip/Tooltip.tsx +1 -1
  307. package/src/components/index.ts +4 -10
  308. package/src/hooks/__tests__/hooks.integration.test.tsx +37 -22
  309. package/src/hooks/__tests__/useComponentPerformance.unit.test.tsx +33 -17
  310. package/src/hooks/__tests__/useDataTablePerformance.unit.test.ts +28 -3
  311. package/src/hooks/__tests__/useFileDisplay.unit.test.ts +36 -9
  312. package/src/hooks/__tests__/useInactivityTracker.unit.test.ts +26 -2
  313. package/src/hooks/__tests__/usePerformanceMonitor.unit.test.ts +19 -6
  314. package/src/hooks/__tests__/usePermissionCache.simple.test.ts +17 -4
  315. package/src/hooks/__tests__/usePermissionCache.unit.test.ts +17 -4
  316. package/src/hooks/__tests__/usePublicEvent.simple.test.ts +26 -6
  317. package/src/hooks/__tests__/usePublicFileDisplay.test.ts +16 -6
  318. package/src/hooks/__tests__/useSecureDataAccess.unit.test.tsx +3 -3
  319. package/src/hooks/__tests__/useSessionRestoration.unit.test.tsx +17 -3
  320. package/src/hooks/public/usePublicEvent.ts +7 -6
  321. package/src/hooks/public/usePublicEventLogo.ts +7 -4
  322. package/src/hooks/public/usePublicFileDisplay.ts +6 -150
  323. package/src/hooks/useComponentPerformance.ts +4 -1
  324. package/src/hooks/useDataTablePerformance.ts +4 -3
  325. package/src/hooks/useEventTheme.test.ts +18 -5
  326. package/src/hooks/useEventTheme.ts +4 -1
  327. package/src/hooks/useEvents.ts +2 -0
  328. package/src/hooks/useFileDisplay.ts +9 -8
  329. package/src/hooks/useFileReference.ts +4 -1
  330. package/src/hooks/useFileUrl.ts +4 -1
  331. package/src/hooks/useInactivityTracker.ts +5 -4
  332. package/src/hooks/useOrganisationSecurity.test.ts +33 -12
  333. package/src/hooks/useOrganisationSecurity.ts +8 -7
  334. package/src/hooks/usePerformanceMonitor.ts +6 -3
  335. package/src/hooks/usePermissionCache.ts +13 -6
  336. package/src/hooks/useSecureDataAccess.test.ts +2 -2
  337. package/src/hooks/useSecureDataAccess.ts +9 -8
  338. package/src/hooks/useSessionRestoration.ts +4 -1
  339. package/src/hooks/useStorage.ts +4 -1
  340. package/src/index.ts +16 -7
  341. package/src/providers/services/AuthServiceProvider.tsx +3 -2
  342. package/src/providers/services/EventServiceProvider.tsx +2 -1
  343. package/src/providers/services/InactivityServiceProvider.tsx +2 -1
  344. package/src/providers/services/OrganisationServiceProvider.tsx +2 -1
  345. package/src/providers/services/UnifiedAuthProvider.tsx +4 -3
  346. package/src/providers/services/__tests__/AuthServiceProvider.integration.test.tsx +22 -2
  347. package/src/providers/services/__tests__/UnifiedAuthProvider.integration.test.tsx +24 -2
  348. package/src/rbac/__tests__/cache-invalidation.test.ts +20 -6
  349. package/src/rbac/api.ts +5 -2
  350. package/src/rbac/audit-enhanced.ts +6 -6
  351. package/src/rbac/audit.test.ts +60 -38
  352. package/src/rbac/audit.ts +8 -8
  353. package/src/rbac/cache-invalidation.ts +7 -4
  354. package/src/rbac/components/EnhancedNavigationMenu.tsx +11 -5
  355. package/src/rbac/components/NavigationGuard.tsx +7 -3
  356. package/src/rbac/components/NavigationProvider.tsx +6 -3
  357. package/src/rbac/components/PagePermissionGuard.tsx +28 -16
  358. package/src/rbac/components/PagePermissionProvider.tsx +4 -1
  359. package/src/rbac/components/PermissionEnforcer.tsx +9 -3
  360. package/src/rbac/components/RoleBasedRouter.tsx +3 -1
  361. package/src/rbac/components/SecureDataProvider.tsx +7 -3
  362. package/src/rbac/components/__tests__/EnhancedNavigationMenu.test.tsx +87 -61
  363. package/src/rbac/components/__tests__/NavigationGuard.test.tsx +83 -33
  364. package/src/rbac/components/__tests__/NavigationProvider.test.tsx +36 -13
  365. package/src/rbac/components/__tests__/PagePermissionGuard.test.tsx +2 -2
  366. package/src/rbac/components/__tests__/PagePermissionProvider.test.tsx +22 -8
  367. package/src/rbac/components/__tests__/PermissionEnforcer.test.tsx +19 -6
  368. package/src/rbac/components/__tests__/SecureDataProvider.fixed.test.tsx +43 -17
  369. package/src/rbac/components/__tests__/SecureDataProvider.test.tsx +42 -17
  370. package/src/rbac/engine.ts +15 -7
  371. package/src/rbac/hooks/usePermissions.ts +7 -3
  372. package/src/rbac/hooks/useResolvedScope.test.ts +2 -2
  373. package/src/rbac/hooks/useResolvedScope.ts +10 -7
  374. package/src/rbac/permissions.ts +5 -2
  375. package/src/rbac/security.test.ts +27 -16
  376. package/src/rbac/security.ts +5 -4
  377. package/src/services/AuthService.ts +22 -21
  378. package/src/services/EventService.ts +12 -12
  379. package/src/services/InactivityService.ts +5 -4
  380. package/src/services/OrganisationService.ts +26 -25
  381. package/src/services/__tests__/AuthService.test.ts +51 -19
  382. package/src/services/__tests__/EventService.test.ts +37 -5
  383. package/src/services/__tests__/InactivityService.test.ts +38 -4
  384. package/src/services/__tests__/OrganisationService.test.ts +3 -8
  385. package/src/services/base/BaseService.ts +3 -1
  386. package/src/theming/__tests__/runtime.test.ts +21 -12
  387. package/src/theming/parseEventColours.ts +5 -19
  388. package/src/theming/runtime.ts +8 -4
  389. package/src/types/validation.ts +2 -29
  390. package/src/utils/__tests__/appConfig.unit.test.ts +1 -1
  391. package/src/utils/__tests__/audit.unit.test.ts +1 -1
  392. package/src/utils/__tests__/auth-utils.unit.test.ts +1 -1
  393. package/src/utils/__tests__/bundleAnalysis.unit.test.ts +19 -19
  394. package/src/utils/__tests__/cn.unit.test.ts +1 -1
  395. package/src/utils/__tests__/debugLogger.test.ts +1 -1
  396. package/src/utils/__tests__/deviceFingerprint.unit.test.ts +1 -1
  397. package/src/utils/__tests__/dynamicUtils.unit.test.ts +1 -1
  398. package/src/utils/__tests__/formatting.unit.test.ts +1 -1
  399. package/src/utils/__tests__/lazyLoad.unit.test.tsx +1 -1
  400. package/src/utils/__tests__/logger.unit.test.ts +1 -1
  401. package/src/utils/__tests__/organisationContext.unit.test.ts +1 -1
  402. package/src/utils/__tests__/performanceBenchmark.test.ts +1 -1
  403. package/src/utils/__tests__/performanceBudgets.unit.test.ts +1 -1
  404. package/src/utils/__tests__/permissionTypes.unit.test.ts +1 -1
  405. package/src/utils/__tests__/permissionUtils.unit.test.ts +1 -1
  406. package/src/utils/__tests__/sanitization.unit.test.ts +1 -1
  407. package/src/utils/__tests__/schemaUtils.unit.test.ts +1 -1
  408. package/src/utils/__tests__/secureDataAccess.unit.test.ts +1 -1
  409. package/src/utils/__tests__/secureErrors.unit.test.ts +33 -15
  410. package/src/utils/__tests__/secureStorage.unit.test.ts +1 -1
  411. package/src/utils/__tests__/security.unit.test.ts +40 -18
  412. package/src/utils/__tests__/securityMonitor.unit.test.ts +1 -1
  413. package/src/utils/__tests__/sessionTracking.unit.test.ts +40 -29
  414. package/src/utils/__tests__/validationUtils.unit.test.ts +19 -6
  415. package/src/utils/{appIdResolver.test.ts → app/appIdResolver.test.ts} +28 -30
  416. package/src/utils/{appIdResolver.ts → app/appIdResolver.ts} +8 -5
  417. package/src/utils/{appNameResolver.test.ts → app/appNameResolver.test.ts} +1 -1
  418. package/src/utils/{appNameResolver.ts → app/appNameResolver.ts} +5 -1
  419. package/src/utils/{organisationContext.ts → context/organisationContext.ts} +6 -3
  420. package/src/utils/{sessionTracking.ts → context/sessionTracking.ts} +11 -12
  421. package/src/utils/{logger.ts → core/logger.ts} +4 -2
  422. package/src/utils/{deviceFingerprint.ts → device/deviceFingerprint.ts} +1 -1
  423. package/src/utils/{lazyLoad.tsx → dynamic/lazyLoad.tsx} +2 -2
  424. package/src/utils/{file-reference.test.ts → file-reference/__tests__/file-reference.test.ts} +5 -5
  425. package/src/utils/{file-reference.ts → file-reference/index.ts} +20 -38
  426. package/src/utils/index.ts +32 -54
  427. package/src/utils/{secureErrors.ts → security/secureErrors.ts} +6 -3
  428. package/src/utils/{security.ts → security/security.ts} +5 -2
  429. package/src/utils/storage/__tests__/helpers.unit.test.ts +1 -4
  430. package/src/utils/storage/helpers.ts +15 -8
  431. package/src/{components/Dialog/utils/__tests__/safeHtml.unit.test.ts → utils/validation/__tests__/htmlSanitization.unit.test.ts} +9 -15
  432. package/src/{validation → utils/validation}/csrf.ts +1 -1
  433. package/src/{components/Dialog/utils/safeHtml.ts → utils/validation/htmlSanitization.ts} +9 -10
  434. package/src/utils/validation/index.ts +79 -0
  435. package/src/utils/{sanitization.ts → validation/sanitization.ts} +71 -2
  436. package/src/{validation/schemaUtils.ts → utils/validation/schema.ts} +11 -6
  437. package/src/{validation → utils/validation}/sqlInjectionProtection.ts +2 -0
  438. package/src/utils/{validationUtils.ts → validation/validationUtils.ts} +4 -1
  439. package/src/validation/index.ts +3 -34
  440. package/dist/UnifiedAuthProvider-CQDZRJIS.js +0 -16
  441. package/dist/chunk-24MKLB7U.js +0 -81
  442. package/dist/chunk-24MKLB7U.js.map +0 -1
  443. package/dist/chunk-3CG5L6RN.js.map +0 -1
  444. package/dist/chunk-3DBFLLLU.js.map +0 -1
  445. package/dist/chunk-5F3NDPJV.js.map +0 -1
  446. package/dist/chunk-66C4BSAY.js.map +0 -1
  447. package/dist/chunk-BDZUMRBD.js.map +0 -1
  448. package/dist/chunk-BYXRHAIF.js.map +0 -1
  449. package/dist/chunk-CDQ3PX7L.js +0 -18
  450. package/dist/chunk-CDQ3PX7L.js.map +0 -1
  451. package/dist/chunk-CQZU6TFE.js.map +0 -1
  452. package/dist/chunk-F64FFPOZ.js.map +0 -1
  453. package/dist/chunk-GEVIB2UB.js.map +0 -1
  454. package/dist/chunk-GKHF54DI.js.map +0 -1
  455. package/dist/chunk-GVDR7WNV.js.map +0 -1
  456. package/dist/chunk-HMNOSGVA.js.map +0 -1
  457. package/dist/chunk-JCQZ6LA7.js.map +0 -1
  458. package/dist/chunk-M6DDYFUD.js.map +0 -1
  459. package/dist/chunk-O3NWNXDY.js.map +0 -1
  460. package/dist/chunk-PYUXFQJ3.js.map +0 -1
  461. package/dist/chunk-UJI6WSMD.js.map +0 -1
  462. package/dist/chunk-VZ5OR6HD.js.map +0 -1
  463. package/dist/chunk-WP5I5GLN.js.map +0 -1
  464. package/dist/chunk-ZYZCRSBD.js.map +0 -1
  465. package/src/components/Dialog/README.md +0 -804
  466. package/src/components/Form/FormErrorSummary.tsx +0 -113
  467. package/src/components/Form/FormFieldset.tsx +0 -127
  468. package/src/components/Form/FormLiveRegion.tsx +0 -198
  469. package/src/components/PasswordReset/PasswordResetForm.test.tsx +0 -597
  470. package/src/components/PasswordReset/PasswordResetForm.tsx +0 -201
  471. package/src/components/PublicLayout/PublicPageDebugger.tsx +0 -104
  472. package/src/components/PublicLayout/PublicPageDiagnostic.tsx +0 -162
  473. package/src/components/PublicLayout/__tests__/PublicPageDebugger.test.tsx +0 -185
  474. package/src/examples/CorrectPublicPageImplementation.tsx +0 -304
  475. package/src/examples/PublicEventPage.tsx +0 -287
  476. package/src/examples/PublicPageApp.tsx +0 -321
  477. package/src/examples/PublicPageUsageExample.tsx +0 -218
  478. package/src/utils/schemaUtils.ts +0 -37
  479. package/src/validation/__tests__/common.unit.test.ts +0 -101
  480. package/src/validation/__tests__/csrf.unit.test.ts +0 -365
  481. package/src/validation/__tests__/passwordSchema.unit.test.ts +0 -203
  482. package/src/validation/__tests__/sanitization.unit.test.ts +0 -250
  483. package/src/validation/__tests__/schemaUtils.unit.test.ts +0 -451
  484. package/src/validation/__tests__/sqlInjectionProtection.unit.test.ts +0 -462
  485. package/src/validation/__tests__/user.unit.test.ts +0 -440
  486. package/src/validation/sanitization.ts +0 -96
  487. /package/dist/{DataTable-A36PJG6N.js.map → DataTable-CYOHOX3O.js.map} +0 -0
  488. /package/dist/{UnifiedAuthProvider-CQDZRJIS.js.map → UnifiedAuthProvider-5E5TUNMS.js.map} +0 -0
  489. /package/dist/{api-TNIBJWLM.js.map → api-45XYYO2A.js.map} +0 -0
  490. /package/dist/{audit-T36HM7IM.js.map → audit-64X3VJXB.js.map} +0 -0
  491. /package/dist/{chunk-CTJRBUX2.js.map → chunk-2TWNJ46Y.js.map} +0 -0
  492. /package/dist/{chunk-ZV77RZMU.js.map → chunk-XARJS7CD.js.map} +0 -0
  493. /package/dist/{useInactivityTracker-MRUU55XI.js.map → useInactivityTracker-TO6ZOF35.js.map} +0 -0
  494. /package/examples/{public-pages → features/public-pages}/index.ts +0 -0
  495. /package/examples/{RBAC → features/rbac}/CompleteRBACExample.tsx +0 -0
  496. /package/examples/{RBAC → features/rbac}/EventBasedApp.tsx +0 -0
  497. /package/examples/{RBAC → features/rbac}/PermissionExample.tsx +0 -0
  498. /package/examples/{RBAC → features/rbac}/index.ts +0 -0
  499. /package/src/utils/{appConfig.ts → app/appConfig.ts} +0 -0
  500. /package/src/utils/{appNameResolver.simple.test.ts → app/appNameResolver.simple.test.ts} +0 -0
  501. /package/src/utils/{audit.ts → audit/audit.ts} +0 -0
  502. /package/src/utils/{organisationContext.test.ts → context/organisationContext.test.ts} +0 -0
  503. /package/src/utils/{cn.ts → core/cn.ts} +0 -0
  504. /package/src/utils/{debugLogger.ts → core/debugLogger.ts} +0 -0
  505. /package/src/utils/{dynamicUtils.ts → dynamic/dynamicUtils.ts} +0 -0
  506. /package/src/utils/{formatDate.test.ts → formatting/formatDate.test.ts} +0 -0
  507. /package/src/utils/{formatting.ts → formatting/formatting.ts} +0 -0
  508. /package/src/utils/{bundleAnalysis.ts → performance/bundleAnalysis.ts} +0 -0
  509. /package/src/utils/{performanceBenchmark.ts → performance/performanceBenchmark.ts} +0 -0
  510. /package/src/utils/{performanceBudgets.ts → performance/performanceBudgets.ts} +0 -0
  511. /package/src/utils/{permissionTypes.ts → permissions/permissionTypes.ts} +0 -0
  512. /package/src/utils/{permissionUtils.test.ts → permissions/permissionUtils.test.ts} +0 -0
  513. /package/src/utils/{permissionUtils.ts → permissions/permissionUtils.ts} +0 -0
  514. /package/src/utils/{auth-utils.ts → security/auth-utils.ts} +0 -0
  515. /package/src/utils/{secureDataAccess.test.ts → security/secureDataAccess.test.ts} +0 -0
  516. /package/src/utils/{secureDataAccess.ts → security/secureDataAccess.ts} +0 -0
  517. /package/src/utils/{secureStorage.ts → security/secureStorage.ts} +0 -0
  518. /package/src/utils/{securityMonitor.ts → security/securityMonitor.ts} +0 -0
  519. /package/src/{validation → utils/validation}/common.ts +0 -0
  520. /package/src/{validation → utils/validation}/passwordSchema.ts +0 -0
  521. /package/src/{validation → utils/validation}/user.ts +0 -0
  522. /package/src/utils/{validation.ts → validation/validation.ts} +0 -0
package/dist/utils.d.ts CHANGED
@@ -1,12 +1,15 @@
1
- export { A as AppConfig, S as SecureDataAccess, a as cn, j as formatCompactNumber, e as formatCurrency, f as formatDate, k as formatFileSize, h as formatNumber, i as formatPercent, g as getAppConfig, d as getCurrentAppId, b as getCurrentAppName, s as setAppConfig, u as useSessionTracking } from './formatting-DFcCxUEk.js';
2
- import { z } from 'zod';
1
+ export { S as SecureDataAccess, a as cn, j as formatCompactNumber, e as formatCurrency, f as formatDate, k as formatFileSize, h as formatNumber, i as formatPercent, g as getAppConfig, d as getCurrentAppId, s as setAppConfig, u as useSessionTracking } from './formatting-CvUXy2mF.js';
2
+ import { SupabaseClient } from '@supabase/supabase-js';
3
+ import { D as Database } from './database-C6jy7EOu.js';
4
+ export { g as changePasswordSchema, t as combineSchemas, i as contactFormSchema, l as loginSchema, f as passwordResetSchema, q as pickSchema, r as registrationSchema, c as secureLoginSchema, s as securePasswordSchema, h as userProfileSchema } from './validation-8npbysjg.js';
5
+ export { CSRFTokenData, SafeQueryParams, SanitizationOptions, buildSafeQueryParams, calculatePasswordStrength, csrfManager, dateSchema, deepMerge, detectSQLInjection, emailSchema, enhancedEmailSchema, enhancedNameSchema, enhancedPasswordSchema, enhancedPhoneSchema, enhancedUrlSchema, escapeLikeQuery, generateCSRFToken, getCSRFToken, isEmpty, isObject, isStrongPassword, isValidDate, isValidEmail, isValidUrl, isWithinRange, limitOffsetSchema, matchesPattern, nameSchema, orderBySchema, passwordSchema, phoneSchema, renderSafeHtml, sanitizeFilters, sanitizeFormData, sanitizeHtml, sanitizeHtml as sanitizeHtmlAdvanced, sanitizeSearchQuery, sanitizeUserInput, sanitizeUserInput_deprecated, searchQuerySchema, sqlIdentifierSchema, urlSchema, userPreferencesSchema, userSettingsSchema, usernameSchema, validateCSRFToken, validateHtml, validateUserInput } from './validation.js';
3
6
  export { u as useComponentPerformance } from './useComponentPerformance-DE9l5RkL.js';
4
7
  import * as date_fns from 'date-fns';
5
- import { D as DataTable } from './DataTable-C7GaRZye.js';
6
- import './types-D5rqZQXk.js';
8
+ import { D as DataTable } from './DataTable-CWAZZcXC.js';
9
+ import './types-Dfz9dmVH.js';
7
10
  import React__default, { ComponentType } from 'react';
8
- import { SupabaseClient } from '@supabase/supabase-js';
9
11
  import 'clsx';
12
+ import 'zod';
10
13
  import 'react/jsx-runtime';
11
14
  import '@tanstack/react-table';
12
15
 
@@ -43,6 +46,109 @@ declare class DebugLogger {
43
46
  static info(component: string, message: string, ...args: any[]): void;
44
47
  }
45
48
 
49
+ /**
50
+ * @file Production-Safe Logger Utility
51
+ * @package @jmruthers/pace-core
52
+ * @module Utils/Logger
53
+ * @since 0.4.76
54
+ */
55
+ /**
56
+ * Logger levels for different types of messages
57
+ */
58
+ declare enum LogLevel {
59
+ DEBUG = 0,
60
+ INFO = 1,
61
+ WARN = 2,
62
+ ERROR = 3
63
+ }
64
+ /**
65
+ * Logger configuration interface
66
+ */
67
+ interface LoggerConfig {
68
+ /** Minimum log level to output */
69
+ level: LogLevel;
70
+ /** Whether to include timestamps */
71
+ includeTimestamp: boolean;
72
+ /** Whether to include component names */
73
+ includeComponent: boolean;
74
+ /** Custom prefix for all log messages */
75
+ prefix?: string;
76
+ }
77
+ /**
78
+ * Production-safe logger that no-ops in production builds
79
+ * Only outputs logs in development mode to prevent production console spam
80
+ */
81
+ declare class Logger {
82
+ private static config;
83
+ /**
84
+ * Check if we're in development or test mode
85
+ * Allows logging in both development and test environments
86
+ */
87
+ private static get isDevelopment();
88
+ /**
89
+ * Configure the logger
90
+ */
91
+ static configure(config: Partial<LoggerConfig>): void;
92
+ /**
93
+ * Format a log message with optional timestamp and component
94
+ */
95
+ private static formatMessage;
96
+ /**
97
+ * Check if a log level should be output
98
+ */
99
+ private static shouldLog;
100
+ /**
101
+ * Log debug information (development only)
102
+ */
103
+ static debug(component: string, message: string, ...args: any[]): void;
104
+ /**
105
+ * Log info information (development only)
106
+ */
107
+ static info(component: string, message: string, ...args: any[]): void;
108
+ /**
109
+ * Log warning information (development only)
110
+ */
111
+ static warn(component: string, message: string, ...args: any[]): void;
112
+ /**
113
+ * Log error information (development only)
114
+ */
115
+ static error(component: string, message: string, ...args: any[]): void;
116
+ /**
117
+ * Create a scoped logger for a specific component
118
+ */
119
+ static createScopedLogger(component: string): {
120
+ debug: (message: string, ...args: any[]) => void;
121
+ info: (message: string, ...args: any[]) => void;
122
+ warn: (message: string, ...args: any[]) => void;
123
+ error: (message: string, ...args: any[]) => void;
124
+ };
125
+ }
126
+ /**
127
+ * Default logger instance for convenience
128
+ */
129
+ declare const logger: {
130
+ debug: (component: string, message: string, ...args: any[]) => void;
131
+ info: (component: string, message: string, ...args: any[]) => void;
132
+ warn: (component: string, message: string, ...args: any[]) => void;
133
+ error: (component: string, message: string, ...args: any[]) => void;
134
+ createScopedLogger: (component: string) => {
135
+ debug: (message: string, ...args: any[]) => void;
136
+ info: (message: string, ...args: any[]) => void;
137
+ warn: (message: string, ...args: any[]) => void;
138
+ error: (message: string, ...args: any[]) => void;
139
+ };
140
+ configure: (config: Partial<LoggerConfig>) => void;
141
+ };
142
+ /**
143
+ * Convenience function to create a scoped logger
144
+ */
145
+ declare function createLogger(component: string): {
146
+ debug: (message: string, ...args: any[]) => void;
147
+ info: (message: string, ...args: any[]) => void;
148
+ warn: (message: string, ...args: any[]) => void;
149
+ error: (message: string, ...args: any[]) => void;
150
+ };
151
+
46
152
  /**
47
153
  * Utility to resolve the current app name from various sources
48
154
  * Priority: package.json > environment variables > fallback
@@ -67,6 +173,11 @@ declare function getAppNameFromGlobal(): string | null;
67
173
  * Fallback method for when package.json is not available
68
174
  */
69
175
  declare function getAppNameFromEnvironment(): string | null;
176
+ /**
177
+ * Get the current app name from the most reliable source
178
+ * Priority: global variable > build-time injection > package.json > environment variables > null
179
+ */
180
+ declare function getCurrentAppName(): string | null;
70
181
  /**
71
182
  * Set the app name globally for RBAC resolution
72
183
  * Call this in your app's main entry point (e.g., main.tsx, index.tsx)
@@ -92,173 +203,41 @@ declare function setRBACAppName(appName: string): void;
92
203
  declare function getCurrentAppNameWithFallback(fallback?: string): string;
93
204
 
94
205
  /**
95
- * @file Internal utilities for validation module
96
- * @internal This file contains implementation details that should not be used directly
97
- */
98
- /**
99
- * Utility functions for validating data in the application
100
- */
101
- /**
102
- * Check if a string is a valid email
103
- */
104
- declare function isValidEmail(email: string): boolean;
105
- /**
106
- * Check if a string is empty (either null, undefined, or just whitespace)
107
- */
108
- declare function isEmpty(value: string | null | undefined): boolean;
109
- /**
110
- * Check if a password meets minimum requirements
111
- */
112
- declare function isStrongPassword(password: string): boolean;
113
- /**
114
- * Check if a URL is valid
115
- */
116
- declare function isValidUrl(url: string): boolean;
117
- /**
118
- * Check if a date string is valid
119
- */
120
- declare function isValidDate(dateStr: string): boolean;
121
- /**
122
- * Check if a value is within a range
123
- */
124
- declare function isWithinRange(value: number, min: number, max: number): boolean;
125
- /**
126
- * Check if a value matches a specific pattern
127
- */
128
- declare function matchesPattern(value: string, pattern: RegExp): boolean;
129
- /**
130
- * Utility function to deep merge objects for schema combination
131
- * @internal
132
- */
133
- declare function deepMerge<T extends Record<string, unknown>>(target: T, source: Record<string, unknown>): T;
134
- /**
135
- * Type guard to check if a value is a plain object
136
- * @internal
137
- */
138
- declare function isObject(item: unknown): item is Record<string, unknown>;
139
-
140
- /**
141
- * @file Input Sanitization Layer
206
+ * App ID Resolution Utility
142
207
  * @package @jmruthers/pace-core
143
- * @module Security
144
- * @since 0.1.0
208
+ * @module Utils/AppIdResolver
209
+ * @since 1.0.0
145
210
  *
146
- * Comprehensive input sanitization utilities to prevent XSS, injection attacks,
147
- * and other security vulnerabilities.
148
- */
149
-
150
- /**
151
- * Sanitization options for different contexts
152
- */
153
- interface SanitizationOptions {
154
- allowHtml?: boolean;
155
- allowedTags?: string[];
156
- maxLength?: number;
157
- trim?: boolean;
158
- removeScripts?: boolean;
159
- removeEvents?: boolean;
160
- }
161
- /**
162
- * Sanitizes user input by removing potentially dangerous characters and patterns
163
- */
164
- declare function sanitizeUserInput(input: string, options?: SanitizationOptions): string;
165
- /**
166
- * Sanitizes email addresses
167
- */
168
- declare function sanitizeEmail(email: string): string;
169
- /**
170
- * Sanitizes phone numbers
171
- */
172
- declare function sanitizePhoneNumber(phone: string): string;
173
- /**
174
- * Sanitizes URLs
175
- */
176
- declare function sanitizeUrl(url: string): string;
177
- /**
178
- * Sanitizes file names
179
- */
180
- declare function sanitizeFileName(fileName: string): string;
181
- /**
182
- * Sanitizes SQL input to prevent injection
211
+ * This module provides utilities to resolve app names to app IDs for database operations.
183
212
  */
184
- declare function sanitizeSqlInput(input: string): string;
185
- /**
186
- * Validates and sanitizes form data using Zod schemas
187
- */
188
- declare function sanitizeFormData<T>(data: unknown, schema: z.ZodSchema<T>, sanitizationRules?: Record<string, SanitizationOptions>): {
189
- success: boolean;
190
- data?: T;
191
- error?: string;
192
- };
193
- /**
194
- * Content Security Policy (CSP) utilities
195
- */
196
- declare const CSP_DIRECTIVES: {
197
- default: string;
198
- script: string;
199
- style: string;
200
- img: string;
201
- font: string;
202
- connect: string;
203
- frame: string;
204
- };
205
- declare function generateCSPHeader(customDirectives?: Partial<typeof CSP_DIRECTIVES>): string;
206
- /**
207
- * Rate limiting utilities
208
- */
209
- declare class RateLimiter {
210
- private maxAttempts;
211
- private windowMs;
212
- private attempts;
213
- constructor(maxAttempts?: number, windowMs?: number);
214
- isAllowed(identifier: string): boolean;
215
- getRemainingAttempts(identifier: string): number;
216
- reset(identifier: string): void;
217
- }
218
213
 
219
214
  /**
220
- * @file Validation utilities
215
+ * Resolves an app name to its corresponding app ID
221
216
  *
222
- * Shared validation utilities with enhanced security
223
- */
224
-
225
- /**
226
- * Validates user input against a schema with automatic sanitization
227
- */
228
- declare function validateUserInput<T>(schema: z.ZodSchema<T>, data: unknown, sanitizationRules?: Record<string, SanitizationOptions>): {
229
- success: boolean;
230
- data?: T;
231
- error?: string;
232
- };
233
- /**
234
- * Sanitizes user input by removing potentially dangerous characters
235
- * @deprecated Use sanitizeUserInput from lib/sanitization instead
236
- */
237
- declare function sanitizeUserInput_deprecated(input: string): string;
238
- /**
239
- * Enhanced email validation with sanitization
240
- */
241
- declare const emailSchema: z.ZodPipeline<z.ZodEffects<z.ZodString, string, string>, z.ZodString>;
242
- /**
243
- * Enhanced password validation
244
- */
245
- declare const passwordSchema: z.ZodString;
246
- /**
247
- * Username validation with sanitization
248
- */
249
- declare const usernameSchema: z.ZodPipeline<z.ZodEffects<z.ZodString, string, string>, z.ZodString>;
250
- /**
251
- * Name validation with sanitization
217
+ * @param supabase - Supabase client instance
218
+ * @param appName - The app name to resolve
219
+ * @returns Promise resolving to the app ID or null if not found
252
220
  */
253
- declare const nameSchema: z.ZodEffects<z.ZodEffects<z.ZodString, string, string>, string, string>;
221
+ declare function getAppId(supabase: SupabaseClient<Database>, appName: string): Promise<string | null>;
254
222
  /**
255
- * Phone number validation with sanitization
223
+ * Resolves multiple app names to their corresponding app IDs
224
+ *
225
+ * @param supabase - Supabase client instance
226
+ * @param appNames - Array of app names to resolve
227
+ * @returns Promise resolving to a map of app names to app IDs
256
228
  */
257
- declare const phoneSchema: z.ZodEffects<z.ZodString, string, string>;
229
+ declare function getAppIds(supabase: SupabaseClient<Database>, appNames: string[]): Promise<Record<string, string | null>>;
258
230
  /**
259
- * URL validation with sanitization
231
+ * Cached app ID resolver with TTL
260
232
  */
261
- declare const urlSchema: z.ZodEffects<z.ZodEffects<z.ZodString, string, string>, string, string>;
233
+ declare class CachedAppIdResolver {
234
+ private cache;
235
+ private ttl;
236
+ getAppId(supabase: SupabaseClient<Database>, appName: string): Promise<string | null>;
237
+ clearCache(): void;
238
+ clearCacheForApp(appName: string): void;
239
+ }
240
+ declare const cachedAppIdResolver: CachedAppIdResolver;
262
241
 
263
242
  interface SecurityEvent$1 {
264
243
  type: string;
@@ -269,6 +248,27 @@ interface SecurityEvent$1 {
269
248
  declare function getSecurityHeaders(): Record<string, string>;
270
249
  declare function validateSecurityHeaders(headers: Record<string, string>): boolean;
271
250
 
251
+ interface SecurityEvent {
252
+ id?: string;
253
+ action: string;
254
+ details: Record<string, any>;
255
+ timestamp?: number;
256
+ }
257
+ interface SecurityAlert {
258
+ id: string;
259
+ type: string;
260
+ message: string;
261
+ timestamp: Date;
262
+ }
263
+ declare class SecurityMonitor {
264
+ private events;
265
+ logEvent(event: SecurityEvent): void;
266
+ getEvents(): SecurityEvent[];
267
+ clearEvents(): void;
268
+ createAlert(alert: Omit<SecurityAlert, 'id' | 'timestamp'>): SecurityAlert;
269
+ }
270
+ declare const securityMonitor: SecurityMonitor;
271
+
272
272
  /**
273
273
  * Performance thresholds and constants
274
274
  */
@@ -318,6 +318,39 @@ declare const bundleAnalyzer: BundleAnalyzer;
318
318
  declare function validateImportPattern(moduleId: string, importedItems: string[]): void;
319
319
  declare function trackDynamicImport(moduleName: string): void;
320
320
 
321
+ interface PerformanceBudget {
322
+ metric: string;
323
+ budget: number;
324
+ actual: number;
325
+ threshold: 'error' | 'warning' | 'info';
326
+ }
327
+ interface PerformanceMetrics {
328
+ bundleSize: number;
329
+ chunkCount: number;
330
+ treeshakingEffectiveness: number;
331
+ dynamicImportUsage: number;
332
+ }
333
+ interface MeasurementResult {
334
+ passed: boolean;
335
+ value: number;
336
+ threshold: number;
337
+ }
338
+ declare const PERFORMANCE_BUDGETS: {
339
+ [key: string]: {
340
+ threshold: number;
341
+ };
342
+ };
343
+ declare class PerformanceBudgetMonitor {
344
+ private metrics;
345
+ private budgets;
346
+ measure(metric: string, value: number, metadata?: Record<string, unknown>): MeasurementResult;
347
+ setBudget(metric: string, budget: number, threshold?: 'error' | 'warning' | 'info'): void;
348
+ checkBudgets(): PerformanceBudget[];
349
+ getMetrics(): PerformanceMetrics;
350
+ reset(): void;
351
+ }
352
+ declare const performanceBudgetMonitor: PerformanceBudgetMonitor;
353
+
321
354
  /**
322
355
  * Dynamic utility loader to reduce initial bundle size
323
356
  * Heavy utilities are loaded on-demand
@@ -366,39 +399,6 @@ declare const lazyChartUtils: ReturnType<typeof createLazyUtility<unknown>>;
366
399
  declare const lazyFormUtils: ReturnType<typeof createLazyUtility<Awaited<ReturnType<typeof loadFormUtils>>>>;
367
400
  declare const lazyCSVUtils: ReturnType<typeof createLazyUtility<unknown>>;
368
401
 
369
- interface PerformanceBudget {
370
- metric: string;
371
- budget: number;
372
- actual: number;
373
- threshold: 'error' | 'warning' | 'info';
374
- }
375
- interface PerformanceMetrics {
376
- bundleSize: number;
377
- chunkCount: number;
378
- treeshakingEffectiveness: number;
379
- dynamicImportUsage: number;
380
- }
381
- interface MeasurementResult {
382
- passed: boolean;
383
- value: number;
384
- threshold: number;
385
- }
386
- declare const PERFORMANCE_BUDGETS: {
387
- [key: string]: {
388
- threshold: number;
389
- };
390
- };
391
- declare class PerformanceBudgetMonitor {
392
- private metrics;
393
- private budgets;
394
- measure(metric: string, value: number, metadata?: Record<string, unknown>): MeasurementResult;
395
- setBudget(metric: string, budget: number, threshold?: 'error' | 'warning' | 'info'): void;
396
- checkBudgets(): PerformanceBudget[];
397
- getMetrics(): PerformanceMetrics;
398
- reset(): void;
399
- }
400
- declare const performanceBudgetMonitor: PerformanceBudgetMonitor;
401
-
402
402
  interface LazyLoadOptions {
403
403
  fallback?: React__default.ReactNode;
404
404
  errorBoundary?: ComponentType<{
@@ -441,43 +441,6 @@ declare function parsePermission(permission: string): {
441
441
  action: string;
442
442
  } | null;
443
443
 
444
- /**
445
- * Creates a subset schema from a larger schema
446
- *
447
- * @param schema - Original Zod schema
448
- * @param keys - Array of keys to pick from the schema
449
- * @returns New schema with only the selected fields
450
- */
451
- declare function pickSchema<T extends z.ZodObject<any, any, any>, K extends keyof z.infer<T>>(schema: T, keys: K[]): z.ZodObject<any>;
452
- /**
453
- * Combines multiple Zod schemas into one
454
- *
455
- * @param schemas - Array of Zod schemas to combine
456
- * @returns Combined schema
457
- */
458
- declare function combineSchemas<T extends z.ZodObject<any, any, any>[]>(schemas: T): z.ZodObject<any>;
459
-
460
- interface SecurityEvent {
461
- id?: string;
462
- action: string;
463
- details: Record<string, any>;
464
- timestamp?: number;
465
- }
466
- interface SecurityAlert {
467
- id: string;
468
- type: string;
469
- message: string;
470
- timestamp: Date;
471
- }
472
- declare class SecurityMonitor {
473
- private events;
474
- logEvent(event: SecurityEvent): void;
475
- getEvents(): SecurityEvent[];
476
- clearEvents(): void;
477
- createAlert(alert: Omit<SecurityAlert, 'id' | 'timestamp'>): SecurityAlert;
478
- }
479
- declare const securityMonitor: SecurityMonitor;
480
-
481
444
  /**
482
445
  * @file Audit Logger - General Utility
483
446
  *
@@ -597,4 +560,4 @@ declare function getOrganisationContext(supabase: SupabaseClient): Promise<strin
597
560
  */
598
561
  declare function isOrganisationContextAvailable(supabase: SupabaseClient): Promise<boolean>;
599
562
 
600
- export { CSP_DIRECTIVES, DebugLogger, LazyDataTable, PERFORMANCE_BUDGETS, PERFORMANCE_THRESHOLDS, type PerformanceMetrics$1 as PerformanceMetrics, PermissionType, RateLimiter, type SanitizationOptions, type SecurityEvent$1 as SecurityEvent, auditLog, auditLogger, bundleAnalyzer, clearOrganisationContext, combineSchemas, createLazyComponent, createLazyUtility, createPerformanceBenchmark, deepMerge, emailSchema, generateCSPHeader, generateDeviceFingerprint, getAppNameFromBuildTime, getAppNameFromEnvironment, getAppNameFromGlobal, getAppNameFromPackageJson, getCurrentAppNameWithFallback, getOrganisationContext, getSecurityHeaders, hasAllPermissions, hasAnyPermission, hasPermission, isEmpty, isObject, isOrganisationContextAvailable, isStrongPassword, isValidDate, isValidEmail, isValidUrl, isWithinRange, lazyCSVUtils, lazyChartUtils, lazyDateUtils, lazyFormUtils, lazyLodash, loadCSVUtils, loadChartUtils, loadDateUtils, loadFormUtils, loadLodash, logAuditEvent, logAuthEvent, logPermissionEvent, logSecurityEvent, matchesPattern, measureRenderPerformance, nameSchema, parsePermission, passwordSchema, performanceBudgetMonitor, phoneSchema, pickSchema, sanitizeEmail, sanitizeFileName, sanitizeFormData, sanitizePhoneNumber, sanitizeSqlInput, sanitizeUrl, sanitizeUserInput, sanitizeUserInput_deprecated, securityMonitor, setOrganisationContext, setRBACAppName, trackDynamicImport, transformPermissionMapToBoolean, urlSchema, usernameSchema, validateDeviceFingerprint, validateImportPattern, validateSecurityHeaders, validateUserInput };
563
+ export { CachedAppIdResolver, DebugLogger, LazyDataTable, LogLevel, Logger, type LoggerConfig, PERFORMANCE_BUDGETS, PERFORMANCE_THRESHOLDS, type PerformanceMetrics$1 as PerformanceMetrics, PermissionType, type SecurityEvent$1 as SecurityEvent, auditLog, auditLogger, bundleAnalyzer, cachedAppIdResolver, clearOrganisationContext, createLazyComponent, createLazyUtility, createLogger, createPerformanceBenchmark, generateDeviceFingerprint, getAppId, getAppIds, getAppNameFromBuildTime, getAppNameFromEnvironment, getAppNameFromGlobal, getAppNameFromPackageJson, getCurrentAppName, getCurrentAppNameWithFallback, getOrganisationContext, getSecurityHeaders, hasAllPermissions, hasAnyPermission, hasPermission, isOrganisationContextAvailable, lazyCSVUtils, lazyChartUtils, lazyDateUtils, lazyFormUtils, lazyLodash, loadCSVUtils, loadChartUtils, loadDateUtils, loadFormUtils, loadLodash, logAuditEvent, logAuthEvent, logPermissionEvent, logSecurityEvent, logger, measureRenderPerformance, parsePermission, performanceBudgetMonitor, securityMonitor, setOrganisationContext, setRBACAppName, trackDynamicImport, transformPermissionMapToBoolean, validateDeviceFingerprint, validateImportPattern, validateSecurityHeaders };