@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
package/dist/utils.d.ts
CHANGED
|
@@ -1,11 +1,14 @@
|
|
|
1
|
-
export {
|
|
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 { deepMerge, isEmpty, isObject, isStrongPassword, isValidDate, isValidEmail, isValidUrl, isWithinRange, matchesPattern } from './validation.js';
|
|
2
5
|
import { z } from 'zod';
|
|
6
|
+
export { c as combineSchemas, p as pickSchema } from './schema-DTDZQe2u.js';
|
|
3
7
|
export { u as useComponentPerformance } from './useComponentPerformance-DE9l5RkL.js';
|
|
4
8
|
import * as date_fns from 'date-fns';
|
|
5
|
-
import { D as DataTable } from './DataTable-
|
|
6
|
-
import './types-
|
|
9
|
+
import { D as DataTable } from './DataTable-CWAZZcXC.js';
|
|
10
|
+
import './types-Dfz9dmVH.js';
|
|
7
11
|
import React__default, { ComponentType } from 'react';
|
|
8
|
-
import { SupabaseClient } from '@supabase/supabase-js';
|
|
9
12
|
import 'clsx';
|
|
10
13
|
import 'react/jsx-runtime';
|
|
11
14
|
import '@tanstack/react-table';
|
|
@@ -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,55 +203,46 @@ declare function setRBACAppName(appName: string): void;
|
|
|
92
203
|
declare function getCurrentAppNameWithFallback(fallback?: string): string;
|
|
93
204
|
|
|
94
205
|
/**
|
|
95
|
-
*
|
|
96
|
-
* @
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
*
|
|
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
|
|
206
|
+
* App ID Resolution Utility
|
|
207
|
+
* @package @jmruthers/pace-core
|
|
208
|
+
* @module Utils/AppIdResolver
|
|
209
|
+
* @since 1.0.0
|
|
210
|
+
*
|
|
211
|
+
* This module provides utilities to resolve app names to app IDs for database operations.
|
|
123
212
|
*/
|
|
124
|
-
|
|
213
|
+
|
|
125
214
|
/**
|
|
126
|
-
*
|
|
215
|
+
* Resolves an app name to its corresponding app ID
|
|
216
|
+
*
|
|
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
|
|
127
220
|
*/
|
|
128
|
-
declare function
|
|
221
|
+
declare function getAppId(supabase: SupabaseClient<Database>, appName: string): Promise<string | null>;
|
|
129
222
|
/**
|
|
130
|
-
*
|
|
131
|
-
*
|
|
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
|
|
132
228
|
*/
|
|
133
|
-
declare function
|
|
229
|
+
declare function getAppIds(supabase: SupabaseClient<Database>, appNames: string[]): Promise<Record<string, string | null>>;
|
|
134
230
|
/**
|
|
135
|
-
*
|
|
136
|
-
* @internal
|
|
231
|
+
* Cached app ID resolver with TTL
|
|
137
232
|
*/
|
|
138
|
-
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;
|
|
139
241
|
|
|
140
242
|
/**
|
|
141
243
|
* @file Input Sanitization Layer
|
|
142
244
|
* @package @jmruthers/pace-core
|
|
143
|
-
* @module
|
|
245
|
+
* @module Utils/Validation/Sanitization
|
|
144
246
|
* @since 0.1.0
|
|
145
247
|
*
|
|
146
248
|
* Comprehensive input sanitization utilities to prevent XSS, injection attacks,
|
|
@@ -162,26 +264,6 @@ interface SanitizationOptions {
|
|
|
162
264
|
* Sanitizes user input by removing potentially dangerous characters and patterns
|
|
163
265
|
*/
|
|
164
266
|
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
|
|
183
|
-
*/
|
|
184
|
-
declare function sanitizeSqlInput(input: string): string;
|
|
185
267
|
/**
|
|
186
268
|
* Validates and sanitizes form data using Zod schemas
|
|
187
269
|
*/
|
|
@@ -190,31 +272,6 @@ declare function sanitizeFormData<T>(data: unknown, schema: z.ZodSchema<T>, sani
|
|
|
190
272
|
data?: T;
|
|
191
273
|
error?: string;
|
|
192
274
|
};
|
|
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
275
|
|
|
219
276
|
/**
|
|
220
277
|
* @file Validation utilities
|
|
@@ -231,34 +288,41 @@ declare function validateUserInput<T>(schema: z.ZodSchema<T>, data: unknown, san
|
|
|
231
288
|
error?: string;
|
|
232
289
|
};
|
|
233
290
|
/**
|
|
234
|
-
*
|
|
235
|
-
* @deprecated Use sanitizeUserInput from lib/sanitization instead
|
|
291
|
+
* Username validation with sanitization
|
|
236
292
|
*/
|
|
237
|
-
declare
|
|
293
|
+
declare const usernameSchema: z.ZodPipeline<z.ZodEffects<z.ZodString, string, string>, z.ZodString>;
|
|
294
|
+
|
|
238
295
|
/**
|
|
239
|
-
*
|
|
296
|
+
* @file Common validation schemas
|
|
297
|
+
* @description Reusable validation schemas for common data types
|
|
240
298
|
*/
|
|
241
|
-
|
|
299
|
+
|
|
242
300
|
/**
|
|
243
|
-
*
|
|
301
|
+
* Email validation schema
|
|
244
302
|
*/
|
|
245
|
-
declare const
|
|
303
|
+
declare const emailSchema: z.ZodString;
|
|
246
304
|
/**
|
|
247
|
-
*
|
|
305
|
+
* Name validation schema
|
|
248
306
|
*/
|
|
249
|
-
declare const
|
|
307
|
+
declare const nameSchema: z.ZodString;
|
|
250
308
|
/**
|
|
251
|
-
*
|
|
309
|
+
* Phone number validation schema
|
|
252
310
|
*/
|
|
253
|
-
declare const
|
|
311
|
+
declare const phoneSchema: z.ZodString;
|
|
312
|
+
/**
|
|
313
|
+
* URL validation schema
|
|
314
|
+
*/
|
|
315
|
+
declare const urlSchema: z.ZodString;
|
|
316
|
+
|
|
254
317
|
/**
|
|
255
|
-
*
|
|
318
|
+
* @file Enhanced Password Schema with Security Validations
|
|
319
|
+
* @description Comprehensive password validation with security checks
|
|
256
320
|
*/
|
|
257
|
-
|
|
321
|
+
|
|
258
322
|
/**
|
|
259
|
-
*
|
|
323
|
+
* Basic password schema for less strict requirements
|
|
260
324
|
*/
|
|
261
|
-
declare const
|
|
325
|
+
declare const passwordSchema: z.ZodString;
|
|
262
326
|
|
|
263
327
|
interface SecurityEvent$1 {
|
|
264
328
|
type: string;
|
|
@@ -269,6 +333,27 @@ interface SecurityEvent$1 {
|
|
|
269
333
|
declare function getSecurityHeaders(): Record<string, string>;
|
|
270
334
|
declare function validateSecurityHeaders(headers: Record<string, string>): boolean;
|
|
271
335
|
|
|
336
|
+
interface SecurityEvent {
|
|
337
|
+
id?: string;
|
|
338
|
+
action: string;
|
|
339
|
+
details: Record<string, any>;
|
|
340
|
+
timestamp?: number;
|
|
341
|
+
}
|
|
342
|
+
interface SecurityAlert {
|
|
343
|
+
id: string;
|
|
344
|
+
type: string;
|
|
345
|
+
message: string;
|
|
346
|
+
timestamp: Date;
|
|
347
|
+
}
|
|
348
|
+
declare class SecurityMonitor {
|
|
349
|
+
private events;
|
|
350
|
+
logEvent(event: SecurityEvent): void;
|
|
351
|
+
getEvents(): SecurityEvent[];
|
|
352
|
+
clearEvents(): void;
|
|
353
|
+
createAlert(alert: Omit<SecurityAlert, 'id' | 'timestamp'>): SecurityAlert;
|
|
354
|
+
}
|
|
355
|
+
declare const securityMonitor: SecurityMonitor;
|
|
356
|
+
|
|
272
357
|
/**
|
|
273
358
|
* Performance thresholds and constants
|
|
274
359
|
*/
|
|
@@ -318,6 +403,39 @@ declare const bundleAnalyzer: BundleAnalyzer;
|
|
|
318
403
|
declare function validateImportPattern(moduleId: string, importedItems: string[]): void;
|
|
319
404
|
declare function trackDynamicImport(moduleName: string): void;
|
|
320
405
|
|
|
406
|
+
interface PerformanceBudget {
|
|
407
|
+
metric: string;
|
|
408
|
+
budget: number;
|
|
409
|
+
actual: number;
|
|
410
|
+
threshold: 'error' | 'warning' | 'info';
|
|
411
|
+
}
|
|
412
|
+
interface PerformanceMetrics {
|
|
413
|
+
bundleSize: number;
|
|
414
|
+
chunkCount: number;
|
|
415
|
+
treeshakingEffectiveness: number;
|
|
416
|
+
dynamicImportUsage: number;
|
|
417
|
+
}
|
|
418
|
+
interface MeasurementResult {
|
|
419
|
+
passed: boolean;
|
|
420
|
+
value: number;
|
|
421
|
+
threshold: number;
|
|
422
|
+
}
|
|
423
|
+
declare const PERFORMANCE_BUDGETS: {
|
|
424
|
+
[key: string]: {
|
|
425
|
+
threshold: number;
|
|
426
|
+
};
|
|
427
|
+
};
|
|
428
|
+
declare class PerformanceBudgetMonitor {
|
|
429
|
+
private metrics;
|
|
430
|
+
private budgets;
|
|
431
|
+
measure(metric: string, value: number, metadata?: Record<string, unknown>): MeasurementResult;
|
|
432
|
+
setBudget(metric: string, budget: number, threshold?: 'error' | 'warning' | 'info'): void;
|
|
433
|
+
checkBudgets(): PerformanceBudget[];
|
|
434
|
+
getMetrics(): PerformanceMetrics;
|
|
435
|
+
reset(): void;
|
|
436
|
+
}
|
|
437
|
+
declare const performanceBudgetMonitor: PerformanceBudgetMonitor;
|
|
438
|
+
|
|
321
439
|
/**
|
|
322
440
|
* Dynamic utility loader to reduce initial bundle size
|
|
323
441
|
* Heavy utilities are loaded on-demand
|
|
@@ -366,39 +484,6 @@ declare const lazyChartUtils: ReturnType<typeof createLazyUtility<unknown>>;
|
|
|
366
484
|
declare const lazyFormUtils: ReturnType<typeof createLazyUtility<Awaited<ReturnType<typeof loadFormUtils>>>>;
|
|
367
485
|
declare const lazyCSVUtils: ReturnType<typeof createLazyUtility<unknown>>;
|
|
368
486
|
|
|
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
487
|
interface LazyLoadOptions {
|
|
403
488
|
fallback?: React__default.ReactNode;
|
|
404
489
|
errorBoundary?: ComponentType<{
|
|
@@ -441,43 +526,6 @@ declare function parsePermission(permission: string): {
|
|
|
441
526
|
action: string;
|
|
442
527
|
} | null;
|
|
443
528
|
|
|
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
529
|
/**
|
|
482
530
|
* @file Audit Logger - General Utility
|
|
483
531
|
*
|
|
@@ -597,4 +645,4 @@ declare function getOrganisationContext(supabase: SupabaseClient): Promise<strin
|
|
|
597
645
|
*/
|
|
598
646
|
declare function isOrganisationContextAvailable(supabase: SupabaseClient): Promise<boolean>;
|
|
599
647
|
|
|
600
|
-
export {
|
|
648
|
+
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, emailSchema, 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, nameSchema, parsePermission, passwordSchema, performanceBudgetMonitor, phoneSchema, sanitizeFormData, sanitizeUserInput, securityMonitor, setOrganisationContext, setRBACAppName, trackDynamicImport, transformPermissionMapToBoolean, urlSchema, usernameSchema, validateDeviceFingerprint, validateImportPattern, validateSecurityHeaders, validateUserInput };
|