dn-react-router-toolkit 0.4.2 → 0.5.0

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.
Files changed (89) hide show
  1. package/dist/api/create_api_handler.d.mts +28 -0
  2. package/dist/api/create_api_handler.d.ts +28 -0
  3. package/dist/api/create_api_handler.js +148 -0
  4. package/dist/api/create_api_handler.mjs +132 -0
  5. package/dist/api/create_handler.d.mts +1 -1
  6. package/dist/api/create_handler.d.ts +1 -1
  7. package/dist/api/create_handler.js +29 -26
  8. package/dist/api/create_handler.mjs +29 -26
  9. package/dist/api/index.js +29 -26
  10. package/dist/api/index.mjs +29 -26
  11. package/dist/api/item_api_handler.d.mts +18 -0
  12. package/dist/api/item_api_handler.d.ts +18 -0
  13. package/dist/api/item_api_handler.js +55 -0
  14. package/dist/api/item_api_handler.mjs +30 -0
  15. package/dist/auth/index.d.mts +1 -1
  16. package/dist/auth/index.d.ts +1 -1
  17. package/dist/auth/index.js +62 -16
  18. package/dist/auth/index.mjs +60 -15
  19. package/dist/auth/with_auth.d.mts +8 -3
  20. package/dist/auth/with_auth.d.ts +8 -3
  21. package/dist/auth/with_auth.js +62 -16
  22. package/dist/auth/with_auth.mjs +60 -15
  23. package/dist/crud/crud_form.d.mts +13 -0
  24. package/dist/crud/crud_form.d.ts +13 -0
  25. package/dist/crud/crud_form.js +88 -0
  26. package/dist/crud/crud_form.mjs +55 -0
  27. package/dist/crud/crud_form_provider.d.mts +34 -0
  28. package/dist/crud/crud_form_provider.d.ts +34 -0
  29. package/dist/crud/crud_form_provider.js +160 -0
  30. package/dist/crud/crud_form_provider.mjs +124 -0
  31. package/dist/crud/crud_loader.d.mts +21 -0
  32. package/dist/crud/crud_loader.d.ts +21 -0
  33. package/dist/crud/crud_loader.js +288 -0
  34. package/dist/crud/crud_loader.mjs +273 -0
  35. package/dist/crud/crud_page.d.mts +25 -0
  36. package/dist/crud/crud_page.d.ts +25 -0
  37. package/dist/crud/crud_page.js +645 -0
  38. package/dist/crud/crud_page.mjs +616 -0
  39. package/dist/crud/generate_handlers.d.mts +15 -0
  40. package/dist/crud/generate_handlers.d.ts +15 -0
  41. package/dist/crud/generate_handlers.js +39 -0
  42. package/dist/crud/generate_handlers.mjs +14 -0
  43. package/dist/crud/generate_pages.d.mts +11 -0
  44. package/dist/crud/generate_pages.d.ts +11 -0
  45. package/dist/crud/generate_pages.js +52 -0
  46. package/dist/crud/generate_pages.mjs +17 -0
  47. package/dist/crud/generate_routes.d.mts +5 -0
  48. package/dist/crud/generate_routes.d.ts +5 -0
  49. package/dist/crud/generate_routes.js +62 -0
  50. package/dist/crud/generate_routes.mjs +27 -0
  51. package/dist/crud/index.d.mts +21 -0
  52. package/dist/crud/index.d.ts +21 -0
  53. package/dist/crud/index.js +970 -0
  54. package/dist/crud/index.mjs +945 -0
  55. package/dist/db/index.d.mts +4 -0
  56. package/dist/db/index.d.ts +4 -0
  57. package/dist/db/index.js +46 -0
  58. package/dist/db/index.mjs +8 -0
  59. package/dist/index.d.mts +3 -2
  60. package/dist/index.d.ts +3 -2
  61. package/dist/table/buttons.d.mts +10 -0
  62. package/dist/table/buttons.d.ts +10 -0
  63. package/dist/table/buttons.js +102 -0
  64. package/dist/table/buttons.mjs +71 -0
  65. package/dist/table/index.d.mts +9 -0
  66. package/dist/table/index.d.ts +9 -0
  67. package/dist/table/index.js +570 -0
  68. package/dist/table/index.mjs +543 -0
  69. package/dist/table/item_loader.d.mts +12 -0
  70. package/dist/table/item_loader.d.ts +12 -0
  71. package/dist/table/item_loader.js +51 -0
  72. package/dist/table/item_loader.mjs +26 -0
  73. package/dist/table/loader.d.mts +28 -0
  74. package/dist/table/loader.d.ts +28 -0
  75. package/dist/table/loader.js +70 -0
  76. package/dist/table/loader.mjs +48 -0
  77. package/dist/table/page.d.mts +27 -0
  78. package/dist/table/page.d.ts +27 -0
  79. package/dist/table/page.js +444 -0
  80. package/dist/table/page.mjs +415 -0
  81. package/dist/table/repository.d.mts +38 -0
  82. package/dist/table/repository.d.ts +38 -0
  83. package/dist/table/repository.js +76 -0
  84. package/dist/table/repository.mjs +56 -0
  85. package/dist/table/table.d.mts +27 -0
  86. package/dist/table/table.d.ts +27 -0
  87. package/dist/table/table.js +290 -0
  88. package/dist/table/table.mjs +255 -0
  89. package/package.json +78 -59
package/dist/api/index.js CHANGED
@@ -29,13 +29,14 @@ var import_http = require("dn-react-toolkit/http");
29
29
  var import_server = require("dn-react-toolkit/auth/server");
30
30
 
31
31
  // src/auth/with_auth.ts
32
+ var import_uuid = require("uuid");
32
33
  var toResponse = (result) => {
33
34
  if (result instanceof Response) {
34
35
  return result;
35
36
  }
36
37
  return Response.json(result);
37
38
  };
38
- function createWithAuthHandler({ authService }) {
39
+ function createWithStrictAuthHandler({ authService }) {
39
40
  return function(fn) {
40
41
  const handler = async function(arg) {
41
42
  const respond = async (auth, headers = new Headers()) => {
@@ -44,7 +45,7 @@ function createWithAuthHandler({ authService }) {
44
45
  };
45
46
  const setHeader = (res, headers) => {
46
47
  headers.forEach((value, key) => {
47
- res.headers.set(key, value);
48
+ res.headers.append(key, value);
48
49
  });
49
50
  return res;
50
51
  };
@@ -52,9 +53,7 @@ function createWithAuthHandler({ authService }) {
52
53
  arg.request
53
54
  );
54
55
  if (accessToken) {
55
- const payload = await authService.accessTokenManager.verify(
56
- accessToken
57
- );
56
+ const payload = await authService.accessTokenManager.verify(accessToken);
58
57
  if (payload) {
59
58
  return respond(payload);
60
59
  }
@@ -64,23 +63,17 @@ function createWithAuthHandler({ authService }) {
64
63
  );
65
64
  if (refreshToken) {
66
65
  try {
67
- const newAccessToken = await authService.refreshAccessToken(
68
- refreshToken
69
- );
66
+ const newAccessToken = await authService.refreshAccessToken(refreshToken);
70
67
  const setCookieHeader = await authService.getAccessTokenSetCookie(
71
68
  newAccessToken
72
69
  );
73
70
  const headers = new Headers();
74
71
  headers.append("Set-Cookie", setCookieHeader);
75
- const payload = authService.accessTokenManager.decode(
76
- newAccessToken
77
- );
72
+ const payload = authService.accessTokenManager.decode(newAccessToken);
78
73
  return respond(payload, headers);
79
74
  } catch (e) {
80
75
  console.log(e);
81
- const setCookieHeader = await authService.getRefreshTokenSetCookie(
82
- null
83
- );
76
+ const setCookieHeader = await authService.getRefreshTokenSetCookie(null);
84
77
  const headers = new Headers();
85
78
  headers.append("Set-Cookie", setCookieHeader);
86
79
  return respond(void 0, headers);
@@ -108,7 +101,7 @@ var createAPIHandler = ({
108
101
  const { request, params } = args;
109
102
  const method = request.method.toUpperCase();
110
103
  const slug = params["*"] ? params["*"].split("/") : [];
111
- const withAuth = createWithAuthHandler({ authService });
104
+ const withAuth = createWithStrictAuthHandler({ authService });
112
105
  switch (slug[0]) {
113
106
  case "auth": {
114
107
  switch (slug[1]) {
@@ -136,10 +129,13 @@ var createAPIHandler = ({
136
129
  const provider = slug[2];
137
130
  switch (method) {
138
131
  case "POST": {
139
- return (0, import_server.loginWithThirdPartyHandler)(request, {
140
- provider,
141
- getThirdPartyAuth
142
- });
132
+ return (0, import_server.loginWithThirdPartyHandler)(
133
+ request,
134
+ {
135
+ provider,
136
+ getThirdPartyAuth
137
+ }
138
+ );
143
139
  }
144
140
  }
145
141
  }
@@ -178,11 +174,14 @@ var createAPIHandler = ({
178
174
  default: {
179
175
  switch (method) {
180
176
  case "POST": {
181
- return (0, import_server.signUpWithThirdpartyHandler)(request, {
182
- authService,
183
- fileService,
184
- signupTokenManager
185
- });
177
+ return (0, import_server.signUpWithThirdpartyHandler)(
178
+ request,
179
+ {
180
+ authService,
181
+ fileService,
182
+ signupTokenManager
183
+ }
184
+ );
186
185
  }
187
186
  }
188
187
  }
@@ -206,7 +205,9 @@ var createAPIHandler = ({
206
205
  });
207
206
  }
208
207
  case "reset-password": {
209
- return (0, import_server.resetPasswordHandler)(request, { passwordRecoveryService });
208
+ return (0, import_server.resetPasswordHandler)(request, {
209
+ passwordRecoveryService
210
+ });
210
211
  }
211
212
  }
212
213
  }
@@ -216,7 +217,9 @@ var createAPIHandler = ({
216
217
  switch (method) {
217
218
  case "POST": {
218
219
  return withAuth(
219
- (auth) => ({ request: request2 }) => (0, import_server2.uploadFileHandler)({ fileService })(auth)(request2)
220
+ (auth) => ({ request: request2 }) => (0, import_server2.uploadFileHandler)({ fileService })(
221
+ auth
222
+ )(request2)
220
223
  )(args);
221
224
  }
222
225
  }
@@ -14,13 +14,14 @@ import {
14
14
  } from "dn-react-toolkit/auth/server";
15
15
 
16
16
  // src/auth/with_auth.ts
17
+ import { v4 } from "uuid";
17
18
  var toResponse = (result) => {
18
19
  if (result instanceof Response) {
19
20
  return result;
20
21
  }
21
22
  return Response.json(result);
22
23
  };
23
- function createWithAuthHandler({ authService }) {
24
+ function createWithStrictAuthHandler({ authService }) {
24
25
  return function(fn) {
25
26
  const handler = async function(arg) {
26
27
  const respond = async (auth, headers = new Headers()) => {
@@ -29,7 +30,7 @@ function createWithAuthHandler({ authService }) {
29
30
  };
30
31
  const setHeader = (res, headers) => {
31
32
  headers.forEach((value, key) => {
32
- res.headers.set(key, value);
33
+ res.headers.append(key, value);
33
34
  });
34
35
  return res;
35
36
  };
@@ -37,9 +38,7 @@ function createWithAuthHandler({ authService }) {
37
38
  arg.request
38
39
  );
39
40
  if (accessToken) {
40
- const payload = await authService.accessTokenManager.verify(
41
- accessToken
42
- );
41
+ const payload = await authService.accessTokenManager.verify(accessToken);
43
42
  if (payload) {
44
43
  return respond(payload);
45
44
  }
@@ -49,23 +48,17 @@ function createWithAuthHandler({ authService }) {
49
48
  );
50
49
  if (refreshToken) {
51
50
  try {
52
- const newAccessToken = await authService.refreshAccessToken(
53
- refreshToken
54
- );
51
+ const newAccessToken = await authService.refreshAccessToken(refreshToken);
55
52
  const setCookieHeader = await authService.getAccessTokenSetCookie(
56
53
  newAccessToken
57
54
  );
58
55
  const headers = new Headers();
59
56
  headers.append("Set-Cookie", setCookieHeader);
60
- const payload = authService.accessTokenManager.decode(
61
- newAccessToken
62
- );
57
+ const payload = authService.accessTokenManager.decode(newAccessToken);
63
58
  return respond(payload, headers);
64
59
  } catch (e) {
65
60
  console.log(e);
66
- const setCookieHeader = await authService.getRefreshTokenSetCookie(
67
- null
68
- );
61
+ const setCookieHeader = await authService.getRefreshTokenSetCookie(null);
69
62
  const headers = new Headers();
70
63
  headers.append("Set-Cookie", setCookieHeader);
71
64
  return respond(void 0, headers);
@@ -96,7 +89,7 @@ var createAPIHandler = ({
96
89
  const { request, params } = args;
97
90
  const method = request.method.toUpperCase();
98
91
  const slug = params["*"] ? params["*"].split("/") : [];
99
- const withAuth = createWithAuthHandler({ authService });
92
+ const withAuth = createWithStrictAuthHandler({ authService });
100
93
  switch (slug[0]) {
101
94
  case "auth": {
102
95
  switch (slug[1]) {
@@ -124,10 +117,13 @@ var createAPIHandler = ({
124
117
  const provider = slug[2];
125
118
  switch (method) {
126
119
  case "POST": {
127
- return loginWithThirdPartyHandler(request, {
128
- provider,
129
- getThirdPartyAuth
130
- });
120
+ return loginWithThirdPartyHandler(
121
+ request,
122
+ {
123
+ provider,
124
+ getThirdPartyAuth
125
+ }
126
+ );
131
127
  }
132
128
  }
133
129
  }
@@ -166,11 +162,14 @@ var createAPIHandler = ({
166
162
  default: {
167
163
  switch (method) {
168
164
  case "POST": {
169
- return signUpWithThirdpartyHandler(request, {
170
- authService,
171
- fileService,
172
- signupTokenManager
173
- });
165
+ return signUpWithThirdpartyHandler(
166
+ request,
167
+ {
168
+ authService,
169
+ fileService,
170
+ signupTokenManager
171
+ }
172
+ );
174
173
  }
175
174
  }
176
175
  }
@@ -194,7 +193,9 @@ var createAPIHandler = ({
194
193
  });
195
194
  }
196
195
  case "reset-password": {
197
- return resetPasswordHandler(request, { passwordRecoveryService });
196
+ return resetPasswordHandler(request, {
197
+ passwordRecoveryService
198
+ });
198
199
  }
199
200
  }
200
201
  }
@@ -204,7 +205,9 @@ var createAPIHandler = ({
204
205
  switch (method) {
205
206
  case "POST": {
206
207
  return withAuth(
207
- (auth) => ({ request: request2 }) => uploadFileHandler({ fileService })(auth)(request2)
208
+ (auth) => ({ request: request2 }) => uploadFileHandler({ fileService })(
209
+ auth
210
+ )(request2)
208
211
  )(args);
209
212
  }
210
213
  }
@@ -0,0 +1,18 @@
1
+ import { Table } from 'drizzle-orm';
2
+ import { LoaderFunctionArgs } from 'react-router';
3
+ import { TableRepository } from '../table/repository.mjs';
4
+ import { WithAuthHandler } from '../auth/with_auth.mjs';
5
+ import 'drizzle-orm/pg-core';
6
+ import 'dn-react-toolkit/auth';
7
+ import 'dn-react-toolkit/auth/server';
8
+
9
+ type ItemAPIHandlerOptions<T extends Table, TSelect> = {
10
+ withAuthAction: WithAuthHandler<LoaderFunctionArgs>;
11
+ repository: TableRepository<T, TSelect>;
12
+ };
13
+ declare function itemApiHandler<T extends Table, TSelect>({ withAuthAction, repository, }: ItemAPIHandlerOptions<T, TSelect>): {
14
+ loader: ({ request }: LoaderFunctionArgs) => Promise<{}>;
15
+ action: (arg: LoaderFunctionArgs<any>) => Promise<unknown> | unknown;
16
+ };
17
+
18
+ export { type ItemAPIHandlerOptions, itemApiHandler };
@@ -0,0 +1,18 @@
1
+ import { Table } from 'drizzle-orm';
2
+ import { LoaderFunctionArgs } from 'react-router';
3
+ import { TableRepository } from '../table/repository.js';
4
+ import { WithAuthHandler } from '../auth/with_auth.js';
5
+ import 'drizzle-orm/pg-core';
6
+ import 'dn-react-toolkit/auth';
7
+ import 'dn-react-toolkit/auth/server';
8
+
9
+ type ItemAPIHandlerOptions<T extends Table, TSelect> = {
10
+ withAuthAction: WithAuthHandler<LoaderFunctionArgs>;
11
+ repository: TableRepository<T, TSelect>;
12
+ };
13
+ declare function itemApiHandler<T extends Table, TSelect>({ withAuthAction, repository, }: ItemAPIHandlerOptions<T, TSelect>): {
14
+ loader: ({ request }: LoaderFunctionArgs) => Promise<{}>;
15
+ action: (arg: LoaderFunctionArgs<any>) => Promise<unknown> | unknown;
16
+ };
17
+
18
+ export { type ItemAPIHandlerOptions, itemApiHandler };
@@ -0,0 +1,55 @@
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/api/item_api_handler.ts
21
+ var item_api_handler_exports = {};
22
+ __export(item_api_handler_exports, {
23
+ itemApiHandler: () => itemApiHandler
24
+ });
25
+ module.exports = __toCommonJS(item_api_handler_exports);
26
+ var import_http = require("dn-react-toolkit/http");
27
+ var import_react_router = require("react-router");
28
+ function itemApiHandler({
29
+ withAuthAction,
30
+ repository
31
+ }) {
32
+ const loader = async ({ request }) => {
33
+ return {};
34
+ };
35
+ const action = withAuthAction((auth) => async ({ params, request }) => {
36
+ if (!auth || auth.role !== "admin") {
37
+ return (0, import_http.UNAUTHORIZED)();
38
+ }
39
+ switch (request.method) {
40
+ case "DELETE": {
41
+ const itemId = params.itemId;
42
+ await repository.delete(itemId);
43
+ return {};
44
+ }
45
+ }
46
+ });
47
+ return {
48
+ loader,
49
+ action
50
+ };
51
+ }
52
+ // Annotate the CommonJS export names for ESM import in node:
53
+ 0 && (module.exports = {
54
+ itemApiHandler
55
+ });
@@ -0,0 +1,30 @@
1
+ // src/api/item_api_handler.ts
2
+ import { UNAUTHORIZED } from "dn-react-toolkit/http";
3
+ import "react-router";
4
+ function itemApiHandler({
5
+ withAuthAction,
6
+ repository
7
+ }) {
8
+ const loader = async ({ request }) => {
9
+ return {};
10
+ };
11
+ const action = withAuthAction((auth) => async ({ params, request }) => {
12
+ if (!auth || auth.role !== "admin") {
13
+ return UNAUTHORIZED();
14
+ }
15
+ switch (request.method) {
16
+ case "DELETE": {
17
+ const itemId = params.itemId;
18
+ await repository.delete(itemId);
19
+ return {};
20
+ }
21
+ }
22
+ });
23
+ return {
24
+ loader,
25
+ action
26
+ };
27
+ }
28
+ export {
29
+ itemApiHandler
30
+ };
@@ -1,4 +1,4 @@
1
- export { WithAuthHandler, createWithAuthHandler } from './with_auth.mjs';
1
+ export { WithAuthHandler, createWithAuthHandler, createWithStrictAuthHandler } from './with_auth.mjs';
2
2
  export { ReactRouterCookieManager } from './cookie_store.mjs';
3
3
  import 'dn-react-toolkit/auth';
4
4
  import 'dn-react-toolkit/auth/server';
@@ -1,4 +1,4 @@
1
- export { WithAuthHandler, createWithAuthHandler } from './with_auth.js';
1
+ export { WithAuthHandler, createWithAuthHandler, createWithStrictAuthHandler } from './with_auth.js';
2
2
  export { ReactRouterCookieManager } from './cookie_store.js';
3
3
  import 'dn-react-toolkit/auth';
4
4
  import 'dn-react-toolkit/auth/server';
@@ -21,18 +21,20 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
21
21
  var auth_exports = {};
22
22
  __export(auth_exports, {
23
23
  ReactRouterCookieManager: () => ReactRouterCookieManager,
24
- createWithAuthHandler: () => createWithAuthHandler
24
+ createWithAuthHandler: () => createWithAuthHandler,
25
+ createWithStrictAuthHandler: () => createWithStrictAuthHandler
25
26
  });
26
27
  module.exports = __toCommonJS(auth_exports);
27
28
 
28
29
  // src/auth/with_auth.ts
30
+ var import_uuid = require("uuid");
29
31
  var toResponse = (result) => {
30
32
  if (result instanceof Response) {
31
33
  return result;
32
34
  }
33
35
  return Response.json(result);
34
36
  };
35
- function createWithAuthHandler({ authService }) {
37
+ function createWithStrictAuthHandler({ authService }) {
36
38
  return function(fn) {
37
39
  const handler = async function(arg) {
38
40
  const respond = async (auth, headers = new Headers()) => {
@@ -41,7 +43,7 @@ function createWithAuthHandler({ authService }) {
41
43
  };
42
44
  const setHeader = (res, headers) => {
43
45
  headers.forEach((value, key) => {
44
- res.headers.set(key, value);
46
+ res.headers.append(key, value);
45
47
  });
46
48
  return res;
47
49
  };
@@ -49,9 +51,7 @@ function createWithAuthHandler({ authService }) {
49
51
  arg.request
50
52
  );
51
53
  if (accessToken) {
52
- const payload = await authService.accessTokenManager.verify(
53
- accessToken
54
- );
54
+ const payload = await authService.accessTokenManager.verify(accessToken);
55
55
  if (payload) {
56
56
  return respond(payload);
57
57
  }
@@ -61,23 +61,17 @@ function createWithAuthHandler({ authService }) {
61
61
  );
62
62
  if (refreshToken) {
63
63
  try {
64
- const newAccessToken = await authService.refreshAccessToken(
65
- refreshToken
66
- );
64
+ const newAccessToken = await authService.refreshAccessToken(refreshToken);
67
65
  const setCookieHeader = await authService.getAccessTokenSetCookie(
68
66
  newAccessToken
69
67
  );
70
68
  const headers = new Headers();
71
69
  headers.append("Set-Cookie", setCookieHeader);
72
- const payload = authService.accessTokenManager.decode(
73
- newAccessToken
74
- );
70
+ const payload = authService.accessTokenManager.decode(newAccessToken);
75
71
  return respond(payload, headers);
76
72
  } catch (e) {
77
73
  console.log(e);
78
- const setCookieHeader = await authService.getRefreshTokenSetCookie(
79
- null
80
- );
74
+ const setCookieHeader = await authService.getRefreshTokenSetCookie(null);
81
75
  const headers = new Headers();
82
76
  headers.append("Set-Cookie", setCookieHeader);
83
77
  return respond(void 0, headers);
@@ -88,6 +82,57 @@ function createWithAuthHandler({ authService }) {
88
82
  return handler;
89
83
  };
90
84
  }
85
+ function createWithAuthHandler({
86
+ authService,
87
+ tempUserTokenManager,
88
+ tempUserCookieManager
89
+ }) {
90
+ return function(fn) {
91
+ const withAuthHandler = createWithStrictAuthHandler({
92
+ authService
93
+ });
94
+ const handler = withAuthHandler((auth) => async (args) => {
95
+ if (auth) {
96
+ return fn(auth)(args);
97
+ }
98
+ const respond = async (auth2, headers2 = new Headers()) => {
99
+ const result = await fn(auth2)(args);
100
+ return setHeader(toResponse(result), headers2);
101
+ };
102
+ const setHeader = (res, headers2) => {
103
+ headers2.forEach((value, key) => {
104
+ res.headers.append(key, value);
105
+ });
106
+ return res;
107
+ };
108
+ const tempUserToken = await tempUserCookieManager.parse(
109
+ args.request
110
+ );
111
+ if (tempUserToken) {
112
+ const tempUserPayload = await tempUserTokenManager.verify(tempUserToken);
113
+ if (tempUserPayload) {
114
+ return respond(tempUserPayload);
115
+ }
116
+ }
117
+ const user = await authService.authRepository.createUser({
118
+ id: (0, import_uuid.v4)(),
119
+ role: "temp",
120
+ name: "\uC775\uBA85"
121
+ });
122
+ const newTempUserToken = await tempUserTokenManager.sign({
123
+ userId: user.id,
124
+ name: user.name,
125
+ role: user.role
126
+ });
127
+ const headers = new Headers();
128
+ const setCookie = await tempUserCookieManager.serialize(newTempUserToken);
129
+ headers.append("Set-Cookie", setCookie);
130
+ const newTempUserPayload = tempUserTokenManager.decode(newTempUserToken);
131
+ return respond(newTempUserPayload, headers);
132
+ });
133
+ return handler;
134
+ };
135
+ }
91
136
 
92
137
  // src/auth/cookie_store.ts
93
138
  var import_react_router = require("react-router");
@@ -120,5 +165,6 @@ var ReactRouterCookieManager = class {
120
165
  // Annotate the CommonJS export names for ESM import in node:
121
166
  0 && (module.exports = {
122
167
  ReactRouterCookieManager,
123
- createWithAuthHandler
168
+ createWithAuthHandler,
169
+ createWithStrictAuthHandler
124
170
  });
@@ -1,11 +1,12 @@
1
1
  // src/auth/with_auth.ts
2
+ import { v4 } from "uuid";
2
3
  var toResponse = (result) => {
3
4
  if (result instanceof Response) {
4
5
  return result;
5
6
  }
6
7
  return Response.json(result);
7
8
  };
8
- function createWithAuthHandler({ authService }) {
9
+ function createWithStrictAuthHandler({ authService }) {
9
10
  return function(fn) {
10
11
  const handler = async function(arg) {
11
12
  const respond = async (auth, headers = new Headers()) => {
@@ -14,7 +15,7 @@ function createWithAuthHandler({ authService }) {
14
15
  };
15
16
  const setHeader = (res, headers) => {
16
17
  headers.forEach((value, key) => {
17
- res.headers.set(key, value);
18
+ res.headers.append(key, value);
18
19
  });
19
20
  return res;
20
21
  };
@@ -22,9 +23,7 @@ function createWithAuthHandler({ authService }) {
22
23
  arg.request
23
24
  );
24
25
  if (accessToken) {
25
- const payload = await authService.accessTokenManager.verify(
26
- accessToken
27
- );
26
+ const payload = await authService.accessTokenManager.verify(accessToken);
28
27
  if (payload) {
29
28
  return respond(payload);
30
29
  }
@@ -34,23 +33,17 @@ function createWithAuthHandler({ authService }) {
34
33
  );
35
34
  if (refreshToken) {
36
35
  try {
37
- const newAccessToken = await authService.refreshAccessToken(
38
- refreshToken
39
- );
36
+ const newAccessToken = await authService.refreshAccessToken(refreshToken);
40
37
  const setCookieHeader = await authService.getAccessTokenSetCookie(
41
38
  newAccessToken
42
39
  );
43
40
  const headers = new Headers();
44
41
  headers.append("Set-Cookie", setCookieHeader);
45
- const payload = authService.accessTokenManager.decode(
46
- newAccessToken
47
- );
42
+ const payload = authService.accessTokenManager.decode(newAccessToken);
48
43
  return respond(payload, headers);
49
44
  } catch (e) {
50
45
  console.log(e);
51
- const setCookieHeader = await authService.getRefreshTokenSetCookie(
52
- null
53
- );
46
+ const setCookieHeader = await authService.getRefreshTokenSetCookie(null);
54
47
  const headers = new Headers();
55
48
  headers.append("Set-Cookie", setCookieHeader);
56
49
  return respond(void 0, headers);
@@ -61,6 +54,57 @@ function createWithAuthHandler({ authService }) {
61
54
  return handler;
62
55
  };
63
56
  }
57
+ function createWithAuthHandler({
58
+ authService,
59
+ tempUserTokenManager,
60
+ tempUserCookieManager
61
+ }) {
62
+ return function(fn) {
63
+ const withAuthHandler = createWithStrictAuthHandler({
64
+ authService
65
+ });
66
+ const handler = withAuthHandler((auth) => async (args) => {
67
+ if (auth) {
68
+ return fn(auth)(args);
69
+ }
70
+ const respond = async (auth2, headers2 = new Headers()) => {
71
+ const result = await fn(auth2)(args);
72
+ return setHeader(toResponse(result), headers2);
73
+ };
74
+ const setHeader = (res, headers2) => {
75
+ headers2.forEach((value, key) => {
76
+ res.headers.append(key, value);
77
+ });
78
+ return res;
79
+ };
80
+ const tempUserToken = await tempUserCookieManager.parse(
81
+ args.request
82
+ );
83
+ if (tempUserToken) {
84
+ const tempUserPayload = await tempUserTokenManager.verify(tempUserToken);
85
+ if (tempUserPayload) {
86
+ return respond(tempUserPayload);
87
+ }
88
+ }
89
+ const user = await authService.authRepository.createUser({
90
+ id: v4(),
91
+ role: "temp",
92
+ name: "\uC775\uBA85"
93
+ });
94
+ const newTempUserToken = await tempUserTokenManager.sign({
95
+ userId: user.id,
96
+ name: user.name,
97
+ role: user.role
98
+ });
99
+ const headers = new Headers();
100
+ const setCookie = await tempUserCookieManager.serialize(newTempUserToken);
101
+ headers.append("Set-Cookie", setCookie);
102
+ const newTempUserPayload = tempUserTokenManager.decode(newTempUserToken);
103
+ return respond(newTempUserPayload, headers);
104
+ });
105
+ return handler;
106
+ };
107
+ }
64
108
 
65
109
  // src/auth/cookie_store.ts
66
110
  import { createCookie } from "react-router";
@@ -92,5 +136,6 @@ var ReactRouterCookieManager = class {
92
136
  };
93
137
  export {
94
138
  ReactRouterCookieManager,
95
- createWithAuthHandler
139
+ createWithAuthHandler,
140
+ createWithStrictAuthHandler
96
141
  };
@@ -1,12 +1,17 @@
1
1
  import { AccessTokenPayload } from 'dn-react-toolkit/auth';
2
- import { AuthService } from 'dn-react-toolkit/auth/server';
2
+ import { AuthService, JWTManager, CookieManager } from 'dn-react-toolkit/auth/server';
3
3
  import { LoaderFunctionArgs, ActionFunctionArgs } from 'react-router';
4
4
 
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 createWithStrictAuthHandler<T extends LoaderFunctionArgs | ActionFunctionArgs>({ authService }: {
9
9
  authService: AuthService;
10
10
  }): <THandler extends Handler<T>>(fn: (auth?: AccessTokenPayload) => THandler) => THandler;
11
+ declare function createWithAuthHandler<T extends LoaderFunctionArgs | ActionFunctionArgs>({ authService, tempUserTokenManager, tempUserCookieManager, }: {
12
+ authService: AuthService;
13
+ tempUserTokenManager: JWTManager<AccessTokenPayload>;
14
+ tempUserCookieManager: CookieManager;
15
+ }): <THandler extends Handler<T>>(fn: (auth: AccessTokenPayload) => THandler) => THandler;
11
16
 
12
- export { type WithAuthHandler, createWithAuthHandler };
17
+ export { type WithAuthHandler, createWithAuthHandler, createWithStrictAuthHandler };