@payloadcms/next 3.0.0-beta.55 → 3.0.0-beta.57

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 (135) hide show
  1. package/dist/elements/DocumentHeader/Tabs/Tab/index.scss +91 -0
  2. package/dist/elements/DocumentHeader/Tabs/index.scss +53 -0
  3. package/dist/elements/DocumentHeader/index.scss +51 -0
  4. package/dist/elements/LeaveWithoutSaving/index.scss +36 -0
  5. package/dist/elements/Nav/NavWrapper/index.scss +17 -0
  6. package/dist/elements/Nav/index.scss +150 -0
  7. package/dist/prod/index.js +2 -2
  8. package/dist/prod/styles.css +1 -1
  9. package/dist/routes/graphql/handler.d.ts.map +1 -1
  10. package/dist/routes/graphql/handler.js +11 -11
  11. package/dist/routes/graphql/handler.js.map +1 -1
  12. package/dist/routes/rest/auth/forgotPassword.d.ts.map +1 -1
  13. package/dist/routes/rest/auth/forgotPassword.js +7 -3
  14. package/dist/routes/rest/auth/forgotPassword.js.map +1 -1
  15. package/dist/routes/rest/auth/login.d.ts.map +1 -1
  16. package/dist/routes/rest/auth/login.js +9 -4
  17. package/dist/routes/rest/auth/login.js.map +1 -1
  18. package/dist/routes/rest/auth/refresh.d.ts.map +1 -1
  19. package/dist/routes/rest/auth/refresh.js +12 -20
  20. package/dist/routes/rest/auth/refresh.js.map +1 -1
  21. package/dist/routes/rest/auth/registerFirstUser.d.ts.map +1 -1
  22. package/dist/routes/rest/auth/registerFirstUser.js +9 -2
  23. package/dist/routes/rest/auth/registerFirstUser.js.map +1 -1
  24. package/dist/routes/rest/auth/verifyEmail.js +1 -1
  25. package/dist/routes/rest/auth/verifyEmail.js.map +1 -1
  26. package/dist/routes/rest/buildFormState.d.ts +2 -2
  27. package/dist/routes/rest/buildFormState.d.ts.map +1 -1
  28. package/dist/routes/rest/buildFormState.js.map +1 -1
  29. package/dist/routes/rest/files/checkFileAccess.d.ts +2 -2
  30. package/dist/routes/rest/files/checkFileAccess.d.ts.map +1 -1
  31. package/dist/routes/rest/files/checkFileAccess.js.map +1 -1
  32. package/dist/routes/rest/files/getFile.d.ts +2 -2
  33. package/dist/routes/rest/files/getFile.d.ts.map +1 -1
  34. package/dist/routes/rest/files/getFile.js.map +1 -1
  35. package/dist/routes/rest/index.d.ts.map +1 -1
  36. package/dist/routes/rest/index.js +88 -93
  37. package/dist/routes/rest/index.js.map +1 -1
  38. package/dist/routes/rest/og/index.d.ts +2 -2
  39. package/dist/routes/rest/og/index.d.ts.map +1 -1
  40. package/dist/routes/rest/og/index.js.map +1 -1
  41. package/dist/routes/rest/og/roboto-regular.woff +0 -0
  42. package/dist/routes/rest/routeError.d.ts +2 -2
  43. package/dist/routes/rest/routeError.d.ts.map +1 -1
  44. package/dist/routes/rest/routeError.js.map +1 -1
  45. package/dist/routes/rest/types.d.ts +7 -7
  46. package/dist/routes/rest/types.d.ts.map +1 -1
  47. package/dist/routes/rest/types.js.map +1 -1
  48. package/dist/scss/app.scss +208 -0
  49. package/dist/scss/colors.scss +269 -0
  50. package/dist/scss/custom.css +1 -0
  51. package/dist/scss/queries.scss +27 -0
  52. package/dist/scss/resets.scss +17 -0
  53. package/dist/scss/styles.scss +11 -0
  54. package/dist/scss/svg.scss +10 -0
  55. package/dist/scss/toasts.scss +111 -0
  56. package/dist/scss/type.scss +117 -0
  57. package/dist/scss/vars.scss +213 -0
  58. package/dist/scss/z-index.scss +9 -0
  59. package/dist/templates/Default/Wrapper/index.scss +25 -0
  60. package/dist/templates/Default/index.scss +67 -0
  61. package/dist/templates/Minimal/index.scss +28 -0
  62. package/dist/utilities/addDataAndFileToRequest.d.ts +3 -6
  63. package/dist/utilities/addDataAndFileToRequest.d.ts.map +1 -1
  64. package/dist/utilities/addDataAndFileToRequest.js +15 -18
  65. package/dist/utilities/addDataAndFileToRequest.js.map +1 -1
  66. package/dist/utilities/addLocalesToRequest.d.ts +2 -5
  67. package/dist/utilities/addLocalesToRequest.d.ts.map +1 -1
  68. package/dist/utilities/addLocalesToRequest.js +8 -9
  69. package/dist/utilities/addLocalesToRequest.js.map +1 -1
  70. package/dist/utilities/createPayloadRequest.d.ts.map +1 -1
  71. package/dist/utilities/createPayloadRequest.js +3 -1
  72. package/dist/utilities/createPayloadRequest.js.map +1 -1
  73. package/dist/utilities/headersWithCors.d.ts +2 -2
  74. package/dist/utilities/headersWithCors.d.ts.map +1 -1
  75. package/dist/utilities/headersWithCors.js.map +1 -1
  76. package/dist/utilities/initPage/index.d.ts.map +1 -1
  77. package/dist/utilities/initPage/index.js.map +1 -1
  78. package/dist/utilities/mergeHeaders.d.ts +2 -0
  79. package/dist/utilities/mergeHeaders.d.ts.map +1 -0
  80. package/dist/utilities/mergeHeaders.js +37 -0
  81. package/dist/utilities/mergeHeaders.js.map +1 -0
  82. package/dist/views/API/RenderJSON/index.scss +90 -0
  83. package/dist/views/API/index.scss +124 -0
  84. package/dist/views/Account/Settings/index.scss +46 -0
  85. package/dist/views/CreateFirstUser/index.scss +5 -0
  86. package/dist/views/Dashboard/Default/index.scss +58 -0
  87. package/dist/views/Document/getDocumentData.d.ts +2 -2
  88. package/dist/views/Document/getDocumentData.d.ts.map +1 -1
  89. package/dist/views/Document/getDocumentData.js.map +1 -1
  90. package/dist/views/Edit/Default/Auth/APIKey.js.map +1 -1
  91. package/dist/views/Edit/Default/Auth/index.d.ts.map +1 -1
  92. package/dist/views/Edit/Default/Auth/index.js +10 -3
  93. package/dist/views/Edit/Default/Auth/index.js.map +1 -1
  94. package/dist/views/Edit/Default/Auth/index.scss +61 -0
  95. package/dist/views/Edit/Default/Auth/types.d.ts +1 -0
  96. package/dist/views/Edit/Default/Auth/types.d.ts.map +1 -1
  97. package/dist/views/Edit/Default/Auth/types.js.map +1 -1
  98. package/dist/views/Edit/Default/index.d.ts.map +1 -1
  99. package/dist/views/Edit/Default/index.js +1 -0
  100. package/dist/views/Edit/Default/index.js.map +1 -1
  101. package/dist/views/Edit/Default/index.scss +21 -0
  102. package/dist/views/ForgotPassword/ForgotPasswordForm/index.d.ts.map +1 -1
  103. package/dist/views/ForgotPassword/ForgotPasswordForm/index.js +34 -6
  104. package/dist/views/ForgotPassword/ForgotPasswordForm/index.js.map +1 -1
  105. package/dist/views/List/Default/index.scss +195 -0
  106. package/dist/views/LivePreview/IFrame/index.scss +7 -0
  107. package/dist/views/LivePreview/Preview/index.scss +41 -0
  108. package/dist/views/LivePreview/Toolbar/Controls/index.scss +59 -0
  109. package/dist/views/LivePreview/Toolbar/SizeInput/index.scss +10 -0
  110. package/dist/views/LivePreview/Toolbar/index.scss +41 -0
  111. package/dist/views/LivePreview/ToolbarArea/index.scss +4 -0
  112. package/dist/views/LivePreview/index.scss +66 -0
  113. package/dist/views/Login/LoginForm/index.d.ts.map +1 -1
  114. package/dist/views/Login/LoginForm/index.js +38 -8
  115. package/dist/views/Login/LoginForm/index.js.map +1 -1
  116. package/dist/views/Login/LoginForm/index.scss +8 -0
  117. package/dist/views/Login/index.scss +8 -0
  118. package/dist/views/Logout/index.scss +20 -0
  119. package/dist/views/NotFound/index.scss +37 -0
  120. package/dist/views/ResetPassword/index.scss +5 -0
  121. package/dist/views/Unauthorized/index.scss +36 -0
  122. package/dist/views/Verify/index.scss +14 -0
  123. package/dist/views/Version/Default/index.scss +70 -0
  124. package/dist/views/Version/RenderFieldsToDiff/Label/index.scss +4 -0
  125. package/dist/views/Version/RenderFieldsToDiff/fields/Iterable/index.scss +34 -0
  126. package/dist/views/Version/RenderFieldsToDiff/fields/Nested/index.scss +12 -0
  127. package/dist/views/Version/RenderFieldsToDiff/fields/Relationship/index.scss +13 -0
  128. package/dist/views/Version/RenderFieldsToDiff/fields/Select/index.scss +13 -0
  129. package/dist/views/Version/RenderFieldsToDiff/fields/Text/index.scss +13 -0
  130. package/dist/views/Version/RenderFieldsToDiff/index.scss +18 -0
  131. package/dist/views/Version/Restore/index.scss +30 -0
  132. package/dist/views/Version/SelectComparison/index.scss +13 -0
  133. package/dist/views/Version/SelectLocales/index.scss +7 -0
  134. package/dist/views/Versions/index.scss +108 -0
  135. package/package.json +6 -6
@@ -4,6 +4,7 @@ import { addDataAndFileToRequest } from '../../utilities/addDataAndFileToRequest
4
4
  import { addLocalesToRequestFromData } from '../../utilities/addLocalesToRequest.js';
5
5
  import { createPayloadRequest } from '../../utilities/createPayloadRequest.js';
6
6
  import { headersWithCors } from '../../utilities/headersWithCors.js';
7
+ import { mergeHeaders } from '../../utilities/mergeHeaders.js';
7
8
  import { access } from './auth/access.js';
8
9
  import { forgotPassword } from './auth/forgotPassword.js';
9
10
  import { init } from './auth/init.js';
@@ -103,23 +104,23 @@ const endpoints = {
103
104
  }
104
105
  }
105
106
  };
106
- const handleCustomEndpoints = ({ endpoints, entitySlug, payloadRequest })=>{
107
+ const handleCustomEndpoints = async ({ endpoints, entitySlug, req })=>{
107
108
  if (endpoints && endpoints.length > 0) {
108
109
  let handlerParams = {};
109
- const { pathname } = payloadRequest;
110
+ const { pathname } = req;
110
111
  /*
111
112
  * This makes sure the next.js basePath property is supported. If basePath is used, payload config.routes.api should include it. This makes all outgoing frontend request
112
113
  * target the correct API endpoint starting with basePath, which is good!
113
114
  *
114
115
  * The incoming request (here) will not include the basePath though, as it's automatically stripped by Next.js. Since we are adding the basePath to the pathPrefix below though
115
- * (from payloadRequest.payload.config.routes.api) we need to add it to pathname, which does not contain the basePath. Otherwise, no endpoint will be matched if basePath is set.
116
+ * (from req.payload.config.routes.api) we need to add it to pathname, which does not contain the basePath. Otherwise, no endpoint will be matched if basePath is set.
116
117
  */ let adjustedPathname = pathname;
117
118
  if (process.env.NEXT_BASE_PATH) {
118
119
  adjustedPathname = process.env.NEXT_BASE_PATH + pathname;
119
120
  }
120
- const pathPrefix = payloadRequest.payload.config.routes.api + (entitySlug ? `/${entitySlug}` : '');
121
+ const pathPrefix = req.payload.config.routes.api + (entitySlug ? `/${entitySlug}` : '');
121
122
  const customEndpoint = endpoints.find((endpoint)=>{
122
- if (endpoint.method === payloadRequest.method.toLowerCase()) {
123
+ if (endpoint.method === req.method.toLowerCase()) {
123
124
  const pathMatchFn = match(`${pathPrefix}${endpoint.path}`, {
124
125
  decode: decodeURIComponent
125
126
  });
@@ -131,11 +132,17 @@ const handleCustomEndpoints = ({ endpoints, entitySlug, payloadRequest })=>{
131
132
  }
132
133
  });
133
134
  if (customEndpoint) {
134
- payloadRequest.routeParams = {
135
- ...payloadRequest.routeParams,
135
+ req.routeParams = {
136
+ ...req.routeParams,
136
137
  ...handlerParams
137
138
  };
138
- return customEndpoint.handler(payloadRequest);
139
+ const res = await customEndpoint.handler(req);
140
+ if (res instanceof Response) {
141
+ if (req.responseHeaders) {
142
+ mergeHeaders(req.responseHeaders, res.headers);
143
+ }
144
+ return res;
145
+ }
139
146
  }
140
147
  }
141
148
  return null;
@@ -197,23 +204,19 @@ export const GET = (config)=>async (request, { params: { slug } })=>{
197
204
  const customEndpointResponse = await handleCustomEndpoints({
198
205
  endpoints: collection.config.endpoints,
199
206
  entitySlug: slug1,
200
- payloadRequest: req
207
+ req
201
208
  });
202
209
  if (customEndpointResponse) {
203
210
  return customEndpointResponse;
204
211
  } else {
205
- const reqWithData = await addDataAndFileToRequest({
206
- request: req
207
- });
208
- const payloadRequest = addLocalesToRequestFromData({
209
- request: reqWithData
210
- });
212
+ await addDataAndFileToRequest(req);
213
+ addLocalesToRequestFromData(req);
211
214
  switch(slug.length){
212
215
  case 1:
213
216
  // /:collection
214
217
  res = await endpoints.collection.GET.find({
215
218
  collection,
216
- req: payloadRequest
219
+ req
217
220
  });
218
221
  break;
219
222
  case 2:
@@ -224,14 +227,14 @@ export const GET = (config)=>async (request, { params: { slug } })=>{
224
227
  // /:collection/count
225
228
  res = await endpoints.collection.GET[slug2]({
226
229
  collection,
227
- req: payloadRequest
230
+ req
228
231
  });
229
232
  } else {
230
233
  // /:collection/:id
231
234
  res = await endpoints.collection.GET.findByID({
232
235
  id: slug2,
233
236
  collection,
234
- req: payloadRequest
237
+ req
235
238
  });
236
239
  }
237
240
  break;
@@ -241,14 +244,14 @@ export const GET = (config)=>async (request, { params: { slug } })=>{
241
244
  res = await endpoints.collection.GET.getFile({
242
245
  collection,
243
246
  filename: slug3,
244
- req: payloadRequest
247
+ req
245
248
  });
246
249
  } else if (slug3 in endpoints.collection.GET) {
247
250
  // /:collection/:id/preview
248
251
  res = await endpoints.collection.GET[slug3]({
249
252
  id: slug2,
250
253
  collection,
251
- req: payloadRequest
254
+ req
252
255
  });
253
256
  } else if (`doc-${slug2}-by-id` in endpoints.collection.GET) {
254
257
  // /:collection/access/:id
@@ -256,7 +259,7 @@ export const GET = (config)=>async (request, { params: { slug } })=>{
256
259
  res = await endpoints.collection.GET[`doc-${slug2}-by-id`]({
257
260
  id: slug3,
258
261
  collection,
259
- req: payloadRequest
262
+ req
260
263
  });
261
264
  }
262
265
  break;
@@ -273,23 +276,19 @@ export const GET = (config)=>async (request, { params: { slug } })=>{
273
276
  const customEndpointResponse = await handleCustomEndpoints({
274
277
  endpoints: globalConfig.endpoints,
275
278
  entitySlug: `${slug1}/${slug2}`,
276
- payloadRequest: req
279
+ req
277
280
  });
278
281
  if (customEndpointResponse) {
279
282
  return customEndpointResponse;
280
283
  } else {
281
- const reqWithData = await addDataAndFileToRequest({
282
- request: req
283
- });
284
- const payloadRequest = addLocalesToRequestFromData({
285
- request: reqWithData
286
- });
284
+ await addDataAndFileToRequest(req);
285
+ addLocalesToRequestFromData(req);
287
286
  switch(slug.length){
288
287
  case 2:
289
288
  // /globals/:slug
290
289
  res = await endpoints.global.GET.findOne({
291
290
  globalConfig,
292
- req: payloadRequest
291
+ req
293
292
  });
294
293
  break;
295
294
  case 3:
@@ -297,7 +296,7 @@ export const GET = (config)=>async (request, { params: { slug } })=>{
297
296
  // /globals/:slug/preview
298
297
  res = await endpoints.global.GET[slug3]({
299
298
  globalConfig,
300
- req: payloadRequest
299
+ req
301
300
  });
302
301
  } else if (`doc-${slug3}` in endpoints.global.GET) {
303
302
  // /globals/:slug/access
@@ -305,7 +304,7 @@ export const GET = (config)=>async (request, { params: { slug } })=>{
305
304
  // /globals/:slug/preview
306
305
  res = await (endpoints.global.GET?.[`doc-${slug3}`])({
307
306
  globalConfig,
308
- req: payloadRequest
307
+ req
309
308
  });
310
309
  }
311
310
  break;
@@ -315,28 +314,29 @@ export const GET = (config)=>async (request, { params: { slug } })=>{
315
314
  res = await (endpoints.global.GET?.[`doc-${slug3}-by-id`])({
316
315
  id: slug4,
317
316
  globalConfig,
318
- req: payloadRequest
317
+ req
319
318
  });
320
319
  }
321
320
  break;
322
321
  }
323
322
  }
324
323
  } else if (slug.length === 1 && slug1 in endpoints.root.GET) {
325
- const reqWithData = await addDataAndFileToRequest({
326
- request: req
327
- });
328
- const payloadRequest = addLocalesToRequestFromData({
329
- request: reqWithData
330
- });
324
+ await addDataAndFileToRequest(req);
325
+ addLocalesToRequestFromData(req);
331
326
  res = await endpoints.root.GET[slug1]({
332
- req: payloadRequest
327
+ req
333
328
  });
334
329
  }
335
- if (res instanceof Response) return res;
330
+ if (res instanceof Response) {
331
+ if (req.responseHeaders) {
332
+ mergeHeaders(req.responseHeaders, res.headers);
333
+ }
334
+ return res;
335
+ }
336
336
  // root routes
337
337
  const customEndpointResponse = await handleCustomEndpoints({
338
338
  endpoints: req.payload.config.endpoints,
339
- payloadRequest: req
339
+ req
340
340
  });
341
341
  if (customEndpointResponse) return customEndpointResponse;
342
342
  return RouteNotFoundResponse({
@@ -386,23 +386,19 @@ export const POST = (config)=>async (request, { params: { slug } })=>{
386
386
  const customEndpointResponse = await handleCustomEndpoints({
387
387
  endpoints: collection.config.endpoints,
388
388
  entitySlug: slug1,
389
- payloadRequest: req
389
+ req
390
390
  });
391
391
  if (customEndpointResponse) {
392
392
  return customEndpointResponse;
393
393
  } else {
394
- const reqWithData = await addDataAndFileToRequest({
395
- request: req
396
- });
397
- const payloadRequest = addLocalesToRequestFromData({
398
- request: reqWithData
399
- });
394
+ await addDataAndFileToRequest(req);
395
+ addLocalesToRequestFromData(req);
400
396
  switch(slug.length){
401
397
  case 1:
402
398
  // /:collection
403
399
  res = await endpoints.collection.POST.create({
404
400
  collection,
405
- req: payloadRequest
401
+ req
406
402
  });
407
403
  break;
408
404
  case 2:
@@ -417,7 +413,7 @@ export const POST = (config)=>async (request, { params: { slug } })=>{
417
413
  // /:collection/refresh-token
418
414
  res = await (endpoints.collection.POST?.[slug2])({
419
415
  collection,
420
- req: payloadRequest
416
+ req
421
417
  });
422
418
  }
423
419
  break;
@@ -429,14 +425,14 @@ export const POST = (config)=>async (request, { params: { slug } })=>{
429
425
  res = await endpoints.collection.POST[`doc-${slug2}-by-id`]({
430
426
  id: slug3,
431
427
  collection,
432
- req: payloadRequest
428
+ req
433
429
  });
434
430
  } else if (slug3 === 'duplicate' && collection.config.disableDuplicate !== true) {
435
431
  // /:collection/:id/duplicate
436
432
  res = await endpoints.collection.POST.duplicate({
437
433
  id: slug2,
438
434
  collection,
439
- req: payloadRequest
435
+ req
440
436
  });
441
437
  }
442
438
  break;
@@ -453,23 +449,19 @@ export const POST = (config)=>async (request, { params: { slug } })=>{
453
449
  const customEndpointResponse = await handleCustomEndpoints({
454
450
  endpoints: globalConfig.endpoints,
455
451
  entitySlug: `${slug1}/${slug2}`,
456
- payloadRequest: req
452
+ req
457
453
  });
458
454
  if (customEndpointResponse) {
459
455
  return customEndpointResponse;
460
456
  } else {
461
- const reqWithData = await addDataAndFileToRequest({
462
- request: req
463
- });
464
- const payloadRequest = addLocalesToRequestFromData({
465
- request: reqWithData
466
- });
457
+ await addDataAndFileToRequest(req);
458
+ addLocalesToRequestFromData(req);
467
459
  switch(slug.length){
468
460
  case 2:
469
461
  // /globals/:slug
470
462
  res = await endpoints.global.POST.update({
471
463
  globalConfig,
472
- req: payloadRequest
464
+ req
473
465
  });
474
466
  break;
475
467
  case 3:
@@ -477,7 +469,7 @@ export const POST = (config)=>async (request, { params: { slug } })=>{
477
469
  // /globals/:slug/access
478
470
  res = await (endpoints.global.POST?.[`doc-${slug3}`])({
479
471
  globalConfig,
480
- req: payloadRequest
472
+ req
481
473
  });
482
474
  }
483
475
  break;
@@ -487,7 +479,7 @@ export const POST = (config)=>async (request, { params: { slug } })=>{
487
479
  res = await (endpoints.global.POST?.[`doc-${slug3}-by-id`])({
488
480
  id: slug4,
489
481
  globalConfig,
490
- req: payloadRequest
482
+ req
491
483
  });
492
484
  }
493
485
  break;
@@ -498,21 +490,22 @@ export const POST = (config)=>async (request, { params: { slug } })=>{
498
490
  }
499
491
  }
500
492
  } else if (slug.length === 1 && slug1 in endpoints.root.POST) {
501
- const reqWithData = await addDataAndFileToRequest({
502
- request: req
503
- });
504
- const payloadRequest = addLocalesToRequestFromData({
505
- request: reqWithData
506
- });
493
+ await addDataAndFileToRequest(req);
494
+ addLocalesToRequestFromData(req);
507
495
  res = await endpoints.root.POST[slug1]({
508
- req: payloadRequest
496
+ req
509
497
  });
510
498
  }
511
- if (res instanceof Response) return res;
499
+ if (res instanceof Response) {
500
+ if (req.responseHeaders) {
501
+ mergeHeaders(req.responseHeaders, res.headers);
502
+ }
503
+ return res;
504
+ }
512
505
  // root routes
513
506
  const customEndpointResponse = await handleCustomEndpoints({
514
507
  endpoints: req.payload.config.endpoints,
515
- payloadRequest: req
508
+ req
516
509
  });
517
510
  if (customEndpointResponse) return customEndpointResponse;
518
511
  return RouteNotFoundResponse({
@@ -554,23 +547,19 @@ export const DELETE = (config)=>async (request, { params: { slug } })=>{
554
547
  const customEndpointResponse = await handleCustomEndpoints({
555
548
  endpoints: collection.config.endpoints,
556
549
  entitySlug: slug1,
557
- payloadRequest: req
550
+ req
558
551
  });
559
552
  if (customEndpointResponse) {
560
553
  return customEndpointResponse;
561
554
  } else {
562
- const reqWithData = await addDataAndFileToRequest({
563
- request: req
564
- });
565
- const payloadRequest = addLocalesToRequestFromData({
566
- request: reqWithData
567
- });
555
+ await addDataAndFileToRequest(req);
556
+ addLocalesToRequestFromData(req);
568
557
  switch(slug.length){
569
558
  case 1:
570
559
  // /:collection
571
560
  res = await endpoints.collection.DELETE.delete({
572
561
  collection,
573
- req: payloadRequest
562
+ req
574
563
  });
575
564
  break;
576
565
  case 2:
@@ -578,17 +567,22 @@ export const DELETE = (config)=>async (request, { params: { slug } })=>{
578
567
  res = await endpoints.collection.DELETE.deleteByID({
579
568
  id: slug2,
580
569
  collection,
581
- req: payloadRequest
570
+ req
582
571
  });
583
572
  break;
584
573
  }
585
574
  }
586
575
  }
587
- if (res instanceof Response) return res;
576
+ if (res instanceof Response) {
577
+ if (req.responseHeaders) {
578
+ mergeHeaders(req.responseHeaders, res.headers);
579
+ }
580
+ return res;
581
+ }
588
582
  // root routes
589
583
  const customEndpointResponse = await handleCustomEndpoints({
590
584
  endpoints: req.payload.config.endpoints,
591
- payloadRequest: req
585
+ req
592
586
  });
593
587
  if (customEndpointResponse) return customEndpointResponse;
594
588
  return RouteNotFoundResponse({
@@ -630,23 +624,19 @@ export const PATCH = (config)=>async (request, { params: { slug } })=>{
630
624
  const customEndpointResponse = await handleCustomEndpoints({
631
625
  endpoints: collection.config.endpoints,
632
626
  entitySlug: slug1,
633
- payloadRequest: req
627
+ req
634
628
  });
635
629
  if (customEndpointResponse) {
636
630
  return customEndpointResponse;
637
631
  } else {
638
- const reqWithData = await addDataAndFileToRequest({
639
- request: req
640
- });
641
- const payloadRequest = addLocalesToRequestFromData({
642
- request: reqWithData
643
- });
632
+ await addDataAndFileToRequest(req);
633
+ addLocalesToRequestFromData(req);
644
634
  switch(slug.length){
645
635
  case 1:
646
636
  // /:collection
647
637
  res = await endpoints.collection.PATCH.update({
648
638
  collection,
649
- req: payloadRequest
639
+ req
650
640
  });
651
641
  break;
652
642
  case 2:
@@ -654,17 +644,22 @@ export const PATCH = (config)=>async (request, { params: { slug } })=>{
654
644
  res = await endpoints.collection.PATCH.updateByID({
655
645
  id: slug2,
656
646
  collection,
657
- req: payloadRequest
647
+ req
658
648
  });
659
649
  break;
660
650
  }
661
651
  }
662
652
  }
663
- if (res instanceof Response) return res;
653
+ if (res instanceof Response) {
654
+ if (req.responseHeaders) {
655
+ mergeHeaders(req.responseHeaders, res.headers);
656
+ }
657
+ return res;
658
+ }
664
659
  // root routes
665
660
  const customEndpointResponse = await handleCustomEndpoints({
666
661
  endpoints: req.payload.config.endpoints,
667
- payloadRequest: req
662
+ req
668
663
  });
669
664
  if (customEndpointResponse) return customEndpointResponse;
670
665
  return RouteNotFoundResponse({
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/routes/rest/index.ts"],"sourcesContent":["import type {\n Collection,\n Endpoint,\n GlobalConfig,\n PayloadRequest,\n PayloadRequestData,\n SanitizedConfig,\n} from 'payload'\n\nimport httpStatus from 'http-status'\nimport { match } from 'path-to-regexp'\n\nimport type {\n CollectionRouteHandler,\n CollectionRouteHandlerWithID,\n GlobalRouteHandler,\n GlobalRouteHandlerWithID,\n} from './types.js'\n\nimport { addDataAndFileToRequest } from '../../utilities/addDataAndFileToRequest.js'\nimport { addLocalesToRequestFromData } from '../../utilities/addLocalesToRequest.js'\nimport { createPayloadRequest } from '../../utilities/createPayloadRequest.js'\nimport { headersWithCors } from '../../utilities/headersWithCors.js'\nimport { access } from './auth/access.js'\nimport { forgotPassword } from './auth/forgotPassword.js'\nimport { init } from './auth/init.js'\nimport { login } from './auth/login.js'\nimport { logout } from './auth/logout.js'\nimport { me } from './auth/me.js'\nimport { refresh } from './auth/refresh.js'\nimport { registerFirstUser } from './auth/registerFirstUser.js'\nimport { resetPassword } from './auth/resetPassword.js'\nimport { unlock } from './auth/unlock.js'\nimport { verifyEmail } from './auth/verifyEmail.js'\nimport { buildFormState } from './buildFormState.js'\nimport { endpointsAreDisabled } from './checkEndpoints.js'\nimport { count } from './collections/count.js'\nimport { create } from './collections/create.js'\nimport { deleteDoc } from './collections/delete.js'\nimport { deleteByID } from './collections/deleteByID.js'\nimport { docAccess } from './collections/docAccess.js'\nimport { duplicate } from './collections/duplicate.js'\nimport { find } from './collections/find.js'\nimport { findByID } from './collections/findByID.js'\nimport { findVersionByID } from './collections/findVersionByID.js'\nimport { findVersions } from './collections/findVersions.js'\nimport { preview as previewCollection } from './collections/preview.js'\nimport { restoreVersion } from './collections/restoreVersion.js'\nimport { update } from './collections/update.js'\nimport { updateByID } from './collections/updateByID.js'\nimport { getFile } from './files/getFile.js'\nimport { docAccess as docAccessGlobal } from './globals/docAccess.js'\nimport { findOne } from './globals/findOne.js'\nimport { findVersionByID as findVersionByIdGlobal } from './globals/findVersionByID.js'\nimport { findVersions as findVersionsGlobal } from './globals/findVersions.js'\nimport { preview as previewGlobal } from './globals/preview.js'\nimport { restoreVersion as restoreVersionGlobal } from './globals/restoreVersion.js'\nimport { update as updateGlobal } from './globals/update.js'\nimport { generateOGImage } from './og/index.js'\nimport { routeError } from './routeError.js'\n\nconst endpoints = {\n collection: {\n DELETE: {\n delete: deleteDoc,\n deleteByID,\n },\n GET: {\n count,\n 'doc-access-by-id': docAccess,\n 'doc-versions-by-id': findVersionByID,\n find,\n findByID,\n getFile,\n init,\n me,\n preview: previewCollection,\n versions: findVersions,\n },\n PATCH: {\n update,\n updateByID,\n },\n POST: {\n access: docAccess,\n create,\n 'doc-access-by-id': docAccess,\n 'doc-verify-by-id': verifyEmail,\n 'doc-versions-by-id': restoreVersion,\n duplicate,\n 'first-register': registerFirstUser,\n 'forgot-password': forgotPassword,\n login,\n logout,\n 'refresh-token': refresh,\n 'reset-password': resetPassword,\n unlock,\n },\n },\n global: {\n GET: {\n 'doc-access': docAccessGlobal,\n 'doc-versions': findVersionsGlobal,\n 'doc-versions-by-id': findVersionByIdGlobal,\n findOne,\n preview: previewGlobal,\n },\n POST: {\n 'doc-access': docAccessGlobal,\n 'doc-versions-by-id': restoreVersionGlobal,\n update: updateGlobal,\n },\n },\n root: {\n GET: {\n access,\n og: generateOGImage,\n },\n POST: {\n 'form-state': buildFormState,\n },\n },\n}\n\nconst handleCustomEndpoints = ({\n endpoints,\n entitySlug,\n payloadRequest,\n}: {\n endpoints: Endpoint[] | GlobalConfig['endpoints']\n entitySlug?: string\n payloadRequest: PayloadRequest\n}): Promise<Response> | Response => {\n if (endpoints && endpoints.length > 0) {\n let handlerParams = {}\n const { pathname } = payloadRequest\n\n /*\n * This makes sure the next.js basePath property is supported. If basePath is used, payload config.routes.api should include it. This makes all outgoing frontend request\n * target the correct API endpoint starting with basePath, which is good!\n *\n * The incoming request (here) will not include the basePath though, as it's automatically stripped by Next.js. Since we are adding the basePath to the pathPrefix below though\n * (from payloadRequest.payload.config.routes.api) we need to add it to pathname, which does not contain the basePath. Otherwise, no endpoint will be matched if basePath is set.\n */\n let adjustedPathname = pathname\n\n if (process.env.NEXT_BASE_PATH) {\n adjustedPathname = process.env.NEXT_BASE_PATH + pathname\n }\n\n const pathPrefix =\n payloadRequest.payload.config.routes.api + (entitySlug ? `/${entitySlug}` : '')\n\n const customEndpoint = endpoints.find((endpoint) => {\n if (endpoint.method === payloadRequest.method.toLowerCase()) {\n const pathMatchFn = match(`${pathPrefix}${endpoint.path}`, {\n decode: decodeURIComponent,\n })\n\n const tempParams = pathMatchFn(adjustedPathname)\n if (tempParams) {\n handlerParams = tempParams.params\n return true\n }\n }\n })\n\n if (customEndpoint) {\n payloadRequest.routeParams = {\n ...payloadRequest.routeParams,\n ...handlerParams,\n }\n return customEndpoint.handler(payloadRequest)\n }\n }\n\n return null\n}\n\nconst RouteNotFoundResponse = ({ slug, req }: { req: PayloadRequest; slug: string[] }) =>\n Response.json(\n {\n message: `Route Not Found: \"${slug.join('/')}\"`,\n },\n {\n headers: headersWithCors({\n headers: new Headers(),\n req,\n }),\n status: httpStatus.NOT_FOUND,\n },\n )\n\nexport const OPTIONS =\n (config: Promise<SanitizedConfig> | SanitizedConfig) => async (request: Request) => {\n let req: PayloadRequest\n\n try {\n req = await createPayloadRequest({\n config,\n request,\n })\n\n return Response.json(\n {},\n {\n headers: headersWithCors({\n headers: new Headers(),\n req,\n }),\n status: 200,\n },\n )\n } catch (error) {\n return routeError({\n config,\n err: error,\n req: req || request,\n })\n }\n }\n\nexport const GET =\n (config: Promise<SanitizedConfig> | SanitizedConfig) =>\n async (request: Request, { params: { slug } }: { params: { slug: string[] } }) => {\n const [slug1, slug2, slug3, slug4] = slug\n let req: PayloadRequest | (PayloadRequest & PayloadRequestData)\n let res: Response\n let collection: Collection\n\n try {\n req = await createPayloadRequest({\n config,\n request,\n })\n\n const disableEndpoints = endpointsAreDisabled({\n endpoints: req.payload.config.endpoints,\n request,\n })\n\n if (disableEndpoints) return disableEndpoints\n\n collection = req.payload.collections?.[slug1]\n\n if (collection) {\n req.routeParams.collection = slug1\n const disableEndpoints = endpointsAreDisabled({\n endpoints: collection.config.endpoints,\n request,\n })\n if (disableEndpoints) return disableEndpoints\n\n const customEndpointResponse = await handleCustomEndpoints({\n endpoints: collection.config.endpoints,\n entitySlug: slug1,\n payloadRequest: req,\n })\n\n if (customEndpointResponse) {\n return customEndpointResponse\n } else {\n const reqWithData = await addDataAndFileToRequest({ request: req })\n const payloadRequest = addLocalesToRequestFromData({ request: reqWithData })\n\n switch (slug.length) {\n case 1:\n // /:collection\n res = await endpoints.collection.GET.find({ collection, req: payloadRequest })\n break\n case 2:\n if (slug2 in endpoints.collection.GET) {\n // /:collection/init\n // /:collection/me\n // /:collection/versions\n // /:collection/count\n res = await (endpoints.collection.GET[slug2] as CollectionRouteHandler)({\n collection,\n req: payloadRequest,\n })\n } else {\n // /:collection/:id\n res = await endpoints.collection.GET.findByID({\n id: slug2,\n collection,\n req: payloadRequest,\n })\n }\n break\n case 3:\n if (slug2 === 'file') {\n // /:collection/file/:filename\n res = await endpoints.collection.GET.getFile({\n collection,\n filename: slug3,\n req: payloadRequest,\n })\n } else if (slug3 in endpoints.collection.GET) {\n // /:collection/:id/preview\n res = await (endpoints.collection.GET[slug3] as CollectionRouteHandlerWithID)({\n id: slug2,\n collection,\n req: payloadRequest,\n })\n } else if (`doc-${slug2}-by-id` in endpoints.collection.GET) {\n // /:collection/access/:id\n // /:collection/versions/:id\n res = await (\n endpoints.collection.GET[`doc-${slug2}-by-id`] as CollectionRouteHandlerWithID\n )({ id: slug3, collection, req: payloadRequest })\n }\n break\n }\n }\n } else if (slug1 === 'globals') {\n const globalConfig = req.payload.config.globals.find((global) => global.slug === slug2)\n req.routeParams.global = globalConfig.slug\n\n const disableEndpoints = endpointsAreDisabled({\n endpoints: globalConfig.endpoints,\n request,\n })\n if (disableEndpoints) return disableEndpoints\n\n const customEndpointResponse = await handleCustomEndpoints({\n endpoints: globalConfig.endpoints,\n entitySlug: `${slug1}/${slug2}`,\n payloadRequest: req,\n })\n\n if (customEndpointResponse) {\n return customEndpointResponse\n } else {\n const reqWithData = await addDataAndFileToRequest({ request: req })\n const payloadRequest = addLocalesToRequestFromData({ request: reqWithData })\n\n switch (slug.length) {\n case 2:\n // /globals/:slug\n res = await endpoints.global.GET.findOne({ globalConfig, req: payloadRequest })\n break\n case 3:\n if (slug3 in endpoints.global.GET) {\n // /globals/:slug/preview\n res = await (endpoints.global.GET[slug3] as GlobalRouteHandler)({\n globalConfig,\n req: payloadRequest,\n })\n } else if (`doc-${slug3}` in endpoints.global.GET) {\n // /globals/:slug/access\n // /globals/:slug/versions\n // /globals/:slug/preview\n res = await (endpoints.global.GET?.[`doc-${slug3}`] as GlobalRouteHandler)({\n globalConfig,\n req: payloadRequest,\n })\n }\n break\n case 4:\n if (`doc-${slug3}-by-id` in endpoints.global.GET) {\n // /globals/:slug/versions/:id\n res = await (\n endpoints.global.GET?.[`doc-${slug3}-by-id`] as GlobalRouteHandlerWithID\n )({\n id: slug4,\n globalConfig,\n req: payloadRequest,\n })\n }\n break\n }\n }\n } else if (slug.length === 1 && slug1 in endpoints.root.GET) {\n const reqWithData = await addDataAndFileToRequest({ request: req })\n const payloadRequest = addLocalesToRequestFromData({ request: reqWithData })\n res = await endpoints.root.GET[slug1]({ req: payloadRequest })\n }\n\n if (res instanceof Response) return res\n\n // root routes\n const customEndpointResponse = await handleCustomEndpoints({\n endpoints: req.payload.config.endpoints,\n payloadRequest: req,\n })\n if (customEndpointResponse) return customEndpointResponse\n\n return RouteNotFoundResponse({\n slug,\n req,\n })\n } catch (error) {\n return routeError({\n collection,\n config,\n err: error,\n req: req || request,\n })\n }\n }\n\nexport const POST =\n (config: Promise<SanitizedConfig> | SanitizedConfig) =>\n async (request: Request, { params: { slug } }: { params: { slug: string[] } }) => {\n const [slug1, slug2, slug3, slug4] = slug\n let req: PayloadRequest\n let res: Response\n let collection: Collection\n\n const overrideHttpMethod = request.headers.get('X-HTTP-Method-Override')\n if (overrideHttpMethod === 'GET') {\n return await GET(config)(request, { params: { slug } })\n }\n\n try {\n req = await createPayloadRequest({\n config,\n request,\n })\n\n collection = req.payload.collections?.[slug1]\n\n const disableEndpoints = endpointsAreDisabled({\n endpoints: req.payload.config.endpoints,\n request,\n })\n\n if (disableEndpoints) return disableEndpoints\n\n if (collection) {\n req.routeParams.collection = slug1\n const disableEndpoints = endpointsAreDisabled({\n endpoints: collection.config.endpoints,\n request,\n })\n if (disableEndpoints) return disableEndpoints\n\n const customEndpointResponse = await handleCustomEndpoints({\n endpoints: collection.config.endpoints,\n entitySlug: slug1,\n payloadRequest: req,\n })\n\n if (customEndpointResponse) {\n return customEndpointResponse\n } else {\n const reqWithData = await addDataAndFileToRequest({ request: req })\n const payloadRequest = addLocalesToRequestFromData({ request: reqWithData })\n\n switch (slug.length) {\n case 1:\n // /:collection\n res = await endpoints.collection.POST.create({ collection, req: payloadRequest })\n break\n case 2:\n if (slug2 in endpoints.collection.POST) {\n // /:collection/login\n // /:collection/logout\n // /:collection/unlock\n // /:collection/access\n // /:collection/first-register\n // /:collection/forgot-password\n // /:collection/reset-password\n // /:collection/refresh-token\n\n res = await (endpoints.collection.POST?.[slug2] as CollectionRouteHandler)({\n collection,\n req: payloadRequest,\n })\n }\n break\n case 3:\n if (`doc-${slug2}-by-id` in endpoints.collection.POST) {\n // /:collection/access/:id\n // /:collection/versions/:id\n // /:collection/verify/:token (\"doc-verify-by-id\" uses id as token internally)\n res = await (\n endpoints.collection.POST[`doc-${slug2}-by-id`] as CollectionRouteHandlerWithID\n )({ id: slug3, collection, req: payloadRequest })\n } else if (slug3 === 'duplicate' && collection.config.disableDuplicate !== true) {\n // /:collection/:id/duplicate\n res = await endpoints.collection.POST.duplicate({\n id: slug2,\n collection,\n req: payloadRequest,\n })\n }\n break\n }\n }\n } else if (slug1 === 'globals' && slug2) {\n const globalConfig = req.payload.config.globals.find((global) => global.slug === slug2)\n req.routeParams.global = globalConfig.slug\n\n const disableEndpoints = endpointsAreDisabled({\n endpoints: globalConfig.endpoints,\n request,\n })\n if (disableEndpoints) return disableEndpoints\n\n const customEndpointResponse = await handleCustomEndpoints({\n endpoints: globalConfig.endpoints,\n entitySlug: `${slug1}/${slug2}`,\n payloadRequest: req,\n })\n\n if (customEndpointResponse) {\n return customEndpointResponse\n } else {\n const reqWithData = await addDataAndFileToRequest({ request: req })\n const payloadRequest = addLocalesToRequestFromData({ request: reqWithData })\n switch (slug.length) {\n case 2:\n // /globals/:slug\n res = await endpoints.global.POST.update({ globalConfig, req: payloadRequest })\n break\n case 3:\n if (`doc-${slug3}` in endpoints.global.POST) {\n // /globals/:slug/access\n res = await (endpoints.global.POST?.[`doc-${slug3}`] as GlobalRouteHandler)({\n globalConfig,\n req: payloadRequest,\n })\n }\n break\n case 4:\n if (`doc-${slug3}-by-id` in endpoints.global.POST) {\n // /globals/:slug/versions/:id\n res = await (\n endpoints.global.POST?.[`doc-${slug3}-by-id`] as GlobalRouteHandlerWithID\n )({\n id: slug4,\n globalConfig,\n req: payloadRequest,\n })\n }\n break\n default:\n res = new Response('Route Not Found', { status: 404 })\n }\n }\n } else if (slug.length === 1 && slug1 in endpoints.root.POST) {\n const reqWithData = await addDataAndFileToRequest({ request: req })\n const payloadRequest = addLocalesToRequestFromData({ request: reqWithData })\n res = await endpoints.root.POST[slug1]({ req: payloadRequest })\n }\n\n if (res instanceof Response) return res\n\n // root routes\n const customEndpointResponse = await handleCustomEndpoints({\n endpoints: req.payload.config.endpoints,\n payloadRequest: req,\n })\n if (customEndpointResponse) return customEndpointResponse\n\n return RouteNotFoundResponse({\n slug,\n req,\n })\n } catch (error) {\n return routeError({\n collection,\n config,\n err: error,\n req: req || request,\n })\n }\n }\n\nexport const DELETE =\n (config: Promise<SanitizedConfig> | SanitizedConfig) =>\n async (request: Request, { params: { slug } }: { params: { slug: string[] } }) => {\n const [slug1, slug2] = slug\n let req: PayloadRequest\n let res: Response\n let collection: Collection\n\n try {\n req = await createPayloadRequest({\n config,\n request,\n })\n collection = req.payload.collections?.[slug1]\n\n const disableEndpoints = endpointsAreDisabled({\n endpoints: req.payload.config.endpoints,\n request,\n })\n if (disableEndpoints) return disableEndpoints\n\n if (collection) {\n req.routeParams.collection = slug1\n\n const disableEndpoints = endpointsAreDisabled({\n endpoints: collection.config.endpoints,\n request,\n })\n if (disableEndpoints) return disableEndpoints\n\n const customEndpointResponse = await handleCustomEndpoints({\n endpoints: collection.config.endpoints,\n entitySlug: slug1,\n payloadRequest: req,\n })\n if (customEndpointResponse) {\n return customEndpointResponse\n } else {\n const reqWithData = await addDataAndFileToRequest({ request: req })\n const payloadRequest = addLocalesToRequestFromData({ request: reqWithData })\n\n switch (slug.length) {\n case 1:\n // /:collection\n res = await endpoints.collection.DELETE.delete({ collection, req: payloadRequest })\n break\n case 2:\n // /:collection/:id\n res = await endpoints.collection.DELETE.deleteByID({\n id: slug2,\n collection,\n req: payloadRequest,\n })\n break\n }\n }\n }\n\n if (res instanceof Response) return res\n\n // root routes\n const customEndpointResponse = await handleCustomEndpoints({\n endpoints: req.payload.config.endpoints,\n payloadRequest: req,\n })\n if (customEndpointResponse) return customEndpointResponse\n\n return RouteNotFoundResponse({\n slug,\n req,\n })\n } catch (error) {\n return routeError({\n collection,\n config,\n err: error,\n req: req || request,\n })\n }\n }\n\nexport const PATCH =\n (config: Promise<SanitizedConfig> | SanitizedConfig) =>\n async (request: Request, { params: { slug } }: { params: { slug: string[] } }) => {\n const [slug1, slug2] = slug\n let req: PayloadRequest\n let res: Response\n let collection: Collection\n\n try {\n req = await createPayloadRequest({\n config,\n request,\n })\n collection = req.payload.collections?.[slug1]\n\n const disableEndpoints = endpointsAreDisabled({\n endpoints: req.payload.config.endpoints,\n request,\n })\n if (disableEndpoints) return disableEndpoints\n\n if (collection) {\n req.routeParams.collection = slug1\n\n const disableEndpoints = endpointsAreDisabled({\n endpoints: collection.config.endpoints,\n request,\n })\n if (disableEndpoints) return disableEndpoints\n\n const customEndpointResponse = await handleCustomEndpoints({\n endpoints: collection.config.endpoints,\n entitySlug: slug1,\n payloadRequest: req,\n })\n\n if (customEndpointResponse) {\n return customEndpointResponse\n } else {\n const reqWithData = await addDataAndFileToRequest({ request: req })\n const payloadRequest = addLocalesToRequestFromData({ request: reqWithData })\n\n switch (slug.length) {\n case 1:\n // /:collection\n res = await endpoints.collection.PATCH.update({ collection, req: payloadRequest })\n break\n case 2:\n // /:collection/:id\n res = await endpoints.collection.PATCH.updateByID({\n id: slug2,\n collection,\n req: payloadRequest,\n })\n break\n }\n }\n }\n\n if (res instanceof Response) return res\n\n // root routes\n const customEndpointResponse = await handleCustomEndpoints({\n endpoints: req.payload.config.endpoints,\n payloadRequest: req,\n })\n if (customEndpointResponse) return customEndpointResponse\n\n return RouteNotFoundResponse({\n slug,\n req,\n })\n } catch (error) {\n return routeError({\n collection,\n config,\n err: error,\n req: req || request,\n })\n }\n }\n"],"names":["httpStatus","match","addDataAndFileToRequest","addLocalesToRequestFromData","createPayloadRequest","headersWithCors","access","forgotPassword","init","login","logout","me","refresh","registerFirstUser","resetPassword","unlock","verifyEmail","buildFormState","endpointsAreDisabled","count","create","deleteDoc","deleteByID","docAccess","duplicate","find","findByID","findVersionByID","findVersions","preview","previewCollection","restoreVersion","update","updateByID","getFile","docAccessGlobal","findOne","findVersionByIdGlobal","findVersionsGlobal","previewGlobal","restoreVersionGlobal","updateGlobal","generateOGImage","routeError","endpoints","collection","DELETE","delete","GET","versions","PATCH","POST","global","root","og","handleCustomEndpoints","entitySlug","payloadRequest","length","handlerParams","pathname","adjustedPathname","process","env","NEXT_BASE_PATH","pathPrefix","payload","config","routes","api","customEndpoint","endpoint","method","toLowerCase","pathMatchFn","path","decode","decodeURIComponent","tempParams","params","routeParams","handler","RouteNotFoundResponse","slug","req","Response","json","message","join","headers","Headers","status","NOT_FOUND","OPTIONS","request","error","err","slug1","slug2","slug3","slug4","res","disableEndpoints","collections","customEndpointResponse","reqWithData","id","filename","globalConfig","globals","overrideHttpMethod","get","disableDuplicate"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../src/routes/rest/index.ts"],"sourcesContent":["import type { Collection, Endpoint, GlobalConfig, PayloadRequest, SanitizedConfig } from 'payload'\n\nimport httpStatus from 'http-status'\nimport { match } from 'path-to-regexp'\n\nimport type {\n CollectionRouteHandler,\n CollectionRouteHandlerWithID,\n GlobalRouteHandler,\n GlobalRouteHandlerWithID,\n} from './types.js'\n\nimport { addDataAndFileToRequest } from '../../utilities/addDataAndFileToRequest.js'\nimport { addLocalesToRequestFromData } from '../../utilities/addLocalesToRequest.js'\nimport { createPayloadRequest } from '../../utilities/createPayloadRequest.js'\nimport { headersWithCors } from '../../utilities/headersWithCors.js'\nimport { mergeHeaders } from '../../utilities/mergeHeaders.js'\nimport { access } from './auth/access.js'\nimport { forgotPassword } from './auth/forgotPassword.js'\nimport { init } from './auth/init.js'\nimport { login } from './auth/login.js'\nimport { logout } from './auth/logout.js'\nimport { me } from './auth/me.js'\nimport { refresh } from './auth/refresh.js'\nimport { registerFirstUser } from './auth/registerFirstUser.js'\nimport { resetPassword } from './auth/resetPassword.js'\nimport { unlock } from './auth/unlock.js'\nimport { verifyEmail } from './auth/verifyEmail.js'\nimport { buildFormState } from './buildFormState.js'\nimport { endpointsAreDisabled } from './checkEndpoints.js'\nimport { count } from './collections/count.js'\nimport { create } from './collections/create.js'\nimport { deleteDoc } from './collections/delete.js'\nimport { deleteByID } from './collections/deleteByID.js'\nimport { docAccess } from './collections/docAccess.js'\nimport { duplicate } from './collections/duplicate.js'\nimport { find } from './collections/find.js'\nimport { findByID } from './collections/findByID.js'\nimport { findVersionByID } from './collections/findVersionByID.js'\nimport { findVersions } from './collections/findVersions.js'\nimport { preview as previewCollection } from './collections/preview.js'\nimport { restoreVersion } from './collections/restoreVersion.js'\nimport { update } from './collections/update.js'\nimport { updateByID } from './collections/updateByID.js'\nimport { getFile } from './files/getFile.js'\nimport { docAccess as docAccessGlobal } from './globals/docAccess.js'\nimport { findOne } from './globals/findOne.js'\nimport { findVersionByID as findVersionByIdGlobal } from './globals/findVersionByID.js'\nimport { findVersions as findVersionsGlobal } from './globals/findVersions.js'\nimport { preview as previewGlobal } from './globals/preview.js'\nimport { restoreVersion as restoreVersionGlobal } from './globals/restoreVersion.js'\nimport { update as updateGlobal } from './globals/update.js'\nimport { generateOGImage } from './og/index.js'\nimport { routeError } from './routeError.js'\n\nconst endpoints = {\n collection: {\n DELETE: {\n delete: deleteDoc,\n deleteByID,\n },\n GET: {\n count,\n 'doc-access-by-id': docAccess,\n 'doc-versions-by-id': findVersionByID,\n find,\n findByID,\n getFile,\n init,\n me,\n preview: previewCollection,\n versions: findVersions,\n },\n PATCH: {\n update,\n updateByID,\n },\n POST: {\n access: docAccess,\n create,\n 'doc-access-by-id': docAccess,\n 'doc-verify-by-id': verifyEmail,\n 'doc-versions-by-id': restoreVersion,\n duplicate,\n 'first-register': registerFirstUser,\n 'forgot-password': forgotPassword,\n login,\n logout,\n 'refresh-token': refresh,\n 'reset-password': resetPassword,\n unlock,\n },\n },\n global: {\n GET: {\n 'doc-access': docAccessGlobal,\n 'doc-versions': findVersionsGlobal,\n 'doc-versions-by-id': findVersionByIdGlobal,\n findOne,\n preview: previewGlobal,\n },\n POST: {\n 'doc-access': docAccessGlobal,\n 'doc-versions-by-id': restoreVersionGlobal,\n update: updateGlobal,\n },\n },\n root: {\n GET: {\n access,\n og: generateOGImage,\n },\n POST: {\n 'form-state': buildFormState,\n },\n },\n}\n\nconst handleCustomEndpoints = async ({\n endpoints,\n entitySlug,\n req,\n}: {\n endpoints: Endpoint[] | GlobalConfig['endpoints']\n entitySlug?: string\n req: PayloadRequest\n}): Promise<Response> => {\n if (endpoints && endpoints.length > 0) {\n let handlerParams = {}\n const { pathname } = req\n\n /*\n * This makes sure the next.js basePath property is supported. If basePath is used, payload config.routes.api should include it. This makes all outgoing frontend request\n * target the correct API endpoint starting with basePath, which is good!\n *\n * The incoming request (here) will not include the basePath though, as it's automatically stripped by Next.js. Since we are adding the basePath to the pathPrefix below though\n * (from req.payload.config.routes.api) we need to add it to pathname, which does not contain the basePath. Otherwise, no endpoint will be matched if basePath is set.\n */\n let adjustedPathname = pathname\n\n if (process.env.NEXT_BASE_PATH) {\n adjustedPathname = process.env.NEXT_BASE_PATH + pathname\n }\n\n const pathPrefix = req.payload.config.routes.api + (entitySlug ? `/${entitySlug}` : '')\n\n const customEndpoint = endpoints.find((endpoint) => {\n if (endpoint.method === req.method.toLowerCase()) {\n const pathMatchFn = match(`${pathPrefix}${endpoint.path}`, {\n decode: decodeURIComponent,\n })\n\n const tempParams = pathMatchFn(adjustedPathname)\n if (tempParams) {\n handlerParams = tempParams.params\n return true\n }\n }\n })\n\n if (customEndpoint) {\n req.routeParams = {\n ...req.routeParams,\n ...handlerParams,\n }\n const res = await customEndpoint.handler(req)\n\n if (res instanceof Response) {\n if (req.responseHeaders) {\n mergeHeaders(req.responseHeaders, res.headers)\n }\n\n return res\n }\n }\n }\n\n return null\n}\n\nconst RouteNotFoundResponse = ({ slug, req }: { req: PayloadRequest; slug: string[] }) =>\n Response.json(\n {\n message: `Route Not Found: \"${slug.join('/')}\"`,\n },\n {\n headers: headersWithCors({\n headers: new Headers(),\n req,\n }),\n status: httpStatus.NOT_FOUND,\n },\n )\n\nexport const OPTIONS =\n (config: Promise<SanitizedConfig> | SanitizedConfig) => async (request: Request) => {\n let req: PayloadRequest\n\n try {\n req = await createPayloadRequest({\n config,\n request,\n })\n\n return Response.json(\n {},\n {\n headers: headersWithCors({\n headers: new Headers(),\n req,\n }),\n status: 200,\n },\n )\n } catch (error) {\n return routeError({\n config,\n err: error,\n req: req || request,\n })\n }\n }\n\nexport const GET =\n (config: Promise<SanitizedConfig> | SanitizedConfig) =>\n async (request: Request, { params: { slug } }: { params: { slug: string[] } }) => {\n const [slug1, slug2, slug3, slug4] = slug\n let req: PayloadRequest\n let res: Response\n let collection: Collection\n\n try {\n req = await createPayloadRequest({\n config,\n request,\n })\n\n const disableEndpoints = endpointsAreDisabled({\n endpoints: req.payload.config.endpoints,\n request,\n })\n\n if (disableEndpoints) return disableEndpoints\n\n collection = req.payload.collections?.[slug1]\n\n if (collection) {\n req.routeParams.collection = slug1\n const disableEndpoints = endpointsAreDisabled({\n endpoints: collection.config.endpoints,\n request,\n })\n if (disableEndpoints) return disableEndpoints\n\n const customEndpointResponse = await handleCustomEndpoints({\n endpoints: collection.config.endpoints,\n entitySlug: slug1,\n req,\n })\n\n if (customEndpointResponse) {\n return customEndpointResponse\n } else {\n await addDataAndFileToRequest(req)\n addLocalesToRequestFromData(req)\n\n switch (slug.length) {\n case 1:\n // /:collection\n res = await endpoints.collection.GET.find({ collection, req })\n break\n case 2:\n if (slug2 in endpoints.collection.GET) {\n // /:collection/init\n // /:collection/me\n // /:collection/versions\n // /:collection/count\n res = await (endpoints.collection.GET[slug2] as CollectionRouteHandler)({\n collection,\n req,\n })\n } else {\n // /:collection/:id\n res = await endpoints.collection.GET.findByID({\n id: slug2,\n collection,\n req,\n })\n }\n break\n case 3:\n if (slug2 === 'file') {\n // /:collection/file/:filename\n res = await endpoints.collection.GET.getFile({\n collection,\n filename: slug3,\n req,\n })\n } else if (slug3 in endpoints.collection.GET) {\n // /:collection/:id/preview\n res = await (endpoints.collection.GET[slug3] as CollectionRouteHandlerWithID)({\n id: slug2,\n collection,\n req,\n })\n } else if (`doc-${slug2}-by-id` in endpoints.collection.GET) {\n // /:collection/access/:id\n // /:collection/versions/:id\n res = await (\n endpoints.collection.GET[`doc-${slug2}-by-id`] as CollectionRouteHandlerWithID\n )({ id: slug3, collection, req })\n }\n break\n }\n }\n } else if (slug1 === 'globals') {\n const globalConfig = req.payload.config.globals.find((global) => global.slug === slug2)\n req.routeParams.global = globalConfig.slug\n\n const disableEndpoints = endpointsAreDisabled({\n endpoints: globalConfig.endpoints,\n request,\n })\n if (disableEndpoints) return disableEndpoints\n\n const customEndpointResponse = await handleCustomEndpoints({\n endpoints: globalConfig.endpoints,\n entitySlug: `${slug1}/${slug2}`,\n req,\n })\n\n if (customEndpointResponse) {\n return customEndpointResponse\n } else {\n await addDataAndFileToRequest(req)\n addLocalesToRequestFromData(req)\n\n switch (slug.length) {\n case 2:\n // /globals/:slug\n res = await endpoints.global.GET.findOne({ globalConfig, req })\n break\n case 3:\n if (slug3 in endpoints.global.GET) {\n // /globals/:slug/preview\n res = await (endpoints.global.GET[slug3] as GlobalRouteHandler)({\n globalConfig,\n req,\n })\n } else if (`doc-${slug3}` in endpoints.global.GET) {\n // /globals/:slug/access\n // /globals/:slug/versions\n // /globals/:slug/preview\n res = await (endpoints.global.GET?.[`doc-${slug3}`] as GlobalRouteHandler)({\n globalConfig,\n req,\n })\n }\n break\n case 4:\n if (`doc-${slug3}-by-id` in endpoints.global.GET) {\n // /globals/:slug/versions/:id\n res = await (\n endpoints.global.GET?.[`doc-${slug3}-by-id`] as GlobalRouteHandlerWithID\n )({\n id: slug4,\n globalConfig,\n req,\n })\n }\n break\n }\n }\n } else if (slug.length === 1 && slug1 in endpoints.root.GET) {\n await addDataAndFileToRequest(req)\n addLocalesToRequestFromData(req)\n res = await endpoints.root.GET[slug1]({ req })\n }\n\n if (res instanceof Response) {\n if (req.responseHeaders) {\n mergeHeaders(req.responseHeaders, res.headers)\n }\n\n return res\n }\n\n // root routes\n const customEndpointResponse = await handleCustomEndpoints({\n endpoints: req.payload.config.endpoints,\n req,\n })\n\n if (customEndpointResponse) return customEndpointResponse\n\n return RouteNotFoundResponse({\n slug,\n req,\n })\n } catch (error) {\n return routeError({\n collection,\n config,\n err: error,\n req: req || request,\n })\n }\n }\n\nexport const POST =\n (config: Promise<SanitizedConfig> | SanitizedConfig) =>\n async (request: Request, { params: { slug } }: { params: { slug: string[] } }) => {\n const [slug1, slug2, slug3, slug4] = slug\n let req: PayloadRequest\n let res: Response\n let collection: Collection\n\n const overrideHttpMethod = request.headers.get('X-HTTP-Method-Override')\n if (overrideHttpMethod === 'GET') {\n return await GET(config)(request, { params: { slug } })\n }\n\n try {\n req = await createPayloadRequest({\n config,\n request,\n })\n\n collection = req.payload.collections?.[slug1]\n\n const disableEndpoints = endpointsAreDisabled({\n endpoints: req.payload.config.endpoints,\n request,\n })\n\n if (disableEndpoints) return disableEndpoints\n\n if (collection) {\n req.routeParams.collection = slug1\n const disableEndpoints = endpointsAreDisabled({\n endpoints: collection.config.endpoints,\n request,\n })\n if (disableEndpoints) return disableEndpoints\n\n const customEndpointResponse = await handleCustomEndpoints({\n endpoints: collection.config.endpoints,\n entitySlug: slug1,\n req,\n })\n\n if (customEndpointResponse) {\n return customEndpointResponse\n } else {\n await addDataAndFileToRequest(req)\n addLocalesToRequestFromData(req)\n\n switch (slug.length) {\n case 1:\n // /:collection\n res = await endpoints.collection.POST.create({ collection, req })\n break\n case 2:\n if (slug2 in endpoints.collection.POST) {\n // /:collection/login\n // /:collection/logout\n // /:collection/unlock\n // /:collection/access\n // /:collection/first-register\n // /:collection/forgot-password\n // /:collection/reset-password\n // /:collection/refresh-token\n\n res = await (endpoints.collection.POST?.[slug2] as CollectionRouteHandler)({\n collection,\n req,\n })\n }\n break\n case 3:\n if (`doc-${slug2}-by-id` in endpoints.collection.POST) {\n // /:collection/access/:id\n // /:collection/versions/:id\n // /:collection/verify/:token (\"doc-verify-by-id\" uses id as token internally)\n res = await (\n endpoints.collection.POST[`doc-${slug2}-by-id`] as CollectionRouteHandlerWithID\n )({ id: slug3, collection, req })\n } else if (slug3 === 'duplicate' && collection.config.disableDuplicate !== true) {\n // /:collection/:id/duplicate\n res = await endpoints.collection.POST.duplicate({\n id: slug2,\n collection,\n req,\n })\n }\n break\n }\n }\n } else if (slug1 === 'globals' && slug2) {\n const globalConfig = req.payload.config.globals.find((global) => global.slug === slug2)\n req.routeParams.global = globalConfig.slug\n\n const disableEndpoints = endpointsAreDisabled({\n endpoints: globalConfig.endpoints,\n request,\n })\n if (disableEndpoints) return disableEndpoints\n\n const customEndpointResponse = await handleCustomEndpoints({\n endpoints: globalConfig.endpoints,\n entitySlug: `${slug1}/${slug2}`,\n req,\n })\n\n if (customEndpointResponse) {\n return customEndpointResponse\n } else {\n await addDataAndFileToRequest(req)\n addLocalesToRequestFromData(req)\n switch (slug.length) {\n case 2:\n // /globals/:slug\n res = await endpoints.global.POST.update({ globalConfig, req })\n break\n case 3:\n if (`doc-${slug3}` in endpoints.global.POST) {\n // /globals/:slug/access\n res = await (endpoints.global.POST?.[`doc-${slug3}`] as GlobalRouteHandler)({\n globalConfig,\n req,\n })\n }\n break\n case 4:\n if (`doc-${slug3}-by-id` in endpoints.global.POST) {\n // /globals/:slug/versions/:id\n res = await (\n endpoints.global.POST?.[`doc-${slug3}-by-id`] as GlobalRouteHandlerWithID\n )({\n id: slug4,\n globalConfig,\n req,\n })\n }\n break\n default:\n res = new Response('Route Not Found', { status: 404 })\n }\n }\n } else if (slug.length === 1 && slug1 in endpoints.root.POST) {\n await addDataAndFileToRequest(req)\n addLocalesToRequestFromData(req)\n res = await endpoints.root.POST[slug1]({ req })\n }\n\n if (res instanceof Response) {\n if (req.responseHeaders) {\n mergeHeaders(req.responseHeaders, res.headers)\n }\n\n return res\n }\n\n // root routes\n const customEndpointResponse = await handleCustomEndpoints({\n endpoints: req.payload.config.endpoints,\n req,\n })\n\n if (customEndpointResponse) return customEndpointResponse\n\n return RouteNotFoundResponse({\n slug,\n req,\n })\n } catch (error) {\n return routeError({\n collection,\n config,\n err: error,\n req: req || request,\n })\n }\n }\n\nexport const DELETE =\n (config: Promise<SanitizedConfig> | SanitizedConfig) =>\n async (request: Request, { params: { slug } }: { params: { slug: string[] } }) => {\n const [slug1, slug2] = slug\n let req: PayloadRequest\n let res: Response\n let collection: Collection\n\n try {\n req = await createPayloadRequest({\n config,\n request,\n })\n collection = req.payload.collections?.[slug1]\n\n const disableEndpoints = endpointsAreDisabled({\n endpoints: req.payload.config.endpoints,\n request,\n })\n if (disableEndpoints) return disableEndpoints\n\n if (collection) {\n req.routeParams.collection = slug1\n\n const disableEndpoints = endpointsAreDisabled({\n endpoints: collection.config.endpoints,\n request,\n })\n if (disableEndpoints) return disableEndpoints\n\n const customEndpointResponse = await handleCustomEndpoints({\n endpoints: collection.config.endpoints,\n entitySlug: slug1,\n req,\n })\n if (customEndpointResponse) {\n return customEndpointResponse\n } else {\n await addDataAndFileToRequest(req)\n addLocalesToRequestFromData(req)\n\n switch (slug.length) {\n case 1:\n // /:collection\n res = await endpoints.collection.DELETE.delete({ collection, req })\n break\n case 2:\n // /:collection/:id\n res = await endpoints.collection.DELETE.deleteByID({\n id: slug2,\n collection,\n req,\n })\n break\n }\n }\n }\n\n if (res instanceof Response) {\n if (req.responseHeaders) {\n mergeHeaders(req.responseHeaders, res.headers)\n }\n\n return res\n }\n\n // root routes\n const customEndpointResponse = await handleCustomEndpoints({\n endpoints: req.payload.config.endpoints,\n req,\n })\n\n if (customEndpointResponse) return customEndpointResponse\n\n return RouteNotFoundResponse({\n slug,\n req,\n })\n } catch (error) {\n return routeError({\n collection,\n config,\n err: error,\n req: req || request,\n })\n }\n }\n\nexport const PATCH =\n (config: Promise<SanitizedConfig> | SanitizedConfig) =>\n async (request: Request, { params: { slug } }: { params: { slug: string[] } }) => {\n const [slug1, slug2] = slug\n let req: PayloadRequest\n let res: Response\n let collection: Collection\n\n try {\n req = await createPayloadRequest({\n config,\n request,\n })\n collection = req.payload.collections?.[slug1]\n\n const disableEndpoints = endpointsAreDisabled({\n endpoints: req.payload.config.endpoints,\n request,\n })\n if (disableEndpoints) return disableEndpoints\n\n if (collection) {\n req.routeParams.collection = slug1\n\n const disableEndpoints = endpointsAreDisabled({\n endpoints: collection.config.endpoints,\n request,\n })\n if (disableEndpoints) return disableEndpoints\n\n const customEndpointResponse = await handleCustomEndpoints({\n endpoints: collection.config.endpoints,\n entitySlug: slug1,\n req,\n })\n\n if (customEndpointResponse) {\n return customEndpointResponse\n } else {\n await addDataAndFileToRequest(req)\n addLocalesToRequestFromData(req)\n\n switch (slug.length) {\n case 1:\n // /:collection\n res = await endpoints.collection.PATCH.update({ collection, req })\n break\n case 2:\n // /:collection/:id\n res = await endpoints.collection.PATCH.updateByID({\n id: slug2,\n collection,\n req,\n })\n break\n }\n }\n }\n\n if (res instanceof Response) {\n if (req.responseHeaders) {\n mergeHeaders(req.responseHeaders, res.headers)\n }\n\n return res\n }\n\n // root routes\n const customEndpointResponse = await handleCustomEndpoints({\n endpoints: req.payload.config.endpoints,\n req,\n })\n\n if (customEndpointResponse) return customEndpointResponse\n\n return RouteNotFoundResponse({\n slug,\n req,\n })\n } catch (error) {\n return routeError({\n collection,\n config,\n err: error,\n req: req || request,\n })\n }\n }\n"],"names":["httpStatus","match","addDataAndFileToRequest","addLocalesToRequestFromData","createPayloadRequest","headersWithCors","mergeHeaders","access","forgotPassword","init","login","logout","me","refresh","registerFirstUser","resetPassword","unlock","verifyEmail","buildFormState","endpointsAreDisabled","count","create","deleteDoc","deleteByID","docAccess","duplicate","find","findByID","findVersionByID","findVersions","preview","previewCollection","restoreVersion","update","updateByID","getFile","docAccessGlobal","findOne","findVersionByIdGlobal","findVersionsGlobal","previewGlobal","restoreVersionGlobal","updateGlobal","generateOGImage","routeError","endpoints","collection","DELETE","delete","GET","versions","PATCH","POST","global","root","og","handleCustomEndpoints","entitySlug","req","length","handlerParams","pathname","adjustedPathname","process","env","NEXT_BASE_PATH","pathPrefix","payload","config","routes","api","customEndpoint","endpoint","method","toLowerCase","pathMatchFn","path","decode","decodeURIComponent","tempParams","params","routeParams","res","handler","Response","responseHeaders","headers","RouteNotFoundResponse","slug","json","message","join","Headers","status","NOT_FOUND","OPTIONS","request","error","err","slug1","slug2","slug3","slug4","disableEndpoints","collections","customEndpointResponse","id","filename","globalConfig","globals","overrideHttpMethod","get","disableDuplicate"],"mappings":"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"}