@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
package/dist/utils.d.ts
CHANGED
|
@@ -1,12 +1,15 @@
|
|
|
1
|
-
export {
|
|
2
|
-
import {
|
|
1
|
+
export { S as SecureDataAccess, a as cn, j as formatCompactNumber, e as formatCurrency, f as formatDate, k as formatFileSize, h as formatNumber, i as formatPercent, g as getAppConfig, d as getCurrentAppId, s as setAppConfig, u as useSessionTracking } from './formatting-CvUXy2mF.js';
|
|
2
|
+
import { SupabaseClient } from '@supabase/supabase-js';
|
|
3
|
+
import { D as Database } from './database-C6jy7EOu.js';
|
|
4
|
+
export { g as changePasswordSchema, t as combineSchemas, i as contactFormSchema, l as loginSchema, f as passwordResetSchema, q as pickSchema, r as registrationSchema, c as secureLoginSchema, s as securePasswordSchema, h as userProfileSchema } from './validation-8npbysjg.js';
|
|
5
|
+
export { CSRFTokenData, SafeQueryParams, SanitizationOptions, buildSafeQueryParams, calculatePasswordStrength, csrfManager, dateSchema, deepMerge, detectSQLInjection, emailSchema, enhancedEmailSchema, enhancedNameSchema, enhancedPasswordSchema, enhancedPhoneSchema, enhancedUrlSchema, escapeLikeQuery, generateCSRFToken, getCSRFToken, isEmpty, isObject, isStrongPassword, isValidDate, isValidEmail, isValidUrl, isWithinRange, limitOffsetSchema, matchesPattern, nameSchema, orderBySchema, passwordSchema, phoneSchema, renderSafeHtml, sanitizeFilters, sanitizeFormData, sanitizeHtml, sanitizeHtml as sanitizeHtmlAdvanced, sanitizeSearchQuery, sanitizeUserInput, sanitizeUserInput_deprecated, searchQuerySchema, sqlIdentifierSchema, urlSchema, userPreferencesSchema, userSettingsSchema, usernameSchema, validateCSRFToken, validateHtml, validateUserInput } from './validation.js';
|
|
3
6
|
export { u as useComponentPerformance } from './useComponentPerformance-DE9l5RkL.js';
|
|
4
7
|
import * as date_fns from 'date-fns';
|
|
5
|
-
import { D as DataTable } from './DataTable-
|
|
6
|
-
import './types-
|
|
8
|
+
import { D as DataTable } from './DataTable-CWAZZcXC.js';
|
|
9
|
+
import './types-Dfz9dmVH.js';
|
|
7
10
|
import React__default, { ComponentType } from 'react';
|
|
8
|
-
import { SupabaseClient } from '@supabase/supabase-js';
|
|
9
11
|
import 'clsx';
|
|
12
|
+
import 'zod';
|
|
10
13
|
import 'react/jsx-runtime';
|
|
11
14
|
import '@tanstack/react-table';
|
|
12
15
|
|
|
@@ -43,6 +46,109 @@ declare class DebugLogger {
|
|
|
43
46
|
static info(component: string, message: string, ...args: any[]): void;
|
|
44
47
|
}
|
|
45
48
|
|
|
49
|
+
/**
|
|
50
|
+
* @file Production-Safe Logger Utility
|
|
51
|
+
* @package @jmruthers/pace-core
|
|
52
|
+
* @module Utils/Logger
|
|
53
|
+
* @since 0.4.76
|
|
54
|
+
*/
|
|
55
|
+
/**
|
|
56
|
+
* Logger levels for different types of messages
|
|
57
|
+
*/
|
|
58
|
+
declare enum LogLevel {
|
|
59
|
+
DEBUG = 0,
|
|
60
|
+
INFO = 1,
|
|
61
|
+
WARN = 2,
|
|
62
|
+
ERROR = 3
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Logger configuration interface
|
|
66
|
+
*/
|
|
67
|
+
interface LoggerConfig {
|
|
68
|
+
/** Minimum log level to output */
|
|
69
|
+
level: LogLevel;
|
|
70
|
+
/** Whether to include timestamps */
|
|
71
|
+
includeTimestamp: boolean;
|
|
72
|
+
/** Whether to include component names */
|
|
73
|
+
includeComponent: boolean;
|
|
74
|
+
/** Custom prefix for all log messages */
|
|
75
|
+
prefix?: string;
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Production-safe logger that no-ops in production builds
|
|
79
|
+
* Only outputs logs in development mode to prevent production console spam
|
|
80
|
+
*/
|
|
81
|
+
declare class Logger {
|
|
82
|
+
private static config;
|
|
83
|
+
/**
|
|
84
|
+
* Check if we're in development or test mode
|
|
85
|
+
* Allows logging in both development and test environments
|
|
86
|
+
*/
|
|
87
|
+
private static get isDevelopment();
|
|
88
|
+
/**
|
|
89
|
+
* Configure the logger
|
|
90
|
+
*/
|
|
91
|
+
static configure(config: Partial<LoggerConfig>): void;
|
|
92
|
+
/**
|
|
93
|
+
* Format a log message with optional timestamp and component
|
|
94
|
+
*/
|
|
95
|
+
private static formatMessage;
|
|
96
|
+
/**
|
|
97
|
+
* Check if a log level should be output
|
|
98
|
+
*/
|
|
99
|
+
private static shouldLog;
|
|
100
|
+
/**
|
|
101
|
+
* Log debug information (development only)
|
|
102
|
+
*/
|
|
103
|
+
static debug(component: string, message: string, ...args: any[]): void;
|
|
104
|
+
/**
|
|
105
|
+
* Log info information (development only)
|
|
106
|
+
*/
|
|
107
|
+
static info(component: string, message: string, ...args: any[]): void;
|
|
108
|
+
/**
|
|
109
|
+
* Log warning information (development only)
|
|
110
|
+
*/
|
|
111
|
+
static warn(component: string, message: string, ...args: any[]): void;
|
|
112
|
+
/**
|
|
113
|
+
* Log error information (development only)
|
|
114
|
+
*/
|
|
115
|
+
static error(component: string, message: string, ...args: any[]): void;
|
|
116
|
+
/**
|
|
117
|
+
* Create a scoped logger for a specific component
|
|
118
|
+
*/
|
|
119
|
+
static createScopedLogger(component: string): {
|
|
120
|
+
debug: (message: string, ...args: any[]) => void;
|
|
121
|
+
info: (message: string, ...args: any[]) => void;
|
|
122
|
+
warn: (message: string, ...args: any[]) => void;
|
|
123
|
+
error: (message: string, ...args: any[]) => void;
|
|
124
|
+
};
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Default logger instance for convenience
|
|
128
|
+
*/
|
|
129
|
+
declare const logger: {
|
|
130
|
+
debug: (component: string, message: string, ...args: any[]) => void;
|
|
131
|
+
info: (component: string, message: string, ...args: any[]) => void;
|
|
132
|
+
warn: (component: string, message: string, ...args: any[]) => void;
|
|
133
|
+
error: (component: string, message: string, ...args: any[]) => void;
|
|
134
|
+
createScopedLogger: (component: string) => {
|
|
135
|
+
debug: (message: string, ...args: any[]) => void;
|
|
136
|
+
info: (message: string, ...args: any[]) => void;
|
|
137
|
+
warn: (message: string, ...args: any[]) => void;
|
|
138
|
+
error: (message: string, ...args: any[]) => void;
|
|
139
|
+
};
|
|
140
|
+
configure: (config: Partial<LoggerConfig>) => void;
|
|
141
|
+
};
|
|
142
|
+
/**
|
|
143
|
+
* Convenience function to create a scoped logger
|
|
144
|
+
*/
|
|
145
|
+
declare function createLogger(component: string): {
|
|
146
|
+
debug: (message: string, ...args: any[]) => void;
|
|
147
|
+
info: (message: string, ...args: any[]) => void;
|
|
148
|
+
warn: (message: string, ...args: any[]) => void;
|
|
149
|
+
error: (message: string, ...args: any[]) => void;
|
|
150
|
+
};
|
|
151
|
+
|
|
46
152
|
/**
|
|
47
153
|
* Utility to resolve the current app name from various sources
|
|
48
154
|
* Priority: package.json > environment variables > fallback
|
|
@@ -67,6 +173,11 @@ declare function getAppNameFromGlobal(): string | null;
|
|
|
67
173
|
* Fallback method for when package.json is not available
|
|
68
174
|
*/
|
|
69
175
|
declare function getAppNameFromEnvironment(): string | null;
|
|
176
|
+
/**
|
|
177
|
+
* Get the current app name from the most reliable source
|
|
178
|
+
* Priority: global variable > build-time injection > package.json > environment variables > null
|
|
179
|
+
*/
|
|
180
|
+
declare function getCurrentAppName(): string | null;
|
|
70
181
|
/**
|
|
71
182
|
* Set the app name globally for RBAC resolution
|
|
72
183
|
* Call this in your app's main entry point (e.g., main.tsx, index.tsx)
|
|
@@ -92,173 +203,41 @@ declare function setRBACAppName(appName: string): void;
|
|
|
92
203
|
declare function getCurrentAppNameWithFallback(fallback?: string): string;
|
|
93
204
|
|
|
94
205
|
/**
|
|
95
|
-
*
|
|
96
|
-
* @internal This file contains implementation details that should not be used directly
|
|
97
|
-
*/
|
|
98
|
-
/**
|
|
99
|
-
* Utility functions for validating data in the application
|
|
100
|
-
*/
|
|
101
|
-
/**
|
|
102
|
-
* Check if a string is a valid email
|
|
103
|
-
*/
|
|
104
|
-
declare function isValidEmail(email: string): boolean;
|
|
105
|
-
/**
|
|
106
|
-
* Check if a string is empty (either null, undefined, or just whitespace)
|
|
107
|
-
*/
|
|
108
|
-
declare function isEmpty(value: string | null | undefined): boolean;
|
|
109
|
-
/**
|
|
110
|
-
* Check if a password meets minimum requirements
|
|
111
|
-
*/
|
|
112
|
-
declare function isStrongPassword(password: string): boolean;
|
|
113
|
-
/**
|
|
114
|
-
* Check if a URL is valid
|
|
115
|
-
*/
|
|
116
|
-
declare function isValidUrl(url: string): boolean;
|
|
117
|
-
/**
|
|
118
|
-
* Check if a date string is valid
|
|
119
|
-
*/
|
|
120
|
-
declare function isValidDate(dateStr: string): boolean;
|
|
121
|
-
/**
|
|
122
|
-
* Check if a value is within a range
|
|
123
|
-
*/
|
|
124
|
-
declare function isWithinRange(value: number, min: number, max: number): boolean;
|
|
125
|
-
/**
|
|
126
|
-
* Check if a value matches a specific pattern
|
|
127
|
-
*/
|
|
128
|
-
declare function matchesPattern(value: string, pattern: RegExp): boolean;
|
|
129
|
-
/**
|
|
130
|
-
* Utility function to deep merge objects for schema combination
|
|
131
|
-
* @internal
|
|
132
|
-
*/
|
|
133
|
-
declare function deepMerge<T extends Record<string, unknown>>(target: T, source: Record<string, unknown>): T;
|
|
134
|
-
/**
|
|
135
|
-
* Type guard to check if a value is a plain object
|
|
136
|
-
* @internal
|
|
137
|
-
*/
|
|
138
|
-
declare function isObject(item: unknown): item is Record<string, unknown>;
|
|
139
|
-
|
|
140
|
-
/**
|
|
141
|
-
* @file Input Sanitization Layer
|
|
206
|
+
* App ID Resolution Utility
|
|
142
207
|
* @package @jmruthers/pace-core
|
|
143
|
-
* @module
|
|
144
|
-
* @since
|
|
208
|
+
* @module Utils/AppIdResolver
|
|
209
|
+
* @since 1.0.0
|
|
145
210
|
*
|
|
146
|
-
*
|
|
147
|
-
* and other security vulnerabilities.
|
|
148
|
-
*/
|
|
149
|
-
|
|
150
|
-
/**
|
|
151
|
-
* Sanitization options for different contexts
|
|
152
|
-
*/
|
|
153
|
-
interface SanitizationOptions {
|
|
154
|
-
allowHtml?: boolean;
|
|
155
|
-
allowedTags?: string[];
|
|
156
|
-
maxLength?: number;
|
|
157
|
-
trim?: boolean;
|
|
158
|
-
removeScripts?: boolean;
|
|
159
|
-
removeEvents?: boolean;
|
|
160
|
-
}
|
|
161
|
-
/**
|
|
162
|
-
* Sanitizes user input by removing potentially dangerous characters and patterns
|
|
163
|
-
*/
|
|
164
|
-
declare function sanitizeUserInput(input: string, options?: SanitizationOptions): string;
|
|
165
|
-
/**
|
|
166
|
-
* Sanitizes email addresses
|
|
167
|
-
*/
|
|
168
|
-
declare function sanitizeEmail(email: string): string;
|
|
169
|
-
/**
|
|
170
|
-
* Sanitizes phone numbers
|
|
171
|
-
*/
|
|
172
|
-
declare function sanitizePhoneNumber(phone: string): string;
|
|
173
|
-
/**
|
|
174
|
-
* Sanitizes URLs
|
|
175
|
-
*/
|
|
176
|
-
declare function sanitizeUrl(url: string): string;
|
|
177
|
-
/**
|
|
178
|
-
* Sanitizes file names
|
|
179
|
-
*/
|
|
180
|
-
declare function sanitizeFileName(fileName: string): string;
|
|
181
|
-
/**
|
|
182
|
-
* Sanitizes SQL input to prevent injection
|
|
211
|
+
* This module provides utilities to resolve app names to app IDs for database operations.
|
|
183
212
|
*/
|
|
184
|
-
declare function sanitizeSqlInput(input: string): string;
|
|
185
|
-
/**
|
|
186
|
-
* Validates and sanitizes form data using Zod schemas
|
|
187
|
-
*/
|
|
188
|
-
declare function sanitizeFormData<T>(data: unknown, schema: z.ZodSchema<T>, sanitizationRules?: Record<string, SanitizationOptions>): {
|
|
189
|
-
success: boolean;
|
|
190
|
-
data?: T;
|
|
191
|
-
error?: string;
|
|
192
|
-
};
|
|
193
|
-
/**
|
|
194
|
-
* Content Security Policy (CSP) utilities
|
|
195
|
-
*/
|
|
196
|
-
declare const CSP_DIRECTIVES: {
|
|
197
|
-
default: string;
|
|
198
|
-
script: string;
|
|
199
|
-
style: string;
|
|
200
|
-
img: string;
|
|
201
|
-
font: string;
|
|
202
|
-
connect: string;
|
|
203
|
-
frame: string;
|
|
204
|
-
};
|
|
205
|
-
declare function generateCSPHeader(customDirectives?: Partial<typeof CSP_DIRECTIVES>): string;
|
|
206
|
-
/**
|
|
207
|
-
* Rate limiting utilities
|
|
208
|
-
*/
|
|
209
|
-
declare class RateLimiter {
|
|
210
|
-
private maxAttempts;
|
|
211
|
-
private windowMs;
|
|
212
|
-
private attempts;
|
|
213
|
-
constructor(maxAttempts?: number, windowMs?: number);
|
|
214
|
-
isAllowed(identifier: string): boolean;
|
|
215
|
-
getRemainingAttempts(identifier: string): number;
|
|
216
|
-
reset(identifier: string): void;
|
|
217
|
-
}
|
|
218
213
|
|
|
219
214
|
/**
|
|
220
|
-
*
|
|
215
|
+
* Resolves an app name to its corresponding app ID
|
|
221
216
|
*
|
|
222
|
-
*
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
/**
|
|
226
|
-
* Validates user input against a schema with automatic sanitization
|
|
227
|
-
*/
|
|
228
|
-
declare function validateUserInput<T>(schema: z.ZodSchema<T>, data: unknown, sanitizationRules?: Record<string, SanitizationOptions>): {
|
|
229
|
-
success: boolean;
|
|
230
|
-
data?: T;
|
|
231
|
-
error?: string;
|
|
232
|
-
};
|
|
233
|
-
/**
|
|
234
|
-
* Sanitizes user input by removing potentially dangerous characters
|
|
235
|
-
* @deprecated Use sanitizeUserInput from lib/sanitization instead
|
|
236
|
-
*/
|
|
237
|
-
declare function sanitizeUserInput_deprecated(input: string): string;
|
|
238
|
-
/**
|
|
239
|
-
* Enhanced email validation with sanitization
|
|
240
|
-
*/
|
|
241
|
-
declare const emailSchema: z.ZodPipeline<z.ZodEffects<z.ZodString, string, string>, z.ZodString>;
|
|
242
|
-
/**
|
|
243
|
-
* Enhanced password validation
|
|
244
|
-
*/
|
|
245
|
-
declare const passwordSchema: z.ZodString;
|
|
246
|
-
/**
|
|
247
|
-
* Username validation with sanitization
|
|
248
|
-
*/
|
|
249
|
-
declare const usernameSchema: z.ZodPipeline<z.ZodEffects<z.ZodString, string, string>, z.ZodString>;
|
|
250
|
-
/**
|
|
251
|
-
* Name validation with sanitization
|
|
217
|
+
* @param supabase - Supabase client instance
|
|
218
|
+
* @param appName - The app name to resolve
|
|
219
|
+
* @returns Promise resolving to the app ID or null if not found
|
|
252
220
|
*/
|
|
253
|
-
declare
|
|
221
|
+
declare function getAppId(supabase: SupabaseClient<Database>, appName: string): Promise<string | null>;
|
|
254
222
|
/**
|
|
255
|
-
*
|
|
223
|
+
* Resolves multiple app names to their corresponding app IDs
|
|
224
|
+
*
|
|
225
|
+
* @param supabase - Supabase client instance
|
|
226
|
+
* @param appNames - Array of app names to resolve
|
|
227
|
+
* @returns Promise resolving to a map of app names to app IDs
|
|
256
228
|
*/
|
|
257
|
-
declare
|
|
229
|
+
declare function getAppIds(supabase: SupabaseClient<Database>, appNames: string[]): Promise<Record<string, string | null>>;
|
|
258
230
|
/**
|
|
259
|
-
*
|
|
231
|
+
* Cached app ID resolver with TTL
|
|
260
232
|
*/
|
|
261
|
-
declare
|
|
233
|
+
declare class CachedAppIdResolver {
|
|
234
|
+
private cache;
|
|
235
|
+
private ttl;
|
|
236
|
+
getAppId(supabase: SupabaseClient<Database>, appName: string): Promise<string | null>;
|
|
237
|
+
clearCache(): void;
|
|
238
|
+
clearCacheForApp(appName: string): void;
|
|
239
|
+
}
|
|
240
|
+
declare const cachedAppIdResolver: CachedAppIdResolver;
|
|
262
241
|
|
|
263
242
|
interface SecurityEvent$1 {
|
|
264
243
|
type: string;
|
|
@@ -269,6 +248,27 @@ interface SecurityEvent$1 {
|
|
|
269
248
|
declare function getSecurityHeaders(): Record<string, string>;
|
|
270
249
|
declare function validateSecurityHeaders(headers: Record<string, string>): boolean;
|
|
271
250
|
|
|
251
|
+
interface SecurityEvent {
|
|
252
|
+
id?: string;
|
|
253
|
+
action: string;
|
|
254
|
+
details: Record<string, any>;
|
|
255
|
+
timestamp?: number;
|
|
256
|
+
}
|
|
257
|
+
interface SecurityAlert {
|
|
258
|
+
id: string;
|
|
259
|
+
type: string;
|
|
260
|
+
message: string;
|
|
261
|
+
timestamp: Date;
|
|
262
|
+
}
|
|
263
|
+
declare class SecurityMonitor {
|
|
264
|
+
private events;
|
|
265
|
+
logEvent(event: SecurityEvent): void;
|
|
266
|
+
getEvents(): SecurityEvent[];
|
|
267
|
+
clearEvents(): void;
|
|
268
|
+
createAlert(alert: Omit<SecurityAlert, 'id' | 'timestamp'>): SecurityAlert;
|
|
269
|
+
}
|
|
270
|
+
declare const securityMonitor: SecurityMonitor;
|
|
271
|
+
|
|
272
272
|
/**
|
|
273
273
|
* Performance thresholds and constants
|
|
274
274
|
*/
|
|
@@ -318,6 +318,39 @@ declare const bundleAnalyzer: BundleAnalyzer;
|
|
|
318
318
|
declare function validateImportPattern(moduleId: string, importedItems: string[]): void;
|
|
319
319
|
declare function trackDynamicImport(moduleName: string): void;
|
|
320
320
|
|
|
321
|
+
interface PerformanceBudget {
|
|
322
|
+
metric: string;
|
|
323
|
+
budget: number;
|
|
324
|
+
actual: number;
|
|
325
|
+
threshold: 'error' | 'warning' | 'info';
|
|
326
|
+
}
|
|
327
|
+
interface PerformanceMetrics {
|
|
328
|
+
bundleSize: number;
|
|
329
|
+
chunkCount: number;
|
|
330
|
+
treeshakingEffectiveness: number;
|
|
331
|
+
dynamicImportUsage: number;
|
|
332
|
+
}
|
|
333
|
+
interface MeasurementResult {
|
|
334
|
+
passed: boolean;
|
|
335
|
+
value: number;
|
|
336
|
+
threshold: number;
|
|
337
|
+
}
|
|
338
|
+
declare const PERFORMANCE_BUDGETS: {
|
|
339
|
+
[key: string]: {
|
|
340
|
+
threshold: number;
|
|
341
|
+
};
|
|
342
|
+
};
|
|
343
|
+
declare class PerformanceBudgetMonitor {
|
|
344
|
+
private metrics;
|
|
345
|
+
private budgets;
|
|
346
|
+
measure(metric: string, value: number, metadata?: Record<string, unknown>): MeasurementResult;
|
|
347
|
+
setBudget(metric: string, budget: number, threshold?: 'error' | 'warning' | 'info'): void;
|
|
348
|
+
checkBudgets(): PerformanceBudget[];
|
|
349
|
+
getMetrics(): PerformanceMetrics;
|
|
350
|
+
reset(): void;
|
|
351
|
+
}
|
|
352
|
+
declare const performanceBudgetMonitor: PerformanceBudgetMonitor;
|
|
353
|
+
|
|
321
354
|
/**
|
|
322
355
|
* Dynamic utility loader to reduce initial bundle size
|
|
323
356
|
* Heavy utilities are loaded on-demand
|
|
@@ -366,39 +399,6 @@ declare const lazyChartUtils: ReturnType<typeof createLazyUtility<unknown>>;
|
|
|
366
399
|
declare const lazyFormUtils: ReturnType<typeof createLazyUtility<Awaited<ReturnType<typeof loadFormUtils>>>>;
|
|
367
400
|
declare const lazyCSVUtils: ReturnType<typeof createLazyUtility<unknown>>;
|
|
368
401
|
|
|
369
|
-
interface PerformanceBudget {
|
|
370
|
-
metric: string;
|
|
371
|
-
budget: number;
|
|
372
|
-
actual: number;
|
|
373
|
-
threshold: 'error' | 'warning' | 'info';
|
|
374
|
-
}
|
|
375
|
-
interface PerformanceMetrics {
|
|
376
|
-
bundleSize: number;
|
|
377
|
-
chunkCount: number;
|
|
378
|
-
treeshakingEffectiveness: number;
|
|
379
|
-
dynamicImportUsage: number;
|
|
380
|
-
}
|
|
381
|
-
interface MeasurementResult {
|
|
382
|
-
passed: boolean;
|
|
383
|
-
value: number;
|
|
384
|
-
threshold: number;
|
|
385
|
-
}
|
|
386
|
-
declare const PERFORMANCE_BUDGETS: {
|
|
387
|
-
[key: string]: {
|
|
388
|
-
threshold: number;
|
|
389
|
-
};
|
|
390
|
-
};
|
|
391
|
-
declare class PerformanceBudgetMonitor {
|
|
392
|
-
private metrics;
|
|
393
|
-
private budgets;
|
|
394
|
-
measure(metric: string, value: number, metadata?: Record<string, unknown>): MeasurementResult;
|
|
395
|
-
setBudget(metric: string, budget: number, threshold?: 'error' | 'warning' | 'info'): void;
|
|
396
|
-
checkBudgets(): PerformanceBudget[];
|
|
397
|
-
getMetrics(): PerformanceMetrics;
|
|
398
|
-
reset(): void;
|
|
399
|
-
}
|
|
400
|
-
declare const performanceBudgetMonitor: PerformanceBudgetMonitor;
|
|
401
|
-
|
|
402
402
|
interface LazyLoadOptions {
|
|
403
403
|
fallback?: React__default.ReactNode;
|
|
404
404
|
errorBoundary?: ComponentType<{
|
|
@@ -441,43 +441,6 @@ declare function parsePermission(permission: string): {
|
|
|
441
441
|
action: string;
|
|
442
442
|
} | null;
|
|
443
443
|
|
|
444
|
-
/**
|
|
445
|
-
* Creates a subset schema from a larger schema
|
|
446
|
-
*
|
|
447
|
-
* @param schema - Original Zod schema
|
|
448
|
-
* @param keys - Array of keys to pick from the schema
|
|
449
|
-
* @returns New schema with only the selected fields
|
|
450
|
-
*/
|
|
451
|
-
declare function pickSchema<T extends z.ZodObject<any, any, any>, K extends keyof z.infer<T>>(schema: T, keys: K[]): z.ZodObject<any>;
|
|
452
|
-
/**
|
|
453
|
-
* Combines multiple Zod schemas into one
|
|
454
|
-
*
|
|
455
|
-
* @param schemas - Array of Zod schemas to combine
|
|
456
|
-
* @returns Combined schema
|
|
457
|
-
*/
|
|
458
|
-
declare function combineSchemas<T extends z.ZodObject<any, any, any>[]>(schemas: T): z.ZodObject<any>;
|
|
459
|
-
|
|
460
|
-
interface SecurityEvent {
|
|
461
|
-
id?: string;
|
|
462
|
-
action: string;
|
|
463
|
-
details: Record<string, any>;
|
|
464
|
-
timestamp?: number;
|
|
465
|
-
}
|
|
466
|
-
interface SecurityAlert {
|
|
467
|
-
id: string;
|
|
468
|
-
type: string;
|
|
469
|
-
message: string;
|
|
470
|
-
timestamp: Date;
|
|
471
|
-
}
|
|
472
|
-
declare class SecurityMonitor {
|
|
473
|
-
private events;
|
|
474
|
-
logEvent(event: SecurityEvent): void;
|
|
475
|
-
getEvents(): SecurityEvent[];
|
|
476
|
-
clearEvents(): void;
|
|
477
|
-
createAlert(alert: Omit<SecurityAlert, 'id' | 'timestamp'>): SecurityAlert;
|
|
478
|
-
}
|
|
479
|
-
declare const securityMonitor: SecurityMonitor;
|
|
480
|
-
|
|
481
444
|
/**
|
|
482
445
|
* @file Audit Logger - General Utility
|
|
483
446
|
*
|
|
@@ -597,4 +560,4 @@ declare function getOrganisationContext(supabase: SupabaseClient): Promise<strin
|
|
|
597
560
|
*/
|
|
598
561
|
declare function isOrganisationContextAvailable(supabase: SupabaseClient): Promise<boolean>;
|
|
599
562
|
|
|
600
|
-
export {
|
|
563
|
+
export { CachedAppIdResolver, DebugLogger, LazyDataTable, LogLevel, Logger, type LoggerConfig, PERFORMANCE_BUDGETS, PERFORMANCE_THRESHOLDS, type PerformanceMetrics$1 as PerformanceMetrics, PermissionType, type SecurityEvent$1 as SecurityEvent, auditLog, auditLogger, bundleAnalyzer, cachedAppIdResolver, clearOrganisationContext, createLazyComponent, createLazyUtility, createLogger, createPerformanceBenchmark, generateDeviceFingerprint, getAppId, getAppIds, getAppNameFromBuildTime, getAppNameFromEnvironment, getAppNameFromGlobal, getAppNameFromPackageJson, getCurrentAppName, getCurrentAppNameWithFallback, getOrganisationContext, getSecurityHeaders, hasAllPermissions, hasAnyPermission, hasPermission, isOrganisationContextAvailable, lazyCSVUtils, lazyChartUtils, lazyDateUtils, lazyFormUtils, lazyLodash, loadCSVUtils, loadChartUtils, loadDateUtils, loadFormUtils, loadLodash, logAuditEvent, logAuthEvent, logPermissionEvent, logSecurityEvent, logger, measureRenderPerformance, parsePermission, performanceBudgetMonitor, securityMonitor, setOrganisationContext, setRBACAppName, trackDynamicImport, transformPermissionMapToBoolean, validateDeviceFingerprint, validateImportPattern, validateSecurityHeaders };
|