@jmruthers/pace-core 0.6.8 → 0.6.10
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 +3 -0
- package/audit-tool/audits/02-project-structure.cjs +97 -32
- package/audit-tool/audits/03-architecture.cjs +145 -19
- package/audit-tool/audits/04-code-quality.cjs +86 -1
- package/audit-tool/audits/06-security-rbac.cjs +109 -11
- package/cursor-rules/02-project-structure.mdc +2 -26
- package/cursor-rules/05-styling.mdc +84 -6
- package/cursor-rules/06-security-rbac.mdc +124 -1
- package/dist/{DataTable-6RMSCQJ6.js → DataTable-SAXFG4XI.js} +11 -13
- package/dist/{AuthService-DmfO5rGS.d.ts → InactivityServiceProvider-DHryoh6K.d.ts} +24 -249
- package/dist/UnifiedAuthProvider-BBD2PS3Q.js +7 -0
- package/dist/{UnifiedAuthProvider-CKvHP1MK.d.ts → UnifiedAuthProvider-CiBAl9-s.d.ts} +34 -22
- package/dist/{api-7P7DI652.js → api-F47QJ7FX.js} +3 -3
- 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-Z6ZZBWLU.js +3 -0
- package/dist/chunk-3GWSPISD.js +61 -0
- package/dist/{chunk-4DDCYDQ3.js → chunk-66R6RLUZ.js} +12 -27
- package/dist/{chunk-FYHN4DD5.js → chunk-7YDC7LMU.js} +80 -8
- package/dist/{chunk-S7DKJPLT.js → chunk-BCTXBU6U.js} +22 -17
- package/dist/{chunk-TTRFSOKR.js → chunk-BTHN5MKC.js} +4 -4
- package/dist/{chunk-A3W6LW53.js → chunk-DDMPHZ3D.js} +6 -18
- package/dist/{chunk-MPBLMWVR.js → chunk-FBZ7U3ID.js} +140 -92
- package/dist/chunk-FN52B75D.js +246 -0
- package/dist/{chunk-5W2A3DRC.js → chunk-JJEYZ3DX.js} +5 -4
- package/dist/chunk-KPYQWGFQ.js +183 -0
- package/dist/{chunk-IUBRCBSY.js → chunk-KSNLMI7N.js} +14 -8
- package/dist/chunk-KYURMOQM.js +977 -0
- package/dist/{chunk-LX6U42O3.js → chunk-LNHFAF4X.js} +160 -58
- package/dist/{chunk-NKHKXPI4.js → chunk-MPY44PWB.js} +683 -627
- package/dist/{chunk-AHU7G2R5.js → chunk-NIU6DPQV.js} +10 -6
- package/dist/{chunk-HF6O3O37.js → chunk-RMLY6KB5.js} +1 -1
- package/dist/{chunk-6GLLNA6U.js → chunk-SACF5YSM.js} +1 -1
- package/dist/{chunk-EURB7QFZ.js → chunk-TFIPNIPE.js} +867 -534
- package/dist/{chunk-OJ4SKRSV.js → chunk-UZNAFKGW.js} +25 -5
- package/dist/chunk-W46INAVW.js +1216 -0
- package/dist/chunk-X5EAU5G7.js +793 -0
- package/dist/{chunk-T5CVK4R3.js → chunk-Y4PF6HIM.js} +110 -64
- package/dist/components.d.ts +8 -86
- package/dist/components.js +21 -55
- package/dist/{database.generated-CcnC_DRc.d.ts → database.generated-DT8JTZiP.d.ts} +12 -12
- package/dist/eslint-rules/rules/05-styling.cjs +507 -0
- package/dist/eslint-rules/rules/06-security-rbac.cjs +10 -0
- package/dist/{event-CW5YB_2p.d.ts → event-WTAQuGcq.d.ts} +1 -1
- package/dist/{functions-lBy5L2ry.d.ts → functions-DH45k8ec.d.ts} +1 -1
- package/dist/hooks.d.ts +12 -11
- package/dist/hooks.js +69 -44
- package/dist/index.d.ts +380 -32
- package/dist/index.js +46 -32
- package/dist/papaparseLoader-WG2UXQ22.js +7 -0
- package/dist/providers.d.ts +28 -14
- package/dist/providers.js +5 -5
- package/dist/rbac/eslint-rules.js +2 -2
- package/dist/rbac/index.d.ts +58 -214
- package/dist/rbac/index.js +11 -11
- package/dist/theming/runtime.d.ts +9 -3
- package/dist/theming/runtime.js +2 -2
- package/dist/{timezone-BZe_eUxx.d.ts → timezone-K-ptz3HO.d.ts} +22 -23
- package/dist/{types-t9H8qKRw.d.ts → types-BE2sEHKd.d.ts} +1 -1
- package/dist/{types-BeoeWV5I.d.ts → types-CvOPXWWZ.d.ts} +6 -5
- package/dist/{types-DXstZpNI.d.ts → types-D05dCGma.d.ts} +56 -149
- package/dist/types-Dr8sNhER.d.ts +50 -0
- package/dist/types.d.ts +5 -5
- package/dist/{PublicPageProvider-CIGSujI2.d.ts → usePublicPageContext-vxBlEHO9.d.ts} +294 -151
- package/dist/{usePublicRouteParams-MamNgwqe.d.ts → usePublicRouteParams-G3Ks53mk.d.ts} +8 -7
- package/dist/utils.d.ts +301 -137
- package/dist/utils.js +42 -41
- package/dist/{validation-643vUDZW.d.ts → validation-g5n0hDkh.d.ts} +2 -2
- package/docs/api/modules.md +542 -549
- package/docs/api-reference/components.md +5 -5
- package/docs/api-reference/rpc-functions.md +3 -3
- package/docs/implementation-guides/data-tables.md +256 -8
- package/docs/rbac/RBAC_CONTRACT.md +0 -12
- package/docs/standards/2-project-structure-standards.md +12 -74
- package/docs/standards/6-security-rbac-standards.md +222 -7
- package/docs/standards/7-api-tech-stack-standards.md +91 -3
- package/docs/testing/README.md +10 -0
- package/docs/testing/test-setup-for-consumers.md +914 -0
- package/eslint-config-pace-core.cjs +4 -0
- package/package.json +1 -1
- package/scripts/eslint-audit.cjs +110 -11
- package/src/__mocks__/lucide-react.ts +0 -2
- package/src/__tests__/helpers/__tests__/test-utils.test.tsx +0 -2
- package/src/__tests__/index.test.ts +532 -0
- package/src/__tests__/integration/UserProfile.test.tsx +1 -1
- package/src/__tests__/rbac/PagePermissionGuard.test.tsx +10 -8
- package/src/__tests__/rls-policies.test.ts +3 -2
- 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.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 +378 -3
- package/src/components/AddressField/AddressField.tsx +2 -2
- 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/Calendar/Calendar.test.tsx +523 -131
- package/src/components/Calendar/Calendar.tsx +107 -488
- package/src/components/Card/Card.test.tsx +220 -249
- package/src/components/Checkbox/Checkbox.test.tsx +58 -174
- package/src/components/ContextSelector/ContextSelector.tsx +3 -3
- package/src/components/ContextSelector/__tests__/ContextSelector.test.tsx +360 -0
- package/src/components/DataTable/DataTable.tsx +2 -2
- package/src/components/DataTable/__tests__/DataTable.comprehensive.test.tsx +1 -1
- package/src/components/DataTable/__tests__/DataTable.export.test.tsx +2 -2
- package/src/components/DataTable/__tests__/DataTable.grouping-aggregation.test.tsx +1 -1
- package/src/components/DataTable/__tests__/DataTable.select-label-display.test.tsx +485 -0
- package/src/components/DataTable/__tests__/DataTable.test.tsx +2 -2
- package/src/components/DataTable/__tests__/DataTableCore.test-setup.ts +1 -1
- package/src/components/DataTable/__tests__/DataTableCore.test.tsx +76 -580
- package/src/components/DataTable/__tests__/README.md +1 -1
- package/src/components/DataTable/__tests__/a11y.basic.test.tsx +1 -1
- package/src/components/DataTable/__tests__/keyboard.test.tsx +1 -1
- package/src/components/DataTable/__tests__/pagination.modes.test.tsx +1 -3
- package/src/components/DataTable/__tests__/ssr.strict-mode.test.tsx +0 -6
- package/src/components/DataTable/__tests__/test-utils/sharedTestUtils.tsx +14 -6
- package/src/components/DataTable/components/ActionButtons.tsx +9 -4
- package/src/components/DataTable/components/BulkOperationsDropdown.tsx +3 -3
- package/src/components/DataTable/components/ColumnFilter.tsx +2 -7
- package/src/components/DataTable/components/DataTableCore.tsx +44 -52
- package/src/components/DataTable/components/DataTableLayout.tsx +37 -26
- package/src/components/DataTable/components/DataTableModals.tsx +118 -30
- package/src/components/DataTable/components/DataTableToolbar.tsx +2 -2
- package/src/components/DataTable/components/EditFields.tsx +6 -47
- package/src/components/DataTable/components/EditableRow.tsx +8 -8
- package/src/components/DataTable/components/EmptyState.tsx +6 -3
- package/src/components/DataTable/components/FilterRow.tsx +18 -11
- package/src/components/DataTable/components/GroupingDropdown.tsx +0 -1
- package/src/components/DataTable/components/ImportModal.tsx +305 -133
- package/src/components/DataTable/components/LoadingState.tsx +2 -2
- package/src/components/DataTable/components/PaginationControls.tsx +0 -4
- package/src/components/DataTable/components/RowComponent.tsx +42 -22
- package/src/components/DataTable/components/UnifiedTableBody.tsx +52 -12
- package/src/components/DataTable/components/__tests__/AccessDeniedPage.test.tsx +51 -463
- package/src/components/DataTable/components/__tests__/ActionButtons.test.tsx +122 -116
- package/src/components/DataTable/components/__tests__/BulkOperationsDropdown.test.tsx +40 -68
- package/src/components/DataTable/components/__tests__/ColumnFilter.test.tsx +9 -137
- package/src/components/DataTable/components/__tests__/ColumnVisibilityDropdown.test.tsx +57 -17
- package/src/components/DataTable/components/__tests__/DataTableCore.test.tsx +792 -0
- package/src/components/DataTable/components/__tests__/DataTableErrorBoundary.test.tsx +24 -65
- package/src/components/DataTable/components/__tests__/DataTableLayout.test.tsx +467 -0
- package/src/components/DataTable/components/__tests__/DataTableModals.test.tsx +8 -125
- package/src/components/DataTable/components/__tests__/DataTableToolbar.test.tsx +528 -56
- package/src/components/DataTable/components/__tests__/EditFields.test.tsx +526 -0
- package/src/components/DataTable/components/__tests__/EditableRow.test.tsx +1 -68
- package/src/components/DataTable/components/__tests__/EmptyState.test.tsx +8 -25
- package/src/components/DataTable/components/__tests__/FilterRow.test.tsx +3 -62
- package/src/components/DataTable/components/__tests__/GroupingDropdown.test.tsx +9 -14
- package/src/components/DataTable/components/__tests__/ImportModal.test.tsx +50 -186
- package/src/components/DataTable/components/__tests__/LoadingState.test.tsx +39 -97
- package/src/components/DataTable/components/__tests__/PaginationControls.test.tsx +13 -103
- package/src/components/DataTable/components/__tests__/RowComponent.test.tsx +629 -0
- package/src/components/DataTable/components/__tests__/SortIndicator.test.tsx +135 -0
- package/src/components/DataTable/components/__tests__/UnifiedTableBody.test.tsx +31 -171
- package/src/components/DataTable/components/__tests__/cellValueUtils.test.ts +453 -0
- package/src/components/DataTable/components/hooks/useImportModalFocus.test.ts +184 -0
- package/src/components/DataTable/components/hooks/usePermissionTracking.test.ts +381 -0
- package/src/components/DataTable/context/DataTableContext.tsx +9 -10
- package/src/components/DataTable/context/__tests__/DataTableContext.test.tsx +12 -26
- package/src/components/DataTable/core/ColumnFactory.ts +3 -3
- package/src/components/DataTable/core/ColumnManager.ts +0 -1
- package/src/components/DataTable/core/DataManager.ts +4 -2
- package/src/components/DataTable/core/LocalDataAdapter.ts +1 -1
- package/src/components/DataTable/core/PluginRegistry.ts +2 -2
- package/src/components/DataTable/core/__tests__/ActionManager.test.ts +114 -2
- package/src/components/DataTable/core/__tests__/ColumnFactory.test.ts +103 -5
- package/src/components/DataTable/core/__tests__/ColumnManager.test.ts +57 -0
- package/src/components/DataTable/core/__tests__/DataManager.test.ts +63 -0
- package/src/components/DataTable/core/__tests__/LocalDataAdapter.test.ts +42 -9
- package/src/components/DataTable/core/__tests__/PluginRegistry.test.ts +29 -7
- package/src/components/DataTable/core/__tests__/StateManager.test.ts +58 -4
- package/src/components/DataTable/hooks/__tests__/useColumnOrderPersistence.test.ts +16 -21
- package/src/components/DataTable/hooks/__tests__/useColumnVisibilityPersistence.test.ts +93 -4
- package/src/components/DataTable/hooks/__tests__/useDataTableConfiguration.test.ts +227 -54
- package/src/components/DataTable/hooks/__tests__/useDataTableDataPipeline.test.ts +215 -62
- package/src/components/DataTable/hooks/__tests__/useDataTablePermissions.test.ts +217 -39
- package/src/components/DataTable/hooks/__tests__/useDataTableState.test.ts +101 -6
- package/src/components/DataTable/hooks/__tests__/useEffectiveColumnOrder.test.ts +157 -27
- package/src/components/DataTable/hooks/__tests__/useHierarchicalState.test.ts +80 -0
- package/src/components/DataTable/hooks/__tests__/useKeyboardNavigation.test.ts +787 -0
- package/src/components/DataTable/hooks/__tests__/useServerSideDataEffect.test.ts +258 -0
- package/src/components/DataTable/hooks/__tests__/useTableColumns.test.ts +298 -23
- package/src/components/DataTable/hooks/__tests__/useTableHandlers.test.ts +440 -0
- package/src/components/DataTable/hooks/useColumnOrderPersistence.ts +12 -9
- package/src/components/DataTable/hooks/useColumnVisibilityPersistence.ts +12 -9
- package/src/components/DataTable/hooks/useDataTableConfiguration.ts +1 -1
- package/src/components/DataTable/hooks/useDataTablePermissions.ts +11 -22
- package/src/components/DataTable/hooks/useDataTableState.ts +20 -24
- package/src/components/DataTable/hooks/useKeyboardNavigation.ts +5 -5
- package/src/components/DataTable/hooks/useServerSideDataEffect.ts +13 -1
- package/src/components/DataTable/hooks/useTableColumns.ts +36 -38
- package/src/components/DataTable/hooks/useTableHandlers.ts +8 -20
- package/src/components/DataTable/index.ts +24 -2
- package/src/components/DataTable/types.ts +6 -3
- package/src/components/DataTable/utils/__tests__/a11yUtils.test.ts +3 -67
- package/src/components/DataTable/utils/__tests__/aggregationUtils.test.ts +288 -0
- package/src/components/DataTable/utils/__tests__/errorHandling.test.ts +3 -60
- package/src/components/DataTable/utils/__tests__/flexibleImport.test.ts +1 -1
- package/src/components/DataTable/utils/__tests__/hierarchicalSorting.test.ts +9 -21
- package/src/components/DataTable/utils/__tests__/hierarchicalUtils.test.ts +102 -86
- package/src/components/DataTable/utils/__tests__/paginationUtils.test.ts +593 -0
- package/src/components/DataTable/utils/__tests__/rowUtils.test.ts +33 -49
- package/src/components/DataTable/utils/__tests__/selectFieldUtils.test.ts +208 -0
- package/src/components/DataTable/utils/a11yUtils.ts +1 -1
- package/src/components/DataTable/utils/aggregationUtils.ts +5 -5
- package/src/components/DataTable/utils/errorHandling.ts +3 -1
- package/src/components/DataTable/utils/exportUtils.ts +1 -1
- package/src/components/DataTable/utils/flexibleImport.ts +2 -2
- package/src/components/DataTable/utils/hierarchicalSorting.ts +3 -3
- package/src/components/DataTable/utils/paginationUtils.ts +1 -1
- package/src/components/DataTable/utils/performanceUtils.ts +1 -1
- package/src/components/DataTable/utils/selectFieldUtils.ts +127 -0
- package/src/components/DatePickerWithTimezone/DatePickerWithTimezone.test.tsx +17 -24
- package/src/components/DatePickerWithTimezone/DatePickerWithTimezone.tsx +1 -1
- package/src/components/DateTimeField/DateTimeField.test.tsx +2 -15
- package/src/components/DateTimeField/DateTimeField.tsx +1 -1
- package/src/components/Dialog/Dialog.test.tsx +2007 -407
- package/src/components/Dialog/Dialog.tsx +97 -192
- 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 +454 -222
- package/src/components/FileDisplay/FileDisplay.tsx +14 -12
- package/src/components/FileDisplay/index.tsx +1 -1
- package/src/components/FileUpload/FileUpload.test.tsx +54 -18
- package/src/components/FileUpload/FileUpload.tsx +10 -7
- package/src/components/FileUpload/index.tsx +1 -1
- package/src/components/Footer/Footer.test.tsx +33 -114
- package/src/components/Form/Form.test.tsx +388 -68
- package/src/components/Form/Form.tsx +57 -42
- package/src/components/Header/Header.test.tsx +645 -154
- package/src/components/Header/Header.tsx +52 -43
- package/src/components/InactivityWarningModal/InactivityWarningModal.test.tsx +35 -76
- package/src/components/Input/Input.test.tsx +34 -120
- package/src/components/Label/Label.test.tsx +47 -46
- package/src/components/LoadingSpinner/LoadingSpinner.test.tsx +9 -12
- package/src/components/LoginForm/LoginForm.test.tsx +0 -1
- package/src/components/NavigationMenu/NavigationMenu.test.tsx +1399 -82
- package/src/components/NavigationMenu/NavigationMenu.tsx +2 -2
- package/src/components/NavigationMenu/__tests__/useNavigationFiltering.test.ts +1934 -0
- package/src/components/NavigationMenu/useNavigationFiltering.ts +5 -15
- package/src/components/PaceAppLayout/PaceAppLayout.edge-cases.test.tsx +1307 -0
- package/src/components/PaceAppLayout/PaceAppLayout.integration.test.tsx +47 -46
- package/src/components/PaceAppLayout/PaceAppLayout.performance.test.tsx +81 -38
- package/src/components/PaceAppLayout/PaceAppLayout.security.test.tsx +87 -66
- package/src/components/PaceAppLayout/PaceAppLayout.test.tsx +245 -39
- package/src/components/PaceAppLayout/PaceAppLayout.tsx +14 -20
- package/src/components/PaceAppLayout/README.md +0 -9
- package/src/components/PaceAppLayout/test-setup.tsx +15 -9
- package/src/components/PaceLoginPage/PaceLoginPage.test.tsx +759 -3
- package/src/components/PaceLoginPage/PaceLoginPage.tsx +2 -3
- package/src/components/PasswordChange/PasswordChangeForm.test.tsx +1 -1
- package/src/components/Progress/Progress.test.tsx +127 -1
- package/src/components/ProtectedRoute/ProtectedRoute.test.tsx +1196 -4
- package/src/components/ProtectedRoute/ProtectedRoute.tsx +24 -6
- package/src/components/PublicLayout/PublicLayout.test.tsx +1435 -14
- package/src/components/PublicLayout/PublicPageContext.ts +28 -0
- package/src/components/PublicLayout/PublicPageLayout.tsx +6 -6
- package/src/components/PublicLayout/PublicPageProvider.tsx +2 -41
- package/src/components/PublicLayout/usePublicPageContext.ts +36 -0
- package/src/components/Select/Select.test.tsx +46 -9
- package/src/components/Select/Select.tsx +31 -24
- package/src/components/Select/__tests__/context.test.tsx +56 -0
- package/src/components/Select/hooks/__tests__/useSelectEvents.test.ts +279 -0
- package/src/components/Select/hooks/__tests__/useSelectSearch.test.tsx +295 -0
- package/src/components/Select/hooks/__tests__/useSelectState.test.ts +254 -0
- package/src/components/Select/hooks/useSelectState.ts +16 -16
- package/src/components/Select/types.ts +3 -0
- package/src/components/Select/utils/__tests__/text.test.tsx +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 +47 -317
- package/src/components/Tabs/Tabs.tsx +3 -3
- package/src/components/Textarea/Textarea.test.tsx +11 -38
- package/src/components/Toast/Toast.test.tsx +78 -569
- package/src/components/Tooltip/Tooltip.test.tsx +4 -21
- package/src/components/UserMenu/UserMenu.test.tsx +1 -21
- package/src/components/UserMenu/UserMenu.tsx +3 -6
- package/src/components/__tests__/index.test.ts +346 -0
- package/src/components/index.ts +12 -1
- package/src/constants/__tests__/performance.test.ts +91 -0
- package/src/hooks/__tests__/ServiceHooks.test.tsx +239 -129
- package/src/hooks/__tests__/hooks.integration.test.tsx +4 -3
- package/src/hooks/__tests__/useApiFetch.unit.test.ts +1 -1
- package/src/hooks/__tests__/useAppConfig.unit.test.ts +88 -29
- package/src/hooks/__tests__/useComponentPerformance.unit.test.tsx +282 -98
- package/src/hooks/__tests__/useDataTablePerformance.unit.test.ts +53 -109
- package/src/hooks/__tests__/useDataTableState.test.ts +143 -49
- package/src/hooks/__tests__/useDebounce.unit.test.ts +94 -19
- package/src/hooks/__tests__/useEvents.unit.test.ts +100 -125
- package/src/hooks/__tests__/useFileDisplay.test.ts +540 -0
- package/src/hooks/__tests__/useFileDisplay.unit.test.ts +1 -4
- package/src/hooks/__tests__/useFileUrl.unit.test.ts +27 -247
- package/src/hooks/__tests__/useFileUrlCache.test.ts +246 -56
- package/src/hooks/__tests__/useFocusManagement.unit.test.ts +442 -68
- package/src/hooks/__tests__/useFocusTrap.unit.test.tsx +345 -560
- package/src/hooks/__tests__/useFormDialog.test.ts +51 -222
- package/src/hooks/__tests__/useInactivityTracker.unit.test.ts +1 -1
- package/src/hooks/__tests__/useKeyboardShortcuts.unit.test.ts +1 -4
- package/src/hooks/__tests__/useOrganisationPermissions.unit.test.tsx +0 -1
- package/src/hooks/__tests__/usePerformanceMonitor.unit.test.ts +1 -1
- package/src/hooks/__tests__/usePermissionCache.test.ts +506 -0
- package/src/hooks/__tests__/usePreventTabReload.test.ts +255 -36
- package/src/hooks/__tests__/usePublicEvent.simple.test.ts +17 -8
- package/src/hooks/__tests__/usePublicEvent.test.ts +16 -24
- package/src/hooks/__tests__/usePublicEvent.unit.test.ts +12 -4
- package/src/hooks/__tests__/usePublicFileDisplay.test.ts +3 -6
- package/src/hooks/__tests__/usePublicRouteParams.unit.test.ts +1 -2
- package/src/hooks/__tests__/useQueryCache.test.ts +313 -66
- package/src/hooks/__tests__/useSessionDraft.test.ts +496 -103
- package/src/hooks/__tests__/useSessionRestoration.unit.test.tsx +2 -2
- package/src/hooks/__tests__/useStorage.unit.test.ts +72 -102
- package/src/hooks/__tests__/useToast.test.ts +413 -0
- package/src/hooks/__tests__/useToast.unit.test.tsx +1 -1
- package/src/hooks/__tests__/useZodForm.unit.test.tsx +175 -21
- package/src/hooks/index.ts +13 -1
- 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/usePublicFileDisplay.test.ts +723 -0
- package/src/hooks/public/usePublicFileDisplay.ts +79 -49
- package/src/hooks/public/usePublicRouteParams.test.ts +595 -0
- package/src/hooks/public/usePublicRouteParams.ts +2 -2
- 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 +165 -42
- package/src/hooks/useAddressAutocomplete.ts +41 -28
- package/src/hooks/useAppConfig.ts +13 -3
- package/src/hooks/useDataTablePerformance.ts +13 -12
- package/src/hooks/useDataTableState.ts +5 -5
- package/src/hooks/useEventTheme.test.ts +66 -17
- package/src/hooks/useEventTheme.ts +1 -1
- package/src/hooks/useEvents.ts +8 -1
- package/src/hooks/useFileDisplay.ts +66 -33
- package/src/hooks/useFileReference.test.ts +365 -87
- package/src/hooks/useFileReference.ts +2 -6
- package/src/hooks/useFileUrlCache.ts +4 -1
- package/src/hooks/useFormDialog.ts +2 -2
- package/src/hooks/useInactivityTracker.ts +3 -3
- package/src/hooks/useOrganisationPermissions.test.ts +1 -2
- package/src/hooks/useOrganisationPermissions.ts +1 -4
- package/src/hooks/useOrganisationSecurity.test.ts +1 -30
- package/src/hooks/useOrganisationSecurity.ts +3 -3
- package/src/hooks/useOrganisations.ts +1 -1
- package/src/hooks/usePerformanceMonitor.ts +1 -1
- package/src/hooks/usePermissionCache.ts +2 -6
- package/src/hooks/useQueryCache.ts +7 -7
- package/src/hooks/useSessionDraft.ts +14 -11
- package/src/hooks/useSessionRestoration.ts +1 -1
- package/src/hooks/useStorage.ts +75 -40
- package/src/hooks/useToast.ts +2 -2
- package/src/hooks/useZodForm.ts +3 -3
- package/src/icons/__tests__/index.test.ts +133 -0
- package/src/icons/index.ts +1 -1
- package/src/index.ts +43 -4
- package/src/providers/OrganisationProvider.test.tsx +40 -0
- package/src/providers/OrganisationProvider.tsx +5 -5
- package/src/providers/UnifiedAuthProvider.smoke.test.tsx +7 -12
- package/src/providers/__tests__/AuthProvider.test.tsx +22 -91
- package/src/providers/__tests__/EventProvider.test.tsx +16 -80
- package/src/providers/__tests__/InactivityProvider.test.tsx +29 -173
- package/src/providers/__tests__/OrganisationProvider.test.tsx +4 -5
- package/src/providers/__tests__/OrganisationProvider.wrapper.test.tsx +591 -0
- package/src/providers/__tests__/ProviderLifecycle.test.tsx +80 -196
- package/src/providers/__tests__/UnifiedAuthProvider.test.tsx +40 -133
- package/src/providers/__tests__/index.test.ts +138 -0
- package/src/providers/services/AuthServiceContext.ts +27 -0
- package/src/providers/services/AuthServiceProvider.tsx +81 -20
- package/src/providers/services/EventServiceContext.ts +25 -0
- package/src/providers/services/EventServiceProvider.tsx +11 -20
- package/src/providers/services/InactivityServiceContext.ts +25 -0
- package/src/providers/services/InactivityServiceProvider.tsx +7 -17
- package/src/providers/services/OrganisationServiceContext.ts +25 -0
- package/src/providers/services/OrganisationServiceProvider.tsx +7 -17
- package/src/providers/services/UnifiedAuthContext.ts +99 -0
- package/src/providers/services/UnifiedAuthProvider.test.tsx +212 -0
- package/src/providers/services/UnifiedAuthProvider.tsx +38 -143
- package/src/providers/services/__tests__/AuthServiceProvider.integration.test.tsx +61 -95
- package/src/providers/services/__tests__/AuthServiceProvider.test.tsx +638 -0
- package/src/providers/services/__tests__/EventServiceProvider.test.tsx +839 -0
- package/src/providers/services/__tests__/InactivityServiceProvider.test.tsx +662 -0
- package/src/providers/services/__tests__/OrganisationServiceProvider.test.tsx +440 -0
- package/src/providers/services/__tests__/UnifiedAuthProvider.advanced.test.tsx +435 -0
- package/src/providers/services/__tests__/UnifiedAuthProvider.appId.test.tsx +408 -0
- package/src/providers/services/__tests__/UnifiedAuthProvider.integration.test.tsx +55 -48
- package/src/providers/services/__tests__/contexts.test.tsx +281 -0
- package/src/providers/services/__tests__/useUnifiedAuth.test.tsx +251 -0
- package/src/providers/services/useUnifiedAuth.ts +29 -0
- package/src/rbac/README.md +5 -5
- package/src/rbac/__tests__/adapters.comprehensive.test.tsx +9 -14
- package/src/rbac/__tests__/audit-batched.test.ts +550 -0
- package/src/rbac/__tests__/auth-rbac-security.integration.test.tsx +1 -14
- package/src/rbac/__tests__/auth-rbac.e2e.test.tsx +43 -12
- package/src/rbac/__tests__/cache-invalidation.test.ts +8 -14
- package/src/rbac/__tests__/engine.comprehensive.test.ts +2 -7
- package/src/rbac/__tests__/index.test.ts +107 -0
- package/src/rbac/__tests__/performance.test.ts +451 -0
- package/src/rbac/__tests__/rbac-core.test.tsx +2 -2
- package/src/rbac/__tests__/rbac-engine-core-logic.test.ts +0 -5
- package/src/rbac/__tests__/rbac-engine-simplified.test.ts +1 -7
- package/src/rbac/__tests__/rbac-functions.test.ts +0 -1
- package/src/rbac/__tests__/rbac-integration.test.ts +0 -1
- package/src/rbac/__tests__/scenarios.user-role.test.tsx +21 -32
- package/src/rbac/adapters.test.tsx +654 -0
- package/src/rbac/adapters.tsx +24 -9
- package/src/rbac/api.test.ts +13 -217
- package/src/rbac/api.ts +85 -16
- package/src/rbac/audit-batched.ts +5 -4
- package/src/rbac/audit.test.ts +225 -28
- package/src/rbac/audit.ts +22 -17
- 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.tsx +20 -18
- package/src/rbac/components/NavigationGuard.tsx +10 -8
- package/src/rbac/components/PagePermissionGuard.tsx +27 -25
- package/src/rbac/components/__tests__/AccessDenied.test.tsx +324 -0
- package/src/rbac/components/__tests__/NavigationGuard.test.tsx +242 -71
- package/src/rbac/components/__tests__/PagePermissionGuard.performance.test.tsx +20 -37
- package/src/rbac/components/__tests__/PagePermissionGuard.race-condition.test.tsx +18 -17
- package/src/rbac/components/__tests__/PagePermissionGuard.test.tsx +452 -129
- package/src/rbac/components/__tests__/PagePermissionGuard.verification.test.tsx +14 -13
- package/src/rbac/config.test.ts +131 -48
- package/src/rbac/config.ts +11 -8
- package/src/rbac/docs/event-based-apps.md +26 -13
- package/src/rbac/engine.test.ts +496 -146
- package/src/rbac/engine.ts +53 -13
- package/src/rbac/errors.test.ts +99 -87
- package/src/rbac/eslint-rules.js +2 -2
- package/src/rbac/hooks/__tests__/usePermissions.integration.test.ts +0 -5
- package/src/rbac/hooks/__tests__/useSecureSupabase.test.ts +601 -1
- package/src/rbac/hooks/permissions/__tests__/useAccessLevel.test.ts +622 -0
- package/src/rbac/hooks/permissions/__tests__/useCan.test.ts +798 -0
- package/src/rbac/hooks/permissions/__tests__/useMultiplePermissions.test.ts +843 -0
- package/src/rbac/hooks/permissions/__tests__/usePermissions.test.ts +545 -0
- package/src/rbac/hooks/permissions/useAccessLevel.ts +7 -8
- package/src/rbac/hooks/permissions/useCan.ts +12 -10
- package/src/rbac/hooks/permissions/useMultiplePermissions.ts +57 -8
- package/src/rbac/hooks/permissions/usePermissions.ts +15 -14
- package/src/rbac/hooks/useCan.test.ts +319 -3
- package/src/rbac/hooks/usePermissions.test.ts +426 -0
- package/src/rbac/hooks/usePermissions.ts +5 -7
- package/src/rbac/hooks/useRBAC.test.ts +1669 -2
- package/src/rbac/hooks/useRBAC.ts +7 -11
- package/src/rbac/hooks/useResolvedScope.test.ts +442 -5
- package/src/rbac/hooks/useResolvedScope.ts +4 -1
- package/src/rbac/hooks/useResourcePermissions.test.ts +538 -1
- package/src/rbac/hooks/useResourcePermissions.ts +9 -7
- package/src/rbac/hooks/useRoleManagement.test.ts +659 -1
- package/src/rbac/hooks/useRoleManagement.ts +16 -12
- package/src/rbac/hooks/useSecureSupabase.ts +11 -12
- package/src/rbac/index.ts +32 -32
- package/src/rbac/permissions.test.ts +149 -68
- package/src/rbac/permissions.ts +0 -3
- package/src/rbac/request-deduplication.test.ts +347 -0
- package/src/rbac/secureClient.test.ts +112 -159
- package/src/rbac/secureClient.ts +46 -26
- package/src/rbac/security.test.ts +125 -44
- package/src/rbac/security.ts +7 -6
- package/src/rbac/types.test.ts +236 -0
- package/src/rbac/types.ts +7 -5
- package/src/rbac/utils/__tests__/clientSecurity.test.ts +192 -0
- package/src/rbac/utils/__tests__/contextValidator.test.ts +1 -3
- package/src/rbac/utils/__tests__/deep-equal.test.ts +23 -0
- package/src/rbac/utils/__tests__/eventContext.test.ts +10 -57
- package/src/rbac/utils/clientSecurity.ts +6 -4
- package/src/rbac/utils/contextValidator.ts +1 -2
- package/src/rbac/utils/eventContext.ts +2 -2
- package/src/services/AuthService.ts +13 -11
- package/src/services/EventService.ts +4 -5
- package/src/services/OrganisationService.ts +13 -30
- package/src/services/__tests__/AuthService.edge-cases.test.ts +746 -0
- package/src/services/__tests__/AuthService.restoreSession.test.ts +23 -3
- package/src/services/__tests__/AuthService.test.ts +4 -8
- package/src/services/__tests__/BaseService.edge-cases.test.ts +506 -0
- package/src/services/__tests__/BaseService.test.ts +49 -0
- package/src/services/__tests__/EventService.edge-cases.test.ts +633 -0
- package/src/services/__tests__/EventService.eventColours.test.ts +0 -12
- package/src/services/__tests__/EventService.test.ts +0 -7
- package/src/services/__tests__/InactivityService.edge-cases.test.ts +492 -0
- package/src/services/__tests__/InactivityService.lifecycle.test.ts +0 -5
- package/src/services/__tests__/OrganisationService.edge-cases.test.ts +633 -0
- package/src/services/base/BaseService.test.ts +214 -0
- package/src/services/interfaces/IOrganisationService.ts +0 -1
- package/src/services/interfaces/__tests__/IAuthService.test.ts +190 -0
- package/src/services/interfaces/__tests__/IEventService.test.ts +176 -0
- package/src/services/interfaces/__tests__/IInactivityService.test.ts +183 -0
- package/src/services/interfaces/__tests__/IOrganisationService.test.ts +207 -0
- package/src/styles/core.css +1 -0
- package/src/theming/__tests__/runtime.test.ts +29 -94
- package/src/theming/parseEventColours.ts +18 -9
- package/src/theming/runtime.ts +1 -5
- package/src/types/__tests__/core.test.ts +397 -0
- package/src/types/__tests__/database-generated.test.ts +78 -0
- package/src/types/__tests__/file-reference.test.ts +270 -366
- package/src/types/__tests__/guards.test.ts +26 -26
- package/src/types/__tests__/index.test.ts +265 -0
- package/src/types/__tests__/type-validation.test.ts +3 -3
- package/src/types/__tests__/validation.test.ts +0 -2
- package/src/types/auth.ts +0 -1
- package/src/types/database.generated.ts +9 -9
- package/src/types/event.ts +1 -1
- package/src/types/rpc-responses.ts +33 -0
- package/src/types/supabase.ts +1 -2
- package/src/types/vitest-globals.d.ts +1 -1
- package/src/utils/__tests__/bundleAnalysis.unit.test.ts +64 -77
- package/src/utils/__tests__/dynamicUtils.unit.test.ts +13 -0
- package/src/utils/__tests__/formatDate.unit.test.ts +1 -1
- package/src/utils/__tests__/lazyLoad.unit.test.tsx +0 -1
- package/src/utils/__tests__/logger.unit.test.ts +1 -1
- package/src/utils/__tests__/performanceBenchmark.test.ts +1 -2
- package/src/utils/__tests__/performanceBudgets.unit.test.ts +48 -13
- package/src/utils/__tests__/request-deduplication.test.ts +349 -0
- package/src/utils/__tests__/secureDataAccess.unit.test.ts +0 -1
- package/src/utils/__tests__/timezone.test.ts +1 -1
- package/src/utils/__tests__/validation.unit.test.ts +1 -2
- package/src/utils/__tests__/validationUtils.unit.test.ts +1 -1
- package/src/utils/app/appConfig.test.ts +235 -0
- package/src/utils/app/appIdResolver.test.ts +188 -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/audit/audit.test.ts +354 -39
- package/src/utils/context/organisationContext.test.ts +10 -4
- package/src/utils/context/organisationContext.ts +5 -5
- package/src/utils/context/sessionTracking.test.ts +354 -0
- package/src/utils/core/__tests__/cn.test.ts +66 -0
- package/src/utils/core/__tests__/debugLogger.test.ts +113 -0
- package/src/utils/core/__tests__/logger.test.ts +217 -0
- package/src/utils/core/debugLogger.ts +15 -8
- package/src/utils/core/logger.ts +20 -16
- package/src/utils/device/deviceFingerprint.test.ts +8 -5
- package/src/utils/device/deviceFingerprint.ts +3 -3
- package/src/utils/dynamic/__tests__/dynamicUtils.test.ts +185 -0
- package/src/utils/dynamic/__tests__/lazyLoad.test.tsx +156 -0
- package/src/utils/dynamic/createLazyComponent.tsx +38 -0
- package/src/utils/dynamic/dynamicUtils.ts +6 -6
- package/src/utils/dynamic/lazyLoad.tsx +8 -36
- package/src/utils/dynamic/papaparseLoader.ts +7 -0
- package/src/utils/file-reference/__tests__/file-reference.test.ts +583 -145
- package/src/utils/file-reference/index.ts +0 -1
- 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 +40 -84
- 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/google-places/googlePlacesUtils.test.ts +72 -3
- package/src/utils/google-places/googlePlacesUtils.ts +15 -2
- package/src/utils/google-places/loadGoogleMapsScript.test.ts +58 -1
- package/src/utils/google-places/loadGoogleMapsScript.ts +2 -1
- package/src/utils/index.ts +52 -11
- package/src/utils/location/location.test.ts +18 -115
- package/src/utils/performance/__tests__/bundleAnalysis.test.ts +148 -0
- package/src/utils/performance/__tests__/performanceBenchmark.test.ts +251 -0
- package/src/utils/performance/__tests__/performanceBudgets.test.ts +241 -0
- package/src/utils/performance/bundleAnalysis.ts +16 -22
- package/src/utils/performance/performanceBenchmark.ts +12 -4
- package/src/utils/performance/performanceBudgets.ts +9 -6
- package/src/utils/permissions/__tests__/permissionTypes.test.ts +149 -0
- package/src/utils/permissions/permissionUtils.test.ts +20 -42
- package/src/utils/persistence/__tests__/keyDerivation.test.ts +180 -9
- package/src/utils/persistence/__tests__/sensitiveFieldDetection.test.ts +164 -16
- package/src/utils/persistence/sensitiveFieldDetection.ts +2 -2
- package/src/utils/request-deduplication.ts +6 -4
- package/src/utils/security/auth-utils.ts +7 -7
- package/src/utils/security/secureDataAccess.test.ts +22 -191
- 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 +204 -0
- package/src/utils/security/securityMonitor.test.ts +90 -0
- package/src/utils/security/securityMonitor.ts +1 -1
- package/src/utils/storage/__tests__/config.unit.test.ts +239 -0
- package/src/utils/storage/__tests__/index.unit.test.ts +64 -12
- package/src/utils/storage/helpers.test.ts +757 -430
- package/src/utils/storage/helpers.ts +1 -2
- package/src/utils/storage/{index.ts → storageUtils.ts} +1 -36
- package/src/utils/storage/types.ts +2 -2
- package/src/utils/supabase/createBaseClient.test.ts +201 -0
- package/src/utils/supabase/createBaseClient.ts +27 -8
- package/src/utils/timezone/timezone.test.ts +25 -43
- package/src/utils/validation/__tests__/common.test.ts +115 -0
- package/src/utils/validation/__tests__/csrf.test.ts +65 -0
- package/src/utils/validation/__tests__/htmlSanitization.unit.test.ts +27 -7
- package/src/utils/validation/__tests__/passwordSchema.test.ts +164 -0
- package/src/utils/validation/__tests__/schema.test.ts +127 -0
- package/src/utils/validation/__tests__/sqlInjectionProtection.test.ts +76 -3
- package/src/utils/validation/__tests__/user.test.ts +173 -0
- package/src/utils/validation/__tests__/validation.test.ts +197 -0
- package/src/utils/validation/__tests__/validationUtils.test.ts +265 -43
- package/src/utils/validation/htmlSanitization.ts +27 -31
- package/src/utils/validation/schema.ts +6 -3
- package/src/utils/validation/sqlInjectionProtection.ts +2 -2
- package/src/vite-env.d.ts +6 -0
- package/dist/DataTable-DRUIgtUH.d.ts +0 -166
- package/dist/UnifiedAuthProvider-7SNDOWYD.js +0 -7
- package/dist/audit-MYQXYZFU.js +0 -3
- package/dist/chunk-7ILTDCL2.js +0 -80
- package/dist/chunk-EF2UGZWY.js +0 -611
- package/dist/chunk-FEJLJNWA.js +0 -181
- package/dist/chunk-GS5672WG.js +0 -2003
- package/dist/chunk-S6ZQKDY6.js +0 -62
- package/dist/chunk-Z2FNRKF3.js +0 -994
- package/dist/useToast-AyaT-x7p.d.ts +0 -68
- package/src/components/DataTable/components/index.ts +0 -16
- package/src/components/DataTable/core/index.ts +0 -1
- package/src/components/DataTable/hooks/index.ts +0 -13
- package/src/components/DataTable/utils/index.ts +0 -9
- package/src/components/PublicLayout/index.ts +0 -32
- package/src/hooks/__tests__/usePermissionCache.simple.test.ts +0 -192
- package/src/hooks/__tests__/usePermissionCache.unit.test.ts +0 -741
- package/src/hooks/public/index.ts +0 -36
- package/src/hooks/usePermissionCache.test.ts +0 -536
- package/src/rbac/__tests__/isSuperAdmin.real.test.ts +0 -82
- 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/index.ts +0 -26
- 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__/eventContext.unit.test.ts +0 -490
- package/src/utils/app/appNameResolver.simple.test.ts +0 -212
- package/src/utils/google-places/index.ts +0 -26
- package/src/utils/location/index.ts +0 -16
- package/src/utils/storage/__tests__/helpers.unit.test.ts +0 -332
- package/src/utils/timezone/index.ts +0 -17
- package/src/utils/validation/index.ts +0 -73
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
import * as react_hook_form from 'react-hook-form';
|
|
2
|
+
import { DefaultValues } from 'react-hook-form';
|
|
2
3
|
import { z } from 'zod';
|
|
3
|
-
import { l as OrganisationRole, m as OrganisationPermission, S as SuperAdminContext, E as Event } from './event-
|
|
4
|
+
import { l as OrganisationRole, m as OrganisationPermission, S as SuperAdminContext, E as Event } from './event-WTAQuGcq.js';
|
|
4
5
|
import { SupabaseClient } from '@supabase/supabase-js';
|
|
5
|
-
import { D as Database } from './database.generated-
|
|
6
|
+
import { D as Database } from './database.generated-DT8JTZiP.js';
|
|
6
7
|
import { F as FileCategory, a as FileReference } from './file-reference-BavO2eQj.js';
|
|
7
8
|
|
|
8
9
|
interface UseZodFormProps<T extends z.ZodTypeAny> {
|
|
9
10
|
schema: T;
|
|
10
|
-
defaultValues?:
|
|
11
|
+
defaultValues?: DefaultValues<z.infer<T>>;
|
|
11
12
|
mode?: 'onSubmit' | 'onBlur' | 'onChange' | 'onTouched' | 'all';
|
|
12
13
|
}
|
|
13
14
|
declare function useZodForm<T extends z.ZodTypeAny>({ schema, defaultValues, mode }: UseZodFormProps<T>): react_hook_form.UseFormReturn<z.TypeOf<T>, any, z.TypeOf<T>>;
|
|
@@ -39,7 +40,7 @@ declare function useZodForm<T extends z.ZodTypeAny>({ schema, defaultValues, mod
|
|
|
39
40
|
/**
|
|
40
41
|
* Options for configuring the useFormDialog hook behavior
|
|
41
42
|
*/
|
|
42
|
-
interface UseFormDialogOptions
|
|
43
|
+
interface UseFormDialogOptions {
|
|
43
44
|
/**
|
|
44
45
|
* Callback invoked when the dialog open state changes
|
|
45
46
|
* @param open - The new open state
|
|
@@ -112,7 +113,7 @@ interface UseFormDialogReturn<T = unknown> {
|
|
|
112
113
|
* });
|
|
113
114
|
* ```
|
|
114
115
|
*/
|
|
115
|
-
declare function useFormDialog<T = unknown>({ onOpenChange, resetOnClose, }?: UseFormDialogOptions
|
|
116
|
+
declare function useFormDialog<T = unknown>({ onOpenChange, resetOnClose, }?: UseFormDialogOptions): UseFormDialogReturn<T>;
|
|
116
117
|
|
|
117
118
|
/**
|
|
118
119
|
* @file useOrganisationPermissions Hook
|
|
@@ -368,7 +369,7 @@ interface StorageUploadOptions {
|
|
|
368
369
|
/** Optional custom path within the app/org/user structure */
|
|
369
370
|
customPath?: string;
|
|
370
371
|
/** Optional metadata to store with the file */
|
|
371
|
-
metadata?: Record<string,
|
|
372
|
+
metadata?: Record<string, unknown>;
|
|
372
373
|
}
|
|
373
374
|
interface StorageFileMetadata {
|
|
374
375
|
mimeType: string;
|
|
@@ -383,7 +384,7 @@ interface StorageFileMetadata {
|
|
|
383
384
|
uploadedAt: string;
|
|
384
385
|
tags?: string[];
|
|
385
386
|
isPublic: boolean;
|
|
386
|
-
customMetadata?: Record<string,
|
|
387
|
+
customMetadata?: Record<string, unknown>;
|
|
387
388
|
}
|
|
388
389
|
interface StorageUploadResult {
|
|
389
390
|
success: boolean;
|
package/dist/utils.d.ts
CHANGED
|
@@ -1,134 +1,14 @@
|
|
|
1
|
-
import { S as SanitizationOptions } from './timezone-
|
|
2
|
-
export {
|
|
1
|
+
import { S as SanitizationOptions } from './timezone-K-ptz3HO.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-K-ptz3HO.js';
|
|
3
3
|
import { SupabaseClient } from '@supabase/supabase-js';
|
|
4
|
-
import { D as Database } from './database.generated-
|
|
5
|
-
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-
|
|
4
|
+
import { D as Database } from './database.generated-DT8JTZiP.js';
|
|
5
|
+
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
6
|
import { z } from 'zod';
|
|
7
7
|
export { u as useComponentPerformance } from './useComponentPerformance-DE9l5RkL.js';
|
|
8
8
|
import * as date_fns from 'date-fns';
|
|
9
|
-
import { D as DataTable } from './DataTable-DRUIgtUH.js';
|
|
10
|
-
import { A as AutocompleteOptions, m as GooglePlaceAutocompletePrediction, P as ParsedAddress } from './types-DXstZpNI.js';
|
|
11
9
|
import React__default, { ComponentType } from 'react';
|
|
10
|
+
import { A as AutocompleteOptions, G as GooglePlaceAutocompletePrediction, P as ParsedAddress } from './types-Dr8sNhER.js';
|
|
12
11
|
import 'clsx';
|
|
13
|
-
import 'react/jsx-runtime';
|
|
14
|
-
import '@tanstack/react-table';
|
|
15
|
-
|
|
16
|
-
/**
|
|
17
|
-
* @file Google Places API Utilities
|
|
18
|
-
* @package @jmruthers/pace-core
|
|
19
|
-
* @module Utils/GooglePlaces
|
|
20
|
-
* @since 0.1.0
|
|
21
|
-
*
|
|
22
|
-
* Utility functions for interacting with Google Places API.
|
|
23
|
-
* Uses the Google Maps JavaScript API to avoid CORS issues.
|
|
24
|
-
*
|
|
25
|
-
* Features:
|
|
26
|
-
* - Places Autocomplete Service integration
|
|
27
|
-
* - Places Service integration
|
|
28
|
-
* - Address component parsing
|
|
29
|
-
* - Error handling
|
|
30
|
-
* - Request deduplication
|
|
31
|
-
*/
|
|
32
|
-
|
|
33
|
-
/**
|
|
34
|
-
* Fetch place autocomplete predictions using Google Maps JavaScript API
|
|
35
|
-
*
|
|
36
|
-
* @param query - Search query string
|
|
37
|
-
* @param apiKey - Google Places API key
|
|
38
|
-
* @param options - Optional autocomplete options
|
|
39
|
-
* @returns Promise resolving to array of predictions
|
|
40
|
-
*
|
|
41
|
-
* @example
|
|
42
|
-
* ```ts
|
|
43
|
-
* const predictions = await fetchPlaceAutocomplete(
|
|
44
|
-
* '123 Main St',
|
|
45
|
-
* 'your-api-key',
|
|
46
|
-
* { components: 'country:au' }
|
|
47
|
-
* );
|
|
48
|
-
* ```
|
|
49
|
-
*/
|
|
50
|
-
declare function fetchPlaceAutocomplete(query: string, apiKey: string, options?: AutocompleteOptions): Promise<GooglePlaceAutocompletePrediction[]>;
|
|
51
|
-
/**
|
|
52
|
-
* Fetch place details from Google Places API
|
|
53
|
-
*
|
|
54
|
-
* @param placeId - Google Place ID
|
|
55
|
-
* @param apiKey - Google Places API key
|
|
56
|
-
* @returns Promise resolving to place details
|
|
57
|
-
*
|
|
58
|
-
* @example
|
|
59
|
-
* ```ts
|
|
60
|
-
* const place = await fetchPlaceDetails('ChIJ...', 'your-api-key');
|
|
61
|
-
* ```
|
|
62
|
-
*/
|
|
63
|
-
declare function fetchPlaceDetails(placeId: string, apiKey: string): Promise<{
|
|
64
|
-
place_id: string;
|
|
65
|
-
formatted_address?: string;
|
|
66
|
-
address_components?: Array<{
|
|
67
|
-
long_name: string;
|
|
68
|
-
short_name: string;
|
|
69
|
-
types: string[];
|
|
70
|
-
}>;
|
|
71
|
-
geometry?: {
|
|
72
|
-
location?: {
|
|
73
|
-
lat: () => number;
|
|
74
|
-
lng: () => number;
|
|
75
|
-
};
|
|
76
|
-
};
|
|
77
|
-
}>;
|
|
78
|
-
/**
|
|
79
|
-
* Parse address components from Google Places API response
|
|
80
|
-
*
|
|
81
|
-
* @param components - Array of address components from Google API
|
|
82
|
-
* @returns Parsed address components
|
|
83
|
-
*/
|
|
84
|
-
declare function parseAddressComponents(components: Array<{
|
|
85
|
-
long_name: string;
|
|
86
|
-
short_name: string;
|
|
87
|
-
types: string[];
|
|
88
|
-
}> | undefined): {
|
|
89
|
-
street_number: string | null;
|
|
90
|
-
route: string | null;
|
|
91
|
-
suburb: string | null;
|
|
92
|
-
state: string | null;
|
|
93
|
-
postcode: string | null;
|
|
94
|
-
country: string | null;
|
|
95
|
-
};
|
|
96
|
-
/**
|
|
97
|
-
* Create parsed address from Google Places API place result
|
|
98
|
-
*
|
|
99
|
-
* @param place - Place result from Google Places Details API
|
|
100
|
-
* @returns Parsed address matching core_address table structure
|
|
101
|
-
*/
|
|
102
|
-
declare function createAddressFromPlaceResult(place: {
|
|
103
|
-
place_id: string;
|
|
104
|
-
formatted_address?: string;
|
|
105
|
-
address_components?: Array<{
|
|
106
|
-
long_name: string;
|
|
107
|
-
short_name: string;
|
|
108
|
-
types: string[];
|
|
109
|
-
}>;
|
|
110
|
-
geometry?: {
|
|
111
|
-
location?: {
|
|
112
|
-
lat: () => number;
|
|
113
|
-
lng: () => number;
|
|
114
|
-
};
|
|
115
|
-
};
|
|
116
|
-
}): ParsedAddress;
|
|
117
|
-
/**
|
|
118
|
-
* Get full address details by place_id
|
|
119
|
-
* Useful for retrieving address from stored place_id without autocomplete search
|
|
120
|
-
*
|
|
121
|
-
* @param placeId - Google Place ID
|
|
122
|
-
* @param apiKey - Google Places API key
|
|
123
|
-
* @returns Promise resolving to parsed address
|
|
124
|
-
*
|
|
125
|
-
* @example
|
|
126
|
-
* ```ts
|
|
127
|
-
* const address = await getAddressByPlaceId('ChIJ...', 'your-api-key');
|
|
128
|
-
* // Returns: { place_id: 'ChIJ...', full_address: '...', ... }
|
|
129
|
-
* ```
|
|
130
|
-
*/
|
|
131
|
-
declare function getAddressByPlaceId(placeId: string, apiKey: string): Promise<ParsedAddress | null>;
|
|
132
12
|
|
|
133
13
|
/**
|
|
134
14
|
* @file Debug Logger Utility
|
|
@@ -139,6 +19,9 @@ declare function getAddressByPlaceId(placeId: string, apiKey: string): Promise<P
|
|
|
139
19
|
/**
|
|
140
20
|
* Debug logger that respects environment settings
|
|
141
21
|
* Only logs in development mode to prevent production console spam
|
|
22
|
+
*
|
|
23
|
+
* NOTE: This utility intentionally uses console methods for debugging purposes.
|
|
24
|
+
* It provides a lightweight alternative to the main logger for development-only logging.
|
|
142
25
|
*/
|
|
143
26
|
declare class DebugLogger {
|
|
144
27
|
/**
|
|
@@ -148,19 +31,19 @@ declare class DebugLogger {
|
|
|
148
31
|
/**
|
|
149
32
|
* Log debug information only in development mode
|
|
150
33
|
*/
|
|
151
|
-
static log(component: string, message: string, ...args:
|
|
34
|
+
static log(component: string, message: string, ...args: unknown[]): void;
|
|
152
35
|
/**
|
|
153
36
|
* Log error information (always logged)
|
|
154
37
|
*/
|
|
155
|
-
static error(component: string, message: string, ...args:
|
|
38
|
+
static error(component: string, message: string, ...args: unknown[]): void;
|
|
156
39
|
/**
|
|
157
40
|
* Log warning information (always logged)
|
|
158
41
|
*/
|
|
159
|
-
static warn(component: string, message: string, ...args:
|
|
42
|
+
static warn(component: string, message: string, ...args: unknown[]): void;
|
|
160
43
|
/**
|
|
161
44
|
* Log info information only in development mode
|
|
162
45
|
*/
|
|
163
|
-
static info(component: string, message: string, ...args:
|
|
46
|
+
static info(component: string, message: string, ...args: unknown[]): void;
|
|
164
47
|
}
|
|
165
48
|
|
|
166
49
|
/**
|
|
@@ -253,6 +136,45 @@ declare class CachedAppIdResolver {
|
|
|
253
136
|
}
|
|
254
137
|
declare const cachedAppIdResolver: CachedAppIdResolver;
|
|
255
138
|
|
|
139
|
+
/**
|
|
140
|
+
* @file App Icons Asset Map
|
|
141
|
+
* @package @jmruthers/pace-core
|
|
142
|
+
* @module Assets/AppIcons
|
|
143
|
+
* @since 0.6.0
|
|
144
|
+
*
|
|
145
|
+
* Centralized mapping of app icons bundled with pace-core.
|
|
146
|
+
* These icons are included in the package so consuming apps don't need to provide them.
|
|
147
|
+
*/
|
|
148
|
+
/**
|
|
149
|
+
* Map of app names (lowercase) to their icon URLs.
|
|
150
|
+
* Icons are imported as modules and will be bundled with the package.
|
|
151
|
+
*/
|
|
152
|
+
declare const appIcons: Record<string, string>;
|
|
153
|
+
/**
|
|
154
|
+
* Get the icon URL for an app by its name.
|
|
155
|
+
*
|
|
156
|
+
* @param appName - The app name (e.g., 'CAKE', 'TRAC', 'CORE', 'pace-trac')
|
|
157
|
+
* @returns The icon URL if available, or undefined if not found
|
|
158
|
+
*
|
|
159
|
+
* @example
|
|
160
|
+
* ```ts
|
|
161
|
+
* const iconUrl = getAppIcon('CAKE'); // Returns bundled cake icon URL
|
|
162
|
+
* const iconUrl = getAppIcon('pace-trac'); // Returns bundled trac icon URL
|
|
163
|
+
* ```
|
|
164
|
+
*/
|
|
165
|
+
declare function getAppIcon(appName: string): string | undefined;
|
|
166
|
+
/**
|
|
167
|
+
* Check if an app has a bundled icon available.
|
|
168
|
+
*
|
|
169
|
+
* @param appName - The app name to check
|
|
170
|
+
* @returns true if an icon is available, false otherwise
|
|
171
|
+
*/
|
|
172
|
+
declare function hasAppIcon(appName: string): boolean;
|
|
173
|
+
/**
|
|
174
|
+
* List of all app names that have bundled icons.
|
|
175
|
+
*/
|
|
176
|
+
declare const appsWithIcons: string[];
|
|
177
|
+
|
|
256
178
|
/**
|
|
257
179
|
* @file Internal utilities for validation module
|
|
258
180
|
* @internal This file contains implementation details that should not be used directly
|
|
@@ -480,7 +402,7 @@ declare function validateSecurityHeaders(headers: Record<string, string>): boole
|
|
|
480
402
|
interface SecurityEvent {
|
|
481
403
|
id?: string;
|
|
482
404
|
action: string;
|
|
483
|
-
details: Record<string,
|
|
405
|
+
details: Record<string, unknown>;
|
|
484
406
|
timestamp?: number;
|
|
485
407
|
}
|
|
486
408
|
interface SecurityAlert {
|
|
@@ -649,13 +571,14 @@ interface LazyLoadOptions {
|
|
|
649
571
|
/**
|
|
650
572
|
* Create a lazy-loaded component with error boundary and loading fallback
|
|
651
573
|
*/
|
|
652
|
-
declare function createLazyComponent<T extends ComponentType<
|
|
574
|
+
declare function createLazyComponent<T extends ComponentType<Record<string, unknown>>>(importFn: () => Promise<{
|
|
653
575
|
default: T;
|
|
654
576
|
}>, componentName: string, options?: LazyLoadOptions): T;
|
|
577
|
+
|
|
655
578
|
/**
|
|
656
579
|
* Lazy-loaded DataTable component
|
|
657
580
|
*/
|
|
658
|
-
declare const LazyDataTable:
|
|
581
|
+
declare const LazyDataTable: ComponentType<Record<string, unknown>>;
|
|
659
582
|
|
|
660
583
|
/**
|
|
661
584
|
* Permission utilities for transforming and managing permissions
|
|
@@ -781,7 +704,7 @@ declare function validateDeviceFingerprint(storedFingerprint: DeviceFingerprint,
|
|
|
781
704
|
* @param organisationId - The organisation ID (unused)
|
|
782
705
|
* @returns Promise that resolves immediately
|
|
783
706
|
*/
|
|
784
|
-
declare function setOrganisationContext(
|
|
707
|
+
declare function setOrganisationContext(_supabase: SupabaseClient, _organisationId: string): Promise<void>;
|
|
785
708
|
/**
|
|
786
709
|
* Clear organisation context from the database session
|
|
787
710
|
*
|
|
@@ -805,7 +728,7 @@ declare function getOrganisationContext(supabase: SupabaseClient): Promise<strin
|
|
|
805
728
|
* @param supabase - Supabase client instance (unused)
|
|
806
729
|
* @returns Promise that resolves to false
|
|
807
730
|
*/
|
|
808
|
-
declare function isOrganisationContextAvailable(
|
|
731
|
+
declare function isOrganisationContextAvailable(_supabase: SupabaseClient): Promise<boolean>;
|
|
809
732
|
|
|
810
733
|
/**
|
|
811
734
|
* @file Location Utilities
|
|
@@ -912,6 +835,246 @@ declare function areCoordinatesEqual(coords1: Coordinates | null | undefined, co
|
|
|
912
835
|
*/
|
|
913
836
|
declare function getGoogleMapsUrl(coords?: Coordinates): string;
|
|
914
837
|
|
|
838
|
+
/**
|
|
839
|
+
* @file Google Places API Utilities
|
|
840
|
+
* @package @jmruthers/pace-core
|
|
841
|
+
* @module Utils/GooglePlaces
|
|
842
|
+
* @since 0.1.0
|
|
843
|
+
*
|
|
844
|
+
* Utility functions for interacting with Google Places API.
|
|
845
|
+
* Uses the Google Maps JavaScript API to avoid CORS issues.
|
|
846
|
+
*
|
|
847
|
+
* Features:
|
|
848
|
+
* - Places Autocomplete Service integration
|
|
849
|
+
* - Places Service integration
|
|
850
|
+
* - Address component parsing
|
|
851
|
+
* - Error handling
|
|
852
|
+
* - Request deduplication
|
|
853
|
+
*/
|
|
854
|
+
|
|
855
|
+
/**
|
|
856
|
+
* Fetch place autocomplete predictions using Google Maps JavaScript API
|
|
857
|
+
*
|
|
858
|
+
* @param query - Search query string
|
|
859
|
+
* @param apiKey - Google Places API key
|
|
860
|
+
* @param options - Optional autocomplete options
|
|
861
|
+
* @returns Promise resolving to array of predictions
|
|
862
|
+
*
|
|
863
|
+
* @example
|
|
864
|
+
* ```ts
|
|
865
|
+
* const predictions = await fetchPlaceAutocomplete(
|
|
866
|
+
* '123 Main St',
|
|
867
|
+
* 'your-api-key',
|
|
868
|
+
* { components: 'country:au' }
|
|
869
|
+
* );
|
|
870
|
+
* ```
|
|
871
|
+
*/
|
|
872
|
+
declare function fetchPlaceAutocomplete(query: string, apiKey: string, options?: AutocompleteOptions): Promise<GooglePlaceAutocompletePrediction[]>;
|
|
873
|
+
/**
|
|
874
|
+
* Fetch place details from Google Places API
|
|
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<{
|
|
886
|
+
place_id: string;
|
|
887
|
+
formatted_address?: string;
|
|
888
|
+
address_components?: Array<{
|
|
889
|
+
long_name: string;
|
|
890
|
+
short_name: string;
|
|
891
|
+
types: string[];
|
|
892
|
+
}>;
|
|
893
|
+
geometry?: {
|
|
894
|
+
location?: {
|
|
895
|
+
lat: () => number;
|
|
896
|
+
lng: () => number;
|
|
897
|
+
};
|
|
898
|
+
};
|
|
899
|
+
}>;
|
|
900
|
+
/**
|
|
901
|
+
* Parse address components from Google Places API response
|
|
902
|
+
*
|
|
903
|
+
* @param components - Array of address components from Google API
|
|
904
|
+
* @returns Parsed address components
|
|
905
|
+
*/
|
|
906
|
+
declare function parseAddressComponents(components: Array<{
|
|
907
|
+
long_name: string;
|
|
908
|
+
short_name: string;
|
|
909
|
+
types: string[];
|
|
910
|
+
}> | undefined): {
|
|
911
|
+
street_number: string | null;
|
|
912
|
+
route: string | null;
|
|
913
|
+
suburb: string | null;
|
|
914
|
+
state: string | null;
|
|
915
|
+
postcode: string | null;
|
|
916
|
+
country: string | null;
|
|
917
|
+
};
|
|
918
|
+
/**
|
|
919
|
+
* Create parsed address from Google Places API place result
|
|
920
|
+
*
|
|
921
|
+
* @param place - Place result from Google Places Details API
|
|
922
|
+
* @returns Parsed address matching core_address table structure
|
|
923
|
+
*/
|
|
924
|
+
declare function createAddressFromPlaceResult(place: {
|
|
925
|
+
place_id: string;
|
|
926
|
+
formatted_address?: string;
|
|
927
|
+
address_components?: Array<{
|
|
928
|
+
long_name: string;
|
|
929
|
+
short_name: string;
|
|
930
|
+
types: string[];
|
|
931
|
+
}>;
|
|
932
|
+
geometry?: {
|
|
933
|
+
location?: {
|
|
934
|
+
lat: () => number;
|
|
935
|
+
lng: () => number;
|
|
936
|
+
};
|
|
937
|
+
};
|
|
938
|
+
}): ParsedAddress;
|
|
939
|
+
/**
|
|
940
|
+
* Get full address details by place_id
|
|
941
|
+
* Useful for retrieving address from stored place_id without autocomplete search
|
|
942
|
+
*
|
|
943
|
+
* @param placeId - Google Place ID
|
|
944
|
+
* @param apiKey - Google Places API key
|
|
945
|
+
* @returns Promise resolving to parsed address
|
|
946
|
+
*
|
|
947
|
+
* @example
|
|
948
|
+
* ```ts
|
|
949
|
+
* const address = await getAddressByPlaceId('ChIJ...', 'your-api-key');
|
|
950
|
+
* // Returns: { place_id: 'ChIJ...', full_address: '...', ... }
|
|
951
|
+
* ```
|
|
952
|
+
*/
|
|
953
|
+
declare function getAddressByPlaceId(placeId: string, apiKey: string): Promise<ParsedAddress | null>;
|
|
954
|
+
|
|
955
|
+
/**
|
|
956
|
+
* @file Google Maps Script Loader
|
|
957
|
+
* @package @jmruthers/pace-core
|
|
958
|
+
* @module Utils/GooglePlaces
|
|
959
|
+
* @since 0.1.0
|
|
960
|
+
*
|
|
961
|
+
* Utility to dynamically load the Google Maps JavaScript API.
|
|
962
|
+
* This is required because the REST API doesn't support CORS from browsers.
|
|
963
|
+
*/
|
|
964
|
+
declare global {
|
|
965
|
+
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
|
+
};
|
|
1064
|
+
}
|
|
1065
|
+
}
|
|
1066
|
+
/**
|
|
1067
|
+
* Load Google Maps JavaScript API script
|
|
1068
|
+
* @param apiKey - Google Places API key
|
|
1069
|
+
* @param libraries - Comma-separated list of libraries to load (default: 'places')
|
|
1070
|
+
* @returns Promise that resolves when the script is loaded
|
|
1071
|
+
*/
|
|
1072
|
+
declare function loadGoogleMapsScript(apiKey: string, libraries?: string): Promise<void>;
|
|
1073
|
+
/**
|
|
1074
|
+
* Check if Google Maps is already loaded
|
|
1075
|
+
*/
|
|
1076
|
+
declare function isGoogleMapsLoaded(): boolean;
|
|
1077
|
+
|
|
915
1078
|
/**
|
|
916
1079
|
* Request Deduplication Utility
|
|
917
1080
|
* @package @jmruthers/pace-core
|
|
@@ -922,6 +1085,7 @@ declare function getGoogleMapsUrl(coords?: Coordinates): string;
|
|
|
922
1085
|
* When multiple components request the same data simultaneously, only one
|
|
923
1086
|
* request is made and all callers share the same promise.
|
|
924
1087
|
*/
|
|
1088
|
+
|
|
925
1089
|
/**
|
|
926
1090
|
* Generate a request key from request parameters
|
|
927
1091
|
*
|
|
@@ -931,7 +1095,7 @@ declare function getGoogleMapsUrl(coords?: Coordinates): string;
|
|
|
931
1095
|
* @param select - Select columns
|
|
932
1096
|
* @returns Request key string
|
|
933
1097
|
*/
|
|
934
|
-
declare function generateRequestKey(method: string, table: string, filters?: Record<string,
|
|
1098
|
+
declare function generateRequestKey(method: string, table: string, filters?: Record<string, unknown>, select?: string): string;
|
|
935
1099
|
/**
|
|
936
1100
|
* Get or create a request
|
|
937
1101
|
*
|
|
@@ -1003,6 +1167,6 @@ declare function getInFlightRequestStats(): {
|
|
|
1003
1167
|
* );
|
|
1004
1168
|
* ```
|
|
1005
1169
|
*/
|
|
1006
|
-
declare function deduplicatedQuery<T>(supabase:
|
|
1170
|
+
declare function deduplicatedQuery<T>(supabase: SupabaseClient<Database>, table: string, filters: Record<string, unknown>, select: string, requestFn: () => Promise<T>): Promise<T>;
|
|
1007
1171
|
|
|
1008
|
-
export { AutocompleteOptions, type CSRFTokenData, CachedAppIdResolver, type Coordinates, DebugLogger, GooglePlaceAutocompletePrediction, LazyDataTable, PERFORMANCE_BUDGETS, PERFORMANCE_THRESHOLDS, ParsedAddress, type PerformanceMetrics$1 as PerformanceMetrics, PermissionType, type SafeQueryParams, SanitizationOptions, type SecurityEvent$1 as SecurityEvent, areCoordinatesEqual, auditLogger, buildSafeQueryParams, bundleAnalyzer, cachedAppIdResolver, clearInFlightRequests, clearOrganisationContext, createAddressFromPlaceResult, createLazyComponent, createLazyUtility, createPerformanceBenchmark, csrfManager, deduplicatedQuery, deepMerge, detectSQLInjection, escapeLikeQuery, fetchPlaceAutocomplete, fetchPlaceDetails, formatCoordinates, generateCSRFToken, generateDeviceFingerprint, generateRequestKey, getAddressByPlaceId, getAppId, getAppIds, getAppNameFromBuildTime, getAppNameFromEnvironment, getAppNameFromGlobal, getAppNameFromPackageJson, getCSRFToken, getCurrentAppName, getCurrentAppNameWithFallback, getGoogleMapsUrl, getInFlightRequestStats, getOrCreateRequest, getOrganisationContext, getSecurityHeaders, hasAllPermissions, hasAnyPermission, hasPermission, hasValidCoordinates, isEmpty, isObject, isOrganisationContextAvailable, isStrongPassword, isValidDate, isValidEmail, isValidUrl, isWithinRange, lazyCSVUtils, lazyChartUtils, lazyDateUtils, lazyFormUtils, lazyLodash, limitOffsetSchema, loadCSVUtils, loadChartUtils, loadDateUtils, loadFormUtils, loadLodash, logAuditEvent, logAuthEvent, logPermissionEvent, logSecurityEvent, matchesPattern, measureRenderPerformance, orderBySchema, parseAddressComponents, parsePermission, performanceBudgetMonitor, sanitizeFilters, sanitizeSearchQuery, searchQuerySchema, securityMonitor, setOrganisationContext, setRBACAppName, sqlIdentifierSchema, trackDynamicImport, transformPermissionMapToBoolean, userPreferencesSchema, userSettingsSchema, usernameSchema, validateCSRFToken, validateDeviceFingerprint, validateImportPattern, validateSecurityHeaders, validateUserInput };
|
|
1172
|
+
export { AutocompleteOptions, type CSRFTokenData, CachedAppIdResolver, type Coordinates, DebugLogger, GooglePlaceAutocompletePrediction, LazyDataTable, PERFORMANCE_BUDGETS, PERFORMANCE_THRESHOLDS, ParsedAddress, type PerformanceMetrics$1 as PerformanceMetrics, PermissionType, type SafeQueryParams, SanitizationOptions, type SecurityEvent$1 as SecurityEvent, appIcons, appsWithIcons, areCoordinatesEqual, auditLogger, buildSafeQueryParams, bundleAnalyzer, cachedAppIdResolver, clearInFlightRequests, clearOrganisationContext, createAddressFromPlaceResult, createLazyComponent, createLazyUtility, createPerformanceBenchmark, csrfManager, deduplicatedQuery, deepMerge, detectSQLInjection, escapeLikeQuery, fetchPlaceAutocomplete, fetchPlaceDetails, formatCoordinates, generateCSRFToken, generateDeviceFingerprint, generateRequestKey, getAddressByPlaceId, getAppIcon, getAppId, getAppIds, getAppNameFromBuildTime, getAppNameFromEnvironment, getAppNameFromGlobal, getAppNameFromPackageJson, getCSRFToken, getCurrentAppName, getCurrentAppNameWithFallback, getGoogleMapsUrl, getInFlightRequestStats, getOrCreateRequest, getOrganisationContext, getSecurityHeaders, hasAllPermissions, hasAnyPermission, hasAppIcon, hasPermission, hasValidCoordinates, isEmpty, isGoogleMapsLoaded, isObject, isOrganisationContextAvailable, isStrongPassword, isValidDate, isValidEmail, isValidUrl, isWithinRange, lazyCSVUtils, lazyChartUtils, lazyDateUtils, lazyFormUtils, lazyLodash, limitOffsetSchema, loadCSVUtils, loadChartUtils, loadDateUtils, loadFormUtils, loadGoogleMapsScript, loadLodash, logAuditEvent, logAuthEvent, logPermissionEvent, logSecurityEvent, matchesPattern, measureRenderPerformance, orderBySchema, parseAddressComponents, parsePermission, performanceBudgetMonitor, sanitizeFilters, sanitizeSearchQuery, searchQuerySchema, securityMonitor, setOrganisationContext, setRBACAppName, sqlIdentifierSchema, trackDynamicImport, transformPermissionMapToBoolean, userPreferencesSchema, userSettingsSchema, usernameSchema, validateCSRFToken, validateDeviceFingerprint, validateImportPattern, validateSecurityHeaders, validateUserInput };
|