@jmruthers/pace-core 0.6.9 → 0.6.11
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/CHANGELOG.md +21 -0
- package/audit-tool/00-dependencies.cjs +46 -13
- package/audit-tool/audits/01-pace-core-compliance.cjs +96 -21
- package/audit-tool/audits/02-project-structure.cjs +74 -2
- package/audit-tool/audits/03-architecture.cjs +220 -20
- package/audit-tool/audits/04-code-quality.cjs +95 -3
- package/audit-tool/audits/05-styling.cjs +19 -7
- package/audit-tool/audits/06-security-rbac.cjs +214 -25
- package/audit-tool/audits/07-api-tech-stack.cjs +31 -15
- package/audit-tool/audits/08-testing-documentation.cjs +11 -3
- package/audit-tool/audits/09-operations.cjs +19 -7
- package/audit-tool/index.cjs +22 -11
- package/audit-tool/utils/report-utils.cjs +4 -0
- package/cursor-rules/01-pace-core-compliance.mdc +1 -0
- package/cursor-rules/02-project-structure.mdc +3 -26
- package/cursor-rules/03-architecture.mdc +3 -1
- package/cursor-rules/04-code-quality.mdc +1 -0
- package/cursor-rules/05-styling.mdc +120 -8
- package/cursor-rules/06-security-rbac.mdc +126 -2
- package/cursor-rules/07-api-tech-stack.mdc +1 -0
- package/cursor-rules/08-testing-documentation.mdc +1 -0
- package/cursor-rules/09-operations.mdc +1 -0
- package/dist/DataTable-EFYP2QLE.js +16 -0
- package/dist/InactivityServiceProvider-BbxwwDz1.d.ts +308 -0
- package/dist/UnifiedAuthProvider-Bkt_tzdS.d.ts +183 -0
- package/dist/api-BZR2CYXL.js +5 -0
- package/dist/api-result-USV1Czr-.d.ts +51 -0
- package/dist/assets/app-icons/admin_favicon.svg +462 -0
- package/dist/assets/app-icons/base_favicon.svg +85 -0
- package/dist/assets/app-icons/cake_favicon.svg +68 -0
- package/dist/assets/app-icons/core_favicon.svg +256 -0
- package/dist/assets/app-icons/gear_favicon.svg +91 -0
- package/dist/assets/app-icons/medi_favicon.svg +92 -0
- package/dist/assets/app-icons/mint_favicon.svg +83 -0
- package/dist/assets/app-icons/pace_favicon.svg +49 -0
- package/dist/assets/app-icons/pump_favicon.svg +68 -0
- package/dist/assets/app-icons/seed_favicon.svg +91 -0
- package/dist/assets/app-icons/team_favicon.svg +67 -0
- package/dist/assets/app-icons/trac_favicon.svg +112 -0
- package/dist/assets/app-icons/trip_favicon.svg +102 -0
- package/dist/audit-HI2DHUVU.js +4 -0
- package/dist/auth-JvdRVaud.d.ts +49 -0
- package/dist/chunk-2DL2WSOE.js +327 -0
- package/dist/chunk-2OEVOGGR.js +9598 -0
- package/dist/chunk-44CNXN4P.js +15 -0
- package/dist/chunk-4R3T5ENU.js +2943 -0
- package/dist/chunk-7A6IMHH2.js +2321 -0
- package/dist/chunk-BTHN5MKC.js +121 -0
- package/dist/chunk-CU2BU2MQ.js +2 -0
- package/dist/chunk-D6BMFMQZ.js +200 -0
- package/dist/chunk-DDMPHZ3D.js +58 -0
- package/dist/chunk-ENLXB7GP.js +721 -0
- package/dist/chunk-J2KQK6DG.js +2159 -0
- package/dist/chunk-KJXRL3XE.js +6434 -0
- package/dist/chunk-L5LFKKLJ.js +61 -0
- package/dist/chunk-PCSHBLPB.js +811 -0
- package/dist/chunk-QRYSEPHB.js +429 -0
- package/dist/chunk-RMLY6KB5.js +187 -0
- package/dist/chunk-SACF5YSM.js +31 -0
- package/dist/chunk-UZNAFKGW.js +125 -0
- package/dist/chunk-V7FTM2LU.js +1080 -0
- package/dist/chunk-WY6Y7KC3.js +264 -0
- package/dist/chunk-XOJME5T7.js +407 -0
- package/dist/chunk-XPFVT3GN.js +492 -0
- package/dist/chunk-YFTFFJIV.js +529 -0
- package/dist/chunk-YYTWKVHO.js +1334 -0
- package/dist/components.d.ts +12 -89
- package/dist/components.js +23 -55
- package/dist/database.generated-qkdoiVrJ.d.ts +9441 -0
- package/dist/eslint-rules/index.cjs +3 -0
- package/dist/eslint-rules/rules/03-architecture.cjs +74 -0
- package/dist/eslint-rules/rules/05-styling.cjs +507 -0
- package/dist/eslint-rules/rules/06-security-rbac.cjs +84 -0
- package/dist/event-BfCox3N2.d.ts +265 -0
- package/dist/file-reference-DU1hcawx.d.ts +164 -0
- package/dist/functions-DH45k8ec.d.ts +208 -0
- package/dist/hooks.d.ts +28 -14
- package/dist/hooks.js +90 -56
- package/dist/icons/index.d.ts +1 -0
- package/dist/icons/index.js +1 -0
- package/dist/index.d.ts +392 -155
- package/dist/index.js +337 -347
- package/dist/pagination-BW1mqywp.d.ts +201 -0
- package/dist/papaparseLoader-WG2UXQ22.js +7 -0
- package/dist/providers.d.ts +29 -14
- package/dist/providers.js +7 -5
- package/dist/rbac/eslint-rules.js +2 -2
- package/dist/rbac/index.d.ts +180 -351
- package/dist/rbac/index.js +13 -11
- package/dist/theming/runtime.d.ts +28 -5
- package/dist/theming/runtime.js +2 -2
- package/dist/timezone-BTWWXKVY.d.ts +696 -0
- package/dist/types-BE2sEHKd.d.ts +55 -0
- package/dist/types-CvOPXWWZ.d.ts +111 -0
- package/dist/types-Dr8sNhER.d.ts +50 -0
- package/dist/types.d.ts +20 -13
- package/dist/types.js +1 -0
- package/dist/usePublicPageContext-B91dGYW1.d.ts +4367 -0
- package/dist/usePublicRouteParams-BgV6VhMi.d.ts +946 -0
- package/dist/utils.d.ts +338 -156
- package/dist/utils.js +78 -60
- package/dist/validation-g5n0hDkh.d.ts +177 -0
- package/docs/api/modules.md +1226 -1094
- package/docs/api-reference/components.md +5 -5
- package/docs/api-reference/rpc-functions.md +12 -3
- package/docs/core-concepts/rbac-system.md +8 -0
- package/docs/getting-started/cursor-rules.md +17 -20
- package/docs/getting-started/dependencies.md +1 -1
- package/docs/getting-started/setup.md +235 -0
- package/docs/implementation-guides/authentication.md +27 -0
- package/docs/implementation-guides/data-tables.md +365 -10
- package/docs/migration/ApiResult-migration.md +25 -0
- package/docs/rbac/RBAC_CONTRACT.md +0 -12
- package/docs/rbac/api-reference.md +33 -31
- package/docs/standards/0-standards-overview.md +50 -15
- package/docs/standards/1-pace-core-compliance-standards.md +62 -57
- package/docs/standards/2-project-structure-standards.md +45 -90
- package/docs/standards/3-architecture-standards.md +41 -1
- package/docs/standards/4-code-quality-standards.md +26 -6
- package/docs/standards/5-styling-standards.md +35 -1
- package/docs/standards/6-security-rbac-standards.md +288 -7
- package/docs/standards/7-api-tech-stack-standards.md +116 -17
- package/docs/standards/8-testing-documentation-standards.md +31 -0
- package/docs/standards/9-operations-standards.md +19 -0
- package/docs/standards/README.md +20 -201
- package/docs/testing/README.md +10 -0
- package/docs/testing/test-setup-for-consumers.md +916 -0
- package/docs/troubleshooting/common-issues.md +17 -1
- package/docs/troubleshooting/organisation-context-setup.md +8 -0
- package/docs/troubleshooting/print-event-name-css-variable-analysis.md +217 -0
- package/eslint-config-pace-core.cjs +24 -0
- package/package.json +14 -20
- package/scripts/build-docs.js +180 -0
- package/scripts/setup.cjs +536 -0
- package/scripts/validate.cjs +480 -0
- package/src/__mocks__/lucide-react.ts +0 -2
- package/src/__tests__/helpers/component-test-utils.test.tsx +260 -0
- package/src/__tests__/helpers/optimized-test-setup.test.ts +224 -0
- package/src/__tests__/helpers/supabaseMock.test.ts +273 -0
- package/src/__tests__/helpers/test-providers.test.tsx +99 -0
- package/src/__tests__/helpers/test-providers.tsx +37 -39
- package/src/__tests__/helpers/test-utils.test.tsx +447 -0
- package/src/__tests__/helpers/timer-utils.test.ts +371 -0
- package/src/assets/app-icons/admin_favicon.svg +462 -0
- package/src/assets/app-icons/base_favicon.svg +85 -0
- package/src/assets/app-icons/cake_favicon.svg +68 -0
- package/src/assets/app-icons/core_favicon.svg +256 -0
- package/src/assets/app-icons/gear_favicon.svg +91 -0
- package/src/assets/app-icons/index.test.ts +304 -0
- package/src/assets/app-icons/index.ts +83 -0
- package/src/assets/app-icons/medi_favicon.svg +92 -0
- package/src/assets/app-icons/mint_favicon.svg +83 -0
- package/src/assets/app-icons/pace_favicon.svg +49 -0
- package/src/assets/app-icons/pump_favicon.svg +68 -0
- package/src/assets/app-icons/seed_favicon.svg +91 -0
- package/src/assets/app-icons/team_favicon.svg +67 -0
- package/src/assets/app-icons/trac_favicon.svg +112 -0
- package/src/assets/app-icons/trip_favicon.svg +102 -0
- package/src/components/AddressField/AddressField.test.tsx +379 -4
- package/src/components/AddressField/AddressField.tsx +239 -213
- package/src/components/AddressField/types.ts +2 -2
- package/src/components/Alert/Alert.test.tsx +35 -25
- package/src/components/Alert/Alert.tsx +8 -8
- package/src/components/AppSwitcher/AppSwitcher.test.tsx +1250 -0
- package/src/components/AppSwitcher/AppSwitcher.tsx +315 -0
- package/src/components/Avatar/Avatar.test.tsx +11 -1
- package/src/components/Avatar/Avatar.tsx +3 -2
- package/src/components/Badge/Badge.test.tsx +11 -1
- package/src/components/Button/Button.test.tsx +13 -3
- package/src/components/Button/Button.tsx +1 -1
- package/src/components/Calendar/Calendar.test.tsx +523 -131
- package/src/components/Calendar/Calendar.tsx +107 -488
- package/src/components/Card/Card.test.tsx +384 -258
- package/src/components/Card/Card.tsx +19 -10
- package/src/components/Checkbox/Checkbox.test.tsx +58 -174
- package/src/components/ContextSelector/ContextSelector.internals.tsx +204 -0
- package/src/components/ContextSelector/ContextSelector.test.tsx +360 -0
- package/src/components/ContextSelector/ContextSelector.tsx +66 -280
- package/src/components/ContextSelector/ContextSelector.types.ts +35 -0
- package/src/components/ContextSelector/useContextSelectorState.tsx +195 -0
- package/src/components/DataTable/AUDIT_REPORT.md +59 -44
- package/src/components/DataTable/DataTable.comprehensive.test.tsx +759 -0
- package/src/components/DataTable/DataTable.default-state.test.tsx +524 -0
- package/src/components/DataTable/DataTable.export.test.tsx +705 -0
- package/src/components/DataTable/DataTable.grouping-aggregation.test.tsx +658 -0
- package/src/components/DataTable/DataTable.hooks.test.tsx +192 -0
- package/src/components/DataTable/DataTable.select-label-display.test.tsx +485 -0
- package/src/components/DataTable/DataTable.test.tsx +787 -416
- package/src/components/DataTable/DataTable.tsx +14 -14
- package/src/components/DataTable/DataTableCore.integration.test.tsx +458 -0
- package/src/components/DataTable/DataTableCore.test-setup.ts +221 -0
- package/src/components/DataTable/DataTableCore.test.tsx +970 -0
- package/src/components/DataTable/README.md +155 -0
- package/src/components/DataTable/TESTING.md +101 -0
- package/src/components/DataTable/a11y.basic.test.tsx +788 -0
- package/src/components/DataTable/components/DataTableCore.tsx +126 -894
- package/src/components/DataTable/components/GroupingDropdown.test.tsx +621 -0
- package/src/components/DataTable/components/GroupingDropdown.tsx +2 -3
- package/src/components/DataTable/components/ImportModal.tsx +82 -408
- package/src/components/DataTable/components/ImportModalFileSection.tsx +148 -0
- package/src/components/DataTable/context/DataTableContext.test.tsx +328 -0
- package/src/components/DataTable/context/DataTableContext.tsx +13 -13
- package/src/components/DataTable/core/ColumnFactory.test.ts +403 -0
- package/src/components/DataTable/core/ColumnFactory.ts +3 -3
- package/src/components/DataTable/hooks/useColumnOrderPersistence.test.ts +516 -0
- package/src/components/DataTable/hooks/useColumnOrderPersistence.ts +12 -9
- package/src/components/DataTable/hooks/useColumnVisibilityPersistence.test.ts +256 -0
- package/src/components/DataTable/hooks/useColumnVisibilityPersistence.ts +12 -9
- package/src/components/DataTable/hooks/useDataTableConfiguration.test.ts +297 -0
- package/src/components/DataTable/hooks/useDataTableConfiguration.ts +15 -3
- package/src/components/DataTable/hooks/useDataTableDataPipeline.test.ts +270 -0
- package/src/components/DataTable/hooks/useDataTableDeletionBatching.test.ts +127 -0
- package/src/components/DataTable/hooks/useDataTableDeletionBatching.ts +106 -0
- package/src/components/DataTable/hooks/useDataTableEffectiveActions.test.ts +461 -0
- package/src/components/DataTable/hooks/useDataTableEffectiveActions.ts +238 -0
- package/src/components/DataTable/hooks/useDataTableLayoutHandlers.test.ts +296 -0
- package/src/components/DataTable/hooks/useDataTableLayoutHandlers.ts +175 -0
- package/src/components/DataTable/hooks/useDataTablePaginationSync.test.ts +203 -0
- package/src/components/DataTable/hooks/useDataTablePaginationSync.ts +109 -0
- package/src/components/DataTable/hooks/useDataTablePermissions.test.ts +280 -0
- package/src/components/DataTable/hooks/useDataTablePermissions.ts +81 -260
- package/src/components/DataTable/hooks/useDataTablePipeline.test.tsx +219 -0
- package/src/components/DataTable/hooks/useDataTablePipeline.tsx +239 -0
- package/src/components/DataTable/hooks/useDataTableRenderGuard.test.tsx +316 -0
- package/src/components/DataTable/hooks/useDataTableRenderGuard.tsx +195 -0
- package/src/components/DataTable/hooks/useDataTableScope.test.ts +110 -0
- package/src/components/DataTable/hooks/useDataTableScope.ts +123 -0
- package/src/components/DataTable/hooks/useDataTableState.test.ts +733 -0
- package/src/components/DataTable/hooks/useDataTableState.ts +161 -114
- package/src/components/DataTable/hooks/useDataTableStateAndPersistence.test.ts +277 -0
- package/src/components/DataTable/hooks/useDataTableStateAndPersistence.ts +222 -0
- package/src/components/DataTable/hooks/useDataTableSuperAdmin.test.ts +93 -0
- package/src/components/DataTable/hooks/useDataTableSuperAdmin.ts +86 -0
- package/src/components/DataTable/hooks/useDataTableTableInstance.test.ts +185 -0
- package/src/components/DataTable/hooks/useDataTableTableInstance.ts +178 -0
- package/src/components/DataTable/hooks/useEffectiveColumnOrder.test.ts +183 -0
- package/src/components/DataTable/hooks/useHierarchicalState.test.ts +294 -0
- package/src/components/DataTable/hooks/useImportModalFocus.test.ts +184 -0
- package/src/components/DataTable/hooks/useImportModalFocus.ts +53 -0
- package/src/components/DataTable/hooks/useImportModalState.test.ts +390 -0
- package/src/components/DataTable/hooks/useImportModalState.ts +345 -0
- package/src/components/DataTable/hooks/useKeyboardNavigation.test.ts +787 -0
- package/src/components/DataTable/hooks/useKeyboardNavigation.ts +311 -271
- package/src/components/DataTable/hooks/usePermissionTracking.test.ts +381 -0
- package/src/components/DataTable/hooks/usePermissionTracking.ts +122 -0
- package/src/components/DataTable/hooks/useServerSideDataEffect.test.ts +258 -0
- package/src/components/DataTable/hooks/useServerSideDataEffect.ts +27 -4
- package/src/components/DataTable/hooks/useTableColumns.test.ts +499 -0
- package/src/components/DataTable/hooks/useTableColumns.ts +15 -39
- package/src/components/DataTable/hooks/useTableHandlers.test.ts +461 -0
- package/src/components/DataTable/hooks/useTableHandlers.ts +13 -22
- package/src/components/DataTable/index.ts +28 -5
- package/src/components/DataTable/keyboard.test.tsx +734 -0
- package/src/components/DataTable/mocks/MockRBACProvider.tsx +66 -0
- package/src/components/DataTable/pagination.modes.test.tsx +728 -0
- package/src/components/DataTable/ssr.strict-mode.test.tsx +319 -0
- package/src/components/DataTable/styles.test.ts +379 -0
- package/src/components/DataTable/styles.ts +0 -1
- package/src/components/DataTable/test-utils/MockDataTableComponents.tsx +55 -0
- package/src/components/DataTable/test-utils/dataFactories.ts +103 -0
- package/src/components/DataTable/test-utils/featureConfig.ts +10 -0
- package/src/components/DataTable/test-utils/sharedTestUtils.ts +419 -0
- package/src/components/DataTable/test-utils.ts +94 -0
- package/src/components/DataTable/types/actions.ts +71 -0
- package/src/components/DataTable/types/base.ts +39 -0
- package/src/components/DataTable/types/columns.ts +125 -0
- package/src/components/DataTable/types/export.ts +32 -0
- package/src/components/DataTable/types/features.ts +81 -0
- package/src/components/DataTable/types/hierarchical.ts +44 -0
- package/src/components/DataTable/types/index.ts +43 -0
- package/src/components/DataTable/types/pagination.ts +85 -0
- package/src/components/DataTable/types/performance.ts +47 -0
- package/src/components/DataTable/types/props.ts +62 -0
- package/src/components/DataTable/types/rbac.ts +45 -0
- package/src/components/DataTable/ui/layout/DataTableCore.test.tsx +1194 -0
- package/src/components/DataTable/ui/layout/DataTableCore.tsx +345 -0
- package/src/components/DataTable/ui/layout/DataTableErrorBoundary.test.tsx +438 -0
- package/src/components/DataTable/ui/layout/DataTableErrorBoundary.tsx +225 -0
- package/src/components/DataTable/ui/layout/DataTableLayout.test.tsx +1352 -0
- package/src/components/DataTable/ui/layout/DataTableLayout.tsx +661 -0
- package/src/components/DataTable/ui/modals/BulkDeleteConfirmDialog.test.tsx +91 -0
- package/src/components/DataTable/ui/modals/BulkDeleteConfirmDialog.tsx +43 -0
- package/src/components/DataTable/ui/modals/DataTableModals.test.tsx +749 -0
- package/src/components/DataTable/ui/modals/DataTableModals.tsx +341 -0
- package/src/components/DataTable/ui/modals/ImportModal.test.tsx +1834 -0
- package/src/components/DataTable/ui/modals/ImportModal.tsx +197 -0
- package/src/components/DataTable/ui/modals/ImportModalFailedRowsSection.tsx +60 -0
- package/src/components/DataTable/ui/modals/ImportModalFileSection.tsx +148 -0
- package/src/components/DataTable/ui/modals/ImportModalPreviewSection.tsx +60 -0
- package/src/components/DataTable/ui/modals/ImportModalSummarySection.tsx +59 -0
- package/src/components/DataTable/ui/modals/importModalPersistence.ts +73 -0
- package/src/components/DataTable/ui/shared/AccessDeniedPage.test.tsx +245 -0
- package/src/components/DataTable/ui/shared/AccessDeniedPage.tsx +159 -0
- package/src/components/DataTable/ui/shared/ActionButtons.test.tsx +921 -0
- package/src/components/DataTable/ui/shared/ActionButtons.tsx +195 -0
- package/src/components/DataTable/ui/shared/ColumnFilter.test.tsx +497 -0
- package/src/components/DataTable/ui/shared/ColumnFilter.tsx +113 -0
- package/src/components/DataTable/ui/shared/PaginationControls.test.tsx +451 -0
- package/src/components/DataTable/ui/shared/PaginationControls.tsx +291 -0
- package/src/components/DataTable/ui/shared/SortIndicator.test.tsx +135 -0
- package/src/components/DataTable/ui/shared/SortIndicator.tsx +50 -0
- package/src/components/DataTable/ui/table/EditFields.test.tsx +526 -0
- package/src/components/DataTable/ui/table/EditFields.tsx +355 -0
- package/src/components/DataTable/ui/table/EditableRow.test.tsx +1003 -0
- package/src/components/DataTable/ui/table/EditableRow.tsx +444 -0
- package/src/components/DataTable/ui/table/EmptyState.test.tsx +360 -0
- package/src/components/DataTable/ui/table/EmptyState.tsx +74 -0
- package/src/components/DataTable/ui/table/FilterRow.test.tsx +416 -0
- package/src/components/DataTable/ui/table/FilterRow.tsx +148 -0
- package/src/components/DataTable/ui/table/LoadingState.test.tsx +77 -0
- package/src/components/DataTable/ui/table/LoadingState.tsx +17 -0
- package/src/components/DataTable/ui/table/RowComponent.test.tsx +1024 -0
- package/src/components/DataTable/ui/table/RowComponent.tsx +429 -0
- package/src/components/DataTable/ui/table/UnifiedTableBody.test.tsx +1273 -0
- package/src/components/DataTable/ui/table/UnifiedTableBody.tsx +440 -0
- package/src/components/DataTable/ui/table/cellValueUtils.test.ts +453 -0
- package/src/components/DataTable/ui/table/cellValueUtils.ts +40 -0
- package/src/components/DataTable/ui/toolbar/BulkOperationsDropdown.test.tsx +551 -0
- package/src/components/DataTable/ui/toolbar/BulkOperationsDropdown.tsx +160 -0
- package/src/components/DataTable/ui/toolbar/ColumnVisibilityDropdown.test.tsx +751 -0
- package/src/components/DataTable/ui/toolbar/ColumnVisibilityDropdown.tsx +114 -0
- package/src/components/DataTable/ui/toolbar/DataTableToolbar.test.tsx +629 -0
- package/src/components/DataTable/ui/toolbar/DataTableToolbar.tsx +271 -0
- package/src/components/DataTable/ui/toolbar/GroupingDropdown.test.tsx +621 -0
- package/src/components/DataTable/ui/toolbar/GroupingDropdown.tsx +107 -0
- package/src/components/DataTable/utils/a11yUtils.test.ts +548 -0
- package/src/components/DataTable/utils/a11yUtils.ts +1 -1
- package/src/components/DataTable/utils/aggregationUtils.test.ts +288 -0
- package/src/components/DataTable/utils/aggregationUtils.ts +5 -5
- package/src/components/DataTable/utils/columnUtils.test.ts +94 -0
- package/src/components/DataTable/utils/csvParse.test.ts +74 -0
- package/src/components/DataTable/utils/csvParse.ts +65 -0
- package/src/components/DataTable/utils/errorHandling.test.ts +209 -0
- package/src/components/DataTable/utils/errorHandling.ts +3 -1
- package/src/components/DataTable/utils/exportUtils.test.ts +954 -0
- package/src/components/DataTable/utils/exportUtils.ts +1 -1
- package/src/components/DataTable/utils/flexibleImport.test.ts +573 -0
- package/src/components/DataTable/utils/flexibleImport.ts +3 -186
- package/src/components/DataTable/utils/hierarchicalSorting.test.ts +235 -0
- package/src/components/DataTable/utils/hierarchicalSorting.ts +3 -3
- package/src/components/DataTable/utils/hierarchicalUtils.test.ts +586 -0
- package/src/components/DataTable/utils/importDateParser.test.ts +162 -0
- package/src/components/DataTable/utils/importDateParser.ts +114 -0
- package/src/components/DataTable/utils/importValueParser.test.ts +138 -0
- package/src/components/DataTable/utils/importValueParser.ts +91 -0
- package/src/components/DataTable/utils/paginationUtils.test.ts +593 -0
- package/src/components/DataTable/utils/paginationUtils.ts +7 -4
- package/src/components/DataTable/utils/performanceUtils.test.ts +470 -0
- package/src/components/DataTable/utils/performanceUtils.ts +1 -1
- package/src/components/DataTable/utils/rowUtils.test.ts +235 -0
- package/src/components/DataTable/utils/selectFieldUtils.test.ts +271 -0
- package/src/components/DataTable/utils/selectFieldUtils.ts +97 -67
- package/src/components/DatePickerWithTimezone/DatePickerWithTimezone.test.tsx +18 -25
- package/src/components/DatePickerWithTimezone/DatePickerWithTimezone.tsx +1 -1
- package/src/components/DateTimeField/DateTimeField.test.tsx +3 -16
- package/src/components/DateTimeField/DateTimeField.tsx +1 -1
- package/src/components/Dialog/Dialog.test-utils.ts +49 -0
- package/src/components/Dialog/Dialog.test.tsx +2865 -458
- package/src/components/Dialog/Dialog.tsx +183 -986
- package/src/components/Dialog/dialogLock.test.ts +238 -0
- package/src/components/Dialog/dialogLock.ts +98 -0
- package/src/components/Dialog/index.ts +2 -0
- package/src/components/Dialog/useDialogDimensions.test.ts +163 -0
- package/src/components/Dialog/useDialogDimensions.ts +140 -0
- package/src/components/Dialog/useDialogLifecycle.test.ts +358 -0
- package/src/components/Dialog/useDialogLifecycle.ts +135 -0
- package/src/components/Dialog/useDialogPersistence.test.ts +381 -0
- package/src/components/Dialog/useDialogPersistence.ts +357 -0
- package/src/components/ErrorBoundary/ErrorBoundary.test.tsx +2 -62
- package/src/components/ErrorBoundary/ErrorBoundaryContext.context.ts +17 -0
- package/src/components/ErrorBoundary/ErrorBoundaryContext.tsx +2 -45
- package/src/components/ErrorBoundary/ErrorBoundaryContext.types.ts +41 -0
- package/src/components/ErrorBoundary/index.ts +3 -4
- package/src/components/ErrorBoundary/useErrorBoundaryContext.ts +20 -0
- package/src/components/FileDisplay/FileDisplay.test.tsx +479 -247
- package/src/components/FileDisplay/FileDisplay.tsx +29 -659
- package/src/components/FileDisplay/FileDisplayContent.test.tsx +395 -0
- package/src/components/FileDisplay/FileDisplayContent.tsx +242 -0
- package/src/components/FileDisplay/FileDisplayDeleteConfirmDialog.test.tsx +74 -0
- package/src/components/FileDisplay/FileDisplayDeleteConfirmDialog.tsx +38 -0
- package/src/components/FileDisplay/FileDisplayEmptyView.test.tsx +33 -0
- package/src/components/FileDisplay/FileDisplayEmptyView.tsx +33 -0
- package/src/components/FileDisplay/FileDisplayErrorView.test.tsx +71 -0
- package/src/components/FileDisplay/FileDisplayErrorView.tsx +50 -0
- package/src/components/FileDisplay/FileDisplayLoadingFallbackView.test.tsx +22 -0
- package/src/components/FileDisplay/FileDisplayLoadingFallbackView.tsx +22 -0
- package/src/components/FileDisplay/FileDisplayLoadingView.test.tsx +21 -0
- package/src/components/FileDisplay/FileDisplayLoadingView.tsx +23 -0
- package/src/components/FileDisplay/FileDisplayMultipleFilesView.test.tsx +101 -0
- package/src/components/FileDisplay/FileDisplayMultipleFilesView.tsx +109 -0
- package/src/components/FileDisplay/FileDisplaySingleDocumentLinkView.test.tsx +58 -0
- package/src/components/FileDisplay/FileDisplaySingleDocumentLinkView.tsx +48 -0
- package/src/components/FileDisplay/FileDisplaySingleFileWithActionsView.test.tsx +111 -0
- package/src/components/FileDisplay/FileDisplaySingleFileWithActionsView.tsx +270 -0
- package/src/components/FileDisplay/FileDisplaySingleImageView.test.tsx +78 -0
- package/src/components/FileDisplay/FileDisplaySingleImageView.tsx +67 -0
- package/src/components/FileDisplay/fallbackUtils.test.ts +50 -0
- package/src/components/FileDisplay/fallbackUtils.ts +44 -0
- package/src/components/FileDisplay/fetchFileDisplayData.ts +24 -0
- package/src/components/FileDisplay/fetchFileDisplayData.unit.test.ts +183 -0
- package/src/components/FileDisplay/fileDisplayUtils.test.ts +58 -0
- package/src/components/FileDisplay/fileDisplayUtils.ts +24 -0
- package/src/components/FileDisplay/index.tsx +1 -1
- package/src/components/FileDisplay/useFileDisplay.test.ts +538 -0
- package/src/components/FileDisplay/useFileDisplay.ts +515 -0
- package/src/components/FileDisplay/useFileDisplay.unit.test.ts +1438 -0
- package/src/components/FileDisplay/useFileDisplayData.ts +126 -0
- package/src/components/FileDisplay/usePublicFileDisplay.test.ts +729 -0
- package/src/components/FileDisplay/usePublicFileDisplay.ts +579 -0
- package/src/components/FileUpload/FileUpload.test.tsx +69 -27
- package/src/components/FileUpload/FileUpload.tsx +112 -527
- package/src/components/FileUpload/FileUploadDropZone.tsx +112 -0
- package/src/components/FileUpload/FileUploadProgressItem.tsx +86 -0
- package/src/components/FileUpload/FileUploadProgressList.tsx +40 -0
- package/src/components/FileUpload/index.tsx +1 -1
- package/src/components/FileUpload/useFileUploadManager.test.ts +308 -0
- package/src/components/FileUpload/useFileUploadManager.ts +454 -0
- package/src/components/FileUpload/useResolvedAppId.test.ts +102 -0
- package/src/components/FileUpload/useResolvedAppId.ts +77 -0
- package/src/components/Footer/Footer.test.tsx +15 -382
- package/src/components/Footer/Footer.tsx +8 -125
- package/src/components/Form/Form.test.tsx +425 -88
- package/src/components/Form/Form.tsx +91 -299
- package/src/components/Form/useFormPersistence.ts +257 -0
- package/src/components/Header/Header.test.tsx +653 -163
- package/src/components/Header/Header.tsx +62 -44
- package/src/components/InactivityWarningModal/InactivityWarningModal.test.tsx +35 -76
- package/src/components/Input/Input.test.tsx +34 -120
- package/src/components/Input/Input.tsx +1 -1
- package/src/components/Label/Label.test.tsx +46 -45
- package/src/components/LoadingSpinner/LoadingSpinner.test.tsx +8 -11
- package/src/components/LoginForm/LoginForm.test.tsx +0 -1
- package/src/components/NavigationMenu/HierarchicalNavItem.tsx +104 -0
- package/src/components/NavigationMenu/NavigationMenu.test.tsx +2422 -102
- package/src/components/NavigationMenu/NavigationMenu.tsx +62 -362
- package/src/components/NavigationMenu/index.ts +6 -1
- package/src/components/NavigationMenu/navigationPermissionHelper.ts +188 -0
- package/src/components/NavigationMenu/useNavigationFiltering.test.ts +1949 -0
- package/src/components/NavigationMenu/useNavigationFiltering.ts +199 -308
- package/src/components/NavigationMenu/useNavigationScope.ts +125 -0
- package/src/components/PaceAppLayout/PaceAppLayout.edge-cases.test.tsx +1322 -0
- package/src/components/PaceAppLayout/PaceAppLayout.integration.test.tsx +50 -49
- package/src/components/PaceAppLayout/PaceAppLayout.performance.test.tsx +81 -38
- package/src/components/PaceAppLayout/PaceAppLayout.security.test.tsx +103 -85
- package/src/components/PaceAppLayout/PaceAppLayout.test.tsx +774 -44
- package/src/components/PaceAppLayout/PaceAppLayout.tsx +282 -764
- package/src/components/PaceAppLayout/README.md +0 -9
- package/src/components/PaceAppLayout/test-setup.tsx +15 -9
- package/src/components/PaceAppLayout/useFilteredNavItems.ts +304 -0
- package/src/components/PaceAppLayout/usePaceAppLayoutConfig.ts +142 -0
- package/src/components/PaceAppLayout/usePaceAppLayoutGate.tsx +150 -0
- package/src/components/PaceAppLayout/usePaceAppLayoutPermissions.ts +162 -0
- package/src/components/PaceAppLayout/usePaceAppLayoutScope.ts +79 -0
- package/src/components/PaceAppLayout/useRoleBasedRouteAccess.ts +157 -0
- package/src/components/PaceAppLayout/useSuperAdminFallback.ts +58 -0
- package/src/components/PaceLoginPage/PaceLoginPage.test.tsx +782 -20
- package/src/components/PaceLoginPage/PaceLoginPage.tsx +33 -125
- package/src/components/PaceLoginPage/useLoginAppAccess.ts +153 -0
- package/src/components/PasswordChange/PasswordChangeForm.test.tsx +1 -1
- package/src/components/Progress/Progress.test.tsx +127 -1
- package/src/components/Progress/Progress.tsx +1 -2
- package/src/components/ProtectedRoute/ProtectedRoute.test.tsx +1196 -4
- package/src/components/ProtectedRoute/ProtectedRoute.tsx +29 -217
- package/src/components/ProtectedRoute/useProtectedRouteState.ts +128 -0
- package/src/components/ProtectedRoute/useVisibilityRedirectGrace.ts +89 -0
- package/src/components/PublicLayout/PublicLayout.test.tsx +1640 -38
- package/src/components/PublicLayout/PublicPageContext.ts +28 -0
- package/src/components/PublicLayout/PublicPageLayout.tsx +134 -75
- package/src/components/PublicLayout/PublicPageProvider.tsx +7 -42
- package/src/components/PublicLayout/usePublicPageContext.ts +36 -0
- package/src/components/Select/Select.test.tsx +45 -8
- package/src/components/Select/Select.tsx +57 -40
- package/src/components/Select/context.test.tsx +56 -0
- package/src/components/Select/text.test.tsx +104 -0
- package/src/components/Select/text.ts +26 -0
- package/src/components/Select/types.ts +3 -0
- package/src/components/Select/useSelectEvents.test.ts +279 -0
- package/src/components/Select/useSelectEvents.ts +87 -0
- package/src/components/Select/useSelectSearch.test.tsx +295 -0
- package/src/components/Select/useSelectSearch.ts +91 -0
- package/src/components/Select/useSelectState.test.ts +268 -0
- package/src/components/Select/useSelectState.ts +104 -0
- package/src/components/SessionRestorationLoader/SessionRestorationLoader.test.tsx +28 -112
- package/src/components/Switch/Switch.test.tsx +57 -153
- package/src/components/Table/Table.test.tsx +395 -317
- package/src/components/Tabs/Tabs.test.tsx +270 -0
- package/src/components/Tabs/Tabs.tsx +4 -4
- package/src/components/Textarea/Textarea.test.tsx +11 -38
- package/src/components/Toast/Toast.test.tsx +425 -496
- package/src/components/Tooltip/Tooltip.test.tsx +4 -21
- package/src/components/UserMenu/UserMenu.test.tsx +1 -21
- package/src/components/UserMenu/UserMenu.tsx +0 -1
- package/src/components/index.test.ts +346 -0
- package/src/components/index.ts +12 -1
- package/src/constants/performance.test.ts +91 -0
- package/src/hooks/ServiceHooks.test.tsx +725 -0
- package/src/hooks/hooks.integration.test.tsx +608 -0
- package/src/hooks/index.ts +18 -3
- package/src/hooks/index.unit.test.ts +220 -0
- package/src/hooks/public/usePublicEvent.test.ts +304 -0
- package/src/hooks/public/usePublicEvent.ts +11 -11
- package/src/hooks/public/usePublicEventLogo.test.ts +655 -120
- package/src/hooks/public/usePublicEventLogo.ts +2 -2
- package/src/hooks/public/usePublicRouteParams.test.ts +595 -0
- package/src/hooks/public/usePublicRouteParams.ts +2 -2
- package/src/hooks/services/useAuth.ts +9 -7
- package/src/hooks/services/useAuthService.ts +1 -1
- package/src/hooks/services/useEventService.ts +1 -1
- package/src/hooks/useAccessibleApps.test.ts +400 -0
- package/src/hooks/useAccessibleApps.ts +264 -0
- package/src/hooks/useAddressAutocomplete.test.ts +170 -47
- package/src/hooks/useAddressAutocomplete.ts +109 -81
- package/src/hooks/useApiFetch.unit.test.ts +111 -0
- package/src/hooks/useAppConfig.ts +13 -3
- package/src/hooks/useAppConfig.unit.test.ts +712 -0
- package/src/hooks/useComponentPerformance.unit.test.tsx +314 -0
- package/src/hooks/useDataTablePerformance.ts +111 -130
- package/src/hooks/useDataTablePerformance.unit.test.ts +720 -0
- package/src/hooks/useDataTableState.test.ts +170 -0
- package/src/hooks/useDataTableState.ts +5 -5
- package/src/hooks/useDebounce.unit.test.ts +157 -0
- package/src/hooks/useEventTheme.test.ts +70 -18
- package/src/hooks/useEventTheme.ts +50 -22
- package/src/hooks/useEvents.ts +49 -2
- package/src/hooks/useEvents.unit.test.ts +227 -0
- package/src/hooks/useFileReference.test.ts +388 -107
- package/src/hooks/useFileReference.ts +184 -179
- package/src/hooks/useFileUrl.ts +1 -1
- package/src/hooks/useFileUrl.unit.test.ts +686 -0
- package/src/hooks/useFileUrlCache.test.ts +319 -0
- package/src/hooks/useFileUrlCache.ts +5 -2
- package/src/hooks/useFocusManagement.unit.test.ts +604 -0
- package/src/hooks/useFocusTrap.unit.test.tsx +613 -0
- package/src/hooks/useFormDialog.test.ts +307 -0
- package/src/hooks/useFormDialog.ts +2 -2
- package/src/hooks/useInactivityTracker.ts +141 -134
- package/src/hooks/useInactivityTracker.unit.test.ts +446 -0
- package/src/hooks/useIsMobile.unit.test.ts +317 -0
- package/src/hooks/useIsPrint.ts +62 -0
- package/src/hooks/useIsPrint.unit.test.ts +545 -0
- package/src/hooks/useKeyboardShortcuts.unit.test.ts +907 -0
- package/src/hooks/useOrganisationPermissions.test.ts +1 -2
- package/src/hooks/useOrganisationPermissions.ts +1 -4
- package/src/hooks/useOrganisationPermissions.unit.test.tsx +293 -0
- package/src/hooks/useOrganisationSecurity.test.ts +4 -33
- package/src/hooks/useOrganisationSecurity.ts +192 -203
- package/src/hooks/useOrganisationSecurity.unit.test.tsx +959 -0
- package/src/hooks/useOrganisations.ts +1 -1
- package/src/hooks/useOrganisations.unit.test.ts +369 -0
- package/src/hooks/usePerformanceMonitor.ts +1 -1
- package/src/hooks/usePerformanceMonitor.unit.test.ts +693 -0
- package/src/hooks/usePermissionCache.test.ts +298 -329
- package/src/hooks/usePermissionCache.ts +277 -276
- package/src/hooks/usePreventTabReload.test.ts +307 -0
- package/src/hooks/usePublicEvent.simple.test.ts +794 -0
- package/src/hooks/usePublicEvent.test.ts +670 -0
- package/src/hooks/usePublicEvent.unit.test.ts +638 -0
- package/src/hooks/usePublicFileDisplay.test.ts +948 -0
- package/src/hooks/usePublicRouteParams.unit.test.ts +442 -0
- package/src/hooks/useQueryCache.test.ts +391 -0
- package/src/hooks/useQueryCache.ts +7 -9
- package/src/hooks/useRBAC.unit.test.ts +253 -0
- package/src/hooks/useSessionDraft.test.ts +556 -0
- package/src/hooks/useSessionDraft.ts +14 -11
- package/src/hooks/useSessionRestoration.ts +1 -1
- package/src/hooks/useSessionRestoration.unit.test.tsx +381 -0
- package/src/hooks/useStorage.ts +94 -54
- package/src/hooks/useStorage.unit.test.ts +684 -0
- package/src/hooks/useToast.test.ts +413 -0
- package/src/hooks/useToast.ts +2 -2
- package/src/hooks/useToast.unit.test.tsx +481 -0
- package/src/hooks/useZodForm.ts +3 -3
- package/src/hooks/useZodForm.unit.test.tsx +191 -0
- package/src/icons/index.test.ts +133 -0
- package/src/icons/index.ts +3 -1
- package/src/index.test.ts +528 -0
- package/src/index.ts +56 -9
- package/src/providers/AuthProvider.test.tsx +218 -0
- package/src/providers/EventProvider.test.tsx +487 -0
- package/src/providers/InactivityProvider.test-helper.tsx +40 -0
- package/src/providers/InactivityProvider.test.tsx +421 -0
- package/src/providers/ProviderLifecycle.test.tsx +308 -0
- package/src/providers/UnifiedAuthProvider.smoke.test.tsx +7 -12
- package/src/providers/UnifiedAuthProvider.test.tsx +503 -0
- package/src/providers/index.test.ts +138 -0
- package/src/providers/services/AuthServiceContext.ts +27 -0
- package/src/providers/services/AuthServiceProvider.integration.test.tsx +229 -0
- package/src/providers/services/AuthServiceProvider.test.tsx +638 -0
- package/src/providers/services/AuthServiceProvider.tsx +81 -20
- package/src/providers/services/EventServiceContext.ts +25 -0
- package/src/providers/services/EventServiceProvider.test.tsx +839 -0
- package/src/providers/services/EventServiceProvider.tsx +11 -20
- package/src/providers/services/InactivityServiceContext.ts +25 -0
- package/src/providers/services/InactivityServiceProvider.test.tsx +662 -0
- package/src/providers/services/InactivityServiceProvider.tsx +7 -17
- package/src/providers/services/OrganisationServiceContext.ts +25 -0
- package/src/providers/services/OrganisationServiceProvider.test.tsx +440 -0
- package/src/providers/services/OrganisationServiceProvider.tsx +7 -17
- package/src/providers/services/UnifiedAuthContext.ts +102 -0
- package/src/providers/services/UnifiedAuthProvider.advanced.test.tsx +434 -0
- package/src/providers/services/UnifiedAuthProvider.appId.test.tsx +408 -0
- package/src/providers/services/UnifiedAuthProvider.integration.test.tsx +304 -0
- package/src/providers/services/UnifiedAuthProvider.test.tsx +212 -0
- package/src/providers/services/UnifiedAuthProvider.tsx +147 -497
- package/src/providers/services/contexts.test.tsx +281 -0
- package/src/providers/services/useUnifiedAuth.test.tsx +251 -0
- package/src/providers/services/useUnifiedAuth.ts +29 -0
- package/src/providers/services/useUnifiedAuthContextValue.ts +279 -0
- package/src/providers/useInactivity.test-helper.ts +27 -0
- package/src/rbac/README.md +5 -5
- package/src/rbac/adapters.comprehensive.test.tsx +429 -0
- package/src/rbac/adapters.test.tsx +654 -0
- package/src/rbac/adapters.tsx +53 -38
- package/src/rbac/api.test.ts +986 -259
- package/src/rbac/api.ts +260 -216
- package/src/rbac/audit-batched.test.ts +550 -0
- package/src/rbac/audit-batched.ts +5 -4
- package/src/rbac/audit.test.ts +225 -28
- package/src/rbac/audit.ts +26 -18
- package/src/rbac/auth-rbac-security.integration.test.tsx +300 -0
- package/src/rbac/auth-rbac.e2e.test.tsx +510 -0
- package/src/rbac/cache-invalidation.test.ts +715 -0
- package/src/rbac/cache-invalidation.ts +18 -15
- package/src/rbac/cache.test.ts +123 -63
- package/src/rbac/cache.ts +3 -4
- package/src/rbac/components/AccessDenied.test.tsx +324 -0
- package/src/rbac/components/AccessDenied.tsx +20 -18
- package/src/rbac/components/NavigationGuard.test.tsx +1148 -0
- package/src/rbac/components/NavigationGuard.tsx +10 -8
- package/src/rbac/components/PagePermissionGuard.guard.test.tsx +236 -0
- package/src/rbac/components/PagePermissionGuard.performance.test.tsx +252 -0
- package/src/rbac/components/PagePermissionGuard.race-condition.test.tsx +243 -0
- package/src/rbac/components/PagePermissionGuard.test.tsx +1430 -0
- package/src/rbac/components/PagePermissionGuard.tsx +188 -381
- package/src/rbac/components/PagePermissionGuard.verification.test.tsx +185 -0
- package/src/rbac/config.test.ts +131 -48
- package/src/rbac/config.ts +69 -26
- package/src/rbac/docs/event-based-apps.md +26 -13
- package/src/rbac/engine.comprehensive.test.ts +808 -0
- package/src/rbac/engine.test.ts +974 -130
- package/src/rbac/engine.ts +53 -13
- package/src/rbac/errors.test.ts +99 -87
- package/src/rbac/errors.ts +89 -55
- package/src/rbac/eslint-rules.js +2 -2
- package/src/rbac/hooks/permissions/runPermissionCheck.ts +77 -0
- package/src/rbac/hooks/permissions/useAccessLevel.test.ts +622 -0
- package/src/rbac/hooks/permissions/useAccessLevel.ts +23 -14
- package/src/rbac/hooks/permissions/useCan.test.ts +798 -0
- package/src/rbac/hooks/permissions/useCan.ts +173 -253
- package/src/rbac/hooks/permissions/useMultiplePermissions.test.ts +843 -0
- package/src/rbac/hooks/permissions/useMultiplePermissions.ts +63 -10
- package/src/rbac/hooks/permissions/usePermissions.test.ts +543 -0
- package/src/rbac/hooks/permissions/usePermissions.ts +50 -78
- package/src/rbac/hooks/useCan.test.ts +348 -32
- package/src/rbac/hooks/usePageAccessLogging.ts +160 -0
- package/src/rbac/hooks/usePageGuardScope.ts +117 -0
- package/src/rbac/hooks/usePagePermissionCheck.ts +67 -0
- package/src/rbac/hooks/usePermissions.integration.test.ts +427 -0
- package/src/rbac/hooks/usePermissions.stability.test.ts +268 -0
- package/src/rbac/hooks/usePermissions.test.ts +459 -33
- package/src/rbac/hooks/usePermissions.ts +5 -7
- package/src/rbac/hooks/useRBAC.test.ts +1784 -21
- package/src/rbac/hooks/useRBAC.ts +148 -88
- package/src/rbac/hooks/useResolvedScope.test.ts +442 -5
- package/src/rbac/hooks/useResolvedScope.ts +4 -1
- package/src/rbac/hooks/useResourcePermissions.test.ts +561 -24
- package/src/rbac/hooks/useResourcePermissions.ts +76 -140
- package/src/rbac/hooks/useResourcePermissionsSuperAdmin.ts +67 -0
- package/src/rbac/hooks/useRoleManagement.test.ts +634 -61
- package/src/rbac/hooks/useRoleManagement.ts +158 -586
- package/src/rbac/hooks/useSecureSupabase.test.ts +1179 -0
- package/src/rbac/hooks/useSecureSupabase.ts +21 -14
- package/src/rbac/hooks/useSuperAdminCheck.ts +80 -0
- package/src/rbac/index.test.ts +107 -0
- package/src/rbac/index.ts +32 -32
- package/src/rbac/performance.test.ts +451 -0
- package/src/rbac/permissions.test.ts +149 -68
- package/src/rbac/permissions.ts +0 -3
- package/src/rbac/rbac-core.test.tsx +276 -0
- package/src/rbac/rbac-engine-core-logic.test.ts +387 -0
- package/src/rbac/rbac-engine-simplified.test.ts +252 -0
- package/src/rbac/rbac-functions.test.ts +703 -0
- package/src/rbac/rbac-integration.test.ts +523 -0
- package/src/rbac/rbac-role-isolation.test.ts +456 -0
- package/src/rbac/request-deduplication.test.ts +352 -0
- package/src/rbac/request-deduplication.ts +5 -4
- package/src/rbac/scenarios.user-role.test.tsx +271 -0
- package/src/rbac/secureClient.test.ts +499 -115
- package/src/rbac/secureClient.ts +54 -28
- package/src/rbac/security.test.ts +448 -44
- package/src/rbac/security.ts +7 -6
- package/src/rbac/types/roleManagement.ts +66 -0
- package/src/rbac/types.test.ts +236 -0
- package/src/rbac/types.ts +7 -5
- package/src/rbac/utils/clientSecurity.test.ts +192 -0
- package/src/rbac/utils/clientSecurity.ts +6 -4
- package/src/rbac/utils/contextValidator.test.ts +126 -0
- package/src/rbac/utils/contextValidator.ts +6 -3
- package/src/rbac/utils/deep-equal.test.ts +76 -0
- package/src/rbac/utils/eventContext.test.ts +401 -0
- package/src/rbac/utils/eventContext.ts +38 -34
- package/src/rbac/utils/fetchPermissionMap.ts +13 -0
- package/src/rbac/utils/permissionMapHelpers.ts +34 -0
- package/src/rbac/utils/roleManagementRpc.ts +303 -0
- package/src/services/AuthService.edge-cases.test.ts +746 -0
- package/src/services/AuthService.restoreSession.test.ts +59 -0
- package/src/services/AuthService.test.ts +1362 -0
- package/src/services/AuthService.ts +197 -216
- package/src/services/BaseService.edge-cases.test.ts +506 -0
- package/src/services/BaseService.test.ts +363 -0
- package/src/services/EventService.edge-cases.test.ts +636 -0
- package/src/services/EventService.eventColours.test.ts +64 -0
- package/src/services/EventService.test.ts +1250 -0
- package/src/services/EventService.ts +244 -315
- package/src/services/InactivityService.edge-cases.test.ts +492 -0
- package/src/services/InactivityService.lifecycle.test.ts +406 -0
- package/src/services/InactivityService.test.ts +829 -0
- package/src/services/InactivityService.ts +172 -213
- package/src/services/OrganisationService.edge-cases.test.ts +633 -0
- package/src/services/OrganisationService.pagination.test.ts +409 -0
- package/src/services/OrganisationService.test.ts +1579 -0
- package/src/services/OrganisationService.ts +186 -257
- package/src/services/base/BaseService.test.ts +214 -0
- package/src/services/interfaces/IAuthService.test.ts +184 -0
- package/src/services/interfaces/IAuthService.ts +10 -9
- package/src/services/interfaces/IEventService.test.ts +176 -0
- package/src/services/interfaces/IInactivityService.test.ts +183 -0
- package/src/services/interfaces/IOrganisationService.test.ts +207 -0
- package/src/services/interfaces/IOrganisationService.ts +0 -1
- package/src/styles/core.css +244 -12
- package/src/theming/parseEventColours.test.ts +321 -0
- package/src/theming/parseEventColours.ts +18 -9
- package/src/theming/runtime.test.ts +495 -0
- package/src/theming/runtime.ts +72 -7
- package/src/types/api-result.ts +53 -0
- package/src/types/auth.ts +0 -1
- package/src/types/core.test.ts +397 -0
- package/src/types/database-generated.test.ts +78 -0
- package/src/types/database.generated.ts +45 -10
- package/src/types/event.ts +39 -19
- package/src/types/file-reference.test.ts +351 -0
- package/src/types/file-reference.ts +37 -12
- package/src/types/guards.test.ts +246 -0
- package/src/types/index.test.ts +265 -0
- package/src/types/index.ts +3 -0
- package/src/types/organisation.roles.test.ts +55 -0
- package/src/types/organisation.test.ts +1105 -0
- package/src/types/organisation.ts +15 -15
- package/src/types/rpc-responses.ts +33 -0
- package/src/types/supabase.ts +14 -6
- package/src/types/theme.test.ts +830 -0
- package/src/types/type-validation.test.ts +526 -0
- package/src/types/validation.test.ts +729 -0
- package/src/types/vitest-globals.d.ts +1 -1
- package/src/utils/app/appConfig.test.ts +235 -0
- package/src/utils/app/appIdResolver.test.ts +252 -57
- package/src/utils/app/appIdResolver.ts +31 -20
- package/src/utils/app/appNameResolver.test.ts +18 -10
- package/src/utils/app/appNameResolver.ts +11 -9
- package/src/utils/app/appPortMap.test.ts +125 -0
- package/src/utils/app/appPortMap.ts +51 -0
- package/src/utils/app/buildAppUrl.test.ts +273 -0
- package/src/utils/app/buildAppUrl.ts +114 -0
- package/src/utils/appConfig.unit.test.ts +55 -0
- package/src/utils/audit/audit.test.ts +354 -39
- package/src/utils/audit.unit.test.ts +69 -0
- package/src/utils/auth-utils.unit.test.ts +69 -0
- package/src/utils/bundleAnalysis.unit.test.ts +326 -0
- package/src/utils/cn.unit.test.ts +34 -0
- package/src/utils/context/organisationContext.test.ts +115 -95
- package/src/utils/context/organisationContext.ts +32 -43
- package/src/utils/context/sessionTracking.test.ts +354 -0
- package/src/utils/core/cn.test.ts +66 -0
- package/src/utils/core/debugLogger.test.ts +113 -0
- package/src/utils/core/debugLogger.ts +15 -8
- package/src/utils/core/logger.test.ts +217 -0
- package/src/utils/core/logger.ts +20 -16
- package/src/utils/core/mergeRefs.ts +24 -0
- package/src/utils/debugLogger.test.ts +417 -0
- package/src/utils/device/deviceFingerprint.test.ts +8 -5
- package/src/utils/device/deviceFingerprint.ts +3 -3
- package/src/utils/deviceFingerprint.unit.test.ts +818 -0
- package/src/utils/dynamic/createLazyComponent.tsx +46 -0
- package/src/utils/dynamic/dynamicUtils.test.ts +185 -0
- package/src/utils/dynamic/dynamicUtils.ts +6 -6
- package/src/utils/dynamic/lazyLoad.test.tsx +156 -0
- package/src/utils/dynamic/lazyLoad.tsx +8 -36
- package/src/utils/dynamic/papaparseLoader.ts +7 -0
- package/src/utils/dynamicUtils.unit.test.ts +331 -0
- package/src/utils/file-reference/file-reference.test.ts +1238 -0
- package/src/utils/file-reference/index.ts +330 -348
- package/src/utils/formatDate.unit.test.ts +109 -0
- package/src/utils/formatting/formatDate.test.ts +22 -148
- package/src/utils/formatting/formatDateTime.test.ts +41 -119
- package/src/utils/formatting/formatDateTimeTimezone.test.ts +41 -85
- package/src/utils/formatting/formatNumber.test.ts +259 -0
- package/src/utils/formatting/formatTime.test.ts +36 -128
- package/src/utils/formatting/formatting.ts +1 -1
- package/src/utils/formatting.unit.test.ts +99 -0
- package/src/utils/google-places/googlePlacesUtils.test.ts +127 -36
- package/src/utils/google-places/googlePlacesUtils.ts +67 -86
- package/src/utils/google-places/loadGoogleMapsScript.test.ts +68 -8
- package/src/utils/google-places/loadGoogleMapsScript.ts +140 -118
- package/src/utils/index.ts +52 -11
- package/src/utils/index.unit.test.ts +251 -0
- package/src/utils/lazyLoad.unit.test.tsx +319 -0
- package/src/utils/location/location.test.ts +19 -116
- package/src/utils/logger.unit.test.ts +398 -0
- package/src/utils/organisationContext.unit.test.ts +180 -0
- package/src/utils/performance/bundleAnalysis.test.ts +148 -0
- package/src/utils/performance/bundleAnalysis.ts +16 -22
- package/src/utils/performance/performanceBenchmark.test.ts +251 -0
- package/src/utils/performance/performanceBenchmark.ts +12 -4
- package/src/utils/performance/performanceBudgets.test.ts +241 -0
- package/src/utils/performance/performanceBudgets.ts +9 -6
- package/src/utils/performanceBenchmark.test.ts +174 -0
- package/src/utils/performanceBudgets.unit.test.ts +288 -0
- package/src/utils/permissionTypes.unit.test.ts +250 -0
- package/src/utils/permissionUtils.unit.test.ts +362 -0
- package/src/utils/permissions/permissionTypes.test.ts +149 -0
- package/src/utils/permissions/permissionUtils.test.ts +20 -42
- package/src/utils/persistence/keyDerivation.test.ts +306 -0
- package/src/utils/persistence/sensitiveFieldDetection.test.ts +271 -0
- package/src/utils/persistence/sensitiveFieldDetection.ts +2 -2
- package/src/utils/request-deduplication.test.ts +349 -0
- package/src/utils/request-deduplication.ts +6 -4
- package/src/utils/sanitization.unit.test.ts +346 -0
- package/src/utils/schemaUtils.unit.test.ts +441 -0
- package/src/utils/secureDataAccess.unit.test.ts +334 -0
- package/src/utils/secureErrors.unit.test.ts +390 -0
- package/src/utils/secureStorage.unit.test.ts +289 -0
- package/src/utils/security/auth-utils.ts +38 -27
- package/src/utils/security/secureDataAccess.test.ts +22 -191
- package/src/utils/security/secureDataAccess.ts +241 -281
- package/src/utils/security/secureErrors.test.ts +163 -0
- package/src/utils/security/secureStorage.test.ts +156 -0
- package/src/utils/security/secureStorage.ts +1 -1
- package/src/utils/security/security.test.ts +212 -0
- package/src/utils/security/security.ts +15 -18
- package/src/utils/security/securityMonitor.test.ts +90 -0
- package/src/utils/security/securityMonitor.ts +1 -1
- package/src/utils/security.unit.test.ts +155 -0
- package/src/utils/securityMonitor.unit.test.ts +276 -0
- package/src/utils/sessionTracking.unit.test.ts +218 -0
- package/src/utils/storage/config.unit.test.ts +239 -0
- package/src/utils/storage/helpers.test.ts +769 -456
- package/src/utils/storage/helpers.ts +174 -253
- package/src/utils/storage/index.unit.test.ts +68 -0
- package/src/utils/storage/storageUtils.ts +32 -0
- package/src/utils/storage/types.ts +9 -2
- package/src/utils/supabase/createBaseClient.test.ts +201 -0
- package/src/utils/supabase/createBaseClient.ts +2 -1
- package/src/utils/timezone/timezone.test.ts +26 -44
- package/src/utils/timezone.test.ts +345 -0
- package/src/utils/validation/common.test.ts +115 -0
- package/src/utils/validation/csrf.test.ts +198 -0
- package/src/utils/validation/csrf.ts +42 -41
- package/src/utils/validation/htmlSanitization.ts +27 -31
- package/src/utils/validation/htmlSanitization.unit.test.ts +618 -0
- package/src/utils/validation/passwordSchema.test.ts +164 -0
- package/src/utils/validation/schema.test.ts +127 -0
- package/src/utils/validation/schema.ts +6 -3
- package/src/utils/validation/sqlInjectionProtection.test.ts +165 -0
- package/src/utils/validation/sqlInjectionProtection.ts +2 -2
- package/src/utils/validation/user.test.ts +173 -0
- package/src/utils/validation/validation.test.ts +197 -0
- package/src/utils/validation/validationUtils.test.ts +294 -0
- package/src/utils/validation.unit.test.ts +307 -0
- package/src/utils/validationUtils.unit.test.ts +558 -0
- package/src/vite-env.d.ts +6 -0
- package/dist/AuthService-DmfO5rGS.d.ts +0 -524
- package/dist/DataTable-DRUIgtUH.d.ts +0 -166
- package/dist/DataTable-SOAFXIWY.js +0 -15
- package/dist/PublicPageProvider-CIGSujI2.d.ts +0 -4147
- package/dist/UnifiedAuthProvider-7SNDOWYD.js +0 -7
- package/dist/UnifiedAuthProvider-CKvHP1MK.d.ts +0 -139
- package/dist/api-7P7DI652.js +0 -4
- package/dist/audit-MYQXYZFU.js +0 -3
- package/dist/auth-BZOJqrdd.d.ts +0 -49
- package/dist/chunk-4DDCYDQ3.js +0 -544
- package/dist/chunk-5HNSDQWH.js +0 -5046
- package/dist/chunk-5W2A3DRC.js +0 -164
- package/dist/chunk-6GLLNA6U.js +0 -31
- package/dist/chunk-7ILTDCL2.js +0 -80
- package/dist/chunk-A3W6LW53.js +0 -70
- package/dist/chunk-AHU7G2R5.js +0 -423
- package/dist/chunk-C7ZQ5O4C.js +0 -481
- package/dist/chunk-EF2UGZWY.js +0 -611
- package/dist/chunk-FEJLJNWA.js +0 -181
- package/dist/chunk-FYHN4DD5.js +0 -415
- package/dist/chunk-GS5672WG.js +0 -2003
- package/dist/chunk-HF6O3O37.js +0 -187
- package/dist/chunk-J2U36LHD.js +0 -8517
- package/dist/chunk-LX6U42O3.js +0 -2177
- package/dist/chunk-MPBLMWVR.js +0 -2161
- package/dist/chunk-OJ4SKRSV.js +0 -105
- package/dist/chunk-S6ZQKDY6.js +0 -62
- package/dist/chunk-S7DKJPLT.js +0 -699
- package/dist/chunk-T5CVK4R3.js +0 -2816
- package/dist/chunk-TTRFSOKR.js +0 -121
- package/dist/chunk-Z2FNRKF3.js +0 -994
- package/dist/database.generated-DT8JTZiP.d.ts +0 -9406
- package/dist/event-CW5YB_2p.d.ts +0 -239
- package/dist/file-reference-BavO2eQj.d.ts +0 -148
- package/dist/functions-lBy5L2ry.d.ts +0 -208
- package/dist/timezone-0AyangqX.d.ts +0 -697
- package/dist/types-BeoeWV5I.d.ts +0 -110
- package/dist/types-DXstZpNI.d.ts +0 -614
- package/dist/types-t9H8qKRw.d.ts +0 -55
- package/dist/usePublicRouteParams-DQLrDqDb.d.ts +0 -876
- package/dist/useToast-AyaT-x7p.d.ts +0 -68
- package/dist/validation-643vUDZW.d.ts +0 -177
- package/scripts/build-docs-incremental.js +0 -179
- package/scripts/eslint-audit.cjs +0 -123
- package/scripts/generate-docs.js +0 -157
- package/scripts/install-cursor-rules.cjs +0 -255
- package/scripts/install-eslint-config.cjs +0 -349
- package/scripts/setup-build-cache.js +0 -73
- package/scripts/validate-pre-publish.js +0 -145
- package/src/__tests__/helpers/__tests__/component-test-utils.test.tsx +0 -260
- package/src/__tests__/helpers/__tests__/optimized-test-setup.test.ts +0 -224
- package/src/__tests__/helpers/__tests__/supabaseMock.test.ts +0 -273
- package/src/__tests__/helpers/__tests__/test-providers.test.tsx +0 -99
- package/src/__tests__/helpers/__tests__/test-utils.test.tsx +0 -448
- package/src/__tests__/helpers/__tests__/timer-utils.test.ts +0 -371
- package/src/__tests__/hooks/usePermissions.test.ts +0 -268
- package/src/__tests__/integration/UserProfile.test.tsx +0 -124
- package/src/__tests__/public-recipe-view.test.ts +0 -228
- package/src/__tests__/rbac/PagePermissionGuard.test.tsx +0 -220
- package/src/__tests__/rls-policies.test.ts +0 -471
- package/src/components/DataTable/__tests__/DataTable.comprehensive.test.tsx +0 -759
- package/src/components/DataTable/__tests__/DataTable.default-state.test.tsx +0 -524
- package/src/components/DataTable/__tests__/DataTable.export.test.tsx +0 -705
- package/src/components/DataTable/__tests__/DataTable.grouping-aggregation.test.tsx +0 -658
- package/src/components/DataTable/__tests__/DataTable.hooks.test.tsx +0 -192
- package/src/components/DataTable/__tests__/DataTable.select-label-display.test.tsx +0 -483
- package/src/components/DataTable/__tests__/DataTable.test.tsx +0 -876
- package/src/components/DataTable/__tests__/DataTableCore.test-setup.ts +0 -220
- package/src/components/DataTable/__tests__/DataTableCore.test.tsx +0 -1474
- package/src/components/DataTable/__tests__/README.md +0 -145
- package/src/components/DataTable/__tests__/a11y.basic.test.tsx +0 -788
- package/src/components/DataTable/__tests__/keyboard.test.tsx +0 -756
- package/src/components/DataTable/__tests__/mocks/MockRBACProvider.tsx +0 -66
- package/src/components/DataTable/__tests__/pagination.modes.test.tsx +0 -730
- package/src/components/DataTable/__tests__/ssr.strict-mode.test.tsx +0 -325
- package/src/components/DataTable/__tests__/styles.test.ts +0 -382
- package/src/components/DataTable/__tests__/test-utils/dataFactories.ts +0 -103
- package/src/components/DataTable/__tests__/test-utils/sharedTestUtils.tsx +0 -380
- package/src/components/DataTable/__tests__/test-utils.ts +0 -94
- package/src/components/DataTable/components/AccessDeniedPage.tsx +0 -159
- package/src/components/DataTable/components/ActionButtons.tsx +0 -190
- package/src/components/DataTable/components/BulkOperationsDropdown.tsx +0 -160
- package/src/components/DataTable/components/ColumnFilter.tsx +0 -118
- package/src/components/DataTable/components/ColumnVisibilityDropdown.tsx +0 -114
- package/src/components/DataTable/components/DataTableErrorBoundary.tsx +0 -225
- package/src/components/DataTable/components/DataTableLayout.tsx +0 -573
- package/src/components/DataTable/components/DataTableModals.tsx +0 -245
- package/src/components/DataTable/components/DataTableToolbar.tsx +0 -271
- package/src/components/DataTable/components/EditFields.tsx +0 -327
- package/src/components/DataTable/components/EditableRow.tsx +0 -462
- package/src/components/DataTable/components/EmptyState.tsx +0 -79
- package/src/components/DataTable/components/FilterRow.tsx +0 -141
- package/src/components/DataTable/components/LoadingState.tsx +0 -17
- package/src/components/DataTable/components/PaginationControls.tsx +0 -289
- package/src/components/DataTable/components/RowComponent.tsx +0 -403
- package/src/components/DataTable/components/SortIndicator.tsx +0 -50
- package/src/components/DataTable/components/UnifiedTableBody.tsx +0 -355
- package/src/components/DataTable/components/__tests__/AccessDeniedPage.test.tsx +0 -657
- package/src/components/DataTable/components/__tests__/ActionButtons.test.tsx +0 -913
- package/src/components/DataTable/components/__tests__/BulkOperationsDropdown.test.tsx +0 -572
- package/src/components/DataTable/components/__tests__/ColumnFilter.test.tsx +0 -612
- package/src/components/DataTable/components/__tests__/ColumnVisibilityDropdown.test.tsx +0 -708
- package/src/components/DataTable/components/__tests__/DataTableErrorBoundary.test.tsx +0 -479
- package/src/components/DataTable/components/__tests__/DataTableModals.test.tsx +0 -475
- package/src/components/DataTable/components/__tests__/DataTableToolbar.test.tsx +0 -157
- package/src/components/DataTable/components/__tests__/EditableRow.test.tsx +0 -1061
- package/src/components/DataTable/components/__tests__/EmptyState.test.tsx +0 -437
- package/src/components/DataTable/components/__tests__/FilterRow.test.tsx +0 -474
- package/src/components/DataTable/components/__tests__/GroupingDropdown.test.tsx +0 -617
- package/src/components/DataTable/components/__tests__/ImportModal.test.tsx +0 -1093
- package/src/components/DataTable/components/__tests__/LoadingState.test.tsx +0 -139
- package/src/components/DataTable/components/__tests__/PaginationControls.test.tsx +0 -519
- package/src/components/DataTable/components/__tests__/UnifiedTableBody.test.tsx +0 -1004
- package/src/components/DataTable/components/cellValueUtils.ts +0 -40
- package/src/components/DataTable/components/hooks/useImportModalFocus.ts +0 -53
- package/src/components/DataTable/components/hooks/usePermissionTracking.ts +0 -122
- package/src/components/DataTable/components/index.ts +0 -16
- package/src/components/DataTable/context/__tests__/DataTableContext.test.tsx +0 -342
- package/src/components/DataTable/core/ActionManager.ts +0 -235
- package/src/components/DataTable/core/ColumnManager.ts +0 -205
- package/src/components/DataTable/core/DataManager.ts +0 -188
- package/src/components/DataTable/core/LocalDataAdapter.ts +0 -274
- package/src/components/DataTable/core/PluginRegistry.ts +0 -229
- package/src/components/DataTable/core/StateManager.ts +0 -312
- package/src/components/DataTable/core/__tests__/ActionManager.test.ts +0 -123
- package/src/components/DataTable/core/__tests__/ColumnFactory.test.ts +0 -305
- package/src/components/DataTable/core/__tests__/ColumnManager.test.ts +0 -84
- package/src/components/DataTable/core/__tests__/DataManager.test.ts +0 -115
- package/src/components/DataTable/core/__tests__/LocalDataAdapter.test.ts +0 -100
- package/src/components/DataTable/core/__tests__/PluginRegistry.test.ts +0 -120
- package/src/components/DataTable/core/__tests__/StateManager.test.ts +0 -104
- package/src/components/DataTable/core/index.ts +0 -1
- package/src/components/DataTable/core/interfaces.ts +0 -338
- package/src/components/DataTable/hooks/__tests__/useColumnOrderPersistence.test.ts +0 -521
- package/src/components/DataTable/hooks/__tests__/useColumnVisibilityPersistence.test.ts +0 -167
- package/src/components/DataTable/hooks/__tests__/useDataTableConfiguration.test.ts +0 -124
- package/src/components/DataTable/hooks/__tests__/useDataTableDataPipeline.test.ts +0 -117
- package/src/components/DataTable/hooks/__tests__/useDataTablePermissions.test.ts +0 -102
- package/src/components/DataTable/hooks/__tests__/useDataTableState.test.ts +0 -596
- package/src/components/DataTable/hooks/__tests__/useEffectiveColumnOrder.test.ts +0 -53
- package/src/components/DataTable/hooks/__tests__/useHierarchicalState.test.ts +0 -214
- package/src/components/DataTable/hooks/__tests__/useTableColumns.test.ts +0 -448
- package/src/components/DataTable/hooks/index.ts +0 -13
- package/src/components/DataTable/types.ts +0 -761
- package/src/components/DataTable/utils/__tests__/a11yUtils.test.ts +0 -612
- package/src/components/DataTable/utils/__tests__/columnUtils.test.ts +0 -94
- package/src/components/DataTable/utils/__tests__/errorHandling.test.ts +0 -266
- package/src/components/DataTable/utils/__tests__/exportUtils.test.ts +0 -954
- package/src/components/DataTable/utils/__tests__/flexibleImport.test.ts +0 -573
- package/src/components/DataTable/utils/__tests__/hierarchicalSorting.test.ts +0 -247
- package/src/components/DataTable/utils/__tests__/hierarchicalUtils.test.ts +0 -570
- package/src/components/DataTable/utils/__tests__/performanceUtils.test.ts +0 -470
- package/src/components/DataTable/utils/__tests__/rowUtils.test.ts +0 -251
- package/src/components/DataTable/utils/__tests__/selectFieldUtils.test.ts +0 -207
- package/src/components/DataTable/utils/index.ts +0 -10
- package/src/components/PublicLayout/index.ts +0 -32
- package/src/components/Select/hooks/useSelectEvents.ts +0 -87
- package/src/components/Select/hooks/useSelectSearch.ts +0 -91
- package/src/components/Select/hooks/useSelectState.ts +0 -104
- package/src/components/Select/utils/text.ts +0 -26
- package/src/hooks/__tests__/ServiceHooks.test.tsx +0 -615
- package/src/hooks/__tests__/hooks.integration.test.tsx +0 -607
- package/src/hooks/__tests__/index.unit.test.ts +0 -220
- package/src/hooks/__tests__/useApiFetch.unit.test.ts +0 -111
- package/src/hooks/__tests__/useAppConfig.unit.test.ts +0 -347
- package/src/hooks/__tests__/useComponentPerformance.unit.test.tsx +0 -144
- package/src/hooks/__tests__/useDataTablePerformance.unit.test.ts +0 -776
- package/src/hooks/__tests__/useDataTableState.test.ts +0 -76
- package/src/hooks/__tests__/useDebounce.unit.test.ts +0 -82
- package/src/hooks/__tests__/useEvents.unit.test.ts +0 -252
- package/src/hooks/__tests__/useFileDisplay.unit.test.ts +0 -1112
- package/src/hooks/__tests__/useFileUrl.unit.test.ts +0 -916
- package/src/hooks/__tests__/useFileUrlCache.test.ts +0 -129
- package/src/hooks/__tests__/useFocusManagement.unit.test.ts +0 -230
- package/src/hooks/__tests__/useFocusTrap.unit.test.tsx +0 -828
- package/src/hooks/__tests__/useFormDialog.test.ts +0 -478
- package/src/hooks/__tests__/useInactivityTracker.unit.test.ts +0 -446
- package/src/hooks/__tests__/useIsMobile.unit.test.ts +0 -317
- package/src/hooks/__tests__/useKeyboardShortcuts.unit.test.ts +0 -910
- package/src/hooks/__tests__/useOrganisationPermissions.unit.test.tsx +0 -294
- package/src/hooks/__tests__/useOrganisationSecurity.unit.test.tsx +0 -961
- package/src/hooks/__tests__/useOrganisations.unit.test.ts +0 -369
- package/src/hooks/__tests__/usePerformanceMonitor.unit.test.ts +0 -694
- package/src/hooks/__tests__/usePermissionCache.simple.test.ts +0 -192
- package/src/hooks/__tests__/usePermissionCache.unit.test.ts +0 -741
- package/src/hooks/__tests__/usePreventTabReload.test.ts +0 -88
- package/src/hooks/__tests__/usePublicEvent.simple.test.ts +0 -785
- package/src/hooks/__tests__/usePublicEvent.test.ts +0 -678
- package/src/hooks/__tests__/usePublicEvent.unit.test.ts +0 -630
- package/src/hooks/__tests__/usePublicFileDisplay.test.ts +0 -951
- package/src/hooks/__tests__/usePublicRouteParams.unit.test.ts +0 -443
- package/src/hooks/__tests__/useQueryCache.test.ts +0 -144
- package/src/hooks/__tests__/useRBAC.unit.test.ts +0 -236
- package/src/hooks/__tests__/useSessionDraft.test.ts +0 -163
- package/src/hooks/__tests__/useSessionRestoration.unit.test.tsx +0 -390
- package/src/hooks/__tests__/useStorage.unit.test.ts +0 -751
- package/src/hooks/__tests__/useToast.unit.test.tsx +0 -481
- package/src/hooks/__tests__/useZodForm.unit.test.tsx +0 -37
- package/src/hooks/public/index.ts +0 -36
- package/src/hooks/public/usePublicFileDisplay.ts +0 -504
- package/src/hooks/useFileDisplay.ts +0 -715
- package/src/providers/OrganisationProvider.tsx +0 -92
- package/src/providers/__tests__/AuthProvider.test.tsx +0 -287
- package/src/providers/__tests__/EventProvider.test.tsx +0 -551
- package/src/providers/__tests__/InactivityProvider.test-helper.tsx +0 -65
- package/src/providers/__tests__/InactivityProvider.test.tsx +0 -572
- package/src/providers/__tests__/OrganisationProvider.test.tsx +0 -617
- package/src/providers/__tests__/ProviderLifecycle.test.tsx +0 -424
- package/src/providers/__tests__/UnifiedAuthProvider.test.tsx +0 -596
- package/src/providers/services/__tests__/AuthServiceProvider.integration.test.tsx +0 -263
- package/src/providers/services/__tests__/UnifiedAuthProvider.integration.test.tsx +0 -294
- package/src/rbac/__tests__/adapters.comprehensive.test.tsx +0 -434
- package/src/rbac/__tests__/auth-rbac-security.integration.test.tsx +0 -313
- package/src/rbac/__tests__/auth-rbac.e2e.test.tsx +0 -486
- package/src/rbac/__tests__/cache-invalidation.test.ts +0 -399
- package/src/rbac/__tests__/engine.comprehensive.test.ts +0 -813
- package/src/rbac/__tests__/isSuperAdmin.real.test.ts +0 -82
- package/src/rbac/__tests__/rbac-core.test.tsx +0 -276
- package/src/rbac/__tests__/rbac-engine-core-logic.test.ts +0 -392
- package/src/rbac/__tests__/rbac-engine-simplified.test.ts +0 -258
- package/src/rbac/__tests__/rbac-functions.test.ts +0 -647
- package/src/rbac/__tests__/rbac-integration.test.ts +0 -524
- package/src/rbac/__tests__/rbac-role-isolation.test.ts +0 -456
- package/src/rbac/__tests__/scenarios.user-role.test.tsx +0 -282
- package/src/rbac/audit-enhanced.ts +0 -384
- package/src/rbac/compliance/database-validator.ts +0 -165
- package/src/rbac/compliance/index.ts +0 -48
- package/src/rbac/compliance/pattern-detector.ts +0 -553
- package/src/rbac/compliance/quick-fix-suggestions.ts +0 -209
- package/src/rbac/compliance/runtime-compliance.ts +0 -99
- package/src/rbac/compliance/setup-validator.ts +0 -131
- package/src/rbac/components/__tests__/NavigationGuard.test.tsx +0 -975
- package/src/rbac/components/__tests__/PagePermissionGuard.performance.test.tsx +0 -248
- package/src/rbac/components/__tests__/PagePermissionGuard.race-condition.test.tsx +0 -242
- package/src/rbac/components/__tests__/PagePermissionGuard.test.tsx +0 -1107
- package/src/rbac/components/__tests__/PagePermissionGuard.verification.test.tsx +0 -184
- package/src/rbac/components/index.ts +0 -26
- package/src/rbac/hooks/__tests__/usePermissions.integration.test.ts +0 -432
- package/src/rbac/hooks/__tests__/useSecureSupabase.test.ts +0 -579
- package/src/rbac/hooks/index.ts +0 -34
- package/src/rbac/hooks/permissions/index.ts +0 -4
- package/src/rbac/hooks/useRBAC.simple.test.ts +0 -95
- package/src/rbac/utils/__tests__/contextValidator.test.ts +0 -128
- package/src/rbac/utils/__tests__/deep-equal.test.ts +0 -53
- package/src/rbac/utils/__tests__/eventContext.test.ts +0 -433
- package/src/rbac/utils/__tests__/eventContext.unit.test.ts +0 -490
- package/src/services/__tests__/AuthService.restoreSession.test.ts +0 -39
- package/src/services/__tests__/AuthService.test.ts +0 -1332
- package/src/services/__tests__/BaseService.test.ts +0 -314
- package/src/services/__tests__/EventService.eventColours.test.ts +0 -76
- package/src/services/__tests__/EventService.test.ts +0 -1025
- package/src/services/__tests__/InactivityService.lifecycle.test.ts +0 -411
- package/src/services/__tests__/InactivityService.test.ts +0 -654
- package/src/services/__tests__/OrganisationService.pagination.test.ts +0 -409
- package/src/services/__tests__/OrganisationService.test.ts +0 -1176
- package/src/theming/__tests__/parseEventColours.test.ts +0 -321
- package/src/theming/__tests__/runtime.test.ts +0 -569
- package/src/types/__tests__/file-reference.test.ts +0 -447
- package/src/types/__tests__/guards.test.ts +0 -246
- package/src/types/__tests__/organisation.roles.test.ts +0 -55
- package/src/types/__tests__/organisation.test.ts +0 -1133
- package/src/types/__tests__/theme.test.ts +0 -830
- package/src/types/__tests__/type-validation.test.ts +0 -526
- package/src/types/__tests__/validation.test.ts +0 -731
- package/src/utils/__tests__/appConfig.unit.test.ts +0 -55
- package/src/utils/__tests__/audit.unit.test.ts +0 -69
- package/src/utils/__tests__/auth-utils.unit.test.ts +0 -70
- package/src/utils/__tests__/bundleAnalysis.unit.test.ts +0 -339
- package/src/utils/__tests__/cn.unit.test.ts +0 -34
- package/src/utils/__tests__/debugLogger.test.ts +0 -417
- package/src/utils/__tests__/deviceFingerprint.unit.test.ts +0 -818
- package/src/utils/__tests__/dynamicUtils.unit.test.ts +0 -318
- package/src/utils/__tests__/formatDate.unit.test.ts +0 -109
- package/src/utils/__tests__/formatting.unit.test.ts +0 -99
- package/src/utils/__tests__/index.unit.test.ts +0 -251
- package/src/utils/__tests__/lazyLoad.unit.test.tsx +0 -321
- package/src/utils/__tests__/logger.unit.test.ts +0 -398
- package/src/utils/__tests__/organisationContext.unit.test.ts +0 -191
- package/src/utils/__tests__/performanceBenchmark.test.ts +0 -175
- package/src/utils/__tests__/performanceBudgets.unit.test.ts +0 -253
- package/src/utils/__tests__/permissionTypes.unit.test.ts +0 -250
- package/src/utils/__tests__/permissionUtils.unit.test.ts +0 -362
- package/src/utils/__tests__/sanitization.unit.test.ts +0 -346
- package/src/utils/__tests__/schemaUtils.unit.test.ts +0 -441
- package/src/utils/__tests__/secureDataAccess.unit.test.ts +0 -335
- package/src/utils/__tests__/secureErrors.unit.test.ts +0 -390
- package/src/utils/__tests__/secureStorage.unit.test.ts +0 -289
- package/src/utils/__tests__/security.unit.test.ts +0 -149
- package/src/utils/__tests__/securityMonitor.unit.test.ts +0 -276
- package/src/utils/__tests__/sessionTracking.unit.test.ts +0 -218
- package/src/utils/__tests__/timezone.test.ts +0 -345
- package/src/utils/__tests__/validation.unit.test.ts +0 -308
- package/src/utils/__tests__/validationUtils.unit.test.ts +0 -555
- package/src/utils/app/appNameResolver.simple.test.ts +0 -212
- package/src/utils/file-reference/__tests__/file-reference.test.ts +0 -875
- package/src/utils/google-places/index.ts +0 -26
- package/src/utils/location/index.ts +0 -16
- package/src/utils/persistence/__tests__/keyDerivation.test.ts +0 -135
- package/src/utils/persistence/__tests__/sensitiveFieldDetection.test.ts +0 -123
- package/src/utils/storage/__tests__/helpers.unit.test.ts +0 -332
- package/src/utils/storage/__tests__/index.unit.test.ts +0 -16
- package/src/utils/storage/index.ts +0 -67
- package/src/utils/timezone/index.ts +0 -17
- package/src/utils/validation/__tests__/csrf.test.ts +0 -105
- package/src/utils/validation/__tests__/htmlSanitization.unit.test.ts +0 -598
- package/src/utils/validation/__tests__/sqlInjectionProtection.test.ts +0 -92
- package/src/utils/validation/__tests__/validationUtils.test.ts +0 -72
- package/src/utils/validation/index.ts +0 -73
- /package/src/components/DataTable/{components/__tests__ → ui}/COVERAGE_NOTE.md +0 -0
- /package/src/components/DataTable/utils/{__tests__/COVERAGE_NOTE.md → COVERAGE_NOTE.md} +0 -0
- /package/src/providers/{__tests__/README.md → README.md} +0 -0
- /package/src/types/{__tests__/README.md → README.md} +0 -0
package/dist/index.d.ts
CHANGED
|
@@ -1,31 +1,35 @@
|
|
|
1
|
-
|
|
2
|
-
export {
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
import { I as IAuthService, A as AuthSessionData } from './UnifiedAuthProvider-Bkt_tzdS.js';
|
|
2
|
+
export { b as UnifiedAuthContextType, U as UnifiedAuthProvider, a as UnifiedAuthProviderProps, c as UserEventAccess, u as useUnifiedAuth } from './UnifiedAuthProvider-Bkt_tzdS.js';
|
|
3
|
+
export { q as LogLevel, L as Logger, r as LoggerConfig, g as cn, l as createBaseClient, o as createLogger, f as createSecureDataAccess, e as emailSchema, A as formatCompactNumber, x as formatCurrency, t as formatDate, w as formatDateTime, B as formatFileSize, C as formatInTimeZone, y as formatNumber, z as formatPercent, v as formatTime, E as formatTimeInTimeZone, H as fromZonedTime, i as getAppConfig, k as getCurrentAppId, j as getCurrentAppName, J as getTimeZoneDifference, D as getTimezoneAbbreviation, F as getUserTimeZone, m as logger, n as nameSchema, b as passwordSchema, p as phoneSchema, I as roundToNearestMinutes, c as sanitizeFormData, d as sanitizeHtml, s as sanitizeUserInput, h as setAppConfig, G as toZonedTime, a as urlSchema, u as useSessionTracking } from './timezone-BTWWXKVY.js';
|
|
4
|
+
import { B as BaseService, O as OrganisationService, I as InactivityService } from './InactivityServiceProvider-BbxwwDz1.js';
|
|
5
|
+
export { a as EventServiceProvider, e as InactivityServiceProvider, c as OrganisationServiceProvider } from './InactivityServiceProvider-BbxwwDz1.js';
|
|
6
|
+
import { K as FileSizeLimits, L as StorageConfig, S as StorageUploadOptions, M as StorageFileMetadata, N as StorageUploadSuccess, P as StorageUrlOptions, b as StorageListOptions, c as StorageListResult } from './usePublicRouteParams-BgV6VhMi.js';
|
|
7
|
+
export { d as StorageFileInfo, a as StorageUploadResult, k as UseFormDialogOptions, l as UseFormDialogReturn, I as UsePublicEventLogoOptions, H as UsePublicEventLogoReturn, D as UsePublicEventOptions, C as UsePublicEventReturn, G as UsePublicFileDisplayOptions, F as UsePublicFileDisplayReturn, J as UsePublicRouteParamsReturn, p as clearPublicEventCache, s as clearPublicFileDisplayCache, w as clearPublicLogoCache, B as extractEventCodeFromPath, A as generatePublicRoutePath, q as getPublicEventCacheStats, t as getPublicFileDisplayCacheStats, x as getPublicLogoCacheStats, m as useAppConfig, f as useEventTheme, u as useEvents, j as useFormDialog, e as useOptionalEvents, g as useOrganisationPermissions, h as useOrganisationSecurity, o as usePublicEvent, z as usePublicEventCode, v as usePublicEventLogo, r as usePublicFileDisplay, y as usePublicRouteParams, i as useZodForm } from './usePublicRouteParams-BgV6VhMi.js';
|
|
8
|
+
import { r as OrganisationContextType, h as Event, O as Organisation } from './event-BfCox3N2.js';
|
|
9
|
+
export { j as OrganisationMembership, n as OrganisationSecurityError, U as UserProfile } from './event-BfCox3N2.js';
|
|
10
|
+
import { SupabaseClient, User, Session, AuthError } from '@supabase/supabase-js';
|
|
11
|
+
import { a as SessionRestorationState } from './auth-JvdRVaud.js';
|
|
12
|
+
import { A as ApiResult } from './api-result-USV1Czr-.js';
|
|
13
|
+
export { a as ApiError, e as err, b as isErr, i as isOk, o as ok } from './api-result-USV1Czr-.js';
|
|
5
14
|
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
export {
|
|
9
|
-
import {
|
|
10
|
-
export { A as
|
|
11
|
-
|
|
12
|
-
export {
|
|
13
|
-
export { A as AddressField, k as AddressFieldProps, l as AddressFieldRef, o as Alert, q as AlertDescription, p as AlertTitle, r as Avatar, s as AvatarProps, t as Badge, u as BadgeProps, v as BadgeVariant, B as Button, a as ButtonProps, am as Calendar, an as CalendarProps, C as Card, g as CardActions, f as CardContent, e as CardDescription, c as CardFooter, b as CardHeader, h as CardProps, d as CardTitle, w as Checkbox, aP as ContextSelector, aQ as ContextSelectorProps, M as Dialog, V as DialogBody, a4 as DialogBodyProps, Q as DialogClose, a1 as DialogCloseProps, R as DialogContent, $ as DialogContentProps, Y as DialogDescription, W as DialogFooter, a3 as DialogFooterProps, U as DialogHeader, a2 as DialogHeaderProps, N as DialogPortal, a0 as DialogPortalProps, Z as DialogProps, a5 as DialogSize, X as DialogTitle, O as DialogTrigger, _ as DialogTriggerProps, aS as ErrorBoundary, aU as ErrorBoundaryProps, aT as ErrorBoundaryProvider, aW as ErrorBoundaryProviderProps, aV as ErrorBoundaryState, b1 as FileDisplay, b2 as FileDisplayProps, a$ as FileUpload, b0 as FileUploadProps, aK as Footer, aL as FooterProps, aD as Form, aE as FormField, aG as FormFieldProps, aF as FormProps, aX as GlobalErrorHandler, aJ as Header, I as Input, j as InputProps, L as Label, m as LabelProps, aY as LoadingSpinner, aH as LoginForm, aI as LoginFormProps, aO as NavigationMenu, bk as PaceAppLayout, bj as PaceAppLayoutProps, bm as PaceLoginPage, bl as PaceLoginPageProps, bo as PasswordChangeForm, P as Progress, y as ProgressProps, aM as ProtectedRoute, aN as ProtectedRouteProps, bc as PublicPageFooter, bi as PublicPageFooterProps, bb as PublicPageHeader, bh as PublicPageHeaderProps, ba as PublicPageLayout, bg as PublicPageLayoutProps, bd as PublicPageProvider, a6 as Select, aa as SelectContent, a7 as SelectGroup, ac as SelectItem, ab as SelectLabel, ad as SelectSeparator, a9 as SelectTrigger, a8 as SelectValue, aZ as SessionRestorationLoader, a_ as SessionRestorationLoaderProps, S as Switch, x as SwitchProps, z as Table, E as TableBody, F as TableCaption, G as TableCell, H as TableFooter, J as TableHead, D as TableHeader, K as TableRow, ae as Tabs, ah as TabsContent, al as TabsContentProps, af as TabsList, aj as TabsListProps, ai as TabsProps, ag as TabsTrigger, ak as TabsTriggerProps, T as Textarea, n as TextareaProps, ao as Toast, aq as ToastAction, aw as ToastActionElement, av as ToastClose, au as ToastDescription, ax as ToastProps, ar as ToastProvider, at as ToastTitle, as as ToastViewport, ap as Toaster, ay as Tooltip, aA as TooltipContent, aB as TooltipProvider, aC as TooltipRoot, az as TooltipTrigger, b9 as UseFileReferenceForRecordReturn, b7 as UseFileReferenceOptions, b8 as UseFileReferenceReturn, aR as UserMenu, bn as UserMenuProps, b3 as useFileReference, b5 as useFileReferenceById, b4 as useFileReferenceForRecord, b6 as useFilesByCategory, bf as useIsPublicPage, be as usePublicPageContext } from './PublicPageProvider-CIGSujI2.js';
|
|
14
|
-
export { u as useToast } from './useToast-AyaT-x7p.js';
|
|
15
|
-
export { D as DataTable, a as DataTableProps } from './DataTable-DRUIgtUH.js';
|
|
16
|
-
import { d as DataRecord, a as DataTableAction, D as DataTableColumn } from './types-DXstZpNI.js';
|
|
17
|
-
export { c as AggregateConfig, A as AutocompleteOptions, f as DataTableFeatureConfig, b as DataTableToolbarButton, E as EmptyStateConfig, j as ExportOptions, G as GetRowId, P as ParsedAddress } from './types-DXstZpNI.js';
|
|
15
|
+
export { A as AccessLevel, E as EventAppRole, G as GlobalRole, I as InvalidScopeError, M as MissingUserContextError, O as Operation, e as OrganisationContextRequiredError, c as OrganisationRole, P as Permission, a as PermissionCheck, d as PermissionDeniedError, b as PermissionMap, R as RBACError, f as RBACNotInitializedError, S as Scope, U as UUID } from './types-CvOPXWWZ.js';
|
|
16
|
+
export { A as AccessLevelContext, s as AuditEventType, P as PermissionSource, d as RBACAccessValidateParams, e as RBACAccessValidateResult, q as RBACAuditLogParams, r as RBACAuditLogResult, t as RBACContext, w as RBACErrorCode, v as RBACFunctionResponse, f as RBACPageAccessCheckParams, R as RBACPermissionCheckParams, a as RBACPermissionCheckResult, b as RBACPermissionsGetParams, c as RBACPermissionsGetResult, u as RBACResult, g as RBACRoleGrantParams, h as RBACRoleGrantResult, i as RBACRoleRevokeParams, j as RBACRoleRevokeResult, m as RBACRoleValidateParams, n as RBACRoleValidateResult, k as RBACRolesListParams, l as RBACRolesListResult, o as RBACSessionTrackParams, p as RBACSessionTrackResult, x as RPCFunction, S as SessionType } from './functions-DH45k8ec.js';
|
|
17
|
+
export { ALL_PERMISSIONS, AccessDenied, AccessDeniedProps, AllPermissions, CACHE_PATTERNS, EVENT_APP_PERMISSIONS, EventAppRoleData, GLOBAL_PERMISSIONS, GrantEventAppRoleParams, NavigationGuard, NavigationGuardProps, ORGANISATION_PERMISSIONS, PAGE_PERMISSIONS, PagePermissionGuard, PagePermissionGuardProps, RBACAuditManager, RBACCache, RBACConfig, RBACEngine, RBACLogger, RBACPerformanceMetrics, ResourcePermissions, RevokeEventAppRoleParams, RoleManagementResult, SECURE_CLIENT_SYMBOL, SecureSupabaseClient, UseResolvedScopeOptions, UseResolvedScopeReturn, UseResourcePermissionsOptions, clearInFlightRequests, createAuditManager, createRBACConfig, createRBACEngine, createRBACExpressMiddleware, createRBACMiddleware, createSecureClient, disablePerformanceMonitoring, emitAuditEvent, enablePerformanceMonitoring, fromSupabaseClient, getAccessLevel, getGlobalAuditManager, getInFlightRequestCount, getPerformanceMetrics, getPerformanceSummary, getPermissionMap, getRBACConfig, getRBACLogger, getRoleContext, hasAllPermissions, hasAnyPermission, isDebugMode, isDevelopmentMode, isPerformanceMonitoringEnabled, isPermitted, isPermittedCached, isRBACInitialized, isSecureClient, isValidPermission, rbacCache, recordAuditEvent, recordPermissionCheck, resetPerformanceMetrics, resolveAppContext, setGlobalAuditManager, setupRBAC, useAccessLevel, useCan, useMultiplePermissions, usePermissions, useRBAC, useResolvedScope, useResourcePermissions, useRoleManagement, useSecureSupabase, warnIfInsecureClient, withAccessLevelGuard, withPermissionGuard, withRoleGuard } from './rbac/index.js';
|
|
18
|
+
import { aI as DataTableAction, aH as DataTableColumn } from './usePublicPageContext-B91dGYW1.js';
|
|
19
|
+
export { A as AddressField, k as AddressFieldProps, l as AddressFieldRef, aK as AggregateConfig, o as Alert, q as AlertDescription, p as AlertTitle, r as Avatar, s as AvatarProps, t as Badge, u as BadgeProps, v as BadgeVariant, B as Button, a as ButtonProps, am as Calendar, an as CalendarProps, C as Card, g as CardActions, f as CardContent, e as CardDescription, c as CardFooter, b as CardHeader, h as CardProps, d as CardTitle, w as Checkbox, b5 as ContextSelector, b6 as ContextSelectorProps, aF as DataTable, bC as DataTableFeatureConfig, aG as DataTableProps, aJ as DataTableToolbarButton, ao as DatePickerWithTimezone, ap as DatePickerWithTimezoneProps, M as Dialog, V as DialogBody, a4 as DialogBodyProps, Q as DialogClose, a1 as DialogCloseProps, R as DialogContent, $ as DialogContentProps, Y as DialogDescription, W as DialogFooter, a3 as DialogFooterProps, U as DialogHeader, a2 as DialogHeaderProps, N as DialogPortal, a0 as DialogPortalProps, Z as DialogProps, a5 as DialogSize, X as DialogTitle, O as DialogTrigger, _ as DialogTriggerProps, aL as EmptyStateConfig, b8 as ErrorBoundary, ba as ErrorBoundaryProps, b9 as ErrorBoundaryProvider, bc as ErrorBoundaryProviderProps, bb as ErrorBoundaryState, bD as ExportOptions, bj as FileDisplay, bk as FileDisplayProps, bh as FileUpload, bi as FileUploadProps, aT as Footer, aU as FooterProps, aM as Form, aN as FormField, aP as FormFieldProps, aO as FormProps, bd as GlobalErrorHandler, aS as Header, bF as ImportHandlerResult, bE as ImportSummary, I as Input, j as InputProps, L as Label, m as LabelProps, be as LoadingSpinner, aQ as LoginForm, aR as LoginFormProps, b4 as NavigationMenu, bz as PaceAppLayout, bt as PaceAppLayoutPermissionConfig, by as PaceAppLayoutProps, bs as PaceAppLayoutRouteConfigItem, bu as PaceAppLayoutRoutingConfig, bB as PaceLoginPage, bA as PaceLoginPageProps, bH as PasswordChangeForm, P as Progress, y as ProgressProps, b2 as ProtectedRoute, b3 as ProtectedRouteProps, aX as PublicPageFooter, b1 as PublicPageFooterProps, aW as PublicPageHeader, b0 as PublicPageHeaderProps, aV as PublicPageLayout, a$ as PublicPageLayoutProps, aY as PublicPageProvider, a6 as Select, aa as SelectContent, a7 as SelectGroup, ac as SelectItem, ab as SelectLabel, ad as SelectSeparator, a9 as SelectTrigger, a8 as SelectValue, bf as SessionRestorationLoader, bg as SessionRestorationLoaderProps, S as Switch, x as SwitchProps, z as Table, E as TableBody, F as TableCaption, G as TableCell, H as TableFooter, J as TableHead, D as TableHeader, K as TableRow, ae as Tabs, ah as TabsContent, al as TabsContentProps, af as TabsList, aj as TabsListProps, ai as TabsProps, ag as TabsTrigger, ak as TabsTriggerProps, T as Textarea, n as TextareaProps, aq as Toast, as as ToastAction, ay as ToastActionElement, ax as ToastClose, aw as ToastDescription, az as ToastProps, at as ToastProvider, av as ToastTitle, au as ToastViewport, ar as Toaster, aA as Tooltip, aC as TooltipContent, aD as TooltipProvider, aE as TooltipRoot, aB as TooltipTrigger, br as UseFileReferenceForRecordReturn, bp as UseFileReferenceOptions, bq as UseFileReferenceReturn, b7 as UserMenu, bG as UserMenuProps, bl as useFileReference, bn as useFileReferenceById, bm as useFileReferenceForRecord, bo as useFilesByCategory, a_ as useIsPublicPage, aZ as usePublicPageContext } from './usePublicPageContext-B91dGYW1.js';
|
|
20
|
+
import { D as DataRecord } from './pagination-BW1mqywp.js';
|
|
21
|
+
export { G as GetRowId, u as useToast } from './pagination-BW1mqywp.js';
|
|
18
22
|
import { ColumnDef } from '@tanstack/react-table';
|
|
19
|
-
import { H as FileSizeLimits, I as StorageConfig, S as StorageUploadOptions, J as StorageFileMetadata, a as StorageUploadResult, K as StorageUrlOptions, b as StorageListOptions, c as StorageListResult } from './usePublicRouteParams-DQLrDqDb.js';
|
|
20
|
-
export { d as StorageFileInfo, i as UseFormDialogOptions, j as UseFormDialogReturn, F as UsePublicEventLogoOptions, E as UsePublicEventLogoReturn, B as UsePublicEventOptions, A as UsePublicEventReturn, D as UsePublicFileDisplayOptions, C as UsePublicFileDisplayReturn, G as UsePublicRouteParamsReturn, n as clearPublicEventCache, q as clearPublicFileDisplayCache, t as clearPublicLogoCache, z as extractEventCodeFromPath, y as generatePublicRoutePath, o as getPublicEventCacheStats, r as getPublicFileDisplayCacheStats, v as getPublicLogoCacheStats, k as useAppConfig, u as useEventTheme, h as useFormDialog, e as useOrganisationPermissions, f as useOrganisationSecurity, m as usePublicEvent, x as usePublicEventCode, s as usePublicEventLogo, p as usePublicFileDisplay, w as usePublicRouteParams, g as useZodForm } from './usePublicRouteParams-DQLrDqDb.js';
|
|
21
23
|
export { z } from 'zod';
|
|
22
|
-
|
|
23
|
-
|
|
24
|
+
import React__default from 'react';
|
|
25
|
+
export { F as FileCategory, b as FileMetadata, a as FileReference, c as FileUploadOptions } from './file-reference-DU1hcawx.js';
|
|
24
26
|
export { StyleImport, getAllStylePaths, getStylePath, styleConfig } from './styles/index.js';
|
|
25
27
|
export { ColorPalette, ColorShade, PaletteData, applyPalette, clearPalette, parseAndNormalizeEventColours } from './theming/runtime.js';
|
|
26
|
-
export {
|
|
28
|
+
export { A as AutocompleteOptions, P as ParsedAddress } from './types-Dr8sNhER.js';
|
|
29
|
+
export { a as NavigationItem, N as NavigationMenuProps, b as NavigationMode } from './types-BE2sEHKd.js';
|
|
27
30
|
import 'clsx';
|
|
28
|
-
import './database.generated-
|
|
31
|
+
import './database.generated-qkdoiVrJ.js';
|
|
32
|
+
import 'react-hook-form';
|
|
29
33
|
import './core-CUElvH_C.js';
|
|
30
34
|
import '@radix-ui/react-label';
|
|
31
35
|
import '@radix-ui/react-checkbox';
|
|
@@ -34,80 +38,6 @@ import '@radix-ui/react-tabs';
|
|
|
34
38
|
import 'react-day-picker';
|
|
35
39
|
import '@radix-ui/react-toast';
|
|
36
40
|
import '@radix-ui/react-tooltip';
|
|
37
|
-
import 'react-hook-form';
|
|
38
|
-
|
|
39
|
-
interface OrganisationProviderProps extends OrganisationProviderProps$1 {
|
|
40
|
-
children: React__default.ReactNode;
|
|
41
|
-
requireOrganisationContext?: boolean;
|
|
42
|
-
autoSelectPrimaryOrganisation?: boolean;
|
|
43
|
-
onOrganisationChange?: (organisation: any) => void;
|
|
44
|
-
}
|
|
45
|
-
/**
|
|
46
|
-
* OrganisationProvider component
|
|
47
|
-
*
|
|
48
|
-
* Wraps OrganisationServiceProvider and automatically gets auth context.
|
|
49
|
-
*
|
|
50
|
-
* @example
|
|
51
|
-
* ```tsx
|
|
52
|
-
* <UnifiedAuthProvider supabaseClient={supabase} appName="my-app">
|
|
53
|
-
* <OrganisationProvider>
|
|
54
|
-
* <App />
|
|
55
|
-
* </OrganisationProvider>
|
|
56
|
-
* </UnifiedAuthProvider>
|
|
57
|
-
* ```
|
|
58
|
-
*/
|
|
59
|
-
declare function OrganisationProvider({ children, requireOrganisationContext, autoSelectPrimaryOrganisation, onOrganisationChange }: OrganisationProviderProps): react_jsx_runtime.JSX.Element;
|
|
60
|
-
|
|
61
|
-
/**
|
|
62
|
-
* @file Event Hook
|
|
63
|
-
* @package @jmruthers/pace-core
|
|
64
|
-
* @module Hooks
|
|
65
|
-
* @since 0.1.0
|
|
66
|
-
*
|
|
67
|
-
* Convenience hook for accessing event context.
|
|
68
|
-
* This hook provides a simple interface for working with events.
|
|
69
|
-
*
|
|
70
|
-
* Note: This is a convenience wrapper around the EventService.
|
|
71
|
-
* For better performance, consider using useEventService directly.
|
|
72
|
-
*/
|
|
73
|
-
|
|
74
|
-
interface EventContextType {
|
|
75
|
-
events: Event[];
|
|
76
|
-
selectedEvent: Event | null;
|
|
77
|
-
isLoading: boolean;
|
|
78
|
-
error: Error | null;
|
|
79
|
-
setSelectedEvent: (event: Event | null) => void;
|
|
80
|
-
refreshEvents: () => Promise<void>;
|
|
81
|
-
clearEventSelection: () => Promise<void>;
|
|
82
|
-
}
|
|
83
|
-
/**
|
|
84
|
-
* Hook to access event context
|
|
85
|
-
*
|
|
86
|
-
* @returns Event context with events, selected event, and helper methods
|
|
87
|
-
* @throws {Error} If used outside EventServiceProvider
|
|
88
|
-
*
|
|
89
|
-
* @example
|
|
90
|
-
* ```tsx
|
|
91
|
-
* function MyComponent() {
|
|
92
|
-
* const { events, selectedEvent, setSelectedEvent } = useEvents();
|
|
93
|
-
*
|
|
94
|
-
* return (
|
|
95
|
-
* <nav>
|
|
96
|
-
* <ul>
|
|
97
|
-
* {events.map(event => (
|
|
98
|
-
* <li key={event.id}>
|
|
99
|
-
* <button onClick={() => setSelectedEvent(event)}>
|
|
100
|
-
* {event.event_name}
|
|
101
|
-
* </button>
|
|
102
|
-
* </li>
|
|
103
|
-
* ))}
|
|
104
|
-
* </ul>
|
|
105
|
-
* </nav>
|
|
106
|
-
* );
|
|
107
|
-
* }
|
|
108
|
-
* ```
|
|
109
|
-
*/
|
|
110
|
-
declare function useEvents(): EventContextType;
|
|
111
41
|
|
|
112
42
|
/**
|
|
113
43
|
* @file Organisation Hook
|
|
@@ -154,6 +84,100 @@ declare function useEvents(): EventContextType;
|
|
|
154
84
|
*/
|
|
155
85
|
declare function useOrganisations(): OrganisationContextType;
|
|
156
86
|
|
|
87
|
+
/**
|
|
88
|
+
* @file Event Service Interface
|
|
89
|
+
* @package @jmruthers/pace-core
|
|
90
|
+
* @module Services/Interfaces
|
|
91
|
+
* @since 0.1.0
|
|
92
|
+
*
|
|
93
|
+
* Interface for event service operations.
|
|
94
|
+
* Defines the contract for event management functionality.
|
|
95
|
+
*/
|
|
96
|
+
|
|
97
|
+
interface IEventService {
|
|
98
|
+
getEvents(): Event[];
|
|
99
|
+
getSelectedEvent(): Event | null;
|
|
100
|
+
isLoading(): boolean;
|
|
101
|
+
getError(): Error | null;
|
|
102
|
+
setSelectedEvent(event: Event | null): void;
|
|
103
|
+
refreshEvents(): Promise<void>;
|
|
104
|
+
loadPersistedEvent(events: Event[]): Promise<boolean>;
|
|
105
|
+
restorePersistedEvent(): Promise<boolean>;
|
|
106
|
+
persistEventSelection(eventId: string): Promise<void>;
|
|
107
|
+
autoSelectNextEvent(events: Event[]): void;
|
|
108
|
+
initialize(): Promise<void>;
|
|
109
|
+
cleanup(): void;
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
/**
|
|
113
|
+
* @file Event Service
|
|
114
|
+
* @package @jmruthers/pace-core
|
|
115
|
+
* @module Services
|
|
116
|
+
* @since 0.1.0
|
|
117
|
+
*
|
|
118
|
+
* Event service implementation.
|
|
119
|
+
* Handles event management and selection with organisation context validation.
|
|
120
|
+
*/
|
|
121
|
+
|
|
122
|
+
declare class EventService extends BaseService implements IEventService {
|
|
123
|
+
private static instanceCount;
|
|
124
|
+
private instanceId;
|
|
125
|
+
private events;
|
|
126
|
+
private selectedEvent;
|
|
127
|
+
private _isLoading;
|
|
128
|
+
private error;
|
|
129
|
+
private supabaseClient;
|
|
130
|
+
private user;
|
|
131
|
+
private session;
|
|
132
|
+
private appName;
|
|
133
|
+
private selectedOrganisation;
|
|
134
|
+
private setSelectedEventId;
|
|
135
|
+
private isSuperAdmin;
|
|
136
|
+
private isInitializedRef;
|
|
137
|
+
private isFetchingRef;
|
|
138
|
+
private hasAutoSelectedRef;
|
|
139
|
+
private userClearedEventRef;
|
|
140
|
+
constructor(supabaseClient: SupabaseClient, user: User | null, session: Session | null, appName: string, selectedOrganisation: Organisation | null, setSelectedEventId: (eventId: string | null) => void);
|
|
141
|
+
getInstanceId(): number;
|
|
142
|
+
private getStorageKey;
|
|
143
|
+
updateDependencies(supabaseClient: SupabaseClient, user: User | null, session: Session | null, appName: string, selectedOrganisation: Organisation | null, setSelectedEventId: (eventId: string | null) => void): Promise<void>;
|
|
144
|
+
private handleUserChange;
|
|
145
|
+
private applyNewDependencies;
|
|
146
|
+
private updateSuperAdminStatus;
|
|
147
|
+
private handleOrganisationChange;
|
|
148
|
+
getEvents(): Event[];
|
|
149
|
+
getSelectedEvent(): Event | null;
|
|
150
|
+
isLoading(): boolean;
|
|
151
|
+
getError(): Error | null;
|
|
152
|
+
setSelectedEvent(event: Event | null): void;
|
|
153
|
+
refreshEvents(): Promise<void>;
|
|
154
|
+
loadPersistedEvent(events: Event[]): Promise<boolean>;
|
|
155
|
+
/**
|
|
156
|
+
* Restore persisted event after login screen has rendered
|
|
157
|
+
* This should be called explicitly from login page component
|
|
158
|
+
*
|
|
159
|
+
* @returns Promise<boolean> - true if event was successfully restored, false otherwise
|
|
160
|
+
*/
|
|
161
|
+
restorePersistedEvent(): Promise<boolean>;
|
|
162
|
+
persistEventSelection(eventId: string): Promise<void>;
|
|
163
|
+
clearEventSelection(): Promise<void>;
|
|
164
|
+
/**
|
|
165
|
+
* Clear event selection for a specific user (used when user logs out or changes)
|
|
166
|
+
*/
|
|
167
|
+
clearEventSelectionForUser(userId: string | null): Promise<void>;
|
|
168
|
+
autoSelectNextEvent(events: Event[]): void;
|
|
169
|
+
initialize(): Promise<void>;
|
|
170
|
+
cleanup(): void;
|
|
171
|
+
protected doInitialize(): Promise<void>;
|
|
172
|
+
protected doCleanup(): void;
|
|
173
|
+
private resolveOrganisationIdForRpc;
|
|
174
|
+
private transformRpcDataToEvents;
|
|
175
|
+
private validateSelectedEventInList;
|
|
176
|
+
private runPersistedOrAutoSelection;
|
|
177
|
+
private fetchEvents;
|
|
178
|
+
getNextEventByDate(events?: Event[]): Event | null;
|
|
179
|
+
}
|
|
180
|
+
|
|
157
181
|
/**
|
|
158
182
|
* @file Event Service Hook
|
|
159
183
|
* @package @jmruthers/pace-core
|
|
@@ -178,6 +202,79 @@ declare function useEventService(): EventService;
|
|
|
178
202
|
|
|
179
203
|
declare function useOrganisationService(): OrganisationService;
|
|
180
204
|
|
|
205
|
+
/**
|
|
206
|
+
* @file Authentication Service
|
|
207
|
+
* @package @jmruthers/pace-core
|
|
208
|
+
* @module Services
|
|
209
|
+
* @since 0.1.0
|
|
210
|
+
*
|
|
211
|
+
* Authentication service implementation.
|
|
212
|
+
* Handles user authentication, session management, and auth-related operations.
|
|
213
|
+
*/
|
|
214
|
+
|
|
215
|
+
declare class AuthService extends BaseService implements IAuthService {
|
|
216
|
+
private static instanceCount;
|
|
217
|
+
private instanceId;
|
|
218
|
+
private user;
|
|
219
|
+
private session;
|
|
220
|
+
private authLoading;
|
|
221
|
+
private authError;
|
|
222
|
+
private supabaseClient;
|
|
223
|
+
private authStateSubscription;
|
|
224
|
+
private sessionRestorationState;
|
|
225
|
+
private restorationTimeoutId;
|
|
226
|
+
private readonly restorationTimeoutMs;
|
|
227
|
+
private restorationStartTime;
|
|
228
|
+
private appName;
|
|
229
|
+
private errorHandler;
|
|
230
|
+
private unhandledRejectionHandler;
|
|
231
|
+
private wasAuthenticatedRef;
|
|
232
|
+
constructor(supabaseClient: SupabaseClient, appName?: string);
|
|
233
|
+
getInstanceId(): number;
|
|
234
|
+
getUser(): User | null;
|
|
235
|
+
getSession(): Session | null;
|
|
236
|
+
isAuthenticated(): boolean;
|
|
237
|
+
isLoading(): boolean;
|
|
238
|
+
getError(): AuthError | null;
|
|
239
|
+
getSupabaseClient(): SupabaseClient | null;
|
|
240
|
+
getSessionRestorationState(): SessionRestorationState;
|
|
241
|
+
signIn(email: string, password?: string): Promise<ApiResult<AuthSessionData>>;
|
|
242
|
+
signUp(email: string, password: string): Promise<ApiResult<AuthSessionData>>;
|
|
243
|
+
signOut(): Promise<ApiResult<AuthSessionData>>;
|
|
244
|
+
resetPassword(email: string): Promise<ApiResult<AuthSessionData>>;
|
|
245
|
+
updatePassword(password: string): Promise<ApiResult<AuthSessionData>>;
|
|
246
|
+
refreshSession(): Promise<ApiResult<AuthSessionData>>;
|
|
247
|
+
initialize(): Promise<void>;
|
|
248
|
+
cleanup(): void;
|
|
249
|
+
protected doInitialize(): Promise<void>;
|
|
250
|
+
protected doCleanup(): void;
|
|
251
|
+
private startSessionRestoration;
|
|
252
|
+
private finishSessionRestoration;
|
|
253
|
+
private clearRestorationTimeout;
|
|
254
|
+
/**
|
|
255
|
+
* Clear pace-core persistence entries from sessionStorage
|
|
256
|
+
* This includes dialog, form, and datatable persistence
|
|
257
|
+
*
|
|
258
|
+
* @param userId - Optional user ID to clear only that user's persistence.
|
|
259
|
+
* If not provided, clears all pace-core persistence (for user changes).
|
|
260
|
+
* @param clearUnscoped - If true, also clears old unscoped keys (without :user: prefix)
|
|
261
|
+
*/
|
|
262
|
+
private clearPersistenceOnLogin;
|
|
263
|
+
private handleSignedOut;
|
|
264
|
+
private handleSignedInOrTokenRefreshed;
|
|
265
|
+
private handleInitialSession;
|
|
266
|
+
private setupAuthStateListener;
|
|
267
|
+
private restoreSession;
|
|
268
|
+
/**
|
|
269
|
+
* Automatically track user session using rbac_session_track
|
|
270
|
+
* This method is called automatically on SIGNED_IN and SIGNED_OUT events.
|
|
271
|
+
* It's non-blocking and failures are logged as warnings.
|
|
272
|
+
*/
|
|
273
|
+
private trackSession;
|
|
274
|
+
private setupErrorHandlers;
|
|
275
|
+
private removeErrorHandlers;
|
|
276
|
+
}
|
|
277
|
+
|
|
181
278
|
/**
|
|
182
279
|
* @file Auth Service Hook
|
|
183
280
|
* @package @jmruthers/pace-core
|
|
@@ -450,7 +547,7 @@ interface ActionColumnOptions {
|
|
|
450
547
|
*
|
|
451
548
|
* @template TData - The type of data records in the table
|
|
452
549
|
*/
|
|
453
|
-
interface CustomColumnOptions<
|
|
550
|
+
interface CustomColumnOptions<_TData extends DataRecord = DataRecord> {
|
|
454
551
|
header?: string;
|
|
455
552
|
cell?: (info: unknown) => React.ReactNode;
|
|
456
553
|
enableSorting?: boolean;
|
|
@@ -473,7 +570,7 @@ interface ColumnConfig<TData extends DataRecord> {
|
|
|
473
570
|
type: 'text' | 'number' | 'date' | 'boolean' | 'custom';
|
|
474
571
|
options?: TextColumnOptions | NumberColumnOptions | DateColumnOptions | BooleanColumnOptions | CustomColumnOptions<TData>;
|
|
475
572
|
}
|
|
476
|
-
declare class ColumnFactory
|
|
573
|
+
declare class ColumnFactory {
|
|
477
574
|
/**
|
|
478
575
|
* Create a text column
|
|
479
576
|
*/
|
|
@@ -529,7 +626,7 @@ declare class ColumnFactory<TData extends DataRecord = DataRecord> {
|
|
|
529
626
|
* }
|
|
530
627
|
* ```
|
|
531
628
|
*/
|
|
532
|
-
declare function sum<TData extends DataRecord = DataRecord>(accessorKey: keyof TData | string): <TRow extends DataRecord = TData>(rows: TRow[],
|
|
629
|
+
declare function sum<TData extends DataRecord = DataRecord>(accessorKey: keyof TData | string): <TRow extends DataRecord = TData>(rows: TRow[], _column: DataTableColumn<TRow>) => number;
|
|
533
630
|
/**
|
|
534
631
|
* Creates an average aggregation function for a specific field.
|
|
535
632
|
*
|
|
@@ -545,7 +642,7 @@ declare function sum<TData extends DataRecord = DataRecord>(accessorKey: keyof T
|
|
|
545
642
|
* }
|
|
546
643
|
* ```
|
|
547
644
|
*/
|
|
548
|
-
declare function average<TData extends DataRecord = DataRecord>(accessorKey: keyof TData | string): <TRow extends DataRecord = TData>(rows: TRow[],
|
|
645
|
+
declare function average<TData extends DataRecord = DataRecord>(accessorKey: keyof TData | string): <TRow extends DataRecord = TData>(rows: TRow[], _column: DataTableColumn<TRow>) => number;
|
|
549
646
|
/**
|
|
550
647
|
* Creates a count aggregation function.
|
|
551
648
|
* Returns the number of rows in the group.
|
|
@@ -561,7 +658,7 @@ declare function average<TData extends DataRecord = DataRecord>(accessorKey: key
|
|
|
561
658
|
* }
|
|
562
659
|
* ```
|
|
563
660
|
*/
|
|
564
|
-
declare function count<TData extends DataRecord = DataRecord>(): <TRow extends DataRecord = TData>(rows: TRow[],
|
|
661
|
+
declare function count<TData extends DataRecord = DataRecord>(): <TRow extends DataRecord = TData>(rows: TRow[], _column: DataTableColumn<TRow>) => number;
|
|
565
662
|
/**
|
|
566
663
|
* Creates a minimum aggregation function for a specific field.
|
|
567
664
|
*
|
|
@@ -577,7 +674,7 @@ declare function count<TData extends DataRecord = DataRecord>(): <TRow extends D
|
|
|
577
674
|
* }
|
|
578
675
|
* ```
|
|
579
676
|
*/
|
|
580
|
-
declare function min<TData extends DataRecord = DataRecord>(accessorKey: keyof TData | string): <TRow extends DataRecord = TData>(rows: TRow[],
|
|
677
|
+
declare function min<TData extends DataRecord = DataRecord>(accessorKey: keyof TData | string): <TRow extends DataRecord = TData>(rows: TRow[], _column: DataTableColumn<TRow>) => number | null;
|
|
581
678
|
/**
|
|
582
679
|
* Creates a maximum aggregation function for a specific field.
|
|
583
680
|
*
|
|
@@ -593,7 +690,7 @@ declare function min<TData extends DataRecord = DataRecord>(accessorKey: keyof T
|
|
|
593
690
|
* }
|
|
594
691
|
* ```
|
|
595
692
|
*/
|
|
596
|
-
declare function max<TData extends DataRecord = DataRecord>(accessorKey: keyof TData | string): <TRow extends DataRecord = TData>(rows: TRow[],
|
|
693
|
+
declare function max<TData extends DataRecord = DataRecord>(accessorKey: keyof TData | string): <TRow extends DataRecord = TData>(rows: TRow[], _column: DataTableColumn<TRow>) => number | null;
|
|
597
694
|
|
|
598
695
|
/**
|
|
599
696
|
* @file Export Utilities for DataTable
|
|
@@ -722,6 +819,169 @@ declare function exportToCSV<TData extends DataRecord>(data: TData[], columns: E
|
|
|
722
819
|
sanitizeForSecurity?: boolean;
|
|
723
820
|
}): Promise<void>;
|
|
724
821
|
|
|
822
|
+
/**
|
|
823
|
+
* Props for AppSwitcher component.
|
|
824
|
+
*/
|
|
825
|
+
interface AppSwitcherProps {
|
|
826
|
+
/** Current app name to exclude from the list */
|
|
827
|
+
currentAppName: string;
|
|
828
|
+
/** Custom trigger element (logo) */
|
|
829
|
+
trigger?: React__default.ReactNode;
|
|
830
|
+
/** Optional className for styling */
|
|
831
|
+
className?: string;
|
|
832
|
+
/** Whether to show the switcher (defaults to true if apps are available) */
|
|
833
|
+
showSwitcher?: boolean;
|
|
834
|
+
}
|
|
835
|
+
declare function AppSwitcher({ currentAppName, trigger, className, showSwitcher, }: AppSwitcherProps): react_jsx_runtime.JSX.Element | null;
|
|
836
|
+
|
|
837
|
+
/**
|
|
838
|
+
* @file useAccessibleApps Hook
|
|
839
|
+
* @package @jmruthers/pace-core
|
|
840
|
+
* @module Hooks
|
|
841
|
+
* @since 0.6.0
|
|
842
|
+
*
|
|
843
|
+
* Hook to fetch all apps the current user has access to based on rbac_event_app_roles.
|
|
844
|
+
* Returns distinct apps with their metadata, excluding the current app.
|
|
845
|
+
*/
|
|
846
|
+
/**
|
|
847
|
+
* App information returned by the hook.
|
|
848
|
+
*/
|
|
849
|
+
interface AccessibleApp {
|
|
850
|
+
/** App UUID */
|
|
851
|
+
id: string;
|
|
852
|
+
/** App name (e.g., 'CAKE', 'TRAC') */
|
|
853
|
+
name: string;
|
|
854
|
+
/** Display name for the app */
|
|
855
|
+
displayName: string;
|
|
856
|
+
}
|
|
857
|
+
/**
|
|
858
|
+
* Return type for useAccessibleApps hook.
|
|
859
|
+
*/
|
|
860
|
+
interface UseAccessibleAppsReturn {
|
|
861
|
+
/** Array of accessible apps */
|
|
862
|
+
apps: AccessibleApp[];
|
|
863
|
+
/** Whether the query is loading */
|
|
864
|
+
loading: boolean;
|
|
865
|
+
/** Error if query failed */
|
|
866
|
+
error: Error | null;
|
|
867
|
+
/** Refetch the apps */
|
|
868
|
+
refetch: () => Promise<void>;
|
|
869
|
+
}
|
|
870
|
+
/**
|
|
871
|
+
* Hook to fetch all apps the current user has access to.
|
|
872
|
+
*
|
|
873
|
+
* Queries rbac_event_app_roles to find all apps where the user has active roles,
|
|
874
|
+
* then joins with rbac_apps to get app details. Excludes the current app.
|
|
875
|
+
*
|
|
876
|
+
* @param currentAppName - The name of the current app to exclude from results
|
|
877
|
+
* @returns Object with apps array, loading state, error, and refetch function
|
|
878
|
+
*
|
|
879
|
+
* @example
|
|
880
|
+
* ```tsx
|
|
881
|
+
* import { useAccessibleApps } from '@jmruthers/pace-core';
|
|
882
|
+
* import { useUnifiedAuth } from '@jmruthers/pace-core/providers';
|
|
883
|
+
*
|
|
884
|
+
* function AppSwitcher() {
|
|
885
|
+
* const { appName } = useUnifiedAuth();
|
|
886
|
+
* const { apps, loading, error } = useAccessibleApps(appName);
|
|
887
|
+
*
|
|
888
|
+
* if (loading) return <div>Loading apps...</div>;
|
|
889
|
+
* if (error) return <div>Error: {error.message}</div>;
|
|
890
|
+
*
|
|
891
|
+
* return (
|
|
892
|
+
* <select>
|
|
893
|
+
* {apps.map(app => (
|
|
894
|
+
* <option key={app.id} value={app.name}>
|
|
895
|
+
* {app.displayName}
|
|
896
|
+
* </option>
|
|
897
|
+
* ))}
|
|
898
|
+
* </select>
|
|
899
|
+
* );
|
|
900
|
+
* }
|
|
901
|
+
* ```
|
|
902
|
+
*/
|
|
903
|
+
declare function useAccessibleApps(currentAppName?: string): UseAccessibleAppsReturn;
|
|
904
|
+
|
|
905
|
+
/**
|
|
906
|
+
* @file Build App URL Utility
|
|
907
|
+
* @package @jmruthers/pace-core
|
|
908
|
+
* @module Utils/App
|
|
909
|
+
* @since 0.6.0
|
|
910
|
+
*
|
|
911
|
+
* Constructs URLs for switching between pace apps.
|
|
912
|
+
* Handles both development (port-based) and production (subdomain) environments.
|
|
913
|
+
*/
|
|
914
|
+
/**
|
|
915
|
+
* Options for building app URLs.
|
|
916
|
+
*/
|
|
917
|
+
interface BuildAppUrlOptions {
|
|
918
|
+
/** The app name to navigate to */
|
|
919
|
+
appName: string;
|
|
920
|
+
/** Optional path to navigate to (defaults to '/') */
|
|
921
|
+
path?: string;
|
|
922
|
+
/** Optional port override for development */
|
|
923
|
+
port?: number;
|
|
924
|
+
}
|
|
925
|
+
/**
|
|
926
|
+
* Builds a URL for switching to another pace app.
|
|
927
|
+
*
|
|
928
|
+
* In development: Uses port-based URLs (e.g., `http://localhost:8091/`)
|
|
929
|
+
* In production: Uses subdomain pattern (e.g., `https://cake.example.com/`)
|
|
930
|
+
*
|
|
931
|
+
* @param options - URL building options
|
|
932
|
+
* @returns The full URL to the app
|
|
933
|
+
*
|
|
934
|
+
* @example
|
|
935
|
+
* ```ts
|
|
936
|
+
* // Development
|
|
937
|
+
* buildAppUrl({ appName: 'CAKE' });
|
|
938
|
+
* // Returns: 'http://localhost:8091/'
|
|
939
|
+
*
|
|
940
|
+
* // Production
|
|
941
|
+
* buildAppUrl({ appName: 'CAKE' });
|
|
942
|
+
* // Returns: 'https://cake.example.com/'
|
|
943
|
+
*
|
|
944
|
+
* // With custom path
|
|
945
|
+
* buildAppUrl({ appName: 'TRAC', path: '/dashboard' });
|
|
946
|
+
* // Returns: 'http://localhost:8092/dashboard' (dev) or 'https://trac.example.com/dashboard' (prod)
|
|
947
|
+
* ```
|
|
948
|
+
*/
|
|
949
|
+
declare function buildAppUrl(options: BuildAppUrlOptions): string;
|
|
950
|
+
|
|
951
|
+
/**
|
|
952
|
+
* @file App Port Map Configuration
|
|
953
|
+
* @package @jmruthers/pace-core
|
|
954
|
+
* @module Utils/App
|
|
955
|
+
* @since 0.6.0
|
|
956
|
+
*
|
|
957
|
+
* Maps app names to development server ports.
|
|
958
|
+
* Used by buildAppUrl to construct localhost URLs in development.
|
|
959
|
+
*/
|
|
960
|
+
/**
|
|
961
|
+
* Default port mapping for pace apps in development.
|
|
962
|
+
* Maps app names (uppercase) to their development server ports.
|
|
963
|
+
*/
|
|
964
|
+
declare const DEFAULT_APP_PORT_MAP: Record<string, number>;
|
|
965
|
+
/**
|
|
966
|
+
* Get the port for an app in development.
|
|
967
|
+
*
|
|
968
|
+
* @param appName - The app name (case-insensitive)
|
|
969
|
+
* @returns The port number, or undefined if not found
|
|
970
|
+
*
|
|
971
|
+
* @example
|
|
972
|
+
* ```ts
|
|
973
|
+
* const port = getAppPort('CAKE'); // Returns 8091
|
|
974
|
+
* const port = getAppPort('cake'); // Returns 8091 (case-insensitive)
|
|
975
|
+
* ```
|
|
976
|
+
*/
|
|
977
|
+
declare function getAppPort(appName: string): number | undefined;
|
|
978
|
+
/**
|
|
979
|
+
* Get all registered app ports.
|
|
980
|
+
*
|
|
981
|
+
* @returns Record of app names to ports
|
|
982
|
+
*/
|
|
983
|
+
declare function getAllAppPorts(): Record<string, number>;
|
|
984
|
+
|
|
725
985
|
/**
|
|
726
986
|
* Storage configuration for pace-core
|
|
727
987
|
*/
|
|
@@ -777,13 +1037,15 @@ declare function generateFilePath(options: StorageUploadOptions, fileName: strin
|
|
|
777
1037
|
*/
|
|
778
1038
|
declare function generateUniqueFileName(originalName: string): string;
|
|
779
1039
|
/**
|
|
780
|
-
* Extract file metadata from a File object
|
|
1040
|
+
* Extract file metadata from a File object.
|
|
1041
|
+
* @returns ApiResult with metadata on success; optional dimensions/hash are best-effort.
|
|
781
1042
|
*/
|
|
782
|
-
declare function extractFileMetadata(file: File, options: StorageUploadOptions, uploadedBy: string): Promise<StorageFileMetadata
|
|
1043
|
+
declare function extractFileMetadata(file: File, options: StorageUploadOptions, uploadedBy: string): Promise<ApiResult<StorageFileMetadata>>;
|
|
783
1044
|
/**
|
|
784
|
-
* Upload a file to Supabase storage with app segregation
|
|
1045
|
+
* Upload a file to Supabase storage with app segregation.
|
|
1046
|
+
* Returns ApiResult with path, optional publicUrl and metadata on success.
|
|
785
1047
|
*/
|
|
786
|
-
declare function uploadFile(supabase: SupabaseClient, file: File, options: StorageUploadOptions): Promise<
|
|
1048
|
+
declare function uploadFile(supabase: SupabaseClient, file: File, options: StorageUploadOptions): Promise<ApiResult<StorageUploadSuccess>>;
|
|
787
1049
|
/**
|
|
788
1050
|
* Get a public URL for a file
|
|
789
1051
|
* @param supabase - Supabase client instance
|
|
@@ -793,24 +1055,17 @@ declare function uploadFile(supabase: SupabaseClient, file: File, options: Stora
|
|
|
793
1055
|
*/
|
|
794
1056
|
declare function getPublicUrl(supabase: SupabaseClient, path: string, isPublic?: boolean): string;
|
|
795
1057
|
/**
|
|
796
|
-
* Get a signed URL for a protected file
|
|
797
|
-
* Private files are always in the 'files' bucket
|
|
798
|
-
* @
|
|
799
|
-
* @param path - File path within the bucket
|
|
800
|
-
* @param options - URL options including expiry time
|
|
801
|
-
* @returns Signed URL with expiration timestamp, or null if failed
|
|
1058
|
+
* Get a signed URL for a protected file.
|
|
1059
|
+
* Private files are always in the 'files' bucket.
|
|
1060
|
+
* @returns ApiResult with url and expiresAt on success.
|
|
802
1061
|
*/
|
|
803
|
-
declare function getSignedUrl(supabase: SupabaseClient, path: string, options: StorageUrlOptions): Promise<{
|
|
1062
|
+
declare function getSignedUrl(supabase: SupabaseClient, path: string, options: StorageUrlOptions): Promise<ApiResult<{
|
|
804
1063
|
url: string;
|
|
805
1064
|
expiresAt: string;
|
|
806
|
-
}
|
|
1065
|
+
}>>;
|
|
807
1066
|
/**
|
|
808
|
-
* Generate URLs for multiple file references in parallel
|
|
809
|
-
*
|
|
810
|
-
* @param supabase - Supabase client instance
|
|
811
|
-
* @param fileReferences - Array of file references to generate URLs for
|
|
812
|
-
* @param options - URL options including expiry time and organisation ID
|
|
813
|
-
* @returns Map of file ID to URL string (only includes successful URL generations)
|
|
1067
|
+
* Generate URLs for multiple file references in parallel (best-effort; partial success returns ok with map).
|
|
1068
|
+
* @returns ApiResult with Map of file ID to URL string.
|
|
814
1069
|
*/
|
|
815
1070
|
declare function generateFileUrlsBatch(supabase: SupabaseClient, fileReferences: Array<{
|
|
816
1071
|
id: string;
|
|
@@ -818,62 +1073,44 @@ declare function generateFileUrlsBatch(supabase: SupabaseClient, fileReferences:
|
|
|
818
1073
|
is_public: boolean;
|
|
819
1074
|
}>, options: StorageUrlOptions & {
|
|
820
1075
|
orgId?: string;
|
|
821
|
-
}): Promise<Map<string, string
|
|
1076
|
+
}): Promise<ApiResult<Map<string, string>>>;
|
|
822
1077
|
/**
|
|
823
|
-
* Delete a file from storage
|
|
824
|
-
* @
|
|
825
|
-
* @param path - File path within the bucket
|
|
826
|
-
* @param isPublic - Whether the file is in the public-files bucket (default: false)
|
|
827
|
-
* @returns Success status and optional error message
|
|
1078
|
+
* Delete a file from storage.
|
|
1079
|
+
* @returns ApiResult<void> on success.
|
|
828
1080
|
*/
|
|
829
|
-
declare function deleteFile(supabase: SupabaseClient, path: string, isPublic?: boolean): Promise<
|
|
830
|
-
success: boolean;
|
|
831
|
-
error?: string;
|
|
832
|
-
}>;
|
|
1081
|
+
declare function deleteFile(supabase: SupabaseClient, path: string, isPublic?: boolean): Promise<ApiResult<void>>;
|
|
833
1082
|
/**
|
|
834
|
-
* List files in an organization scope
|
|
835
|
-
* @
|
|
836
|
-
* @param options - List options including bucket selection via isPublic
|
|
837
|
-
* @returns List of files with metadata
|
|
1083
|
+
* List files in an organization scope.
|
|
1084
|
+
* @returns ApiResult with files, totalCount, hasMore on success.
|
|
838
1085
|
*/
|
|
839
1086
|
declare function listFiles(supabase: SupabaseClient, options: StorageListOptions & {
|
|
840
1087
|
isPublic?: boolean;
|
|
841
|
-
}): Promise<StorageListResult
|
|
1088
|
+
}): Promise<ApiResult<StorageListResult>>;
|
|
842
1089
|
/**
|
|
843
|
-
* Download a file from storage
|
|
844
|
-
* @
|
|
845
|
-
* @param path - File path within the bucket
|
|
846
|
-
* @param isPublic - Whether the file is in the public-files bucket (default: false)
|
|
847
|
-
* @returns File blob with metadata, or null if failed
|
|
1090
|
+
* Download a file from storage.
|
|
1091
|
+
* @returns ApiResult with blob and metadata on success.
|
|
848
1092
|
*/
|
|
849
|
-
declare function downloadFile(supabase: SupabaseClient, path: string, isPublic?: boolean): Promise<{
|
|
1093
|
+
declare function downloadFile(supabase: SupabaseClient, path: string, isPublic?: boolean): Promise<ApiResult<{
|
|
850
1094
|
blob: Blob;
|
|
851
1095
|
metadata: {
|
|
852
1096
|
name: string;
|
|
853
1097
|
size: number;
|
|
854
1098
|
type: string;
|
|
855
1099
|
};
|
|
856
|
-
}
|
|
1100
|
+
}>>;
|
|
857
1101
|
/**
|
|
858
|
-
* Move a file to archived location (soft delete)
|
|
859
|
-
* @
|
|
860
|
-
* @param path - File path within the bucket
|
|
861
|
-
* @param options - Archive options including bucket selection via isPublic
|
|
1102
|
+
* Move a file to archived location (soft delete).
|
|
1103
|
+
* @returns ApiResult<void> on success.
|
|
862
1104
|
*/
|
|
863
1105
|
declare function archiveFile(supabase: SupabaseClient, path: string, options: {
|
|
864
1106
|
appName: string;
|
|
865
1107
|
orgId?: string;
|
|
866
1108
|
userId?: string;
|
|
867
1109
|
isPublic?: boolean;
|
|
868
|
-
}): Promise<
|
|
869
|
-
success: boolean;
|
|
870
|
-
error?: string;
|
|
871
|
-
}>;
|
|
1110
|
+
}): Promise<ApiResult<void>>;
|
|
872
1111
|
|
|
873
1112
|
/**
|
|
874
|
-
*
|
|
875
|
-
*
|
|
876
|
-
* Provides app-segregated file storage with organisation-scoped access
|
|
1113
|
+
* StorageUtils class for convenient access to storage functions
|
|
877
1114
|
*/
|
|
878
1115
|
|
|
879
1116
|
/**
|
|
@@ -892,4 +1129,4 @@ declare class StorageUtils {
|
|
|
892
1129
|
static archiveFile: typeof archiveFile;
|
|
893
1130
|
}
|
|
894
1131
|
|
|
895
|
-
export { APP_PATH_MAPPING, ColumnFactory, DEFAULT_FILE_SIZE_LIMIT, DataRecord, DataTableAction, DataTableColumn, type ExportColumn, FILE_SIZE_LIMITS, FileSizeLimits, InactivityWarningModal, type InactivityWarningModalProps,
|
|
1132
|
+
export { APP_PATH_MAPPING, type AccessibleApp, ApiResult, AppSwitcher, type AppSwitcherProps, AuthSessionData, type BuildAppUrlOptions, ColumnFactory, DEFAULT_APP_PORT_MAP, DEFAULT_FILE_SIZE_LIMIT, DataRecord, DataTableAction, DataTableColumn, type ExportColumn, FILE_SIZE_LIMITS, FileSizeLimits, InactivityWarningModal, type InactivityWarningModalProps, Organisation, OrganisationContextType, STORAGE_CONFIG, StorageConfig, StorageFileMetadata, StorageListOptions, StorageListResult, StorageUploadOptions, StorageUploadSuccess, StorageUrlOptions, StorageUtils, type UseAccessibleAppsReturn, type UseInactivityTrackerOptions, type UseInactivityTrackerReturn, archiveFile, average, buildAppUrl, count, deleteFile, downloadFile, exportToCSV, exportToCSVWithTableRows, extractFileMetadata, generateCSVContent, generateFilePath, generateFileUrlsBatch, generateUniqueFileName, getAllAppPorts, getAppPort, getBucketName, getFileSizeLimit, getPublicUrl, getSignedUrl, listFiles, max, min, sum, uploadFile, useAccessibleApps, useAuthService, useEventService, useInactivityService, useInactivityTracker, useOrganisationService, useOrganisations, useSessionRestoration, validateFileSize };
|