naystack 1.7.20 → 1.7.24
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/auth/client.cjs.js +10 -24
- package/dist/auth/client.esm.js +10 -24
- package/dist/auth/email/client.cjs.js +10 -24
- package/dist/auth/email/client.d.mts +2 -4
- package/dist/auth/email/client.d.ts +2 -4
- package/dist/auth/email/client.esm.js +10 -24
- package/dist/auth/email/index.cjs.js +19 -23
- package/dist/auth/email/index.d.mts +3 -9
- package/dist/auth/email/index.d.ts +3 -9
- package/dist/auth/email/index.esm.js +18 -23
- package/dist/auth/email/next.cjs.js +2 -2
- package/dist/auth/email/next.d.mts +1 -1
- package/dist/auth/email/next.d.ts +1 -1
- package/dist/auth/email/next.esm.js +2 -2
- package/dist/auth/email/routes/delete.cjs.js +13 -4
- package/dist/auth/email/routes/delete.d.mts +1 -4
- package/dist/auth/email/routes/delete.d.ts +1 -4
- package/dist/auth/email/routes/delete.esm.js +13 -4
- package/dist/auth/email/routes/get.cjs.js +21 -16
- package/dist/auth/email/routes/get.d.mts +1 -4
- package/dist/auth/email/routes/get.d.ts +1 -4
- package/dist/auth/email/routes/get.esm.js +21 -16
- package/dist/auth/email/routes/post.cjs.js +25 -29
- package/dist/auth/email/routes/post.esm.js +25 -29
- package/dist/auth/email/routes/put.cjs.js +24 -24
- package/dist/auth/email/routes/put.esm.js +24 -24
- package/dist/auth/email/token.cjs.js +8 -7
- package/dist/auth/email/token.d.mts +4 -10
- package/dist/auth/email/token.d.ts +4 -10
- package/dist/auth/email/token.esm.js +8 -7
- package/dist/auth/google/get.cjs.js +3 -15
- package/dist/auth/google/get.esm.js +3 -15
- package/dist/auth/google/index.cjs.js +3 -15
- package/dist/auth/google/index.esm.js +3 -15
- package/dist/auth/index.cjs.js +20 -31
- package/dist/auth/index.d.mts +1 -1
- package/dist/auth/index.d.ts +1 -1
- package/dist/auth/index.esm.js +19 -31
- package/dist/graphql/index.cjs.js +1 -2
- package/dist/graphql/index.esm.js +1 -2
- package/dist/graphql/init.cjs.js +1 -2
- package/dist/graphql/init.esm.js +1 -2
- package/dist/utils/route.cjs.js +1 -2
- package/dist/utils/route.esm.js +1 -2
- package/package.json +1 -1
|
@@ -110,8 +110,8 @@ function AuthFetch() {
|
|
|
110
110
|
}
|
|
111
111
|
);
|
|
112
112
|
}
|
|
113
|
-
function AuthWrapper({ children,
|
|
114
|
-
return /* @__PURE__ */ React2.createElement(React2.Fragment, null, /* @__PURE__ */ React2.createElement(AuthWrapperClient, { skipInitialFetch: true
|
|
113
|
+
function AuthWrapper({ children, skipInitialFetch }) {
|
|
114
|
+
return /* @__PURE__ */ React2.createElement(React2.Fragment, null, /* @__PURE__ */ React2.createElement(AuthWrapperClient, { skipInitialFetch: true }, !skipInitialFetch && /* @__PURE__ */ React2.createElement(AuthFetch, null), children));
|
|
115
115
|
}
|
|
116
116
|
export {
|
|
117
117
|
AuthFetch,
|
|
@@ -85,9 +85,18 @@ function getEnv(key, skipCheck) {
|
|
|
85
85
|
var REFRESH_COOKIE_NAME = "refresh";
|
|
86
86
|
|
|
87
87
|
// src/auth/email/token.ts
|
|
88
|
-
function
|
|
89
|
-
|
|
90
|
-
|
|
88
|
+
function generateAccessToken(id) {
|
|
89
|
+
return (0, import_jsonwebtoken.sign)({ id }, getEnv("SIGNING_KEY" /* SIGNING_KEY */), {
|
|
90
|
+
expiresIn: "2h"
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
function generateRefreshToken(id) {
|
|
94
|
+
return (0, import_jsonwebtoken.sign)({ id }, getEnv("REFRESH_KEY" /* REFRESH_KEY */));
|
|
95
|
+
}
|
|
96
|
+
function getTokenizedResponse(id) {
|
|
97
|
+
const accessToken = id ? generateAccessToken(id) : void 0;
|
|
98
|
+
const refreshToken = id ? generateRefreshToken(id) : void 0;
|
|
99
|
+
const response = import_server.NextResponse.json(accessToken, {
|
|
91
100
|
status: 200
|
|
92
101
|
});
|
|
93
102
|
if (!accessToken) {
|
|
@@ -155,7 +164,7 @@ var getDeleteRoute = (options) => async (req) => {
|
|
|
155
164
|
const body = await req.json();
|
|
156
165
|
await options.onLogout?.(ctx.userId, body);
|
|
157
166
|
}
|
|
158
|
-
return getTokenizedResponse(
|
|
167
|
+
return getTokenizedResponse();
|
|
159
168
|
};
|
|
160
169
|
// Annotate the CommonJS export names for ESM import in node:
|
|
161
170
|
0 && (module.exports = {
|
|
@@ -8,9 +8,6 @@ import '../../types.mjs';
|
|
|
8
8
|
* @param options - SetupEmailAuthOptions
|
|
9
9
|
* @returns Async route handler
|
|
10
10
|
*/
|
|
11
|
-
declare const getDeleteRoute: (options: SetupEmailAuthOptions) => (req: NextRequest) => Promise<next_server.NextResponse<
|
|
12
|
-
accessToken: string | undefined;
|
|
13
|
-
refreshToken: string | undefined;
|
|
14
|
-
}>>;
|
|
11
|
+
declare const getDeleteRoute: (options: SetupEmailAuthOptions) => (req: NextRequest) => Promise<next_server.NextResponse<string | undefined>>;
|
|
15
12
|
|
|
16
13
|
export { getDeleteRoute };
|
|
@@ -8,9 +8,6 @@ import '../../types.js';
|
|
|
8
8
|
* @param options - SetupEmailAuthOptions
|
|
9
9
|
* @returns Async route handler
|
|
10
10
|
*/
|
|
11
|
-
declare const getDeleteRoute: (options: SetupEmailAuthOptions) => (req: NextRequest) => Promise<next_server.NextResponse<
|
|
12
|
-
accessToken: string | undefined;
|
|
13
|
-
refreshToken: string | undefined;
|
|
14
|
-
}>>;
|
|
11
|
+
declare const getDeleteRoute: (options: SetupEmailAuthOptions) => (req: NextRequest) => Promise<next_server.NextResponse<string | undefined>>;
|
|
15
12
|
|
|
16
13
|
export { getDeleteRoute };
|
|
@@ -59,9 +59,18 @@ function getEnv(key, skipCheck) {
|
|
|
59
59
|
var REFRESH_COOKIE_NAME = "refresh";
|
|
60
60
|
|
|
61
61
|
// src/auth/email/token.ts
|
|
62
|
-
function
|
|
63
|
-
|
|
64
|
-
|
|
62
|
+
function generateAccessToken(id) {
|
|
63
|
+
return sign({ id }, getEnv("SIGNING_KEY" /* SIGNING_KEY */), {
|
|
64
|
+
expiresIn: "2h"
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
function generateRefreshToken(id) {
|
|
68
|
+
return sign({ id }, getEnv("REFRESH_KEY" /* REFRESH_KEY */));
|
|
69
|
+
}
|
|
70
|
+
function getTokenizedResponse(id) {
|
|
71
|
+
const accessToken = id ? generateAccessToken(id) : void 0;
|
|
72
|
+
const refreshToken = id ? generateRefreshToken(id) : void 0;
|
|
73
|
+
const response = NextResponse.json(accessToken, {
|
|
65
74
|
status: 200
|
|
66
75
|
});
|
|
67
76
|
if (!accessToken) {
|
|
@@ -129,7 +138,7 @@ var getDeleteRoute = (options) => async (req) => {
|
|
|
129
138
|
const body = await req.json();
|
|
130
139
|
await options.onLogout?.(ctx.userId, body);
|
|
131
140
|
}
|
|
132
|
-
return getTokenizedResponse(
|
|
141
|
+
return getTokenizedResponse();
|
|
133
142
|
};
|
|
134
143
|
export {
|
|
135
144
|
getDeleteRoute
|
|
@@ -24,6 +24,16 @@ __export(get_exports, {
|
|
|
24
24
|
});
|
|
25
25
|
module.exports = __toCommonJS(get_exports);
|
|
26
26
|
|
|
27
|
+
// src/auth/constants.ts
|
|
28
|
+
var REFRESH_COOKIE_NAME = "refresh";
|
|
29
|
+
|
|
30
|
+
// src/auth/email/token.ts
|
|
31
|
+
var import_bcryptjs = require("bcryptjs");
|
|
32
|
+
var import_jsonwebtoken = require("jsonwebtoken");
|
|
33
|
+
var import_headers = require("next/headers");
|
|
34
|
+
var import_navigation = require("next/navigation");
|
|
35
|
+
var import_server = require("next/server");
|
|
36
|
+
|
|
27
37
|
// src/env.ts
|
|
28
38
|
var EXTRA_ENV = globalThis.__NAYSTACK_ENV__ || (globalThis.__NAYSTACK_ENV__ = {});
|
|
29
39
|
var getEnvValue = (key) => {
|
|
@@ -74,24 +84,19 @@ function getEnv(key, skipCheck) {
|
|
|
74
84
|
return value;
|
|
75
85
|
}
|
|
76
86
|
|
|
77
|
-
// src/auth/constants.ts
|
|
78
|
-
var REFRESH_COOKIE_NAME = "refresh";
|
|
79
|
-
var REFRESH_HEADER_NAME = "X-Refresh-Token";
|
|
80
|
-
|
|
81
87
|
// src/auth/email/token.ts
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
var import_headers = require("next/headers");
|
|
85
|
-
var import_navigation = require("next/navigation");
|
|
86
|
-
var import_server = require("next/server");
|
|
87
|
-
function generateAccessToken(id, signingKey) {
|
|
88
|
-
return (0, import_jsonwebtoken.sign)({ id }, signingKey, {
|
|
88
|
+
function generateAccessToken(id) {
|
|
89
|
+
return (0, import_jsonwebtoken.sign)({ id }, getEnv("SIGNING_KEY" /* SIGNING_KEY */), {
|
|
89
90
|
expiresIn: "2h"
|
|
90
91
|
});
|
|
91
92
|
}
|
|
92
|
-
function
|
|
93
|
-
|
|
94
|
-
|
|
93
|
+
function generateRefreshToken(id) {
|
|
94
|
+
return (0, import_jsonwebtoken.sign)({ id }, getEnv("REFRESH_KEY" /* REFRESH_KEY */));
|
|
95
|
+
}
|
|
96
|
+
function getTokenizedResponse(id) {
|
|
97
|
+
const accessToken = id ? generateAccessToken(id) : void 0;
|
|
98
|
+
const refreshToken = id ? generateRefreshToken(id) : void 0;
|
|
99
|
+
const response = import_server.NextResponse.json(accessToken, {
|
|
95
100
|
status: 200
|
|
96
101
|
});
|
|
97
102
|
if (!accessToken) {
|
|
@@ -125,7 +130,7 @@ function getUserIdFromRefreshToken(refreshToken) {
|
|
|
125
130
|
|
|
126
131
|
// src/auth/email/routes/get.ts
|
|
127
132
|
var getGetRoute = (options) => async (req) => {
|
|
128
|
-
const refresh = req.cookies.get(REFRESH_COOKIE_NAME)?.value ||
|
|
133
|
+
const refresh = req.cookies.get(REFRESH_COOKIE_NAME)?.value || void 0;
|
|
129
134
|
const userID = getUserIdFromRefreshToken(refresh);
|
|
130
135
|
if (userID) {
|
|
131
136
|
if (options.onRefresh) {
|
|
@@ -133,7 +138,7 @@ var getGetRoute = (options) => async (req) => {
|
|
|
133
138
|
await options.onRefresh?.(userID, body);
|
|
134
139
|
}
|
|
135
140
|
return getTokenizedResponse(
|
|
136
|
-
|
|
141
|
+
userID
|
|
137
142
|
);
|
|
138
143
|
}
|
|
139
144
|
return getTokenizedResponse();
|
|
@@ -8,9 +8,6 @@ import '../../types.mjs';
|
|
|
8
8
|
* @param options - SetupEmailAuthOptions
|
|
9
9
|
* @returns Async route handler
|
|
10
10
|
*/
|
|
11
|
-
declare const getGetRoute: (options: SetupEmailAuthOptions) => (req: NextRequest) => Promise<next_server.NextResponse<
|
|
12
|
-
accessToken: string | undefined;
|
|
13
|
-
refreshToken: string | undefined;
|
|
14
|
-
}>>;
|
|
11
|
+
declare const getGetRoute: (options: SetupEmailAuthOptions) => (req: NextRequest) => Promise<next_server.NextResponse<string | undefined>>;
|
|
15
12
|
|
|
16
13
|
export { getGetRoute };
|
|
@@ -8,9 +8,6 @@ import '../../types.js';
|
|
|
8
8
|
* @param options - SetupEmailAuthOptions
|
|
9
9
|
* @returns Async route handler
|
|
10
10
|
*/
|
|
11
|
-
declare const getGetRoute: (options: SetupEmailAuthOptions) => (req: NextRequest) => Promise<next_server.NextResponse<
|
|
12
|
-
accessToken: string | undefined;
|
|
13
|
-
refreshToken: string | undefined;
|
|
14
|
-
}>>;
|
|
11
|
+
declare const getGetRoute: (options: SetupEmailAuthOptions) => (req: NextRequest) => Promise<next_server.NextResponse<string | undefined>>;
|
|
15
12
|
|
|
16
13
|
export { getGetRoute };
|
|
@@ -1,3 +1,13 @@
|
|
|
1
|
+
// src/auth/constants.ts
|
|
2
|
+
var REFRESH_COOKIE_NAME = "refresh";
|
|
3
|
+
|
|
4
|
+
// src/auth/email/token.ts
|
|
5
|
+
import { compare } from "bcryptjs";
|
|
6
|
+
import { JsonWebTokenError, sign, verify } from "jsonwebtoken";
|
|
7
|
+
import { cookies } from "next/headers";
|
|
8
|
+
import { redirect } from "next/navigation";
|
|
9
|
+
import { NextResponse } from "next/server";
|
|
10
|
+
|
|
1
11
|
// src/env.ts
|
|
2
12
|
var EXTRA_ENV = globalThis.__NAYSTACK_ENV__ || (globalThis.__NAYSTACK_ENV__ = {});
|
|
3
13
|
var getEnvValue = (key) => {
|
|
@@ -48,24 +58,19 @@ function getEnv(key, skipCheck) {
|
|
|
48
58
|
return value;
|
|
49
59
|
}
|
|
50
60
|
|
|
51
|
-
// src/auth/constants.ts
|
|
52
|
-
var REFRESH_COOKIE_NAME = "refresh";
|
|
53
|
-
var REFRESH_HEADER_NAME = "X-Refresh-Token";
|
|
54
|
-
|
|
55
61
|
// src/auth/email/token.ts
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
import { cookies } from "next/headers";
|
|
59
|
-
import { redirect } from "next/navigation";
|
|
60
|
-
import { NextResponse } from "next/server";
|
|
61
|
-
function generateAccessToken(id, signingKey) {
|
|
62
|
-
return sign({ id }, signingKey, {
|
|
62
|
+
function generateAccessToken(id) {
|
|
63
|
+
return sign({ id }, getEnv("SIGNING_KEY" /* SIGNING_KEY */), {
|
|
63
64
|
expiresIn: "2h"
|
|
64
65
|
});
|
|
65
66
|
}
|
|
66
|
-
function
|
|
67
|
-
|
|
68
|
-
|
|
67
|
+
function generateRefreshToken(id) {
|
|
68
|
+
return sign({ id }, getEnv("REFRESH_KEY" /* REFRESH_KEY */));
|
|
69
|
+
}
|
|
70
|
+
function getTokenizedResponse(id) {
|
|
71
|
+
const accessToken = id ? generateAccessToken(id) : void 0;
|
|
72
|
+
const refreshToken = id ? generateRefreshToken(id) : void 0;
|
|
73
|
+
const response = NextResponse.json(accessToken, {
|
|
69
74
|
status: 200
|
|
70
75
|
});
|
|
71
76
|
if (!accessToken) {
|
|
@@ -99,7 +104,7 @@ function getUserIdFromRefreshToken(refreshToken) {
|
|
|
99
104
|
|
|
100
105
|
// src/auth/email/routes/get.ts
|
|
101
106
|
var getGetRoute = (options) => async (req) => {
|
|
102
|
-
const refresh = req.cookies.get(REFRESH_COOKIE_NAME)?.value ||
|
|
107
|
+
const refresh = req.cookies.get(REFRESH_COOKIE_NAME)?.value || void 0;
|
|
103
108
|
const userID = getUserIdFromRefreshToken(refresh);
|
|
104
109
|
if (userID) {
|
|
105
110
|
if (options.onRefresh) {
|
|
@@ -107,7 +112,7 @@ var getGetRoute = (options) => async (req) => {
|
|
|
107
112
|
await options.onRefresh?.(userID, body);
|
|
108
113
|
}
|
|
109
114
|
return getTokenizedResponse(
|
|
110
|
-
|
|
115
|
+
userID
|
|
111
116
|
);
|
|
112
117
|
}
|
|
113
118
|
return getTokenizedResponse();
|
|
@@ -25,6 +25,21 @@ __export(post_exports, {
|
|
|
25
25
|
module.exports = __toCommonJS(post_exports);
|
|
26
26
|
var import_bcryptjs2 = require("bcryptjs");
|
|
27
27
|
|
|
28
|
+
// src/auth/utils/errors.ts
|
|
29
|
+
var import_server = require("next/server");
|
|
30
|
+
function handleError(status, message, onError) {
|
|
31
|
+
const res = onError?.({ status, message });
|
|
32
|
+
if (res) return res;
|
|
33
|
+
return new import_server.NextResponse(message, { status });
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
// src/auth/email/token.ts
|
|
37
|
+
var import_bcryptjs = require("bcryptjs");
|
|
38
|
+
var import_jsonwebtoken = require("jsonwebtoken");
|
|
39
|
+
var import_headers = require("next/headers");
|
|
40
|
+
var import_navigation = require("next/navigation");
|
|
41
|
+
var import_server2 = require("next/server");
|
|
42
|
+
|
|
28
43
|
// src/env.ts
|
|
29
44
|
var EXTRA_ENV = globalThis.__NAYSTACK_ENV__ || (globalThis.__NAYSTACK_ENV__ = {});
|
|
30
45
|
var getEnvValue = (key) => {
|
|
@@ -75,36 +90,22 @@ function getEnv(key, skipCheck) {
|
|
|
75
90
|
return value;
|
|
76
91
|
}
|
|
77
92
|
|
|
78
|
-
// src/auth/utils/errors.ts
|
|
79
|
-
var import_server = require("next/server");
|
|
80
|
-
function handleError(status, message, onError) {
|
|
81
|
-
const res = onError?.({ status, message });
|
|
82
|
-
if (res) return res;
|
|
83
|
-
return new import_server.NextResponse(message, { status });
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
// src/auth/email/token.ts
|
|
87
|
-
var import_bcryptjs = require("bcryptjs");
|
|
88
|
-
var import_jsonwebtoken = require("jsonwebtoken");
|
|
89
|
-
var import_headers = require("next/headers");
|
|
90
|
-
var import_navigation = require("next/navigation");
|
|
91
|
-
var import_server2 = require("next/server");
|
|
92
|
-
|
|
93
93
|
// src/auth/constants.ts
|
|
94
94
|
var REFRESH_COOKIE_NAME = "refresh";
|
|
95
95
|
|
|
96
96
|
// src/auth/email/token.ts
|
|
97
|
-
function generateAccessToken(id
|
|
98
|
-
return (0, import_jsonwebtoken.sign)({ id },
|
|
97
|
+
function generateAccessToken(id) {
|
|
98
|
+
return (0, import_jsonwebtoken.sign)({ id }, getEnv("SIGNING_KEY" /* SIGNING_KEY */), {
|
|
99
99
|
expiresIn: "2h"
|
|
100
100
|
});
|
|
101
101
|
}
|
|
102
|
-
function generateRefreshToken(id
|
|
103
|
-
return (0, import_jsonwebtoken.sign)({ id },
|
|
102
|
+
function generateRefreshToken(id) {
|
|
103
|
+
return (0, import_jsonwebtoken.sign)({ id }, getEnv("REFRESH_KEY" /* REFRESH_KEY */));
|
|
104
104
|
}
|
|
105
|
-
function getTokenizedResponse(
|
|
106
|
-
const
|
|
107
|
-
const
|
|
105
|
+
function getTokenizedResponse(id) {
|
|
106
|
+
const accessToken = id ? generateAccessToken(id) : void 0;
|
|
107
|
+
const refreshToken = id ? generateRefreshToken(id) : void 0;
|
|
108
|
+
const response = import_server2.NextResponse.json(accessToken, {
|
|
108
109
|
status: 200
|
|
109
110
|
});
|
|
110
111
|
if (!accessToken) {
|
|
@@ -184,11 +185,7 @@ var getPostRoute = (options) => async (req) => {
|
|
|
184
185
|
if (existingUser) {
|
|
185
186
|
if (await verifyUser(existingUser, data.password)) {
|
|
186
187
|
return getTokenizedResponse(
|
|
187
|
-
|
|
188
|
-
generateRefreshToken(
|
|
189
|
-
existingUser.id,
|
|
190
|
-
getEnv("REFRESH_KEY" /* REFRESH_KEY */)
|
|
191
|
-
)
|
|
188
|
+
existingUser.id
|
|
192
189
|
);
|
|
193
190
|
}
|
|
194
191
|
return handleError(400, "A user already exists", options.onError);
|
|
@@ -203,8 +200,7 @@ var getPostRoute = (options) => async (req) => {
|
|
|
203
200
|
await options.onSignUp?.(newUser.id, data);
|
|
204
201
|
}
|
|
205
202
|
return getTokenizedResponse(
|
|
206
|
-
|
|
207
|
-
generateRefreshToken(newUser.id, getEnv("REFRESH_KEY" /* REFRESH_KEY */))
|
|
203
|
+
newUser.id
|
|
208
204
|
);
|
|
209
205
|
}
|
|
210
206
|
return getTokenizedResponse();
|
|
@@ -1,6 +1,21 @@
|
|
|
1
1
|
// src/auth/email/routes/post.ts
|
|
2
2
|
import { hash } from "bcryptjs";
|
|
3
3
|
|
|
4
|
+
// src/auth/utils/errors.ts
|
|
5
|
+
import { NextResponse } from "next/server";
|
|
6
|
+
function handleError(status, message, onError) {
|
|
7
|
+
const res = onError?.({ status, message });
|
|
8
|
+
if (res) return res;
|
|
9
|
+
return new NextResponse(message, { status });
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
// src/auth/email/token.ts
|
|
13
|
+
import { compare } from "bcryptjs";
|
|
14
|
+
import { JsonWebTokenError, sign, verify } from "jsonwebtoken";
|
|
15
|
+
import { cookies } from "next/headers";
|
|
16
|
+
import { redirect } from "next/navigation";
|
|
17
|
+
import { NextResponse as NextResponse2 } from "next/server";
|
|
18
|
+
|
|
4
19
|
// src/env.ts
|
|
5
20
|
var EXTRA_ENV = globalThis.__NAYSTACK_ENV__ || (globalThis.__NAYSTACK_ENV__ = {});
|
|
6
21
|
var getEnvValue = (key) => {
|
|
@@ -51,36 +66,22 @@ function getEnv(key, skipCheck) {
|
|
|
51
66
|
return value;
|
|
52
67
|
}
|
|
53
68
|
|
|
54
|
-
// src/auth/utils/errors.ts
|
|
55
|
-
import { NextResponse } from "next/server";
|
|
56
|
-
function handleError(status, message, onError) {
|
|
57
|
-
const res = onError?.({ status, message });
|
|
58
|
-
if (res) return res;
|
|
59
|
-
return new NextResponse(message, { status });
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
// src/auth/email/token.ts
|
|
63
|
-
import { compare } from "bcryptjs";
|
|
64
|
-
import { JsonWebTokenError, sign, verify } from "jsonwebtoken";
|
|
65
|
-
import { cookies } from "next/headers";
|
|
66
|
-
import { redirect } from "next/navigation";
|
|
67
|
-
import { NextResponse as NextResponse2 } from "next/server";
|
|
68
|
-
|
|
69
69
|
// src/auth/constants.ts
|
|
70
70
|
var REFRESH_COOKIE_NAME = "refresh";
|
|
71
71
|
|
|
72
72
|
// src/auth/email/token.ts
|
|
73
|
-
function generateAccessToken(id
|
|
74
|
-
return sign({ id },
|
|
73
|
+
function generateAccessToken(id) {
|
|
74
|
+
return sign({ id }, getEnv("SIGNING_KEY" /* SIGNING_KEY */), {
|
|
75
75
|
expiresIn: "2h"
|
|
76
76
|
});
|
|
77
77
|
}
|
|
78
|
-
function generateRefreshToken(id
|
|
79
|
-
return sign({ id },
|
|
78
|
+
function generateRefreshToken(id) {
|
|
79
|
+
return sign({ id }, getEnv("REFRESH_KEY" /* REFRESH_KEY */));
|
|
80
80
|
}
|
|
81
|
-
function getTokenizedResponse(
|
|
82
|
-
const
|
|
83
|
-
const
|
|
81
|
+
function getTokenizedResponse(id) {
|
|
82
|
+
const accessToken = id ? generateAccessToken(id) : void 0;
|
|
83
|
+
const refreshToken = id ? generateRefreshToken(id) : void 0;
|
|
84
|
+
const response = NextResponse2.json(accessToken, {
|
|
84
85
|
status: 200
|
|
85
86
|
});
|
|
86
87
|
if (!accessToken) {
|
|
@@ -160,11 +161,7 @@ var getPostRoute = (options) => async (req) => {
|
|
|
160
161
|
if (existingUser) {
|
|
161
162
|
if (await verifyUser(existingUser, data.password)) {
|
|
162
163
|
return getTokenizedResponse(
|
|
163
|
-
|
|
164
|
-
generateRefreshToken(
|
|
165
|
-
existingUser.id,
|
|
166
|
-
getEnv("REFRESH_KEY" /* REFRESH_KEY */)
|
|
167
|
-
)
|
|
164
|
+
existingUser.id
|
|
168
165
|
);
|
|
169
166
|
}
|
|
170
167
|
return handleError(400, "A user already exists", options.onError);
|
|
@@ -179,8 +176,7 @@ var getPostRoute = (options) => async (req) => {
|
|
|
179
176
|
await options.onSignUp?.(newUser.id, data);
|
|
180
177
|
}
|
|
181
178
|
return getTokenizedResponse(
|
|
182
|
-
|
|
183
|
-
generateRefreshToken(newUser.id, getEnv("REFRESH_KEY" /* REFRESH_KEY */))
|
|
179
|
+
newUser.id
|
|
184
180
|
);
|
|
185
181
|
}
|
|
186
182
|
return getTokenizedResponse();
|
|
@@ -24,6 +24,21 @@ __export(put_exports, {
|
|
|
24
24
|
});
|
|
25
25
|
module.exports = __toCommonJS(put_exports);
|
|
26
26
|
|
|
27
|
+
// src/auth/utils/errors.ts
|
|
28
|
+
var import_server = require("next/server");
|
|
29
|
+
function handleError(status, message, onError) {
|
|
30
|
+
const res = onError?.({ status, message });
|
|
31
|
+
if (res) return res;
|
|
32
|
+
return new import_server.NextResponse(message, { status });
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
// src/auth/email/token.ts
|
|
36
|
+
var import_bcryptjs = require("bcryptjs");
|
|
37
|
+
var import_jsonwebtoken = require("jsonwebtoken");
|
|
38
|
+
var import_headers = require("next/headers");
|
|
39
|
+
var import_navigation = require("next/navigation");
|
|
40
|
+
var import_server2 = require("next/server");
|
|
41
|
+
|
|
27
42
|
// src/env.ts
|
|
28
43
|
var EXTRA_ENV = globalThis.__NAYSTACK_ENV__ || (globalThis.__NAYSTACK_ENV__ = {});
|
|
29
44
|
var getEnvValue = (key) => {
|
|
@@ -74,36 +89,22 @@ function getEnv(key, skipCheck) {
|
|
|
74
89
|
return value;
|
|
75
90
|
}
|
|
76
91
|
|
|
77
|
-
// src/auth/utils/errors.ts
|
|
78
|
-
var import_server = require("next/server");
|
|
79
|
-
function handleError(status, message, onError) {
|
|
80
|
-
const res = onError?.({ status, message });
|
|
81
|
-
if (res) return res;
|
|
82
|
-
return new import_server.NextResponse(message, { status });
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
// src/auth/email/token.ts
|
|
86
|
-
var import_bcryptjs = require("bcryptjs");
|
|
87
|
-
var import_jsonwebtoken = require("jsonwebtoken");
|
|
88
|
-
var import_headers = require("next/headers");
|
|
89
|
-
var import_navigation = require("next/navigation");
|
|
90
|
-
var import_server2 = require("next/server");
|
|
91
|
-
|
|
92
92
|
// src/auth/constants.ts
|
|
93
93
|
var REFRESH_COOKIE_NAME = "refresh";
|
|
94
94
|
|
|
95
95
|
// src/auth/email/token.ts
|
|
96
|
-
function generateAccessToken(id
|
|
97
|
-
return (0, import_jsonwebtoken.sign)({ id },
|
|
96
|
+
function generateAccessToken(id) {
|
|
97
|
+
return (0, import_jsonwebtoken.sign)({ id }, getEnv("SIGNING_KEY" /* SIGNING_KEY */), {
|
|
98
98
|
expiresIn: "2h"
|
|
99
99
|
});
|
|
100
100
|
}
|
|
101
|
-
function generateRefreshToken(id
|
|
102
|
-
return (0, import_jsonwebtoken.sign)({ id },
|
|
101
|
+
function generateRefreshToken(id) {
|
|
102
|
+
return (0, import_jsonwebtoken.sign)({ id }, getEnv("REFRESH_KEY" /* REFRESH_KEY */));
|
|
103
103
|
}
|
|
104
|
-
function getTokenizedResponse(
|
|
105
|
-
const
|
|
106
|
-
const
|
|
104
|
+
function getTokenizedResponse(id) {
|
|
105
|
+
const accessToken = id ? generateAccessToken(id) : void 0;
|
|
106
|
+
const refreshToken = id ? generateRefreshToken(id) : void 0;
|
|
107
|
+
const response = import_server2.NextResponse.json(accessToken, {
|
|
107
108
|
status: 200
|
|
108
109
|
});
|
|
109
110
|
if (!accessToken) {
|
|
@@ -187,8 +188,7 @@ var getPutRoute = (options) => async (req) => {
|
|
|
187
188
|
await options.onLogin?.(user.id, data);
|
|
188
189
|
}
|
|
189
190
|
return getTokenizedResponse(
|
|
190
|
-
|
|
191
|
-
generateRefreshToken(user.id, getEnv("REFRESH_KEY" /* REFRESH_KEY */))
|
|
191
|
+
user.id
|
|
192
192
|
);
|
|
193
193
|
}
|
|
194
194
|
return handleError(403, "Invalid password", options.onError);
|
|
@@ -1,3 +1,18 @@
|
|
|
1
|
+
// src/auth/utils/errors.ts
|
|
2
|
+
import { NextResponse } from "next/server";
|
|
3
|
+
function handleError(status, message, onError) {
|
|
4
|
+
const res = onError?.({ status, message });
|
|
5
|
+
if (res) return res;
|
|
6
|
+
return new NextResponse(message, { status });
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
// src/auth/email/token.ts
|
|
10
|
+
import { compare } from "bcryptjs";
|
|
11
|
+
import { JsonWebTokenError, sign, verify } from "jsonwebtoken";
|
|
12
|
+
import { cookies } from "next/headers";
|
|
13
|
+
import { redirect } from "next/navigation";
|
|
14
|
+
import { NextResponse as NextResponse2 } from "next/server";
|
|
15
|
+
|
|
1
16
|
// src/env.ts
|
|
2
17
|
var EXTRA_ENV = globalThis.__NAYSTACK_ENV__ || (globalThis.__NAYSTACK_ENV__ = {});
|
|
3
18
|
var getEnvValue = (key) => {
|
|
@@ -48,36 +63,22 @@ function getEnv(key, skipCheck) {
|
|
|
48
63
|
return value;
|
|
49
64
|
}
|
|
50
65
|
|
|
51
|
-
// src/auth/utils/errors.ts
|
|
52
|
-
import { NextResponse } from "next/server";
|
|
53
|
-
function handleError(status, message, onError) {
|
|
54
|
-
const res = onError?.({ status, message });
|
|
55
|
-
if (res) return res;
|
|
56
|
-
return new NextResponse(message, { status });
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
// src/auth/email/token.ts
|
|
60
|
-
import { compare } from "bcryptjs";
|
|
61
|
-
import { JsonWebTokenError, sign, verify } from "jsonwebtoken";
|
|
62
|
-
import { cookies } from "next/headers";
|
|
63
|
-
import { redirect } from "next/navigation";
|
|
64
|
-
import { NextResponse as NextResponse2 } from "next/server";
|
|
65
|
-
|
|
66
66
|
// src/auth/constants.ts
|
|
67
67
|
var REFRESH_COOKIE_NAME = "refresh";
|
|
68
68
|
|
|
69
69
|
// src/auth/email/token.ts
|
|
70
|
-
function generateAccessToken(id
|
|
71
|
-
return sign({ id },
|
|
70
|
+
function generateAccessToken(id) {
|
|
71
|
+
return sign({ id }, getEnv("SIGNING_KEY" /* SIGNING_KEY */), {
|
|
72
72
|
expiresIn: "2h"
|
|
73
73
|
});
|
|
74
74
|
}
|
|
75
|
-
function generateRefreshToken(id
|
|
76
|
-
return sign({ id },
|
|
75
|
+
function generateRefreshToken(id) {
|
|
76
|
+
return sign({ id }, getEnv("REFRESH_KEY" /* REFRESH_KEY */));
|
|
77
77
|
}
|
|
78
|
-
function getTokenizedResponse(
|
|
79
|
-
const
|
|
80
|
-
const
|
|
78
|
+
function getTokenizedResponse(id) {
|
|
79
|
+
const accessToken = id ? generateAccessToken(id) : void 0;
|
|
80
|
+
const refreshToken = id ? generateRefreshToken(id) : void 0;
|
|
81
|
+
const response = NextResponse2.json(accessToken, {
|
|
81
82
|
status: 200
|
|
82
83
|
});
|
|
83
84
|
if (!accessToken) {
|
|
@@ -161,8 +162,7 @@ var getPutRoute = (options) => async (req) => {
|
|
|
161
162
|
await options.onLogin?.(user.id, data);
|
|
162
163
|
}
|
|
163
164
|
return getTokenizedResponse(
|
|
164
|
-
|
|
165
|
-
generateRefreshToken(user.id, getEnv("REFRESH_KEY" /* REFRESH_KEY */))
|
|
165
|
+
user.id
|
|
166
166
|
);
|
|
167
167
|
}
|
|
168
168
|
return handleError(403, "Invalid password", options.onError);
|
|
@@ -89,17 +89,18 @@ function getEnv(key, skipCheck) {
|
|
|
89
89
|
var REFRESH_COOKIE_NAME = "refresh";
|
|
90
90
|
|
|
91
91
|
// src/auth/email/token.ts
|
|
92
|
-
function generateAccessToken(id
|
|
93
|
-
return (0, import_jsonwebtoken.sign)({ id },
|
|
92
|
+
function generateAccessToken(id) {
|
|
93
|
+
return (0, import_jsonwebtoken.sign)({ id }, getEnv("SIGNING_KEY" /* SIGNING_KEY */), {
|
|
94
94
|
expiresIn: "2h"
|
|
95
95
|
});
|
|
96
96
|
}
|
|
97
|
-
function generateRefreshToken(id
|
|
98
|
-
return (0, import_jsonwebtoken.sign)({ id },
|
|
97
|
+
function generateRefreshToken(id) {
|
|
98
|
+
return (0, import_jsonwebtoken.sign)({ id }, getEnv("REFRESH_KEY" /* REFRESH_KEY */));
|
|
99
99
|
}
|
|
100
|
-
function getTokenizedResponse(
|
|
101
|
-
const
|
|
102
|
-
const
|
|
100
|
+
function getTokenizedResponse(id) {
|
|
101
|
+
const accessToken = id ? generateAccessToken(id) : void 0;
|
|
102
|
+
const refreshToken = id ? generateRefreshToken(id) : void 0;
|
|
103
|
+
const response = import_server.NextResponse.json(accessToken, {
|
|
103
104
|
status: 200
|
|
104
105
|
});
|
|
105
106
|
if (!accessToken) {
|
|
@@ -4,19 +4,17 @@ import { UserOutput } from '../types.mjs';
|
|
|
4
4
|
/**
|
|
5
5
|
* Generates a JWT access token for the user (2-hour expiry).
|
|
6
6
|
* @param id - User id to encode in the JWT payload.
|
|
7
|
-
* @param signingKey - Secret used to sign the token (typically `SIGNING_KEY` env var).
|
|
8
7
|
* @returns Signed JWT string.
|
|
9
8
|
* @category Auth
|
|
10
9
|
*/
|
|
11
|
-
declare function generateAccessToken(id: number
|
|
10
|
+
declare function generateAccessToken(id: number): string;
|
|
12
11
|
/**
|
|
13
12
|
* Generates a JWT refresh token for the user (no expiry — persisted in httpOnly cookie).
|
|
14
13
|
* @param id - User id to encode in the JWT payload.
|
|
15
|
-
* @param refreshKey - Secret used to sign the token (typically `REFRESH_KEY` env var).
|
|
16
14
|
* @returns Signed JWT string.
|
|
17
15
|
* @category Auth
|
|
18
16
|
*/
|
|
19
|
-
declare function generateRefreshToken(id: number
|
|
17
|
+
declare function generateRefreshToken(id: number): string;
|
|
20
18
|
/**
|
|
21
19
|
* Builds a NextResponse with access/refresh tokens in the JSON body and sets the refresh cookie.
|
|
22
20
|
*
|
|
@@ -24,15 +22,11 @@ declare function generateRefreshToken(id: number, refreshKey: string): string;
|
|
|
24
22
|
* - If `refreshToken` is empty string, the cookie expires immediately (logout).
|
|
25
23
|
* - If `refreshToken` is a valid string, the cookie is set for 1 year.
|
|
26
24
|
*
|
|
27
|
-
* @param
|
|
28
|
-
* @param refreshToken - Optional refresh JWT to set as httpOnly cookie. Empty string clears the cookie.
|
|
25
|
+
* @param id - Optional user id.
|
|
29
26
|
* @returns NextResponse with JSON body and Set-Cookie headers.
|
|
30
27
|
* @category Auth
|
|
31
28
|
*/
|
|
32
|
-
declare function getTokenizedResponse(
|
|
33
|
-
accessToken: string | undefined;
|
|
34
|
-
refreshToken: string | undefined;
|
|
35
|
-
}>;
|
|
29
|
+
declare function getTokenizedResponse(id?: number): NextResponse<string | undefined>;
|
|
36
30
|
/**
|
|
37
31
|
* Decodes a refresh token and returns the user id from the JWT payload.
|
|
38
32
|
* @param refreshToken - JWT refresh token string.
|