naystack 1.4.16 → 1.4.21
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/email/client.cjs.js +69 -12
- package/dist/auth/email/client.esm.js +69 -12
- package/dist/auth/email/index.cjs.js +74 -15
- package/dist/auth/email/index.esm.js +74 -15
- package/dist/auth/email/routes/delete.cjs.js +56 -4
- package/dist/auth/email/routes/delete.esm.js +56 -4
- package/dist/auth/email/routes/get.cjs.js +54 -2
- package/dist/auth/email/routes/get.esm.js +54 -2
- package/dist/auth/email/routes/post.cjs.js +59 -6
- package/dist/auth/email/routes/post.esm.js +59 -6
- package/dist/auth/email/routes/put.cjs.js +54 -4
- package/dist/auth/email/routes/put.esm.js +54 -4
- package/dist/auth/email/token.cjs.js +51 -2
- package/dist/auth/email/token.esm.js +51 -2
- package/dist/auth/email/types.d.mts +1 -7
- package/dist/auth/email/types.d.ts +1 -7
- package/dist/auth/email/utils.cjs.js +58 -5
- package/dist/auth/email/utils.d.mts +2 -2
- package/dist/auth/email/utils.d.ts +2 -2
- package/dist/auth/email/utils.esm.js +58 -5
- package/dist/auth/google/get.cjs.js +57 -7
- package/dist/auth/google/get.d.mts +1 -3
- package/dist/auth/google/get.d.ts +1 -3
- package/dist/auth/google/get.esm.js +57 -7
- package/dist/auth/google/index.cjs.js +57 -7
- package/dist/auth/google/index.d.mts +0 -5
- package/dist/auth/google/index.d.ts +0 -5
- package/dist/auth/google/index.esm.js +57 -7
- package/dist/auth/index.cjs.js +89 -31
- package/dist/auth/index.esm.js +89 -31
- package/dist/auth/instagram/client.cjs.js +54 -1
- package/dist/auth/instagram/client.d.mts +1 -1
- package/dist/auth/instagram/client.d.ts +1 -1
- package/dist/auth/instagram/client.esm.js +52 -1
- package/dist/auth/instagram/index.cjs.js +58 -9
- package/dist/auth/instagram/index.d.mts +0 -2
- package/dist/auth/instagram/index.d.ts +0 -2
- package/dist/auth/instagram/index.esm.js +58 -9
- package/dist/auth/instagram/route.cjs.js +58 -9
- package/dist/auth/instagram/route.d.mts +1 -1
- package/dist/auth/instagram/route.d.ts +1 -1
- package/dist/auth/instagram/route.esm.js +58 -9
- package/dist/auth/instagram/utils.cjs.js +52 -1
- package/dist/auth/instagram/utils.esm.js +50 -1
- package/dist/client/index.cjs.js +50 -1
- package/dist/client/index.esm.js +50 -1
- package/dist/client/seo.cjs.js +52 -1
- package/dist/client/seo.esm.js +50 -1
- package/dist/env.cjs.js +101 -0
- package/dist/env.d.mts +24 -0
- package/dist/env.d.ts +24 -0
- package/dist/env.esm.js +74 -0
- package/dist/file/client.cjs.js +52 -1
- package/dist/file/client.esm.js +52 -1
- package/dist/file/index.cjs.js +82 -28
- package/dist/file/index.d.mts +0 -2
- package/dist/file/index.d.ts +0 -2
- package/dist/file/index.esm.js +82 -28
- package/dist/file/put.cjs.js +65 -11
- package/dist/file/put.d.mts +0 -2
- package/dist/file/put.d.ts +0 -2
- package/dist/file/put.esm.js +65 -11
- package/dist/file/setup.cjs.js +82 -28
- package/dist/file/setup.d.mts +0 -7
- package/dist/file/setup.d.ts +0 -7
- package/dist/file/setup.esm.js +82 -28
- package/dist/file/utils.cjs.js +70 -17
- package/dist/file/utils.d.mts +6 -10
- package/dist/file/utils.d.ts +6 -10
- package/dist/file/utils.esm.js +70 -17
- package/dist/graphql/client.cjs.js +57 -3
- package/dist/graphql/client.d.mts +1 -1
- package/dist/graphql/client.d.ts +1 -1
- package/dist/graphql/client.esm.js +57 -3
- package/dist/graphql/index.cjs.js +107 -3
- package/dist/graphql/index.d.mts +1 -0
- package/dist/graphql/index.d.ts +1 -0
- package/dist/graphql/index.esm.js +107 -3
- package/dist/graphql/init.cjs.js +53 -2
- package/dist/graphql/init.esm.js +53 -2
- package/dist/graphql/server.cjs.js +52 -1
- package/dist/graphql/server.esm.js +52 -1
- package/dist/graphql/utils.cjs.js +54 -1
- package/dist/graphql/utils.d.mts +10 -3
- package/dist/graphql/utils.d.ts +10 -3
- package/dist/graphql/utils.esm.js +54 -1
- package/package.json +1 -1
package/dist/file/setup.cjs.js
CHANGED
|
@@ -38,6 +38,55 @@ var import_headers = require("next/headers");
|
|
|
38
38
|
var import_navigation = require("next/navigation");
|
|
39
39
|
var import_server = require("next/server");
|
|
40
40
|
|
|
41
|
+
// src/env.ts
|
|
42
|
+
var getEnvValue = (key) => {
|
|
43
|
+
switch (key) {
|
|
44
|
+
case "NEXT_PUBLIC_GRAPHQL_ENDPOINT" /* NEXT_PUBLIC_GRAPHQL_ENDPOINT */:
|
|
45
|
+
return process.env.NEXT_PUBLIC_GRAPHQL_ENDPOINT;
|
|
46
|
+
case "NEXT_PUBLIC_EMAIL_AUTH_ENDPOINT" /* NEXT_PUBLIC_EMAIL_AUTH_ENDPOINT */:
|
|
47
|
+
return process.env.NEXT_PUBLIC_EMAIL_AUTH_ENDPOINT;
|
|
48
|
+
case "NEXT_PUBLIC_GOOGLE_AUTH_ENDPOINT" /* NEXT_PUBLIC_GOOGLE_AUTH_ENDPOINT */:
|
|
49
|
+
return process.env.NEXT_PUBLIC_GOOGLE_AUTH_ENDPOINT;
|
|
50
|
+
case "NEXT_PUBLIC_INSTAGRAM_AUTH_ENDPOINT" /* NEXT_PUBLIC_INSTAGRAM_AUTH_ENDPOINT */:
|
|
51
|
+
return process.env.NEXT_PUBLIC_INSTAGRAM_AUTH_ENDPOINT;
|
|
52
|
+
case "NEXT_PUBLIC_FILE_ENDPOINT" /* NEXT_PUBLIC_FILE_ENDPOINT */:
|
|
53
|
+
return process.env.NEXT_PUBLIC_FILE_ENDPOINT;
|
|
54
|
+
case "NEXT_PUBLIC_BASE_URL" /* NEXT_PUBLIC_BASE_URL */:
|
|
55
|
+
return process.env.NEXT_PUBLIC_BASE_URL;
|
|
56
|
+
case "REFRESH_KEY" /* REFRESH_KEY */:
|
|
57
|
+
return process.env.REFRESH_KEY;
|
|
58
|
+
case "SIGNING_KEY" /* SIGNING_KEY */:
|
|
59
|
+
return process.env.SIGNING_KEY;
|
|
60
|
+
case "INSTAGRAM_CLIENT_SECRET" /* INSTAGRAM_CLIENT_SECRET */:
|
|
61
|
+
return process.env.INSTAGRAM_CLIENT_SECRET;
|
|
62
|
+
case "INSTAGRAM_CLIENT_ID" /* INSTAGRAM_CLIENT_ID */:
|
|
63
|
+
return process.env.INSTAGRAM_CLIENT_ID;
|
|
64
|
+
case "GOOGLE_CLIENT_SECRET" /* GOOGLE_CLIENT_SECRET */:
|
|
65
|
+
return process.env.GOOGLE_CLIENT_SECRET;
|
|
66
|
+
case "GOOGLE_CLIENT_ID" /* GOOGLE_CLIENT_ID */:
|
|
67
|
+
return process.env.GOOGLE_CLIENT_ID;
|
|
68
|
+
case "TURNSTILE_KEY" /* TURNSTILE_KEY */:
|
|
69
|
+
return process.env.TURNSTILE_KEY;
|
|
70
|
+
case "AWS_ACCESS_KEY_ID" /* AWS_ACCESS_KEY_ID */:
|
|
71
|
+
return process.env.AWS_ACCESS_KEY_ID;
|
|
72
|
+
case "AWS_ACCESS_KEY_SECRET" /* AWS_ACCESS_KEY_SECRET */:
|
|
73
|
+
return process.env.AWS_ACCESS_KEY_SECRET;
|
|
74
|
+
case "AWS_REGION" /* AWS_REGION */:
|
|
75
|
+
return process.env.AWS_REGION;
|
|
76
|
+
case "AWS_BUCKET" /* AWS_BUCKET */:
|
|
77
|
+
return process.env.AWS_BUCKET;
|
|
78
|
+
case "NODE_ENV" /* NODE_ENV */:
|
|
79
|
+
return process.env.NODE_ENV;
|
|
80
|
+
default:
|
|
81
|
+
return process.env[key];
|
|
82
|
+
}
|
|
83
|
+
};
|
|
84
|
+
function getEnv(key, skipCheck) {
|
|
85
|
+
const value = getEnvValue(key);
|
|
86
|
+
if (!skipCheck && !value) throw new Error(`${key} is not defined`);
|
|
87
|
+
return value;
|
|
88
|
+
}
|
|
89
|
+
|
|
41
90
|
// src/auth/constants.ts
|
|
42
91
|
var REFRESH_COOKIE_NAME = "refresh";
|
|
43
92
|
|
|
@@ -59,17 +108,20 @@ function getUserIdFromRefreshToken(refreshKey, refreshToken) {
|
|
|
59
108
|
var import_server2 = require("next/server");
|
|
60
109
|
|
|
61
110
|
// src/auth/email/utils.ts
|
|
62
|
-
var getContext = (
|
|
111
|
+
var getContext = (req) => {
|
|
63
112
|
const bearer = req.headers.get("authorization");
|
|
64
113
|
if (!bearer) {
|
|
65
114
|
const refresh = req.cookies.get(REFRESH_COOKIE_NAME)?.value;
|
|
66
|
-
const userId = getUserIdFromRefreshToken(
|
|
115
|
+
const userId = getUserIdFromRefreshToken(
|
|
116
|
+
getEnv("REFRESH_KEY" /* REFRESH_KEY */),
|
|
117
|
+
refresh
|
|
118
|
+
);
|
|
67
119
|
if (userId) return { userId, isRefreshID: true };
|
|
68
120
|
return { userId: null };
|
|
69
121
|
}
|
|
70
122
|
const token = bearer.slice(7);
|
|
71
123
|
try {
|
|
72
|
-
const res = (0, import_jsonwebtoken2.verify)(token,
|
|
124
|
+
const res = (0, import_jsonwebtoken2.verify)(token, getEnv("SIGNING_KEY" /* SIGNING_KEY */));
|
|
73
125
|
if (typeof res === "string") {
|
|
74
126
|
return { userId: null };
|
|
75
127
|
}
|
|
@@ -84,29 +136,31 @@ var getContext = (keys, req) => {
|
|
|
84
136
|
// src/file/utils.ts
|
|
85
137
|
var import_client_s3 = require("@aws-sdk/client-s3");
|
|
86
138
|
var import_s3_request_presigner = require("@aws-sdk/s3-request-presigner");
|
|
87
|
-
var getS3Client = (
|
|
88
|
-
region:
|
|
139
|
+
var getS3Client = () => new import_client_s3.S3Client({
|
|
140
|
+
region: getEnv("AWS_REGION" /* AWS_REGION */),
|
|
89
141
|
credentials: {
|
|
90
|
-
accessKeyId:
|
|
91
|
-
secretAccessKey:
|
|
142
|
+
accessKeyId: getEnv("AWS_ACCESS_KEY_ID" /* AWS_ACCESS_KEY_ID */),
|
|
143
|
+
secretAccessKey: getEnv("AWS_ACCESS_KEY_SECRET" /* AWS_ACCESS_KEY_SECRET */)
|
|
92
144
|
}
|
|
93
145
|
});
|
|
94
|
-
var
|
|
146
|
+
var URL_PREFIX = `https://${getEnv("AWS_BUCKET" /* AWS_BUCKET */)}.s3.${getEnv(
|
|
147
|
+
"AWS_REGION" /* AWS_REGION */
|
|
148
|
+
)}.amazonaws.com/`;
|
|
95
149
|
function getKey(keys) {
|
|
96
150
|
return typeof keys === "string" ? keys : keys.join("/");
|
|
97
151
|
}
|
|
98
|
-
var getUploadURL = (client
|
|
152
|
+
var getUploadURL = (client) => (keys) => {
|
|
99
153
|
const command = new import_client_s3.PutObjectCommand({
|
|
100
|
-
Bucket,
|
|
154
|
+
Bucket: getEnv("AWS_BUCKET" /* AWS_BUCKET */),
|
|
101
155
|
Key: getKey(keys),
|
|
102
156
|
ACL: "public-read"
|
|
103
157
|
});
|
|
104
158
|
return (0, import_s3_request_presigner.getSignedUrl)(client, command, { expiresIn: 300 });
|
|
105
159
|
};
|
|
106
|
-
var getDownloadURL = (
|
|
107
|
-
return `${
|
|
160
|
+
var getDownloadURL = (keys) => {
|
|
161
|
+
return `${URL_PREFIX}${getKey(keys)}`;
|
|
108
162
|
};
|
|
109
|
-
var uploadFile = (client
|
|
163
|
+
var uploadFile = (client) => async (keys, {
|
|
110
164
|
url,
|
|
111
165
|
blob
|
|
112
166
|
}) => {
|
|
@@ -114,18 +168,18 @@ var uploadFile = (client, options) => async (keys, {
|
|
|
114
168
|
const fileBlob = blob || await fetch(url).then((file) => file.blob());
|
|
115
169
|
if (fileBlob) {
|
|
116
170
|
const key = getKey(keys);
|
|
117
|
-
await uploadBlob(client
|
|
118
|
-
return getDownloadURL(
|
|
171
|
+
await uploadBlob(client)(fileBlob, key);
|
|
172
|
+
return getDownloadURL(key);
|
|
119
173
|
}
|
|
120
174
|
return null;
|
|
121
175
|
};
|
|
122
|
-
var deleteFile = (client
|
|
123
|
-
const key = url.split(
|
|
176
|
+
var deleteFile = (client) => async (url) => {
|
|
177
|
+
const key = url.split(URL_PREFIX)[1];
|
|
124
178
|
if (key) {
|
|
125
179
|
try {
|
|
126
180
|
await client.send(
|
|
127
181
|
new import_client_s3.DeleteObjectCommand({
|
|
128
|
-
Bucket:
|
|
182
|
+
Bucket: getEnv("AWS_BUCKET" /* AWS_BUCKET */),
|
|
129
183
|
Key: key
|
|
130
184
|
})
|
|
131
185
|
);
|
|
@@ -136,11 +190,11 @@ var deleteFile = (client, options) => async (url) => {
|
|
|
136
190
|
}
|
|
137
191
|
return false;
|
|
138
192
|
};
|
|
139
|
-
var uploadBlob = (client
|
|
193
|
+
var uploadBlob = (client) => async (file, key) => {
|
|
140
194
|
const fileBuffer = await file.arrayBuffer();
|
|
141
195
|
return client.send(
|
|
142
196
|
new import_client_s3.PutObjectCommand({
|
|
143
|
-
Bucket,
|
|
197
|
+
Bucket: getEnv("AWS_BUCKET" /* AWS_BUCKET */),
|
|
144
198
|
Key: key,
|
|
145
199
|
ACL: "public-read",
|
|
146
200
|
Body: Buffer.from(fileBuffer),
|
|
@@ -152,7 +206,7 @@ var uploadBlob = (client, Bucket) => async (file, key) => {
|
|
|
152
206
|
|
|
153
207
|
// src/file/put.ts
|
|
154
208
|
var getFileUploadPutRoute = (options, client) => async (req) => {
|
|
155
|
-
const ctx = getContext(
|
|
209
|
+
const ctx = getContext(req);
|
|
156
210
|
if (!ctx?.userId || ctx.isRefreshID)
|
|
157
211
|
return import_server3.NextResponse.json({ error: "unauthorized" }, { status: 401 });
|
|
158
212
|
const formData = await req.formData();
|
|
@@ -165,8 +219,8 @@ var getFileUploadPutRoute = (options, client) => async (req) => {
|
|
|
165
219
|
data: typeof data === "string" ? JSON.parse(data) : void 0
|
|
166
220
|
};
|
|
167
221
|
const fileKey = options.getKey ? await options.getKey(inputData) : (0, import_uuid.v4)();
|
|
168
|
-
const url = getDownloadURL(
|
|
169
|
-
await uploadBlob(client
|
|
222
|
+
const url = getDownloadURL(fileKey);
|
|
223
|
+
await uploadBlob(client)(file, fileKey);
|
|
170
224
|
const onUploadResponse = await options.onUpload({
|
|
171
225
|
...inputData,
|
|
172
226
|
url
|
|
@@ -179,13 +233,13 @@ var getFileUploadPutRoute = (options, client) => async (req) => {
|
|
|
179
233
|
|
|
180
234
|
// src/file/setup.ts
|
|
181
235
|
function setupFileUpload(options) {
|
|
182
|
-
const client = getS3Client(
|
|
236
|
+
const client = getS3Client();
|
|
183
237
|
return {
|
|
184
238
|
PUT: getFileUploadPutRoute(options, client),
|
|
185
|
-
uploadFile: uploadFile(client
|
|
186
|
-
deleteFile: deleteFile(client
|
|
187
|
-
getUploadURL: getUploadURL(client
|
|
188
|
-
getDownloadURL
|
|
239
|
+
uploadFile: uploadFile(client),
|
|
240
|
+
deleteFile: deleteFile(client),
|
|
241
|
+
getUploadURL: getUploadURL(client),
|
|
242
|
+
getDownloadURL
|
|
189
243
|
};
|
|
190
244
|
}
|
|
191
245
|
// Annotate the CommonJS export names for ESM import in node:
|
package/dist/file/setup.d.mts
CHANGED
|
@@ -1,13 +1,6 @@
|
|
|
1
1
|
import * as next_server from 'next/server';
|
|
2
|
-
import { AuthKeys } from '../auth/email/types.mjs';
|
|
3
|
-
import '../auth/types.mjs';
|
|
4
2
|
|
|
5
3
|
interface SetupFileUploadOptions {
|
|
6
|
-
keys: AuthKeys;
|
|
7
|
-
region: string;
|
|
8
|
-
bucket: string;
|
|
9
|
-
awsSecret: string;
|
|
10
|
-
awsKey: string;
|
|
11
4
|
getKey?: (data: {
|
|
12
5
|
type: string;
|
|
13
6
|
userId: number;
|
package/dist/file/setup.d.ts
CHANGED
|
@@ -1,13 +1,6 @@
|
|
|
1
1
|
import * as next_server from 'next/server';
|
|
2
|
-
import { AuthKeys } from '../auth/email/types.js';
|
|
3
|
-
import '../auth/types.js';
|
|
4
2
|
|
|
5
3
|
interface SetupFileUploadOptions {
|
|
6
|
-
keys: AuthKeys;
|
|
7
|
-
region: string;
|
|
8
|
-
bucket: string;
|
|
9
|
-
awsSecret: string;
|
|
10
|
-
awsKey: string;
|
|
11
4
|
getKey?: (data: {
|
|
12
5
|
type: string;
|
|
13
6
|
userId: number;
|
package/dist/file/setup.esm.js
CHANGED
|
@@ -12,6 +12,55 @@ import { cookies } from "next/headers";
|
|
|
12
12
|
import { redirect } from "next/navigation";
|
|
13
13
|
import { NextResponse } from "next/server";
|
|
14
14
|
|
|
15
|
+
// src/env.ts
|
|
16
|
+
var getEnvValue = (key) => {
|
|
17
|
+
switch (key) {
|
|
18
|
+
case "NEXT_PUBLIC_GRAPHQL_ENDPOINT" /* NEXT_PUBLIC_GRAPHQL_ENDPOINT */:
|
|
19
|
+
return process.env.NEXT_PUBLIC_GRAPHQL_ENDPOINT;
|
|
20
|
+
case "NEXT_PUBLIC_EMAIL_AUTH_ENDPOINT" /* NEXT_PUBLIC_EMAIL_AUTH_ENDPOINT */:
|
|
21
|
+
return process.env.NEXT_PUBLIC_EMAIL_AUTH_ENDPOINT;
|
|
22
|
+
case "NEXT_PUBLIC_GOOGLE_AUTH_ENDPOINT" /* NEXT_PUBLIC_GOOGLE_AUTH_ENDPOINT */:
|
|
23
|
+
return process.env.NEXT_PUBLIC_GOOGLE_AUTH_ENDPOINT;
|
|
24
|
+
case "NEXT_PUBLIC_INSTAGRAM_AUTH_ENDPOINT" /* NEXT_PUBLIC_INSTAGRAM_AUTH_ENDPOINT */:
|
|
25
|
+
return process.env.NEXT_PUBLIC_INSTAGRAM_AUTH_ENDPOINT;
|
|
26
|
+
case "NEXT_PUBLIC_FILE_ENDPOINT" /* NEXT_PUBLIC_FILE_ENDPOINT */:
|
|
27
|
+
return process.env.NEXT_PUBLIC_FILE_ENDPOINT;
|
|
28
|
+
case "NEXT_PUBLIC_BASE_URL" /* NEXT_PUBLIC_BASE_URL */:
|
|
29
|
+
return process.env.NEXT_PUBLIC_BASE_URL;
|
|
30
|
+
case "REFRESH_KEY" /* REFRESH_KEY */:
|
|
31
|
+
return process.env.REFRESH_KEY;
|
|
32
|
+
case "SIGNING_KEY" /* SIGNING_KEY */:
|
|
33
|
+
return process.env.SIGNING_KEY;
|
|
34
|
+
case "INSTAGRAM_CLIENT_SECRET" /* INSTAGRAM_CLIENT_SECRET */:
|
|
35
|
+
return process.env.INSTAGRAM_CLIENT_SECRET;
|
|
36
|
+
case "INSTAGRAM_CLIENT_ID" /* INSTAGRAM_CLIENT_ID */:
|
|
37
|
+
return process.env.INSTAGRAM_CLIENT_ID;
|
|
38
|
+
case "GOOGLE_CLIENT_SECRET" /* GOOGLE_CLIENT_SECRET */:
|
|
39
|
+
return process.env.GOOGLE_CLIENT_SECRET;
|
|
40
|
+
case "GOOGLE_CLIENT_ID" /* GOOGLE_CLIENT_ID */:
|
|
41
|
+
return process.env.GOOGLE_CLIENT_ID;
|
|
42
|
+
case "TURNSTILE_KEY" /* TURNSTILE_KEY */:
|
|
43
|
+
return process.env.TURNSTILE_KEY;
|
|
44
|
+
case "AWS_ACCESS_KEY_ID" /* AWS_ACCESS_KEY_ID */:
|
|
45
|
+
return process.env.AWS_ACCESS_KEY_ID;
|
|
46
|
+
case "AWS_ACCESS_KEY_SECRET" /* AWS_ACCESS_KEY_SECRET */:
|
|
47
|
+
return process.env.AWS_ACCESS_KEY_SECRET;
|
|
48
|
+
case "AWS_REGION" /* AWS_REGION */:
|
|
49
|
+
return process.env.AWS_REGION;
|
|
50
|
+
case "AWS_BUCKET" /* AWS_BUCKET */:
|
|
51
|
+
return process.env.AWS_BUCKET;
|
|
52
|
+
case "NODE_ENV" /* NODE_ENV */:
|
|
53
|
+
return process.env.NODE_ENV;
|
|
54
|
+
default:
|
|
55
|
+
return process.env[key];
|
|
56
|
+
}
|
|
57
|
+
};
|
|
58
|
+
function getEnv(key, skipCheck) {
|
|
59
|
+
const value = getEnvValue(key);
|
|
60
|
+
if (!skipCheck && !value) throw new Error(`${key} is not defined`);
|
|
61
|
+
return value;
|
|
62
|
+
}
|
|
63
|
+
|
|
15
64
|
// src/auth/constants.ts
|
|
16
65
|
var REFRESH_COOKIE_NAME = "refresh";
|
|
17
66
|
|
|
@@ -33,17 +82,20 @@ function getUserIdFromRefreshToken(refreshKey, refreshToken) {
|
|
|
33
82
|
import { NextResponse as NextResponse2 } from "next/server";
|
|
34
83
|
|
|
35
84
|
// src/auth/email/utils.ts
|
|
36
|
-
var getContext = (
|
|
85
|
+
var getContext = (req) => {
|
|
37
86
|
const bearer = req.headers.get("authorization");
|
|
38
87
|
if (!bearer) {
|
|
39
88
|
const refresh = req.cookies.get(REFRESH_COOKIE_NAME)?.value;
|
|
40
|
-
const userId = getUserIdFromRefreshToken(
|
|
89
|
+
const userId = getUserIdFromRefreshToken(
|
|
90
|
+
getEnv("REFRESH_KEY" /* REFRESH_KEY */),
|
|
91
|
+
refresh
|
|
92
|
+
);
|
|
41
93
|
if (userId) return { userId, isRefreshID: true };
|
|
42
94
|
return { userId: null };
|
|
43
95
|
}
|
|
44
96
|
const token = bearer.slice(7);
|
|
45
97
|
try {
|
|
46
|
-
const res = verify2(token,
|
|
98
|
+
const res = verify2(token, getEnv("SIGNING_KEY" /* SIGNING_KEY */));
|
|
47
99
|
if (typeof res === "string") {
|
|
48
100
|
return { userId: null };
|
|
49
101
|
}
|
|
@@ -62,29 +114,31 @@ import {
|
|
|
62
114
|
S3Client
|
|
63
115
|
} from "@aws-sdk/client-s3";
|
|
64
116
|
import { getSignedUrl } from "@aws-sdk/s3-request-presigner";
|
|
65
|
-
var getS3Client = (
|
|
66
|
-
region:
|
|
117
|
+
var getS3Client = () => new S3Client({
|
|
118
|
+
region: getEnv("AWS_REGION" /* AWS_REGION */),
|
|
67
119
|
credentials: {
|
|
68
|
-
accessKeyId:
|
|
69
|
-
secretAccessKey:
|
|
120
|
+
accessKeyId: getEnv("AWS_ACCESS_KEY_ID" /* AWS_ACCESS_KEY_ID */),
|
|
121
|
+
secretAccessKey: getEnv("AWS_ACCESS_KEY_SECRET" /* AWS_ACCESS_KEY_SECRET */)
|
|
70
122
|
}
|
|
71
123
|
});
|
|
72
|
-
var
|
|
124
|
+
var URL_PREFIX = `https://${getEnv("AWS_BUCKET" /* AWS_BUCKET */)}.s3.${getEnv(
|
|
125
|
+
"AWS_REGION" /* AWS_REGION */
|
|
126
|
+
)}.amazonaws.com/`;
|
|
73
127
|
function getKey(keys) {
|
|
74
128
|
return typeof keys === "string" ? keys : keys.join("/");
|
|
75
129
|
}
|
|
76
|
-
var getUploadURL = (client
|
|
130
|
+
var getUploadURL = (client) => (keys) => {
|
|
77
131
|
const command = new PutObjectCommand({
|
|
78
|
-
Bucket,
|
|
132
|
+
Bucket: getEnv("AWS_BUCKET" /* AWS_BUCKET */),
|
|
79
133
|
Key: getKey(keys),
|
|
80
134
|
ACL: "public-read"
|
|
81
135
|
});
|
|
82
136
|
return getSignedUrl(client, command, { expiresIn: 300 });
|
|
83
137
|
};
|
|
84
|
-
var getDownloadURL = (
|
|
85
|
-
return `${
|
|
138
|
+
var getDownloadURL = (keys) => {
|
|
139
|
+
return `${URL_PREFIX}${getKey(keys)}`;
|
|
86
140
|
};
|
|
87
|
-
var uploadFile = (client
|
|
141
|
+
var uploadFile = (client) => async (keys, {
|
|
88
142
|
url,
|
|
89
143
|
blob
|
|
90
144
|
}) => {
|
|
@@ -92,18 +146,18 @@ var uploadFile = (client, options) => async (keys, {
|
|
|
92
146
|
const fileBlob = blob || await fetch(url).then((file) => file.blob());
|
|
93
147
|
if (fileBlob) {
|
|
94
148
|
const key = getKey(keys);
|
|
95
|
-
await uploadBlob(client
|
|
96
|
-
return getDownloadURL(
|
|
149
|
+
await uploadBlob(client)(fileBlob, key);
|
|
150
|
+
return getDownloadURL(key);
|
|
97
151
|
}
|
|
98
152
|
return null;
|
|
99
153
|
};
|
|
100
|
-
var deleteFile = (client
|
|
101
|
-
const key = url.split(
|
|
154
|
+
var deleteFile = (client) => async (url) => {
|
|
155
|
+
const key = url.split(URL_PREFIX)[1];
|
|
102
156
|
if (key) {
|
|
103
157
|
try {
|
|
104
158
|
await client.send(
|
|
105
159
|
new DeleteObjectCommand({
|
|
106
|
-
Bucket:
|
|
160
|
+
Bucket: getEnv("AWS_BUCKET" /* AWS_BUCKET */),
|
|
107
161
|
Key: key
|
|
108
162
|
})
|
|
109
163
|
);
|
|
@@ -114,11 +168,11 @@ var deleteFile = (client, options) => async (url) => {
|
|
|
114
168
|
}
|
|
115
169
|
return false;
|
|
116
170
|
};
|
|
117
|
-
var uploadBlob = (client
|
|
171
|
+
var uploadBlob = (client) => async (file, key) => {
|
|
118
172
|
const fileBuffer = await file.arrayBuffer();
|
|
119
173
|
return client.send(
|
|
120
174
|
new PutObjectCommand({
|
|
121
|
-
Bucket,
|
|
175
|
+
Bucket: getEnv("AWS_BUCKET" /* AWS_BUCKET */),
|
|
122
176
|
Key: key,
|
|
123
177
|
ACL: "public-read",
|
|
124
178
|
Body: Buffer.from(fileBuffer),
|
|
@@ -130,7 +184,7 @@ var uploadBlob = (client, Bucket) => async (file, key) => {
|
|
|
130
184
|
|
|
131
185
|
// src/file/put.ts
|
|
132
186
|
var getFileUploadPutRoute = (options, client) => async (req) => {
|
|
133
|
-
const ctx = getContext(
|
|
187
|
+
const ctx = getContext(req);
|
|
134
188
|
if (!ctx?.userId || ctx.isRefreshID)
|
|
135
189
|
return NextResponse3.json({ error: "unauthorized" }, { status: 401 });
|
|
136
190
|
const formData = await req.formData();
|
|
@@ -143,8 +197,8 @@ var getFileUploadPutRoute = (options, client) => async (req) => {
|
|
|
143
197
|
data: typeof data === "string" ? JSON.parse(data) : void 0
|
|
144
198
|
};
|
|
145
199
|
const fileKey = options.getKey ? await options.getKey(inputData) : v4();
|
|
146
|
-
const url = getDownloadURL(
|
|
147
|
-
await uploadBlob(client
|
|
200
|
+
const url = getDownloadURL(fileKey);
|
|
201
|
+
await uploadBlob(client)(file, fileKey);
|
|
148
202
|
const onUploadResponse = await options.onUpload({
|
|
149
203
|
...inputData,
|
|
150
204
|
url
|
|
@@ -157,13 +211,13 @@ var getFileUploadPutRoute = (options, client) => async (req) => {
|
|
|
157
211
|
|
|
158
212
|
// src/file/setup.ts
|
|
159
213
|
function setupFileUpload(options) {
|
|
160
|
-
const client = getS3Client(
|
|
214
|
+
const client = getS3Client();
|
|
161
215
|
return {
|
|
162
216
|
PUT: getFileUploadPutRoute(options, client),
|
|
163
|
-
uploadFile: uploadFile(client
|
|
164
|
-
deleteFile: deleteFile(client
|
|
165
|
-
getUploadURL: getUploadURL(client
|
|
166
|
-
getDownloadURL
|
|
217
|
+
uploadFile: uploadFile(client),
|
|
218
|
+
deleteFile: deleteFile(client),
|
|
219
|
+
getUploadURL: getUploadURL(client),
|
|
220
|
+
getDownloadURL
|
|
167
221
|
};
|
|
168
222
|
}
|
|
169
223
|
export {
|
package/dist/file/utils.cjs.js
CHANGED
|
@@ -30,29 +30,82 @@ __export(utils_exports, {
|
|
|
30
30
|
module.exports = __toCommonJS(utils_exports);
|
|
31
31
|
var import_client_s3 = require("@aws-sdk/client-s3");
|
|
32
32
|
var import_s3_request_presigner = require("@aws-sdk/s3-request-presigner");
|
|
33
|
-
|
|
34
|
-
|
|
33
|
+
|
|
34
|
+
// src/env.ts
|
|
35
|
+
var getEnvValue = (key) => {
|
|
36
|
+
switch (key) {
|
|
37
|
+
case "NEXT_PUBLIC_GRAPHQL_ENDPOINT" /* NEXT_PUBLIC_GRAPHQL_ENDPOINT */:
|
|
38
|
+
return process.env.NEXT_PUBLIC_GRAPHQL_ENDPOINT;
|
|
39
|
+
case "NEXT_PUBLIC_EMAIL_AUTH_ENDPOINT" /* NEXT_PUBLIC_EMAIL_AUTH_ENDPOINT */:
|
|
40
|
+
return process.env.NEXT_PUBLIC_EMAIL_AUTH_ENDPOINT;
|
|
41
|
+
case "NEXT_PUBLIC_GOOGLE_AUTH_ENDPOINT" /* NEXT_PUBLIC_GOOGLE_AUTH_ENDPOINT */:
|
|
42
|
+
return process.env.NEXT_PUBLIC_GOOGLE_AUTH_ENDPOINT;
|
|
43
|
+
case "NEXT_PUBLIC_INSTAGRAM_AUTH_ENDPOINT" /* NEXT_PUBLIC_INSTAGRAM_AUTH_ENDPOINT */:
|
|
44
|
+
return process.env.NEXT_PUBLIC_INSTAGRAM_AUTH_ENDPOINT;
|
|
45
|
+
case "NEXT_PUBLIC_FILE_ENDPOINT" /* NEXT_PUBLIC_FILE_ENDPOINT */:
|
|
46
|
+
return process.env.NEXT_PUBLIC_FILE_ENDPOINT;
|
|
47
|
+
case "NEXT_PUBLIC_BASE_URL" /* NEXT_PUBLIC_BASE_URL */:
|
|
48
|
+
return process.env.NEXT_PUBLIC_BASE_URL;
|
|
49
|
+
case "REFRESH_KEY" /* REFRESH_KEY */:
|
|
50
|
+
return process.env.REFRESH_KEY;
|
|
51
|
+
case "SIGNING_KEY" /* SIGNING_KEY */:
|
|
52
|
+
return process.env.SIGNING_KEY;
|
|
53
|
+
case "INSTAGRAM_CLIENT_SECRET" /* INSTAGRAM_CLIENT_SECRET */:
|
|
54
|
+
return process.env.INSTAGRAM_CLIENT_SECRET;
|
|
55
|
+
case "INSTAGRAM_CLIENT_ID" /* INSTAGRAM_CLIENT_ID */:
|
|
56
|
+
return process.env.INSTAGRAM_CLIENT_ID;
|
|
57
|
+
case "GOOGLE_CLIENT_SECRET" /* GOOGLE_CLIENT_SECRET */:
|
|
58
|
+
return process.env.GOOGLE_CLIENT_SECRET;
|
|
59
|
+
case "GOOGLE_CLIENT_ID" /* GOOGLE_CLIENT_ID */:
|
|
60
|
+
return process.env.GOOGLE_CLIENT_ID;
|
|
61
|
+
case "TURNSTILE_KEY" /* TURNSTILE_KEY */:
|
|
62
|
+
return process.env.TURNSTILE_KEY;
|
|
63
|
+
case "AWS_ACCESS_KEY_ID" /* AWS_ACCESS_KEY_ID */:
|
|
64
|
+
return process.env.AWS_ACCESS_KEY_ID;
|
|
65
|
+
case "AWS_ACCESS_KEY_SECRET" /* AWS_ACCESS_KEY_SECRET */:
|
|
66
|
+
return process.env.AWS_ACCESS_KEY_SECRET;
|
|
67
|
+
case "AWS_REGION" /* AWS_REGION */:
|
|
68
|
+
return process.env.AWS_REGION;
|
|
69
|
+
case "AWS_BUCKET" /* AWS_BUCKET */:
|
|
70
|
+
return process.env.AWS_BUCKET;
|
|
71
|
+
case "NODE_ENV" /* NODE_ENV */:
|
|
72
|
+
return process.env.NODE_ENV;
|
|
73
|
+
default:
|
|
74
|
+
return process.env[key];
|
|
75
|
+
}
|
|
76
|
+
};
|
|
77
|
+
function getEnv(key, skipCheck) {
|
|
78
|
+
const value = getEnvValue(key);
|
|
79
|
+
if (!skipCheck && !value) throw new Error(`${key} is not defined`);
|
|
80
|
+
return value;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
// src/file/utils.ts
|
|
84
|
+
var getS3Client = () => new import_client_s3.S3Client({
|
|
85
|
+
region: getEnv("AWS_REGION" /* AWS_REGION */),
|
|
35
86
|
credentials: {
|
|
36
|
-
accessKeyId:
|
|
37
|
-
secretAccessKey:
|
|
87
|
+
accessKeyId: getEnv("AWS_ACCESS_KEY_ID" /* AWS_ACCESS_KEY_ID */),
|
|
88
|
+
secretAccessKey: getEnv("AWS_ACCESS_KEY_SECRET" /* AWS_ACCESS_KEY_SECRET */)
|
|
38
89
|
}
|
|
39
90
|
});
|
|
40
|
-
var
|
|
91
|
+
var URL_PREFIX = `https://${getEnv("AWS_BUCKET" /* AWS_BUCKET */)}.s3.${getEnv(
|
|
92
|
+
"AWS_REGION" /* AWS_REGION */
|
|
93
|
+
)}.amazonaws.com/`;
|
|
41
94
|
function getKey(keys) {
|
|
42
95
|
return typeof keys === "string" ? keys : keys.join("/");
|
|
43
96
|
}
|
|
44
|
-
var getUploadURL = (client
|
|
97
|
+
var getUploadURL = (client) => (keys) => {
|
|
45
98
|
const command = new import_client_s3.PutObjectCommand({
|
|
46
|
-
Bucket,
|
|
99
|
+
Bucket: getEnv("AWS_BUCKET" /* AWS_BUCKET */),
|
|
47
100
|
Key: getKey(keys),
|
|
48
101
|
ACL: "public-read"
|
|
49
102
|
});
|
|
50
103
|
return (0, import_s3_request_presigner.getSignedUrl)(client, command, { expiresIn: 300 });
|
|
51
104
|
};
|
|
52
|
-
var getDownloadURL = (
|
|
53
|
-
return `${
|
|
105
|
+
var getDownloadURL = (keys) => {
|
|
106
|
+
return `${URL_PREFIX}${getKey(keys)}`;
|
|
54
107
|
};
|
|
55
|
-
var uploadFile = (client
|
|
108
|
+
var uploadFile = (client) => async (keys, {
|
|
56
109
|
url,
|
|
57
110
|
blob
|
|
58
111
|
}) => {
|
|
@@ -60,18 +113,18 @@ var uploadFile = (client, options) => async (keys, {
|
|
|
60
113
|
const fileBlob = blob || await fetch(url).then((file) => file.blob());
|
|
61
114
|
if (fileBlob) {
|
|
62
115
|
const key = getKey(keys);
|
|
63
|
-
await uploadBlob(client
|
|
64
|
-
return getDownloadURL(
|
|
116
|
+
await uploadBlob(client)(fileBlob, key);
|
|
117
|
+
return getDownloadURL(key);
|
|
65
118
|
}
|
|
66
119
|
return null;
|
|
67
120
|
};
|
|
68
|
-
var deleteFile = (client
|
|
69
|
-
const key = url.split(
|
|
121
|
+
var deleteFile = (client) => async (url) => {
|
|
122
|
+
const key = url.split(URL_PREFIX)[1];
|
|
70
123
|
if (key) {
|
|
71
124
|
try {
|
|
72
125
|
await client.send(
|
|
73
126
|
new import_client_s3.DeleteObjectCommand({
|
|
74
|
-
Bucket:
|
|
127
|
+
Bucket: getEnv("AWS_BUCKET" /* AWS_BUCKET */),
|
|
75
128
|
Key: key
|
|
76
129
|
})
|
|
77
130
|
);
|
|
@@ -82,11 +135,11 @@ var deleteFile = (client, options) => async (url) => {
|
|
|
82
135
|
}
|
|
83
136
|
return false;
|
|
84
137
|
};
|
|
85
|
-
var uploadBlob = (client
|
|
138
|
+
var uploadBlob = (client) => async (file, key) => {
|
|
86
139
|
const fileBuffer = await file.arrayBuffer();
|
|
87
140
|
return client.send(
|
|
88
141
|
new import_client_s3.PutObjectCommand({
|
|
89
|
-
Bucket,
|
|
142
|
+
Bucket: getEnv("AWS_BUCKET" /* AWS_BUCKET */),
|
|
90
143
|
Key: key,
|
|
91
144
|
ACL: "public-read",
|
|
92
145
|
Body: Buffer.from(fileBuffer),
|
package/dist/file/utils.d.mts
CHANGED
|
@@ -1,18 +1,14 @@
|
|
|
1
1
|
import * as _aws_sdk_client_s3 from '@aws-sdk/client-s3';
|
|
2
2
|
import { S3Client } from '@aws-sdk/client-s3';
|
|
3
|
-
import { SetupFileUploadOptions } from './setup.mjs';
|
|
4
|
-
import 'next/server';
|
|
5
|
-
import '../auth/email/types.mjs';
|
|
6
|
-
import '../auth/types.mjs';
|
|
7
3
|
|
|
8
|
-
declare const getS3Client: (
|
|
9
|
-
declare const getUploadURL: (client: S3Client
|
|
10
|
-
declare const getDownloadURL: (
|
|
11
|
-
declare const uploadFile: (client: S3Client
|
|
4
|
+
declare const getS3Client: () => S3Client;
|
|
5
|
+
declare const getUploadURL: (client: S3Client) => (keys: string | string[]) => Promise<string>;
|
|
6
|
+
declare const getDownloadURL: (keys: string | string[]) => string;
|
|
7
|
+
declare const uploadFile: (client: S3Client) => (keys: string | string[], { url, blob, }: {
|
|
12
8
|
blob?: Blob;
|
|
13
9
|
url?: string;
|
|
14
10
|
}) => Promise<string | null>;
|
|
15
|
-
declare const deleteFile: (client: S3Client
|
|
16
|
-
declare const uploadBlob: (client: S3Client
|
|
11
|
+
declare const deleteFile: (client: S3Client) => (url: string) => Promise<boolean>;
|
|
12
|
+
declare const uploadBlob: (client: S3Client) => (file: File | Blob, key: string) => Promise<_aws_sdk_client_s3.PutObjectCommandOutput>;
|
|
17
13
|
|
|
18
14
|
export { deleteFile, getDownloadURL, getS3Client, getUploadURL, uploadBlob, uploadFile };
|
package/dist/file/utils.d.ts
CHANGED
|
@@ -1,18 +1,14 @@
|
|
|
1
1
|
import * as _aws_sdk_client_s3 from '@aws-sdk/client-s3';
|
|
2
2
|
import { S3Client } from '@aws-sdk/client-s3';
|
|
3
|
-
import { SetupFileUploadOptions } from './setup.js';
|
|
4
|
-
import 'next/server';
|
|
5
|
-
import '../auth/email/types.js';
|
|
6
|
-
import '../auth/types.js';
|
|
7
3
|
|
|
8
|
-
declare const getS3Client: (
|
|
9
|
-
declare const getUploadURL: (client: S3Client
|
|
10
|
-
declare const getDownloadURL: (
|
|
11
|
-
declare const uploadFile: (client: S3Client
|
|
4
|
+
declare const getS3Client: () => S3Client;
|
|
5
|
+
declare const getUploadURL: (client: S3Client) => (keys: string | string[]) => Promise<string>;
|
|
6
|
+
declare const getDownloadURL: (keys: string | string[]) => string;
|
|
7
|
+
declare const uploadFile: (client: S3Client) => (keys: string | string[], { url, blob, }: {
|
|
12
8
|
blob?: Blob;
|
|
13
9
|
url?: string;
|
|
14
10
|
}) => Promise<string | null>;
|
|
15
|
-
declare const deleteFile: (client: S3Client
|
|
16
|
-
declare const uploadBlob: (client: S3Client
|
|
11
|
+
declare const deleteFile: (client: S3Client) => (url: string) => Promise<boolean>;
|
|
12
|
+
declare const uploadBlob: (client: S3Client) => (file: File | Blob, key: string) => Promise<_aws_sdk_client_s3.PutObjectCommandOutput>;
|
|
17
13
|
|
|
18
14
|
export { deleteFile, getDownloadURL, getS3Client, getUploadURL, uploadBlob, uploadFile };
|