Files
plume/.next/dev/static/chunks/Documents_00 - projet_plumeia_0ae2c1c3._.js

1326 lines
65 KiB
JavaScript

(globalThis.TURBOPACK || (globalThis.TURBOPACK = [])).push([typeof document === "object" ? document.currentScript : undefined,
"[project]/Documents/00 - projet/plumeia/src/lib/api.ts [app-client] (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
});
if (!response.ok) {
let errorMsg = `Error ${response.status}: ${response.statusText}`;
try {
const errorJson = await response.json();
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 ---
auth: {
async register (email, password, name) {
return api.request('/auth/register', {
method: 'POST',
body: JSON.stringify({
email,
password,
name
})
});
}
},
// --- PROJECTS ---
projects: {
async list () {
return api.request('/projects');
},
async get (id) {
return api.request(`/projects/${id}`);
},
async create (data) {
return api.request('/projects', {
method: 'POST',
body: JSON.stringify(data)
});
},
async update (id, data) {
return api.request(`/projects/${id}`, {
method: 'PUT',
body: JSON.stringify(data)
});
},
async delete (id) {
return api.request(`/projects/${id}`, {
method: 'DELETE'
});
}
},
// --- CHAPTERS ---
chapters: {
async create (data) {
return api.request('/chapters', {
method: 'POST',
body: JSON.stringify(data)
});
},
async update (id, data) {
return api.request(`/chapters/${id}`, {
method: 'PUT',
body: JSON.stringify(data)
});
},
async delete (id) {
return api.request(`/chapters/${id}`, {
method: 'DELETE'
});
}
},
// --- ENTITIES ---
entities: {
async create (data) {
return api.request('/entities', {
method: 'POST',
body: JSON.stringify(data)
});
},
async update (id, data) {
return api.request(`/entities/${id}`, {
method: 'PUT',
body: JSON.stringify(data)
});
},
async delete (id) {
return api.request(`/entities/${id}`, {
method: 'DELETE'
});
}
},
// --- IDEAS ---
ideas: {
async create (data) {
return api.request('/ideas', {
method: 'POST',
body: JSON.stringify(data)
});
},
async update (id, data) {
return api.request(`/ideas/${id}`, {
method: 'PUT',
body: JSON.stringify(data)
});
},
async delete (id) {
return api.request(`/ideas/${id}`, {
method: 'DELETE'
});
}
},
// --- AI (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;
if (typeof globalThis.$RefreshHelpers$ === 'object' && globalThis.$RefreshHelpers !== null) {
__turbopack_context__.k.registerExports(__turbopack_context__.m, globalThis.$RefreshHelpers$);
}
}),
"[project]/Documents/00 - projet/plumeia/src/hooks/useAuth.ts [app-client] (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$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/compiled/react/index.js [app-client] (ecmascript)");
var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2d$auth$2f$react$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/00 - projet/plumeia/node_modules/next-auth/react.js [app-client] (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$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/00 - projet/plumeia/src/lib/api.ts [app-client] (ecmascript)");
var _s = __turbopack_context__.k.signature();
'use client';
;
;
;
const useAuth = ()=>{
_s();
const { data: session, status } = (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2d$auth$2f$react$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useSession"])();
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$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useState"])(null);
const loading = status === 'loading';
// Sync session to UserProfile
(0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useEffect"])({
"useAuth.useEffect": ()=>{
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
}
});
} else if (status === 'unauthenticated') {
setUser(null);
}
}
}["useAuth.useEffect"], [
session,
status
]);
const login = (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useCallback"])({
"useAuth.useCallback[login]": async (email, password)=>{
const result = await (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2d$auth$2f$react$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["signIn"])('credentials', {
email,
password,
redirect: false
});
if (result?.error) {
throw new Error(result.error === 'CredentialsSignin' ? 'Email ou mot de passe incorrect' : result.error);
}
}
}["useAuth.useCallback[login]"], []);
const signup = (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useCallback"])({
"useAuth.useCallback[signup]": async (email, password, name)=>{
// 1. Register via API
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$client$5d$__$28$ecmascript$29$__["default"].auth.register(email, password, name);
// 2. Auto-login
const result = await (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2d$auth$2f$react$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["signIn"])('credentials', {
email,
password,
redirect: false
});
if (result?.error) {
throw new Error('Compte créé mais erreur de connexion automatique');
}
}
}["useAuth.useCallback[signup]"], []);
const logout = (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useCallback"])({
"useAuth.useCallback[logout]": async ()=>{
await (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2d$auth$2f$react$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["signOut"])({
redirect: false
});
setUser(null);
}
}["useAuth.useCallback[logout]"], []);
const incrementUsage = (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useCallback"])({
"useAuth.useCallback[incrementUsage]": ()=>{
if (user) {
setUser({
...user,
usage: {
...user.usage,
aiActionsCurrent: user.usage.aiActionsCurrent + 1
}
});
}
}
}["useAuth.useCallback[incrementUsage]"], [
user
]);
return {
user,
login,
signup,
logout,
incrementUsage,
loading
};
};
_s(useAuth, "NTps7lD2LRTcy9ISlNr85D5h8IY=", false, function() {
return [
__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2d$auth$2f$react$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useSession"]
];
});
if (typeof globalThis.$RefreshHelpers$ === 'object' && globalThis.$RefreshHelpers !== null) {
__turbopack_context__.k.registerExports(__turbopack_context__.m, globalThis.$RefreshHelpers$);
}
}),
"[project]/Documents/00 - projet/plumeia/src/providers/AuthProvider.tsx [app-client] (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$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/compiled/react/jsx-dev-runtime.js [app-client] (ecmascript)");
var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/compiled/react/index.js [app-client] (ecmascript)");
var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2d$auth$2f$react$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/00 - projet/plumeia/node_modules/next-auth/react.js [app-client] (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$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/00 - projet/plumeia/src/hooks/useAuth.ts [app-client] (ecmascript)");
;
var _s = __turbopack_context__.k.signature(), _s1 = __turbopack_context__.k.signature();
'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$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["createContext"])(null);
function AuthInner({ children }) {
_s();
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$client$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$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$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: 11,
columnNumber: 12
}, this);
}
_s(AuthInner, "YuJWYXaKIY31b1y7U6yy3IXSxQA=", false, function() {
return [
__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$src$2f$hooks$2f$useAuth$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useAuth"]
];
});
_c = AuthInner;
const AuthProvider = ({ children })=>{
return /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2d$auth$2f$react$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["SessionProvider"], {
children: /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(AuthInner, {
children: children
}, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/providers/AuthProvider.tsx",
lineNumber: 17,
columnNumber: 13
}, ("TURBOPACK compile-time value", void 0))
}, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/providers/AuthProvider.tsx",
lineNumber: 16,
columnNumber: 9
}, ("TURBOPACK compile-time value", void 0));
};
_c1 = AuthProvider;
function useAuthContext() {
_s1();
return (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useContext"])(AuthContext);
}
_s1(useAuthContext, "gDsCjeeItUuvgOWf1v4qoK9RF6k=");
var _c, _c1;
__turbopack_context__.k.register(_c, "AuthInner");
__turbopack_context__.k.register(_c1, "AuthProvider");
if (typeof globalThis.$RefreshHelpers$ === 'object' && globalThis.$RefreshHelpers !== null) {
__turbopack_context__.k.registerExports(__turbopack_context__.m, globalThis.$RefreshHelpers$);
}
}),
"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/compiled/react/cjs/react-jsx-dev-runtime.development.js [app-client] (ecmascript)", ((__turbopack_context__, module, exports) => {
"use strict";
var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$build$2f$polyfills$2f$process$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = /*#__PURE__*/ __turbopack_context__.i("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/build/polyfills/process.js [app-client] (ecmascript)");
/**
* @license React
* react-jsx-dev-runtime.development.js
*
* Copyright (c) Meta Platforms, Inc. and affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/ "use strict";
"production" !== ("TURBOPACK compile-time value", "development") && function() {
function getComponentNameFromType(type) {
if (null == type) return null;
if ("function" === typeof type) return type.$$typeof === REACT_CLIENT_REFERENCE ? null : type.displayName || type.name || null;
if ("string" === typeof type) return type;
switch(type){
case REACT_FRAGMENT_TYPE:
return "Fragment";
case REACT_PROFILER_TYPE:
return "Profiler";
case REACT_STRICT_MODE_TYPE:
return "StrictMode";
case REACT_SUSPENSE_TYPE:
return "Suspense";
case REACT_SUSPENSE_LIST_TYPE:
return "SuspenseList";
case REACT_ACTIVITY_TYPE:
return "Activity";
case REACT_VIEW_TRANSITION_TYPE:
return "ViewTransition";
}
if ("object" === typeof type) switch("number" === typeof type.tag && console.error("Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue."), type.$$typeof){
case REACT_PORTAL_TYPE:
return "Portal";
case REACT_CONTEXT_TYPE:
return type.displayName || "Context";
case REACT_CONSUMER_TYPE:
return (type._context.displayName || "Context") + ".Consumer";
case REACT_FORWARD_REF_TYPE:
var innerType = type.render;
type = type.displayName;
type || (type = innerType.displayName || innerType.name || "", type = "" !== type ? "ForwardRef(" + type + ")" : "ForwardRef");
return type;
case REACT_MEMO_TYPE:
return innerType = type.displayName || null, null !== innerType ? innerType : getComponentNameFromType(type.type) || "Memo";
case REACT_LAZY_TYPE:
innerType = type._payload;
type = type._init;
try {
return getComponentNameFromType(type(innerType));
} catch (x) {}
}
return null;
}
function testStringCoercion(value) {
return "" + value;
}
function checkKeyStringCoercion(value) {
try {
testStringCoercion(value);
var JSCompiler_inline_result = !1;
} catch (e) {
JSCompiler_inline_result = !0;
}
if (JSCompiler_inline_result) {
JSCompiler_inline_result = console;
var JSCompiler_temp_const = JSCompiler_inline_result.error;
var JSCompiler_inline_result$jscomp$0 = "function" === typeof Symbol && Symbol.toStringTag && value[Symbol.toStringTag] || value.constructor.name || "Object";
JSCompiler_temp_const.call(JSCompiler_inline_result, "The provided key is an unsupported type %s. This value must be coerced to a string before using it here.", JSCompiler_inline_result$jscomp$0);
return testStringCoercion(value);
}
}
function getTaskName(type) {
if (type === REACT_FRAGMENT_TYPE) return "<>";
if ("object" === typeof type && null !== type && type.$$typeof === REACT_LAZY_TYPE) return "<...>";
try {
var name = getComponentNameFromType(type);
return name ? "<" + name + ">" : "<...>";
} catch (x) {
return "<...>";
}
}
function getOwner() {
var dispatcher = ReactSharedInternals.A;
return null === dispatcher ? null : dispatcher.getOwner();
}
function UnknownOwner() {
return Error("react-stack-top-frame");
}
function hasValidKey(config) {
if (hasOwnProperty.call(config, "key")) {
var getter = Object.getOwnPropertyDescriptor(config, "key").get;
if (getter && getter.isReactWarning) return !1;
}
return void 0 !== config.key;
}
function defineKeyPropWarningGetter(props, displayName) {
function warnAboutAccessingKey() {
specialPropKeyWarningShown || (specialPropKeyWarningShown = !0, console.error("%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://react.dev/link/special-props)", displayName));
}
warnAboutAccessingKey.isReactWarning = !0;
Object.defineProperty(props, "key", {
get: warnAboutAccessingKey,
configurable: !0
});
}
function elementRefGetterWithDeprecationWarning() {
var componentName = getComponentNameFromType(this.type);
didWarnAboutElementRef[componentName] || (didWarnAboutElementRef[componentName] = !0, console.error("Accessing element.ref was removed in React 19. ref is now a regular prop. It will be removed from the JSX Element type in a future release."));
componentName = this.props.ref;
return void 0 !== componentName ? componentName : null;
}
function ReactElement(type, key, props, owner, debugStack, debugTask) {
var refProp = props.ref;
type = {
$$typeof: REACT_ELEMENT_TYPE,
type: type,
key: key,
props: props,
_owner: owner
};
null !== (void 0 !== refProp ? refProp : null) ? Object.defineProperty(type, "ref", {
enumerable: !1,
get: elementRefGetterWithDeprecationWarning
}) : Object.defineProperty(type, "ref", {
enumerable: !1,
value: null
});
type._store = {};
Object.defineProperty(type._store, "validated", {
configurable: !1,
enumerable: !1,
writable: !0,
value: 0
});
Object.defineProperty(type, "_debugInfo", {
configurable: !1,
enumerable: !1,
writable: !0,
value: null
});
Object.defineProperty(type, "_debugStack", {
configurable: !1,
enumerable: !1,
writable: !0,
value: debugStack
});
Object.defineProperty(type, "_debugTask", {
configurable: !1,
enumerable: !1,
writable: !0,
value: debugTask
});
Object.freeze && (Object.freeze(type.props), Object.freeze(type));
return type;
}
function jsxDEVImpl(type, config, maybeKey, isStaticChildren, debugStack, debugTask) {
var children = config.children;
if (void 0 !== children) if (isStaticChildren) if (isArrayImpl(children)) {
for(isStaticChildren = 0; isStaticChildren < children.length; isStaticChildren++)validateChildKeys(children[isStaticChildren]);
Object.freeze && Object.freeze(children);
} else console.error("React.jsx: Static children should always be an array. You are likely explicitly calling React.jsxs or React.jsxDEV. Use the Babel transform instead.");
else validateChildKeys(children);
if (hasOwnProperty.call(config, "key")) {
children = getComponentNameFromType(type);
var keys = Object.keys(config).filter(function(k) {
return "key" !== k;
});
isStaticChildren = 0 < keys.length ? "{key: someKey, " + keys.join(": ..., ") + ": ...}" : "{key: someKey}";
didWarnAboutKeySpread[children + isStaticChildren] || (keys = 0 < keys.length ? "{" + keys.join(": ..., ") + ": ...}" : "{}", console.error('A props object containing a "key" prop is being spread into JSX:\n let props = %s;\n <%s {...props} />\nReact keys must be passed directly to JSX without using spread:\n let props = %s;\n <%s key={someKey} {...props} />', isStaticChildren, children, keys, children), didWarnAboutKeySpread[children + isStaticChildren] = !0);
}
children = null;
void 0 !== maybeKey && (checkKeyStringCoercion(maybeKey), children = "" + maybeKey);
hasValidKey(config) && (checkKeyStringCoercion(config.key), children = "" + config.key);
if ("key" in config) {
maybeKey = {};
for(var propName in config)"key" !== propName && (maybeKey[propName] = config[propName]);
} else maybeKey = config;
children && defineKeyPropWarningGetter(maybeKey, "function" === typeof type ? type.displayName || type.name || "Unknown" : type);
return ReactElement(type, children, maybeKey, getOwner(), debugStack, debugTask);
}
function validateChildKeys(node) {
isValidElement(node) ? node._store && (node._store.validated = 1) : "object" === typeof node && null !== node && node.$$typeof === REACT_LAZY_TYPE && ("fulfilled" === node._payload.status ? isValidElement(node._payload.value) && node._payload.value._store && (node._payload.value._store.validated = 1) : node._store && (node._store.validated = 1));
}
function isValidElement(object) {
return "object" === typeof object && null !== object && object.$$typeof === REACT_ELEMENT_TYPE;
}
var React = __turbopack_context__.r("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/compiled/react/index.js [app-client] (ecmascript)"), REACT_ELEMENT_TYPE = Symbol.for("react.transitional.element"), REACT_PORTAL_TYPE = Symbol.for("react.portal"), REACT_FRAGMENT_TYPE = Symbol.for("react.fragment"), REACT_STRICT_MODE_TYPE = Symbol.for("react.strict_mode"), REACT_PROFILER_TYPE = Symbol.for("react.profiler"), REACT_CONSUMER_TYPE = Symbol.for("react.consumer"), REACT_CONTEXT_TYPE = Symbol.for("react.context"), REACT_FORWARD_REF_TYPE = Symbol.for("react.forward_ref"), REACT_SUSPENSE_TYPE = Symbol.for("react.suspense"), REACT_SUSPENSE_LIST_TYPE = Symbol.for("react.suspense_list"), REACT_MEMO_TYPE = Symbol.for("react.memo"), REACT_LAZY_TYPE = Symbol.for("react.lazy"), REACT_ACTIVITY_TYPE = Symbol.for("react.activity"), REACT_VIEW_TRANSITION_TYPE = Symbol.for("react.view_transition"), REACT_CLIENT_REFERENCE = Symbol.for("react.client.reference"), ReactSharedInternals = React.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE, hasOwnProperty = Object.prototype.hasOwnProperty, isArrayImpl = Array.isArray, createTask = console.createTask ? console.createTask : function() {
return null;
};
React = {
react_stack_bottom_frame: function(callStackForError) {
return callStackForError();
}
};
var specialPropKeyWarningShown;
var didWarnAboutElementRef = {};
var unknownOwnerDebugStack = React.react_stack_bottom_frame.bind(React, UnknownOwner)();
var unknownOwnerDebugTask = createTask(getTaskName(UnknownOwner));
var didWarnAboutKeySpread = {};
exports.Fragment = REACT_FRAGMENT_TYPE;
exports.jsxDEV = function(type, config, maybeKey, isStaticChildren) {
var trackActualOwner = 1e4 > ReactSharedInternals.recentlyCreatedOwnerStacks++;
if (trackActualOwner) {
var previousStackTraceLimit = Error.stackTraceLimit;
Error.stackTraceLimit = 10;
var debugStackDEV = Error("react-stack-top-frame");
Error.stackTraceLimit = previousStackTraceLimit;
} else debugStackDEV = unknownOwnerDebugStack;
return jsxDEVImpl(type, config, maybeKey, isStaticChildren, debugStackDEV, trackActualOwner ? createTask(getTaskName(type)) : unknownOwnerDebugTask);
};
}();
}),
"[project]/Documents/00 - projet/plumeia/node_modules/next/dist/compiled/react/jsx-dev-runtime.js [app-client] (ecmascript)", ((__turbopack_context__, module, exports) => {
"use strict";
var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$build$2f$polyfills$2f$process$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = /*#__PURE__*/ __turbopack_context__.i("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/build/polyfills/process.js [app-client] (ecmascript)");
'use strict';
if ("TURBOPACK compile-time falsy", 0) //TURBOPACK unreachable
;
else {
module.exports = __turbopack_context__.r("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/compiled/react/cjs/react-jsx-dev-runtime.development.js [app-client] (ecmascript)");
}
}),
"[project]/Documents/00 - projet/plumeia/node_modules/@auth/core/errors.js [app-client] (ecmascript)", ((__turbopack_context__) => {
"use strict";
/**
* Base error class for all Auth.js errors.
* It's optimized to be printed in the server logs in a nicely formatted way
* via the [`logger.error`](https://authjs.dev/reference/core#logger) option.
* @noInheritDoc
*/ __turbopack_context__.s([
"AccessDenied",
()=>AccessDenied,
"AccountNotLinked",
()=>AccountNotLinked,
"AdapterError",
()=>AdapterError,
"AuthError",
()=>AuthError,
"CallbackRouteError",
()=>CallbackRouteError,
"CredentialsSignin",
()=>CredentialsSignin,
"DuplicateConditionalUI",
()=>DuplicateConditionalUI,
"EmailSignInError",
()=>EmailSignInError,
"ErrorPageLoop",
()=>ErrorPageLoop,
"EventError",
()=>EventError,
"ExperimentalFeatureNotEnabled",
()=>ExperimentalFeatureNotEnabled,
"InvalidCallbackUrl",
()=>InvalidCallbackUrl,
"InvalidCheck",
()=>InvalidCheck,
"InvalidEndpoints",
()=>InvalidEndpoints,
"InvalidProvider",
()=>InvalidProvider,
"JWTSessionError",
()=>JWTSessionError,
"MissingAdapter",
()=>MissingAdapter,
"MissingAdapterMethods",
()=>MissingAdapterMethods,
"MissingAuthorize",
()=>MissingAuthorize,
"MissingCSRF",
()=>MissingCSRF,
"MissingSecret",
()=>MissingSecret,
"MissingWebAuthnAutocomplete",
()=>MissingWebAuthnAutocomplete,
"OAuthAccountNotLinked",
()=>OAuthAccountNotLinked,
"OAuthCallbackError",
()=>OAuthCallbackError,
"OAuthProfileParseError",
()=>OAuthProfileParseError,
"OAuthSignInError",
()=>OAuthSignInError,
"SessionTokenError",
()=>SessionTokenError,
"SignInError",
()=>SignInError,
"SignOutError",
()=>SignOutError,
"UnknownAction",
()=>UnknownAction,
"UnsupportedStrategy",
()=>UnsupportedStrategy,
"UntrustedHost",
()=>UntrustedHost,
"Verification",
()=>Verification,
"WebAuthnVerificationError",
()=>WebAuthnVerificationError,
"isClientError",
()=>isClientError
]);
class AuthError extends Error {
/** @internal */ constructor(message, errorOptions){
if (message instanceof Error) {
super(undefined, {
cause: {
err: message,
...message.cause,
...errorOptions
}
});
} else if (typeof message === "string") {
if (errorOptions instanceof Error) {
errorOptions = {
err: errorOptions,
...errorOptions.cause
};
}
super(message, errorOptions);
} else {
super(undefined, message);
}
this.name = this.constructor.name;
// @ts-expect-error https://github.com/microsoft/TypeScript/issues/3841
this.type = this.constructor.type ?? "AuthError";
// @ts-expect-error https://github.com/microsoft/TypeScript/issues/3841
this.kind = this.constructor.kind ?? "error";
Error.captureStackTrace?.(this, this.constructor);
const url = `https://errors.authjs.dev#${this.type.toLowerCase()}`;
this.message += `${this.message ? ". " : ""}Read more at ${url}`;
}
}
class SignInError extends AuthError {
}
/** @internal */ SignInError.kind = "signIn";
class AdapterError extends AuthError {
}
AdapterError.type = "AdapterError";
class AccessDenied extends AuthError {
}
AccessDenied.type = "AccessDenied";
class CallbackRouteError extends AuthError {
}
CallbackRouteError.type = "CallbackRouteError";
class ErrorPageLoop extends AuthError {
}
ErrorPageLoop.type = "ErrorPageLoop";
class EventError extends AuthError {
}
EventError.type = "EventError";
class InvalidCallbackUrl extends AuthError {
}
InvalidCallbackUrl.type = "InvalidCallbackUrl";
class CredentialsSignin extends SignInError {
constructor(){
super(...arguments);
/**
* The error code that is set in the `code` query parameter of the redirect URL.
*
*
* ⚠ NOTE: This property is going to be included in the URL, so make sure it does not hint at sensitive errors.
*
* The full error is always logged on the server, if you need to debug.
*
* Generally, we don't recommend hinting specifically if the user had either a wrong username or password specifically,
* try rather something like "Invalid credentials".
*/ this.code = "credentials";
}
}
CredentialsSignin.type = "CredentialsSignin";
class InvalidEndpoints extends AuthError {
}
InvalidEndpoints.type = "InvalidEndpoints";
class InvalidCheck extends AuthError {
}
InvalidCheck.type = "InvalidCheck";
class JWTSessionError extends AuthError {
}
JWTSessionError.type = "JWTSessionError";
class MissingAdapter extends AuthError {
}
MissingAdapter.type = "MissingAdapter";
class MissingAdapterMethods extends AuthError {
}
MissingAdapterMethods.type = "MissingAdapterMethods";
class MissingAuthorize extends AuthError {
}
MissingAuthorize.type = "MissingAuthorize";
class MissingSecret extends AuthError {
}
MissingSecret.type = "MissingSecret";
class OAuthAccountNotLinked extends SignInError {
}
OAuthAccountNotLinked.type = "OAuthAccountNotLinked";
class OAuthCallbackError extends SignInError {
}
OAuthCallbackError.type = "OAuthCallbackError";
class OAuthProfileParseError extends AuthError {
}
OAuthProfileParseError.type = "OAuthProfileParseError";
class SessionTokenError extends AuthError {
}
SessionTokenError.type = "SessionTokenError";
class OAuthSignInError extends SignInError {
}
OAuthSignInError.type = "OAuthSignInError";
class EmailSignInError extends SignInError {
}
EmailSignInError.type = "EmailSignInError";
class SignOutError extends AuthError {
}
SignOutError.type = "SignOutError";
class UnknownAction extends AuthError {
}
UnknownAction.type = "UnknownAction";
class UnsupportedStrategy extends AuthError {
}
UnsupportedStrategy.type = "UnsupportedStrategy";
class InvalidProvider extends AuthError {
}
InvalidProvider.type = "InvalidProvider";
class UntrustedHost extends AuthError {
}
UntrustedHost.type = "UntrustedHost";
class Verification extends AuthError {
}
Verification.type = "Verification";
class MissingCSRF extends SignInError {
}
MissingCSRF.type = "MissingCSRF";
const clientErrors = new Set([
"CredentialsSignin",
"OAuthAccountNotLinked",
"OAuthCallbackError",
"AccessDenied",
"Verification",
"MissingCSRF",
"AccountNotLinked",
"WebAuthnVerificationError"
]);
function isClientError(error) {
if (error instanceof AuthError) return clientErrors.has(error.type);
return false;
}
class DuplicateConditionalUI extends AuthError {
}
DuplicateConditionalUI.type = "DuplicateConditionalUI";
class MissingWebAuthnAutocomplete extends AuthError {
}
MissingWebAuthnAutocomplete.type = "MissingWebAuthnAutocomplete";
class WebAuthnVerificationError extends AuthError {
}
WebAuthnVerificationError.type = "WebAuthnVerificationError";
class AccountNotLinked extends SignInError {
}
AccountNotLinked.type = "AccountNotLinked";
class ExperimentalFeatureNotEnabled extends AuthError {
}
ExperimentalFeatureNotEnabled.type = "ExperimentalFeatureNotEnabled";
}),
"[project]/Documents/00 - projet/plumeia/node_modules/next-auth/lib/client.js [app-client] (ecmascript)", ((__turbopack_context__) => {
"use strict";
__turbopack_context__.s([
"ClientSessionError",
()=>ClientSessionError,
"apiBaseUrl",
()=>apiBaseUrl,
"fetchData",
()=>fetchData,
"now",
()=>now,
"parseUrl",
()=>parseUrl,
"useOnline",
()=>useOnline
]);
var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/compiled/react/index.js [app-client] (ecmascript)");
var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f40$auth$2f$core$2f$errors$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/00 - projet/plumeia/node_modules/@auth/core/errors.js [app-client] (ecmascript)");
"use client";
;
;
/** @todo */ class ClientFetchError extends __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f40$auth$2f$core$2f$errors$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["AuthError"] {
}
class ClientSessionError extends __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f40$auth$2f$core$2f$errors$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["AuthError"] {
}
async function fetchData(path, __NEXTAUTH, logger, req = {}) {
const url = `${apiBaseUrl(__NEXTAUTH)}/${path}`;
try {
const options = {
headers: {
"Content-Type": "application/json",
...req?.headers?.cookie ? {
cookie: req.headers.cookie
} : {}
}
};
if (req?.body) {
options.body = JSON.stringify(req.body);
options.method = "POST";
}
const res = await fetch(url, options);
const data = await res.json();
if (!res.ok) throw data;
return data;
} catch (error) {
logger.error(new ClientFetchError(error.message, error));
return null;
}
}
function apiBaseUrl(__NEXTAUTH) {
if (typeof window === "undefined") {
// Return absolute path when called server side
return `${__NEXTAUTH.baseUrlServer}${__NEXTAUTH.basePathServer}`;
}
// Return relative path when called client side
return __NEXTAUTH.basePath;
}
function useOnline() {
const [isOnline, setIsOnline] = __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useState"](typeof navigator !== "undefined" ? navigator.onLine : false);
const setOnline = ()=>setIsOnline(true);
const setOffline = ()=>setIsOnline(false);
__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useEffect"]({
"useOnline.useEffect": ()=>{
window.addEventListener("online", setOnline);
window.addEventListener("offline", setOffline);
return ({
"useOnline.useEffect": ()=>{
window.removeEventListener("online", setOnline);
window.removeEventListener("offline", setOffline);
}
})["useOnline.useEffect"];
}
}["useOnline.useEffect"], []);
return isOnline;
}
function now() {
return Math.floor(Date.now() / 1000);
}
function parseUrl(url) {
const defaultUrl = new URL("http://localhost:3000/api/auth");
if (url && !url.startsWith("http")) {
url = `https://${url}`;
}
const _url = new URL(url || defaultUrl);
const path = (_url.pathname === "/" ? defaultUrl.pathname : _url.pathname)// Remove trailing slash
.replace(/\/$/, "");
const base = `${_url.origin}${path}`;
return {
origin: _url.origin,
host: _url.host,
path,
base,
toString: ()=>base
};
}
}),
"[project]/Documents/00 - projet/plumeia/node_modules/next-auth/react.js [app-client] (ecmascript)", ((__turbopack_context__) => {
"use strict";
__turbopack_context__.s([
"SessionContext",
()=>SessionContext,
"SessionProvider",
()=>SessionProvider,
"__NEXTAUTH",
()=>__NEXTAUTH,
"getCsrfToken",
()=>getCsrfToken,
"getProviders",
()=>getProviders,
"getSession",
()=>getSession,
"signIn",
()=>signIn,
"signOut",
()=>signOut,
"useSession",
()=>useSession
]);
var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$build$2f$polyfills$2f$process$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = /*#__PURE__*/ __turbopack_context__.i("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/build/polyfills/process.js [app-client] (ecmascript)");
var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/compiled/react/jsx-runtime.js [app-client] (ecmascript)");
var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/compiled/react/index.js [app-client] (ecmascript)");
var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2d$auth$2f$lib$2f$client$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/00 - projet/plumeia/node_modules/next-auth/lib/client.js [app-client] (ecmascript)");
/**
*
* NextAuth.js is the official integration of Auth.js for Next.js applications. It supports both
* [Client Components](https://nextjs.org/docs/app/building-your-application/rendering/client-components) and the
* [Pages Router](https://nextjs.org/docs/pages). It includes methods for signing in, signing out, hooks, and a React
* Context provider to wrap your application and make session data available anywhere.
*
* For use in [Server Actions](https://nextjs.org/docs/app/api-reference/functions/server-actions), check out [these methods](https://authjs.dev/guides/upgrade-to-v5#methods)
*
* @module react
*/ "use client";
;
;
;
const __NEXTAUTH = {
baseUrl: (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2d$auth$2f$lib$2f$client$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["parseUrl"])(__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$build$2f$polyfills$2f$process$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"].env.NEXTAUTH_URL ?? __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$build$2f$polyfills$2f$process$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"].env.VERCEL_URL).origin,
basePath: (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2d$auth$2f$lib$2f$client$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["parseUrl"])(__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$build$2f$polyfills$2f$process$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"].env.NEXTAUTH_URL).path,
baseUrlServer: (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2d$auth$2f$lib$2f$client$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["parseUrl"])(__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$build$2f$polyfills$2f$process$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"].env.NEXTAUTH_URL_INTERNAL ?? __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$build$2f$polyfills$2f$process$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"].env.NEXTAUTH_URL ?? __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$build$2f$polyfills$2f$process$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"].env.VERCEL_URL).origin,
basePathServer: (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2d$auth$2f$lib$2f$client$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["parseUrl"])(__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$build$2f$polyfills$2f$process$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"].env.NEXTAUTH_URL_INTERNAL ?? __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$build$2f$polyfills$2f$process$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"].env.NEXTAUTH_URL).path,
_lastSync: 0,
_session: undefined,
_getSession: ()=>{}
};
// https://github.com/nextauthjs/next-auth/pull/10762
let broadcastChannel = null;
function getNewBroadcastChannel() {
if (typeof BroadcastChannel === "undefined") {
return {
postMessage: ()=>{},
addEventListener: ()=>{},
removeEventListener: ()=>{},
name: "next-auth",
onmessage: null,
onmessageerror: null,
close: ()=>{},
dispatchEvent: ()=>false
};
}
return new BroadcastChannel("next-auth");
}
function broadcast() {
if (broadcastChannel === null) {
broadcastChannel = getNewBroadcastChannel();
}
return broadcastChannel;
}
// TODO:
const logger = {
debug: console.debug,
error: console.error,
warn: console.warn
};
const SessionContext = __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["createContext"]?.(undefined);
function useSession(options) {
if (!SessionContext) {
throw new Error("React Context is unavailable in Server Components");
}
// @ts-expect-error Satisfy TS if branch on line below
const value = __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useContext"](SessionContext);
if (!value && ("TURBOPACK compile-time value", "development") !== "production") {
throw new Error("[next-auth]: `useSession` must be wrapped in a <SessionProvider />");
}
const { required, onUnauthenticated } = options ?? {};
const requiredAndNotLoading = required && value.status === "unauthenticated";
__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useEffect"]({
"useSession.useEffect": ()=>{
if (requiredAndNotLoading) {
const url = `${__NEXTAUTH.basePath}/signin?${new URLSearchParams({
error: "SessionRequired",
callbackUrl: window.location.href
})}`;
if (onUnauthenticated) onUnauthenticated();
else window.location.href = url;
}
}
}["useSession.useEffect"], [
requiredAndNotLoading,
onUnauthenticated
]);
if (requiredAndNotLoading) {
return {
data: value.data,
update: value.update,
status: "loading"
};
}
return value;
}
async function getSession(params) {
const session = await (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2d$auth$2f$lib$2f$client$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["fetchData"])("session", __NEXTAUTH, logger, params);
if (params?.broadcast ?? true) {
// https://github.com/nextauthjs/next-auth/pull/11470
getNewBroadcastChannel().postMessage({
event: "session",
data: {
trigger: "getSession"
}
});
}
return session;
}
async function getCsrfToken() {
const response = await (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2d$auth$2f$lib$2f$client$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["fetchData"])("csrf", __NEXTAUTH, logger);
return response?.csrfToken ?? "";
}
async function getProviders() {
return (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2d$auth$2f$lib$2f$client$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["fetchData"])("providers", __NEXTAUTH, logger);
}
async function signIn(provider, options, authorizationParams) {
const { callbackUrl, ...rest } = options ?? {};
const { redirect = true, redirectTo = callbackUrl ?? window.location.href, ...signInParams } = rest;
const baseUrl = (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2d$auth$2f$lib$2f$client$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["apiBaseUrl"])(__NEXTAUTH);
const providers = await getProviders();
if (!providers) {
const url = `${baseUrl}/error`;
window.location.href = url;
return; // TODO: Return error if `redirect: false`
}
if (!provider || !providers[provider]) {
const url = `${baseUrl}/signin?${new URLSearchParams({
callbackUrl: redirectTo
})}`;
window.location.href = url;
return; // TODO: Return error if `redirect: false`
}
const providerType = providers[provider].type;
if (providerType === "webauthn") {
// TODO: Add docs link with explanation
throw new TypeError([
`Provider id "${provider}" refers to a WebAuthn provider.`,
'Please use `import { signIn } from "next-auth/webauthn"` instead.'
].join("\n"));
}
const signInUrl = `${baseUrl}/${providerType === "credentials" ? "callback" : "signin"}/${provider}`;
const csrfToken = await getCsrfToken();
const res = await fetch(`${signInUrl}?${new URLSearchParams(authorizationParams)}`, {
method: "post",
headers: {
"Content-Type": "application/x-www-form-urlencoded",
"X-Auth-Return-Redirect": "1"
},
body: new URLSearchParams({
...signInParams,
csrfToken,
callbackUrl: redirectTo
})
});
const data = await res.json();
if (redirect) {
const url = data.url ?? redirectTo;
window.location.href = url;
// If url contains a hash, the browser does not reload the page. We reload manually
if (url.includes("#")) window.location.reload();
return;
}
const error = new URL(data.url).searchParams.get("error") ?? undefined;
const code = new URL(data.url).searchParams.get("code") ?? undefined;
if (res.ok) {
await __NEXTAUTH._getSession({
event: "storage"
});
}
return {
error,
code,
status: res.status,
ok: res.ok,
url: error ? null : data.url
};
}
async function signOut(options) {
const { redirect = true, redirectTo = options?.callbackUrl ?? window.location.href } = options ?? {};
const baseUrl = (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2d$auth$2f$lib$2f$client$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["apiBaseUrl"])(__NEXTAUTH);
const csrfToken = await getCsrfToken();
const res = await fetch(`${baseUrl}/signout`, {
method: "post",
headers: {
"Content-Type": "application/x-www-form-urlencoded",
"X-Auth-Return-Redirect": "1"
},
body: new URLSearchParams({
csrfToken,
callbackUrl: redirectTo
})
});
const data = await res.json();
broadcast().postMessage({
event: "session",
data: {
trigger: "signout"
}
});
if (redirect) {
const url = data.url ?? redirectTo;
window.location.href = url;
// If url contains a hash, the browser does not reload the page. We reload manually
if (url.includes("#")) window.location.reload();
return;
}
await __NEXTAUTH._getSession({
event: "storage"
});
return data;
}
function SessionProvider(props) {
if (!SessionContext) {
throw new Error("React Context is unavailable in Server Components");
}
const { children, basePath, refetchInterval, refetchWhenOffline } = props;
if (basePath) __NEXTAUTH.basePath = basePath;
/**
* If session was `null`, there was an attempt to fetch it,
* but it failed, but we still treat it as a valid initial value.
*/ const hasInitialSession = props.session !== undefined;
/** If session was passed, initialize as already synced */ __NEXTAUTH._lastSync = hasInitialSession ? (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2d$auth$2f$lib$2f$client$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["now"])() : 0;
const [session, setSession] = __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useState"]({
"SessionProvider.useState": ()=>{
if (hasInitialSession) __NEXTAUTH._session = props.session;
return props.session;
}
}["SessionProvider.useState"]);
/** If session was passed, initialize as not loading */ const [loading, setLoading] = __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useState"](!hasInitialSession);
__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useEffect"]({
"SessionProvider.useEffect": ()=>{
__NEXTAUTH._getSession = ({
"SessionProvider.useEffect": async ({ event } = {})=>{
try {
const storageEvent = event === "storage";
// We should always update if we don't have a client session yet
// or if there are events from other tabs/windows
if (storageEvent || __NEXTAUTH._session === undefined) {
__NEXTAUTH._lastSync = (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2d$auth$2f$lib$2f$client$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["now"])();
__NEXTAUTH._session = await getSession({
broadcast: !storageEvent
});
setSession(__NEXTAUTH._session);
return;
}
if (// If there is no time defined for when a session should be considered
// stale, then it's okay to use the value we have until an event is
// triggered which updates it
!event || // If the client doesn't have a session then we don't need to call
// the server to check if it does (if they have signed in via another
// tab or window that will come through as a "stroage" event
// event anyway)
__NEXTAUTH._session === null || // Bail out early if the client session is not stale yet
(0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2d$auth$2f$lib$2f$client$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["now"])() < __NEXTAUTH._lastSync) {
return;
}
// An event or session staleness occurred, update the client session.
__NEXTAUTH._lastSync = (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2d$auth$2f$lib$2f$client$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["now"])();
__NEXTAUTH._session = await getSession();
setSession(__NEXTAUTH._session);
} catch (error) {
logger.error(new __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2d$auth$2f$lib$2f$client$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["ClientSessionError"](error.message, error));
} finally{
setLoading(false);
}
}
})["SessionProvider.useEffect"];
__NEXTAUTH._getSession();
return ({
"SessionProvider.useEffect": ()=>{
__NEXTAUTH._lastSync = 0;
__NEXTAUTH._session = undefined;
__NEXTAUTH._getSession = ({
"SessionProvider.useEffect": ()=>{}
})["SessionProvider.useEffect"];
}
})["SessionProvider.useEffect"];
}
}["SessionProvider.useEffect"], []);
__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useEffect"]({
"SessionProvider.useEffect": ()=>{
const handle = {
"SessionProvider.useEffect.handle": ()=>__NEXTAUTH._getSession({
event: "storage"
})
}["SessionProvider.useEffect.handle"];
// Listen for storage events and update session if event fired from
// another window (but suppress firing another event to avoid a loop)
// Fetch new session data but tell it to not to fire another event to
// avoid an infinite loop.
// Note: We could pass session data through and do something like
// `setData(message.data)` but that can cause problems depending
// on how the session object is being used in the client; it is
// more robust to have each window/tab fetch it's own copy of the
// session object rather than share it across instances.
broadcast().addEventListener("message", handle);
return ({
"SessionProvider.useEffect": ()=>broadcast().removeEventListener("message", handle)
})["SessionProvider.useEffect"];
}
}["SessionProvider.useEffect"], []);
__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useEffect"]({
"SessionProvider.useEffect": ()=>{
const { refetchOnWindowFocus = true } = props;
// Listen for when the page is visible, if the user switches tabs
// and makes our tab visible again, re-fetch the session, but only if
// this feature is not disabled.
const visibilityHandler = {
"SessionProvider.useEffect.visibilityHandler": ()=>{
if (refetchOnWindowFocus && document.visibilityState === "visible") __NEXTAUTH._getSession({
event: "visibilitychange"
});
}
}["SessionProvider.useEffect.visibilityHandler"];
document.addEventListener("visibilitychange", visibilityHandler, false);
return ({
"SessionProvider.useEffect": ()=>document.removeEventListener("visibilitychange", visibilityHandler, false)
})["SessionProvider.useEffect"];
}
}["SessionProvider.useEffect"], [
props.refetchOnWindowFocus
]);
const isOnline = (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2d$auth$2f$lib$2f$client$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useOnline"])();
// TODO: Flip this behavior in next major version
const shouldRefetch = refetchWhenOffline !== false || isOnline;
__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useEffect"]({
"SessionProvider.useEffect": ()=>{
if (refetchInterval && shouldRefetch) {
const refetchIntervalTimer = setInterval({
"SessionProvider.useEffect.refetchIntervalTimer": ()=>{
if (__NEXTAUTH._session) {
__NEXTAUTH._getSession({
event: "poll"
});
}
}
}["SessionProvider.useEffect.refetchIntervalTimer"], refetchInterval * 1000);
return ({
"SessionProvider.useEffect": ()=>clearInterval(refetchIntervalTimer)
})["SessionProvider.useEffect"];
}
}
}["SessionProvider.useEffect"], [
refetchInterval,
shouldRefetch
]);
const value = __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useMemo"]({
"SessionProvider.useMemo[value]": ()=>({
data: session,
status: loading ? "loading" : session ? "authenticated" : "unauthenticated",
async update (data) {
if (loading) return;
setLoading(true);
const newSession = await (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2d$auth$2f$lib$2f$client$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["fetchData"])("session", __NEXTAUTH, logger, typeof data === "undefined" ? undefined : {
body: {
csrfToken: await getCsrfToken(),
data
}
});
setLoading(false);
if (newSession) {
setSession(newSession);
broadcast().postMessage({
event: "session",
data: {
trigger: "getSession"
}
});
}
return newSession;
}
})
}["SessionProvider.useMemo[value]"], [
session,
loading
]);
return(// @ts-expect-error
(0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsx"])(SessionContext.Provider, {
value: value,
children: children
}));
}
}),
]);
//# sourceMappingURL=Documents_00%20-%20projet_plumeia_0ae2c1c3._.js.map