@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.
- package/dist/{DataTable-C7GaRZye.d.ts → DataTable-CWAZZcXC.d.ts} +1 -1
- package/dist/{DataTable-A36PJG6N.js → DataTable-CYOHOX3O.js} +25 -13
- package/dist/{PublicLoadingSpinner-CUAnTvcg.d.ts → EventLogo-801uofbR.d.ts} +51 -135
- package/dist/UnifiedAuthProvider-5E5TUNMS.js +17 -0
- package/dist/{UnifiedAuthProvider-BVKmQd9u.d.ts → UnifiedAuthProvider-DJxGTftH.d.ts} +1 -1
- package/dist/{api-TNIBJWLM.js → api-45XYYO2A.js} +4 -3
- package/dist/{audit-T36HM7IM.js → audit-64X3VJXB.js} +3 -2
- package/dist/{chunk-CTJRBUX2.js → chunk-2TWNJ46Y.js} +2 -2
- package/dist/{chunk-UJI6WSMD.js → chunk-444EZN6N.js} +3 -3
- package/dist/chunk-444EZN6N.js.map +1 -0
- package/dist/{chunk-3CG5L6RN.js → chunk-4MT5BGGL.js} +90 -73
- package/dist/chunk-4MT5BGGL.js.map +1 -0
- package/dist/{chunk-PYUXFQJ3.js → chunk-56XJ3TU6.js} +2 -2
- package/dist/chunk-56XJ3TU6.js.map +1 -0
- package/dist/chunk-5DPZ5EAT.js +60 -0
- package/dist/chunk-5DPZ5EAT.js.map +1 -0
- package/dist/{chunk-66C4BSAY.js → chunk-ANBQRTPX.js} +9 -2
- package/dist/chunk-ANBQRTPX.js.map +1 -0
- package/dist/chunk-APIBCTL2.js +670 -0
- package/dist/chunk-APIBCTL2.js.map +1 -0
- package/dist/{chunk-GKHF54DI.js → chunk-BESYRHQM.js} +10 -4
- package/dist/chunk-BESYRHQM.js.map +1 -0
- package/dist/{chunk-WP5I5GLN.js → chunk-BVYWGZVV.js} +112 -97
- package/dist/chunk-BVYWGZVV.js.map +1 -0
- package/dist/{chunk-GEVIB2UB.js → chunk-ERISIBYU.js} +14 -5
- package/dist/chunk-ERISIBYU.js.map +1 -0
- package/dist/{chunk-CQZU6TFE.js → chunk-FHWWBIHA.js} +100 -62
- package/dist/chunk-FHWWBIHA.js.map +1 -0
- package/dist/{chunk-O3NWNXDY.js → chunk-FMUCXFII.js} +2 -2
- package/dist/chunk-FMUCXFII.js.map +1 -0
- package/dist/{chunk-GVDR7WNV.js → chunk-HJGGOMQ6.js} +194 -518
- package/dist/chunk-HJGGOMQ6.js.map +1 -0
- package/dist/{chunk-BDZUMRBD.js → chunk-K2WWTH7O.js} +13 -6
- package/dist/chunk-K2WWTH7O.js.map +1 -0
- package/dist/{chunk-BYXRHAIF.js → chunk-L6PGMCMD.js} +23 -14
- package/dist/chunk-L6PGMCMD.js.map +1 -0
- package/dist/chunk-LMC26NLJ.js +84 -0
- package/dist/chunk-LMC26NLJ.js.map +1 -0
- package/dist/{chunk-M6DDYFUD.js → chunk-LS353YLY.js} +19 -16
- package/dist/chunk-LS353YLY.js.map +1 -0
- package/dist/{chunk-ZYZCRSBD.js → chunk-LTV3XIJJ.js} +16 -11
- package/dist/chunk-LTV3XIJJ.js.map +1 -0
- package/dist/{chunk-HMNOSGVA.js → chunk-NOHEVYVX.js} +377 -666
- package/dist/chunk-NOHEVYVX.js.map +1 -0
- package/dist/{chunk-JCQZ6LA7.js → chunk-Q5QRDWKI.js} +9 -3
- package/dist/chunk-Q5QRDWKI.js.map +1 -0
- package/dist/chunk-S5OFRT4M.js +94 -0
- package/dist/chunk-S5OFRT4M.js.map +1 -0
- package/dist/{chunk-3DBFLLLU.js → chunk-SBVILCCA.js} +14 -9
- package/dist/chunk-SBVILCCA.js.map +1 -0
- package/dist/{chunk-TGIY2AR2.js → chunk-SL2YQDR6.js} +4 -3
- package/dist/{chunk-TGIY2AR2.js.map → chunk-SL2YQDR6.js.map} +1 -1
- package/dist/{chunk-VZ5OR6HD.js → chunk-TVYPTYOY.js} +55 -179
- package/dist/chunk-TVYPTYOY.js.map +1 -0
- package/dist/{chunk-ZV77RZMU.js → chunk-XARJS7CD.js} +2 -2
- package/dist/chunk-XDNLUEXI.js +138 -0
- package/dist/chunk-XDNLUEXI.js.map +1 -0
- package/dist/{chunk-F64FFPOZ.js → chunk-YLKIDTUK.js} +26 -20
- package/dist/chunk-YLKIDTUK.js.map +1 -0
- package/dist/{chunk-5F3NDPJV.js → chunk-ZZ2SS7NI.js} +10 -5
- package/dist/chunk-ZZ2SS7NI.js.map +1 -0
- package/dist/components.d.ts +7 -287
- package/dist/components.js +26 -157
- package/dist/components.js.map +1 -1
- package/dist/{file-reference-C9isKNPn.d.ts → file-reference-C6Gkn77H.d.ts} +1 -1
- package/dist/{formatting-DFcCxUEk.d.ts → formatting-CvUXy2mF.d.ts} +1 -1
- package/dist/hooks.d.ts +3 -3
- package/dist/hooks.js +22 -16
- package/dist/hooks.js.map +1 -1
- package/dist/index.d.ts +101 -9
- package/dist/index.js +43 -31
- package/dist/index.js.map +1 -1
- package/dist/providers.d.ts +1 -1
- package/dist/providers.js +5 -4
- package/dist/rbac/index.js +13 -12
- package/dist/styles/index.js +2 -1
- package/dist/theming/runtime.d.ts +2 -19
- package/dist/theming/runtime.js +2 -1
- package/dist/{types-D5rqZQXk.d.ts → types-Dfz9dmVH.d.ts} +12 -1
- package/dist/types.d.ts +2 -2
- package/dist/types.js +1 -1
- package/dist/{useInactivityTracker-MRUU55XI.js → useInactivityTracker-TO6ZOF35.js} +3 -2
- package/dist/{usePublicRouteParams-Dyt1tzI9.d.ts → usePublicRouteParams-B7PabvuH.d.ts} +1 -1
- package/dist/utils.d.ts +195 -232
- package/dist/utils.js +173 -331
- package/dist/utils.js.map +1 -1
- package/dist/{validation-DnhrNMju.d.ts → validation-8npbysjg.d.ts} +26 -8
- package/dist/validation.d.ts +261 -10
- package/dist/validation.js +82 -440
- package/dist/validation.js.map +1 -1
- package/docs/api/classes/ColumnFactory.md +1 -1
- package/docs/api/classes/ErrorBoundary.md +6 -6
- package/docs/api/classes/InvalidScopeError.md +1 -1
- package/docs/api/classes/MissingUserContextError.md +1 -1
- package/docs/api/classes/OrganisationContextRequiredError.md +1 -1
- package/docs/api/classes/PermissionDeniedError.md +1 -1
- package/docs/api/classes/PublicErrorBoundary.md +1 -1
- package/docs/api/classes/RBACAuditManager.md +6 -6
- package/docs/api/classes/RBACCache.md +1 -1
- package/docs/api/classes/RBACEngine.md +7 -7
- package/docs/api/classes/RBACError.md +1 -1
- package/docs/api/classes/RBACNotInitializedError.md +1 -1
- package/docs/api/classes/SecureSupabaseClient.md +1 -1
- package/docs/api/classes/StorageUtils.md +1 -1
- package/docs/api/enums/FileCategory.md +1 -1
- package/docs/api/interfaces/AggregateConfig.md +4 -4
- package/docs/api/interfaces/ButtonProps.md +1 -1
- package/docs/api/interfaces/CardProps.md +1 -1
- package/docs/api/interfaces/ColorPalette.md +1 -1
- package/docs/api/interfaces/ColorShade.md +29 -4
- package/docs/api/interfaces/DataAccessRecord.md +9 -9
- package/docs/api/interfaces/DataRecord.md +1 -1
- package/docs/api/interfaces/DataTableAction.md +18 -18
- package/docs/api/interfaces/DataTableColumn.md +61 -1
- package/docs/api/interfaces/DataTableProps.md +1 -1
- package/docs/api/interfaces/DataTableToolbarButton.md +7 -7
- package/docs/api/interfaces/EmptyStateConfig.md +5 -5
- package/docs/api/interfaces/EnhancedNavigationMenuProps.md +14 -14
- package/docs/api/interfaces/EventAppRoleData.md +1 -1
- package/docs/api/interfaces/EventLogoProps.md +152 -0
- package/docs/api/interfaces/ExportColumn.md +1 -1
- package/docs/api/interfaces/ExportOptions.md +8 -8
- package/docs/api/interfaces/FileDisplayProps.md +15 -15
- package/docs/api/interfaces/FileMetadata.md +1 -1
- package/docs/api/interfaces/FileReference.md +1 -1
- package/docs/api/interfaces/FileSizeLimits.md +1 -1
- package/docs/api/interfaces/FileUploadOptions.md +1 -1
- package/docs/api/interfaces/FileUploadProps.md +1 -1
- package/docs/api/interfaces/FooterProps.md +1 -1
- package/docs/api/interfaces/GrantEventAppRoleParams.md +1 -1
- package/docs/api/interfaces/InactivityWarningModalProps.md +1 -1
- package/docs/api/interfaces/InputProps.md +1 -1
- package/docs/api/interfaces/LabelProps.md +1 -1
- package/docs/api/interfaces/LoginFormProps.md +1 -1
- package/docs/api/interfaces/NavigationAccessRecord.md +10 -10
- package/docs/api/interfaces/NavigationContextType.md +9 -9
- package/docs/api/interfaces/NavigationGuardProps.md +10 -10
- package/docs/api/interfaces/NavigationItem.md +1 -1
- package/docs/api/interfaces/NavigationMenuProps.md +1 -1
- package/docs/api/interfaces/NavigationProviderProps.md +7 -7
- package/docs/api/interfaces/Organisation.md +1 -1
- package/docs/api/interfaces/OrganisationContextType.md +1 -1
- package/docs/api/interfaces/OrganisationMembership.md +1 -1
- package/docs/api/interfaces/OrganisationProviderProps.md +1 -1
- package/docs/api/interfaces/OrganisationSecurityError.md +1 -1
- package/docs/api/interfaces/PaceAppLayoutProps.md +27 -27
- package/docs/api/interfaces/PaceLoginPageProps.md +4 -4
- package/docs/api/interfaces/PageAccessRecord.md +8 -8
- package/docs/api/interfaces/PagePermissionContextType.md +8 -8
- package/docs/api/interfaces/PagePermissionGuardProps.md +11 -11
- package/docs/api/interfaces/PagePermissionProviderProps.md +7 -7
- package/docs/api/interfaces/PaletteData.md +4 -4
- package/docs/api/interfaces/PermissionEnforcerProps.md +11 -11
- package/docs/api/interfaces/ProtectedRouteProps.md +6 -6
- package/docs/api/interfaces/PublicErrorBoundaryProps.md +1 -1
- package/docs/api/interfaces/PublicErrorBoundaryState.md +1 -1
- package/docs/api/interfaces/PublicLoadingSpinnerProps.md +1 -1
- package/docs/api/interfaces/PublicPageFooterProps.md +1 -1
- package/docs/api/interfaces/PublicPageHeaderProps.md +1 -1
- package/docs/api/interfaces/PublicPageLayoutProps.md +1 -1
- package/docs/api/interfaces/RBACConfig.md +1 -1
- package/docs/api/interfaces/RBACLogger.md +1 -1
- package/docs/api/interfaces/RevokeEventAppRoleParams.md +1 -1
- package/docs/api/interfaces/RoleBasedRouterContextType.md +8 -8
- package/docs/api/interfaces/RoleBasedRouterProps.md +10 -10
- package/docs/api/interfaces/RoleManagementResult.md +1 -1
- package/docs/api/interfaces/RouteAccessRecord.md +10 -10
- package/docs/api/interfaces/RouteConfig.md +10 -10
- package/docs/api/interfaces/SecureDataContextType.md +9 -9
- package/docs/api/interfaces/SecureDataProviderProps.md +8 -8
- package/docs/api/interfaces/SessionRestorationLoaderProps.md +21 -0
- package/docs/api/interfaces/StorageConfig.md +1 -1
- package/docs/api/interfaces/StorageFileInfo.md +1 -1
- package/docs/api/interfaces/StorageFileMetadata.md +1 -1
- package/docs/api/interfaces/StorageListOptions.md +1 -1
- package/docs/api/interfaces/StorageListResult.md +1 -1
- package/docs/api/interfaces/StorageUploadOptions.md +1 -1
- package/docs/api/interfaces/StorageUploadResult.md +1 -1
- package/docs/api/interfaces/StorageUrlOptions.md +1 -1
- package/docs/api/interfaces/StyleImport.md +1 -1
- package/docs/api/interfaces/SwitchProps.md +1 -1
- package/docs/api/interfaces/ToastActionElement.md +1 -1
- package/docs/api/interfaces/ToastProps.md +1 -1
- package/docs/api/interfaces/UnifiedAuthContextType.md +53 -53
- package/docs/api/interfaces/UnifiedAuthProviderProps.md +13 -13
- package/docs/api/interfaces/UseInactivityTrackerOptions.md +9 -9
- package/docs/api/interfaces/UseInactivityTrackerReturn.md +8 -8
- package/docs/api/interfaces/UsePublicEventOptions.md +3 -3
- package/docs/api/interfaces/UsePublicEventReturn.md +5 -5
- package/docs/api/interfaces/UsePublicFileDisplayOptions.md +4 -4
- package/docs/api/interfaces/UsePublicFileDisplayReturn.md +9 -9
- package/docs/api/interfaces/UsePublicRouteParamsReturn.md +1 -1
- package/docs/api/interfaces/UseResolvedScopeOptions.md +4 -4
- package/docs/api/interfaces/UseResolvedScopeReturn.md +4 -4
- package/docs/api/interfaces/UserEventAccess.md +11 -11
- package/docs/api/interfaces/UserMenuProps.md +1 -1
- package/docs/api/interfaces/UserProfile.md +1 -1
- package/docs/api/modules.md +514 -212
- package/docs/api-reference/components.md +106 -26
- package/docs/architecture/README.md +0 -2
- package/docs/implementation-guides/data-tables.md +277 -13
- package/docs/implementation-guides/forms.md +1 -16
- package/docs/implementation-guides/permission-enforcement.md +8 -2
- package/examples/README.md +30 -14
- package/examples/STRUCTURE.md +125 -0
- package/examples/components/DataTable/HierarchicalActionsExample.tsx +421 -0
- package/examples/components/DataTable/HierarchicalExample.tsx +475 -0
- package/examples/components/DataTable/InitialPageSizeExample.tsx +177 -0
- package/examples/components/DataTable/PerformanceExample.tsx +506 -0
- package/examples/components/DataTable/index.ts +13 -0
- package/examples/components/Dialog/BasicHtmlTest.tsx +55 -0
- package/examples/components/Dialog/DebugHtmlExample.tsx +68 -0
- package/examples/components/Dialog/HtmlDialogExample.tsx +202 -0
- package/examples/components/Dialog/ScrollableDialogExample.tsx +290 -0
- package/examples/components/Dialog/SimpleHtmlTest.tsx +61 -0
- package/examples/components/Dialog/SmartDialogExample.tsx +322 -0
- package/examples/components/Dialog/index.ts +15 -0
- package/examples/components/index.ts +11 -0
- package/examples/features/index.ts +12 -0
- package/examples/{public-pages → features/public-pages}/CorrectPublicPageImplementation.tsx +1 -1
- package/examples/{public-pages → features/public-pages}/PublicEventPage.tsx +1 -1
- package/examples/{public-pages → features/public-pages}/PublicPageApp.tsx +1 -1
- package/examples/{public-pages → features/public-pages}/PublicPageUsageExample.tsx +1 -1
- package/examples/index.ts +11 -3
- package/package.json +30 -10
- package/src/components/Alert/Alert.tsx +1 -1
- package/src/components/Avatar/Avatar.tsx +1 -1
- package/src/components/Button/Button.tsx +1 -1
- package/src/components/Card/Card.tsx +1 -1
- package/src/components/Checkbox/Checkbox.tsx +1 -1
- package/src/components/DataTable/DataTable.test.tsx +1 -1
- package/src/components/DataTable/DataTable.tsx +1 -30
- package/src/components/DataTable/__tests__/DataTable.grouping-aggregation.test.tsx +562 -0
- package/src/components/DataTable/__tests__/styles.test.ts +2 -2
- package/src/components/DataTable/components/ActionButtons.tsx +0 -15
- package/src/components/DataTable/components/DataTableCore.tsx +4 -185
- package/src/components/DataTable/components/DataTableErrorBoundary.tsx +1 -1
- package/src/components/DataTable/components/DataTableModals.tsx +1 -27
- package/src/components/DataTable/components/EditableRow.tsx +1 -1
- package/src/components/DataTable/components/ImportModal.tsx +2 -14
- package/src/components/DataTable/components/PaginationControls.tsx +1 -1
- package/src/components/DataTable/components/UnifiedTableBody.tsx +109 -82
- package/src/components/DataTable/components/__tests__/ActionButtons.test.tsx +1 -1
- package/src/components/DataTable/components/__tests__/DataTableErrorBoundary.test.tsx +1 -1
- package/src/components/DataTable/components/__tests__/DataTableModals.test.tsx +1 -1
- package/src/components/DataTable/components/__tests__/ImportModal.test.tsx +1 -1
- package/src/components/DataTable/examples/GroupingAggregationExample.tsx +273 -0
- package/src/components/DataTable/examples/HierarchicalActionsExample.tsx +1 -1
- package/src/components/DataTable/examples/__tests__/HierarchicalActionsExample.test.tsx +1 -1
- package/src/components/DataTable/hooks/useColumnOrderPersistence.ts +1 -1
- package/src/components/DataTable/hooks/useColumnVisibilityPersistence.ts +1 -1
- package/src/components/DataTable/hooks/useDataTablePermissions.ts +2 -23
- package/src/components/DataTable/index.ts +4 -0
- package/src/components/DataTable/styles.ts +1 -1
- package/src/components/DataTable/types.ts +13 -0
- package/src/components/DataTable/utils/__tests__/exportUtils.test.ts +1 -1
- package/src/components/DataTable/utils/aggregationUtils.ts +161 -0
- package/src/components/DataTable/utils/exportUtils.ts +1 -1
- package/src/components/DataTable/utils/flexibleImport.ts +1 -11
- package/src/components/DataTable/utils/index.ts +1 -0
- package/src/components/DataTable/utils/paginationUtils.ts +1 -1
- package/src/components/Dialog/Dialog.tsx +2 -2
- package/src/components/ErrorBoundary/ErrorBoundary.test.tsx +35 -7
- package/src/components/ErrorBoundary/ErrorBoundary.tsx +5 -4
- package/src/components/EventSelector/EventSelector.tsx +3 -2
- package/src/components/FileDisplay/FileDisplay.tsx +2 -36
- package/src/components/FileUpload/FileUpload.test.tsx +2 -2
- package/src/components/FileUpload/FileUpload.tsx +2 -2
- package/src/components/Footer/Footer.tsx +1 -1
- package/src/components/Form/Form.test.tsx +4 -509
- package/src/components/Form/Form.tsx +1 -1
- package/src/components/Form/FormField.tsx +1 -1
- package/src/components/Form/index.ts +0 -12
- package/src/components/Header/Header.tsx +1 -1
- package/src/components/Input/Input.tsx +1 -1
- package/src/components/Label/Label.tsx +1 -1
- package/src/components/LoginForm/LoginForm.tsx +1 -1
- package/src/components/NavigationMenu/NavigationMenu.test.tsx +19 -3
- package/src/components/NavigationMenu/NavigationMenu.tsx +9 -8
- package/src/components/OrganisationSelector/OrganisationSelector.tsx +4 -3
- package/src/components/PaceAppLayout/PaceAppLayout.tsx +14 -12
- package/src/components/PaceAppLayout/__tests__/PaceAppLayout.integration.test.tsx +0 -16
- package/src/components/PaceAppLayout/__tests__/PaceAppLayout.security.test.tsx +0 -1
- package/src/components/PaceAppLayout/__tests__/PaceAppLayout.unit.test.tsx +0 -9
- package/src/components/PaceLoginPage/PaceLoginPage.test.tsx +35 -3
- package/src/components/PaceLoginPage/PaceLoginPage.tsx +13 -12
- package/src/components/PasswordReset/PasswordChangeForm.tsx +1 -1
- package/src/components/PasswordReset/index.ts +0 -2
- package/src/components/Progress/Progress.tsx +1 -1
- package/src/components/ProtectedRoute/ProtectedRoute.test.tsx +35 -8
- package/src/components/ProtectedRoute/ProtectedRoute.tsx +3 -2
- package/src/components/PublicLayout/PublicErrorBoundary.tsx +1 -1
- package/src/components/PublicLayout/PublicLoadingSpinner.tsx +1 -1
- package/src/components/PublicLayout/PublicPageContextChecker.tsx +44 -43
- package/src/components/PublicLayout/PublicPageFooter.tsx +1 -1
- package/src/components/PublicLayout/PublicPageHeader.tsx +1 -15
- package/src/components/PublicLayout/PublicPageProvider.tsx +3 -2
- package/src/components/PublicLayout/__tests__/PublicPageContextChecker.test.tsx +2 -0
- package/src/components/PublicLayout/index.ts +4 -2
- package/src/components/Select/Select.tsx +1 -1
- package/src/components/{SessionRestorationLoader.tsx → SessionRestorationLoader/SessionRestorationLoader.tsx} +3 -2
- package/src/components/SessionRestorationLoader/index.ts +3 -0
- package/src/components/Switch/Switch.tsx +1 -1
- package/src/components/Table/Table.tsx +1 -1
- package/src/components/Toast/Toast.tsx +1 -1
- package/src/components/Tooltip/Tooltip.tsx +1 -1
- package/src/components/index.ts +4 -10
- package/src/hooks/__tests__/hooks.integration.test.tsx +37 -22
- package/src/hooks/__tests__/useComponentPerformance.unit.test.tsx +33 -17
- package/src/hooks/__tests__/useDataTablePerformance.unit.test.ts +28 -3
- package/src/hooks/__tests__/useFileDisplay.unit.test.ts +36 -9
- package/src/hooks/__tests__/useInactivityTracker.unit.test.ts +26 -2
- package/src/hooks/__tests__/usePerformanceMonitor.unit.test.ts +19 -6
- package/src/hooks/__tests__/usePermissionCache.simple.test.ts +17 -4
- package/src/hooks/__tests__/usePermissionCache.unit.test.ts +17 -4
- package/src/hooks/__tests__/usePublicEvent.simple.test.ts +26 -6
- package/src/hooks/__tests__/usePublicFileDisplay.test.ts +16 -6
- package/src/hooks/__tests__/useSecureDataAccess.unit.test.tsx +3 -3
- package/src/hooks/__tests__/useSessionRestoration.unit.test.tsx +17 -3
- package/src/hooks/public/usePublicEvent.ts +7 -6
- package/src/hooks/public/usePublicEventLogo.ts +7 -4
- package/src/hooks/public/usePublicFileDisplay.ts +6 -150
- package/src/hooks/useComponentPerformance.ts +4 -1
- package/src/hooks/useDataTablePerformance.ts +4 -3
- package/src/hooks/useEventTheme.test.ts +18 -5
- package/src/hooks/useEventTheme.ts +4 -1
- package/src/hooks/useEvents.ts +2 -0
- package/src/hooks/useFileDisplay.ts +9 -8
- package/src/hooks/useFileReference.ts +4 -1
- package/src/hooks/useFileUrl.ts +4 -1
- package/src/hooks/useInactivityTracker.ts +5 -4
- package/src/hooks/useOrganisationSecurity.test.ts +33 -12
- package/src/hooks/useOrganisationSecurity.ts +8 -7
- package/src/hooks/usePerformanceMonitor.ts +6 -3
- package/src/hooks/usePermissionCache.ts +13 -6
- package/src/hooks/useSecureDataAccess.test.ts +2 -2
- package/src/hooks/useSecureDataAccess.ts +9 -8
- package/src/hooks/useSessionRestoration.ts +4 -1
- package/src/hooks/useStorage.ts +4 -1
- package/src/index.ts +16 -7
- package/src/providers/services/AuthServiceProvider.tsx +3 -2
- package/src/providers/services/EventServiceProvider.tsx +2 -1
- package/src/providers/services/InactivityServiceProvider.tsx +2 -1
- package/src/providers/services/OrganisationServiceProvider.tsx +2 -1
- package/src/providers/services/UnifiedAuthProvider.tsx +4 -3
- package/src/providers/services/__tests__/AuthServiceProvider.integration.test.tsx +22 -2
- package/src/providers/services/__tests__/UnifiedAuthProvider.integration.test.tsx +24 -2
- package/src/rbac/__tests__/cache-invalidation.test.ts +20 -6
- package/src/rbac/api.ts +5 -2
- package/src/rbac/audit-enhanced.ts +6 -6
- package/src/rbac/audit.test.ts +60 -38
- package/src/rbac/audit.ts +8 -8
- package/src/rbac/cache-invalidation.ts +7 -4
- package/src/rbac/components/EnhancedNavigationMenu.tsx +11 -5
- package/src/rbac/components/NavigationGuard.tsx +7 -3
- package/src/rbac/components/NavigationProvider.tsx +6 -3
- package/src/rbac/components/PagePermissionGuard.tsx +28 -16
- package/src/rbac/components/PagePermissionProvider.tsx +4 -1
- package/src/rbac/components/PermissionEnforcer.tsx +9 -3
- package/src/rbac/components/RoleBasedRouter.tsx +3 -1
- package/src/rbac/components/SecureDataProvider.tsx +7 -3
- package/src/rbac/components/__tests__/EnhancedNavigationMenu.test.tsx +87 -61
- package/src/rbac/components/__tests__/NavigationGuard.test.tsx +83 -33
- package/src/rbac/components/__tests__/NavigationProvider.test.tsx +36 -13
- package/src/rbac/components/__tests__/PagePermissionGuard.test.tsx +2 -2
- package/src/rbac/components/__tests__/PagePermissionProvider.test.tsx +22 -8
- package/src/rbac/components/__tests__/PermissionEnforcer.test.tsx +19 -6
- package/src/rbac/components/__tests__/SecureDataProvider.fixed.test.tsx +43 -17
- package/src/rbac/components/__tests__/SecureDataProvider.test.tsx +42 -17
- package/src/rbac/engine.ts +15 -7
- package/src/rbac/hooks/usePermissions.ts +7 -3
- package/src/rbac/hooks/useResolvedScope.test.ts +2 -2
- package/src/rbac/hooks/useResolvedScope.ts +10 -7
- package/src/rbac/permissions.ts +5 -2
- package/src/rbac/security.test.ts +27 -16
- package/src/rbac/security.ts +5 -4
- package/src/services/AuthService.ts +22 -21
- package/src/services/EventService.ts +12 -12
- package/src/services/InactivityService.ts +5 -4
- package/src/services/OrganisationService.ts +26 -25
- package/src/services/__tests__/AuthService.test.ts +51 -19
- package/src/services/__tests__/EventService.test.ts +37 -5
- package/src/services/__tests__/InactivityService.test.ts +38 -4
- package/src/services/__tests__/OrganisationService.test.ts +3 -8
- package/src/services/base/BaseService.ts +3 -1
- package/src/theming/__tests__/runtime.test.ts +21 -12
- package/src/theming/parseEventColours.ts +5 -19
- package/src/theming/runtime.ts +8 -4
- package/src/types/validation.ts +2 -29
- package/src/utils/__tests__/appConfig.unit.test.ts +1 -1
- package/src/utils/__tests__/audit.unit.test.ts +1 -1
- package/src/utils/__tests__/auth-utils.unit.test.ts +1 -1
- package/src/utils/__tests__/bundleAnalysis.unit.test.ts +19 -19
- package/src/utils/__tests__/cn.unit.test.ts +1 -1
- package/src/utils/__tests__/debugLogger.test.ts +1 -1
- package/src/utils/__tests__/deviceFingerprint.unit.test.ts +1 -1
- package/src/utils/__tests__/dynamicUtils.unit.test.ts +1 -1
- package/src/utils/__tests__/formatting.unit.test.ts +1 -1
- package/src/utils/__tests__/lazyLoad.unit.test.tsx +1 -1
- package/src/utils/__tests__/logger.unit.test.ts +1 -1
- package/src/utils/__tests__/organisationContext.unit.test.ts +1 -1
- package/src/utils/__tests__/performanceBenchmark.test.ts +1 -1
- package/src/utils/__tests__/performanceBudgets.unit.test.ts +1 -1
- package/src/utils/__tests__/permissionTypes.unit.test.ts +1 -1
- package/src/utils/__tests__/permissionUtils.unit.test.ts +1 -1
- package/src/utils/__tests__/sanitization.unit.test.ts +1 -1
- package/src/utils/__tests__/schemaUtils.unit.test.ts +1 -1
- package/src/utils/__tests__/secureDataAccess.unit.test.ts +1 -1
- package/src/utils/__tests__/secureErrors.unit.test.ts +33 -15
- package/src/utils/__tests__/secureStorage.unit.test.ts +1 -1
- package/src/utils/__tests__/security.unit.test.ts +40 -18
- package/src/utils/__tests__/securityMonitor.unit.test.ts +1 -1
- package/src/utils/__tests__/sessionTracking.unit.test.ts +40 -29
- package/src/utils/__tests__/validationUtils.unit.test.ts +19 -6
- package/src/utils/{appIdResolver.test.ts → app/appIdResolver.test.ts} +28 -30
- package/src/utils/{appIdResolver.ts → app/appIdResolver.ts} +8 -5
- package/src/utils/{appNameResolver.test.ts → app/appNameResolver.test.ts} +1 -1
- package/src/utils/{appNameResolver.ts → app/appNameResolver.ts} +5 -1
- package/src/utils/{organisationContext.ts → context/organisationContext.ts} +6 -3
- package/src/utils/{sessionTracking.ts → context/sessionTracking.ts} +11 -12
- package/src/utils/{logger.ts → core/logger.ts} +4 -2
- package/src/utils/{deviceFingerprint.ts → device/deviceFingerprint.ts} +1 -1
- package/src/utils/{lazyLoad.tsx → dynamic/lazyLoad.tsx} +2 -2
- package/src/utils/{file-reference.test.ts → file-reference/__tests__/file-reference.test.ts} +5 -5
- package/src/utils/{file-reference.ts → file-reference/index.ts} +20 -38
- package/src/utils/index.ts +32 -54
- package/src/utils/{secureErrors.ts → security/secureErrors.ts} +6 -3
- package/src/utils/{security.ts → security/security.ts} +5 -2
- package/src/utils/storage/__tests__/helpers.unit.test.ts +1 -4
- package/src/utils/storage/helpers.ts +15 -8
- package/src/{components/Dialog/utils/__tests__/safeHtml.unit.test.ts → utils/validation/__tests__/htmlSanitization.unit.test.ts} +9 -15
- package/src/{validation → utils/validation}/csrf.ts +1 -1
- package/src/{components/Dialog/utils/safeHtml.ts → utils/validation/htmlSanitization.ts} +9 -10
- package/src/utils/validation/index.ts +79 -0
- package/src/utils/{sanitization.ts → validation/sanitization.ts} +71 -2
- package/src/{validation/schemaUtils.ts → utils/validation/schema.ts} +11 -6
- package/src/{validation → utils/validation}/sqlInjectionProtection.ts +2 -0
- package/src/utils/{validationUtils.ts → validation/validationUtils.ts} +4 -1
- package/src/validation/index.ts +3 -34
- package/dist/UnifiedAuthProvider-CQDZRJIS.js +0 -16
- package/dist/chunk-24MKLB7U.js +0 -81
- package/dist/chunk-24MKLB7U.js.map +0 -1
- package/dist/chunk-3CG5L6RN.js.map +0 -1
- package/dist/chunk-3DBFLLLU.js.map +0 -1
- package/dist/chunk-5F3NDPJV.js.map +0 -1
- package/dist/chunk-66C4BSAY.js.map +0 -1
- package/dist/chunk-BDZUMRBD.js.map +0 -1
- package/dist/chunk-BYXRHAIF.js.map +0 -1
- package/dist/chunk-CDQ3PX7L.js +0 -18
- package/dist/chunk-CDQ3PX7L.js.map +0 -1
- package/dist/chunk-CQZU6TFE.js.map +0 -1
- package/dist/chunk-F64FFPOZ.js.map +0 -1
- package/dist/chunk-GEVIB2UB.js.map +0 -1
- package/dist/chunk-GKHF54DI.js.map +0 -1
- package/dist/chunk-GVDR7WNV.js.map +0 -1
- package/dist/chunk-HMNOSGVA.js.map +0 -1
- package/dist/chunk-JCQZ6LA7.js.map +0 -1
- package/dist/chunk-M6DDYFUD.js.map +0 -1
- package/dist/chunk-O3NWNXDY.js.map +0 -1
- package/dist/chunk-PYUXFQJ3.js.map +0 -1
- package/dist/chunk-UJI6WSMD.js.map +0 -1
- package/dist/chunk-VZ5OR6HD.js.map +0 -1
- package/dist/chunk-WP5I5GLN.js.map +0 -1
- package/dist/chunk-ZYZCRSBD.js.map +0 -1
- package/src/components/Dialog/README.md +0 -804
- package/src/components/Form/FormErrorSummary.tsx +0 -113
- package/src/components/Form/FormFieldset.tsx +0 -127
- package/src/components/Form/FormLiveRegion.tsx +0 -198
- package/src/components/PasswordReset/PasswordResetForm.test.tsx +0 -597
- package/src/components/PasswordReset/PasswordResetForm.tsx +0 -201
- package/src/components/PublicLayout/PublicPageDebugger.tsx +0 -104
- package/src/components/PublicLayout/PublicPageDiagnostic.tsx +0 -162
- package/src/components/PublicLayout/__tests__/PublicPageDebugger.test.tsx +0 -185
- package/src/examples/CorrectPublicPageImplementation.tsx +0 -304
- package/src/examples/PublicEventPage.tsx +0 -287
- package/src/examples/PublicPageApp.tsx +0 -321
- package/src/examples/PublicPageUsageExample.tsx +0 -218
- package/src/utils/schemaUtils.ts +0 -37
- package/src/validation/__tests__/common.unit.test.ts +0 -101
- package/src/validation/__tests__/csrf.unit.test.ts +0 -365
- package/src/validation/__tests__/passwordSchema.unit.test.ts +0 -203
- package/src/validation/__tests__/sanitization.unit.test.ts +0 -250
- package/src/validation/__tests__/schemaUtils.unit.test.ts +0 -451
- package/src/validation/__tests__/sqlInjectionProtection.unit.test.ts +0 -462
- package/src/validation/__tests__/user.unit.test.ts +0 -440
- package/src/validation/sanitization.ts +0 -96
- /package/dist/{DataTable-A36PJG6N.js.map → DataTable-CYOHOX3O.js.map} +0 -0
- /package/dist/{UnifiedAuthProvider-CQDZRJIS.js.map → UnifiedAuthProvider-5E5TUNMS.js.map} +0 -0
- /package/dist/{api-TNIBJWLM.js.map → api-45XYYO2A.js.map} +0 -0
- /package/dist/{audit-T36HM7IM.js.map → audit-64X3VJXB.js.map} +0 -0
- /package/dist/{chunk-CTJRBUX2.js.map → chunk-2TWNJ46Y.js.map} +0 -0
- /package/dist/{chunk-ZV77RZMU.js.map → chunk-XARJS7CD.js.map} +0 -0
- /package/dist/{useInactivityTracker-MRUU55XI.js.map → useInactivityTracker-TO6ZOF35.js.map} +0 -0
- /package/examples/{public-pages → features/public-pages}/index.ts +0 -0
- /package/examples/{RBAC → features/rbac}/CompleteRBACExample.tsx +0 -0
- /package/examples/{RBAC → features/rbac}/EventBasedApp.tsx +0 -0
- /package/examples/{RBAC → features/rbac}/PermissionExample.tsx +0 -0
- /package/examples/{RBAC → features/rbac}/index.ts +0 -0
- /package/src/utils/{appConfig.ts → app/appConfig.ts} +0 -0
- /package/src/utils/{appNameResolver.simple.test.ts → app/appNameResolver.simple.test.ts} +0 -0
- /package/src/utils/{audit.ts → audit/audit.ts} +0 -0
- /package/src/utils/{organisationContext.test.ts → context/organisationContext.test.ts} +0 -0
- /package/src/utils/{cn.ts → core/cn.ts} +0 -0
- /package/src/utils/{debugLogger.ts → core/debugLogger.ts} +0 -0
- /package/src/utils/{dynamicUtils.ts → dynamic/dynamicUtils.ts} +0 -0
- /package/src/utils/{formatDate.test.ts → formatting/formatDate.test.ts} +0 -0
- /package/src/utils/{formatting.ts → formatting/formatting.ts} +0 -0
- /package/src/utils/{bundleAnalysis.ts → performance/bundleAnalysis.ts} +0 -0
- /package/src/utils/{performanceBenchmark.ts → performance/performanceBenchmark.ts} +0 -0
- /package/src/utils/{performanceBudgets.ts → performance/performanceBudgets.ts} +0 -0
- /package/src/utils/{permissionTypes.ts → permissions/permissionTypes.ts} +0 -0
- /package/src/utils/{permissionUtils.test.ts → permissions/permissionUtils.test.ts} +0 -0
- /package/src/utils/{permissionUtils.ts → permissions/permissionUtils.ts} +0 -0
- /package/src/utils/{auth-utils.ts → security/auth-utils.ts} +0 -0
- /package/src/utils/{secureDataAccess.test.ts → security/secureDataAccess.test.ts} +0 -0
- /package/src/utils/{secureDataAccess.ts → security/secureDataAccess.ts} +0 -0
- /package/src/utils/{secureStorage.ts → security/secureStorage.ts} +0 -0
- /package/src/utils/{securityMonitor.ts → security/securityMonitor.ts} +0 -0
- /package/src/{validation → utils/validation}/common.ts +0 -0
- /package/src/{validation → utils/validation}/passwordSchema.ts +0 -0
- /package/src/{validation → utils/validation}/user.ts +0 -0
- /package/src/utils/{validation.ts → validation/validation.ts} +0 -0
|
@@ -1,11 +1,16 @@
|
|
|
1
1
|
import {
|
|
2
2
|
init_organisationContext,
|
|
3
3
|
setOrganisationContext
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-K2WWTH7O.js";
|
|
5
5
|
import {
|
|
6
6
|
init_secureStorage,
|
|
7
7
|
secureStorage
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-444EZN6N.js";
|
|
9
|
+
import {
|
|
10
|
+
createLogger,
|
|
11
|
+
init_logger,
|
|
12
|
+
logger
|
|
13
|
+
} from "./chunk-XDNLUEXI.js";
|
|
9
14
|
import {
|
|
10
15
|
__esm
|
|
11
16
|
} from "./chunk-PLDDJCW6.js";
|
|
@@ -15,6 +20,7 @@ var BaseService;
|
|
|
15
20
|
var init_BaseService = __esm({
|
|
16
21
|
"src/services/base/BaseService.ts"() {
|
|
17
22
|
"use strict";
|
|
23
|
+
init_logger();
|
|
18
24
|
BaseService = class {
|
|
19
25
|
constructor() {
|
|
20
26
|
this.subscribers = [];
|
|
@@ -43,7 +49,7 @@ var init_BaseService = __esm({
|
|
|
43
49
|
try {
|
|
44
50
|
callback();
|
|
45
51
|
} catch (error) {
|
|
46
|
-
|
|
52
|
+
logger.error("BaseService", "Error in subscriber callback:", error);
|
|
47
53
|
}
|
|
48
54
|
});
|
|
49
55
|
}
|
|
@@ -91,6 +97,7 @@ var init_AuthService = __esm({
|
|
|
91
97
|
"src/services/AuthService.ts"() {
|
|
92
98
|
"use strict";
|
|
93
99
|
init_BaseService();
|
|
100
|
+
init_logger();
|
|
94
101
|
AuthService = class extends BaseService {
|
|
95
102
|
constructor(supabaseClient, appName) {
|
|
96
103
|
super();
|
|
@@ -348,10 +355,10 @@ var init_AuthService = __esm({
|
|
|
348
355
|
};
|
|
349
356
|
this.authLoading = true;
|
|
350
357
|
this.restorationStartTime = Date.now();
|
|
351
|
-
|
|
358
|
+
logger.debug("AuthService", "Starting session restoration at", this.restorationStartTime);
|
|
352
359
|
this.notify();
|
|
353
360
|
this.restorationTimeoutId = setTimeout(() => {
|
|
354
|
-
|
|
361
|
+
logger.warn("AuthService", "Session restoration timed out after", this.restorationTimeoutMs, "ms");
|
|
355
362
|
const timeoutError = new Error(`Session restoration timed out after ${this.restorationTimeoutMs}ms`);
|
|
356
363
|
timeoutError.name = "SessionRestorationTimeoutError";
|
|
357
364
|
this.finishSessionRestoration(timeoutError);
|
|
@@ -373,9 +380,9 @@ var init_AuthService = __esm({
|
|
|
373
380
|
};
|
|
374
381
|
this.authLoading = false;
|
|
375
382
|
if (error) {
|
|
376
|
-
|
|
383
|
+
logger.warn("AuthService", "Session restoration finished with error:", error, "duration(ms):", duration ?? "unknown");
|
|
377
384
|
} else {
|
|
378
|
-
|
|
385
|
+
logger.debug("AuthService", "Session restoration completed successfully in", duration ?? "unknown", "ms");
|
|
379
386
|
}
|
|
380
387
|
this.notify();
|
|
381
388
|
}
|
|
@@ -395,14 +402,14 @@ var init_AuthService = __esm({
|
|
|
395
402
|
this.authStateSubscription = this.supabaseClient.auth.onAuthStateChange(
|
|
396
403
|
(event, session) => {
|
|
397
404
|
try {
|
|
398
|
-
|
|
405
|
+
logger.debug("AuthService", "Auth state change event received:", event);
|
|
399
406
|
if (event === "SIGNED_OUT") {
|
|
400
407
|
this.session = null;
|
|
401
408
|
this.user = null;
|
|
402
409
|
this.authError = null;
|
|
403
410
|
if (session?.user) {
|
|
404
411
|
this.trackSession("logout", session).catch((err) => {
|
|
405
|
-
|
|
412
|
+
logger.warn("AuthService", "Failed to track logout session:", err);
|
|
406
413
|
});
|
|
407
414
|
}
|
|
408
415
|
} else if (event === "SIGNED_IN" || event === "TOKEN_REFRESHED") {
|
|
@@ -413,7 +420,7 @@ var init_AuthService = __esm({
|
|
|
413
420
|
}
|
|
414
421
|
if (event === "SIGNED_IN" && session?.user) {
|
|
415
422
|
this.trackSession("login", session).catch((err) => {
|
|
416
|
-
|
|
423
|
+
logger.warn("AuthService", "Failed to track login session:", err);
|
|
417
424
|
});
|
|
418
425
|
}
|
|
419
426
|
} else if (event === "INITIAL_SESSION") {
|
|
@@ -435,27 +442,27 @@ var init_AuthService = __esm({
|
|
|
435
442
|
this.authLoading = false;
|
|
436
443
|
this.notify();
|
|
437
444
|
} catch (error) {
|
|
438
|
-
|
|
445
|
+
logger.warn("AuthService", "Error in auth state change handler:", error);
|
|
439
446
|
this.authLoading = false;
|
|
440
447
|
this.notify();
|
|
441
448
|
}
|
|
442
449
|
}
|
|
443
450
|
);
|
|
444
451
|
} catch (error) {
|
|
445
|
-
|
|
452
|
+
logger.error("AuthService", "Failed to setup auth state listener:", error);
|
|
446
453
|
throw error;
|
|
447
454
|
}
|
|
448
455
|
}
|
|
449
456
|
async restoreSession() {
|
|
450
457
|
if (!this.supabaseClient) {
|
|
451
458
|
const error = new Error("Supabase client not available during session restoration");
|
|
452
|
-
|
|
459
|
+
logger.error("AuthService", "Unable to restore session:", error);
|
|
453
460
|
this.finishSessionRestoration(error);
|
|
454
461
|
return;
|
|
455
462
|
}
|
|
456
463
|
this.startSessionRestoration();
|
|
457
464
|
try {
|
|
458
|
-
|
|
465
|
+
logger.debug("AuthService", "Fetching existing session from Supabase");
|
|
459
466
|
let currentSession = null;
|
|
460
467
|
let sessionError = null;
|
|
461
468
|
try {
|
|
@@ -463,12 +470,12 @@ var init_AuthService = __esm({
|
|
|
463
470
|
currentSession = data?.session ?? null;
|
|
464
471
|
sessionError = error ?? null;
|
|
465
472
|
} catch (error) {
|
|
466
|
-
|
|
473
|
+
logger.debug("AuthService", "getSession unavailable, treating as no active session");
|
|
467
474
|
currentSession = null;
|
|
468
475
|
sessionError = null;
|
|
469
476
|
}
|
|
470
477
|
if (sessionError) {
|
|
471
|
-
|
|
478
|
+
logger.debug("AuthService", "getSession returned error, attempting to fetch user anyway");
|
|
472
479
|
this.authError = sessionError;
|
|
473
480
|
try {
|
|
474
481
|
const { data, error } = await this.supabaseClient.auth.getUser();
|
|
@@ -482,7 +489,7 @@ var init_AuthService = __esm({
|
|
|
482
489
|
this.authError = userError;
|
|
483
490
|
}
|
|
484
491
|
} catch (getUserError) {
|
|
485
|
-
|
|
492
|
+
logger.debug("AuthService", "getUser also failed:", getUserError);
|
|
486
493
|
}
|
|
487
494
|
}
|
|
488
495
|
if (currentSession) {
|
|
@@ -490,7 +497,7 @@ var init_AuthService = __esm({
|
|
|
490
497
|
this.user = currentSession.user;
|
|
491
498
|
this.authError = null;
|
|
492
499
|
} else if (!sessionError) {
|
|
493
|
-
|
|
500
|
+
logger.debug("AuthService", "No active session found; treating as normal unauthenticated state");
|
|
494
501
|
this.session = null;
|
|
495
502
|
this.user = null;
|
|
496
503
|
this.authError = null;
|
|
@@ -498,7 +505,7 @@ var init_AuthService = __esm({
|
|
|
498
505
|
this.finishSessionRestoration();
|
|
499
506
|
} catch (error) {
|
|
500
507
|
const restorationError = error instanceof Error ? error : new Error("Unknown error during auth initialization");
|
|
501
|
-
|
|
508
|
+
logger.error("AuthService", "Error during auth initialization:", restorationError);
|
|
502
509
|
if (restorationError instanceof AuthError) {
|
|
503
510
|
this.authError = restorationError;
|
|
504
511
|
}
|
|
@@ -536,26 +543,26 @@ var init_AuthService = __esm({
|
|
|
536
543
|
p_device_fingerprint: deviceFingerprint
|
|
537
544
|
});
|
|
538
545
|
if (error) {
|
|
539
|
-
|
|
546
|
+
logger.warn("AuthService", `Failed to track ${sessionType} session:`, error);
|
|
540
547
|
} else {
|
|
541
|
-
|
|
548
|
+
logger.debug("AuthService", `Successfully tracked ${sessionType} session`);
|
|
542
549
|
}
|
|
543
550
|
} catch (error) {
|
|
544
|
-
|
|
551
|
+
logger.warn("AuthService", `Error tracking ${sessionType} session:`, error);
|
|
545
552
|
}
|
|
546
553
|
}
|
|
547
554
|
setupErrorHandlers() {
|
|
548
555
|
if (typeof window === "undefined") return;
|
|
549
556
|
const handleError = (event) => {
|
|
550
557
|
if (event.error?.message?.includes("AuthSessionMissingError") || event.error?.message?.includes("Auth session missing")) {
|
|
551
|
-
|
|
558
|
+
logger.warn("AuthService", "Suppressing AuthSessionMissingError during logout");
|
|
552
559
|
event.preventDefault();
|
|
553
560
|
return false;
|
|
554
561
|
}
|
|
555
562
|
};
|
|
556
563
|
const handleUnhandledRejection = (event) => {
|
|
557
564
|
if (event.reason?.message?.includes("AuthSessionMissingError") || event.reason?.message?.includes("Auth session missing")) {
|
|
558
|
-
|
|
565
|
+
logger.warn("AuthService", "Suppressing unhandled AuthSessionMissingError");
|
|
559
566
|
event.preventDefault();
|
|
560
567
|
return false;
|
|
561
568
|
}
|
|
@@ -587,7 +594,7 @@ function AuthServiceProvider({ children, supabaseClient, appName }) {
|
|
|
587
594
|
setSessionRestoration(restorationState);
|
|
588
595
|
const isDev = typeof import.meta !== "undefined" && (import.meta.env.DEV || import.meta.env.MODE === "development");
|
|
589
596
|
if (isDev) {
|
|
590
|
-
|
|
597
|
+
logger.debug("AuthServiceProvider", "Session restoration state updated", restorationState);
|
|
591
598
|
}
|
|
592
599
|
});
|
|
593
600
|
return () => {
|
|
@@ -596,7 +603,7 @@ function AuthServiceProvider({ children, supabaseClient, appName }) {
|
|
|
596
603
|
}, [authService]);
|
|
597
604
|
useEffect(() => {
|
|
598
605
|
authService.initialize().catch((error) => {
|
|
599
|
-
|
|
606
|
+
logger.error("AuthServiceProvider", "Failed to initialize auth service:", error);
|
|
600
607
|
});
|
|
601
608
|
return () => {
|
|
602
609
|
authService.cleanup();
|
|
@@ -613,6 +620,7 @@ var init_AuthServiceProvider = __esm({
|
|
|
613
620
|
"src/providers/services/AuthServiceProvider.tsx"() {
|
|
614
621
|
"use strict";
|
|
615
622
|
init_AuthService();
|
|
623
|
+
init_logger();
|
|
616
624
|
AuthServiceContext = createContext(null);
|
|
617
625
|
useAuthService = () => {
|
|
618
626
|
const context = useContext(AuthServiceContext);
|
|
@@ -631,6 +639,7 @@ var init_OrganisationService = __esm({
|
|
|
631
639
|
"use strict";
|
|
632
640
|
init_BaseService();
|
|
633
641
|
init_organisationContext();
|
|
642
|
+
init_logger();
|
|
634
643
|
OrganisationService = class extends BaseService {
|
|
635
644
|
constructor(supabaseClient, user, session) {
|
|
636
645
|
super();
|
|
@@ -815,30 +824,30 @@ var init_OrganisationService = __esm({
|
|
|
815
824
|
}
|
|
816
825
|
async setDatabaseOrganisationContext(organisation) {
|
|
817
826
|
if (!this.supabaseClient || !this.session) {
|
|
818
|
-
|
|
827
|
+
logger.warn("OrganisationService", "No Supabase client or session available for setting organisation context");
|
|
819
828
|
this._isContextReady = false;
|
|
820
829
|
this.notify();
|
|
821
830
|
return;
|
|
822
831
|
}
|
|
823
832
|
try {
|
|
824
|
-
|
|
833
|
+
logger.debug("OrganisationService", "Setting database organisation context for:", organisation.id);
|
|
825
834
|
const timeoutPromise = new Promise((_, reject) => {
|
|
826
835
|
setTimeout(() => reject(new Error("Context setting timeout after 5 seconds")), 5e3);
|
|
827
836
|
});
|
|
828
837
|
const contextPromise = setOrganisationContext(this.supabaseClient, organisation.id);
|
|
829
838
|
await Promise.race([contextPromise, timeoutPromise]);
|
|
830
|
-
|
|
839
|
+
logger.debug("OrganisationService", "Database organisation context set successfully");
|
|
831
840
|
this._isContextReady = true;
|
|
832
841
|
this.notify();
|
|
833
842
|
} catch (error) {
|
|
834
|
-
|
|
843
|
+
logger.error("OrganisationService", "Failed to set database organisation context:", error);
|
|
835
844
|
this._isContextReady = true;
|
|
836
845
|
this.notify();
|
|
837
846
|
}
|
|
838
847
|
}
|
|
839
848
|
async loadUserOrganisations() {
|
|
840
849
|
const callId = Math.random().toString(36).substr(2, 9);
|
|
841
|
-
|
|
850
|
+
logger.debug("OrganisationService", `Starting loadUserOrganisations call ${callId}`);
|
|
842
851
|
if (!this.user || !this.session || !this.supabaseClient) {
|
|
843
852
|
this._selectedOrganisation = null;
|
|
844
853
|
this._organisations = [];
|
|
@@ -849,14 +858,14 @@ var init_OrganisationService = __esm({
|
|
|
849
858
|
return;
|
|
850
859
|
}
|
|
851
860
|
if (this.isLoadingRef) {
|
|
852
|
-
|
|
861
|
+
logger.debug("OrganisationService", "Already loading, skipping duplicate load");
|
|
853
862
|
this._isLoading = true;
|
|
854
863
|
this.notify();
|
|
855
864
|
return;
|
|
856
865
|
}
|
|
857
866
|
const now = Date.now();
|
|
858
867
|
if (now - this.lastLoadTimeRef < 2e3) {
|
|
859
|
-
|
|
868
|
+
logger.debug("OrganisationService", "Too soon since last load, skipping");
|
|
860
869
|
if (this._organisations.length > 0 || this._selectedOrganisation) {
|
|
861
870
|
this._isLoading = false;
|
|
862
871
|
} else {
|
|
@@ -876,14 +885,14 @@ var init_OrganisationService = __esm({
|
|
|
876
885
|
this._error = null;
|
|
877
886
|
this.notify();
|
|
878
887
|
try {
|
|
879
|
-
|
|
888
|
+
logger.debug("OrganisationService", "Supabase client ready:", {
|
|
880
889
|
isConnected: !!this.supabaseClient,
|
|
881
890
|
hasAuth: !!this.supabaseClient.auth,
|
|
882
891
|
hasRpc: !!this.supabaseClient.rpc
|
|
883
892
|
});
|
|
884
893
|
let memberships, membershipError;
|
|
885
894
|
try {
|
|
886
|
-
|
|
895
|
+
logger.debug("OrganisationService", "Making RPC call to data_user_organisation_roles_get...");
|
|
887
896
|
const timeoutPromise = new Promise((_, reject) => {
|
|
888
897
|
const timeoutId = setTimeout(() => reject(new Error("RPC call timeout after 10 seconds")), 1e4);
|
|
889
898
|
abortSignal.addEventListener("abort", () => {
|
|
@@ -899,7 +908,7 @@ var init_OrganisationService = __esm({
|
|
|
899
908
|
throw new Error("Request aborted");
|
|
900
909
|
}
|
|
901
910
|
const result = await Promise.race([rpcPromise, timeoutPromise]);
|
|
902
|
-
|
|
911
|
+
logger.debug("OrganisationService", "RPC call completed:", {
|
|
903
912
|
hasData: !!result.data,
|
|
904
913
|
hasError: !!result.error,
|
|
905
914
|
dataLength: result.data?.length || 0,
|
|
@@ -913,9 +922,9 @@ var init_OrganisationService = __esm({
|
|
|
913
922
|
membershipError = queryError;
|
|
914
923
|
}
|
|
915
924
|
if (membershipError) {
|
|
916
|
-
|
|
925
|
+
logger.error("OrganisationService", "Error loading memberships:", membershipError);
|
|
917
926
|
if (membershipError.message?.includes("timeout")) {
|
|
918
|
-
|
|
927
|
+
logger.debug("OrganisationService", "RPC timed out, trying direct database query as fallback...");
|
|
919
928
|
try {
|
|
920
929
|
if (abortSignal.aborted) {
|
|
921
930
|
throw new Error("Request aborted");
|
|
@@ -946,14 +955,14 @@ var init_OrganisationService = __esm({
|
|
|
946
955
|
)
|
|
947
956
|
`).eq("user_id", this.user.id).eq("status", "active").is("revoked_at", null).in("role", ["org_admin", "leader", "member"]);
|
|
948
957
|
if (fallbackError) {
|
|
949
|
-
|
|
958
|
+
logger.error("OrganisationService", "Fallback query also failed:", fallbackError);
|
|
950
959
|
throw membershipError;
|
|
951
960
|
}
|
|
952
|
-
|
|
961
|
+
logger.debug("OrganisationService", "Fallback query successful, got", fallbackData?.length || 0, "memberships");
|
|
953
962
|
memberships = fallbackData || [];
|
|
954
963
|
membershipError = null;
|
|
955
964
|
} catch (fallbackErr) {
|
|
956
|
-
|
|
965
|
+
logger.error("OrganisationService", "Fallback query failed:", fallbackErr);
|
|
957
966
|
throw membershipError;
|
|
958
967
|
}
|
|
959
968
|
} else {
|
|
@@ -965,22 +974,22 @@ var init_OrganisationService = __esm({
|
|
|
965
974
|
}
|
|
966
975
|
const organisationIds = memberships.map((m) => m.organisation_id).filter((id) => {
|
|
967
976
|
if (!id || typeof id !== "string") {
|
|
968
|
-
|
|
977
|
+
logger.warn("OrganisationService", "Invalid organisation ID (not string):", id);
|
|
969
978
|
return false;
|
|
970
979
|
}
|
|
971
980
|
const trimmedId = id.trim();
|
|
972
981
|
if (trimmedId === "") {
|
|
973
|
-
|
|
982
|
+
logger.warn("OrganisationService", "Empty organisation ID found");
|
|
974
983
|
return false;
|
|
975
984
|
}
|
|
976
985
|
const isValidUuid = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(trimmedId);
|
|
977
986
|
if (!isValidUuid) {
|
|
978
|
-
|
|
987
|
+
logger.warn("OrganisationService", "Invalid UUID format:", trimmedId);
|
|
979
988
|
}
|
|
980
989
|
return isValidUuid;
|
|
981
990
|
});
|
|
982
991
|
if (organisationIds.length === 0) {
|
|
983
|
-
|
|
992
|
+
logger.warn("OrganisationService", "No valid organisation IDs found in memberships:", memberships);
|
|
984
993
|
throw new Error("No valid organisation IDs found in memberships");
|
|
985
994
|
}
|
|
986
995
|
if (abortSignal.aborted) {
|
|
@@ -988,7 +997,7 @@ var init_OrganisationService = __esm({
|
|
|
988
997
|
}
|
|
989
998
|
const { data: allOrganisations, error: orgError } = await this.supabaseClient.from("organisations").select("id, name, display_name, subscription_tier, settings, is_active, parent_id, created_at, updated_at");
|
|
990
999
|
if (orgError) {
|
|
991
|
-
|
|
1000
|
+
logger.error("OrganisationService", "Error loading organisations:", orgError);
|
|
992
1001
|
throw orgError;
|
|
993
1002
|
}
|
|
994
1003
|
const organisations = allOrganisations?.filter(
|
|
@@ -1016,16 +1025,16 @@ var init_OrganisationService = __esm({
|
|
|
1016
1025
|
if (validPersistedOrg) {
|
|
1017
1026
|
initialOrg = validPersistedOrg;
|
|
1018
1027
|
} else {
|
|
1019
|
-
|
|
1028
|
+
logger.warn("OrganisationService", "Persisted organisation not found in active orgs, clearing cache");
|
|
1020
1029
|
localStorage.removeItem("pace-core-selected-organisation");
|
|
1021
1030
|
}
|
|
1022
1031
|
} else {
|
|
1023
|
-
|
|
1032
|
+
logger.warn("OrganisationService", "Invalid persisted organisation ID, clearing cache");
|
|
1024
1033
|
localStorage.removeItem("pace-core-selected-organisation");
|
|
1025
1034
|
}
|
|
1026
1035
|
}
|
|
1027
1036
|
} catch (storageError) {
|
|
1028
|
-
|
|
1037
|
+
logger.warn("OrganisationService", "Failed to restore persisted organisation:", storageError);
|
|
1029
1038
|
localStorage.removeItem("pace-core-selected-organisation");
|
|
1030
1039
|
}
|
|
1031
1040
|
if (!initialOrg) {
|
|
@@ -1049,7 +1058,7 @@ var init_OrganisationService = __esm({
|
|
|
1049
1058
|
this.retryCount = 0;
|
|
1050
1059
|
this.hasFailedRef = false;
|
|
1051
1060
|
} catch (err) {
|
|
1052
|
-
|
|
1061
|
+
logger.error("OrganisationService", "Failed to load organisations:", err);
|
|
1053
1062
|
this._error = err;
|
|
1054
1063
|
this.retryCount = this.retryCount + 1;
|
|
1055
1064
|
this.hasFailedRef = true;
|
|
@@ -1094,7 +1103,7 @@ function OrganisationServiceProvider({
|
|
|
1094
1103
|
let isMounted = true;
|
|
1095
1104
|
organisationService.initialize().catch((error) => {
|
|
1096
1105
|
if (isMounted) {
|
|
1097
|
-
|
|
1106
|
+
logger.error("OrganisationServiceProvider", "Failed to initialize organisation service:", error);
|
|
1098
1107
|
}
|
|
1099
1108
|
});
|
|
1100
1109
|
return () => {
|
|
@@ -1111,6 +1120,7 @@ var init_OrganisationServiceProvider = __esm({
|
|
|
1111
1120
|
"src/providers/services/OrganisationServiceProvider.tsx"() {
|
|
1112
1121
|
"use strict";
|
|
1113
1122
|
init_OrganisationService();
|
|
1123
|
+
init_logger();
|
|
1114
1124
|
OrganisationServiceContext = createContext2(null);
|
|
1115
1125
|
useOrganisationService = () => {
|
|
1116
1126
|
const context = useContext2(OrganisationServiceContext);
|
|
@@ -1128,6 +1138,7 @@ var init_EventService = __esm({
|
|
|
1128
1138
|
"src/services/EventService.ts"() {
|
|
1129
1139
|
"use strict";
|
|
1130
1140
|
init_BaseService();
|
|
1141
|
+
init_logger();
|
|
1131
1142
|
init_secureStorage();
|
|
1132
1143
|
EventService = class extends BaseService {
|
|
1133
1144
|
constructor(supabaseClient, user, session, appName, selectedOrganisation, setSelectedEventId) {
|
|
@@ -1213,7 +1224,7 @@ var init_EventService = __esm({
|
|
|
1213
1224
|
if (event) {
|
|
1214
1225
|
try {
|
|
1215
1226
|
if (this.selectedOrganisation && event.organisation_id !== this.selectedOrganisation.id) {
|
|
1216
|
-
|
|
1227
|
+
logger.error("EventService", "Event organisation_id does not match selected organisation", {
|
|
1217
1228
|
eventOrganisationId: event.organisation_id,
|
|
1218
1229
|
selectedOrganisationId: this.selectedOrganisation.id,
|
|
1219
1230
|
eventName: event.event_name
|
|
@@ -1221,19 +1232,19 @@ var init_EventService = __esm({
|
|
|
1221
1232
|
return;
|
|
1222
1233
|
}
|
|
1223
1234
|
} catch (error) {
|
|
1224
|
-
|
|
1235
|
+
logger.error("EventService", "Error during event validation:", error);
|
|
1225
1236
|
}
|
|
1226
1237
|
this.selectedEvent = event;
|
|
1227
1238
|
this.setSelectedEventId?.(event.event_id);
|
|
1228
1239
|
this.persistEventSelection(event.event_id).catch((error) => {
|
|
1229
|
-
|
|
1240
|
+
logger.warn("EventService", "Failed to persist event selection:", error);
|
|
1230
1241
|
});
|
|
1231
1242
|
this.userClearedEventRef = false;
|
|
1232
1243
|
} else {
|
|
1233
1244
|
this.selectedEvent = null;
|
|
1234
1245
|
this.setSelectedEventId?.(null);
|
|
1235
1246
|
this.clearEventSelection().catch((error) => {
|
|
1236
|
-
|
|
1247
|
+
logger.warn("EventService", "Failed to clear event selection:", error);
|
|
1237
1248
|
});
|
|
1238
1249
|
this.hasAutoSelectedRef = false;
|
|
1239
1250
|
this.userClearedEventRef = true;
|
|
@@ -1263,7 +1274,7 @@ var init_EventService = __esm({
|
|
|
1263
1274
|
}
|
|
1264
1275
|
}
|
|
1265
1276
|
} catch (error) {
|
|
1266
|
-
|
|
1277
|
+
logger.warn("EventService", "Failed to load persisted event:", error);
|
|
1267
1278
|
}
|
|
1268
1279
|
return false;
|
|
1269
1280
|
}
|
|
@@ -1285,7 +1296,7 @@ var init_EventService = __esm({
|
|
|
1285
1296
|
const storageKey = this.getStorageKey(userId);
|
|
1286
1297
|
await secureStorage.setItem(storageKey, eventId, { encrypt: true });
|
|
1287
1298
|
} catch (error) {
|
|
1288
|
-
|
|
1299
|
+
logger.warn("EventService", "Failed to persist event selection:", error);
|
|
1289
1300
|
}
|
|
1290
1301
|
}
|
|
1291
1302
|
async clearEventSelection() {
|
|
@@ -1296,7 +1307,7 @@ var init_EventService = __esm({
|
|
|
1296
1307
|
this.selectedEvent = null;
|
|
1297
1308
|
this.setSelectedEventId?.(null);
|
|
1298
1309
|
} catch (error) {
|
|
1299
|
-
|
|
1310
|
+
logger.warn("EventService", "Failed to clear event selection:", error);
|
|
1300
1311
|
}
|
|
1301
1312
|
}
|
|
1302
1313
|
/**
|
|
@@ -1308,7 +1319,7 @@ var init_EventService = __esm({
|
|
|
1308
1319
|
const storageKey = this.getStorageKey(userId);
|
|
1309
1320
|
await secureStorage.removeItem(storageKey);
|
|
1310
1321
|
} catch (error) {
|
|
1311
|
-
|
|
1322
|
+
logger.warn("EventService", "Failed to clear event selection for user:", error);
|
|
1312
1323
|
}
|
|
1313
1324
|
}
|
|
1314
1325
|
autoSelectNextEvent(events) {
|
|
@@ -1329,7 +1340,7 @@ var init_EventService = __esm({
|
|
|
1329
1340
|
localStorage.removeItem("_sec_pace-core-selected-event");
|
|
1330
1341
|
}
|
|
1331
1342
|
} catch (error) {
|
|
1332
|
-
|
|
1343
|
+
logger.warn("EventService", "Failed to clean up old storage keys:", error);
|
|
1333
1344
|
}
|
|
1334
1345
|
await this.fetchEvents(false);
|
|
1335
1346
|
}
|
|
@@ -1405,7 +1416,7 @@ var init_EventService = __esm({
|
|
|
1405
1416
|
}
|
|
1406
1417
|
}
|
|
1407
1418
|
} catch (err) {
|
|
1408
|
-
|
|
1419
|
+
logger.error("EventService", "Error fetching events:", err);
|
|
1409
1420
|
const _error = err instanceof Error ? err : new Error("Unknown error occurred");
|
|
1410
1421
|
if (isMounted) {
|
|
1411
1422
|
this.error = _error;
|
|
@@ -1470,7 +1481,7 @@ function EventServiceProvider({
|
|
|
1470
1481
|
if (!isMounted) return;
|
|
1471
1482
|
await eventService.initialize().catch((error) => {
|
|
1472
1483
|
if (isMounted) {
|
|
1473
|
-
|
|
1484
|
+
logger.error("EventServiceProvider", "Failed to initialize event service:", error);
|
|
1474
1485
|
}
|
|
1475
1486
|
});
|
|
1476
1487
|
};
|
|
@@ -1489,6 +1500,7 @@ var init_EventServiceProvider = __esm({
|
|
|
1489
1500
|
"src/providers/services/EventServiceProvider.tsx"() {
|
|
1490
1501
|
"use strict";
|
|
1491
1502
|
init_EventService();
|
|
1503
|
+
init_logger();
|
|
1492
1504
|
EventServiceContext = createContext3(null);
|
|
1493
1505
|
useEventService = () => {
|
|
1494
1506
|
const context = useContext3(EventServiceContext);
|
|
@@ -1506,6 +1518,7 @@ var init_InactivityService = __esm({
|
|
|
1506
1518
|
"src/services/InactivityService.ts"() {
|
|
1507
1519
|
"use strict";
|
|
1508
1520
|
init_BaseService();
|
|
1521
|
+
init_logger();
|
|
1509
1522
|
InactivityService = class extends BaseService {
|
|
1510
1523
|
constructor(supabaseClient, user, session, idleTimeoutMs = 30 * 60 * 1e3, warnBeforeMs = 60 * 1e3, onIdleLogout) {
|
|
1511
1524
|
super();
|
|
@@ -1645,7 +1658,7 @@ var init_InactivityService = __esm({
|
|
|
1645
1658
|
await this.supabaseClient.auth.signOut();
|
|
1646
1659
|
}
|
|
1647
1660
|
} catch (error) {
|
|
1648
|
-
|
|
1661
|
+
logger.error("InactivityService", "Error during idle logout:", error);
|
|
1649
1662
|
}
|
|
1650
1663
|
this.onIdleLogout?.("inactivity");
|
|
1651
1664
|
this.notify();
|
|
@@ -1665,7 +1678,7 @@ var init_InactivityService = __esm({
|
|
|
1665
1678
|
await this.supabaseClient.auth.signOut();
|
|
1666
1679
|
}
|
|
1667
1680
|
} catch (error) {
|
|
1668
|
-
|
|
1681
|
+
logger.error("InactivityService", "Error during manual sign out:", error);
|
|
1669
1682
|
}
|
|
1670
1683
|
this.onIdleLogout?.("inactivity");
|
|
1671
1684
|
this.notify();
|
|
@@ -1692,7 +1705,7 @@ var init_InactivityService = __esm({
|
|
|
1692
1705
|
if (typeof window !== "undefined") {
|
|
1693
1706
|
const isProduction = import.meta.env.MODE === "production";
|
|
1694
1707
|
if (isProduction) {
|
|
1695
|
-
|
|
1708
|
+
logger.warn("InactivityService", "Inactivity feature enabled in production");
|
|
1696
1709
|
}
|
|
1697
1710
|
}
|
|
1698
1711
|
}
|
|
@@ -1705,7 +1718,7 @@ var init_InactivityService = __esm({
|
|
|
1705
1718
|
return;
|
|
1706
1719
|
}
|
|
1707
1720
|
try {
|
|
1708
|
-
const { useInactivityTracker } = await import("./useInactivityTracker-
|
|
1721
|
+
const { useInactivityTracker } = await import("./useInactivityTracker-TO6ZOF35.js");
|
|
1709
1722
|
this.inactivityTracker = {
|
|
1710
1723
|
isIdle: false,
|
|
1711
1724
|
timeRemaining: 0,
|
|
@@ -1734,7 +1747,7 @@ var init_InactivityService = __esm({
|
|
|
1734
1747
|
};
|
|
1735
1748
|
this.setupEventHandlers();
|
|
1736
1749
|
} catch (error) {
|
|
1737
|
-
|
|
1750
|
+
logger.error("InactivityService", "Failed to setup inactivity tracker:", error);
|
|
1738
1751
|
}
|
|
1739
1752
|
}
|
|
1740
1753
|
setupEventHandlers() {
|
|
@@ -1836,7 +1849,7 @@ function InactivityServiceProvider({
|
|
|
1836
1849
|
let isMounted = true;
|
|
1837
1850
|
inactivityService.initialize().catch((error) => {
|
|
1838
1851
|
if (isMounted) {
|
|
1839
|
-
|
|
1852
|
+
logger.error("InactivityServiceProvider", "Failed to initialize inactivity service:", error);
|
|
1840
1853
|
}
|
|
1841
1854
|
});
|
|
1842
1855
|
return () => {
|
|
@@ -1853,6 +1866,7 @@ var init_InactivityServiceProvider = __esm({
|
|
|
1853
1866
|
"src/providers/services/InactivityServiceProvider.tsx"() {
|
|
1854
1867
|
"use strict";
|
|
1855
1868
|
init_InactivityService();
|
|
1869
|
+
init_logger();
|
|
1856
1870
|
InactivityServiceContext = createContext4(null);
|
|
1857
1871
|
useInactivityService = () => {
|
|
1858
1872
|
const context = useContext4(InactivityServiceContext);
|
|
@@ -1958,7 +1972,7 @@ function useSessionRestoration() {
|
|
|
1958
1972
|
if (sessionRestoration.isRestoring && !sessionRestoration.restorationComplete && !sessionRestoration.restorationError) {
|
|
1959
1973
|
setHasTimedOut(false);
|
|
1960
1974
|
timeoutHandle = setTimeout(() => {
|
|
1961
|
-
|
|
1975
|
+
log.warn("Session restoration timed out");
|
|
1962
1976
|
setHasTimedOut(true);
|
|
1963
1977
|
}, SESSION_RESTORATION_TIMEOUT_MS);
|
|
1964
1978
|
} else {
|
|
@@ -1980,11 +1994,13 @@ function useSessionRestoration() {
|
|
|
1980
1994
|
timeoutMs: SESSION_RESTORATION_TIMEOUT_MS
|
|
1981
1995
|
}), [sessionRestoration, hasTimedOut]);
|
|
1982
1996
|
}
|
|
1983
|
-
var SESSION_RESTORATION_TIMEOUT_MS;
|
|
1997
|
+
var log, SESSION_RESTORATION_TIMEOUT_MS;
|
|
1984
1998
|
var init_useSessionRestoration = __esm({
|
|
1985
1999
|
"src/hooks/useSessionRestoration.ts"() {
|
|
1986
2000
|
"use strict";
|
|
1987
2001
|
init_AuthServiceProvider();
|
|
2002
|
+
init_logger();
|
|
2003
|
+
log = createLogger("useSessionRestoration");
|
|
1988
2004
|
SESSION_RESTORATION_TIMEOUT_MS = 5e3;
|
|
1989
2005
|
}
|
|
1990
2006
|
});
|
|
@@ -2087,7 +2103,7 @@ function UnifiedAuthContextProvider({
|
|
|
2087
2103
|
};
|
|
2088
2104
|
const prevState = prevStateRef.current;
|
|
2089
2105
|
if (!prevState || prevState.isAuthenticated !== currentState.isAuthenticated || prevState.userEmail !== currentState.userEmail || prevState.totalLoading !== currentState.totalLoading) {
|
|
2090
|
-
|
|
2106
|
+
logger.debug("UnifiedAuthContext", "Auth state changed:", {
|
|
2091
2107
|
isAuthenticated: isAuth,
|
|
2092
2108
|
user: currentUser?.email,
|
|
2093
2109
|
session: currentSession ? "exists" : "null",
|
|
@@ -2357,11 +2373,12 @@ var init_UnifiedAuthProvider = __esm({
|
|
|
2357
2373
|
init_useEventService();
|
|
2358
2374
|
init_useInactivityService();
|
|
2359
2375
|
init_useSessionRestoration();
|
|
2376
|
+
init_logger();
|
|
2360
2377
|
UnifiedAuthContext = createContext5(void 0);
|
|
2361
2378
|
useUnifiedAuth = () => {
|
|
2362
2379
|
const context = useContext10(UnifiedAuthContext);
|
|
2363
2380
|
if (!context) {
|
|
2364
|
-
|
|
2381
|
+
logger.error("useUnifiedAuth", "useUnifiedAuth must be used within a UnifiedAuthProvider");
|
|
2365
2382
|
throw new Error("useUnifiedAuth must be used within a UnifiedAuthProvider");
|
|
2366
2383
|
}
|
|
2367
2384
|
return context;
|
|
@@ -2400,4 +2417,4 @@ export {
|
|
|
2400
2417
|
UnifiedAuthProvider,
|
|
2401
2418
|
init_UnifiedAuthProvider
|
|
2402
2419
|
};
|
|
2403
|
-
//# sourceMappingURL=chunk-
|
|
2420
|
+
//# sourceMappingURL=chunk-4MT5BGGL.js.map
|