dn-react-router-toolkit 0.3.4 → 0.3.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.
@@ -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,25 @@ 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
+ return new Response(
81
+ JSON.stringify({
82
+ AUTH: auth,
83
+ userAgent,
84
+ ...res
85
+ }),
86
+ { status: 200, headers }
87
+ );
73
88
  }
74
- return res;
89
+ return new Response(JSON.stringify(res), { status: 200, headers });
75
90
  };
76
91
  const accessToken = await authService.getAccessTokenFromRequest(
77
92
  arg.request
@@ -97,11 +112,11 @@ function createWithAuthHandler({ authService }) {
97
112
  );
98
113
  const headers = new Headers();
99
114
  headers.append("Set-Cookie", setCookieHeader);
100
- headers.append("Location", arg.request.url);
101
- return new Response("Temporary Redirect", {
102
- status: 307,
103
- headers
104
- });
115
+ headers.append("Location", new URL(arg.request.url, siteOrigin).href);
116
+ const payload = authService.jwtManager.decode(
117
+ newAccessToken
118
+ );
119
+ return respond(payload, headers);
105
120
  } catch (e) {
106
121
  if (e instanceof Error) {
107
122
  console.log(e.message);
@@ -111,11 +126,8 @@ function createWithAuthHandler({ authService }) {
111
126
  );
112
127
  const headers = new Headers();
113
128
  headers.append("Set-Cookie", setCookieHeader);
114
- headers.append("Location", arg.request.url);
115
- return new Response("Temporary Redirect", {
116
- status: 307,
117
- headers
118
- });
129
+ headers.append("Location", new URL(arg.request.url, siteOrigin).href);
130
+ return respond(void 0, headers);
119
131
  }
120
132
  }
121
133
  return respond(void 0);
@@ -148,6 +160,7 @@ var ReactRouterCookieStore = class {
148
160
  // src/api/create_handler.ts
149
161
  var import_server2 = require("dn-react-toolkit/file/server");
150
162
  var createAPIHandler = ({
163
+ siteOrigin,
151
164
  authService,
152
165
  fileService,
153
166
  passwordRecoveryService,
@@ -158,7 +171,7 @@ var createAPIHandler = ({
158
171
  const { request, params } = args;
159
172
  const method = request.method.toUpperCase();
160
173
  const slug = params["*"] ? params["*"].split("/") : [];
161
- const withAuth = createWithAuthHandler({ authService });
174
+ const withAuth = createWithAuthHandler({ siteOrigin, authService });
162
175
  switch (slug[0]) {
163
176
  case "auth": {
164
177
  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,25 @@ 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
+ return new Response(
85
+ JSON.stringify({
86
+ AUTH: auth,
87
+ userAgent,
88
+ ...res
89
+ }),
90
+ { status: 200, headers }
91
+ );
77
92
  }
78
- return res;
93
+ return new Response(JSON.stringify(res), { status: 200, headers });
79
94
  };
80
95
  const accessToken = await authService.getAccessTokenFromRequest(
81
96
  arg.request
@@ -101,11 +116,11 @@ function createWithAuthHandler({ authService }) {
101
116
  );
102
117
  const headers = new Headers();
103
118
  headers.append("Set-Cookie", setCookieHeader);
104
- headers.append("Location", arg.request.url);
105
- return new Response("Temporary Redirect", {
106
- status: 307,
107
- headers
108
- });
119
+ headers.append("Location", new URL(arg.request.url, siteOrigin).href);
120
+ const payload = authService.jwtManager.decode(
121
+ newAccessToken
122
+ );
123
+ return respond(payload, headers);
109
124
  } catch (e) {
110
125
  if (e instanceof Error) {
111
126
  console.log(e.message);
@@ -115,11 +130,8 @@ function createWithAuthHandler({ authService }) {
115
130
  );
116
131
  const headers = new Headers();
117
132
  headers.append("Set-Cookie", setCookieHeader);
118
- headers.append("Location", arg.request.url);
119
- return new Response("Temporary Redirect", {
120
- status: 307,
121
- headers
122
- });
133
+ headers.append("Location", new URL(arg.request.url, siteOrigin).href);
134
+ return respond(void 0, headers);
123
135
  }
124
136
  }
125
137
  return respond(void 0);
@@ -155,6 +167,7 @@ import {
155
167
  uploadFileHandler
156
168
  } from "dn-react-toolkit/file/server";
157
169
  var createAPIHandler = ({
170
+ siteOrigin,
158
171
  authService,
159
172
  fileService,
160
173
  passwordRecoveryService,
@@ -165,7 +178,7 @@ var createAPIHandler = ({
165
178
  const { request, params } = args;
166
179
  const method = request.method.toUpperCase();
167
180
  const slug = params["*"] ? params["*"].split("/") : [];
168
- const withAuth = createWithAuthHandler({ authService });
181
+ const withAuth = createWithAuthHandler({ siteOrigin, authService });
169
182
  switch (slug[0]) {
170
183
  case "auth": {
171
184
  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,25 @@ 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
+ return new Response(
81
+ JSON.stringify({
82
+ AUTH: auth,
83
+ userAgent,
84
+ ...res
85
+ }),
86
+ { status: 200, headers }
87
+ );
73
88
  }
74
- return res;
89
+ return new Response(JSON.stringify(res), { status: 200, headers });
75
90
  };
76
91
  const accessToken = await authService.getAccessTokenFromRequest(
77
92
  arg.request
@@ -97,11 +112,11 @@ function createWithAuthHandler({ authService }) {
97
112
  );
98
113
  const headers = new Headers();
99
114
  headers.append("Set-Cookie", setCookieHeader);
100
- headers.append("Location", arg.request.url);
101
- return new Response("Temporary Redirect", {
102
- status: 307,
103
- headers
104
- });
115
+ headers.append("Location", new URL(arg.request.url, siteOrigin).href);
116
+ const payload = authService.jwtManager.decode(
117
+ newAccessToken
118
+ );
119
+ return respond(payload, headers);
105
120
  } catch (e) {
106
121
  if (e instanceof Error) {
107
122
  console.log(e.message);
@@ -111,11 +126,8 @@ function createWithAuthHandler({ authService }) {
111
126
  );
112
127
  const headers = new Headers();
113
128
  headers.append("Set-Cookie", setCookieHeader);
114
- headers.append("Location", arg.request.url);
115
- return new Response("Temporary Redirect", {
116
- status: 307,
117
- headers
118
- });
129
+ headers.append("Location", new URL(arg.request.url, siteOrigin).href);
130
+ return respond(void 0, headers);
119
131
  }
120
132
  }
121
133
  return respond(void 0);
@@ -148,6 +160,7 @@ var ReactRouterCookieStore = class {
148
160
  // src/api/create_handler.ts
149
161
  var import_server2 = require("dn-react-toolkit/file/server");
150
162
  var createAPIHandler = ({
163
+ siteOrigin,
151
164
  authService,
152
165
  fileService,
153
166
  passwordRecoveryService,
@@ -158,7 +171,7 @@ var createAPIHandler = ({
158
171
  const { request, params } = args;
159
172
  const method = request.method.toUpperCase();
160
173
  const slug = params["*"] ? params["*"].split("/") : [];
161
- const withAuth = createWithAuthHandler({ authService });
174
+ const withAuth = createWithAuthHandler({ siteOrigin, authService });
162
175
  switch (slug[0]) {
163
176
  case "auth": {
164
177
  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,25 @@ 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
+ return new Response(
85
+ JSON.stringify({
86
+ AUTH: auth,
87
+ userAgent,
88
+ ...res
89
+ }),
90
+ { status: 200, headers }
91
+ );
77
92
  }
78
- return res;
93
+ return new Response(JSON.stringify(res), { status: 200, headers });
79
94
  };
80
95
  const accessToken = await authService.getAccessTokenFromRequest(
81
96
  arg.request
@@ -101,11 +116,11 @@ function createWithAuthHandler({ authService }) {
101
116
  );
102
117
  const headers = new Headers();
103
118
  headers.append("Set-Cookie", setCookieHeader);
104
- headers.append("Location", arg.request.url);
105
- return new Response("Temporary Redirect", {
106
- status: 307,
107
- headers
108
- });
119
+ headers.append("Location", new URL(arg.request.url, siteOrigin).href);
120
+ const payload = authService.jwtManager.decode(
121
+ newAccessToken
122
+ );
123
+ return respond(payload, headers);
109
124
  } catch (e) {
110
125
  if (e instanceof Error) {
111
126
  console.log(e.message);
@@ -115,11 +130,8 @@ function createWithAuthHandler({ authService }) {
115
130
  );
116
131
  const headers = new Headers();
117
132
  headers.append("Set-Cookie", setCookieHeader);
118
- headers.append("Location", arg.request.url);
119
- return new Response("Temporary Redirect", {
120
- status: 307,
121
- headers
122
- });
133
+ headers.append("Location", new URL(arg.request.url, siteOrigin).href);
134
+ return respond(void 0, headers);
123
135
  }
124
136
  }
125
137
  return respond(void 0);
@@ -155,6 +167,7 @@ import {
155
167
  uploadFileHandler
156
168
  } from "dn-react-toolkit/file/server";
157
169
  var createAPIHandler = ({
170
+ siteOrigin,
158
171
  authService,
159
172
  fileService,
160
173
  passwordRecoveryService,
@@ -165,7 +178,7 @@ var createAPIHandler = ({
165
178
  const { request, params } = args;
166
179
  const method = request.method.toUpperCase();
167
180
  const slug = params["*"] ? params["*"].split("/") : [];
168
- const withAuth = createWithAuthHandler({ authService });
181
+ const withAuth = createWithAuthHandler({ siteOrigin, authService });
169
182
  switch (slug[0]) {
170
183
  case "auth": {
171
184
  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,25 @@ 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
+ return new Response(
68
+ JSON.stringify({
69
+ AUTH: auth,
70
+ userAgent,
71
+ ...res
72
+ }),
73
+ { status: 200, headers }
74
+ );
60
75
  }
61
- return res;
76
+ return new Response(JSON.stringify(res), { status: 200, headers });
62
77
  };
63
78
  const accessToken = await authService.getAccessTokenFromRequest(
64
79
  arg.request
@@ -84,11 +99,11 @@ function createWithAuthHandler({ authService }) {
84
99
  );
85
100
  const headers = new Headers();
86
101
  headers.append("Set-Cookie", setCookieHeader);
87
- headers.append("Location", arg.request.url);
88
- return new Response("Temporary Redirect", {
89
- status: 307,
90
- headers
91
- });
102
+ headers.append("Location", new URL(arg.request.url, siteOrigin).href);
103
+ const payload = authService.jwtManager.decode(
104
+ newAccessToken
105
+ );
106
+ return respond(payload, headers);
92
107
  } catch (e) {
93
108
  if (e instanceof Error) {
94
109
  console.log(e.message);
@@ -98,11 +113,8 @@ function createWithAuthHandler({ authService }) {
98
113
  );
99
114
  const headers = new Headers();
100
115
  headers.append("Set-Cookie", setCookieHeader);
101
- headers.append("Location", arg.request.url);
102
- return new Response("Temporary Redirect", {
103
- status: 307,
104
- headers
105
- });
116
+ headers.append("Location", new URL(arg.request.url, siteOrigin).href);
117
+ return respond(void 0, headers);
106
118
  }
107
119
  }
108
120
  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,25 @@ 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
+ return new Response(
42
+ JSON.stringify({
43
+ AUTH: auth,
44
+ userAgent,
45
+ ...res
46
+ }),
47
+ { status: 200, headers }
48
+ );
34
49
  }
35
- return res;
50
+ return new Response(JSON.stringify(res), { status: 200, headers });
36
51
  };
37
52
  const accessToken = await authService.getAccessTokenFromRequest(
38
53
  arg.request
@@ -58,11 +73,11 @@ function createWithAuthHandler({ authService }) {
58
73
  );
59
74
  const headers = new Headers();
60
75
  headers.append("Set-Cookie", setCookieHeader);
61
- headers.append("Location", arg.request.url);
62
- return new Response("Temporary Redirect", {
63
- status: 307,
64
- headers
65
- });
76
+ headers.append("Location", new URL(arg.request.url, siteOrigin).href);
77
+ const payload = authService.jwtManager.decode(
78
+ newAccessToken
79
+ );
80
+ return respond(payload, headers);
66
81
  } catch (e) {
67
82
  if (e instanceof Error) {
68
83
  console.log(e.message);
@@ -72,11 +87,8 @@ function createWithAuthHandler({ authService }) {
72
87
  );
73
88
  const headers = new Headers();
74
89
  headers.append("Set-Cookie", setCookieHeader);
75
- headers.append("Location", arg.request.url);
76
- return new Response("Temporary Redirect", {
77
- status: 307,
78
- headers
79
- });
90
+ headers.append("Location", new URL(arg.request.url, siteOrigin).href);
91
+ return respond(void 0, headers);
80
92
  }
81
93
  }
82
94
  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,25 @@ 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
+ return new Response(
63
+ JSON.stringify({
64
+ AUTH: auth,
65
+ userAgent,
66
+ ...res
67
+ }),
68
+ { status: 200, headers }
69
+ );
55
70
  }
56
- return res;
71
+ return new Response(JSON.stringify(res), { status: 200, headers });
57
72
  };
58
73
  const accessToken = await authService.getAccessTokenFromRequest(
59
74
  arg.request
@@ -79,11 +94,11 @@ function createWithAuthHandler({ authService }) {
79
94
  );
80
95
  const headers = new Headers();
81
96
  headers.append("Set-Cookie", setCookieHeader);
82
- headers.append("Location", arg.request.url);
83
- return new Response("Temporary Redirect", {
84
- status: 307,
85
- headers
86
- });
97
+ headers.append("Location", new URL(arg.request.url, siteOrigin).href);
98
+ const payload = authService.jwtManager.decode(
99
+ newAccessToken
100
+ );
101
+ return respond(payload, headers);
87
102
  } catch (e) {
88
103
  if (e instanceof Error) {
89
104
  console.log(e.message);
@@ -93,11 +108,8 @@ function createWithAuthHandler({ authService }) {
93
108
  );
94
109
  const headers = new Headers();
95
110
  headers.append("Set-Cookie", setCookieHeader);
96
- headers.append("Location", arg.request.url);
97
- return new Response("Temporary Redirect", {
98
- status: 307,
99
- headers
100
- });
111
+ headers.append("Location", new URL(arg.request.url, siteOrigin).href);
112
+ return respond(void 0, headers);
101
113
  }
102
114
  }
103
115
  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,25 @@ 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
+ return new Response(
39
+ JSON.stringify({
40
+ AUTH: auth,
41
+ userAgent,
42
+ ...res
43
+ }),
44
+ { status: 200, headers }
45
+ );
31
46
  }
32
- return res;
47
+ return new Response(JSON.stringify(res), { status: 200, headers });
33
48
  };
34
49
  const accessToken = await authService.getAccessTokenFromRequest(
35
50
  arg.request
@@ -55,11 +70,11 @@ function createWithAuthHandler({ authService }) {
55
70
  );
56
71
  const headers = new Headers();
57
72
  headers.append("Set-Cookie", setCookieHeader);
58
- headers.append("Location", arg.request.url);
59
- return new Response("Temporary Redirect", {
60
- status: 307,
61
- headers
62
- });
73
+ headers.append("Location", new URL(arg.request.url, siteOrigin).href);
74
+ const payload = authService.jwtManager.decode(
75
+ newAccessToken
76
+ );
77
+ return respond(payload, headers);
63
78
  } catch (e) {
64
79
  if (e instanceof Error) {
65
80
  console.log(e.message);
@@ -69,11 +84,8 @@ function createWithAuthHandler({ authService }) {
69
84
  );
70
85
  const headers = new Headers();
71
86
  headers.append("Set-Cookie", setCookieHeader);
72
- headers.append("Location", arg.request.url);
73
- return new Response("Temporary Redirect", {
74
- status: 307,
75
- headers
76
- });
87
+ headers.append("Location", new URL(arg.request.url, siteOrigin).href);
88
+ return respond(void 0, headers);
77
89
  }
78
90
  }
79
91
  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.6",
4
4
  "types": "./dist/index.d.ts",
5
5
  "main": "./dist/index.mjs",
6
6
  "module": "./dist/index.js",