@jmruthers/pace-core 0.6.6 → 0.6.7
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/{scripts/audit/audit-dependencies.cjs → audit-tool/00-dependencies.cjs} +12 -13
- package/audit-tool/audits/01-pace-core-compliance.cjs +556 -0
- package/audit-tool/audits/02-project-structure.cjs +255 -0
- package/audit-tool/audits/03-architecture.cjs +196 -0
- package/audit-tool/audits/04-code-quality.cjs +149 -0
- package/audit-tool/audits/05-styling.cjs +224 -0
- package/audit-tool/audits/06-security-rbac.cjs +544 -0
- package/audit-tool/audits/07-api-tech-stack.cjs +301 -0
- package/audit-tool/audits/08-testing-documentation.cjs +202 -0
- package/audit-tool/audits/09-operations.cjs +208 -0
- package/audit-tool/index.cjs +291 -0
- package/audit-tool/utils/code-utils.cjs +218 -0
- package/audit-tool/utils/file-utils.cjs +230 -0
- package/audit-tool/utils/report-utils.cjs +241 -0
- package/cursor-rules/00-standards-overview.mdc +156 -0
- package/cursor-rules/{00-pace-core-compliance.mdc → 01-pace-core-compliance.mdc} +187 -34
- package/cursor-rules/02-project-structure.mdc +37 -5
- package/cursor-rules/{03-solid-principles.mdc → 03-architecture.mdc} +125 -11
- package/cursor-rules/04-code-quality.mdc +419 -0
- package/cursor-rules/{08-markup-quality.mdc → 05-styling.mdc} +55 -10
- package/cursor-rules/{09-rbac-compliance.mdc → 06-security-rbac.mdc} +62 -6
- package/cursor-rules/07-api-tech-stack.mdc +377 -0
- package/cursor-rules/08-testing-documentation.mdc +324 -0
- package/cursor-rules/09-operations.mdc +365 -0
- package/dist/DataTable-7PMH7XN7.js +15 -0
- package/dist/{DataTable-2N_tqbfq.d.ts → DataTable-DRUIgtUH.d.ts} +1 -1
- package/dist/{PublicPageProvider-BBH6Vqg7.d.ts → PublicPageProvider-DlsCaR5v.d.ts} +26 -16
- package/dist/{chunk-FENMYN2U.js → chunk-5X4QLXRG.js} +1 -3
- package/dist/{chunk-4T7OBVTU.js → chunk-6F3IILHI.js} +1 -1
- package/dist/{chunk-SD6WQY43.js → chunk-7ILTDCL2.js} +9 -1
- package/dist/{chunk-3QC3KRHK.js → chunk-A3W6LW53.js} +16 -1
- package/dist/{chunk-7TYHROIV.js → chunk-BM4CQ5P3.js} +50 -8
- package/dist/{chunk-2HGJFNAH.js → chunk-FEJLJNWA.js} +1 -15
- package/dist/{chunk-OHIK3MIO.js → chunk-GHYHJTYV.js} +2 -2
- package/dist/{chunk-UIYSCEV7.js → chunk-IUBRCBSY.js} +1 -1
- package/dist/{chunk-LAZMKTTF.js → chunk-JGWDVX64.js} +281 -347
- package/dist/{chunk-MAGBIDNS.js → chunk-L4XMVJKY.js} +2 -2
- package/dist/{chunk-A55DK444.js → chunk-OJ4SKRSV.js} +1 -7
- package/dist/{chunk-ZS5VO5JB.js → chunk-Q7Q7V5NV.js} +406 -451
- package/dist/{chunk-3O3WHILE.js → chunk-VBCS3DUA.js} +236 -60
- package/dist/{chunk-BVP2BCJF.js → chunk-ZKAWKYT4.js} +8 -8
- package/dist/components.d.ts +5 -4
- package/dist/components.js +27 -32
- package/dist/eslint-rules/index.cjs +22 -9
- package/{src/eslint-rules/rules/compliance.cjs → dist/eslint-rules/rules/01-pace-core-compliance.cjs} +184 -23
- package/dist/eslint-rules/rules/04-code-quality.cjs +290 -0
- package/dist/eslint-rules/rules/05-styling.cjs +61 -0
- package/dist/eslint-rules/rules/{rbac.cjs → 06-security-rbac.cjs} +26 -10
- package/dist/eslint-rules/rules/07-api-tech-stack.cjs +263 -0
- package/dist/eslint-rules/rules/08-testing.cjs +94 -0
- package/dist/hooks.d.ts +5 -5
- package/dist/hooks.js +6 -6
- package/dist/index.d.ts +6 -6
- package/dist/index.js +18 -17
- package/dist/rbac/index.js +6 -6
- package/dist/theming/runtime.d.ts +14 -1
- package/dist/theming/runtime.js +1 -1
- package/dist/{types-B-K_5VnO.d.ts → types-DXstZpNI.d.ts} +0 -17
- package/dist/{usePublicRouteParams-COZ28Mvq.d.ts → usePublicRouteParams-MamNgwqe.d.ts} +19 -19
- package/dist/utils.d.ts +2 -2
- package/dist/utils.js +8 -8
- package/docs/README.md +1 -1
- package/docs/api/modules.md +47 -31
- package/docs/api-reference/components.md +18 -20
- package/docs/api-reference/hooks.md +80 -80
- package/docs/api-reference/types.md +1 -1
- package/docs/api-reference/utilities.md +1 -1
- package/docs/architecture/README.md +1 -1
- package/docs/core-concepts/events.md +3 -3
- package/docs/core-concepts/organisations.md +6 -6
- package/docs/core-concepts/permissions.md +6 -6
- package/docs/documentation-index.md +12 -18
- package/docs/getting-started/documentation-index.md +1 -1
- package/docs/getting-started/examples/README.md +4 -4
- package/docs/getting-started/examples/full-featured-app.md +1 -1
- package/docs/getting-started/faq.md +2 -2
- package/docs/getting-started/quick-reference.md +4 -4
- package/docs/implementation-guides/authentication.md +15 -15
- package/docs/implementation-guides/component-styling.md +1 -1
- package/docs/implementation-guides/data-tables.md +126 -33
- package/docs/implementation-guides/datatable-rbac-usage.md +1 -1
- package/docs/implementation-guides/dynamic-colors.md +3 -3
- package/docs/implementation-guides/file-upload-storage.md +2 -2
- package/docs/implementation-guides/hierarchical-datatable.md +40 -60
- package/docs/implementation-guides/inactivity-tracking.md +3 -3
- package/docs/implementation-guides/large-datasets.md +3 -2
- package/docs/implementation-guides/organisation-security.md +2 -2
- package/docs/implementation-guides/performance.md +2 -2
- package/docs/implementation-guides/permission-enforcement.md +1 -1
- package/docs/migration/V0.3.44_organisation-context-timing-fix.md +1 -1
- package/docs/migration/V0.4.0_rbac-migration.md +6 -6
- package/docs/rbac/README.md +5 -5
- package/docs/rbac/advanced-patterns.md +6 -6
- package/docs/rbac/api-reference.md +20 -20
- package/docs/rbac/event-based-apps.md +3 -3
- package/docs/rbac/examples.md +41 -41
- package/docs/rbac/getting-started.md +37 -37
- package/docs/rbac/performance.md +1 -1
- package/docs/rbac/quick-start.md +52 -52
- package/docs/rbac/secure-client-protection.md +1 -1
- package/docs/rbac/troubleshooting.md +1 -1
- package/docs/security/README.md +5 -5
- package/docs/standards/0-standards-overview.md +220 -0
- package/docs/standards/{00-pace-core-compliance.md → 1-pace-core-compliance-standards.md} +204 -185
- package/docs/standards/{02-project-structure.md → 2-project-structure-standards.md} +11 -47
- package/docs/standards/3-architecture-standards.md +606 -0
- package/docs/standards/4-code-quality-standards.md +728 -0
- package/docs/standards/{08-markup-quality.md → 5-styling-standards.md} +12 -9
- package/docs/standards/{09-rbac-compliance.md → 6-security-rbac-standards.md} +126 -18
- package/docs/standards/7-api-tech-stack-standards.md +662 -0
- package/docs/standards/8-testing-documentation-standards.md +401 -0
- package/docs/standards/9-operations-standards.md +1102 -0
- package/docs/standards/README.md +203 -104
- package/docs/troubleshooting/README.md +4 -4
- package/docs/troubleshooting/common-issues.md +2 -2
- package/docs/troubleshooting/debugging.md +9 -9
- package/docs/troubleshooting/migration.md +4 -4
- package/eslint-config-pace-core.cjs +21 -10
- package/package.json +6 -5
- package/scripts/install-cursor-rules.cjs +11 -243
- package/scripts/install-eslint-config.cjs +284 -0
- package/src/__tests__/helpers/__tests__/component-test-utils.test.tsx +2 -2
- package/src/__tests__/helpers/__tests__/test-providers.test.tsx +2 -2
- package/src/__tests__/helpers/__tests__/test-utils.test.tsx +10 -10
- package/src/__tests__/integration/UserProfile.test.tsx +14 -14
- package/src/__tests__/rbac/PagePermissionGuard.test.tsx +6 -6
- package/src/__tests__/templates/accessibility.test.template.tsx +9 -9
- package/src/__tests__/templates/component.test.template.tsx +18 -15
- package/src/components/Calendar/Calendar.tsx +201 -47
- package/src/components/ContextSelector/ContextSelector.tsx +137 -153
- package/src/components/DataTable/AUDIT_REPORT.md +293 -0
- package/src/components/DataTable/__tests__/DataTableCore.test.tsx +10 -2
- package/src/components/DataTable/__tests__/a11y.basic.test.tsx +10 -4
- package/src/components/DataTable/__tests__/test-utils/sharedTestUtils.tsx +9 -9
- package/src/components/DataTable/components/ColumnFilter.tsx +63 -74
- package/src/components/DataTable/components/ColumnVisibilityDropdown.tsx +43 -41
- package/src/components/DataTable/components/DataTableErrorBoundary.tsx +9 -11
- package/src/components/DataTable/components/DataTableLayout.tsx +5 -16
- package/src/components/DataTable/components/EditableRow.tsx +5 -7
- package/src/components/DataTable/components/EmptyState.tsx +10 -9
- package/src/components/DataTable/components/FilterRow.tsx +2 -4
- package/src/components/DataTable/components/ImportModal.tsx +124 -126
- package/src/components/DataTable/components/LoadingState.tsx +5 -6
- package/src/components/DataTable/components/SortIndicator.tsx +50 -0
- package/src/components/DataTable/components/__tests__/COVERAGE_NOTE.md +4 -4
- package/src/components/DataTable/components/__tests__/ColumnFilter.test.tsx +23 -82
- package/src/components/DataTable/components/__tests__/DataTableErrorBoundary.test.tsx +37 -9
- package/src/components/DataTable/components/__tests__/EmptyState.test.tsx +7 -4
- package/src/components/DataTable/components/__tests__/FilterRow.test.tsx +12 -4
- package/src/components/DataTable/components/__tests__/LoadingState.test.tsx +41 -27
- package/src/components/DataTable/components/index.ts +2 -1
- package/src/components/DataTable/types.ts +0 -18
- package/src/components/DataTable/utils/a11yUtils.ts +17 -0
- package/src/components/DatePickerWithTimezone/DatePickerWithTimezone.test.tsx +2 -1
- package/src/components/DatePickerWithTimezone/DatePickerWithTimezone.tsx +11 -15
- package/src/components/DateTimeField/DateTimeField.tsx +7 -8
- package/src/components/Dialog/Dialog.test.tsx +1 -0
- package/src/components/Dialog/Dialog.tsx +25 -8
- package/src/components/ErrorBoundary/ErrorBoundary.tsx +77 -79
- package/src/components/FileUpload/FileUpload.test.tsx +52 -14
- package/src/components/FileUpload/FileUpload.tsx +112 -130
- package/src/components/Progress/Progress.tsx +2 -4
- package/src/components/ProtectedRoute/ProtectedRoute.tsx +8 -8
- package/src/components/Select/Select.tsx +86 -77
- package/src/components/Select/types.ts +3 -0
- package/src/hooks/__tests__/ServiceHooks.test.tsx +16 -16
- package/src/hooks/__tests__/hooks.integration.test.tsx +49 -49
- package/src/hooks/__tests__/useFocusTrap.unit.test.tsx +97 -97
- package/src/hooks/public/usePublicEvent.ts +5 -5
- package/src/hooks/public/usePublicEventLogo.ts +5 -5
- package/src/hooks/public/usePublicFileDisplay.ts +2 -2
- package/src/hooks/public/usePublicRouteParams.ts +5 -5
- package/src/hooks/useAppConfig.ts +2 -2
- package/src/hooks/useEventTheme.test.ts +7 -7
- package/src/hooks/useEventTheme.ts +1 -4
- package/src/hooks/useFileDisplay.ts +2 -2
- package/src/providers/UnifiedAuthProvider.smoke.test.tsx +21 -21
- package/src/providers/__tests__/AuthProvider.test.tsx +21 -21
- package/src/providers/__tests__/EventProvider.test.tsx +61 -61
- package/src/providers/__tests__/InactivityProvider.test.tsx +56 -56
- package/src/providers/__tests__/OrganisationProvider.test.tsx +75 -75
- package/src/providers/__tests__/ProviderLifecycle.test.tsx +37 -37
- package/src/providers/__tests__/UnifiedAuthProvider.test.tsx +103 -103
- package/src/providers/services/__tests__/AuthServiceProvider.integration.test.tsx +7 -7
- package/src/providers/services/__tests__/UnifiedAuthProvider.integration.test.tsx +10 -10
- package/src/styles/core.css +7 -0
- package/src/theming/__tests__/parseEventColours.test.ts +9 -3
- package/src/theming/parseEventColours.ts +22 -10
- package/src/utils/__tests__/lazyLoad.unit.test.tsx +42 -39
- package/src/utils/storage/README.md +1 -1
- package/cursor-rules/01-standards-compliance.mdc +0 -285
- package/cursor-rules/04-testing-standards.mdc +0 -270
- package/cursor-rules/05-bug-reports-and-features.mdc +0 -248
- package/cursor-rules/06-code-quality.mdc +0 -311
- package/cursor-rules/07-tech-stack-compliance.mdc +0 -216
- package/cursor-rules/10-error-handling-patterns.mdc +0 -179
- package/cursor-rules/11-performance-optimization.mdc +0 -169
- package/cursor-rules/12-ci-cd-integration.mdc +0 -150
- package/dist/DataTable-LRJL4IRV.js +0 -15
- package/dist/eslint-rules/rules/compliance.cjs +0 -348
- package/dist/eslint-rules/rules/components.cjs +0 -113
- package/dist/eslint-rules/rules/imports.cjs +0 -102
- package/docs/best-practices/README.md +0 -472
- package/docs/best-practices/accessibility.md +0 -604
- package/docs/best-practices/common-patterns.md +0 -516
- package/docs/best-practices/deployment.md +0 -1103
- package/docs/best-practices/performance.md +0 -1328
- package/docs/best-practices/security.md +0 -940
- package/docs/best-practices/testing.md +0 -1034
- package/docs/rbac/compliance/compliance-guide.md +0 -544
- package/docs/standards/01-standards-compliance.md +0 -188
- package/docs/standards/03-solid-principles.md +0 -39
- package/docs/standards/04-testing-standards.md +0 -36
- package/docs/standards/05-bug-reports-and-features.md +0 -27
- package/docs/standards/06-code-quality.md +0 -34
- package/docs/standards/07-tech-stack-compliance.md +0 -30
- package/docs/standards/10-error-handling-patterns.md +0 -401
- package/docs/standards/11-performance-optimization.md +0 -348
- package/docs/standards/12-ci-cd-integration.md +0 -370
- package/docs/standards/ALIGNMENT_REVIEW_SUMMARY.md +0 -192
- package/scripts/audit/audit-compliance.cjs +0 -1295
- package/scripts/audit/audit-components.cjs +0 -260
- package/scripts/audit/audit-rbac.cjs +0 -954
- package/scripts/audit/audit-standards.cjs +0 -1268
- package/scripts/audit/index.cjs +0 -1927
- package/src/components/DataTable/components/DataTableBody.tsx +0 -478
- package/src/components/DataTable/components/DraggableColumnHeader.tsx +0 -156
- package/src/components/DataTable/components/ExpandButton.tsx +0 -113
- package/src/components/DataTable/components/GroupHeader.tsx +0 -54
- package/src/components/DataTable/components/ViewRowModal.tsx +0 -68
- package/src/components/DataTable/components/VirtualizedDataTable.tsx +0 -525
- package/src/components/DataTable/components/__tests__/ExpandButton.test.tsx +0 -462
- package/src/components/DataTable/components/__tests__/GroupHeader.test.tsx +0 -393
- package/src/components/DataTable/components/__tests__/ViewRowModal.test.tsx +0 -476
- package/src/components/DataTable/components/__tests__/VirtualizedDataTable.test.tsx +0 -128
- package/src/components/DataTable/core/DataTableContext.tsx +0 -216
- package/src/components/DataTable/core/__tests__/DataTableContext.test.tsx +0 -136
- package/src/components/DataTable/hooks/__tests__/useColumnReordering.test.ts +0 -570
- package/src/components/DataTable/hooks/useColumnReordering.ts +0 -123
- package/src/components/DataTable/utils/debugTools.ts +0 -514
- package/src/eslint-rules/index.cjs +0 -22
- package/src/eslint-rules/rules/components.cjs +0 -113
- package/src/eslint-rules/rules/imports.cjs +0 -102
- package/src/eslint-rules/rules/rbac.cjs +0 -790
- package/src/eslint-rules/utils/helpers.cjs +0 -42
- package/src/eslint-rules/utils/manifest-loader.cjs +0 -75
|
@@ -1,188 +0,0 @@
|
|
|
1
|
-
# Standards Compliance
|
|
2
|
-
|
|
3
|
-
**🤖 Cursor Rule**: See [01-standards-compliance.mdc](../../cursor-rules/01-standards-compliance.mdc) for AI-optimized directives that automatically enforce these standards.
|
|
4
|
-
|
|
5
|
-
## Purpose
|
|
6
|
-
Provide a single reference for precedence and traceability between standards and Cursor rules.
|
|
7
|
-
|
|
8
|
-
## Precedence
|
|
9
|
-
1. Security
|
|
10
|
-
2. API/RPC
|
|
11
|
-
3. Components & Markup
|
|
12
|
-
4. Code Quality/Style
|
|
13
|
-
5. Testing & Documentation
|
|
14
|
-
6. Consuming App Structure
|
|
15
|
-
|
|
16
|
-
## File Mapping (Standards ↔ Cursor Rules)
|
|
17
|
-
|
|
18
|
-
| Standard | Rule | Purpose |
|
|
19
|
-
|----------|------|---------|
|
|
20
|
-
| `00-pace-core-compliance` | `00-pace-core-compliance.mdc` | Enforce pace-core usage patterns |
|
|
21
|
-
| `01-standards-compliance` | `01-standards-compliance.mdc` | This file - meta-standard |
|
|
22
|
-
| `02-project-structure` | `02-project-structure.mdc` | Define standard folder structure |
|
|
23
|
-
| `03-solid-principles` | `03-solid-principles.mdc` | Enforce SOLID architecture |
|
|
24
|
-
| `04-testing-standards` | `04-testing-standards.mdc` | Enforce testing consistency |
|
|
25
|
-
| `05-bug-reports-and-features` | `05-bug-reports-and-features.mdc` | Templates for issue reporting |
|
|
26
|
-
| `06-code-quality` | `06-code-quality.mdc` | Enforce code quality standards |
|
|
27
|
-
| `07-tech-stack-compliance` | `07-tech-stack-compliance.mdc` | Enforce tech stack versions |
|
|
28
|
-
| `08-markup-quality` | `08-markup-quality.mdc` | Enforce clean markup standards |
|
|
29
|
-
| `09-rbac-compliance` | `09-rbac-compliance.mdc` | Enforce RBAC contract |
|
|
30
|
-
| `10-error-handling-patterns` | `10-error-handling-patterns.mdc` | Enforce error handling patterns |
|
|
31
|
-
| `11-performance-optimization` | `11-performance-optimization.mdc` | Enforce performance best practices |
|
|
32
|
-
| `12-ci-cd-integration` | `12-ci-cd-integration.mdc` | Enforce CI/CD best practices |
|
|
33
|
-
|
|
34
|
-
## Documentation Standards
|
|
35
|
-
|
|
36
|
-
### Purpose
|
|
37
|
-
|
|
38
|
-
Documentation ensures code is maintainable, understandable, and usable. All documentation MUST follow these standards.
|
|
39
|
-
|
|
40
|
-
### When to Document
|
|
41
|
-
|
|
42
|
-
**MUST document:**
|
|
43
|
-
- New components, hooks, utilities, or APIs
|
|
44
|
-
- Breaking changes to existing APIs
|
|
45
|
-
- Complex business logic or algorithms
|
|
46
|
-
- Non-obvious implementation decisions
|
|
47
|
-
- Configuration requirements
|
|
48
|
-
- Migration paths for breaking changes
|
|
49
|
-
|
|
50
|
-
**SHOULD document:**
|
|
51
|
-
- Public APIs and their usage
|
|
52
|
-
- Component props and behavior
|
|
53
|
-
- Hook return values and dependencies
|
|
54
|
-
- Utility function parameters and return types
|
|
55
|
-
- Error conditions and handling
|
|
56
|
-
|
|
57
|
-
**MAY document:**
|
|
58
|
-
- Internal implementation details (if helpful)
|
|
59
|
-
- Performance considerations
|
|
60
|
-
- Future plans or limitations
|
|
61
|
-
|
|
62
|
-
### Documentation Structure
|
|
63
|
-
|
|
64
|
-
**Every component/API documentation MUST include:**
|
|
65
|
-
|
|
66
|
-
1. **Overview** - What it does and when to use it
|
|
67
|
-
2. **API/Props** - Complete prop/parameter definitions with types
|
|
68
|
-
3. **Examples** - Real-world usage examples
|
|
69
|
-
4. **Accessibility (A11y)** - Accessibility considerations and requirements
|
|
70
|
-
5. **Edge Cases** - Known limitations, error conditions, and special cases
|
|
71
|
-
|
|
72
|
-
**Example Structure:**
|
|
73
|
-
|
|
74
|
-
```markdown
|
|
75
|
-
# ComponentName
|
|
76
|
-
|
|
77
|
-
## Overview
|
|
78
|
-
Brief description of what the component does and when to use it.
|
|
79
|
-
|
|
80
|
-
## API
|
|
81
|
-
|
|
82
|
-
### Props
|
|
83
|
-
- `propName` (type): Description
|
|
84
|
-
- `optionalProp?` (type): Description (default: value)
|
|
85
|
-
|
|
86
|
-
## Examples
|
|
87
|
-
|
|
88
|
-
### Basic Usage
|
|
89
|
-
\`\`\`tsx
|
|
90
|
-
<ComponentName prop="value" />
|
|
91
|
-
\`\`\`
|
|
92
|
-
|
|
93
|
-
### Advanced Usage
|
|
94
|
-
\`\`\`tsx
|
|
95
|
-
<ComponentName prop="value" optionalProp="optional" />
|
|
96
|
-
\`\`\`
|
|
97
|
-
|
|
98
|
-
## Accessibility
|
|
99
|
-
- Keyboard navigation: Supported
|
|
100
|
-
- Screen readers: Announced as...
|
|
101
|
-
- Focus management: ...
|
|
102
|
-
|
|
103
|
-
## Edge Cases
|
|
104
|
-
- Handles null/undefined: Yes/No
|
|
105
|
-
- Error conditions: ...
|
|
106
|
-
- Performance considerations: ...
|
|
107
|
-
```
|
|
108
|
-
|
|
109
|
-
### Documentation Formats
|
|
110
|
-
|
|
111
|
-
**Component Documentation:**
|
|
112
|
-
- Location: `packages/core/docs/api-reference/components.md` or component-specific README
|
|
113
|
-
- Format: Markdown with code examples
|
|
114
|
-
- Must include: Overview, Props, Examples, A11y, Edge Cases
|
|
115
|
-
|
|
116
|
-
**API Documentation:**
|
|
117
|
-
- Location: `packages/core/docs/api-reference/`
|
|
118
|
-
- Format: TypeScript types + Markdown descriptions
|
|
119
|
-
- Must include: Function signatures, Parameters, Return types, Examples
|
|
120
|
-
|
|
121
|
-
**Implementation Guides:**
|
|
122
|
-
- Location: `packages/core/docs/implementation-guides/`
|
|
123
|
-
- Format: Step-by-step guides with examples
|
|
124
|
-
- Must include: Overview, Step-by-step instructions, Code examples, Troubleshooting
|
|
125
|
-
|
|
126
|
-
**Standards Documentation:**
|
|
127
|
-
- Location: `packages/core/docs/standards/`
|
|
128
|
-
- Format: Markdown with examples and checklists
|
|
129
|
-
- Must include: Purpose, Requirements, Examples, Checklists
|
|
130
|
-
|
|
131
|
-
### Documentation Maintenance
|
|
132
|
-
|
|
133
|
-
**MUST update documentation when:**
|
|
134
|
-
- Adding new props/parameters
|
|
135
|
-
- Changing behavior (breaking or non-breaking)
|
|
136
|
-
- Fixing bugs that change user-facing behavior
|
|
137
|
-
- Deprecating features
|
|
138
|
-
|
|
139
|
-
**SHOULD update documentation when:**
|
|
140
|
-
- Improving examples
|
|
141
|
-
- Adding new use cases
|
|
142
|
-
- Clarifying edge cases
|
|
143
|
-
|
|
144
|
-
**Update Process:**
|
|
145
|
-
1. Update code and tests first
|
|
146
|
-
2. Update documentation to match
|
|
147
|
-
3. Verify examples still work
|
|
148
|
-
4. Update related documentation if needed
|
|
149
|
-
|
|
150
|
-
### Documentation Quality Checklist
|
|
151
|
-
|
|
152
|
-
Before committing documentation, verify:
|
|
153
|
-
|
|
154
|
-
- [ ] Overview clearly explains purpose and usage
|
|
155
|
-
- [ ] All props/parameters documented with types
|
|
156
|
-
- [ ] Examples are complete and working
|
|
157
|
-
- [ ] Accessibility considerations documented
|
|
158
|
-
- [ ] Edge cases and limitations documented
|
|
159
|
-
- [ ] Code examples are syntax-highlighted
|
|
160
|
-
- [ ] Links to related documentation included
|
|
161
|
-
- [ ] Breaking changes have migration guides
|
|
162
|
-
- [ ] Documentation matches actual implementation
|
|
163
|
-
|
|
164
|
-
## Authoring Checklist
|
|
165
|
-
|
|
166
|
-
- Apply the precedence above when resolving conflicts.
|
|
167
|
-
- Keep rule and standard filenames aligned (00–12).
|
|
168
|
-
- Update relevant standards whenever rules change and vice versa.
|
|
169
|
-
- Document any exceptions in-line within the affected standard.
|
|
170
|
-
- Follow documentation standards when updating docs.
|
|
171
|
-
|
|
172
|
-
## Reference
|
|
173
|
-
|
|
174
|
-
**🤖 Cursor Rule**: See [01-standards-compliance.mdc](../../cursor-rules/01-standards-compliance.mdc) for AI-optimized directives.
|
|
175
|
-
|
|
176
|
-
**Related Standards**:
|
|
177
|
-
- **00-pace-core-compliance.md** - pace-core usage patterns
|
|
178
|
-
- **02-project-structure.md** - Project structure and organization
|
|
179
|
-
- **03-solid-principles.md** - SOLID architecture principles
|
|
180
|
-
- **04-testing-standards.md** - Testing framework standards
|
|
181
|
-
- **05-bug-reports-and-features.md** - Issue reporting templates
|
|
182
|
-
- **06-code-quality.md** - Code quality and TypeScript standards
|
|
183
|
-
- **07-tech-stack-compliance.md** - Tech stack and API/RPC standards
|
|
184
|
-
- **08-markup-quality.md** - Markup and styling standards
|
|
185
|
-
- **09-rbac-compliance.md** - RBAC and RLS standards
|
|
186
|
-
- **10-error-handling-patterns.md** - Error handling patterns
|
|
187
|
-
- **11-performance-optimization.md** - Performance optimization
|
|
188
|
-
- **12-ci-cd-integration.md** - CI/CD integration patterns
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
# Architecture & SOLID Standard
|
|
2
|
-
|
|
3
|
-
**🤖 Cursor Rule**: See [03-solid-principles.mdc](../../cursor-rules/03-solid-principles.mdc) for AI-optimized directives that automatically enforce SOLID principles.
|
|
4
|
-
|
|
5
|
-
## Purpose
|
|
6
|
-
Define the core architectural principles and SOLID expectations for pace-core and consuming apps so components, APIs, and utilities evolve consistently and sustainably.
|
|
7
|
-
|
|
8
|
-
## Architectural Principles
|
|
9
|
-
- Composition over complexity
|
|
10
|
-
- Separation of concerns
|
|
11
|
-
- Domain-agnostic core
|
|
12
|
-
- Extensible, stable APIs
|
|
13
|
-
- Secure by default
|
|
14
|
-
- Performance-conscious
|
|
15
|
-
|
|
16
|
-
## SOLID Principles (Cursor enforcement)
|
|
17
|
-
- **Single Responsibility**: Each module has one reason to change; extract complex logic to hooks/services.
|
|
18
|
-
- **Open/Closed**: Extend via composition/configuration, avoid modifying shared primitives.
|
|
19
|
-
- **Liskov Substitution**: Derived types/components must satisfy the base contract.
|
|
20
|
-
- **Interface Segregation**: Prefer focused interfaces/props over catch-all configs.
|
|
21
|
-
- **Dependency Inversion**: Depend on abstractions (types/interfaces); inject implementations.
|
|
22
|
-
|
|
23
|
-
## Performance & RLS Boundaries
|
|
24
|
-
- **RLS helper use**: Policies must rely on helper functions (no subqueries) to avoid N+1/per-row overhead.
|
|
25
|
-
- **Test migrations**: Verify DB migrations for performance regressions and timeouts.
|
|
26
|
-
- **Monitor queries**: Use EXPLAIN/Advisors to ensure policies don’t introduce InitPlan nodes.
|
|
27
|
-
|
|
28
|
-
## In/Out of Scope
|
|
29
|
-
**In scope**: UI primitives, generic hooks, shared API patterns, error-handling conventions, RPC shape conventions.
|
|
30
|
-
**Out of scope**: App/domain-specific logic, app-specific styling, business workflows.
|
|
31
|
-
|
|
32
|
-
## Precedence
|
|
33
|
-
1) Security 2) API/RPC 3) Components 4) Code Style 5) Testing 6) Documentation.
|
|
34
|
-
|
|
35
|
-
## Cursor Checklist
|
|
36
|
-
- Changes fit boundaries (no domain logic in core primitives).
|
|
37
|
-
- Follow SOLID guidance above.
|
|
38
|
-
- Prefer additive changes; avoid breaking contracts.
|
|
39
|
-
- Keep helpers small, pure, and typed.
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
# Testing & Documentation Standard
|
|
2
|
-
|
|
3
|
-
**🤖 Cursor Rule**: See [04-testing-standards.mdc](../../cursor-rules/04-testing-standards.mdc) for AI-optimized directives that automatically enforce testing standards.
|
|
4
|
-
|
|
5
|
-
## Testing Strategy
|
|
6
|
-
- Unit tests for utils & hooks
|
|
7
|
-
- Integration tests for components
|
|
8
|
-
- Few meaningful E2E tests (in consuming apps)
|
|
9
|
-
- Coverage: ≥90% utils, ≥70% components
|
|
10
|
-
|
|
11
|
-
## Test Structure
|
|
12
|
-
- Colocated tests (*.test.ts/tsx)
|
|
13
|
-
- Use RTL + userEvent
|
|
14
|
-
- Avoid unnecessary mocks
|
|
15
|
-
|
|
16
|
-
## Documentation Requirements
|
|
17
|
-
- Component READMEs
|
|
18
|
-
- API docs
|
|
19
|
-
- Standards directory
|
|
20
|
-
|
|
21
|
-
## Required Sections (for every component/API doc)
|
|
22
|
-
- Overview
|
|
23
|
-
- API/Props
|
|
24
|
-
- Examples
|
|
25
|
-
- A11y notes
|
|
26
|
-
- Edge cases
|
|
27
|
-
|
|
28
|
-
## When to update docs
|
|
29
|
-
- New component or API surface: add README + API entry with all required sections.
|
|
30
|
-
- Behavior/prop change: update README/API entry and add migration notes if breaking.
|
|
31
|
-
- Bug fix: document the fixed behavior when it changes user-facing expectations.
|
|
32
|
-
|
|
33
|
-
## Cursor Checklist
|
|
34
|
-
- Update docs after API or behavior changes (follow \"When to update docs\").
|
|
35
|
-
- Ensure tests cover critical paths
|
|
36
|
-
- Use RTL patterns only
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
# Bug Reports and Feature Requests
|
|
2
|
-
|
|
3
|
-
**🤖 Cursor Rule**: See [05-bug-reports-and-features.mdc](../../cursor-rules/05-bug-reports-and-features.mdc) for AI-optimized templates and guidance.
|
|
4
|
-
|
|
5
|
-
## Purpose
|
|
6
|
-
Standardize how issues and feature requests are captured for pace-core and consuming apps.
|
|
7
|
-
|
|
8
|
-
## Bug Report Template
|
|
9
|
-
- Description of bug and expected vs actual behavior.
|
|
10
|
-
- Steps to reproduce (minimal, ordered).
|
|
11
|
-
- Minimal reproduction (link/snippet).
|
|
12
|
-
- Environment (pace-core version, React, Node, browser, OS).
|
|
13
|
-
- Error messages/logs.
|
|
14
|
-
- Additional context (screenshots/video).
|
|
15
|
-
|
|
16
|
-
## Feature Request Template
|
|
17
|
-
- Feature description and problem statement.
|
|
18
|
-
- Proposed solution/API.
|
|
19
|
-
- Use case with real scenario.
|
|
20
|
-
- Alternatives considered.
|
|
21
|
-
- Example code snippet.
|
|
22
|
-
- Additional context/mockups.
|
|
23
|
-
|
|
24
|
-
## Cursor Checklist
|
|
25
|
-
- Confirm issue belongs to pace-core vs consuming app.
|
|
26
|
-
- Include minimal reproduction and environment.
|
|
27
|
-
- Use templates above when drafting issues.
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
# TypeScript & Code Style Standard
|
|
2
|
-
|
|
3
|
-
**🤖 Cursor Rule**: See [06-code-quality.mdc](../../cursor-rules/06-code-quality.mdc) for AI-optimized directives that automatically enforce code quality standards.
|
|
4
|
-
|
|
5
|
-
## TypeScript Rules
|
|
6
|
-
- No any
|
|
7
|
-
- Prefer discriminated unions
|
|
8
|
-
- Avoid assertions unless in escape hatches
|
|
9
|
-
- Use ReadonlyArray where possible
|
|
10
|
-
- Avoid boolean mode flags
|
|
11
|
-
|
|
12
|
-
## Naming Conventions
|
|
13
|
-
- Hooks: useSomething
|
|
14
|
-
- Providers: SomethingProvider
|
|
15
|
-
- Utilities: camelCase
|
|
16
|
-
- Components: PascalCase
|
|
17
|
-
|
|
18
|
-
## Preferred Patterns
|
|
19
|
-
- Pure functions
|
|
20
|
-
- Composition over inheritance
|
|
21
|
-
- Early returns
|
|
22
|
-
- Small private helpers
|
|
23
|
-
|
|
24
|
-
## Forbidden
|
|
25
|
-
- Implicit any
|
|
26
|
-
- Bloated components
|
|
27
|
-
- Domain-specific types in pace-core
|
|
28
|
-
|
|
29
|
-
## Cursor Checklist
|
|
30
|
-
- No any / unknown / unnecessary assertions
|
|
31
|
-
- Convert flags into unions
|
|
32
|
-
- Enforce naming rules
|
|
33
|
-
- Extract large functions into helpers
|
|
34
|
-
- Prevent domain types from leaking in
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
# Tech Stack & API/RPC Standard
|
|
2
|
-
|
|
3
|
-
**🤖 Cursor Rule**: See [07-tech-stack-compliance.mdc](../../cursor-rules/07-tech-stack-compliance.mdc) for AI-optimized directives that automatically enforce tech stack compliance.
|
|
4
|
-
|
|
5
|
-
## Required Stack
|
|
6
|
-
- **React 19+**, functional components only.
|
|
7
|
-
- **TypeScript 5+** with `strict` enabled.
|
|
8
|
-
- **Vite** for tooling; use `import.meta.env`.
|
|
9
|
-
- **Tailwind v4** CSS-first with `app.css` scaffold (see 08-markup-quality).
|
|
10
|
-
- **Supabase** via secure clients/hooks (`useSecureSupabase`); never bypass RLS.
|
|
11
|
-
- **TanStack Query** for server state.
|
|
12
|
-
- **React Hook Form + Zod** (prefer `useZodForm` from pace-core) for forms.
|
|
13
|
-
|
|
14
|
-
## API & RPC Rules
|
|
15
|
-
- Naming: `<family>_<domain>_<verb>` (e.g., `data_cake_dishes_list`, `app_cake_dish_create`, `_bulk` for bulk).
|
|
16
|
-
- Shape:
|
|
17
|
-
```ts
|
|
18
|
-
type ApiResult<T> =
|
|
19
|
-
| { ok: true; data: T }
|
|
20
|
-
| { ok: false; error: ApiError };
|
|
21
|
-
```
|
|
22
|
-
- Read RPCs never mutate; writes idempotent when possible.
|
|
23
|
-
- Never accept dynamic SQL; enforce RLS + tenant boundaries; errors must be user-safe.
|
|
24
|
-
- Deprecation: mark with `@deprecated`; retirement window = 2 stable releases.
|
|
25
|
-
|
|
26
|
-
## Cursor Checklist
|
|
27
|
-
- Use the required stack (React 19+, TS strict, Vite, Tailwind v4 scaffold, Supabase secure client, TanStack Query, RHF + Zod).
|
|
28
|
-
- Enforce ApiResult shape and naming rules.
|
|
29
|
-
- Do not bypass RLS; avoid overlapping/redundant RPCs.
|
|
30
|
-
- Ensure idempotency for writes; avoid dynamic SQL.
|