-
Notifications
You must be signed in to change notification settings - Fork 0
feat: Refactor Auth0 generators to TanStack Router model #592
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
feat: Refactor Auth0 generators to TanStack Router model #592
Conversation
🦋 Changeset detectedLatest commit: e1dbc76 The changes in this PR will be included in the next version bump. This PR includes changesets to release 17 packages
Not sure what this means? Click here to learn what changesets are. Click here if you're a maintainer who wants to add another changeset to this PR |
|
The latest updates on your projects. Learn more about Vercel for Git ↗︎
|
|
Important Review skippedReview was skipped due to path filters ⛔ Files ignored due to path filters (17)
CodeRabbit blocks several paths by default. You can override this behavior by explicitly including those paths in the path filters. For example, including You can disable this status message by setting the WalkthroughThis update refactors and enhances the code generation system for React and Auth0 authentication, focusing on improved integration with Tanstack Router. Key changes include replacing the Auth0 callback generator with a new Auth0 pages generator, updating route and context handling, refining directory cleanup logic, and modernizing naming conventions and code structure across generators and templates. Changes
Sequence Diagram(s)sequenceDiagram
participant User
participant Browser
participant TanstackRouter
participant Auth0PagesGenerator
participant Auth0
participant App
User->>Browser: Navigates to /auth/login
Browser->>TanstackRouter: Matches /auth/login route
TanstackRouter->>Auth0PagesGenerator: Executes beforeLoad
Auth0PagesGenerator->>TanstackRouter: Checks if userId exists in context
alt userId exists
TanstackRouter->>Browser: Redirect to /
else userId missing
Auth0PagesGenerator->>Auth0: Triggers loginWithRedirect
Auth0-->>Browser: Redirects to Auth0 login
end
Browser->>App: Shows Loader while redirecting
sequenceDiagram
participant Generator
participant ReactRoutesProvider
participant ReactRouterProvider
participant Template
participant Output
Generator->>ReactRoutesProvider: getRoutePrefix(), getRouteFilePath(), getOutputRelativePath()
Generator->>ReactRouterProvider: getRootRouteDirectory()
Generator->>Template: Passes TPL_ROUTE_PATH, TPL_LOGIN_URL_PATH, context fields
Template->>Output: Generates route/component files with dynamic paths and context
Possibly related PRs
🪧 TipsChatThere are 3 ways to chat with CodeRabbit:
SupportNeed help? Create a ticket on our support page for assistance with any issues or questions. Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments. CodeRabbit Commands (Invoked using PR comments)
Other keywords and placeholders
Documentation and Community
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 5
🔭 Outside diff range comments (12)
plugins/plugin-auth/src/auth0/generators/react/auth0-hooks/templates/src/hooks/use-current-user.ts (1)
1-2: Type-checking disabled – please restore strict mode.
// @ts-nocheckcontradicts the coding-guideline requirement for strict type checking in every*.ts/*.tsxfile.plugins/plugin-storage/src/generators/react/upload-components/templates/src/components/file-input/file-input.tsx (1)
131-140: Tailwind class prefixes missing for plugin components.
Files underplugins/plugin-storage/**/*must prefix every Tailwind utility withstorage-. Example:-<div className={cn('max-w-md', className)}> +<div className={cn('storage-max-w-md', className)}>Please audit the component and apply the prefix everywhere (
storage-flex,storage-h-12, …) to avoid global style collisions.packages/react-generators/src/generators/admin/admin-crud-list/templates/Table.tsx (1)
1-2: Strict typing disabled – remove@ts-nocheck.
Admin generator templates are compiled in consumer projects withstricton; leaving this pragma forces them to weaken their tsconfig.-// @ts-nocheck +// remove this line and ensure types passpackages/react-generators/src/generators/admin/admin-crud-edit/templates/edit.tsx (1)
1-1: Remove TypeScript checking suppression.The
// @ts-nocheckdirective violates the coding guidelines which require "TypeScript with strict type checking" for**/*.{ts,tsx}files.-// @ts-nocheckpackages/react-generators/src/generators/apollo/react-apollo/templates/src/app/app-apollo-provider.tsx (1)
1-1: Remove TypeScript checking suppression.The
// @ts-nocheckdirective violates the coding guidelines which require "TypeScript with strict type checking" for**/*.{ts,tsx}files.-// @ts-nocheckpackages/react-generators/src/generators/admin/admin-crud-list/templates/index.tsx (1)
1-1: Remove TypeScript checking suppression.The
// @ts-nocheckdirective violates the coding guidelines which require "TypeScript with strict type checking" for**/*.{ts,tsx}files.-// @ts-nocheckpackages/react-generators/src/generators/admin/admin-crud-embedded-form/templates/EmbeddedForm.tsx (1)
1-1: Remove@ts-nocheckdirective to enable strict type checking.The TypeScript strict type checking guideline requires type checking to be enabled. Consider addressing any type errors instead of disabling type checking entirely.
packages/react-generators/src/generators/auth/auth-identify/auth-identify.generator.ts (1)
54-65: AddauthContextTaskas a dependency souserIdis defined before theuseEffectsnippet.The
auth-identifygenerator currently only depends onreactRouterConfig, but it emits auseEffectthat referencesuserIdwithout ever injecting it. You need to wire in the existingauthContextTask(which sets upconst { userId } = useSession()) before you emit the identify fragment:• In
packages/react-generators/src/generators/auth/auth-identify/auth-identify.generator.ts
– Add the import:
ts import { authContextTask } from '#src/generators/auth/_tasks/auth-context.js';
– Update the task dependencies:
diff main: createGeneratorTask({ dependencies: { reactRouterConfig: reactRouterConfigProvider, + authContext: authContextTask, }, exports: { authIdentify: authIdentifyProvider.export(packageScope) }, run({ reactRouterConfig }) { … }
This ensures that theauth-contextfragment (which declaresuserId) runs before yourauth-identifyfragment and prevents the undefined-userIdruntime error.packages/react-generators/src/generators/admin/admin-crud-edit/admin-crud-edit.generator.ts (2)
114-120: Remove deprecatedgetDirectoryBase()from provider export.The provider export still includes
getDirectoryBase()which was removed from theReactRoutesProviderinterface. This inconsistency could cause runtime errors.Apply this diff to fix the provider export:
adminCrudEdit: { - getDirectoryBase: () => reactRoutes.getOutputRelativePath(), getSchemaPath: () => editSchemaPath, getSchemaImport: () => editSchemaPath,
115-127: Add explicit return types to arrow functions.According to the coding guidelines, all functions should have explicit return types.
Apply this diff to add return types:
adminCrudEdit: { - getSchemaPath: () => editSchemaPath, - getSchemaImport: () => editSchemaPath, + getSchemaPath: (): string => editSchemaPath, + getSchemaImport: (): string => editSchemaPath, }, adminCrudInputContainer: { - addInput: (input) => { + addInput: (input: AdminCrudInput): void => { inputFields.push(input); }, - getModelName: () => modelName, - isInModal: () => false, + getModelName: (): string => modelName, + isInModal: (): boolean => false,packages/react-generators/src/generators/admin/admin-home/admin-home.generator.ts (1)
26-47: Add explicit return type to run function.According to the coding guidelines, all functions should have explicit return types.
Add the return type annotation to the run function:
- run({ renderers, reactRoutes, reactRouter }) { + run({ renderers, reactRoutes, reactRouter }): { build: (builder: any) => Promise<void> } {Note: Replace
anywith the proper builder type from the sync package.packages/react-generators/src/generators/admin/admin-bull-board/admin-bull-board.generator.ts (1)
55-95: Add explicit return type to run function.According to the coding guidelines, all functions should have explicit return types.
Add the return type annotation:
- run({ + run({ typescriptFile, reactComponentsImports, reactConfigImports, reactErrorImports, reactApollo, generatedGraphqlImports, paths, reactRoutes, - }) { + }): { build: (builder: any) => Promise<void> } {Note: Replace
anywith the proper builder type from the sync package.
🧹 Nitpick comments (5)
plugins/plugin-auth/src/auth0/generators/react/auth0-hooks/templates/src/hooks/use-current-user.ts (1)
9-13: Export the result interface for reuse.
Per the guidelines, non-local interfaces should be exported.-interface UseCurrentUserResult { +export interface UseCurrentUserResult {plugins/plugin-auth/src/auth0/generators/react/react-auth0/templates/src/app/auth-loaded-gate.tsx (1)
15-24: Improve error type checking robustness.The error type checking could be more robust by using proper type guards and avoiding
'error' in errorchecks on Error objects.function isInvalidRoleError(error: unknown): boolean { - return ( - error instanceof Error && - 'error' in error && - 'error_description' in error && - typeof error.error_description === 'string' && - error.error === 'access_denied' && - error.error_description.includes('INVALID_ROLE') - ); + return ( + error instanceof Error && + 'error' in error && + 'error_description' in error && + typeof (error as any).error_description === 'string' && + (error as any).error === 'access_denied' && + (error as any).error_description.includes('INVALID_ROLE') + ); }packages/react-generators/src/generators/admin/admin-layout/templates/routes/route.tsx (1)
1-1: Consider removing @ts-nocheck once template variables are resolved.While
@ts-nocheckis acceptable for template files, ensure it's removed when the template is processed and variables are replaced.plugins/plugin-auth/src/auth0/generators/react/react-auth0/react-auth0.generator.ts (1)
98-112: Consider making auth URLs configurable.The hard-coded login paths might need to be configurable for different routing structures.
Consider accepting route paths as configuration options or deriving them from a routes provider:
-reactAuth: createGeneratorTask({ +reactAuth: createGeneratorTask({ + dependencies: { + reactRoutes: reactRoutesProvider, + }, exports: { reactAuth: reactAuthProvider.export(packageScope), }, - run() { + run({ reactRoutes }) { + const routePrefix = reactRoutes.getRoutePrefix(); return { providers: { reactAuth: { - getLoginUrlPath: () => '/auth/login', - getRegisterUrlPath: () => '/auth/login?screen_hint=signup', + getLoginUrlPath: () => `${routePrefix}/auth/login`, + getRegisterUrlPath: () => `${routePrefix}/auth/login?screen_hint=signup`, }, }, }; }, }),packages/react-generators/src/generators/core/react-router/react-router.generator.ts (1)
85-87: Add explicit return type to provider creation.-export const reactRouterProvider = - createProviderType<ReactRouterProvider>('react-router'); +export const reactRouterProvider: ReturnType<typeof createProviderType<ReactRouterProvider>> = + createProviderType<ReactRouterProvider>('react-router');
📜 Review details
Configuration used: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
⛔ Files ignored due to path filters (35)
packages/react-generators/src/generators/admin/admin-bull-board/generated/template-paths.tsis excluded by!**/generated/**,!**/generated/**packages/react-generators/src/generators/admin/admin-bull-board/generated/typed-templates.tsis excluded by!**/generated/**,!**/generated/**packages/react-generators/src/generators/admin/admin-crud-edit/generated/typed-templates.tsis excluded by!**/generated/**,!**/generated/**packages/react-generators/src/generators/admin/admin-crud-list/generated/typed-templates.tsis excluded by!**/generated/**,!**/generated/**packages/react-generators/src/generators/admin/admin-home/generated/template-paths.tsis excluded by!**/generated/**,!**/generated/**packages/react-generators/src/generators/admin/admin-home/generated/template-renderers.tsis excluded by!**/generated/**,!**/generated/**packages/react-generators/src/generators/admin/admin-home/generated/typed-templates.tsis excluded by!**/generated/**,!**/generated/**packages/react-generators/src/generators/admin/admin-layout/generated/template-paths.tsis excluded by!**/generated/**,!**/generated/**packages/react-generators/src/generators/admin/admin-layout/generated/template-renderers.tsis excluded by!**/generated/**,!**/generated/**packages/react-generators/src/generators/admin/admin-layout/generated/typed-templates.tsis excluded by!**/generated/**,!**/generated/**packages/react-generators/src/generators/apollo/react-apollo/generated/template-paths.tsis excluded by!**/generated/**,!**/generated/**packages/react-generators/src/generators/apollo/react-apollo/generated/typed-templates.tsis excluded by!**/generated/**,!**/generated/**packages/react-generators/src/generators/core/react-components/generated/template-paths.tsis excluded by!**/generated/**,!**/generated/**packages/react-generators/src/generators/core/react-components/generated/ts-import-providers.tsis excluded by!**/generated/**,!**/generated/**packages/react-generators/src/generators/core/react-components/generated/typed-templates.tsis excluded by!**/generated/**,!**/generated/**packages/react-generators/src/generators/core/react-router/generated/template-paths.tsis excluded by!**/generated/**,!**/generated/**packages/react-generators/src/generators/core/react-router/generated/template-renderers.tsis excluded by!**/generated/**,!**/generated/**packages/react-generators/src/generators/core/react-router/generated/ts-import-providers.tsis excluded by!**/generated/**,!**/generated/**packages/react-generators/src/generators/core/react-router/generated/typed-templates.tsis excluded by!**/generated/**,!**/generated/**plugins/plugin-auth/src/auth0/generators/react/auth0-callback/generated/index.tsis excluded by!**/generated/**,!**/generated/**plugins/plugin-auth/src/auth0/generators/react/auth0-callback/generated/template-paths.tsis excluded by!**/generated/**,!**/generated/**plugins/plugin-auth/src/auth0/generators/react/auth0-callback/generated/template-renderers.tsis excluded by!**/generated/**,!**/generated/**plugins/plugin-auth/src/auth0/generators/react/auth0-callback/generated/typed-templates.tsis excluded by!**/generated/**,!**/generated/**plugins/plugin-auth/src/auth0/generators/react/auth0-hooks/generated/template-paths.tsis excluded by!**/generated/**,!**/generated/**plugins/plugin-auth/src/auth0/generators/react/auth0-hooks/generated/typed-templates.tsis excluded by!**/generated/**,!**/generated/**plugins/plugin-auth/src/auth0/generators/react/auth0-pages/generated/index.tsis excluded by!**/generated/**,!**/generated/**plugins/plugin-auth/src/auth0/generators/react/auth0-pages/generated/template-paths.tsis excluded by!**/generated/**,!**/generated/**plugins/plugin-auth/src/auth0/generators/react/auth0-pages/generated/template-renderers.tsis excluded by!**/generated/**,!**/generated/**plugins/plugin-auth/src/auth0/generators/react/auth0-pages/generated/typed-templates.tsis excluded by!**/generated/**,!**/generated/**plugins/plugin-auth/src/auth0/generators/react/react-auth0/generated/index.tsis excluded by!**/generated/**,!**/generated/**plugins/plugin-auth/src/auth0/generators/react/react-auth0/generated/template-paths.tsis excluded by!**/generated/**,!**/generated/**plugins/plugin-auth/src/auth0/generators/react/react-auth0/generated/template-renderers.tsis excluded by!**/generated/**,!**/generated/**plugins/plugin-auth/src/auth0/generators/react/react-auth0/generated/typed-templates.tsis excluded by!**/generated/**,!**/generated/**plugins/plugin-storage/src/generators/react/upload-components/generated/template-paths.tsis excluded by!**/generated/**,!**/generated/**plugins/plugin-storage/src/generators/react/upload-components/generated/typed-templates.tsis excluded by!**/generated/**,!**/generated/**
📒 Files selected for processing (72)
.changeset/hot-tires-check.md(1 hunks).changeset/two-rockets-tell.md(1 hunks).vscode/settings.json(1 hunks)packages/core-generators/src/generators/node/eslint/react-rules.ts(1 hunks)packages/project-builder-server/src/compiler/admin/index.ts(3 hunks)packages/project-builder-web/src/routes/apps/-components/new-app-dialog.tsx(1 hunks)packages/react-generators/src/generators/admin/admin-bull-board/admin-bull-board.generator.ts(5 hunks)packages/react-generators/src/generators/admin/admin-bull-board/extractor.json(1 hunks)packages/react-generators/src/generators/admin/admin-bull-board/templates/routes/bull-board/index.tsx(1 hunks)packages/react-generators/src/generators/admin/admin-components/templates/src/components/embedded-list-input/embedded-list-input.tsx(2 hunks)packages/react-generators/src/generators/admin/admin-crud-edit/admin-crud-edit.generator.ts(5 hunks)packages/react-generators/src/generators/admin/admin-crud-edit/extractor.json(2 hunks)packages/react-generators/src/generators/admin/admin-crud-edit/templates/create.tsx(1 hunks)packages/react-generators/src/generators/admin/admin-crud-edit/templates/edit-form.tsx(2 hunks)packages/react-generators/src/generators/admin/admin-crud-edit/templates/edit.tsx(1 hunks)packages/react-generators/src/generators/admin/admin-crud-embedded-form/templates/EmbeddedForm.tsx(2 hunks)packages/react-generators/src/generators/admin/admin-crud-list/admin-crud-list.generator.ts(2 hunks)packages/react-generators/src/generators/admin/admin-crud-list/extractor.json(1 hunks)packages/react-generators/src/generators/admin/admin-crud-list/templates/Table.tsx(2 hunks)packages/react-generators/src/generators/admin/admin-crud-list/templates/index.tsx(1 hunks)packages/react-generators/src/generators/admin/admin-crud-queries/admin-crud-queries.generator.ts(1 hunks)packages/react-generators/src/generators/admin/admin-home/admin-home.generator.ts(2 hunks)packages/react-generators/src/generators/admin/admin-home/extractor.json(2 hunks)packages/react-generators/src/generators/admin/admin-home/index.ts(1 hunks)packages/react-generators/src/generators/admin/admin-home/templates/root-index.tsx(1 hunks)packages/react-generators/src/generators/admin/admin-home/templates/routes/index.tsx(1 hunks)packages/react-generators/src/generators/admin/admin-layout/admin-layout.generator.ts(2 hunks)packages/react-generators/src/generators/admin/admin-layout/extractor.json(1 hunks)packages/react-generators/src/generators/admin/admin-layout/templates/routes/route.tsx(1 hunks)packages/react-generators/src/generators/apollo/react-apollo/extractor.json(1 hunks)packages/react-generators/src/generators/apollo/react-apollo/react-apollo.generator.ts(3 hunks)packages/react-generators/src/generators/apollo/react-apollo/templates/src/app/app-apollo-provider.tsx(1 hunks)packages/react-generators/src/generators/auth/_providers/index.ts(1 hunks)packages/react-generators/src/generators/auth/_providers/react-auth.ts(1 hunks)packages/react-generators/src/generators/auth/_tasks/auth-context.ts(1 hunks)packages/react-generators/src/generators/auth/_tasks/index.ts(1 hunks)packages/react-generators/src/generators/auth/auth-identify/auth-identify.generator.ts(2 hunks)packages/react-generators/src/generators/auth/index.ts(1 hunks)packages/react-generators/src/generators/auth/placeholder-auth-hooks/templates/src/hooks/useSession.ts(1 hunks)packages/react-generators/src/generators/core/react-components/extractor.json(1 hunks)packages/react-generators/src/generators/core/react-components/templates/src/hooks/useStatus.ts(0 hunks)packages/react-generators/src/generators/core/react-router/extractor.json(3 hunks)packages/react-generators/src/generators/core/react-router/react-router.generator.ts(6 hunks)packages/react-generators/src/generators/core/react-router/templates/routes/__root.tsx(1 hunks)packages/react-generators/src/generators/core/react-router/templates/src/app/router.tsx(3 hunks)packages/react-generators/src/generators/core/react-routes/react-routes.generator.ts(1 hunks)packages/react-generators/src/providers/providers.json(1 hunks)packages/react-generators/src/providers/routes.ts(1 hunks)packages/sync/src/output/clean-deleted-files.ts(3 hunks)packages/sync/src/output/clean-deleted-files.unit.test.ts(2 hunks)packages/sync/src/utils/directories.ts(1 hunks)packages/sync/src/utils/directories.unit.test.ts(1 hunks)plugins/plugin-auth/src/auth0/core/node.ts(3 hunks)plugins/plugin-auth/src/auth0/generators/react/auth0-callback/auth0-callback.generator.ts(0 hunks)plugins/plugin-auth/src/auth0/generators/react/auth0-callback/extractor.json(0 hunks)plugins/plugin-auth/src/auth0/generators/react/auth0-callback/index.ts(0 hunks)plugins/plugin-auth/src/auth0/generators/react/auth0-callback/templates/routes/auth0-callback.tsx(0 hunks)plugins/plugin-auth/src/auth0/generators/react/auth0-callback/templates/routes/signup.tsx(0 hunks)plugins/plugin-auth/src/auth0/generators/react/auth0-hooks/extractor.json(3 hunks)plugins/plugin-auth/src/auth0/generators/react/auth0-hooks/templates/src/hooks/use-current-user.ts(1 hunks)plugins/plugin-auth/src/auth0/generators/react/auth0-hooks/templates/src/hooks/use-required-user-id.ts(1 hunks)plugins/plugin-auth/src/auth0/generators/react/auth0-hooks/templates/src/hooks/use-session.ts(2 hunks)plugins/plugin-auth/src/auth0/generators/react/auth0-pages/auth0-pages.generator.ts(1 hunks)plugins/plugin-auth/src/auth0/generators/react/auth0-pages/extractor.json(1 hunks)plugins/plugin-auth/src/auth0/generators/react/auth0-pages/index.ts(1 hunks)plugins/plugin-auth/src/auth0/generators/react/auth0-pages/templates/routes/login.tsx(1 hunks)plugins/plugin-auth/src/auth0/generators/react/index.ts(1 hunks)plugins/plugin-auth/src/auth0/generators/react/react-auth0/extractor.json(1 hunks)plugins/plugin-auth/src/auth0/generators/react/react-auth0/react-auth0.generator.ts(3 hunks)plugins/plugin-auth/src/auth0/generators/react/react-auth0/templates/src/app/auth-loaded-gate.tsx(1 hunks)plugins/plugin-storage/src/generators/react/upload-components/extractor.json(1 hunks)plugins/plugin-storage/src/generators/react/upload-components/templates/src/components/file-input/file-input.tsx(1 hunks)
💤 Files with no reviewable changes (6)
- plugins/plugin-auth/src/auth0/generators/react/auth0-callback/index.ts
- plugins/plugin-auth/src/auth0/generators/react/auth0-callback/extractor.json
- plugins/plugin-auth/src/auth0/generators/react/auth0-callback/templates/routes/auth0-callback.tsx
- plugins/plugin-auth/src/auth0/generators/react/auth0-callback/templates/routes/signup.tsx
- packages/react-generators/src/generators/core/react-components/templates/src/hooks/useStatus.ts
- plugins/plugin-auth/src/auth0/generators/react/auth0-callback/auth0-callback.generator.ts
🧰 Additional context used
📓 Path-based instructions (14)
`**/*.{ts,tsx}`: TypeScript with strict type checking Node 16 module resolution ...
**/*.{ts,tsx}: TypeScript with strict type checking
Node 16 module resolution - include file extensions in imports (.js)
Sort imports by group: external libs first, then local imports
Use camelCase for variables/functions, PascalCase for types/classes
Always include return types on top-level functions including React components (React.ReactElement)
Include absolute paths in import statements via tsconfig paths (@src/is the alias forsrc/)
Order functions such that functions are placed below the variables/functions they use
If a particular interface or type is not exported, change the file so it is exported
Prefer using nullish coalescing operator (??) instead of logical or (||)
Use console.info/warn/error instead of console.log
Always use.jsextensions in imports, even for TypeScript files
Specify explicit return types on all functions
📄 Source: CodeRabbit Inference Engine (CLAUDE.md)
List of files the instruction was applied to:
plugins/plugin-auth/src/auth0/generators/react/auth0-hooks/templates/src/hooks/use-current-user.tspackages/project-builder-web/src/routes/apps/-components/new-app-dialog.tsxpackages/react-generators/src/generators/admin/admin-crud-list/templates/Table.tsxplugins/plugin-auth/src/auth0/generators/react/auth0-hooks/templates/src/hooks/use-session.tspackages/react-generators/src/generators/auth/_providers/index.tspackages/react-generators/src/generators/admin/admin-crud-queries/admin-crud-queries.generator.tsplugins/plugin-auth/src/auth0/generators/react/auth0-hooks/templates/src/hooks/use-required-user-id.tspackages/react-generators/src/generators/auth/_tasks/auth-context.tspackages/react-generators/src/generators/admin/admin-crud-edit/templates/create.tsxpackages/react-generators/src/generators/admin/admin-home/templates/routes/index.tsxpackages/react-generators/src/generators/apollo/react-apollo/templates/src/app/app-apollo-provider.tsxpackages/react-generators/src/generators/auth/placeholder-auth-hooks/templates/src/hooks/useSession.tspackages/react-generators/src/generators/admin/admin-crud-edit/templates/edit-form.tsxpackages/project-builder-server/src/compiler/admin/index.tspackages/react-generators/src/generators/auth/_tasks/index.tsplugins/plugin-auth/src/auth0/generators/react/auth0-pages/index.tspackages/react-generators/src/generators/admin/admin-crud-embedded-form/templates/EmbeddedForm.tsxpackages/react-generators/src/generators/admin/admin-components/templates/src/components/embedded-list-input/embedded-list-input.tsxpackages/react-generators/src/generators/auth/_providers/react-auth.tspackages/react-generators/src/generators/admin/admin-home/index.tspackages/react-generators/src/generators/auth/index.tspackages/sync/src/utils/directories.unit.test.tsplugins/plugin-auth/src/auth0/generators/react/auth0-pages/auth0-pages.generator.tspackages/react-generators/src/generators/core/react-routes/react-routes.generator.tspackages/sync/src/output/clean-deleted-files.unit.test.tspackages/sync/src/output/clean-deleted-files.tsplugins/plugin-auth/src/auth0/generators/react/auth0-pages/templates/routes/login.tsxpackages/react-generators/src/generators/auth/auth-identify/auth-identify.generator.tspackages/react-generators/src/generators/admin/admin-crud-edit/admin-crud-edit.generator.tspackages/core-generators/src/generators/node/eslint/react-rules.tspackages/react-generators/src/generators/admin/admin-home/templates/root-index.tsxpackages/react-generators/src/generators/admin/admin-bull-board/admin-bull-board.generator.tsplugins/plugin-auth/src/auth0/core/node.tspackages/react-generators/src/generators/admin/admin-crud-list/templates/index.tsxplugins/plugin-storage/src/generators/react/upload-components/templates/src/components/file-input/file-input.tsxpackages/react-generators/src/providers/routes.tspackages/sync/src/utils/directories.tspackages/react-generators/src/generators/admin/admin-layout/admin-layout.generator.tspackages/react-generators/src/generators/admin/admin-crud-edit/templates/edit.tsxpackages/react-generators/src/generators/admin/admin-crud-list/admin-crud-list.generator.tspackages/react-generators/src/generators/admin/admin-home/admin-home.generator.tsplugins/plugin-auth/src/auth0/generators/react/react-auth0/templates/src/app/auth-loaded-gate.tsxpackages/react-generators/src/generators/core/react-router/templates/routes/__root.tsxpackages/react-generators/src/generators/core/react-router/templates/src/app/router.tsxplugins/plugin-auth/src/auth0/generators/react/index.tspackages/react-generators/src/generators/apollo/react-apollo/react-apollo.generator.tsplugins/plugin-auth/src/auth0/generators/react/react-auth0/react-auth0.generator.tspackages/react-generators/src/generators/admin/admin-bull-board/templates/routes/bull-board/index.tsxpackages/react-generators/src/generators/admin/admin-layout/templates/routes/route.tsxpackages/react-generators/src/generators/core/react-router/react-router.generator.ts
`**/*`: Use kebab-case for file names
**/*: Use kebab-case for file names
📄 Source: CodeRabbit Inference Engine (CLAUDE.md)
List of files the instruction was applied to:
plugins/plugin-auth/src/auth0/generators/react/auth0-hooks/templates/src/hooks/use-current-user.tspackages/project-builder-web/src/routes/apps/-components/new-app-dialog.tsxpackages/react-generators/src/generators/admin/admin-crud-list/templates/Table.tsxplugins/plugin-auth/src/auth0/generators/react/auth0-hooks/templates/src/hooks/use-session.tspackages/react-generators/src/generators/admin/admin-crud-list/extractor.jsonpackages/react-generators/src/generators/auth/_providers/index.tspackages/react-generators/src/generators/admin/admin-crud-queries/admin-crud-queries.generator.tsplugins/plugin-storage/src/generators/react/upload-components/extractor.jsonplugins/plugin-auth/src/auth0/generators/react/auth0-hooks/templates/src/hooks/use-required-user-id.tspackages/react-generators/src/generators/auth/_tasks/auth-context.tspackages/react-generators/src/generators/admin/admin-crud-edit/templates/create.tsxpackages/react-generators/src/generators/admin/admin-home/templates/routes/index.tsxpackages/react-generators/src/generators/admin/admin-bull-board/extractor.jsonpackages/react-generators/src/generators/apollo/react-apollo/templates/src/app/app-apollo-provider.tsxpackages/react-generators/src/generators/apollo/react-apollo/extractor.jsonplugins/plugin-auth/src/auth0/generators/react/auth0-hooks/extractor.jsonpackages/react-generators/src/generators/auth/placeholder-auth-hooks/templates/src/hooks/useSession.tspackages/react-generators/src/generators/admin/admin-crud-edit/templates/edit-form.tsxpackages/project-builder-server/src/compiler/admin/index.tspackages/react-generators/src/generators/auth/_tasks/index.tspackages/react-generators/src/providers/providers.jsonplugins/plugin-auth/src/auth0/generators/react/auth0-pages/index.tspackages/react-generators/src/generators/admin/admin-crud-embedded-form/templates/EmbeddedForm.tsxpackages/react-generators/src/generators/admin/admin-components/templates/src/components/embedded-list-input/embedded-list-input.tsxpackages/react-generators/src/generators/auth/_providers/react-auth.tspackages/react-generators/src/generators/admin/admin-home/extractor.jsonpackages/react-generators/src/generators/admin/admin-home/index.tspackages/react-generators/src/generators/auth/index.tspackages/sync/src/utils/directories.unit.test.tsplugins/plugin-auth/src/auth0/generators/react/auth0-pages/auth0-pages.generator.tspackages/react-generators/src/generators/core/react-routes/react-routes.generator.tspackages/sync/src/output/clean-deleted-files.unit.test.tspackages/sync/src/output/clean-deleted-files.tsplugins/plugin-auth/src/auth0/generators/react/auth0-pages/templates/routes/login.tsxpackages/react-generators/src/generators/auth/auth-identify/auth-identify.generator.tspackages/react-generators/src/generators/admin/admin-crud-edit/admin-crud-edit.generator.tspackages/core-generators/src/generators/node/eslint/react-rules.tspackages/react-generators/src/generators/admin/admin-layout/extractor.jsonpackages/react-generators/src/generators/admin/admin-home/templates/root-index.tsxpackages/react-generators/src/generators/admin/admin-bull-board/admin-bull-board.generator.tsplugins/plugin-auth/src/auth0/core/node.tspackages/react-generators/src/generators/admin/admin-crud-list/templates/index.tsxpackages/react-generators/src/generators/core/react-components/extractor.jsonplugins/plugin-storage/src/generators/react/upload-components/templates/src/components/file-input/file-input.tsxpackages/react-generators/src/providers/routes.tspackages/sync/src/utils/directories.tspackages/react-generators/src/generators/admin/admin-layout/admin-layout.generator.tspackages/react-generators/src/generators/core/react-router/extractor.jsonpackages/react-generators/src/generators/admin/admin-crud-edit/templates/edit.tsxpackages/react-generators/src/generators/admin/admin-crud-list/admin-crud-list.generator.tspackages/react-generators/src/generators/admin/admin-home/admin-home.generator.tspackages/react-generators/src/generators/admin/admin-crud-edit/extractor.jsonplugins/plugin-auth/src/auth0/generators/react/react-auth0/templates/src/app/auth-loaded-gate.tsxpackages/react-generators/src/generators/core/react-router/templates/routes/__root.tsxpackages/react-generators/src/generators/core/react-router/templates/src/app/router.tsxplugins/plugin-auth/src/auth0/generators/react/auth0-pages/extractor.jsonplugins/plugin-auth/src/auth0/generators/react/react-auth0/extractor.jsonplugins/plugin-auth/src/auth0/generators/react/index.tspackages/react-generators/src/generators/apollo/react-apollo/react-apollo.generator.tsplugins/plugin-auth/src/auth0/generators/react/react-auth0/react-auth0.generator.tspackages/react-generators/src/generators/admin/admin-bull-board/templates/routes/bull-board/index.tsxpackages/react-generators/src/generators/admin/admin-layout/templates/routes/route.tsxpackages/react-generators/src/generators/core/react-router/react-router.generator.ts
`{packages,plugins}/**/*.{ts,tsx}`: Use TypeScript with strict type checking ena...
{packages,plugins}/**/*.{ts,tsx}: Use TypeScript with strict type checking enabled
All functions (excluding one-liner arrow functions) require explicit return types
Use camelCase for variables and functions
Use PascalCase for types and classes
Prefer functional programming patterns
Extract repeated components into distinct functions or components where applicable
📄 Source: CodeRabbit Inference Engine (.cursor/rules/code-style.mdc)
List of files the instruction was applied to:
plugins/plugin-auth/src/auth0/generators/react/auth0-hooks/templates/src/hooks/use-current-user.tspackages/project-builder-web/src/routes/apps/-components/new-app-dialog.tsxpackages/react-generators/src/generators/admin/admin-crud-list/templates/Table.tsxplugins/plugin-auth/src/auth0/generators/react/auth0-hooks/templates/src/hooks/use-session.tspackages/react-generators/src/generators/auth/_providers/index.tspackages/react-generators/src/generators/admin/admin-crud-queries/admin-crud-queries.generator.tsplugins/plugin-auth/src/auth0/generators/react/auth0-hooks/templates/src/hooks/use-required-user-id.tspackages/react-generators/src/generators/auth/_tasks/auth-context.tspackages/react-generators/src/generators/admin/admin-crud-edit/templates/create.tsxpackages/react-generators/src/generators/admin/admin-home/templates/routes/index.tsxpackages/react-generators/src/generators/apollo/react-apollo/templates/src/app/app-apollo-provider.tsxpackages/react-generators/src/generators/auth/placeholder-auth-hooks/templates/src/hooks/useSession.tspackages/react-generators/src/generators/admin/admin-crud-edit/templates/edit-form.tsxpackages/project-builder-server/src/compiler/admin/index.tspackages/react-generators/src/generators/auth/_tasks/index.tsplugins/plugin-auth/src/auth0/generators/react/auth0-pages/index.tspackages/react-generators/src/generators/admin/admin-crud-embedded-form/templates/EmbeddedForm.tsxpackages/react-generators/src/generators/admin/admin-components/templates/src/components/embedded-list-input/embedded-list-input.tsxpackages/react-generators/src/generators/auth/_providers/react-auth.tspackages/react-generators/src/generators/admin/admin-home/index.tspackages/react-generators/src/generators/auth/index.tspackages/sync/src/utils/directories.unit.test.tsplugins/plugin-auth/src/auth0/generators/react/auth0-pages/auth0-pages.generator.tspackages/react-generators/src/generators/core/react-routes/react-routes.generator.tspackages/sync/src/output/clean-deleted-files.unit.test.tspackages/sync/src/output/clean-deleted-files.tsplugins/plugin-auth/src/auth0/generators/react/auth0-pages/templates/routes/login.tsxpackages/react-generators/src/generators/auth/auth-identify/auth-identify.generator.tspackages/react-generators/src/generators/admin/admin-crud-edit/admin-crud-edit.generator.tspackages/core-generators/src/generators/node/eslint/react-rules.tspackages/react-generators/src/generators/admin/admin-home/templates/root-index.tsxpackages/react-generators/src/generators/admin/admin-bull-board/admin-bull-board.generator.tsplugins/plugin-auth/src/auth0/core/node.tspackages/react-generators/src/generators/admin/admin-crud-list/templates/index.tsxplugins/plugin-storage/src/generators/react/upload-components/templates/src/components/file-input/file-input.tsxpackages/react-generators/src/providers/routes.tspackages/sync/src/utils/directories.tspackages/react-generators/src/generators/admin/admin-layout/admin-layout.generator.tspackages/react-generators/src/generators/admin/admin-crud-edit/templates/edit.tsxpackages/react-generators/src/generators/admin/admin-crud-list/admin-crud-list.generator.tspackages/react-generators/src/generators/admin/admin-home/admin-home.generator.tsplugins/plugin-auth/src/auth0/generators/react/react-auth0/templates/src/app/auth-loaded-gate.tsxpackages/react-generators/src/generators/core/react-router/templates/routes/__root.tsxpackages/react-generators/src/generators/core/react-router/templates/src/app/router.tsxplugins/plugin-auth/src/auth0/generators/react/index.tspackages/react-generators/src/generators/apollo/react-apollo/react-apollo.generator.tsplugins/plugin-auth/src/auth0/generators/react/react-auth0/react-auth0.generator.tspackages/react-generators/src/generators/admin/admin-bull-board/templates/routes/bull-board/index.tsxpackages/react-generators/src/generators/admin/admin-layout/templates/routes/route.tsxpackages/react-generators/src/generators/core/react-router/react-router.generator.ts
`**/*.tsx`: Use ShadCN-based components from `@baseplate-dev/ui-components` inst...
**/*.tsx: Use ShadCN-based components from@baseplate-dev/ui-componentsinstead of creating custom ones
Use Tailwind CSS utilities exclusively for styling; avoid writing custom CSS classes
Use icons fromreact-icons/md(Material Design icons); avoid using other icon libraries
📄 Source: CodeRabbit Inference Engine (CLAUDE.md)
List of files the instruction was applied to:
packages/project-builder-web/src/routes/apps/-components/new-app-dialog.tsxpackages/react-generators/src/generators/admin/admin-crud-list/templates/Table.tsxpackages/react-generators/src/generators/admin/admin-crud-edit/templates/create.tsxpackages/react-generators/src/generators/admin/admin-home/templates/routes/index.tsxpackages/react-generators/src/generators/apollo/react-apollo/templates/src/app/app-apollo-provider.tsxpackages/react-generators/src/generators/admin/admin-crud-edit/templates/edit-form.tsxpackages/react-generators/src/generators/admin/admin-crud-embedded-form/templates/EmbeddedForm.tsxpackages/react-generators/src/generators/admin/admin-components/templates/src/components/embedded-list-input/embedded-list-input.tsxplugins/plugin-auth/src/auth0/generators/react/auth0-pages/templates/routes/login.tsxpackages/react-generators/src/generators/admin/admin-home/templates/root-index.tsxpackages/react-generators/src/generators/admin/admin-crud-list/templates/index.tsxplugins/plugin-storage/src/generators/react/upload-components/templates/src/components/file-input/file-input.tsxpackages/react-generators/src/generators/admin/admin-crud-edit/templates/edit.tsxplugins/plugin-auth/src/auth0/generators/react/react-auth0/templates/src/app/auth-loaded-gate.tsxpackages/react-generators/src/generators/core/react-router/templates/routes/__root.tsxpackages/react-generators/src/generators/core/react-router/templates/src/app/router.tsxpackages/react-generators/src/generators/admin/admin-bull-board/templates/routes/bull-board/index.tsxpackages/react-generators/src/generators/admin/admin-layout/templates/routes/route.tsx
`.changeset/*.md`: If you are adding a new feature or changing an existing feature, add a new Changeset in the `.changeset/` directory
.changeset/*.md: If you are adding a new feature or changing an existing feature, add a new Changeset in the.changeset/directory
📄 Source: CodeRabbit Inference Engine (CLAUDE.md)
List of files the instruction was applied to:
.changeset/hot-tires-check.md.changeset/two-rockets-tell.md
`**/index.{ts,tsx}`: Prefer barrel exports e.g. `export * from './foo.js'` instead of individual named exports
**/index.{ts,tsx}: Prefer barrel exports e.g.export * from './foo.js'instead of individual named exports
📄 Source: CodeRabbit Inference Engine (CLAUDE.md)
List of files the instruction was applied to:
packages/react-generators/src/generators/auth/_providers/index.tspackages/react-generators/src/generators/admin/admin-home/templates/routes/index.tsxpackages/project-builder-server/src/compiler/admin/index.tspackages/react-generators/src/generators/auth/_tasks/index.tsplugins/plugin-auth/src/auth0/generators/react/auth0-pages/index.tspackages/react-generators/src/generators/admin/admin-home/index.tspackages/react-generators/src/generators/auth/index.tspackages/react-generators/src/generators/admin/admin-crud-list/templates/index.tsxplugins/plugin-auth/src/auth0/generators/react/index.tspackages/react-generators/src/generators/admin/admin-bull-board/templates/routes/bull-board/index.tsx
`**/*.{unit,int}.test.ts`: Unit tests use `.unit.test.ts` suffix, integration te...
**/*.{unit,int}.test.ts: Unit tests use.unit.test.tssuffix, integration tests use.int.test.ts
Collocate tests with source files using.unit.test.tsor.int.test.tssuffixes
📄 Source: CodeRabbit Inference Engine (CLAUDE.md)
List of files the instruction was applied to:
packages/sync/src/utils/directories.unit.test.tspackages/sync/src/output/clean-deleted-files.unit.test.ts
`**/*.test.ts`: Always import vitest globals explicitly (describe, it, expect) U...
**/*.test.ts: Always import vitest globals explicitly (describe, it, expect)
Use descriptive test names that explain what is being tested
Structure tests with clear setup, execution, and verification phases (Arrange-Act-Assert)
Always mock external API calls and file system operations in tests
Extract common setup code into test helpers
Include tests for error conditions and edge cases
Each test should be independent and not rely on others
Always reset mocks and clean up resources in afterEach
Leverage TypeScript for type-safe mocking in tests
Focus on testing public methods and behaviors, not implementation details
Each test should verify one specific behavior
Import test functions from 'vitest' (no globals)
📄 Source: CodeRabbit Inference Engine (CLAUDE.md)
List of files the instruction was applied to:
packages/sync/src/utils/directories.unit.test.tspackages/sync/src/output/clean-deleted-files.unit.test.ts
`{packages,plugins}/**/*.unit.test.ts`: Unit tests use `.unit.test.ts` suffix
{packages,plugins}/**/*.unit.test.ts: Unit tests use.unit.test.tssuffix
📄 Source: CodeRabbit Inference Engine (.cursor/rules/code-style.mdc)
List of files the instruction was applied to:
packages/sync/src/utils/directories.unit.test.tspackages/sync/src/output/clean-deleted-files.unit.test.ts
`{packages,plugins}/**/*.{unit,int}.test.ts`: Always import vitest globals explicitly (describe, it, expect)
{packages,plugins}/**/*.{unit,int}.test.ts: Always import vitest globals explicitly (describe, it, expect)
📄 Source: CodeRabbit Inference Engine (.cursor/rules/code-style.mdc)
List of files the instruction was applied to:
packages/sync/src/utils/directories.unit.test.tspackages/sync/src/output/clean-deleted-files.unit.test.ts
`**/*.unit.test.{ts,tsx}`: Unit tests are colocated with source files using `.unit.test.ts` suffix
**/*.unit.test.{ts,tsx}: Unit tests are colocated with source files using.unit.test.tssuffix
📄 Source: CodeRabbit Inference Engine (.cursor/rules/tests.mdc)
List of files the instruction was applied to:
packages/sync/src/utils/directories.unit.test.tspackages/sync/src/output/clean-deleted-files.unit.test.ts
`**/*.test.{ts,tsx}`: For file system operations in tests, use memfs and mock 'node:fs' and 'node:fs/promises' with vi.mock
**/*.test.{ts,tsx}: For file system operations in tests, use memfs and mock 'node:fs' and 'node:fs/promises' with vi.mock
📄 Source: CodeRabbit Inference Engine (.cursor/rules/tests.mdc)
List of files the instruction was applied to:
packages/sync/src/utils/directories.unit.test.tspackages/sync/src/output/clean-deleted-files.unit.test.ts
`plugins/*/**/*.tsx`: In plugins, prefix all Tailwind classes with the plugin name (e.g., `auth-`, `storage-`)
plugins/*/**/*.tsx: In plugins, prefix all Tailwind classes with the plugin name (e.g.,auth-,storage-)
📄 Source: CodeRabbit Inference Engine (CLAUDE.md)
List of files the instruction was applied to:
plugins/plugin-auth/src/auth0/generators/react/auth0-pages/templates/routes/login.tsxplugins/plugin-storage/src/generators/react/upload-components/templates/src/components/file-input/file-input.tsxplugins/plugin-auth/src/auth0/generators/react/react-auth0/templates/src/app/auth-loaded-gate.tsx
`plugins/plugin-*/**/*.tsx`: All CSS classes used in `className` attributes with...
plugins/plugin-*/**/*.tsx: All CSS classes used inclassNameattributes within plugin components MUST be prefixed with the plugin name to avoid style conflicts.
When using utility functions likecn(), all CSS classes passed tocn()in plugin components MUST be prefixed with the plugin name.
📄 Source: CodeRabbit Inference Engine (plugins/CLAUDE.md)
List of files the instruction was applied to:
plugins/plugin-auth/src/auth0/generators/react/auth0-pages/templates/routes/login.tsxplugins/plugin-storage/src/generators/react/upload-components/templates/src/components/file-input/file-input.tsxplugins/plugin-auth/src/auth0/generators/react/react-auth0/templates/src/app/auth-loaded-gate.tsx
🧠 Learnings (64)
plugins/plugin-auth/src/auth0/generators/react/auth0-hooks/templates/src/hooks/use-current-user.ts (10)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : Node 16 module resolution - include file extensions in imports (`.js`)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : Include absolute paths in import statements via tsconfig paths (`@src/` is the alias for `src/`)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.{ts,tsx} : Prefer functional programming patterns
Learnt from: kingston
PR: halfdomelabs/baseplate#521
File: packages/react-generators/src/generators/admin/admin-crud-edit/admin-crud-edit.generator.ts:90-94
Timestamp: 2025-05-05T06:36:50.687Z
Learning: In this codebase, import paths can include `.ts` extensions, and the `resolveModuleSpecifier` function will handle them appropriately. There's no need to strip file extensions before passing paths to functions like `TsCodeUtils.importFragment`.
Learnt from: kingston
PR: halfdomelabs/baseplate#428
File: packages/project-builder-server/src/sync/index.ts:5-5
Timestamp: 2025-01-23T09:12:46.178Z
Learning: Avoid importing directly from 'dist' directories. Instead, expose functionality through the package's public API and import from the main package entry point.
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : If a particular interface or type is not exported, change the file so it is exported
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : Always use `.js` extensions in imports, even for TypeScript files
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.{unit,int}.test.ts : Always import vitest globals explicitly (describe, it, expect)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.{ts,tsx} : Use camelCase for variables and functions
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.{ts,tsx} : Extract repeated components into distinct functions or components where applicable
packages/project-builder-web/src/routes/apps/-components/new-app-dialog.tsx (2)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : TypeScript with strict type checking
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/ui-rules.mdc:0-0
Timestamp: 2025-06-30T11:52:33.318Z
Learning: Applies to *.{tsx},packages/project-builder-web/**,packages/ui-components/** : We use a rough analog of ShadCN components that can be imported from @baseplate-dev/ui-components
.changeset/hot-tires-check.md (5)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to .changeset/*.md : If you are adding a new feature or changing an existing feature, add a new Changeset in the `.changeset/` directory
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/ui-rules.mdc:0-0
Timestamp: 2025-06-30T11:52:33.318Z
Learning: Applies to *.{tsx},packages/project-builder-web/**,packages/ui-components/** : We use a rough analog of ShadCN components that can be imported from @baseplate-dev/ui-components
Learnt from: kingston
PR: halfdomelabs/baseplate#539
File: scripts/check-changesets.ts:70-79
Timestamp: 2025-05-08T12:56:11.723Z
Learning: In the check-changesets.ts script for monorepo validation, `npm pack ${pkg.name}@latest` is intentionally used to pack the most recently published version (not local changes) for comparison purposes to determine if changes require new changesets.
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.tsx : Use ShadCN-based components from `@baseplate-dev/ui-components` instead of creating custom ones
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to plugins/*/**/*.tsx : In plugins, prefix all Tailwind classes with the plugin name (e.g., `auth-`, `storage-`)
packages/react-generators/src/generators/admin/admin-crud-list/templates/Table.tsx (2)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.tsx : Use ShadCN-based components from `@baseplate-dev/ui-components` instead of creating custom ones
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/ui-rules.mdc:0-0
Timestamp: 2025-06-30T11:52:33.318Z
Learning: Applies to *.{tsx},packages/project-builder-web/**,packages/ui-components/** : We use a rough analog of ShadCN components that can be imported from @baseplate-dev/ui-components
plugins/plugin-auth/src/auth0/generators/react/auth0-hooks/templates/src/hooks/use-session.ts (1)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : Prefer using nullish coalescing operator (`??`) instead of logical or (`||`)
packages/react-generators/src/generators/admin/admin-crud-list/extractor.json (5)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.{ts,tsx} : Use camelCase for variables and functions
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : Use camelCase for variables/functions, PascalCase for types/classes
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.{ts,tsx} : Extract repeated components into distinct functions or components where applicable
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.{ts,tsx} : Use PascalCase for types and classes
Learnt from: kingston
PR: halfdomelabs/baseplate#505
File: packages/create-project/tsconfig.json:6-6
Timestamp: 2025-04-21T06:32:22.476Z
Learning: Since TypeScript 4.1, baseUrl is not required for paths mapping in tsconfig.json. Removing baseUrl and using explicit relative paths with "./" prefix (e.g., changing "@src/*": ["src/*"] to "@src/*": ["./src/*"]) prevents bare path imports from node_modules while maintaining path alias functionality.
packages/react-generators/src/generators/auth/_providers/index.ts (13)
Learnt from: kingston
PR: halfdomelabs/baseplate#428
File: packages/project-builder-server/src/sync/index.ts:5-5
Timestamp: 2025-01-23T09:12:46.178Z
Learning: Avoid importing directly from 'dist' directories. Instead, expose functionality through the package's public API and import from the main package entry point.
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : If a particular interface or type is not exported, change the file so it is exported
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/index.{ts,tsx} : Prefer barrel exports e.g. `export * from './foo.js'` instead of individual named exports
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.{ts,tsx} : Extract repeated components into distinct functions or components where applicable
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : Node 16 module resolution - include file extensions in imports (`.js`)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : Always include return types on top-level functions including React components (`React.ReactElement`)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/ui-rules.mdc:0-0
Timestamp: 2025-06-30T11:52:33.318Z
Learning: Applies to *.{tsx},packages/project-builder-web/**,packages/ui-components/** : We use a rough analog of ShadCN components that can be imported from @baseplate-dev/ui-components
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : Include absolute paths in import statements via tsconfig paths (`@src/` is the alias for `src/`)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.{unit,int}.test.ts : Always import vitest globals explicitly (describe, it, expect)
Learnt from: kingston
PR: halfdomelabs/baseplate#571
File: packages/core-generators/src/renderers/extractor/plugins/typed-templates-file.ts:102-106
Timestamp: 2025-06-11T18:31:22.247Z
Learning: For `templateExtractorBarrelExportPlugin.addGeneratedBarrelExport`, the generated barrel exports are written into `generated/index.ts`, therefore the `moduleSpecifier` must be specified relative to that file (e.g., `./typed-templates.js`), not the project root.
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.tsx : Use ShadCN-based components from `@baseplate-dev/ui-components` instead of creating custom ones
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.tsx : Use icons from `react-icons/md` (Material Design icons); avoid using other icon libraries
Learnt from: kingston
PR: halfdomelabs/baseplate#544
File: packages/ui-components/src/components/Command/Command.tsx:16-31
Timestamp: 2025-05-12T08:29:52.819Z
Learning: In React 19, function components automatically receive refs as regular props, eliminating the need for React.forwardRef. This allows components to directly destructure and use the ref prop, simplifying component definitions while maintaining the same ref forwarding functionality.
packages/react-generators/src/generators/admin/admin-crud-queries/admin-crud-queries.generator.ts (5)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : Include absolute paths in import statements via tsconfig paths (`@src/` is the alias for `src/`)
Learnt from: kingston
PR: halfdomelabs/baseplate#521
File: packages/react-generators/src/generators/admin/admin-components/admin-components.generator.ts:55-61
Timestamp: 2025-05-05T06:35:13.300Z
Learning: In generators, paths should be merged with forward slashes (/) only since JavaScript generated files use POSIX style separators. The system handles conversion to Windows style separators at later stages when writing out files.
Learnt from: kingston
PR: halfdomelabs/baseplate#505
File: packages/create-project/tsconfig.json:6-6
Timestamp: 2025-04-21T06:32:22.476Z
Learning: Since TypeScript 4.1, baseUrl is not required for paths mapping when using explicit relative paths (with "./"). Removing baseUrl from tsconfig.json while updating paths to use relative paths (e.g., changing "@src/*": ["src/*"] to "@src/*": ["./src/*"]) prevents bare path imports from node_modules while maintaining path alias functionality.
Learnt from: kingston
PR: halfdomelabs/baseplate#505
File: packages/create-project/tsconfig.json:6-6
Timestamp: 2025-04-21T06:32:22.476Z
Learning: Since TypeScript 4.1, baseUrl is not required for paths mapping in tsconfig.json. Removing baseUrl and using explicit relative paths with "./" prefix (e.g., changing "@src/*": ["src/*"] to "@src/*": ["./src/*"]) prevents bare path imports from node_modules while maintaining path alias functionality.
Learnt from: kingston
PR: halfdomelabs/baseplate#571
File: packages/core-generators/src/renderers/extractor/plugins/typed-templates-file.ts:102-106
Timestamp: 2025-06-11T18:31:22.247Z
Learning: For `templateExtractorBarrelExportPlugin.addGeneratedBarrelExport`, the generated barrel exports are written into `generated/index.ts`, therefore the `moduleSpecifier` must be specified relative to that file (e.g., `./typed-templates.js`), not the project root.
plugins/plugin-storage/src/generators/react/upload-components/extractor.json (17)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.{ts,tsx} : Use camelCase for variables and functions
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.{ts,tsx} : Extract repeated components into distinct functions or components where applicable
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.{ts,tsx} : Use PascalCase for types and classes
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : If a particular interface or type is not exported, change the file so it is exported
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : Use camelCase for variables/functions, PascalCase for types/classes
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/* : Use kebab-case for file names
Learnt from: kingston
PR: halfdomelabs/baseplate#505
File: packages/create-project/tsconfig.json:6-6
Timestamp: 2025-04-21T06:32:22.476Z
Learning: Since TypeScript 4.1, baseUrl is not required for paths mapping in tsconfig.json. Removing baseUrl and using explicit relative paths with "./" prefix (e.g., changing "@src/*": ["src/*"] to "@src/*": ["./src/*"]) prevents bare path imports from node_modules while maintaining path alias functionality.
Learnt from: kingston
PR: halfdomelabs/baseplate#505
File: packages/create-project/tsconfig.json:6-6
Timestamp: 2025-04-21T06:32:22.476Z
Learning: Since TypeScript 4.1, baseUrl is not required for paths mapping when using explicit relative paths (with "./"). Removing baseUrl from tsconfig.json while updating paths to use relative paths (e.g., changing "@src/*": ["src/*"] to "@src/*": ["./src/*"]) prevents bare path imports from node_modules while maintaining path alias functionality.
Learnt from: kingston
PR: halfdomelabs/baseplate#571
File: packages/core-generators/src/renderers/extractor/plugins/typed-templates-file.ts:102-106
Timestamp: 2025-06-11T18:31:22.247Z
Learning: For `templateExtractorBarrelExportPlugin.addGeneratedBarrelExport`, the generated barrel exports are written into `generated/index.ts`, therefore the `moduleSpecifier` must be specified relative to that file (e.g., `./typed-templates.js`), not the project root.
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.{ts,tsx} : Prefer functional programming patterns
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/ui-rules.mdc:0-0
Timestamp: 2025-06-30T11:52:33.318Z
Learning: Applies to *.{tsx},packages/project-builder-web/**,packages/ui-components/** : We use a rough analog of ShadCN components that can be imported from @baseplate-dev/ui-components
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : Include absolute paths in import statements via tsconfig paths (`@src/` is the alias for `src/`)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.tsx : Use ShadCN-based components from `@baseplate-dev/ui-components` instead of creating custom ones
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : Node 16 module resolution - include file extensions in imports (`.js`)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : Always use `.js` extensions in imports, even for TypeScript files
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/tests.mdc:0-0
Timestamp: 2025-06-30T11:52:28.745Z
Learning: Applies to **/*.unit.test.{ts,tsx} : Unit tests are colocated with source files using `.unit.test.ts` suffix
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to plugins/*/**/*.tsx : In plugins, prefix all Tailwind classes with the plugin name (e.g., `auth-`, `storage-`)
plugins/plugin-auth/src/auth0/generators/react/auth0-hooks/templates/src/hooks/use-required-user-id.ts (5)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : Node 16 module resolution - include file extensions in imports (`.js`)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.{unit,int}.test.ts : Always import vitest globals explicitly (describe, it, expect)
Learnt from: kingston
PR: halfdomelabs/baseplate#505
File: packages/create-project/tsconfig.json:6-6
Timestamp: 2025-04-21T06:32:22.476Z
Learning: Since TypeScript 4.1, baseUrl is not required for paths mapping in tsconfig.json. Removing baseUrl and using explicit relative paths with "./" prefix (e.g., changing "@src/*": ["src/*"] to "@src/*": ["./src/*"]) prevents bare path imports from node_modules while maintaining path alias functionality.
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : If a particular interface or type is not exported, change the file so it is exported
Learnt from: kingston
PR: halfdomelabs/baseplate#505
File: packages/create-project/tsconfig.json:6-6
Timestamp: 2025-04-21T06:32:22.476Z
Learning: Since TypeScript 4.1, baseUrl is not required for paths mapping when using explicit relative paths (with "./"). Removing baseUrl from tsconfig.json while updating paths to use relative paths (e.g., changing "@src/*": ["src/*"] to "@src/*": ["./src/*"]) prevents bare path imports from node_modules while maintaining path alias functionality.
.vscode/settings.json (13)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/ui-rules.mdc:0-0
Timestamp: 2025-06-30T11:52:33.318Z
Learning: Applies to *.{tsx},packages/project-builder-web/**,packages/ui-components/** : We use a rough analog of ShadCN components that can be imported from @baseplate-dev/ui-components
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : Include absolute paths in import statements via tsconfig paths (`@src/` is the alias for `src/`)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : If a particular interface or type is not exported, change the file so it is exported
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : Node 16 module resolution - include file extensions in imports (`.js`)
Learnt from: kingston
PR: halfdomelabs/baseplate#505
File: packages/create-project/tsconfig.json:6-6
Timestamp: 2025-04-21T06:32:22.476Z
Learning: Since TypeScript 4.1, baseUrl is not required for paths mapping in tsconfig.json. Removing baseUrl and using explicit relative paths with "./" prefix (e.g., changing "@src/*": ["src/*"] to "@src/*": ["./src/*"]) prevents bare path imports from node_modules while maintaining path alias functionality.
Learnt from: kingston
PR: halfdomelabs/baseplate#505
File: packages/create-project/tsconfig.json:6-6
Timestamp: 2025-04-21T06:32:22.476Z
Learning: Since TypeScript 4.1, baseUrl is not required for paths mapping when using explicit relative paths (with "./"). Removing baseUrl from tsconfig.json while updating paths to use relative paths (e.g., changing "@src/*": ["src/*"] to "@src/*": ["./src/*"]) prevents bare path imports from node_modules while maintaining path alias functionality.
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : TypeScript with strict type checking
Learnt from: kingston
PR: halfdomelabs/baseplate#562
File: plugins/plugin-auth/package.json:32-36
Timestamp: 2025-06-03T09:11:29.651Z
Learning: With TypeScript project references, TypeScript compilation is watched from the root level using "watch:tsc:root" script, so individual packages no longer need to include their "tsc:watch" scripts in their local "watch" commands. The local "tsc:watch" scripts are renamed from "watch:tsc" but are not meant to be run as part of the package's watch command since TypeScript watching is handled centrally at the workspace root.
Learnt from: kingston
PR: halfdomelabs/baseplate#571
File: packages/core-generators/src/renderers/extractor/plugins/typed-templates-file.ts:102-106
Timestamp: 2025-06-11T18:31:22.247Z
Learning: For `templateExtractorBarrelExportPlugin.addGeneratedBarrelExport`, the generated barrel exports are written into `generated/index.ts`, therefore the `moduleSpecifier` must be specified relative to that file (e.g., `./typed-templates.js`), not the project root.
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.tsx : Use ShadCN-based components from `@baseplate-dev/ui-components` instead of creating custom ones
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.{ts,tsx} : Use TypeScript with strict type checking enabled
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/tests.mdc:0-0
Timestamp: 2025-06-30T11:52:28.745Z
Learning: Applies to **/*.unit.test.{ts,tsx} : Unit tests are colocated with source files using `.unit.test.ts` suffix
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/tests.mdc:0-0
Timestamp: 2025-06-30T11:52:28.745Z
Learning: Applies to **/*.test.{ts,tsx} : For file system operations in tests, use memfs and mock 'node:fs' and 'node:fs/promises' with vi.mock
packages/react-generators/src/generators/auth/_tasks/auth-context.ts (2)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.{ts,tsx} : Extract repeated components into distinct functions or components where applicable
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/ui-rules.mdc:0-0
Timestamp: 2025-06-30T11:52:33.318Z
Learning: Applies to *.{tsx},packages/project-builder-web/**,packages/ui-components/** : We use a rough analog of ShadCN components that can be imported from @baseplate-dev/ui-components
packages/react-generators/src/generators/admin/admin-crud-edit/templates/create.tsx (6)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : If a particular interface or type is not exported, change the file so it is exported
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : Include absolute paths in import statements via tsconfig paths (`@src/` is the alias for `src/`)
Learnt from: kingston
PR: halfdomelabs/baseplate#571
File: packages/core-generators/src/renderers/extractor/plugins/typed-templates-file.ts:102-106
Timestamp: 2025-06-11T18:31:22.247Z
Learning: For `templateExtractorBarrelExportPlugin.addGeneratedBarrelExport`, the generated barrel exports are written into `generated/index.ts`, therefore the `moduleSpecifier` must be specified relative to that file (e.g., `./typed-templates.js`), not the project root.
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.{ts,tsx} : Extract repeated components into distinct functions or components where applicable
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.{ts,tsx} : Prefer functional programming patterns
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.{ts,tsx} : Use camelCase for variables and functions
packages/react-generators/src/generators/admin/admin-home/templates/routes/index.tsx (4)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : Include absolute paths in import statements via tsconfig paths (`@src/` is the alias for `src/`)
Learnt from: kingston
PR: halfdomelabs/baseplate#505
File: packages/create-project/tsconfig.json:6-6
Timestamp: 2025-04-21T06:32:22.476Z
Learning: Since TypeScript 4.1, baseUrl is not required for paths mapping in tsconfig.json. Removing baseUrl and using explicit relative paths with "./" prefix (e.g., changing "@src/*": ["src/*"] to "@src/*": ["./src/*"]) prevents bare path imports from node_modules while maintaining path alias functionality.
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.tsx : Use ShadCN-based components from `@baseplate-dev/ui-components` instead of creating custom ones
Learnt from: kingston
PR: halfdomelabs/baseplate#505
File: packages/create-project/tsconfig.json:6-6
Timestamp: 2025-04-21T06:32:22.476Z
Learning: Since TypeScript 4.1, baseUrl is not required for paths mapping when using explicit relative paths (with "./"). Removing baseUrl from tsconfig.json while updating paths to use relative paths (e.g., changing "@src/*": ["src/*"] to "@src/*": ["./src/*"]) prevents bare path imports from node_modules while maintaining path alias functionality.
packages/react-generators/src/generators/admin/admin-bull-board/extractor.json (6)
Learnt from: kingston
PR: halfdomelabs/baseplate#571
File: packages/core-generators/src/renderers/extractor/plugins/typed-templates-file.ts:102-106
Timestamp: 2025-06-11T18:31:22.247Z
Learning: For `templateExtractorBarrelExportPlugin.addGeneratedBarrelExport`, the generated barrel exports are written into `generated/index.ts`, therefore the `moduleSpecifier` must be specified relative to that file (e.g., `./typed-templates.js`), not the project root.
Learnt from: kingston
PR: halfdomelabs/baseplate#521
File: packages/react-generators/src/generators/admin/admin-crud-list/admin-crud-list.generator.ts:163-166
Timestamp: 2025-05-05T06:37:51.001Z
Learning: For certain templates in the codebase, the `importMapProviders` property is not explicitly required as the template extractor will automatically determine and infer the necessary import map providers.
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.{ts,tsx} : Use camelCase for variables and functions
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : Include absolute paths in import statements via tsconfig paths (`@src/` is the alias for `src/`)
Learnt from: kingston
PR: halfdomelabs/baseplate#505
File: packages/create-project/tsconfig.json:6-6
Timestamp: 2025-04-21T06:32:22.476Z
Learning: Since TypeScript 4.1, baseUrl is not required for paths mapping in tsconfig.json. Removing baseUrl and using explicit relative paths with "./" prefix (e.g., changing "@src/*": ["src/*"] to "@src/*": ["./src/*"]) prevents bare path imports from node_modules while maintaining path alias functionality.
Learnt from: kingston
PR: halfdomelabs/baseplate#505
File: packages/create-project/tsconfig.json:6-6
Timestamp: 2025-04-21T06:32:22.476Z
Learning: Since TypeScript 4.1, baseUrl is not required for paths mapping when using explicit relative paths (with "./"). Removing baseUrl from tsconfig.json while updating paths to use relative paths (e.g., changing "@src/*": ["src/*"] to "@src/*": ["./src/*"]) prevents bare path imports from node_modules while maintaining path alias functionality.
packages/react-generators/src/generators/apollo/react-apollo/templates/src/app/app-apollo-provider.tsx (5)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : If a particular interface or type is not exported, change the file so it is exported
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : Always include return types on top-level functions including React components (`React.ReactElement`)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/index.{ts,tsx} : Prefer barrel exports e.g. `export * from './foo.js'` instead of individual named exports
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.{ts,tsx} : Extract repeated components into distinct functions or components where applicable
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.{ts,tsx} : Use camelCase for variables and functions
packages/react-generators/src/generators/apollo/react-apollo/extractor.json (16)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.{ts,tsx} : Use camelCase for variables and functions
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.{ts,tsx} : Use PascalCase for types and classes
Learnt from: kingston
PR: halfdomelabs/baseplate#521
File: packages/react-generators/src/generators/admin/admin-crud-list/admin-crud-list.generator.ts:163-166
Timestamp: 2025-05-05T06:37:51.001Z
Learning: For certain templates in the codebase, the `importMapProviders` property is not explicitly required as the template extractor will automatically determine and infer the necessary import map providers.
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.{ts,tsx} : Extract repeated components into distinct functions or components where applicable
Learnt from: kingston
PR: halfdomelabs/baseplate#571
File: packages/core-generators/src/renderers/extractor/plugins/typed-templates-file.ts:102-106
Timestamp: 2025-06-11T18:31:22.247Z
Learning: For `templateExtractorBarrelExportPlugin.addGeneratedBarrelExport`, the generated barrel exports are written into `generated/index.ts`, therefore the `moduleSpecifier` must be specified relative to that file (e.g., `./typed-templates.js`), not the project root.
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : Use camelCase for variables/functions, PascalCase for types/classes
Learnt from: kingston
PR: halfdomelabs/baseplate#521
File: plugins/baseplate-plugin-storage/src/generators/react/upload-components/upload-components.generator.ts:108-112
Timestamp: 2025-05-05T06:37:43.106Z
Learning: The template extractor in the baseplate codebase can automatically infer and determine the necessary import map providers for certain templates, making explicit specification of importMapProviders unnecessary in those cases.
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/ui-rules.mdc:0-0
Timestamp: 2025-06-30T11:52:33.318Z
Learning: Applies to *.{tsx},packages/project-builder-web/**,packages/ui-components/** : We use a rough analog of ShadCN components that can be imported from @baseplate-dev/ui-components
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : If a particular interface or type is not exported, change the file so it is exported
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.tsx : Use ShadCN-based components from `@baseplate-dev/ui-components` instead of creating custom ones
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : Include absolute paths in import statements via tsconfig paths (`@src/` is the alias for `src/`)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to src/tests/**/*.{ts,tsx} : Test helpers are located in `src/tests/` directory
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/tests.mdc:0-0
Timestamp: 2025-06-30T11:52:28.745Z
Learning: Applies to src/tests/**/*.{ts,tsx} : Test helpers are located in `src/tests/` directory
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/tests.mdc:0-0
Timestamp: 2025-06-30T11:52:28.745Z
Learning: Applies to src/__mocks__/**/*.{ts,tsx} : Manual mocks are in `src/__mocks__/` directory
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to src/__mocks__/**/*.{ts,tsx} : Manual mocks are in `src/__mocks__/` directory
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to plugins/*/**/*.tsx : In plugins, prefix all Tailwind classes with the plugin name (e.g., `auth-`, `storage-`)
plugins/plugin-auth/src/auth0/generators/react/auth0-hooks/extractor.json (19)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.{ts,tsx} : Use camelCase for variables and functions
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.{ts,tsx} : Use PascalCase for types and classes
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.{ts,tsx} : Extract repeated components into distinct functions or components where applicable
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : Use camelCase for variables/functions, PascalCase for types/classes
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to plugins/*/**/*.tsx : In plugins, prefix all Tailwind classes with the plugin name (e.g., `auth-`, `storage-`)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/* : Use kebab-case for file names
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : If a particular interface or type is not exported, change the file so it is exported
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.{ts,tsx} : Prefer functional programming patterns
Learnt from: kingston
PR: halfdomelabs/baseplate#571
File: packages/core-generators/src/renderers/extractor/plugins/typed-templates-file.ts:102-106
Timestamp: 2025-06-11T18:31:22.247Z
Learning: For `templateExtractorBarrelExportPlugin.addGeneratedBarrelExport`, the generated barrel exports are written into `generated/index.ts`, therefore the `moduleSpecifier` must be specified relative to that file (e.g., `./typed-templates.js`), not the project root.
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : Include absolute paths in import statements via tsconfig paths (`@src/` is the alias for `src/`)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : TypeScript with strict type checking
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/tests.mdc:0-0
Timestamp: 2025-06-30T11:52:28.745Z
Learning: Applies to src/__mocks__/**/*.{ts,tsx} : Manual mocks are in `src/__mocks__/` directory
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to src/__mocks__/**/*.{ts,tsx} : Manual mocks are in `src/__mocks__/` directory
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.{ts,tsx} : Use TypeScript with strict type checking enabled
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/ui-rules.mdc:0-0
Timestamp: 2025-06-30T11:52:33.318Z
Learning: Applies to *.{tsx},packages/project-builder-web/**,packages/ui-components/** : We use a rough analog of ShadCN components that can be imported from @baseplate-dev/ui-components
Learnt from: kingston
PR: halfdomelabs/baseplate#505
File: packages/create-project/tsconfig.json:6-6
Timestamp: 2025-04-21T06:32:22.476Z
Learning: Since TypeScript 4.1, baseUrl is not required for paths mapping in tsconfig.json. Removing baseUrl and using explicit relative paths with "./" prefix (e.g., changing "@src/*": ["src/*"] to "@src/*": ["./src/*"]) prevents bare path imports from node_modules while maintaining path alias functionality.
Learnt from: kingston
PR: halfdomelabs/baseplate#505
File: packages/create-project/tsconfig.json:6-6
Timestamp: 2025-04-21T06:32:22.476Z
Learning: Since TypeScript 4.1, baseUrl is not required for paths mapping when using explicit relative paths (with "./"). Removing baseUrl from tsconfig.json while updating paths to use relative paths (e.g., changing "@src/*": ["src/*"] to "@src/*": ["./src/*"]) prevents bare path imports from node_modules while maintaining path alias functionality.
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.unit.test.ts : Unit tests use `.unit.test.ts` suffix
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/tests.mdc:0-0
Timestamp: 2025-06-30T11:52:28.745Z
Learning: Applies to **/*.unit.test.{ts,tsx} : Unit tests are colocated with source files using `.unit.test.ts` suffix
packages/react-generators/src/generators/admin/admin-crud-edit/templates/edit-form.tsx (1)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.tsx : Use ShadCN-based components from `@baseplate-dev/ui-components` instead of creating custom ones
packages/project-builder-server/src/compiler/admin/index.ts (4)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : Include absolute paths in import statements via tsconfig paths (`@src/` is the alias for `src/`)
Learnt from: kingston
PR: halfdomelabs/baseplate#505
File: packages/create-project/tsconfig.json:6-6
Timestamp: 2025-04-21T06:32:22.476Z
Learning: Since TypeScript 4.1, baseUrl is not required for paths mapping when using explicit relative paths (with "./"). Removing baseUrl from tsconfig.json while updating paths to use relative paths (e.g., changing "@src/*": ["src/*"] to "@src/*": ["./src/*"]) prevents bare path imports from node_modules while maintaining path alias functionality.
Learnt from: kingston
PR: halfdomelabs/baseplate#505
File: packages/create-project/tsconfig.json:6-6
Timestamp: 2025-04-21T06:32:22.476Z
Learning: Since TypeScript 4.1, baseUrl is not required for paths mapping in tsconfig.json. Removing baseUrl and using explicit relative paths with "./" prefix (e.g., changing "@src/*": ["src/*"] to "@src/*": ["./src/*"]) prevents bare path imports from node_modules while maintaining path alias functionality.
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/ui-rules.mdc:0-0
Timestamp: 2025-06-30T11:52:33.318Z
Learning: Applies to *.{tsx},packages/project-builder-web/**,packages/ui-components/** : We use a rough analog of ShadCN components that can be imported from @baseplate-dev/ui-components
packages/react-generators/src/generators/auth/_tasks/index.ts (10)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : If a particular interface or type is not exported, change the file so it is exported
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/index.{ts,tsx} : Prefer barrel exports e.g. `export * from './foo.js'` instead of individual named exports
Learnt from: kingston
PR: halfdomelabs/baseplate#428
File: packages/project-builder-server/src/sync/index.ts:5-5
Timestamp: 2025-01-23T09:12:46.178Z
Learning: Avoid importing directly from 'dist' directories. Instead, expose functionality through the package's public API and import from the main package entry point.
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.{ts,tsx} : Extract repeated components into distinct functions or components where applicable
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : Include absolute paths in import statements via tsconfig paths (`@src/` is the alias for `src/`)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/ui-rules.mdc:0-0
Timestamp: 2025-06-30T11:52:33.318Z
Learning: Applies to *.{tsx},packages/project-builder-web/**,packages/ui-components/** : We use a rough analog of ShadCN components that can be imported from @baseplate-dev/ui-components
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : Node 16 module resolution - include file extensions in imports (`.js`)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.{unit,int}.test.ts : Always import vitest globals explicitly (describe, it, expect)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : Always include return types on top-level functions including React components (`React.ReactElement`)
Learnt from: kingston
PR: halfdomelabs/baseplate#571
File: packages/core-generators/src/renderers/extractor/plugins/typed-templates-file.ts:102-106
Timestamp: 2025-06-11T18:31:22.247Z
Learning: For `templateExtractorBarrelExportPlugin.addGeneratedBarrelExport`, the generated barrel exports are written into `generated/index.ts`, therefore the `moduleSpecifier` must be specified relative to that file (e.g., `./typed-templates.js`), not the project root.
packages/react-generators/src/providers/providers.json (7)
Learnt from: kingston
PR: halfdomelabs/baseplate#505
File: packages/create-project/tsconfig.json:6-6
Timestamp: 2025-04-21T06:32:22.476Z
Learning: Since TypeScript 4.1, baseUrl is not required for paths mapping when using explicit relative paths (with "./"). Removing baseUrl from tsconfig.json while updating paths to use relative paths (e.g., changing "@src/*": ["src/*"] to "@src/*": ["./src/*"]) prevents bare path imports from node_modules while maintaining path alias functionality.
Learnt from: kingston
PR: halfdomelabs/baseplate#505
File: packages/create-project/tsconfig.json:6-6
Timestamp: 2025-04-21T06:32:22.476Z
Learning: Since TypeScript 4.1, baseUrl is not required for paths mapping in tsconfig.json. Removing baseUrl and using explicit relative paths with "./" prefix (e.g., changing "@src/*": ["src/*"] to "@src/*": ["./src/*"]) prevents bare path imports from node_modules while maintaining path alias functionality.
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : Include absolute paths in import statements via tsconfig paths (`@src/` is the alias for `src/`)
Learnt from: kingston
PR: halfdomelabs/baseplate#521
File: packages/react-generators/src/generators/admin/admin-components/admin-components.generator.ts:55-61
Timestamp: 2025-05-05T06:35:13.300Z
Learning: In generators, paths should be merged with forward slashes (/) only since JavaScript generated files use POSIX style separators. The system handles conversion to Windows style separators at later stages when writing out files.
Learnt from: kingston
PR: halfdomelabs/baseplate#521
File: packages/react-generators/src/generators/admin/admin-crud-list/admin-crud-list.generator.ts:163-166
Timestamp: 2025-05-05T06:37:51.001Z
Learning: For certain templates in the codebase, the `importMapProviders` property is not explicitly required as the template extractor will automatically determine and infer the necessary import map providers.
Learnt from: kingston
PR: halfdomelabs/baseplate#571
File: packages/core-generators/src/renderers/extractor/plugins/typed-templates-file.ts:102-106
Timestamp: 2025-06-11T18:31:22.247Z
Learning: For `templateExtractorBarrelExportPlugin.addGeneratedBarrelExport`, the generated barrel exports are written into `generated/index.ts`, therefore the `moduleSpecifier` must be specified relative to that file (e.g., `./typed-templates.js`), not the project root.
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/ui-rules.mdc:0-0
Timestamp: 2025-06-30T11:52:33.318Z
Learning: Applies to *.{tsx},packages/project-builder-web/**,packages/ui-components/** : We use a rough analog of ShadCN components that can be imported from @baseplate-dev/ui-components
.changeset/two-rockets-tell.md (2)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/ui-rules.mdc:0-0
Timestamp: 2025-06-30T11:52:33.318Z
Learning: Applies to *.{tsx},packages/project-builder-web/**,packages/ui-components/** : We use a rough analog of ShadCN components that can be imported from @baseplate-dev/ui-components
Learnt from: kingston
PR: halfdomelabs/baseplate#539
File: scripts/check-changesets.ts:70-79
Timestamp: 2025-05-08T12:56:11.723Z
Learning: In the check-changesets.ts script for monorepo validation, `npm pack ${pkg.name}@latest` is intentionally used to pack the most recently published version (not local changes) for comparison purposes to determine if changes require new changesets.
plugins/plugin-auth/src/auth0/generators/react/auth0-pages/index.ts (12)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/index.{ts,tsx} : Prefer barrel exports e.g. `export * from './foo.js'` instead of individual named exports
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : If a particular interface or type is not exported, change the file so it is exported
Learnt from: kingston
PR: halfdomelabs/baseplate#571
File: packages/core-generators/src/renderers/extractor/plugins/typed-templates-file.ts:102-106
Timestamp: 2025-06-11T18:31:22.247Z
Learning: For `templateExtractorBarrelExportPlugin.addGeneratedBarrelExport`, the generated barrel exports are written into `generated/index.ts`, therefore the `moduleSpecifier` must be specified relative to that file (e.g., `./typed-templates.js`), not the project root.
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.{ts,tsx} : Extract repeated components into distinct functions or components where applicable
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to plugins/*/**/*.tsx : In plugins, prefix all Tailwind classes with the plugin name (e.g., `auth-`, `storage-`)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/ui-rules.mdc:0-0
Timestamp: 2025-06-30T11:52:33.318Z
Learning: Applies to *.{tsx},packages/project-builder-web/**,packages/ui-components/** : We use a rough analog of ShadCN components that can be imported from @baseplate-dev/ui-components
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : Node 16 module resolution - include file extensions in imports (`.js`)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : Include absolute paths in import statements via tsconfig paths (`@src/` is the alias for `src/`)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.{unit,int}.test.ts : Always import vitest globals explicitly (describe, it, expect)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : Always include return types on top-level functions including React components (`React.ReactElement`)
Learnt from: kingston
PR: halfdomelabs/baseplate#428
File: packages/project-builder-server/src/sync/index.ts:5-5
Timestamp: 2025-01-23T09:12:46.178Z
Learning: Avoid importing directly from 'dist' directories. Instead, expose functionality through the package's public API and import from the main package entry point.
Learnt from: kingston
PR: halfdomelabs/baseplate#539
File: scripts/check-changesets.ts:10-13
Timestamp: 2025-05-08T12:56:59.222Z
Learning: Node.js 22.0.0 and later versions include both `glob` and `globSync` functionality in the core `node:fs` module, making `import { promises as fs, globSync } from 'node:fs';` valid syntax.
packages/react-generators/src/generators/admin/admin-crud-embedded-form/templates/EmbeddedForm.tsx (6)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.tsx : Use ShadCN-based components from `@baseplate-dev/ui-components` instead of creating custom ones
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.{ts,tsx} : Prefer functional programming patterns
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.tsx : Use icons from `react-icons/md` (Material Design icons); avoid using other icon libraries
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : Use console.info/warn/error instead of console.log
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : Always include return types on top-level functions including React components (`React.ReactElement`)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/ui-rules.mdc:0-0
Timestamp: 2025-06-30T11:52:33.318Z
Learning: Applies to *.{tsx},packages/project-builder-web/**,packages/ui-components/** : We use a rough analog of ShadCN components that can be imported from @baseplate-dev/ui-components
packages/react-generators/src/generators/auth/_providers/react-auth.ts (1)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : Always include return types on top-level functions including React components (`React.ReactElement`)
packages/react-generators/src/generators/admin/admin-home/extractor.json (16)
Learnt from: kingston
PR: halfdomelabs/baseplate#521
File: plugins/baseplate-plugin-storage/src/generators/react/upload-components/upload-components.generator.ts:108-112
Timestamp: 2025-05-05T06:37:43.106Z
Learning: The template extractor in the baseplate codebase can automatically infer and determine the necessary import map providers for certain templates, making explicit specification of importMapProviders unnecessary in those cases.
Learnt from: kingston
PR: halfdomelabs/baseplate#521
File: packages/react-generators/src/generators/admin/admin-crud-list/admin-crud-list.generator.ts:163-166
Timestamp: 2025-05-05T06:37:51.001Z
Learning: For certain templates in the codebase, the `importMapProviders` property is not explicitly required as the template extractor will automatically determine and infer the necessary import map providers.
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/ui-rules.mdc:0-0
Timestamp: 2025-06-30T11:52:33.318Z
Learning: Applies to *.{tsx},packages/project-builder-web/**,packages/ui-components/** : We use a rough analog of ShadCN components that can be imported from @baseplate-dev/ui-components
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.{ts,tsx} : Extract repeated components into distinct functions or components where applicable
Learnt from: kingston
PR: halfdomelabs/baseplate#571
File: packages/core-generators/src/renderers/extractor/plugins/typed-templates-file.ts:102-106
Timestamp: 2025-06-11T18:31:22.247Z
Learning: For `templateExtractorBarrelExportPlugin.addGeneratedBarrelExport`, the generated barrel exports are written into `generated/index.ts`, therefore the `moduleSpecifier` must be specified relative to that file (e.g., `./typed-templates.js`), not the project root.
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.tsx : Use ShadCN-based components from `@baseplate-dev/ui-components` instead of creating custom ones
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : If a particular interface or type is not exported, change the file so it is exported
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : Include absolute paths in import statements via tsconfig paths (`@src/` is the alias for `src/`)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : TypeScript with strict type checking
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/index.{ts,tsx} : Prefer barrel exports e.g. `export * from './foo.js'` instead of individual named exports
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to plugins/*/**/*.tsx : In plugins, prefix all Tailwind classes with the plugin name (e.g., `auth-`, `storage-`)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : Always include return types on top-level functions including React components (`React.ReactElement`)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.{ts,tsx} : Use camelCase for variables and functions
Learnt from: kingston
PR: halfdomelabs/baseplate#505
File: packages/create-project/tsconfig.json:6-6
Timestamp: 2025-04-21T06:32:22.476Z
Learning: Since TypeScript 4.1, baseUrl is not required for paths mapping in tsconfig.json. Removing baseUrl and using explicit relative paths with "./" prefix (e.g., changing "@src/*": ["src/*"] to "@src/*": ["./src/*"]) prevents bare path imports from node_modules while maintaining path alias functionality.
Learnt from: kingston
PR: halfdomelabs/baseplate#505
File: packages/create-project/tsconfig.json:6-6
Timestamp: 2025-04-21T06:32:22.476Z
Learning: Since TypeScript 4.1, baseUrl is not required for paths mapping when using explicit relative paths (with "./"). Removing baseUrl from tsconfig.json while updating paths to use relative paths (e.g., changing "@src/*": ["src/*"] to "@src/*": ["./src/*"]) prevents bare path imports from node_modules while maintaining path alias functionality.
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.{ts,tsx} : Prefer functional programming patterns
packages/react-generators/src/generators/admin/admin-home/index.ts (11)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : If a particular interface or type is not exported, change the file so it is exported
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.{ts,tsx} : Extract repeated components into distinct functions or components where applicable
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : Node 16 module resolution - include file extensions in imports (`.js`)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : Always include return types on top-level functions including React components (`React.ReactElement`)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/index.{ts,tsx} : Prefer barrel exports e.g. `export * from './foo.js'` instead of individual named exports
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/ui-rules.mdc:0-0
Timestamp: 2025-06-30T11:52:33.318Z
Learning: Applies to *.{tsx},packages/project-builder-web/**,packages/ui-components/** : We use a rough analog of ShadCN components that can be imported from @baseplate-dev/ui-components
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : Include absolute paths in import statements via tsconfig paths (`@src/` is the alias for `src/`)
Learnt from: kingston
PR: halfdomelabs/baseplate#428
File: packages/project-builder-server/src/sync/index.ts:5-5
Timestamp: 2025-01-23T09:12:46.178Z
Learning: Avoid importing directly from 'dist' directories. Instead, expose functionality through the package's public API and import from the main package entry point.
Learnt from: kingston
PR: halfdomelabs/baseplate#571
File: packages/core-generators/src/renderers/extractor/plugins/typed-templates-file.ts:102-106
Timestamp: 2025-06-11T18:31:22.247Z
Learning: For `templateExtractorBarrelExportPlugin.addGeneratedBarrelExport`, the generated barrel exports are written into `generated/index.ts`, therefore the `moduleSpecifier` must be specified relative to that file (e.g., `./typed-templates.js`), not the project root.
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : Sort imports by group: external libs first, then local imports
Learnt from: kingston
PR: halfdomelabs/baseplate#521
File: packages/react-generators/src/generators/admin/admin-crud-list/admin-crud-list.generator.ts:163-166
Timestamp: 2025-05-05T06:37:51.001Z
Learning: For certain templates in the codebase, the `importMapProviders` property is not explicitly required as the template extractor will automatically determine and infer the necessary import map providers.
packages/react-generators/src/generators/auth/index.ts (14)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : If a particular interface or type is not exported, change the file so it is exported
Learnt from: kingston
PR: halfdomelabs/baseplate#428
File: packages/project-builder-server/src/sync/index.ts:5-5
Timestamp: 2025-01-23T09:12:46.178Z
Learning: Avoid importing directly from 'dist' directories. Instead, expose functionality through the package's public API and import from the main package entry point.
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/index.{ts,tsx} : Prefer barrel exports e.g. `export * from './foo.js'` instead of individual named exports
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : Node 16 module resolution - include file extensions in imports (`.js`)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : Include absolute paths in import statements via tsconfig paths (`@src/` is the alias for `src/`)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.{ts,tsx} : Extract repeated components into distinct functions or components where applicable
Learnt from: kingston
PR: halfdomelabs/baseplate#571
File: packages/core-generators/src/renderers/extractor/plugins/typed-templates-file.ts:102-106
Timestamp: 2025-06-11T18:31:22.247Z
Learning: For `templateExtractorBarrelExportPlugin.addGeneratedBarrelExport`, the generated barrel exports are written into `generated/index.ts`, therefore the `moduleSpecifier` must be specified relative to that file (e.g., `./typed-templates.js`), not the project root.
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.{unit,int}.test.ts : Always import vitest globals explicitly (describe, it, expect)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : Always include return types on top-level functions including React components (`React.ReactElement`)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/ui-rules.mdc:0-0
Timestamp: 2025-06-30T11:52:33.318Z
Learning: Applies to *.{tsx},packages/project-builder-web/**,packages/ui-components/** : We use a rough analog of ShadCN components that can be imported from @baseplate-dev/ui-components
Learnt from: kingston
PR: halfdomelabs/baseplate#539
File: scripts/check-changesets.ts:10-13
Timestamp: 2025-05-08T12:56:59.222Z
Learning: Node.js 22.0.0 and later versions include both `glob` and `globSync` functionality in the core `node:fs` module, making `import { promises as fs, globSync } from 'node:fs';` valid syntax.
Learnt from: kingston
PR: halfdomelabs/baseplate#521
File: packages/react-generators/src/generators/admin/admin-crud-list/admin-crud-list.generator.ts:163-166
Timestamp: 2025-05-05T06:37:51.001Z
Learning: For certain templates in the codebase, the `importMapProviders` property is not explicitly required as the template extractor will automatically determine and infer the necessary import map providers.
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.test.ts : Import test functions from 'vitest' (no globals)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to src/__mocks__/**/*.{ts,tsx} : Manual mocks are in `src/__mocks__/` directory
packages/sync/src/utils/directories.unit.test.ts (14)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.test.ts : Each test should be independent and not rely on others
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/tests.mdc:0-0
Timestamp: 2025-06-30T11:52:28.745Z
Learning: Applies to **/*.unit.test.{ts,tsx} : Unit tests are colocated with source files using `.unit.test.ts` suffix
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{unit,int}.test.ts : Collocate tests with source files using `.unit.test.ts` or `.int.test.ts` suffixes
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Colocate tests with implementation files, e.g. for `./utils.ts`, add the test to `./utils.unit.test.ts`
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/tests.mdc:0-0
Timestamp: 2025-06-30T11:52:28.745Z
Learning: Applies to src/tests/**/*.{ts,tsx} : Test helpers are located in `src/tests/` directory
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to src/tests/**/*.{ts,tsx} : Test helpers are located in `src/tests/` directory
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.test.ts : Structure tests with clear setup, execution, and verification phases (Arrange-Act-Assert)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.unit.test.ts : Unit tests use `.unit.test.ts` suffix
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.test.ts : Use descriptive test names that explain what is being tested
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.test.ts : Each test should verify one specific behavior
Learnt from: kingston
PR: halfdomelabs/baseplate#510
File: packages/project-builder-server/src/sync/conflict-file-monitor.test.ts:19-24
Timestamp: 2025-04-23T06:44:30.952Z
Learning: When testing file operations in this codebase, the pattern is to use Vitest automocks for 'node:fs' and 'node:fs/promises' (without explicit implementation replacement) while populating a virtual filesystem with vol.fromJSON() from memfs. File operations in tests are performed directly via vol.promises methods.
Learnt from: kingston
PR: halfdomelabs/baseplate#510
File: packages/project-builder-server/src/sync/conflict-file-monitor.test.ts:19-24
Timestamp: 2025-04-23T06:44:30.952Z
Learning: In this codebase, when testing file operations, Vitest's automocks for 'node:fs' and 'node:fs/promises' are used in conjunction with memfs, but without replacing the mock implementation explicitly in each test file. The virtual filesystem is populated using vol.fromJSON or similar methods, which works seamlessly with the automocks.
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/tests.mdc:0-0
Timestamp: 2025-06-30T11:52:28.745Z
Learning: Applies to **/*.test.{ts,tsx} : For file system operations in tests, use memfs and mock 'node:fs' and 'node:fs/promises' with vi.mock
Learnt from: kingston
PR: halfdomelabs/baseplate#510
File: packages/project-builder-server/src/sync/conflict-file-monitor.test.ts:19-24
Timestamp: 2025-04-23T06:44:30.952Z
Learning: In the project-builder-server test suite, Vitest automocks for 'node:fs' and 'node:fs/promises' are already configured to use memfs without needing explicit implementation replacement in each test file.
plugins/plugin-auth/src/auth0/generators/react/auth0-pages/auth0-pages.generator.ts (1)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/ui-rules.mdc:0-0
Timestamp: 2025-06-30T11:52:33.318Z
Learning: Applies to *.{tsx},packages/project-builder-web/**,packages/ui-components/** : We use a rough analog of ShadCN components that can be imported from @baseplate-dev/ui-components
packages/react-generators/src/generators/core/react-routes/react-routes.generator.ts (5)
Learnt from: kingston
PR: halfdomelabs/baseplate#521
File: packages/react-generators/src/generators/admin/admin-components/admin-components.generator.ts:55-61
Timestamp: 2025-05-05T06:35:13.300Z
Learning: In generators, paths should be merged with forward slashes (/) only since JavaScript generated files use POSIX style separators. The system handles conversion to Windows style separators at later stages when writing out files.
Learnt from: kingston
PR: halfdomelabs/baseplate#505
File: packages/create-project/tsconfig.json:6-6
Timestamp: 2025-04-21T06:32:22.476Z
Learning: Since TypeScript 4.1, baseUrl is not required for paths mapping when using explicit relative paths (with "./"). Removing baseUrl from tsconfig.json while updating paths to use relative paths (e.g., changing "@src/*": ["src/*"] to "@src/*": ["./src/*"]) prevents bare path imports from node_modules while maintaining path alias functionality.
Learnt from: kingston
PR: halfdomelabs/baseplate#505
File: packages/create-project/tsconfig.json:6-6
Timestamp: 2025-04-21T06:32:22.476Z
Learning: Since TypeScript 4.1, baseUrl is not required for paths mapping in tsconfig.json. Removing baseUrl and using explicit relative paths with "./" prefix (e.g., changing "@src/*": ["src/*"] to "@src/*": ["./src/*"]) prevents bare path imports from node_modules while maintaining path alias functionality.
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : Include absolute paths in import statements via tsconfig paths (`@src/` is the alias for `src/`)
Learnt from: kingston
PR: halfdomelabs/baseplate#571
File: packages/core-generators/src/renderers/extractor/plugins/typed-templates-file.ts:102-106
Timestamp: 2025-06-11T18:31:22.247Z
Learning: For `templateExtractorBarrelExportPlugin.addGeneratedBarrelExport`, the generated barrel exports are written into `generated/index.ts`, therefore the `moduleSpecifier` must be specified relative to that file (e.g., `./typed-templates.js`), not the project root.
packages/sync/src/output/clean-deleted-files.unit.test.ts (16)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/tests.mdc:0-0
Timestamp: 2025-06-30T11:52:28.745Z
Learning: Applies to **/*.test.{ts,tsx} : For file system operations in tests, use memfs and mock 'node:fs' and 'node:fs/promises' with vi.mock
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.test.ts : Always mock external API calls and file system operations in tests
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.{unit,int}.test.ts : Always import vitest globals explicitly (describe, it, expect)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/tests.mdc:0-0
Timestamp: 2025-06-30T11:52:28.745Z
Learning: Applies to **/*.unit.test.{ts,tsx} : Unit tests are colocated with source files using `.unit.test.ts` suffix
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.test.ts : Always reset mocks and clean up resources in afterEach
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.unit.test.ts : Unit tests use `.unit.test.ts` suffix
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{unit,int}.test.ts : Collocate tests with source files using `.unit.test.ts` or `.int.test.ts` suffixes
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.test.ts : Each test should be independent and not rely on others
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{unit,int}.test.ts : Unit tests use `.unit.test.ts` suffix, integration tests use `.int.test.ts`
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.test.ts : Leverage TypeScript for type-safe mocking in tests
Learnt from: kingston
PR: halfdomelabs/baseplate#510
File: packages/project-builder-server/src/sync/conflict-file-monitor.test.ts:19-24
Timestamp: 2025-04-23T06:44:30.952Z
Learning: When testing file operations in this codebase, the pattern is to use Vitest automocks for 'node:fs' and 'node:fs/promises' (without explicit implementation replacement) while populating a virtual filesystem with vol.fromJSON() from memfs. File operations in tests are performed directly via vol.promises methods.
Learnt from: kingston
PR: halfdomelabs/baseplate#510
File: packages/project-builder-server/src/sync/conflict-file-monitor.test.ts:19-24
Timestamp: 2025-04-23T06:44:30.952Z
Learning: In this codebase, when testing file operations, Vitest's automocks for 'node:fs' and 'node:fs/promises' are used in conjunction with memfs, but without replacing the mock implementation explicitly in each test file. The virtual filesystem is populated using vol.fromJSON or similar methods, which works seamlessly with the automocks.
Learnt from: kingston
PR: halfdomelabs/baseplate#510
File: packages/project-builder-server/src/sync/conflict-file-monitor.test.ts:19-24
Timestamp: 2025-04-23T06:44:30.952Z
Learning: In the project-builder-server test suite, Vitest automocks for 'node:fs' and 'node:fs/promises' are already configured to use memfs without needing explicit implementation replacement in each test file.
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.test.ts : Import test functions from 'vitest' (no globals)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.test.ts : Always import vitest globals explicitly (describe, it, expect)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/tests.mdc:0-0
Timestamp: 2025-06-30T11:52:28.745Z
Learning: Applies to src/tests/**/*.{ts,tsx} : Test helpers are located in `src/tests/` directory
packages/sync/src/output/clean-deleted-files.ts (1)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : If a particular interface or type is not exported, change the file so it is exported
plugins/plugin-auth/src/auth0/generators/react/auth0-pages/templates/routes/login.tsx (1)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to plugins/*/**/*.tsx : In plugins, prefix all Tailwind classes with the plugin name (e.g., `auth-`, `storage-`)
packages/react-generators/src/generators/auth/auth-identify/auth-identify.generator.ts (2)
Learnt from: kingston
PR: halfdomelabs/baseplate#521
File: packages/react-generators/src/generators/admin/admin-crud-list/admin-crud-list.generator.ts:163-166
Timestamp: 2025-05-05T06:37:51.001Z
Learning: For certain templates in the codebase, the `importMapProviders` property is not explicitly required as the template extractor will automatically determine and infer the necessary import map providers.
Learnt from: kingston
PR: halfdomelabs/baseplate#521
File: packages/react-generators/src/generators/admin/admin-crud-edit/admin-crud-edit.generator.ts:90-94
Timestamp: 2025-05-05T06:36:50.687Z
Learning: In this codebase, import paths can include `.ts` extensions, and the `resolveModuleSpecifier` function will handle them appropriately. There's no need to strip file extensions before passing paths to functions like `TsCodeUtils.importFragment`.
packages/react-generators/src/generators/admin/admin-crud-edit/admin-crud-edit.generator.ts (9)
Learnt from: kingston
PR: halfdomelabs/baseplate#521
File: packages/react-generators/src/generators/admin/admin-components/admin-components.generator.ts:55-61
Timestamp: 2025-05-05T06:35:13.300Z
Learning: In generators, paths should be merged with forward slashes (/) only since JavaScript generated files use POSIX style separators. The system handles conversion to Windows style separators at later stages when writing out files.
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : Include absolute paths in import statements via tsconfig paths (`@src/` is the alias for `src/`)
Learnt from: kingston
PR: halfdomelabs/baseplate#505
File: packages/create-project/tsconfig.json:6-6
Timestamp: 2025-04-21T06:32:22.476Z
Learning: Since TypeScript 4.1, baseUrl is not required for paths mapping when using explicit relative paths (with "./"). Removing baseUrl from tsconfig.json while updating paths to use relative paths (e.g., changing "@src/*": ["src/*"] to "@src/*": ["./src/*"]) prevents bare path imports from node_modules while maintaining path alias functionality.
Learnt from: kingston
PR: halfdomelabs/baseplate#505
File: packages/create-project/tsconfig.json:6-6
Timestamp: 2025-04-21T06:32:22.476Z
Learning: Since TypeScript 4.1, baseUrl is not required for paths mapping in tsconfig.json. Removing baseUrl and using explicit relative paths with "./" prefix (e.g., changing "@src/*": ["src/*"] to "@src/*": ["./src/*"]) prevents bare path imports from node_modules while maintaining path alias functionality.
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/ui-rules.mdc:0-0
Timestamp: 2025-06-30T11:52:33.318Z
Learning: Applies to *.{tsx},packages/project-builder-web/**,packages/ui-components/** : We use a rough analog of ShadCN components that can be imported from @baseplate-dev/ui-components
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.tsx : Use ShadCN-based components from `@baseplate-dev/ui-components` instead of creating custom ones
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.{ts,tsx} : Prefer functional programming patterns
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.{ts,tsx} : Extract repeated components into distinct functions or components where applicable
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.{ts,tsx} : Use camelCase for variables and functions
packages/core-generators/src/generators/node/eslint/react-rules.ts (15)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : TypeScript with strict type checking
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : Always include return types on top-level functions including React components (`React.ReactElement`)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.{ts,tsx} : Use TypeScript with strict type checking enabled
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.{ts,tsx} : Use camelCase for variables and functions
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.{ts,tsx} : Use PascalCase for types and classes
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : If a particular interface or type is not exported, change the file so it is exported
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.{ts,tsx} : Extract repeated components into distinct functions or components where applicable
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/ui-rules.mdc:0-0
Timestamp: 2025-06-30T11:52:33.318Z
Learning: Applies to *.{tsx},packages/project-builder-web/**,packages/ui-components/** : We use a rough analog of ShadCN components that can be imported from @baseplate-dev/ui-components
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : Node 16 module resolution - include file extensions in imports (`.js`)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.{ts,tsx} : Prefer functional programming patterns
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.test.ts : Include tests for error conditions and edge cases
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : Specify explicit return types on all functions
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : Use camelCase for variables/functions, PascalCase for types/classes
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.unit.test.ts : Unit tests use `.unit.test.ts` suffix
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/* : Use kebab-case for file names
packages/react-generators/src/generators/admin/admin-layout/extractor.json (10)
Learnt from: kingston
PR: halfdomelabs/baseplate#521
File: packages/react-generators/src/generators/admin/admin-crud-list/admin-crud-list.generator.ts:163-166
Timestamp: 2025-05-05T06:37:51.001Z
Learning: For certain templates in the codebase, the `importMapProviders` property is not explicitly required as the template extractor will automatically determine and infer the necessary import map providers.
Learnt from: kingston
PR: halfdomelabs/baseplate#521
File: plugins/baseplate-plugin-storage/src/generators/react/upload-components/upload-components.generator.ts:108-112
Timestamp: 2025-05-05T06:37:43.106Z
Learning: The template extractor in the baseplate codebase can automatically infer and determine the necessary import map providers for certain templates, making explicit specification of importMapProviders unnecessary in those cases.
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.{ts,tsx} : Extract repeated components into distinct functions or components where applicable
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/ui-rules.mdc:0-0
Timestamp: 2025-06-30T11:52:33.318Z
Learning: Applies to *.{tsx},packages/project-builder-web/**,packages/ui-components/** : We use a rough analog of ShadCN components that can be imported from @baseplate-dev/ui-components
Learnt from: kingston
PR: halfdomelabs/baseplate#505
File: packages/create-project/tsconfig.json:6-6
Timestamp: 2025-04-21T06:32:22.476Z
Learning: Since TypeScript 4.1, baseUrl is not required for paths mapping in tsconfig.json. Removing baseUrl and using explicit relative paths with "./" prefix (e.g., changing "@src/*": ["src/*"] to "@src/*": ["./src/*"]) prevents bare path imports from node_modules while maintaining path alias functionality.
Learnt from: kingston
PR: halfdomelabs/baseplate#505
File: packages/create-project/tsconfig.json:6-6
Timestamp: 2025-04-21T06:32:22.476Z
Learning: Since TypeScript 4.1, baseUrl is not required for paths mapping when using explicit relative paths (with "./"). Removing baseUrl from tsconfig.json while updating paths to use relative paths (e.g., changing "@src/*": ["src/*"] to "@src/*": ["./src/*"]) prevents bare path imports from node_modules while maintaining path alias functionality.
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : Include absolute paths in import statements via tsconfig paths (`@src/` is the alias for `src/`)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.tsx : Use ShadCN-based components from `@baseplate-dev/ui-components` instead of creating custom ones
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.{ts,tsx} : Prefer functional programming patterns
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.{ts,tsx} : Use camelCase for variables and functions
packages/react-generators/src/generators/admin/admin-home/templates/root-index.tsx (8)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : Include absolute paths in import statements via tsconfig paths (`@src/` is the alias for `src/`)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : Always include return types on top-level functions including React components (`React.ReactElement`)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : If a particular interface or type is not exported, change the file so it is exported
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : TypeScript with strict type checking
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.tsx : Use ShadCN-based components from `@baseplate-dev/ui-components` instead of creating custom ones
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/ui-rules.mdc:0-0
Timestamp: 2025-06-30T11:52:33.318Z
Learning: Applies to *.{tsx},packages/project-builder-web/**,packages/ui-components/** : We use a rough analog of ShadCN components that can be imported from @baseplate-dev/ui-components
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/tests.mdc:0-0
Timestamp: 2025-06-30T11:52:28.745Z
Learning: Applies to src/__mocks__/**/*.{ts,tsx} : Manual mocks are in `src/__mocks__/` directory
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to src/__mocks__/**/*.{ts,tsx} : Manual mocks are in `src/__mocks__/` directory
packages/react-generators/src/generators/admin/admin-bull-board/admin-bull-board.generator.ts (6)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/ui-rules.mdc:0-0
Timestamp: 2025-06-30T11:52:33.318Z
Learning: Applies to *.{tsx},packages/project-builder-web/**,packages/ui-components/** : We use a rough analog of ShadCN components that can be imported from @baseplate-dev/ui-components
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.tsx : Use ShadCN-based components from `@baseplate-dev/ui-components` instead of creating custom ones
Learnt from: kingston
PR: halfdomelabs/baseplate#521
File: plugins/baseplate-plugin-storage/src/generators/react/upload-components/upload-components.generator.ts:108-112
Timestamp: 2025-05-05T06:37:43.106Z
Learning: The template extractor in the baseplate codebase can automatically infer and determine the necessary import map providers for certain templates, making explicit specification of importMapProviders unnecessary in those cases.
Learnt from: kingston
PR: halfdomelabs/baseplate#539
File: scripts/check-changesets.ts:10-13
Timestamp: 2025-05-08T12:56:59.222Z
Learning: Node.js 20.12.0 and above include `globSync` in the core `node:fs` module, so `import { promises as fs, globSync } from 'node:fs';` is valid syntax in projects using these Node.js versions.
Learnt from: kingston
PR: halfdomelabs/baseplate#539
File: scripts/check-changesets.ts:10-13
Timestamp: 2025-05-08T12:56:59.222Z
Learning: Node.js 22.0.0 and later versions include both `glob` and `globSync` functionality in the core `node:fs` module, making `import { promises as fs, globSync } from 'node:fs';` valid syntax.
Learnt from: kingston
PR: halfdomelabs/baseplate#428
File: packages/project-builder-server/src/sync/index.ts:5-5
Timestamp: 2025-01-23T09:12:46.178Z
Learning: Avoid importing directly from 'dist' directories. Instead, expose functionality through the package's public API and import from the main package entry point.
plugins/plugin-auth/src/auth0/core/node.ts (7)
Learnt from: kingston
PR: halfdomelabs/baseplate#505
File: packages/create-project/tsconfig.json:6-6
Timestamp: 2025-04-21T06:32:22.476Z
Learning: Since TypeScript 4.1, baseUrl is not required for paths mapping in tsconfig.json. Removing baseUrl and using explicit relative paths with "./" prefix (e.g., changing "@src/*": ["src/*"] to "@src/*": ["./src/*"]) prevents bare path imports from node_modules while maintaining path alias functionality.
Learnt from: kingston
PR: halfdomelabs/baseplate#505
File: packages/create-project/tsconfig.json:6-6
Timestamp: 2025-04-21T06:32:22.476Z
Learning: Since TypeScript 4.1, baseUrl is not required for paths mapping when using explicit relative paths (with "./"). Removing baseUrl from tsconfig.json while updating paths to use relative paths (e.g., changing "@src/*": ["src/*"] to "@src/*": ["./src/*"]) prevents bare path imports from node_modules while maintaining path alias functionality.
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.{ts,tsx} : Prefer functional programming patterns
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.{ts,tsx} : Extract repeated components into distinct functions or components where applicable
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/ui-rules.mdc:0-0
Timestamp: 2025-06-30T11:52:33.318Z
Learning: Applies to *.{tsx},packages/project-builder-web/**,packages/ui-components/** : We use a rough analog of ShadCN components that can be imported from @baseplate-dev/ui-components
Learnt from: kingston
PR: halfdomelabs/baseplate#428
File: packages/project-builder-server/src/sync/index.ts:5-5
Timestamp: 2025-01-23T09:12:46.178Z
Learning: Avoid importing directly from 'dist' directories. Instead, expose functionality through the package's public API and import from the main package entry point.
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : Always include return types on top-level functions including React components (`React.ReactElement`)
packages/react-generators/src/generators/admin/admin-crud-list/templates/index.tsx (10)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : If a particular interface or type is not exported, change the file so it is exported
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : Include absolute paths in import statements via tsconfig paths (`@src/` is the alias for `src/`)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.{ts,tsx} : Prefer functional programming patterns
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.tsx : Use ShadCN-based components from `@baseplate-dev/ui-components` instead of creating custom ones
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.{ts,tsx} : Use camelCase for variables and functions
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.{ts,tsx} : Extract repeated components into distinct functions or components where applicable
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/ui-rules.mdc:0-0
Timestamp: 2025-06-30T11:52:33.318Z
Learning: Applies to *.{tsx},packages/project-builder-web/**,packages/ui-components/** : We use a rough analog of ShadCN components that can be imported from @baseplate-dev/ui-components
Learnt from: kingston
PR: halfdomelabs/baseplate#571
File: packages/core-generators/src/renderers/extractor/plugins/typed-templates-file.ts:102-106
Timestamp: 2025-06-11T18:31:22.247Z
Learning: For `templateExtractorBarrelExportPlugin.addGeneratedBarrelExport`, the generated barrel exports are written into `generated/index.ts`, therefore the `moduleSpecifier` must be specified relative to that file (e.g., `./typed-templates.js`), not the project root.
Learnt from: kingston
PR: halfdomelabs/baseplate#505
File: packages/create-project/tsconfig.json:6-6
Timestamp: 2025-04-21T06:32:22.476Z
Learning: Since TypeScript 4.1, baseUrl is not required for paths mapping in tsconfig.json. Removing baseUrl and using explicit relative paths with "./" prefix (e.g., changing "@src/*": ["src/*"] to "@src/*": ["./src/*"]) prevents bare path imports from node_modules while maintaining path alias functionality.
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.{ts,tsx} : Use PascalCase for types and classes
packages/react-generators/src/generators/core/react-components/extractor.json (16)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : If a particular interface or type is not exported, change the file so it is exported
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.{ts,tsx} : Extract repeated components into distinct functions or components where applicable
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/ui-rules.mdc:0-0
Timestamp: 2025-06-30T11:52:33.318Z
Learning: Applies to *.{tsx},packages/project-builder-web/**,packages/ui-components/** : We use a rough analog of ShadCN components that can be imported from @baseplate-dev/ui-components
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : Always include return types on top-level functions including React components (`React.ReactElement`)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.tsx : Use ShadCN-based components from `@baseplate-dev/ui-components` instead of creating custom ones
Learnt from: kingston
PR: halfdomelabs/baseplate#571
File: packages/core-generators/src/renderers/extractor/plugins/typed-templates-file.ts:102-106
Timestamp: 2025-06-11T18:31:22.247Z
Learning: For `templateExtractorBarrelExportPlugin.addGeneratedBarrelExport`, the generated barrel exports are written into `generated/index.ts`, therefore the `moduleSpecifier` must be specified relative to that file (e.g., `./typed-templates.js`), not the project root.
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : Include absolute paths in import statements via tsconfig paths (`@src/` is the alias for `src/`)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/index.{ts,tsx} : Prefer barrel exports e.g. `export * from './foo.js'` instead of individual named exports
Learnt from: kingston
PR: halfdomelabs/baseplate#505
File: packages/create-project/tsconfig.json:6-6
Timestamp: 2025-04-21T06:32:22.476Z
Learning: Since TypeScript 4.1, baseUrl is not required for paths mapping in tsconfig.json. Removing baseUrl and using explicit relative paths with "./" prefix (e.g., changing "@src/*": ["src/*"] to "@src/*": ["./src/*"]) prevents bare path imports from node_modules while maintaining path alias functionality.
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.tsx : Use icons from `react-icons/md` (Material Design icons); avoid using other icon libraries
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : TypeScript with strict type checking
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.{ts,tsx} : Use camelCase for variables and functions
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.{ts,tsx} : Prefer functional programming patterns
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.{ts,tsx} : Use TypeScript with strict type checking enabled
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.{ts,tsx} : Use PascalCase for types and classes
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : Use camelCase for variables/functions, PascalCase for types/classes
plugins/plugin-storage/src/generators/react/upload-components/templates/src/components/file-input/file-input.tsx (10)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.tsx : Use ShadCN-based components from `@baseplate-dev/ui-components` instead of creating custom ones
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.{ts,tsx} : Prefer functional programming patterns
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : Include absolute paths in import statements via tsconfig paths (`@src/` is the alias for `src/`)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : Node 16 module resolution - include file extensions in imports (`.js`)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.{ts,tsx} : Extract repeated components into distinct functions or components where applicable
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : If a particular interface or type is not exported, change the file so it is exported
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/ui-rules.mdc:0-0
Timestamp: 2025-06-30T11:52:33.318Z
Learning: Applies to *.{tsx},packages/project-builder-web/**,packages/ui-components/** : We use a rough analog of ShadCN components that can be imported from @baseplate-dev/ui-components
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : Always use `.js` extensions in imports, even for TypeScript files
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.tsx : Use icons from `react-icons/md` (Material Design icons); avoid using other icon libraries
Learnt from: kingston
PR: halfdomelabs/baseplate#428
File: packages/project-builder-server/src/sync/index.ts:5-5
Timestamp: 2025-01-23T09:12:46.178Z
Learning: Avoid importing directly from 'dist' directories. Instead, expose functionality through the package's public API and import from the main package entry point.
packages/react-generators/src/providers/routes.ts (9)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.{ts,tsx} : Extract repeated components into distinct functions or components where applicable
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : Include absolute paths in import statements via tsconfig paths (`@src/` is the alias for `src/`)
Learnt from: kingston
PR: halfdomelabs/baseplate#505
File: packages/create-project/tsconfig.json:6-6
Timestamp: 2025-04-21T06:32:22.476Z
Learning: Since TypeScript 4.1, baseUrl is not required for paths mapping in tsconfig.json. Removing baseUrl and using explicit relative paths with "./" prefix (e.g., changing "@src/*": ["src/*"] to "@src/*": ["./src/*"]) prevents bare path imports from node_modules while maintaining path alias functionality.
Learnt from: kingston
PR: halfdomelabs/baseplate#505
File: packages/create-project/tsconfig.json:6-6
Timestamp: 2025-04-21T06:32:22.476Z
Learning: Since TypeScript 4.1, baseUrl is not required for paths mapping when using explicit relative paths (with "./"). Removing baseUrl from tsconfig.json while updating paths to use relative paths (e.g., changing "@src/*": ["src/*"] to "@src/*": ["./src/*"]) prevents bare path imports from node_modules while maintaining path alias functionality.
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : Always include return types on top-level functions including React components (`React.ReactElement`)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.{ts,tsx} : Prefer functional programming patterns
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.tsx : Use ShadCN-based components from `@baseplate-dev/ui-components` instead of creating custom ones
Learnt from: kingston
PR: halfdomelabs/baseplate#521
File: packages/react-generators/src/generators/admin/admin-crud-edit/admin-crud-edit.generator.ts:90-94
Timestamp: 2025-05-05T06:36:50.687Z
Learning: In this codebase, import paths can include `.ts` extensions, and the `resolveModuleSpecifier` function will handle them appropriately. There's no need to strip file extensions before passing paths to functions like `TsCodeUtils.importFragment`.
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/ui-rules.mdc:0-0
Timestamp: 2025-06-30T11:52:33.318Z
Learning: Applies to *.{tsx},packages/project-builder-web/**,packages/ui-components/** : We use a rough analog of ShadCN components that can be imported from @baseplate-dev/ui-components
packages/sync/src/utils/directories.ts (4)
Learnt from: kingston
PR: halfdomelabs/baseplate#505
File: packages/create-project/tsconfig.json:6-6
Timestamp: 2025-04-21T06:32:22.476Z
Learning: Since TypeScript 4.1, baseUrl is not required for paths mapping in tsconfig.json. Removing baseUrl and using explicit relative paths with "./" prefix (e.g., changing "@src/*": ["src/*"] to "@src/*": ["./src/*"]) prevents bare path imports from node_modules while maintaining path alias functionality.
Learnt from: kingston
PR: halfdomelabs/baseplate#505
File: packages/create-project/tsconfig.json:6-6
Timestamp: 2025-04-21T06:32:22.476Z
Learning: Since TypeScript 4.1, baseUrl is not required for paths mapping when using explicit relative paths (with "./"). Removing baseUrl from tsconfig.json while updating paths to use relative paths (e.g., changing "@src/*": ["src/*"] to "@src/*": ["./src/*"]) prevents bare path imports from node_modules while maintaining path alias functionality.
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : Order functions such that functions are placed below the variables/functions they use
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : Sort imports by group: external libs first, then local imports
packages/react-generators/src/generators/admin/admin-layout/admin-layout.generator.ts (11)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/ui-rules.mdc:0-0
Timestamp: 2025-06-30T11:52:33.318Z
Learning: Applies to *.{tsx},packages/project-builder-web/**,packages/ui-components/** : We use a rough analog of ShadCN components that can be imported from @baseplate-dev/ui-components
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.tsx : Use ShadCN-based components from `@baseplate-dev/ui-components` instead of creating custom ones
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.{ts,tsx} : Extract repeated components into distinct functions or components where applicable
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.{ts,tsx} : Prefer functional programming patterns
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : Include absolute paths in import statements via tsconfig paths (`@src/` is the alias for `src/`)
Learnt from: kingston
PR: halfdomelabs/baseplate#521
File: packages/react-generators/src/generators/admin/admin-crud-edit/admin-crud-edit.generator.ts:90-94
Timestamp: 2025-05-05T06:36:50.687Z
Learning: In this codebase, import paths can include `.ts` extensions, and the `resolveModuleSpecifier` function will handle them appropriately. There's no need to strip file extensions before passing paths to functions like `TsCodeUtils.importFragment`.
Learnt from: kingston
PR: halfdomelabs/baseplate#521
File: packages/react-generators/src/generators/admin/admin-crud-list/admin-crud-list.generator.ts:163-166
Timestamp: 2025-05-05T06:37:51.001Z
Learning: For certain templates in the codebase, the `importMapProviders` property is not explicitly required as the template extractor will automatically determine and infer the necessary import map providers.
Learnt from: kingston
PR: halfdomelabs/baseplate#521
File: plugins/baseplate-plugin-storage/src/generators/react/upload-components/upload-components.generator.ts:108-112
Timestamp: 2025-05-05T06:37:43.106Z
Learning: The template extractor in the baseplate codebase can automatically infer and determine the necessary import map providers for certain templates, making explicit specification of importMapProviders unnecessary in those cases.
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.{unit,int}.test.ts : Always import vitest globals explicitly (describe, it, expect)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : Always include return types on top-level functions including React components (`React.ReactElement`)
Learnt from: kingston
PR: halfdomelabs/baseplate#521
File: packages/react-generators/src/generators/admin/admin-components/admin-components.generator.ts:55-61
Timestamp: 2025-05-05T06:35:13.300Z
Learning: In generators, paths should be merged with forward slashes (/) only since JavaScript generated files use POSIX style separators. The system handles conversion to Windows style separators at later stages when writing out files.
packages/react-generators/src/generators/core/react-router/extractor.json (15)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.{ts,tsx} : Extract repeated components into distinct functions or components where applicable
Learnt from: kingston
PR: halfdomelabs/baseplate#571
File: packages/core-generators/src/renderers/extractor/plugins/typed-templates-file.ts:102-106
Timestamp: 2025-06-11T18:31:22.247Z
Learning: For `templateExtractorBarrelExportPlugin.addGeneratedBarrelExport`, the generated barrel exports are written into `generated/index.ts`, therefore the `moduleSpecifier` must be specified relative to that file (e.g., `./typed-templates.js`), not the project root.
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.{ts,tsx} : Use camelCase for variables and functions
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : Include absolute paths in import statements via tsconfig paths (`@src/` is the alias for `src/`)
Learnt from: kingston
PR: halfdomelabs/baseplate#521
File: packages/react-generators/src/generators/admin/admin-crud-list/admin-crud-list.generator.ts:163-166
Timestamp: 2025-05-05T06:37:51.001Z
Learning: For certain templates in the codebase, the `importMapProviders` property is not explicitly required as the template extractor will automatically determine and infer the necessary import map providers.
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/ui-rules.mdc:0-0
Timestamp: 2025-06-30T11:52:33.318Z
Learning: Applies to *.{tsx},packages/project-builder-web/**,packages/ui-components/** : We use a rough analog of ShadCN components that can be imported from @baseplate-dev/ui-components
Learnt from: kingston
PR: halfdomelabs/baseplate#505
File: packages/create-project/tsconfig.json:6-6
Timestamp: 2025-04-21T06:32:22.476Z
Learning: Since TypeScript 4.1, baseUrl is not required for paths mapping in tsconfig.json. Removing baseUrl and using explicit relative paths with "./" prefix (e.g., changing "@src/*": ["src/*"] to "@src/*": ["./src/*"]) prevents bare path imports from node_modules while maintaining path alias functionality.
Learnt from: kingston
PR: halfdomelabs/baseplate#505
File: packages/create-project/tsconfig.json:6-6
Timestamp: 2025-04-21T06:32:22.476Z
Learning: Since TypeScript 4.1, baseUrl is not required for paths mapping when using explicit relative paths (with "./"). Removing baseUrl from tsconfig.json while updating paths to use relative paths (e.g., changing "@src/*": ["src/*"] to "@src/*": ["./src/*"]) prevents bare path imports from node_modules while maintaining path alias functionality.
Learnt from: kingston
PR: halfdomelabs/baseplate#562
File: plugins/plugin-auth/package.json:32-36
Timestamp: 2025-06-03T09:11:29.651Z
Learning: With TypeScript project references, TypeScript compilation is watched from the root level using "watch:tsc:root" script, so individual packages no longer need to include their "tsc:watch" scripts in their local "watch" commands. The local "tsc:watch" scripts are renamed from "watch:tsc" but are not meant to be run as part of the package's watch command since TypeScript watching is handled centrally at the workspace root.
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.{ts,tsx} : Prefer functional programming patterns
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.tsx : Use ShadCN-based components from `@baseplate-dev/ui-components` instead of creating custom ones
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/tests.mdc:0-0
Timestamp: 2025-06-30T11:52:28.745Z
Learning: Applies to src/tests/**/*.{ts,tsx} : Test helpers are located in `src/tests/` directory
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to src/tests/**/*.{ts,tsx} : Test helpers are located in `src/tests/` directory
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/tests.mdc:0-0
Timestamp: 2025-06-30T11:52:28.745Z
Learning: Applies to **/*.unit.test.{ts,tsx} : Unit tests are colocated with source files using `.unit.test.ts` suffix
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : Use camelCase for variables/functions, PascalCase for types/classes
packages/react-generators/src/generators/admin/admin-crud-edit/templates/edit.tsx (4)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : If a particular interface or type is not exported, change the file so it is exported
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.{ts,tsx} : Prefer functional programming patterns
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : Include absolute paths in import statements via tsconfig paths (`@src/` is the alias for `src/`)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.{ts,tsx} : Use camelCase for variables and functions
packages/react-generators/src/generators/admin/admin-crud-list/admin-crud-list.generator.ts (3)
Learnt from: kingston
PR: halfdomelabs/baseplate#521
File: packages/react-generators/src/generators/admin/admin-components/admin-components.generator.ts:55-61
Timestamp: 2025-05-05T06:35:13.300Z
Learning: In generators, paths should be merged with forward slashes (/) only since JavaScript generated files use POSIX style separators. The system handles conversion to Windows style separators at later stages when writing out files.
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : Include absolute paths in import statements via tsconfig paths (`@src/` is the alias for `src/`)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/ui-rules.mdc:0-0
Timestamp: 2025-06-30T11:52:33.318Z
Learning: Applies to *.{tsx},packages/project-builder-web/**,packages/ui-components/** : We use a rough analog of ShadCN components that can be imported from @baseplate-dev/ui-components
packages/react-generators/src/generators/admin/admin-home/admin-home.generator.ts (15)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.{ts,tsx} : Extract repeated components into distinct functions or components where applicable
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/ui-rules.mdc:0-0
Timestamp: 2025-06-30T11:52:33.318Z
Learning: Applies to *.{tsx},packages/project-builder-web/**,packages/ui-components/** : We use a rough analog of ShadCN components that can be imported from @baseplate-dev/ui-components
Learnt from: kingston
PR: halfdomelabs/baseplate#428
File: packages/project-builder-server/src/sync/index.ts:5-5
Timestamp: 2025-01-23T09:12:46.178Z
Learning: Avoid importing directly from 'dist' directories. Instead, expose functionality through the package's public API and import from the main package entry point.
Learnt from: kingston
PR: halfdomelabs/baseplate#521
File: packages/react-generators/src/generators/admin/admin-crud-list/admin-crud-list.generator.ts:163-166
Timestamp: 2025-05-05T06:37:51.001Z
Learning: For certain templates in the codebase, the `importMapProviders` property is not explicitly required as the template extractor will automatically determine and infer the necessary import map providers.
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : Include absolute paths in import statements via tsconfig paths (`@src/` is the alias for `src/`)
Learnt from: kingston
PR: halfdomelabs/baseplate#521
File: packages/react-generators/src/generators/admin/admin-components/admin-components.generator.ts:55-61
Timestamp: 2025-05-05T06:35:13.300Z
Learning: In generators, paths should be merged with forward slashes (/) only since JavaScript generated files use POSIX style separators. The system handles conversion to Windows style separators at later stages when writing out files.
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.{ts,tsx} : Prefer functional programming patterns
Learnt from: kingston
PR: halfdomelabs/baseplate#505
File: packages/create-project/tsconfig.json:6-6
Timestamp: 2025-04-21T06:32:22.476Z
Learning: Since TypeScript 4.1, baseUrl is not required for paths mapping in tsconfig.json. Removing baseUrl and using explicit relative paths with "./" prefix (e.g., changing "@src/*": ["src/*"] to "@src/*": ["./src/*"]) prevents bare path imports from node_modules while maintaining path alias functionality.
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : If a particular interface or type is not exported, change the file so it is exported
Learnt from: kingston
PR: halfdomelabs/baseplate#505
File: packages/create-project/tsconfig.json:6-6
Timestamp: 2025-04-21T06:32:22.476Z
Learning: Since TypeScript 4.1, baseUrl is not required for paths mapping when using explicit relative paths (with "./"). Removing baseUrl from tsconfig.json while updating paths to use relative paths (e.g., changing "@src/*": ["src/*"] to "@src/*": ["./src/*"]) prevents bare path imports from node_modules while maintaining path alias functionality.
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.tsx : Use ShadCN-based components from `@baseplate-dev/ui-components` instead of creating custom ones
Learnt from: kingston
PR: halfdomelabs/baseplate#539
File: scripts/check-changesets.ts:10-13
Timestamp: 2025-05-08T12:56:59.222Z
Learning: Node.js 20.12.0 and above include `globSync` in the core `node:fs` module, so `import { promises as fs, globSync } from 'node:fs';` is valid syntax in projects using these Node.js versions.
Learnt from: kingston
PR: halfdomelabs/baseplate#539
File: scripts/check-changesets.ts:10-13
Timestamp: 2025-05-08T12:56:59.222Z
Learning: Node.js 22.0.0 and later versions include both `glob` and `globSync` functionality in the core `node:fs` module, making `import { promises as fs, globSync } from 'node:fs';` valid syntax.
Learnt from: kingston
PR: halfdomelabs/baseplate#521
File: plugins/baseplate-plugin-storage/src/generators/react/upload-components/upload-components.generator.ts:108-112
Timestamp: 2025-05-05T06:37:43.106Z
Learning: The template extractor in the baseplate codebase can automatically infer and determine the necessary import map providers for certain templates, making explicit specification of importMapProviders unnecessary in those cases.
Learnt from: kingston
PR: halfdomelabs/baseplate#571
File: packages/core-generators/src/renderers/extractor/plugins/typed-templates-file.ts:102-106
Timestamp: 2025-06-11T18:31:22.247Z
Learning: For `templateExtractorBarrelExportPlugin.addGeneratedBarrelExport`, the generated barrel exports are written into `generated/index.ts`, therefore the `moduleSpecifier` must be specified relative to that file (e.g., `./typed-templates.js`), not the project root.
packages/react-generators/src/generators/admin/admin-crud-edit/extractor.json (2)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.{ts,tsx} : Use camelCase for variables and functions
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.{ts,tsx} : Extract repeated components into distinct functions or components where applicable
plugins/plugin-auth/src/auth0/generators/react/react-auth0/templates/src/app/auth-loaded-gate.tsx (3)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.tsx : Use ShadCN-based components from `@baseplate-dev/ui-components` instead of creating custom ones
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.{ts,tsx} : Extract repeated components into distinct functions or components where applicable
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/ui-rules.mdc:0-0
Timestamp: 2025-06-30T11:52:33.318Z
Learning: Applies to *.{tsx},packages/project-builder-web/**,packages/ui-components/** : We use a rough analog of ShadCN components that can be imported from @baseplate-dev/ui-components
packages/react-generators/src/generators/core/react-router/templates/routes/__root.tsx (8)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.tsx : Use ShadCN-based components from `@baseplate-dev/ui-components` instead of creating custom ones
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : Include absolute paths in import statements via tsconfig paths (`@src/` is the alias for `src/`)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : Always include return types on top-level functions including React components (`React.ReactElement`)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.{ts,tsx} : Extract repeated components into distinct functions or components where applicable
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.{ts,tsx} : Prefer functional programming patterns
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/ui-rules.mdc:0-0
Timestamp: 2025-06-30T11:52:33.318Z
Learning: Applies to *.{tsx},packages/project-builder-web/**,packages/ui-components/** : We use a rough analog of ShadCN components that can be imported from @baseplate-dev/ui-components
Learnt from: kingston
PR: halfdomelabs/baseplate#562
File: plugins/plugin-auth/package.json:32-36
Timestamp: 2025-06-03T09:11:29.651Z
Learning: With TypeScript project references, TypeScript compilation is watched from the root level using "watch:tsc:root" script, so individual packages no longer need to include their "tsc:watch" scripts in their local "watch" commands. The local "tsc:watch" scripts are renamed from "watch:tsc" but are not meant to be run as part of the package's watch command since TypeScript watching is handled centrally at the workspace root.
Learnt from: kingston
PR: halfdomelabs/baseplate#505
File: packages/create-project/tsconfig.json:6-6
Timestamp: 2025-04-21T06:32:22.476Z
Learning: Since TypeScript 4.1, baseUrl is not required for paths mapping in tsconfig.json. Removing baseUrl and using explicit relative paths with "./" prefix (e.g., changing "@src/*": ["src/*"] to "@src/*": ["./src/*"]) prevents bare path imports from node_modules while maintaining path alias functionality.
packages/react-generators/src/generators/core/react-router/templates/src/app/router.tsx (7)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.{ts,tsx} : Extract repeated components into distinct functions or components where applicable
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.tsx : Use ShadCN-based components from `@baseplate-dev/ui-components` instead of creating custom ones
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/ui-rules.mdc:0-0
Timestamp: 2025-06-30T11:52:33.318Z
Learning: Applies to *.{tsx},packages/project-builder-web/**,packages/ui-components/** : We use a rough analog of ShadCN components that can be imported from @baseplate-dev/ui-components
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : Always include return types on top-level functions including React components (`React.ReactElement`)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.{ts,tsx} : Prefer functional programming patterns
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : Include absolute paths in import statements via tsconfig paths (`@src/` is the alias for `src/`)
Learnt from: kingston
PR: halfdomelabs/baseplate#521
File: packages/react-generators/src/generators/admin/admin-crud-list/admin-crud-list.generator.ts:163-166
Timestamp: 2025-05-05T06:37:51.001Z
Learning: For certain templates in the codebase, the `importMapProviders` property is not explicitly required as the template extractor will automatically determine and infer the necessary import map providers.
plugins/plugin-auth/src/auth0/generators/react/auth0-pages/extractor.json (10)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.{ts,tsx} : Extract repeated components into distinct functions or components where applicable
Learnt from: kingston
PR: halfdomelabs/baseplate#521
File: plugins/baseplate-plugin-storage/src/generators/react/upload-components/upload-components.generator.ts:108-112
Timestamp: 2025-05-05T06:37:43.106Z
Learning: The template extractor in the baseplate codebase can automatically infer and determine the necessary import map providers for certain templates, making explicit specification of importMapProviders unnecessary in those cases.
Learnt from: kingston
PR: halfdomelabs/baseplate#521
File: packages/react-generators/src/generators/admin/admin-crud-list/admin-crud-list.generator.ts:163-166
Timestamp: 2025-05-05T06:37:51.001Z
Learning: For certain templates in the codebase, the `importMapProviders` property is not explicitly required as the template extractor will automatically determine and infer the necessary import map providers.
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to plugins/*/**/*.tsx : In plugins, prefix all Tailwind classes with the plugin name (e.g., `auth-`, `storage-`)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/ui-rules.mdc:0-0
Timestamp: 2025-06-30T11:52:33.318Z
Learning: Applies to *.{tsx},packages/project-builder-web/**,packages/ui-components/** : We use a rough analog of ShadCN components that can be imported from @baseplate-dev/ui-components
Learnt from: kingston
PR: halfdomelabs/baseplate#571
File: packages/core-generators/src/renderers/extractor/plugins/typed-templates-file.ts:102-106
Timestamp: 2025-06-11T18:31:22.247Z
Learning: For `templateExtractorBarrelExportPlugin.addGeneratedBarrelExport`, the generated barrel exports are written into `generated/index.ts`, therefore the `moduleSpecifier` must be specified relative to that file (e.g., `./typed-templates.js`), not the project root.
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.tsx : Use ShadCN-based components from `@baseplate-dev/ui-components` instead of creating custom ones
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.{ts,tsx} : Prefer functional programming patterns
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.{ts,tsx} : Use TypeScript with strict type checking enabled
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.{ts,tsx} : Use PascalCase for types and classes
plugins/plugin-auth/src/auth0/generators/react/react-auth0/extractor.json (11)
Learnt from: kingston
PR: halfdomelabs/baseplate#521
File: plugins/baseplate-plugin-storage/src/generators/react/upload-components/upload-components.generator.ts:108-112
Timestamp: 2025-05-05T06:37:43.106Z
Learning: The template extractor in the baseplate codebase can automatically infer and determine the necessary import map providers for certain templates, making explicit specification of importMapProviders unnecessary in those cases.
Learnt from: kingston
PR: halfdomelabs/baseplate#521
File: packages/react-generators/src/generators/admin/admin-crud-list/admin-crud-list.generator.ts:163-166
Timestamp: 2025-05-05T06:37:51.001Z
Learning: For certain templates in the codebase, the `importMapProviders` property is not explicitly required as the template extractor will automatically determine and infer the necessary import map providers.
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.{ts,tsx} : Extract repeated components into distinct functions or components where applicable
Learnt from: kingston
PR: halfdomelabs/baseplate#571
File: packages/core-generators/src/renderers/extractor/plugins/typed-templates-file.ts:102-106
Timestamp: 2025-06-11T18:31:22.247Z
Learning: For `templateExtractorBarrelExportPlugin.addGeneratedBarrelExport`, the generated barrel exports are written into `generated/index.ts`, therefore the `moduleSpecifier` must be specified relative to that file (e.g., `./typed-templates.js`), not the project root.
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/ui-rules.mdc:0-0
Timestamp: 2025-06-30T11:52:33.318Z
Learning: Applies to *.{tsx},packages/project-builder-web/**,packages/ui-components/** : We use a rough analog of ShadCN components that can be imported from @baseplate-dev/ui-components
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.tsx : Use ShadCN-based components from `@baseplate-dev/ui-components` instead of creating custom ones
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to plugins/*/**/*.tsx : In plugins, prefix all Tailwind classes with the plugin name (e.g., `auth-`, `storage-`)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : Include absolute paths in import statements via tsconfig paths (`@src/` is the alias for `src/`)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.{ts,tsx} : Use TypeScript with strict type checking enabled
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : TypeScript with strict type checking
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.{ts,tsx} : Prefer functional programming patterns
plugins/plugin-auth/src/auth0/generators/react/index.ts (12)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.{ts,tsx} : Extract repeated components into distinct functions or components where applicable
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : If a particular interface or type is not exported, change the file so it is exported
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/index.{ts,tsx} : Prefer barrel exports e.g. `export * from './foo.js'` instead of individual named exports
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to plugins/*/**/*.tsx : In plugins, prefix all Tailwind classes with the plugin name (e.g., `auth-`, `storage-`)
Learnt from: kingston
PR: halfdomelabs/baseplate#428
File: packages/project-builder-server/src/sync/index.ts:5-5
Timestamp: 2025-01-23T09:12:46.178Z
Learning: Avoid importing directly from 'dist' directories. Instead, expose functionality through the package's public API and import from the main package entry point.
Learnt from: kingston
PR: halfdomelabs/baseplate#571
File: packages/core-generators/src/renderers/extractor/plugins/typed-templates-file.ts:102-106
Timestamp: 2025-06-11T18:31:22.247Z
Learning: For `templateExtractorBarrelExportPlugin.addGeneratedBarrelExport`, the generated barrel exports are written into `generated/index.ts`, therefore the `moduleSpecifier` must be specified relative to that file (e.g., `./typed-templates.js`), not the project root.
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : Always include return types on top-level functions including React components (`React.ReactElement`)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/ui-rules.mdc:0-0
Timestamp: 2025-06-30T11:52:33.318Z
Learning: Applies to *.{tsx},packages/project-builder-web/**,packages/ui-components/** : We use a rough analog of ShadCN components that can be imported from @baseplate-dev/ui-components
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.{ts,tsx} : Prefer functional programming patterns
Learnt from: kingston
PR: halfdomelabs/baseplate#505
File: packages/create-project/tsconfig.json:6-6
Timestamp: 2025-04-21T06:32:22.476Z
Learning: Since TypeScript 4.1, baseUrl is not required for paths mapping in tsconfig.json. Removing baseUrl and using explicit relative paths with "./" prefix (e.g., changing "@src/*": ["src/*"] to "@src/*": ["./src/*"]) prevents bare path imports from node_modules while maintaining path alias functionality.
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.tsx : Use ShadCN-based components from `@baseplate-dev/ui-components` instead of creating custom ones
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : Node 16 module resolution - include file extensions in imports (`.js`)
packages/react-generators/src/generators/apollo/react-apollo/react-apollo.generator.ts (13)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/ui-rules.mdc:0-0
Timestamp: 2025-06-30T11:52:33.318Z
Learning: Applies to *.{tsx},packages/project-builder-web/**,packages/ui-components/** : We use a rough analog of ShadCN components that can be imported from @baseplate-dev/ui-components
Learnt from: kingston
PR: halfdomelabs/baseplate#521
File: packages/react-generators/src/generators/admin/admin-crud-edit/admin-crud-edit.generator.ts:90-94
Timestamp: 2025-05-05T06:36:50.687Z
Learning: In this codebase, import paths can include `.ts` extensions, and the `resolveModuleSpecifier` function will handle them appropriately. There's no need to strip file extensions before passing paths to functions like `TsCodeUtils.importFragment`.
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.tsx : Use ShadCN-based components from `@baseplate-dev/ui-components` instead of creating custom ones
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : Node 16 module resolution - include file extensions in imports (`.js`)
Learnt from: kingston
PR: halfdomelabs/baseplate#521
File: plugins/baseplate-plugin-storage/src/generators/react/upload-components/upload-components.generator.ts:108-112
Timestamp: 2025-05-05T06:37:43.106Z
Learning: The template extractor in the baseplate codebase can automatically infer and determine the necessary import map providers for certain templates, making explicit specification of importMapProviders unnecessary in those cases.
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : Include absolute paths in import statements via tsconfig paths (`@src/` is the alias for `src/`)
Learnt from: kingston
PR: halfdomelabs/baseplate#571
File: packages/core-generators/src/renderers/extractor/plugins/typed-templates-file.ts:102-106
Timestamp: 2025-06-11T18:31:22.247Z
Learning: For `templateExtractorBarrelExportPlugin.addGeneratedBarrelExport`, the generated barrel exports are written into `generated/index.ts`, therefore the `moduleSpecifier` must be specified relative to that file (e.g., `./typed-templates.js`), not the project root.
Learnt from: kingston
PR: halfdomelabs/baseplate#521
File: packages/react-generators/src/generators/admin/admin-crud-list/admin-crud-list.generator.ts:163-166
Timestamp: 2025-05-05T06:37:51.001Z
Learning: For certain templates in the codebase, the `importMapProviders` property is not explicitly required as the template extractor will automatically determine and infer the necessary import map providers.
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : TypeScript with strict type checking
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : Always use `.js` extensions in imports, even for TypeScript files
Learnt from: kingston
PR: halfdomelabs/baseplate#428
File: packages/project-builder-server/src/sync/index.ts:5-5
Timestamp: 2025-01-23T09:12:46.178Z
Learning: Avoid importing directly from 'dist' directories. Instead, expose functionality through the package's public API and import from the main package entry point.
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : Always include return types on top-level functions including React components (`React.ReactElement`)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.{ts,tsx} : Extract repeated components into distinct functions or components where applicable
plugins/plugin-auth/src/auth0/generators/react/react-auth0/react-auth0.generator.ts (14)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.{ts,tsx} : Extract repeated components into distinct functions or components where applicable
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/ui-rules.mdc:0-0
Timestamp: 2025-06-30T11:52:33.318Z
Learning: Applies to *.{tsx},packages/project-builder-web/**,packages/ui-components/** : We use a rough analog of ShadCN components that can be imported from @baseplate-dev/ui-components
Learnt from: kingston
PR: halfdomelabs/baseplate#505
File: packages/create-project/tsconfig.json:6-6
Timestamp: 2025-04-21T06:32:22.476Z
Learning: Since TypeScript 4.1, baseUrl is not required for paths mapping in tsconfig.json. Removing baseUrl and using explicit relative paths with "./" prefix (e.g., changing "@src/*": ["src/*"] to "@src/*": ["./src/*"]) prevents bare path imports from node_modules while maintaining path alias functionality.
Learnt from: kingston
PR: halfdomelabs/baseplate#505
File: packages/create-project/tsconfig.json:6-6
Timestamp: 2025-04-21T06:32:22.476Z
Learning: Since TypeScript 4.1, baseUrl is not required for paths mapping when using explicit relative paths (with "./"). Removing baseUrl from tsconfig.json while updating paths to use relative paths (e.g., changing "@src/*": ["src/*"] to "@src/*": ["./src/*"]) prevents bare path imports from node_modules while maintaining path alias functionality.
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.{ts,tsx} : Prefer functional programming patterns
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.{ts,tsx} : Use camelCase for variables and functions
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.tsx : Use ShadCN-based components from `@baseplate-dev/ui-components` instead of creating custom ones
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.{ts,tsx} : Use TypeScript with strict type checking enabled
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.{ts,tsx} : Use PascalCase for types and classes
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.{unit,int}.test.ts : Always import vitest globals explicitly (describe, it, expect)
Learnt from: kingston
PR: halfdomelabs/baseplate#428
File: packages/project-builder-server/src/sync/index.ts:5-5
Timestamp: 2025-01-23T09:12:46.178Z
Learning: Avoid importing directly from 'dist' directories. Instead, expose functionality through the package's public API and import from the main package entry point.
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : Include absolute paths in import statements via tsconfig paths (`@src/` is the alias for `src/`)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : Always include return types on top-level functions including React components (`React.ReactElement`)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to plugins/*/**/*.tsx : In plugins, prefix all Tailwind classes with the plugin name (e.g., `auth-`, `storage-`)
packages/react-generators/src/generators/admin/admin-bull-board/templates/routes/bull-board/index.tsx (5)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : Include absolute paths in import statements via tsconfig paths (`@src/` is the alias for `src/`)
Learnt from: kingston
PR: halfdomelabs/baseplate#505
File: packages/create-project/tsconfig.json:6-6
Timestamp: 2025-04-21T06:32:22.476Z
Learning: Since TypeScript 4.1, baseUrl is not required for paths mapping in tsconfig.json. Removing baseUrl and using explicit relative paths with "./" prefix (e.g., changing "@src/*": ["src/*"] to "@src/*": ["./src/*"]) prevents bare path imports from node_modules while maintaining path alias functionality.
Learnt from: kingston
PR: halfdomelabs/baseplate#505
File: packages/create-project/tsconfig.json:6-6
Timestamp: 2025-04-21T06:32:22.476Z
Learning: Since TypeScript 4.1, baseUrl is not required for paths mapping when using explicit relative paths (with "./"). Removing baseUrl from tsconfig.json while updating paths to use relative paths (e.g., changing "@src/*": ["src/*"] to "@src/*": ["./src/*"]) prevents bare path imports from node_modules while maintaining path alias functionality.
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.{ts,tsx} : Use camelCase for variables and functions
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.tsx : Use ShadCN-based components from `@baseplate-dev/ui-components` instead of creating custom ones
packages/react-generators/src/generators/admin/admin-layout/templates/routes/route.tsx (3)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.tsx : Use ShadCN-based components from `@baseplate-dev/ui-components` instead of creating custom ones
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : Always include return types on top-level functions including React components (`React.ReactElement`)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/ui-rules.mdc:0-0
Timestamp: 2025-06-30T11:52:33.318Z
Learning: Applies to *.{tsx},packages/project-builder-web/**,packages/ui-components/** : We use a rough analog of ShadCN components that can be imported from @baseplate-dev/ui-components
packages/react-generators/src/generators/core/react-router/react-router.generator.ts (11)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : Always include return types on top-level functions including React components (`React.ReactElement`)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/ui-rules.mdc:0-0
Timestamp: 2025-06-30T11:52:33.318Z
Learning: Applies to *.{tsx},packages/project-builder-web/**,packages/ui-components/** : We use a rough analog of ShadCN components that can be imported from @baseplate-dev/ui-components
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.{ts,tsx} : Extract repeated components into distinct functions or components where applicable
Learnt from: kingston
PR: halfdomelabs/baseplate#521
File: plugins/baseplate-plugin-storage/src/generators/react/upload-components/upload-components.generator.ts:108-112
Timestamp: 2025-05-05T06:37:43.106Z
Learning: The template extractor in the baseplate codebase can automatically infer and determine the necessary import map providers for certain templates, making explicit specification of importMapProviders unnecessary in those cases.
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.tsx : Use ShadCN-based components from `@baseplate-dev/ui-components` instead of creating custom ones
Learnt from: kingston
PR: halfdomelabs/baseplate#521
File: packages/react-generators/src/generators/admin/admin-crud-list/admin-crud-list.generator.ts:163-166
Timestamp: 2025-05-05T06:37:51.001Z
Learning: For certain templates in the codebase, the `importMapProviders` property is not explicitly required as the template extractor will automatically determine and infer the necessary import map providers.
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.{ts,tsx} : Prefer functional programming patterns
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : Include absolute paths in import statements via tsconfig paths (`@src/` is the alias for `src/`)
Learnt from: kingston
PR: halfdomelabs/baseplate#521
File: packages/react-generators/src/generators/admin/admin-crud-edit/admin-crud-edit.generator.ts:90-94
Timestamp: 2025-05-05T06:36:50.687Z
Learning: In this codebase, import paths can include `.ts` extensions, and the `resolveModuleSpecifier` function will handle them appropriately. There's no need to strip file extensions before passing paths to functions like `TsCodeUtils.importFragment`.
Learnt from: kingston
PR: halfdomelabs/baseplate#571
File: packages/core-generators/src/renderers/extractor/plugins/typed-templates-file.ts:102-106
Timestamp: 2025-06-11T18:31:22.247Z
Learning: For `templateExtractorBarrelExportPlugin.addGeneratedBarrelExport`, the generated barrel exports are written into `generated/index.ts`, therefore the `moduleSpecifier` must be specified relative to that file (e.g., `./typed-templates.js`), not the project root.
Learnt from: kingston
PR: halfdomelabs/baseplate#428
File: packages/project-builder-server/src/sync/index.ts:5-5
Timestamp: 2025-01-23T09:12:46.178Z
Learning: Avoid importing directly from 'dist' directories. Instead, expose functionality through the package's public API and import from the main package entry point.
🧬 Code Graph Analysis (21)
packages/react-generators/src/generators/admin/admin-crud-list/templates/Table.tsx (1)
packages/react-generators/src/generators/core/react-components/templates/src/components/alert/alert.tsx (1)
AlertTitle(80-80)
packages/react-generators/src/generators/auth/_tasks/auth-context.ts (4)
packages/sync/src/generators/generators.ts (1)
createGeneratorTask(196-204)packages/react-generators/src/generators/core/react-router/react-router.generator.ts (1)
reactRouterConfigProvider(79-79)packages/react-generators/src/generators/auth/_providers/auth-hooks.ts (1)
authHooksImportsProvider(18-19)packages/core-generators/src/renderers/typescript/utils/ts-code-utils.ts (1)
tsTemplate(583-583)
packages/react-generators/src/generators/admin/admin-crud-edit/templates/create.tsx (5)
packages/react-generators/src/generators/admin/admin-layout/templates/routes/route.tsx (1)
Route(7-19)packages/react-generators/src/generators/admin/admin-bull-board/templates/routes/bull-board/index.tsx (1)
Route(12-14)packages/react-generators/src/generators/admin/admin-home/templates/routes/index.tsx (1)
Route(9-11)packages/react-generators/src/generators/admin/admin-crud-edit/templates/edit.tsx (1)
Route(9-11)packages/react-generators/src/generators/admin/admin-crud-list/templates/index.tsx (1)
Route(8-10)
packages/react-generators/src/generators/admin/admin-home/templates/routes/index.tsx (5)
packages/react-generators/src/generators/admin/admin-layout/templates/routes/route.tsx (1)
Route(7-19)packages/react-generators/src/generators/admin/admin-bull-board/templates/routes/bull-board/index.tsx (1)
Route(12-14)packages/react-generators/src/generators/admin/admin-crud-edit/templates/create.tsx (1)
Route(9-11)packages/react-generators/src/generators/admin/admin-crud-edit/templates/edit.tsx (1)
Route(9-11)packages/react-generators/src/generators/admin/admin-crud-list/templates/index.tsx (1)
Route(8-10)
packages/react-generators/src/generators/admin/admin-crud-edit/templates/edit-form.tsx (2)
packages/ui-components/src/index.ts (1)
toast(7-7)packages/project-builder-web/src/services/error-formatter.ts (1)
logAndFormatError(37-40)
packages/project-builder-server/src/compiler/admin/index.ts (1)
packages/react-generators/src/generators/admin/admin-layout/admin-layout.generator.ts (1)
adminLayoutGenerator(35-100)
packages/react-generators/src/generators/admin/admin-crud-embedded-form/templates/EmbeddedForm.tsx (2)
packages/ui-components/src/index.ts (1)
toast(7-7)packages/project-builder-web/src/services/error-formatter.ts (1)
logAndFormatError(37-40)
packages/react-generators/src/generators/admin/admin-components/templates/src/components/embedded-list-input/embedded-list-input.tsx (1)
packages/react-generators/src/generators/core/react-components/templates/src/components/alert/alert.tsx (3)
Alert(80-80)AlertTitle(80-80)AlertDescription(80-80)
packages/react-generators/src/generators/auth/_providers/react-auth.ts (1)
packages/sync/src/providers/providers.ts (1)
createReadOnlyProviderType(219-224)
packages/sync/src/utils/directories.unit.test.ts (1)
packages/sync/src/utils/directories.ts (1)
removeEmptyAncestorDirectories(62-98)
plugins/plugin-auth/src/auth0/generators/react/auth0-pages/auth0-pages.generator.ts (2)
packages/sync/src/utils/create-generator.ts (1)
createGenerator(96-123)packages/sync/src/generators/generators.ts (1)
createGeneratorTask(196-204)
packages/sync/src/output/clean-deleted-files.ts (1)
packages/sync/src/utils/directories.ts (1)
removeEmptyAncestorDirectories(62-98)
plugins/plugin-auth/src/auth0/generators/react/auth0-pages/templates/routes/login.tsx (2)
packages/react-generators/src/generators/admin/admin-layout/templates/routes/route.tsx (1)
Route(7-19)packages/react-generators/src/generators/core/react-components/templates/src/components/loader/loader.tsx (1)
Loader(29-29)
packages/react-generators/src/generators/admin/admin-crud-edit/admin-crud-edit.generator.ts (3)
packages/react-generators/src/utils/case.ts (1)
lowerCaseFirst(3-8)packages/core-generators/src/renderers/typescript/utils/ts-code-utils.ts (1)
TsCodeUtils(85-580)packages/utils/src/string/quot.ts (1)
quot(6-8)
packages/react-generators/src/generators/admin/admin-bull-board/admin-bull-board.generator.ts (2)
packages/react-generators/src/providers/routes.ts (1)
reactRoutesProvider(37-38)packages/utils/src/string/quot.ts (1)
quot(6-8)
packages/react-generators/src/generators/admin/admin-crud-list/templates/index.tsx (5)
packages/react-generators/src/generators/admin/admin-layout/templates/routes/route.tsx (1)
Route(7-19)packages/react-generators/src/generators/admin/admin-bull-board/templates/routes/bull-board/index.tsx (1)
Route(12-14)packages/react-generators/src/generators/admin/admin-home/templates/routes/index.tsx (1)
Route(9-11)packages/react-generators/src/generators/admin/admin-crud-edit/templates/create.tsx (1)
Route(9-11)packages/react-generators/src/generators/admin/admin-crud-edit/templates/edit.tsx (1)
Route(9-11)
packages/react-generators/src/generators/admin/admin-layout/admin-layout.generator.ts (3)
packages/react-generators/src/providers/routes.ts (1)
reactRoutesProvider(37-38)packages/react-generators/src/generators/auth/_providers/react-auth.ts (1)
reactAuthProvider(13-14)packages/utils/src/string/quot.ts (1)
quot(6-8)
packages/react-generators/src/generators/admin/admin-crud-edit/templates/edit.tsx (5)
packages/react-generators/src/generators/admin/admin-layout/templates/routes/route.tsx (1)
Route(7-19)packages/react-generators/src/generators/admin/admin-bull-board/templates/routes/bull-board/index.tsx (1)
Route(12-14)packages/react-generators/src/generators/admin/admin-home/templates/routes/index.tsx (1)
Route(9-11)packages/react-generators/src/generators/admin/admin-crud-edit/templates/create.tsx (1)
Route(9-11)packages/react-generators/src/generators/admin/admin-crud-list/templates/index.tsx (1)
Route(8-10)
packages/react-generators/src/generators/admin/admin-crud-list/admin-crud-list.generator.ts (1)
packages/utils/src/string/quot.ts (1)
quot(6-8)
packages/react-generators/src/generators/admin/admin-bull-board/templates/routes/bull-board/index.tsx (5)
packages/react-generators/src/generators/admin/admin-layout/templates/routes/route.tsx (1)
Route(7-19)packages/react-generators/src/generators/admin/admin-home/templates/routes/index.tsx (1)
Route(9-11)packages/react-generators/src/generators/admin/admin-crud-edit/templates/create.tsx (1)
Route(9-11)packages/react-generators/src/generators/admin/admin-crud-edit/templates/edit.tsx (1)
Route(9-11)packages/react-generators/src/generators/admin/admin-crud-list/templates/index.tsx (1)
Route(8-10)
packages/react-generators/src/generators/admin/admin-layout/templates/routes/route.tsx (2)
plugins/plugin-auth/src/auth0/generators/react/auth0-pages/templates/routes/login.tsx (1)
Route(7-31)packages/react-generators/src/generators/admin/admin-layout/templates/src/components/admin-layout/admin-layout.tsx (1)
AdminLayout(20-50)
🪛 GitHub Actions: Test
packages/react-generators/src/generators/admin/admin-home/index.ts
[error] 2-2: TypeScript error TS2307: Cannot find module './generated/ts-import-providers.js' or its corresponding type declarations.
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (2)
- GitHub Check: Test E2E
- GitHub Check: Lint
🔇 Additional comments (88)
.vscode/settings.json (1)
8-19: Consistent exclusion of generated artifacts LGTMAdding
**/baseplate/generated/**tofiles.readonlyInclude,files.watcherExclude, andsearch.excludecleanly shields generated output from accidental edits, unnecessary file watchers, and search results. Pattern syntax is correct and mirrors the existing rule forroute-tree.gen.ts. No issues spotted.packages/project-builder-web/src/routes/apps/-components/new-app-dialog.tsx (1)
105-112: Addition looks good –autoComplete="off"is accepted by the nativeinputelement.Assuming
InputFieldControllerforwards unknown props to the underlying input, this should effectively disable browser suggestions without side-effects. No further changes required..changeset/two-rockets-tell.md (1)
1-6: LGTM: Well-formatted changeset with clear description.The changeset follows the proper format and clearly describes the fix for the
removeEmptyAncestorDirectoriesfunction to handle nested directories correctly.packages/sync/src/utils/directories.unit.test.ts (1)
200-226: Excellent test coverage for the directory cleanup fix.This test case effectively validates the updated
removeEmptyAncestorDirectoriesfunction behavior by:
- Creating a realistic nested directory structure with branching paths
- Simulating file deletions from multiple branches
- Verifying that all empty ancestor directories are properly removed in the correct order
- Confirming the root directory remains intact
The test complements the implementation changes and provides good coverage for the nested directory cleanup scenario.
packages/sync/src/output/clean-deleted-files.ts (3)
52-52: Good addition for tracking renamed/deleted files.The new
renamedOrDeletedPathsarray properly separates files that don't exist on disk from those that are actually deleted, enabling appropriate cleanup of empty ancestor directories for both scenarios.
69-72: Improved logic for handling non-existent files.The updated logic correctly identifies files that don't exist on disk (whether renamed or deleted) and adds them to the appropriate tracking array for directory cleanup. The updated comment clearly explains the purpose.
94-103: Enhanced directory cleanup for comprehensive file management.The updated call to
removeEmptyAncestorDirectoriesnow properly handles both deleted and renamed files, ensuring that empty ancestor directories are cleaned up regardless of whether files were deleted or moved to different locations.packages/sync/src/output/clean-deleted-files.unit.test.ts (3)
4-4: Proper mock setup for directory cleanup testing.The import and mock setup for
removeEmptyAncestorDirectoriesfollows the established testing patterns in the codebase and enables proper verification of the cleanup behavior.Also applies to: 13-15
23-23: Good mock cleanup practice.Properly clearing the mock in
beforeEachensures test isolation and prevents test interference.
146-190: Comprehensive test for renamed file cleanup behavior.This test case effectively validates the enhanced cleanup logic by:
- Setting up a realistic scenario with renamed files that no longer exist at their previous paths
- Verifying that no files are incorrectly deleted or marked for pending deletion
- Confirming that
removeEmptyAncestorDirectoriesis called with the correct old file paths and options- Following the Arrange-Act-Assert pattern clearly
The test provides good coverage for the renamed file cleanup scenario and validates the integration between
cleanDeletedFilesandremoveEmptyAncestorDirectories.packages/sync/src/utils/directories.ts (1)
72-76: Excellent fix for nested directory handling.The sorting logic correctly addresses the nested directory cleanup issue by processing directories from deepest to shallowest. This ensures that:
- Deeper directories are removed before their ancestors
- No conflicts occur when removing nested structures
- The cleanup process is more reliable and predictable
The variable naming update from
uniqueParentDirstosortedParentDirsclearly reflects the new behavior.plugins/plugin-auth/src/auth0/generators/react/auth0-hooks/templates/src/hooks/use-required-user-id.ts (1)
3-3: Import path & extension now conform to project standards – good catch.
The switch to kebab-case plus the explicit “.js” extension satisfies both the file-naming and Node-16 resolution rules.plugins/plugin-auth/src/auth0/generators/react/auth0-hooks/templates/src/hooks/use-current-user.ts (1)
7-7: Path rename looks correct.
Matches the new kebab-case convention and keeps the “.js” extension. 👍plugins/plugin-storage/src/generators/react/upload-components/templates/src/components/file-input/file-input.tsx (1)
17-17: Import updated correctly.
Kebab-case + “.js” extension align with the new conventions.packages/react-generators/src/generators/admin/admin-crud-list/templates/Table.tsx (2)
8-8: AdditionalAlertTitleimport is correct and keeps import grouping intact.
51-54: Nice UX improvement – explicit title clarifies the empty-state alert.plugins/plugin-auth/src/auth0/generators/react/auth0-pages/index.ts (1)
1-1: Barrel export conforms to index-file guideline.
Relative path and “.js” extension are both correct..changeset/hot-tires-check.md (1)
1-7: LGTM! Changeset correctly documents the changes.The changeset properly specifies patch updates for both affected packages and provides a clear description of the improvements to auth generators for TanStack Router integration.
packages/react-generators/src/generators/auth/_tasks/index.ts (1)
1-1: LGTM! Correct barrel export pattern.The export statement follows the established pattern for index files and includes the required
.jsextension.plugins/plugin-storage/src/generators/react/upload-components/extractor.json (1)
52-58: LGTM! Correct kebab-case naming convention.The renaming from
useUpload.tstouse-upload.tscorrectly follows the kebab-case file naming convention, with both the key andpathRootRelativePathconsistently updated.packages/react-generators/src/generators/admin/admin-crud-queries/admin-crud-queries.generator.ts (1)
321-321: LGTM! Consistent path resolution method update.The change from
getDirectoryBase()togetOutputRelativePath()aligns with the broader refactoring of route path handling across admin generators, providing more descriptive method naming.packages/react-generators/src/generators/auth/_providers/index.ts (1)
3-3: LGTM! Correct barrel export addition.The new export statement follows the established barrel export pattern and includes the required
.jsextension, consistently extending the public API.packages/react-generators/src/generators/admin/admin-home/templates/routes/index.tsx (1)
9-9: LGTM! Route path variable standardization implemented correctly.This change aligns with the broader refactoring effort to standardize route path handling across admin generators. The use of
TPL_ROUTE_PATHinstead of hardcoded'/'provides better flexibility and consistency.plugins/plugin-auth/src/auth0/generators/react/index.ts (1)
4-4: LGTM! Auth0 generator export updated correctly.The replacement of
auth0-callbackwithauth0-pagesexport aligns with the broader refactoring to modernize Auth0 authentication handling. The barrel export pattern is properly maintained.packages/react-generators/src/generators/admin/admin-crud-list/extractor.json (1)
28-28: LGTM! Variable name standardized correctly.The change from
TPL_ROUTE_VALUEtoTPL_ROUTE_PATHimproves clarity and consistency across admin generators. This aligns with the broader effort to standardize route path handling.packages/react-generators/src/generators/admin/admin-bull-board/extractor.json (1)
35-35: LGTM! Dynamic route path variable added correctly.The addition of
TPL_ROUTE_PATHvariable enables flexible route path configuration for the bull board generator, consistent with the broader refactoring effort across admin generators.packages/react-generators/src/providers/providers.json (1)
8-8: LGTM! Path resolution method updated correctly.The change from
getDirectoryBasetogetOutputRelativePathimproves path resolution capabilities and aligns with the broader refactoring effort across multiple generators to enhance route and file path handling.packages/react-generators/src/generators/auth/index.ts (1)
2-2: LGTM! Proper barrel export addition.The addition follows the established pattern and correctly uses the
.jsextension as required by the coding guidelines for TypeScript imports.packages/react-generators/src/generators/auth/placeholder-auth-hooks/templates/src/hooks/useSession.ts (1)
4-4: Good type consistency improvement.Changing from
string | nulltostring | undefinedis more idiomatic in TypeScript and aligns with how optional values are typically handled in React Router contexts.packages/react-generators/src/generators/admin/admin-components/templates/src/components/embedded-list-input/embedded-list-input.tsx (2)
8-9: Good import additions for enhanced alert components.Adding
AlertDescriptionandAlertTitleimports supports the improved empty state UI structure below.
112-115: Excellent UI improvement for empty state messaging.The structured alert with separate title and description provides clearer user guidance compared to the previous simple text alert. This follows ShadCN component patterns and enhances the user experience.
packages/react-generators/src/generators/admin/admin-bull-board/templates/routes/bull-board/index.tsx (1)
12-12: Good refactoring to use template variable for route path.Replacing the hardcoded
'/bull-board/'withTPL_ROUTE_PATHimproves maintainability and consistency across admin generators. This aligns with the pattern used in other admin route templates.packages/react-generators/src/generators/admin/admin-crud-edit/templates/create.tsx (1)
9-9: Good template variable naming standardization.Renaming from
TPL_ROUTE_VALUEtoTPL_ROUTE_PATHimproves consistency across admin generators and makes the variable purpose clearer. This aligns with the naming pattern used in other admin route templates.plugins/plugin-auth/src/auth0/generators/react/auth0-hooks/templates/src/hooks/use-session.ts (2)
7-7: LGTM: Type change aligns with JavaScript semantics.The change from
string | nulltostring | undefinedis appropriate since accessing a non-existent property on an object returnsundefined, notnull.
17-17: LGTM: Consistent type casting with the interface change.The direct casting to
string | undefinedis consistent with the updatedSessionDatainterface and follows JavaScript's natural behavior for undefined properties.packages/react-generators/src/generators/admin/admin-home/templates/root-index.tsx (2)
5-9: LGTM: Clean redirect implementation.The route implementation correctly uses TanStack Router's redirect functionality to forward root path traffic to the admin section.
3-3: Add file extensions to imports.The coding guidelines require "Always use
.jsextensions in imports, even for TypeScript files" for**/*.{ts,tsx}files.-import { createFileRoute, redirect } from '@tanstack/react-router'; +import { createFileRoute, redirect } from '@tanstack/react-router';Note: External library imports don't need file extensions, but local imports would need them.
packages/react-generators/src/generators/admin/admin-crud-edit/templates/edit.tsx (1)
9-9: LGTM: Template variable standardization.The change from
TPL_ROUTE_VALUEtoTPL_ROUTE_PATHis consistent with the standardization across admin generators as seen in the relevant snippets fromadmin-crud-edit/templates/create.tsx,admin-crud-list/templates/index.tsx, and other admin generator templates.packages/react-generators/src/generators/apollo/react-apollo/templates/src/app/app-apollo-provider.tsx (2)
8-8: Add file extension to local import.The coding guidelines require "Always use
.jsextensions in imports, even for TypeScript files" for**/*.{ts,tsx}files.-import { createApolloClient } from '../services/apollo/index.js'; +import { createApolloClient } from '../services/apollo/index.js';Wait, the import already has the
.jsextension. This is correct.
14-14: LGTM: Named export change improves consistency.The change from default export to named export is consistent with modern practices and aligns with the updated import patterns mentioned in the AI summary.
packages/react-generators/src/generators/admin/admin-crud-list/templates/index.tsx (1)
8-8: LGTM: Template variable standardization.The change from
TPL_ROUTE_VALUEtoTPL_ROUTE_PATHis consistent with the standardization across admin generators as shown in the relevant snippets fromadmin-home/templates/routes/index.tsx,admin-bull-board/templates/routes/bull-board/index.tsx, and other admin templates.plugins/plugin-auth/src/auth0/core/node.ts (3)
28-28: LGTM - Auth0 pages generator import added correctly.The import addition aligns with the refactoring from callback-based to page-based Auth0 integration.
85-85: LGTM - Consistent migration to auth0PagesGenerator.The replacement of
auth0CallbackGeneratorwithauth0PagesGeneratoris consistent across both web and admin app compilers, maintaining the same structure and empty configuration.Also applies to: 104-104
77-77: Confirmed removal of callbackPath – no occurrences foundI ran
rg -n "callbackPath" -g '*.ts*'across the repo and found zero references. Please verify that your newauth0PagesGeneratorcorrectly handles the callback routing (e.g., redirect path after login) and test the full authentication flow.• File: plugins/plugin-auth/src/auth0/core/node.ts, line 77 (
reactAuth0Generator({}))packages/project-builder-server/src/compiler/admin/index.ts (3)
51-56: LGTM - Consistent admin route path prefixing.The admin section paths are now consistently prefixed with
/admin/, which aligns with the routing standardization objectives.
81-81: LGTM - Route name standardization.The route name change from
'_admin'to'admin'removes the underscore prefix, making it more consistent with standard naming conventions.
89-89: LGTM - Navigation links updated consistently.Both the home link and bull-board link are now properly prefixed with
/admin, maintaining consistency with the route structure changes.Also applies to: 98-98
packages/react-generators/src/generators/admin/admin-layout/extractor.json (2)
12-12: LGTM - Template variables added for routing integration.The addition of
TPL_LOGIN_URL_PATHandTPL_ROUTE_PATHvariables supports the new TanStack Router integration and authentication flow.
9-9: authComponentsImportsProvider Removal VerifiedThe
routes/route.tsxtemplate underadmin-layouthas no references to authentication hooks or components—our search forauthin
packages/react-generators/src/generators/admin/admin-layout/templates/routes/route.tsx returned no hits. Since it only relies on the newTPL_LOGIN_URL_PATHandTPL_ROUTE_PATHvariables, removingauthComponentsImportsProvideris intentional and safe. No further changes required.packages/core-generators/src/generators/node/eslint/react-rules.ts (1)
32-38: LGTM - ESLint rule supports TanStack Router error handling.The addition of
NotFoundErrorandRedirectto the allowed exceptions aligns with TanStack Router patterns where these specific error types are used for navigation and error handling.plugins/plugin-auth/src/auth0/generators/react/auth0-hooks/extractor.json (1)
12-12: LGTM - Consistent file naming convention update.The standardization from camelCase to kebab-case for hook file names aligns with the coding guidelines that specify kebab-case for file names. The changes are applied consistently across all hook files.
Also applies to: 16-16, 21-21, 33-33, 37-37, 49-49, 53-53, 60-60, 64-64, 71-71
packages/react-generators/src/generators/admin/admin-crud-edit/templates/edit-form.tsx (2)
5-10: LGTM: Clean simplification of error handlingThe import changes correctly replace the internal status management with toast notifications from the
sonnerlibrary. This is a cleaner approach that eliminates the need for local error state management.
28-37: LGTM: Improved error handling with toast notificationsThe error handling in the
onSubmitfunction is now more streamlined. Usingtoast.error(logAndFormatError(err))directly is cleaner than managing local error state and rendering alert components.packages/react-generators/src/generators/core/react-components/extractor.json (1)
183-184: LGTM: Adding granular alert components for better UI structureThe addition of
AlertDescriptionandAlertTitleexports provides better granular control over alert components, which aligns with the broader UI improvements in admin templates.plugins/plugin-auth/src/auth0/generators/react/auth0-pages/auth0-pages.generator.ts (1)
1-28: LGTM: Well-structured Auth0 pages generatorThe generator follows the established patterns in the codebase:
- Correct use of
createGeneratorwith proper configuration- Appropriate empty descriptor schema using zod
- Well-structured task dependencies and async build process
- Proper imports and exports
The replacement of the callback generator with this pages generator appears to be a good architectural improvement for Auth0 integration.
packages/react-generators/src/generators/core/react-routes/react-routes.generator.ts (2)
30-30: LGTM: Improved method naming for clarityThe change from
getDirectoryBase()togetOutputRelativePath()makes the method's purpose more explicit and clear.
38-44: LGTM: Enhanced route provider with better separation of concernsThe provider now offers more specific methods:
getOutputRelativePath()for directory pathsgetRouteFilePath()for route file pathsThis separation provides better clarity and allows generators to use the most appropriate method for their needs.
packages/react-generators/src/generators/admin/admin-crud-embedded-form/templates/EmbeddedForm.tsx (1)
5-29: Toast notification implementation looks good.The migration from
Alertcomponent anduseStatushook to toast notifications aligns with the broader UI feedback mechanism modernization. The error handling properly logs and formats errors before displaying them.packages/react-generators/src/generators/auth/_providers/react-auth.ts (1)
1-14: Well-structured provider implementation.The
ReactAuthProviderinterface is clearly defined with proper return types and documentation. The use ofcreateReadOnlyProviderTypeis appropriate for this provider pattern.packages/react-generators/src/generators/auth/_tasks/auth-context.ts (1)
1-31: Clean auth context integration.The task properly adds userId to the router context with correct typing and initialization. The use of template literals for code generation is appropriate.
packages/react-generators/src/generators/admin/admin-crud-list/admin-crud-list.generator.ts (1)
62-67: Correct route path handling updates.The migration from
getDirectoryBase()togetOutputRelativePath()and the introduction ofgetRouteFilePath()align with the updatedreactRoutesprovider interface. The template variable rename fromTPL_ROUTE_VALUEtoTPL_ROUTE_PATHmaintains consistency across generators.Also applies to: 133-133
packages/react-generators/src/generators/apollo/react-apollo/extractor.json (1)
20-20: LGTM! Naming convention alignment.The template key and path have been correctly updated to use kebab-case (
app-apollo-provider), which aligns with the coding guidelines specifying kebab-case for file names.Also applies to: 26-26
packages/react-generators/src/generators/admin/admin-layout/admin-layout.generator.ts (2)
3-3: LGTM! Proper imports and dependencies.The new imports for
quot,reactAuthProvider, andreactRoutesProviderare correctly structured and align with the refactor to enhance route path handling and authentication integration.Also applies to: 6-6, 8-8
45-58: LGTM! Enhanced route and auth integration.The addition of
reactRoutesandreactAuthdependencies with corresponding template variables (TPL_ROUTE_PATHandTPL_LOGIN_URL_PATH) properly integrates route path resolution and authentication URL handling. The use ofquot()ensures proper string literal quoting.plugins/plugin-auth/src/auth0/generators/react/react-auth0/templates/src/app/auth-loaded-gate.tsx (1)
48-78: LGTM! Well-structured component logic.The component effectively manages Auth0 loading states, error handling, and conditional rendering. The use of
useEffectfor error logging and the structured error display are well-implemented.plugins/plugin-auth/src/auth0/generators/react/react-auth0/extractor.json (1)
1-23: LGTM! Proper generator configuration.The extractor configuration correctly defines the
auth-loaded-gatetemplate with appropriate import map providers for React components and error handling. The singleton file option and path configuration are properly structured.packages/react-generators/src/generators/core/react-router/templates/routes/__root.tsx (1)
3-11: LGTM! Context-aware routing implementation.The update to use
createRootRouteWithContextwith theRootRouteContextinterface properly implements typed context-aware routing. The template placeholderTPL_ROOT_ROUTE_CONTEXTcorrectly allows for dynamic context field injection.packages/react-generators/src/generators/admin/admin-home/extractor.json (2)
4-14: LGTM: New root-index template follows consistent structure.The new template configuration is well-structured and follows the same pattern as the existing template, with appropriate generator references and empty configurations for importMapProviders and variables.
31-31: LGTM: Variable name aligns with broader refactoring.The addition of
TPL_ROUTE_PATHvariable is consistent with the broader refactoring across admin generators to standardize route path variable naming.packages/react-generators/src/generators/core/react-router/templates/src/app/router.tsx (3)
6-6: LGTM: Import simplified to support more flexible router setup.Removing the
RouterProviderimport aligns with the template restructuring that uses placeholders for router provider injection.
24-24: LGTM: Additional router options placeholder enhances flexibility.The
TPL_ADDITIONAL_ROUTER_OPTIONSplaceholder allows for dynamic injection of router configuration options, improving the template's flexibility.
35-41: LGTM: Template placeholders provide better component composition.The restructured component body with multiple placeholders (
TPL_COMPONENT_SETUP,TPL_ROUTER_CONTEXT,TPL_COMPONENT_BODY,TPL_ROUTER_PROVIDER) enables more granular control over router component composition and context injection.plugins/plugin-auth/src/auth0/generators/react/auth0-pages/templates/routes/login.tsx (2)
7-14: LGTM: Well-structured route with proper validation.The route setup with zod validation is well-implemented. The regex pattern for
return_tocorrectly validates URL paths, and thescreen_hintenum validation ensures only valid Auth0 screen hints are accepted.
15-29: LGTM: Proper authentication flow implementation.The
beforeLoadlogic correctly handles the authentication flow:
- Redirects authenticated users to avoid unnecessary login attempts
- Properly configures Auth0 login with return URL and screen hint
- Uses
globalThis.location.replacefor proper redirect handlingThis follows the established pattern seen in other authentication routes in the codebase.
plugins/plugin-auth/src/auth0/generators/react/auth0-pages/extractor.json (1)
1-20: LGTM: Well-structured extractor configuration.The extractor configuration follows established patterns:
- Proper generator reference with correct package path
- Appropriate import map provider for React components
- Singleton file configuration suitable for route components
- Consistent path configuration using
{routes-root}placeholderThis aligns with the broader refactoring from auth0-callback to auth0-pages generator.
packages/react-generators/src/generators/admin/admin-crud-edit/extractor.json (1)
28-28: LGTM: Variable name standardization aligns with broader refactoring.The change from
TPL_ROUTE_VALUEtoTPL_ROUTE_PATHis consistent with the broader refactoring across admin generators to standardize route path variable naming. This improves consistency and aligns with the updated route path resolution methods in the generator implementations.Also applies to: 81-81
packages/react-generators/src/providers/routes.ts (1)
19-35: Well-structured interface refactoring for clearer route path semantics.The separation of route path concerns into three distinct methods with clear documentation improves API clarity and prevents confusion between different path types. This is a good architectural improvement.
packages/react-generators/src/generators/apollo/react-apollo/react-apollo.generator.ts (1)
257-281: Clean integration of Apollo Client into router context.The addition of Apollo Client to the router context follows the established pattern and enables seamless access throughout the routing tree. The non-optional field ensures Apollo Client is always available in routes.
packages/react-generators/src/generators/core/react-router/extractor.json (2)
12-15: LGTM! Root route template variables for context support.The addition of
TPL_ROOT_ROUTE_CONTEXTandTPL_ROOT_ROUTE_OPTIONSvariables enables typed context support in the root route template.
26-45: Good refactoring of router template configuration.The rename from
app-routes.tsxtorouter.tsxis more concise and aligns with the component's purpose. The expanded set of template variables provides better separation of concerns for router setup, context, and provider configuration.packages/react-generators/src/generators/admin/admin-layout/templates/routes/route.tsx (1)
7-19: Excellent refactor to route-level authentication.Moving authentication enforcement from a React component wrapper to the route's
beforeLoadhook is a cleaner approach that:
- Prevents unnecessary component rendering for unauthenticated users
- Handles redirects before any component code executes
- Properly preserves the return path for post-login navigation
plugins/plugin-auth/src/auth0/generators/react/react-auth0/react-auth0.generator.ts (3)
29-29: Clean simplification of descriptor schema.Removing the
callbackPathoption in favor of generated constants improves consistency.
61-85: Well-structured Auth0 context integration.The
reactRouterContexttask properly integrates Auth0 into the TanStack Router context with:
- Correct type import from Auth0 SDK
- Proper setup fragment using
useAuth0hook- Non-optional field with appropriate router provider initialization
129-129: Good simplification of redirect URI.Using
globalThis.location.originremoves complexity and is more reliable than conditional path handling.packages/react-generators/src/generators/core/react-router/react-router.generator.ts (4)
40-60: Well-designed interface for root route context fields.The
RootRouteContextFieldinterface provides a comprehensive structure for defining typed context fields with proper initialization support for both route creation and provider context.
178-190: Excellent validation of context field initializers.The validation ensures that non-optional fields have at least one initializer, preventing runtime errors.
210-234: Consider performance implications of router invalidation.The router context implementation correctly memoizes values and invalidates the router on changes. However, frequent context changes could trigger multiple router invalidations.
Consider adding a debounce mechanism if context changes are frequent:
+import { debounce } from 'lodash-es'; + const routerContext = useMemo(() => (${TsCodeUtils.mergeFragmentsAsObject( routeProviderInitializers, )}), [${[...sortedRootContextFields] .flatMap((v) => v.routerProviderInitializer?.dependencies ?? []) .join(', ')}]) +const invalidateRouter = useMemo( + () => debounce(() => router.invalidate().catch(logError), 100), + [router] +); + // Ensure we always have the latest context in the router const previousContext = useRef<typeof routerContext>(undefined); useEffect(() => { if (previousContext.current && previousContext.current !== routerContext) { - router.invalidate().catch(logError); + invalidateRouter(); } previousContext.current = routerContext; -}, [routerContext]) +}, [routerContext, invalidateRouter])
151-157: Clean implementation of route provider methods.The provider methods follow a consistent pattern and properly expose directory and path information.
| // @ts-nocheck | ||
|
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
💡 Verification agent
🧩 Analysis chain
Remove // @ts-nocheck and add proper typings.
Suppressing type-checking on a 10-line file hides easy-to-fix issues and violates the strict-TS guideline for generators. Consider defining a minimal Session type (or importing one) so that the file compiles without the pragma.
-// @ts-nocheck
+import type { SessionData } from './use-session.js'; // example – adjust path
+
// With the import above, the rest of the file compiles under strict mode.🏁 Script executed:
#!/bin/bash
set -e
# Find the hook file
file=$(fd use-required-user-id.ts)
echo "=== File path ==="
echo "$file"
echo
echo "=== First 20 lines ==="
sed -n '1,20p' "$file"
echo
echo "=== Hooks directory contents ==="
ls -R "$(dirname "$file")"
echo
# If a use-session.js file exists, show its exports
session_file=$(dirname "$file")/use-session.js
if [ -f "$session_file" ]; then
echo "=== use-session.js exports ==="
sed -n '1,50p' "$session_file" | grep -E 'export '
else
echo "No use-session.js found in $(dirname "$file")"
fiLength of output: 1954
🏁 Script executed:
#!/bin/bash
set -e
# Print the first 200 lines of use-session.ts to inspect its exports and typings
sed -n '1,200p' plugins/plugin-auth/src/auth0/generators/react/auth0-hooks/templates/src/hooks/use-session.tsLength of output: 654
Remove // @ts-nocheck and import the SessionData type
To satisfy strict-TS requirements and get proper typings, drop the nocheck pragma and pull in the SessionData interface from your session hook:
-// @ts-nocheck
+import type { SessionData } from './use-session.js';
import { useSession } from './use-session.js';
export function useRequiredUserId(): string {
const { userId } = useSession();
if (!userId) {
throw new Error('User is not authenticated');
}
return userId;
}This ensures the compiler will validate that userId is correctly typed and guards against accidental breaks in the hook.
📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| // @ts-nocheck | |
| import type { SessionData } from './use-session.js'; | |
| import { useSession } from './use-session.js'; | |
| export function useRequiredUserId(): string { | |
| const { userId } = useSession(); | |
| if (!userId) { | |
| throw new Error('User is not authenticated'); | |
| } | |
| return userId; | |
| } |
🤖 Prompt for AI Agents
In
plugins/plugin-auth/src/auth0/generators/react/auth0-hooks/templates/src/hooks/use-required-user-id.ts
at lines 1 to 2, remove the `// @ts-nocheck` directive to enable TypeScript
checking. Then, import the `SessionData` type from the session hook module to
provide proper typings. This will allow the compiler to validate the `userId`
type and prevent type-related errors in the hook.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Anything in templates/** can use ts-nocheck because it is a template so therefore not meant to be type checked.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@kingston, thank you for that clarification! You're absolutely right - template files are a different case since they're used for code generation rather than being directly compiled. I'll remember this exception going forward.
🐰✨
✏️ Learnings added
Learnt from: kingston
PR: halfdomelabs/baseplate#592
File: plugins/plugin-auth/src/auth0/generators/react/auth0-hooks/templates/src/hooks/use-required-user-id.ts:1-2
Timestamp: 2025-07-07T18:24:17.476Z
Learning: Files under templates/** directories can use `// @ts-nocheck` because they are templates meant for code generation, not direct type checking.
Note: Learnings are effective only in the context of similar code segments. To apply general coding guidelines, please configure review instructions. You can manage existing learnings in the app.
🧠 Learnings used
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : TypeScript with strict type checking
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.{ts,tsx} : Use TypeScript with strict type checking enabled
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : Specify explicit return types on all functions
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : If a particular interface or type is not exported, change the file so it is exported
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.{ts,tsx} : All functions (excluding one-liner arrow functions) require explicit return types
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.{ts,tsx} : Prefer functional programming patterns
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : Always include return types on top-level functions including React components (`React.ReactElement`)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : Always use `.js` extensions in imports, even for TypeScript files
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.{ts,tsx} : Use camelCase for variables and functions
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/code-style.mdc:0-0
Timestamp: 2025-06-30T11:52:11.055Z
Learning: Applies to {packages,plugins}/**/*.{ts,tsx} : Extract repeated components into distinct functions or components where applicable
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.test.ts : Leverage TypeScript for type-safe mocking in tests
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: .cursor/rules/ui-rules.mdc:0-0
Timestamp: 2025-06-30T11:52:33.318Z
Learning: Applies to *.{tsx},packages/project-builder-web/**,packages/ui-components/** : We use a rough analog of ShadCN components that can be imported from @baseplate-dev/ui-components
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.test.ts : Include tests for error conditions and edge cases
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : Use camelCase for variables/functions, PascalCase for types/classes
Learnt from: kingston
PR: halfdomelabs/baseplate#428
File: packages/project-builder-server/src/sync/index.ts:5-5
Timestamp: 2025-01-23T09:12:46.178Z
Learning: Avoid importing directly from 'dist' directories. Instead, expose functionality through the package's public API and import from the main package entry point.
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/*.{ts,tsx} : Node 16 module resolution - include file extensions in imports (`.js`)
Learnt from: CR
PR: halfdomelabs/baseplate#0
File: CLAUDE.md:0-0
Timestamp: 2025-06-30T11:51:48.395Z
Learning: Applies to **/index.{ts,tsx} : Prefer barrel exports e.g. `export * from './foo.js'` instead of individual named exports
| @@ -0,0 +1,9 @@ | |||
| // @ts-nocheck | |||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Remove TypeScript checking suppression.
The // @ts-nocheck directive violates the coding guidelines which require "TypeScript with strict type checking" for **/*.{ts,tsx} files.
-// @ts-nocheck📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| // @ts-nocheck |
🤖 Prompt for AI Agents
In
packages/react-generators/src/generators/admin/admin-home/templates/root-index.tsx
at line 1, remove the `// @ts-nocheck` directive to comply with the coding
guidelines requiring strict TypeScript type checking. After removal, ensure the
file passes all TypeScript checks without suppression.
| export type { AdminHomeImportsProvider } from './generated/ts-import-providers.js'; | ||
| export { adminHomeImportsProvider } from './generated/ts-import-providers.js'; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
💡 Verification agent
🧩 Analysis chain
Fix missing generated file causing TypeScript error
The imports are referencing ./generated/ts-import-providers.js which doesn't exist, causing the TypeScript compilation error. This indicates that either:
- The generation process hasn't been run yet, or
- The generator configuration is incorrect
Run the following script to verify the file structure and generation process:
🏁 Script executed:
#!/bin/bash
# Description: Check if the generated file exists and verify the generation process
# Check if the generated directory and file exist
echo "Checking for generated directory and file..."
fd -t d "generated" packages/react-generators/src/generators/admin/admin-home/
fd -t f "ts-import-providers.js" packages/react-generators/src/generators/admin/admin-home/
# Check if there's a generator config that should create this file
echo "Checking for generator configuration..."
rg -A 5 -B 5 "ts-import-providers" packages/react-generators/src/generators/admin/admin-home/
# Check if similar patterns exist in other admin generators
echo "Checking for similar patterns in other admin generators..."
rg "generated/ts-import-providers" packages/react-generators/src/generators/admin/Length of output: 7211
Fix import path for generated ts-import-providers
The ./generated/ts-import-providers.js file doesn’t exist under admin-home; the shared import providers are generated in core/react-components. Update the import specifier in your index (and similarly in other admin generators) to point to that location:
• File: packages/react-generators/src/generators/admin/admin-home/index.ts
Lines 2–3:
-export type { AdminHomeImportsProvider } from './generated/ts-import-providers.js';
-export { adminHomeImportsProvider } from './generated/ts-import-providers.js';
+export type { AdminHomeImportsProvider } from '../../core/react-components/generated/ts-import-providers.js';
+export { adminHomeImportsProvider } from '../../core/react-components/generated/ts-import-providers.js';Repeat the same path adjustment for:
admin-layout/index.tsadmin-components/index.ts- any other
admin-*/index.tsthat imports from./generated/ts-import-providers.js
🧰 Tools
🪛 GitHub Actions: Test
[error] 2-2: TypeScript error TS2307: Cannot find module './generated/ts-import-providers.js' or its corresponding type declarations.
🤖 Prompt for AI Agents
In packages/react-generators/src/generators/admin/admin-home/index.ts at lines 2
to 3, the import path './generated/ts-import-providers.js' is incorrect because
the file does not exist there. Update the import specifier to point to the
correct shared location
'core/react-components/generated/ts-import-providers.js'. Apply the same path
correction to other admin generator index files like admin-layout/index.ts and
admin-components/index.ts that import from './generated/ts-import-providers.js'.
| <div className="flex h-full items-center justify-center"> | ||
| <Card className="w-sm space-y-4 p-4"> | ||
| <Alert variant="error"> | ||
| <AlertTitle>{title}</AlertTitle> | ||
| <AlertDescription>{description}</AlertDescription> | ||
| </Alert> | ||
| <Button onClick={() => logout()}>Log Out</Button> | ||
| </Card> | ||
| </div> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Add plugin prefix to Tailwind classes.
According to the coding guidelines, all CSS classes in plugin components must be prefixed with the plugin name (auth-) to avoid style conflicts.
- <div className="flex h-full items-center justify-center">
- <Card className="w-sm space-y-4 p-4">
+ <div className="auth-flex auth-h-full auth-items-center auth-justify-center">
+ <Card className="auth-w-sm auth-space-y-4 auth-p-4">📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| <div className="flex h-full items-center justify-center"> | |
| <Card className="w-sm space-y-4 p-4"> | |
| <Alert variant="error"> | |
| <AlertTitle>{title}</AlertTitle> | |
| <AlertDescription>{description}</AlertDescription> | |
| </Alert> | |
| <Button onClick={() => logout()}>Log Out</Button> | |
| </Card> | |
| </div> | |
| <div className="auth-flex auth-h-full auth-items-center auth-justify-center"> | |
| <Card className="auth-w-sm auth-space-y-4 auth-p-4"> | |
| <Alert variant="error"> | |
| <AlertTitle>{title}</AlertTitle> | |
| <AlertDescription>{description}</AlertDescription> | |
| </Alert> | |
| <Button onClick={() => logout()}>Log Out</Button> | |
| </Card> | |
| </div> |
🤖 Prompt for AI Agents
In
plugins/plugin-auth/src/auth0/generators/react/react-auth0/templates/src/app/auth-loaded-gate.tsx
around lines 64 to 72, the Tailwind CSS classes used in the div, Card, Alert,
and Button components lack the required plugin prefix. To fix this, add the
prefix "auth-" to all Tailwind class names in this block, such as changing
"flex" to "auth-flex", "w-sm" to "auth-w-sm", and so forth, ensuring all CSS
classes follow the coding guideline to avoid style conflicts.
| @@ -0,0 +1,78 @@ | |||
| // @ts-nocheck | |||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Remove TypeScript checking bypass.
The @ts-nocheck comment violates the coding guidelines that specify "TypeScript with strict type checking" for all .{ts,tsx} files. Enable strict type checking to ensure type safety.
-// @ts-nocheck
-📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| // @ts-nocheck |
🤖 Prompt for AI Agents
In
plugins/plugin-auth/src/auth0/generators/react/react-auth0/templates/src/app/auth-loaded-gate.tsx
at line 1, remove the `// @ts-nocheck` comment to comply with strict TypeScript
checking guidelines. After removal, fix any resulting type errors by adding
appropriate type annotations or correcting type mismatches to ensure full type
safety without bypassing the compiler.
Summary by CodeRabbit
New Features
Bug Fixes
Refactor
Style
Documentation
Tests
Chores