Files
plume/.next/static/chunks/ca38dfad29c437c1.js

2 lines
9.5 KiB
JavaScript

(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,18404,e=>{"use strict";var t=e.i(30064),r=e.i(59760),s=e.i(35828),n=e.i(4301);let a=(0,r.createContext)(null);function i({children:e}){let i=(()=>{let{data:e,status:t}=(0,s.useSession)(),[a,i]=(0,r.useState)(null),o="loading"===t;(0,r.useEffect)(()=>{e?.user?i({id:e.user.id||"",email:e.user.email||"",name:e.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}}):"unauthenticated"===t&&i(null)},[e,t]);let u=(0,r.useCallback)(async(e,t)=>{let r=await (0,s.signIn)("credentials",{email:e,password:t,redirect:!1});if(r?.error)throw Error("CredentialsSignin"===r.error?"Email ou mot de passe incorrect":r.error)},[]),c=(0,r.useCallback)(async(e,t,r)=>{await n.default.auth.register(e,t,r);let a=await (0,s.signIn)("credentials",{email:e,password:t,redirect:!1});if(a?.error)throw Error("Compte créé mais erreur de connexion automatique")},[]),l=(0,r.useCallback)(async()=>{await (0,s.signOut)({redirect:!1}),i(null)},[]),d=(0,r.useCallback)(()=>{a&&i({...a,usage:{...a.usage,aiActionsCurrent:a.usage.aiActionsCurrent+1}})},[a]);return{user:a,login:u,signup:c,logout:l,incrementUsage:d,loading:o}})();return(0,t.jsx)(a.Provider,{value:i,children:e})}function o(){return(0,r.useContext)(a)}e.s(["AuthProvider",0,({children:e})=>(0,t.jsx)(s.SessionProvider,{children:(0,t.jsx)(i,{children:e})}),"useAuthContext",()=>o],18404)},4301,e=>{"use strict";let t={async request(e,t={}){let r=`/api${e}`,s={"Content-Type":"application/json",...t.headers},n=await fetch(r,{...t,headers:s});if(!n.ok){let e=`Error ${n.status}: ${n.statusText}`;try{let t=await n.json();t.error&&(e=t.error),t.message&&(e=t.message)}catch{}throw Error(e)}return 204===n.status?null:n.json()},auth:{register:async(e,r,s)=>t.request("/auth/register",{method:"POST",body:JSON.stringify({email:e,password:r,name:s})})},projects:{list:async()=>t.request("/projects"),get:async e=>t.request(`/projects/${e}`),create:async e=>t.request("/projects",{method:"POST",body:JSON.stringify(e)}),update:async(e,r)=>t.request(`/projects/${e}`,{method:"PUT",body:JSON.stringify(r)}),delete:async e=>t.request(`/projects/${e}`,{method:"DELETE"})},chapters:{create:async e=>t.request("/chapters",{method:"POST",body:JSON.stringify(e)}),update:async(e,r)=>t.request(`/chapters/${e}`,{method:"PUT",body:JSON.stringify(r)}),delete:async e=>t.request(`/chapters/${e}`,{method:"DELETE"})},entities:{create:async e=>t.request("/entities",{method:"POST",body:JSON.stringify(e)}),update:async(e,r)=>t.request(`/entities/${e}`,{method:"PUT",body:JSON.stringify(r)}),delete:async e=>t.request(`/entities/${e}`,{method:"DELETE"})},ideas:{create:async e=>t.request("/ideas",{method:"POST",body:JSON.stringify(e)}),update:async(e,r)=>t.request(`/ideas/${e}`,{method:"PUT",body:JSON.stringify(r)}),delete:async e=>t.request(`/ideas/${e}`,{method:"DELETE"})},ai:{generate:async(e,r,s,n)=>t.request("/ai/generate",{method:"POST",body:JSON.stringify({project:e,chapterId:r,prompt:s,user:n})}),transform:async(e,r,s,n)=>(await t.request("/ai/transform",{method:"POST",body:JSON.stringify({text:e,mode:r,context:s,user:n})})).text}};e.s(["default",0,t])},35828,e=>{"use strict";var t=e.i(58865),r=e.i(30064),s=e.i(59760);class n extends Error{constructor(e,t){e instanceof Error?super(void 0,{cause:{err:e,...e.cause,...t}}):"string"==typeof e?(t instanceof Error&&(t={err:t,...t.cause}),super(e,t)):super(void 0,e),this.name=this.constructor.name,this.type=this.constructor.type??"AuthError",this.kind=this.constructor.kind??"error",Error.captureStackTrace?.(this,this.constructor);const r=`https://errors.authjs.dev#${this.type.toLowerCase()}`;this.message+=`${this.message?". ":""}Read more at ${r}`}}class a extends n{}class i extends n{}async function o(e,t,r,s={}){let n=`${u(t)}/${e}`;try{let e={headers:{"Content-Type":"application/json",...s?.headers?.cookie?{cookie:s.headers.cookie}:{}}};s?.body&&(e.body=JSON.stringify(s.body),e.method="POST");let t=await fetch(n,e),r=await t.json();if(!t.ok)throw r;return r}catch(e){return r.error(new a(e.message,e)),null}}function u(e){return"u"<typeof window?`${e.baseUrlServer}${e.basePathServer}`:e.basePath}function c(){return Math.floor(Date.now()/1e3)}function l(e){let t=new URL("http://localhost:3000/api/auth");e&&!e.startsWith("http")&&(e=`https://${e}`);let r=new URL(e||t),s=("/"===r.pathname?t.pathname:r.pathname).replace(/\/$/,""),n=`${r.origin}${s}`;return{origin:r.origin,host:r.host,path:s,base:n,toString:()=>n}}let d={baseUrl:l(t.default.env.NEXTAUTH_URL??t.default.env.VERCEL_URL).origin,basePath:l(t.default.env.NEXTAUTH_URL).path,baseUrlServer:l(t.default.env.NEXTAUTH_URL_INTERNAL??t.default.env.NEXTAUTH_URL??t.default.env.VERCEL_URL).origin,basePathServer:l(t.default.env.NEXTAUTH_URL_INTERNAL??t.default.env.NEXTAUTH_URL).path,_lastSync:0,_session:void 0,_getSession:()=>{}},h=null;function f(){return"u"<typeof BroadcastChannel?{postMessage:()=>{},addEventListener:()=>{},removeEventListener:()=>{},name:"next-auth",onmessage:null,onmessageerror:null,close:()=>{},dispatchEvent:()=>!1}:new BroadcastChannel("next-auth")}function g(){return null===h&&(h=f()),h}let w={debug:console.debug,error:console.error,warn:console.warn},y=s.createContext?.(void 0);function p(e){if(!y)throw Error("React Context is unavailable in Server Components");let t=s.useContext(y),{required:r,onUnauthenticated:n}=e??{},a=r&&"unauthenticated"===t.status;return(s.useEffect(()=>{if(a){let e=`${d.basePath}/signin?${new URLSearchParams({error:"SessionRequired",callbackUrl:window.location.href})}`;n?n():window.location.href=e}},[a,n]),a)?{data:t.data,update:t.update,status:"loading"}:t}async function v(e){let t=await o("session",d,w,e);return(e?.broadcast??!0)&&f().postMessage({event:"session",data:{trigger:"getSession"}}),t}async function m(){let e=await o("csrf",d,w);return e?.csrfToken??""}async function S(){return o("providers",d,w)}async function E(e,t,r){let{callbackUrl:s,...n}=t??{},{redirect:a=!0,redirectTo:i=s??window.location.href,...o}=n,c=u(d),l=await S();if(!l){let e=`${c}/error`;window.location.href=e;return}if(!e||!l[e]){let e=`${c}/signin?${new URLSearchParams({callbackUrl:i})}`;window.location.href=e;return}let h=l[e].type;if("webauthn"===h)throw TypeError(`Provider id "${e}" refers to a WebAuthn provider.
Please use \`import { signIn } from "next-auth/webauthn"\` instead.`);let f=`${c}/${"credentials"===h?"callback":"signin"}/${e}`,g=await m(),w=await fetch(`${f}?${new URLSearchParams(r)}`,{method:"post",headers:{"Content-Type":"application/x-www-form-urlencoded","X-Auth-Return-Redirect":"1"},body:new URLSearchParams({...o,csrfToken:g,callbackUrl:i})}),y=await w.json();if(a){let e=y.url??i;window.location.href=e,e.includes("#")&&window.location.reload();return}let p=new URL(y.url).searchParams.get("error")??void 0,v=new URL(y.url).searchParams.get("code")??void 0;return w.ok&&await d._getSession({event:"storage"}),{error:p,code:v,status:w.status,ok:w.ok,url:p?null:y.url}}async function b(e){let{redirect:t=!0,redirectTo:r=e?.callbackUrl??window.location.href}=e??{},s=u(d),n=await m(),a=await fetch(`${s}/signout`,{method:"post",headers:{"Content-Type":"application/x-www-form-urlencoded","X-Auth-Return-Redirect":"1"},body:new URLSearchParams({csrfToken:n,callbackUrl:r})}),i=await a.json();if(g().postMessage({event:"session",data:{trigger:"signout"}}),t){let e=i.url??r;window.location.href=e,e.includes("#")&&window.location.reload();return}return await d._getSession({event:"storage"}),i}function T(e){if(!y)throw Error("React Context is unavailable in Server Components");let{children:t,basePath:n,refetchInterval:a,refetchWhenOffline:u}=e;n&&(d.basePath=n);let l=void 0!==e.session;d._lastSync=l?c():0;let[h,f]=s.useState(()=>(l&&(d._session=e.session),e.session)),[p,S]=s.useState(!l);s.useEffect(()=>(d._getSession=async({event:e}={})=>{try{let t="storage"===e;if(t||void 0===d._session){d._lastSync=c(),d._session=await v({broadcast:!t}),f(d._session);return}if(!e||null===d._session||c()<d._lastSync)return;d._lastSync=c(),d._session=await v(),f(d._session)}catch(e){w.error(new i(e.message,e))}finally{S(!1)}},d._getSession(),()=>{d._lastSync=0,d._session=void 0,d._getSession=()=>{}}),[]),s.useEffect(()=>{let e=()=>d._getSession({event:"storage"});return g().addEventListener("message",e),()=>g().removeEventListener("message",e)},[]),s.useEffect(()=>{let{refetchOnWindowFocus:t=!0}=e,r=()=>{t&&"visible"===document.visibilityState&&d._getSession({event:"visibilitychange"})};return document.addEventListener("visibilitychange",r,!1),()=>document.removeEventListener("visibilitychange",r,!1)},[e.refetchOnWindowFocus]);let E=function(){let[e,t]=s.useState("u">typeof navigator&&navigator.onLine),r=()=>t(!0),n=()=>t(!1);return s.useEffect(()=>(window.addEventListener("online",r),window.addEventListener("offline",n),()=>{window.removeEventListener("online",r),window.removeEventListener("offline",n)}),[]),e}(),b=!1!==u||E;s.useEffect(()=>{if(a&&b){let e=setInterval(()=>{d._session&&d._getSession({event:"poll"})},1e3*a);return()=>clearInterval(e)}},[a,b]);let T=s.useMemo(()=>({data:h,status:p?"loading":h?"authenticated":"unauthenticated",async update(e){if(p)return;S(!0);let t=await o("session",d,w,void 0===e?void 0:{body:{csrfToken:await m(),data:e}});return S(!1),t&&(f(t),g().postMessage({event:"session",data:{trigger:"getSession"}})),t}}),[h,p]);return(0,r.jsx)(y.Provider,{value:T,children:t})}e.s(["SessionProvider",()=>T,"signIn",()=>E,"signOut",()=>b,"useSession",()=>p],35828)}]);