celestya 0.0.5 → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.mts CHANGED
@@ -22,9 +22,9 @@ type ServerSideSession<U> = IronSessionData<U, Token>;
22
22
 
23
23
  type Params = string[];
24
24
  interface IRequestOptions {
25
- params: {
25
+ params: Promise<{
26
26
  endpoint: Params;
27
- };
27
+ }>;
28
28
  }
29
29
  interface IConfig {
30
30
  host: string;
package/dist/index.d.ts CHANGED
@@ -22,9 +22,9 @@ type ServerSideSession<U> = IronSessionData<U, Token>;
22
22
 
23
23
  type Params = string[];
24
24
  interface IRequestOptions {
25
- params: {
25
+ params: Promise<{
26
26
  endpoint: Params;
27
- };
27
+ }>;
28
28
  }
29
29
  interface IConfig {
30
30
  host: string;
package/dist/index.js CHANGED
@@ -57,7 +57,7 @@ var sessionOptions = {
57
57
  };
58
58
  var getSessionServerside = async () => {
59
59
  const session = await (0, import_iron_session.getIronSession)(
60
- (0, import_headers.cookies)(),
60
+ await (0, import_headers.cookies)(),
61
61
  sessionOptions
62
62
  );
63
63
  return session;
@@ -84,10 +84,11 @@ var rHandler = {
84
84
  };
85
85
  async function proxy(method, request, options, config) {
86
86
  try {
87
+ const params = await options.params;
87
88
  const parameters = {
88
89
  request,
89
- path: options.params.endpoint[0] || request.nextUrl.pathname.replace(config.route, ""),
90
- options: options.params.endpoint,
90
+ path: params.endpoint[0] || request.nextUrl.pathname.replace(config.route, ""),
91
+ options: params.endpoint,
91
92
  config
92
93
  };
93
94
  if (config.debug) console.log("#> proxy:", parameters);
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts","../src/server/api.ts","../src/server/errors.ts","../src/server/session.ts","../src/server/fetch.ts","../src/server/test.ts"],"sourcesContent":["import proxy from \"./server/api\";\nimport { serverSideFetch } from \"./server/fetch\";\nimport getSessionServerside from \"./server/session\";\nimport Debug from \"./server/test\";\n\nexport const Proxy = proxy;\nexport const getSession = getSessionServerside;\nexport const debug = Debug;\nexport const apiFetch = serverSideFetch;\n\nimport { IConfig, IRequestOptions, Session } from \"./types\";\n\nexport { IConfig, IRequestOptions, Session };\n","import { NextRequest } from \"next/server\";\nimport { revalidatePath } from \"next/cache\";\nimport { requestError } from \"./errors\";\nimport { invalidEndpoint, sessionError } from \"./errors\";\nimport { jwtDecode } from \"jwt-decode\";\nimport { IConfig, IRequestOptions, RouteHandler } from \"../types\";\nimport getSessionServerside from \"./session\";\n\nconst rHandler: RouteHandler = {\n GET: {\n user: ({ request, config }) => getUser(request, config),\n logout: ({ config }) => logout(config),\n debug: () => debug(),\n oauth: ({ request, config }) => oauth(request, config),\n oauth_callback: ({ request, config }) =>\n oauth_callback(request, config),\n proxy: ({ request, config, options }) =>\n proxyFunction(\"GET\", request, config, options),\n },\n POST: {\n login: ({ request, config }) => login(request, config),\n proxy: ({ request, config, options }) =>\n proxyFunction(\"POST\", request, config, options),\n },\n DELETE: {\n proxy: ({ request, config, options }) =>\n proxyFunction(\"DELETE\", request, config, options),\n },\n};\n\nexport default async function proxy(\n method: string,\n request: NextRequest,\n options: IRequestOptions,\n config: IConfig\n) {\n try {\n const parameters = {\n request,\n path:\n options.params.endpoint[0] ||\n request.nextUrl.pathname.replace(config.route, \"\"),\n options: options.params.endpoint,\n config,\n };\n\n if (config.debug) console.log(\"#> proxy:\", parameters);\n\n //console.log(`[${method}]: /${parameters.path}`);\n\n if (rHandler[method][parameters.path])\n return await rHandler[method][parameters.path](parameters);\n\n return invalidEndpoint();\n } catch (e) {\n console.log(\"#> proxyError:\", e);\n return requestError();\n }\n}\n\nasync function login(request: NextRequest, config: IConfig) {\n const session = await getSessionServerside();\n const formData = await request.json();\n\n const response: Response = await fetch(`${config.apiUrl}/login`, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify(formData),\n });\n\n const res = await response.json();\n\n if (config.debug) console.log(\"#> login\", res);\n\n if (res.error) return Response.json(res);\n\n const dec: any = jwtDecode(res.data.token);\n\n session.token = {\n jwt: res.data.token,\n refresh: res.data.refresh || \"refresh_token\",\n decoded: dec,\n };\n\n await session.save();\n\n return Response.json({\n redirect: \"/\",\n });\n}\n\nasync function getUser(request: NextRequest, config: IConfig) {\n const session = await getSessionServerside<any>();\n\n if (!session || !session.token) return sessionError();\n\n const force = request.nextUrl.searchParams.get(\"force\") == \"true\";\n\n // * User already exists in session\n if (session.user && !force)\n return Response.json({\n data: session.user,\n });\n\n // * User does not exist in session\n const response: Response = await fetch(\n `${config.apiUrl}${config.userEndpoint}`,\n {\n method: \"GET\",\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: \"Bearer \" + session.token.jwt,\n },\n }\n );\n\n const res = await response.json();\n\n if (config.debug) console.log(\"#> getUser\", res);\n\n if (res.error) return Response.json(res);\n\n session.user = res.data;\n\n await session.save();\n\n return Response.json({\n data: session.user,\n });\n}\n\nasync function oauth(request: NextRequest, config: IConfig) {\n const authUrl = request.nextUrl.searchParams.get(\"authUrl\");\n\n if (!authUrl) throw new Error(\"No authUrl provided\");\n\n const url = new URL(config.route + \"/oauth_callback\", config.host);\n\n const state = request.nextUrl.searchParams.get(\"state\");\n if (state) url.searchParams.set(\"state\", state);\n\n const response: Response = await fetch(\n `${config.apiUrl}${authUrl}?returnUrl=${encodeURIComponent(\n url.toString()\n )}`\n );\n\n const res = await response.json();\n\n if (config.debug) console.log(\"#> oauth\", res);\n\n if (res.error) return Response.json(res);\n\n return Response.json({\n data: res.data,\n });\n}\n\nasync function oauth_callback(request: NextRequest, config: IConfig) {\n const session = await getSessionServerside();\n const token = request.nextUrl.searchParams.get(\"token\");\n const refresh = request.nextUrl.searchParams.get(\"refresh\");\n const state = request.nextUrl.searchParams.get(\"state\");\n\n if (!token) throw new Error(\"No token provided\");\n\n const dec: any = jwtDecode(token);\n\n session.token = {\n jwt: token,\n refresh: refresh || \"refresh_token\",\n decoded: dec,\n };\n\n await session.save();\n\n if (state)\n return Response.redirect(\n state.includes(\"http\") ? state : config.host + state\n );\n\n return Response.redirect(config.host);\n}\n\nasync function logout(config: IConfig) {\n const session = await getSessionServerside();\n\n session.destroy();\n\n revalidatePath(config.host, \"layout\");\n\n //return Response.redirect(config.host);\n\n return Response.json({\n redirect: \"/\",\n });\n}\n\nasync function debug() {\n const session = await getSessionServerside();\n\n return Response.json(session);\n}\n\n// TODO: add refresh logic\n\nasync function proxyFunction(\n method: string,\n request: NextRequest,\n config: IConfig,\n options: string[]\n) {\n const session = await getSessionServerside();\n\n const opts: RequestInit = {\n method,\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: \"Bearer \" + session.token?.jwt,\n },\n };\n\n if (method === \"POST\") opts.body = JSON.stringify(await request.json());\n\n options.shift();\n const response: Response = await fetch(\n `${config.apiUrl}/${options.join(\"/\")}${request.nextUrl.search}`,\n opts\n );\n\n const res = await response.json();\n\n if (config.debug) console.log(\"#> getProxyFunction\", res);\n\n return Response.json(res);\n}\n","export const requestError = () =>\n Response.json({\n error: \"requestError\",\n message: \"error while sending request through proxy\",\n });\n\nexport const invalidEndpoint = () =>\n Response.json({\n error: \"invalidEndpoint\",\n message: \"invalid endpoint\",\n });\n\nexport const sessionError = () =>\n Response.json({\n error: \"noSession\",\n message: \"no session found\",\n });\n","import { SessionOptions } from \"iron-session\";\nimport { getIronSession } from \"iron-session\";\nimport { cookies } from \"next/headers\";\nimport { ServerSideSession } from \"../types/internal\";\nimport { Session } from \"../types\";\n\ndeclare module \"iron-session\" {\n interface IronSessionData<U, T> {\n user?: U;\n token?: {\n jwt: string;\n refresh: string;\n decoded: T;\n };\n }\n}\n\nexport interface DefaultUser {\n [key: string]: any;\n}\n\nexport interface Token {\n token: string;\n}\n\nexport const sessionOptions: SessionOptions = {\n password: process.env.CELESTYA_SECRET || \"PLEASE_SET_PASSWORD\",\n cookieName: process.env.CELESTYA_COOKIE_NAME || \"PLEASE_SET_COOKIE_NAME\",\n cookieOptions: { secure: process.env.SECURE === \"true\" || false },\n};\n\nconst getSessionServerside = async <U = DefaultUser>() => {\n const session: Session<U> = await getIronSession<ServerSideSession<U>>(\n cookies(),\n sessionOptions\n );\n\n return session;\n};\n\nexport default getSessionServerside;\n","import { IConfig, IServerSideRequestOptions } from \"../types\";\nimport getSessionServerside from \"./session\";\n\nexport const serverSideFetch = async (\n url: string,\n options: IServerSideRequestOptions,\n config: IConfig\n) => {\n const session = await getSessionServerside();\n\n const opts: RequestInit = {\n method: options.method || \"GET\",\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: \"Bearer \" + session.token?.jwt,\n },\n };\n\n if (options.body) opts.body = JSON.stringify(options.body);\n\n const response: Response = await fetch(`${config.apiUrl}${url}`, opts);\n\n const res = await response.json();\n\n return res;\n};\n","import { sessionOptions } from \"./session\";\n\nconst Debug = () => {\n console.log(\"#> sessionOptions: \", sessionOptions);\n};\n\nexport default Debug;\n"],"mappings":"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","names":["Proxy","debug","Proxy","debug"]}
1
+ {"version":3,"sources":["../src/index.ts","../src/server/api.ts","../src/server/errors.ts","../src/server/session.ts","../src/server/fetch.ts","../src/server/test.ts"],"sourcesContent":["import proxy from \"./server/api\";\nimport { serverSideFetch } from \"./server/fetch\";\nimport getSessionServerside from \"./server/session\";\nimport Debug from \"./server/test\";\n\nexport const Proxy = proxy;\nexport const getSession = getSessionServerside;\nexport const debug = Debug;\nexport const apiFetch = serverSideFetch;\n\nimport { IConfig, IRequestOptions, Session } from \"./types\";\n\nexport { IConfig, IRequestOptions, Session };\n","import { NextRequest } from \"next/server\";\nimport { revalidatePath } from \"next/cache\";\nimport { requestError } from \"./errors\";\nimport { invalidEndpoint, sessionError } from \"./errors\";\nimport { jwtDecode } from \"jwt-decode\";\nimport { IConfig, IRequestOptions, RouteHandler } from \"../types\";\nimport getSessionServerside from \"./session\";\n\nconst rHandler: RouteHandler = {\n GET: {\n user: ({ request, config }) => getUser(request, config),\n logout: ({ config }) => logout(config),\n debug: () => debug(),\n oauth: ({ request, config }) => oauth(request, config),\n oauth_callback: ({ request, config }) =>\n oauth_callback(request, config),\n proxy: ({ request, config, options }) =>\n proxyFunction(\"GET\", request, config, options),\n },\n POST: {\n login: ({ request, config }) => login(request, config),\n proxy: ({ request, config, options }) =>\n proxyFunction(\"POST\", request, config, options),\n },\n DELETE: {\n proxy: ({ request, config, options }) =>\n proxyFunction(\"DELETE\", request, config, options),\n },\n};\n\nexport default async function proxy(\n method: string,\n request: NextRequest,\n options: IRequestOptions,\n config: IConfig\n) {\n try {\n const params = await options.params\n const parameters = {\n request,\n path:\n params.endpoint[0] ||\n request.nextUrl.pathname.replace(config.route, \"\"),\n options: params.endpoint,\n config,\n };\n\n if (config.debug) console.log(\"#> proxy:\", parameters);\n\n //console.log(`[${method}]: /${parameters.path}`);\n\n if (rHandler[method][parameters.path])\n return await rHandler[method][parameters.path](parameters);\n\n return invalidEndpoint();\n } catch (e) {\n console.log(\"#> proxyError:\", e);\n return requestError();\n }\n}\n\nasync function login(request: NextRequest, config: IConfig) {\n const session = await getSessionServerside();\n const formData = await request.json();\n\n const response: Response = await fetch(`${config.apiUrl}/login`, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify(formData),\n });\n\n const res = await response.json();\n\n if (config.debug) console.log(\"#> login\", res);\n\n if (res.error) return Response.json(res);\n\n const dec: any = jwtDecode(res.data.token);\n\n session.token = {\n jwt: res.data.token,\n refresh: res.data.refresh || \"refresh_token\",\n decoded: dec,\n };\n\n await session.save();\n\n return Response.json({\n redirect: \"/\",\n });\n}\n\nasync function getUser(request: NextRequest, config: IConfig) {\n const session = await getSessionServerside<any>();\n\n if (!session || !session.token) return sessionError();\n\n const force = request.nextUrl.searchParams.get(\"force\") == \"true\";\n\n // * User already exists in session\n if (session.user && !force)\n return Response.json({\n data: session.user,\n });\n\n // * User does not exist in session\n const response: Response = await fetch(\n `${config.apiUrl}${config.userEndpoint}`,\n {\n method: \"GET\",\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: \"Bearer \" + session.token.jwt,\n },\n }\n );\n\n const res = await response.json();\n\n if (config.debug) console.log(\"#> getUser\", res);\n\n if (res.error) return Response.json(res);\n\n session.user = res.data;\n\n await session.save();\n\n return Response.json({\n data: session.user,\n });\n}\n\nasync function oauth(request: NextRequest, config: IConfig) {\n const authUrl = request.nextUrl.searchParams.get(\"authUrl\");\n\n if (!authUrl) throw new Error(\"No authUrl provided\");\n\n const url = new URL(config.route + \"/oauth_callback\", config.host);\n\n const state = request.nextUrl.searchParams.get(\"state\");\n if (state) url.searchParams.set(\"state\", state);\n\n const response: Response = await fetch(\n `${config.apiUrl}${authUrl}?returnUrl=${encodeURIComponent(\n url.toString()\n )}`\n );\n\n const res = await response.json();\n\n if (config.debug) console.log(\"#> oauth\", res);\n\n if (res.error) return Response.json(res);\n\n return Response.json({\n data: res.data,\n });\n}\n\nasync function oauth_callback(request: NextRequest, config: IConfig) {\n const session = await getSessionServerside();\n const token = request.nextUrl.searchParams.get(\"token\");\n const refresh = request.nextUrl.searchParams.get(\"refresh\");\n const state = request.nextUrl.searchParams.get(\"state\");\n\n if (!token) throw new Error(\"No token provided\");\n\n const dec: any = jwtDecode(token);\n\n session.token = {\n jwt: token,\n refresh: refresh || \"refresh_token\",\n decoded: dec,\n };\n\n await session.save();\n\n if (state)\n return Response.redirect(\n state.includes(\"http\") ? state : config.host + state\n );\n\n return Response.redirect(config.host);\n}\n\nasync function logout(config: IConfig) {\n const session = await getSessionServerside();\n\n session.destroy();\n\n revalidatePath(config.host, \"layout\");\n\n //return Response.redirect(config.host);\n\n return Response.json({\n redirect: \"/\",\n });\n}\n\nasync function debug() {\n const session = await getSessionServerside();\n\n return Response.json(session);\n}\n\n// TODO: add refresh logic\n\nasync function proxyFunction(\n method: string,\n request: NextRequest,\n config: IConfig,\n options: string[]\n) {\n const session = await getSessionServerside();\n\n const opts: RequestInit = {\n method,\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: \"Bearer \" + session.token?.jwt,\n },\n };\n\n if (method === \"POST\") opts.body = JSON.stringify(await request.json());\n\n options.shift();\n const response: Response = await fetch(\n `${config.apiUrl}/${options.join(\"/\")}${request.nextUrl.search}`,\n opts\n );\n\n const res = await response.json();\n\n if (config.debug) console.log(\"#> getProxyFunction\", res);\n\n return Response.json(res);\n}\n","export const requestError = () =>\n Response.json({\n error: \"requestError\",\n message: \"error while sending request through proxy\",\n });\n\nexport const invalidEndpoint = () =>\n Response.json({\n error: \"invalidEndpoint\",\n message: \"invalid endpoint\",\n });\n\nexport const sessionError = () =>\n Response.json({\n error: \"noSession\",\n message: \"no session found\",\n });\n","import { SessionOptions } from \"iron-session\";\nimport { getIronSession } from \"iron-session\";\nimport { cookies } from \"next/headers\";\nimport { ServerSideSession } from \"../types/internal\";\nimport { Session } from \"../types\";\n\ndeclare module \"iron-session\" {\n interface IronSessionData<U, T> {\n user?: U;\n token?: {\n jwt: string;\n refresh: string;\n decoded: T;\n };\n }\n}\n\nexport interface DefaultUser {\n [key: string]: any;\n}\n\nexport interface Token {\n token: string;\n}\n\nexport const sessionOptions: SessionOptions = {\n password: process.env.CELESTYA_SECRET || \"PLEASE_SET_PASSWORD\",\n cookieName: process.env.CELESTYA_COOKIE_NAME || \"PLEASE_SET_COOKIE_NAME\",\n cookieOptions: { secure: process.env.SECURE === \"true\" || false },\n};\n\nconst getSessionServerside = async <U = DefaultUser>() => {\n const session: Session<U> = await getIronSession<ServerSideSession<U>>(\n await cookies(),\n sessionOptions\n );\n return session;\n};\n\nexport default getSessionServerside;\n","import { IConfig, IServerSideRequestOptions } from \"../types\";\nimport getSessionServerside from \"./session\";\n\nexport const serverSideFetch = async (\n url: string,\n options: IServerSideRequestOptions,\n config: IConfig\n) => {\n const session = await getSessionServerside();\n\n const opts: RequestInit = {\n method: options.method || \"GET\",\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: \"Bearer \" + session.token?.jwt,\n },\n };\n\n if (options.body) opts.body = JSON.stringify(options.body);\n\n const response: Response = await fetch(`${config.apiUrl}${url}`, opts);\n\n const res = await response.json();\n\n return res;\n};\n","import { sessionOptions } from \"./session\";\n\nconst Debug = () => {\n console.log(\"#> sessionOptions: \", sessionOptions);\n};\n\nexport default Debug;\n"],"mappings":"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","names":["Proxy","debug","Proxy","debug"]}
package/dist/index.mjs CHANGED
@@ -28,7 +28,7 @@ var sessionOptions = {
28
28
  };
29
29
  var getSessionServerside = async () => {
30
30
  const session = await getIronSession(
31
- cookies(),
31
+ await cookies(),
32
32
  sessionOptions
33
33
  );
34
34
  return session;
@@ -55,10 +55,11 @@ var rHandler = {
55
55
  };
56
56
  async function proxy(method, request, options, config) {
57
57
  try {
58
+ const params = await options.params;
58
59
  const parameters = {
59
60
  request,
60
- path: options.params.endpoint[0] || request.nextUrl.pathname.replace(config.route, ""),
61
- options: options.params.endpoint,
61
+ path: params.endpoint[0] || request.nextUrl.pathname.replace(config.route, ""),
62
+ options: params.endpoint,
62
63
  config
63
64
  };
64
65
  if (config.debug) console.log("#> proxy:", parameters);
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/server/api.ts","../src/server/errors.ts","../src/server/session.ts","../src/server/fetch.ts","../src/server/test.ts","../src/index.ts"],"sourcesContent":["import { NextRequest } from \"next/server\";\nimport { revalidatePath } from \"next/cache\";\nimport { requestError } from \"./errors\";\nimport { invalidEndpoint, sessionError } from \"./errors\";\nimport { jwtDecode } from \"jwt-decode\";\nimport { IConfig, IRequestOptions, RouteHandler } from \"../types\";\nimport getSessionServerside from \"./session\";\n\nconst rHandler: RouteHandler = {\n GET: {\n user: ({ request, config }) => getUser(request, config),\n logout: ({ config }) => logout(config),\n debug: () => debug(),\n oauth: ({ request, config }) => oauth(request, config),\n oauth_callback: ({ request, config }) =>\n oauth_callback(request, config),\n proxy: ({ request, config, options }) =>\n proxyFunction(\"GET\", request, config, options),\n },\n POST: {\n login: ({ request, config }) => login(request, config),\n proxy: ({ request, config, options }) =>\n proxyFunction(\"POST\", request, config, options),\n },\n DELETE: {\n proxy: ({ request, config, options }) =>\n proxyFunction(\"DELETE\", request, config, options),\n },\n};\n\nexport default async function proxy(\n method: string,\n request: NextRequest,\n options: IRequestOptions,\n config: IConfig\n) {\n try {\n const parameters = {\n request,\n path:\n options.params.endpoint[0] ||\n request.nextUrl.pathname.replace(config.route, \"\"),\n options: options.params.endpoint,\n config,\n };\n\n if (config.debug) console.log(\"#> proxy:\", parameters);\n\n //console.log(`[${method}]: /${parameters.path}`);\n\n if (rHandler[method][parameters.path])\n return await rHandler[method][parameters.path](parameters);\n\n return invalidEndpoint();\n } catch (e) {\n console.log(\"#> proxyError:\", e);\n return requestError();\n }\n}\n\nasync function login(request: NextRequest, config: IConfig) {\n const session = await getSessionServerside();\n const formData = await request.json();\n\n const response: Response = await fetch(`${config.apiUrl}/login`, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify(formData),\n });\n\n const res = await response.json();\n\n if (config.debug) console.log(\"#> login\", res);\n\n if (res.error) return Response.json(res);\n\n const dec: any = jwtDecode(res.data.token);\n\n session.token = {\n jwt: res.data.token,\n refresh: res.data.refresh || \"refresh_token\",\n decoded: dec,\n };\n\n await session.save();\n\n return Response.json({\n redirect: \"/\",\n });\n}\n\nasync function getUser(request: NextRequest, config: IConfig) {\n const session = await getSessionServerside<any>();\n\n if (!session || !session.token) return sessionError();\n\n const force = request.nextUrl.searchParams.get(\"force\") == \"true\";\n\n // * User already exists in session\n if (session.user && !force)\n return Response.json({\n data: session.user,\n });\n\n // * User does not exist in session\n const response: Response = await fetch(\n `${config.apiUrl}${config.userEndpoint}`,\n {\n method: \"GET\",\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: \"Bearer \" + session.token.jwt,\n },\n }\n );\n\n const res = await response.json();\n\n if (config.debug) console.log(\"#> getUser\", res);\n\n if (res.error) return Response.json(res);\n\n session.user = res.data;\n\n await session.save();\n\n return Response.json({\n data: session.user,\n });\n}\n\nasync function oauth(request: NextRequest, config: IConfig) {\n const authUrl = request.nextUrl.searchParams.get(\"authUrl\");\n\n if (!authUrl) throw new Error(\"No authUrl provided\");\n\n const url = new URL(config.route + \"/oauth_callback\", config.host);\n\n const state = request.nextUrl.searchParams.get(\"state\");\n if (state) url.searchParams.set(\"state\", state);\n\n const response: Response = await fetch(\n `${config.apiUrl}${authUrl}?returnUrl=${encodeURIComponent(\n url.toString()\n )}`\n );\n\n const res = await response.json();\n\n if (config.debug) console.log(\"#> oauth\", res);\n\n if (res.error) return Response.json(res);\n\n return Response.json({\n data: res.data,\n });\n}\n\nasync function oauth_callback(request: NextRequest, config: IConfig) {\n const session = await getSessionServerside();\n const token = request.nextUrl.searchParams.get(\"token\");\n const refresh = request.nextUrl.searchParams.get(\"refresh\");\n const state = request.nextUrl.searchParams.get(\"state\");\n\n if (!token) throw new Error(\"No token provided\");\n\n const dec: any = jwtDecode(token);\n\n session.token = {\n jwt: token,\n refresh: refresh || \"refresh_token\",\n decoded: dec,\n };\n\n await session.save();\n\n if (state)\n return Response.redirect(\n state.includes(\"http\") ? state : config.host + state\n );\n\n return Response.redirect(config.host);\n}\n\nasync function logout(config: IConfig) {\n const session = await getSessionServerside();\n\n session.destroy();\n\n revalidatePath(config.host, \"layout\");\n\n //return Response.redirect(config.host);\n\n return Response.json({\n redirect: \"/\",\n });\n}\n\nasync function debug() {\n const session = await getSessionServerside();\n\n return Response.json(session);\n}\n\n// TODO: add refresh logic\n\nasync function proxyFunction(\n method: string,\n request: NextRequest,\n config: IConfig,\n options: string[]\n) {\n const session = await getSessionServerside();\n\n const opts: RequestInit = {\n method,\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: \"Bearer \" + session.token?.jwt,\n },\n };\n\n if (method === \"POST\") opts.body = JSON.stringify(await request.json());\n\n options.shift();\n const response: Response = await fetch(\n `${config.apiUrl}/${options.join(\"/\")}${request.nextUrl.search}`,\n opts\n );\n\n const res = await response.json();\n\n if (config.debug) console.log(\"#> getProxyFunction\", res);\n\n return Response.json(res);\n}\n","export const requestError = () =>\n Response.json({\n error: \"requestError\",\n message: \"error while sending request through proxy\",\n });\n\nexport const invalidEndpoint = () =>\n Response.json({\n error: \"invalidEndpoint\",\n message: \"invalid endpoint\",\n });\n\nexport const sessionError = () =>\n Response.json({\n error: \"noSession\",\n message: \"no session found\",\n });\n","import { SessionOptions } from \"iron-session\";\nimport { getIronSession } from \"iron-session\";\nimport { cookies } from \"next/headers\";\nimport { ServerSideSession } from \"../types/internal\";\nimport { Session } from \"../types\";\n\ndeclare module \"iron-session\" {\n interface IronSessionData<U, T> {\n user?: U;\n token?: {\n jwt: string;\n refresh: string;\n decoded: T;\n };\n }\n}\n\nexport interface DefaultUser {\n [key: string]: any;\n}\n\nexport interface Token {\n token: string;\n}\n\nexport const sessionOptions: SessionOptions = {\n password: process.env.CELESTYA_SECRET || \"PLEASE_SET_PASSWORD\",\n cookieName: process.env.CELESTYA_COOKIE_NAME || \"PLEASE_SET_COOKIE_NAME\",\n cookieOptions: { secure: process.env.SECURE === \"true\" || false },\n};\n\nconst getSessionServerside = async <U = DefaultUser>() => {\n const session: Session<U> = await getIronSession<ServerSideSession<U>>(\n cookies(),\n sessionOptions\n );\n\n return session;\n};\n\nexport default getSessionServerside;\n","import { IConfig, IServerSideRequestOptions } from \"../types\";\nimport getSessionServerside from \"./session\";\n\nexport const serverSideFetch = async (\n url: string,\n options: IServerSideRequestOptions,\n config: IConfig\n) => {\n const session = await getSessionServerside();\n\n const opts: RequestInit = {\n method: options.method || \"GET\",\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: \"Bearer \" + session.token?.jwt,\n },\n };\n\n if (options.body) opts.body = JSON.stringify(options.body);\n\n const response: Response = await fetch(`${config.apiUrl}${url}`, opts);\n\n const res = await response.json();\n\n return res;\n};\n","import { sessionOptions } from \"./session\";\n\nconst Debug = () => {\n console.log(\"#> sessionOptions: \", sessionOptions);\n};\n\nexport default Debug;\n","import proxy from \"./server/api\";\nimport { serverSideFetch } from \"./server/fetch\";\nimport getSessionServerside from \"./server/session\";\nimport Debug from \"./server/test\";\n\nexport const Proxy = proxy;\nexport const getSession = getSessionServerside;\nexport const debug = Debug;\nexport const apiFetch = serverSideFetch;\n\nimport { IConfig, IRequestOptions, Session } from \"./types\";\n\nexport { IConfig, IRequestOptions, Session };\n"],"mappings":"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","names":["debug"]}
1
+ {"version":3,"sources":["../src/server/api.ts","../src/server/errors.ts","../src/server/session.ts","../src/server/fetch.ts","../src/server/test.ts","../src/index.ts"],"sourcesContent":["import { NextRequest } from \"next/server\";\nimport { revalidatePath } from \"next/cache\";\nimport { requestError } from \"./errors\";\nimport { invalidEndpoint, sessionError } from \"./errors\";\nimport { jwtDecode } from \"jwt-decode\";\nimport { IConfig, IRequestOptions, RouteHandler } from \"../types\";\nimport getSessionServerside from \"./session\";\n\nconst rHandler: RouteHandler = {\n GET: {\n user: ({ request, config }) => getUser(request, config),\n logout: ({ config }) => logout(config),\n debug: () => debug(),\n oauth: ({ request, config }) => oauth(request, config),\n oauth_callback: ({ request, config }) =>\n oauth_callback(request, config),\n proxy: ({ request, config, options }) =>\n proxyFunction(\"GET\", request, config, options),\n },\n POST: {\n login: ({ request, config }) => login(request, config),\n proxy: ({ request, config, options }) =>\n proxyFunction(\"POST\", request, config, options),\n },\n DELETE: {\n proxy: ({ request, config, options }) =>\n proxyFunction(\"DELETE\", request, config, options),\n },\n};\n\nexport default async function proxy(\n method: string,\n request: NextRequest,\n options: IRequestOptions,\n config: IConfig\n) {\n try {\n const params = await options.params\n const parameters = {\n request,\n path:\n params.endpoint[0] ||\n request.nextUrl.pathname.replace(config.route, \"\"),\n options: params.endpoint,\n config,\n };\n\n if (config.debug) console.log(\"#> proxy:\", parameters);\n\n //console.log(`[${method}]: /${parameters.path}`);\n\n if (rHandler[method][parameters.path])\n return await rHandler[method][parameters.path](parameters);\n\n return invalidEndpoint();\n } catch (e) {\n console.log(\"#> proxyError:\", e);\n return requestError();\n }\n}\n\nasync function login(request: NextRequest, config: IConfig) {\n const session = await getSessionServerside();\n const formData = await request.json();\n\n const response: Response = await fetch(`${config.apiUrl}/login`, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify(formData),\n });\n\n const res = await response.json();\n\n if (config.debug) console.log(\"#> login\", res);\n\n if (res.error) return Response.json(res);\n\n const dec: any = jwtDecode(res.data.token);\n\n session.token = {\n jwt: res.data.token,\n refresh: res.data.refresh || \"refresh_token\",\n decoded: dec,\n };\n\n await session.save();\n\n return Response.json({\n redirect: \"/\",\n });\n}\n\nasync function getUser(request: NextRequest, config: IConfig) {\n const session = await getSessionServerside<any>();\n\n if (!session || !session.token) return sessionError();\n\n const force = request.nextUrl.searchParams.get(\"force\") == \"true\";\n\n // * User already exists in session\n if (session.user && !force)\n return Response.json({\n data: session.user,\n });\n\n // * User does not exist in session\n const response: Response = await fetch(\n `${config.apiUrl}${config.userEndpoint}`,\n {\n method: \"GET\",\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: \"Bearer \" + session.token.jwt,\n },\n }\n );\n\n const res = await response.json();\n\n if (config.debug) console.log(\"#> getUser\", res);\n\n if (res.error) return Response.json(res);\n\n session.user = res.data;\n\n await session.save();\n\n return Response.json({\n data: session.user,\n });\n}\n\nasync function oauth(request: NextRequest, config: IConfig) {\n const authUrl = request.nextUrl.searchParams.get(\"authUrl\");\n\n if (!authUrl) throw new Error(\"No authUrl provided\");\n\n const url = new URL(config.route + \"/oauth_callback\", config.host);\n\n const state = request.nextUrl.searchParams.get(\"state\");\n if (state) url.searchParams.set(\"state\", state);\n\n const response: Response = await fetch(\n `${config.apiUrl}${authUrl}?returnUrl=${encodeURIComponent(\n url.toString()\n )}`\n );\n\n const res = await response.json();\n\n if (config.debug) console.log(\"#> oauth\", res);\n\n if (res.error) return Response.json(res);\n\n return Response.json({\n data: res.data,\n });\n}\n\nasync function oauth_callback(request: NextRequest, config: IConfig) {\n const session = await getSessionServerside();\n const token = request.nextUrl.searchParams.get(\"token\");\n const refresh = request.nextUrl.searchParams.get(\"refresh\");\n const state = request.nextUrl.searchParams.get(\"state\");\n\n if (!token) throw new Error(\"No token provided\");\n\n const dec: any = jwtDecode(token);\n\n session.token = {\n jwt: token,\n refresh: refresh || \"refresh_token\",\n decoded: dec,\n };\n\n await session.save();\n\n if (state)\n return Response.redirect(\n state.includes(\"http\") ? state : config.host + state\n );\n\n return Response.redirect(config.host);\n}\n\nasync function logout(config: IConfig) {\n const session = await getSessionServerside();\n\n session.destroy();\n\n revalidatePath(config.host, \"layout\");\n\n //return Response.redirect(config.host);\n\n return Response.json({\n redirect: \"/\",\n });\n}\n\nasync function debug() {\n const session = await getSessionServerside();\n\n return Response.json(session);\n}\n\n// TODO: add refresh logic\n\nasync function proxyFunction(\n method: string,\n request: NextRequest,\n config: IConfig,\n options: string[]\n) {\n const session = await getSessionServerside();\n\n const opts: RequestInit = {\n method,\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: \"Bearer \" + session.token?.jwt,\n },\n };\n\n if (method === \"POST\") opts.body = JSON.stringify(await request.json());\n\n options.shift();\n const response: Response = await fetch(\n `${config.apiUrl}/${options.join(\"/\")}${request.nextUrl.search}`,\n opts\n );\n\n const res = await response.json();\n\n if (config.debug) console.log(\"#> getProxyFunction\", res);\n\n return Response.json(res);\n}\n","export const requestError = () =>\n Response.json({\n error: \"requestError\",\n message: \"error while sending request through proxy\",\n });\n\nexport const invalidEndpoint = () =>\n Response.json({\n error: \"invalidEndpoint\",\n message: \"invalid endpoint\",\n });\n\nexport const sessionError = () =>\n Response.json({\n error: \"noSession\",\n message: \"no session found\",\n });\n","import { SessionOptions } from \"iron-session\";\nimport { getIronSession } from \"iron-session\";\nimport { cookies } from \"next/headers\";\nimport { ServerSideSession } from \"../types/internal\";\nimport { Session } from \"../types\";\n\ndeclare module \"iron-session\" {\n interface IronSessionData<U, T> {\n user?: U;\n token?: {\n jwt: string;\n refresh: string;\n decoded: T;\n };\n }\n}\n\nexport interface DefaultUser {\n [key: string]: any;\n}\n\nexport interface Token {\n token: string;\n}\n\nexport const sessionOptions: SessionOptions = {\n password: process.env.CELESTYA_SECRET || \"PLEASE_SET_PASSWORD\",\n cookieName: process.env.CELESTYA_COOKIE_NAME || \"PLEASE_SET_COOKIE_NAME\",\n cookieOptions: { secure: process.env.SECURE === \"true\" || false },\n};\n\nconst getSessionServerside = async <U = DefaultUser>() => {\n const session: Session<U> = await getIronSession<ServerSideSession<U>>(\n await cookies(),\n sessionOptions\n );\n return session;\n};\n\nexport default getSessionServerside;\n","import { IConfig, IServerSideRequestOptions } from \"../types\";\nimport getSessionServerside from \"./session\";\n\nexport const serverSideFetch = async (\n url: string,\n options: IServerSideRequestOptions,\n config: IConfig\n) => {\n const session = await getSessionServerside();\n\n const opts: RequestInit = {\n method: options.method || \"GET\",\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: \"Bearer \" + session.token?.jwt,\n },\n };\n\n if (options.body) opts.body = JSON.stringify(options.body);\n\n const response: Response = await fetch(`${config.apiUrl}${url}`, opts);\n\n const res = await response.json();\n\n return res;\n};\n","import { sessionOptions } from \"./session\";\n\nconst Debug = () => {\n console.log(\"#> sessionOptions: \", sessionOptions);\n};\n\nexport default Debug;\n","import proxy from \"./server/api\";\nimport { serverSideFetch } from \"./server/fetch\";\nimport getSessionServerside from \"./server/session\";\nimport Debug from \"./server/test\";\n\nexport const Proxy = proxy;\nexport const getSession = getSessionServerside;\nexport const debug = Debug;\nexport const apiFetch = serverSideFetch;\n\nimport { IConfig, IRequestOptions, Session } from \"./types\";\n\nexport { IConfig, IRequestOptions, Session };\n"],"mappings":"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","names":["debug"]}
package/package.json CHANGED
@@ -1,51 +1,51 @@
1
1
  {
2
- "name": "celestya",
3
- "version": "0.0.5",
4
- "description": "Highly opinionated session management tool for NextJS",
5
- "main": "./dist/index.js",
6
- "exports": {
7
- ".": {
8
- "types": "./dist/index.d.ts",
9
- "require": "./dist/index.js",
10
- "import": "./dist/index.js",
11
- "module": "./dist/index.mjs"
12
- },
13
- "./client": {
14
- "types": "./dist/client/index.d.ts",
15
- "require": "./dist/client/index.js",
16
- "import": "./dist/client/index.js",
17
- "module": "./dist/client/index.mjs"
18
- }
2
+ "name": "celestya",
3
+ "version": "0.1.0",
4
+ "description": "Highly opinionated session management tool for NextJS",
5
+ "main": "./dist/index.js",
6
+ "exports": {
7
+ ".": {
8
+ "types": "./dist/index.d.ts",
9
+ "module": "./dist/index.mjs",
10
+ "require": "./dist/index.js",
11
+ "import": "./dist/index.js"
19
12
  },
20
- "files": [
21
- "dist"
22
- ],
23
- "scripts": {
24
- "build": "tsup",
25
- "test": "echo \"Error: no test specified\" && exit 1"
26
- },
27
- "keywords": [
28
- "auth",
29
- "session",
30
- "client",
31
- "server",
32
- "api"
33
- ],
34
- "author": "PhilipJovanovic",
35
- "license": "ISC",
36
- "devDependencies": {
37
- "@types/node": "^20",
38
- "@types/react": "^18",
39
- "@types/react-dom": "^18",
40
- "ts-node": "^10.9.2",
41
- "tsup": "^8.0.1",
42
- "typescript": "^5.3.3"
43
- },
44
- "dependencies": {
45
- "iron-session": "^8.0.1",
46
- "jwt-decode": "^4.0.0",
47
- "next": "^14.0.4",
48
- "react": "^18",
49
- "react-dom": "^18"
13
+ "./client": {
14
+ "types": "./dist/client/index.d.ts",
15
+ "module": "./dist/client/index.mjs",
16
+ "require": "./dist/client/index.js",
17
+ "import": "./dist/client/index.js"
50
18
  }
19
+ },
20
+ "files": [
21
+ "dist"
22
+ ],
23
+ "scripts": {
24
+ "build": "tsup",
25
+ "test": "echo \"Error: no test specified\" && exit 1"
26
+ },
27
+ "keywords": [
28
+ "auth",
29
+ "session",
30
+ "client",
31
+ "server",
32
+ "api"
33
+ ],
34
+ "author": "PhilipJovanovic",
35
+ "license": "ISC",
36
+ "devDependencies": {
37
+ "@types/node": "^20",
38
+ "@types/react": "^19",
39
+ "@types/react-dom": "^19",
40
+ "ts-node": "^10.9.2",
41
+ "tsup": "^8.0.1",
42
+ "typescript": "^5.3.3"
43
+ },
44
+ "dependencies": {
45
+ "iron-session": "^8.0.1",
46
+ "jwt-decode": "^4.0.0",
47
+ "next": "^15",
48
+ "react": "^19",
49
+ "react-dom": "^19"
50
+ }
51
51
  }