@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
|
@@ -0,0 +1,192 @@
|
|
|
1
|
+
# Standards and Cursor Rules Alignment Review Summary
|
|
2
|
+
|
|
3
|
+
**Date**: 2025-01-28
|
|
4
|
+
**Reviewer**: AI Assistant
|
|
5
|
+
**Status**: ✅ Complete
|
|
6
|
+
|
|
7
|
+
## Overview
|
|
8
|
+
|
|
9
|
+
This document summarizes the comprehensive review and alignment of standards documentation (`packages/core/docs/standards/`) and cursor rules (`packages/core/cursor-rules/`). The review ensured:
|
|
10
|
+
|
|
11
|
+
1. ✅ Structure and naming alignment for traceability
|
|
12
|
+
2. ✅ No contradictions between standards and rules
|
|
13
|
+
3. ✅ No missing content in either standards or rules
|
|
14
|
+
4. ✅ Cursor rules optimized for AI agents
|
|
15
|
+
5. ✅ Consistent cross-references between standards and rules
|
|
16
|
+
|
|
17
|
+
## Changes Made
|
|
18
|
+
|
|
19
|
+
### 1. Fixed Broken References
|
|
20
|
+
|
|
21
|
+
**Issue**: Standards README and 01-standards-compliance referenced non-existent files.
|
|
22
|
+
|
|
23
|
+
**Fixed**:
|
|
24
|
+
- Updated `packages/core/docs/standards/README.md` to remove references to non-existent consuming app standards
|
|
25
|
+
- Updated `packages/core/docs/standards/01-standards-compliance.md` to reference actual standards files
|
|
26
|
+
- Updated `packages/core/docs/standards/02-project-structure.md` to fix related documentation links
|
|
27
|
+
|
|
28
|
+
### 2. Standardized Cross-References
|
|
29
|
+
|
|
30
|
+
**Issue**: Inconsistent paths to cursor rules from standards files.
|
|
31
|
+
|
|
32
|
+
**Fixed**:
|
|
33
|
+
- Standardized all cursor rule references in standards to use `../../cursor-rules/` path
|
|
34
|
+
- Added reverse links from all cursor rules to their corresponding standards
|
|
35
|
+
- Used consistent format: `**📚 Human-Readable Standard**: See [XX-standard.md]...`
|
|
36
|
+
|
|
37
|
+
### 3. Enhanced Cursor Rules for AI Optimization
|
|
38
|
+
|
|
39
|
+
**Improvements**:
|
|
40
|
+
- Added "Human-Readable Standard" links at the top of each cursor rule
|
|
41
|
+
- Enhanced 08-markup-quality.mdc with critical CSS configuration warning
|
|
42
|
+
- Added decision trees where appropriate (error handling, performance, CI/CD)
|
|
43
|
+
- Improved AI agent instructions in rule headers
|
|
44
|
+
|
|
45
|
+
### 4. Improved Traceability
|
|
46
|
+
|
|
47
|
+
**Added**:
|
|
48
|
+
- Consistent bidirectional links between standards and rules
|
|
49
|
+
- Clear numbering alignment (00-12)
|
|
50
|
+
- Reference sections in standards pointing to related standards
|
|
51
|
+
- Reference sections in rules pointing to standards
|
|
52
|
+
|
|
53
|
+
## Alignment Verification
|
|
54
|
+
|
|
55
|
+
### Standards → Rules Mapping
|
|
56
|
+
|
|
57
|
+
| Standard | Rule | Status | Notes |
|
|
58
|
+
|----------|------|--------|-------|
|
|
59
|
+
| 00-pace-core-compliance.md | 00-pace-core-compliance.mdc | ✅ Aligned | Both cover pace-core usage patterns |
|
|
60
|
+
| 01-standards-compliance.md | 01-standards-compliance.mdc | ✅ Aligned | Meta-standard for precedence |
|
|
61
|
+
| 02-project-structure.md | 02-project-structure.mdc | ✅ Aligned | Structure and organization |
|
|
62
|
+
| 03-solid-principles.md | 03-solid-principles.mdc | ✅ Aligned | SOLID principles |
|
|
63
|
+
| 04-testing-standards.md | 04-testing-standards.mdc | ✅ Aligned | Testing framework consistency |
|
|
64
|
+
| 05-bug-reports-and-features.md | 05-bug-reports-and-features.mdc | ✅ Aligned | Issue reporting templates |
|
|
65
|
+
| 06-code-quality.md | 06-code-quality.mdc | ✅ Aligned | Code quality standards |
|
|
66
|
+
| 07-tech-stack-compliance.md | 07-tech-stack-compliance.mdc | ✅ Aligned | Tech stack requirements |
|
|
67
|
+
| 08-markup-quality.md | 08-markup-quality.mdc | ✅ Aligned | Markup and CSS configuration |
|
|
68
|
+
| 09-rbac-compliance.md | 09-rbac-compliance.mdc | ✅ Aligned | RBAC contract and RLS patterns |
|
|
69
|
+
| 10-error-handling-patterns.md | 10-error-handling-patterns.mdc | ✅ Aligned | Error handling patterns |
|
|
70
|
+
| 11-performance-optimization.md | 11-performance-optimization.mdc | ✅ Aligned | Performance best practices |
|
|
71
|
+
| 12-ci-cd-integration.md | 12-ci-cd-integration.mdc | ✅ Aligned | CI/CD patterns |
|
|
72
|
+
|
|
73
|
+
### Rules → Standards Mapping
|
|
74
|
+
|
|
75
|
+
All 13 cursor rules (00-12) have corresponding standards. ✅ Complete
|
|
76
|
+
|
|
77
|
+
## Contradictions Found and Resolved
|
|
78
|
+
|
|
79
|
+
### None Found ✅
|
|
80
|
+
|
|
81
|
+
After thorough review, no contradictions were found between standards and rules. The standards provide human-readable documentation, while the rules provide AI-optimized directives that align with the standards.
|
|
82
|
+
|
|
83
|
+
## Gaps Identified
|
|
84
|
+
|
|
85
|
+
### 1. CSS Configuration Emphasis
|
|
86
|
+
|
|
87
|
+
**Issue**: The 08-markup-quality standard has extensive CSS configuration details, but the rule didn't emphasize this enough.
|
|
88
|
+
|
|
89
|
+
**Resolution**: Added critical CSS configuration warning section at the top of 08-markup-quality.mdc rule with checklist and reference to standard.
|
|
90
|
+
|
|
91
|
+
### 2. Missing Reverse Links
|
|
92
|
+
|
|
93
|
+
**Issue**: Cursor rules didn't consistently link back to standards.
|
|
94
|
+
|
|
95
|
+
**Resolution**: Added "Human-Readable Standard" links to all cursor rules.
|
|
96
|
+
|
|
97
|
+
### 3. Broken References
|
|
98
|
+
|
|
99
|
+
**Issue**: Some standards referenced non-existent files.
|
|
100
|
+
|
|
101
|
+
**Resolution**: Fixed all broken references to point to actual standards files.
|
|
102
|
+
|
|
103
|
+
## Recommendations for Future Enhancements
|
|
104
|
+
|
|
105
|
+
### Potential New Standards/Rules
|
|
106
|
+
|
|
107
|
+
While the current set is comprehensive, consider adding:
|
|
108
|
+
|
|
109
|
+
1. **Security Patterns** (beyond RBAC/RLS)
|
|
110
|
+
- Input sanitization patterns
|
|
111
|
+
- XSS prevention
|
|
112
|
+
- CSRF protection
|
|
113
|
+
- Secure authentication flows
|
|
114
|
+
|
|
115
|
+
2. **Database Migration Patterns**
|
|
116
|
+
- Migration naming conventions
|
|
117
|
+
- Rollback strategies
|
|
118
|
+
- Data migration best practices
|
|
119
|
+
- Migration testing patterns
|
|
120
|
+
|
|
121
|
+
3. **API Design Patterns** (beyond RPC naming)
|
|
122
|
+
- API versioning strategies
|
|
123
|
+
- Rate limiting patterns
|
|
124
|
+
- Caching strategies for APIs
|
|
125
|
+
- API documentation standards
|
|
126
|
+
|
|
127
|
+
4. **State Management Patterns**
|
|
128
|
+
- When to use TanStack Query vs local state
|
|
129
|
+
- State synchronization patterns
|
|
130
|
+
- Optimistic updates
|
|
131
|
+
|
|
132
|
+
5. **Monitoring and Logging**
|
|
133
|
+
- Structured logging patterns
|
|
134
|
+
- Error tracking integration
|
|
135
|
+
- Performance monitoring
|
|
136
|
+
- User analytics patterns
|
|
137
|
+
|
|
138
|
+
6. **Internationalization (i18n)**
|
|
139
|
+
- Translation key naming
|
|
140
|
+
- Locale handling
|
|
141
|
+
- Date/time formatting by locale
|
|
142
|
+
|
|
143
|
+
### Enhancement Opportunities
|
|
144
|
+
|
|
145
|
+
1. **Decision Trees**: Add more decision trees to cursor rules for common scenarios
|
|
146
|
+
2. **Code Examples**: Expand code examples in both standards and rules
|
|
147
|
+
3. **Migration Guides**: Add migration guides for breaking changes
|
|
148
|
+
4. **Quick Reference**: Create a quick reference card for common patterns
|
|
149
|
+
5. **Visual Diagrams**: Add architecture diagrams to standards where helpful
|
|
150
|
+
|
|
151
|
+
## Verification Checklist
|
|
152
|
+
|
|
153
|
+
- [x] All standards have corresponding cursor rules
|
|
154
|
+
- [x] All cursor rules have corresponding standards
|
|
155
|
+
- [x] All cross-references are correct and working
|
|
156
|
+
- [x] No contradictions between standards and rules
|
|
157
|
+
- [x] Cursor rules are optimized for AI agents
|
|
158
|
+
- [x] Standards are human-readable and comprehensive
|
|
159
|
+
- [x] Naming is consistent (00-12)
|
|
160
|
+
- [x] Traceability is clear and bidirectional
|
|
161
|
+
|
|
162
|
+
## Conclusion
|
|
163
|
+
|
|
164
|
+
The standards and cursor rules are now fully aligned with:
|
|
165
|
+
|
|
166
|
+
✅ **Complete traceability** - Every standard has a corresponding rule and vice versa
|
|
167
|
+
✅ **No contradictions** - Standards and rules are consistent
|
|
168
|
+
✅ **No gaps** - All content is present in both formats
|
|
169
|
+
✅ **AI optimization** - Rules are optimized for Cursor with decision trees and clear directives
|
|
170
|
+
✅ **Human readability** - Standards provide comprehensive documentation
|
|
171
|
+
|
|
172
|
+
The alignment ensures that:
|
|
173
|
+
- Developers can read comprehensive standards documentation
|
|
174
|
+
- AI agents can follow optimized rules for code generation
|
|
175
|
+
- Both sources of truth are kept in sync
|
|
176
|
+
- Traceability is clear and bidirectional
|
|
177
|
+
|
|
178
|
+
## Maintenance
|
|
179
|
+
|
|
180
|
+
To keep standards and rules aligned:
|
|
181
|
+
|
|
182
|
+
1. **When updating a standard**: Update the corresponding rule
|
|
183
|
+
2. **When updating a rule**: Update the corresponding standard
|
|
184
|
+
3. **When adding a new standard**: Create a corresponding rule with the same number
|
|
185
|
+
4. **When adding a new rule**: Create a corresponding standard with the same number
|
|
186
|
+
5. **Regular reviews**: Review alignment quarterly or after major changes
|
|
187
|
+
|
|
188
|
+
---
|
|
189
|
+
|
|
190
|
+
**Last Updated**: 2025-01-28
|
|
191
|
+
**Next Review**: 2025-04-28
|
|
192
|
+
|
package/docs/standards/README.md
CHANGED
|
@@ -3,21 +3,50 @@
|
|
|
3
3
|
## Purpose
|
|
4
4
|
This document is the single source of truth for all engineering standards for pace-core and consuming apps.
|
|
5
5
|
|
|
6
|
-
## pace-core Standards
|
|
7
|
-
|
|
8
|
-
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
-
|
|
6
|
+
## pace-core Standards (aligned with Cursor rule filenames)
|
|
7
|
+
|
|
8
|
+
Each standard document has a corresponding Cursor rule file (`.mdc`) that enforces the standard automatically. The numbering ensures traceability. Standards 00-09 are core standards, while 10-12 are enhanced standards covering additional best practices.
|
|
9
|
+
|
|
10
|
+
| Standard | Cursor Rule | Purpose |
|
|
11
|
+
|----------|------------|---------|
|
|
12
|
+
| **00-pace-core-compliance.md** | `00-pace-core-compliance.mdc` | Enforce pace-core usage patterns and prevent custom solutions |
|
|
13
|
+
| **01-standards-compliance.md** | `01-standards-compliance.mdc` | Enforce all pace-core standards across architecture, API, components, code style, security, testing, and RBAC/RLS |
|
|
14
|
+
| **02-project-structure.md** | `02-project-structure.mdc` | Define standard folder structure and file organization |
|
|
15
|
+
| **03-solid-principles.md** | `03-solid-principles.mdc` | Enforce SOLID architecture principles |
|
|
16
|
+
| **04-testing-standards.md** | `04-testing-standards.mdc` | Enforce testing framework consistency and standards |
|
|
17
|
+
| **05-bug-reports-and-features.md** | `05-bug-reports-and-features.mdc` | Standardized templates for bug reports and feature requests |
|
|
18
|
+
| **06-code-quality.md** | `06-code-quality.mdc` | Enforce code quality standards including TypeScript, ESLint, formatting, performance, and accessibility |
|
|
19
|
+
| **07-tech-stack-compliance.md** | `07-tech-stack-compliance.mdc` | Enforce tech stack compliance including Tailwind v4, React 19+, Supabase, and other required technologies |
|
|
20
|
+
| **08-markup-quality.md** | `08-markup-quality.mdc` | Enforce clean markup standards, semantic HTML usage, and pace-core component patterns |
|
|
21
|
+
| **09-rbac-compliance.md** | `09-rbac-compliance.mdc` | Enforce RBAC contract compliance - strict rules for permission checking, page protection, and RBAC usage patterns |
|
|
22
|
+
| **10-error-handling-patterns.md** | `10-error-handling-patterns.mdc` | Enforce consistent error handling patterns including type-safe errors, user-friendly messages, and proper logging |
|
|
23
|
+
| **11-performance-optimization.md** | `11-performance-optimization.mdc` | Enforce performance optimization patterns including React memoization, database query optimization, and caching strategies |
|
|
24
|
+
| **12-ci-cd-integration.md** | `12-ci-cd-integration.mdc` | Enforce CI/CD integration patterns including automated quality checks, deployment processes, and security scanning |
|
|
25
|
+
|
|
26
|
+
**Note**: Standards are human-readable documentation. Rules are AI-optimized directives for Cursor. Both should be kept in sync. Standards 00-09 are core standards, while 10-12 are enhanced standards covering additional best practices.
|
|
13
27
|
|
|
14
28
|
## Consuming App Standards
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
-
|
|
29
|
+
|
|
30
|
+
All standards in this directory apply to consuming apps. The standards are organized by topic:
|
|
31
|
+
|
|
32
|
+
### Core Standards (00-09)
|
|
33
|
+
These are fundamental standards that all consuming apps must follow:
|
|
34
|
+
- **00-pace-core-compliance.md** - Use pace-core components, hooks, and utilities
|
|
35
|
+
- **01-standards-compliance.md** - Meta-standard for precedence and traceability
|
|
36
|
+
- **02-project-structure.md** - Standard folder structure and file organization
|
|
37
|
+
- **03-solid-principles.md** - SOLID architecture principles
|
|
38
|
+
- **04-testing-standards.md** - Testing framework consistency
|
|
39
|
+
- **05-bug-reports-and-features.md** - Issue reporting templates
|
|
40
|
+
- **06-code-quality.md** - TypeScript, ESLint, formatting, accessibility
|
|
41
|
+
- **07-tech-stack-compliance.md** - Required technology versions
|
|
42
|
+
- **08-markup-quality.md** - Clean markup, semantic HTML, CSS configuration
|
|
43
|
+
- **09-rbac-compliance.md** - RBAC contract and RLS policy patterns
|
|
44
|
+
|
|
45
|
+
### Enhanced Standards (10-12)
|
|
46
|
+
These are best practice standards for advanced patterns:
|
|
47
|
+
- **10-error-handling-patterns.md** - Consistent error handling
|
|
48
|
+
- **11-performance-optimization.md** - Performance best practices
|
|
49
|
+
- **12-ci-cd-integration.md** - CI/CD pipeline patterns
|
|
21
50
|
|
|
22
51
|
## Precedence
|
|
23
52
|
1. Security
|
|
@@ -48,26 +77,26 @@ node node_modules/@jmruthers/pace-core/scripts/install-cursor-rules.cjs
|
|
|
48
77
|
|
|
49
78
|
### Rule Files
|
|
50
79
|
|
|
51
|
-
The cursor rules
|
|
52
|
-
-
|
|
53
|
-
-
|
|
54
|
-
-
|
|
55
|
-
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
- **
|
|
59
|
-
- **
|
|
60
|
-
- **
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
80
|
+
The cursor rules automatically enforce the corresponding standards. Each rule file (`.mdc`) is optimized for AI agents with:
|
|
81
|
+
- Clear MUST/SHOULD/MAY directives
|
|
82
|
+
- Decision trees for common scenarios
|
|
83
|
+
- ✅/❌ code examples
|
|
84
|
+
- Actionable checklists
|
|
85
|
+
|
|
86
|
+
**Rule → Standard Mapping:**
|
|
87
|
+
- **00-pace-core-compliance.mdc** → `00-pace-core-compliance.md`
|
|
88
|
+
- **01-standards-compliance.mdc** → `01-standards-compliance.md`
|
|
89
|
+
- **02-project-structure.mdc** → `02-project-structure.md`
|
|
90
|
+
- **03-solid-principles.mdc** → `03-solid-principles.md`
|
|
91
|
+
- **04-testing-standards.mdc** → `04-testing-standards.md`
|
|
92
|
+
- **05-bug-reports-and-features.mdc** → `05-bug-reports-and-features.md`
|
|
93
|
+
- **06-code-quality.mdc** → `06-code-quality.md`
|
|
94
|
+
- **07-tech-stack-compliance.mdc** → `07-tech-stack-compliance.md`
|
|
95
|
+
- **08-markup-quality.mdc** → `08-markup-quality.md`
|
|
96
|
+
- **09-rbac-compliance.mdc** → `09-rbac-compliance.md`
|
|
97
|
+
- **10-error-handling-patterns.mdc** → `10-error-handling-patterns.md`
|
|
98
|
+
- **11-performance-optimization.mdc** → `11-performance-optimization.md`
|
|
99
|
+
- **12-ci-cd-integration.mdc** → `12-ci-cd-integration.md`
|
|
71
100
|
|
|
72
101
|
### Documentation
|
|
73
102
|
|
|
@@ -1,37 +1,51 @@
|
|
|
1
1
|
---
|
|
2
|
-
lastUpdated:
|
|
3
|
-
version: 0.
|
|
2
|
+
lastUpdated: 2026-01-06T15:00:00+11:00
|
|
3
|
+
version: 0.6.x
|
|
4
4
|
reviewedBy: documentation-standards-audit
|
|
5
5
|
---
|
|
6
6
|
|
|
7
7
|
# Organisation Context Setup Troubleshooting
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
> **⚠️ IMPORTANT UPDATE (v0.6.x)**: The `set_organisation_context` and `get_organisation_context` functions have been **removed** in pace-core v0.6.x. Organisation context is now handled automatically via secure Supabase client headers.
|
|
10
10
|
|
|
11
|
-
##
|
|
11
|
+
## ✅ Current Implementation (v0.6.x+)
|
|
12
|
+
|
|
13
|
+
Organisation context is now handled automatically:
|
|
14
|
+
|
|
15
|
+
1. **Secure Supabase Client**: The `useSecureSupabase()` hook automatically injects organisation context headers
|
|
16
|
+
2. **Explicit Parameters**: RPC functions receive `p_organisation_id` as explicit parameters
|
|
17
|
+
3. **RLS Policies**: Row Level Security policies use `auth.uid()` and `organisation_id` columns directly
|
|
18
|
+
|
|
19
|
+
**No manual context setting is required.** The secure client handles this automatically.
|
|
20
|
+
|
|
21
|
+
## 🚨 Legacy Error (v0.5.x and earlier)
|
|
22
|
+
|
|
23
|
+
If you're seeing this error, you may be using an older version of pace-core:
|
|
12
24
|
|
|
13
25
|
```
|
|
14
26
|
Error loading units: unrecognized configuration parameter "app.organisation_id"
|
|
15
27
|
```
|
|
16
28
|
|
|
17
|
-
**
|
|
18
|
-
```
|
|
19
|
-
Supabase error fetching units: Object {
|
|
20
|
-
code: "42704",
|
|
21
|
-
details: null,
|
|
22
|
-
hint: null,
|
|
23
|
-
message: 'unrecognized configuration parameter "app.organisation_id"'
|
|
24
|
-
}
|
|
25
|
-
```
|
|
29
|
+
**This error should not occur in v0.6.x+** as the functions have been removed.
|
|
26
30
|
|
|
27
|
-
## 🔍
|
|
31
|
+
## 🔍 If You Still See Errors
|
|
28
32
|
|
|
29
|
-
|
|
30
|
-
1. The Supabase database doesn't have the `set_organisation_context` function
|
|
31
|
-
2. The `app.organisation_id` configuration parameter isn't available
|
|
32
|
-
3. The organisation context isn't being set before making database queries
|
|
33
|
+
If you're using pace-core v0.6.x+ and still seeing context-related errors:
|
|
33
34
|
|
|
34
|
-
|
|
35
|
+
1. **Verify you're using `useSecureSupabase()`**: Always use the secure client from the hook, not the base client
|
|
36
|
+
2. **Check RPC parameters**: Ensure RPC functions receive `p_organisation_id` as explicit parameters
|
|
37
|
+
3. **Verify RLS policies**: RLS policies should use `auth.uid()` and `organisation_id` columns, not session variables
|
|
38
|
+
|
|
39
|
+
## 📚 Legacy Documentation (v0.5.x)
|
|
40
|
+
|
|
41
|
+
The following information is for reference only (v0.5.x and earlier):
|
|
42
|
+
|
|
43
|
+
### Legacy Solution: Database Setup
|
|
44
|
+
|
|
45
|
+
**Note**: These functions are no longer needed in v0.6.x+. This section is for historical reference only.
|
|
46
|
+
|
|
47
|
+
<details>
|
|
48
|
+
<summary>Click to view legacy setup (v0.5.x)</summary>
|
|
35
49
|
|
|
36
50
|
### Step 1: Create the Organisation Context Functions
|
|
37
51
|
|
|
@@ -282,6 +296,15 @@ If you're still experiencing problems:
|
|
|
282
296
|
|
|
283
297
|
The key is making sure the database has the organisation context functions and your RLS policies use them correctly.
|
|
284
298
|
|
|
299
|
+
</details>
|
|
300
|
+
|
|
301
|
+
## ✅ Current Best Practices (v0.6.x+)
|
|
302
|
+
|
|
303
|
+
1. **Always use `useSecureSupabase()`**: This hook automatically handles organisation context
|
|
304
|
+
2. **Pass explicit parameters**: RPC functions should receive `p_organisation_id` as explicit parameters
|
|
305
|
+
3. **Use RLS policies correctly**: Policies should use `auth.uid()` and `organisation_id` columns directly
|
|
306
|
+
4. **No manual context setting**: The secure client handles everything automatically
|
|
307
|
+
|
|
285
308
|
## ♿ Accessibility
|
|
286
309
|
|
|
287
310
|
Organisation context setup doesn't directly impact accessibility, but ensure:
|
|
@@ -35,17 +35,17 @@ try {
|
|
|
35
35
|
let paceCoreRules = {};
|
|
36
36
|
try {
|
|
37
37
|
// Try source path first (for development)
|
|
38
|
-
const sourceRulesPath = path.resolve(__dirname, 'src/eslint-rules/
|
|
38
|
+
const sourceRulesPath = path.resolve(__dirname, 'src/eslint-rules/index.cjs');
|
|
39
39
|
if (fs.existsSync(sourceRulesPath)) {
|
|
40
40
|
paceCoreRules = require(sourceRulesPath).rules;
|
|
41
41
|
} else {
|
|
42
42
|
// Try dist path (for published package)
|
|
43
|
-
const distRulesPath = path.resolve(__dirname, 'dist/eslint-rules/
|
|
43
|
+
const distRulesPath = path.resolve(__dirname, 'dist/eslint-rules/index.cjs');
|
|
44
44
|
if (fs.existsSync(distRulesPath)) {
|
|
45
45
|
paceCoreRules = require(distRulesPath).rules;
|
|
46
46
|
} else {
|
|
47
47
|
// Try relative to current working directory (for consuming apps)
|
|
48
|
-
const cwdRulesPath = path.resolve(process.cwd(), 'node_modules/@jmruthers/pace-core/dist/eslint-rules/
|
|
48
|
+
const cwdRulesPath = path.resolve(process.cwd(), 'node_modules/@jmruthers/pace-core/dist/eslint-rules/index.cjs');
|
|
49
49
|
if (fs.existsSync(cwdRulesPath)) {
|
|
50
50
|
paceCoreRules = require(cwdRulesPath).rules;
|
|
51
51
|
}
|
|
@@ -77,12 +77,28 @@ module.exports = [
|
|
|
77
77
|
}
|
|
78
78
|
},
|
|
79
79
|
rules: {
|
|
80
|
-
//
|
|
80
|
+
// Import rules
|
|
81
81
|
'pace-core-compliance/no-restricted-imports': 'error',
|
|
82
|
+
|
|
83
|
+
// Compliance rules
|
|
82
84
|
'pace-core-compliance/prefer-pace-core-components': 'warn',
|
|
83
85
|
'pace-core-compliance/prefer-pace-core-hooks': 'warn',
|
|
84
86
|
'pace-core-compliance/prefer-pace-core-utils': 'warn',
|
|
85
87
|
'pace-core-compliance/no-local-component-duplication': 'error',
|
|
88
|
+
'pace-core-compliance/no-inline-styles': 'error',
|
|
89
|
+
|
|
90
|
+
// Component rules
|
|
91
|
+
'pace-core-compliance/prefer-pace-core-form': 'error',
|
|
92
|
+
|
|
93
|
+
// RBAC rules
|
|
94
|
+
'pace-core-compliance/no-direct-supabase-client': 'error',
|
|
95
|
+
'pace-core-compliance/rbac-permission-loading': 'error',
|
|
96
|
+
'pace-core-compliance/no-direct-rbac-rpc': 'error',
|
|
97
|
+
'pace-core-compliance/no-direct-rbac-table': 'error',
|
|
98
|
+
'pace-core-compliance/no-hardcoded-role-checks': 'error',
|
|
99
|
+
'pace-core-compliance/rbac-use-resource-names-constants': 'error',
|
|
100
|
+
'pace-core-compliance/no-rbac-wrapper-components': 'error',
|
|
101
|
+
'pace-core-compliance/no-rbac-wrapper-functions': 'error',
|
|
86
102
|
|
|
87
103
|
// Also use standard no-restricted-imports (ESLint 9 flat config format)
|
|
88
104
|
// Note: ESLint 9 uses a simpler array format
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@jmruthers/pace-core",
|
|
3
|
-
"version": "0.6.
|
|
4
|
-
"description": "
|
|
3
|
+
"version": "0.6.6",
|
|
4
|
+
"description": "React component library with Tailwind v4",
|
|
5
5
|
"private": false,
|
|
6
6
|
"publishConfig": {
|
|
7
7
|
"access": "public"
|
|
@@ -42,6 +42,11 @@
|
|
|
42
42
|
"import": "./dist/utils.js",
|
|
43
43
|
"default": "./dist/utils.js"
|
|
44
44
|
},
|
|
45
|
+
"./icons": {
|
|
46
|
+
"types": "./dist/icons/index.d.ts",
|
|
47
|
+
"import": "./dist/icons/index.js",
|
|
48
|
+
"default": "./dist/icons/index.js"
|
|
49
|
+
},
|
|
45
50
|
"./rbac": {
|
|
46
51
|
"types": "./dist/rbac/index.d.ts",
|
|
47
52
|
"import": "./dist/rbac/index.js",
|
|
@@ -53,9 +58,9 @@
|
|
|
53
58
|
"default": "./dist/rbac/eslint-rules.js"
|
|
54
59
|
},
|
|
55
60
|
"./eslint-rules": {
|
|
56
|
-
"require": "./dist/eslint-rules/
|
|
57
|
-
"import": "./dist/eslint-rules/
|
|
58
|
-
"default": "./dist/eslint-rules/
|
|
61
|
+
"require": "./dist/eslint-rules/index.cjs",
|
|
62
|
+
"import": "./dist/eslint-rules/index.cjs",
|
|
63
|
+
"default": "./dist/eslint-rules/index.cjs"
|
|
59
64
|
},
|
|
60
65
|
"./eslint-config": "./eslint-config-pace-core.cjs",
|
|
61
66
|
"./styles/core.css": "./src/styles/core.css",
|
|
@@ -69,12 +74,13 @@
|
|
|
69
74
|
"default": "./vite-plugin-tailwind-v4.js"
|
|
70
75
|
},
|
|
71
76
|
"./docs": "./docs/README.md",
|
|
77
|
+
"./docs/dependencies": "./docs/getting-started/dependencies.md",
|
|
72
78
|
"./package.json": "./package.json",
|
|
73
79
|
"./core-usage-manifest.json": "./core-usage-manifest.json",
|
|
74
80
|
"./cursor-rules": "./cursor-rules",
|
|
75
81
|
"./scripts/install-cursor-rules": "./scripts/install-cursor-rules.cjs",
|
|
82
|
+
"./scripts/audit-dependencies": "./scripts/audit/audit-dependencies.cjs",
|
|
76
83
|
"./scripts/audit": "./scripts/audit/index.cjs",
|
|
77
|
-
"./scripts/audit-consuming-app": "./scripts/audit-consuming-app.cjs",
|
|
78
84
|
"./source": {
|
|
79
85
|
"import": "./src/index.ts",
|
|
80
86
|
"default": "./src/index.ts"
|
|
@@ -95,6 +101,10 @@
|
|
|
95
101
|
"import": "./src/utils/index.ts",
|
|
96
102
|
"default": "./src/utils/index.ts"
|
|
97
103
|
},
|
|
104
|
+
"./source/icons": {
|
|
105
|
+
"import": "./src/icons/index.ts",
|
|
106
|
+
"default": "./src/icons/index.ts"
|
|
107
|
+
},
|
|
98
108
|
"./source/types": {
|
|
99
109
|
"import": "./src/types/index.ts",
|
|
100
110
|
"default": "./src/types/index.ts"
|
|
@@ -148,6 +158,7 @@
|
|
|
148
158
|
"scripts": {
|
|
149
159
|
"_comment_build": "Build package and documentation",
|
|
150
160
|
"build": "tsup && node scripts/build-css.js",
|
|
161
|
+
"build:fast": "SKIP_CLEAN=true NODE_ENV=development tsup && node scripts/build-css.js",
|
|
151
162
|
"build:watch": "tsup --watch",
|
|
152
163
|
"build:docs": "node scripts/build-docs-incremental.js",
|
|
153
164
|
"build:docs:force": "node scripts/build-docs-incremental.js --force",
|
|
@@ -201,17 +212,11 @@
|
|
|
201
212
|
"author": "PACE Team",
|
|
202
213
|
"license": "MIT",
|
|
203
214
|
"peerDependencies": {
|
|
204
|
-
"@
|
|
205
|
-
"@radix-ui/react-dialog": "^1.0.0",
|
|
206
|
-
"@radix-ui/react-label": "^2.0.0",
|
|
207
|
-
"@radix-ui/react-slot": "^1.0.0",
|
|
208
|
-
"@radix-ui/react-switch": "^1.1.0",
|
|
209
|
-
"@radix-ui/react-tabs": "^1.0.0",
|
|
210
|
-
"@radix-ui/react-toast": "^1.0.0",
|
|
211
|
-
"@radix-ui/react-tooltip": "^1.0.0",
|
|
215
|
+
"@tanstack/react-query": "^5.90.0",
|
|
212
216
|
"@tanstack/react-table": "^8.0.0",
|
|
213
217
|
"clsx": "^2.0.0",
|
|
214
|
-
"
|
|
218
|
+
"date-fns": "^3.0.0",
|
|
219
|
+
"date-fns-tz": "^3.0.0",
|
|
215
220
|
"react": "^19.0.0",
|
|
216
221
|
"react-day-picker": "^9.0.0",
|
|
217
222
|
"react-dom": "^19.0.0",
|
|
@@ -247,14 +252,19 @@
|
|
|
247
252
|
},
|
|
248
253
|
"dependencies": {
|
|
249
254
|
"@hookform/resolvers": "^3.9.0",
|
|
250
|
-
"@
|
|
251
|
-
"@
|
|
252
|
-
"@
|
|
253
|
-
"
|
|
254
|
-
"
|
|
255
|
+
"@radix-ui/react-checkbox": "^1.0.0",
|
|
256
|
+
"@radix-ui/react-label": "^2.0.0",
|
|
257
|
+
"@radix-ui/react-slot": "^1.0.0",
|
|
258
|
+
"@radix-ui/react-switch": "^1.1.0",
|
|
259
|
+
"@radix-ui/react-tabs": "^1.0.0",
|
|
260
|
+
"@radix-ui/react-toast": "^1.0.0",
|
|
261
|
+
"@radix-ui/react-tooltip": "^1.0.0",
|
|
262
|
+
"@supabase/supabase-js": "^2.89.0",
|
|
263
|
+
"@tanstack/react-virtual": "^3.13.16",
|
|
255
264
|
"lodash.debounce": "^4.0.8",
|
|
256
265
|
"lodash.throttle": "^4.1.1",
|
|
266
|
+
"lucide-react": "^0.400.0",
|
|
257
267
|
"papaparse": "^5.5.3",
|
|
258
|
-
"react-is": "^19.2.
|
|
268
|
+
"react-is": "^19.2.3"
|
|
259
269
|
}
|
|
260
270
|
}
|