dn-react-router-toolkit 0.8.1 → 0.9.1

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 (130) hide show
  1. package/dist/api/create_api_handler.d.mts +2 -2
  2. package/dist/api/create_api_handler.d.ts +2 -2
  3. package/dist/api/create_api_handler.js +55 -52
  4. package/dist/api/create_api_handler.mjs +61 -59
  5. package/dist/api/create_handler.d.mts +5 -5
  6. package/dist/api/create_handler.d.ts +5 -5
  7. package/dist/api/create_handler.js +41 -44
  8. package/dist/api/create_handler.mjs +41 -44
  9. package/dist/api/index.d.mts +4 -3
  10. package/dist/api/index.d.ts +4 -3
  11. package/dist/api/index.js +118 -102
  12. package/dist/api/index.mjs +130 -109
  13. package/dist/api/item_api_handler.d.mts +4 -3
  14. package/dist/api/item_api_handler.d.ts +4 -3
  15. package/dist/api/item_api_handler.js +22 -6
  16. package/dist/api/item_api_handler.mjs +28 -6
  17. package/dist/auth/cookie_manager.d.mts +1 -1
  18. package/dist/auth/cookie_manager.d.ts +1 -1
  19. package/dist/auth/index.d.mts +2 -2
  20. package/dist/auth/index.d.ts +2 -2
  21. package/dist/auth/index.js +18 -18
  22. package/dist/auth/index.mjs +18 -18
  23. package/dist/auth/with_auth.d.mts +2 -2
  24. package/dist/auth/with_auth.d.ts +2 -2
  25. package/dist/auth/with_auth.js +18 -18
  26. package/dist/auth/with_auth.mjs +18 -18
  27. package/dist/client/editor.d.mts +2 -2
  28. package/dist/client/editor.d.ts +2 -2
  29. package/dist/client/editor.js +9 -3
  30. package/dist/client/editor.mjs +9 -3
  31. package/dist/client/index.d.mts +2 -2
  32. package/dist/client/index.d.ts +2 -2
  33. package/dist/client/index.js +9 -3
  34. package/dist/client/index.mjs +9 -3
  35. package/dist/crud/crud_form.js +22 -4
  36. package/dist/crud/crud_form.mjs +11 -3
  37. package/dist/crud/crud_form_provider.js +16 -3
  38. package/dist/crud/crud_form_provider.mjs +14 -1
  39. package/dist/crud/index.d.mts +0 -20
  40. package/dist/crud/index.d.ts +0 -20
  41. package/dist/crud/index.js +32 -8589
  42. package/dist/crud/index.mjs +11 -8599
  43. package/dist/db/backup/index.d.mts +1 -1
  44. package/dist/db/backup/index.d.ts +1 -1
  45. package/dist/form/create_form_component.js +21 -2
  46. package/dist/form/create_form_component.mjs +10 -1
  47. package/dist/form/form_components.js +21 -2
  48. package/dist/form/form_components.mjs +10 -1
  49. package/dist/form/index.js +21 -2
  50. package/dist/form/index.mjs +10 -1
  51. package/dist/post/editor_toolbar.js +20 -3
  52. package/dist/post/editor_toolbar.mjs +9 -2
  53. package/dist/post/index.js +93 -7711
  54. package/dist/post/index.mjs +69 -7723
  55. package/dist/post/post_form_page.js +91 -7711
  56. package/dist/post/post_form_page.mjs +69 -7725
  57. package/dist/post/thumbnail_picker.js +21 -2
  58. package/dist/post/thumbnail_picker.mjs +10 -1
  59. package/dist/table/buttons.js +11 -14
  60. package/dist/table/buttons.mjs +10 -13
  61. package/dist/table/index.d.mts +0 -2
  62. package/dist/table/index.d.ts +0 -2
  63. package/dist/table/index.js +24 -95
  64. package/dist/table/index.mjs +23 -92
  65. package/dist/table/load_table.d.mts +1 -1
  66. package/dist/table/load_table.d.ts +1 -1
  67. package/dist/table/load_table.js +2 -2
  68. package/dist/table/load_table.mjs +2 -2
  69. package/dist/table/loader.js +2 -2
  70. package/dist/table/loader.mjs +2 -2
  71. package/dist/table/table.d.mts +2 -2
  72. package/dist/table/table.d.ts +2 -2
  73. package/dist/table/table.js +14 -25
  74. package/dist/table/table.mjs +11 -24
  75. package/dist/table/table_form.js +16 -39
  76. package/dist/table/table_form.mjs +15 -38
  77. package/dist/utils/cn.d.mts +3 -0
  78. package/dist/utils/cn.d.ts +3 -0
  79. package/dist/utils/cn.js +32 -0
  80. package/dist/utils/cn.mjs +7 -0
  81. package/dist/utils/date.d.mts +5 -0
  82. package/dist/utils/date.d.ts +5 -0
  83. package/dist/utils/date.js +65 -0
  84. package/dist/utils/date.mjs +29 -0
  85. package/dist/utils/index.d.mts +7 -0
  86. package/dist/utils/index.d.ts +7 -0
  87. package/dist/utils/index.js +116 -0
  88. package/dist/utils/index.mjs +73 -0
  89. package/dist/utils/korean.d.mts +6 -0
  90. package/dist/utils/korean.d.ts +6 -0
  91. package/dist/{crud/generate_pages.js → utils/korean.js} +16 -30
  92. package/dist/utils/korean.mjs +16 -0
  93. package/dist/utils/singleton.d.mts +3 -0
  94. package/dist/utils/singleton.d.ts +3 -0
  95. package/dist/utils/singleton.js +37 -0
  96. package/dist/utils/singleton.mjs +12 -0
  97. package/dist/utils/sleep.d.mts +3 -0
  98. package/dist/utils/sleep.d.ts +3 -0
  99. package/dist/{table/item_loader.js → utils/sleep.js} +8 -19
  100. package/dist/utils/sleep.mjs +7 -0
  101. package/dist/utils/slug.d.mts +3 -0
  102. package/dist/utils/slug.d.ts +3 -0
  103. package/dist/{crud/generate_handlers.js → utils/slug.js} +8 -15
  104. package/dist/utils/slug.mjs +7 -0
  105. package/package.json +7 -3
  106. package/dist/crud/crud_loader.d.mts +0 -26
  107. package/dist/crud/crud_loader.d.ts +0 -26
  108. package/dist/crud/crud_loader.js +0 -351
  109. package/dist/crud/crud_loader.mjs +0 -337
  110. package/dist/crud/crud_page.d.mts +0 -32
  111. package/dist/crud/crud_page.d.ts +0 -32
  112. package/dist/crud/crud_page.js +0 -776
  113. package/dist/crud/crud_page.mjs +0 -758
  114. package/dist/crud/generate_handlers.d.mts +0 -16
  115. package/dist/crud/generate_handlers.d.ts +0 -16
  116. package/dist/crud/generate_handlers.mjs +0 -14
  117. package/dist/crud/generate_pages.d.mts +0 -19
  118. package/dist/crud/generate_pages.d.ts +0 -19
  119. package/dist/crud/generate_pages.mjs +0 -30
  120. package/dist/crud/generate_routes.d.mts +0 -5
  121. package/dist/crud/generate_routes.d.ts +0 -5
  122. package/dist/crud/generate_routes.js +0 -7639
  123. package/dist/crud/generate_routes.mjs +0 -7627
  124. package/dist/table/item_loader.d.mts +0 -14
  125. package/dist/table/item_loader.d.ts +0 -14
  126. package/dist/table/item_loader.mjs +0 -18
  127. package/dist/table/page.d.mts +0 -16
  128. package/dist/table/page.d.ts +0 -16
  129. package/dist/table/page.js +0 -375
  130. package/dist/table/page.mjs +0 -350
@@ -1,5 +1,4 @@
1
1
  // src/api/create_handler.ts
2
- import { NOT_FOUND } from "dn-react-toolkit/http";
3
2
  import {
4
3
  findAuthHandler,
5
4
  loginHandler,
@@ -11,7 +10,7 @@ import {
11
10
  signupHandler,
12
11
  signUpWithThirdpartyHandler,
13
12
  thirdpartyAuthCallbackHandler
14
- } from "dn-react-toolkit/auth/server";
13
+ } from "gw-auth/server";
15
14
 
16
15
  // src/auth/with_auth.ts
17
16
  var toResponse = (result) => {
@@ -37,31 +36,31 @@ function createWithStrictAuthHandler({ authService }) {
37
36
  arg.request
38
37
  );
39
38
  if (accessToken) {
40
- const payload = await authService.accessTokenManager.verify(accessToken);
41
- if (payload) {
42
- return respond(payload);
39
+ const verifyResult = await authService.accessTokenManager.verify(accessToken);
40
+ if (verifyResult.isOk) {
41
+ const payload = verifyResult.value;
42
+ if (payload) {
43
+ return respond(payload);
44
+ }
43
45
  }
44
46
  }
45
47
  const refreshToken = await authService.getRefreshTokenFromCookies(
46
48
  arg.request
47
49
  );
48
50
  if (refreshToken) {
49
- try {
50
- const newAccessToken = await authService.refreshAccessToken(refreshToken);
51
- const setCookieHeader = await authService.getAccessTokenSetCookie(
52
- newAccessToken
53
- );
54
- const headers = new Headers();
55
- headers.append("Set-Cookie", setCookieHeader);
56
- const payload = authService.accessTokenManager.decode(newAccessToken);
57
- return respond(payload, headers);
58
- } catch (e) {
59
- console.log(e);
60
- const setCookieHeader = await authService.getRefreshTokenSetCookie(void 0);
61
- const headers = new Headers();
62
- headers.append("Set-Cookie", setCookieHeader);
63
- return respond(void 0, headers);
51
+ const refreshResult = await authService.refreshAccessToken(refreshToken);
52
+ if (refreshResult.isErr) {
53
+ const setCookieHeader2 = await authService.getRefreshTokenSetCookie(void 0);
54
+ const headers2 = new Headers();
55
+ headers2.append("Set-Cookie", setCookieHeader2);
56
+ return respond(void 0, headers2);
64
57
  }
58
+ const newAccessToken = refreshResult.value;
59
+ const setCookieHeader = await authService.getAccessTokenSetCookie(newAccessToken);
60
+ const headers = new Headers();
61
+ headers.append("Set-Cookie", setCookieHeader);
62
+ const payload = authService.accessTokenManager.decode(newAccessToken);
63
+ return respond(payload, headers);
65
64
  }
66
65
  return respond(void 0);
67
66
  };
@@ -76,12 +75,13 @@ import { createCookie } from "react-router";
76
75
  import {
77
76
  deleteFileHandler,
78
77
  uploadFileHandler
79
- } from "dn-react-toolkit/file/server";
78
+ } from "gw-file/server";
79
+ import { httpNotFound } from "gw-response";
80
80
  var createAPIHandler = ({
81
81
  authService,
82
82
  fileService,
83
83
  passwordRecoveryService,
84
- getThirdPartyAuth,
84
+ authProviders,
85
85
  signupTokenManager
86
86
  }) => {
87
87
  const handler = async (args) => {
@@ -96,7 +96,7 @@ var createAPIHandler = ({
96
96
  switch (method) {
97
97
  case "GET": {
98
98
  return withAuth(
99
- (auth) => ({ request: request2 }) => findAuthHandler(auth)(request2)
99
+ (auth) => ({ request: request2 }) => findAuthHandler(auth)()
100
100
  );
101
101
  }
102
102
  }
@@ -116,13 +116,10 @@ var createAPIHandler = ({
116
116
  const provider = slug[2];
117
117
  switch (method) {
118
118
  case "POST": {
119
- return loginWithThirdPartyHandler(
120
- request,
121
- {
122
- provider,
123
- getThirdPartyAuth
124
- }
125
- );
119
+ return loginWithThirdPartyHandler(request, {
120
+ provider,
121
+ authProviders
122
+ });
126
123
  }
127
124
  }
128
125
  }
@@ -161,14 +158,11 @@ var createAPIHandler = ({
161
158
  default: {
162
159
  switch (method) {
163
160
  case "POST": {
164
- return signUpWithThirdpartyHandler(
165
- request,
166
- {
167
- authService,
168
- fileService,
169
- signupTokenManager
170
- }
171
- );
161
+ return signUpWithThirdpartyHandler(request, {
162
+ authService,
163
+ fileService,
164
+ signupTokenManager
165
+ });
172
166
  }
173
167
  }
174
168
  }
@@ -181,7 +175,7 @@ var createAPIHandler = ({
181
175
  return thirdpartyAuthCallbackHandler(request, {
182
176
  provider,
183
177
  authService,
184
- getThirdPartyAuth
178
+ authProviders
185
179
  });
186
180
  }
187
181
  }
@@ -204,9 +198,9 @@ var createAPIHandler = ({
204
198
  switch (method) {
205
199
  case "POST": {
206
200
  return withAuth(
207
- (auth) => ({ request: request2 }) => uploadFileHandler({ fileService })(
208
- auth
209
- )(request2)
201
+ (auth) => ({ request: request2 }) => uploadFileHandler({ fileService })(request2, {
202
+ userId: auth?.userId
203
+ })
210
204
  )(args);
211
205
  }
212
206
  }
@@ -218,7 +212,7 @@ var createAPIHandler = ({
218
212
  return withAuth(
219
213
  (auth) => () => deleteFileHandler({
220
214
  fileRepository: fileService.fileRepository
221
- })({ fileId })(auth)()
215
+ })({ fileId, userId: auth?.userId })()
222
216
  );
223
217
  }
224
218
  }
@@ -226,7 +220,10 @@ var createAPIHandler = ({
226
220
  }
227
221
  }
228
222
  default: {
229
- return NOT_FOUND();
223
+ return httpNotFound({
224
+ code: "RESOURCE_NOT_FOUND",
225
+ message: "\uB9AC\uC18C\uC2A4\uB97C \uCC3E\uC744 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4."
226
+ });
230
227
  }
231
228
  }
232
229
  };
@@ -2,11 +2,12 @@ export { createAPIHandler } from './create_handler.mjs';
2
2
  export { APIHandlerOptions, apiHandler } from './create_api_handler.mjs';
3
3
  export { ItemAPIHandlerOptions, itemApiHandler } from './item_api_handler.mjs';
4
4
  import 'react-router';
5
- import 'dn-react-toolkit/auth/server';
6
- import 'dn-react-toolkit/file/server';
5
+ import 'gw-auth/server';
6
+ import 'gw-file/server';
7
7
  import 'drizzle-orm';
8
8
  import '../table/repository.mjs';
9
9
  import 'drizzle-orm/node-postgres';
10
10
  import 'drizzle-orm/pg-core';
11
11
  import '../auth/with_auth.mjs';
12
- import 'dn-react-toolkit/auth';
12
+ import 'gw-auth';
13
+ import 'gw-result';
@@ -2,11 +2,12 @@ export { createAPIHandler } from './create_handler.js';
2
2
  export { APIHandlerOptions, apiHandler } from './create_api_handler.js';
3
3
  export { ItemAPIHandlerOptions, itemApiHandler } from './item_api_handler.js';
4
4
  import 'react-router';
5
- import 'dn-react-toolkit/auth/server';
6
- import 'dn-react-toolkit/file/server';
5
+ import 'gw-auth/server';
6
+ import 'gw-file/server';
7
7
  import 'drizzle-orm';
8
8
  import '../table/repository.js';
9
9
  import 'drizzle-orm/node-postgres';
10
10
  import 'drizzle-orm/pg-core';
11
11
  import '../auth/with_auth.js';
12
- import 'dn-react-toolkit/auth';
12
+ import 'gw-auth';
13
+ import 'gw-result';
package/dist/api/index.js CHANGED
@@ -27,8 +27,7 @@ __export(api_exports, {
27
27
  module.exports = __toCommonJS(api_exports);
28
28
 
29
29
  // src/api/create_handler.ts
30
- var import_http = require("dn-react-toolkit/http");
31
- var import_server = require("dn-react-toolkit/auth/server");
30
+ var import_server = require("gw-auth/server");
32
31
 
33
32
  // src/auth/with_auth.ts
34
33
  var toResponse = (result) => {
@@ -54,31 +53,31 @@ function createWithStrictAuthHandler({ authService }) {
54
53
  arg.request
55
54
  );
56
55
  if (accessToken) {
57
- const payload = await authService.accessTokenManager.verify(accessToken);
58
- if (payload) {
59
- return respond(payload);
56
+ const verifyResult = await authService.accessTokenManager.verify(accessToken);
57
+ if (verifyResult.isOk) {
58
+ const payload = verifyResult.value;
59
+ if (payload) {
60
+ return respond(payload);
61
+ }
60
62
  }
61
63
  }
62
64
  const refreshToken = await authService.getRefreshTokenFromCookies(
63
65
  arg.request
64
66
  );
65
67
  if (refreshToken) {
66
- try {
67
- const newAccessToken = await authService.refreshAccessToken(refreshToken);
68
- const setCookieHeader = await authService.getAccessTokenSetCookie(
69
- newAccessToken
70
- );
71
- const headers = new Headers();
72
- headers.append("Set-Cookie", setCookieHeader);
73
- const payload = authService.accessTokenManager.decode(newAccessToken);
74
- return respond(payload, headers);
75
- } catch (e) {
76
- console.log(e);
77
- const setCookieHeader = await authService.getRefreshTokenSetCookie(void 0);
78
- const headers = new Headers();
79
- headers.append("Set-Cookie", setCookieHeader);
80
- return respond(void 0, headers);
68
+ const refreshResult = await authService.refreshAccessToken(refreshToken);
69
+ if (refreshResult.isErr) {
70
+ const setCookieHeader2 = await authService.getRefreshTokenSetCookie(void 0);
71
+ const headers2 = new Headers();
72
+ headers2.append("Set-Cookie", setCookieHeader2);
73
+ return respond(void 0, headers2);
81
74
  }
75
+ const newAccessToken = refreshResult.value;
76
+ const setCookieHeader = await authService.getAccessTokenSetCookie(newAccessToken);
77
+ const headers = new Headers();
78
+ headers.append("Set-Cookie", setCookieHeader);
79
+ const payload = authService.accessTokenManager.decode(newAccessToken);
80
+ return respond(payload, headers);
82
81
  }
83
82
  return respond(void 0);
84
83
  };
@@ -90,12 +89,13 @@ function createWithStrictAuthHandler({ authService }) {
90
89
  var import_react_router = require("react-router");
91
90
 
92
91
  // src/api/create_handler.ts
93
- var import_server2 = require("dn-react-toolkit/file/server");
92
+ var import_server2 = require("gw-file/server");
93
+ var import_gw_response = require("gw-response");
94
94
  var createAPIHandler = ({
95
95
  authService,
96
96
  fileService,
97
97
  passwordRecoveryService,
98
- getThirdPartyAuth,
98
+ authProviders,
99
99
  signupTokenManager
100
100
  }) => {
101
101
  const handler = async (args) => {
@@ -110,7 +110,7 @@ var createAPIHandler = ({
110
110
  switch (method) {
111
111
  case "GET": {
112
112
  return withAuth(
113
- (auth) => ({ request: request2 }) => (0, import_server.findAuthHandler)(auth)(request2)
113
+ (auth) => ({ request: request2 }) => (0, import_server.findAuthHandler)(auth)()
114
114
  );
115
115
  }
116
116
  }
@@ -130,13 +130,10 @@ var createAPIHandler = ({
130
130
  const provider = slug[2];
131
131
  switch (method) {
132
132
  case "POST": {
133
- return (0, import_server.loginWithThirdPartyHandler)(
134
- request,
135
- {
136
- provider,
137
- getThirdPartyAuth
138
- }
139
- );
133
+ return (0, import_server.loginWithThirdPartyHandler)(request, {
134
+ provider,
135
+ authProviders
136
+ });
140
137
  }
141
138
  }
142
139
  }
@@ -175,14 +172,11 @@ var createAPIHandler = ({
175
172
  default: {
176
173
  switch (method) {
177
174
  case "POST": {
178
- return (0, import_server.signUpWithThirdpartyHandler)(
179
- request,
180
- {
181
- authService,
182
- fileService,
183
- signupTokenManager
184
- }
185
- );
175
+ return (0, import_server.signUpWithThirdpartyHandler)(request, {
176
+ authService,
177
+ fileService,
178
+ signupTokenManager
179
+ });
186
180
  }
187
181
  }
188
182
  }
@@ -195,7 +189,7 @@ var createAPIHandler = ({
195
189
  return (0, import_server.thirdpartyAuthCallbackHandler)(request, {
196
190
  provider,
197
191
  authService,
198
- getThirdPartyAuth
192
+ authProviders
199
193
  });
200
194
  }
201
195
  }
@@ -218,9 +212,9 @@ var createAPIHandler = ({
218
212
  switch (method) {
219
213
  case "POST": {
220
214
  return withAuth(
221
- (auth) => ({ request: request2 }) => (0, import_server2.uploadFileHandler)({ fileService })(
222
- auth
223
- )(request2)
215
+ (auth) => ({ request: request2 }) => (0, import_server2.uploadFileHandler)({ fileService })(request2, {
216
+ userId: auth?.userId
217
+ })
224
218
  )(args);
225
219
  }
226
220
  }
@@ -232,7 +226,7 @@ var createAPIHandler = ({
232
226
  return withAuth(
233
227
  (auth) => () => (0, import_server2.deleteFileHandler)({
234
228
  fileRepository: fileService.fileRepository
235
- })({ fileId })(auth)()
229
+ })({ fileId, userId: auth?.userId })()
236
230
  );
237
231
  }
238
232
  }
@@ -240,7 +234,10 @@ var createAPIHandler = ({
240
234
  }
241
235
  }
242
236
  default: {
243
- return (0, import_http.NOT_FOUND)();
237
+ return (0, import_gw_response.httpNotFound)({
238
+ code: "RESOURCE_NOT_FOUND",
239
+ message: "\uB9AC\uC18C\uC2A4\uB97C \uCC3E\uC744 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4."
240
+ });
244
241
  }
245
242
  }
246
243
  };
@@ -248,7 +245,6 @@ var createAPIHandler = ({
248
245
  };
249
246
 
250
247
  // src/api/create_api_handler.ts
251
- var import_http2 = require("dn-react-toolkit/http");
252
248
  var import_drizzle_orm = require("drizzle-orm");
253
249
  var import_uuid = require("uuid");
254
250
 
@@ -290,6 +286,7 @@ function deserialize(data) {
290
286
  }
291
287
 
292
288
  // src/api/create_api_handler.ts
289
+ var import_gw_response2 = require("gw-response");
293
290
  function apiHandler({
294
291
  withAuthAction,
295
292
  repository,
@@ -303,70 +300,73 @@ function apiHandler({
303
300
  };
304
301
  const action = withAuthAction((auth) => async ({ request }) => {
305
302
  if (roles && roles.length > 0 && (!auth || !roles.includes(auth.role))) {
306
- throw (0, import_http2.UNAUTHORIZED)();
303
+ throw (0, import_gw_response2.httpUnauthorized)({
304
+ code: "UNAUTHORIZED",
305
+ message: "\uC778\uC99D\uC774 \uD544\uC694\uD569\uB2C8\uB2E4."
306
+ });
307
307
  }
308
308
  switch (request.method) {
309
309
  case "POST":
310
310
  case "PUT": {
311
- try {
312
- const serilaizedParams = await request.json();
313
- const params = deserialize(serilaizedParams);
314
- if (validators) {
315
- const paramsForValidation = Object.keys(validators).filter(
316
- (key) => Object.prototype.hasOwnProperty.call(validators, key)
317
- );
318
- for (const paramKey of paramsForValidation) {
319
- const value = params[paramKey];
320
- const validator = validators[paramKey];
321
- if (validator?.validate && !validator.validate(value)) {
322
- throw (0, import_http2.BAD_REQUEST)(
323
- validator.message ? validator.message(value) : void 0
324
- );
325
- }
311
+ const serilaizedParams = await request.json();
312
+ const params = deserialize(serilaizedParams);
313
+ if (validators) {
314
+ const paramsForValidation = Object.keys(validators).filter(
315
+ (key) => Object.prototype.hasOwnProperty.call(validators, key)
316
+ );
317
+ for (const paramKey of paramsForValidation) {
318
+ const value = params[paramKey];
319
+ const validator = validators[paramKey];
320
+ if (validator?.validate && !validator.validate(value)) {
321
+ throw (0, import_gw_response2.httpBadRequest)({
322
+ code: "BAD_REQUEST",
323
+ message: validator.message ? validator.message(value) : "\uC798\uBABB\uB41C \uC694\uCCAD\uC785\uB2C8\uB2E4."
324
+ });
326
325
  }
327
326
  }
328
- const itemId = params.id || (0, import_uuid.v4)();
329
- if (!params.id && existingConditions) {
330
- const paramsForExistenceCheck = Object.keys(
331
- existingConditions
332
- ).filter(
333
- (key) => Object.prototype.hasOwnProperty.call(params, key)
327
+ }
328
+ const itemId = params.id || (0, import_uuid.v4)();
329
+ if (!params.id && existingConditions) {
330
+ const paramsForExistenceCheck = Object.keys(
331
+ existingConditions
332
+ ).filter(
333
+ (key) => Object.prototype.hasOwnProperty.call(params, key)
334
+ );
335
+ if (paramsForExistenceCheck.length > 0) {
336
+ const where = (0, import_drizzle_orm.and)(
337
+ ...paramsForExistenceCheck.reduce((acc, key) => {
338
+ const condition = existingConditions[key];
339
+ if (condition) {
340
+ acc.push(condition(params[key]));
341
+ }
342
+ return acc;
343
+ }, [])
334
344
  );
335
- if (paramsForExistenceCheck.length > 0) {
336
- const where = (0, import_drizzle_orm.and)(
337
- ...paramsForExistenceCheck.reduce((acc, key) => {
338
- const condition = existingConditions[key];
339
- if (condition) {
340
- acc.push(condition(params[key]));
341
- }
342
- return acc;
343
- }, [])
344
- );
345
- const existing = await repository.findAll({
346
- limit: 1,
347
- where
345
+ const existing = await repository.findAll({
346
+ limit: 1,
347
+ where
348
+ });
349
+ if (existing.length > 0) {
350
+ return (0, import_gw_response2.httpConflict)({
351
+ code: "CONFLICT",
352
+ message: "\uC790\uB8CC\uAC00 \uC774\uBBF8 \uC874\uC7AC\uD569\uB2C8\uB2E4."
348
353
  });
349
- if (existing.length > 0) {
350
- throw (0, import_http2.CONFLICT)("\uC790\uB8CC\uAC00 \uC774\uBBF8 \uC874\uC7AC\uD569\uB2C8\uB2E4.");
351
- }
352
354
  }
353
355
  }
354
- const values = {
355
- id: itemId,
356
- userId: injectUserId ? auth?.userId : void 0,
357
- ...params
358
- };
359
- const item = await repository.save(values);
360
- return (0, import_http2.CREATED)(item);
361
- } catch (error) {
362
- if (error instanceof Error) {
363
- throw (0, import_http2.INTERNAL_SERVER_ERROR)(error.message);
364
- }
365
- throw error;
366
356
  }
357
+ const values = {
358
+ id: itemId,
359
+ userId: injectUserId ? auth?.userId : void 0,
360
+ ...params
361
+ };
362
+ const item = await repository.save(values);
363
+ return (0, import_gw_response2.httpCreated)(item);
367
364
  }
368
365
  default:
369
- throw (0, import_http2.METHOD_NOT_ALLOWED)();
366
+ throw (0, import_gw_response2.httpMethodNotAllowed)({
367
+ code: "METHOD_NOT_ALLOWED",
368
+ message: "\uD5C8\uC6A9\uB418\uC9C0 \uC54A\uC740 \uBA54\uC11C\uB4DC\uC785\uB2C8\uB2E4."
369
+ });
370
370
  }
371
371
  });
372
372
  return {
@@ -376,7 +376,8 @@ function apiHandler({
376
376
  }
377
377
 
378
378
  // src/api/item_api_handler.ts
379
- var import_http3 = require("dn-react-toolkit/http");
379
+ var import_gw_response3 = require("gw-response");
380
+ var import_gw_result = require("gw-result");
380
381
  function itemApiHandler({
381
382
  withAuthAction,
382
383
  repository,
@@ -384,24 +385,39 @@ function itemApiHandler({
384
385
  roles
385
386
  }) {
386
387
  const loader = async ({ request }) => {
387
- return {};
388
+ return (0, import_gw_result.ok)({});
388
389
  };
389
390
  const action = withAuthAction((auth) => async ({ params, request }) => {
390
391
  if (roles && roles.length > 0 && (!auth || !roles.includes(auth.role))) {
391
- throw (0, import_http3.UNAUTHORIZED)();
392
+ return (0, import_gw_response3.httpUnauthorized)({
393
+ code: "UNAUTHORIZED",
394
+ message: "\uC778\uC99D\uC774 \uD544\uC694\uD569\uB2C8\uB2E4."
395
+ });
392
396
  }
393
397
  const itemId = params.itemId;
394
398
  const existing = await repository.find(itemId);
395
399
  if (!existing) {
396
- throw (0, import_http3.NOT_FOUND)();
400
+ return (0, import_gw_response3.httpNotFound)({
401
+ code: "RESOURCE_NOT_FOUND",
402
+ message: "\uC790\uB8CC\uB97C \uCC3E\uC744 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4."
403
+ });
397
404
  }
398
405
  if (isOwnedBy && !isOwnedBy(existing, auth)) {
399
- throw (0, import_http3.FORBIDDEN)();
406
+ return (0, import_gw_response3.httpForbidden)({
407
+ code: "FORBIDDEN",
408
+ message: "\uAD8C\uD55C\uC774 \uC5C6\uC2B5\uB2C8\uB2E4."
409
+ });
400
410
  }
401
411
  switch (request.method) {
402
412
  case "DELETE": {
403
413
  await repository.delete(itemId);
404
- return {};
414
+ return (0, import_gw_response3.httpNoContent)();
415
+ }
416
+ default: {
417
+ return (0, import_gw_response3.httpMethodNotAllowed)({
418
+ code: "METHOD_NOT_ALLOWED",
419
+ message: "\uD5C8\uC6A9\uB418\uC9C0 \uC54A\uC740 \uBA54\uC11C\uB4DC\uC785\uB2C8\uB2E4."
420
+ });
405
421
  }
406
422
  }
407
423
  });