naystack 1.2.22 → 1.2.23

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.
@@ -128,17 +128,17 @@ async function verifyCaptcha(token, secret) {
128
128
  }
129
129
  return false;
130
130
  }
131
- var getContext = (refreshKey, signingKey, req) => {
131
+ var getContext = (keys, req) => {
132
132
  const bearer = req.headers.get("authorization");
133
133
  if (!bearer) {
134
134
  const refresh = req.cookies.get("refresh")?.value;
135
- const userId = getUserIdFromRefreshToken(refreshKey, refresh);
135
+ const userId = getUserIdFromRefreshToken(keys.refresh, refresh);
136
136
  if (userId) return { userId, isRefreshID: true };
137
137
  return { userId: null };
138
138
  }
139
139
  const token = bearer.slice(7);
140
140
  try {
141
- const res = (0, import_jsonwebtoken2.verify)(token, signingKey);
141
+ const res = (0, import_jsonwebtoken2.verify)(token, keys.signing);
142
142
  if (typeof res === "string") {
143
143
  return { userId: null };
144
144
  }
@@ -153,7 +153,7 @@ var getContext = (refreshKey, signingKey, req) => {
153
153
  // src/auth/email/routes/delete.ts
154
154
  var getDeleteRoute = (options) => async (req) => {
155
155
  if (options.onLogout) {
156
- const ctx = await getContext(options.refreshKey, options.signingKey, req);
156
+ const ctx = await getContext(options.keys, req);
157
157
  await options.onLogout?.(ctx.userId, req);
158
158
  }
159
159
  return getTokenizedResponse(void 0, "");
@@ -162,13 +162,13 @@ var getDeleteRoute = (options) => async (req) => {
162
162
  // src/auth/email/routes/get.ts
163
163
  var getGetRoute = (options) => async (req) => {
164
164
  const refresh = req.cookies.get("refresh")?.value;
165
- const userID = getUserIdFromRefreshToken(options.refreshKey, refresh);
165
+ const userID = getUserIdFromRefreshToken(options.keys.refresh, refresh);
166
166
  if (userID) {
167
167
  if (options.onRefresh) {
168
168
  await options.onRefresh?.(userID, req);
169
169
  }
170
170
  return getTokenizedResponse(
171
- generateAccessToken(userID, options.signingKey)
171
+ generateAccessToken(userID, options.keys.signing)
172
172
  );
173
173
  }
174
174
  return getTokenizedResponse();
@@ -183,8 +183,8 @@ var getPostRoute = (options) => async (req) => {
183
183
  if (existingUser) {
184
184
  if (await verifyUser(existingUser, data.password)) {
185
185
  return getTokenizedResponse(
186
- generateAccessToken(existingUser.id, options.signingKey),
187
- generateRefreshToken(existingUser.id, options.refreshKey)
186
+ generateAccessToken(existingUser.id, options.keys.signing),
187
+ generateRefreshToken(existingUser.id, options.keys.refresh)
188
188
  );
189
189
  }
190
190
  return handleError(400, "A user already exists", options.onError);
@@ -199,8 +199,8 @@ var getPostRoute = (options) => async (req) => {
199
199
  await options.onSignUp?.(newUser.id, req);
200
200
  }
201
201
  return getTokenizedResponse(
202
- generateAccessToken(newUser.id, options.signingKey),
203
- generateRefreshToken(newUser.id, options.refreshKey)
202
+ generateAccessToken(newUser.id, options.keys.signing),
203
+ generateRefreshToken(newUser.id, options.keys.refresh)
204
204
  );
205
205
  }
206
206
  return getTokenizedResponse();
@@ -218,8 +218,8 @@ var getPutRoute = (options) => async (req) => {
218
218
  await options.onLogin?.(user.id, req);
219
219
  }
220
220
  return getTokenizedResponse(
221
- generateAccessToken(user.id, options.signingKey),
222
- generateRefreshToken(user.id, options.refreshKey)
221
+ generateAccessToken(user.id, options.keys.signing),
222
+ generateRefreshToken(user.id, options.keys.refresh)
223
223
  );
224
224
  }
225
225
  return handleError(403, "Invalid password", options.onError);
@@ -232,7 +232,7 @@ function getEmailAuthRoutes(options) {
232
232
  POST: getPostRoute(options),
233
233
  PUT: getPutRoute(options),
234
234
  DELETE: getDeleteRoute(options),
235
- getContext: (req) => getContext(options.refreshKey, options.signingKey, req)
235
+ getContext: (req) => getContext(options.keys, req)
236
236
  };
237
237
  }
238
238
  // Annotate the CommonJS export names for ESM import in node:
@@ -102,17 +102,17 @@ async function verifyCaptcha(token, secret) {
102
102
  }
103
103
  return false;
104
104
  }
105
- var getContext = (refreshKey, signingKey, req) => {
105
+ var getContext = (keys, req) => {
106
106
  const bearer = req.headers.get("authorization");
107
107
  if (!bearer) {
108
108
  const refresh = req.cookies.get("refresh")?.value;
109
- const userId = getUserIdFromRefreshToken(refreshKey, refresh);
109
+ const userId = getUserIdFromRefreshToken(keys.refresh, refresh);
110
110
  if (userId) return { userId, isRefreshID: true };
111
111
  return { userId: null };
112
112
  }
113
113
  const token = bearer.slice(7);
114
114
  try {
115
- const res = verify2(token, signingKey);
115
+ const res = verify2(token, keys.signing);
116
116
  if (typeof res === "string") {
117
117
  return { userId: null };
118
118
  }
@@ -127,7 +127,7 @@ var getContext = (refreshKey, signingKey, req) => {
127
127
  // src/auth/email/routes/delete.ts
128
128
  var getDeleteRoute = (options) => async (req) => {
129
129
  if (options.onLogout) {
130
- const ctx = await getContext(options.refreshKey, options.signingKey, req);
130
+ const ctx = await getContext(options.keys, req);
131
131
  await options.onLogout?.(ctx.userId, req);
132
132
  }
133
133
  return getTokenizedResponse(void 0, "");
@@ -136,13 +136,13 @@ var getDeleteRoute = (options) => async (req) => {
136
136
  // src/auth/email/routes/get.ts
137
137
  var getGetRoute = (options) => async (req) => {
138
138
  const refresh = req.cookies.get("refresh")?.value;
139
- const userID = getUserIdFromRefreshToken(options.refreshKey, refresh);
139
+ const userID = getUserIdFromRefreshToken(options.keys.refresh, refresh);
140
140
  if (userID) {
141
141
  if (options.onRefresh) {
142
142
  await options.onRefresh?.(userID, req);
143
143
  }
144
144
  return getTokenizedResponse(
145
- generateAccessToken(userID, options.signingKey)
145
+ generateAccessToken(userID, options.keys.signing)
146
146
  );
147
147
  }
148
148
  return getTokenizedResponse();
@@ -157,8 +157,8 @@ var getPostRoute = (options) => async (req) => {
157
157
  if (existingUser) {
158
158
  if (await verifyUser(existingUser, data.password)) {
159
159
  return getTokenizedResponse(
160
- generateAccessToken(existingUser.id, options.signingKey),
161
- generateRefreshToken(existingUser.id, options.refreshKey)
160
+ generateAccessToken(existingUser.id, options.keys.signing),
161
+ generateRefreshToken(existingUser.id, options.keys.refresh)
162
162
  );
163
163
  }
164
164
  return handleError(400, "A user already exists", options.onError);
@@ -173,8 +173,8 @@ var getPostRoute = (options) => async (req) => {
173
173
  await options.onSignUp?.(newUser.id, req);
174
174
  }
175
175
  return getTokenizedResponse(
176
- generateAccessToken(newUser.id, options.signingKey),
177
- generateRefreshToken(newUser.id, options.refreshKey)
176
+ generateAccessToken(newUser.id, options.keys.signing),
177
+ generateRefreshToken(newUser.id, options.keys.refresh)
178
178
  );
179
179
  }
180
180
  return getTokenizedResponse();
@@ -192,8 +192,8 @@ var getPutRoute = (options) => async (req) => {
192
192
  await options.onLogin?.(user.id, req);
193
193
  }
194
194
  return getTokenizedResponse(
195
- generateAccessToken(user.id, options.signingKey),
196
- generateRefreshToken(user.id, options.refreshKey)
195
+ generateAccessToken(user.id, options.keys.signing),
196
+ generateRefreshToken(user.id, options.keys.refresh)
197
197
  );
198
198
  }
199
199
  return handleError(403, "Invalid password", options.onError);
@@ -206,7 +206,7 @@ function getEmailAuthRoutes(options) {
206
206
  POST: getPostRoute(options),
207
207
  PUT: getPutRoute(options),
208
208
  DELETE: getDeleteRoute(options),
209
- getContext: (req) => getContext(options.refreshKey, options.signingKey, req)
209
+ getContext: (req) => getContext(options.keys, req)
210
210
  };
211
211
  }
212
212
  export {
@@ -69,17 +69,17 @@ var import_jsonwebtoken2 = require("jsonwebtoken");
69
69
  var import_server2 = require("next/server");
70
70
 
71
71
  // src/auth/email/utils.ts
72
- var getContext = (refreshKey, signingKey, req) => {
72
+ var getContext = (keys, req) => {
73
73
  const bearer = req.headers.get("authorization");
74
74
  if (!bearer) {
75
75
  const refresh = req.cookies.get("refresh")?.value;
76
- const userId = getUserIdFromRefreshToken(refreshKey, refresh);
76
+ const userId = getUserIdFromRefreshToken(keys.refresh, refresh);
77
77
  if (userId) return { userId, isRefreshID: true };
78
78
  return { userId: null };
79
79
  }
80
80
  const token = bearer.slice(7);
81
81
  try {
82
- const res = (0, import_jsonwebtoken2.verify)(token, signingKey);
82
+ const res = (0, import_jsonwebtoken2.verify)(token, keys.signing);
83
83
  if (typeof res === "string") {
84
84
  return { userId: null };
85
85
  }
@@ -94,7 +94,7 @@ var getContext = (refreshKey, signingKey, req) => {
94
94
  // src/auth/email/routes/delete.ts
95
95
  var getDeleteRoute = (options) => async (req) => {
96
96
  if (options.onLogout) {
97
- const ctx = await getContext(options.refreshKey, options.signingKey, req);
97
+ const ctx = await getContext(options.keys, req);
98
98
  await options.onLogout?.(ctx.userId, req);
99
99
  }
100
100
  return getTokenizedResponse(void 0, "");
@@ -43,17 +43,17 @@ import { verify as verify2 } from "jsonwebtoken";
43
43
  import { NextResponse as NextResponse2 } from "next/server";
44
44
 
45
45
  // src/auth/email/utils.ts
46
- var getContext = (refreshKey, signingKey, req) => {
46
+ var getContext = (keys, req) => {
47
47
  const bearer = req.headers.get("authorization");
48
48
  if (!bearer) {
49
49
  const refresh = req.cookies.get("refresh")?.value;
50
- const userId = getUserIdFromRefreshToken(refreshKey, refresh);
50
+ const userId = getUserIdFromRefreshToken(keys.refresh, refresh);
51
51
  if (userId) return { userId, isRefreshID: true };
52
52
  return { userId: null };
53
53
  }
54
54
  const token = bearer.slice(7);
55
55
  try {
56
- const res = verify2(token, signingKey);
56
+ const res = verify2(token, keys.signing);
57
57
  if (typeof res === "string") {
58
58
  return { userId: null };
59
59
  }
@@ -68,7 +68,7 @@ var getContext = (refreshKey, signingKey, req) => {
68
68
  // src/auth/email/routes/delete.ts
69
69
  var getDeleteRoute = (options) => async (req) => {
70
70
  if (options.onLogout) {
71
- const ctx = await getContext(options.refreshKey, options.signingKey, req);
71
+ const ctx = await getContext(options.keys, req);
72
72
  await options.onLogout?.(ctx.userId, req);
73
73
  }
74
74
  return getTokenizedResponse(void 0, "");
@@ -70,13 +70,13 @@ function getUserIdFromRefreshToken(refreshKey, refreshToken) {
70
70
  // src/auth/email/routes/get.ts
71
71
  var getGetRoute = (options) => async (req) => {
72
72
  const refresh = req.cookies.get("refresh")?.value;
73
- const userID = getUserIdFromRefreshToken(options.refreshKey, refresh);
73
+ const userID = getUserIdFromRefreshToken(options.keys.refresh, refresh);
74
74
  if (userID) {
75
75
  if (options.onRefresh) {
76
76
  await options.onRefresh?.(userID, req);
77
77
  }
78
78
  return getTokenizedResponse(
79
- generateAccessToken(userID, options.signingKey)
79
+ generateAccessToken(userID, options.keys.signing)
80
80
  );
81
81
  }
82
82
  return getTokenizedResponse();
@@ -44,13 +44,13 @@ function getUserIdFromRefreshToken(refreshKey, refreshToken) {
44
44
  // src/auth/email/routes/get.ts
45
45
  var getGetRoute = (options) => async (req) => {
46
46
  const refresh = req.cookies.get("refresh")?.value;
47
- const userID = getUserIdFromRefreshToken(options.refreshKey, refresh);
47
+ const userID = getUserIdFromRefreshToken(options.keys.refresh, refresh);
48
48
  if (userID) {
49
49
  if (options.onRefresh) {
50
50
  await options.onRefresh?.(userID, req);
51
51
  }
52
52
  return getTokenizedResponse(
53
- generateAccessToken(userID, options.signingKey)
53
+ generateAccessToken(userID, options.keys.signing)
54
54
  );
55
55
  }
56
56
  return getTokenizedResponse();
@@ -124,8 +124,8 @@ var getPostRoute = (options) => async (req) => {
124
124
  if (existingUser) {
125
125
  if (await verifyUser(existingUser, data.password)) {
126
126
  return getTokenizedResponse(
127
- generateAccessToken(existingUser.id, options.signingKey),
128
- generateRefreshToken(existingUser.id, options.refreshKey)
127
+ generateAccessToken(existingUser.id, options.keys.signing),
128
+ generateRefreshToken(existingUser.id, options.keys.refresh)
129
129
  );
130
130
  }
131
131
  return handleError(400, "A user already exists", options.onError);
@@ -140,8 +140,8 @@ var getPostRoute = (options) => async (req) => {
140
140
  await options.onSignUp?.(newUser.id, req);
141
141
  }
142
142
  return getTokenizedResponse(
143
- generateAccessToken(newUser.id, options.signingKey),
144
- generateRefreshToken(newUser.id, options.refreshKey)
143
+ generateAccessToken(newUser.id, options.keys.signing),
144
+ generateRefreshToken(newUser.id, options.keys.refresh)
145
145
  );
146
146
  }
147
147
  return getTokenizedResponse();
@@ -100,8 +100,8 @@ var getPostRoute = (options) => async (req) => {
100
100
  if (existingUser) {
101
101
  if (await verifyUser(existingUser, data.password)) {
102
102
  return getTokenizedResponse(
103
- generateAccessToken(existingUser.id, options.signingKey),
104
- generateRefreshToken(existingUser.id, options.refreshKey)
103
+ generateAccessToken(existingUser.id, options.keys.signing),
104
+ generateRefreshToken(existingUser.id, options.keys.refresh)
105
105
  );
106
106
  }
107
107
  return handleError(400, "A user already exists", options.onError);
@@ -116,8 +116,8 @@ var getPostRoute = (options) => async (req) => {
116
116
  await options.onSignUp?.(newUser.id, req);
117
117
  }
118
118
  return getTokenizedResponse(
119
- generateAccessToken(newUser.id, options.signingKey),
120
- generateRefreshToken(newUser.id, options.refreshKey)
119
+ generateAccessToken(newUser.id, options.keys.signing),
120
+ generateRefreshToken(newUser.id, options.keys.refresh)
121
121
  );
122
122
  }
123
123
  return getTokenizedResponse();
@@ -127,8 +127,8 @@ var getPutRoute = (options) => async (req) => {
127
127
  await options.onLogin?.(user.id, req);
128
128
  }
129
129
  return getTokenizedResponse(
130
- generateAccessToken(user.id, options.signingKey),
131
- generateRefreshToken(user.id, options.refreshKey)
130
+ generateAccessToken(user.id, options.keys.signing),
131
+ generateRefreshToken(user.id, options.keys.refresh)
132
132
  );
133
133
  }
134
134
  return handleError(403, "Invalid password", options.onError);
@@ -101,8 +101,8 @@ var getPutRoute = (options) => async (req) => {
101
101
  await options.onLogin?.(user.id, req);
102
102
  }
103
103
  return getTokenizedResponse(
104
- generateAccessToken(user.id, options.signingKey),
105
- generateRefreshToken(user.id, options.refreshKey)
104
+ generateAccessToken(user.id, options.keys.signing),
105
+ generateRefreshToken(user.id, options.keys.refresh)
106
106
  );
107
107
  }
108
108
  return handleError(403, "Invalid password", options.onError);
@@ -5,13 +5,16 @@ type InitRoutesOptions = {
5
5
  getUser: (email: string) => Promise<UserOutput | undefined>;
6
6
  createUser: (user: UserInput) => Promise<UserOutput | undefined>;
7
7
  onError?: ErrorHandler;
8
- signingKey: string;
9
- refreshKey: string;
8
+ keys: AuthKeys;
10
9
  turnstileKey?: string;
11
10
  onSignUp?: (userId: number | null, req: NextRequest) => Promise<void>;
12
11
  onLogin?: (userId: number | null, req: NextRequest) => Promise<void>;
13
12
  onRefresh?: (userId: number | null, req: NextRequest) => Promise<void>;
14
13
  onLogout?: (userId: number | null, req: NextRequest) => Promise<void>;
15
14
  };
15
+ interface AuthKeys {
16
+ signing: string;
17
+ refresh: string;
18
+ }
16
19
 
17
- export type { InitRoutesOptions };
20
+ export type { AuthKeys, InitRoutesOptions };
@@ -5,13 +5,16 @@ type InitRoutesOptions = {
5
5
  getUser: (email: string) => Promise<UserOutput | undefined>;
6
6
  createUser: (user: UserInput) => Promise<UserOutput | undefined>;
7
7
  onError?: ErrorHandler;
8
- signingKey: string;
9
- refreshKey: string;
8
+ keys: AuthKeys;
10
9
  turnstileKey?: string;
11
10
  onSignUp?: (userId: number | null, req: NextRequest) => Promise<void>;
12
11
  onLogin?: (userId: number | null, req: NextRequest) => Promise<void>;
13
12
  onRefresh?: (userId: number | null, req: NextRequest) => Promise<void>;
14
13
  onLogout?: (userId: number | null, req: NextRequest) => Promise<void>;
15
14
  };
15
+ interface AuthKeys {
16
+ signing: string;
17
+ refresh: string;
18
+ }
16
19
 
17
- export type { InitRoutesOptions };
20
+ export type { AuthKeys, InitRoutesOptions };
@@ -95,17 +95,17 @@ async function verifyCaptcha(token, secret) {
95
95
  }
96
96
  return false;
97
97
  }
98
- var getContext = (refreshKey, signingKey, req) => {
98
+ var getContext = (keys, req) => {
99
99
  const bearer = req.headers.get("authorization");
100
100
  if (!bearer) {
101
101
  const refresh = req.cookies.get("refresh")?.value;
102
- const userId = getUserIdFromRefreshToken(refreshKey, refresh);
102
+ const userId = getUserIdFromRefreshToken(keys.refresh, refresh);
103
103
  if (userId) return { userId, isRefreshID: true };
104
104
  return { userId: null };
105
105
  }
106
106
  const token = bearer.slice(7);
107
107
  try {
108
- const res = (0, import_jsonwebtoken2.verify)(token, signingKey);
108
+ const res = (0, import_jsonwebtoken2.verify)(token, keys.signing);
109
109
  if (typeof res === "string") {
110
110
  return { userId: null };
111
111
  }
@@ -1,6 +1,6 @@
1
1
  import { NextRequest, NextResponse } from 'next/server';
2
2
  import { Context } from '../../graphql/types.mjs';
3
- import { InitRoutesOptions } from './types.mjs';
3
+ import { InitRoutesOptions, AuthKeys } from './types.mjs';
4
4
  import '../types.mjs';
5
5
 
6
6
  declare function massageRequest(req: NextRequest, options: InitRoutesOptions): Promise<{
@@ -13,6 +13,6 @@ declare function massageRequest(req: NextRequest, options: InitRoutesOptions): P
13
13
  };
14
14
  }>;
15
15
  declare function verifyCaptcha(token: string, secret?: string): Promise<boolean>;
16
- declare const getContext: (refreshKey: string, signingKey: string, req: NextRequest) => Context;
16
+ declare const getContext: (keys: AuthKeys, req: NextRequest) => Context;
17
17
 
18
18
  export { getContext, massageRequest, verifyCaptcha };
@@ -1,6 +1,6 @@
1
1
  import { NextRequest, NextResponse } from 'next/server';
2
2
  import { Context } from '../../graphql/types.js';
3
- import { InitRoutesOptions } from './types.js';
3
+ import { InitRoutesOptions, AuthKeys } from './types.js';
4
4
  import '../types.js';
5
5
 
6
6
  declare function massageRequest(req: NextRequest, options: InitRoutesOptions): Promise<{
@@ -13,6 +13,6 @@ declare function massageRequest(req: NextRequest, options: InitRoutesOptions): P
13
13
  };
14
14
  }>;
15
15
  declare function verifyCaptcha(token: string, secret?: string): Promise<boolean>;
16
- declare const getContext: (refreshKey: string, signingKey: string, req: NextRequest) => Context;
16
+ declare const getContext: (keys: AuthKeys, req: NextRequest) => Context;
17
17
 
18
18
  export { getContext, massageRequest, verifyCaptcha };
@@ -69,17 +69,17 @@ async function verifyCaptcha(token, secret) {
69
69
  }
70
70
  return false;
71
71
  }
72
- var getContext = (refreshKey, signingKey, req) => {
72
+ var getContext = (keys, req) => {
73
73
  const bearer = req.headers.get("authorization");
74
74
  if (!bearer) {
75
75
  const refresh = req.cookies.get("refresh")?.value;
76
- const userId = getUserIdFromRefreshToken(refreshKey, refresh);
76
+ const userId = getUserIdFromRefreshToken(keys.refresh, refresh);
77
77
  if (userId) return { userId, isRefreshID: true };
78
78
  return { userId: null };
79
79
  }
80
80
  const token = bearer.slice(7);
81
81
  try {
82
- const res = verify2(token, signingKey);
82
+ const res = verify2(token, keys.signing);
83
83
  if (typeof res === "string") {
84
84
  return { userId: null };
85
85
  }
@@ -142,17 +142,17 @@ async function verifyCaptcha(token, secret) {
142
142
  }
143
143
  return false;
144
144
  }
145
- var getContext = (refreshKey, signingKey, req) => {
145
+ var getContext = (keys, req) => {
146
146
  const bearer = req.headers.get("authorization");
147
147
  if (!bearer) {
148
148
  const refresh = req.cookies.get("refresh")?.value;
149
- const userId = getUserIdFromRefreshToken(refreshKey, refresh);
149
+ const userId = getUserIdFromRefreshToken(keys.refresh, refresh);
150
150
  if (userId) return { userId, isRefreshID: true };
151
151
  return { userId: null };
152
152
  }
153
153
  const token = bearer.slice(7);
154
154
  try {
155
- const res = (0, import_jsonwebtoken2.verify)(token, signingKey);
155
+ const res = (0, import_jsonwebtoken2.verify)(token, keys.signing);
156
156
  if (typeof res === "string") {
157
157
  return { userId: null };
158
158
  }
@@ -167,7 +167,7 @@ var getContext = (refreshKey, signingKey, req) => {
167
167
  // src/auth/email/routes/delete.ts
168
168
  var getDeleteRoute = (options) => async (req) => {
169
169
  if (options.onLogout) {
170
- const ctx = await getContext(options.refreshKey, options.signingKey, req);
170
+ const ctx = await getContext(options.keys, req);
171
171
  await options.onLogout?.(ctx.userId, req);
172
172
  }
173
173
  return getTokenizedResponse(void 0, "");
@@ -176,13 +176,13 @@ var getDeleteRoute = (options) => async (req) => {
176
176
  // src/auth/email/routes/get.ts
177
177
  var getGetRoute = (options) => async (req) => {
178
178
  const refresh = req.cookies.get("refresh")?.value;
179
- const userID = getUserIdFromRefreshToken(options.refreshKey, refresh);
179
+ const userID = getUserIdFromRefreshToken(options.keys.refresh, refresh);
180
180
  if (userID) {
181
181
  if (options.onRefresh) {
182
182
  await options.onRefresh?.(userID, req);
183
183
  }
184
184
  return getTokenizedResponse(
185
- generateAccessToken(userID, options.signingKey)
185
+ generateAccessToken(userID, options.keys.signing)
186
186
  );
187
187
  }
188
188
  return getTokenizedResponse();
@@ -197,8 +197,8 @@ var getPostRoute = (options) => async (req) => {
197
197
  if (existingUser) {
198
198
  if (await verifyUser(existingUser, data.password)) {
199
199
  return getTokenizedResponse(
200
- generateAccessToken(existingUser.id, options.signingKey),
201
- generateRefreshToken(existingUser.id, options.refreshKey)
200
+ generateAccessToken(existingUser.id, options.keys.signing),
201
+ generateRefreshToken(existingUser.id, options.keys.refresh)
202
202
  );
203
203
  }
204
204
  return handleError(400, "A user already exists", options.onError);
@@ -213,8 +213,8 @@ var getPostRoute = (options) => async (req) => {
213
213
  await options.onSignUp?.(newUser.id, req);
214
214
  }
215
215
  return getTokenizedResponse(
216
- generateAccessToken(newUser.id, options.signingKey),
217
- generateRefreshToken(newUser.id, options.refreshKey)
216
+ generateAccessToken(newUser.id, options.keys.signing),
217
+ generateRefreshToken(newUser.id, options.keys.refresh)
218
218
  );
219
219
  }
220
220
  return getTokenizedResponse();
@@ -232,8 +232,8 @@ var getPutRoute = (options) => async (req) => {
232
232
  await options.onLogin?.(user.id, req);
233
233
  }
234
234
  return getTokenizedResponse(
235
- generateAccessToken(user.id, options.signingKey),
236
- generateRefreshToken(user.id, options.refreshKey)
235
+ generateAccessToken(user.id, options.keys.signing),
236
+ generateRefreshToken(user.id, options.keys.refresh)
237
237
  );
238
238
  }
239
239
  return handleError(403, "Invalid password", options.onError);
@@ -246,7 +246,7 @@ function getEmailAuthRoutes(options) {
246
246
  POST: getPostRoute(options),
247
247
  PUT: getPutRoute(options),
248
248
  DELETE: getDeleteRoute(options),
249
- getContext: (req) => getContext(options.refreshKey, options.signingKey, req)
249
+ getContext: (req) => getContext(options.keys, req)
250
250
  };
251
251
  }
252
252
 
@@ -114,17 +114,17 @@ async function verifyCaptcha(token, secret) {
114
114
  }
115
115
  return false;
116
116
  }
117
- var getContext = (refreshKey, signingKey, req) => {
117
+ var getContext = (keys, req) => {
118
118
  const bearer = req.headers.get("authorization");
119
119
  if (!bearer) {
120
120
  const refresh = req.cookies.get("refresh")?.value;
121
- const userId = getUserIdFromRefreshToken(refreshKey, refresh);
121
+ const userId = getUserIdFromRefreshToken(keys.refresh, refresh);
122
122
  if (userId) return { userId, isRefreshID: true };
123
123
  return { userId: null };
124
124
  }
125
125
  const token = bearer.slice(7);
126
126
  try {
127
- const res = verify2(token, signingKey);
127
+ const res = verify2(token, keys.signing);
128
128
  if (typeof res === "string") {
129
129
  return { userId: null };
130
130
  }
@@ -139,7 +139,7 @@ var getContext = (refreshKey, signingKey, req) => {
139
139
  // src/auth/email/routes/delete.ts
140
140
  var getDeleteRoute = (options) => async (req) => {
141
141
  if (options.onLogout) {
142
- const ctx = await getContext(options.refreshKey, options.signingKey, req);
142
+ const ctx = await getContext(options.keys, req);
143
143
  await options.onLogout?.(ctx.userId, req);
144
144
  }
145
145
  return getTokenizedResponse(void 0, "");
@@ -148,13 +148,13 @@ var getDeleteRoute = (options) => async (req) => {
148
148
  // src/auth/email/routes/get.ts
149
149
  var getGetRoute = (options) => async (req) => {
150
150
  const refresh = req.cookies.get("refresh")?.value;
151
- const userID = getUserIdFromRefreshToken(options.refreshKey, refresh);
151
+ const userID = getUserIdFromRefreshToken(options.keys.refresh, refresh);
152
152
  if (userID) {
153
153
  if (options.onRefresh) {
154
154
  await options.onRefresh?.(userID, req);
155
155
  }
156
156
  return getTokenizedResponse(
157
- generateAccessToken(userID, options.signingKey)
157
+ generateAccessToken(userID, options.keys.signing)
158
158
  );
159
159
  }
160
160
  return getTokenizedResponse();
@@ -169,8 +169,8 @@ var getPostRoute = (options) => async (req) => {
169
169
  if (existingUser) {
170
170
  if (await verifyUser(existingUser, data.password)) {
171
171
  return getTokenizedResponse(
172
- generateAccessToken(existingUser.id, options.signingKey),
173
- generateRefreshToken(existingUser.id, options.refreshKey)
172
+ generateAccessToken(existingUser.id, options.keys.signing),
173
+ generateRefreshToken(existingUser.id, options.keys.refresh)
174
174
  );
175
175
  }
176
176
  return handleError(400, "A user already exists", options.onError);
@@ -185,8 +185,8 @@ var getPostRoute = (options) => async (req) => {
185
185
  await options.onSignUp?.(newUser.id, req);
186
186
  }
187
187
  return getTokenizedResponse(
188
- generateAccessToken(newUser.id, options.signingKey),
189
- generateRefreshToken(newUser.id, options.refreshKey)
188
+ generateAccessToken(newUser.id, options.keys.signing),
189
+ generateRefreshToken(newUser.id, options.keys.refresh)
190
190
  );
191
191
  }
192
192
  return getTokenizedResponse();
@@ -204,8 +204,8 @@ var getPutRoute = (options) => async (req) => {
204
204
  await options.onLogin?.(user.id, req);
205
205
  }
206
206
  return getTokenizedResponse(
207
- generateAccessToken(user.id, options.signingKey),
208
- generateRefreshToken(user.id, options.refreshKey)
207
+ generateAccessToken(user.id, options.keys.signing),
208
+ generateRefreshToken(user.id, options.keys.refresh)
209
209
  );
210
210
  }
211
211
  return handleError(403, "Invalid password", options.onError);
@@ -218,7 +218,7 @@ function getEmailAuthRoutes(options) {
218
218
  POST: getPostRoute(options),
219
219
  PUT: getPutRoute(options),
220
220
  DELETE: getDeleteRoute(options),
221
- getContext: (req) => getContext(options.refreshKey, options.signingKey, req)
221
+ getContext: (req) => getContext(options.keys, req)
222
222
  };
223
223
  }
224
224
 
@@ -52,17 +52,17 @@ function getUserIdFromRefreshToken(refreshKey, refreshToken) {
52
52
  var import_server2 = require("next/server");
53
53
 
54
54
  // src/auth/email/utils.ts
55
- var getContext = (refreshKey, signingKey, req) => {
55
+ var getContext = (keys, req) => {
56
56
  const bearer = req.headers.get("authorization");
57
57
  if (!bearer) {
58
58
  const refresh = req.cookies.get("refresh")?.value;
59
- const userId = getUserIdFromRefreshToken(refreshKey, refresh);
59
+ const userId = getUserIdFromRefreshToken(keys.refresh, refresh);
60
60
  if (userId) return { userId, isRefreshID: true };
61
61
  return { userId: null };
62
62
  }
63
63
  const token = bearer.slice(7);
64
64
  try {
65
- const res = (0, import_jsonwebtoken2.verify)(token, signingKey);
65
+ const res = (0, import_jsonwebtoken2.verify)(token, keys.signing);
66
66
  if (typeof res === "string") {
67
67
  return { userId: null };
68
68
  }
@@ -145,7 +145,7 @@ var uploadBlob = (client, Bucket) => async (file, key) => {
145
145
 
146
146
  // src/file/put.ts
147
147
  var getFileUploadPutRoute = (options, client) => async (req) => {
148
- const ctx = getContext(options.refreshKey, options.signingKey, req);
148
+ const ctx = getContext(options.keys, req);
149
149
  if (!ctx?.userId || ctx.isRefreshID)
150
150
  return import_server3.NextResponse.json({ error: "unauthorized" }, { status: 401 });
151
151
  const formData = await req.formData();
@@ -1,2 +1,4 @@
1
1
  export { setupFileUpload } from './setup.mjs';
2
2
  import 'next/server';
3
+ import '../auth/email/types.mjs';
4
+ import '../auth/types.mjs';
@@ -1,2 +1,4 @@
1
1
  export { setupFileUpload } from './setup.js';
2
2
  import 'next/server';
3
+ import '../auth/email/types.js';
4
+ import '../auth/types.js';
@@ -26,17 +26,17 @@ function getUserIdFromRefreshToken(refreshKey, refreshToken) {
26
26
  import { NextResponse as NextResponse2 } from "next/server";
27
27
 
28
28
  // src/auth/email/utils.ts
29
- var getContext = (refreshKey, signingKey, req) => {
29
+ var getContext = (keys, req) => {
30
30
  const bearer = req.headers.get("authorization");
31
31
  if (!bearer) {
32
32
  const refresh = req.cookies.get("refresh")?.value;
33
- const userId = getUserIdFromRefreshToken(refreshKey, refresh);
33
+ const userId = getUserIdFromRefreshToken(keys.refresh, refresh);
34
34
  if (userId) return { userId, isRefreshID: true };
35
35
  return { userId: null };
36
36
  }
37
37
  const token = bearer.slice(7);
38
38
  try {
39
- const res = verify2(token, signingKey);
39
+ const res = verify2(token, keys.signing);
40
40
  if (typeof res === "string") {
41
41
  return { userId: null };
42
42
  }
@@ -123,7 +123,7 @@ var uploadBlob = (client, Bucket) => async (file, key) => {
123
123
 
124
124
  // src/file/put.ts
125
125
  var getFileUploadPutRoute = (options, client) => async (req) => {
126
- const ctx = getContext(options.refreshKey, options.signingKey, req);
126
+ const ctx = getContext(options.keys, req);
127
127
  if (!ctx?.userId || ctx.isRefreshID)
128
128
  return NextResponse3.json({ error: "unauthorized" }, { status: 401 });
129
129
  const formData = await req.formData();
@@ -50,17 +50,17 @@ function getUserIdFromRefreshToken(refreshKey, refreshToken) {
50
50
  var import_server2 = require("next/server");
51
51
 
52
52
  // src/auth/email/utils.ts
53
- var getContext = (refreshKey, signingKey, req) => {
53
+ var getContext = (keys, req) => {
54
54
  const bearer = req.headers.get("authorization");
55
55
  if (!bearer) {
56
56
  const refresh = req.cookies.get("refresh")?.value;
57
- const userId = getUserIdFromRefreshToken(refreshKey, refresh);
57
+ const userId = getUserIdFromRefreshToken(keys.refresh, refresh);
58
58
  if (userId) return { userId, isRefreshID: true };
59
59
  return { userId: null };
60
60
  }
61
61
  const token = bearer.slice(7);
62
62
  try {
63
- const res = (0, import_jsonwebtoken2.verify)(token, signingKey);
63
+ const res = (0, import_jsonwebtoken2.verify)(token, keys.signing);
64
64
  if (typeof res === "string") {
65
65
  return { userId: null };
66
66
  }
@@ -98,7 +98,7 @@ var uploadBlob = (client, Bucket) => async (file, key) => {
98
98
 
99
99
  // src/file/put.ts
100
100
  var getFileUploadPutRoute = (options, client) => async (req) => {
101
- const ctx = getContext(options.refreshKey, options.signingKey, req);
101
+ const ctx = getContext(options.keys, req);
102
102
  if (!ctx?.userId || ctx.isRefreshID)
103
103
  return import_server3.NextResponse.json({ error: "unauthorized" }, { status: 401 });
104
104
  const formData = await req.formData();
@@ -1,6 +1,8 @@
1
1
  import { S3Client } from '@aws-sdk/client-s3';
2
2
  import { NextRequest, NextResponse } from 'next/server';
3
3
  import { SetupFileUploadOptions } from './setup.mjs';
4
+ import '../auth/email/types.mjs';
5
+ import '../auth/types.mjs';
4
6
 
5
7
  declare const getFileUploadPutRoute: (options: SetupFileUploadOptions, client: S3Client) => (req: NextRequest) => Promise<NextResponse<{
6
8
  error: string;
@@ -1,6 +1,8 @@
1
1
  import { S3Client } from '@aws-sdk/client-s3';
2
2
  import { NextRequest, NextResponse } from 'next/server';
3
3
  import { SetupFileUploadOptions } from './setup.js';
4
+ import '../auth/email/types.js';
5
+ import '../auth/types.js';
4
6
 
5
7
  declare const getFileUploadPutRoute: (options: SetupFileUploadOptions, client: S3Client) => (req: NextRequest) => Promise<NextResponse<{
6
8
  error: string;
@@ -26,17 +26,17 @@ function getUserIdFromRefreshToken(refreshKey, refreshToken) {
26
26
  import { NextResponse as NextResponse2 } from "next/server";
27
27
 
28
28
  // src/auth/email/utils.ts
29
- var getContext = (refreshKey, signingKey, req) => {
29
+ var getContext = (keys, req) => {
30
30
  const bearer = req.headers.get("authorization");
31
31
  if (!bearer) {
32
32
  const refresh = req.cookies.get("refresh")?.value;
33
- const userId = getUserIdFromRefreshToken(refreshKey, refresh);
33
+ const userId = getUserIdFromRefreshToken(keys.refresh, refresh);
34
34
  if (userId) return { userId, isRefreshID: true };
35
35
  return { userId: null };
36
36
  }
37
37
  const token = bearer.slice(7);
38
38
  try {
39
- const res = verify2(token, signingKey);
39
+ const res = verify2(token, keys.signing);
40
40
  if (typeof res === "string") {
41
41
  return { userId: null };
42
42
  }
@@ -78,7 +78,7 @@ var uploadBlob = (client, Bucket) => async (file, key) => {
78
78
 
79
79
  // src/file/put.ts
80
80
  var getFileUploadPutRoute = (options, client) => async (req) => {
81
- const ctx = getContext(options.refreshKey, options.signingKey, req);
81
+ const ctx = getContext(options.keys, req);
82
82
  if (!ctx?.userId || ctx.isRefreshID)
83
83
  return NextResponse3.json({ error: "unauthorized" }, { status: 401 });
84
84
  const formData = await req.formData();
@@ -52,17 +52,17 @@ function getUserIdFromRefreshToken(refreshKey, refreshToken) {
52
52
  var import_server2 = require("next/server");
53
53
 
54
54
  // src/auth/email/utils.ts
55
- var getContext = (refreshKey, signingKey, req) => {
55
+ var getContext = (keys, req) => {
56
56
  const bearer = req.headers.get("authorization");
57
57
  if (!bearer) {
58
58
  const refresh = req.cookies.get("refresh")?.value;
59
- const userId = getUserIdFromRefreshToken(refreshKey, refresh);
59
+ const userId = getUserIdFromRefreshToken(keys.refresh, refresh);
60
60
  if (userId) return { userId, isRefreshID: true };
61
61
  return { userId: null };
62
62
  }
63
63
  const token = bearer.slice(7);
64
64
  try {
65
- const res = (0, import_jsonwebtoken2.verify)(token, signingKey);
65
+ const res = (0, import_jsonwebtoken2.verify)(token, keys.signing);
66
66
  if (typeof res === "string") {
67
67
  return { userId: null };
68
68
  }
@@ -145,7 +145,7 @@ var uploadBlob = (client, Bucket) => async (file, key) => {
145
145
 
146
146
  // src/file/put.ts
147
147
  var getFileUploadPutRoute = (options, client) => async (req) => {
148
- const ctx = getContext(options.refreshKey, options.signingKey, req);
148
+ const ctx = getContext(options.keys, req);
149
149
  if (!ctx?.userId || ctx.isRefreshID)
150
150
  return import_server3.NextResponse.json({ error: "unauthorized" }, { status: 401 });
151
151
  const formData = await req.formData();
@@ -1,8 +1,9 @@
1
1
  import * as next_server from 'next/server';
2
+ import { AuthKeys } from '../auth/email/types.mjs';
3
+ import '../auth/types.mjs';
2
4
 
3
5
  interface SetupFileUploadOptions {
4
- refreshKey: string;
5
- signingKey: string;
6
+ keys: AuthKeys;
6
7
  region: string;
7
8
  bucket: string;
8
9
  awsSecret: string;
@@ -1,8 +1,9 @@
1
1
  import * as next_server from 'next/server';
2
+ import { AuthKeys } from '../auth/email/types.js';
3
+ import '../auth/types.js';
2
4
 
3
5
  interface SetupFileUploadOptions {
4
- refreshKey: string;
5
- signingKey: string;
6
+ keys: AuthKeys;
6
7
  region: string;
7
8
  bucket: string;
8
9
  awsSecret: string;
@@ -26,17 +26,17 @@ function getUserIdFromRefreshToken(refreshKey, refreshToken) {
26
26
  import { NextResponse as NextResponse2 } from "next/server";
27
27
 
28
28
  // src/auth/email/utils.ts
29
- var getContext = (refreshKey, signingKey, req) => {
29
+ var getContext = (keys, req) => {
30
30
  const bearer = req.headers.get("authorization");
31
31
  if (!bearer) {
32
32
  const refresh = req.cookies.get("refresh")?.value;
33
- const userId = getUserIdFromRefreshToken(refreshKey, refresh);
33
+ const userId = getUserIdFromRefreshToken(keys.refresh, refresh);
34
34
  if (userId) return { userId, isRefreshID: true };
35
35
  return { userId: null };
36
36
  }
37
37
  const token = bearer.slice(7);
38
38
  try {
39
- const res = verify2(token, signingKey);
39
+ const res = verify2(token, keys.signing);
40
40
  if (typeof res === "string") {
41
41
  return { userId: null };
42
42
  }
@@ -123,7 +123,7 @@ var uploadBlob = (client, Bucket) => async (file, key) => {
123
123
 
124
124
  // src/file/put.ts
125
125
  var getFileUploadPutRoute = (options, client) => async (req) => {
126
- const ctx = getContext(options.refreshKey, options.signingKey, req);
126
+ const ctx = getContext(options.keys, req);
127
127
  if (!ctx?.userId || ctx.isRefreshID)
128
128
  return NextResponse3.json({ error: "unauthorized" }, { status: 401 });
129
129
  const formData = await req.formData();
@@ -2,6 +2,8 @@ import * as _aws_sdk_client_s3 from '@aws-sdk/client-s3';
2
2
  import { S3Client } from '@aws-sdk/client-s3';
3
3
  import { SetupFileUploadOptions } from './setup.mjs';
4
4
  import 'next/server';
5
+ import '../auth/email/types.mjs';
6
+ import '../auth/types.mjs';
5
7
 
6
8
  declare const getS3Client: (options: SetupFileUploadOptions) => S3Client;
7
9
  declare const getUploadURL: (client: S3Client, Bucket: string) => (keys: string | string[]) => Promise<string>;
@@ -2,6 +2,8 @@ import * as _aws_sdk_client_s3 from '@aws-sdk/client-s3';
2
2
  import { S3Client } from '@aws-sdk/client-s3';
3
3
  import { SetupFileUploadOptions } from './setup.js';
4
4
  import 'next/server';
5
+ import '../auth/email/types.js';
6
+ import '../auth/types.js';
5
7
 
6
8
  declare const getS3Client: (options: SetupFileUploadOptions) => S3Client;
7
9
  declare const getUploadURL: (client: S3Client, Bucket: string) => (keys: string | string[]) => Promise<string>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "naystack",
3
- "version": "1.2.22",
3
+ "version": "1.2.23",
4
4
  "description": "A stack built with Next + GraphQL + S3 + Auth",
5
5
  "main": "dist/index.cjs.js",
6
6
  "module": "dist/index.esm.js",