UNPKG

@hellocoop/nextjs

Version:

Next.js SDK for Hellō https://hello.dev

98 lines (97 loc) 3.44 kB
"use strict"; // pages router Object.defineProperty(exports, "__esModule", { value: true }); exports.pagesAuth = exports.pageAuth = exports.getAuth = exports.getServerSideProps = void 0; const cookie_1 = require("cookie"); const api_1 = require("@hellocoop/api"); const url_1 = require("url"); const convertToHelloRequest = (req, res) => { var _a; return { headers: () => req.headers, query: req.query, path: req.url ? (_a = (0, url_1.parse)(req.url, true)) === null || _a === void 0 ? void 0 : _a.pathname : '/', getAuth: () => req.auth, setAuth: (auth) => { req.auth = auth; }, method: req.method, body: req.body, frameWork: 'nextjs', loginSyncWrapper: (loginSync, params) => { return loginSync({ ...params, req, res }); }, logoutSyncWrapper: (logoutSync) => { return logoutSync({ req, res }); }, }; }; const convertToHelloResponse = (res) => { return { clearAuth: () => { const { name, value, options } = (0, api_1.clearAuthCookieParams)(); res.setHeader('Set-Cookie', (0, cookie_1.serialize)(name, value, options)); }, send: (data) => res.send(data), json: (data) => res.json(data), redirect: (url) => res.redirect(url), setCookie: (name, value, options) => { res.setHeader('Set-Cookie', (0, cookie_1.serialize)(name, value, options)); }, setHeader: (name, value) => { if (Array.isArray(value)) { if (name.toLowerCase() === 'set-cookie') { value.forEach(val => res.setHeader(name, val)); // Append each cookie individually } else { res.setHeader(name, value.join(', ')); // Combine array values into a single string separated by commas } } else { res.setHeader(name, value); } }, getHeaders: () => { throw (new Error('getHeaders not implemented')); }, // not implemented status: (statusCode) => { res.status(statusCode); return { send: (data) => res.send(data) }; } }; }; const getServerSideProps = async function (context) { const req = context.req; const res = context.res; if (req.auth) return { props: { auth: req.auth } }; const helloReq = convertToHelloRequest(req, res); const helloRes = convertToHelloResponse(context.res); const auth = await (0, api_1.getAuthfromCookies)(helloReq, helloRes); return { props: { auth } }; }; exports.getServerSideProps = getServerSideProps; const getAuth = async function (req) { if (req.auth) return req.auth; const dummyResponse = {}; const helloReq = convertToHelloRequest(req, dummyResponse); const auth = await (0, api_1.getAuthfromCookies)(helloReq); return auth; }; exports.getAuth = getAuth; const pageAuth = function (config) { if (!api_1.isConfigured) { (0, api_1.configure)(config); } const r = async (req, res) => { const helloReq = convertToHelloRequest(req, res); const helloRes = convertToHelloResponse(res); await (0, api_1.router)(helloReq, helloRes); }; return r; }; exports.pageAuth = pageAuth; exports.pagesAuth = exports.pageAuth;