@react-spa-scaffold/mcp 2.2.0 → 2.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/constants.d.ts +3 -0
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +3 -0
- package/dist/constants.js.map +1 -1
- package/dist/features/definitions/database.d.ts +3 -0
- package/dist/features/definitions/database.d.ts.map +1 -0
- package/dist/features/definitions/database.js +45 -0
- package/dist/features/definitions/database.js.map +1 -0
- package/dist/features/definitions/deployment.d.ts +3 -0
- package/dist/features/definitions/deployment.d.ts.map +1 -0
- package/dist/features/definitions/deployment.js +14 -0
- package/dist/features/definitions/deployment.js.map +1 -0
- package/dist/features/definitions/index.d.ts +2 -0
- package/dist/features/definitions/index.d.ts.map +1 -1
- package/dist/features/definitions/index.js +2 -0
- package/dist/features/definitions/index.js.map +1 -1
- package/dist/features/registry.d.ts.map +1 -1
- package/dist/features/registry.js +3 -1
- package/dist/features/registry.js.map +1 -1
- package/dist/features/types.test.js +4 -2
- package/dist/features/types.test.js.map +1 -1
- package/dist/resources/docs.d.ts.map +1 -1
- package/dist/resources/docs.js +5 -0
- package/dist/resources/docs.js.map +1 -1
- package/dist/tools/add-features.js +1 -1
- package/dist/tools/add-features.js.map +1 -1
- package/dist/utils/docs.d.ts.map +1 -1
- package/dist/utils/docs.js +2 -0
- package/dist/utils/docs.js.map +1 -1
- package/dist/utils/scaffold/claude-md/index.d.ts.map +1 -1
- package/dist/utils/scaffold/claude-md/index.js +3 -1
- package/dist/utils/scaffold/claude-md/index.js.map +1 -1
- package/dist/utils/scaffold/claude-md/sections.d.ts +2 -0
- package/dist/utils/scaffold/claude-md/sections.d.ts.map +1 -1
- package/dist/utils/scaffold/claude-md/sections.js +132 -2
- package/dist/utils/scaffold/claude-md/sections.js.map +1 -1
- package/dist/utils/scaffold/compute.js +1 -1
- package/dist/utils/scaffold/compute.js.map +1 -1
- package/dist/utils/scaffold/generators.d.ts +2 -2
- package/dist/utils/scaffold/generators.d.ts.map +1 -1
- package/dist/utils/scaffold/generators.js +57 -22
- package/dist/utils/scaffold/generators.js.map +1 -1
- package/package.json +1 -1
- package/templates/.env.example +40 -12
- package/templates/.github/workflows/ci.yml +4 -1
- package/templates/.github/workflows/deploy.yml +59 -0
- package/templates/CLAUDE.md +177 -1
- package/templates/docs/AUTHENTICATION.md +325 -0
- package/templates/docs/DEPLOYMENT.md +268 -0
- package/templates/docs/E2E_TESTING.md +81 -4
- package/templates/docs/SUPABASE_INTEGRATION.md +310 -0
- package/templates/docs/TESTING.md +195 -77
- package/templates/e2e/auth/auth.setup.ts +60 -0
- package/templates/e2e/fixtures/index.ts +11 -0
- package/templates/e2e/tests/profile.auth.spec.ts +103 -0
- package/templates/e2e/tests/profile.spec.ts +64 -0
- package/templates/e2e/tests/register-form.spec.ts +38 -0
- package/templates/gitignore +5 -0
- package/templates/package.json +8 -0
- package/templates/playwright.config.ts +33 -3
- package/templates/src/App.tsx +32 -19
- package/templates/src/components/layout/Header.test.tsx +17 -1
- package/templates/src/components/layout/Header.tsx +11 -0
- package/templates/src/components/shared/AccountButton/AccountButton.test.tsx +3 -3
- package/templates/src/components/shared/ProfileSync/ProfileSync.test.tsx +44 -0
- package/templates/src/components/shared/ProfileSync/ProfileSync.tsx +104 -0
- package/templates/src/components/shared/ProfileSync/index.ts +1 -0
- package/templates/src/components/shared/ProtectedRoute/ProtectedRoute.test.tsx +3 -3
- package/templates/src/components/shared/index.ts +1 -0
- package/templates/src/contexts/performanceContext.tsx +3 -3
- package/templates/src/contexts/supabaseContext.test.tsx +59 -0
- package/templates/src/contexts/supabaseContext.tsx +87 -0
- package/templates/src/hooks/index.ts +17 -0
- package/templates/src/hooks/supabase/index.ts +12 -0
- package/templates/src/hooks/supabase/useProfiles.test.tsx +207 -0
- package/templates/src/hooks/supabase/useProfiles.ts +213 -0
- package/templates/src/hooks/supabase/useSupabaseQuery.test.tsx +150 -0
- package/templates/src/hooks/supabase/useSupabaseQuery.ts +91 -0
- package/templates/src/lib/api.test.ts +30 -38
- package/templates/src/lib/api.ts +1 -7
- package/templates/src/lib/config.ts +54 -4
- package/templates/src/lib/env.ts +36 -14
- package/templates/src/lib/index.ts +4 -2
- package/templates/src/lib/routes.ts +1 -0
- package/templates/src/lib/sentry.ts +13 -10
- package/templates/src/lib/supabase/client.ts +58 -0
- package/templates/src/lib/supabase/index.ts +5 -0
- package/templates/src/main.tsx +17 -39
- package/templates/src/mocks/constants.ts +31 -0
- package/templates/src/mocks/fixtures/index.ts +3 -1
- package/templates/src/mocks/fixtures/profiles.ts +55 -0
- package/templates/src/mocks/fixtures/users.ts +91 -0
- package/templates/src/mocks/handlers/index.ts +2 -1
- package/templates/src/mocks/handlers/supabase.ts +64 -0
- package/templates/src/mocks/handlers/todos.ts +1 -1
- package/templates/src/mocks/index.ts +6 -0
- package/templates/src/pages/Profile.test.tsx +263 -0
- package/templates/src/pages/Profile.tsx +171 -0
- package/templates/src/pages/index.ts +1 -0
- package/templates/src/stores/preferencesStore.ts +2 -1
- package/templates/src/test/clerkMock.tsx +49 -9
- package/templates/src/test/fetchMock.ts +58 -0
- package/templates/src/test/index.ts +49 -3
- package/templates/src/test/mocks.ts +128 -1
- package/templates/src/test/providers.tsx +7 -4
- package/templates/src/test/supabaseMock.ts +112 -0
- package/templates/src/test-setup.ts +26 -0
- package/templates/src/types/database.ts +46 -0
- package/templates/src/types/index.ts +1 -0
- package/templates/src/types/supabase.ts +167 -0
- package/templates/src/vite-env.d.ts +6 -0
- package/templates/supabase/migrations/20260104000000_create_profiles_table.sql +67 -0
package/dist/constants.d.ts
CHANGED
|
@@ -18,6 +18,8 @@ export declare const FEATURE: {
|
|
|
18
18
|
readonly OBSERVABILITY: "observability";
|
|
19
19
|
readonly THEMING: "theming";
|
|
20
20
|
readonly AUTH: "auth";
|
|
21
|
+
readonly DATABASE: "database";
|
|
22
|
+
readonly DEPLOYMENT: "deployment";
|
|
21
23
|
};
|
|
22
24
|
/** Script names for setup commands. */
|
|
23
25
|
export declare const SCRIPT: {
|
|
@@ -31,6 +33,7 @@ export declare const DOCS_URI: {
|
|
|
31
33
|
readonly TESTING: "docs://testing";
|
|
32
34
|
readonly I18N: "docs://i18n";
|
|
33
35
|
readonly API: "docs://api";
|
|
36
|
+
readonly DATABASE: "docs://database";
|
|
34
37
|
readonly CLAUDE: "docs://claude";
|
|
35
38
|
};
|
|
36
39
|
//# sourceMappingURL=constants.d.ts.map
|
package/dist/constants.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,mEAAmE;AACnE,eAAO,MAAM,OAAO
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,mEAAmE;AACnE,eAAO,MAAM,OAAO;;;;;;;;;;;;;;;;;;CAkBV,CAAC;AAEX,uCAAuC;AACvC,eAAO,MAAM,MAAM;;;CAGT,CAAC;AAEX,mCAAmC;AACnC,eAAO,MAAM,QAAQ;;;;;;;;CAQX,CAAC"}
|
package/dist/constants.js
CHANGED
|
@@ -18,6 +18,8 @@ export const FEATURE = {
|
|
|
18
18
|
OBSERVABILITY: 'observability',
|
|
19
19
|
THEMING: 'theming',
|
|
20
20
|
AUTH: 'auth',
|
|
21
|
+
DATABASE: 'database',
|
|
22
|
+
DEPLOYMENT: 'deployment',
|
|
21
23
|
};
|
|
22
24
|
/** Script names for setup commands. */
|
|
23
25
|
export const SCRIPT = {
|
|
@@ -31,6 +33,7 @@ export const DOCS_URI = {
|
|
|
31
33
|
TESTING: 'docs://testing',
|
|
32
34
|
I18N: 'docs://i18n',
|
|
33
35
|
API: 'docs://api',
|
|
36
|
+
DATABASE: 'docs://database',
|
|
34
37
|
CLAUDE: 'docs://claude',
|
|
35
38
|
};
|
|
36
39
|
//# sourceMappingURL=constants.js.map
|
package/dist/constants.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,mEAAmE;AACnE,MAAM,CAAC,MAAM,OAAO,GAAG;IACrB,IAAI,EAAE,MAAM;IACZ,MAAM,EAAE,QAAQ;IAChB,OAAO,EAAE,SAAS;IAClB,EAAE,EAAE,IAAI;IACR,KAAK,EAAE,OAAO;IACd,KAAK,EAAE,OAAO;IACd,GAAG,EAAE,KAAK;IACV,IAAI,EAAE,MAAM;IACZ,OAAO,EAAE,SAAS;IAClB,WAAW,EAAE,aAAa;IAC1B,QAAQ,EAAE,UAAU;IACpB,EAAE,EAAE,IAAI;IACR,aAAa,EAAE,eAAe;IAC9B,OAAO,EAAE,SAAS;IAClB,IAAI,EAAE,MAAM;
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,mEAAmE;AACnE,MAAM,CAAC,MAAM,OAAO,GAAG;IACrB,IAAI,EAAE,MAAM;IACZ,MAAM,EAAE,QAAQ;IAChB,OAAO,EAAE,SAAS;IAClB,EAAE,EAAE,IAAI;IACR,KAAK,EAAE,OAAO;IACd,KAAK,EAAE,OAAO;IACd,GAAG,EAAE,KAAK;IACV,IAAI,EAAE,MAAM;IACZ,OAAO,EAAE,SAAS;IAClB,WAAW,EAAE,aAAa;IAC1B,QAAQ,EAAE,UAAU;IACpB,EAAE,EAAE,IAAI;IACR,aAAa,EAAE,eAAe;IAC9B,OAAO,EAAE,SAAS;IAClB,IAAI,EAAE,MAAM;IACZ,QAAQ,EAAE,UAAU;IACpB,UAAU,EAAE,YAAY;CAChB,CAAC;AAEX,uCAAuC;AACvC,MAAM,CAAC,MAAM,MAAM,GAAG;IACpB,OAAO,EAAE,SAAS;IAClB,YAAY,EAAE,cAAc;CACpB,CAAC;AAEX,mCAAmC;AACnC,MAAM,CAAC,MAAM,QAAQ,GAAG;IACtB,WAAW,EAAE,oBAAoB;IACjC,YAAY,EAAE,qBAAqB;IACnC,OAAO,EAAE,gBAAgB;IACzB,IAAI,EAAE,aAAa;IACnB,GAAG,EAAE,YAAY;IACjB,QAAQ,EAAE,iBAAiB;IAC3B,MAAM,EAAE,eAAe;CACf,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"database.d.ts","sourceRoot":"","sources":["../../../src/features/definitions/database.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAE3C,eAAO,MAAM,QAAQ,EAAE,OA2CtB,CAAC"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
export const database = {
|
|
2
|
+
name: 'Database',
|
|
3
|
+
description: 'Supabase database integration with Clerk authentication, TanStack Query hooks, and Row Level Security',
|
|
4
|
+
required: false,
|
|
5
|
+
requires: [],
|
|
6
|
+
dependencies: ['@supabase/supabase-js'],
|
|
7
|
+
devDependencies: ['supabase', 'dotenv-cli'],
|
|
8
|
+
files: [
|
|
9
|
+
// Client and types
|
|
10
|
+
'src/lib/supabase/client.ts',
|
|
11
|
+
'src/lib/supabase/index.ts',
|
|
12
|
+
'src/types/supabase.ts',
|
|
13
|
+
'src/types/database.ts',
|
|
14
|
+
// Context
|
|
15
|
+
'src/contexts/supabaseContext.tsx',
|
|
16
|
+
// Hooks
|
|
17
|
+
'src/hooks/supabase/useSupabaseQuery.ts',
|
|
18
|
+
'src/hooks/supabase/useProfiles.ts',
|
|
19
|
+
'src/hooks/supabase/index.ts',
|
|
20
|
+
// Components
|
|
21
|
+
'src/components/shared/ProfileSync/ProfileSync.tsx',
|
|
22
|
+
'src/components/shared/ProfileSync/index.ts',
|
|
23
|
+
// Pages - Profile demo page
|
|
24
|
+
'src/pages/Profile.tsx',
|
|
25
|
+
// MSW handlers and fixtures
|
|
26
|
+
'src/mocks/handlers/supabase.ts',
|
|
27
|
+
'src/mocks/fixtures/profiles.ts',
|
|
28
|
+
// Migrations
|
|
29
|
+
'supabase/migrations/20260104000000_create_profiles_table.sql',
|
|
30
|
+
],
|
|
31
|
+
testFiles: [
|
|
32
|
+
'src/test/supabaseMock.ts',
|
|
33
|
+
'src/contexts/supabaseContext.test.tsx',
|
|
34
|
+
'src/components/shared/ProfileSync/ProfileSync.test.tsx',
|
|
35
|
+
'src/pages/Profile.test.tsx',
|
|
36
|
+
'e2e/tests/profile.spec.ts',
|
|
37
|
+
],
|
|
38
|
+
scripts: {
|
|
39
|
+
'db:types': 'dotenv -- supabase gen types typescript --project-id $SUPABASE_PROJECT_ID > src/types/supabase.ts',
|
|
40
|
+
'db:push': 'supabase db push',
|
|
41
|
+
'db:reset': 'supabase db reset',
|
|
42
|
+
'db:studio': 'supabase studio',
|
|
43
|
+
},
|
|
44
|
+
};
|
|
45
|
+
//# sourceMappingURL=database.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"database.js","sourceRoot":"","sources":["../../../src/features/definitions/database.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,QAAQ,GAAY;IAC/B,IAAI,EAAE,UAAU;IAChB,WAAW,EAAE,uGAAuG;IACpH,QAAQ,EAAE,KAAK;IACf,QAAQ,EAAE,EAAE;IACZ,YAAY,EAAE,CAAC,uBAAuB,CAAC;IACvC,eAAe,EAAE,CAAC,UAAU,EAAE,YAAY,CAAC;IAC3C,KAAK,EAAE;QACL,mBAAmB;QACnB,4BAA4B;QAC5B,2BAA2B;QAC3B,uBAAuB;QACvB,uBAAuB;QACvB,UAAU;QACV,kCAAkC;QAClC,QAAQ;QACR,wCAAwC;QACxC,mCAAmC;QACnC,6BAA6B;QAC7B,aAAa;QACb,mDAAmD;QACnD,4CAA4C;QAC5C,4BAA4B;QAC5B,uBAAuB;QACvB,4BAA4B;QAC5B,gCAAgC;QAChC,gCAAgC;QAChC,aAAa;QACb,8DAA8D;KAC/D;IACD,SAAS,EAAE;QACT,0BAA0B;QAC1B,uCAAuC;QACvC,wDAAwD;QACxD,4BAA4B;QAC5B,2BAA2B;KAC5B;IACD,OAAO,EAAE;QACP,UAAU,EAAE,mGAAmG;QAC/G,SAAS,EAAE,kBAAkB;QAC7B,UAAU,EAAE,mBAAmB;QAC/B,WAAW,EAAE,iBAAiB;KAC/B;CACF,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deployment.d.ts","sourceRoot":"","sources":["../../../src/features/definitions/deployment.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAE3C,eAAO,MAAM,UAAU,EAAE,OAYxB,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export const deployment = {
|
|
2
|
+
name: 'Deployment',
|
|
3
|
+
description: 'Netlify deployment with GitHub Actions for preview and production deploys',
|
|
4
|
+
required: false,
|
|
5
|
+
requires: ['ci'], // Uses setup-node-deps action and downloads CI build artifact
|
|
6
|
+
devDependencies: ['netlify-cli'], // Required for deploy:* scripts
|
|
7
|
+
files: ['netlify.toml', '.github/workflows/deploy.yml'],
|
|
8
|
+
scripts: {
|
|
9
|
+
'deploy:preview': 'netlify deploy --build',
|
|
10
|
+
'deploy:prod': 'netlify deploy --build --prod',
|
|
11
|
+
},
|
|
12
|
+
configFiles: [],
|
|
13
|
+
};
|
|
14
|
+
//# sourceMappingURL=deployment.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deployment.js","sourceRoot":"","sources":["../../../src/features/definitions/deployment.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,UAAU,GAAY;IACjC,IAAI,EAAE,YAAY;IAClB,WAAW,EAAE,2EAA2E;IACxF,QAAQ,EAAE,KAAK;IACf,QAAQ,EAAE,CAAC,IAAI,CAAC,EAAE,8DAA8D;IAChF,eAAe,EAAE,CAAC,aAAa,CAAC,EAAE,gCAAgC;IAClE,KAAK,EAAE,CAAC,cAAc,EAAE,8BAA8B,CAAC;IACvD,OAAO,EAAE;QACP,gBAAgB,EAAE,wBAAwB;QAC1C,aAAa,EAAE,+BAA+B;KAC/C;IACD,WAAW,EAAE,EAAE;CAChB,CAAC"}
|
|
@@ -13,4 +13,6 @@ export { ci } from './ci.js';
|
|
|
13
13
|
export { observability } from './observability.js';
|
|
14
14
|
export { theming } from './theming.js';
|
|
15
15
|
export { auth } from './auth.js';
|
|
16
|
+
export { database } from './database.js';
|
|
17
|
+
export { deployment } from './deployment.js';
|
|
16
18
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/features/definitions/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,EAAE,EAAE,MAAM,SAAS,CAAC;AAC7B,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAC/B,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,EAAE,EAAE,MAAM,SAAS,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/features/definitions/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,EAAE,EAAE,MAAM,SAAS,CAAC;AAC7B,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAC/B,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,EAAE,EAAE,MAAM,SAAS,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC"}
|
|
@@ -13,4 +13,6 @@ export { ci } from './ci.js';
|
|
|
13
13
|
export { observability } from './observability.js';
|
|
14
14
|
export { theming } from './theming.js';
|
|
15
15
|
export { auth } from './auth.js';
|
|
16
|
+
export { database } from './database.js';
|
|
17
|
+
export { deployment } from './deployment.js';
|
|
16
18
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/features/definitions/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,EAAE,EAAE,MAAM,SAAS,CAAC;AAC7B,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAC/B,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,EAAE,EAAE,MAAM,SAAS,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/features/definitions/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,EAAE,EAAE,MAAM,SAAS,CAAC;AAC7B,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAC/B,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,EAAE,EAAE,MAAM,SAAS,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/features/registry.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/features/registry.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAqBlD,8CAA8C;AAC9C,eAAO,MAAM,QAAQ,EAAE,eAkBtB,CAAC;AAEF,YAAY,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Feature Registry - Aggregates all feature definitions.
|
|
3
3
|
*/
|
|
4
|
-
import { core, mobile, routing, ui, forms, state, api, i18n, testing, performance, devtools, ci, observability, theming, auth, } from './definitions/index.js';
|
|
4
|
+
import { core, mobile, routing, ui, forms, state, api, i18n, testing, performance, devtools, ci, observability, theming, auth, database, deployment, } from './definitions/index.js';
|
|
5
5
|
/** All available features for scaffolding. */
|
|
6
6
|
export const FEATURES = {
|
|
7
7
|
core,
|
|
@@ -19,5 +19,7 @@ export const FEATURES = {
|
|
|
19
19
|
observability,
|
|
20
20
|
theming,
|
|
21
21
|
auth,
|
|
22
|
+
database,
|
|
23
|
+
deployment,
|
|
22
24
|
};
|
|
23
25
|
//# sourceMappingURL=registry.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/features/registry.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EACL,IAAI,EACJ,MAAM,EACN,OAAO,EACP,EAAE,EACF,KAAK,EACL,KAAK,EACL,GAAG,EACH,IAAI,EACJ,OAAO,EACP,WAAW,EACX,QAAQ,EACR,EAAE,EACF,aAAa,EACb,OAAO,EACP,IAAI,
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/features/registry.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EACL,IAAI,EACJ,MAAM,EACN,OAAO,EACP,EAAE,EACF,KAAK,EACL,KAAK,EACL,GAAG,EACH,IAAI,EACJ,OAAO,EACP,WAAW,EACX,QAAQ,EACR,EAAE,EACF,aAAa,EACb,OAAO,EACP,IAAI,EACJ,QAAQ,EACR,UAAU,GACX,MAAM,wBAAwB,CAAC;AAEhC,8CAA8C;AAC9C,MAAM,CAAC,MAAM,QAAQ,GAAoB;IACvC,IAAI;IACJ,MAAM;IACN,OAAO;IACP,EAAE;IACF,KAAK;IACL,KAAK;IACL,GAAG;IACH,IAAI;IACJ,OAAO;IACP,WAAW;IACX,QAAQ;IACR,EAAE;IACF,aAAa;IACb,OAAO;IACP,IAAI;IACJ,QAAQ;IACR,UAAU;CACX,CAAC"}
|
|
@@ -13,9 +13,11 @@ describe('FEATURE_IDS', () => {
|
|
|
13
13
|
expect(FEATURE_IDS).toContain('routing');
|
|
14
14
|
expect(FEATURE_IDS).toContain('testing');
|
|
15
15
|
expect(FEATURE_IDS).toContain('auth');
|
|
16
|
+
expect(FEATURE_IDS).toContain('database');
|
|
17
|
+
expect(FEATURE_IDS).toContain('deployment');
|
|
16
18
|
});
|
|
17
|
-
it('has
|
|
18
|
-
expect(FEATURE_IDS).toHaveLength(
|
|
19
|
+
it('has 17 features', () => {
|
|
20
|
+
expect(FEATURE_IDS).toHaveLength(17);
|
|
19
21
|
});
|
|
20
22
|
});
|
|
21
23
|
describe('isFeatureId', () => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.test.js","sourceRoot":"","sources":["../../src/features/types.test.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAE9C,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAEtD,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;IAC3B,EAAE,CAAC,kCAAkC,EAAE,GAAG,EAAE;QAC1C,MAAM,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;IACtD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4BAA4B,EAAE,GAAG,EAAE;QACpC,MAAM,CAAC,WAAW,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QACtC,MAAM,CAAC,WAAW,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;QACzC,MAAM,CAAC,WAAW,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;QACzC,MAAM,CAAC,WAAW,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"types.test.js","sourceRoot":"","sources":["../../src/features/types.test.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAE9C,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAEtD,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;IAC3B,EAAE,CAAC,kCAAkC,EAAE,GAAG,EAAE;QAC1C,MAAM,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;IACtD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4BAA4B,EAAE,GAAG,EAAE;QACpC,MAAM,CAAC,WAAW,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QACtC,MAAM,CAAC,WAAW,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;QACzC,MAAM,CAAC,WAAW,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;QACzC,MAAM,CAAC,WAAW,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QACtC,MAAM,CAAC,WAAW,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QAC1C,MAAM,CAAC,WAAW,CAAC,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iBAAiB,EAAE,GAAG,EAAE;QACzB,MAAM,CAAC,WAAW,CAAC,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;IACvC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;IAC3B,EAAE,CAAC,oCAAoC,EAAE,GAAG,EAAE;QAC5C,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACvC,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1C,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1C,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACzC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uCAAuC,EAAE,GAAG,EAAE;QAC/C,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC3C,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACpC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC1C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"docs.d.ts","sourceRoot":"","sources":["../../src/resources/docs.ts"],"names":[],"mappings":"AAAA;;GAEG;
|
|
1
|
+
{"version":3,"file":"docs.d.ts","sourceRoot":"","sources":["../../src/resources/docs.ts"],"names":[],"mappings":"AAAA;;GAEG;AAuDH;;GAEG;AACH,wBAAgB,yBAAyB;;;;;IAOxC;AAED,wEAAwE;AACxE,wBAAsB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAiB3E;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAE5D;AAED;;GAEG;AACH,wBAAgB,oBAAoB,IAAI,MAAM,EAAE,CAE/C"}
|
package/dist/resources/docs.js
CHANGED
|
@@ -33,6 +33,11 @@ const DOCS_MAP = {
|
|
|
33
33
|
name: 'API Reference',
|
|
34
34
|
description: 'API client utilities, hooks, and data fetching patterns',
|
|
35
35
|
},
|
|
36
|
+
[DOCS_URI.DATABASE]: {
|
|
37
|
+
files: ['docs/SUPABASE_INTEGRATION.md'],
|
|
38
|
+
name: 'Database Integration',
|
|
39
|
+
description: 'Supabase database with Clerk auth, TanStack Query hooks, and Row Level Security',
|
|
40
|
+
},
|
|
36
41
|
[DOCS_URI.CLAUDE]: {
|
|
37
42
|
files: ['CLAUDE.md'],
|
|
38
43
|
name: 'Claude AI Guidance',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"docs.js","sourceRoot":"","sources":["../../src/resources/docs.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"docs.js","sourceRoot":"","sources":["../../src/resources/docs.ts"],"names":[],"mappings":"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"}
|
|
@@ -48,7 +48,7 @@ export async function addFeatures(input) {
|
|
|
48
48
|
// 7. Generate code if routing/api/observability included
|
|
49
49
|
const regenerated = {};
|
|
50
50
|
if (resolvedFeatureIds.includes('routing')) {
|
|
51
|
-
regenerated.routesTs = generateRoutesTs();
|
|
51
|
+
regenerated.routesTs = generateRoutesTs(resolvedFeatureIds);
|
|
52
52
|
}
|
|
53
53
|
// Always generate env files if api or observability is added
|
|
54
54
|
if (resolvedFeatureIds.includes('api') || resolvedFeatureIds.includes('observability')) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"add-features.js","sourceRoot":"","sources":["../../src/tools/add-features.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAE7D,OAAO,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,EACL,mBAAmB,EACnB,cAAc,EACd,iBAAiB,EACjB,YAAY,EACZ,0BAA0B,GAC3B,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AAGtG,wCAAwC;AACxC,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC;IACxC,QAAQ,EAAE,CAAC;SACR,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;SACjB,GAAG,CAAC,CAAC,EAAE,+BAA+B,CAAC;SACvC,GAAG,CAAC,EAAE,EAAE,6BAA6B,CAAC;SACtC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;QACb,MAAM,eAAe,GAAG,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC;QAC1E,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC/B,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC;gBACd,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,qBAAqB,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;gBAC5F,KAAK,EAAE,GAAG,CAAC,KAAK;gBAChB,IAAI,EAAE,EAAE;aACT,CAAC,CAAC;QACL,CAAC;IACH,CAAC,CAAC;SACD,QAAQ,CAAC,kEAAkE,CAAC;CAChF,CAAC,CAAC;AAIH,uBAAuB;AACvB,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,KAAuB;IACvD,MAAM,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAC;IAE3B,8DAA8D;IAC9D,mDAAmD;IACnD,MAAM,kBAAkB,GAAG,0BAA0B,CAAC,QAAQ,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,CAAC;IAExF,0CAA0C;IAC1C,MAAM,EAAE,YAAY,EAAE,eAAe,EAAE,QAAQ,EAAE,GAAG,MAAM,iBAAiB,CAAC,kBAAkB,CAAC,CAAC;IAEhG,mBAAmB;IACnB,MAAM,OAAO,GAAG,YAAY,CAAC,kBAAkB,CAAC,CAAC;IAEjD,0CAA0C;IAC1C,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,mBAAmB,CAAC,kBAAkB,CAAC,CAAC;IAErE,4CAA4C;IAC5C,MAAM,WAAW,GAAG,cAAc,CAAC,kBAAkB,CAAC,CAAC;IAEvD,gCAAgC;IAChC,MAAM,IAAI,GAAG,sBAAsB,CAAC,kBAAkB,CAAC,CAAC;IAExD,yDAAyD;IACzD,MAAM,WAAW,GAIb,EAAE,CAAC;IAEP,IAAI,kBAAkB,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;QAC3C,WAAW,CAAC,QAAQ,GAAG,gBAAgB,
|
|
1
|
+
{"version":3,"file":"add-features.js","sourceRoot":"","sources":["../../src/tools/add-features.ts"],"names":[],"mappings":"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"}
|
package/dist/utils/docs.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"docs.d.ts","sourceRoot":"","sources":["../../src/utils/docs.ts"],"names":[],"mappings":"AAAA;;;;GAIG;
|
|
1
|
+
{"version":3,"file":"docs.d.ts","sourceRoot":"","sources":["../../src/utils/docs.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AA6BH;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,UAAU,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,EAAE,CAU9E;AAeD,2EAA2E;AAC3E,wBAAsB,kBAAkB,CAAC,UAAU,EAAE,SAAS,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAIvG"}
|
package/dist/utils/docs.js
CHANGED
|
@@ -23,6 +23,8 @@ const DOCS_CONFIG = {
|
|
|
23
23
|
'docs/TESTING.md': { requiredFeatures: ['testing'] },
|
|
24
24
|
'docs/E2E_TESTING.md': { requiredFeatures: ['testing'] },
|
|
25
25
|
'docs/INTERNATIONALIZATION.md': { requiredFeatures: ['i18n'] },
|
|
26
|
+
'docs/SUPABASE_INTEGRATION.md': { requiredFeatures: ['database'] },
|
|
27
|
+
'docs/DEPLOYMENT.md': { requiredFeatures: ['deployment'] },
|
|
26
28
|
};
|
|
27
29
|
/**
|
|
28
30
|
* Determine which docs to include based on selected features
|
package/dist/utils/docs.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"docs.js","sourceRoot":"","sources":["../../src/utils/docs.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEvC,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAEjD;;;;;;;GAOG;AACH,MAAM,WAAW,GAAoD;IACnE,8BAA8B;IAC9B,sBAAsB,EAAE,EAAE;IAC1B,0BAA0B,EAAE,EAAE;IAC9B,8BAA8B,EAAE,EAAE;IAClC,uBAAuB,EAAE,EAAE;IAE3B,mBAAmB;IACnB,iBAAiB,EAAE,EAAE,gBAAgB,EAAE,CAAC,SAAS,CAAC,EAAE;IACpD,qBAAqB,EAAE,EAAE,gBAAgB,EAAE,CAAC,SAAS,CAAC,EAAE;IACxD,8BAA8B,EAAE,EAAE,gBAAgB,EAAE,CAAC,MAAM,CAAC,EAAE;
|
|
1
|
+
{"version":3,"file":"docs.js","sourceRoot":"","sources":["../../src/utils/docs.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEvC,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAEjD;;;;;;;GAOG;AACH,MAAM,WAAW,GAAoD;IACnE,8BAA8B;IAC9B,sBAAsB,EAAE,EAAE;IAC1B,0BAA0B,EAAE,EAAE;IAC9B,8BAA8B,EAAE,EAAE;IAClC,uBAAuB,EAAE,EAAE;IAE3B,mBAAmB;IACnB,iBAAiB,EAAE,EAAE,gBAAgB,EAAE,CAAC,SAAS,CAAC,EAAE;IACpD,qBAAqB,EAAE,EAAE,gBAAgB,EAAE,CAAC,SAAS,CAAC,EAAE;IACxD,8BAA8B,EAAE,EAAE,gBAAgB,EAAE,CAAC,MAAM,CAAC,EAAE;IAC9D,8BAA8B,EAAE,EAAE,gBAAgB,EAAE,CAAC,UAAU,CAAC,EAAE;IAClE,oBAAoB,EAAE,EAAE,gBAAgB,EAAE,CAAC,YAAY,CAAC,EAAE;CAC3D,CAAC;AAEF;;GAEG;AACH,MAAM,UAAU,sBAAsB,CAAC,UAA6B;IAClE,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC;IAEvC,OAAO,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC;SAC/B,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,EAAE;QACrB,IAAI,CAAC,MAAM,CAAC,gBAAgB;YAAE,OAAO,IAAI,CAAC,CAAC,YAAY;QACvD,OAAO,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAChE,CAAC,CAAC;SACD,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC;SACrB,IAAI,EAAE,CAAC;AACZ,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,OAAO,CAAC,OAAe;IACpC,MAAM,QAAQ,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAAC;IAE9C,IAAI,CAAC;QACH,OAAO,MAAM,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAC3C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,wBAAwB,OAAO,yEAAyE,CAAC;IAClH,CAAC;AACH,CAAC;AAED,2EAA2E;AAC3E,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,UAA6B;IACpE,MAAM,QAAQ,GAAG,sBAAsB,CAAC,UAAU,CAAC,CAAC;IACpD,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;IAC1D,OAAO,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5E,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/utils/scaffold/claude-md/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/utils/scaffold/claude-md/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAiB5D,8DAA8D;AAC9D,wBAAgB,gBAAgB,CAC9B,UAAU,EAAE,SAAS,EAAE,EACvB,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC9B,MAAM,CAkBR"}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* CLAUDE.md generator - composes sections based on selected features.
|
|
3
3
|
*/
|
|
4
4
|
import { FEATURE } from '../../../constants.js';
|
|
5
|
-
import { generateHeader, generateCommandsSection, generateStructureSection, generateCodePatternsSection, generateUiSection, generateMobileSection, generateThemingSection, generateMcpSection, generateI18nSection, generateTestingSection, generateGotchasSection, } from './sections.js';
|
|
5
|
+
import { generateHeader, generateCommandsSection, generateStructureSection, generateCodePatternsSection, generateUiSection, generateMobileSection, generateThemingSection, generateAuthSection, generateDatabaseSection, generateMcpSection, generateI18nSection, generateTestingSection, generateGotchasSection, } from './sections.js';
|
|
6
6
|
/** Generates CLAUDE.md content based on selected features. */
|
|
7
7
|
export function generateClaudeMd(featureIds, projectName, scripts) {
|
|
8
8
|
const sections = [
|
|
@@ -13,6 +13,8 @@ export function generateClaudeMd(featureIds, projectName, scripts) {
|
|
|
13
13
|
featureIds.includes(FEATURE.UI) && generateUiSection(),
|
|
14
14
|
featureIds.includes(FEATURE.MOBILE) && generateMobileSection(),
|
|
15
15
|
featureIds.includes(FEATURE.THEMING) && generateThemingSection(),
|
|
16
|
+
featureIds.includes(FEATURE.AUTH) && generateAuthSection(),
|
|
17
|
+
featureIds.includes(FEATURE.DATABASE) && generateDatabaseSection(),
|
|
16
18
|
generateMcpSection(featureIds),
|
|
17
19
|
featureIds.includes(FEATURE.I18N) && generateI18nSection(),
|
|
18
20
|
featureIds.includes(FEATURE.TESTING) && generateTestingSection(),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/utils/scaffold/claude-md/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAEhD,OAAO,EACL,cAAc,EACd,uBAAuB,EACvB,wBAAwB,EACxB,2BAA2B,EAC3B,iBAAiB,EACjB,qBAAqB,EACrB,sBAAsB,EACtB,kBAAkB,EAClB,mBAAmB,EACnB,sBAAsB,EACtB,sBAAsB,GACvB,MAAM,eAAe,CAAC;AAEvB,8DAA8D;AAC9D,MAAM,UAAU,gBAAgB,CAC9B,UAAuB,EACvB,WAAmB,EACnB,OAA+B;IAE/B,MAAM,QAAQ,GAAG;QACf,cAAc,CAAC,WAAW,CAAC;QAC3B,uBAAuB,CAAC,OAAO,CAAC;QAChC,wBAAwB,CAAC,UAAU,CAAC;QACpC,2BAA2B,CAAC,UAAU,CAAC;QACvC,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,iBAAiB,EAAE;QACtD,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,qBAAqB,EAAE;QAC9D,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,sBAAsB,EAAE;QAChE,kBAAkB,CAAC,UAAU,CAAC;QAC9B,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,mBAAmB,EAAE;QAC1D,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,sBAAsB,EAAE;QAChE,sBAAsB,CAAC,UAAU,CAAC;KACnC,CAAC;IAEF,OAAO,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC7C,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/utils/scaffold/claude-md/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAEhD,OAAO,EACL,cAAc,EACd,uBAAuB,EACvB,wBAAwB,EACxB,2BAA2B,EAC3B,iBAAiB,EACjB,qBAAqB,EACrB,sBAAsB,EACtB,mBAAmB,EACnB,uBAAuB,EACvB,kBAAkB,EAClB,mBAAmB,EACnB,sBAAsB,EACtB,sBAAsB,GACvB,MAAM,eAAe,CAAC;AAEvB,8DAA8D;AAC9D,MAAM,UAAU,gBAAgB,CAC9B,UAAuB,EACvB,WAAmB,EACnB,OAA+B;IAE/B,MAAM,QAAQ,GAAG;QACf,cAAc,CAAC,WAAW,CAAC;QAC3B,uBAAuB,CAAC,OAAO,CAAC;QAChC,wBAAwB,CAAC,UAAU,CAAC;QACpC,2BAA2B,CAAC,UAAU,CAAC;QACvC,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,iBAAiB,EAAE;QACtD,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,qBAAqB,EAAE;QAC9D,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,sBAAsB,EAAE;QAChE,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,mBAAmB,EAAE;QAC1D,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,uBAAuB,EAAE;QAClE,kBAAkB,CAAC,UAAU,CAAC;QAC9B,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,mBAAmB,EAAE;QAC1D,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,sBAAsB,EAAE;QAChE,sBAAsB,CAAC,UAAU,CAAC;KACnC,CAAC;IAEF,OAAO,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC7C,CAAC"}
|
|
@@ -9,6 +9,8 @@ export declare function generateCodePatternsSection(featureIds: FeatureId[]): st
|
|
|
9
9
|
export declare function generateUiSection(): string;
|
|
10
10
|
export declare function generateMobileSection(): string;
|
|
11
11
|
export declare function generateThemingSection(): string;
|
|
12
|
+
export declare function generateAuthSection(): string;
|
|
13
|
+
export declare function generateDatabaseSection(): string;
|
|
12
14
|
export declare function generateMcpSection(featureIds: FeatureId[]): string;
|
|
13
15
|
export declare function generateI18nSection(): string;
|
|
14
16
|
export declare function generateTestingSection(): string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sections.d.ts","sourceRoot":"","sources":["../../../../src/utils/scaffold/claude-md/sections.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"sections.d.ts","sourceRoot":"","sources":["../../../../src/utils/scaffold/claude-md/sections.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAyB5D,wBAAgB,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAI1D;AAED,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,CAe/E;AAED,wBAAgB,wBAAwB,CAAC,UAAU,EAAE,SAAS,EAAE,GAAG,MAAM,CA6CxE;AAED,wBAAgB,2BAA2B,CAAC,UAAU,EAAE,SAAS,EAAE,GAAG,MAAM,CAkB3E;AAED,wBAAgB,iBAAiB,IAAI,MAAM,CAmB1C;AAED,wBAAgB,qBAAqB,IAAI,MAAM,CAoC9C;AAED,wBAAgB,sBAAsB,IAAI,MAAM,CAuB/C;AAED,wBAAgB,mBAAmB,IAAI,MAAM,CAsC5C;AAED,wBAAgB,uBAAuB,IAAI,MAAM,CA0EhD;AAED,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,SAAS,EAAE,GAAG,MAAM,CAwClE;AAED,wBAAgB,mBAAmB,IAAI,MAAM,CAY5C;AAED,wBAAgB,sBAAsB,IAAI,MAAM,CAe/C;AAED,wBAAgB,sBAAsB,CAAC,UAAU,EAAE,SAAS,EAAE,GAAG,MAAM,CA2BtE"}
|
|
@@ -19,6 +19,10 @@ const SCRIPT_DESCRIPTIONS = {
|
|
|
19
19
|
'e2e:ui': 'Playwright UI mode',
|
|
20
20
|
'i18n:extract': 'Extract translations to .po',
|
|
21
21
|
prepare: 'Initialize Husky hooks',
|
|
22
|
+
'db:types': 'Generate Supabase TypeScript types',
|
|
23
|
+
'db:push': 'Push database migrations',
|
|
24
|
+
'db:reset': 'Reset database (destructive)',
|
|
25
|
+
'db:studio': 'Open Supabase Studio',
|
|
22
26
|
};
|
|
23
27
|
export function generateHeader(projectName) {
|
|
24
28
|
return `# CLAUDE.md
|
|
@@ -42,7 +46,10 @@ ${commandLines.join('\n')}
|
|
|
42
46
|
}
|
|
43
47
|
export function generateStructureSection(featureIds) {
|
|
44
48
|
const parts = ['src/', '├── components/ # ui/ (primitives), layout/, shared/ (features)'];
|
|
45
|
-
if (featureIds.includes(FEATURE.API) ||
|
|
49
|
+
if (featureIds.includes(FEATURE.API) ||
|
|
50
|
+
featureIds.includes(FEATURE.I18N) ||
|
|
51
|
+
featureIds.includes(FEATURE.MOBILE) ||
|
|
52
|
+
featureIds.includes(FEATURE.DATABASE)) {
|
|
46
53
|
parts.push('├── contexts/ # React Context providers');
|
|
47
54
|
}
|
|
48
55
|
parts.push('├── hooks/ # Custom hooks');
|
|
@@ -53,6 +60,8 @@ export function generateStructureSection(featureIds) {
|
|
|
53
60
|
libParts.push('routes');
|
|
54
61
|
if (featureIds.includes(FEATURE.STATE))
|
|
55
62
|
libParts.push('storage');
|
|
63
|
+
if (featureIds.includes(FEATURE.DATABASE))
|
|
64
|
+
libParts.push('supabase');
|
|
56
65
|
parts.push(`├── lib/ # ${libParts.join(', ')}`);
|
|
57
66
|
if (featureIds.includes(FEATURE.ROUTING))
|
|
58
67
|
parts.push('├── pages/ # Lazy-loaded route components');
|
|
@@ -180,6 +189,120 @@ const getResolvedTheme = usePreferencesStore((s) => s.getResolvedTheme);
|
|
|
180
189
|
The \`useThemeEffect\` hook automatically applies the \`.dark\` class to the document.
|
|
181
190
|
The ThemeToggle component provides a UI for switching between light, dark, and system themes.`;
|
|
182
191
|
}
|
|
192
|
+
export function generateAuthSection() {
|
|
193
|
+
return `
|
|
194
|
+
## Authentication (Clerk)
|
|
195
|
+
|
|
196
|
+
Clerk provides authentication with modal-based sign-in.
|
|
197
|
+
|
|
198
|
+
### Setup
|
|
199
|
+
|
|
200
|
+
1. Create an account at [clerk.com](https://clerk.com)
|
|
201
|
+
2. Get your Publishable Key from the dashboard
|
|
202
|
+
3. Set \`VITE_CLERK_PUBLISHABLE_KEY\` in \`.env\`
|
|
203
|
+
|
|
204
|
+
### Usage
|
|
205
|
+
|
|
206
|
+
\`\`\`tsx
|
|
207
|
+
import { SignedIn, SignedOut, UserButton, SignInButton } from '@clerk/react-router';
|
|
208
|
+
import { ProtectedRoute } from '@/components/shared';
|
|
209
|
+
|
|
210
|
+
// Conditional rendering
|
|
211
|
+
<SignedIn><UserButton /></SignedIn>
|
|
212
|
+
<SignedOut><SignInButton mode="modal"><Button>Sign In</Button></SignInButton></SignedOut>
|
|
213
|
+
|
|
214
|
+
// Protected routes
|
|
215
|
+
<Route path="/dashboard" element={<ProtectedRoute><DashboardPage /></ProtectedRoute>} />
|
|
216
|
+
\`\`\`
|
|
217
|
+
|
|
218
|
+
### Testing
|
|
219
|
+
|
|
220
|
+
\`\`\`tsx
|
|
221
|
+
import { setMockClerkSignedIn, resetClerkMocks } from '@/test';
|
|
222
|
+
|
|
223
|
+
beforeEach(() => resetClerkMocks());
|
|
224
|
+
|
|
225
|
+
it('shows sign-in when not authenticated', () => {
|
|
226
|
+
setMockClerkSignedIn(false);
|
|
227
|
+
// ...
|
|
228
|
+
});
|
|
229
|
+
\`\`\``;
|
|
230
|
+
}
|
|
231
|
+
export function generateDatabaseSection() {
|
|
232
|
+
return `
|
|
233
|
+
## Database (Supabase)
|
|
234
|
+
|
|
235
|
+
Supabase provides PostgreSQL with Row Level Security (RLS), integrated with Clerk authentication.
|
|
236
|
+
|
|
237
|
+
### Setup
|
|
238
|
+
|
|
239
|
+
1. Create a project at [supabase.com](https://supabase.com)
|
|
240
|
+
2. Configure Clerk as third-party auth provider in Supabase Dashboard
|
|
241
|
+
3. Enable Supabase integration in Clerk Dashboard → Integrations
|
|
242
|
+
4. Set environment variables in \`.env\`:
|
|
243
|
+
- \`VITE_SUPABASE_DATABASE_URL\` - Your project URL
|
|
244
|
+
- \`VITE_SUPABASE_ANON_KEY\` - Your anon/public key
|
|
245
|
+
- \`SUPABASE_PROJECT_ID\` - Project ID for CLI (subdomain from your URL)
|
|
246
|
+
|
|
247
|
+
### Usage
|
|
248
|
+
|
|
249
|
+
\`\`\`tsx
|
|
250
|
+
import { useSupabase, useSupabaseQuery, useProfile } from '@/hooks';
|
|
251
|
+
|
|
252
|
+
// Direct client access
|
|
253
|
+
const supabase = useSupabase();
|
|
254
|
+
const { data } = await supabase.from('profiles').select();
|
|
255
|
+
|
|
256
|
+
// TanStack Query wrapper
|
|
257
|
+
const { data, isLoading } = useSupabaseQuery({
|
|
258
|
+
table: 'profiles',
|
|
259
|
+
queryKey: ['current'],
|
|
260
|
+
});
|
|
261
|
+
|
|
262
|
+
// Current user's profile
|
|
263
|
+
const { profile, isLoading, exists } = useProfile();
|
|
264
|
+
\`\`\`
|
|
265
|
+
|
|
266
|
+
### Profile Mutations
|
|
267
|
+
|
|
268
|
+
\`\`\`tsx
|
|
269
|
+
import { useUpsertProfile, useUpdateProfile, useDeleteProfile } from '@/hooks';
|
|
270
|
+
|
|
271
|
+
const upsertProfile = useUpsertProfile();
|
|
272
|
+
await upsertProfile.mutateAsync({ id: userId, email: 'user@example.com' });
|
|
273
|
+
\`\`\`
|
|
274
|
+
|
|
275
|
+
### Auto-Sync
|
|
276
|
+
|
|
277
|
+
\`\`\`tsx
|
|
278
|
+
import { ProfileSync } from '@/components/shared';
|
|
279
|
+
|
|
280
|
+
// Add to app to auto-sync Clerk user to Supabase
|
|
281
|
+
<ProfileSync />
|
|
282
|
+
\`\`\`
|
|
283
|
+
|
|
284
|
+
### Testing
|
|
285
|
+
|
|
286
|
+
\`\`\`tsx
|
|
287
|
+
import { render, setMockSupabaseData, setMockSupabaseError, createProfile, resetSupabaseMocks } from '@/test';
|
|
288
|
+
|
|
289
|
+
beforeEach(() => resetSupabaseMocks());
|
|
290
|
+
|
|
291
|
+
it('displays profile data', async () => {
|
|
292
|
+
setMockSupabaseData([createProfile({ full_name: 'Test User' })]);
|
|
293
|
+
render(<ProfileCard />);
|
|
294
|
+
// Assert profile is displayed
|
|
295
|
+
});
|
|
296
|
+
|
|
297
|
+
it('handles error', async () => {
|
|
298
|
+
setMockSupabaseError({ message: 'Failed', code: 'ERROR' });
|
|
299
|
+
render(<ProfileCard />);
|
|
300
|
+
// Assert error state
|
|
301
|
+
});
|
|
302
|
+
\`\`\`
|
|
303
|
+
|
|
304
|
+
See [docs/SUPABASE_INTEGRATION.md](docs/SUPABASE_INTEGRATION.md) for full details.`;
|
|
305
|
+
}
|
|
183
306
|
export function generateMcpSection(featureIds) {
|
|
184
307
|
let section = `
|
|
185
308
|
## MCP Servers (PREFER OVER WebSearch)
|
|
@@ -254,12 +377,19 @@ export function generateGotchasSection(featureIds) {
|
|
|
254
377
|
gotchas.push('**Conventional commits** enforced by commitlint');
|
|
255
378
|
}
|
|
256
379
|
if (featureIds.includes(FEATURE.MOBILE)) {
|
|
257
|
-
gotchas.push('**Context hooks throw** outside provider (e.g., `useMobileContext()`)');
|
|
380
|
+
gotchas.push('**Context hooks throw** outside provider (e.g., `useMobileContext()`, `useSupabase()`)');
|
|
258
381
|
}
|
|
259
382
|
gotchas.push('**Barrel exports** in each directory via `index.ts`');
|
|
260
383
|
if (featureIds.includes(FEATURE.UI)) {
|
|
261
384
|
gotchas.push('**UI components** import directly: `@/components/ui/button` (no barrel)');
|
|
262
385
|
}
|
|
386
|
+
if (featureIds.includes(FEATURE.AUTH)) {
|
|
387
|
+
gotchas.push('**Clerk auth required** - set `VITE_CLERK_PUBLISHABLE_KEY` in `.env`');
|
|
388
|
+
}
|
|
389
|
+
if (featureIds.includes(FEATURE.DATABASE)) {
|
|
390
|
+
gotchas.push('**Supabase requires Clerk** - SupabaseProvider must be inside ClerkProvider');
|
|
391
|
+
gotchas.push('**RLS policies required** - All Supabase tables should have Row Level Security enabled');
|
|
392
|
+
}
|
|
263
393
|
return `
|
|
264
394
|
## Common Gotchas
|
|
265
395
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sections.js","sourceRoot":"","sources":["../../../../src/utils/scaffold/claude-md/sections.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAGhD,gDAAgD;AAChD,MAAM,mBAAmB,GAA2B;IAClD,GAAG,EAAE,8BAA8B;IACnC,KAAK,EAAE,uCAAuC;IAC9C,OAAO,EAAE,0BAA0B;IACnC,SAAS,EAAE,iBAAiB;IAC5B,IAAI,EAAE,cAAc;IACpB,UAAU,EAAE,iBAAiB;IAC7B,MAAM,EAAE,iBAAiB;IACzB,cAAc,EAAE,gBAAgB;IAChC,IAAI,EAAE,aAAa;IACnB,YAAY,EAAE,mBAAmB;IACjC,eAAe,EAAE,0BAA0B;IAC3C,GAAG,EAAE,gBAAgB;IACrB,QAAQ,EAAE,oBAAoB;IAC9B,cAAc,EAAE,6BAA6B;IAC7C,OAAO,EAAE,wBAAwB;
|
|
1
|
+
{"version":3,"file":"sections.js","sourceRoot":"","sources":["../../../../src/utils/scaffold/claude-md/sections.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAGhD,gDAAgD;AAChD,MAAM,mBAAmB,GAA2B;IAClD,GAAG,EAAE,8BAA8B;IACnC,KAAK,EAAE,uCAAuC;IAC9C,OAAO,EAAE,0BAA0B;IACnC,SAAS,EAAE,iBAAiB;IAC5B,IAAI,EAAE,cAAc;IACpB,UAAU,EAAE,iBAAiB;IAC7B,MAAM,EAAE,iBAAiB;IACzB,cAAc,EAAE,gBAAgB;IAChC,IAAI,EAAE,aAAa;IACnB,YAAY,EAAE,mBAAmB;IACjC,eAAe,EAAE,0BAA0B;IAC3C,GAAG,EAAE,gBAAgB;IACrB,QAAQ,EAAE,oBAAoB;IAC9B,cAAc,EAAE,6BAA6B;IAC7C,OAAO,EAAE,wBAAwB;IACjC,UAAU,EAAE,oCAAoC;IAChD,SAAS,EAAE,0BAA0B;IACrC,UAAU,EAAE,8BAA8B;IAC1C,WAAW,EAAE,sBAAsB;CACpC,CAAC;AAEF,MAAM,UAAU,cAAc,CAAC,WAAmB;IAChD,OAAO;;8BAEqB,WAAW,iDAAiD,CAAC;AAC3F,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,OAA+B;IACrE,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC;SACtC,IAAI,EAAE;SACN,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;QACd,MAAM,IAAI,GAAG,mBAAmB,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;QAC/C,MAAM,OAAO,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;QAC5D,OAAO,WAAW,MAAM,GAAG,OAAO,KAAK,IAAI,EAAE,CAAC;IAChD,CAAC,CAAC,CAAC;IAEL,OAAO;;;;EAIP,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC;OAClB,CAAC;AACR,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,UAAuB;IAC9D,MAAM,KAAK,GAAa,CAAC,MAAM,EAAE,oEAAoE,CAAC,CAAC;IAEvG,IACE,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC;QAChC,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC;QACjC,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC;QACnC,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,EACrC,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,8CAA8C,CAAC,CAAC;IAC7D,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAC;IAEhD,MAAM,QAAQ,GAAG,CAAC,QAAQ,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;IAC/C,IAAI,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC;QAAE,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC3D,IAAI,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC;QAAE,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAClE,IAAI,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACjE,IAAI,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC;QAAE,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACrE,KAAK,CAAC,IAAI,CAAC,wBAAwB,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAE1D,IAAI,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC;QAAE,KAAK,CAAC,IAAI,CAAC,mDAAmD,CAAC,CAAC;IAC1G,IAAI,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,KAAK,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC;IAC1F,IAAI,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QACtC,KAAK,CAAC,IAAI,CAAC,mDAAmD,CAAC,CAAC;QAChE,KAAK,CAAC,IAAI,CAAC,8CAA8C,CAAC,CAAC;IAC7D,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,6CAA6C,CAAC,CAAC;IAE1D,IAAI,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QACzC,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,uDAAuD,CAAC,CAAC;QACxE,KAAK,CAAC,IAAI,CAAC,sDAAsD,CAAC,CAAC;QACnE,IAAI,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC;YAC7C,KAAK,CAAC,IAAI,CAAC,mDAAmD,CAAC,CAAC;QAClE,CAAC;IACH,CAAC;IAED,OAAO;;;;;;EAMP,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;OACX,CAAC;AACR,CAAC;AAED,MAAM,UAAU,2BAA2B,CAAC,UAAuB;IACjE,MAAM,cAAc,GAAa,EAAE,CAAC;IACpC,IAAI,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,cAAc,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;IACnF,IAAI,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC;QAAE,cAAc,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;IACrF,cAAc,CAAC,IAAI,CAAC,cAAc,EAAE,kBAAkB,CAAC,CAAC;IAExD,OAAO;;;;;;;;;uBASc,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC;;2HAE0E,CAAC;AAC5H,CAAC;AAED,MAAM,UAAU,iBAAiB;IAC/B,OAAO;;;;;;;;;;;;;;;;;OAiBF,CAAC;AACR,CAAC;AAED,MAAM,UAAU,qBAAqB;IACnC,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAkCF,CAAC;AACR,CAAC;AAED,MAAM,UAAU,sBAAsB;IACpC,OAAO;;;;;;;;;;;;;;;;;;;;;8FAqBqF,CAAC;AAC/F,CAAC;AAED,MAAM,UAAU,mBAAmB;IACjC,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAoCF,CAAC;AACR,CAAC;AAED,MAAM,UAAU,uBAAuB;IACrC,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;mFAwE0E,CAAC;AACpF,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,UAAuB;IACxD,IAAI,OAAO,GAAG;;;mHAGmG,CAAC;IAElH,IAAI,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC;QACpC,OAAO,IAAI;;;;;;;;;6EAS8D,CAAC;IAC5E,CAAC;IAED,OAAO,IAAI;;;;;;;;;;;;;;;;;;OAkBN,CAAC;IAEN,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,mBAAmB;IACjC,OAAO;;;;;;;;;;kEAUyD,CAAC;AACnE,CAAC;AAED,MAAM,UAAU,sBAAsB;IACpC,OAAO;;;;;;;;;;;;;yCAagC,CAAC;AAC1C,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,UAAuB;IAC5D,MAAM,OAAO,GAAa,EAAE,CAAC;IAE7B,IAAI,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC1C,OAAO,CAAC,IAAI,CAAC,iDAAiD,CAAC,CAAC;QAChE,OAAO,CAAC,IAAI,CAAC,iDAAiD,CAAC,CAAC;IAClE,CAAC;IACD,IAAI,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QACxC,OAAO,CAAC,IAAI,CAAC,wFAAwF,CAAC,CAAC;IACzG,CAAC;IACD,OAAO,CAAC,IAAI,CAAC,qDAAqD,CAAC,CAAC;IACpE,IAAI,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC;QACpC,OAAO,CAAC,IAAI,CAAC,yEAAyE,CAAC,CAAC;IAC1F,CAAC;IACD,IAAI,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QACtC,OAAO,CAAC,IAAI,CAAC,sEAAsE,CAAC,CAAC;IACvF,CAAC;IACD,IAAI,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC1C,OAAO,CAAC,IAAI,CAAC,6EAA6E,CAAC,CAAC;QAC5F,OAAO,CAAC,IAAI,CAAC,wFAAwF,CAAC,CAAC;IACzG,CAAC;IAED,OAAO;;;EAGP,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;CACnD,CAAC;AACF,CAAC"}
|
|
@@ -49,7 +49,7 @@ export async function computeScaffold(selectedFeatures, projectName = 'my-app')
|
|
|
49
49
|
const claudeMd = generateClaudeMd(resolvedFeatures, projectName, scripts);
|
|
50
50
|
const viteEnvDts = generateViteEnvDts(resolvedFeatures);
|
|
51
51
|
const envTs = generateEnvTs(resolvedFeatures);
|
|
52
|
-
const routesTs = resolvedFeatures.includes(FEATURE.ROUTING) ? generateRoutesTs() : undefined;
|
|
52
|
+
const routesTs = resolvedFeatures.includes(FEATURE.ROUTING) ? generateRoutesTs(resolvedFeatures) : undefined;
|
|
53
53
|
return {
|
|
54
54
|
packageJson: { name: projectName, dependencies, devDependencies, scripts, engines },
|
|
55
55
|
structure,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compute.js","sourceRoot":"","sources":["../../../src/utils/scaffold/compute.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEvC,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAE7C,OAAO,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AACpD,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAElD,OAAO,EAAE,0BAA0B,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAChG,OAAO,EAAE,oBAAoB,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC3E,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAExG,KAAK,UAAU,qBAAqB;IAClC,MAAM,IAAI,GAAG,mBAAmB,CAAC,cAAc,CAAC,CAAC;IACjD,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC9C,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AAC7B,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,gBAA0B,EAC1B,cAAsB,QAAQ;IAE9B,kCAAkC;IAClC,MAAM,gBAAgB,GAAG,0BAA0B,CAAC,gBAAgB,CAAC,CAAC;IAEtE,2DAA2D;IAC3D,MAAM,CAAC,iBAAiB,EAAE,UAAU,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QACxD,qBAAqB,EAAE;QACvB,iBAAiB,CAAC,gBAAgB,CAAC;KACpC,CAAC,CAAC;IAEH,MAAM,OAAO,GAAI,iBAAiB,CAAC,OAAkC,IAAI,EAAE,CAAC;IAC5E,MAAM,EAAE,YAAY,EAAE,eAAe,EAAE,QAAQ,EAAE,GAAG,UAAU,CAAC;IAE/D,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxB,OAAO,CAAC,KAAK,CAAC,4BAA4B,EAAE,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACnE,CAAC;IAED,kBAAkB;IAClB,MAAM,OAAO,GAAG,YAAY,CAAC,gBAAgB,CAAC,CAAC;IAC/C,MAAM,IAAI,GAAG,sBAAsB,CAAC,gBAAgB,CAAC,CAAC;IACtD,MAAM,aAAa,GAAG,gBAAgB,CAAC,gBAAgB,CAAC,CAAC;IAEzD,0CAA0C;IAC1C,MAAM,WAAW,GAAG,cAAc,CAAC,gBAAgB,CAAC,CAAC;IAErD,oEAAoE;IACpE,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,WAAW,CAAC,CAAC;IACvC,MAAM,SAAS,GAAG,oBAAoB,CAAC,gBAAgB,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAE1F,0BAA0B;IAC1B,MAAM,QAAQ,GAAG,gBAAgB,CAAC,gBAAgB,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;IAC1E,MAAM,UAAU,GAAG,kBAAkB,CAAC,gBAAgB,CAAC,CAAC;IACxD,MAAM,KAAK,GAAG,aAAa,CAAC,gBAAgB,CAAC,CAAC;IAC9C,MAAM,QAAQ,GAAG,gBAAgB,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,gBAAgB,
|
|
1
|
+
{"version":3,"file":"compute.js","sourceRoot":"","sources":["../../../src/utils/scaffold/compute.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,6 +4,6 @@ export { generateClaudeMd } from './claude-md/index.js';
|
|
|
4
4
|
export declare function generateViteEnvDts(featureIds: FeatureId[]): string;
|
|
5
5
|
/** Generate env.ts content based on selected features. */
|
|
6
6
|
export declare function generateEnvTs(featureIds: FeatureId[]): string;
|
|
7
|
-
/** Generates routes.ts content. */
|
|
8
|
-
export declare function generateRoutesTs(): string;
|
|
7
|
+
/** Generates routes.ts content based on selected features. */
|
|
8
|
+
export declare function generateRoutesTs(featureIds: FeatureId[]): string;
|
|
9
9
|
//# sourceMappingURL=generators.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generators.d.ts","sourceRoot":"","sources":["../../../src/utils/scaffold/generators.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAEzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAExD,iEAAiE;AACjE,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,SAAS,EAAE,GAAG,MAAM,
|
|
1
|
+
{"version":3,"file":"generators.d.ts","sourceRoot":"","sources":["../../../src/utils/scaffold/generators.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAEzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAExD,iEAAiE;AACjE,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,SAAS,EAAE,GAAG,MAAM,CAqDlE;AAED,0DAA0D;AAC1D,wBAAgB,aAAa,CAAC,UAAU,EAAE,SAAS,EAAE,GAAG,MAAM,CA2G7D;AAED,8DAA8D;AAC9D,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,SAAS,EAAE,GAAG,MAAM,CAqBhE"}
|