naystack 1.5.29 → 1.5.30

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.
@@ -38,6 +38,35 @@ __export(email_exports, {
38
38
  module.exports = __toCommonJS(email_exports);
39
39
  var import_server4 = require("next/server");
40
40
 
41
+ // src/utils/route.ts
42
+ function getCorsHeaders(origin, allowedOrigins) {
43
+ if (!origin || !allowedOrigins.includes(origin)) return null;
44
+ return {
45
+ "Access-Control-Allow-Origin": origin,
46
+ "Access-Control-Allow-Methods": "GET, POST, PUT, DELETE, OPTIONS",
47
+ "Access-Control-Allow-Headers": "Content-Type, Authorization",
48
+ "Access-Control-Allow-Credentials": "true"
49
+ };
50
+ }
51
+ function withCors(handler, allowedOrigins) {
52
+ if (!allowedOrigins?.length) return handler;
53
+ return ((req) => {
54
+ return handler(req).then((response) => {
55
+ if (!response) return response;
56
+ const corsHeaders = getCorsHeaders(
57
+ req.headers.get("origin"),
58
+ allowedOrigins
59
+ );
60
+ if (corsHeaders) {
61
+ Object.entries(corsHeaders).forEach(([key, value]) => {
62
+ response.headers.set(key, value);
63
+ });
64
+ }
65
+ return response;
66
+ });
67
+ });
68
+ }
69
+
41
70
  // src/auth/email/token.ts
42
71
  var import_bcryptjs = require("bcryptjs");
43
72
  var import_jsonwebtoken = require("jsonwebtoken");
@@ -367,33 +396,6 @@ function AuthFetch() {
367
396
  }
368
397
 
369
398
  // src/auth/email/index.ts
370
- function getCorsHeaders(origin, allowedOrigins) {
371
- if (!origin || !allowedOrigins.includes(origin)) return null;
372
- return {
373
- "Access-Control-Allow-Origin": origin,
374
- "Access-Control-Allow-Methods": "GET, POST, PUT, DELETE, OPTIONS",
375
- "Access-Control-Allow-Headers": "Content-Type, Authorization",
376
- "Access-Control-Allow-Credentials": "true"
377
- };
378
- }
379
- function withCors(handler, allowedOrigins) {
380
- if (!allowedOrigins?.length) return handler;
381
- return ((req) => {
382
- return handler(req).then((response) => {
383
- if (!response) return response;
384
- const corsHeaders = getCorsHeaders(
385
- req.headers.get("origin"),
386
- allowedOrigins
387
- );
388
- if (corsHeaders) {
389
- Object.entries(corsHeaders).forEach(([key, value]) => {
390
- response.headers.set(key, value);
391
- });
392
- }
393
- return response;
394
- });
395
- });
396
- }
397
399
  function getEmailAuthRoutes(options) {
398
400
  const { allowedOrigins } = options;
399
401
  return {
@@ -1,6 +1,35 @@
1
1
  // src/auth/email/index.ts
2
2
  import { NextResponse as NextResponse3 } from "next/server";
3
3
 
4
+ // src/utils/route.ts
5
+ function getCorsHeaders(origin, allowedOrigins) {
6
+ if (!origin || !allowedOrigins.includes(origin)) return null;
7
+ return {
8
+ "Access-Control-Allow-Origin": origin,
9
+ "Access-Control-Allow-Methods": "GET, POST, PUT, DELETE, OPTIONS",
10
+ "Access-Control-Allow-Headers": "Content-Type, Authorization",
11
+ "Access-Control-Allow-Credentials": "true"
12
+ };
13
+ }
14
+ function withCors(handler, allowedOrigins) {
15
+ if (!allowedOrigins?.length) return handler;
16
+ return ((req) => {
17
+ return handler(req).then((response) => {
18
+ if (!response) return response;
19
+ const corsHeaders = getCorsHeaders(
20
+ req.headers.get("origin"),
21
+ allowedOrigins
22
+ );
23
+ if (corsHeaders) {
24
+ Object.entries(corsHeaders).forEach(([key, value]) => {
25
+ response.headers.set(key, value);
26
+ });
27
+ }
28
+ return response;
29
+ });
30
+ });
31
+ }
32
+
4
33
  // src/auth/email/token.ts
5
34
  import { compare } from "bcryptjs";
6
35
  import { JsonWebTokenError, sign, verify } from "jsonwebtoken";
@@ -334,33 +363,6 @@ function AuthFetch() {
334
363
  }
335
364
 
336
365
  // src/auth/email/index.ts
337
- function getCorsHeaders(origin, allowedOrigins) {
338
- if (!origin || !allowedOrigins.includes(origin)) return null;
339
- return {
340
- "Access-Control-Allow-Origin": origin,
341
- "Access-Control-Allow-Methods": "GET, POST, PUT, DELETE, OPTIONS",
342
- "Access-Control-Allow-Headers": "Content-Type, Authorization",
343
- "Access-Control-Allow-Credentials": "true"
344
- };
345
- }
346
- function withCors(handler, allowedOrigins) {
347
- if (!allowedOrigins?.length) return handler;
348
- return ((req) => {
349
- return handler(req).then((response) => {
350
- if (!response) return response;
351
- const corsHeaders = getCorsHeaders(
352
- req.headers.get("origin"),
353
- allowedOrigins
354
- );
355
- if (corsHeaders) {
356
- Object.entries(corsHeaders).forEach(([key, value]) => {
357
- response.headers.set(key, value);
358
- });
359
- }
360
- return response;
361
- });
362
- });
363
- }
364
366
  function getEmailAuthRoutes(options) {
365
367
  const { allowedOrigins } = options;
366
368
  return {
@@ -44,6 +44,35 @@ module.exports = __toCommonJS(auth_exports);
44
44
  // src/auth/email/index.ts
45
45
  var import_server4 = require("next/server");
46
46
 
47
+ // src/utils/route.ts
48
+ function getCorsHeaders(origin, allowedOrigins) {
49
+ if (!origin || !allowedOrigins.includes(origin)) return null;
50
+ return {
51
+ "Access-Control-Allow-Origin": origin,
52
+ "Access-Control-Allow-Methods": "GET, POST, PUT, DELETE, OPTIONS",
53
+ "Access-Control-Allow-Headers": "Content-Type, Authorization",
54
+ "Access-Control-Allow-Credentials": "true"
55
+ };
56
+ }
57
+ function withCors(handler, allowedOrigins) {
58
+ if (!allowedOrigins?.length) return handler;
59
+ return ((req) => {
60
+ return handler(req).then((response) => {
61
+ if (!response) return response;
62
+ const corsHeaders = getCorsHeaders(
63
+ req.headers.get("origin"),
64
+ allowedOrigins
65
+ );
66
+ if (corsHeaders) {
67
+ Object.entries(corsHeaders).forEach(([key, value]) => {
68
+ response.headers.set(key, value);
69
+ });
70
+ }
71
+ return response;
72
+ });
73
+ });
74
+ }
75
+
47
76
  // src/auth/email/token.ts
48
77
  var import_bcryptjs = require("bcryptjs");
49
78
  var import_jsonwebtoken = require("jsonwebtoken");
@@ -385,33 +414,6 @@ function AuthFetch() {
385
414
  }
386
415
 
387
416
  // src/auth/email/index.ts
388
- function getCorsHeaders(origin, allowedOrigins) {
389
- if (!origin || !allowedOrigins.includes(origin)) return null;
390
- return {
391
- "Access-Control-Allow-Origin": origin,
392
- "Access-Control-Allow-Methods": "GET, POST, PUT, DELETE, OPTIONS",
393
- "Access-Control-Allow-Headers": "Content-Type, Authorization",
394
- "Access-Control-Allow-Credentials": "true"
395
- };
396
- }
397
- function withCors(handler, allowedOrigins) {
398
- if (!allowedOrigins?.length) return handler;
399
- return ((req) => {
400
- return handler(req).then((response) => {
401
- if (!response) return response;
402
- const corsHeaders = getCorsHeaders(
403
- req.headers.get("origin"),
404
- allowedOrigins
405
- );
406
- if (corsHeaders) {
407
- Object.entries(corsHeaders).forEach(([key, value]) => {
408
- response.headers.set(key, value);
409
- });
410
- }
411
- return response;
412
- });
413
- });
414
- }
415
417
  function getEmailAuthRoutes(options) {
416
418
  const { allowedOrigins } = options;
417
419
  return {
@@ -1,6 +1,35 @@
1
1
  // src/auth/email/index.ts
2
2
  import { NextResponse as NextResponse3 } from "next/server";
3
3
 
4
+ // src/utils/route.ts
5
+ function getCorsHeaders(origin, allowedOrigins) {
6
+ if (!origin || !allowedOrigins.includes(origin)) return null;
7
+ return {
8
+ "Access-Control-Allow-Origin": origin,
9
+ "Access-Control-Allow-Methods": "GET, POST, PUT, DELETE, OPTIONS",
10
+ "Access-Control-Allow-Headers": "Content-Type, Authorization",
11
+ "Access-Control-Allow-Credentials": "true"
12
+ };
13
+ }
14
+ function withCors(handler, allowedOrigins) {
15
+ if (!allowedOrigins?.length) return handler;
16
+ return ((req) => {
17
+ return handler(req).then((response) => {
18
+ if (!response) return response;
19
+ const corsHeaders = getCorsHeaders(
20
+ req.headers.get("origin"),
21
+ allowedOrigins
22
+ );
23
+ if (corsHeaders) {
24
+ Object.entries(corsHeaders).forEach(([key, value]) => {
25
+ response.headers.set(key, value);
26
+ });
27
+ }
28
+ return response;
29
+ });
30
+ });
31
+ }
32
+
4
33
  // src/auth/email/token.ts
5
34
  import { compare } from "bcryptjs";
6
35
  import { JsonWebTokenError, sign, verify } from "jsonwebtoken";
@@ -346,33 +375,6 @@ function AuthFetch() {
346
375
  }
347
376
 
348
377
  // src/auth/email/index.ts
349
- function getCorsHeaders(origin, allowedOrigins) {
350
- if (!origin || !allowedOrigins.includes(origin)) return null;
351
- return {
352
- "Access-Control-Allow-Origin": origin,
353
- "Access-Control-Allow-Methods": "GET, POST, PUT, DELETE, OPTIONS",
354
- "Access-Control-Allow-Headers": "Content-Type, Authorization",
355
- "Access-Control-Allow-Credentials": "true"
356
- };
357
- }
358
- function withCors(handler, allowedOrigins) {
359
- if (!allowedOrigins?.length) return handler;
360
- return ((req) => {
361
- return handler(req).then((response) => {
362
- if (!response) return response;
363
- const corsHeaders = getCorsHeaders(
364
- req.headers.get("origin"),
365
- allowedOrigins
366
- );
367
- if (corsHeaders) {
368
- Object.entries(corsHeaders).forEach(([key, value]) => {
369
- response.headers.set(key, value);
370
- });
371
- }
372
- return response;
373
- });
374
- });
375
- }
376
378
  function getEmailAuthRoutes(options) {
377
379
  const { allowedOrigins } = options;
378
380
  return {
@@ -625,6 +625,35 @@ function getEnv(key, skipCheck) {
625
625
  return value;
626
626
  }
627
627
 
628
+ // src/utils/route.ts
629
+ function getCorsHeaders(origin, allowedOrigins) {
630
+ if (!origin || !allowedOrigins.includes(origin)) return null;
631
+ return {
632
+ "Access-Control-Allow-Origin": origin,
633
+ "Access-Control-Allow-Methods": "GET, POST, PUT, DELETE, OPTIONS",
634
+ "Access-Control-Allow-Headers": "Content-Type, Authorization",
635
+ "Access-Control-Allow-Credentials": "true"
636
+ };
637
+ }
638
+ function withCors(handler, allowedOrigins) {
639
+ if (!allowedOrigins?.length) return handler;
640
+ return ((req) => {
641
+ return handler(req).then((response) => {
642
+ if (!response) return response;
643
+ const corsHeaders = getCorsHeaders(
644
+ req.headers.get("origin"),
645
+ allowedOrigins
646
+ );
647
+ if (corsHeaders) {
648
+ Object.entries(corsHeaders).forEach(([key, value]) => {
649
+ response.headers.set(key, value);
650
+ });
651
+ }
652
+ return response;
653
+ });
654
+ });
655
+ }
656
+
628
657
  // src/auth/email/utils.ts
629
658
  var import_jsonwebtoken2 = require("jsonwebtoken");
630
659
 
@@ -683,7 +712,8 @@ async function initGraphQLServer({
683
712
  authChecker,
684
713
  resolvers,
685
714
  plugins,
686
- getContext: overrideGetContext
715
+ getContext: overrideGetContext,
716
+ allowedOrigins
687
717
  }) {
688
718
  const { typeDefs, resolvers: builtResolvers } = await (0, import_type_graphql.buildTypeDefsAndResolvers)({
689
719
  validate: true,
@@ -710,8 +740,8 @@ async function initGraphQLServer({
710
740
  context: overrideGetContext || getContext
711
741
  });
712
742
  return {
713
- GET: (request) => handler(request),
714
- POST: (request) => handler(request)
743
+ GET: withCors((request) => handler(request), allowedOrigins),
744
+ POST: withCors((request) => handler(request), allowedOrigins)
715
745
  };
716
746
  }
717
747
 
@@ -612,6 +612,35 @@ function getEnv(key, skipCheck) {
612
612
  return value;
613
613
  }
614
614
 
615
+ // src/utils/route.ts
616
+ function getCorsHeaders(origin, allowedOrigins) {
617
+ if (!origin || !allowedOrigins.includes(origin)) return null;
618
+ return {
619
+ "Access-Control-Allow-Origin": origin,
620
+ "Access-Control-Allow-Methods": "GET, POST, PUT, DELETE, OPTIONS",
621
+ "Access-Control-Allow-Headers": "Content-Type, Authorization",
622
+ "Access-Control-Allow-Credentials": "true"
623
+ };
624
+ }
625
+ function withCors(handler, allowedOrigins) {
626
+ if (!allowedOrigins?.length) return handler;
627
+ return ((req) => {
628
+ return handler(req).then((response) => {
629
+ if (!response) return response;
630
+ const corsHeaders = getCorsHeaders(
631
+ req.headers.get("origin"),
632
+ allowedOrigins
633
+ );
634
+ if (corsHeaders) {
635
+ Object.entries(corsHeaders).forEach(([key, value]) => {
636
+ response.headers.set(key, value);
637
+ });
638
+ }
639
+ return response;
640
+ });
641
+ });
642
+ }
643
+
615
644
  // src/auth/email/utils.ts
616
645
  import { verify as verify2 } from "jsonwebtoken";
617
646
 
@@ -670,7 +699,8 @@ async function initGraphQLServer({
670
699
  authChecker,
671
700
  resolvers,
672
701
  plugins,
673
- getContext: overrideGetContext
702
+ getContext: overrideGetContext,
703
+ allowedOrigins
674
704
  }) {
675
705
  const { typeDefs, resolvers: builtResolvers } = await buildTypeDefsAndResolvers({
676
706
  validate: true,
@@ -697,8 +727,8 @@ async function initGraphQLServer({
697
727
  context: overrideGetContext || getContext
698
728
  });
699
729
  return {
700
- GET: (request) => handler(request),
701
- POST: (request) => handler(request)
730
+ GET: withCors((request) => handler(request), allowedOrigins),
731
+ POST: withCors((request) => handler(request), allowedOrigins)
702
732
  };
703
733
  }
704
734
 
@@ -78,6 +78,35 @@ function getEnv(key, skipCheck) {
78
78
  return value;
79
79
  }
80
80
 
81
+ // src/utils/route.ts
82
+ function getCorsHeaders(origin, allowedOrigins) {
83
+ if (!origin || !allowedOrigins.includes(origin)) return null;
84
+ return {
85
+ "Access-Control-Allow-Origin": origin,
86
+ "Access-Control-Allow-Methods": "GET, POST, PUT, DELETE, OPTIONS",
87
+ "Access-Control-Allow-Headers": "Content-Type, Authorization",
88
+ "Access-Control-Allow-Credentials": "true"
89
+ };
90
+ }
91
+ function withCors(handler, allowedOrigins) {
92
+ if (!allowedOrigins?.length) return handler;
93
+ return ((req) => {
94
+ return handler(req).then((response) => {
95
+ if (!response) return response;
96
+ const corsHeaders = getCorsHeaders(
97
+ req.headers.get("origin"),
98
+ allowedOrigins
99
+ );
100
+ if (corsHeaders) {
101
+ Object.entries(corsHeaders).forEach(([key, value]) => {
102
+ response.headers.set(key, value);
103
+ });
104
+ }
105
+ return response;
106
+ });
107
+ });
108
+ }
109
+
81
110
  // src/auth/email/utils.ts
82
111
  var import_jsonwebtoken2 = require("jsonwebtoken");
83
112
 
@@ -136,7 +165,8 @@ async function initGraphQLServer({
136
165
  authChecker,
137
166
  resolvers,
138
167
  plugins,
139
- getContext: overrideGetContext
168
+ getContext: overrideGetContext,
169
+ allowedOrigins
140
170
  }) {
141
171
  const { typeDefs, resolvers: builtResolvers } = await (0, import_type_graphql.buildTypeDefsAndResolvers)({
142
172
  validate: true,
@@ -163,8 +193,8 @@ async function initGraphQLServer({
163
193
  context: overrideGetContext || getContext
164
194
  });
165
195
  return {
166
- GET: (request) => handler(request),
167
- POST: (request) => handler(request)
196
+ GET: withCors((request) => handler(request), allowedOrigins),
197
+ POST: withCors((request) => handler(request), allowedOrigins)
168
198
  };
169
199
  }
170
200
  // Annotate the CommonJS export names for ESM import in node:
@@ -35,11 +35,12 @@ import { AuthChecker, NonEmptyArray } from 'type-graphql';
35
35
  *
36
36
  * @category GraphQL
37
37
  */
38
- declare function initGraphQLServer({ authChecker, resolvers, plugins, getContext: overrideGetContext, }: {
38
+ declare function initGraphQLServer({ authChecker, resolvers, plugins, getContext: overrideGetContext, allowedOrigins, }: {
39
39
  authChecker?: AuthChecker<any>;
40
40
  resolvers: NonEmptyArray<Function>;
41
41
  plugins?: ApolloServerPlugin[];
42
42
  getContext?: (req: NextRequest) => Promise<any> | any;
43
+ allowedOrigins?: string[];
43
44
  }): Promise<{
44
45
  GET: (request: NextRequest) => Promise<Response>;
45
46
  POST: (request: NextRequest) => Promise<Response>;
@@ -35,11 +35,12 @@ import { AuthChecker, NonEmptyArray } from 'type-graphql';
35
35
  *
36
36
  * @category GraphQL
37
37
  */
38
- declare function initGraphQLServer({ authChecker, resolvers, plugins, getContext: overrideGetContext, }: {
38
+ declare function initGraphQLServer({ authChecker, resolvers, plugins, getContext: overrideGetContext, allowedOrigins, }: {
39
39
  authChecker?: AuthChecker<any>;
40
40
  resolvers: NonEmptyArray<Function>;
41
41
  plugins?: ApolloServerPlugin[];
42
42
  getContext?: (req: NextRequest) => Promise<any> | any;
43
+ allowedOrigins?: string[];
43
44
  }): Promise<{
44
45
  GET: (request: NextRequest) => Promise<Response>;
45
46
  POST: (request: NextRequest) => Promise<Response>;
@@ -59,6 +59,35 @@ function getEnv(key, skipCheck) {
59
59
  return value;
60
60
  }
61
61
 
62
+ // src/utils/route.ts
63
+ function getCorsHeaders(origin, allowedOrigins) {
64
+ if (!origin || !allowedOrigins.includes(origin)) return null;
65
+ return {
66
+ "Access-Control-Allow-Origin": origin,
67
+ "Access-Control-Allow-Methods": "GET, POST, PUT, DELETE, OPTIONS",
68
+ "Access-Control-Allow-Headers": "Content-Type, Authorization",
69
+ "Access-Control-Allow-Credentials": "true"
70
+ };
71
+ }
72
+ function withCors(handler, allowedOrigins) {
73
+ if (!allowedOrigins?.length) return handler;
74
+ return ((req) => {
75
+ return handler(req).then((response) => {
76
+ if (!response) return response;
77
+ const corsHeaders = getCorsHeaders(
78
+ req.headers.get("origin"),
79
+ allowedOrigins
80
+ );
81
+ if (corsHeaders) {
82
+ Object.entries(corsHeaders).forEach(([key, value]) => {
83
+ response.headers.set(key, value);
84
+ });
85
+ }
86
+ return response;
87
+ });
88
+ });
89
+ }
90
+
62
91
  // src/auth/email/utils.ts
63
92
  import { verify as verify2 } from "jsonwebtoken";
64
93
 
@@ -117,7 +146,8 @@ async function initGraphQLServer({
117
146
  authChecker,
118
147
  resolvers,
119
148
  plugins,
120
- getContext: overrideGetContext
149
+ getContext: overrideGetContext,
150
+ allowedOrigins
121
151
  }) {
122
152
  const { typeDefs, resolvers: builtResolvers } = await buildTypeDefsAndResolvers({
123
153
  validate: true,
@@ -144,8 +174,8 @@ async function initGraphQLServer({
144
174
  context: overrideGetContext || getContext
145
175
  });
146
176
  return {
147
- GET: (request) => handler(request),
148
- POST: (request) => handler(request)
177
+ GET: withCors((request) => handler(request), allowedOrigins),
178
+ POST: withCors((request) => handler(request), allowedOrigins)
149
179
  };
150
180
  }
151
181
  export {
@@ -0,0 +1,58 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+
20
+ // src/utils/route.ts
21
+ var route_exports = {};
22
+ __export(route_exports, {
23
+ getCorsHeaders: () => getCorsHeaders,
24
+ withCors: () => withCors
25
+ });
26
+ module.exports = __toCommonJS(route_exports);
27
+ function getCorsHeaders(origin, allowedOrigins) {
28
+ if (!origin || !allowedOrigins.includes(origin)) return null;
29
+ return {
30
+ "Access-Control-Allow-Origin": origin,
31
+ "Access-Control-Allow-Methods": "GET, POST, PUT, DELETE, OPTIONS",
32
+ "Access-Control-Allow-Headers": "Content-Type, Authorization",
33
+ "Access-Control-Allow-Credentials": "true"
34
+ };
35
+ }
36
+ function withCors(handler, allowedOrigins) {
37
+ if (!allowedOrigins?.length) return handler;
38
+ return ((req) => {
39
+ return handler(req).then((response) => {
40
+ if (!response) return response;
41
+ const corsHeaders = getCorsHeaders(
42
+ req.headers.get("origin"),
43
+ allowedOrigins
44
+ );
45
+ if (corsHeaders) {
46
+ Object.entries(corsHeaders).forEach(([key, value]) => {
47
+ response.headers.set(key, value);
48
+ });
49
+ }
50
+ return response;
51
+ });
52
+ });
53
+ }
54
+ // Annotate the CommonJS export names for ESM import in node:
55
+ 0 && (module.exports = {
56
+ getCorsHeaders,
57
+ withCors
58
+ });
@@ -0,0 +1,11 @@
1
+ import { NextRequest, NextResponse } from 'next/server';
2
+
3
+ declare function getCorsHeaders(origin: string | null, allowedOrigins: string[]): {
4
+ "Access-Control-Allow-Origin": string;
5
+ "Access-Control-Allow-Methods": string;
6
+ "Access-Control-Allow-Headers": string;
7
+ "Access-Control-Allow-Credentials": string;
8
+ } | null;
9
+ declare function withCors<T extends (req: NextRequest) => Promise<NextResponse | Response | undefined>>(handler: T, allowedOrigins?: string[]): T;
10
+
11
+ export { getCorsHeaders, withCors };
@@ -0,0 +1,11 @@
1
+ import { NextRequest, NextResponse } from 'next/server';
2
+
3
+ declare function getCorsHeaders(origin: string | null, allowedOrigins: string[]): {
4
+ "Access-Control-Allow-Origin": string;
5
+ "Access-Control-Allow-Methods": string;
6
+ "Access-Control-Allow-Headers": string;
7
+ "Access-Control-Allow-Credentials": string;
8
+ } | null;
9
+ declare function withCors<T extends (req: NextRequest) => Promise<NextResponse | Response | undefined>>(handler: T, allowedOrigins?: string[]): T;
10
+
11
+ export { getCorsHeaders, withCors };
@@ -0,0 +1,32 @@
1
+ // src/utils/route.ts
2
+ function getCorsHeaders(origin, allowedOrigins) {
3
+ if (!origin || !allowedOrigins.includes(origin)) return null;
4
+ return {
5
+ "Access-Control-Allow-Origin": origin,
6
+ "Access-Control-Allow-Methods": "GET, POST, PUT, DELETE, OPTIONS",
7
+ "Access-Control-Allow-Headers": "Content-Type, Authorization",
8
+ "Access-Control-Allow-Credentials": "true"
9
+ };
10
+ }
11
+ function withCors(handler, allowedOrigins) {
12
+ if (!allowedOrigins?.length) return handler;
13
+ return ((req) => {
14
+ return handler(req).then((response) => {
15
+ if (!response) return response;
16
+ const corsHeaders = getCorsHeaders(
17
+ req.headers.get("origin"),
18
+ allowedOrigins
19
+ );
20
+ if (corsHeaders) {
21
+ Object.entries(corsHeaders).forEach(([key, value]) => {
22
+ response.headers.set(key, value);
23
+ });
24
+ }
25
+ return response;
26
+ });
27
+ });
28
+ }
29
+ export {
30
+ getCorsHeaders,
31
+ withCors
32
+ };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "naystack",
3
- "version": "1.5.29",
3
+ "version": "1.5.30",
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",