379 lines
17 KiB
JavaScript
379 lines
17 KiB
JavaScript
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
|