naystack 1.8.4 → 1.8.6

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.
@@ -34,9 +34,9 @@ __export(client_exports, {
34
34
  AuthApply: () => AuthApply,
35
35
  AuthWrapper: () => AuthWrapper,
36
36
  TokenContext: () => TokenContext,
37
- getAccessToken: () => getAccessToken,
38
- refreshAccessToken: () => refreshAccessToken,
39
- setAccessToken: () => setAccessToken,
37
+ getAccessToken: () => import_token_store2.getAccessToken,
38
+ refreshAccessToken: () => import_token_store2.refreshAccessToken,
39
+ setAccessToken: () => import_token_store2.setAccessToken,
40
40
  useAuthFetch: () => useAuthFetch,
41
41
  useLogin: () => useLogin,
42
42
  useLogout: () => useLogout,
@@ -47,6 +47,7 @@ __export(client_exports, {
47
47
  module.exports = __toCommonJS(client_exports);
48
48
 
49
49
  // src/auth/email/client.tsx
50
+ var import_token_store = require("naystack/auth/token-store");
50
51
  var import_react = __toESM(require("react"));
51
52
 
52
53
  // src/env.ts
@@ -99,42 +100,8 @@ function getEnv(key, skipCheck) {
99
100
  return value;
100
101
  }
101
102
 
102
- // src/auth/token-store.ts
103
- var currentToken;
104
- var listeners = /* @__PURE__ */ new Set();
105
- var inFlightRefresh = null;
106
- function getAccessToken() {
107
- return currentToken;
108
- }
109
- function setAccessToken(token) {
110
- if (token === currentToken) return;
111
- currentToken = token;
112
- listeners.forEach((listener) => listener(token));
113
- }
114
- function subscribeToAccessToken(listener) {
115
- listeners.add(listener);
116
- return () => {
117
- listeners.delete(listener);
118
- };
119
- }
120
- function refreshAccessToken() {
121
- if (inFlightRefresh) return inFlightRefresh;
122
- inFlightRefresh = (async () => {
123
- const res = await fetch(
124
- getEnv("NEXT_PUBLIC_EMAIL_AUTH_ENDPOINT" /* NEXT_PUBLIC_EMAIL_AUTH_ENDPOINT */),
125
- { credentials: "include" }
126
- );
127
- if (!res.ok) throw new Error(`Token refresh failed: ${res.status}`);
128
- const token = await res.text() || null;
129
- setAccessToken(token);
130
- return token;
131
- })().finally(() => {
132
- inFlightRefresh = null;
133
- });
134
- return inFlightRefresh;
135
- }
136
-
137
103
  // src/auth/email/client.tsx
104
+ var import_token_store2 = require("naystack/auth/token-store");
138
105
  var TokenContext = (0, import_react.createContext)({
139
106
  token: void 0,
140
107
  setToken: () => null
@@ -144,12 +111,12 @@ var AuthWrapper = ({
144
111
  skipInitialFetch
145
112
  }) => {
146
113
  const [token, setTokenState] = (0, import_react.useState)(
147
- getAccessToken
114
+ import_token_store.getAccessToken
148
115
  );
149
- (0, import_react.useEffect)(() => subscribeToAccessToken(setTokenState), []);
116
+ (0, import_react.useEffect)(() => (0, import_token_store.subscribeToAccessToken)(setTokenState), []);
150
117
  const setToken = (0, import_react.useCallback)((action) => {
151
- setAccessToken(
152
- typeof action === "function" ? action(getAccessToken()) : action
118
+ (0, import_token_store.setAccessToken)(
119
+ typeof action === "function" ? action((0, import_token_store.getAccessToken)()) : action
153
120
  );
154
121
  }, []);
155
122
  return /* @__PURE__ */ import_react.default.createElement(TokenContext.Provider, { value: { token, setToken } }, !skipInitialFetch && /* @__PURE__ */ import_react.default.createElement(AuthChildComponent, null), children);
@@ -161,7 +128,7 @@ function AuthChildComponent() {
161
128
  function useAuthFetch({ skip } = {}) {
162
129
  (0, import_react.useEffect)(() => {
163
130
  if (skip) return;
164
- void refreshAccessToken().catch(() => null);
131
+ void (0, import_token_store.refreshAccessToken)().catch(() => null);
165
132
  }, []);
166
133
  }
167
134
  function AuthApply({ data }) {
@@ -1,3 +1,3 @@
1
1
  export { AuthApply, AuthWrapper, AuthWrapperProps, TokenContext, useAuthFetch, useLogin, useLogout, useSetToken, useSignUp, useToken } from './email/client.mjs';
2
- export { getAccessToken, refreshAccessToken, setAccessToken } from './token-store.mjs';
2
+ export { getAccessToken, refreshAccessToken, setAccessToken } from 'naystack/auth/token-store';
3
3
  import 'react';
@@ -1,3 +1,3 @@
1
1
  export { AuthApply, AuthWrapper, AuthWrapperProps, TokenContext, useAuthFetch, useLogin, useLogout, useSetToken, useSignUp, useToken } from './email/client.js';
2
- export { getAccessToken, refreshAccessToken, setAccessToken } from './token-store.js';
2
+ export { getAccessToken, refreshAccessToken, setAccessToken } from 'naystack/auth/token-store';
3
3
  import 'react';
@@ -1,6 +1,12 @@
1
1
  "use client";
2
2
 
3
3
  // src/auth/email/client.tsx
4
+ import {
5
+ getAccessToken,
6
+ refreshAccessToken,
7
+ setAccessToken,
8
+ subscribeToAccessToken
9
+ } from "naystack/auth/token-store";
4
10
  import React, {
5
11
  createContext,
6
12
  useCallback,
@@ -59,42 +65,12 @@ function getEnv(key, skipCheck) {
59
65
  return value;
60
66
  }
61
67
 
62
- // src/auth/token-store.ts
63
- var currentToken;
64
- var listeners = /* @__PURE__ */ new Set();
65
- var inFlightRefresh = null;
66
- function getAccessToken() {
67
- return currentToken;
68
- }
69
- function setAccessToken(token) {
70
- if (token === currentToken) return;
71
- currentToken = token;
72
- listeners.forEach((listener) => listener(token));
73
- }
74
- function subscribeToAccessToken(listener) {
75
- listeners.add(listener);
76
- return () => {
77
- listeners.delete(listener);
78
- };
79
- }
80
- function refreshAccessToken() {
81
- if (inFlightRefresh) return inFlightRefresh;
82
- inFlightRefresh = (async () => {
83
- const res = await fetch(
84
- getEnv("NEXT_PUBLIC_EMAIL_AUTH_ENDPOINT" /* NEXT_PUBLIC_EMAIL_AUTH_ENDPOINT */),
85
- { credentials: "include" }
86
- );
87
- if (!res.ok) throw new Error(`Token refresh failed: ${res.status}`);
88
- const token = await res.text() || null;
89
- setAccessToken(token);
90
- return token;
91
- })().finally(() => {
92
- inFlightRefresh = null;
93
- });
94
- return inFlightRefresh;
95
- }
96
-
97
68
  // src/auth/email/client.tsx
69
+ import {
70
+ getAccessToken as getAccessToken2,
71
+ refreshAccessToken as refreshAccessToken2,
72
+ setAccessToken as setAccessToken2
73
+ } from "naystack/auth/token-store";
98
74
  var TokenContext = createContext({
99
75
  token: void 0,
100
76
  setToken: () => null
@@ -203,9 +179,9 @@ export {
203
179
  AuthApply,
204
180
  AuthWrapper,
205
181
  TokenContext,
206
- getAccessToken,
207
- refreshAccessToken,
208
- setAccessToken,
182
+ getAccessToken2 as getAccessToken,
183
+ refreshAccessToken2 as refreshAccessToken,
184
+ setAccessToken2 as setAccessToken,
209
185
  useAuthFetch,
210
186
  useLogin,
211
187
  useLogout,
@@ -34,9 +34,9 @@ __export(client_exports, {
34
34
  AuthApply: () => AuthApply,
35
35
  AuthWrapper: () => AuthWrapper,
36
36
  TokenContext: () => TokenContext,
37
- getAccessToken: () => getAccessToken,
38
- refreshAccessToken: () => refreshAccessToken,
39
- setAccessToken: () => setAccessToken,
37
+ getAccessToken: () => import_token_store2.getAccessToken,
38
+ refreshAccessToken: () => import_token_store2.refreshAccessToken,
39
+ setAccessToken: () => import_token_store2.setAccessToken,
40
40
  useAuthFetch: () => useAuthFetch,
41
41
  useLogin: () => useLogin,
42
42
  useLogout: () => useLogout,
@@ -45,6 +45,7 @@ __export(client_exports, {
45
45
  useToken: () => useToken
46
46
  });
47
47
  module.exports = __toCommonJS(client_exports);
48
+ var import_token_store = require("naystack/auth/token-store");
48
49
  var import_react = __toESM(require("react"));
49
50
 
50
51
  // src/env.ts
@@ -97,42 +98,8 @@ function getEnv(key, skipCheck) {
97
98
  return value;
98
99
  }
99
100
 
100
- // src/auth/token-store.ts
101
- var currentToken;
102
- var listeners = /* @__PURE__ */ new Set();
103
- var inFlightRefresh = null;
104
- function getAccessToken() {
105
- return currentToken;
106
- }
107
- function setAccessToken(token) {
108
- if (token === currentToken) return;
109
- currentToken = token;
110
- listeners.forEach((listener) => listener(token));
111
- }
112
- function subscribeToAccessToken(listener) {
113
- listeners.add(listener);
114
- return () => {
115
- listeners.delete(listener);
116
- };
117
- }
118
- function refreshAccessToken() {
119
- if (inFlightRefresh) return inFlightRefresh;
120
- inFlightRefresh = (async () => {
121
- const res = await fetch(
122
- getEnv("NEXT_PUBLIC_EMAIL_AUTH_ENDPOINT" /* NEXT_PUBLIC_EMAIL_AUTH_ENDPOINT */),
123
- { credentials: "include" }
124
- );
125
- if (!res.ok) throw new Error(`Token refresh failed: ${res.status}`);
126
- const token = await res.text() || null;
127
- setAccessToken(token);
128
- return token;
129
- })().finally(() => {
130
- inFlightRefresh = null;
131
- });
132
- return inFlightRefresh;
133
- }
134
-
135
101
  // src/auth/email/client.tsx
102
+ var import_token_store2 = require("naystack/auth/token-store");
136
103
  var TokenContext = (0, import_react.createContext)({
137
104
  token: void 0,
138
105
  setToken: () => null
@@ -142,12 +109,12 @@ var AuthWrapper = ({
142
109
  skipInitialFetch
143
110
  }) => {
144
111
  const [token, setTokenState] = (0, import_react.useState)(
145
- getAccessToken
112
+ import_token_store.getAccessToken
146
113
  );
147
- (0, import_react.useEffect)(() => subscribeToAccessToken(setTokenState), []);
114
+ (0, import_react.useEffect)(() => (0, import_token_store.subscribeToAccessToken)(setTokenState), []);
148
115
  const setToken = (0, import_react.useCallback)((action) => {
149
- setAccessToken(
150
- typeof action === "function" ? action(getAccessToken()) : action
116
+ (0, import_token_store.setAccessToken)(
117
+ typeof action === "function" ? action((0, import_token_store.getAccessToken)()) : action
151
118
  );
152
119
  }, []);
153
120
  return /* @__PURE__ */ import_react.default.createElement(TokenContext.Provider, { value: { token, setToken } }, !skipInitialFetch && /* @__PURE__ */ import_react.default.createElement(AuthChildComponent, null), children);
@@ -159,7 +126,7 @@ function AuthChildComponent() {
159
126
  function useAuthFetch({ skip } = {}) {
160
127
  (0, import_react.useEffect)(() => {
161
128
  if (skip) return;
162
- void refreshAccessToken().catch(() => null);
129
+ void (0, import_token_store.refreshAccessToken)().catch(() => null);
163
130
  }, []);
164
131
  }
165
132
  function AuthApply({ data }) {
@@ -1,5 +1,5 @@
1
1
  import React__default, { Dispatch, SetStateAction, PropsWithChildren } from 'react';
2
- export { getAccessToken, refreshAccessToken, setAccessToken } from '../token-store.mjs';
2
+ export { getAccessToken, refreshAccessToken, setAccessToken } from 'naystack/auth/token-store';
3
3
 
4
4
  /**
5
5
  * React context holding the current access token and setter; used by useToken/useSetToken and auth hooks.
@@ -45,7 +45,7 @@ type AuthWrapperProps = PropsWithChildren<{
45
45
  *
46
46
  * @category Auth
47
47
  */
48
- declare const AuthWrapper: ({ children, skipInitialFetch }: AuthWrapperProps) => React__default.JSX.Element;
48
+ declare const AuthWrapper: ({ children, skipInitialFetch, }: AuthWrapperProps) => React__default.JSX.Element;
49
49
  /**
50
50
  * Fetches the access token on mount by calling the auth endpoint. Stores the result in TokenContext.
51
51
  * Used internally by auth setup; prefer `AuthWrapper` for typical usage.
@@ -1,5 +1,5 @@
1
1
  import React__default, { Dispatch, SetStateAction, PropsWithChildren } from 'react';
2
- export { getAccessToken, refreshAccessToken, setAccessToken } from '../token-store.js';
2
+ export { getAccessToken, refreshAccessToken, setAccessToken } from 'naystack/auth/token-store';
3
3
 
4
4
  /**
5
5
  * React context holding the current access token and setter; used by useToken/useSetToken and auth hooks.
@@ -45,7 +45,7 @@ type AuthWrapperProps = PropsWithChildren<{
45
45
  *
46
46
  * @category Auth
47
47
  */
48
- declare const AuthWrapper: ({ children, skipInitialFetch }: AuthWrapperProps) => React__default.JSX.Element;
48
+ declare const AuthWrapper: ({ children, skipInitialFetch, }: AuthWrapperProps) => React__default.JSX.Element;
49
49
  /**
50
50
  * Fetches the access token on mount by calling the auth endpoint. Stores the result in TokenContext.
51
51
  * Used internally by auth setup; prefer `AuthWrapper` for typical usage.
@@ -1,6 +1,12 @@
1
1
  "use client";
2
2
 
3
3
  // src/auth/email/client.tsx
4
+ import {
5
+ getAccessToken,
6
+ refreshAccessToken,
7
+ setAccessToken,
8
+ subscribeToAccessToken
9
+ } from "naystack/auth/token-store";
4
10
  import React, {
5
11
  createContext,
6
12
  useCallback,
@@ -59,42 +65,12 @@ function getEnv(key, skipCheck) {
59
65
  return value;
60
66
  }
61
67
 
62
- // src/auth/token-store.ts
63
- var currentToken;
64
- var listeners = /* @__PURE__ */ new Set();
65
- var inFlightRefresh = null;
66
- function getAccessToken() {
67
- return currentToken;
68
- }
69
- function setAccessToken(token) {
70
- if (token === currentToken) return;
71
- currentToken = token;
72
- listeners.forEach((listener) => listener(token));
73
- }
74
- function subscribeToAccessToken(listener) {
75
- listeners.add(listener);
76
- return () => {
77
- listeners.delete(listener);
78
- };
79
- }
80
- function refreshAccessToken() {
81
- if (inFlightRefresh) return inFlightRefresh;
82
- inFlightRefresh = (async () => {
83
- const res = await fetch(
84
- getEnv("NEXT_PUBLIC_EMAIL_AUTH_ENDPOINT" /* NEXT_PUBLIC_EMAIL_AUTH_ENDPOINT */),
85
- { credentials: "include" }
86
- );
87
- if (!res.ok) throw new Error(`Token refresh failed: ${res.status}`);
88
- const token = await res.text() || null;
89
- setAccessToken(token);
90
- return token;
91
- })().finally(() => {
92
- inFlightRefresh = null;
93
- });
94
- return inFlightRefresh;
95
- }
96
-
97
68
  // src/auth/email/client.tsx
69
+ import {
70
+ getAccessToken as getAccessToken2,
71
+ refreshAccessToken as refreshAccessToken2,
72
+ setAccessToken as setAccessToken2
73
+ } from "naystack/auth/token-store";
98
74
  var TokenContext = createContext({
99
75
  token: void 0,
100
76
  setToken: () => null
@@ -203,9 +179,9 @@ export {
203
179
  AuthApply,
204
180
  AuthWrapper,
205
181
  TokenContext,
206
- getAccessToken,
207
- refreshAccessToken,
208
- setAccessToken,
182
+ getAccessToken2 as getAccessToken,
183
+ refreshAccessToken2 as refreshAccessToken,
184
+ setAccessToken2 as setAccessToken,
209
185
  useAuthFetch,
210
186
  useLogin,
211
187
  useLogout,
@@ -6,7 +6,7 @@ export { getContext } from './utils.mjs';
6
6
  import '../types.mjs';
7
7
  import 'react';
8
8
  import './client.mjs';
9
- import '../token-store.mjs';
9
+ import 'naystack/auth/token-store';
10
10
  import '../../graphql/types.mjs';
11
11
 
12
12
  /**
@@ -6,7 +6,7 @@ export { getContext } from './utils.js';
6
6
  import '../types.js';
7
7
  import 'react';
8
8
  import './client.js';
9
- import '../token-store.js';
9
+ import 'naystack/auth/token-store';
10
10
  import '../../graphql/types.js';
11
11
 
12
12
  /**
@@ -1,6 +1,6 @@
1
1
  import React__default from 'react';
2
2
  import { AuthWrapperProps } from './client.mjs';
3
- import '../token-store.mjs';
3
+ import 'naystack/auth/token-store';
4
4
 
5
5
  declare function AuthFetch(): React__default.JSX.Element;
6
6
  declare function AuthWrapper({ children, skipInitialFetch }: AuthWrapperProps): React__default.JSX.Element;
@@ -1,6 +1,6 @@
1
1
  import React__default from 'react';
2
2
  import { AuthWrapperProps } from './client.js';
3
- import '../token-store.js';
3
+ import 'naystack/auth/token-store';
4
4
 
5
5
  declare function AuthFetch(): React__default.JSX.Element;
6
6
  declare function AuthWrapper({ children, skipInitialFetch }: AuthWrapperProps): React__default.JSX.Element;
@@ -33,6 +33,7 @@ __export(auth_exports, {
33
33
  AuthFetch: () => AuthFetch,
34
34
  AuthWrapper: () => AuthWrapper,
35
35
  checkAuthStatus: () => checkAuthStatus,
36
+ getAuthorizationHandoff: () => getAuthorizationHandoff,
36
37
  getContext: () => getContext,
37
38
  getInstagramAuthorizationURL: () => getInstagramAuthorizationURL,
38
39
  getRefreshToken: () => getRefreshToken,
@@ -575,9 +576,28 @@ function setupGoogleAuth(props) {
575
576
  }
576
577
 
577
578
  // src/auth/instagram/route.ts
578
- var import_server8 = require("next/server");
579
+ var import_server9 = require("next/server");
579
580
 
580
581
  // src/auth/instagram/utils.ts
582
+ var import_server7 = require("next/server");
583
+ function getAuthorizationHandoff(authorizationURL) {
584
+ const scriptSafeURL = JSON.stringify(authorizationURL).replace(
585
+ /</g,
586
+ "\\u003c"
587
+ );
588
+ const attributeSafeURL = authorizationURL.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/"/g, "&quot;");
589
+ return new import_server7.NextResponse(
590
+ `<!doctype html><html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><meta name="robots" content="noindex"><title>Connecting\u2026</title><script>location.replace(${scriptSafeURL})</script><noscript><meta http-equiv="refresh" content="0;url=${attributeSafeURL}"></noscript></head><body></body></html>`,
591
+ {
592
+ headers: {
593
+ "content-type": "text/html; charset=utf-8",
594
+ "cache-control": "no-store",
595
+ // The token is in the URL; keep it off the provider's referer log.
596
+ "referrer-policy": "no-referrer"
597
+ }
598
+ }
599
+ );
600
+ }
581
601
  async function getRefreshedInstagramAccessToken(token) {
582
602
  const request = await fetch(
583
603
  `https://graph.instagram.com/refresh_access_token?grant_type=ig_refresh_token&access_token=${token}`
@@ -640,7 +660,7 @@ var getInstagramUser = (token, id, fields) => {
640
660
  };
641
661
 
642
662
  // src/socials/meta-webhook.ts
643
- var import_server7 = require("next/server");
663
+ var import_server8 = require("next/server");
644
664
 
645
665
  // src/auth/instagram/route.ts
646
666
  var getInstagramRoute = ({
@@ -648,7 +668,7 @@ var getInstagramRoute = ({
648
668
  errorRedirectURL,
649
669
  onUser
650
670
  }) => {
651
- const handleError2 = (message) => import_server8.NextResponse.redirect(`${errorRedirectURL}?error=${message}`);
671
+ const handleError2 = (message) => import_server9.NextResponse.redirect(`${errorRedirectURL}?error=${message}`);
652
672
  return async (req) => {
653
673
  const accessCode = req.nextUrl.searchParams.get("code");
654
674
  const error = req.nextUrl.searchParams.get("error");
@@ -656,7 +676,7 @@ var getInstagramRoute = ({
656
676
  if (error) return handleError2(error);
657
677
  if (!accessCode) {
658
678
  if (!stateToken) return handleError2("Invalid request");
659
- return import_server8.NextResponse.redirect(getInstagramAuthorizationURL(stateToken), 302);
679
+ return getAuthorizationHandoff(getInstagramAuthorizationURL(stateToken));
660
680
  }
661
681
  if (!stateToken) return handleError2("Invalid request");
662
682
  const instagramData = await getLongLivedToken(
@@ -676,7 +696,7 @@ var getInstagramRoute = ({
676
696
  instagramData.accessToken
677
697
  );
678
698
  if (errorMessage) return handleError2(errorMessage);
679
- return import_server8.NextResponse.redirect(redirectURL);
699
+ return import_server9.NextResponse.redirect(redirectURL);
680
700
  };
681
701
  };
682
702
 
@@ -698,6 +718,7 @@ async function getRefreshToken() {
698
718
  AuthFetch,
699
719
  AuthWrapper,
700
720
  checkAuthStatus,
721
+ getAuthorizationHandoff,
701
722
  getContext,
702
723
  getInstagramAuthorizationURL,
703
724
  getRefreshToken,
@@ -5,7 +5,7 @@ export { getRefreshToken } from './utils/token.mjs';
5
5
  export { AuthFetch, AuthWrapper } from './email/next.mjs';
6
6
  export { checkAuthStatus, getTokenizedResponse } from './email/token.mjs';
7
7
  export { getContext } from './email/utils.mjs';
8
- export { getInstagramAuthorizationURL, getRefreshedInstagramAccessToken } from './instagram/utils.mjs';
8
+ export { getAuthorizationHandoff, getInstagramAuthorizationURL, getRefreshedInstagramAccessToken } from './instagram/utils.mjs';
9
9
  import 'next/server';
10
10
  import './email/types.mjs';
11
11
  import './types.mjs';
@@ -13,5 +13,5 @@ import 'googleapis';
13
13
  import '../socials/instagram/types.mjs';
14
14
  import 'react';
15
15
  import './email/client.mjs';
16
- import './token-store.mjs';
16
+ import 'naystack/auth/token-store';
17
17
  import '../graphql/types.mjs';
@@ -5,7 +5,7 @@ export { getRefreshToken } from './utils/token.js';
5
5
  export { AuthFetch, AuthWrapper } from './email/next.js';
6
6
  export { checkAuthStatus, getTokenizedResponse } from './email/token.js';
7
7
  export { getContext } from './email/utils.js';
8
- export { getInstagramAuthorizationURL, getRefreshedInstagramAccessToken } from './instagram/utils.js';
8
+ export { getAuthorizationHandoff, getInstagramAuthorizationURL, getRefreshedInstagramAccessToken } from './instagram/utils.js';
9
9
  import 'next/server';
10
10
  import './email/types.js';
11
11
  import './types.js';
@@ -13,5 +13,5 @@ import 'googleapis';
13
13
  import '../socials/instagram/types.js';
14
14
  import 'react';
15
15
  import './email/client.js';
16
- import './token-store.js';
16
+ import 'naystack/auth/token-store';
17
17
  import '../graphql/types.js';
@@ -533,9 +533,28 @@ function setupGoogleAuth(props) {
533
533
  }
534
534
 
535
535
  // src/auth/instagram/route.ts
536
- import { NextResponse as NextResponse7 } from "next/server";
536
+ import { NextResponse as NextResponse8 } from "next/server";
537
537
 
538
538
  // src/auth/instagram/utils.ts
539
+ import { NextResponse as NextResponse6 } from "next/server";
540
+ function getAuthorizationHandoff(authorizationURL) {
541
+ const scriptSafeURL = JSON.stringify(authorizationURL).replace(
542
+ /</g,
543
+ "\\u003c"
544
+ );
545
+ const attributeSafeURL = authorizationURL.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/"/g, "&quot;");
546
+ return new NextResponse6(
547
+ `<!doctype html><html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><meta name="robots" content="noindex"><title>Connecting\u2026</title><script>location.replace(${scriptSafeURL})</script><noscript><meta http-equiv="refresh" content="0;url=${attributeSafeURL}"></noscript></head><body></body></html>`,
548
+ {
549
+ headers: {
550
+ "content-type": "text/html; charset=utf-8",
551
+ "cache-control": "no-store",
552
+ // The token is in the URL; keep it off the provider's referer log.
553
+ "referrer-policy": "no-referrer"
554
+ }
555
+ }
556
+ );
557
+ }
539
558
  async function getRefreshedInstagramAccessToken(token) {
540
559
  const request = await fetch(
541
560
  `https://graph.instagram.com/refresh_access_token?grant_type=ig_refresh_token&access_token=${token}`
@@ -598,7 +617,7 @@ var getInstagramUser = (token, id, fields) => {
598
617
  };
599
618
 
600
619
  // src/socials/meta-webhook.ts
601
- import { NextResponse as NextResponse6 } from "next/server";
620
+ import { NextResponse as NextResponse7 } from "next/server";
602
621
 
603
622
  // src/auth/instagram/route.ts
604
623
  var getInstagramRoute = ({
@@ -606,7 +625,7 @@ var getInstagramRoute = ({
606
625
  errorRedirectURL,
607
626
  onUser
608
627
  }) => {
609
- const handleError2 = (message) => NextResponse7.redirect(`${errorRedirectURL}?error=${message}`);
628
+ const handleError2 = (message) => NextResponse8.redirect(`${errorRedirectURL}?error=${message}`);
610
629
  return async (req) => {
611
630
  const accessCode = req.nextUrl.searchParams.get("code");
612
631
  const error = req.nextUrl.searchParams.get("error");
@@ -614,7 +633,7 @@ var getInstagramRoute = ({
614
633
  if (error) return handleError2(error);
615
634
  if (!accessCode) {
616
635
  if (!stateToken) return handleError2("Invalid request");
617
- return NextResponse7.redirect(getInstagramAuthorizationURL(stateToken), 302);
636
+ return getAuthorizationHandoff(getInstagramAuthorizationURL(stateToken));
618
637
  }
619
638
  if (!stateToken) return handleError2("Invalid request");
620
639
  const instagramData = await getLongLivedToken(
@@ -634,7 +653,7 @@ var getInstagramRoute = ({
634
653
  instagramData.accessToken
635
654
  );
636
655
  if (errorMessage) return handleError2(errorMessage);
637
- return NextResponse7.redirect(redirectURL);
656
+ return NextResponse8.redirect(redirectURL);
638
657
  };
639
658
  };
640
659
 
@@ -655,6 +674,7 @@ export {
655
674
  AuthFetch,
656
675
  AuthWrapper,
657
676
  checkAuthStatus,
677
+ getAuthorizationHandoff,
658
678
  getContext,
659
679
  getInstagramAuthorizationURL,
660
680
  getRefreshToken,