@jmruthers/pace-core 0.6.10 → 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 +13 -3
- package/audit-tool/audits/03-architecture.cjs +78 -4
- package/audit-tool/audits/04-code-quality.cjs +9 -2
- package/audit-tool/audits/05-styling.cjs +19 -7
- package/audit-tool/audits/06-security-rbac.cjs +105 -14
- 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 +1 -0
- package/cursor-rules/03-architecture.mdc +3 -1
- package/cursor-rules/04-code-quality.mdc +1 -0
- package/cursor-rules/05-styling.mdc +41 -7
- package/cursor-rules/06-security-rbac.mdc +2 -1
- 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-SAXFG4XI.js → DataTable-EFYP2QLE.js} +10 -7
- package/dist/{InactivityServiceProvider-DHryoh6K.d.ts → InactivityServiceProvider-BbxwwDz1.d.ts} +10 -1
- package/dist/{UnifiedAuthProvider-CiBAl9-s.d.ts → UnifiedAuthProvider-Bkt_tzdS.d.ts} +56 -24
- package/dist/{api-F47QJ7FX.js → api-BZR2CYXL.js} +3 -2
- package/dist/api-result-USV1Czr-.d.ts +51 -0
- package/dist/{audit-Z6ZZBWLU.js → audit-HI2DHUVU.js} +2 -1
- package/dist/{auth-BZOJqrdd.d.ts → auth-JvdRVaud.d.ts} +1 -1
- package/dist/{chunk-KSNLMI7N.js → chunk-2DL2WSOE.js} +1 -155
- package/dist/{chunk-MPY44PWB.js → chunk-2OEVOGGR.js} +4648 -3560
- package/dist/chunk-44CNXN4P.js +15 -0
- package/dist/{chunk-Y4PF6HIM.js → chunk-4R3T5ENU.js} +867 -786
- package/dist/{chunk-LNHFAF4X.js → chunk-7A6IMHH2.js} +289 -247
- package/dist/chunk-CU2BU2MQ.js +2 -0
- package/dist/{chunk-JJEYZ3DX.js → chunk-D6BMFMQZ.js} +37 -2
- package/dist/{chunk-BCTXBU6U.js → chunk-ENLXB7GP.js} +88 -71
- package/dist/{chunk-FBZ7U3ID.js → chunk-J2KQK6DG.js} +937 -987
- package/dist/{chunk-TFIPNIPE.js → chunk-KJXRL3XE.js} +3300 -2245
- package/dist/{chunk-3GWSPISD.js → chunk-L5LFKKLJ.js} +1 -1
- package/dist/{chunk-X5EAU5G7.js → chunk-PCSHBLPB.js} +132 -114
- package/dist/{chunk-NIU6DPQV.js → chunk-QRYSEPHB.js} +2 -0
- package/dist/{chunk-KYURMOQM.js → chunk-V7FTM2LU.js} +423 -320
- package/dist/chunk-WY6Y7KC3.js +264 -0
- package/dist/{chunk-FN52B75D.js → chunk-XOJME5T7.js} +176 -15
- package/dist/{chunk-7YDC7LMU.js → chunk-XPFVT3GN.js} +71 -66
- package/dist/{chunk-66R6RLUZ.js → chunk-YFTFFJIV.js} +3 -3
- package/dist/{chunk-W46INAVW.js → chunk-YYTWKVHO.js} +688 -570
- package/dist/components.d.ts +8 -7
- package/dist/components.js +17 -15
- package/dist/{database.generated-DT8JTZiP.d.ts → database.generated-qkdoiVrJ.d.ts} +45 -10
- package/dist/eslint-rules/index.cjs +3 -0
- package/dist/eslint-rules/rules/03-architecture.cjs +74 -0
- package/dist/eslint-rules/rules/06-security-rbac.cjs +74 -0
- package/dist/{event-WTAQuGcq.d.ts → event-BfCox3N2.d.ts} +36 -10
- package/dist/{file-reference-BavO2eQj.d.ts → file-reference-DU1hcawx.d.ts} +29 -13
- package/dist/hooks.d.ts +22 -9
- package/dist/hooks.js +34 -25
- package/dist/icons/index.d.ts +1 -0
- package/dist/icons/index.js +1 -0
- package/dist/index.d.ts +66 -177
- package/dist/index.js +316 -340
- package/dist/pagination-BW1mqywp.d.ts +201 -0
- package/dist/providers.d.ts +6 -5
- package/dist/providers.js +5 -3
- package/dist/rbac/index.d.ts +123 -138
- package/dist/rbac/index.js +10 -8
- package/dist/theming/runtime.d.ts +19 -2
- package/dist/theming/runtime.js +1 -1
- package/dist/{timezone-K-ptz3HO.d.ts → timezone-BTWWXKVY.d.ts} +1 -1
- package/dist/types.d.ts +17 -10
- package/dist/types.js +1 -0
- package/dist/{usePublicPageContext-vxBlEHO9.d.ts → usePublicPageContext-B91dGYW1.d.ts} +433 -356
- package/dist/{usePublicRouteParams-G3Ks53mk.d.ts → usePublicRouteParams-BgV6VhMi.d.ts} +73 -4
- package/dist/utils.d.ts +163 -145
- package/dist/utils.js +42 -25
- package/docs/api/modules.md +782 -643
- 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 +176 -3
- package/docs/migration/ApiResult-migration.md +25 -0
- 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 +33 -16
- 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 +66 -0
- package/docs/standards/7-api-tech-stack-standards.md +25 -14
- 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/test-setup-for-consumers.md +2 -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 +20 -0
- package/package.json +14 -20
- package/scripts/{build-docs-incremental.js → build-docs.js} +3 -2
- package/scripts/setup.cjs +536 -0
- package/scripts/validate.cjs +480 -0
- package/src/__tests__/helpers/{__tests__/component-test-utils.test.tsx → component-test-utils.test.tsx} +3 -3
- package/src/__tests__/helpers/{__tests__/optimized-test-setup.test.ts → optimized-test-setup.test.ts} +2 -2
- package/src/__tests__/helpers/{__tests__/supabaseMock.test.ts → supabaseMock.test.ts} +2 -2
- package/src/__tests__/helpers/{__tests__/test-providers.test.tsx → test-providers.test.tsx} +1 -1
- package/src/__tests__/helpers/test-providers.tsx +37 -39
- package/src/__tests__/helpers/{__tests__/test-utils.test.tsx → test-utils.test.tsx} +4 -3
- package/src/__tests__/helpers/{__tests__/timer-utils.test.ts → timer-utils.test.ts} +2 -2
- package/src/assets/app-icons/index.test.ts +304 -0
- package/src/components/AddressField/AddressField.test.tsx +1 -1
- package/src/components/AddressField/AddressField.tsx +238 -212
- package/src/components/Button/Button.tsx +1 -1
- package/src/components/Card/Card.test.tsx +172 -17
- package/src/components/Card/Card.tsx +19 -10
- package/src/components/ContextSelector/ContextSelector.internals.tsx +204 -0
- package/src/components/ContextSelector/{__tests__/ContextSelector.test.tsx → ContextSelector.test.tsx} +6 -6
- 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/{__tests__/DataTable.comprehensive.test.tsx → DataTable.comprehensive.test.tsx} +6 -6
- package/src/components/DataTable/{__tests__/DataTable.default-state.test.tsx → DataTable.default-state.test.tsx} +5 -5
- package/src/components/DataTable/{__tests__/DataTable.export.test.tsx → DataTable.export.test.tsx} +10 -10
- package/src/components/DataTable/{__tests__/DataTable.grouping-aggregation.test.tsx → DataTable.grouping-aggregation.test.tsx} +6 -6
- package/src/components/DataTable/{__tests__/DataTable.hooks.test.tsx → DataTable.hooks.test.tsx} +6 -6
- package/src/components/DataTable/{__tests__/DataTable.select-label-display.test.tsx → DataTable.select-label-display.test.tsx} +6 -6
- package/src/components/DataTable/DataTable.test.tsx +787 -416
- package/src/components/DataTable/DataTable.tsx +12 -12
- package/src/components/DataTable/DataTableCore.integration.test.tsx +458 -0
- package/src/components/DataTable/{__tests__/DataTableCore.test-setup.ts → DataTableCore.test-setup.ts} +10 -9
- package/src/components/DataTable/{__tests__/DataTableCore.test.tsx → DataTableCore.test.tsx} +8 -8
- package/src/components/DataTable/{__tests__/README.md → README.md} +17 -7
- package/src/components/DataTable/TESTING.md +101 -0
- package/src/components/DataTable/{__tests__/a11y.basic.test.tsx → a11y.basic.test.tsx} +34 -34
- package/src/components/DataTable/components/DataTableCore.tsx +104 -864
- package/src/components/DataTable/components/{__tests__/GroupingDropdown.test.tsx → GroupingDropdown.test.tsx} +17 -8
- package/src/components/DataTable/components/GroupingDropdown.tsx +2 -2
- package/src/components/DataTable/components/ImportModal.tsx +61 -559
- package/src/components/DataTable/components/ImportModalFileSection.tsx +148 -0
- package/src/components/DataTable/context/{__tests__/DataTableContext.test.tsx → DataTableContext.test.tsx} +2 -2
- package/src/components/DataTable/context/DataTableContext.tsx +7 -6
- package/src/components/DataTable/core/{__tests__/ColumnFactory.test.ts → ColumnFactory.test.ts} +2 -2
- package/src/components/DataTable/hooks/{__tests__/useColumnOrderPersistence.test.ts → useColumnOrderPersistence.test.ts} +2 -2
- package/src/components/DataTable/hooks/{__tests__/useColumnVisibilityPersistence.test.ts → useColumnVisibilityPersistence.test.ts} +2 -2
- package/src/components/DataTable/hooks/{__tests__/useDataTableConfiguration.test.ts → useDataTableConfiguration.test.ts} +3 -3
- package/src/components/DataTable/hooks/useDataTableConfiguration.ts +14 -2
- package/src/components/DataTable/hooks/{__tests__/useDataTableDataPipeline.test.ts → useDataTableDataPipeline.test.ts} +6 -6
- 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/{__tests__/useDataTablePermissions.test.ts → useDataTablePermissions.test.ts} +11 -11
- package/src/components/DataTable/hooks/useDataTablePermissions.ts +79 -247
- 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/{__tests__/useDataTableState.test.ts → useDataTableState.test.ts} +47 -5
- package/src/components/DataTable/hooks/useDataTableState.ts +145 -94
- 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/{__tests__/useEffectiveColumnOrder.test.ts → useEffectiveColumnOrder.test.ts} +2 -2
- package/src/components/DataTable/hooks/{__tests__/useHierarchicalState.test.ts → useHierarchicalState.test.ts} +2 -2
- package/src/components/DataTable/{components/hooks → hooks}/useImportModalFocus.test.ts +3 -3
- package/src/components/DataTable/{components/hooks → hooks}/useImportModalFocus.ts +2 -2
- package/src/components/DataTable/hooks/useImportModalState.test.ts +390 -0
- package/src/components/DataTable/hooks/useImportModalState.ts +345 -0
- package/src/components/DataTable/hooks/{__tests__/useKeyboardNavigation.test.ts → useKeyboardNavigation.test.ts} +3 -3
- package/src/components/DataTable/hooks/useKeyboardNavigation.ts +309 -269
- package/src/components/DataTable/{components/hooks → hooks}/usePermissionTracking.test.ts +3 -3
- package/src/components/DataTable/{components/hooks → hooks}/usePermissionTracking.ts +3 -3
- package/src/components/DataTable/hooks/{__tests__/useServerSideDataEffect.test.ts → useServerSideDataEffect.test.ts} +2 -2
- package/src/components/DataTable/hooks/useServerSideDataEffect.ts +14 -3
- package/src/components/DataTable/hooks/{__tests__/useTableColumns.test.ts → useTableColumns.test.ts} +2 -2
- package/src/components/DataTable/hooks/{__tests__/useTableHandlers.test.ts → useTableHandlers.test.ts} +25 -4
- package/src/components/DataTable/hooks/useTableHandlers.ts +5 -2
- package/src/components/DataTable/index.ts +18 -17
- package/src/components/DataTable/{__tests__/keyboard.test.tsx → keyboard.test.tsx} +41 -63
- package/src/components/DataTable/{__tests__/mocks → mocks}/MockRBACProvider.tsx +1 -1
- package/src/components/DataTable/{__tests__/pagination.modes.test.tsx → pagination.modes.test.tsx} +6 -6
- package/src/components/DataTable/{__tests__/ssr.strict-mode.test.tsx → ssr.strict-mode.test.tsx} +2 -2
- package/src/components/DataTable/{__tests__/styles.test.ts → styles.test.ts} +1 -4
- package/src/components/DataTable/styles.ts +0 -1
- package/src/components/DataTable/test-utils/MockDataTableComponents.tsx +55 -0
- package/src/components/DataTable/{__tests__/test-utils → test-utils}/dataFactories.ts +2 -2
- package/src/components/DataTable/test-utils/featureConfig.ts +10 -0
- package/src/components/DataTable/{__tests__/test-utils/sharedTestUtils.tsx → test-utils/sharedTestUtils.ts} +97 -66
- package/src/components/DataTable/{__tests__/test-utils.ts → test-utils.ts} +1 -1
- 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/{components/__tests__ → ui/layout}/DataTableCore.test.tsx +430 -28
- package/src/components/DataTable/ui/layout/DataTableCore.tsx +345 -0
- package/src/components/DataTable/{components/__tests__ → ui/layout}/DataTableErrorBoundary.test.tsx +4 -4
- package/src/components/DataTable/{components → ui/layout}/DataTableErrorBoundary.tsx +7 -7
- 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/{components → ui/modals}/DataTableModals.tsx +36 -28
- 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/{components/__tests__ → ui/shared}/AccessDeniedPage.test.tsx +2 -2
- package/src/components/DataTable/{components → ui/shared}/AccessDeniedPage.tsx +2 -2
- package/src/components/DataTable/{components/__tests__ → ui/shared}/ActionButtons.test.tsx +6 -4
- package/src/components/DataTable/{components → ui/shared}/ActionButtons.tsx +4 -4
- package/src/components/DataTable/{components/__tests__ → ui/shared}/ColumnFilter.test.tsx +29 -16
- package/src/components/DataTable/{components → ui/shared}/ColumnFilter.tsx +4 -4
- package/src/components/DataTable/{components/__tests__ → ui/shared}/PaginationControls.test.tsx +38 -16
- package/src/components/DataTable/{components → ui/shared}/PaginationControls.tsx +21 -15
- package/src/components/DataTable/{components/__tests__ → ui/shared}/SortIndicator.test.tsx +2 -2
- package/src/components/DataTable/{components → ui/shared}/SortIndicator.tsx +1 -1
- package/src/components/DataTable/{components/__tests__ → ui/table}/EditFields.test.tsx +3 -3
- package/src/components/DataTable/{components → ui/table}/EditFields.tsx +138 -69
- package/src/components/DataTable/{components/__tests__ → ui/table}/EditableRow.test.tsx +36 -27
- package/src/components/DataTable/{components → ui/table}/EditableRow.tsx +86 -104
- package/src/components/DataTable/{components/__tests__ → ui/table}/EmptyState.test.tsx +2 -62
- package/src/components/DataTable/{components → ui/table}/EmptyState.tsx +7 -15
- package/src/components/DataTable/{components/__tests__ → ui/table}/FilterRow.test.tsx +5 -4
- package/src/components/DataTable/{components → ui/table}/FilterRow.tsx +3 -3
- package/src/components/DataTable/{components/__tests__ → ui/table}/LoadingState.test.tsx +6 -10
- package/src/components/DataTable/{components → ui/table}/LoadingState.tsx +4 -4
- package/src/components/DataTable/{components/__tests__ → ui/table}/RowComponent.test.tsx +412 -17
- package/src/components/DataTable/{components → ui/table}/RowComponent.tsx +183 -177
- package/src/components/DataTable/{components/__tests__ → ui/table}/UnifiedTableBody.test.tsx +425 -16
- package/src/components/DataTable/ui/table/UnifiedTableBody.tsx +440 -0
- package/src/components/DataTable/{components/__tests__ → ui/table}/cellValueUtils.test.ts +2 -2
- package/src/components/DataTable/{components → ui/table}/cellValueUtils.ts +1 -1
- package/src/components/DataTable/{components/__tests__ → ui/toolbar}/BulkOperationsDropdown.test.tsx +12 -5
- package/src/components/DataTable/{components → ui/toolbar}/BulkOperationsDropdown.tsx +3 -3
- package/src/components/DataTable/{components/__tests__ → ui/toolbar}/ColumnVisibilityDropdown.test.tsx +7 -4
- package/src/components/DataTable/{components → ui/toolbar}/ColumnVisibilityDropdown.tsx +7 -7
- package/src/components/DataTable/{components/__tests__ → ui/toolbar}/DataTableToolbar.test.tsx +4 -4
- package/src/components/DataTable/{components → ui/toolbar}/DataTableToolbar.tsx +4 -4
- 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/{__tests__/a11yUtils.test.ts → a11yUtils.test.ts} +2 -2
- package/src/components/DataTable/utils/{__tests__/aggregationUtils.test.ts → aggregationUtils.test.ts} +3 -3
- package/src/components/DataTable/utils/{__tests__/columnUtils.test.ts → columnUtils.test.ts} +2 -2
- package/src/components/DataTable/utils/csvParse.test.ts +74 -0
- package/src/components/DataTable/utils/csvParse.ts +65 -0
- package/src/components/DataTable/utils/{__tests__/errorHandling.test.ts → errorHandling.test.ts} +2 -2
- package/src/components/DataTable/utils/{__tests__/exportUtils.test.ts → exportUtils.test.ts} +3 -3
- package/src/components/DataTable/utils/{__tests__/flexibleImport.test.ts → flexibleImport.test.ts} +2 -2
- package/src/components/DataTable/utils/flexibleImport.ts +3 -186
- package/src/components/DataTable/utils/{__tests__/hierarchicalSorting.test.ts → hierarchicalSorting.test.ts} +3 -3
- package/src/components/DataTable/utils/{__tests__/hierarchicalUtils.test.ts → hierarchicalUtils.test.ts} +3 -3
- 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/{__tests__/paginationUtils.test.ts → paginationUtils.test.ts} +2 -2
- package/src/components/DataTable/utils/paginationUtils.ts +6 -3
- package/src/components/DataTable/utils/{__tests__/performanceUtils.test.ts → performanceUtils.test.ts} +3 -3
- package/src/components/DataTable/utils/{__tests__/rowUtils.test.ts → rowUtils.test.ts} +3 -3
- package/src/components/DataTable/utils/{__tests__/selectFieldUtils.test.ts → selectFieldUtils.test.ts} +66 -3
- package/src/components/DataTable/utils/selectFieldUtils.ts +97 -60
- package/src/components/DatePickerWithTimezone/DatePickerWithTimezone.test.tsx +1 -1
- package/src/components/DateTimeField/DateTimeField.test.tsx +1 -1
- package/src/components/Dialog/Dialog.test-utils.ts +49 -0
- package/src/components/Dialog/Dialog.test.tsx +896 -89
- package/src/components/Dialog/Dialog.tsx +174 -882
- 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/FileDisplay/FileDisplay.test.tsx +40 -40
- package/src/components/FileDisplay/FileDisplay.tsx +24 -656
- 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/{hooks/__tests__ → components/FileDisplay}/useFileDisplay.test.ts +40 -42
- package/src/components/FileDisplay/useFileDisplay.ts +515 -0
- package/src/{hooks/__tests__ → components/FileDisplay}/useFileDisplay.unit.test.ts +406 -77
- package/src/components/FileDisplay/useFileDisplayData.ts +126 -0
- package/src/{hooks/public → components/FileDisplay}/usePublicFileDisplay.test.ts +94 -88
- package/src/components/FileDisplay/usePublicFileDisplay.ts +579 -0
- package/src/components/FileUpload/FileUpload.test.tsx +16 -10
- package/src/components/FileUpload/FileUpload.tsx +107 -525
- 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/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 +6 -292
- package/src/components/Footer/Footer.tsx +8 -125
- package/src/components/Form/Form.test.tsx +44 -27
- package/src/components/Form/Form.tsx +64 -287
- package/src/components/Form/useFormPersistence.ts +257 -0
- package/src/components/Header/Header.test.tsx +17 -18
- package/src/components/Header/Header.tsx +10 -1
- package/src/components/Input/Input.tsx +1 -1
- package/src/components/Label/Label.test.tsx +1 -1
- package/src/components/LoadingSpinner/LoadingSpinner.test.tsx +1 -1
- package/src/components/NavigationMenu/HierarchicalNavItem.tsx +104 -0
- package/src/components/NavigationMenu/NavigationMenu.test.tsx +1029 -26
- package/src/components/NavigationMenu/NavigationMenu.tsx +61 -361
- package/src/components/NavigationMenu/index.ts +6 -1
- package/src/components/NavigationMenu/navigationPermissionHelper.ts +188 -0
- package/src/components/NavigationMenu/{__tests__/useNavigationFiltering.test.ts → useNavigationFiltering.test.ts} +68 -53
- package/src/components/NavigationMenu/useNavigationFiltering.ts +197 -296
- package/src/components/NavigationMenu/useNavigationScope.ts +125 -0
- package/src/components/PaceAppLayout/PaceAppLayout.edge-cases.test.tsx +77 -62
- package/src/components/PaceAppLayout/PaceAppLayout.integration.test.tsx +3 -3
- package/src/components/PaceAppLayout/PaceAppLayout.security.test.tsx +16 -19
- package/src/components/PaceAppLayout/PaceAppLayout.test.tsx +529 -5
- package/src/components/PaceAppLayout/PaceAppLayout.tsx +280 -756
- 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 +31 -25
- package/src/components/PaceLoginPage/PaceLoginPage.tsx +31 -122
- package/src/components/PaceLoginPage/useLoginAppAccess.ts +153 -0
- package/src/components/Progress/Progress.tsx +1 -2
- package/src/components/ProtectedRoute/ProtectedRoute.tsx +29 -235
- package/src/components/ProtectedRoute/useProtectedRouteState.ts +128 -0
- package/src/components/ProtectedRoute/useVisibilityRedirectGrace.ts +89 -0
- package/src/components/PublicLayout/PublicLayout.test.tsx +217 -36
- package/src/components/PublicLayout/PublicPageLayout.tsx +132 -73
- package/src/components/PublicLayout/PublicPageProvider.tsx +5 -1
- package/src/components/Select/Select.test.tsx +1 -1
- package/src/components/Select/Select.tsx +28 -18
- package/src/components/Select/{__tests__/context.test.tsx → context.test.tsx} +3 -3
- package/src/components/Select/{utils/__tests__/text.test.tsx → text.test.tsx} +2 -2
- package/src/components/Select/{utils/text.ts → text.ts} +1 -1
- package/src/components/Select/{hooks/__tests__/useSelectEvents.test.ts → useSelectEvents.test.ts} +5 -5
- package/src/components/Select/{hooks/useSelectEvents.ts → useSelectEvents.ts} +2 -2
- package/src/components/Select/{hooks/__tests__/useSelectSearch.test.tsx → useSelectSearch.test.tsx} +7 -7
- package/src/components/Select/{hooks/useSelectSearch.ts → useSelectSearch.ts} +2 -2
- package/src/components/Select/{hooks/__tests__/useSelectState.test.ts → useSelectState.test.ts} +16 -2
- package/src/components/Select/{hooks/useSelectState.ts → useSelectState.ts} +3 -3
- package/src/components/Table/Table.test.tsx +348 -0
- package/src/components/Tabs/Tabs.test.tsx +270 -0
- package/src/components/Tabs/Tabs.tsx +1 -1
- package/src/components/Toast/Toast.test.tsx +420 -0
- package/src/components/{__tests__/index.test.ts → index.test.ts} +2 -2
- package/src/constants/{__tests__/performance.test.ts → performance.test.ts} +2 -2
- package/src/hooks/{__tests__/ServiceHooks.test.tsx → ServiceHooks.test.tsx} +8 -8
- package/src/hooks/{__tests__/hooks.integration.test.tsx → hooks.integration.test.tsx} +11 -11
- package/src/hooks/index.ts +7 -4
- package/src/hooks/{__tests__/index.unit.test.ts → index.unit.test.ts} +2 -2
- package/src/hooks/public/usePublicEvent.test.ts +1 -1
- package/src/hooks/public/usePublicEventLogo.test.ts +1 -1
- package/src/hooks/public/usePublicRouteParams.test.ts +1 -1
- package/src/hooks/services/useAuth.ts +9 -7
- package/src/hooks/useAddressAutocomplete.test.ts +22 -22
- package/src/hooks/useAddressAutocomplete.ts +90 -75
- package/src/hooks/{__tests__/useAppConfig.unit.test.ts → useAppConfig.unit.test.ts} +328 -22
- package/src/hooks/{__tests__/useComponentPerformance.unit.test.tsx → useComponentPerformance.unit.test.tsx} +27 -41
- package/src/hooks/useDataTablePerformance.ts +100 -120
- package/src/hooks/{__tests__/useDataTablePerformance.unit.test.ts → useDataTablePerformance.unit.test.ts} +5 -5
- package/src/hooks/{__tests__/useDataTableState.test.ts → useDataTableState.test.ts} +2 -2
- package/src/hooks/{__tests__/useDebounce.unit.test.ts → useDebounce.unit.test.ts} +2 -2
- package/src/hooks/useEventTheme.test.ts +4 -1
- package/src/hooks/useEventTheme.ts +49 -21
- package/src/hooks/useEvents.ts +41 -1
- package/src/hooks/{__tests__/useEvents.unit.test.ts → useEvents.unit.test.ts} +5 -5
- package/src/hooks/useFileReference.test.ts +44 -41
- package/src/hooks/useFileReference.ts +182 -173
- package/src/hooks/useFileUrl.ts +1 -1
- package/src/hooks/{__tests__/useFileUrl.unit.test.ts → useFileUrl.unit.test.ts} +26 -36
- package/src/hooks/{__tests__/useFileUrlCache.test.ts → useFileUrlCache.test.ts} +8 -8
- package/src/hooks/useFileUrlCache.ts +1 -1
- package/src/hooks/{__tests__/useFocusManagement.unit.test.ts → useFocusManagement.unit.test.ts} +2 -2
- package/src/hooks/{__tests__/useFocusTrap.unit.test.tsx → useFocusTrap.unit.test.tsx} +2 -2
- package/src/hooks/{__tests__/useFormDialog.test.ts → useFormDialog.test.ts} +2 -2
- package/src/hooks/useInactivityTracker.ts +138 -131
- package/src/hooks/{__tests__/useInactivityTracker.unit.test.ts → useInactivityTracker.unit.test.ts} +3 -3
- package/src/hooks/{__tests__/useIsMobile.unit.test.ts → useIsMobile.unit.test.ts} +2 -2
- package/src/hooks/useIsPrint.ts +62 -0
- package/src/hooks/useIsPrint.unit.test.ts +545 -0
- package/src/hooks/{__tests__/useKeyboardShortcuts.unit.test.ts → useKeyboardShortcuts.unit.test.ts} +2 -2
- package/src/hooks/{__tests__/useOrganisationPermissions.unit.test.tsx → useOrganisationPermissions.unit.test.tsx} +4 -4
- package/src/hooks/useOrganisationSecurity.test.ts +3 -3
- package/src/hooks/useOrganisationSecurity.ts +190 -201
- package/src/hooks/{__tests__/useOrganisationSecurity.unit.test.tsx → useOrganisationSecurity.unit.test.tsx} +61 -63
- package/src/hooks/{__tests__/useOrganisations.unit.test.ts → useOrganisations.unit.test.ts} +5 -5
- package/src/hooks/{__tests__/usePerformanceMonitor.unit.test.ts → usePerformanceMonitor.unit.test.ts} +13 -14
- package/src/hooks/{__tests__/usePermissionCache.test.ts → usePermissionCache.test.ts} +26 -27
- package/src/hooks/usePermissionCache.ts +276 -271
- package/src/hooks/{__tests__/usePreventTabReload.test.ts → usePreventTabReload.test.ts} +2 -2
- package/src/hooks/{__tests__/usePublicEvent.simple.test.ts → usePublicEvent.simple.test.ts} +4 -4
- package/src/hooks/{__tests__/usePublicEvent.test.ts → usePublicEvent.test.ts} +4 -4
- package/src/hooks/{__tests__/usePublicEvent.unit.test.ts → usePublicEvent.unit.test.ts} +4 -4
- package/src/hooks/{__tests__/usePublicFileDisplay.test.ts → usePublicFileDisplay.test.ts} +12 -12
- package/src/hooks/{__tests__/usePublicRouteParams.unit.test.ts → usePublicRouteParams.unit.test.ts} +3 -3
- package/src/hooks/{__tests__/useQueryCache.test.ts → useQueryCache.test.ts} +2 -2
- package/src/hooks/useQueryCache.ts +0 -2
- package/src/hooks/{__tests__/useRBAC.unit.test.ts → useRBAC.unit.test.ts} +55 -38
- package/src/hooks/{__tests__/useSessionDraft.test.ts → useSessionDraft.test.ts} +2 -2
- package/src/hooks/{__tests__/useSessionRestoration.unit.test.tsx → useSessionRestoration.unit.test.tsx} +10 -19
- package/src/hooks/useStorage.ts +21 -16
- package/src/hooks/{__tests__/useStorage.unit.test.ts → useStorage.unit.test.ts} +38 -75
- package/src/hooks/{__tests__/useToast.test.ts → useToast.test.ts} +2 -2
- package/src/hooks/{__tests__/useToast.unit.test.tsx → useToast.unit.test.tsx} +2 -2
- package/src/hooks/{__tests__/useZodForm.unit.test.tsx → useZodForm.unit.test.tsx} +2 -2
- package/src/icons/{__tests__/index.test.ts → index.test.ts} +2 -2
- package/src/icons/index.ts +2 -0
- package/src/{__tests__/index.test.ts → index.test.ts} +3 -7
- package/src/index.ts +15 -7
- package/src/providers/{__tests__/AuthProvider.test.tsx → AuthProvider.test.tsx} +3 -3
- package/src/providers/{__tests__/EventProvider.test.tsx → EventProvider.test.tsx} +3 -3
- package/src/providers/InactivityProvider.test-helper.tsx +40 -0
- package/src/providers/{__tests__/InactivityProvider.test.tsx → InactivityProvider.test.tsx} +14 -21
- package/src/providers/{__tests__/ProviderLifecycle.test.tsx → ProviderLifecycle.test.tsx} +4 -4
- package/src/providers/{__tests__/UnifiedAuthProvider.test.tsx → UnifiedAuthProvider.test.tsx} +1 -1
- package/src/providers/{__tests__/index.test.ts → index.test.ts} +2 -2
- package/src/providers/services/{__tests__/AuthServiceProvider.integration.test.tsx → AuthServiceProvider.integration.test.tsx} +4 -4
- package/src/providers/services/{__tests__/AuthServiceProvider.test.tsx → AuthServiceProvider.test.tsx} +7 -7
- package/src/providers/services/{__tests__/EventServiceProvider.test.tsx → EventServiceProvider.test.tsx} +7 -7
- package/src/providers/services/{__tests__/InactivityServiceProvider.test.tsx → InactivityServiceProvider.test.tsx} +5 -5
- package/src/providers/services/{__tests__/OrganisationServiceProvider.test.tsx → OrganisationServiceProvider.test.tsx} +6 -6
- package/src/providers/services/UnifiedAuthContext.ts +30 -27
- package/src/providers/services/{__tests__/UnifiedAuthProvider.advanced.test.tsx → UnifiedAuthProvider.advanced.test.tsx} +8 -9
- package/src/providers/services/{__tests__/UnifiedAuthProvider.appId.test.tsx → UnifiedAuthProvider.appId.test.tsx} +25 -25
- package/src/providers/services/{__tests__/UnifiedAuthProvider.integration.test.tsx → UnifiedAuthProvider.integration.test.tsx} +14 -11
- package/src/providers/services/UnifiedAuthProvider.tsx +115 -360
- package/src/providers/services/{__tests__/contexts.test.tsx → contexts.test.tsx} +6 -6
- package/src/providers/services/{__tests__/useUnifiedAuth.test.tsx → useUnifiedAuth.test.tsx} +6 -6
- package/src/providers/services/useUnifiedAuthContextValue.ts +279 -0
- package/src/providers/useInactivity.test-helper.ts +27 -0
- package/src/rbac/{__tests__/adapters.comprehensive.test.tsx → adapters.comprehensive.test.tsx} +24 -24
- package/src/rbac/adapters.test.tsx +22 -22
- package/src/rbac/adapters.tsx +29 -29
- package/src/rbac/api.test.ts +973 -42
- package/src/rbac/api.ts +228 -253
- package/src/rbac/{__tests__/audit-batched.test.ts → audit-batched.test.ts} +6 -6
- package/src/rbac/audit.ts +4 -1
- package/src/rbac/{__tests__/auth-rbac-security.integration.test.tsx → auth-rbac-security.integration.test.tsx} +1 -1
- package/src/rbac/{__tests__/auth-rbac.e2e.test.tsx → auth-rbac.e2e.test.tsx} +27 -34
- package/src/rbac/cache-invalidation.test.ts +715 -0
- package/src/rbac/components/{__tests__/AccessDenied.test.tsx → AccessDenied.test.tsx} +3 -3
- package/src/rbac/components/{__tests__/NavigationGuard.test.tsx → NavigationGuard.test.tsx} +13 -11
- package/src/{__tests__/rbac/PagePermissionGuard.test.tsx → rbac/components/PagePermissionGuard.guard.test.tsx} +33 -19
- package/src/rbac/components/{__tests__/PagePermissionGuard.performance.test.tsx → PagePermissionGuard.performance.test.tsx} +30 -9
- package/src/rbac/components/{__tests__/PagePermissionGuard.race-condition.test.tsx → PagePermissionGuard.race-condition.test.tsx} +7 -7
- package/src/rbac/components/{__tests__/PagePermissionGuard.test.tsx → PagePermissionGuard.test.tsx} +10 -10
- package/src/rbac/components/PagePermissionGuard.tsx +177 -372
- package/src/rbac/components/{__tests__/PagePermissionGuard.verification.test.tsx → PagePermissionGuard.verification.test.tsx} +7 -7
- package/src/rbac/config.ts +58 -18
- package/src/rbac/{__tests__/engine.comprehensive.test.ts → engine.comprehensive.test.ts} +3 -3
- package/src/rbac/engine.test.ts +494 -0
- package/src/rbac/errors.ts +89 -55
- package/src/rbac/hooks/permissions/runPermissionCheck.ts +77 -0
- package/src/rbac/hooks/permissions/{__tests__/useAccessLevel.test.ts → useAccessLevel.test.ts} +40 -40
- package/src/rbac/hooks/permissions/useAccessLevel.ts +16 -6
- package/src/rbac/hooks/permissions/{__tests__/useCan.test.ts → useCan.test.ts} +41 -41
- package/src/rbac/hooks/permissions/useCan.ts +170 -252
- package/src/rbac/hooks/permissions/{__tests__/useMultiplePermissions.test.ts → useMultiplePermissions.test.ts} +49 -49
- package/src/rbac/hooks/permissions/useMultiplePermissions.ts +6 -2
- package/src/rbac/hooks/permissions/{__tests__/usePermissions.test.ts → usePermissions.test.ts} +10 -12
- package/src/rbac/hooks/permissions/usePermissions.ts +36 -65
- package/src/rbac/hooks/useCan.test.ts +42 -42
- 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/{__tests__/usePermissions.integration.test.ts → usePermissions.integration.test.ts} +9 -9
- package/src/{__tests__/hooks/usePermissions.test.ts → rbac/hooks/usePermissions.stability.test.ts} +18 -18
- package/src/rbac/hooks/usePermissions.test.ts +54 -54
- package/src/rbac/hooks/useRBAC.test.ts +313 -217
- package/src/rbac/hooks/useRBAC.ts +145 -81
- package/src/rbac/hooks/useResourcePermissions.test.ts +25 -25
- package/src/rbac/hooks/useResourcePermissions.ts +68 -134
- package/src/rbac/hooks/useResourcePermissionsSuperAdmin.ts +67 -0
- package/src/rbac/hooks/useRoleManagement.test.ts +27 -112
- package/src/rbac/hooks/useRoleManagement.ts +153 -585
- package/src/rbac/hooks/{__tests__/useSecureSupabase.test.ts → useSecureSupabase.test.ts} +17 -17
- package/src/rbac/hooks/useSecureSupabase.ts +10 -2
- package/src/rbac/hooks/useSuperAdminCheck.ts +80 -0
- package/src/rbac/{__tests__/performance.test.ts → performance.test.ts} +1 -1
- package/src/rbac/{__tests__/rbac-core.test.tsx → rbac-core.test.tsx} +3 -3
- package/src/rbac/{__tests__/rbac-engine-core-logic.test.ts → rbac-engine-core-logic.test.ts} +2 -2
- package/src/rbac/{__tests__/rbac-engine-simplified.test.ts → rbac-engine-simplified.test.ts} +3 -3
- package/src/rbac/{__tests__/rbac-functions.test.ts → rbac-functions.test.ts} +57 -0
- package/src/rbac/{__tests__/rbac-role-isolation.test.ts → rbac-role-isolation.test.ts} +2 -2
- package/src/rbac/request-deduplication.test.ts +14 -9
- package/src/rbac/request-deduplication.ts +5 -4
- package/src/rbac/{__tests__/scenarios.user-role.test.tsx → scenarios.user-role.test.tsx} +23 -23
- package/src/rbac/secureClient.test.ts +514 -83
- package/src/rbac/secureClient.ts +8 -2
- package/src/rbac/security.test.ts +323 -0
- package/src/rbac/types/roleManagement.ts +66 -0
- package/src/rbac/utils/{__tests__/clientSecurity.test.ts → clientSecurity.test.ts} +4 -4
- package/src/rbac/utils/{__tests__/contextValidator.test.ts → contextValidator.test.ts} +4 -4
- package/src/rbac/utils/contextValidator.ts +5 -1
- package/src/rbac/utils/{__tests__/deep-equal.test.ts → deep-equal.test.ts} +1 -1
- package/src/rbac/utils/{__tests__/eventContext.test.ts → eventContext.test.ts} +36 -21
- package/src/rbac/utils/eventContext.ts +37 -33
- 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/{__tests__/AuthService.edge-cases.test.ts → AuthService.edge-cases.test.ts} +19 -19
- package/src/services/{__tests__/AuthService.restoreSession.test.ts → AuthService.restoreSession.test.ts} +2 -2
- package/src/services/{__tests__/AuthService.test.ts → AuthService.test.ts} +89 -55
- package/src/services/AuthService.ts +184 -205
- package/src/services/{__tests__/BaseService.edge-cases.test.ts → BaseService.edge-cases.test.ts} +3 -3
- package/src/services/{__tests__/BaseService.test.ts → BaseService.test.ts} +2 -2
- package/src/services/{__tests__/EventService.edge-cases.test.ts → EventService.edge-cases.test.ts} +27 -24
- package/src/services/{__tests__/EventService.eventColours.test.ts → EventService.eventColours.test.ts} +1 -1
- package/src/services/{__tests__/EventService.test.ts → EventService.test.ts} +256 -24
- package/src/services/EventService.ts +242 -312
- package/src/services/{__tests__/InactivityService.edge-cases.test.ts → InactivityService.edge-cases.test.ts} +3 -3
- package/src/services/{__tests__/InactivityService.lifecycle.test.ts → InactivityService.lifecycle.test.ts} +2 -2
- package/src/services/{__tests__/InactivityService.test.ts → InactivityService.test.ts} +179 -4
- package/src/services/InactivityService.ts +172 -213
- package/src/services/{__tests__/OrganisationService.edge-cases.test.ts → OrganisationService.edge-cases.test.ts} +5 -5
- package/src/services/{__tests__/OrganisationService.pagination.test.ts → OrganisationService.pagination.test.ts} +4 -4
- package/src/services/{__tests__/OrganisationService.test.ts → OrganisationService.test.ts} +410 -7
- package/src/services/OrganisationService.ts +184 -238
- package/src/services/base/BaseService.test.ts +1 -1
- package/src/services/interfaces/{__tests__/IAuthService.test.ts → IAuthService.test.ts} +21 -27
- package/src/services/interfaces/IAuthService.ts +10 -9
- package/src/services/interfaces/{__tests__/IEventService.test.ts → IEventService.test.ts} +4 -4
- package/src/services/interfaces/{__tests__/IInactivityService.test.ts → IInactivityService.test.ts} +3 -3
- package/src/services/interfaces/{__tests__/IOrganisationService.test.ts → IOrganisationService.test.ts} +3 -3
- package/src/styles/core.css +243 -12
- package/src/theming/{__tests__/parseEventColours.test.ts → parseEventColours.test.ts} +1 -1
- package/src/theming/{__tests__/runtime.test.ts → runtime.test.ts} +8 -17
- package/src/theming/runtime.ts +71 -2
- package/src/types/api-result.ts +53 -0
- package/src/types/{__tests__/core.test.ts → core.test.ts} +2 -2
- package/src/types/{__tests__/database-generated.test.ts → database-generated.test.ts} +3 -3
- package/src/types/database.generated.ts +45 -10
- package/src/types/event.ts +38 -18
- package/src/types/{__tests__/file-reference.test.ts → file-reference.test.ts} +13 -13
- package/src/types/file-reference.ts +37 -12
- package/src/types/{__tests__/guards.test.ts → guards.test.ts} +2 -2
- package/src/types/{__tests__/index.test.ts → index.test.ts} +2 -2
- package/src/types/index.ts +3 -0
- package/src/types/{__tests__/organisation.roles.test.ts → organisation.roles.test.ts} +1 -1
- package/src/types/{__tests__/organisation.test.ts → organisation.test.ts} +3 -31
- package/src/types/organisation.ts +15 -15
- package/src/types/supabase.ts +13 -4
- package/src/types/{__tests__/theme.test.ts → theme.test.ts} +1 -1
- package/src/types/{__tests__/type-validation.test.ts → type-validation.test.ts} +1 -1
- package/src/types/{__tests__/validation.test.ts → validation.test.ts} +2 -2
- package/src/utils/app/appIdResolver.test.ts +98 -71
- package/src/utils/app/appIdResolver.ts +31 -20
- package/src/utils/{__tests__/appConfig.unit.test.ts → appConfig.unit.test.ts} +1 -1
- package/src/utils/{__tests__/audit.unit.test.ts → audit.unit.test.ts} +1 -1
- package/src/utils/{__tests__/auth-utils.unit.test.ts → auth-utils.unit.test.ts} +16 -17
- package/src/utils/{__tests__/bundleAnalysis.unit.test.ts → bundleAnalysis.unit.test.ts} +35 -35
- package/src/utils/{__tests__/cn.unit.test.ts → cn.unit.test.ts} +1 -1
- package/src/utils/context/organisationContext.test.ts +105 -91
- package/src/utils/context/organisationContext.ts +29 -40
- package/src/utils/core/{__tests__/cn.test.ts → cn.test.ts} +3 -3
- package/src/utils/core/{__tests__/debugLogger.test.ts → debugLogger.test.ts} +2 -2
- package/src/utils/core/{__tests__/logger.test.ts → logger.test.ts} +2 -2
- package/src/utils/core/mergeRefs.ts +24 -0
- package/src/utils/{__tests__/debugLogger.test.ts → debugLogger.test.ts} +1 -1
- package/src/utils/{__tests__/deviceFingerprint.unit.test.ts → deviceFingerprint.unit.test.ts} +1 -1
- package/src/utils/dynamic/createLazyComponent.tsx +9 -1
- package/src/utils/dynamic/{__tests__/dynamicUtils.test.ts → dynamicUtils.test.ts} +2 -2
- package/src/utils/dynamic/{__tests__/lazyLoad.test.tsx → lazyLoad.test.tsx} +2 -2
- package/src/utils/{__tests__/dynamicUtils.unit.test.ts → dynamicUtils.unit.test.ts} +1 -1
- package/src/utils/file-reference/{__tests__/file-reference.test.ts → file-reference.test.ts} +214 -289
- package/src/utils/file-reference/index.ts +330 -347
- package/src/utils/{__tests__/formatDate.unit.test.ts → formatDate.unit.test.ts} +2 -2
- package/src/utils/formatting/formatDateTimeTimezone.test.ts +1 -1
- package/src/utils/formatting/formatNumber.test.ts +1 -1
- package/src/utils/{__tests__/formatting.unit.test.ts → formatting.unit.test.ts} +1 -1
- package/src/utils/google-places/googlePlacesUtils.test.ts +70 -48
- package/src/utils/google-places/googlePlacesUtils.ts +67 -99
- package/src/utils/google-places/loadGoogleMapsScript.test.ts +25 -22
- package/src/utils/google-places/loadGoogleMapsScript.ts +138 -117
- package/src/utils/{__tests__/index.unit.test.ts → index.unit.test.ts} +1 -1
- package/src/utils/{__tests__/lazyLoad.unit.test.tsx → lazyLoad.unit.test.tsx} +13 -14
- package/src/utils/location/location.test.ts +1 -1
- package/src/utils/{__tests__/logger.unit.test.ts → logger.unit.test.ts} +1 -1
- package/src/utils/{__tests__/organisationContext.unit.test.ts → organisationContext.unit.test.ts} +37 -48
- package/src/utils/performance/{__tests__/bundleAnalysis.test.ts → bundleAnalysis.test.ts} +2 -2
- package/src/utils/performance/{__tests__/performanceBenchmark.test.ts → performanceBenchmark.test.ts} +2 -2
- package/src/utils/performance/{__tests__/performanceBudgets.test.ts → performanceBudgets.test.ts} +2 -2
- package/src/utils/{__tests__/performanceBenchmark.test.ts → performanceBenchmark.test.ts} +2 -2
- package/src/utils/{__tests__/performanceBudgets.unit.test.ts → performanceBudgets.unit.test.ts} +2 -2
- package/src/utils/{__tests__/permissionTypes.unit.test.ts → permissionTypes.unit.test.ts} +1 -1
- package/src/utils/{__tests__/permissionUtils.unit.test.ts → permissionUtils.unit.test.ts} +1 -1
- package/src/utils/permissions/{__tests__/permissionTypes.test.ts → permissionTypes.test.ts} +2 -2
- package/src/utils/persistence/{__tests__/keyDerivation.test.ts → keyDerivation.test.ts} +2 -2
- package/src/utils/persistence/{__tests__/sensitiveFieldDetection.test.ts → sensitiveFieldDetection.test.ts} +2 -2
- package/src/utils/{__tests__/request-deduplication.test.ts → request-deduplication.test.ts} +2 -2
- package/src/utils/{__tests__/sanitization.unit.test.ts → sanitization.unit.test.ts} +1 -1
- package/src/utils/{__tests__/schemaUtils.unit.test.ts → schemaUtils.unit.test.ts} +1 -1
- package/src/utils/{__tests__/secureDataAccess.unit.test.ts → secureDataAccess.unit.test.ts} +2 -2
- package/src/utils/{__tests__/secureErrors.unit.test.ts → secureErrors.unit.test.ts} +4 -4
- package/src/utils/{__tests__/secureStorage.unit.test.ts → secureStorage.unit.test.ts} +1 -1
- package/src/utils/security/auth-utils.ts +34 -23
- package/src/utils/security/secureDataAccess.ts +241 -281
- package/src/utils/security/secureErrors.test.ts +1 -1
- package/src/utils/security/secureStorage.test.ts +1 -1
- package/src/utils/security/security.test.ts +25 -17
- package/src/utils/security/security.ts +15 -18
- package/src/utils/security/securityMonitor.test.ts +1 -1
- package/src/utils/{__tests__/security.unit.test.ts → security.unit.test.ts} +21 -15
- package/src/utils/{__tests__/securityMonitor.unit.test.ts → securityMonitor.unit.test.ts} +1 -1
- package/src/utils/{__tests__/sessionTracking.unit.test.ts → sessionTracking.unit.test.ts} +12 -12
- package/src/utils/storage/{__tests__/config.unit.test.ts → config.unit.test.ts} +2 -2
- package/src/utils/storage/helpers.test.ts +88 -102
- package/src/utils/storage/helpers.ts +173 -251
- package/src/utils/storage/{__tests__/index.unit.test.ts → index.unit.test.ts} +3 -3
- package/src/utils/storage/types.ts +7 -0
- package/src/utils/supabase/createBaseClient.test.ts +1 -1
- package/src/utils/timezone/timezone.test.ts +1 -1
- package/src/utils/{__tests__/timezone.test.ts → timezone.test.ts} +2 -2
- package/src/utils/validation/{__tests__/common.test.ts → common.test.ts} +2 -2
- package/src/utils/validation/{__tests__/csrf.test.ts → csrf.test.ts} +56 -28
- package/src/utils/validation/csrf.ts +42 -41
- package/src/utils/validation/{__tests__/htmlSanitization.unit.test.ts → htmlSanitization.unit.test.ts} +2 -2
- package/src/utils/validation/{__tests__/passwordSchema.test.ts → passwordSchema.test.ts} +2 -2
- package/src/utils/validation/{__tests__/schema.test.ts → schema.test.ts} +2 -2
- package/src/utils/validation/{__tests__/sqlInjectionProtection.test.ts → sqlInjectionProtection.test.ts} +2 -2
- package/src/utils/validation/{__tests__/user.test.ts → user.test.ts} +2 -2
- package/src/utils/validation/{__tests__/validation.test.ts → validation.test.ts} +2 -2
- package/src/utils/validation/{__tests__/validationUtils.test.ts → validationUtils.test.ts} +2 -2
- package/src/utils/{__tests__/validation.unit.test.ts → validation.unit.test.ts} +1 -1
- package/src/utils/{__tests__/validationUtils.unit.test.ts → validationUtils.unit.test.ts} +5 -2
- package/dist/UnifiedAuthProvider-BBD2PS3Q.js +0 -7
- package/dist/chunk-KPYQWGFQ.js +0 -183
- package/dist/types-D05dCGma.d.ts +0 -521
- package/scripts/eslint-audit.cjs +0 -222
- 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__/integration/UserProfile.test.tsx +0 -124
- package/src/__tests__/public-recipe-view.test.ts +0 -228
- package/src/__tests__/rls-policies.test.ts +0 -472
- package/src/components/DataTable/__tests__/DataTable.test.tsx +0 -876
- package/src/components/DataTable/components/DataTableLayout.tsx +0 -584
- package/src/components/DataTable/components/UnifiedTableBody.tsx +0 -395
- package/src/components/DataTable/components/__tests__/DataTableLayout.test.tsx +0 -467
- package/src/components/DataTable/components/__tests__/DataTableModals.test.tsx +0 -358
- package/src/components/DataTable/components/__tests__/ImportModal.test.tsx +0 -957
- package/src/components/DataTable/core/ActionManager.ts +0 -235
- package/src/components/DataTable/core/ColumnManager.ts +0 -204
- package/src/components/DataTable/core/DataManager.ts +0 -190
- 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 -235
- package/src/components/DataTable/core/__tests__/ColumnManager.test.ts +0 -141
- package/src/components/DataTable/core/__tests__/DataManager.test.ts +0 -178
- package/src/components/DataTable/core/__tests__/LocalDataAdapter.test.ts +0 -133
- package/src/components/DataTable/core/__tests__/PluginRegistry.test.ts +0 -142
- package/src/components/DataTable/core/__tests__/StateManager.test.ts +0 -158
- package/src/components/DataTable/core/interfaces.ts +0 -338
- package/src/components/DataTable/types.ts +0 -764
- package/src/hooks/public/usePublicFileDisplay.ts +0 -534
- package/src/hooks/useFileDisplay.ts +0 -748
- package/src/providers/OrganisationProvider.test.tsx +0 -40
- package/src/providers/OrganisationProvider.tsx +0 -92
- package/src/providers/__tests__/InactivityProvider.test-helper.tsx +0 -65
- package/src/providers/__tests__/OrganisationProvider.test.tsx +0 -616
- package/src/providers/__tests__/OrganisationProvider.wrapper.test.tsx +0 -591
- package/src/rbac/__tests__/cache-invalidation.test.ts +0 -393
- /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/hooks/{__tests__/useApiFetch.unit.test.ts → useApiFetch.unit.test.ts} +0 -0
- /package/src/providers/{__tests__/README.md → README.md} +0 -0
- /package/src/rbac/{__tests__/index.test.ts → index.test.ts} +0 -0
- /package/src/rbac/{__tests__/rbac-integration.test.ts → rbac-integration.test.ts} +0 -0
- /package/src/types/{__tests__/README.md → README.md} +0 -0
|
@@ -1,10 +1,73 @@
|
|
|
1
|
+
import { h as Event, u as OrganisationRole, v as OrganisationPermission, S as SuperAdminContext } from './event-BfCox3N2.js';
|
|
1
2
|
import * as react_hook_form from 'react-hook-form';
|
|
2
3
|
import { DefaultValues } from 'react-hook-form';
|
|
3
4
|
import { z } from 'zod';
|
|
4
|
-
import { l as OrganisationRole, m as OrganisationPermission, S as SuperAdminContext, E as Event } from './event-WTAQuGcq.js';
|
|
5
5
|
import { SupabaseClient } from '@supabase/supabase-js';
|
|
6
|
-
import { D as Database } from './database.generated-
|
|
7
|
-
import { F as FileCategory, a as FileReference } from './file-reference-
|
|
6
|
+
import { D as Database } from './database.generated-qkdoiVrJ.js';
|
|
7
|
+
import { F as FileCategory, a as FileReference } from './file-reference-DU1hcawx.js';
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* @file Event Hook
|
|
11
|
+
* @package @jmruthers/pace-core
|
|
12
|
+
* @module Hooks
|
|
13
|
+
* @since 0.1.0
|
|
14
|
+
*
|
|
15
|
+
* Convenience hook for accessing event context.
|
|
16
|
+
* This hook provides a simple interface for working with events.
|
|
17
|
+
*
|
|
18
|
+
* Note: This is a convenience wrapper around the EventService.
|
|
19
|
+
* For better performance, consider using useEventService directly.
|
|
20
|
+
*/
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* Optional event context hook that never throws.
|
|
24
|
+
* Use when a component must work with or without EventServiceProvider (e.g. PaceAppLayout).
|
|
25
|
+
*
|
|
26
|
+
* @returns `{ selectedEvent: Event | null }` — when provider is absent, `selectedEvent` is always null.
|
|
27
|
+
* @example
|
|
28
|
+
* const { selectedEvent } = useOptionalEvents();
|
|
29
|
+
* // selectedEvent is null when outside EventServiceProvider; otherwise the current selected event.
|
|
30
|
+
*/
|
|
31
|
+
declare function useOptionalEvents(): {
|
|
32
|
+
selectedEvent: Event | null;
|
|
33
|
+
};
|
|
34
|
+
interface EventContextType {
|
|
35
|
+
events: Event[];
|
|
36
|
+
selectedEvent: Event | null;
|
|
37
|
+
isLoading: boolean;
|
|
38
|
+
error: Error | null;
|
|
39
|
+
setSelectedEvent: (event: Event | null) => void;
|
|
40
|
+
refreshEvents: () => Promise<void>;
|
|
41
|
+
clearEventSelection: () => Promise<void>;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Hook to access event context
|
|
45
|
+
*
|
|
46
|
+
* @returns Event context with events, selected event, and helper methods
|
|
47
|
+
* @throws {Error} If used outside EventServiceProvider
|
|
48
|
+
*
|
|
49
|
+
* @example
|
|
50
|
+
* ```tsx
|
|
51
|
+
* function MyComponent() {
|
|
52
|
+
* const { events, selectedEvent, setSelectedEvent } = useEvents();
|
|
53
|
+
*
|
|
54
|
+
* return (
|
|
55
|
+
* <nav>
|
|
56
|
+
* <ul>
|
|
57
|
+
* {events.map(event => (
|
|
58
|
+
* <li key={event.id}>
|
|
59
|
+
* <button onClick={() => setSelectedEvent(event)}>
|
|
60
|
+
* {event.event_name}
|
|
61
|
+
* </button>
|
|
62
|
+
* </li>
|
|
63
|
+
* ))}
|
|
64
|
+
* </ul>
|
|
65
|
+
* </nav>
|
|
66
|
+
* );
|
|
67
|
+
* }
|
|
68
|
+
* ```
|
|
69
|
+
*/
|
|
70
|
+
declare function useEvents(): EventContextType;
|
|
8
71
|
|
|
9
72
|
interface UseZodFormProps<T extends z.ZodTypeAny> {
|
|
10
73
|
schema: T;
|
|
@@ -393,6 +456,12 @@ interface StorageUploadResult {
|
|
|
393
456
|
metadata?: StorageFileMetadata;
|
|
394
457
|
error?: string;
|
|
395
458
|
}
|
|
459
|
+
/** Success payload for uploadFile when using ApiResult. */
|
|
460
|
+
interface StorageUploadSuccess {
|
|
461
|
+
path: string;
|
|
462
|
+
publicUrl?: string;
|
|
463
|
+
metadata?: StorageFileMetadata;
|
|
464
|
+
}
|
|
396
465
|
interface StorageUrlOptions {
|
|
397
466
|
/** The app name from rbac_apps */
|
|
398
467
|
appName: string;
|
|
@@ -874,4 +943,4 @@ declare function generatePublicRoutePath(eventCode: string, pageName?: string):
|
|
|
874
943
|
*/
|
|
875
944
|
declare function extractEventCodeFromPath(path: string): string | null;
|
|
876
945
|
|
|
877
|
-
export { type UsePublicEventReturn as
|
|
946
|
+
export { generatePublicRoutePath as A, extractEventCodeFromPath as B, type UsePublicEventReturn as C, type UsePublicEventOptions as D, type EventContextType as E, type UsePublicFileDisplayReturn as F, type UsePublicFileDisplayOptions as G, type UsePublicEventLogoReturn as H, type UsePublicEventLogoOptions as I, type UsePublicRouteParamsReturn as J, type FileSizeLimits as K, type StorageConfig as L, type StorageFileMetadata as M, type StorageUploadSuccess as N, type OrganisationSecurityHook as O, type StorageUrlOptions as P, type StorageUploadOptions as S, type UseOrganisationPermissionsReturn as U, type StorageUploadResult as a, type StorageListOptions as b, type StorageListResult as c, type StorageFileInfo as d, useOptionalEvents as e, useEventTheme as f, useOrganisationPermissions as g, useOrganisationSecurity as h, useZodForm as i, useFormDialog as j, type UseFormDialogOptions as k, type UseFormDialogReturn as l, useAppConfig as m, type UseAppConfigReturn as n, usePublicEvent as o, clearPublicEventCache as p, getPublicEventCacheStats as q, usePublicFileDisplay as r, clearPublicFileDisplayCache as s, getPublicFileDisplayCacheStats as t, useEvents as u, usePublicEventLogo as v, clearPublicLogoCache as w, getPublicLogoCacheStats as x, usePublicRouteParams as y, usePublicEventCode as z };
|
package/dist/utils.d.ts
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
import { S as SanitizationOptions } from './timezone-
|
|
2
|
-
export { U as DateTimeFormatOptions, q as LogLevel, L as Logger, r as LoggerConfig, O as SecureDataAccess, V as calculatePasswordStrength, g as cn, l as createBaseClient, o as createLogger, N as dateSchema, e as emailSchema, A as formatCompactNumber, x as formatCurrency, t as formatDate, Q as formatDateOnlyForDisplay, w as formatDateTime, P as formatDateTimeForDisplay, T as formatDateTimeForMap, R as formatDateTimeForTable, 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 getTimeZoneDifference, D as getTimezoneAbbreviation, F as getUserTimeZone, m as logger, n as nameSchema, b as passwordSchema, p as phoneSchema, M as renderSafeHtml, I as roundToNearestMinutes, c as sanitizeFormData, d as sanitizeHtml, s as sanitizeUserInput, h as setAppConfig, G as toZonedTime, a as urlSchema, u as useSessionTracking, K as validateHtml } from './timezone-
|
|
1
|
+
import { S as SanitizationOptions } from './timezone-BTWWXKVY.js';
|
|
2
|
+
export { U as DateTimeFormatOptions, q as LogLevel, L as Logger, r as LoggerConfig, O as SecureDataAccess, V as calculatePasswordStrength, g as cn, l as createBaseClient, o as createLogger, N as dateSchema, e as emailSchema, A as formatCompactNumber, x as formatCurrency, t as formatDate, Q as formatDateOnlyForDisplay, w as formatDateTime, P as formatDateTimeForDisplay, T as formatDateTimeForMap, R as formatDateTimeForTable, 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 getTimeZoneDifference, D as getTimezoneAbbreviation, F as getUserTimeZone, m as logger, n as nameSchema, b as passwordSchema, p as phoneSchema, M as renderSafeHtml, I as roundToNearestMinutes, c as sanitizeFormData, d as sanitizeHtml, s as sanitizeUserInput, h as setAppConfig, G as toZonedTime, a as urlSchema, u as useSessionTracking, K as validateHtml } from './timezone-BTWWXKVY.js';
|
|
3
3
|
import { SupabaseClient } from '@supabase/supabase-js';
|
|
4
|
-
import { D as Database } from './database.generated-
|
|
4
|
+
import { D as Database } from './database.generated-qkdoiVrJ.js';
|
|
5
|
+
import { A as ApiResult } from './api-result-USV1Czr-.js';
|
|
5
6
|
export { g as changePasswordSchema, t as combineSchemas, i as contactFormSchema, l as loginSchema, f as passwordResetSchema, q as pickSchema, r as registrationSchema, c as secureLoginSchema, s as securePasswordSchema, h as userProfileSchema } from './validation-g5n0hDkh.js';
|
|
6
7
|
import { z } from 'zod';
|
|
7
8
|
export { u as useComponentPerformance } from './useComponentPerformance-DE9l5RkL.js';
|
|
@@ -113,24 +114,24 @@ declare function getCurrentAppNameWithFallback(fallback?: string): string;
|
|
|
113
114
|
*
|
|
114
115
|
* @param supabase - Supabase client instance
|
|
115
116
|
* @param appName - The app name to resolve
|
|
116
|
-
* @returns Promise resolving to
|
|
117
|
+
* @returns Promise resolving to ApiResult with app ID or null if not found
|
|
117
118
|
*/
|
|
118
|
-
declare function getAppId(supabase: SupabaseClient<Database>, appName: string): Promise<string | null
|
|
119
|
+
declare function getAppId(supabase: SupabaseClient<Database>, appName: string): Promise<ApiResult<string | null>>;
|
|
119
120
|
/**
|
|
120
121
|
* Resolves multiple app names to their corresponding app IDs
|
|
121
122
|
*
|
|
122
123
|
* @param supabase - Supabase client instance
|
|
123
124
|
* @param appNames - Array of app names to resolve
|
|
124
|
-
* @returns Promise resolving to
|
|
125
|
+
* @returns Promise resolving to ApiResult with map of app names to app IDs
|
|
125
126
|
*/
|
|
126
|
-
declare function getAppIds(supabase: SupabaseClient<Database>, appNames: string[]): Promise<Record<string, string | null
|
|
127
|
+
declare function getAppIds(supabase: SupabaseClient<Database>, appNames: string[]): Promise<ApiResult<Record<string, string | null>>>;
|
|
127
128
|
/**
|
|
128
129
|
* Cached app ID resolver with TTL
|
|
129
130
|
*/
|
|
130
131
|
declare class CachedAppIdResolver {
|
|
131
132
|
private cache;
|
|
132
133
|
private ttl;
|
|
133
|
-
getAppId(supabase: SupabaseClient<Database>, appName: string): Promise<string | null
|
|
134
|
+
getAppId(supabase: SupabaseClient<Database>, appName: string): Promise<ApiResult<string | null>>;
|
|
134
135
|
clearCache(): void;
|
|
135
136
|
clearCacheForApp(appName: string): void;
|
|
136
137
|
}
|
|
@@ -244,6 +245,7 @@ declare const usernameSchema: z.ZodPipeline<z.ZodEffects<z.ZodString, string, st
|
|
|
244
245
|
* @file CSRF Protection Implementation
|
|
245
246
|
* @description Session-based CSRF token management with security enhancements
|
|
246
247
|
*/
|
|
248
|
+
|
|
247
249
|
interface CSRFTokenData {
|
|
248
250
|
token: string;
|
|
249
251
|
sessionId: string;
|
|
@@ -257,15 +259,15 @@ declare class CSRFManager {
|
|
|
257
259
|
/**
|
|
258
260
|
* Generate a new CSRF token for the current session
|
|
259
261
|
*/
|
|
260
|
-
generateToken(sessionId: string): Promise<string
|
|
262
|
+
generateToken(sessionId: string): Promise<ApiResult<string>>;
|
|
261
263
|
/**
|
|
262
264
|
* Validate and consume a CSRF token
|
|
263
265
|
*/
|
|
264
|
-
validateToken(token: string, sessionId: string): Promise<boolean
|
|
266
|
+
validateToken(token: string, sessionId: string): Promise<ApiResult<boolean>>;
|
|
265
267
|
/**
|
|
266
|
-
* Get current valid token for session
|
|
268
|
+
* Get current valid token for session (finds existing or generates new)
|
|
267
269
|
*/
|
|
268
|
-
getCurrentToken(sessionId: string): Promise<string
|
|
270
|
+
getCurrentToken(sessionId: string): Promise<ApiResult<string>>;
|
|
269
271
|
/**
|
|
270
272
|
* Clean up expired and used tokens
|
|
271
273
|
*/
|
|
@@ -281,12 +283,12 @@ declare class CSRFManager {
|
|
|
281
283
|
/**
|
|
282
284
|
* Clear all tokens for session
|
|
283
285
|
*/
|
|
284
|
-
clearSession(sessionId: string): Promise<void
|
|
286
|
+
clearSession(sessionId: string): Promise<ApiResult<void>>;
|
|
285
287
|
}
|
|
286
288
|
declare const csrfManager: CSRFManager;
|
|
287
|
-
declare function generateCSRFToken(sessionId: string): Promise<string
|
|
288
|
-
declare function validateCSRFToken(token: string, sessionId: string): Promise<boolean
|
|
289
|
-
declare function getCSRFToken(sessionId: string): Promise<string
|
|
289
|
+
declare function generateCSRFToken(sessionId: string): Promise<ApiResult<string>>;
|
|
290
|
+
declare function validateCSRFToken(token: string, sessionId: string): Promise<ApiResult<boolean>>;
|
|
291
|
+
declare function getCSRFToken(sessionId: string): Promise<ApiResult<string>>;
|
|
290
292
|
|
|
291
293
|
/**
|
|
292
294
|
* @file SQL Injection Protection
|
|
@@ -702,23 +704,23 @@ declare function validateDeviceFingerprint(storedFingerprint: DeviceFingerprint,
|
|
|
702
704
|
*
|
|
703
705
|
* @param supabase - Supabase client instance (unused)
|
|
704
706
|
* @param organisationId - The organisation ID (unused)
|
|
705
|
-
* @returns Promise that resolves
|
|
707
|
+
* @returns Promise that resolves to ApiResult<void>
|
|
706
708
|
*/
|
|
707
|
-
declare function setOrganisationContext(_supabase: SupabaseClient, _organisationId: string): Promise<void
|
|
709
|
+
declare function setOrganisationContext(_supabase: SupabaseClient, _organisationId: string): Promise<ApiResult<void>>;
|
|
708
710
|
/**
|
|
709
711
|
* Clear organisation context from the database session
|
|
710
712
|
*
|
|
711
713
|
* @param supabase - Supabase client instance
|
|
712
|
-
* @returns Promise that resolves
|
|
714
|
+
* @returns Promise that resolves to ApiResult<void>
|
|
713
715
|
*/
|
|
714
|
-
declare function clearOrganisationContext(supabase: SupabaseClient): Promise<void
|
|
716
|
+
declare function clearOrganisationContext(supabase: SupabaseClient): Promise<ApiResult<void>>;
|
|
715
717
|
/**
|
|
716
718
|
* Get current organisation context from the database session
|
|
717
719
|
*
|
|
718
720
|
* @param supabase - Supabase client instance
|
|
719
|
-
* @returns Promise that resolves to
|
|
721
|
+
* @returns Promise that resolves to ApiResult<string | null>
|
|
720
722
|
*/
|
|
721
|
-
declare function getOrganisationContext(supabase: SupabaseClient): Promise<string | null
|
|
723
|
+
declare function getOrganisationContext(supabase: SupabaseClient): Promise<ApiResult<string | null>>;
|
|
722
724
|
/**
|
|
723
725
|
* Check if organisation context functions are available in the database
|
|
724
726
|
*
|
|
@@ -726,9 +728,9 @@ declare function getOrganisationContext(supabase: SupabaseClient): Promise<strin
|
|
|
726
728
|
* Organisation context is now handled via secure client and explicit parameters.
|
|
727
729
|
*
|
|
728
730
|
* @param supabase - Supabase client instance (unused)
|
|
729
|
-
* @returns Promise that resolves to
|
|
731
|
+
* @returns Promise that resolves to ApiResult<boolean>
|
|
730
732
|
*/
|
|
731
|
-
declare function isOrganisationContextAvailable(_supabase: SupabaseClient): Promise<boolean
|
|
733
|
+
declare function isOrganisationContextAvailable(_supabase: SupabaseClient): Promise<ApiResult<boolean>>;
|
|
732
734
|
|
|
733
735
|
/**
|
|
734
736
|
* @file Location Utilities
|
|
@@ -858,31 +860,21 @@ declare function getGoogleMapsUrl(coords?: Coordinates): string;
|
|
|
858
860
|
* @param query - Search query string
|
|
859
861
|
* @param apiKey - Google Places API key
|
|
860
862
|
* @param options - Optional autocomplete options
|
|
861
|
-
* @returns Promise resolving to array of predictions
|
|
863
|
+
* @returns Promise resolving to ApiResult with array of predictions
|
|
862
864
|
*
|
|
863
865
|
* @example
|
|
864
866
|
* ```ts
|
|
865
|
-
* const
|
|
867
|
+
* const result = await fetchPlaceAutocomplete(
|
|
866
868
|
* '123 Main St',
|
|
867
869
|
* 'your-api-key',
|
|
868
870
|
* { components: 'country:au' }
|
|
869
871
|
* );
|
|
872
|
+
* if (result.ok) console.log(result.data);
|
|
870
873
|
* ```
|
|
871
874
|
*/
|
|
872
|
-
declare function fetchPlaceAutocomplete(query: string, apiKey: string, options?: AutocompleteOptions): Promise<GooglePlaceAutocompletePrediction[]
|
|
873
|
-
/**
|
|
874
|
-
|
|
875
|
-
*
|
|
876
|
-
* @param placeId - Google Place ID
|
|
877
|
-
* @param apiKey - Google Places API key
|
|
878
|
-
* @returns Promise resolving to place details
|
|
879
|
-
*
|
|
880
|
-
* @example
|
|
881
|
-
* ```ts
|
|
882
|
-
* const place = await fetchPlaceDetails('ChIJ...', 'your-api-key');
|
|
883
|
-
* ```
|
|
884
|
-
*/
|
|
885
|
-
declare function fetchPlaceDetails(placeId: string, apiKey: string): Promise<{
|
|
875
|
+
declare function fetchPlaceAutocomplete(query: string, apiKey: string, options?: AutocompleteOptions): Promise<ApiResult<GooglePlaceAutocompletePrediction[]>>;
|
|
876
|
+
/** Place details shape from Google Places API */
|
|
877
|
+
type PlaceDetails = {
|
|
886
878
|
place_id: string;
|
|
887
879
|
formatted_address?: string;
|
|
888
880
|
address_components?: Array<{
|
|
@@ -896,7 +888,12 @@ declare function fetchPlaceDetails(placeId: string, apiKey: string): Promise<{
|
|
|
896
888
|
lng: () => number;
|
|
897
889
|
};
|
|
898
890
|
};
|
|
899
|
-
}
|
|
891
|
+
};
|
|
892
|
+
/**
|
|
893
|
+
* Fetch place details from Google Places API.
|
|
894
|
+
* @returns Promise resolving to ApiResult with place details
|
|
895
|
+
*/
|
|
896
|
+
declare function fetchPlaceDetails(placeId: string, apiKey: string): Promise<ApiResult<PlaceDetails>>;
|
|
900
897
|
/**
|
|
901
898
|
* Parse address components from Google Places API response
|
|
902
899
|
*
|
|
@@ -942,15 +939,15 @@ declare function createAddressFromPlaceResult(place: {
|
|
|
942
939
|
*
|
|
943
940
|
* @param placeId - Google Place ID
|
|
944
941
|
* @param apiKey - Google Places API key
|
|
945
|
-
* @returns Promise resolving to parsed address
|
|
942
|
+
* @returns Promise resolving to ApiResult with parsed address
|
|
946
943
|
*
|
|
947
944
|
* @example
|
|
948
945
|
* ```ts
|
|
949
|
-
* const
|
|
950
|
-
*
|
|
946
|
+
* const result = await getAddressByPlaceId('ChIJ...', 'your-api-key');
|
|
947
|
+
* if (result.ok) console.log(result.data);
|
|
951
948
|
* ```
|
|
952
949
|
*/
|
|
953
|
-
declare function getAddressByPlaceId(placeId: string, apiKey: string): Promise<ParsedAddress | null
|
|
950
|
+
declare function getAddressByPlaceId(placeId: string, apiKey: string): Promise<ApiResult<ParsedAddress | null>>;
|
|
954
951
|
|
|
955
952
|
/**
|
|
956
953
|
* @file Google Maps Script Loader
|
|
@@ -961,115 +958,136 @@ declare function getAddressByPlaceId(placeId: string, apiKey: string): Promise<P
|
|
|
961
958
|
* Utility to dynamically load the Google Maps JavaScript API.
|
|
962
959
|
* This is required because the REST API doesn't support CORS from browsers.
|
|
963
960
|
*/
|
|
961
|
+
interface GooglePlacesLocationBiasCircle {
|
|
962
|
+
center: {
|
|
963
|
+
latitude: number;
|
|
964
|
+
longitude: number;
|
|
965
|
+
};
|
|
966
|
+
radius: number;
|
|
967
|
+
}
|
|
968
|
+
interface GooglePlacesAutocompleteSuggestionRequest {
|
|
969
|
+
input: string;
|
|
970
|
+
includedRegionCodes?: string[];
|
|
971
|
+
locationBias?: {
|
|
972
|
+
circle?: GooglePlacesLocationBiasCircle;
|
|
973
|
+
};
|
|
974
|
+
includedPrimaryTypes?: string[];
|
|
975
|
+
languageCode?: string;
|
|
976
|
+
}
|
|
977
|
+
interface GooglePlacesTextMatch {
|
|
978
|
+
endOffset: number;
|
|
979
|
+
startOffset: number;
|
|
980
|
+
}
|
|
981
|
+
interface GooglePlacesStructuredFormat {
|
|
982
|
+
mainText: {
|
|
983
|
+
text: string;
|
|
984
|
+
};
|
|
985
|
+
secondaryText: {
|
|
986
|
+
text: string;
|
|
987
|
+
};
|
|
988
|
+
}
|
|
989
|
+
interface GooglePlacesPlacePrediction {
|
|
990
|
+
placeId: string;
|
|
991
|
+
text: {
|
|
992
|
+
text: string;
|
|
993
|
+
matches: GooglePlacesTextMatch[];
|
|
994
|
+
};
|
|
995
|
+
structuredFormat?: GooglePlacesStructuredFormat;
|
|
996
|
+
}
|
|
997
|
+
interface GooglePlacesSuggestion {
|
|
998
|
+
placePrediction?: GooglePlacesPlacePrediction;
|
|
999
|
+
}
|
|
1000
|
+
interface GooglePlacesAutocompleteSuggestion {
|
|
1001
|
+
fetchAutocompleteSuggestions: (request: GooglePlacesAutocompleteSuggestionRequest) => Promise<{
|
|
1002
|
+
suggestions: GooglePlacesSuggestion[];
|
|
1003
|
+
}>;
|
|
1004
|
+
}
|
|
1005
|
+
interface GooglePlacesAutocompleteServiceRequest {
|
|
1006
|
+
input: string;
|
|
1007
|
+
componentRestrictions?: {
|
|
1008
|
+
country: string | string[];
|
|
1009
|
+
};
|
|
1010
|
+
location?: {
|
|
1011
|
+
lat: () => number;
|
|
1012
|
+
lng: () => number;
|
|
1013
|
+
};
|
|
1014
|
+
radius?: number;
|
|
1015
|
+
types?: string[];
|
|
1016
|
+
language?: string;
|
|
1017
|
+
}
|
|
1018
|
+
interface GooglePlacesPrediction {
|
|
1019
|
+
description: string;
|
|
1020
|
+
place_id: string;
|
|
1021
|
+
structured_formatting: {
|
|
1022
|
+
main_text: string;
|
|
1023
|
+
secondary_text: string;
|
|
1024
|
+
};
|
|
1025
|
+
}
|
|
1026
|
+
interface GooglePlacesAutocompleteServiceInstance {
|
|
1027
|
+
getPlacePredictions: (request: GooglePlacesAutocompleteServiceRequest, callback: (predictions: GooglePlacesPrediction[] | null, status: string) => void) => void;
|
|
1028
|
+
}
|
|
1029
|
+
interface GooglePlacesDetailsRequest {
|
|
1030
|
+
placeId: string;
|
|
1031
|
+
fields?: string[];
|
|
1032
|
+
}
|
|
1033
|
+
interface GooglePlacesAddressComponent {
|
|
1034
|
+
long_name: string;
|
|
1035
|
+
short_name: string;
|
|
1036
|
+
types: string[];
|
|
1037
|
+
}
|
|
1038
|
+
interface GooglePlacesGeometry {
|
|
1039
|
+
location?: {
|
|
1040
|
+
lat: () => number;
|
|
1041
|
+
lng: () => number;
|
|
1042
|
+
};
|
|
1043
|
+
}
|
|
1044
|
+
interface GooglePlacesPlaceDetails {
|
|
1045
|
+
place_id: string;
|
|
1046
|
+
formatted_address?: string;
|
|
1047
|
+
address_components?: GooglePlacesAddressComponent[];
|
|
1048
|
+
geometry?: GooglePlacesGeometry;
|
|
1049
|
+
}
|
|
1050
|
+
interface GooglePlacesPlacesServiceInstance {
|
|
1051
|
+
getDetails: (request: GooglePlacesDetailsRequest, callback: (place: GooglePlacesPlaceDetails | null, status: string) => void) => void;
|
|
1052
|
+
}
|
|
1053
|
+
interface GooglePlacesServiceStatus {
|
|
1054
|
+
OK: string;
|
|
1055
|
+
ZERO_RESULTS: string;
|
|
1056
|
+
NOT_FOUND: string;
|
|
1057
|
+
REQUEST_DENIED: string;
|
|
1058
|
+
INVALID_REQUEST: string;
|
|
1059
|
+
OVER_QUERY_LIMIT: string;
|
|
1060
|
+
}
|
|
1061
|
+
interface GoogleMapsPlaces {
|
|
1062
|
+
AutocompleteSuggestion: GooglePlacesAutocompleteSuggestion;
|
|
1063
|
+
AutocompleteService: new () => GooglePlacesAutocompleteServiceInstance;
|
|
1064
|
+
PlacesService: new (element: HTMLElement) => GooglePlacesPlacesServiceInstance;
|
|
1065
|
+
PlacesServiceStatus: GooglePlacesServiceStatus;
|
|
1066
|
+
}
|
|
1067
|
+
interface GoogleMapsLatLng {
|
|
1068
|
+
lat: () => number;
|
|
1069
|
+
lng: () => number;
|
|
1070
|
+
}
|
|
1071
|
+
interface GoogleMapsMaps {
|
|
1072
|
+
places: GoogleMapsPlaces;
|
|
1073
|
+
LatLng: new (lat: number, lng: number) => GoogleMapsLatLng;
|
|
1074
|
+
}
|
|
1075
|
+
interface GoogleMapsApi {
|
|
1076
|
+
maps: GoogleMapsMaps;
|
|
1077
|
+
}
|
|
964
1078
|
declare global {
|
|
965
1079
|
interface Window {
|
|
966
|
-
google?:
|
|
967
|
-
maps: {
|
|
968
|
-
places: {
|
|
969
|
-
AutocompleteSuggestion: {
|
|
970
|
-
fetchAutocompleteSuggestions: (request: {
|
|
971
|
-
input: string;
|
|
972
|
-
includedRegionCodes?: string[];
|
|
973
|
-
locationBias?: {
|
|
974
|
-
circle?: {
|
|
975
|
-
center: {
|
|
976
|
-
latitude: number;
|
|
977
|
-
longitude: number;
|
|
978
|
-
};
|
|
979
|
-
radius: number;
|
|
980
|
-
};
|
|
981
|
-
};
|
|
982
|
-
includedPrimaryTypes?: string[];
|
|
983
|
-
languageCode?: string;
|
|
984
|
-
}) => Promise<{
|
|
985
|
-
suggestions: Array<{
|
|
986
|
-
placePrediction?: {
|
|
987
|
-
placeId: string;
|
|
988
|
-
text: {
|
|
989
|
-
text: string;
|
|
990
|
-
matches: Array<{
|
|
991
|
-
endOffset: number;
|
|
992
|
-
startOffset: number;
|
|
993
|
-
}>;
|
|
994
|
-
};
|
|
995
|
-
structuredFormat?: {
|
|
996
|
-
mainText: {
|
|
997
|
-
text: string;
|
|
998
|
-
};
|
|
999
|
-
secondaryText: {
|
|
1000
|
-
text: string;
|
|
1001
|
-
};
|
|
1002
|
-
};
|
|
1003
|
-
};
|
|
1004
|
-
}>;
|
|
1005
|
-
}>;
|
|
1006
|
-
};
|
|
1007
|
-
AutocompleteService: new () => {
|
|
1008
|
-
getPlacePredictions: (request: {
|
|
1009
|
-
input: string;
|
|
1010
|
-
componentRestrictions?: {
|
|
1011
|
-
country: string | string[];
|
|
1012
|
-
};
|
|
1013
|
-
location?: {
|
|
1014
|
-
lat: () => number;
|
|
1015
|
-
lng: () => number;
|
|
1016
|
-
};
|
|
1017
|
-
radius?: number;
|
|
1018
|
-
types?: string[];
|
|
1019
|
-
language?: string;
|
|
1020
|
-
}, callback: (predictions: Array<{
|
|
1021
|
-
description: string;
|
|
1022
|
-
place_id: string;
|
|
1023
|
-
structured_formatting: {
|
|
1024
|
-
main_text: string;
|
|
1025
|
-
secondary_text: string;
|
|
1026
|
-
};
|
|
1027
|
-
}> | null, status: string) => void) => void;
|
|
1028
|
-
};
|
|
1029
|
-
PlacesService: new (element: HTMLElement) => {
|
|
1030
|
-
getDetails: (request: {
|
|
1031
|
-
placeId: string;
|
|
1032
|
-
fields?: string[];
|
|
1033
|
-
}, callback: (place: {
|
|
1034
|
-
place_id: string;
|
|
1035
|
-
formatted_address?: string;
|
|
1036
|
-
address_components?: Array<{
|
|
1037
|
-
long_name: string;
|
|
1038
|
-
short_name: string;
|
|
1039
|
-
types: string[];
|
|
1040
|
-
}>;
|
|
1041
|
-
geometry?: {
|
|
1042
|
-
location?: {
|
|
1043
|
-
lat: () => number;
|
|
1044
|
-
lng: () => number;
|
|
1045
|
-
};
|
|
1046
|
-
};
|
|
1047
|
-
} | null, status: string) => void) => void;
|
|
1048
|
-
};
|
|
1049
|
-
PlacesServiceStatus: {
|
|
1050
|
-
OK: string;
|
|
1051
|
-
ZERO_RESULTS: string;
|
|
1052
|
-
NOT_FOUND: string;
|
|
1053
|
-
REQUEST_DENIED: string;
|
|
1054
|
-
INVALID_REQUEST: string;
|
|
1055
|
-
OVER_QUERY_LIMIT: string;
|
|
1056
|
-
};
|
|
1057
|
-
};
|
|
1058
|
-
LatLng: new (lat: number, lng: number) => {
|
|
1059
|
-
lat: () => number;
|
|
1060
|
-
lng: () => number;
|
|
1061
|
-
};
|
|
1062
|
-
};
|
|
1063
|
-
};
|
|
1080
|
+
google?: GoogleMapsApi;
|
|
1064
1081
|
}
|
|
1065
1082
|
}
|
|
1083
|
+
|
|
1066
1084
|
/**
|
|
1067
1085
|
* Load Google Maps JavaScript API script
|
|
1068
1086
|
* @param apiKey - Google Places API key
|
|
1069
1087
|
* @param libraries - Comma-separated list of libraries to load (default: 'places')
|
|
1070
|
-
* @returns Promise that resolves
|
|
1088
|
+
* @returns Promise that resolves to ApiResult<void>
|
|
1071
1089
|
*/
|
|
1072
|
-
declare function loadGoogleMapsScript(apiKey: string, libraries?: string): Promise<void
|
|
1090
|
+
declare function loadGoogleMapsScript(apiKey: string, libraries?: string): Promise<ApiResult<void>>;
|
|
1073
1091
|
/**
|
|
1074
1092
|
* Check if Google Maps is already loaded
|
|
1075
1093
|
*/
|