dn-react-router-toolkit 0.3.4 → 0.3.7

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.
@@ -2,7 +2,8 @@ import { LoaderFunctionArgs, ActionFunctionArgs } from 'react-router';
2
2
  import { AuthService, PasswordRecoveryService, ThirdpartyAuth } from 'dn-react-toolkit/auth/server';
3
3
  import { FileService } from 'dn-react-toolkit/file/server';
4
4
 
5
- declare const createAPIHandler: <TFile>({ authService, fileService, passwordRecoveryService, getThirdPartyAuth, signupTokenSecret, }: {
5
+ declare const createAPIHandler: <TFile>({ siteOrigin, authService, fileService, passwordRecoveryService, getThirdPartyAuth, signupTokenSecret, }: {
6
+ siteOrigin: string;
6
7
  authService: AuthService<TFile>;
7
8
  fileService: FileService<TFile>;
8
9
  passwordRecoveryService: PasswordRecoveryService;
@@ -2,7 +2,8 @@ import { LoaderFunctionArgs, ActionFunctionArgs } from 'react-router';
2
2
  import { AuthService, PasswordRecoveryService, ThirdpartyAuth } from 'dn-react-toolkit/auth/server';
3
3
  import { FileService } from 'dn-react-toolkit/file/server';
4
4
 
5
- declare const createAPIHandler: <TFile>({ authService, fileService, passwordRecoveryService, getThirdPartyAuth, signupTokenSecret, }: {
5
+ declare const createAPIHandler: <TFile>({ siteOrigin, authService, fileService, passwordRecoveryService, getThirdPartyAuth, signupTokenSecret, }: {
6
+ siteOrigin: string;
6
7
  authService: AuthService<TFile>;
7
8
  fileService: FileService<TFile>;
8
9
  passwordRecoveryService: PasswordRecoveryService;
@@ -41,14 +41,23 @@ __export(auth_exports, {
41
41
  __reExport(auth_exports, require("dn-react-toolkit/auth"));
42
42
 
43
43
  // src/auth/with_auth.ts
44
- function createWithAuthHandler({ authService }) {
44
+ function createWithAuthHandler({
45
+ siteOrigin,
46
+ authService
47
+ }) {
45
48
  return function(fn) {
46
49
  const handler = async function(arg) {
47
- const respond = async (auth) => {
50
+ const respond = async (auth, headers) => {
48
51
  const userAgent = arg.request.headers.get("User-Agent") || "";
49
52
  const res = await fn(auth)(arg);
50
53
  if (typeof res === "object" && res !== null && !Array.isArray(res)) {
51
54
  if (res instanceof Response) {
55
+ const mergedHeaders = new Headers(res.headers);
56
+ if (headers) {
57
+ headers.forEach((value, key) => {
58
+ mergedHeaders.set(key, value);
59
+ });
60
+ }
52
61
  if (res.status < 300 && res.headers.get("Content-Type")?.includes("application/json")) {
53
62
  const data = await res.json();
54
63
  return new Response(
@@ -59,19 +68,27 @@ function createWithAuthHandler({ authService }) {
59
68
  }),
60
69
  {
61
70
  status: res.status,
62
- headers: res.headers
71
+ headers: mergedHeaders
63
72
  }
64
73
  );
65
74
  }
66
- return res;
75
+ return new Response(res.body, {
76
+ status: res.status,
77
+ headers: mergedHeaders
78
+ });
67
79
  }
68
- return {
69
- AUTH: auth,
70
- userAgent,
71
- ...res
72
- };
80
+ headers?.set("Content-Type", "application/json");
81
+ return new Response(
82
+ JSON.stringify({
83
+ AUTH: auth,
84
+ userAgent,
85
+ ...res
86
+ }),
87
+ { status: 200, headers }
88
+ );
73
89
  }
74
- return res;
90
+ headers?.set("Content-Type", "application/json");
91
+ return new Response(JSON.stringify(res), { status: 200, headers });
75
92
  };
76
93
  const accessToken = await authService.getAccessTokenFromRequest(
77
94
  arg.request
@@ -97,11 +114,11 @@ function createWithAuthHandler({ authService }) {
97
114
  );
98
115
  const headers = new Headers();
99
116
  headers.append("Set-Cookie", setCookieHeader);
100
- headers.append("Location", arg.request.url);
101
- return new Response("Temporary Redirect", {
102
- status: 307,
103
- headers
104
- });
117
+ headers.append("Location", new URL(arg.request.url, siteOrigin).href);
118
+ const payload = authService.jwtManager.decode(
119
+ newAccessToken
120
+ );
121
+ return respond(payload, headers);
105
122
  } catch (e) {
106
123
  if (e instanceof Error) {
107
124
  console.log(e.message);
@@ -111,11 +128,8 @@ function createWithAuthHandler({ authService }) {
111
128
  );
112
129
  const headers = new Headers();
113
130
  headers.append("Set-Cookie", setCookieHeader);
114
- headers.append("Location", arg.request.url);
115
- return new Response("Temporary Redirect", {
116
- status: 307,
117
- headers
118
- });
131
+ headers.append("Location", new URL(arg.request.url, siteOrigin).href);
132
+ return respond(void 0, headers);
119
133
  }
120
134
  }
121
135
  return respond(void 0);
@@ -148,6 +162,7 @@ var ReactRouterCookieStore = class {
148
162
  // src/api/create_handler.ts
149
163
  var import_server2 = require("dn-react-toolkit/file/server");
150
164
  var createAPIHandler = ({
165
+ siteOrigin,
151
166
  authService,
152
167
  fileService,
153
168
  passwordRecoveryService,
@@ -158,7 +173,7 @@ var createAPIHandler = ({
158
173
  const { request, params } = args;
159
174
  const method = request.method.toUpperCase();
160
175
  const slug = params["*"] ? params["*"].split("/") : [];
161
- const withAuth = createWithAuthHandler({ authService });
176
+ const withAuth = createWithAuthHandler({ siteOrigin, authService });
162
177
  switch (slug[0]) {
163
178
  case "auth": {
164
179
  switch (slug[1]) {
@@ -45,14 +45,23 @@ __reExport(auth_exports, auth_star);
45
45
  import * as auth_star from "dn-react-toolkit/auth";
46
46
 
47
47
  // src/auth/with_auth.ts
48
- function createWithAuthHandler({ authService }) {
48
+ function createWithAuthHandler({
49
+ siteOrigin,
50
+ authService
51
+ }) {
49
52
  return function(fn) {
50
53
  const handler = async function(arg) {
51
- const respond = async (auth) => {
54
+ const respond = async (auth, headers) => {
52
55
  const userAgent = arg.request.headers.get("User-Agent") || "";
53
56
  const res = await fn(auth)(arg);
54
57
  if (typeof res === "object" && res !== null && !Array.isArray(res)) {
55
58
  if (res instanceof Response) {
59
+ const mergedHeaders = new Headers(res.headers);
60
+ if (headers) {
61
+ headers.forEach((value, key) => {
62
+ mergedHeaders.set(key, value);
63
+ });
64
+ }
56
65
  if (res.status < 300 && res.headers.get("Content-Type")?.includes("application/json")) {
57
66
  const data = await res.json();
58
67
  return new Response(
@@ -63,19 +72,27 @@ function createWithAuthHandler({ authService }) {
63
72
  }),
64
73
  {
65
74
  status: res.status,
66
- headers: res.headers
75
+ headers: mergedHeaders
67
76
  }
68
77
  );
69
78
  }
70
- return res;
79
+ return new Response(res.body, {
80
+ status: res.status,
81
+ headers: mergedHeaders
82
+ });
71
83
  }
72
- return {
73
- AUTH: auth,
74
- userAgent,
75
- ...res
76
- };
84
+ headers?.set("Content-Type", "application/json");
85
+ return new Response(
86
+ JSON.stringify({
87
+ AUTH: auth,
88
+ userAgent,
89
+ ...res
90
+ }),
91
+ { status: 200, headers }
92
+ );
77
93
  }
78
- return res;
94
+ headers?.set("Content-Type", "application/json");
95
+ return new Response(JSON.stringify(res), { status: 200, headers });
79
96
  };
80
97
  const accessToken = await authService.getAccessTokenFromRequest(
81
98
  arg.request
@@ -101,11 +118,11 @@ function createWithAuthHandler({ authService }) {
101
118
  );
102
119
  const headers = new Headers();
103
120
  headers.append("Set-Cookie", setCookieHeader);
104
- headers.append("Location", arg.request.url);
105
- return new Response("Temporary Redirect", {
106
- status: 307,
107
- headers
108
- });
121
+ headers.append("Location", new URL(arg.request.url, siteOrigin).href);
122
+ const payload = authService.jwtManager.decode(
123
+ newAccessToken
124
+ );
125
+ return respond(payload, headers);
109
126
  } catch (e) {
110
127
  if (e instanceof Error) {
111
128
  console.log(e.message);
@@ -115,11 +132,8 @@ function createWithAuthHandler({ authService }) {
115
132
  );
116
133
  const headers = new Headers();
117
134
  headers.append("Set-Cookie", setCookieHeader);
118
- headers.append("Location", arg.request.url);
119
- return new Response("Temporary Redirect", {
120
- status: 307,
121
- headers
122
- });
135
+ headers.append("Location", new URL(arg.request.url, siteOrigin).href);
136
+ return respond(void 0, headers);
123
137
  }
124
138
  }
125
139
  return respond(void 0);
@@ -155,6 +169,7 @@ import {
155
169
  uploadFileHandler
156
170
  } from "dn-react-toolkit/file/server";
157
171
  var createAPIHandler = ({
172
+ siteOrigin,
158
173
  authService,
159
174
  fileService,
160
175
  passwordRecoveryService,
@@ -165,7 +180,7 @@ var createAPIHandler = ({
165
180
  const { request, params } = args;
166
181
  const method = request.method.toUpperCase();
167
182
  const slug = params["*"] ? params["*"].split("/") : [];
168
- const withAuth = createWithAuthHandler({ authService });
183
+ const withAuth = createWithAuthHandler({ siteOrigin, authService });
169
184
  switch (slug[0]) {
170
185
  case "auth": {
171
186
  switch (slug[1]) {
package/dist/api/index.js CHANGED
@@ -41,14 +41,23 @@ __export(auth_exports, {
41
41
  __reExport(auth_exports, require("dn-react-toolkit/auth"));
42
42
 
43
43
  // src/auth/with_auth.ts
44
- function createWithAuthHandler({ authService }) {
44
+ function createWithAuthHandler({
45
+ siteOrigin,
46
+ authService
47
+ }) {
45
48
  return function(fn) {
46
49
  const handler = async function(arg) {
47
- const respond = async (auth) => {
50
+ const respond = async (auth, headers) => {
48
51
  const userAgent = arg.request.headers.get("User-Agent") || "";
49
52
  const res = await fn(auth)(arg);
50
53
  if (typeof res === "object" && res !== null && !Array.isArray(res)) {
51
54
  if (res instanceof Response) {
55
+ const mergedHeaders = new Headers(res.headers);
56
+ if (headers) {
57
+ headers.forEach((value, key) => {
58
+ mergedHeaders.set(key, value);
59
+ });
60
+ }
52
61
  if (res.status < 300 && res.headers.get("Content-Type")?.includes("application/json")) {
53
62
  const data = await res.json();
54
63
  return new Response(
@@ -59,19 +68,27 @@ function createWithAuthHandler({ authService }) {
59
68
  }),
60
69
  {
61
70
  status: res.status,
62
- headers: res.headers
71
+ headers: mergedHeaders
63
72
  }
64
73
  );
65
74
  }
66
- return res;
75
+ return new Response(res.body, {
76
+ status: res.status,
77
+ headers: mergedHeaders
78
+ });
67
79
  }
68
- return {
69
- AUTH: auth,
70
- userAgent,
71
- ...res
72
- };
80
+ headers?.set("Content-Type", "application/json");
81
+ return new Response(
82
+ JSON.stringify({
83
+ AUTH: auth,
84
+ userAgent,
85
+ ...res
86
+ }),
87
+ { status: 200, headers }
88
+ );
73
89
  }
74
- return res;
90
+ headers?.set("Content-Type", "application/json");
91
+ return new Response(JSON.stringify(res), { status: 200, headers });
75
92
  };
76
93
  const accessToken = await authService.getAccessTokenFromRequest(
77
94
  arg.request
@@ -97,11 +114,11 @@ function createWithAuthHandler({ authService }) {
97
114
  );
98
115
  const headers = new Headers();
99
116
  headers.append("Set-Cookie", setCookieHeader);
100
- headers.append("Location", arg.request.url);
101
- return new Response("Temporary Redirect", {
102
- status: 307,
103
- headers
104
- });
117
+ headers.append("Location", new URL(arg.request.url, siteOrigin).href);
118
+ const payload = authService.jwtManager.decode(
119
+ newAccessToken
120
+ );
121
+ return respond(payload, headers);
105
122
  } catch (e) {
106
123
  if (e instanceof Error) {
107
124
  console.log(e.message);
@@ -111,11 +128,8 @@ function createWithAuthHandler({ authService }) {
111
128
  );
112
129
  const headers = new Headers();
113
130
  headers.append("Set-Cookie", setCookieHeader);
114
- headers.append("Location", arg.request.url);
115
- return new Response("Temporary Redirect", {
116
- status: 307,
117
- headers
118
- });
131
+ headers.append("Location", new URL(arg.request.url, siteOrigin).href);
132
+ return respond(void 0, headers);
119
133
  }
120
134
  }
121
135
  return respond(void 0);
@@ -148,6 +162,7 @@ var ReactRouterCookieStore = class {
148
162
  // src/api/create_handler.ts
149
163
  var import_server2 = require("dn-react-toolkit/file/server");
150
164
  var createAPIHandler = ({
165
+ siteOrigin,
151
166
  authService,
152
167
  fileService,
153
168
  passwordRecoveryService,
@@ -158,7 +173,7 @@ var createAPIHandler = ({
158
173
  const { request, params } = args;
159
174
  const method = request.method.toUpperCase();
160
175
  const slug = params["*"] ? params["*"].split("/") : [];
161
- const withAuth = createWithAuthHandler({ authService });
176
+ const withAuth = createWithAuthHandler({ siteOrigin, authService });
162
177
  switch (slug[0]) {
163
178
  case "auth": {
164
179
  switch (slug[1]) {
@@ -45,14 +45,23 @@ __reExport(auth_exports, auth_star);
45
45
  import * as auth_star from "dn-react-toolkit/auth";
46
46
 
47
47
  // src/auth/with_auth.ts
48
- function createWithAuthHandler({ authService }) {
48
+ function createWithAuthHandler({
49
+ siteOrigin,
50
+ authService
51
+ }) {
49
52
  return function(fn) {
50
53
  const handler = async function(arg) {
51
- const respond = async (auth) => {
54
+ const respond = async (auth, headers) => {
52
55
  const userAgent = arg.request.headers.get("User-Agent") || "";
53
56
  const res = await fn(auth)(arg);
54
57
  if (typeof res === "object" && res !== null && !Array.isArray(res)) {
55
58
  if (res instanceof Response) {
59
+ const mergedHeaders = new Headers(res.headers);
60
+ if (headers) {
61
+ headers.forEach((value, key) => {
62
+ mergedHeaders.set(key, value);
63
+ });
64
+ }
56
65
  if (res.status < 300 && res.headers.get("Content-Type")?.includes("application/json")) {
57
66
  const data = await res.json();
58
67
  return new Response(
@@ -63,19 +72,27 @@ function createWithAuthHandler({ authService }) {
63
72
  }),
64
73
  {
65
74
  status: res.status,
66
- headers: res.headers
75
+ headers: mergedHeaders
67
76
  }
68
77
  );
69
78
  }
70
- return res;
79
+ return new Response(res.body, {
80
+ status: res.status,
81
+ headers: mergedHeaders
82
+ });
71
83
  }
72
- return {
73
- AUTH: auth,
74
- userAgent,
75
- ...res
76
- };
84
+ headers?.set("Content-Type", "application/json");
85
+ return new Response(
86
+ JSON.stringify({
87
+ AUTH: auth,
88
+ userAgent,
89
+ ...res
90
+ }),
91
+ { status: 200, headers }
92
+ );
77
93
  }
78
- return res;
94
+ headers?.set("Content-Type", "application/json");
95
+ return new Response(JSON.stringify(res), { status: 200, headers });
79
96
  };
80
97
  const accessToken = await authService.getAccessTokenFromRequest(
81
98
  arg.request
@@ -101,11 +118,11 @@ function createWithAuthHandler({ authService }) {
101
118
  );
102
119
  const headers = new Headers();
103
120
  headers.append("Set-Cookie", setCookieHeader);
104
- headers.append("Location", arg.request.url);
105
- return new Response("Temporary Redirect", {
106
- status: 307,
107
- headers
108
- });
121
+ headers.append("Location", new URL(arg.request.url, siteOrigin).href);
122
+ const payload = authService.jwtManager.decode(
123
+ newAccessToken
124
+ );
125
+ return respond(payload, headers);
109
126
  } catch (e) {
110
127
  if (e instanceof Error) {
111
128
  console.log(e.message);
@@ -115,11 +132,8 @@ function createWithAuthHandler({ authService }) {
115
132
  );
116
133
  const headers = new Headers();
117
134
  headers.append("Set-Cookie", setCookieHeader);
118
- headers.append("Location", arg.request.url);
119
- return new Response("Temporary Redirect", {
120
- status: 307,
121
- headers
122
- });
135
+ headers.append("Location", new URL(arg.request.url, siteOrigin).href);
136
+ return respond(void 0, headers);
123
137
  }
124
138
  }
125
139
  return respond(void 0);
@@ -155,6 +169,7 @@ import {
155
169
  uploadFileHandler
156
170
  } from "dn-react-toolkit/file/server";
157
171
  var createAPIHandler = ({
172
+ siteOrigin,
158
173
  authService,
159
174
  fileService,
160
175
  passwordRecoveryService,
@@ -165,7 +180,7 @@ var createAPIHandler = ({
165
180
  const { request, params } = args;
166
181
  const method = request.method.toUpperCase();
167
182
  const slug = params["*"] ? params["*"].split("/") : [];
168
- const withAuth = createWithAuthHandler({ authService });
183
+ const withAuth = createWithAuthHandler({ siteOrigin, authService });
169
184
  switch (slug[0]) {
170
185
  case "auth": {
171
186
  switch (slug[1]) {
@@ -28,14 +28,23 @@ module.exports = __toCommonJS(auth_exports);
28
28
  __reExport(auth_exports, require("dn-react-toolkit/auth"), module.exports);
29
29
 
30
30
  // src/auth/with_auth.ts
31
- function createWithAuthHandler({ authService }) {
31
+ function createWithAuthHandler({
32
+ siteOrigin,
33
+ authService
34
+ }) {
32
35
  return function(fn) {
33
36
  const handler = async function(arg) {
34
- const respond = async (auth) => {
37
+ const respond = async (auth, headers) => {
35
38
  const userAgent = arg.request.headers.get("User-Agent") || "";
36
39
  const res = await fn(auth)(arg);
37
40
  if (typeof res === "object" && res !== null && !Array.isArray(res)) {
38
41
  if (res instanceof Response) {
42
+ const mergedHeaders = new Headers(res.headers);
43
+ if (headers) {
44
+ headers.forEach((value, key) => {
45
+ mergedHeaders.set(key, value);
46
+ });
47
+ }
39
48
  if (res.status < 300 && res.headers.get("Content-Type")?.includes("application/json")) {
40
49
  const data = await res.json();
41
50
  return new Response(
@@ -46,19 +55,27 @@ function createWithAuthHandler({ authService }) {
46
55
  }),
47
56
  {
48
57
  status: res.status,
49
- headers: res.headers
58
+ headers: mergedHeaders
50
59
  }
51
60
  );
52
61
  }
53
- return res;
62
+ return new Response(res.body, {
63
+ status: res.status,
64
+ headers: mergedHeaders
65
+ });
54
66
  }
55
- return {
56
- AUTH: auth,
57
- userAgent,
58
- ...res
59
- };
67
+ headers?.set("Content-Type", "application/json");
68
+ return new Response(
69
+ JSON.stringify({
70
+ AUTH: auth,
71
+ userAgent,
72
+ ...res
73
+ }),
74
+ { status: 200, headers }
75
+ );
60
76
  }
61
- return res;
77
+ headers?.set("Content-Type", "application/json");
78
+ return new Response(JSON.stringify(res), { status: 200, headers });
62
79
  };
63
80
  const accessToken = await authService.getAccessTokenFromRequest(
64
81
  arg.request
@@ -84,11 +101,11 @@ function createWithAuthHandler({ authService }) {
84
101
  );
85
102
  const headers = new Headers();
86
103
  headers.append("Set-Cookie", setCookieHeader);
87
- headers.append("Location", arg.request.url);
88
- return new Response("Temporary Redirect", {
89
- status: 307,
90
- headers
91
- });
104
+ headers.append("Location", new URL(arg.request.url, siteOrigin).href);
105
+ const payload = authService.jwtManager.decode(
106
+ newAccessToken
107
+ );
108
+ return respond(payload, headers);
92
109
  } catch (e) {
93
110
  if (e instanceof Error) {
94
111
  console.log(e.message);
@@ -98,11 +115,8 @@ function createWithAuthHandler({ authService }) {
98
115
  );
99
116
  const headers = new Headers();
100
117
  headers.append("Set-Cookie", setCookieHeader);
101
- headers.append("Location", arg.request.url);
102
- return new Response("Temporary Redirect", {
103
- status: 307,
104
- headers
105
- });
118
+ headers.append("Location", new URL(arg.request.url, siteOrigin).href);
119
+ return respond(void 0, headers);
106
120
  }
107
121
  }
108
122
  return respond(void 0);
@@ -2,14 +2,23 @@
2
2
  export * from "dn-react-toolkit/auth";
3
3
 
4
4
  // src/auth/with_auth.ts
5
- function createWithAuthHandler({ authService }) {
5
+ function createWithAuthHandler({
6
+ siteOrigin,
7
+ authService
8
+ }) {
6
9
  return function(fn) {
7
10
  const handler = async function(arg) {
8
- const respond = async (auth) => {
11
+ const respond = async (auth, headers) => {
9
12
  const userAgent = arg.request.headers.get("User-Agent") || "";
10
13
  const res = await fn(auth)(arg);
11
14
  if (typeof res === "object" && res !== null && !Array.isArray(res)) {
12
15
  if (res instanceof Response) {
16
+ const mergedHeaders = new Headers(res.headers);
17
+ if (headers) {
18
+ headers.forEach((value, key) => {
19
+ mergedHeaders.set(key, value);
20
+ });
21
+ }
13
22
  if (res.status < 300 && res.headers.get("Content-Type")?.includes("application/json")) {
14
23
  const data = await res.json();
15
24
  return new Response(
@@ -20,19 +29,27 @@ function createWithAuthHandler({ authService }) {
20
29
  }),
21
30
  {
22
31
  status: res.status,
23
- headers: res.headers
32
+ headers: mergedHeaders
24
33
  }
25
34
  );
26
35
  }
27
- return res;
36
+ return new Response(res.body, {
37
+ status: res.status,
38
+ headers: mergedHeaders
39
+ });
28
40
  }
29
- return {
30
- AUTH: auth,
31
- userAgent,
32
- ...res
33
- };
41
+ headers?.set("Content-Type", "application/json");
42
+ return new Response(
43
+ JSON.stringify({
44
+ AUTH: auth,
45
+ userAgent,
46
+ ...res
47
+ }),
48
+ { status: 200, headers }
49
+ );
34
50
  }
35
- return res;
51
+ headers?.set("Content-Type", "application/json");
52
+ return new Response(JSON.stringify(res), { status: 200, headers });
36
53
  };
37
54
  const accessToken = await authService.getAccessTokenFromRequest(
38
55
  arg.request
@@ -58,11 +75,11 @@ function createWithAuthHandler({ authService }) {
58
75
  );
59
76
  const headers = new Headers();
60
77
  headers.append("Set-Cookie", setCookieHeader);
61
- headers.append("Location", arg.request.url);
62
- return new Response("Temporary Redirect", {
63
- status: 307,
64
- headers
65
- });
78
+ headers.append("Location", new URL(arg.request.url, siteOrigin).href);
79
+ const payload = authService.jwtManager.decode(
80
+ newAccessToken
81
+ );
82
+ return respond(payload, headers);
66
83
  } catch (e) {
67
84
  if (e instanceof Error) {
68
85
  console.log(e.message);
@@ -72,11 +89,8 @@ function createWithAuthHandler({ authService }) {
72
89
  );
73
90
  const headers = new Headers();
74
91
  headers.append("Set-Cookie", setCookieHeader);
75
- headers.append("Location", arg.request.url);
76
- return new Response("Temporary Redirect", {
77
- status: 307,
78
- headers
79
- });
92
+ headers.append("Location", new URL(arg.request.url, siteOrigin).href);
93
+ return respond(void 0, headers);
80
94
  }
81
95
  }
82
96
  return respond(void 0);
@@ -5,7 +5,8 @@ import { LoaderFunctionArgs, ActionFunctionArgs } from 'react-router';
5
5
  type Handler<T extends LoaderFunctionArgs | ActionFunctionArgs> = (arg: T) => Promise<unknown> | unknown;
6
6
  type InputFN = (auth?: AccessTokenPayload) => Handler<LoaderFunctionArgs> | Handler<ActionFunctionArgs>;
7
7
  type WithAuthHandler<T extends LoaderFunctionArgs | ActionFunctionArgs> = (fn: InputFN) => Handler<T>;
8
- declare function createWithAuthHandler<T extends LoaderFunctionArgs | ActionFunctionArgs>({ authService }: {
8
+ declare function createWithAuthHandler<T extends LoaderFunctionArgs | ActionFunctionArgs>({ siteOrigin, authService, }: {
9
+ siteOrigin: string;
9
10
  authService: AuthService;
10
11
  }): <THandler extends Handler<T>>(fn: (auth?: AccessTokenPayload) => THandler) => THandler;
11
12
 
@@ -5,7 +5,8 @@ import { LoaderFunctionArgs, ActionFunctionArgs } from 'react-router';
5
5
  type Handler<T extends LoaderFunctionArgs | ActionFunctionArgs> = (arg: T) => Promise<unknown> | unknown;
6
6
  type InputFN = (auth?: AccessTokenPayload) => Handler<LoaderFunctionArgs> | Handler<ActionFunctionArgs>;
7
7
  type WithAuthHandler<T extends LoaderFunctionArgs | ActionFunctionArgs> = (fn: InputFN) => Handler<T>;
8
- declare function createWithAuthHandler<T extends LoaderFunctionArgs | ActionFunctionArgs>({ authService }: {
8
+ declare function createWithAuthHandler<T extends LoaderFunctionArgs | ActionFunctionArgs>({ siteOrigin, authService, }: {
9
+ siteOrigin: string;
9
10
  authService: AuthService;
10
11
  }): <THandler extends Handler<T>>(fn: (auth?: AccessTokenPayload) => THandler) => THandler;
11
12
 
@@ -23,14 +23,23 @@ __export(with_auth_exports, {
23
23
  createWithAuthHandler: () => createWithAuthHandler
24
24
  });
25
25
  module.exports = __toCommonJS(with_auth_exports);
26
- function createWithAuthHandler({ authService }) {
26
+ function createWithAuthHandler({
27
+ siteOrigin,
28
+ authService
29
+ }) {
27
30
  return function(fn) {
28
31
  const handler = async function(arg) {
29
- const respond = async (auth) => {
32
+ const respond = async (auth, headers) => {
30
33
  const userAgent = arg.request.headers.get("User-Agent") || "";
31
34
  const res = await fn(auth)(arg);
32
35
  if (typeof res === "object" && res !== null && !Array.isArray(res)) {
33
36
  if (res instanceof Response) {
37
+ const mergedHeaders = new Headers(res.headers);
38
+ if (headers) {
39
+ headers.forEach((value, key) => {
40
+ mergedHeaders.set(key, value);
41
+ });
42
+ }
34
43
  if (res.status < 300 && res.headers.get("Content-Type")?.includes("application/json")) {
35
44
  const data = await res.json();
36
45
  return new Response(
@@ -41,19 +50,27 @@ function createWithAuthHandler({ authService }) {
41
50
  }),
42
51
  {
43
52
  status: res.status,
44
- headers: res.headers
53
+ headers: mergedHeaders
45
54
  }
46
55
  );
47
56
  }
48
- return res;
57
+ return new Response(res.body, {
58
+ status: res.status,
59
+ headers: mergedHeaders
60
+ });
49
61
  }
50
- return {
51
- AUTH: auth,
52
- userAgent,
53
- ...res
54
- };
62
+ headers?.set("Content-Type", "application/json");
63
+ return new Response(
64
+ JSON.stringify({
65
+ AUTH: auth,
66
+ userAgent,
67
+ ...res
68
+ }),
69
+ { status: 200, headers }
70
+ );
55
71
  }
56
- return res;
72
+ headers?.set("Content-Type", "application/json");
73
+ return new Response(JSON.stringify(res), { status: 200, headers });
57
74
  };
58
75
  const accessToken = await authService.getAccessTokenFromRequest(
59
76
  arg.request
@@ -79,11 +96,11 @@ function createWithAuthHandler({ authService }) {
79
96
  );
80
97
  const headers = new Headers();
81
98
  headers.append("Set-Cookie", setCookieHeader);
82
- headers.append("Location", arg.request.url);
83
- return new Response("Temporary Redirect", {
84
- status: 307,
85
- headers
86
- });
99
+ headers.append("Location", new URL(arg.request.url, siteOrigin).href);
100
+ const payload = authService.jwtManager.decode(
101
+ newAccessToken
102
+ );
103
+ return respond(payload, headers);
87
104
  } catch (e) {
88
105
  if (e instanceof Error) {
89
106
  console.log(e.message);
@@ -93,11 +110,8 @@ function createWithAuthHandler({ authService }) {
93
110
  );
94
111
  const headers = new Headers();
95
112
  headers.append("Set-Cookie", setCookieHeader);
96
- headers.append("Location", arg.request.url);
97
- return new Response("Temporary Redirect", {
98
- status: 307,
99
- headers
100
- });
113
+ headers.append("Location", new URL(arg.request.url, siteOrigin).href);
114
+ return respond(void 0, headers);
101
115
  }
102
116
  }
103
117
  return respond(void 0);
@@ -1,12 +1,21 @@
1
1
  // src/auth/with_auth.ts
2
- function createWithAuthHandler({ authService }) {
2
+ function createWithAuthHandler({
3
+ siteOrigin,
4
+ authService
5
+ }) {
3
6
  return function(fn) {
4
7
  const handler = async function(arg) {
5
- const respond = async (auth) => {
8
+ const respond = async (auth, headers) => {
6
9
  const userAgent = arg.request.headers.get("User-Agent") || "";
7
10
  const res = await fn(auth)(arg);
8
11
  if (typeof res === "object" && res !== null && !Array.isArray(res)) {
9
12
  if (res instanceof Response) {
13
+ const mergedHeaders = new Headers(res.headers);
14
+ if (headers) {
15
+ headers.forEach((value, key) => {
16
+ mergedHeaders.set(key, value);
17
+ });
18
+ }
10
19
  if (res.status < 300 && res.headers.get("Content-Type")?.includes("application/json")) {
11
20
  const data = await res.json();
12
21
  return new Response(
@@ -17,19 +26,27 @@ function createWithAuthHandler({ authService }) {
17
26
  }),
18
27
  {
19
28
  status: res.status,
20
- headers: res.headers
29
+ headers: mergedHeaders
21
30
  }
22
31
  );
23
32
  }
24
- return res;
33
+ return new Response(res.body, {
34
+ status: res.status,
35
+ headers: mergedHeaders
36
+ });
25
37
  }
26
- return {
27
- AUTH: auth,
28
- userAgent,
29
- ...res
30
- };
38
+ headers?.set("Content-Type", "application/json");
39
+ return new Response(
40
+ JSON.stringify({
41
+ AUTH: auth,
42
+ userAgent,
43
+ ...res
44
+ }),
45
+ { status: 200, headers }
46
+ );
31
47
  }
32
- return res;
48
+ headers?.set("Content-Type", "application/json");
49
+ return new Response(JSON.stringify(res), { status: 200, headers });
33
50
  };
34
51
  const accessToken = await authService.getAccessTokenFromRequest(
35
52
  arg.request
@@ -55,11 +72,11 @@ function createWithAuthHandler({ authService }) {
55
72
  );
56
73
  const headers = new Headers();
57
74
  headers.append("Set-Cookie", setCookieHeader);
58
- headers.append("Location", arg.request.url);
59
- return new Response("Temporary Redirect", {
60
- status: 307,
61
- headers
62
- });
75
+ headers.append("Location", new URL(arg.request.url, siteOrigin).href);
76
+ const payload = authService.jwtManager.decode(
77
+ newAccessToken
78
+ );
79
+ return respond(payload, headers);
63
80
  } catch (e) {
64
81
  if (e instanceof Error) {
65
82
  console.log(e.message);
@@ -69,11 +86,8 @@ function createWithAuthHandler({ authService }) {
69
86
  );
70
87
  const headers = new Headers();
71
88
  headers.append("Set-Cookie", setCookieHeader);
72
- headers.append("Location", arg.request.url);
73
- return new Response("Temporary Redirect", {
74
- status: 307,
75
- headers
76
- });
89
+ headers.append("Location", new URL(arg.request.url, siteOrigin).href);
90
+ return respond(void 0, headers);
77
91
  }
78
92
  }
79
93
  return respond(void 0);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dn-react-router-toolkit",
3
- "version": "0.3.4",
3
+ "version": "0.3.7",
4
4
  "types": "./dist/index.d.ts",
5
5
  "main": "./dist/index.mjs",
6
6
  "module": "./dist/index.js",