create-stackr 0.2.0 → 0.3.1
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/README.md +18 -3
- package/dist/prompts/features.d.ts +1 -1
- package/dist/prompts/features.d.ts.map +1 -1
- package/dist/prompts/features.js +34 -25
- package/dist/prompts/features.js.map +1 -1
- package/dist/prompts/index.js +33 -6
- package/dist/prompts/index.js.map +1 -1
- package/dist/prompts/preset.d.ts.map +1 -1
- package/dist/prompts/preset.js +69 -34
- package/dist/prompts/preset.js.map +1 -1
- package/dist/utils/template.js +1 -1
- package/dist/utils/template.js.map +1 -1
- package/dist/utils/validation.d.ts.map +1 -1
- package/dist/utils/validation.js +43 -1
- package/dist/utils/validation.js.map +1 -1
- package/package.json +1 -1
- package/templates/base/backend/controllers/rest-api/routes/auth.ts.ejs +33 -1
- package/templates/base/backend/controllers/rest-api/routes/oauth-web.ts.ejs +6 -0
- package/templates/base/backend/domain/user/repository.drizzle.ts +28 -1
- package/templates/base/backend/domain/user/repository.prisma.ts +25 -0
- package/templates/base/backend/drizzle/{schema.drizzle.ts → schema.drizzle.ts.ejs} +25 -0
- package/templates/base/backend/lib/auth.drizzle.ts.ejs +27 -18
- package/templates/base/backend/lib/auth.prisma.ts.ejs +24 -18
- package/templates/base/backend/package.json.ejs +29 -23
- package/templates/base/backend/prisma/schema.prisma.ejs +20 -0
- package/templates/base/mobile/app/+not-found.tsx +1 -1
- package/templates/base/mobile/app/_layout.tsx.ejs +95 -10
- package/templates/base/mobile/package.json.ejs +21 -13
- package/templates/base/mobile/src/components/ui/Button.tsx +5 -3
- package/templates/base/mobile/src/components/ui/Card.tsx +1 -1
- package/templates/base/mobile/src/components/ui/Input.tsx +1 -1
- package/templates/base/mobile/src/components/ui/Skeleton.tsx +1 -1
- package/templates/base/mobile/src/components/ui/Toast.tsx +106 -0
- package/templates/base/mobile/src/components/ui/{IconSymbol.tsx → icon-symbol.tsx} +7 -0
- package/templates/base/mobile/src/components/ui/{LoadingSpinner.tsx → loading-spinner.tsx} +1 -1
- package/templates/base/mobile/src/components/ui/{OnboardingLayout.tsx → onboarding-layout.tsx} +2 -2
- package/templates/base/mobile/src/components/ui/{PaywallLayout.tsx → paywall-layout.tsx} +3 -3
- package/templates/base/mobile/src/constants/Theme.ts +3 -3
- package/templates/base/mobile/src/context/{ThemeContext.tsx → theme-context.tsx} +2 -2
- package/templates/base/mobile/src/lib/auth-client.ts.ejs +18 -0
- package/templates/base/mobile/src/services/{sdkInitializer.ts.ejs → sdk-initializer.ts.ejs} +4 -4
- package/templates/base/web/.prettierignore +6 -0
- package/templates/base/web/.prettierrc +8 -0
- package/templates/base/web/eslint.config.mjs +31 -7
- package/templates/base/web/next.config.ts +50 -1
- package/templates/base/web/package.json.ejs +14 -2
- package/templates/base/web/src/app/globals.css +1 -1
- package/templates/base/web/src/app/layout.tsx.ejs +2 -0
- package/templates/base/web/src/components/auth/protected-route.tsx.ejs +32 -5
- package/templates/base/web/src/components/providers/device-session-setup.tsx.ejs +1 -1
- package/templates/base/web/src/hooks/use-device-session.ts.ejs +2 -2
- package/templates/base/web/src/lib/auth/actions.ts.ejs +438 -15
- package/templates/base/web/src/lib/auth/config.ts.ejs +13 -0
- package/templates/base/web/src/lib/auth/cookies.ts.ejs +61 -0
- package/templates/base/web/src/lib/device/actions.ts.ejs +2 -10
- package/templates/base/web/src/lib/device/types.ts +37 -0
- package/templates/base/web/src/proxy.ts.ejs +12 -2
- package/templates/base/web/src/store/{deviceSession.store.ts.ejs → device-session-store.ts.ejs} +1 -1
- package/templates/features/mobile/auth/app/(auth)/{_layout.tsx → _layout.tsx.ejs} +7 -0
- package/templates/features/mobile/auth/app/(auth)/{login.tsx → login.tsx.ejs} +9 -8
- package/templates/features/mobile/auth/app/(auth)/{register.tsx → register.tsx.ejs} +9 -8
- package/templates/features/mobile/auth/app/(auth)/two-factor-expired.tsx.ejs +88 -0
- package/templates/features/mobile/auth/app/(auth)/two-factor.tsx.ejs +259 -0
- package/templates/features/mobile/auth/app/(public)/_layout.tsx +9 -0
- package/templates/features/mobile/{tabs/app/(tabs)/index.tsx → auth/app/(public)/index.tsx.ejs} +76 -257
- package/templates/features/mobile/auth/app/(tabs)/settings/_layout.tsx.ejs +20 -0
- package/templates/features/mobile/auth/app/(tabs)/settings/index.tsx.ejs +137 -0
- package/templates/features/mobile/auth/app/(tabs)/settings/security/_layout.tsx.ejs +35 -0
- package/templates/features/mobile/auth/app/(tabs)/settings/security/index.tsx.ejs +147 -0
- package/templates/features/mobile/auth/app/(tabs)/settings/security/set-password.tsx.ejs +140 -0
- package/templates/features/mobile/auth/app/(tabs)/settings/security/two-factor-manage.tsx.ejs +366 -0
- package/templates/features/mobile/auth/app/(tabs)/settings/security/two-factor-setup.tsx.ejs +317 -0
- package/templates/features/mobile/auth/app/account.tsx.ejs +331 -0
- package/templates/features/mobile/auth/app/verify-email.tsx.ejs +315 -0
- package/templates/features/mobile/auth/components/auth/{LoginForm.tsx.ejs → login-form.tsx.ejs} +15 -3
- package/templates/features/mobile/auth/components/auth/protected-screen.tsx.ejs +56 -0
- package/templates/features/mobile/auth/components/auth/{RegisterForm.tsx.ejs → register-form.tsx.ejs} +5 -3
- package/templates/features/mobile/auth/hooks/{useAuth.ts.ejs → auth.ts.ejs} +255 -1
- package/templates/features/mobile/auth/hooks/two-factor-timeout.ts.ejs +56 -0
- package/templates/features/mobile/auth/services/{deviceSession.ts → device-session.ts} +2 -10
- package/templates/features/mobile/auth/store/{deviceSession.store.ts → device-session-store.ts} +14 -5
- package/templates/features/mobile/auth/types/device-session.ts +37 -0
- package/templates/features/mobile/onboarding/app/(onboarding)/page-1.tsx.ejs +3 -1
- package/templates/features/mobile/onboarding/app/(onboarding)/page-2.tsx.ejs +3 -1
- package/templates/features/mobile/onboarding/app/(onboarding)/page-3.tsx.ejs +6 -1
- package/templates/features/mobile/paywall/app/paywall.tsx +4 -4
- package/templates/features/mobile/tabs/app/(tabs)/_layout.tsx +0 -6
- package/templates/features/mobile/tabs/app/(tabs)/_layout.tsx.ejs +60 -0
- package/templates/features/mobile/tabs/app/(tabs)/index.tsx.ejs +264 -0
- package/templates/features/web/auth/app/(app)/layout.tsx.ejs +8 -22
- package/templates/features/web/auth/app/(auth)/login/page.tsx.ejs +19 -3
- package/templates/features/web/auth/app/(auth)/login/two-factor/page.tsx.ejs +24 -0
- package/templates/features/web/auth/app/(auth)/verify-email/page.tsx.ejs +117 -152
- package/templates/features/web/auth/app/{(app) → (protected)}/dashboard/dashboard-client.tsx.ejs +41 -1
- package/templates/features/web/auth/app/{(app) → (protected)}/dashboard/page.tsx.ejs +3 -1
- package/templates/features/web/auth/app/(protected)/layout.tsx.ejs +67 -0
- package/templates/features/web/auth/app/(protected)/settings/security/page.tsx.ejs +19 -0
- package/templates/features/web/auth/app/(protected)/settings/security/security-settings.tsx.ejs +73 -0
- package/templates/features/web/auth/app/{(app) → (protected)}/settings/sessions/page.tsx.ejs +2 -6
- package/templates/features/web/auth/app/auth/callback/route.ts.ejs +5 -1
- package/templates/features/web/auth/app/auth/session-expired/route.ts.ejs +39 -0
- package/templates/features/web/auth/app/auth/two-factor-expired/route.ts.ejs +22 -0
- package/templates/features/web/auth/components/auth/login-form.tsx.ejs +18 -0
- package/templates/features/web/auth/components/auth/two-factor-verify.tsx.ejs +173 -0
- package/templates/features/web/auth/components/settings/set-password-form.tsx.ejs +123 -0
- package/templates/features/web/auth/components/settings/two-factor-manage.tsx.ejs +253 -0
- package/templates/features/web/auth/components/settings/two-factor-setup.tsx.ejs +249 -0
- package/templates/features/web/auth/components/ui/checkbox.tsx +32 -0
- package/templates/features/web/auth/components/ui/dialog.tsx +143 -0
- package/templates/features/web/auth/components/ui/input-otp.tsx +71 -0
- package/templates/integrations/mobile/adjust/store/{adjust.store.ts → adjust-store.ts} +3 -3
- package/templates/integrations/mobile/att/store/{att.store.ts → att-store.ts} +2 -2
- package/templates/integrations/mobile/revenuecat/store/{revenuecat.store.ts → revenuecat-store.ts} +1 -1
- package/templates/integrations/mobile/scate/store/{scate.store.ts → scate-store.ts} +1 -1
- package/templates/base/mobile/src/components/ui/index.ts +0 -6
- package/templates/base/mobile/src/store/index.ts.ejs +0 -18
- package/templates/base/web/src/lib/auth/index.ts.ejs +0 -40
- package/templates/features/mobile/auth/components/auth/index.ts +0 -2
- package/templates/features/mobile/auth/hooks/index.ts.ejs +0 -1
- /package/templates/base/mobile/src/services/{errorService.ts → error-service.ts} +0 -0
- /package/templates/base/mobile/src/store/{ui.store.ts → ui-store.ts} +0 -0
- /package/templates/features/web/auth/app/{(app) → (protected)}/settings/sessions/sessions-client.tsx.ejs +0 -0
- /package/templates/integrations/mobile/adjust/services/{adjustService.ts.ejs → adjust-service.ts.ejs} +0 -0
- /package/templates/integrations/mobile/att/services/{attService.ts → att-service.ts} +0 -0
- /package/templates/integrations/mobile/att/services/{trackingPermissions.ts → tracking-permissions.ts} +0 -0
- /package/templates/integrations/mobile/revenuecat/services/{revenuecatService.ts.ejs → revenuecat-service.ts.ejs} +0 -0
- /package/templates/integrations/mobile/scate/services/{scateService.ts.ejs → scate-service.ts.ejs} +0 -0
package/README.md
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
[](https://opensource.org/licenses/MIT)
|
|
5
5
|
[](https://nodejs.org)
|
|
6
6
|
|
|
7
|
-
> **v0.
|
|
7
|
+
> **v0.3**: Now with Two-Factor Authentication, enhanced security headers, and improved CLI UX. Feedback welcome!
|
|
8
8
|
|
|
9
9
|
Create production-ready fullstack apps with Expo (mobile), Next.js (web), and Node.js backend in minutes.
|
|
10
10
|
|
|
@@ -559,17 +559,22 @@ A: Yes, Next.js App Router uses React Server Components by default. Client compo
|
|
|
559
559
|
|
|
560
560
|
## Roadmap
|
|
561
561
|
|
|
562
|
+
### Completed in v0.3.0
|
|
563
|
+
- [x] Two-Factor Authentication for mobile and web
|
|
564
|
+
- [x] Enhanced security headers for Next.js
|
|
565
|
+
- [x] Improved CLI UX for platform selection
|
|
566
|
+
- [x] Better error handling and user feedback
|
|
567
|
+
- [x] Improved documentation site
|
|
568
|
+
|
|
562
569
|
### Completed in v0.2.0
|
|
563
570
|
- [x] OAuth support (Google, Apple, GitHub)
|
|
564
571
|
- [x] BetterAuth authentication framework
|
|
565
572
|
- [x] Drizzle ORM as alternative to Prisma
|
|
566
573
|
- [x] Next.js web app support
|
|
567
574
|
- [x] Native OAuth SDKs with browser fallback
|
|
568
|
-
- [x] Two-factor authentication (TOTP)
|
|
569
575
|
- [x] Email verification & password reset
|
|
570
576
|
|
|
571
577
|
### Upcoming
|
|
572
|
-
- [ ] v0.3.0: Additional template customization
|
|
573
578
|
- [ ] v0.4.0: More SDK integrations (Firebase, Supabase)
|
|
574
579
|
- [ ] v1.0.0: Stable API, production-ready
|
|
575
580
|
|
|
@@ -629,6 +634,16 @@ Contributions welcome! See [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines.
|
|
|
629
634
|
|
|
630
635
|
## Security
|
|
631
636
|
|
|
637
|
+
Generated applications include security headers by default:
|
|
638
|
+
|
|
639
|
+
- **X-Content-Type-Options**: Prevents MIME type sniffing
|
|
640
|
+
- **X-Frame-Options**: Prevents clickjacking attacks
|
|
641
|
+
- **Referrer-Policy**: Controls referrer information sent with requests
|
|
642
|
+
- **Permissions-Policy**: Restricts access to browser features
|
|
643
|
+
- **Strict-Transport-Security**: Enforces HTTPS connections (HSTS)
|
|
644
|
+
|
|
645
|
+
To customize security headers, edit `next.config.ts` in your web application.
|
|
646
|
+
|
|
632
647
|
See [SECURITY.md](SECURITY.md) for vulnerability reporting.
|
|
633
648
|
|
|
634
649
|
## License
|
|
@@ -10,5 +10,5 @@ export interface AuthenticationConfig {
|
|
|
10
10
|
passwordReset: boolean;
|
|
11
11
|
twoFactor: boolean;
|
|
12
12
|
}
|
|
13
|
-
export declare function promptFeatures(): Promise<any>;
|
|
13
|
+
export declare function promptFeatures(platforms?: string[]): Promise<any>;
|
|
14
14
|
//# sourceMappingURL=features.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"features.d.ts","sourceRoot":"","sources":["../../src/prompts/features.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE;QACT,aAAa,EAAE,OAAO,CAAC;QACvB,MAAM,EAAE,OAAO,CAAC;QAChB,KAAK,EAAE,OAAO,CAAC;QACf,MAAM,EAAE,OAAO,CAAC;KACjB,CAAC;IACF,iBAAiB,EAAE,OAAO,CAAC;IAC3B,aAAa,EAAE,OAAO,CAAC;IACvB,SAAS,EAAE,OAAO,CAAC;CACpB;AAED,wBAAsB,cAAc,
|
|
1
|
+
{"version":3,"file":"features.d.ts","sourceRoot":"","sources":["../../src/prompts/features.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE;QACT,aAAa,EAAE,OAAO,CAAC;QACvB,MAAM,EAAE,OAAO,CAAC;QAChB,KAAK,EAAE,OAAO,CAAC;QACf,MAAM,EAAE,OAAO,CAAC;KACjB,CAAC;IACF,iBAAiB,EAAE,OAAO,CAAC;IAC3B,aAAa,EAAE,OAAO,CAAC;IACvB,SAAS,EAAE,OAAO,CAAC;CACpB;AAED,wBAAsB,cAAc,CAAC,SAAS,GAAE,MAAM,EAAsB,GAAG,OAAO,CAAC,GAAG,CAAC,CAiH1F"}
|
package/dist/prompts/features.js
CHANGED
|
@@ -1,33 +1,42 @@
|
|
|
1
1
|
import inquirer from 'inquirer';
|
|
2
|
-
export async function promptFeatures() {
|
|
2
|
+
export async function promptFeatures(platforms = ['mobile', 'web']) {
|
|
3
|
+
const hasMobile = platforms.includes('mobile');
|
|
4
|
+
// Build choices based on platform
|
|
5
|
+
const choices = [];
|
|
6
|
+
// Only show onboarding for mobile
|
|
7
|
+
if (hasMobile) {
|
|
8
|
+
choices.push({
|
|
9
|
+
name: 'Onboarding Flow - Multi-step user onboarding (mobile only)',
|
|
10
|
+
value: 'onboarding',
|
|
11
|
+
checked: true,
|
|
12
|
+
});
|
|
13
|
+
}
|
|
14
|
+
// Authentication always available
|
|
15
|
+
choices.push({
|
|
16
|
+
name: 'Authentication - User authentication with BetterAuth',
|
|
17
|
+
value: 'authentication',
|
|
18
|
+
checked: true,
|
|
19
|
+
});
|
|
20
|
+
// Only show paywall for mobile
|
|
21
|
+
if (hasMobile) {
|
|
22
|
+
choices.push({
|
|
23
|
+
name: 'Subscription Paywall - RevenueCat integration (mobile only)',
|
|
24
|
+
value: 'paywall',
|
|
25
|
+
checked: false,
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
choices.push({
|
|
29
|
+
name: 'Session Management - Anonymous device session tracking',
|
|
30
|
+
value: 'sessionManagement',
|
|
31
|
+
checked: true,
|
|
32
|
+
});
|
|
3
33
|
// First, ask about basic features
|
|
4
34
|
const basicFeatures = await inquirer.prompt([
|
|
5
35
|
{
|
|
6
36
|
type: 'checkbox',
|
|
7
37
|
name: 'features',
|
|
8
38
|
message: 'Select features to include:',
|
|
9
|
-
choices
|
|
10
|
-
{
|
|
11
|
-
name: 'Onboarding Flow - Multi-step user onboarding',
|
|
12
|
-
value: 'onboarding',
|
|
13
|
-
checked: true,
|
|
14
|
-
},
|
|
15
|
-
{
|
|
16
|
-
name: 'Authentication - User authentication with BetterAuth',
|
|
17
|
-
value: 'authentication',
|
|
18
|
-
checked: true,
|
|
19
|
-
},
|
|
20
|
-
{
|
|
21
|
-
name: 'Subscription Paywall - RevenueCat integration',
|
|
22
|
-
value: 'paywall',
|
|
23
|
-
checked: false,
|
|
24
|
-
},
|
|
25
|
-
{
|
|
26
|
-
name: 'Session Management - Anonymous device session tracking',
|
|
27
|
-
value: 'sessionManagement',
|
|
28
|
-
checked: true,
|
|
29
|
-
},
|
|
30
|
-
],
|
|
39
|
+
choices,
|
|
31
40
|
},
|
|
32
41
|
]);
|
|
33
42
|
const hasAuth = basicFeatures.features.includes('authentication');
|
|
@@ -83,13 +92,13 @@ export async function promptFeatures() {
|
|
|
83
92
|
}
|
|
84
93
|
return {
|
|
85
94
|
onboarding: {
|
|
86
|
-
enabled: basicFeatures.features.includes('onboarding'),
|
|
95
|
+
enabled: hasMobile ? basicFeatures.features.includes('onboarding') : false,
|
|
87
96
|
pages: 3, // Will be configured later if enabled
|
|
88
97
|
skipButton: false,
|
|
89
98
|
showPaywall: false,
|
|
90
99
|
},
|
|
91
100
|
authentication: authConfig,
|
|
92
|
-
paywall: basicFeatures.features.includes('paywall'),
|
|
101
|
+
paywall: hasMobile ? basicFeatures.features.includes('paywall') : false,
|
|
93
102
|
sessionManagement: basicFeatures.features.includes('sessionManagement'),
|
|
94
103
|
};
|
|
95
104
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"features.js","sourceRoot":"","sources":["../../src/prompts/features.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,UAAU,CAAC;AAehC,MAAM,CAAC,KAAK,UAAU,cAAc
|
|
1
|
+
{"version":3,"file":"features.js","sourceRoot":"","sources":["../../src/prompts/features.ts"],"names":[],"mappings":"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"}
|
package/dist/prompts/index.js
CHANGED
|
@@ -54,14 +54,17 @@ export async function collectConfiguration(projectName, options) {
|
|
|
54
54
|
async function collectCustomConfiguration() {
|
|
55
55
|
// Platform selection FIRST (foundational choice)
|
|
56
56
|
const platforms = await promptPlatforms();
|
|
57
|
+
const hasMobile = platforms.includes('mobile');
|
|
57
58
|
// ORM selection (foundational choice)
|
|
58
59
|
const orm = await promptORM();
|
|
59
|
-
// Collect features
|
|
60
|
-
const features = await promptFeatures();
|
|
61
|
-
// Collect SDK integrations
|
|
62
|
-
const integrations =
|
|
63
|
-
|
|
64
|
-
|
|
60
|
+
// Collect features (with platform awareness)
|
|
61
|
+
const features = await promptFeatures(platforms);
|
|
62
|
+
// Collect SDK integrations only for mobile
|
|
63
|
+
const integrations = hasMobile
|
|
64
|
+
? await promptSDKs()
|
|
65
|
+
: getDefaultIntegrations();
|
|
66
|
+
// If onboarding enabled AND mobile platform, collect onboarding config
|
|
67
|
+
if (features.onboarding.enabled && hasMobile) {
|
|
65
68
|
const onboardingConfig = await promptOnboarding(integrations.revenueCat.enabled);
|
|
66
69
|
features.onboarding = { ...features.onboarding, ...onboardingConfig };
|
|
67
70
|
}
|
|
@@ -83,6 +86,30 @@ async function collectCustomConfiguration() {
|
|
|
83
86
|
customized: false,
|
|
84
87
|
};
|
|
85
88
|
}
|
|
89
|
+
/**
|
|
90
|
+
* Returns default (disabled) integrations for web-only projects.
|
|
91
|
+
*/
|
|
92
|
+
function getDefaultIntegrations() {
|
|
93
|
+
return {
|
|
94
|
+
revenueCat: {
|
|
95
|
+
enabled: false,
|
|
96
|
+
iosKey: '',
|
|
97
|
+
androidKey: '',
|
|
98
|
+
},
|
|
99
|
+
adjust: {
|
|
100
|
+
enabled: false,
|
|
101
|
+
appToken: '',
|
|
102
|
+
environment: 'sandbox',
|
|
103
|
+
},
|
|
104
|
+
scate: {
|
|
105
|
+
enabled: false,
|
|
106
|
+
apiKey: '',
|
|
107
|
+
},
|
|
108
|
+
att: {
|
|
109
|
+
enabled: false,
|
|
110
|
+
},
|
|
111
|
+
};
|
|
112
|
+
}
|
|
86
113
|
async function loadPresetByName(presetName) {
|
|
87
114
|
const preset = PRESETS.find((p) => p.name.toLowerCase() === presetName.toLowerCase());
|
|
88
115
|
if (!preset) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/prompts/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AACvC,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AACrC,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAE/C,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,WAA+B,EAC/B,OAAmB;IAEnB,sBAAsB;IACtB,MAAM,IAAI,GAAG,MAAM,iBAAiB,CAAC,WAAW,CAAC,CAAC;IAElD,sDAAsD;IACtD,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;QACrB,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACxD,MAAM,cAAc,GAAG,MAAM,oBAAoB,EAAE,CAAC;QACpD,OAAO;YACL,GAAG,MAAM;YACT,WAAW,EAAE,IAAI;YACjB,SAAS,EAAE,eAAe,CAAC,IAAI,CAAC;YAChC,cAAc;SACf,CAAC;IACJ,CAAC;IAED,4CAA4C;IAC5C,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;QACrB,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,SAAS,CAAC,CAAC;QACjD,OAAO;YACL,GAAG,MAAM;YACT,WAAW,EAAE,IAAI;YACjB,SAAS,EAAE,eAAe,CAAC,IAAI,CAAC;YAChC,cAAc,EAAE,KAAK;SACtB,CAAC;IACJ,CAAC;IAED,+CAA+C;IAC/C,IAAI,MAAM,GAAG,MAAM,YAAY,EAAE,CAAC;IAElC,oDAAoD;IACpD,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,GAAG,MAAM,0BAA0B,EAAE,CAAC;IAC9C,CAAC;SAAM,CAAC;QACN,4CAA4C;QAC5C,MAAM,GAAG,MAAM,eAAe,CAAC,MAAM,CAAC,CAAC;IACzC,CAAC;IAED,yBAAyB;IACzB,MAAM,cAAc,GAAG,MAAM,oBAAoB,EAAE,CAAC;IAEpD,OAAO;QACL,GAAG,MAAM;QACT,WAAW,EAAE,IAAI;QACjB,SAAS,EAAE,eAAe,CAAC,IAAI,CAAC;QAChC,cAAc;KACf,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,0BAA0B;IAGvC,iDAAiD;IACjD,MAAM,SAAS,GAAG,MAAM,eAAe,EAAE,CAAC;IAE1C,sCAAsC;IACtC,MAAM,GAAG,GAAG,MAAM,SAAS,EAAE,CAAC;IAE9B,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/prompts/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"preset.d.ts","sourceRoot":"","sources":["../../src/prompts/preset.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAEvD,wBAAsB,YAAY,IAAI,OAAO,CAC3C,IAAI,CAAC,aAAa,EAAE,aAAa,GAAG,gBAAgB,GAAG,WAAW,CAAC,GAAG,IAAI,CAC3E,CAoCA;AAED,wBAAsB,eAAe,CACnC,MAAM,EAAE,IAAI,CAAC,aAAa,EAAE,aAAa,GAAG,gBAAgB,GAAG,WAAW,CAAC,GAC1E,OAAO,CAAC,IAAI,CAAC,aAAa,EAAE,aAAa,GAAG,gBAAgB,GAAG,WAAW,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"preset.d.ts","sourceRoot":"","sources":["../../src/prompts/preset.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAEvD,wBAAsB,YAAY,IAAI,OAAO,CAC3C,IAAI,CAAC,aAAa,EAAE,aAAa,GAAG,gBAAgB,GAAG,WAAW,CAAC,GAAG,IAAI,CAC3E,CAoCA;AAED,wBAAsB,eAAe,CACnC,MAAM,EAAE,IAAI,CAAC,aAAa,EAAE,aAAa,GAAG,gBAAgB,GAAG,WAAW,CAAC,GAC1E,OAAO,CAAC,IAAI,CAAC,aAAa,EAAE,aAAa,GAAG,gBAAgB,GAAG,WAAW,CAAC,CAAC,CA4J9E"}
|
package/dist/prompts/preset.js
CHANGED
|
@@ -49,15 +49,44 @@ export async function customizePreset(config) {
|
|
|
49
49
|
console.log(chalk.cyan('\n📝 Customize your preset:\n'));
|
|
50
50
|
// Show current configuration
|
|
51
51
|
displayPresetSummary(config);
|
|
52
|
-
//
|
|
53
|
-
|
|
52
|
+
// First, ask about platforms
|
|
53
|
+
// @ts-expect-error - inquirer types are too strict
|
|
54
|
+
const { platformsToInclude } = await inquirer.prompt([
|
|
54
55
|
{
|
|
56
|
+
type: 'checkbox',
|
|
57
|
+
name: 'platformsToInclude',
|
|
58
|
+
message: 'Which platforms do you want to include?',
|
|
59
|
+
choices: [
|
|
60
|
+
{
|
|
61
|
+
name: 'Mobile (Expo + React Native)',
|
|
62
|
+
value: 'mobile',
|
|
63
|
+
checked: config.platforms.includes('mobile'),
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
name: 'Web (Next.js)',
|
|
67
|
+
value: 'web',
|
|
68
|
+
checked: config.platforms.includes('web'),
|
|
69
|
+
},
|
|
70
|
+
],
|
|
71
|
+
validate: (input) => {
|
|
72
|
+
if (input.length === 0) {
|
|
73
|
+
return 'Please select at least one platform';
|
|
74
|
+
}
|
|
75
|
+
return true;
|
|
76
|
+
},
|
|
77
|
+
},
|
|
78
|
+
]);
|
|
79
|
+
const hasMobile = platformsToInclude.includes('mobile');
|
|
80
|
+
const questions = [];
|
|
81
|
+
// Only show onboarding for mobile
|
|
82
|
+
if (hasMobile) {
|
|
83
|
+
questions.push({
|
|
55
84
|
type: 'confirm',
|
|
56
85
|
name: 'onboarding',
|
|
57
|
-
message: 'Include onboarding flow?',
|
|
86
|
+
message: 'Include onboarding flow? (mobile only)',
|
|
58
87
|
default: config.features.onboarding.enabled,
|
|
59
|
-
}
|
|
60
|
-
{
|
|
88
|
+
});
|
|
89
|
+
questions.push({
|
|
61
90
|
type: 'number',
|
|
62
91
|
name: 'onboardingPages',
|
|
63
92
|
message: 'How many onboarding pages? (1-5)',
|
|
@@ -69,53 +98,55 @@ export async function customizePreset(config) {
|
|
|
69
98
|
}
|
|
70
99
|
return true;
|
|
71
100
|
},
|
|
72
|
-
}
|
|
73
|
-
{
|
|
101
|
+
});
|
|
102
|
+
questions.push({
|
|
74
103
|
type: 'confirm',
|
|
75
104
|
name: 'paywall',
|
|
76
|
-
message: 'Include subscription paywall?',
|
|
105
|
+
message: 'Include subscription paywall? (mobile only)',
|
|
77
106
|
default: config.features.paywall,
|
|
78
|
-
}
|
|
79
|
-
{
|
|
107
|
+
});
|
|
108
|
+
questions.push({
|
|
80
109
|
type: 'confirm',
|
|
81
110
|
name: 'revenueCat',
|
|
82
111
|
message: 'Include RevenueCat (subscriptions)?',
|
|
83
112
|
default: config.integrations.revenueCat.enabled,
|
|
84
113
|
when: (answers) => answers.paywall,
|
|
85
|
-
}
|
|
86
|
-
{
|
|
114
|
+
});
|
|
115
|
+
questions.push({
|
|
87
116
|
type: 'confirm',
|
|
88
117
|
name: 'adjust',
|
|
89
118
|
message: 'Include Adjust (attribution)?',
|
|
90
119
|
default: config.integrations.adjust.enabled,
|
|
91
|
-
}
|
|
92
|
-
{
|
|
120
|
+
});
|
|
121
|
+
questions.push({
|
|
93
122
|
type: 'confirm',
|
|
94
123
|
name: 'scate',
|
|
95
124
|
message: 'Include Scate (engagement)?',
|
|
96
125
|
default: config.integrations.scate.enabled,
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
126
|
+
});
|
|
127
|
+
}
|
|
128
|
+
// OAuth providers for both platforms
|
|
129
|
+
questions.push({
|
|
130
|
+
type: 'checkbox',
|
|
131
|
+
name: 'oauthProviders',
|
|
132
|
+
message: 'Select OAuth providers to enable:',
|
|
133
|
+
choices: [
|
|
134
|
+
{ name: 'Google', value: 'google', checked: config.features.authentication.providers.google },
|
|
135
|
+
{ name: 'Apple', value: 'apple', checked: config.features.authentication.providers.apple },
|
|
136
|
+
{ name: 'GitHub', value: 'github', checked: config.features.authentication.providers.github },
|
|
137
|
+
],
|
|
138
|
+
});
|
|
139
|
+
const answers = await inquirer.prompt(questions);
|
|
110
140
|
return {
|
|
111
141
|
...config,
|
|
142
|
+
platforms: platformsToInclude,
|
|
112
143
|
features: {
|
|
113
144
|
...config.features,
|
|
114
145
|
onboarding: {
|
|
115
|
-
enabled: answers.onboarding,
|
|
146
|
+
enabled: hasMobile ? (answers.onboarding ?? false) : false,
|
|
116
147
|
pages: answers.onboardingPages || 3,
|
|
117
148
|
skipButton: config.features.onboarding.skipButton,
|
|
118
|
-
showPaywall: answers.paywall && answers.revenueCat,
|
|
149
|
+
showPaywall: hasMobile && answers.paywall && answers.revenueCat,
|
|
119
150
|
},
|
|
120
151
|
authentication: {
|
|
121
152
|
...config.features.authentication,
|
|
@@ -126,32 +157,36 @@ export async function customizePreset(config) {
|
|
|
126
157
|
github: answers.oauthProviders?.includes('github') ?? config.features.authentication.providers.github,
|
|
127
158
|
},
|
|
128
159
|
},
|
|
129
|
-
paywall: answers.paywall,
|
|
160
|
+
paywall: hasMobile ? (answers.paywall ?? false) : false,
|
|
130
161
|
},
|
|
131
162
|
integrations: {
|
|
132
163
|
...config.integrations,
|
|
133
164
|
revenueCat: {
|
|
134
165
|
...config.integrations.revenueCat,
|
|
135
|
-
enabled: answers.revenueCat
|
|
166
|
+
enabled: hasMobile ? (answers.revenueCat ?? false) : false,
|
|
136
167
|
},
|
|
137
168
|
adjust: {
|
|
138
169
|
...config.integrations.adjust,
|
|
139
|
-
enabled: answers.adjust,
|
|
170
|
+
enabled: hasMobile ? (answers.adjust ?? false) : false,
|
|
140
171
|
},
|
|
141
172
|
scate: {
|
|
142
173
|
...config.integrations.scate,
|
|
143
|
-
enabled: answers.scate,
|
|
174
|
+
enabled: hasMobile ? (answers.scate ?? false) : false,
|
|
144
175
|
},
|
|
145
176
|
att: {
|
|
146
177
|
...config.integrations.att,
|
|
147
|
-
enabled: answers.adjust, // Auto-enable ATT with Adjust
|
|
178
|
+
enabled: hasMobile && answers.adjust, // Auto-enable ATT with Adjust
|
|
148
179
|
},
|
|
149
180
|
},
|
|
150
181
|
customized: true,
|
|
151
182
|
};
|
|
152
183
|
}
|
|
153
184
|
function displayPresetSummary(config) {
|
|
185
|
+
const platformDisplay = config.platforms.length === 2
|
|
186
|
+
? 'mobile + web'
|
|
187
|
+
: config.platforms[0];
|
|
154
188
|
console.log(chalk.gray('Current configuration:'));
|
|
189
|
+
console.log(chalk.gray(` • Platforms: ${platformDisplay}`));
|
|
155
190
|
console.log(chalk.gray(` • Onboarding: ${config.features.onboarding.enabled ? 'Yes' : 'No'}`));
|
|
156
191
|
console.log(chalk.gray(` • Paywall: ${config.features.paywall ? 'Yes' : 'No'}`));
|
|
157
192
|
console.log(chalk.gray(` • RevenueCat: ${config.integrations.revenueCat.enabled ? 'Yes' : 'No'}`));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"preset.js","sourceRoot":"","sources":["../../src/prompts/preset.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,UAAU,CAAC;AAChC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAG/C,MAAM,CAAC,KAAK,UAAU,YAAY;IAGhC,MAAM,OAAO,GAAG;QACd,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;YAC1B,IAAI,EAAE,GAAG,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI,MAAM,MAAM,CAAC,WAAW,EAAE;YAC7D,KAAK,EAAE,MAAM,CAAC,IAAI;YAClB,KAAK,EAAE,MAAM,CAAC,IAAI;SACnB,CAAC,CAAC;QACH;YACE,IAAI,EAAE,yCAAyC;YAC/C,KAAK,EAAE,QAAQ;YACf,KAAK,EAAE,QAAQ;SAChB;KACF,CAAC;IAEF,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC;QACvC;YACE,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE,6BAA6B;YACtC,OAAO;YACP,QAAQ,EAAE,EAAE;SACb;KACF,CAAC,CAAC;IAEH,gDAAgD;IAChD,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;QACxB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,qBAAqB;IACrB,MAAM,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC;IAC9D,IAAI,CAAC,cAAc,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CAAC,qBAAqB,MAAM,EAAE,CAAC,CAAC;IACjD,CAAC;IAED,OAAO,cAAc,CAAC,MAAM,CAAC;AAC/B,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,MAA2E;IAE3E,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC;QAC1C;YACE,IAAI,EAAE,SAAS;YACf,IAAI,EAAE,WAAW;YACjB,OAAO,EAAE,uCAAuC;YAChD,OAAO,EAAE,KAAK;SACf;KACF,CAAC,CAAC;IAEH,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC,CAAC;IAEzD,6BAA6B;IAC7B,oBAAoB,CAAC,MAAM,CAAC,CAAC;IAE7B,
|
|
1
|
+
{"version":3,"file":"preset.js","sourceRoot":"","sources":["../../src/prompts/preset.ts"],"names":[],"mappings":"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"}
|
package/dist/utils/template.js
CHANGED
|
@@ -166,7 +166,7 @@ export function getDestinationPath(templatePath, targetDir) {
|
|
|
166
166
|
if (restOfPath.startsWith('app/') || restOfPath === 'app') {
|
|
167
167
|
relativePath = `mobile/${restOfPath}`;
|
|
168
168
|
}
|
|
169
|
-
else if (['services', 'store', 'hooks', 'components'].some(dir => restOfPath.startsWith(dir + '/') || restOfPath === dir)) {
|
|
169
|
+
else if (['services', 'store', 'hooks', 'components', 'types'].some(dir => restOfPath.startsWith(dir + '/') || restOfPath === dir)) {
|
|
170
170
|
relativePath = `mobile/src/${restOfPath}`;
|
|
171
171
|
}
|
|
172
172
|
else {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"template.js","sourceRoot":"","sources":["../../src/utils/template.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"template.js","sourceRoot":"","sources":["../../src/utils/template.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../src/utils/validation.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAEvD,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,gBAAgB,CAsClE;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,aAAa,GAAG,gBAAgB,
|
|
1
|
+
{"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../src/utils/validation.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAEvD,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,gBAAgB,CAsClE;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,aAAa,GAAG,gBAAgB,CAkH7E"}
|
package/dist/utils/validation.js
CHANGED
|
@@ -64,7 +64,49 @@ export function validateConfiguration(config) {
|
|
|
64
64
|
error: 'Package manager must be one of: npm, yarn, bun',
|
|
65
65
|
};
|
|
66
66
|
}
|
|
67
|
-
// Validate
|
|
67
|
+
// Validate mobile-only features on web-only config
|
|
68
|
+
// IMPORTANT: Check platform constraints BEFORE dependency constraints
|
|
69
|
+
// so users see the more fundamental error first
|
|
70
|
+
const hasMobile = config.platforms.includes('mobile');
|
|
71
|
+
if (!hasMobile) {
|
|
72
|
+
if (config.features.onboarding.enabled) {
|
|
73
|
+
return {
|
|
74
|
+
valid: false,
|
|
75
|
+
error: 'Onboarding feature requires mobile platform',
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
if (config.features.paywall) {
|
|
79
|
+
return {
|
|
80
|
+
valid: false,
|
|
81
|
+
error: 'Paywall feature requires mobile platform',
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
if (config.integrations.revenueCat.enabled) {
|
|
85
|
+
return {
|
|
86
|
+
valid: false,
|
|
87
|
+
error: 'RevenueCat integration requires mobile platform',
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
if (config.integrations.adjust.enabled) {
|
|
91
|
+
return {
|
|
92
|
+
valid: false,
|
|
93
|
+
error: 'Adjust integration requires mobile platform',
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
if (config.integrations.scate.enabled) {
|
|
97
|
+
return {
|
|
98
|
+
valid: false,
|
|
99
|
+
error: 'Scate integration requires mobile platform',
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
if (config.integrations.att.enabled) {
|
|
103
|
+
return {
|
|
104
|
+
valid: false,
|
|
105
|
+
error: 'ATT integration requires mobile platform',
|
|
106
|
+
};
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
// Validate paywall requires RevenueCat (only relevant when mobile platform is included)
|
|
68
110
|
if (config.features.paywall && !config.integrations.revenueCat.enabled) {
|
|
69
111
|
return {
|
|
70
112
|
valid: false,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validation.js","sourceRoot":"","sources":["../../src/utils/validation.ts"],"names":[],"mappings":"AAAA,OAAO,sBAAsB,MAAM,2BAA2B,CAAC;AAQ/D,MAAM,UAAU,mBAAmB,CAAC,IAAY;IAC9C,iBAAiB;IACjB,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtC,OAAO;YACL,KAAK,EAAE,KAAK;YACZ,KAAK,EAAE,8BAA8B;SACtC,CAAC;IACJ,CAAC;IAED,kCAAkC;IAClC,MAAM,aAAa,GAAG,sBAAsB,CAAC,IAAI,CAAC,CAAC;IACnD,IAAI,CAAC,aAAa,CAAC,mBAAmB,EAAE,CAAC;QACvC,MAAM,MAAM,GAAG;YACb,GAAG,CAAC,aAAa,CAAC,MAAM,IAAI,EAAE,CAAC;YAC/B,GAAG,CAAC,aAAa,CAAC,QAAQ,IAAI,EAAE,CAAC;SAClC,CAAC;QACF,OAAO;YACL,KAAK,EAAE,KAAK;YACZ,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;SACzB,CAAC;IACJ,CAAC;IAED,oBAAoB;IACpB,IAAI,IAAI,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC;QACtB,OAAO;YACL,KAAK,EAAE,KAAK;YACZ,KAAK,EAAE,+CAA+C;SACvD,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAC/B,OAAO;YACL,KAAK,EAAE,KAAK;YACZ,KAAK,EAAE,wEAAwE;SAChF,CAAC;IACJ,CAAC;IAED,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;AACzB,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,MAAqB;IACzD,wBAAwB;IACxB,MAAM,cAAc,GAAG,mBAAmB,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;IAC/D,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC;QAC1B,OAAO,cAAc,CAAC;IACxB,CAAC;IAED,qBAAqB;IACrB,IAAI,CAAC,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvD,OAAO;YACL,KAAK,EAAE,KAAK;YACZ,KAAK,EAAE,wCAAwC;SAChD,CAAC;IACJ,CAAC;IAED,MAAM,cAAc,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IACzC,KAAK,MAAM,QAAQ,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;QACxC,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;YACvC,OAAO;gBACL,KAAK,EAAE,KAAK;gBACZ,KAAK,EAAE,qBAAqB,QAAQ,qBAAqB,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;aACrF,CAAC;QACJ,CAAC;IACH,CAAC;IAED,2BAA2B;IAC3B,MAAM,oBAAoB,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;IACpD,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,MAAM,CAAC,cAAc,CAAC,EAAE,CAAC;QAC1D,OAAO;YACL,KAAK,EAAE,KAAK;YACZ,KAAK,EAAE,gDAAgD;SACxD,CAAC;IACJ,CAAC;IAED,
|
|
1
|
+
{"version":3,"file":"validation.js","sourceRoot":"","sources":["../../src/utils/validation.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -2,7 +2,7 @@ import type { AuthFastifyRequest } from "fastify";
|
|
|
2
2
|
import { FastifyPluginAsync, FastifyRequest } from "fastify";
|
|
3
3
|
import { auth } from "../../../lib/auth";
|
|
4
4
|
import { Type } from "@sinclair/typebox";
|
|
5
|
-
import { updateUserProfile, deleteUser } from "../../../domain/user/repository";
|
|
5
|
+
import { updateUserProfile, deleteUser, userHasPassword } from "../../../domain/user/repository";
|
|
6
6
|
import { findUserSessionById, revokeSessionByToken } from "../../../domain/session/repository";
|
|
7
7
|
|
|
8
8
|
/**
|
|
@@ -33,6 +33,38 @@ function toFetchRequest(request: FastifyRequest): Request {
|
|
|
33
33
|
}
|
|
34
34
|
|
|
35
35
|
const authRoutes: FastifyPluginAsync = async (server) => {
|
|
36
|
+
// Check if user has a credential account with password
|
|
37
|
+
// Used to determine if OAuth user needs to set password before enabling 2FA
|
|
38
|
+
server.get(
|
|
39
|
+
"/has-password",
|
|
40
|
+
{ onRequest: server.requireAuth },
|
|
41
|
+
async (request, reply) => {
|
|
42
|
+
const { user } = request as AuthFastifyRequest;
|
|
43
|
+
const hasPassword = await userHasPassword(user.id);
|
|
44
|
+
return reply.send({ hasPassword });
|
|
45
|
+
}
|
|
46
|
+
);
|
|
47
|
+
|
|
48
|
+
// Set password for OAuth users (uses BetterAuth's setPassword API)
|
|
49
|
+
server.post(
|
|
50
|
+
"/set-password",
|
|
51
|
+
{
|
|
52
|
+
onRequest: server.requireAuth,
|
|
53
|
+
schema: { body: Type.Object({ newPassword: Type.String() }) },
|
|
54
|
+
},
|
|
55
|
+
async (request, reply) => {
|
|
56
|
+
const { newPassword } = request.body as { newPassword: string };
|
|
57
|
+
const fetchRequest = toFetchRequest(request);
|
|
58
|
+
|
|
59
|
+
const response = await auth.api.setPassword({
|
|
60
|
+
body: { newPassword },
|
|
61
|
+
headers: fetchRequest.headers,
|
|
62
|
+
});
|
|
63
|
+
|
|
64
|
+
return reply.send(response);
|
|
65
|
+
}
|
|
66
|
+
);
|
|
67
|
+
|
|
36
68
|
// Mount BetterAuth handler for all /* routes under this plugin
|
|
37
69
|
// Since this plugin is registered at /api/auth, BetterAuth handles /api/auth/*
|
|
38
70
|
// BetterAuth handles: sign-in, sign-up, sign-out, oauth callbacks, etc.
|