connection base prisma + postgres + login ok
This commit is contained in:
379
.next/dev/server/chunks/ssr/[root-of-the-server]__410fd4fe._.js
Normal file
379
.next/dev/server/chunks/ssr/[root-of-the-server]__410fd4fe._.js
Normal file
@@ -0,0 +1,379 @@
|
||||
module.exports = [
|
||||
"[externals]/next/dist/compiled/next-server/app-page-turbo.runtime.dev.js [external] (next/dist/compiled/next-server/app-page-turbo.runtime.dev.js, cjs)", ((__turbopack_context__, module, exports) => {
|
||||
|
||||
const mod = __turbopack_context__.x("next/dist/compiled/next-server/app-page-turbo.runtime.dev.js", () => require("next/dist/compiled/next-server/app-page-turbo.runtime.dev.js"));
|
||||
|
||||
module.exports = mod;
|
||||
}),
|
||||
"[project]/Documents/00 - projet/plumeia/src/lib/api.ts [app-ssr] (ecmascript)", ((__turbopack_context__) => {
|
||||
"use strict";
|
||||
|
||||
__turbopack_context__.s([
|
||||
"default",
|
||||
()=>__TURBOPACK__default__export__
|
||||
]);
|
||||
const API_BASE_URL = '/api';
|
||||
// --- API CLIENT ---
|
||||
const api = {
|
||||
async request (endpoint, options = {}) {
|
||||
const url = `${API_BASE_URL}${endpoint}`;
|
||||
const headers = {
|
||||
'Content-Type': 'application/json',
|
||||
...options.headers
|
||||
};
|
||||
const response = await fetch(url, {
|
||||
...options,
|
||||
headers,
|
||||
credentials: 'include'
|
||||
});
|
||||
if (!response.ok) {
|
||||
let errorMsg = `Error ${response.status}: ${response.statusText}`;
|
||||
try {
|
||||
const errorJson = await response.json();
|
||||
console.error("API Error JSON:", errorJson);
|
||||
if (errorJson.error) errorMsg = errorJson.error;
|
||||
if (errorJson.message) errorMsg = errorJson.message;
|
||||
} catch {
|
||||
// Ignore json parse error
|
||||
}
|
||||
throw new Error(errorMsg);
|
||||
}
|
||||
if (response.status === 204) return null;
|
||||
return response.json();
|
||||
},
|
||||
// --- AUTH ENDPOINTS ---
|
||||
auth: {
|
||||
async getSession () {
|
||||
try {
|
||||
return await api.request('/auth/get-session');
|
||||
} catch {
|
||||
return null;
|
||||
}
|
||||
},
|
||||
async signIn (email, password) {
|
||||
return api.request('/auth/sign-in/email', {
|
||||
method: 'POST',
|
||||
body: JSON.stringify({
|
||||
email,
|
||||
password
|
||||
})
|
||||
});
|
||||
},
|
||||
async signUp (email, password, name) {
|
||||
return api.request('/auth/sign-up/email', {
|
||||
method: 'POST',
|
||||
body: JSON.stringify({
|
||||
email,
|
||||
password,
|
||||
name
|
||||
})
|
||||
});
|
||||
},
|
||||
async signOut () {
|
||||
return api.request('/auth/sign-out', {
|
||||
method: 'POST'
|
||||
});
|
||||
}
|
||||
},
|
||||
// --- DATA ENDPOINTS ---
|
||||
data: {
|
||||
async list (table) {
|
||||
const res = await api.request(`/data/read/${table}`);
|
||||
return res.data || [];
|
||||
},
|
||||
async get (table, id) {
|
||||
const res = await api.request(`/data/read/${table}/${id}`);
|
||||
return res.data;
|
||||
},
|
||||
async create (table, data) {
|
||||
return api.request(`/data/create/${table}`, {
|
||||
method: 'POST',
|
||||
body: JSON.stringify(data)
|
||||
});
|
||||
},
|
||||
async update (table, id, data) {
|
||||
return api.request(`/data/update/${table}/${id}`, {
|
||||
method: 'PUT',
|
||||
body: JSON.stringify(data)
|
||||
});
|
||||
},
|
||||
async delete (table, id) {
|
||||
return api.request(`/data/delete/${table}/${id}`, {
|
||||
method: 'DELETE'
|
||||
});
|
||||
},
|
||||
async getFullProject (projectId) {
|
||||
const project = await this.get('projects', projectId);
|
||||
const [chapters, entities, ideas] = await Promise.all([
|
||||
api.request(`/data/chapters/list?project_id=${projectId}`),
|
||||
api.request(`/data/entities/list?project_id=${projectId}`),
|
||||
api.request(`/data/ideas/list?project_id=${projectId}`)
|
||||
]);
|
||||
return {
|
||||
...project,
|
||||
chapters: chapters || [],
|
||||
entities: entities || [],
|
||||
ideas: ideas || []
|
||||
};
|
||||
}
|
||||
},
|
||||
// --- AI ENDPOINTS (server-side via API routes) ---
|
||||
ai: {
|
||||
async generate (project, chapterId, prompt, user) {
|
||||
return api.request('/ai/generate', {
|
||||
method: 'POST',
|
||||
body: JSON.stringify({
|
||||
project,
|
||||
chapterId,
|
||||
prompt,
|
||||
user
|
||||
})
|
||||
});
|
||||
},
|
||||
async transform (text, mode, context, user) {
|
||||
const res = await api.request('/ai/transform', {
|
||||
method: 'POST',
|
||||
body: JSON.stringify({
|
||||
text,
|
||||
mode,
|
||||
context,
|
||||
user
|
||||
})
|
||||
});
|
||||
return res.text;
|
||||
}
|
||||
}
|
||||
};
|
||||
const __TURBOPACK__default__export__ = api;
|
||||
}),
|
||||
"[project]/Documents/00 - projet/plumeia/src/hooks/useAuth.ts [app-ssr] (ecmascript)", ((__turbopack_context__) => {
|
||||
"use strict";
|
||||
|
||||
__turbopack_context__.s([
|
||||
"useAuth",
|
||||
()=>useAuth
|
||||
]);
|
||||
var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react.js [app-ssr] (ecmascript)");
|
||||
var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$src$2f$lib$2f$api$2e$ts__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/00 - projet/plumeia/src/lib/api.ts [app-ssr] (ecmascript)");
|
||||
'use client';
|
||||
;
|
||||
;
|
||||
const useAuth = ()=>{
|
||||
const [user, setUser] = (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["useState"])(null);
|
||||
const [loading, setLoading] = (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["useState"])(true);
|
||||
// Check session on mount
|
||||
(0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["useEffect"])(()=>{
|
||||
const checkSession = async ()=>{
|
||||
try {
|
||||
const session = await __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$src$2f$lib$2f$api$2e$ts__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["default"].auth.getSession();
|
||||
if (session && session.user) {
|
||||
setUser({
|
||||
id: session.user.id,
|
||||
email: session.user.email,
|
||||
name: session.user.name || 'User',
|
||||
subscription: {
|
||||
plan: 'free',
|
||||
startDate: Date.now(),
|
||||
status: 'active'
|
||||
},
|
||||
usage: {
|
||||
aiActionsCurrent: 0,
|
||||
aiActionsLimit: 100,
|
||||
projectsLimit: 3
|
||||
},
|
||||
preferences: {
|
||||
theme: 'light',
|
||||
dailyWordGoal: 500,
|
||||
language: 'fr'
|
||||
},
|
||||
stats: {
|
||||
totalWordsWritten: 0,
|
||||
writingStreak: 0,
|
||||
lastWriteDate: 0
|
||||
}
|
||||
});
|
||||
}
|
||||
} catch (err) {
|
||||
console.error('Session check failed', err);
|
||||
} finally{
|
||||
setLoading(false);
|
||||
}
|
||||
};
|
||||
checkSession();
|
||||
}, []);
|
||||
const login = async (email, pass)=>{
|
||||
setLoading(true);
|
||||
try {
|
||||
await __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$src$2f$lib$2f$api$2e$ts__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["default"].auth.signIn(email, pass);
|
||||
const session = await __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$src$2f$lib$2f$api$2e$ts__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["default"].auth.getSession();
|
||||
if (session?.user) {
|
||||
setUser({
|
||||
id: session.user.id,
|
||||
email: session.user.email,
|
||||
name: session.user.name || 'User',
|
||||
subscription: {
|
||||
plan: 'free',
|
||||
startDate: Date.now(),
|
||||
status: 'active'
|
||||
},
|
||||
usage: {
|
||||
aiActionsCurrent: 0,
|
||||
aiActionsLimit: 100,
|
||||
projectsLimit: 3
|
||||
},
|
||||
preferences: {
|
||||
theme: 'light',
|
||||
dailyWordGoal: 500,
|
||||
language: 'fr'
|
||||
},
|
||||
stats: {
|
||||
totalWordsWritten: 0,
|
||||
writingStreak: 0,
|
||||
lastWriteDate: 0
|
||||
}
|
||||
});
|
||||
}
|
||||
} catch (err) {
|
||||
console.error('Login failed', err);
|
||||
throw err;
|
||||
} finally{
|
||||
setLoading(false);
|
||||
}
|
||||
};
|
||||
const signup = async (email, pass, name)=>{
|
||||
setLoading(true);
|
||||
try {
|
||||
await __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$src$2f$lib$2f$api$2e$ts__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["default"].auth.signUp(email, pass, name);
|
||||
let session = await __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$src$2f$lib$2f$api$2e$ts__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["default"].auth.getSession();
|
||||
if (!session?.user) {
|
||||
await __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$src$2f$lib$2f$api$2e$ts__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["default"].auth.signIn(email, pass);
|
||||
session = await __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$src$2f$lib$2f$api$2e$ts__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["default"].auth.getSession();
|
||||
}
|
||||
if (session?.user) {
|
||||
setUser({
|
||||
id: session.user.id,
|
||||
email: session.user.email,
|
||||
name: session.user.name || name,
|
||||
subscription: {
|
||||
plan: 'free',
|
||||
startDate: Date.now(),
|
||||
status: 'active'
|
||||
},
|
||||
usage: {
|
||||
aiActionsCurrent: 0,
|
||||
aiActionsLimit: 100,
|
||||
projectsLimit: 3
|
||||
},
|
||||
preferences: {
|
||||
theme: 'light',
|
||||
dailyWordGoal: 500,
|
||||
language: 'fr'
|
||||
},
|
||||
stats: {
|
||||
totalWordsWritten: 0,
|
||||
writingStreak: 0,
|
||||
lastWriteDate: 0
|
||||
}
|
||||
});
|
||||
}
|
||||
} catch (err) {
|
||||
console.error('Signup failed', err);
|
||||
throw err;
|
||||
} finally{
|
||||
setLoading(false);
|
||||
}
|
||||
};
|
||||
const logout = async ()=>{
|
||||
try {
|
||||
await __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$src$2f$lib$2f$api$2e$ts__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["default"].auth.signOut();
|
||||
} catch (err) {
|
||||
console.error('Logout failed', err);
|
||||
} finally{
|
||||
setUser(null);
|
||||
}
|
||||
};
|
||||
const incrementUsage = ()=>{
|
||||
if (user) {
|
||||
setUser({
|
||||
...user,
|
||||
usage: {
|
||||
...user.usage,
|
||||
aiActionsCurrent: user.usage.aiActionsCurrent + 1
|
||||
}
|
||||
});
|
||||
}
|
||||
};
|
||||
return {
|
||||
user,
|
||||
login,
|
||||
signup,
|
||||
logout,
|
||||
incrementUsage,
|
||||
loading
|
||||
};
|
||||
};
|
||||
}),
|
||||
"[project]/Documents/00 - projet/plumeia/src/providers/AuthProvider.tsx [app-ssr] (ecmascript)", ((__turbopack_context__) => {
|
||||
"use strict";
|
||||
|
||||
__turbopack_context__.s([
|
||||
"AuthProvider",
|
||||
()=>AuthProvider,
|
||||
"useAuthContext",
|
||||
()=>useAuthContext
|
||||
]);
|
||||
var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react-jsx-dev-runtime.js [app-ssr] (ecmascript)");
|
||||
var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react.js [app-ssr] (ecmascript)");
|
||||
var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$src$2f$hooks$2f$useAuth$2e$ts__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/00 - projet/plumeia/src/hooks/useAuth.ts [app-ssr] (ecmascript)");
|
||||
'use client';
|
||||
;
|
||||
;
|
||||
;
|
||||
const AuthContext = /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["createContext"])(null);
|
||||
const AuthProvider = ({ children })=>{
|
||||
const auth = (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$src$2f$hooks$2f$useAuth$2e$ts__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["useAuth"])();
|
||||
return /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])(AuthContext.Provider, {
|
||||
value: auth,
|
||||
children: children
|
||||
}, void 0, false, {
|
||||
fileName: "[project]/Documents/00 - projet/plumeia/src/providers/AuthProvider.tsx",
|
||||
lineNumber: 10,
|
||||
columnNumber: 12
|
||||
}, ("TURBOPACK compile-time value", void 0));
|
||||
};
|
||||
function useAuthContext() {
|
||||
return (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["useContext"])(AuthContext);
|
||||
}
|
||||
}),
|
||||
"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/server/route-modules/app-page/module.compiled.js [app-ssr] (ecmascript)", ((__turbopack_context__, module, exports) => {
|
||||
"use strict";
|
||||
|
||||
if ("TURBOPACK compile-time falsy", 0) //TURBOPACK unreachable
|
||||
;
|
||||
else {
|
||||
if ("TURBOPACK compile-time falsy", 0) //TURBOPACK unreachable
|
||||
;
|
||||
else {
|
||||
if ("TURBOPACK compile-time truthy", 1) {
|
||||
if ("TURBOPACK compile-time truthy", 1) {
|
||||
module.exports = __turbopack_context__.r("[externals]/next/dist/compiled/next-server/app-page-turbo.runtime.dev.js [external] (next/dist/compiled/next-server/app-page-turbo.runtime.dev.js, cjs)");
|
||||
} else //TURBOPACK unreachable
|
||||
;
|
||||
} else //TURBOPACK unreachable
|
||||
;
|
||||
}
|
||||
} //# sourceMappingURL=module.compiled.js.map
|
||||
}),
|
||||
"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react-jsx-dev-runtime.js [app-ssr] (ecmascript)", ((__turbopack_context__, module, exports) => {
|
||||
"use strict";
|
||||
|
||||
module.exports = __turbopack_context__.r("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/server/route-modules/app-page/module.compiled.js [app-ssr] (ecmascript)").vendored['react-ssr'].ReactJsxDevRuntime; //# sourceMappingURL=react-jsx-dev-runtime.js.map
|
||||
}),
|
||||
"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react.js [app-ssr] (ecmascript)", ((__turbopack_context__, module, exports) => {
|
||||
"use strict";
|
||||
|
||||
module.exports = __turbopack_context__.r("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/server/route-modules/app-page/module.compiled.js [app-ssr] (ecmascript)").vendored['react-ssr'].React; //# sourceMappingURL=react.js.map
|
||||
}),
|
||||
];
|
||||
|
||||
//# sourceMappingURL=%5Broot-of-the-server%5D__410fd4fe._.js.map
|
||||
Reference in New Issue
Block a user