diff --git a/.claude/settings.local.json b/.claude/settings.local.json index 47b3190..b0b9237 100644 --- a/.claude/settings.local.json +++ b/.claude/settings.local.json @@ -1,7 +1,8 @@ { "permissions": { "allow": [ - "Bash(npm run:*)" + "Bash(npm run:*)", + "Bash(SUPABASE_URL=https://dummy.supabase.co SUPABASE_SERVICE_ROLE_KEY=dummy node -e \"import\\('./dist/index.js'\\).then\\(\\(\\) => { console.log\\('IMPORT_OK'\\); process.exit\\(0\\); }\\).catch\\(e => { console.error\\('IMPORT_FAIL:', e.message\\); process.exit\\(1\\); }\\)\")" ] } } diff --git a/src/controllers/correctionController.ts b/src/controllers/correctionController.ts index 1b0109f..06919bf 100644 --- a/src/controllers/correctionController.ts +++ b/src/controllers/correctionController.ts @@ -1,7 +1,7 @@ -import { supabase } from '../lib/supabase' -import { correctEE as deepseekCorrectEE, correctEO as deepseekCorrectEO } from '../lib/deepseek' -import type { EERapport, EORapport } from '../lib/deepseek' -import type { AuthProfile } from '../middleware/auth' +import { supabase } from '../lib/supabase.js' +import { correctEE as deepseekCorrectEE, correctEO as deepseekCorrectEO } from '../lib/deepseek.js' +import type { EERapport, EORapport } from '../lib/deepseek.js' +import type { AuthProfile } from '../middleware/auth.js' type CorrectionError = { error: true diff --git a/src/controllers/simulationController.ts b/src/controllers/simulationController.ts index de1cbeb..c7bcbe1 100644 --- a/src/controllers/simulationController.ts +++ b/src/controllers/simulationController.ts @@ -1,7 +1,7 @@ -import { supabase } from '../lib/supabase' -import { canUserSimulate, getPlanPermissions } from '../lib/access' -import type { Plan } from '../lib/access' -import type { AuthProfile } from '../middleware/auth' +import { supabase } from '../lib/supabase.js' +import { canUserSimulate, getPlanPermissions } from '../lib/access.js' +import type { Plan } from '../lib/access.js' +import type { AuthProfile } from '../middleware/auth.js' export type Tache = 'EE_T1' | 'EE_T2' | 'EE_T3' | 'EO_T1' | 'EO_T3' | 'EO_T2_LIVE' export type Mode = 'entrainement' | 'examen' diff --git a/src/index.ts b/src/index.ts index 7c12571..1e05f0a 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,11 +1,11 @@ import 'dotenv/config' import { Hono } from 'hono' import { serve } from '@hono/node-server' -import authRoutes from './routes/auth' -import plansRoutes from './routes/plans' -import simulationsRoutes from './routes/simulations' -import correctionsRoutes from './routes/corrections' -import stripeRoutes from './routes/stripe' +import authRoutes from './routes/auth.js' +import plansRoutes from './routes/plans.js' +import simulationsRoutes from './routes/simulations.js' +import correctionsRoutes from './routes/corrections.js' +import stripeRoutes from './routes/stripe.js' const app = new Hono() diff --git a/src/lib/planController.ts b/src/lib/planController.ts index 96d15f1..fde8b64 100644 --- a/src/lib/planController.ts +++ b/src/lib/planController.ts @@ -1,6 +1,6 @@ -import { supabase } from './supabase' -import { PLANS } from './access' -import type { Plan } from './access' +import { supabase } from './supabase.js' +import { PLANS } from './access.js' +import type { Plan } from './access.js' export async function updateUserPlan( userId: string, diff --git a/src/middleware/auth.ts b/src/middleware/auth.ts index ecf25fa..72ed908 100644 --- a/src/middleware/auth.ts +++ b/src/middleware/auth.ts @@ -1,5 +1,5 @@ import type { Context, Next } from 'hono' -import { supabase } from '../lib/supabase' +import { supabase } from '../lib/supabase.js' export type AuthUser = { id: string diff --git a/src/middleware/plan.ts b/src/middleware/plan.ts index be7024b..8c7d42d 100644 --- a/src/middleware/plan.ts +++ b/src/middleware/plan.ts @@ -1,7 +1,7 @@ import type { Context, Next } from 'hono' -import { checkFeatureAccess, getPlanPermissions } from '../lib/access' -import type { Feature, Plan } from '../lib/access' -import type { AppVariables } from './auth' +import { checkFeatureAccess, getPlanPermissions } from '../lib/access.js' +import type { Feature, Plan } from '../lib/access.js' +import type { AppVariables } from './auth.js' /** * Vérifie que le profil de l'utilisateur (posé par authMiddleware) diff --git a/src/routes/auth.ts b/src/routes/auth.ts index 8cf5447..b17c701 100644 --- a/src/routes/auth.ts +++ b/src/routes/auth.ts @@ -1,6 +1,6 @@ import { Hono } from 'hono' -import { authMiddleware } from '../middleware/auth' -import type { AppVariables } from '../middleware/auth' +import { authMiddleware } from '../middleware/auth.js' +import type { AppVariables } from '../middleware/auth.js' const auth = new Hono<{ Variables: AppVariables }>() diff --git a/src/routes/corrections.ts b/src/routes/corrections.ts index 24031e7..b01dbe4 100644 --- a/src/routes/corrections.ts +++ b/src/routes/corrections.ts @@ -1,7 +1,7 @@ import { Hono } from 'hono' -import { authMiddleware } from '../middleware/auth' -import type { AppVariables } from '../middleware/auth' -import * as correctionController from '../controllers/correctionController' +import { authMiddleware } from '../middleware/auth.js' +import type { AppVariables } from '../middleware/auth.js' +import * as correctionController from '../controllers/correctionController.js' const VALID_TACHES_EE = ['EE_T1', 'EE_T2', 'EE_T3'] const VALID_TACHES_EO = ['EO_T1', 'EO_T3'] diff --git a/src/routes/plans.ts b/src/routes/plans.ts index 44ad750..37d4ec4 100644 --- a/src/routes/plans.ts +++ b/src/routes/plans.ts @@ -1,8 +1,8 @@ import { Hono } from 'hono' import Stripe from 'stripe' -import { authMiddleware } from '../middleware/auth' -import type { AppVariables } from '../middleware/auth' -import { getPlanPermissions, PLANS } from '../lib/access' +import { authMiddleware } from '../middleware/auth.js' +import type { AppVariables } from '../middleware/auth.js' +import { getPlanPermissions, PLANS } from '../lib/access.js' const plans = new Hono<{ Variables: AppVariables }>() diff --git a/src/routes/simulations.ts b/src/routes/simulations.ts index 82a583d..b72da77 100644 --- a/src/routes/simulations.ts +++ b/src/routes/simulations.ts @@ -1,10 +1,10 @@ import { Hono } from 'hono' -import { authMiddleware } from '../middleware/auth' -import type { AppVariables } from '../middleware/auth' -import { getPlanPermissions } from '../lib/access' -import type { Plan } from '../lib/access' -import * as simulationController from '../controllers/simulationController' -import type { Tache, Mode } from '../controllers/simulationController' +import { authMiddleware } from '../middleware/auth.js' +import type { AppVariables } from '../middleware/auth.js' +import { getPlanPermissions } from '../lib/access.js' +import type { Plan } from '../lib/access.js' +import * as simulationController from '../controllers/simulationController.js' +import type { Tache, Mode } from '../controllers/simulationController.js' const VALID_TACHES: Tache[] = ['EE_T1', 'EE_T2', 'EE_T3', 'EO_T1', 'EO_T3', 'EO_T2_LIVE'] const VALID_MODES: Mode[] = ['entrainement', 'examen'] diff --git a/src/routes/stripe.ts b/src/routes/stripe.ts index ba0bcfb..127ed15 100644 --- a/src/routes/stripe.ts +++ b/src/routes/stripe.ts @@ -1,15 +1,15 @@ import { Hono } from 'hono' import type Stripe from 'stripe' -import { authMiddleware } from '../middleware/auth' -import type { AppVariables } from '../middleware/auth' -import { createCheckoutSession, verifyStripeWebhook } from '../lib/stripe' +import { authMiddleware } from '../middleware/auth.js' +import type { AppVariables } from '../middleware/auth.js' +import { createCheckoutSession, verifyStripeWebhook } from '../lib/stripe.js' import { updateUserPlan, updateUserStripeInfo, findUserBySubscriptionId, -} from '../lib/planController' -import type { Plan } from '../lib/access' -import { PLANS } from '../lib/access' +} from '../lib/planController.js' +import type { Plan } from '../lib/access.js' +import { PLANS } from '../lib/access.js' const stripeRoutes = new Hono<{ Variables: AppVariables }>() diff --git a/tsconfig.json b/tsconfig.json index 391bfec..fda5de3 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,8 +1,8 @@ { "compilerOptions": { "target": "ES2022", - "module": "ESNext", - "moduleResolution": "Bundler", + "module": "NodeNext", + "moduleResolution": "NodeNext", "lib": ["ES2022"], "outDir": "./dist", "rootDir": "./src",