@jmruthers/pace-core 0.6.4 → 0.6.6
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 +104 -0
- package/README.md +5 -403
- package/core-usage-manifest.json +93 -0
- package/cursor-rules/00-pace-core-compliance.mdc +128 -26
- package/cursor-rules/01-standards-compliance.mdc +49 -8
- package/cursor-rules/02-project-structure.mdc +6 -0
- package/cursor-rules/03-solid-principles.mdc +2 -0
- package/cursor-rules/04-testing-standards.mdc +2 -0
- package/cursor-rules/05-bug-reports-and-features.mdc +2 -0
- package/cursor-rules/06-code-quality.mdc +2 -0
- package/cursor-rules/07-tech-stack-compliance.mdc +2 -0
- package/cursor-rules/08-markup-quality.mdc +52 -27
- package/cursor-rules/09-rbac-compliance.mdc +462 -0
- package/cursor-rules/10-error-handling-patterns.mdc +179 -0
- package/cursor-rules/11-performance-optimization.mdc +169 -0
- package/cursor-rules/12-ci-cd-integration.mdc +150 -0
- package/dist/{AuthService-Cb34EQs3.d.ts → AuthService-DmfO5rGS.d.ts} +10 -0
- package/dist/{DataTable-BMRU8a1j.d.ts → DataTable-2N_tqbfq.d.ts} +1 -1
- package/dist/DataTable-LRJL4IRV.js +15 -0
- package/dist/{PublicPageProvider-DEMpysFR.d.ts → PublicPageProvider-BBH6Vqg7.d.ts} +72 -139
- package/dist/UnifiedAuthProvider-ZT6TIGM7.js +7 -0
- package/dist/api-Y4MQWOFW.js +4 -0
- package/dist/audit-MYQXYZFU.js +3 -0
- package/dist/{chunk-J36DSWQK.js → chunk-2HGJFNAH.js} +8 -28
- package/dist/{chunk-OEWDTMG7.js → chunk-3O3WHILE.js} +38 -121
- package/dist/{chunk-M43Y4SSO.js → chunk-3QC3KRHK.js} +1 -14
- package/dist/{chunk-DGUM43GV.js → chunk-3RG5ZIWI.js} +1 -4
- package/dist/{chunk-QXHPKYJV.js → chunk-4SXLQIZO.js} +1 -26
- package/dist/chunk-4T7OBVTU.js +62 -0
- package/dist/{chunk-E66EQZE6.js → chunk-6GLLNA6U.js} +3 -9
- package/dist/{chunk-ZSAAAMVR.js → chunk-6QYDGKQY.js} +1 -4
- package/dist/{chunk-NN6WWZ5U.js → chunk-7TYHROIV.js} +579 -563
- package/dist/{chunk-M7MPQISP.js → chunk-A55DK444.js} +9 -16
- package/dist/{chunk-63FOKYGO.js → chunk-AHU7G2R5.js} +2 -11
- package/dist/{chunk-L4OXEN46.js → chunk-BVP2BCJF.js} +2 -16
- package/dist/chunk-C7NSAPTL.js +1 -0
- package/dist/{chunk-YKRAFF5K.js → chunk-FENMYN2U.js} +73 -149
- package/dist/{chunk-AVMLPIM7.js → chunk-FTCRZOG2.js} +284 -432
- package/dist/{chunk-G37KK66H.js → chunk-FYHN4DD5.js} +60 -19
- package/dist/{chunk-VBXEHIUJ.js → chunk-HF6O3O37.js} +6 -88
- package/dist/{chunk-I6DAQMWX.js → chunk-LAZMKTTF.js} +930 -891
- package/dist/{chunk-5EC5MEWX.js → chunk-MAGBIDNS.js} +77 -222
- package/dist/chunk-MBADTM7L.js +64 -0
- package/dist/chunk-OHIK3MIO.js +994 -0
- package/dist/{chunk-6SOIHG6Z.js → chunk-S7DKJPLT.js} +115 -44
- package/dist/{chunk-FMUCXFII.js → chunk-SD6WQY43.js} +1 -5
- package/dist/{chunk-PWLANIRT.js → chunk-TTRFSOKR.js} +1 -7
- package/dist/{chunk-5DRSZLL2.js → chunk-UH3NTO3F.js} +1 -6
- package/dist/{chunk-FFQEQTNW.js → chunk-UIYSCEV7.js} +134 -45
- package/dist/{chunk-3LPHPB62.js → chunk-ZFYPMX46.js} +271 -87
- package/dist/{chunk-7JPAB3T5.js → chunk-ZS5VO5JB.js} +1989 -1283
- package/dist/components.d.ts +6 -6
- package/dist/components.js +57 -267
- package/dist/{database.generated-CzIvgcPu.d.ts → database.generated-CcnC_DRc.d.ts} +4795 -3691
- package/dist/eslint-rules/index.cjs +22 -0
- package/dist/eslint-rules/rules/compliance.cjs +348 -0
- package/dist/eslint-rules/rules/components.cjs +113 -0
- package/dist/eslint-rules/rules/imports.cjs +102 -0
- package/dist/eslint-rules/rules/rbac.cjs +790 -0
- package/dist/eslint-rules/utils/helpers.cjs +42 -0
- package/dist/eslint-rules/utils/manifest-loader.cjs +75 -0
- package/dist/hooks.d.ts +5 -5
- package/dist/hooks.js +62 -270
- package/dist/icons/index.d.ts +1 -0
- package/dist/icons/index.js +1 -0
- package/dist/index.d.ts +36 -26
- package/dist/index.js +87 -690
- package/dist/providers.d.ts +2 -2
- package/dist/providers.js +8 -35
- package/dist/rbac/eslint-rules.d.ts +46 -44
- package/dist/rbac/eslint-rules.js +7 -4
- package/dist/rbac/index.d.ts +124 -594
- package/dist/rbac/index.js +14 -207
- package/dist/styles/index.js +2 -12
- package/dist/theming/runtime.js +3 -19
- package/dist/{timezone-CHhWg6b4.d.ts → timezone-BZe_eUxx.d.ts} +175 -1
- package/dist/{types-CkbwOr4Y.d.ts → types-B-K_5VnO.d.ts} +4 -0
- package/dist/types-t9H8qKRw.d.ts +55 -0
- package/dist/types.d.ts +1 -1
- package/dist/types.js +7 -94
- package/dist/{usePublicRouteParams-i3qtoBgg.d.ts → usePublicRouteParams-COZ28Mvq.d.ts} +9 -9
- package/dist/utils.d.ts +24 -117
- package/dist/utils.js +54 -392
- package/docs/README.md +16 -6
- package/docs/api/README.md +4 -402
- package/docs/api/modules.md +454 -930
- package/docs/api-reference/components.md +3 -1
- package/docs/api-reference/deprecated.md +31 -6
- package/docs/api-reference/rpc-functions.md +78 -3
- package/docs/best-practices/accessibility.md +6 -3
- package/docs/getting-started/cursor-rules.md +3 -23
- package/docs/getting-started/dependencies.md +650 -0
- package/docs/getting-started/installation-guide.md +20 -7
- package/docs/getting-started/quick-start.md +23 -12
- package/docs/implementation-guides/permission-enforcement.md +4 -0
- package/docs/rbac/MIGRATION_GUIDE.md +819 -0
- package/docs/rbac/RBAC_CONTRACT.md +724 -0
- package/docs/rbac/README.md +12 -3
- package/docs/rbac/edge-functions-guide.md +376 -0
- package/docs/rbac/secure-client-protection.md +0 -34
- package/docs/standards/00-pace-core-compliance.md +967 -0
- package/docs/standards/01-standards-compliance.md +188 -0
- package/docs/standards/02-project-structure.md +985 -0
- package/docs/standards/03-solid-principles.md +39 -0
- package/docs/standards/04-testing-standards.md +36 -0
- package/docs/standards/05-bug-reports-and-features.md +27 -0
- package/docs/standards/{04-code-style-standard.md → 06-code-quality.md} +2 -0
- package/docs/standards/07-tech-stack-compliance.md +30 -0
- package/docs/standards/08-markup-quality.md +345 -0
- package/docs/standards/{07-rbac-and-rls-standard.md → 09-rbac-compliance.md} +149 -54
- package/docs/standards/10-error-handling-patterns.md +401 -0
- package/docs/standards/11-performance-optimization.md +348 -0
- package/docs/standards/12-ci-cd-integration.md +370 -0
- package/docs/standards/ALIGNMENT_REVIEW_SUMMARY.md +192 -0
- package/docs/standards/README.md +62 -33
- package/docs/troubleshooting/organisation-context-setup.md +42 -19
- package/eslint-config-pace-core.cjs +20 -4
- package/package.json +31 -21
- package/scripts/audit/audit-compliance.cjs +1295 -0
- package/scripts/audit/audit-components.cjs +260 -0
- package/scripts/audit/audit-dependencies.cjs +395 -0
- package/scripts/audit/audit-rbac.cjs +954 -0
- package/scripts/audit/audit-standards.cjs +1268 -0
- package/scripts/audit/index.cjs +1898 -194
- package/scripts/install-cursor-rules.cjs +259 -8
- package/scripts/validate-master.js +1 -1
- package/src/__tests__/fixtures/supabase.ts +1 -1
- package/src/__tests__/helpers/__tests__/component-test-utils.test.tsx +1 -1
- package/src/__tests__/helpers/__tests__/optimized-test-setup.test.ts +1 -1
- package/src/__tests__/helpers/__tests__/supabaseMock.test.ts +1 -1
- package/src/__tests__/helpers/__tests__/test-utils.test.tsx +3 -3
- package/src/__tests__/helpers/component-test-utils.tsx +1 -1
- package/src/__tests__/helpers/supabaseMock.ts +2 -2
- package/src/__tests__/public-recipe-view.test.ts +38 -9
- package/src/components/Button/Button.tsx +5 -1
- package/src/components/ContextSelector/ContextSelector.tsx +42 -39
- package/src/components/DataTable/__tests__/keyboard.test.tsx +15 -2
- package/src/components/DataTable/components/DataTableBody.tsx +55 -31
- package/src/components/DataTable/components/DataTableCore.tsx +186 -13
- package/src/components/DataTable/components/DataTableLayout.tsx +30 -5
- package/src/components/DataTable/components/EditFields.tsx +23 -3
- package/src/components/DataTable/components/EditableRow.tsx +7 -2
- package/src/components/DataTable/components/ImportModal.tsx +4 -6
- package/src/components/DataTable/components/RowComponent.tsx +12 -0
- package/src/components/DataTable/components/ViewRowModal.tsx +4 -4
- package/src/components/DataTable/components/__tests__/ImportModal.test.tsx +455 -96
- package/src/components/DataTable/components/__tests__/ViewRowModal.test.tsx +122 -58
- package/src/components/DataTable/components/hooks/usePermissionTracking.ts +0 -4
- package/src/components/DataTable/core/DataTableContext.tsx +1 -1
- package/src/components/DataTable/hooks/__tests__/useDataTableState.test.ts +51 -47
- package/src/components/DataTable/hooks/useDataTablePermissions.ts +24 -21
- package/src/components/DataTable/hooks/useDataTableState.ts +125 -9
- package/src/components/DataTable/hooks/useTableColumns.ts +40 -2
- package/src/components/DataTable/hooks/useTableHandlers.ts +11 -0
- package/src/components/DataTable/types.ts +5 -0
- package/src/components/DateTimeField/DateTimeField.tsx +20 -20
- package/src/components/DateTimeField/README.md +5 -2
- package/src/components/Dialog/Dialog.test.tsx +361 -318
- package/src/components/Dialog/Dialog.tsx +1154 -323
- package/src/components/Dialog/index.ts +3 -3
- package/src/components/FileDisplay/FileDisplay.test.tsx +45 -2
- package/src/components/FileDisplay/FileDisplay.tsx +28 -22
- package/src/components/Form/Form.test.tsx +9 -10
- package/src/components/Form/Form.tsx +369 -9
- package/src/components/InactivityWarningModal/InactivityWarningModal.test.tsx +28 -28
- package/src/components/InactivityWarningModal/InactivityWarningModal.tsx +40 -54
- package/src/components/LoginForm/LoginForm.tsx +2 -2
- package/src/components/NavigationMenu/NavigationMenu.test.tsx +14 -13
- package/src/components/NavigationMenu/NavigationMenu.tsx +2 -2
- package/src/components/NavigationMenu/useNavigationFiltering.ts +11 -21
- package/src/components/PaceAppLayout/PaceAppLayout.test.tsx +6 -4
- package/src/components/PaceAppLayout/PaceAppLayout.tsx +30 -41
- package/src/components/PaceAppLayout/README.md +10 -9
- package/src/components/PaceAppLayout/test-setup.tsx +40 -31
- package/src/components/PaceLoginPage/PaceLoginPage.test.tsx +108 -61
- package/src/components/PaceLoginPage/PaceLoginPage.tsx +27 -3
- package/src/components/PasswordChange/PasswordChangeForm.test.tsx +61 -0
- package/src/components/PasswordChange/PasswordChangeForm.tsx +20 -13
- package/src/components/PublicLayout/PublicLayout.test.tsx +7 -3
- package/src/components/PublicLayout/PublicPageLayout.tsx +5 -8
- package/src/components/Select/Select.tsx +23 -21
- package/src/components/Select/types.ts +1 -1
- package/src/components/UserMenu/UserMenu.test.tsx +38 -6
- package/src/components/UserMenu/UserMenu.tsx +39 -34
- package/src/components/index.ts +3 -4
- package/src/eslint-rules/index.cjs +22 -0
- package/src/eslint-rules/rules/compliance.cjs +348 -0
- package/src/eslint-rules/rules/components.cjs +113 -0
- package/src/eslint-rules/rules/imports.cjs +102 -0
- package/src/eslint-rules/rules/rbac.cjs +790 -0
- package/src/eslint-rules/utils/helpers.cjs +42 -0
- package/src/eslint-rules/utils/manifest-loader.cjs +75 -0
- package/src/hooks/__tests__/hooks.integration.test.tsx +6 -8
- package/src/hooks/__tests__/useAppConfig.unit.test.ts +129 -67
- package/src/hooks/__tests__/usePublicEvent.simple.test.ts +149 -67
- package/src/hooks/__tests__/usePublicEvent.test.ts +149 -79
- package/src/hooks/__tests__/usePublicEvent.unit.test.ts +158 -109
- package/src/hooks/__tests__/useSessionDraft.test.ts +163 -0
- package/src/hooks/__tests__/useSessionRestoration.unit.test.tsx +10 -5
- package/src/hooks/public/usePublicEvent.ts +62 -190
- package/src/hooks/public/usePublicEventLogo.test.ts +70 -17
- package/src/hooks/public/usePublicEventLogo.ts +19 -9
- package/src/hooks/useAppConfig.ts +26 -24
- package/src/hooks/useEventTheme.test.ts +211 -233
- package/src/hooks/useEventTheme.ts +19 -28
- package/src/hooks/useEvents.ts +11 -7
- package/src/hooks/useKeyboardShortcuts.ts +1 -1
- package/src/hooks/useOrganisationPermissions.ts +9 -11
- package/src/hooks/useOrganisations.ts +13 -7
- package/src/hooks/useQueryCache.ts +0 -1
- package/src/hooks/useSessionDraft.ts +380 -0
- package/src/hooks/useSessionRestoration.ts +3 -1
- package/src/icons/index.ts +27 -0
- package/src/index.ts +16 -1
- package/src/providers/OrganisationProvider.tsx +23 -14
- package/src/providers/services/EventServiceProvider.tsx +1 -24
- package/src/providers/services/UnifiedAuthProvider.tsx +5 -48
- package/src/providers/services/__tests__/UnifiedAuthProvider.integration.test.tsx +3 -0
- package/src/rbac/README.md +20 -20
- package/src/rbac/__tests__/adapters.comprehensive.test.tsx +7 -457
- package/src/rbac/__tests__/auth-rbac.e2e.test.tsx +33 -7
- package/src/rbac/adapters.tsx +7 -295
- package/src/rbac/api.test.ts +44 -56
- package/src/rbac/api.ts +10 -17
- package/src/rbac/cache-invalidation.ts +0 -1
- package/src/rbac/compliance/index.ts +10 -0
- package/src/rbac/compliance/pattern-detector.ts +553 -0
- package/src/rbac/compliance/runtime-compliance.ts +22 -0
- package/src/rbac/components/AccessDenied.tsx +150 -0
- package/src/rbac/components/NavigationGuard.tsx +12 -20
- package/src/rbac/components/PagePermissionGuard.tsx +4 -24
- package/src/rbac/components/__tests__/NavigationGuard.test.tsx +21 -8
- package/src/rbac/components/index.ts +3 -41
- package/src/rbac/eslint-rules.js +1 -1
- package/src/rbac/hooks/index.ts +0 -3
- package/src/rbac/hooks/permissions/index.ts +0 -3
- package/src/rbac/hooks/permissions/useAccessLevel.ts +4 -8
- package/src/rbac/hooks/usePermissions.ts +0 -3
- package/src/rbac/hooks/useRBAC.test.ts +21 -3
- package/src/rbac/hooks/useRBAC.ts +4 -3
- package/src/rbac/hooks/useResolvedScope.test.ts +57 -47
- package/src/rbac/hooks/useResolvedScope.ts +58 -140
- package/src/rbac/hooks/useResourcePermissions.test.ts +241 -60
- package/src/rbac/hooks/useResourcePermissions.ts +182 -63
- package/src/rbac/hooks/useRoleManagement.test.ts +65 -22
- package/src/rbac/hooks/useRoleManagement.ts +147 -19
- package/src/rbac/hooks/useSecureSupabase.ts +4 -8
- package/src/rbac/index.ts +7 -9
- package/src/rbac/permissions.ts +17 -17
- package/src/rbac/utils/contextValidator.ts +45 -7
- package/src/services/AuthService.ts +132 -23
- package/src/services/EventService.ts +4 -97
- package/src/services/InactivityService.ts +155 -58
- package/src/services/OrganisationService.ts +7 -44
- package/src/services/__tests__/OrganisationService.test.ts +26 -8
- package/src/services/base/BaseService.ts +0 -3
- package/src/styles/core.css +4 -0
- package/src/types/database.generated.ts +4733 -3809
- package/src/utils/__tests__/organisationContext.unit.test.ts +9 -10
- package/src/utils/context/organisationContext.test.ts +13 -28
- package/src/utils/context/organisationContext.ts +21 -52
- package/src/utils/dynamic/dynamicUtils.ts +1 -1
- package/src/utils/file-reference/index.ts +39 -15
- package/src/utils/formatting/formatDateTime.test.ts +3 -2
- package/src/utils/formatting/formatTime.test.ts +3 -2
- package/src/utils/google-places/loadGoogleMapsScript.ts +29 -4
- package/src/utils/index.ts +4 -1
- package/src/utils/persistence/__tests__/keyDerivation.test.ts +135 -0
- package/src/utils/persistence/__tests__/sensitiveFieldDetection.test.ts +123 -0
- package/src/utils/persistence/keyDerivation.ts +304 -0
- package/src/utils/persistence/sensitiveFieldDetection.ts +212 -0
- package/src/utils/security/secureStorage.ts +5 -5
- package/src/utils/storage/helpers.ts +3 -3
- package/src/utils/supabase/createBaseClient.ts +147 -0
- package/src/utils/timezone/timezone.test.ts +1 -2
- package/src/utils/timezone/timezone.ts +1 -1
- package/src/utils/validation/csrf.ts +4 -4
- package/cursor-rules/CHANGELOG.md +0 -119
- package/cursor-rules/README.md +0 -192
- package/dist/DataTable-E7YQZD7D.js +0 -175
- package/dist/DataTable-E7YQZD7D.js.map +0 -1
- package/dist/UnifiedAuthProvider-QPXO24B4.js +0 -18
- package/dist/UnifiedAuthProvider-QPXO24B4.js.map +0 -1
- package/dist/api-6LVZTHDS.js +0 -52
- package/dist/api-6LVZTHDS.js.map +0 -1
- package/dist/audit-V53FV5AG.js +0 -17
- package/dist/audit-V53FV5AG.js.map +0 -1
- package/dist/chunk-36LVWXB2.js +0 -227
- package/dist/chunk-36LVWXB2.js.map +0 -1
- package/dist/chunk-3LPHPB62.js.map +0 -1
- package/dist/chunk-5DRSZLL2.js.map +0 -1
- package/dist/chunk-5EC5MEWX.js.map +0 -1
- package/dist/chunk-63FOKYGO.js.map +0 -1
- package/dist/chunk-6SOIHG6Z.js.map +0 -1
- package/dist/chunk-7JPAB3T5.js.map +0 -1
- package/dist/chunk-ATKZM7RX.js +0 -2053
- package/dist/chunk-ATKZM7RX.js.map +0 -1
- package/dist/chunk-AVMLPIM7.js.map +0 -1
- package/dist/chunk-DGUM43GV.js.map +0 -1
- package/dist/chunk-E66EQZE6.js.map +0 -1
- package/dist/chunk-FFQEQTNW.js.map +0 -1
- package/dist/chunk-FMUCXFII.js.map +0 -1
- package/dist/chunk-G37KK66H.js.map +0 -1
- package/dist/chunk-I6DAQMWX.js.map +0 -1
- package/dist/chunk-J36DSWQK.js.map +0 -1
- package/dist/chunk-KQCRWDSA.js +0 -1
- package/dist/chunk-KQCRWDSA.js.map +0 -1
- package/dist/chunk-L4OXEN46.js.map +0 -1
- package/dist/chunk-LMC26NLJ.js +0 -84
- package/dist/chunk-LMC26NLJ.js.map +0 -1
- package/dist/chunk-M43Y4SSO.js.map +0 -1
- package/dist/chunk-M7MPQISP.js.map +0 -1
- package/dist/chunk-NN6WWZ5U.js.map +0 -1
- package/dist/chunk-OEWDTMG7.js.map +0 -1
- package/dist/chunk-PWLANIRT.js.map +0 -1
- package/dist/chunk-QXHPKYJV.js.map +0 -1
- package/dist/chunk-VBXEHIUJ.js.map +0 -1
- package/dist/chunk-YKRAFF5K.js.map +0 -1
- package/dist/chunk-ZSAAAMVR.js.map +0 -1
- package/dist/components.js.map +0 -1
- package/dist/contextValidator-OOPCLPZW.js +0 -9
- package/dist/contextValidator-OOPCLPZW.js.map +0 -1
- package/dist/eslint-rules/pace-core-compliance.cjs +0 -510
- package/dist/hooks.js.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/providers.js.map +0 -1
- package/dist/rbac/eslint-rules.js.map +0 -1
- package/dist/rbac/index.js.map +0 -1
- package/dist/styles/index.js.map +0 -1
- package/dist/theming/runtime.js.map +0 -1
- package/dist/types.js.map +0 -1
- package/dist/utils.js.map +0 -1
- package/docs/standards/01-architecture-standard.md +0 -44
- package/docs/standards/02-api-and-rpc-standard.md +0 -39
- package/docs/standards/03-component-standard.md +0 -32
- package/docs/standards/05-security-standard.md +0 -44
- package/docs/standards/06-testing-and-docs-standard.md +0 -29
- package/docs/standards/pace-core-compliance.md +0 -432
- package/scripts/audit/core/checks/accessibility.cjs +0 -197
- package/scripts/audit/core/checks/api-usage.cjs +0 -191
- package/scripts/audit/core/checks/bundle.cjs +0 -142
- package/scripts/audit/core/checks/compliance.cjs +0 -2706
- package/scripts/audit/core/checks/config.cjs +0 -54
- package/scripts/audit/core/checks/coverage.cjs +0 -84
- package/scripts/audit/core/checks/dependencies.cjs +0 -994
- package/scripts/audit/core/checks/documentation.cjs +0 -268
- package/scripts/audit/core/checks/environment.cjs +0 -116
- package/scripts/audit/core/checks/error-handling.cjs +0 -340
- package/scripts/audit/core/checks/forms.cjs +0 -172
- package/scripts/audit/core/checks/heuristics.cjs +0 -68
- package/scripts/audit/core/checks/hooks.cjs +0 -334
- package/scripts/audit/core/checks/imports.cjs +0 -244
- package/scripts/audit/core/checks/performance.cjs +0 -325
- package/scripts/audit/core/checks/routes.cjs +0 -117
- package/scripts/audit/core/checks/state.cjs +0 -130
- package/scripts/audit/core/checks/structure.cjs +0 -65
- package/scripts/audit/core/checks/style.cjs +0 -584
- package/scripts/audit/core/checks/testing.cjs +0 -122
- package/scripts/audit/core/checks/typescript.cjs +0 -61
- package/scripts/audit/core/scanner.cjs +0 -199
- package/scripts/audit/core/utils.cjs +0 -137
- package/scripts/audit/reporters/console.cjs +0 -151
- package/scripts/audit/reporters/json.cjs +0 -54
- package/scripts/audit/reporters/markdown.cjs +0 -124
- package/scripts/audit-consuming-app.cjs +0 -86
- package/src/eslint-rules/pace-core-compliance.cjs +0 -510
- package/src/eslint-rules/pace-core-compliance.js +0 -638
- package/src/rbac/components/EnhancedNavigationMenu.test.tsx +0 -555
- package/src/rbac/components/EnhancedNavigationMenu.tsx +0 -293
- package/src/rbac/components/NavigationProvider.test.tsx +0 -481
- package/src/rbac/components/NavigationProvider.tsx +0 -345
- package/src/rbac/components/PagePermissionProvider.test.tsx +0 -476
- package/src/rbac/components/PagePermissionProvider.tsx +0 -279
- package/src/rbac/components/PermissionEnforcer.tsx +0 -312
- package/src/rbac/components/RoleBasedRouter.tsx +0 -440
- package/src/rbac/components/SecureDataProvider.test.tsx +0 -543
- package/src/rbac/components/SecureDataProvider.tsx +0 -339
- package/src/rbac/components/__tests__/EnhancedNavigationMenu.test.tsx +0 -620
- package/src/rbac/components/__tests__/NavigationProvider.test.tsx +0 -726
- package/src/rbac/components/__tests__/PagePermissionProvider.test.tsx +0 -661
- package/src/rbac/components/__tests__/PermissionEnforcer.test.tsx +0 -881
- package/src/rbac/components/__tests__/RoleBasedRouter.test.tsx +0 -783
- package/src/rbac/components/__tests__/SecureDataProvider.fixed.test.tsx +0 -645
- package/src/rbac/components/__tests__/SecureDataProvider.test.tsx +0 -659
- package/src/rbac/hooks/permissions/useCachedPermissions.ts +0 -79
- package/src/rbac/hooks/permissions/useHasAllPermissions.ts +0 -90
- package/src/rbac/hooks/permissions/useHasAnyPermission.ts +0 -90
package/dist/rbac/index.js
CHANGED
|
@@ -1,207 +1,14 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
RBACErrorCode,
|
|
16
|
-
RPCFunction,
|
|
17
|
-
RoleBasedRouter,
|
|
18
|
-
SecureDataProvider,
|
|
19
|
-
checkRuntimeCompliance,
|
|
20
|
-
createRBACExpressMiddleware,
|
|
21
|
-
createRBACMiddleware,
|
|
22
|
-
getCustomAuthCodeFixes,
|
|
23
|
-
getDirectSupabaseAuthFixes,
|
|
24
|
-
getDuplicateConfigFixes,
|
|
25
|
-
getQuickFixes,
|
|
26
|
-
getSetupIssues,
|
|
27
|
-
getUnprotectedPageFixes,
|
|
28
|
-
hasAnyPermissionCached,
|
|
29
|
-
hasPermissionCached,
|
|
30
|
-
isRBACInitialized,
|
|
31
|
-
isValidPermission,
|
|
32
|
-
useNavigationPermissions,
|
|
33
|
-
usePagePermissions,
|
|
34
|
-
useRoleBasedRouter,
|
|
35
|
-
useSecureData,
|
|
36
|
-
validateAndWarn,
|
|
37
|
-
validateDatabaseConfiguration,
|
|
38
|
-
validateRBACSetup,
|
|
39
|
-
withAccessLevelGuard,
|
|
40
|
-
withPermissionGuard,
|
|
41
|
-
withRoleGuard
|
|
42
|
-
} from "../chunk-ATKZM7RX.js";
|
|
43
|
-
import {
|
|
44
|
-
SECURE_CLIENT_SYMBOL,
|
|
45
|
-
SecureSupabaseClient,
|
|
46
|
-
createSecureClient,
|
|
47
|
-
fromSupabaseClient,
|
|
48
|
-
isSecureClient,
|
|
49
|
-
useAccessLevel,
|
|
50
|
-
useCachedPermissions,
|
|
51
|
-
useCan,
|
|
52
|
-
useHasAllPermissions,
|
|
53
|
-
useHasAnyPermission,
|
|
54
|
-
useMultiplePermissions,
|
|
55
|
-
usePermissions,
|
|
56
|
-
useRBAC,
|
|
57
|
-
useResolvedScope,
|
|
58
|
-
useResourcePermissions,
|
|
59
|
-
useRoleManagement,
|
|
60
|
-
useSecureSupabase,
|
|
61
|
-
warnIfInsecureClient
|
|
62
|
-
} from "../chunk-NN6WWZ5U.js";
|
|
63
|
-
import "../chunk-OEWDTMG7.js";
|
|
64
|
-
import "../chunk-KQCRWDSA.js";
|
|
65
|
-
import "../chunk-AVMLPIM7.js";
|
|
66
|
-
import {
|
|
67
|
-
CACHE_PATTERNS,
|
|
68
|
-
RBACCache,
|
|
69
|
-
RBACEngine,
|
|
70
|
-
clearInFlightRequests,
|
|
71
|
-
createRBACConfig,
|
|
72
|
-
createRBACEngine,
|
|
73
|
-
disablePerformanceMonitoring,
|
|
74
|
-
enablePerformanceMonitoring,
|
|
75
|
-
getAccessLevel,
|
|
76
|
-
getInFlightRequestCount,
|
|
77
|
-
getPerformanceMetrics,
|
|
78
|
-
getPerformanceSummary,
|
|
79
|
-
getPermissionMap,
|
|
80
|
-
getRBACConfig,
|
|
81
|
-
getRBACLogger,
|
|
82
|
-
getRoleContext,
|
|
83
|
-
hasAllPermissions,
|
|
84
|
-
hasAnyPermission,
|
|
85
|
-
hasPermission,
|
|
86
|
-
isDebugMode,
|
|
87
|
-
isDevelopmentMode,
|
|
88
|
-
isPerformanceMonitoringEnabled,
|
|
89
|
-
isPermitted,
|
|
90
|
-
isPermittedCached,
|
|
91
|
-
rbacCache,
|
|
92
|
-
recordAuditEvent,
|
|
93
|
-
recordPermissionCheck,
|
|
94
|
-
resetPerformanceMetrics,
|
|
95
|
-
resolveAppContext,
|
|
96
|
-
setupRBAC
|
|
97
|
-
} from "../chunk-3LPHPB62.js";
|
|
98
|
-
import {
|
|
99
|
-
RBACAuditManager,
|
|
100
|
-
createAuditManager,
|
|
101
|
-
emitAuditEvent,
|
|
102
|
-
getGlobalAuditManager,
|
|
103
|
-
setGlobalAuditManager
|
|
104
|
-
} from "../chunk-63FOKYGO.js";
|
|
105
|
-
import "../chunk-36LVWXB2.js";
|
|
106
|
-
import "../chunk-QXHPKYJV.js";
|
|
107
|
-
import "../chunk-M7MPQISP.js";
|
|
108
|
-
import "../chunk-FMUCXFII.js";
|
|
109
|
-
import "../chunk-VBXEHIUJ.js";
|
|
110
|
-
import "../chunk-PWLANIRT.js";
|
|
111
|
-
import "../chunk-DGUM43GV.js";
|
|
112
|
-
export {
|
|
113
|
-
ALL_PERMISSIONS,
|
|
114
|
-
AccessLevelGuard,
|
|
115
|
-
CACHE_PATTERNS,
|
|
116
|
-
EVENT_APP_PERMISSIONS,
|
|
117
|
-
EnhancedNavigationMenu,
|
|
118
|
-
GLOBAL_PERMISSIONS,
|
|
119
|
-
NavigationGuard,
|
|
120
|
-
NavigationProvider,
|
|
121
|
-
ORGANISATION_PERMISSIONS,
|
|
122
|
-
PAGE_PERMISSIONS,
|
|
123
|
-
PagePermissionGuard,
|
|
124
|
-
PagePermissionProvider,
|
|
125
|
-
PermissionEnforcer,
|
|
126
|
-
PermissionGuard,
|
|
127
|
-
RBACAuditManager,
|
|
128
|
-
RBACCache,
|
|
129
|
-
RBACEngine,
|
|
130
|
-
RBACErrorCode,
|
|
131
|
-
RPCFunction,
|
|
132
|
-
RoleBasedRouter,
|
|
133
|
-
SECURE_CLIENT_SYMBOL,
|
|
134
|
-
SecureDataProvider,
|
|
135
|
-
SecureSupabaseClient,
|
|
136
|
-
checkRuntimeCompliance,
|
|
137
|
-
clearInFlightRequests,
|
|
138
|
-
createAuditManager,
|
|
139
|
-
createRBACConfig,
|
|
140
|
-
createRBACEngine,
|
|
141
|
-
createRBACExpressMiddleware,
|
|
142
|
-
createRBACMiddleware,
|
|
143
|
-
createSecureClient,
|
|
144
|
-
disablePerformanceMonitoring,
|
|
145
|
-
emitAuditEvent,
|
|
146
|
-
enablePerformanceMonitoring,
|
|
147
|
-
fromSupabaseClient,
|
|
148
|
-
getAccessLevel,
|
|
149
|
-
getCustomAuthCodeFixes,
|
|
150
|
-
getDirectSupabaseAuthFixes,
|
|
151
|
-
getDuplicateConfigFixes,
|
|
152
|
-
getGlobalAuditManager,
|
|
153
|
-
getInFlightRequestCount,
|
|
154
|
-
getPerformanceMetrics,
|
|
155
|
-
getPerformanceSummary,
|
|
156
|
-
getPermissionMap,
|
|
157
|
-
getQuickFixes,
|
|
158
|
-
getRBACConfig,
|
|
159
|
-
getRBACLogger,
|
|
160
|
-
getRoleContext,
|
|
161
|
-
getSetupIssues,
|
|
162
|
-
getUnprotectedPageFixes,
|
|
163
|
-
hasAllPermissions,
|
|
164
|
-
hasAnyPermission,
|
|
165
|
-
hasAnyPermissionCached,
|
|
166
|
-
hasPermission,
|
|
167
|
-
hasPermissionCached,
|
|
168
|
-
isDebugMode,
|
|
169
|
-
isDevelopmentMode,
|
|
170
|
-
isPerformanceMonitoringEnabled,
|
|
171
|
-
isPermitted,
|
|
172
|
-
isPermittedCached,
|
|
173
|
-
isRBACInitialized,
|
|
174
|
-
isSecureClient,
|
|
175
|
-
isValidPermission,
|
|
176
|
-
rbacCache,
|
|
177
|
-
recordAuditEvent,
|
|
178
|
-
recordPermissionCheck,
|
|
179
|
-
resetPerformanceMetrics,
|
|
180
|
-
resolveAppContext,
|
|
181
|
-
setGlobalAuditManager,
|
|
182
|
-
setupRBAC,
|
|
183
|
-
useAccessLevel,
|
|
184
|
-
useCachedPermissions,
|
|
185
|
-
useCan,
|
|
186
|
-
useHasAllPermissions,
|
|
187
|
-
useHasAnyPermission,
|
|
188
|
-
useMultiplePermissions,
|
|
189
|
-
useNavigationPermissions,
|
|
190
|
-
usePagePermissions,
|
|
191
|
-
usePermissions,
|
|
192
|
-
useRBAC,
|
|
193
|
-
useResolvedScope,
|
|
194
|
-
useResourcePermissions,
|
|
195
|
-
useRoleBasedRouter,
|
|
196
|
-
useRoleManagement,
|
|
197
|
-
useSecureData,
|
|
198
|
-
useSecureSupabase,
|
|
199
|
-
validateAndWarn,
|
|
200
|
-
validateDatabaseConfiguration,
|
|
201
|
-
validateRBACSetup,
|
|
202
|
-
warnIfInsecureClient,
|
|
203
|
-
withAccessLevelGuard,
|
|
204
|
-
withPermissionGuard,
|
|
205
|
-
withRoleGuard
|
|
206
|
-
};
|
|
207
|
-
//# sourceMappingURL=index.js.map
|
|
1
|
+
export { ALL_PERMISSIONS, EVENT_APP_PERMISSIONS, GLOBAL_PERMISSIONS, NavigationGuard, ORGANISATION_PERMISSIONS, PAGE_PERMISSIONS, PagePermissionGuard, RBACErrorCode, RPCFunction, checkRuntimeCompliance, createRBACExpressMiddleware, createRBACMiddleware, getCustomAuthCodeFixes, getDirectSupabaseAuthFixes, getDuplicateConfigFixes, getQuickFixes, getSetupIssues, getUnprotectedPageFixes, isRBACInitialized, isValidPermission, validateAndWarn, validateDatabaseConfiguration, validateRBACSetup, withAccessLevelGuard, withPermissionGuard, withRoleGuard } from '../chunk-OHIK3MIO.js';
|
|
2
|
+
export { AccessDenied } from '../chunk-4T7OBVTU.js';
|
|
3
|
+
export { SECURE_CLIENT_SYMBOL, SecureSupabaseClient, createSecureClient, fromSupabaseClient, isSecureClient, useAccessLevel, useCan, useMultiplePermissions, usePermissions, useRBAC, useResolvedScope, useResourcePermissions, useRoleManagement, useSecureSupabase, warnIfInsecureClient } from '../chunk-7TYHROIV.js';
|
|
4
|
+
import '../chunk-3O3WHILE.js';
|
|
5
|
+
import '../chunk-C7NSAPTL.js';
|
|
6
|
+
import '../chunk-FTCRZOG2.js';
|
|
7
|
+
export { CACHE_PATTERNS, RBACCache, RBACEngine, clearInFlightRequests, createRBACConfig, createRBACEngine, disablePerformanceMonitoring, enablePerformanceMonitoring, getAccessLevel, getInFlightRequestCount, getPerformanceMetrics, getPerformanceSummary, getPermissionMap, getRBACConfig, getRBACLogger, getRoleContext, hasAllPermissions, hasAnyPermission, isDebugMode, isDevelopmentMode, isPerformanceMonitoringEnabled, isPermitted, isPermittedCached, rbacCache, recordAuditEvent, recordPermissionCheck, resetPerformanceMetrics, resolveAppContext, setupRBAC } from '../chunk-ZFYPMX46.js';
|
|
8
|
+
export { RBACAuditManager, createAuditManager, emitAuditEvent, getGlobalAuditManager, setGlobalAuditManager } from '../chunk-AHU7G2R5.js';
|
|
9
|
+
import '../chunk-4SXLQIZO.js';
|
|
10
|
+
import '../chunk-A55DK444.js';
|
|
11
|
+
import '../chunk-SD6WQY43.js';
|
|
12
|
+
import '../chunk-HF6O3O37.js';
|
|
13
|
+
import '../chunk-TTRFSOKR.js';
|
|
14
|
+
import '../chunk-3RG5ZIWI.js';
|
package/dist/styles/index.js
CHANGED
|
@@ -1,12 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
getStylePath,
|
|
4
|
-
styleConfig
|
|
5
|
-
} from "../chunk-5DRSZLL2.js";
|
|
6
|
-
import "../chunk-DGUM43GV.js";
|
|
7
|
-
export {
|
|
8
|
-
getAllStylePaths,
|
|
9
|
-
getStylePath,
|
|
10
|
-
styleConfig
|
|
11
|
-
};
|
|
12
|
-
//# sourceMappingURL=index.js.map
|
|
1
|
+
export { getAllStylePaths, getStylePath, styleConfig } from '../chunk-UH3NTO3F.js';
|
|
2
|
+
import '../chunk-3RG5ZIWI.js';
|
package/dist/theming/runtime.js
CHANGED
|
@@ -1,19 +1,3 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
generateSSRThemeCSS,
|
|
5
|
-
getCurrentThemeData,
|
|
6
|
-
isDynamicThemingActive,
|
|
7
|
-
parseAndNormalizeEventColours
|
|
8
|
-
} from "../chunk-L4OXEN46.js";
|
|
9
|
-
import "../chunk-PWLANIRT.js";
|
|
10
|
-
import "../chunk-DGUM43GV.js";
|
|
11
|
-
export {
|
|
12
|
-
applyPalette,
|
|
13
|
-
clearPalette,
|
|
14
|
-
generateSSRThemeCSS,
|
|
15
|
-
getCurrentThemeData,
|
|
16
|
-
isDynamicThemingActive,
|
|
17
|
-
parseAndNormalizeEventColours
|
|
18
|
-
};
|
|
19
|
-
//# sourceMappingURL=runtime.js.map
|
|
1
|
+
export { applyPalette, clearPalette, generateSSRThemeCSS, getCurrentThemeData, isDynamicThemingActive, parseAndNormalizeEventColours } from '../chunk-BVP2BCJF.js';
|
|
2
|
+
import '../chunk-TTRFSOKR.js';
|
|
3
|
+
import '../chunk-3RG5ZIWI.js';
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { SupabaseClient } from '@supabase/supabase-js';
|
|
2
2
|
import { z } from 'zod';
|
|
3
3
|
import { ClassValue } from 'clsx';
|
|
4
|
+
import { D as Database } from './database.generated-CcnC_DRc.js';
|
|
4
5
|
|
|
5
6
|
/**
|
|
6
7
|
* Hook for manual session tracking (event switches and session expiration).
|
|
@@ -61,6 +62,107 @@ declare function calculatePasswordStrength(password: string): {
|
|
|
61
62
|
level: 'very-weak' | 'weak' | 'fair' | 'good' | 'strong';
|
|
62
63
|
};
|
|
63
64
|
|
|
65
|
+
/**
|
|
66
|
+
* @file HTML Sanitization Utilities
|
|
67
|
+
* @package @jmruthers/pace-core
|
|
68
|
+
* @module Utils/Validation/HTMLSanitization
|
|
69
|
+
* @since 0.4.36
|
|
70
|
+
*
|
|
71
|
+
* Utilities for safely rendering HTML content.
|
|
72
|
+
* Provides sanitization and validation for basic HTML elements.
|
|
73
|
+
*/
|
|
74
|
+
/**
|
|
75
|
+
* Basic HTML sanitization function using regex-based approach
|
|
76
|
+
* Removes potentially dangerous elements and attributes while preserving basic formatting
|
|
77
|
+
* This approach is more reliable in SSR environments and doesn't require DOM manipulation
|
|
78
|
+
*
|
|
79
|
+
* @param html - The HTML string to sanitize
|
|
80
|
+
* @returns Sanitized HTML string safe for rendering
|
|
81
|
+
*
|
|
82
|
+
* @example
|
|
83
|
+
* ```tsx
|
|
84
|
+
* const safeHtml = sanitizeHtml('<p>Hello <strong>world</strong>!</p>');
|
|
85
|
+
* // Returns: '<p>Hello <strong>world</strong>!</p>'
|
|
86
|
+
*
|
|
87
|
+
* const dangerousHtml = sanitizeHtml('<script>alert("xss")</script><p>Safe content</p>');
|
|
88
|
+
* // Returns: '<p>Safe content</p>'
|
|
89
|
+
* ```
|
|
90
|
+
*/
|
|
91
|
+
declare function sanitizeHtml(html: string): string;
|
|
92
|
+
/**
|
|
93
|
+
* Validates if HTML content is safe for rendering
|
|
94
|
+
*
|
|
95
|
+
* @param html - The HTML string to validate
|
|
96
|
+
* @returns Object with validation result and any warnings
|
|
97
|
+
*
|
|
98
|
+
* @example
|
|
99
|
+
* ```tsx
|
|
100
|
+
* const validation = validateHtml('<p>Safe content</p>');
|
|
101
|
+
* console.log(validation.isValid); // true
|
|
102
|
+
* console.log(validation.warnings); // []
|
|
103
|
+
* ```
|
|
104
|
+
*/
|
|
105
|
+
declare function validateHtml(html: string): {
|
|
106
|
+
isValid: boolean;
|
|
107
|
+
warnings: string[];
|
|
108
|
+
};
|
|
109
|
+
/**
|
|
110
|
+
* Safely renders HTML content with sanitization
|
|
111
|
+
*
|
|
112
|
+
* @param html - The HTML string to render
|
|
113
|
+
* @param options - Rendering options
|
|
114
|
+
* @returns Object with sanitized HTML and validation info
|
|
115
|
+
*
|
|
116
|
+
* @example
|
|
117
|
+
* ```tsx
|
|
118
|
+
* const result = renderSafeHtml('<p>Hello <strong>world</strong>!</p>');
|
|
119
|
+
* console.log(result.html); // Sanitized HTML
|
|
120
|
+
* console.log(result.isValid); // true
|
|
121
|
+
* ```
|
|
122
|
+
*/
|
|
123
|
+
declare function renderSafeHtml(html: string, options?: {
|
|
124
|
+
strict?: boolean;
|
|
125
|
+
logWarnings?: boolean;
|
|
126
|
+
}): {
|
|
127
|
+
html: string;
|
|
128
|
+
isValid: boolean;
|
|
129
|
+
warnings: string[];
|
|
130
|
+
};
|
|
131
|
+
|
|
132
|
+
/**
|
|
133
|
+
* @file Input Sanitization Layer
|
|
134
|
+
* @package @jmruthers/pace-core
|
|
135
|
+
* @module Utils/Validation/Sanitization
|
|
136
|
+
* @since 0.1.0
|
|
137
|
+
*
|
|
138
|
+
* Comprehensive input sanitization utilities to prevent XSS, injection attacks,
|
|
139
|
+
* and other security vulnerabilities.
|
|
140
|
+
*/
|
|
141
|
+
|
|
142
|
+
/**
|
|
143
|
+
* Sanitization options for different contexts
|
|
144
|
+
*/
|
|
145
|
+
interface SanitizationOptions {
|
|
146
|
+
allowHtml?: boolean;
|
|
147
|
+
allowedTags?: string[];
|
|
148
|
+
maxLength?: number;
|
|
149
|
+
trim?: boolean;
|
|
150
|
+
removeScripts?: boolean;
|
|
151
|
+
removeEvents?: boolean;
|
|
152
|
+
}
|
|
153
|
+
/**
|
|
154
|
+
* Sanitizes user input by removing potentially dangerous characters and patterns
|
|
155
|
+
*/
|
|
156
|
+
declare function sanitizeUserInput(input: string, options?: SanitizationOptions): string;
|
|
157
|
+
/**
|
|
158
|
+
* Validates and sanitizes form data using Zod schemas
|
|
159
|
+
*/
|
|
160
|
+
declare function sanitizeFormData<T>(data: unknown, schema: z.ZodSchema<T>, sanitizationRules?: Record<string, SanitizationOptions>): {
|
|
161
|
+
success: boolean;
|
|
162
|
+
data?: T;
|
|
163
|
+
error?: string;
|
|
164
|
+
};
|
|
165
|
+
|
|
64
166
|
/**
|
|
65
167
|
* @file Secure Data Access Utility
|
|
66
168
|
* @package @jmruthers/pace-core
|
|
@@ -136,6 +238,78 @@ declare function getCurrentAppName(): string;
|
|
|
136
238
|
*/
|
|
137
239
|
declare function getCurrentAppId(): string;
|
|
138
240
|
|
|
241
|
+
/**
|
|
242
|
+
* @file Base Supabase Client Creation Utility
|
|
243
|
+
* @package @jmruthers/pace-core
|
|
244
|
+
* @module Utils/Supabase
|
|
245
|
+
* @since 0.6.6
|
|
246
|
+
*
|
|
247
|
+
* Restricted wrapper for creating the base Supabase client for UnifiedAuthProvider.
|
|
248
|
+
* This is the ONLY acceptable way to create a Supabase client in consuming apps.
|
|
249
|
+
*
|
|
250
|
+
* @example
|
|
251
|
+
* ```tsx
|
|
252
|
+
* // ✅ CORRECT: In main.tsx, App.tsx, or lib/supabase.ts
|
|
253
|
+
* import { createBaseClient } from '@jmruthers/pace-core';
|
|
254
|
+
*
|
|
255
|
+
* const supabase = createBaseClient(
|
|
256
|
+
* import.meta.env.VITE_SUPABASE_URL,
|
|
257
|
+
* import.meta.env.VITE_SUPABASE_PUBLISHABLE_KEY
|
|
258
|
+
* );
|
|
259
|
+
*
|
|
260
|
+
* // Pass to UnifiedAuthProvider
|
|
261
|
+
* <UnifiedAuthProvider supabaseClient={supabase} ... />
|
|
262
|
+
* ```
|
|
263
|
+
*/
|
|
264
|
+
|
|
265
|
+
/**
|
|
266
|
+
* Create a base Supabase client for UnifiedAuthProvider
|
|
267
|
+
*
|
|
268
|
+
* **CRITICAL**: This function can ONLY be called from:
|
|
269
|
+
* - `src/main.tsx` (or `main.jsx`)
|
|
270
|
+
* - `src/App.tsx` (or `App.jsx`)
|
|
271
|
+
* - `src/lib/supabase.ts` (or `supabase.js`)
|
|
272
|
+
* - `src/supabase.ts` (or `supabase.js`)
|
|
273
|
+
*
|
|
274
|
+
* **DO NOT** use this client directly for queries. Always use `useSecureSupabase()` hook instead.
|
|
275
|
+
*
|
|
276
|
+
* The client is configured with explicit auth options to ensure consistent session persistence:
|
|
277
|
+
* - `persistSession: true` - Sessions are saved to localStorage and restored on page load/refresh
|
|
278
|
+
* - `autoRefreshToken: true` - Tokens are automatically refreshed before expiry
|
|
279
|
+
* - `detectSessionInUrl: true` - Detects and handles OAuth callback URLs
|
|
280
|
+
* - `flowType: 'pkce'` - Uses PKCE flow for enhanced security
|
|
281
|
+
*
|
|
282
|
+
* This configuration ensures that users remain logged in after hard refresh (Cmd+Shift+R)
|
|
283
|
+
* and other browser navigation scenarios across all consuming apps.
|
|
284
|
+
*
|
|
285
|
+
* @param supabaseUrl - Supabase project URL
|
|
286
|
+
* @param supabaseKey - Supabase publishable key or anon key (accepts both legacy anon keys and modern publishable keys)
|
|
287
|
+
* @returns Supabase client instance with auth configuration
|
|
288
|
+
*
|
|
289
|
+
* @throws {Error} If called from an unauthorized file location (development only)
|
|
290
|
+
*
|
|
291
|
+
* @example
|
|
292
|
+
* ```tsx
|
|
293
|
+
* // main.tsx
|
|
294
|
+
* import { createBaseClient } from '@jmruthers/pace-core';
|
|
295
|
+
* import { UnifiedAuthProvider } from '@jmruthers/pace-core';
|
|
296
|
+
*
|
|
297
|
+
* const supabase = createBaseClient(
|
|
298
|
+
* import.meta.env.VITE_SUPABASE_URL,
|
|
299
|
+
* import.meta.env.VITE_SUPABASE_PUBLISHABLE_KEY
|
|
300
|
+
* );
|
|
301
|
+
*
|
|
302
|
+
* function App() {
|
|
303
|
+
* return (
|
|
304
|
+
* <UnifiedAuthProvider supabaseClient={supabase} appName="MyApp">
|
|
305
|
+
* <YourApp />
|
|
306
|
+
* </UnifiedAuthProvider>
|
|
307
|
+
* );
|
|
308
|
+
* }
|
|
309
|
+
* ```
|
|
310
|
+
*/
|
|
311
|
+
declare function createBaseClient(supabaseUrl: string, supabaseKey: string): SupabaseClient<Database>;
|
|
312
|
+
|
|
139
313
|
/**
|
|
140
314
|
* @file Production-Safe Logger Utility
|
|
141
315
|
* @package @jmruthers/pace-core
|
|
@@ -520,4 +694,4 @@ declare function roundToNearestMinutes(date: Date, minutesStep?: number): Date;
|
|
|
520
694
|
*/
|
|
521
695
|
declare function getTimeZoneDifference(fromTimeZone: string, toTimeZone: string): number;
|
|
522
696
|
|
|
523
|
-
export {
|
|
697
|
+
export { formatCompactNumber as A, formatFileSize as B, formatInTimeZone as C, getTimezoneAbbreviation as D, formatTimeInTimeZone as E, getUserTimeZone as F, toZonedTime as G, fromZonedTime as H, roundToNearestMinutes as I, getTimeZoneDifference as J, type SecureDataAccess as K, Logger as L, formatDateTimeForDisplay as M, formatDateOnlyForDisplay as N, formatDateTimeForTable as O, formatDateTimeForMap as P, type DateTimeFormatOptions as Q, validateHtml as R, type SanitizationOptions as S, renderSafeHtml as T, dateSchema as U, calculatePasswordStrength as V, urlSchema as a, passwordSchema as b, sanitizeFormData as c, sanitizeHtml as d, emailSchema as e, createSecureDataAccess as f, cn as g, setAppConfig as h, getAppConfig as i, getCurrentAppName as j, getCurrentAppId as k, createBaseClient as l, logger as m, nameSchema as n, createLogger as o, phoneSchema as p, LogLevel as q, type LoggerConfig as r, sanitizeUserInput as s, formatDate as t, useSessionTracking as u, formatTime as v, formatDateTime as w, formatCurrency as x, formatNumber as y, formatPercent as z };
|
|
@@ -176,6 +176,10 @@ declare module '@tanstack/react-table' {
|
|
|
176
176
|
/** Column type for styling purposes */
|
|
177
177
|
type?: 'text' | 'number' | 'date' | 'boolean' | 'custom';
|
|
178
178
|
}
|
|
179
|
+
interface ColumnDefBase<TData, TValue> {
|
|
180
|
+
/** Alternative accessor key used while editing */
|
|
181
|
+
editAccessorKey?: string;
|
|
182
|
+
}
|
|
179
183
|
}
|
|
180
184
|
/**
|
|
181
185
|
* Base data record type - all DataTable data must extend this
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { P as Permission, A as AccessLevel } from './types-BeoeWV5I.js';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Navigation mode type
|
|
6
|
+
*/
|
|
7
|
+
type NavigationMode = "dropdown" | "hierarchical";
|
|
8
|
+
/**
|
|
9
|
+
* Navigation item metadata
|
|
10
|
+
*/
|
|
11
|
+
interface NavigationItemMeta {
|
|
12
|
+
hidden?: boolean;
|
|
13
|
+
[key: string]: unknown;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Navigation item interface
|
|
17
|
+
*/
|
|
18
|
+
interface NavigationItem {
|
|
19
|
+
id: string;
|
|
20
|
+
label: string;
|
|
21
|
+
href?: string;
|
|
22
|
+
icon?: string;
|
|
23
|
+
children?: NavigationItem[];
|
|
24
|
+
permissions?: (Permission | string)[];
|
|
25
|
+
roles?: string[];
|
|
26
|
+
accessLevel?: AccessLevel | string;
|
|
27
|
+
meta?: NavigationItemMeta;
|
|
28
|
+
pageId?: string;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Navigation menu component props
|
|
32
|
+
*/
|
|
33
|
+
interface NavigationMenuProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
34
|
+
items: NavigationItem[];
|
|
35
|
+
mode?: NavigationMode;
|
|
36
|
+
currentPath?: string;
|
|
37
|
+
onNavigate?: (item: NavigationItem) => void;
|
|
38
|
+
className?: string;
|
|
39
|
+
disabled?: boolean;
|
|
40
|
+
buttonText?: string;
|
|
41
|
+
showIcons?: boolean;
|
|
42
|
+
navigationLabel?: string;
|
|
43
|
+
strictMode?: boolean;
|
|
44
|
+
auditLog?: boolean;
|
|
45
|
+
onNavigationAccessDenied?: (item: NavigationItem) => void;
|
|
46
|
+
onStrictModeViolation?: (item: NavigationItem, reason: string) => void;
|
|
47
|
+
/**
|
|
48
|
+
* If true, indicates that items have already been filtered by the parent component (e.g., PaceAppLayout).
|
|
49
|
+
* When true, NavigationMenu will skip expensive permission checks and trust the provided items.
|
|
50
|
+
* This significantly improves performance when items are pre-filtered.
|
|
51
|
+
*/
|
|
52
|
+
itemsPreFiltered?: boolean;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
export type { NavigationMenuProps as N, NavigationItem as a, NavigationMode as b };
|
package/dist/types.d.ts
CHANGED
|
@@ -6,7 +6,7 @@ export { E as Event, c as EventContextType, b as EventTheme, k as ORGANISATION_R
|
|
|
6
6
|
export { g as BucketInfo, B as BulkUploadResult, F as FileCategory, b as FileMetadata, a as FileReference, d as FileReferenceService, f as FileReferenceWithUrl, c as FileUploadOptions, e as FileUploadResult, h as FileUrlInfo, S as StorageUploadOptions, U as UploadProgress } from './file-reference-BavO2eQj.js';
|
|
7
7
|
export { C as ChangePasswordFormValues, o as ContactFormData, F as FormData, k as LoginFormData, L as LoginFormValues, P as ProfileFormData, m as RegistrationFormData, R as RegistrationFormValues, S as SecureLoginFormValues, j as SecureRegistrationFormValues, U as UserProfileFormValues, V as ValidationError, a as ValidationResult, g as changePasswordSchema, t as combineSchemas, i as contactFormSchema, d as dateSchema, e as emailSchema, l as loginSchema, n as nameSchema, f as passwordResetSchema, b as passwordSchema, p as phoneSchema, q as pickSchema, r as registrationSchema, c as secureLoginSchema, s as securePasswordSchema, u as urlSchema, h as userProfileSchema } from './validation-643vUDZW.js';
|
|
8
8
|
import { SupabaseClient } from '@supabase/supabase-js';
|
|
9
|
-
export { D as Database, J as Json } from './database.generated-
|
|
9
|
+
export { D as Database, J as Json } from './database.generated-CcnC_DRc.js';
|
|
10
10
|
export { A as AccessLevelContext, s as AuditEventType, P as PermissionSource, d as RBACAccessValidateParams, e as RBACAccessValidateResult, q as RBACAuditLogParams, r as RBACAuditLogResult, t as RBACContext, w as RBACErrorCode, v as RBACFunctionResponse, f as RBACPageAccessCheckParams, R as RBACPermissionCheckParams, a as RBACPermissionCheckResult, b as RBACPermissionsGetParams, c as RBACPermissionsGetResult, u as RBACResult, g as RBACRoleGrantParams, h as RBACRoleGrantResult, i as RBACRoleRevokeParams, j as RBACRoleRevokeResult, m as RBACRoleValidateParams, n as RBACRoleValidateResult, k as RBACRolesListParams, l as RBACRolesListResult, o as RBACSessionTrackParams, p as RBACSessionTrackResult, S as SessionType } from './functions-DHebl8-F.js';
|
|
11
11
|
import 'zod';
|
|
12
12
|
import './types-BeoeWV5I.js';
|
package/dist/types.js
CHANGED
|
@@ -1,50 +1,8 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
} from
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
PermissionErrorCode,
|
|
7
|
-
assertAppId,
|
|
8
|
-
assertEventId,
|
|
9
|
-
assertOrganisationId,
|
|
10
|
-
assertPageId,
|
|
11
|
-
assertUserId,
|
|
12
|
-
createAppId,
|
|
13
|
-
createEventId,
|
|
14
|
-
createOrganisationId,
|
|
15
|
-
createPageId,
|
|
16
|
-
createPermissionString,
|
|
17
|
-
createRequestId,
|
|
18
|
-
createSessionToken,
|
|
19
|
-
createUserId,
|
|
20
|
-
isAppId,
|
|
21
|
-
isEventId,
|
|
22
|
-
isOrganisationId,
|
|
23
|
-
isPageId,
|
|
24
|
-
isPermissionString,
|
|
25
|
-
isRequestId,
|
|
26
|
-
isSessionToken,
|
|
27
|
-
isUserId
|
|
28
|
-
} from "./chunk-QXHPKYJV.js";
|
|
29
|
-
import {
|
|
30
|
-
changePasswordSchema,
|
|
31
|
-
combineSchemas,
|
|
32
|
-
contactFormSchema,
|
|
33
|
-
dateSchema,
|
|
34
|
-
emailSchema,
|
|
35
|
-
loginSchema,
|
|
36
|
-
nameSchema,
|
|
37
|
-
passwordResetSchema,
|
|
38
|
-
passwordSchema,
|
|
39
|
-
phoneSchema,
|
|
40
|
-
pickSchema,
|
|
41
|
-
registrationSchema,
|
|
42
|
-
secureLoginSchema,
|
|
43
|
-
securePasswordSchema,
|
|
44
|
-
urlSchema,
|
|
45
|
-
userProfileSchema
|
|
46
|
-
} from "./chunk-LMC26NLJ.js";
|
|
47
|
-
import "./chunk-DGUM43GV.js";
|
|
1
|
+
export { FileCategory } from './chunk-6QYDGKQY.js';
|
|
2
|
+
import { AuthErrorCode } from './chunk-4SXLQIZO.js';
|
|
3
|
+
export { AuthErrorCode, PermissionErrorCode, assertAppId, assertEventId, assertOrganisationId, assertPageId, assertUserId, createAppId, createEventId, createOrganisationId, createPageId, createPermissionString, createRequestId, createSessionToken, createUserId, isAppId, isEventId, isOrganisationId, isPageId, isPermissionString, isRequestId, isSessionToken, isUserId } from './chunk-4SXLQIZO.js';
|
|
4
|
+
export { changePasswordSchema, combineSchemas, contactFormSchema, dateSchema, emailSchema, loginSchema, nameSchema, passwordResetSchema, passwordSchema, phoneSchema, pickSchema, registrationSchema, secureLoginSchema, securePasswordSchema, urlSchema, userProfileSchema } from './chunk-MBADTM7L.js';
|
|
5
|
+
import './chunk-3RG5ZIWI.js';
|
|
48
6
|
|
|
49
7
|
// src/types/organisation.ts
|
|
50
8
|
var ORGANISATION_ROLE_PERMISSIONS = {
|
|
@@ -66,50 +24,5 @@ function isSession(obj) {
|
|
|
66
24
|
const candidate = obj;
|
|
67
25
|
return candidate != null && typeof candidate === "object" && typeof candidate.access_token === "string" && candidate.user != null && typeof candidate.user === "object";
|
|
68
26
|
}
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
FileCategory,
|
|
72
|
-
ORGANISATION_ROLE_PERMISSIONS,
|
|
73
|
-
PermissionErrorCode,
|
|
74
|
-
assertAppId,
|
|
75
|
-
assertEventId,
|
|
76
|
-
assertOrganisationId,
|
|
77
|
-
assertPageId,
|
|
78
|
-
assertUserId,
|
|
79
|
-
changePasswordSchema,
|
|
80
|
-
combineSchemas,
|
|
81
|
-
contactFormSchema,
|
|
82
|
-
createAppId,
|
|
83
|
-
createEventId,
|
|
84
|
-
createOrganisationId,
|
|
85
|
-
createPageId,
|
|
86
|
-
createPermissionString,
|
|
87
|
-
createRequestId,
|
|
88
|
-
createSessionToken,
|
|
89
|
-
createUserId,
|
|
90
|
-
dateSchema,
|
|
91
|
-
emailSchema,
|
|
92
|
-
isAppId,
|
|
93
|
-
isAuthErrorCode,
|
|
94
|
-
isEventId,
|
|
95
|
-
isOrganisationId,
|
|
96
|
-
isPageId,
|
|
97
|
-
isPermissionString,
|
|
98
|
-
isRequestId,
|
|
99
|
-
isSession,
|
|
100
|
-
isSessionToken,
|
|
101
|
-
isUser,
|
|
102
|
-
isUserId,
|
|
103
|
-
loginSchema,
|
|
104
|
-
nameSchema,
|
|
105
|
-
passwordResetSchema,
|
|
106
|
-
passwordSchema,
|
|
107
|
-
phoneSchema,
|
|
108
|
-
pickSchema,
|
|
109
|
-
registrationSchema,
|
|
110
|
-
secureLoginSchema,
|
|
111
|
-
securePasswordSchema,
|
|
112
|
-
urlSchema,
|
|
113
|
-
userProfileSchema
|
|
114
|
-
};
|
|
115
|
-
//# sourceMappingURL=types.js.map
|
|
27
|
+
|
|
28
|
+
export { ORGANISATION_ROLE_PERMISSIONS, isAuthErrorCode, isSession, isUser };
|