@jmruthers/pace-core 0.5.135 → 0.5.137
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-A36PJG6N.js → DataTable-6M4L6BI2.js} +26 -13
- package/dist/{DataTable-C7GaRZye.d.ts → DataTable-CWAZZcXC.d.ts} +1 -1
- package/dist/{PublicLoadingSpinner-CUAnTvcg.d.ts → EventLogo-rFL_kRjk.d.ts} +123 -135
- package/dist/{UnifiedAuthProvider-BVKmQd9u.d.ts → UnifiedAuthProvider-DJxGTftH.d.ts} +1 -1
- package/dist/{UnifiedAuthProvider-CQDZRJIS.js → UnifiedAuthProvider-XIQQ7LVU.js} +5 -5
- package/dist/{api-TNIBJWLM.js → api-45XYYO2A.js} +4 -3
- package/dist/{audit-T36HM7IM.js → audit-64X3VJXB.js} +3 -2
- package/dist/{chunk-F64FFPOZ.js → chunk-22WKWKRX.js} +26 -20
- package/dist/chunk-22WKWKRX.js.map +1 -0
- package/dist/{chunk-VZ5OR6HD.js → chunk-4C7EXCAR.js} +62 -150
- package/dist/chunk-4C7EXCAR.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-CTJRBUX2.js → chunk-6LAAY47Q.js} +2 -2
- package/dist/{chunk-UJI6WSMD.js → chunk-7QCC6MCP.js} +90 -3
- package/dist/chunk-7QCC6MCP.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-CQZU6TFE.js → chunk-BCIBECNB.js} +100 -62
- package/dist/chunk-BCIBECNB.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-BJPBT3CU.js +21 -0
- package/dist/chunk-BJPBT3CU.js.map +1 -0
- package/dist/{chunk-BYXRHAIF.js → chunk-BLCXZEYF.js} +23 -14
- package/dist/chunk-BLCXZEYF.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-O3NWNXDY.js → chunk-FMUCXFII.js} +2 -2
- package/dist/chunk-FMUCXFII.js.map +1 -0
- package/dist/{chunk-GVDR7WNV.js → chunk-HAWZXGR2.js} +334 -614
- package/dist/chunk-HAWZXGR2.js.map +1 -0
- package/dist/{chunk-ZV77RZMU.js → chunk-INQLMHPF.js} +2 -2
- package/dist/chunk-JISYG63F.js +70 -0
- package/dist/chunk-JISYG63F.js.map +1 -0
- package/dist/{chunk-HMNOSGVA.js → chunk-KYRHUBIU.js} +576 -767
- package/dist/chunk-KYRHUBIU.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-TGIY2AR2.js → chunk-MA6EPSGZ.js} +4 -3
- package/dist/{chunk-TGIY2AR2.js.map → chunk-MA6EPSGZ.js.map} +1 -1
- package/dist/chunk-OWAG3GSU.js +58 -0
- package/dist/chunk-OWAG3GSU.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-ZYZCRSBD.js → chunk-T6JN6LH6.js} +16 -11
- package/dist/chunk-T6JN6LH6.js.map +1 -0
- package/dist/chunk-XDNLUEXI.js +138 -0
- package/dist/chunk-XDNLUEXI.js.map +1 -0
- package/dist/{chunk-3CG5L6RN.js → chunk-YCWDTTUK.js} +90 -75
- package/dist/chunk-YCWDTTUK.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 +27 -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 +21 -16
- package/dist/hooks.js.map +1 -1
- package/dist/index.d.ts +101 -9
- package/dist/index.js +44 -31
- package/dist/index.js.map +1 -1
- package/dist/providers.d.ts +1 -1
- package/dist/providers.js +4 -4
- package/dist/rbac/index.js +12 -12
- package/dist/schema-DTDZQe2u.d.ts +28 -0
- 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 +153 -4
- package/dist/types.js +51 -16
- package/dist/types.js.map +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 +221 -173
- package/dist/utils.js +185 -225
- package/dist/utils.js.map +1 -1
- package/dist/validation.d.ts +24 -115
- package/dist/validation.js +19 -474
- 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/BadgeProps.md +27 -0
- 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 +591 -220
- package/docs/api-reference/components.md +106 -26
- package/docs/architecture/README.md +0 -3
- 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/docs/styles/README.md +0 -2
- package/examples/README.md +30 -14
- package/examples/STRUCTURE.md +125 -0
- package/examples/components 2/DataTable/HierarchicalActionsExample.tsx +421 -0
- package/examples/components 2/DataTable/HierarchicalExample.tsx +475 -0
- package/examples/components 2/DataTable/InitialPageSizeExample.tsx +177 -0
- package/examples/components 2/DataTable/PerformanceExample.tsx +506 -0
- package/examples/components 2/DataTable/index.ts +13 -0
- package/examples/components 2/Dialog/BasicHtmlTest.tsx +55 -0
- package/examples/components 2/Dialog/DebugHtmlExample.tsx +68 -0
- package/examples/components 2/Dialog/HtmlDialogExample.tsx +202 -0
- package/examples/components 2/Dialog/ScrollableDialogExample.tsx +290 -0
- package/examples/components 2/Dialog/SimpleHtmlTest.tsx +61 -0
- package/examples/components 2/Dialog/SmartDialogExample.tsx +322 -0
- package/examples/components 2/Dialog/index.ts +15 -0
- package/examples/components 2/index.ts +11 -0
- package/examples/features/index.ts +12 -0
- package/{src/examples → examples/features/public-pages}/CorrectPublicPageImplementation.tsx +14 -17
- package/{src/examples → examples/features/public-pages}/PublicEventPage.tsx +14 -27
- package/{src/examples → examples/features/public-pages}/PublicPageApp.tsx +15 -28
- package/{src/examples → examples/features/public-pages}/PublicPageUsageExample.tsx +8 -10
- package/examples/features/public-pages/index.ts +14 -0
- package/examples/features/rbac/CompleteRBACExample.tsx +324 -0
- package/examples/features/rbac/EventBasedApp.tsx +239 -0
- package/examples/features/rbac/PermissionExample.tsx +151 -0
- package/examples/features/rbac/index.ts +13 -0
- package/examples/index.ts +11 -3
- package/package.json +30 -19
- package/src/__tests__/TEST_STANDARD.md +92 -0
- package/src/components/Alert/Alert.tsx +1 -1
- package/src/components/Avatar/Avatar.tsx +1 -1
- package/src/components/Badge/Badge.test.tsx +314 -0
- package/src/components/Badge/Badge.tsx +304 -0
- package/src/components/Badge/index.ts +3 -0
- 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__/DataTableCore.test-setup.ts +217 -0
- package/src/components/DataTable/__tests__/styles.test.ts +3 -3
- package/src/components/DataTable/components/ActionButtons.tsx +0 -15
- package/src/components/DataTable/components/ColumnFilter.tsx +8 -4
- package/src/components/DataTable/components/DataTableBody.tsx +461 -0
- 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/DraggableColumnHeader.tsx +144 -0
- package/src/components/DataTable/components/EditableRow.tsx +1 -1
- package/src/components/DataTable/components/FilterRow.tsx +9 -3
- package/src/components/DataTable/components/ImportModal.tsx +2 -14
- package/src/components/DataTable/components/PaginationControls.tsx +2 -1
- package/src/components/DataTable/components/UnifiedTableBody.tsx +109 -82
- package/src/components/DataTable/components/VirtualizedDataTable.tsx +513 -0
- package/src/components/DataTable/components/__tests__/AccessDeniedPage.test.tsx +14 -68
- package/src/components/DataTable/components/__tests__/ActionButtons.test.tsx +1 -1
- package/src/components/DataTable/components/__tests__/ColumnFilter.test.tsx +62 -0
- 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__/FilterRow.test.tsx +43 -0
- package/src/components/DataTable/components/__tests__/ImportModal.test.tsx +1 -1
- package/src/components/DataTable/core/ActionManager.ts +235 -0
- package/src/components/DataTable/core/ColumnManager.ts +205 -0
- package/src/components/DataTable/core/DataManager.ts +188 -0
- package/src/components/DataTable/core/DataTableContext.tsx +181 -0
- package/src/components/DataTable/core/LocalDataAdapter.ts +273 -0
- package/src/components/DataTable/core/PluginRegistry.ts +229 -0
- package/src/components/DataTable/core/StateManager.ts +311 -0
- package/src/components/DataTable/core/interfaces.ts +338 -0
- 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 +28 -7
- package/src/components/DataTable/types.ts +13 -0
- package/src/components/DataTable/utils/__tests__/columnUtils.test.ts +94 -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/columnUtils.ts +40 -0
- package/src/components/DataTable/utils/debugTools.ts +609 -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 +2 -0
- package/src/components/DataTable/utils/paginationUtils.ts +1 -1
- package/src/components/Dialog/Dialog.tsx +2 -2
- package/src/components/Dialog/utils/__tests__/safeHtml.unit.test.ts +8 -1
- 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.test.tsx +1 -1
- package/src/components/Footer/Footer.tsx +1 -1
- package/src/components/Form/Form.test.tsx +5 -510
- 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.test.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.performance.test.tsx +76 -10
- 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 +14 -13
- 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/__tests__/PublicPageFooter.test.tsx +1 -1
- package/src/components/PublicLayout/index.ts +4 -2
- package/src/components/Select/Select.test.tsx +1 -1
- package/src/components/Select/Select.tsx +21 -9
- 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/Table/__tests__/Table.test.tsx +1 -1
- package/src/components/Toast/Toast.tsx +1 -1
- package/src/components/Tooltip/Tooltip.tsx +1 -1
- package/src/components/index.ts +7 -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__/useFileUrl.unit.test.ts +83 -85
- 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 +20 -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/styles/core.css +3 -0
- 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/app/appConfig.ts +47 -0
- package/src/utils/app/appIdResolver.test.ts +497 -0
- package/src/utils/app/appIdResolver.ts +133 -0
- package/src/utils/app/appNameResolver.simple.test.ts +212 -0
- package/src/utils/app/appNameResolver.test.ts +121 -0
- package/src/utils/app/appNameResolver.ts +195 -0
- package/src/utils/audit/audit.ts +127 -0
- package/src/utils/context/organisationContext.test.ts +322 -0
- package/src/utils/context/organisationContext.ts +156 -0
- package/src/utils/context/sessionTracking.ts +125 -0
- package/src/utils/core/cn.ts +7 -0
- package/src/utils/core/debugLogger.ts +67 -0
- package/src/utils/core/logger.ts +181 -0
- package/src/utils/device/deviceFingerprint.ts +215 -0
- package/src/utils/dynamic/dynamicUtils.ts +105 -0
- package/src/utils/dynamic/lazyLoad.tsx +44 -0
- package/src/utils/file-reference/__tests__/file-reference.test.ts +788 -0
- package/src/utils/file-reference/index.ts +501 -0
- package/src/utils/formatting/formatDate.test.ts +237 -0
- package/src/utils/formatting/formatting.ts +133 -0
- package/src/utils/index.ts +39 -54
- package/src/utils/performance/bundleAnalysis.ts +129 -0
- package/src/utils/performance/performanceBenchmark.ts +64 -0
- package/src/utils/performance/performanceBudgets.ts +110 -0
- package/src/utils/permissions/permissionTypes.ts +37 -0
- package/src/utils/permissions/permissionUtils.test.ts +393 -0
- package/src/utils/permissions/permissionUtils.ts +34 -0
- package/src/utils/security/auth-utils.ts +96 -0
- package/src/utils/security/secureDataAccess.test.ts +711 -0
- package/src/utils/security/secureDataAccess.ts +377 -0
- package/src/utils/security/secureErrors.ts +82 -0
- package/src/utils/security/secureStorage.ts +244 -0
- package/src/utils/security/security.ts +159 -0
- package/src/utils/security/securityMonitor.ts +45 -0
- package/src/utils/storage/__tests__/helpers.unit.test.ts +1 -4
- package/src/utils/storage/helpers.ts +15 -8
- package/src/utils/validation/__tests__/htmlSanitization.unit.test.ts +598 -0
- package/src/{validation → utils/validation}/csrf.ts +1 -1
- package/src/utils/validation/htmlSanitization.ts +184 -0
- package/src/utils/validation/index.ts +79 -0
- package/src/utils/validation/sanitization.ts +333 -0
- package/src/{validation/schemaUtils.ts → utils/validation/schema.ts} +11 -6
- package/src/{validation → utils/validation}/sqlInjectionProtection.ts +2 -0
- package/src/utils/validation/validation.ts +111 -0
- package/src/utils/validation/validationUtils.ts +123 -0
- package/src/validation/index.ts +3 -34
- 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 +0 -87
- 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/dist/validation-DnhrNMju.d.ts +0 -159
- package/src/components/PublicLayout/__tests__/PublicPageDebugger.test.tsx +0 -185
- 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-6M4L6BI2.js.map} +0 -0
- /package/dist/{UnifiedAuthProvider-CQDZRJIS.js.map → UnifiedAuthProvider-XIQQ7LVU.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-6LAAY47Q.js.map} +0 -0
- /package/dist/{chunk-ZV77RZMU.js.map → chunk-INQLMHPF.js.map} +0 -0
- /package/dist/{useInactivityTracker-MRUU55XI.js.map → useInactivityTracker-TO6ZOF35.js.map} +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
|
@@ -1,11 +1,14 @@
|
|
|
1
1
|
import {
|
|
2
2
|
init_organisationContext,
|
|
3
|
+
init_secureStorage,
|
|
4
|
+
secureStorage,
|
|
3
5
|
setOrganisationContext
|
|
4
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-7QCC6MCP.js";
|
|
5
7
|
import {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
8
|
+
createLogger,
|
|
9
|
+
init_logger,
|
|
10
|
+
logger
|
|
11
|
+
} from "./chunk-XDNLUEXI.js";
|
|
9
12
|
import {
|
|
10
13
|
__esm
|
|
11
14
|
} from "./chunk-PLDDJCW6.js";
|
|
@@ -15,6 +18,7 @@ var BaseService;
|
|
|
15
18
|
var init_BaseService = __esm({
|
|
16
19
|
"src/services/base/BaseService.ts"() {
|
|
17
20
|
"use strict";
|
|
21
|
+
init_logger();
|
|
18
22
|
BaseService = class {
|
|
19
23
|
constructor() {
|
|
20
24
|
this.subscribers = [];
|
|
@@ -43,7 +47,7 @@ var init_BaseService = __esm({
|
|
|
43
47
|
try {
|
|
44
48
|
callback();
|
|
45
49
|
} catch (error) {
|
|
46
|
-
|
|
50
|
+
logger.error("BaseService", "Error in subscriber callback:", error);
|
|
47
51
|
}
|
|
48
52
|
});
|
|
49
53
|
}
|
|
@@ -91,6 +95,7 @@ var init_AuthService = __esm({
|
|
|
91
95
|
"src/services/AuthService.ts"() {
|
|
92
96
|
"use strict";
|
|
93
97
|
init_BaseService();
|
|
98
|
+
init_logger();
|
|
94
99
|
AuthService = class extends BaseService {
|
|
95
100
|
constructor(supabaseClient, appName) {
|
|
96
101
|
super();
|
|
@@ -348,10 +353,10 @@ var init_AuthService = __esm({
|
|
|
348
353
|
};
|
|
349
354
|
this.authLoading = true;
|
|
350
355
|
this.restorationStartTime = Date.now();
|
|
351
|
-
|
|
356
|
+
logger.debug("AuthService", "Starting session restoration at", this.restorationStartTime);
|
|
352
357
|
this.notify();
|
|
353
358
|
this.restorationTimeoutId = setTimeout(() => {
|
|
354
|
-
|
|
359
|
+
logger.warn("AuthService", "Session restoration timed out after", this.restorationTimeoutMs, "ms");
|
|
355
360
|
const timeoutError = new Error(`Session restoration timed out after ${this.restorationTimeoutMs}ms`);
|
|
356
361
|
timeoutError.name = "SessionRestorationTimeoutError";
|
|
357
362
|
this.finishSessionRestoration(timeoutError);
|
|
@@ -373,9 +378,9 @@ var init_AuthService = __esm({
|
|
|
373
378
|
};
|
|
374
379
|
this.authLoading = false;
|
|
375
380
|
if (error) {
|
|
376
|
-
|
|
381
|
+
logger.warn("AuthService", "Session restoration finished with error:", error, "duration(ms):", duration ?? "unknown");
|
|
377
382
|
} else {
|
|
378
|
-
|
|
383
|
+
logger.debug("AuthService", "Session restoration completed successfully in", duration ?? "unknown", "ms");
|
|
379
384
|
}
|
|
380
385
|
this.notify();
|
|
381
386
|
}
|
|
@@ -395,14 +400,14 @@ var init_AuthService = __esm({
|
|
|
395
400
|
this.authStateSubscription = this.supabaseClient.auth.onAuthStateChange(
|
|
396
401
|
(event, session) => {
|
|
397
402
|
try {
|
|
398
|
-
|
|
403
|
+
logger.debug("AuthService", "Auth state change event received:", event);
|
|
399
404
|
if (event === "SIGNED_OUT") {
|
|
400
405
|
this.session = null;
|
|
401
406
|
this.user = null;
|
|
402
407
|
this.authError = null;
|
|
403
408
|
if (session?.user) {
|
|
404
409
|
this.trackSession("logout", session).catch((err) => {
|
|
405
|
-
|
|
410
|
+
logger.warn("AuthService", "Failed to track logout session:", err);
|
|
406
411
|
});
|
|
407
412
|
}
|
|
408
413
|
} else if (event === "SIGNED_IN" || event === "TOKEN_REFRESHED") {
|
|
@@ -413,7 +418,7 @@ var init_AuthService = __esm({
|
|
|
413
418
|
}
|
|
414
419
|
if (event === "SIGNED_IN" && session?.user) {
|
|
415
420
|
this.trackSession("login", session).catch((err) => {
|
|
416
|
-
|
|
421
|
+
logger.warn("AuthService", "Failed to track login session:", err);
|
|
417
422
|
});
|
|
418
423
|
}
|
|
419
424
|
} else if (event === "INITIAL_SESSION") {
|
|
@@ -435,27 +440,27 @@ var init_AuthService = __esm({
|
|
|
435
440
|
this.authLoading = false;
|
|
436
441
|
this.notify();
|
|
437
442
|
} catch (error) {
|
|
438
|
-
|
|
443
|
+
logger.warn("AuthService", "Error in auth state change handler:", error);
|
|
439
444
|
this.authLoading = false;
|
|
440
445
|
this.notify();
|
|
441
446
|
}
|
|
442
447
|
}
|
|
443
448
|
);
|
|
444
449
|
} catch (error) {
|
|
445
|
-
|
|
450
|
+
logger.error("AuthService", "Failed to setup auth state listener:", error);
|
|
446
451
|
throw error;
|
|
447
452
|
}
|
|
448
453
|
}
|
|
449
454
|
async restoreSession() {
|
|
450
455
|
if (!this.supabaseClient) {
|
|
451
456
|
const error = new Error("Supabase client not available during session restoration");
|
|
452
|
-
|
|
457
|
+
logger.error("AuthService", "Unable to restore session:", error);
|
|
453
458
|
this.finishSessionRestoration(error);
|
|
454
459
|
return;
|
|
455
460
|
}
|
|
456
461
|
this.startSessionRestoration();
|
|
457
462
|
try {
|
|
458
|
-
|
|
463
|
+
logger.debug("AuthService", "Fetching existing session from Supabase");
|
|
459
464
|
let currentSession = null;
|
|
460
465
|
let sessionError = null;
|
|
461
466
|
try {
|
|
@@ -463,12 +468,12 @@ var init_AuthService = __esm({
|
|
|
463
468
|
currentSession = data?.session ?? null;
|
|
464
469
|
sessionError = error ?? null;
|
|
465
470
|
} catch (error) {
|
|
466
|
-
|
|
471
|
+
logger.debug("AuthService", "getSession unavailable, treating as no active session");
|
|
467
472
|
currentSession = null;
|
|
468
473
|
sessionError = null;
|
|
469
474
|
}
|
|
470
475
|
if (sessionError) {
|
|
471
|
-
|
|
476
|
+
logger.debug("AuthService", "getSession returned error, attempting to fetch user anyway");
|
|
472
477
|
this.authError = sessionError;
|
|
473
478
|
try {
|
|
474
479
|
const { data, error } = await this.supabaseClient.auth.getUser();
|
|
@@ -482,7 +487,7 @@ var init_AuthService = __esm({
|
|
|
482
487
|
this.authError = userError;
|
|
483
488
|
}
|
|
484
489
|
} catch (getUserError) {
|
|
485
|
-
|
|
490
|
+
logger.debug("AuthService", "getUser also failed:", getUserError);
|
|
486
491
|
}
|
|
487
492
|
}
|
|
488
493
|
if (currentSession) {
|
|
@@ -490,7 +495,7 @@ var init_AuthService = __esm({
|
|
|
490
495
|
this.user = currentSession.user;
|
|
491
496
|
this.authError = null;
|
|
492
497
|
} else if (!sessionError) {
|
|
493
|
-
|
|
498
|
+
logger.debug("AuthService", "No active session found; treating as normal unauthenticated state");
|
|
494
499
|
this.session = null;
|
|
495
500
|
this.user = null;
|
|
496
501
|
this.authError = null;
|
|
@@ -498,7 +503,7 @@ var init_AuthService = __esm({
|
|
|
498
503
|
this.finishSessionRestoration();
|
|
499
504
|
} catch (error) {
|
|
500
505
|
const restorationError = error instanceof Error ? error : new Error("Unknown error during auth initialization");
|
|
501
|
-
|
|
506
|
+
logger.error("AuthService", "Error during auth initialization:", restorationError);
|
|
502
507
|
if (restorationError instanceof AuthError) {
|
|
503
508
|
this.authError = restorationError;
|
|
504
509
|
}
|
|
@@ -536,26 +541,26 @@ var init_AuthService = __esm({
|
|
|
536
541
|
p_device_fingerprint: deviceFingerprint
|
|
537
542
|
});
|
|
538
543
|
if (error) {
|
|
539
|
-
|
|
544
|
+
logger.warn("AuthService", `Failed to track ${sessionType} session:`, error);
|
|
540
545
|
} else {
|
|
541
|
-
|
|
546
|
+
logger.debug("AuthService", `Successfully tracked ${sessionType} session`);
|
|
542
547
|
}
|
|
543
548
|
} catch (error) {
|
|
544
|
-
|
|
549
|
+
logger.warn("AuthService", `Error tracking ${sessionType} session:`, error);
|
|
545
550
|
}
|
|
546
551
|
}
|
|
547
552
|
setupErrorHandlers() {
|
|
548
553
|
if (typeof window === "undefined") return;
|
|
549
554
|
const handleError = (event) => {
|
|
550
555
|
if (event.error?.message?.includes("AuthSessionMissingError") || event.error?.message?.includes("Auth session missing")) {
|
|
551
|
-
|
|
556
|
+
logger.warn("AuthService", "Suppressing AuthSessionMissingError during logout");
|
|
552
557
|
event.preventDefault();
|
|
553
558
|
return false;
|
|
554
559
|
}
|
|
555
560
|
};
|
|
556
561
|
const handleUnhandledRejection = (event) => {
|
|
557
562
|
if (event.reason?.message?.includes("AuthSessionMissingError") || event.reason?.message?.includes("Auth session missing")) {
|
|
558
|
-
|
|
563
|
+
logger.warn("AuthService", "Suppressing unhandled AuthSessionMissingError");
|
|
559
564
|
event.preventDefault();
|
|
560
565
|
return false;
|
|
561
566
|
}
|
|
@@ -587,7 +592,7 @@ function AuthServiceProvider({ children, supabaseClient, appName }) {
|
|
|
587
592
|
setSessionRestoration(restorationState);
|
|
588
593
|
const isDev = typeof import.meta !== "undefined" && (import.meta.env.DEV || import.meta.env.MODE === "development");
|
|
589
594
|
if (isDev) {
|
|
590
|
-
|
|
595
|
+
logger.debug("AuthServiceProvider", "Session restoration state updated", restorationState);
|
|
591
596
|
}
|
|
592
597
|
});
|
|
593
598
|
return () => {
|
|
@@ -596,7 +601,7 @@ function AuthServiceProvider({ children, supabaseClient, appName }) {
|
|
|
596
601
|
}, [authService]);
|
|
597
602
|
useEffect(() => {
|
|
598
603
|
authService.initialize().catch((error) => {
|
|
599
|
-
|
|
604
|
+
logger.error("AuthServiceProvider", "Failed to initialize auth service:", error);
|
|
600
605
|
});
|
|
601
606
|
return () => {
|
|
602
607
|
authService.cleanup();
|
|
@@ -613,6 +618,7 @@ var init_AuthServiceProvider = __esm({
|
|
|
613
618
|
"src/providers/services/AuthServiceProvider.tsx"() {
|
|
614
619
|
"use strict";
|
|
615
620
|
init_AuthService();
|
|
621
|
+
init_logger();
|
|
616
622
|
AuthServiceContext = createContext(null);
|
|
617
623
|
useAuthService = () => {
|
|
618
624
|
const context = useContext(AuthServiceContext);
|
|
@@ -631,6 +637,7 @@ var init_OrganisationService = __esm({
|
|
|
631
637
|
"use strict";
|
|
632
638
|
init_BaseService();
|
|
633
639
|
init_organisationContext();
|
|
640
|
+
init_logger();
|
|
634
641
|
OrganisationService = class extends BaseService {
|
|
635
642
|
constructor(supabaseClient, user, session) {
|
|
636
643
|
super();
|
|
@@ -815,30 +822,30 @@ var init_OrganisationService = __esm({
|
|
|
815
822
|
}
|
|
816
823
|
async setDatabaseOrganisationContext(organisation) {
|
|
817
824
|
if (!this.supabaseClient || !this.session) {
|
|
818
|
-
|
|
825
|
+
logger.warn("OrganisationService", "No Supabase client or session available for setting organisation context");
|
|
819
826
|
this._isContextReady = false;
|
|
820
827
|
this.notify();
|
|
821
828
|
return;
|
|
822
829
|
}
|
|
823
830
|
try {
|
|
824
|
-
|
|
831
|
+
logger.debug("OrganisationService", "Setting database organisation context for:", organisation.id);
|
|
825
832
|
const timeoutPromise = new Promise((_, reject) => {
|
|
826
833
|
setTimeout(() => reject(new Error("Context setting timeout after 5 seconds")), 5e3);
|
|
827
834
|
});
|
|
828
835
|
const contextPromise = setOrganisationContext(this.supabaseClient, organisation.id);
|
|
829
836
|
await Promise.race([contextPromise, timeoutPromise]);
|
|
830
|
-
|
|
837
|
+
logger.debug("OrganisationService", "Database organisation context set successfully");
|
|
831
838
|
this._isContextReady = true;
|
|
832
839
|
this.notify();
|
|
833
840
|
} catch (error) {
|
|
834
|
-
|
|
841
|
+
logger.error("OrganisationService", "Failed to set database organisation context:", error);
|
|
835
842
|
this._isContextReady = true;
|
|
836
843
|
this.notify();
|
|
837
844
|
}
|
|
838
845
|
}
|
|
839
846
|
async loadUserOrganisations() {
|
|
840
847
|
const callId = Math.random().toString(36).substr(2, 9);
|
|
841
|
-
|
|
848
|
+
logger.debug("OrganisationService", `Starting loadUserOrganisations call ${callId}`);
|
|
842
849
|
if (!this.user || !this.session || !this.supabaseClient) {
|
|
843
850
|
this._selectedOrganisation = null;
|
|
844
851
|
this._organisations = [];
|
|
@@ -849,14 +856,14 @@ var init_OrganisationService = __esm({
|
|
|
849
856
|
return;
|
|
850
857
|
}
|
|
851
858
|
if (this.isLoadingRef) {
|
|
852
|
-
|
|
859
|
+
logger.debug("OrganisationService", "Already loading, skipping duplicate load");
|
|
853
860
|
this._isLoading = true;
|
|
854
861
|
this.notify();
|
|
855
862
|
return;
|
|
856
863
|
}
|
|
857
864
|
const now = Date.now();
|
|
858
865
|
if (now - this.lastLoadTimeRef < 2e3) {
|
|
859
|
-
|
|
866
|
+
logger.debug("OrganisationService", "Too soon since last load, skipping");
|
|
860
867
|
if (this._organisations.length > 0 || this._selectedOrganisation) {
|
|
861
868
|
this._isLoading = false;
|
|
862
869
|
} else {
|
|
@@ -876,14 +883,14 @@ var init_OrganisationService = __esm({
|
|
|
876
883
|
this._error = null;
|
|
877
884
|
this.notify();
|
|
878
885
|
try {
|
|
879
|
-
|
|
886
|
+
logger.debug("OrganisationService", "Supabase client ready:", {
|
|
880
887
|
isConnected: !!this.supabaseClient,
|
|
881
888
|
hasAuth: !!this.supabaseClient.auth,
|
|
882
889
|
hasRpc: !!this.supabaseClient.rpc
|
|
883
890
|
});
|
|
884
891
|
let memberships, membershipError;
|
|
885
892
|
try {
|
|
886
|
-
|
|
893
|
+
logger.debug("OrganisationService", "Making RPC call to data_user_organisation_roles_get...");
|
|
887
894
|
const timeoutPromise = new Promise((_, reject) => {
|
|
888
895
|
const timeoutId = setTimeout(() => reject(new Error("RPC call timeout after 10 seconds")), 1e4);
|
|
889
896
|
abortSignal.addEventListener("abort", () => {
|
|
@@ -899,7 +906,7 @@ var init_OrganisationService = __esm({
|
|
|
899
906
|
throw new Error("Request aborted");
|
|
900
907
|
}
|
|
901
908
|
const result = await Promise.race([rpcPromise, timeoutPromise]);
|
|
902
|
-
|
|
909
|
+
logger.debug("OrganisationService", "RPC call completed:", {
|
|
903
910
|
hasData: !!result.data,
|
|
904
911
|
hasError: !!result.error,
|
|
905
912
|
dataLength: result.data?.length || 0,
|
|
@@ -913,9 +920,9 @@ var init_OrganisationService = __esm({
|
|
|
913
920
|
membershipError = queryError;
|
|
914
921
|
}
|
|
915
922
|
if (membershipError) {
|
|
916
|
-
|
|
923
|
+
logger.error("OrganisationService", "Error loading memberships:", membershipError);
|
|
917
924
|
if (membershipError.message?.includes("timeout")) {
|
|
918
|
-
|
|
925
|
+
logger.debug("OrganisationService", "RPC timed out, trying direct database query as fallback...");
|
|
919
926
|
try {
|
|
920
927
|
if (abortSignal.aborted) {
|
|
921
928
|
throw new Error("Request aborted");
|
|
@@ -946,14 +953,14 @@ var init_OrganisationService = __esm({
|
|
|
946
953
|
)
|
|
947
954
|
`).eq("user_id", this.user.id).eq("status", "active").is("revoked_at", null).in("role", ["org_admin", "leader", "member"]);
|
|
948
955
|
if (fallbackError) {
|
|
949
|
-
|
|
956
|
+
logger.error("OrganisationService", "Fallback query also failed:", fallbackError);
|
|
950
957
|
throw membershipError;
|
|
951
958
|
}
|
|
952
|
-
|
|
959
|
+
logger.debug("OrganisationService", "Fallback query successful, got", fallbackData?.length || 0, "memberships");
|
|
953
960
|
memberships = fallbackData || [];
|
|
954
961
|
membershipError = null;
|
|
955
962
|
} catch (fallbackErr) {
|
|
956
|
-
|
|
963
|
+
logger.error("OrganisationService", "Fallback query failed:", fallbackErr);
|
|
957
964
|
throw membershipError;
|
|
958
965
|
}
|
|
959
966
|
} else {
|
|
@@ -965,22 +972,22 @@ var init_OrganisationService = __esm({
|
|
|
965
972
|
}
|
|
966
973
|
const organisationIds = memberships.map((m) => m.organisation_id).filter((id) => {
|
|
967
974
|
if (!id || typeof id !== "string") {
|
|
968
|
-
|
|
975
|
+
logger.warn("OrganisationService", "Invalid organisation ID (not string):", id);
|
|
969
976
|
return false;
|
|
970
977
|
}
|
|
971
978
|
const trimmedId = id.trim();
|
|
972
979
|
if (trimmedId === "") {
|
|
973
|
-
|
|
980
|
+
logger.warn("OrganisationService", "Empty organisation ID found");
|
|
974
981
|
return false;
|
|
975
982
|
}
|
|
976
983
|
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
984
|
if (!isValidUuid) {
|
|
978
|
-
|
|
985
|
+
logger.warn("OrganisationService", "Invalid UUID format:", trimmedId);
|
|
979
986
|
}
|
|
980
987
|
return isValidUuid;
|
|
981
988
|
});
|
|
982
989
|
if (organisationIds.length === 0) {
|
|
983
|
-
|
|
990
|
+
logger.warn("OrganisationService", "No valid organisation IDs found in memberships:", memberships);
|
|
984
991
|
throw new Error("No valid organisation IDs found in memberships");
|
|
985
992
|
}
|
|
986
993
|
if (abortSignal.aborted) {
|
|
@@ -988,7 +995,7 @@ var init_OrganisationService = __esm({
|
|
|
988
995
|
}
|
|
989
996
|
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
997
|
if (orgError) {
|
|
991
|
-
|
|
998
|
+
logger.error("OrganisationService", "Error loading organisations:", orgError);
|
|
992
999
|
throw orgError;
|
|
993
1000
|
}
|
|
994
1001
|
const organisations = allOrganisations?.filter(
|
|
@@ -1016,16 +1023,16 @@ var init_OrganisationService = __esm({
|
|
|
1016
1023
|
if (validPersistedOrg) {
|
|
1017
1024
|
initialOrg = validPersistedOrg;
|
|
1018
1025
|
} else {
|
|
1019
|
-
|
|
1026
|
+
logger.warn("OrganisationService", "Persisted organisation not found in active orgs, clearing cache");
|
|
1020
1027
|
localStorage.removeItem("pace-core-selected-organisation");
|
|
1021
1028
|
}
|
|
1022
1029
|
} else {
|
|
1023
|
-
|
|
1030
|
+
logger.warn("OrganisationService", "Invalid persisted organisation ID, clearing cache");
|
|
1024
1031
|
localStorage.removeItem("pace-core-selected-organisation");
|
|
1025
1032
|
}
|
|
1026
1033
|
}
|
|
1027
1034
|
} catch (storageError) {
|
|
1028
|
-
|
|
1035
|
+
logger.warn("OrganisationService", "Failed to restore persisted organisation:", storageError);
|
|
1029
1036
|
localStorage.removeItem("pace-core-selected-organisation");
|
|
1030
1037
|
}
|
|
1031
1038
|
if (!initialOrg) {
|
|
@@ -1049,7 +1056,7 @@ var init_OrganisationService = __esm({
|
|
|
1049
1056
|
this.retryCount = 0;
|
|
1050
1057
|
this.hasFailedRef = false;
|
|
1051
1058
|
} catch (err) {
|
|
1052
|
-
|
|
1059
|
+
logger.error("OrganisationService", "Failed to load organisations:", err);
|
|
1053
1060
|
this._error = err;
|
|
1054
1061
|
this.retryCount = this.retryCount + 1;
|
|
1055
1062
|
this.hasFailedRef = true;
|
|
@@ -1094,7 +1101,7 @@ function OrganisationServiceProvider({
|
|
|
1094
1101
|
let isMounted = true;
|
|
1095
1102
|
organisationService.initialize().catch((error) => {
|
|
1096
1103
|
if (isMounted) {
|
|
1097
|
-
|
|
1104
|
+
logger.error("OrganisationServiceProvider", "Failed to initialize organisation service:", error);
|
|
1098
1105
|
}
|
|
1099
1106
|
});
|
|
1100
1107
|
return () => {
|
|
@@ -1111,6 +1118,7 @@ var init_OrganisationServiceProvider = __esm({
|
|
|
1111
1118
|
"src/providers/services/OrganisationServiceProvider.tsx"() {
|
|
1112
1119
|
"use strict";
|
|
1113
1120
|
init_OrganisationService();
|
|
1121
|
+
init_logger();
|
|
1114
1122
|
OrganisationServiceContext = createContext2(null);
|
|
1115
1123
|
useOrganisationService = () => {
|
|
1116
1124
|
const context = useContext2(OrganisationServiceContext);
|
|
@@ -1128,6 +1136,7 @@ var init_EventService = __esm({
|
|
|
1128
1136
|
"src/services/EventService.ts"() {
|
|
1129
1137
|
"use strict";
|
|
1130
1138
|
init_BaseService();
|
|
1139
|
+
init_logger();
|
|
1131
1140
|
init_secureStorage();
|
|
1132
1141
|
EventService = class extends BaseService {
|
|
1133
1142
|
constructor(supabaseClient, user, session, appName, selectedOrganisation, setSelectedEventId) {
|
|
@@ -1213,7 +1222,7 @@ var init_EventService = __esm({
|
|
|
1213
1222
|
if (event) {
|
|
1214
1223
|
try {
|
|
1215
1224
|
if (this.selectedOrganisation && event.organisation_id !== this.selectedOrganisation.id) {
|
|
1216
|
-
|
|
1225
|
+
logger.error("EventService", "Event organisation_id does not match selected organisation", {
|
|
1217
1226
|
eventOrganisationId: event.organisation_id,
|
|
1218
1227
|
selectedOrganisationId: this.selectedOrganisation.id,
|
|
1219
1228
|
eventName: event.event_name
|
|
@@ -1221,19 +1230,19 @@ var init_EventService = __esm({
|
|
|
1221
1230
|
return;
|
|
1222
1231
|
}
|
|
1223
1232
|
} catch (error) {
|
|
1224
|
-
|
|
1233
|
+
logger.error("EventService", "Error during event validation:", error);
|
|
1225
1234
|
}
|
|
1226
1235
|
this.selectedEvent = event;
|
|
1227
1236
|
this.setSelectedEventId?.(event.event_id);
|
|
1228
1237
|
this.persistEventSelection(event.event_id).catch((error) => {
|
|
1229
|
-
|
|
1238
|
+
logger.warn("EventService", "Failed to persist event selection:", error);
|
|
1230
1239
|
});
|
|
1231
1240
|
this.userClearedEventRef = false;
|
|
1232
1241
|
} else {
|
|
1233
1242
|
this.selectedEvent = null;
|
|
1234
1243
|
this.setSelectedEventId?.(null);
|
|
1235
1244
|
this.clearEventSelection().catch((error) => {
|
|
1236
|
-
|
|
1245
|
+
logger.warn("EventService", "Failed to clear event selection:", error);
|
|
1237
1246
|
});
|
|
1238
1247
|
this.hasAutoSelectedRef = false;
|
|
1239
1248
|
this.userClearedEventRef = true;
|
|
@@ -1263,7 +1272,7 @@ var init_EventService = __esm({
|
|
|
1263
1272
|
}
|
|
1264
1273
|
}
|
|
1265
1274
|
} catch (error) {
|
|
1266
|
-
|
|
1275
|
+
logger.warn("EventService", "Failed to load persisted event:", error);
|
|
1267
1276
|
}
|
|
1268
1277
|
return false;
|
|
1269
1278
|
}
|
|
@@ -1285,7 +1294,7 @@ var init_EventService = __esm({
|
|
|
1285
1294
|
const storageKey = this.getStorageKey(userId);
|
|
1286
1295
|
await secureStorage.setItem(storageKey, eventId, { encrypt: true });
|
|
1287
1296
|
} catch (error) {
|
|
1288
|
-
|
|
1297
|
+
logger.warn("EventService", "Failed to persist event selection:", error);
|
|
1289
1298
|
}
|
|
1290
1299
|
}
|
|
1291
1300
|
async clearEventSelection() {
|
|
@@ -1296,7 +1305,7 @@ var init_EventService = __esm({
|
|
|
1296
1305
|
this.selectedEvent = null;
|
|
1297
1306
|
this.setSelectedEventId?.(null);
|
|
1298
1307
|
} catch (error) {
|
|
1299
|
-
|
|
1308
|
+
logger.warn("EventService", "Failed to clear event selection:", error);
|
|
1300
1309
|
}
|
|
1301
1310
|
}
|
|
1302
1311
|
/**
|
|
@@ -1308,7 +1317,7 @@ var init_EventService = __esm({
|
|
|
1308
1317
|
const storageKey = this.getStorageKey(userId);
|
|
1309
1318
|
await secureStorage.removeItem(storageKey);
|
|
1310
1319
|
} catch (error) {
|
|
1311
|
-
|
|
1320
|
+
logger.warn("EventService", "Failed to clear event selection for user:", error);
|
|
1312
1321
|
}
|
|
1313
1322
|
}
|
|
1314
1323
|
autoSelectNextEvent(events) {
|
|
@@ -1329,7 +1338,7 @@ var init_EventService = __esm({
|
|
|
1329
1338
|
localStorage.removeItem("_sec_pace-core-selected-event");
|
|
1330
1339
|
}
|
|
1331
1340
|
} catch (error) {
|
|
1332
|
-
|
|
1341
|
+
logger.warn("EventService", "Failed to clean up old storage keys:", error);
|
|
1333
1342
|
}
|
|
1334
1343
|
await this.fetchEvents(false);
|
|
1335
1344
|
}
|
|
@@ -1405,7 +1414,7 @@ var init_EventService = __esm({
|
|
|
1405
1414
|
}
|
|
1406
1415
|
}
|
|
1407
1416
|
} catch (err) {
|
|
1408
|
-
|
|
1417
|
+
logger.error("EventService", "Error fetching events:", err);
|
|
1409
1418
|
const _error = err instanceof Error ? err : new Error("Unknown error occurred");
|
|
1410
1419
|
if (isMounted) {
|
|
1411
1420
|
this.error = _error;
|
|
@@ -1470,7 +1479,7 @@ function EventServiceProvider({
|
|
|
1470
1479
|
if (!isMounted) return;
|
|
1471
1480
|
await eventService.initialize().catch((error) => {
|
|
1472
1481
|
if (isMounted) {
|
|
1473
|
-
|
|
1482
|
+
logger.error("EventServiceProvider", "Failed to initialize event service:", error);
|
|
1474
1483
|
}
|
|
1475
1484
|
});
|
|
1476
1485
|
};
|
|
@@ -1489,6 +1498,7 @@ var init_EventServiceProvider = __esm({
|
|
|
1489
1498
|
"src/providers/services/EventServiceProvider.tsx"() {
|
|
1490
1499
|
"use strict";
|
|
1491
1500
|
init_EventService();
|
|
1501
|
+
init_logger();
|
|
1492
1502
|
EventServiceContext = createContext3(null);
|
|
1493
1503
|
useEventService = () => {
|
|
1494
1504
|
const context = useContext3(EventServiceContext);
|
|
@@ -1506,6 +1516,7 @@ var init_InactivityService = __esm({
|
|
|
1506
1516
|
"src/services/InactivityService.ts"() {
|
|
1507
1517
|
"use strict";
|
|
1508
1518
|
init_BaseService();
|
|
1519
|
+
init_logger();
|
|
1509
1520
|
InactivityService = class extends BaseService {
|
|
1510
1521
|
constructor(supabaseClient, user, session, idleTimeoutMs = 30 * 60 * 1e3, warnBeforeMs = 60 * 1e3, onIdleLogout) {
|
|
1511
1522
|
super();
|
|
@@ -1645,7 +1656,7 @@ var init_InactivityService = __esm({
|
|
|
1645
1656
|
await this.supabaseClient.auth.signOut();
|
|
1646
1657
|
}
|
|
1647
1658
|
} catch (error) {
|
|
1648
|
-
|
|
1659
|
+
logger.error("InactivityService", "Error during idle logout:", error);
|
|
1649
1660
|
}
|
|
1650
1661
|
this.onIdleLogout?.("inactivity");
|
|
1651
1662
|
this.notify();
|
|
@@ -1665,7 +1676,7 @@ var init_InactivityService = __esm({
|
|
|
1665
1676
|
await this.supabaseClient.auth.signOut();
|
|
1666
1677
|
}
|
|
1667
1678
|
} catch (error) {
|
|
1668
|
-
|
|
1679
|
+
logger.error("InactivityService", "Error during manual sign out:", error);
|
|
1669
1680
|
}
|
|
1670
1681
|
this.onIdleLogout?.("inactivity");
|
|
1671
1682
|
this.notify();
|
|
@@ -1692,7 +1703,7 @@ var init_InactivityService = __esm({
|
|
|
1692
1703
|
if (typeof window !== "undefined") {
|
|
1693
1704
|
const isProduction = import.meta.env.MODE === "production";
|
|
1694
1705
|
if (isProduction) {
|
|
1695
|
-
|
|
1706
|
+
logger.warn("InactivityService", "Inactivity feature enabled in production");
|
|
1696
1707
|
}
|
|
1697
1708
|
}
|
|
1698
1709
|
}
|
|
@@ -1705,7 +1716,7 @@ var init_InactivityService = __esm({
|
|
|
1705
1716
|
return;
|
|
1706
1717
|
}
|
|
1707
1718
|
try {
|
|
1708
|
-
const { useInactivityTracker } = await import("./useInactivityTracker-
|
|
1719
|
+
const { useInactivityTracker } = await import("./useInactivityTracker-TO6ZOF35.js");
|
|
1709
1720
|
this.inactivityTracker = {
|
|
1710
1721
|
isIdle: false,
|
|
1711
1722
|
timeRemaining: 0,
|
|
@@ -1734,7 +1745,7 @@ var init_InactivityService = __esm({
|
|
|
1734
1745
|
};
|
|
1735
1746
|
this.setupEventHandlers();
|
|
1736
1747
|
} catch (error) {
|
|
1737
|
-
|
|
1748
|
+
logger.error("InactivityService", "Failed to setup inactivity tracker:", error);
|
|
1738
1749
|
}
|
|
1739
1750
|
}
|
|
1740
1751
|
setupEventHandlers() {
|
|
@@ -1836,7 +1847,7 @@ function InactivityServiceProvider({
|
|
|
1836
1847
|
let isMounted = true;
|
|
1837
1848
|
inactivityService.initialize().catch((error) => {
|
|
1838
1849
|
if (isMounted) {
|
|
1839
|
-
|
|
1850
|
+
logger.error("InactivityServiceProvider", "Failed to initialize inactivity service:", error);
|
|
1840
1851
|
}
|
|
1841
1852
|
});
|
|
1842
1853
|
return () => {
|
|
@@ -1853,6 +1864,7 @@ var init_InactivityServiceProvider = __esm({
|
|
|
1853
1864
|
"src/providers/services/InactivityServiceProvider.tsx"() {
|
|
1854
1865
|
"use strict";
|
|
1855
1866
|
init_InactivityService();
|
|
1867
|
+
init_logger();
|
|
1856
1868
|
InactivityServiceContext = createContext4(null);
|
|
1857
1869
|
useInactivityService = () => {
|
|
1858
1870
|
const context = useContext4(InactivityServiceContext);
|
|
@@ -1958,7 +1970,7 @@ function useSessionRestoration() {
|
|
|
1958
1970
|
if (sessionRestoration.isRestoring && !sessionRestoration.restorationComplete && !sessionRestoration.restorationError) {
|
|
1959
1971
|
setHasTimedOut(false);
|
|
1960
1972
|
timeoutHandle = setTimeout(() => {
|
|
1961
|
-
|
|
1973
|
+
log.warn("Session restoration timed out");
|
|
1962
1974
|
setHasTimedOut(true);
|
|
1963
1975
|
}, SESSION_RESTORATION_TIMEOUT_MS);
|
|
1964
1976
|
} else {
|
|
@@ -1980,11 +1992,13 @@ function useSessionRestoration() {
|
|
|
1980
1992
|
timeoutMs: SESSION_RESTORATION_TIMEOUT_MS
|
|
1981
1993
|
}), [sessionRestoration, hasTimedOut]);
|
|
1982
1994
|
}
|
|
1983
|
-
var SESSION_RESTORATION_TIMEOUT_MS;
|
|
1995
|
+
var log, SESSION_RESTORATION_TIMEOUT_MS;
|
|
1984
1996
|
var init_useSessionRestoration = __esm({
|
|
1985
1997
|
"src/hooks/useSessionRestoration.ts"() {
|
|
1986
1998
|
"use strict";
|
|
1987
1999
|
init_AuthServiceProvider();
|
|
2000
|
+
init_logger();
|
|
2001
|
+
log = createLogger("useSessionRestoration");
|
|
1988
2002
|
SESSION_RESTORATION_TIMEOUT_MS = 5e3;
|
|
1989
2003
|
}
|
|
1990
2004
|
});
|
|
@@ -2087,7 +2101,7 @@ function UnifiedAuthContextProvider({
|
|
|
2087
2101
|
};
|
|
2088
2102
|
const prevState = prevStateRef.current;
|
|
2089
2103
|
if (!prevState || prevState.isAuthenticated !== currentState.isAuthenticated || prevState.userEmail !== currentState.userEmail || prevState.totalLoading !== currentState.totalLoading) {
|
|
2090
|
-
|
|
2104
|
+
logger.debug("UnifiedAuthContext", "Auth state changed:", {
|
|
2091
2105
|
isAuthenticated: isAuth,
|
|
2092
2106
|
user: currentUser?.email,
|
|
2093
2107
|
session: currentSession ? "exists" : "null",
|
|
@@ -2357,11 +2371,12 @@ var init_UnifiedAuthProvider = __esm({
|
|
|
2357
2371
|
init_useEventService();
|
|
2358
2372
|
init_useInactivityService();
|
|
2359
2373
|
init_useSessionRestoration();
|
|
2374
|
+
init_logger();
|
|
2360
2375
|
UnifiedAuthContext = createContext5(void 0);
|
|
2361
2376
|
useUnifiedAuth = () => {
|
|
2362
2377
|
const context = useContext10(UnifiedAuthContext);
|
|
2363
2378
|
if (!context) {
|
|
2364
|
-
|
|
2379
|
+
logger.error("useUnifiedAuth", "useUnifiedAuth must be used within a UnifiedAuthProvider");
|
|
2365
2380
|
throw new Error("useUnifiedAuth must be used within a UnifiedAuthProvider");
|
|
2366
2381
|
}
|
|
2367
2382
|
return context;
|
|
@@ -2400,4 +2415,4 @@ export {
|
|
|
2400
2415
|
UnifiedAuthProvider,
|
|
2401
2416
|
init_UnifiedAuthProvider
|
|
2402
2417
|
};
|
|
2403
|
-
//# sourceMappingURL=chunk-
|
|
2418
|
+
//# sourceMappingURL=chunk-YCWDTTUK.js.map
|