@depup/payload 3.82.0-depup.0 → 3.86.0-depup.5

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 (196) hide show
  1. package/README.md +16 -14
  2. package/bin.js +11 -0
  3. package/changes.json +26 -18
  4. package/dist/admin/fields/Row.d.ts +2 -2
  5. package/dist/admin/fields/Row.d.ts.map +1 -1
  6. package/dist/admin/fields/Row.js.map +1 -1
  7. package/dist/admin/forms/Field.d.ts +1 -3
  8. package/dist/admin/forms/Field.d.ts.map +1 -1
  9. package/dist/admin/forms/Field.js.map +1 -1
  10. package/dist/admin/views/index.d.ts +5 -1
  11. package/dist/admin/views/index.d.ts.map +1 -1
  12. package/dist/admin/views/index.js.map +1 -1
  13. package/dist/bin/generateImportMap/index.d.ts.map +1 -1
  14. package/dist/bin/generateImportMap/index.js +1 -0
  15. package/dist/bin/generateImportMap/index.js.map +1 -1
  16. package/dist/bin/generateImportMap/iterateCollections.d.ts.map +1 -1
  17. package/dist/bin/generateImportMap/iterateCollections.js +11 -0
  18. package/dist/bin/generateImportMap/iterateCollections.js.map +1 -1
  19. package/dist/bin/index.d.ts.map +1 -1
  20. package/dist/bin/index.js +3 -1
  21. package/dist/bin/index.js.map +1 -1
  22. package/dist/collections/config/sanitize.d.ts +5 -0
  23. package/dist/collections/config/sanitize.d.ts.map +1 -1
  24. package/dist/collections/config/sanitize.js +21 -0
  25. package/dist/collections/config/sanitize.js.map +1 -1
  26. package/dist/collections/config/sanitize.spec.js +120 -0
  27. package/dist/collections/config/sanitize.spec.js.map +1 -0
  28. package/dist/collections/config/types.d.ts +24 -1
  29. package/dist/collections/config/types.d.ts.map +1 -1
  30. package/dist/collections/config/types.js.map +1 -1
  31. package/dist/collections/operations/create.d.ts.map +1 -1
  32. package/dist/collections/operations/create.js +1 -0
  33. package/dist/collections/operations/create.js.map +1 -1
  34. package/dist/collections/operations/delete.d.ts.map +1 -1
  35. package/dist/collections/operations/delete.js +3 -0
  36. package/dist/collections/operations/delete.js.map +1 -1
  37. package/dist/collections/operations/restoreVersion.d.ts.map +1 -1
  38. package/dist/collections/operations/restoreVersion.js +1 -0
  39. package/dist/collections/operations/restoreVersion.js.map +1 -1
  40. package/dist/collections/operations/update.d.ts.map +1 -1
  41. package/dist/collections/operations/update.js +7 -2
  42. package/dist/collections/operations/update.js.map +1 -1
  43. package/dist/collections/operations/utilities/copyDataWithFreshRowIDs.d.ts +9 -0
  44. package/dist/collections/operations/utilities/copyDataWithFreshRowIDs.d.ts.map +1 -0
  45. package/dist/collections/operations/utilities/copyDataWithFreshRowIDs.js +170 -0
  46. package/dist/collections/operations/utilities/copyDataWithFreshRowIDs.js.map +1 -0
  47. package/dist/collections/operations/utilities/update.d.ts.map +1 -1
  48. package/dist/collections/operations/utilities/update.js +16 -8
  49. package/dist/collections/operations/utilities/update.js.map +1 -1
  50. package/dist/config/build.js +5 -4
  51. package/dist/config/build.js.map +1 -1
  52. package/dist/config/definePlugin.d.ts +41 -0
  53. package/dist/config/definePlugin.d.ts.map +1 -0
  54. package/dist/config/definePlugin.js +34 -0
  55. package/dist/config/definePlugin.js.map +1 -0
  56. package/dist/config/orderable/index.d.ts.map +1 -1
  57. package/dist/config/orderable/index.js +23 -0
  58. package/dist/config/orderable/index.js.map +1 -1
  59. package/dist/config/types.d.ts +30 -2
  60. package/dist/config/types.d.ts.map +1 -1
  61. package/dist/config/types.js.map +1 -1
  62. package/dist/email/normalizeSendEmailOptions.d.ts +13 -0
  63. package/dist/email/normalizeSendEmailOptions.d.ts.map +1 -0
  64. package/dist/email/normalizeSendEmailOptions.js +20 -0
  65. package/dist/email/normalizeSendEmailOptions.js.map +1 -0
  66. package/dist/email/types.d.ts +7 -2
  67. package/dist/email/types.d.ts.map +1 -1
  68. package/dist/email/types.js.map +1 -1
  69. package/dist/errors/APIError.d.ts +2 -1
  70. package/dist/errors/APIError.d.ts.map +1 -1
  71. package/dist/errors/APIError.js +1 -3
  72. package/dist/errors/APIError.js.map +1 -1
  73. package/dist/errors/ValidationError.d.ts +3 -1
  74. package/dist/errors/ValidationError.d.ts.map +1 -1
  75. package/dist/errors/ValidationError.js +1 -3
  76. package/dist/errors/ValidationError.js.map +1 -1
  77. package/dist/fields/config/sanitize.d.ts.map +1 -1
  78. package/dist/fields/config/sanitize.js +3 -0
  79. package/dist/fields/config/sanitize.js.map +1 -1
  80. package/dist/fields/config/sanitize.spec.js +66 -0
  81. package/dist/fields/config/sanitize.spec.js.map +1 -1
  82. package/dist/fields/config/types.d.ts +3 -2
  83. package/dist/fields/config/types.d.ts.map +1 -1
  84. package/dist/fields/config/types.js.map +1 -1
  85. package/dist/fields/hooks/beforeValidate/promise.js +2 -2
  86. package/dist/fields/hooks/beforeValidate/promise.js.map +1 -1
  87. package/dist/globals/operations/restoreVersion.d.ts.map +1 -1
  88. package/dist/globals/operations/restoreVersion.js +1 -0
  89. package/dist/globals/operations/restoreVersion.js.map +1 -1
  90. package/dist/index.bundled.d.ts +484 -115
  91. package/dist/index.d.ts +19 -1
  92. package/dist/index.d.ts.map +1 -1
  93. package/dist/index.js +16 -2
  94. package/dist/index.js.map +1 -1
  95. package/dist/queues/config/collection.d.ts.map +1 -1
  96. package/dist/queues/config/collection.js +0 -1
  97. package/dist/queues/config/collection.js.map +1 -1
  98. package/dist/queues/endpoints/run.d.ts.map +1 -1
  99. package/dist/queues/endpoints/run.js +0 -3
  100. package/dist/queues/endpoints/run.js.map +1 -1
  101. package/dist/queues/errors/calculateBackoffWaitUntil.d.ts.map +1 -1
  102. package/dist/queues/errors/calculateBackoffWaitUntil.js +5 -13
  103. package/dist/queues/errors/calculateBackoffWaitUntil.js.map +1 -1
  104. package/dist/queues/errors/handleWorkflowError.d.ts.map +1 -1
  105. package/dist/queues/errors/handleWorkflowError.js +9 -1
  106. package/dist/queues/errors/handleWorkflowError.js.map +1 -1
  107. package/dist/queues/operations/handleSchedules/countRunnableOrActiveJobsForQueue.d.ts.map +1 -1
  108. package/dist/queues/operations/handleSchedules/countRunnableOrActiveJobsForQueue.js +2 -1
  109. package/dist/queues/operations/handleSchedules/countRunnableOrActiveJobsForQueue.js.map +1 -1
  110. package/dist/queues/operations/handleSchedules/defaultAfterSchedule.js +1 -1
  111. package/dist/queues/operations/handleSchedules/defaultAfterSchedule.js.map +1 -1
  112. package/dist/queues/operations/handleSchedules/index.d.ts.map +1 -1
  113. package/dist/queues/operations/handleSchedules/index.js +4 -1
  114. package/dist/queues/operations/handleSchedules/index.js.map +1 -1
  115. package/dist/queues/operations/runJobs/index.d.ts.map +1 -1
  116. package/dist/queues/operations/runJobs/index.js +44 -26
  117. package/dist/queues/operations/runJobs/index.js.map +1 -1
  118. package/dist/queues/operations/runJobs/runJSONJob/index.d.ts.map +1 -1
  119. package/dist/queues/operations/runJobs/runJSONJob/index.js +1 -0
  120. package/dist/queues/operations/runJobs/runJSONJob/index.js.map +1 -1
  121. package/dist/queues/utilities/updateJob.d.ts.map +1 -1
  122. package/dist/queues/utilities/updateJob.js +2 -1
  123. package/dist/queues/utilities/updateJob.js.map +1 -1
  124. package/dist/types/index.d.ts +4 -6
  125. package/dist/types/index.d.ts.map +1 -1
  126. package/dist/types/index.js.map +1 -1
  127. package/dist/uploads/checkFileAccess.d.ts.map +1 -1
  128. package/dist/uploads/checkFileAccess.js +30 -9
  129. package/dist/uploads/checkFileAccess.js.map +1 -1
  130. package/dist/uploads/checkFileRestrictions.d.ts.map +1 -1
  131. package/dist/uploads/checkFileRestrictions.js +48 -8
  132. package/dist/uploads/checkFileRestrictions.js.map +1 -1
  133. package/dist/uploads/fetchAPI-multipart/isEligibleRequest.d.ts.map +1 -1
  134. package/dist/uploads/fetchAPI-multipart/isEligibleRequest.js +2 -1
  135. package/dist/uploads/fetchAPI-multipart/isEligibleRequest.js.map +1 -1
  136. package/dist/uploads/fetchAPI-multipart/isEligibleRequest.spec.js +29 -0
  137. package/dist/uploads/fetchAPI-multipart/isEligibleRequest.spec.js.map +1 -0
  138. package/dist/uploads/fetchAPI-multipart/processMultipart.d.ts.map +1 -1
  139. package/dist/uploads/fetchAPI-multipart/processMultipart.js +11 -2
  140. package/dist/uploads/fetchAPI-multipart/processMultipart.js.map +1 -1
  141. package/dist/uploads/generateFileData.d.ts +2 -1
  142. package/dist/uploads/generateFileData.d.ts.map +1 -1
  143. package/dist/uploads/generateFileData.js +5 -2
  144. package/dist/uploads/generateFileData.js.map +1 -1
  145. package/dist/uploads/getSafeFilename.d.ts +9 -4
  146. package/dist/uploads/getSafeFilename.d.ts.map +1 -1
  147. package/dist/uploads/getSafeFilename.js +5 -5
  148. package/dist/uploads/getSafeFilename.js.map +1 -1
  149. package/dist/uploads/types.d.ts +4 -0
  150. package/dist/uploads/types.d.ts.map +1 -1
  151. package/dist/uploads/types.js.map +1 -1
  152. package/dist/utilities/addDataAndFileToRequest.d.ts.map +1 -1
  153. package/dist/utilities/addDataAndFileToRequest.js +16 -3
  154. package/dist/utilities/addDataAndFileToRequest.js.map +1 -1
  155. package/dist/utilities/addDataAndFileToRequest.spec.js +41 -0
  156. package/dist/utilities/addDataAndFileToRequest.spec.js.map +1 -0
  157. package/dist/utilities/createPayloadRequest.d.ts.map +1 -1
  158. package/dist/utilities/createPayloadRequest.js +1 -0
  159. package/dist/utilities/createPayloadRequest.js.map +1 -1
  160. package/dist/utilities/filterDataToSelectedLocales.d.ts.map +1 -1
  161. package/dist/utilities/filterDataToSelectedLocales.js +74 -31
  162. package/dist/utilities/filterDataToSelectedLocales.js.map +1 -1
  163. package/dist/utilities/filterDataToSelectedLocales.spec.js +337 -0
  164. package/dist/utilities/filterDataToSelectedLocales.spec.js.map +1 -1
  165. package/dist/utilities/formatErrors.d.ts +1 -1
  166. package/dist/utilities/formatErrors.d.ts.map +1 -1
  167. package/dist/utilities/formatErrors.js +4 -7
  168. package/dist/utilities/formatErrors.js.map +1 -1
  169. package/dist/utilities/formatErrors.spec.js +101 -0
  170. package/dist/utilities/formatErrors.spec.js.map +1 -0
  171. package/dist/utilities/isURLAllowed.d.ts.map +1 -1
  172. package/dist/utilities/isURLAllowed.js +9 -3
  173. package/dist/utilities/isURLAllowed.js.map +1 -1
  174. package/dist/utilities/isURLAllowed.spec.js +78 -0
  175. package/dist/utilities/isURLAllowed.spec.js.map +1 -0
  176. package/dist/utilities/parseParams/index.d.ts +1 -1
  177. package/dist/utilities/parseParams/index.d.ts.map +1 -1
  178. package/dist/utilities/parseParams/index.js +3 -0
  179. package/dist/utilities/parseParams/index.js.map +1 -1
  180. package/dist/utilities/parseParams/index.spec.js +24 -0
  181. package/dist/utilities/parseParams/index.spec.js.map +1 -1
  182. package/dist/utilities/profiling.d.ts +12 -0
  183. package/dist/utilities/profiling.d.ts.map +1 -0
  184. package/dist/utilities/profiling.js +56 -0
  185. package/dist/utilities/profiling.js.map +1 -0
  186. package/dist/utilities/profiling.spec.js +53 -0
  187. package/dist/utilities/profiling.spec.js.map +1 -0
  188. package/dist/versions/saveVersion.js +1 -1
  189. package/dist/versions/saveVersion.js.map +1 -1
  190. package/dist/versions/schedule/job.d.ts.map +1 -1
  191. package/dist/versions/schedule/job.js +4 -1
  192. package/dist/versions/schedule/job.js.map +1 -1
  193. package/dist/versions/updateLatestVersion.d.ts.map +1 -1
  194. package/dist/versions/updateLatestVersion.js +55 -8
  195. package/dist/versions/updateLatestVersion.js.map +1 -1
  196. package/package.json +44 -37
package/README.md CHANGED
@@ -13,32 +13,34 @@ npm install @depup/payload
13
13
 
14
14
  | Field | Value |
15
15
  |-------|-------|
16
- | Original | [payload](https://www.npmjs.com/package/payload) @ 3.82.0 |
17
- | Processed | 2026-04-08 |
16
+ | Original | [payload](https://www.npmjs.com/package/payload) @ 3.86.0 |
17
+ | Processed | 2026-07-21 |
18
18
  | Smoke test | passed |
19
- | Deps updated | 17 |
19
+ | Deps updated | 19 |
20
20
 
21
21
  ## Dependency Changes
22
22
 
23
23
  | Dependency | From | To |
24
24
  |------------|------|-----|
25
- | @next/env | ^15.1.5 | ^16.2.2 |
25
+ | @next/env | ^15.1.5 | ^16.2.11 |
26
+ | ajv | 8.18.0 | ^8.20.0 |
26
27
  | ci-info | ^4.1.0 | ^4.4.0 |
27
- | console-table-printer | 2.12.1 | ^2.15.0 |
28
- | croner | 9.1.0 | ^10.0.1 |
29
- | file-type | 21.3.4 | ^22.0.0 |
30
- | get-tsconfig | 4.8.1 | ^4.13.7 |
31
- | ipaddr.js | 2.2.0 | ^2.3.0 |
32
- | jose | 5.10.0 | ^6.2.2 |
28
+ | console-table-printer | 2.12.1 | ^2.16.1 |
29
+ | file-type | 21.3.4 | ^22.0.1 |
30
+ | get-tsconfig | 4.8.1 | ^4.14.0 |
31
+ | ipaddr.js | 2.2.0 | ^2.4.0 |
32
+ | jose | 5.10.0 | ^6.2.3 |
33
33
  | json-schema-to-typescript | 15.0.3 | ^15.0.4 |
34
34
  | path-to-regexp | 6.3.0 | ^8.4.2 |
35
35
  | pino | 9.14.0 | ^10.3.1 |
36
36
  | pino-pretty | 13.1.2 | ^13.1.3 |
37
+ | range-parser | 1.2.1 | ^1.3.0 |
37
38
  | sanitize-filename | 1.6.3 | ^1.6.4 |
38
- | ts-essentials | 10.0.3 | ^10.1.1 |
39
- | undici | 7.24.4 | ^8.0.2 |
40
- | uuid | 10.0.0 | ^13.0.0 |
41
- | ws | ^8.16.0 | ^8.20.0 |
39
+ | ts-essentials | 10.0.3 | ^10.2.1 |
40
+ | tsx | 4.22.4 | ^4.23.1 |
41
+ | undici | 7.28.0 | ^8.8.0 |
42
+ | uuid | 13.0.2 | ^14.0.1 |
43
+ | ws | ^8.16.0 | ^8.21.1 |
42
44
 
43
45
  ---
44
46
 
package/bin.js CHANGED
@@ -23,6 +23,17 @@ if (disableTranspile) {
23
23
 
24
24
  if (!useSwc) {
25
25
  const start = async () => {
26
+ // tsx 4.22.4 uses Node's synchronous `module.registerHooks` API when it is available
27
+ // (Node v23.5+). On those versions that code path leaks tsx's internal `?namespace=...`
28
+ // query string onto resolved specifiers — including Node built-ins like `node:crypto` —
29
+ // which Node then tries to open as a file, failing with ENOENT. Removing `registerHooks`
30
+ // forces tsx to fall back to its older async `module.register()` worker path, which does
31
+ // not have this bug. See https://github.com/payloadcms/payload/issues/16949
32
+ const nodeModule = await import('node:module')
33
+ if (typeof nodeModule.default.registerHooks === 'function') {
34
+ nodeModule.default.registerHooks = undefined
35
+ }
36
+
26
37
  // Use tsx
27
38
  let tsImport = (await import('tsx/esm/api')).tsImport
28
39
 
package/changes.json CHANGED
@@ -2,7 +2,11 @@
2
2
  "bumped": {
3
3
  "@next/env": {
4
4
  "from": "^15.1.5",
5
- "to": "^16.2.2"
5
+ "to": "^16.2.11"
6
+ },
7
+ "ajv": {
8
+ "from": "8.18.0",
9
+ "to": "^8.20.0"
6
10
  },
7
11
  "ci-info": {
8
12
  "from": "^4.1.0",
@@ -10,27 +14,23 @@
10
14
  },
11
15
  "console-table-printer": {
12
16
  "from": "2.12.1",
13
- "to": "^2.15.0"
14
- },
15
- "croner": {
16
- "from": "9.1.0",
17
- "to": "^10.0.1"
17
+ "to": "^2.16.1"
18
18
  },
19
19
  "file-type": {
20
20
  "from": "21.3.4",
21
- "to": "^22.0.0"
21
+ "to": "^22.0.1"
22
22
  },
23
23
  "get-tsconfig": {
24
24
  "from": "4.8.1",
25
- "to": "^4.13.7"
25
+ "to": "^4.14.0"
26
26
  },
27
27
  "ipaddr.js": {
28
28
  "from": "2.2.0",
29
- "to": "^2.3.0"
29
+ "to": "^2.4.0"
30
30
  },
31
31
  "jose": {
32
32
  "from": "5.10.0",
33
- "to": "^6.2.2"
33
+ "to": "^6.2.3"
34
34
  },
35
35
  "json-schema-to-typescript": {
36
36
  "from": "15.0.3",
@@ -48,27 +48,35 @@
48
48
  "from": "13.1.2",
49
49
  "to": "^13.1.3"
50
50
  },
51
+ "range-parser": {
52
+ "from": "1.2.1",
53
+ "to": "^1.3.0"
54
+ },
51
55
  "sanitize-filename": {
52
56
  "from": "1.6.3",
53
57
  "to": "^1.6.4"
54
58
  },
55
59
  "ts-essentials": {
56
60
  "from": "10.0.3",
57
- "to": "^10.1.1"
61
+ "to": "^10.2.1"
62
+ },
63
+ "tsx": {
64
+ "from": "4.22.4",
65
+ "to": "^4.23.1"
58
66
  },
59
67
  "undici": {
60
- "from": "7.24.4",
61
- "to": "^8.0.2"
68
+ "from": "7.28.0",
69
+ "to": "^8.8.0"
62
70
  },
63
71
  "uuid": {
64
- "from": "10.0.0",
65
- "to": "^13.0.0"
72
+ "from": "13.0.2",
73
+ "to": "^14.0.1"
66
74
  },
67
75
  "ws": {
68
76
  "from": "^8.16.0",
69
- "to": "^8.20.0"
77
+ "to": "^8.21.1"
70
78
  }
71
79
  },
72
- "timestamp": "2026-04-08T16:32:46.495Z",
73
- "totalUpdated": 17
80
+ "timestamp": "2026-07-21T17:27:29.136Z",
81
+ "totalUpdated": 19
74
82
  }
@@ -3,8 +3,8 @@ import type { RowField, RowFieldClient } from '../../fields/config/types.js';
3
3
  import type { ClientComponentProps, ClientFieldBase, FieldClientComponent, FieldPaths, FieldServerComponent, ServerFieldBase } from '../forms/Field.js';
4
4
  import type { FieldDescriptionClientComponent, FieldDescriptionServerComponent, FieldDiffClientComponent, FieldDiffServerComponent, FieldErrorClientComponent, FieldErrorServerComponent, FieldLabelClientComponent, FieldLabelServerComponent } from '../types.js';
5
5
  type RowFieldClientWithoutType = MarkOptional<RowFieldClient, 'type'>;
6
- type RowFieldBaseClientProps = Omit<FieldPaths, 'path'> & Pick<ClientComponentProps, 'forceRender'>;
7
- export type RowFieldClientProps = Omit<ClientFieldBase<RowFieldClientWithoutType>, 'path'> & RowFieldBaseClientProps;
6
+ type RowFieldBaseClientProps = FieldPaths & Pick<ClientComponentProps, 'forceRender'>;
7
+ export type RowFieldClientProps = ClientFieldBase<RowFieldClientWithoutType> & RowFieldBaseClientProps;
8
8
  export type RowFieldServerProps = ServerFieldBase<RowField, RowFieldClientWithoutType>;
9
9
  export type RowFieldServerComponent = FieldServerComponent<RowField, RowFieldClientWithoutType>;
10
10
  export type RowFieldClientComponent = FieldClientComponent<RowFieldClientWithoutType, RowFieldBaseClientProps>;
@@ -1 +1 @@
1
- {"version":3,"file":"Row.d.ts","sourceRoot":"","sources":["../../../src/admin/fields/Row.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AAEjD,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAA;AAC5E,OAAO,KAAK,EACV,oBAAoB,EACpB,eAAe,EACf,oBAAoB,EACpB,UAAU,EACV,oBAAoB,EACpB,eAAe,EAChB,MAAM,mBAAmB,CAAA;AAC1B,OAAO,KAAK,EACV,+BAA+B,EAC/B,+BAA+B,EAC/B,wBAAwB,EACxB,wBAAwB,EACxB,yBAAyB,EACzB,yBAAyB,EACzB,yBAAyB,EACzB,yBAAyB,EAC1B,MAAM,aAAa,CAAA;AAEpB,KAAK,yBAAyB,GAAG,YAAY,CAAC,cAAc,EAAE,MAAM,CAAC,CAAA;AAErE,KAAK,uBAAuB,GAAG,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC,oBAAoB,EAAE,aAAa,CAAC,CAAA;AAEnG,MAAM,MAAM,mBAAmB,GAAG,IAAI,CAAC,eAAe,CAAC,yBAAyB,CAAC,EAAE,MAAM,CAAC,GACxF,uBAAuB,CAAA;AAEzB,MAAM,MAAM,mBAAmB,GAAG,eAAe,CAAC,QAAQ,EAAE,yBAAyB,CAAC,CAAA;AAEtF,MAAM,MAAM,uBAAuB,GAAG,oBAAoB,CAAC,QAAQ,EAAE,yBAAyB,CAAC,CAAA;AAE/F,MAAM,MAAM,uBAAuB,GAAG,oBAAoB,CACxD,yBAAyB,EACzB,uBAAuB,CACxB,CAAA;AAED,MAAM,MAAM,4BAA4B,GAAG,yBAAyB,CAClE,QAAQ,EACR,yBAAyB,CAC1B,CAAA;AAED,MAAM,MAAM,4BAA4B,GAAG,yBAAyB,CAAC,yBAAyB,CAAC,CAAA;AAE/F,MAAM,MAAM,kCAAkC,GAAG,+BAA+B,CAC9E,QAAQ,EACR,yBAAyB,CAC1B,CAAA;AAED,MAAM,MAAM,kCAAkC,GAC5C,+BAA+B,CAAC,yBAAyB,CAAC,CAAA;AAE5D,MAAM,MAAM,4BAA4B,GAAG,yBAAyB,CAClE,QAAQ,EACR,yBAAyB,CAC1B,CAAA;AAED,MAAM,MAAM,4BAA4B,GAAG,yBAAyB,CAAC,yBAAyB,CAAC,CAAA;AAE/F,MAAM,MAAM,2BAA2B,GAAG,wBAAwB,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAA;AAE5F,MAAM,MAAM,2BAA2B,GAAG,wBAAwB,CAAC,cAAc,CAAC,CAAA"}
1
+ {"version":3,"file":"Row.d.ts","sourceRoot":"","sources":["../../../src/admin/fields/Row.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AAEjD,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAA;AAC5E,OAAO,KAAK,EACV,oBAAoB,EACpB,eAAe,EACf,oBAAoB,EACpB,UAAU,EACV,oBAAoB,EACpB,eAAe,EAChB,MAAM,mBAAmB,CAAA;AAC1B,OAAO,KAAK,EACV,+BAA+B,EAC/B,+BAA+B,EAC/B,wBAAwB,EACxB,wBAAwB,EACxB,yBAAyB,EACzB,yBAAyB,EACzB,yBAAyB,EACzB,yBAAyB,EAC1B,MAAM,aAAa,CAAA;AAEpB,KAAK,yBAAyB,GAAG,YAAY,CAAC,cAAc,EAAE,MAAM,CAAC,CAAA;AAErE,KAAK,uBAAuB,GAAG,UAAU,GAAG,IAAI,CAAC,oBAAoB,EAAE,aAAa,CAAC,CAAA;AAErF,MAAM,MAAM,mBAAmB,GAAG,eAAe,CAAC,yBAAyB,CAAC,GAC1E,uBAAuB,CAAA;AAEzB,MAAM,MAAM,mBAAmB,GAAG,eAAe,CAAC,QAAQ,EAAE,yBAAyB,CAAC,CAAA;AAEtF,MAAM,MAAM,uBAAuB,GAAG,oBAAoB,CAAC,QAAQ,EAAE,yBAAyB,CAAC,CAAA;AAE/F,MAAM,MAAM,uBAAuB,GAAG,oBAAoB,CACxD,yBAAyB,EACzB,uBAAuB,CACxB,CAAA;AAED,MAAM,MAAM,4BAA4B,GAAG,yBAAyB,CAClE,QAAQ,EACR,yBAAyB,CAC1B,CAAA;AAED,MAAM,MAAM,4BAA4B,GAAG,yBAAyB,CAAC,yBAAyB,CAAC,CAAA;AAE/F,MAAM,MAAM,kCAAkC,GAAG,+BAA+B,CAC9E,QAAQ,EACR,yBAAyB,CAC1B,CAAA;AAED,MAAM,MAAM,kCAAkC,GAC5C,+BAA+B,CAAC,yBAAyB,CAAC,CAAA;AAE5D,MAAM,MAAM,4BAA4B,GAAG,yBAAyB,CAClE,QAAQ,EACR,yBAAyB,CAC1B,CAAA;AAED,MAAM,MAAM,4BAA4B,GAAG,yBAAyB,CAAC,yBAAyB,CAAC,CAAA;AAE/F,MAAM,MAAM,2BAA2B,GAAG,wBAAwB,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAA;AAE5F,MAAM,MAAM,2BAA2B,GAAG,wBAAwB,CAAC,cAAc,CAAC,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/admin/fields/Row.ts"],"sourcesContent":["import type { MarkOptional } from 'ts-essentials'\n\nimport type { RowField, RowFieldClient } from '../../fields/config/types.js'\nimport type {\n ClientComponentProps,\n ClientFieldBase,\n FieldClientComponent,\n FieldPaths,\n FieldServerComponent,\n ServerFieldBase,\n} from '../forms/Field.js'\nimport type {\n FieldDescriptionClientComponent,\n FieldDescriptionServerComponent,\n FieldDiffClientComponent,\n FieldDiffServerComponent,\n FieldErrorClientComponent,\n FieldErrorServerComponent,\n FieldLabelClientComponent,\n FieldLabelServerComponent,\n} from '../types.js'\n\ntype RowFieldClientWithoutType = MarkOptional<RowFieldClient, 'type'>\n\ntype RowFieldBaseClientProps = Omit<FieldPaths, 'path'> & Pick<ClientComponentProps, 'forceRender'>\n\nexport type RowFieldClientProps = Omit<ClientFieldBase<RowFieldClientWithoutType>, 'path'> &\n RowFieldBaseClientProps\n\nexport type RowFieldServerProps = ServerFieldBase<RowField, RowFieldClientWithoutType>\n\nexport type RowFieldServerComponent = FieldServerComponent<RowField, RowFieldClientWithoutType>\n\nexport type RowFieldClientComponent = FieldClientComponent<\n RowFieldClientWithoutType,\n RowFieldBaseClientProps\n>\n\nexport type RowFieldLabelServerComponent = FieldLabelServerComponent<\n RowField,\n RowFieldClientWithoutType\n>\n\nexport type RowFieldLabelClientComponent = FieldLabelClientComponent<RowFieldClientWithoutType>\n\nexport type RowFieldDescriptionServerComponent = FieldDescriptionServerComponent<\n RowField,\n RowFieldClientWithoutType\n>\n\nexport type RowFieldDescriptionClientComponent =\n FieldDescriptionClientComponent<RowFieldClientWithoutType>\n\nexport type RowFieldErrorServerComponent = FieldErrorServerComponent<\n RowField,\n RowFieldClientWithoutType\n>\n\nexport type RowFieldErrorClientComponent = FieldErrorClientComponent<RowFieldClientWithoutType>\n\nexport type RowFieldDiffServerComponent = FieldDiffServerComponent<RowField, RowFieldClient>\n\nexport type RowFieldDiffClientComponent = FieldDiffClientComponent<RowFieldClient>\n"],"names":[],"mappings":"AA8DA,WAAkF"}
1
+ {"version":3,"sources":["../../../src/admin/fields/Row.ts"],"sourcesContent":["import type { MarkOptional } from 'ts-essentials'\n\nimport type { RowField, RowFieldClient } from '../../fields/config/types.js'\nimport type {\n ClientComponentProps,\n ClientFieldBase,\n FieldClientComponent,\n FieldPaths,\n FieldServerComponent,\n ServerFieldBase,\n} from '../forms/Field.js'\nimport type {\n FieldDescriptionClientComponent,\n FieldDescriptionServerComponent,\n FieldDiffClientComponent,\n FieldDiffServerComponent,\n FieldErrorClientComponent,\n FieldErrorServerComponent,\n FieldLabelClientComponent,\n FieldLabelServerComponent,\n} from '../types.js'\n\ntype RowFieldClientWithoutType = MarkOptional<RowFieldClient, 'type'>\n\ntype RowFieldBaseClientProps = FieldPaths & Pick<ClientComponentProps, 'forceRender'>\n\nexport type RowFieldClientProps = ClientFieldBase<RowFieldClientWithoutType> &\n RowFieldBaseClientProps\n\nexport type RowFieldServerProps = ServerFieldBase<RowField, RowFieldClientWithoutType>\n\nexport type RowFieldServerComponent = FieldServerComponent<RowField, RowFieldClientWithoutType>\n\nexport type RowFieldClientComponent = FieldClientComponent<\n RowFieldClientWithoutType,\n RowFieldBaseClientProps\n>\n\nexport type RowFieldLabelServerComponent = FieldLabelServerComponent<\n RowField,\n RowFieldClientWithoutType\n>\n\nexport type RowFieldLabelClientComponent = FieldLabelClientComponent<RowFieldClientWithoutType>\n\nexport type RowFieldDescriptionServerComponent = FieldDescriptionServerComponent<\n RowField,\n RowFieldClientWithoutType\n>\n\nexport type RowFieldDescriptionClientComponent =\n FieldDescriptionClientComponent<RowFieldClientWithoutType>\n\nexport type RowFieldErrorServerComponent = FieldErrorServerComponent<\n RowField,\n RowFieldClientWithoutType\n>\n\nexport type RowFieldErrorClientComponent = FieldErrorClientComponent<RowFieldClientWithoutType>\n\nexport type RowFieldDiffServerComponent = FieldDiffServerComponent<RowField, RowFieldClient>\n\nexport type RowFieldDiffClientComponent = FieldDiffClientComponent<RowFieldClient>\n"],"names":[],"mappings":"AA8DA,WAAkF"}
@@ -50,11 +50,9 @@ export type FieldPaths = {
50
50
  * Nested fields will have a path that includes the parent field names
51
51
  * if they are nested within a group, array, block or named tab.
52
52
  *
53
- * Collapsibles and unnamed tabs will have arbitrary paths
53
+ * Collapsibles, rows and unnamed tabs will have arbitrary paths
54
54
  * that look like _index-0, _index-1, etc.
55
55
  *
56
- * Row fields will not have a path.
57
- *
58
56
  * @example 'parentGroupField.childTextField'
59
57
  *
60
58
  * @default field.name
@@ -1 +1 @@
1
- {"version":3,"file":"Field.d.ts","sourceRoot":"","sources":["../../../src/admin/forms/Field.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Field.d.ts","sourceRoot":"","sources":["../../../src/admin/forms/Field.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/admin/forms/Field.ts"],"sourcesContent":["import type { I18nClient } from '@payloadcms/translations'\nimport type { MarkOptional } from 'ts-essentials'\n\nimport type { SanitizedFieldPermissions } from '../../auth/types.js'\nimport type { ClientBlock, ClientField, Field } from '../../fields/config/types.js'\nimport type { TypedUser } from '../../index.js'\nimport type { DocumentPreferences } from '../../preferences/types.js'\nimport type { Operation, Payload, PayloadRequest } from '../../types/index.js'\nimport type {\n ClientFieldSchemaMap,\n ClientTab,\n Data,\n FieldSchemaMap,\n FormField,\n FormState,\n RenderedField,\n} from '../types.js'\n\nexport type ClientFieldWithOptionalType = MarkOptional<ClientField, 'type'>\n\nexport type ClientComponentProps = {\n customComponents?: FormField['customComponents']\n field: ClientBlock | ClientField | ClientTab\n /**\n * Controls the rendering behavior of the fields, i.e. defers rendering until they intersect with the viewport using the Intersection Observer API.\n *\n * If true, the fields will be rendered immediately, rather than waiting for them to intersect with the viewport.\n *\n * If a number is provided, will immediately render fields _up to that index_.\n */\n forceRender?: boolean\n permissions?: SanitizedFieldPermissions\n readOnly?: boolean\n renderedBlocks?: RenderedField[]\n /**\n * Used to extract field configs from a schemaMap.\n * Does not include indexes.\n *\n * @default field.name\n **/\n schemaPath?: string\n}\n\n// TODO: maybe we can come up with a better name?\nexport type FieldPaths = {\n /**\n * @default ''\n */\n indexPath?: string\n /**\n * @default ''\n */\n parentPath?: string\n /**\n * The path built up to the point of the field\n * excluding the field name.\n *\n * @default ''\n */\n parentSchemaPath?: string\n /**\n * A built up path to access FieldState in the form state.\n * Nested fields will have a path that includes the parent field names\n * if they are nested within a group, array, block or named tab.\n *\n * Collapsibles and unnamed tabs will have arbitrary paths\n * that look like _index-0, _index-1, etc.\n *\n * Row fields will not have a path.\n *\n * @example 'parentGroupField.childTextField'\n *\n * @default field.name\n */\n path: string\n}\n\n/**\n * TODO: This should be renamed to `FieldComponentServerProps` or similar\n */\nexport type ServerComponentProps = {\n clientField: ClientFieldWithOptionalType\n clientFieldSchemaMap: ClientFieldSchemaMap\n collectionSlug: string\n data: Data\n field: Field\n /**\n * The fieldSchemaMap that is created before form state is built is made available here.\n */\n fieldSchemaMap: FieldSchemaMap\n /**\n * Server Components will also have available to the entire form state.\n * We cannot add it to ClientComponentProps as that would blow up the size of the props sent to the client.\n */\n formState: FormState\n i18n: I18nClient\n id?: number | string\n operation: Operation\n payload: Payload\n permissions: SanitizedFieldPermissions\n preferences: DocumentPreferences\n req: PayloadRequest\n siblingData: Data\n user: TypedUser\n value?: unknown\n}\n\nexport type ClientFieldBase<\n TFieldClient extends ClientFieldWithOptionalType = ClientFieldWithOptionalType,\n> = {\n readonly field: TFieldClient\n} & Omit<ClientComponentProps, 'customComponents' | 'field'>\n\nexport type ServerFieldBase<\n TFieldServer extends Field = Field,\n TFieldClient extends ClientFieldWithOptionalType = ClientFieldWithOptionalType,\n> = {\n readonly clientField: TFieldClient\n readonly field: TFieldServer\n} & Omit<ClientComponentProps, 'field'> &\n Omit<ServerComponentProps, 'clientField' | 'field'>\n\nexport type FieldClientComponent<\n TFieldClient extends ClientFieldWithOptionalType = ClientFieldWithOptionalType,\n AdditionalProps extends Record<string, unknown> = Record<string, unknown>,\n> = React.ComponentType<AdditionalProps & ClientFieldBase<TFieldClient>>\n\nexport type FieldServerComponent<\n TFieldServer extends Field = Field,\n TFieldClient extends ClientFieldWithOptionalType = ClientFieldWithOptionalType,\n AdditionalProps extends Record<string, unknown> = Record<string, unknown>,\n> = React.ComponentType<AdditionalProps & ServerFieldBase<TFieldServer, TFieldClient>>\n"],"names":[],"mappings":"AA+HA,WAIsF"}
1
+ {"version":3,"sources":["../../../src/admin/forms/Field.ts"],"sourcesContent":["import type { I18nClient } from '@payloadcms/translations'\nimport type { MarkOptional } from 'ts-essentials'\n\nimport type { SanitizedFieldPermissions } from '../../auth/types.js'\nimport type { ClientBlock, ClientField, Field } from '../../fields/config/types.js'\nimport type { TypedUser } from '../../index.js'\nimport type { DocumentPreferences } from '../../preferences/types.js'\nimport type { Operation, Payload, PayloadRequest } from '../../types/index.js'\nimport type {\n ClientFieldSchemaMap,\n ClientTab,\n Data,\n FieldSchemaMap,\n FormField,\n FormState,\n RenderedField,\n} from '../types.js'\n\nexport type ClientFieldWithOptionalType = MarkOptional<ClientField, 'type'>\n\nexport type ClientComponentProps = {\n customComponents?: FormField['customComponents']\n field: ClientBlock | ClientField | ClientTab\n /**\n * Controls the rendering behavior of the fields, i.e. defers rendering until they intersect with the viewport using the Intersection Observer API.\n *\n * If true, the fields will be rendered immediately, rather than waiting for them to intersect with the viewport.\n *\n * If a number is provided, will immediately render fields _up to that index_.\n */\n forceRender?: boolean\n permissions?: SanitizedFieldPermissions\n readOnly?: boolean\n renderedBlocks?: RenderedField[]\n /**\n * Used to extract field configs from a schemaMap.\n * Does not include indexes.\n *\n * @default field.name\n **/\n schemaPath?: string\n}\n\n// TODO: maybe we can come up with a better name?\nexport type FieldPaths = {\n /**\n * @default ''\n */\n indexPath?: string\n /**\n * @default ''\n */\n parentPath?: string\n /**\n * The path built up to the point of the field\n * excluding the field name.\n *\n * @default ''\n */\n parentSchemaPath?: string\n /**\n * A built up path to access FieldState in the form state.\n * Nested fields will have a path that includes the parent field names\n * if they are nested within a group, array, block or named tab.\n *\n * Collapsibles, rows and unnamed tabs will have arbitrary paths\n * that look like _index-0, _index-1, etc.\n *\n * @example 'parentGroupField.childTextField'\n *\n * @default field.name\n */\n path: string\n}\n\n/**\n * TODO: This should be renamed to `FieldComponentServerProps` or similar\n */\nexport type ServerComponentProps = {\n clientField: ClientFieldWithOptionalType\n clientFieldSchemaMap: ClientFieldSchemaMap\n collectionSlug: string\n data: Data\n field: Field\n /**\n * The fieldSchemaMap that is created before form state is built is made available here.\n */\n fieldSchemaMap: FieldSchemaMap\n /**\n * Server Components will also have available to the entire form state.\n * We cannot add it to ClientComponentProps as that would blow up the size of the props sent to the client.\n */\n formState: FormState\n i18n: I18nClient\n id?: number | string\n operation: Operation\n payload: Payload\n permissions: SanitizedFieldPermissions\n preferences: DocumentPreferences\n req: PayloadRequest\n siblingData: Data\n user: TypedUser\n value?: unknown\n}\n\nexport type ClientFieldBase<\n TFieldClient extends ClientFieldWithOptionalType = ClientFieldWithOptionalType,\n> = {\n readonly field: TFieldClient\n} & Omit<ClientComponentProps, 'customComponents' | 'field'>\n\nexport type ServerFieldBase<\n TFieldServer extends Field = Field,\n TFieldClient extends ClientFieldWithOptionalType = ClientFieldWithOptionalType,\n> = {\n readonly clientField: TFieldClient\n readonly field: TFieldServer\n} & Omit<ClientComponentProps, 'field'> &\n Omit<ServerComponentProps, 'clientField' | 'field'>\n\nexport type FieldClientComponent<\n TFieldClient extends ClientFieldWithOptionalType = ClientFieldWithOptionalType,\n AdditionalProps extends Record<string, unknown> = Record<string, unknown>,\n> = React.ComponentType<AdditionalProps & ClientFieldBase<TFieldClient>>\n\nexport type FieldServerComponent<\n TFieldServer extends Field = Field,\n TFieldClient extends ClientFieldWithOptionalType = ClientFieldWithOptionalType,\n AdditionalProps extends Record<string, unknown> = Record<string, unknown>,\n> = React.ComponentType<AdditionalProps & ServerFieldBase<TFieldServer, TFieldClient>>\n"],"names":[],"mappings":"AA6HA,WAIsF"}
@@ -24,7 +24,11 @@ export type AdminViewConfig = {
24
24
  export type AdminViewClientProps = {
25
25
  browseByFolderSlugs?: SanitizedCollectionConfig['slug'][];
26
26
  clientConfig: ClientConfig;
27
+ collectionSlug?: SanitizedCollectionConfig['slug'];
28
+ docID?: number | string;
27
29
  documentSubViewType?: DocumentSubViewTypes;
30
+ folderID?: number | string;
31
+ globalSlug?: SanitizedGlobalConfig['slug'];
28
32
  viewType: ViewTypes;
29
33
  };
30
34
  export type AdminViewServerPropsOnly = {
@@ -74,7 +78,7 @@ export type InitPageResult = {
74
78
  /**
75
79
  * @todo This should be renamed to `ViewType` (singular)
76
80
  */
77
- export type ViewTypes = 'account' | 'collection-folders' | 'createFirstUser' | 'dashboard' | 'document' | 'folders' | 'list' | 'reset' | 'trash' | 'verify' | 'version';
81
+ export type ViewTypes = 'account' | 'collection-folders' | 'createFirstUser' | 'dashboard' | 'document' | 'folders' | 'list' | 'reset' | 'trash' | 'verify' | 'version' | ({} & string);
78
82
  export type ServerPropsFromView = {
79
83
  collectionConfig?: SanitizedConfig['collections'][number];
80
84
  globalConfig?: SanitizedConfig['globals'][number];
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/admin/views/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAA;AAExE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAA;AAC/D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sCAAsC,CAAA;AACrE,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,mCAAmC,CAAA;AAClF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAA;AAC1D,OAAO,KAAK,EACV,eAAe,EACf,MAAM,EACN,UAAU,EACV,gBAAgB,EAChB,eAAe,EACf,WAAW,EACZ,MAAM,uBAAuB,CAAA;AAC9B,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAA;AAC1E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAC1D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AAC5D,OAAO,KAAK,EAAE,IAAI,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AAC1D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAA;AAEzD,MAAM,MAAM,eAAe,GAAG;IAC5B,SAAS,EAAE,gBAAgB,CAAA;IAC3B,gEAAgE;IAChE,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,IAAI,CAAC,EAAE,UAAU,CAAA;IACjB;;OAEG;IACH,IAAI,CAAC,EAAE,IAAI,MAAM,EAAE,CAAA;IACnB,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,MAAM,CAAC,EAAE,OAAO,CAAA;CACjB,CAAA;AAED,MAAM,MAAM,oBAAoB,GAAG;IACjC,mBAAmB,CAAC,EAAE,yBAAyB,CAAC,MAAM,CAAC,EAAE,CAAA;IACzD,YAAY,EAAE,YAAY,CAAA;IAC1B,mBAAmB,CAAC,EAAE,oBAAoB,CAAA;IAC1C,QAAQ,EAAE,SAAS,CAAA;CACpB,CAAA;AAED,MAAM,MAAM,wBAAwB,GAAG;IACrC,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAA;IACnC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,yBAAyB,CAAA;IACrD,QAAQ,CAAC,cAAc,CAAC,EAAE,OAAO,CAAA;IACjC;;OAEG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IAChC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IACnC,QAAQ,CAAC,YAAY,CAAC,EAAE,qBAAqB,CAAA;IAC7C,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAA;IAC7B,QAAQ,CAAC,WAAW,CAAC,EAAE,IAAI,CAAA;IAC3B,QAAQ,CAAC,cAAc,EAAE,cAAc,CAAA;IACvC,QAAQ,CAAC,MAAM,CAAC,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,CAAA;KAAE,CAAA;IAClE,QAAQ,CAAC,mBAAmB,CAAC,EAAE,OAAO,CAAA;IACtC,QAAQ,CAAC,mBAAmB,CAAC,EAAE,OAAO,CAAA;IACtC,QAAQ,CAAC,sBAAsB,CAAC,EAAE,OAAO,CAAA;IACzC,QAAQ,CAAC,oBAAoB,CAAC,EAAE,OAAO,CAAA;IACvC,QAAQ,CAAC,WAAW,CAAC,EAAE,eAAe,EAAE,CAAA;CACzC,GAAG,WAAW,CAAA;AAEf,MAAM,MAAM,oBAAoB,GAAG,oBAAoB,GAAG,wBAAwB,CAAA;AAElF;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG,gBAAgB,CAAC,oBAAoB,CAAC,CAAA;AAEvE,MAAM,MAAM,eAAe,GAAG;IAC5B,WAAW,EAAE,yBAAyB,CAAC,MAAM,CAAC,EAAE,CAAA;IAChD,OAAO,EAAE,qBAAqB,CAAC,MAAM,CAAC,EAAE,CAAA;CACzC,CAAA;AAED,MAAM,MAAM,cAAc,GAAG;IAC3B,gBAAgB,CAAC,EAAE,yBAAyB,CAAA;IAC5C,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC5B,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IACvB,YAAY,CAAC,EAAE,qBAAqB,CAAA;IACpC,eAAe,EAAE,eAAe,CAAA;IAChC,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,WAAW,EAAE,oBAAoB,CAAA;IACjC,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,GAAG,EAAE,cAAc,CAAA;IACnB,YAAY,EAAE,wBAAwB,CAAA;IACtC,eAAe,EAAE,eAAe,CAAA;CACjC,CAAA;AAED;;GAEG;AACH,MAAM,MAAM,SAAS,GACjB,SAAS,GACT,oBAAoB,GACpB,iBAAiB,GACjB,WAAW,GACX,UAAU,GACV,SAAS,GACT,MAAM,GACN,OAAO,GACP,OAAO,GACP,QAAQ,GACR,SAAS,CAAA;AAEb,MAAM,MAAM,mBAAmB,GAAG;IAChC,gBAAgB,CAAC,EAAE,eAAe,CAAC,aAAa,CAAC,CAAC,MAAM,CAAC,CAAA;IACzD,YAAY,CAAC,EAAE,eAAe,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,CAAA;IACjD,WAAW,EAAE,eAAe,EAAE,CAAA;CAC/B,CAAA;AAGD,MAAM,MAAM,0BAA0B,GAAG;IACvC,cAAc,CAAC,EAAE,yBAAyB,CAAC,MAAM,CAAC,CAAA;IAClD,WAAW,EAAE,iBAAiB,CAAA;CAC/B,CAAA;AAED,MAAM,MAAM,8BAA8B,GAAG,EAAE,GAAG,WAAW,CAAA;AAE7D,MAAM,MAAM,0BAA0B,GAAG,0BAA0B,GAAG,8BAA8B,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/admin/views/index.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/admin/views/index.ts"],"sourcesContent":["import type { ClientTranslationsObject } from '@payloadcms/translations'\n\nimport type { SanitizedPermissions } from '../../auth/index.js'\nimport type { ImportMap } from '../../bin/generateImportMap/index.js'\nimport type { SanitizedCollectionConfig } from '../../collections/config/types.js'\nimport type { ClientConfig } from '../../config/client.js'\nimport type {\n CustomComponent,\n Locale,\n MetaConfig,\n PayloadComponent,\n SanitizedConfig,\n ServerProps,\n} from '../../config/types.js'\nimport type { SanitizedGlobalConfig } from '../../globals/config/types.js'\nimport type { PayloadRequest } from '../../types/index.js'\nimport type { LanguageOptions } from '../LanguageOptions.js'\nimport type { Data, StaticDescription } from '../types.js'\nimport type { DocumentSubViewTypes } from './document.js'\n\nexport type AdminViewConfig = {\n Component: PayloadComponent\n /** Whether the path should be matched exactly or as a prefix */\n exact?: boolean\n meta?: MetaConfig\n /**\n * Any valid URL path or array of paths that [`path-to-regexp`](https://www.npmjs.com/package/path-to-regex) understands. Must begin with a forward slash (`/`).\n */\n path?: `/${string}`\n sensitive?: boolean\n strict?: boolean\n}\n\nexport type AdminViewClientProps = {\n browseByFolderSlugs?: SanitizedCollectionConfig['slug'][]\n clientConfig: ClientConfig\n documentSubViewType?: DocumentSubViewTypes\n viewType: ViewTypes\n}\n\nexport type AdminViewServerPropsOnly = {\n readonly clientConfig: ClientConfig\n readonly collectionConfig?: SanitizedCollectionConfig\n readonly disableActions?: boolean\n /**\n * @todo remove `docID` here as it is already contained in `initPageResult`\n */\n readonly docID?: number | string\n readonly folderID?: number | string\n readonly globalConfig?: SanitizedGlobalConfig\n readonly importMap: ImportMap\n readonly initialData?: Data\n readonly initPageResult: InitPageResult\n readonly params?: { [key: string]: string | string[] | undefined }\n readonly redirectAfterCreate?: boolean\n readonly redirectAfterDelete?: boolean\n readonly redirectAfterDuplicate?: boolean\n readonly redirectAfterRestore?: boolean\n readonly viewActions?: CustomComponent[]\n} & ServerProps\n\nexport type AdminViewServerProps = AdminViewClientProps & AdminViewServerPropsOnly\n\n/**\n * @deprecated This should be removed in favor of direct props\n */\nexport type AdminViewComponent = PayloadComponent<AdminViewServerProps>\n\nexport type VisibleEntities = {\n collections: SanitizedCollectionConfig['slug'][]\n globals: SanitizedGlobalConfig['slug'][]\n}\n\nexport type InitPageResult = {\n collectionConfig?: SanitizedCollectionConfig\n cookies: Map<string, string>\n docID?: number | string\n globalConfig?: SanitizedGlobalConfig\n languageOptions: LanguageOptions\n locale?: Locale\n permissions: SanitizedPermissions\n redirectTo?: string\n req: PayloadRequest\n translations: ClientTranslationsObject\n visibleEntities: VisibleEntities\n}\n\n/**\n * @todo This should be renamed to `ViewType` (singular)\n */\nexport type ViewTypes =\n | 'account'\n | 'collection-folders'\n | 'createFirstUser'\n | 'dashboard'\n | 'document'\n | 'folders'\n | 'list'\n | 'reset'\n | 'trash'\n | 'verify'\n | 'version'\n\nexport type ServerPropsFromView = {\n collectionConfig?: SanitizedConfig['collections'][number]\n globalConfig?: SanitizedConfig['globals'][number]\n viewActions: CustomComponent[]\n}\n\n// Description\nexport type ViewDescriptionClientProps = {\n collectionSlug?: SanitizedCollectionConfig['slug']\n description: StaticDescription\n}\n\nexport type ViewDescriptionServerPropsOnly = {} & ServerProps\n\nexport type ViewDescriptionServerProps = ViewDescriptionClientProps & ViewDescriptionServerPropsOnly\n"],"names":[],"mappings":"AAqHA,WAAoG"}
1
+ {"version":3,"sources":["../../../src/admin/views/index.ts"],"sourcesContent":["import type { ClientTranslationsObject } from '@payloadcms/translations'\n\nimport type { SanitizedPermissions } from '../../auth/index.js'\nimport type { ImportMap } from '../../bin/generateImportMap/index.js'\nimport type { SanitizedCollectionConfig } from '../../collections/config/types.js'\nimport type { ClientConfig } from '../../config/client.js'\nimport type {\n CustomComponent,\n Locale,\n MetaConfig,\n PayloadComponent,\n SanitizedConfig,\n ServerProps,\n} from '../../config/types.js'\nimport type { SanitizedGlobalConfig } from '../../globals/config/types.js'\nimport type { PayloadRequest } from '../../types/index.js'\nimport type { LanguageOptions } from '../LanguageOptions.js'\nimport type { Data, StaticDescription } from '../types.js'\nimport type { DocumentSubViewTypes } from './document.js'\n\nexport type AdminViewConfig = {\n Component: PayloadComponent\n /** Whether the path should be matched exactly or as a prefix */\n exact?: boolean\n meta?: MetaConfig\n /**\n * Any valid URL path or array of paths that [`path-to-regexp`](https://www.npmjs.com/package/path-to-regex) understands. Must begin with a forward slash (`/`).\n */\n path?: `/${string}`\n sensitive?: boolean\n strict?: boolean\n}\n\nexport type AdminViewClientProps = {\n browseByFolderSlugs?: SanitizedCollectionConfig['slug'][]\n clientConfig: ClientConfig\n collectionSlug?: SanitizedCollectionConfig['slug']\n docID?: number | string\n documentSubViewType?: DocumentSubViewTypes\n folderID?: number | string\n globalSlug?: SanitizedGlobalConfig['slug']\n viewType: ViewTypes\n}\n\nexport type AdminViewServerPropsOnly = {\n readonly clientConfig: ClientConfig\n readonly collectionConfig?: SanitizedCollectionConfig\n readonly disableActions?: boolean\n /**\n * @todo remove `docID` here as it is already contained in `initPageResult`\n */\n readonly docID?: number | string\n readonly folderID?: number | string\n readonly globalConfig?: SanitizedGlobalConfig\n readonly importMap: ImportMap\n readonly initialData?: Data\n readonly initPageResult: InitPageResult\n readonly params?: { [key: string]: string | string[] | undefined }\n readonly redirectAfterCreate?: boolean\n readonly redirectAfterDelete?: boolean\n readonly redirectAfterDuplicate?: boolean\n readonly redirectAfterRestore?: boolean\n readonly viewActions?: CustomComponent[]\n} & ServerProps\n\nexport type AdminViewServerProps = AdminViewClientProps & AdminViewServerPropsOnly\n\n/**\n * @deprecated This should be removed in favor of direct props\n */\nexport type AdminViewComponent = PayloadComponent<AdminViewServerProps>\n\nexport type VisibleEntities = {\n collections: SanitizedCollectionConfig['slug'][]\n globals: SanitizedGlobalConfig['slug'][]\n}\n\nexport type InitPageResult = {\n collectionConfig?: SanitizedCollectionConfig\n cookies: Map<string, string>\n docID?: number | string\n globalConfig?: SanitizedGlobalConfig\n languageOptions: LanguageOptions\n locale?: Locale\n permissions: SanitizedPermissions\n redirectTo?: string\n req: PayloadRequest\n translations: ClientTranslationsObject\n visibleEntities: VisibleEntities\n}\n\n/**\n * @todo This should be renamed to `ViewType` (singular)\n */\nexport type ViewTypes =\n | 'account'\n | 'collection-folders'\n | 'createFirstUser'\n | 'dashboard'\n | 'document'\n | 'folders'\n | 'list'\n | 'reset'\n | 'trash'\n | 'verify'\n | 'version'\n | ({} & string)\n\nexport type ServerPropsFromView = {\n collectionConfig?: SanitizedConfig['collections'][number]\n globalConfig?: SanitizedConfig['globals'][number]\n viewActions: CustomComponent[]\n}\n\n// Description\nexport type ViewDescriptionClientProps = {\n collectionSlug?: SanitizedCollectionConfig['slug']\n description: StaticDescription\n}\n\nexport type ViewDescriptionServerPropsOnly = {} & ServerProps\n\nexport type ViewDescriptionServerProps = ViewDescriptionClientProps & ViewDescriptionServerPropsOnly\n"],"names":[],"mappings":"AA0HA,WAAoG"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/bin/generateImportMap/index.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AAO9E,KAAK,gBAAgB,GAAG,MAAM,CAAA;AAC9B,KAAK,eAAe,GAAG,MAAM,CAAA;AAC7B,KAAK,UAAU,GAAG,MAAM,CAAA;AACxB,KAAK,cAAc,GAAG,MAAM,CAAA;AAE5B;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG;IAC9B,CAAC,IAAI,EAAE,cAAc,GAAG,gBAAgB,CAAA;CACzC,CAAA;AAED;;GAEG;AACH,MAAM,MAAM,OAAO,GAAG;IACpB,CAAC,UAAU,EAAE,gBAAgB,GAAG;QAC9B,IAAI,EAAE,UAAU,CAAA;QAChB,SAAS,EAAE,eAAe,CAAA;KAC3B,CAAA;CACF,CAAA;AAED;;GAEG;AACH,MAAM,MAAM,SAAS,GAAG;IACtB,CAAC,IAAI,EAAE,cAAc,GAAG,GAAG,CAAA;CAC5B,CAAA;AAED,MAAM,MAAM,cAAc,GAAG,CAAC,gBAAgB,CAAC,EAAE,gBAAgB,GAAG,gBAAgB,EAAE,KAAK,IAAI,CAAA;AAE/F,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,eAAe,EACvB,OAAO,CAAC,EAAE;IACR,KAAK,CAAC,EAAE,OAAO,CAAA,CAAC;;;OAGb;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAA;IAC5B,GAAG,EAAE,OAAO,CAAA;CACb,GACA,OAAO,CAAC,IAAI,CAAC,CA8Ef;AAED,wBAAsB,cAAc,CAAC,EACnC,YAAY,EACZ,KAAK,EACL,SAAS,EACT,iBAAiB,EACjB,GAAG,GACJ,EAAE;IACD,YAAY,EAAE,iBAAiB,CAAA;IAC/B,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,SAAS,EAAE,OAAO,CAAA;IAClB,iBAAiB,EAAE,MAAM,CAAA;IACzB,GAAG,CAAC,EAAE,OAAO,CAAA;CACd,iBAmCA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/bin/generateImportMap/index.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AAO9E,KAAK,gBAAgB,GAAG,MAAM,CAAA;AAC9B,KAAK,eAAe,GAAG,MAAM,CAAA;AAC7B,KAAK,UAAU,GAAG,MAAM,CAAA;AACxB,KAAK,cAAc,GAAG,MAAM,CAAA;AAE5B;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG;IAC9B,CAAC,IAAI,EAAE,cAAc,GAAG,gBAAgB,CAAA;CACzC,CAAA;AAED;;GAEG;AACH,MAAM,MAAM,OAAO,GAAG;IACpB,CAAC,UAAU,EAAE,gBAAgB,GAAG;QAC9B,IAAI,EAAE,UAAU,CAAA;QAChB,SAAS,EAAE,eAAe,CAAA;KAC3B,CAAA;CACF,CAAA;AAED;;GAEG;AACH,MAAM,MAAM,SAAS,GAAG;IACtB,CAAC,IAAI,EAAE,cAAc,GAAG,GAAG,CAAA;CAC5B,CAAA;AAED,MAAM,MAAM,cAAc,GAAG,CAAC,gBAAgB,CAAC,EAAE,gBAAgB,GAAG,gBAAgB,EAAE,KAAK,IAAI,CAAA;AAE/F,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,eAAe,EACvB,OAAO,CAAC,EAAE;IACR,KAAK,CAAC,EAAE,OAAO,CAAA,CAAC;;;OAGb;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAA;IAC5B,GAAG,EAAE,OAAO,CAAA;CACb,GACA,OAAO,CAAC,IAAI,CAAC,CA8Ef;AAED,wBAAsB,cAAc,CAAC,EACnC,YAAY,EACZ,KAAK,EACL,SAAS,EACT,iBAAiB,EACjB,GAAG,GACJ,EAAE;IACD,YAAY,EAAE,iBAAiB,CAAA;IAC/B,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,SAAS,EAAE,OAAO,CAAA;IAClB,iBAAiB,EAAE,MAAM,CAAA;IACzB,GAAG,CAAC,EAAE,OAAO,CAAA;CACd,iBAoCA"}
@@ -82,6 +82,7 @@ export async function writeImportMap({ componentMap, force, importMap, importMap
82
82
  }
83
83
  const importMapOutputFile = `${imports.join('\n')}
84
84
 
85
+ /** @type import('payload').ImportMap */
85
86
  export const importMap = {
86
87
  ${mapKeys.join(',\n')}
87
88
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/bin/generateImportMap/index.ts"],"sourcesContent":["/* eslint-disable no-console */\nimport fs from 'fs/promises'\nimport process from 'node:process'\n\nimport type { PayloadComponent, SanitizedConfig } from '../../config/types.js'\n\nimport { iterateConfig } from './iterateConfig.js'\nimport { addPayloadComponentToImportMap } from './utilities/addPayloadComponentToImportMap.js'\nimport { getImportMapToBaseDirPath } from './utilities/getImportMapToBaseDirPath.js'\nimport { resolveImportMapFilePath } from './utilities/resolveImportMapFilePath.js'\n\ntype ImportIdentifier = string\ntype ImportSpecifier = string\ntype ImportPath = string\ntype UserImportPath = string\n\n/**\n * Import Map before being written to the file. Only contains all paths\n */\nexport type InternalImportMap = {\n [path: UserImportPath]: ImportIdentifier\n}\n\n/**\n * Imports of the import map.\n */\nexport type Imports = {\n [identifier: ImportIdentifier]: {\n path: ImportPath\n specifier: ImportSpecifier\n }\n}\n\n/**\n * Import Map after being imported from the actual import map. Contains all the actual imported components\n */\nexport type ImportMap = {\n [path: UserImportPath]: any\n}\n\nexport type AddToImportMap = (payloadComponent?: PayloadComponent | PayloadComponent[]) => void\n\nexport async function generateImportMap(\n config: SanitizedConfig,\n options?: {\n force?: boolean /**\n * If true, will not throw an error if the import map file path cannot be resolved\n Instead, it will return silently.\n */\n ignoreResolveError?: boolean\n log: boolean\n },\n): Promise<void> {\n const shouldLog = options?.log ?? true\n\n if (shouldLog) {\n console.log('Generating import map')\n }\n\n const importMap: InternalImportMap = {}\n const imports: Imports = {}\n\n // Determine the root directory of the project - usually the directory where the src or app folder is located\n const rootDir = process.env.ROOT_DIR ?? process.cwd()\n\n const baseDir = config.admin.importMap.baseDir ?? process.cwd()\n\n const importMapFilePath = await resolveImportMapFilePath({\n adminRoute: config.routes.admin,\n importMapFile: config?.admin?.importMap?.importMapFile,\n rootDir,\n })\n\n if (importMapFilePath instanceof Error) {\n if (options?.ignoreResolveError) {\n return\n } else {\n throw importMapFilePath\n }\n }\n\n const importMapToBaseDirPath = getImportMapToBaseDirPath({\n baseDir,\n importMapPath: importMapFilePath,\n })\n\n const addToImportMap: AddToImportMap = (payloadComponent) => {\n if (!payloadComponent) {\n return\n }\n\n if (typeof payloadComponent !== 'object' && typeof payloadComponent !== 'string') {\n console.error(payloadComponent)\n throw new Error('addToImportMap > Payload component must be an object or a string')\n }\n\n if (Array.isArray(payloadComponent)) {\n for (const component of payloadComponent) {\n addPayloadComponentToImportMap({\n importMap,\n importMapToBaseDirPath,\n imports,\n payloadComponent: component,\n })\n }\n } else {\n addPayloadComponentToImportMap({\n importMap,\n importMapToBaseDirPath,\n imports,\n payloadComponent,\n })\n }\n }\n\n iterateConfig({\n addToImportMap,\n baseDir: config.admin.importMap.baseDir,\n config,\n importMap,\n imports,\n })\n\n await writeImportMap({\n componentMap: importMap,\n force: options?.force,\n importMap: imports,\n importMapFilePath,\n log: shouldLog,\n })\n}\n\nexport async function writeImportMap({\n componentMap,\n force,\n importMap,\n importMapFilePath,\n log,\n}: {\n componentMap: InternalImportMap\n force?: boolean\n importMap: Imports\n importMapFilePath: string\n log?: boolean\n}) {\n const imports: string[] = []\n for (const [identifier, { path, specifier }] of Object.entries(importMap)) {\n imports.push(`import { ${specifier} as ${identifier} } from '${path}'`)\n }\n\n const mapKeys: string[] = []\n for (const [userPath, identifier] of Object.entries(componentMap)) {\n mapKeys.push(` \"${userPath}\": ${identifier}`)\n }\n\n const importMapOutputFile = `${imports.join('\\n')}\n\nexport const importMap = {\n${mapKeys.join(',\\n')}\n}\n`\n\n if (!force) {\n // Read current import map and check in the IMPORTS if there are any new imports. If not, don't write the file.\n const currentImportMap = await fs.readFile(importMapFilePath, 'utf-8')\n\n if (currentImportMap?.trim() === importMapOutputFile?.trim()) {\n if (log) {\n console.log('No new imports found, skipping writing import map')\n }\n return\n }\n }\n\n if (log) {\n console.log('Writing import map to', importMapFilePath)\n }\n\n await fs.writeFile(importMapFilePath, importMapOutputFile)\n}\n"],"names":["fs","process","iterateConfig","addPayloadComponentToImportMap","getImportMapToBaseDirPath","resolveImportMapFilePath","generateImportMap","config","options","shouldLog","log","console","importMap","imports","rootDir","env","ROOT_DIR","cwd","baseDir","admin","importMapFilePath","adminRoute","routes","importMapFile","Error","ignoreResolveError","importMapToBaseDirPath","importMapPath","addToImportMap","payloadComponent","error","Array","isArray","component","writeImportMap","componentMap","force","identifier","path","specifier","Object","entries","push","mapKeys","userPath","importMapOutputFile","join","currentImportMap","readFile","trim","writeFile"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../src/bin/generateImportMap/index.ts"],"sourcesContent":["/* eslint-disable no-console */\nimport fs from 'fs/promises'\nimport process from 'node:process'\n\nimport type { PayloadComponent, SanitizedConfig } from '../../config/types.js'\n\nimport { iterateConfig } from './iterateConfig.js'\nimport { addPayloadComponentToImportMap } from './utilities/addPayloadComponentToImportMap.js'\nimport { getImportMapToBaseDirPath } from './utilities/getImportMapToBaseDirPath.js'\nimport { resolveImportMapFilePath } from './utilities/resolveImportMapFilePath.js'\n\ntype ImportIdentifier = string\ntype ImportSpecifier = string\ntype ImportPath = string\ntype UserImportPath = string\n\n/**\n * Import Map before being written to the file. Only contains all paths\n */\nexport type InternalImportMap = {\n [path: UserImportPath]: ImportIdentifier\n}\n\n/**\n * Imports of the import map.\n */\nexport type Imports = {\n [identifier: ImportIdentifier]: {\n path: ImportPath\n specifier: ImportSpecifier\n }\n}\n\n/**\n * Import Map after being imported from the actual import map. Contains all the actual imported components\n */\nexport type ImportMap = {\n [path: UserImportPath]: any\n}\n\nexport type AddToImportMap = (payloadComponent?: PayloadComponent | PayloadComponent[]) => void\n\nexport async function generateImportMap(\n config: SanitizedConfig,\n options?: {\n force?: boolean /**\n * If true, will not throw an error if the import map file path cannot be resolved\n Instead, it will return silently.\n */\n ignoreResolveError?: boolean\n log: boolean\n },\n): Promise<void> {\n const shouldLog = options?.log ?? true\n\n if (shouldLog) {\n console.log('Generating import map')\n }\n\n const importMap: InternalImportMap = {}\n const imports: Imports = {}\n\n // Determine the root directory of the project - usually the directory where the src or app folder is located\n const rootDir = process.env.ROOT_DIR ?? process.cwd()\n\n const baseDir = config.admin.importMap.baseDir ?? process.cwd()\n\n const importMapFilePath = await resolveImportMapFilePath({\n adminRoute: config.routes.admin,\n importMapFile: config?.admin?.importMap?.importMapFile,\n rootDir,\n })\n\n if (importMapFilePath instanceof Error) {\n if (options?.ignoreResolveError) {\n return\n } else {\n throw importMapFilePath\n }\n }\n\n const importMapToBaseDirPath = getImportMapToBaseDirPath({\n baseDir,\n importMapPath: importMapFilePath,\n })\n\n const addToImportMap: AddToImportMap = (payloadComponent) => {\n if (!payloadComponent) {\n return\n }\n\n if (typeof payloadComponent !== 'object' && typeof payloadComponent !== 'string') {\n console.error(payloadComponent)\n throw new Error('addToImportMap > Payload component must be an object or a string')\n }\n\n if (Array.isArray(payloadComponent)) {\n for (const component of payloadComponent) {\n addPayloadComponentToImportMap({\n importMap,\n importMapToBaseDirPath,\n imports,\n payloadComponent: component,\n })\n }\n } else {\n addPayloadComponentToImportMap({\n importMap,\n importMapToBaseDirPath,\n imports,\n payloadComponent,\n })\n }\n }\n\n iterateConfig({\n addToImportMap,\n baseDir: config.admin.importMap.baseDir,\n config,\n importMap,\n imports,\n })\n\n await writeImportMap({\n componentMap: importMap,\n force: options?.force,\n importMap: imports,\n importMapFilePath,\n log: shouldLog,\n })\n}\n\nexport async function writeImportMap({\n componentMap,\n force,\n importMap,\n importMapFilePath,\n log,\n}: {\n componentMap: InternalImportMap\n force?: boolean\n importMap: Imports\n importMapFilePath: string\n log?: boolean\n}) {\n const imports: string[] = []\n for (const [identifier, { path, specifier }] of Object.entries(importMap)) {\n imports.push(`import { ${specifier} as ${identifier} } from '${path}'`)\n }\n\n const mapKeys: string[] = []\n for (const [userPath, identifier] of Object.entries(componentMap)) {\n mapKeys.push(` \"${userPath}\": ${identifier}`)\n }\n\n const importMapOutputFile = `${imports.join('\\n')}\n\n/** @type import('payload').ImportMap */\nexport const importMap = {\n${mapKeys.join(',\\n')}\n}\n`\n\n if (!force) {\n // Read current import map and check in the IMPORTS if there are any new imports. If not, don't write the file.\n const currentImportMap = await fs.readFile(importMapFilePath, 'utf-8')\n\n if (currentImportMap?.trim() === importMapOutputFile?.trim()) {\n if (log) {\n console.log('No new imports found, skipping writing import map')\n }\n return\n }\n }\n\n if (log) {\n console.log('Writing import map to', importMapFilePath)\n }\n\n await fs.writeFile(importMapFilePath, importMapOutputFile)\n}\n"],"names":["fs","process","iterateConfig","addPayloadComponentToImportMap","getImportMapToBaseDirPath","resolveImportMapFilePath","generateImportMap","config","options","shouldLog","log","console","importMap","imports","rootDir","env","ROOT_DIR","cwd","baseDir","admin","importMapFilePath","adminRoute","routes","importMapFile","Error","ignoreResolveError","importMapToBaseDirPath","importMapPath","addToImportMap","payloadComponent","error","Array","isArray","component","writeImportMap","componentMap","force","identifier","path","specifier","Object","entries","push","mapKeys","userPath","importMapOutputFile","join","currentImportMap","readFile","trim","writeFile"],"mappings":"AAAA,6BAA6B,GAC7B,OAAOA,QAAQ,cAAa;AAC5B,OAAOC,aAAa,eAAc;AAIlC,SAASC,aAAa,QAAQ,qBAAoB;AAClD,SAASC,8BAA8B,QAAQ,gDAA+C;AAC9F,SAASC,yBAAyB,QAAQ,2CAA0C;AACpF,SAASC,wBAAwB,QAAQ,0CAAyC;AAiClF,OAAO,eAAeC,kBACpBC,MAAuB,EACvBC,OAOC;IAED,MAAMC,YAAYD,SAASE,OAAO;IAElC,IAAID,WAAW;QACbE,QAAQD,GAAG,CAAC;IACd;IAEA,MAAME,YAA+B,CAAC;IACtC,MAAMC,UAAmB,CAAC;IAE1B,6GAA6G;IAC7G,MAAMC,UAAUb,QAAQc,GAAG,CAACC,QAAQ,IAAIf,QAAQgB,GAAG;IAEnD,MAAMC,UAAUX,OAAOY,KAAK,CAACP,SAAS,CAACM,OAAO,IAAIjB,QAAQgB,GAAG;IAE7D,MAAMG,oBAAoB,MAAMf,yBAAyB;QACvDgB,YAAYd,OAAOe,MAAM,CAACH,KAAK;QAC/BI,eAAehB,QAAQY,OAAOP,WAAWW;QACzCT;IACF;IAEA,IAAIM,6BAA6BI,OAAO;QACtC,IAAIhB,SAASiB,oBAAoB;YAC/B;QACF,OAAO;YACL,MAAML;QACR;IACF;IAEA,MAAMM,yBAAyBtB,0BAA0B;QACvDc;QACAS,eAAeP;IACjB;IAEA,MAAMQ,iBAAiC,CAACC;QACtC,IAAI,CAACA,kBAAkB;YACrB;QACF;QAEA,IAAI,OAAOA,qBAAqB,YAAY,OAAOA,qBAAqB,UAAU;YAChFlB,QAAQmB,KAAK,CAACD;YACd,MAAM,IAAIL,MAAM;QAClB;QAEA,IAAIO,MAAMC,OAAO,CAACH,mBAAmB;YACnC,KAAK,MAAMI,aAAaJ,iBAAkB;gBACxC1B,+BAA+B;oBAC7BS;oBACAc;oBACAb;oBACAgB,kBAAkBI;gBACpB;YACF;QACF,OAAO;YACL9B,+BAA+B;gBAC7BS;gBACAc;gBACAb;gBACAgB;YACF;QACF;IACF;IAEA3B,cAAc;QACZ0B;QACAV,SAASX,OAAOY,KAAK,CAACP,SAAS,CAACM,OAAO;QACvCX;QACAK;QACAC;IACF;IAEA,MAAMqB,eAAe;QACnBC,cAAcvB;QACdwB,OAAO5B,SAAS4B;QAChBxB,WAAWC;QACXO;QACAV,KAAKD;IACP;AACF;AAEA,OAAO,eAAeyB,eAAe,EACnCC,YAAY,EACZC,KAAK,EACLxB,SAAS,EACTQ,iBAAiB,EACjBV,GAAG,EAOJ;IACC,MAAMG,UAAoB,EAAE;IAC5B,KAAK,MAAM,CAACwB,YAAY,EAAEC,IAAI,EAAEC,SAAS,EAAE,CAAC,IAAIC,OAAOC,OAAO,CAAC7B,WAAY;QACzEC,QAAQ6B,IAAI,CAAC,CAAC,SAAS,EAAEH,UAAU,IAAI,EAAEF,WAAW,SAAS,EAAEC,KAAK,CAAC,CAAC;IACxE;IAEA,MAAMK,UAAoB,EAAE;IAC5B,KAAK,MAAM,CAACC,UAAUP,WAAW,IAAIG,OAAOC,OAAO,CAACN,cAAe;QACjEQ,QAAQD,IAAI,CAAC,CAAC,GAAG,EAAEE,SAAS,GAAG,EAAEP,YAAY;IAC/C;IAEA,MAAMQ,sBAAsB,GAAGhC,QAAQiC,IAAI,CAAC,MAAM;;;;AAIpD,EAAEH,QAAQG,IAAI,CAAC,OAAO;;AAEtB,CAAC;IAEC,IAAI,CAACV,OAAO;QACV,+GAA+G;QAC/G,MAAMW,mBAAmB,MAAM/C,GAAGgD,QAAQ,CAAC5B,mBAAmB;QAE9D,IAAI2B,kBAAkBE,WAAWJ,qBAAqBI,QAAQ;YAC5D,IAAIvC,KAAK;gBACPC,QAAQD,GAAG,CAAC;YACd;YACA;QACF;IACF;IAEA,IAAIA,KAAK;QACPC,QAAQD,GAAG,CAAC,yBAAyBU;IACvC;IAEA,MAAMpB,GAAGkD,SAAS,CAAC9B,mBAAmByB;AACxC"}
@@ -1 +1 @@
1
- {"version":3,"file":"iterateCollections.d.ts","sourceRoot":"","sources":["../../../src/bin/generateImportMap/iterateCollections.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,mCAAmC,CAAA;AAClF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AAC5D,OAAO,KAAK,EAAE,cAAc,EAAE,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAI5E,wBAAgB,kBAAkB,CAAC,EACjC,cAAc,EACd,OAAO,EACP,WAAW,EACX,MAAM,EACN,SAAS,EACT,OAAO,GACR,EAAE;IACD,cAAc,EAAE,cAAc,CAAA;IAC9B,OAAO,EAAE,MAAM,CAAA;IACf,WAAW,EAAE,yBAAyB,EAAE,CAAA;IACxC,MAAM,EAAE,eAAe,CAAA;IACvB,SAAS,EAAE,iBAAiB,CAAA;IAC5B,OAAO,EAAE,OAAO,CAAA;CACjB,QAoDA"}
1
+ {"version":3,"file":"iterateCollections.d.ts","sourceRoot":"","sources":["../../../src/bin/generateImportMap/iterateCollections.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,mCAAmC,CAAA;AAClF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AAC5D,OAAO,KAAK,EAAE,cAAc,EAAE,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAI5E,wBAAgB,kBAAkB,CAAC,EACjC,cAAc,EACd,OAAO,EACP,WAAW,EACX,MAAM,EACN,SAAS,EACT,OAAO,GACR,EAAE;IACD,cAAc,EAAE,cAAc,CAAA;IAC9B,OAAO,EAAE,MAAM,CAAA;IACf,WAAW,EAAE,yBAAyB,EAAE,CAAA;IACxC,MAAM,EAAE,eAAe,CAAA;IACvB,SAAS,EAAE,iBAAiB,CAAA;IAC5B,OAAO,EAAE,OAAO,CAAA;CACjB,QAgEA"}
@@ -43,6 +43,17 @@ export function iterateCollections({ addToImportMap, baseDir, collections, confi
43
43
  }
44
44
  addToImportMap(collection.admin?.components?.views?.list?.Component);
45
45
  addToImportMap(collection.admin?.components?.views?.list?.actions);
46
+ // Register custom collection view components (any key other than 'edit' and 'list')
47
+ if (collection.admin?.components?.views) {
48
+ for (const [key, view] of Object.entries(collection.admin.components.views)){
49
+ if (key === 'edit' || key === 'list') {
50
+ continue;
51
+ }
52
+ if (view && typeof view === 'object' && 'Component' in view && 'path' in view) {
53
+ addToImportMap(view.Component);
54
+ }
55
+ }
56
+ }
46
57
  }
47
58
  }
48
59
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/bin/generateImportMap/iterateCollections.ts"],"sourcesContent":["import type { SanitizedCollectionConfig } from '../../collections/config/types.js'\nimport type { SanitizedConfig } from '../../config/types.js'\nimport type { AddToImportMap, Imports, InternalImportMap } from './index.js'\n\nimport { genImportMapIterateFields } from './iterateFields.js'\n\nexport function iterateCollections({\n addToImportMap,\n baseDir,\n collections,\n config,\n importMap,\n imports,\n}: {\n addToImportMap: AddToImportMap\n baseDir: string\n collections: SanitizedCollectionConfig[]\n config: SanitizedConfig\n importMap: InternalImportMap\n imports: Imports\n}) {\n for (const collection of collections) {\n genImportMapIterateFields({\n addToImportMap,\n baseDir,\n config,\n fields: collection.fields,\n importMap,\n imports,\n })\n\n addToImportMap(collection.admin?.components?.afterList)\n addToImportMap(collection.admin?.components?.listMenuItems)\n addToImportMap(collection.admin?.components?.afterListTable)\n addToImportMap(collection.admin?.components?.beforeList)\n addToImportMap(collection.admin?.components?.beforeListTable)\n addToImportMap(collection.admin?.components?.Description)\n\n addToImportMap(collection.admin?.components?.edit?.beforeDocumentControls)\n addToImportMap(collection.admin?.components?.edit?.editMenuItems)\n addToImportMap(collection.admin?.components?.edit?.PreviewButton)\n addToImportMap(collection.admin?.components?.edit?.PublishButton)\n addToImportMap(collection.admin?.components?.edit?.SaveButton)\n addToImportMap(collection.admin?.components?.edit?.SaveDraftButton)\n addToImportMap(collection.admin?.components?.edit?.Status)\n addToImportMap(collection.admin?.components?.edit?.UnpublishButton)\n addToImportMap(collection.admin?.components?.edit?.Upload)\n\n if (collection.upload?.admin?.components?.controls) {\n addToImportMap(collection.upload?.admin?.components?.controls)\n }\n\n if (collection.admin?.components?.views?.edit) {\n for (const editViewConfig of Object.values(collection.admin?.components?.views?.edit)) {\n if ('Component' in editViewConfig) {\n addToImportMap(editViewConfig?.Component)\n }\n\n if ('actions' in editViewConfig) {\n addToImportMap(editViewConfig?.actions)\n }\n\n if ('tab' in editViewConfig) {\n addToImportMap(editViewConfig?.tab?.Component)\n addToImportMap(editViewConfig?.tab?.Pill)\n }\n }\n }\n\n addToImportMap(collection.admin?.components?.views?.list?.Component)\n addToImportMap(collection.admin?.components?.views?.list?.actions)\n }\n}\n"],"names":["genImportMapIterateFields","iterateCollections","addToImportMap","baseDir","collections","config","importMap","imports","collection","fields","admin","components","afterList","listMenuItems","afterListTable","beforeList","beforeListTable","Description","edit","beforeDocumentControls","editMenuItems","PreviewButton","PublishButton","SaveButton","SaveDraftButton","Status","UnpublishButton","Upload","upload","controls","views","editViewConfig","Object","values","Component","actions","tab","Pill","list"],"mappings":"AAIA,SAASA,yBAAyB,QAAQ,qBAAoB;AAE9D,OAAO,SAASC,mBAAmB,EACjCC,cAAc,EACdC,OAAO,EACPC,WAAW,EACXC,MAAM,EACNC,SAAS,EACTC,OAAO,EAQR;IACC,KAAK,MAAMC,cAAcJ,YAAa;QACpCJ,0BAA0B;YACxBE;YACAC;YACAE;YACAI,QAAQD,WAAWC,MAAM;YACzBH;YACAC;QACF;QAEAL,eAAeM,WAAWE,KAAK,EAAEC,YAAYC;QAC7CV,eAAeM,WAAWE,KAAK,EAAEC,YAAYE;QAC7CX,eAAeM,WAAWE,KAAK,EAAEC,YAAYG;QAC7CZ,eAAeM,WAAWE,KAAK,EAAEC,YAAYI;QAC7Cb,eAAeM,WAAWE,KAAK,EAAEC,YAAYK;QAC7Cd,eAAeM,WAAWE,KAAK,EAAEC,YAAYM;QAE7Cf,eAAeM,WAAWE,KAAK,EAAEC,YAAYO,MAAMC;QACnDjB,eAAeM,WAAWE,KAAK,EAAEC,YAAYO,MAAME;QACnDlB,eAAeM,WAAWE,KAAK,EAAEC,YAAYO,MAAMG;QACnDnB,eAAeM,WAAWE,KAAK,EAAEC,YAAYO,MAAMI;QACnDpB,eAAeM,WAAWE,KAAK,EAAEC,YAAYO,MAAMK;QACnDrB,eAAeM,WAAWE,KAAK,EAAEC,YAAYO,MAAMM;QACnDtB,eAAeM,WAAWE,KAAK,EAAEC,YAAYO,MAAMO;QACnDvB,eAAeM,WAAWE,KAAK,EAAEC,YAAYO,MAAMQ;QACnDxB,eAAeM,WAAWE,KAAK,EAAEC,YAAYO,MAAMS;QAEnD,IAAInB,WAAWoB,MAAM,EAAElB,OAAOC,YAAYkB,UAAU;YAClD3B,eAAeM,WAAWoB,MAAM,EAAElB,OAAOC,YAAYkB;QACvD;QAEA,IAAIrB,WAAWE,KAAK,EAAEC,YAAYmB,OAAOZ,MAAM;YAC7C,KAAK,MAAMa,kBAAkBC,OAAOC,MAAM,CAACzB,WAAWE,KAAK,EAAEC,YAAYmB,OAAOZ,MAAO;gBACrF,IAAI,eAAea,gBAAgB;oBACjC7B,eAAe6B,gBAAgBG;gBACjC;gBAEA,IAAI,aAAaH,gBAAgB;oBAC/B7B,eAAe6B,gBAAgBI;gBACjC;gBAEA,IAAI,SAASJ,gBAAgB;oBAC3B7B,eAAe6B,gBAAgBK,KAAKF;oBACpChC,eAAe6B,gBAAgBK,KAAKC;gBACtC;YACF;QACF;QAEAnC,eAAeM,WAAWE,KAAK,EAAEC,YAAYmB,OAAOQ,MAAMJ;QAC1DhC,eAAeM,WAAWE,KAAK,EAAEC,YAAYmB,OAAOQ,MAAMH;IAC5D;AACF"}
1
+ {"version":3,"sources":["../../../src/bin/generateImportMap/iterateCollections.ts"],"sourcesContent":["import type { AdminViewConfig } from '../../admin/views/index.js'\nimport type { SanitizedCollectionConfig } from '../../collections/config/types.js'\nimport type { SanitizedConfig } from '../../config/types.js'\nimport type { AddToImportMap, Imports, InternalImportMap } from './index.js'\n\nimport { genImportMapIterateFields } from './iterateFields.js'\n\nexport function iterateCollections({\n addToImportMap,\n baseDir,\n collections,\n config,\n importMap,\n imports,\n}: {\n addToImportMap: AddToImportMap\n baseDir: string\n collections: SanitizedCollectionConfig[]\n config: SanitizedConfig\n importMap: InternalImportMap\n imports: Imports\n}) {\n for (const collection of collections) {\n genImportMapIterateFields({\n addToImportMap,\n baseDir,\n config,\n fields: collection.fields,\n importMap,\n imports,\n })\n\n addToImportMap(collection.admin?.components?.afterList)\n addToImportMap(collection.admin?.components?.listMenuItems)\n addToImportMap(collection.admin?.components?.afterListTable)\n addToImportMap(collection.admin?.components?.beforeList)\n addToImportMap(collection.admin?.components?.beforeListTable)\n addToImportMap(collection.admin?.components?.Description)\n\n addToImportMap(collection.admin?.components?.edit?.beforeDocumentControls)\n addToImportMap(collection.admin?.components?.edit?.editMenuItems)\n addToImportMap(collection.admin?.components?.edit?.PreviewButton)\n addToImportMap(collection.admin?.components?.edit?.PublishButton)\n addToImportMap(collection.admin?.components?.edit?.SaveButton)\n addToImportMap(collection.admin?.components?.edit?.SaveDraftButton)\n addToImportMap(collection.admin?.components?.edit?.Status)\n addToImportMap(collection.admin?.components?.edit?.UnpublishButton)\n addToImportMap(collection.admin?.components?.edit?.Upload)\n\n if (collection.upload?.admin?.components?.controls) {\n addToImportMap(collection.upload?.admin?.components?.controls)\n }\n\n if (collection.admin?.components?.views?.edit) {\n for (const editViewConfig of Object.values(collection.admin?.components?.views?.edit)) {\n if ('Component' in editViewConfig) {\n addToImportMap(editViewConfig?.Component)\n }\n\n if ('actions' in editViewConfig) {\n addToImportMap(editViewConfig?.actions)\n }\n\n if ('tab' in editViewConfig) {\n addToImportMap(editViewConfig?.tab?.Component)\n addToImportMap(editViewConfig?.tab?.Pill)\n }\n }\n }\n\n addToImportMap(collection.admin?.components?.views?.list?.Component)\n addToImportMap(collection.admin?.components?.views?.list?.actions)\n\n // Register custom collection view components (any key other than 'edit' and 'list')\n if (collection.admin?.components?.views) {\n for (const [key, view] of Object.entries(collection.admin.components.views)) {\n if (key === 'edit' || key === 'list') {\n continue\n }\n if (view && typeof view === 'object' && 'Component' in view && 'path' in view) {\n addToImportMap((view as AdminViewConfig).Component)\n }\n }\n }\n }\n}\n"],"names":["genImportMapIterateFields","iterateCollections","addToImportMap","baseDir","collections","config","importMap","imports","collection","fields","admin","components","afterList","listMenuItems","afterListTable","beforeList","beforeListTable","Description","edit","beforeDocumentControls","editMenuItems","PreviewButton","PublishButton","SaveButton","SaveDraftButton","Status","UnpublishButton","Upload","upload","controls","views","editViewConfig","Object","values","Component","actions","tab","Pill","list","key","view","entries"],"mappings":"AAKA,SAASA,yBAAyB,QAAQ,qBAAoB;AAE9D,OAAO,SAASC,mBAAmB,EACjCC,cAAc,EACdC,OAAO,EACPC,WAAW,EACXC,MAAM,EACNC,SAAS,EACTC,OAAO,EAQR;IACC,KAAK,MAAMC,cAAcJ,YAAa;QACpCJ,0BAA0B;YACxBE;YACAC;YACAE;YACAI,QAAQD,WAAWC,MAAM;YACzBH;YACAC;QACF;QAEAL,eAAeM,WAAWE,KAAK,EAAEC,YAAYC;QAC7CV,eAAeM,WAAWE,KAAK,EAAEC,YAAYE;QAC7CX,eAAeM,WAAWE,KAAK,EAAEC,YAAYG;QAC7CZ,eAAeM,WAAWE,KAAK,EAAEC,YAAYI;QAC7Cb,eAAeM,WAAWE,KAAK,EAAEC,YAAYK;QAC7Cd,eAAeM,WAAWE,KAAK,EAAEC,YAAYM;QAE7Cf,eAAeM,WAAWE,KAAK,EAAEC,YAAYO,MAAMC;QACnDjB,eAAeM,WAAWE,KAAK,EAAEC,YAAYO,MAAME;QACnDlB,eAAeM,WAAWE,KAAK,EAAEC,YAAYO,MAAMG;QACnDnB,eAAeM,WAAWE,KAAK,EAAEC,YAAYO,MAAMI;QACnDpB,eAAeM,WAAWE,KAAK,EAAEC,YAAYO,MAAMK;QACnDrB,eAAeM,WAAWE,KAAK,EAAEC,YAAYO,MAAMM;QACnDtB,eAAeM,WAAWE,KAAK,EAAEC,YAAYO,MAAMO;QACnDvB,eAAeM,WAAWE,KAAK,EAAEC,YAAYO,MAAMQ;QACnDxB,eAAeM,WAAWE,KAAK,EAAEC,YAAYO,MAAMS;QAEnD,IAAInB,WAAWoB,MAAM,EAAElB,OAAOC,YAAYkB,UAAU;YAClD3B,eAAeM,WAAWoB,MAAM,EAAElB,OAAOC,YAAYkB;QACvD;QAEA,IAAIrB,WAAWE,KAAK,EAAEC,YAAYmB,OAAOZ,MAAM;YAC7C,KAAK,MAAMa,kBAAkBC,OAAOC,MAAM,CAACzB,WAAWE,KAAK,EAAEC,YAAYmB,OAAOZ,MAAO;gBACrF,IAAI,eAAea,gBAAgB;oBACjC7B,eAAe6B,gBAAgBG;gBACjC;gBAEA,IAAI,aAAaH,gBAAgB;oBAC/B7B,eAAe6B,gBAAgBI;gBACjC;gBAEA,IAAI,SAASJ,gBAAgB;oBAC3B7B,eAAe6B,gBAAgBK,KAAKF;oBACpChC,eAAe6B,gBAAgBK,KAAKC;gBACtC;YACF;QACF;QAEAnC,eAAeM,WAAWE,KAAK,EAAEC,YAAYmB,OAAOQ,MAAMJ;QAC1DhC,eAAeM,WAAWE,KAAK,EAAEC,YAAYmB,OAAOQ,MAAMH;QAE1D,oFAAoF;QACpF,IAAI3B,WAAWE,KAAK,EAAEC,YAAYmB,OAAO;YACvC,KAAK,MAAM,CAACS,KAAKC,KAAK,IAAIR,OAAOS,OAAO,CAACjC,WAAWE,KAAK,CAACC,UAAU,CAACmB,KAAK,EAAG;gBAC3E,IAAIS,QAAQ,UAAUA,QAAQ,QAAQ;oBACpC;gBACF;gBACA,IAAIC,QAAQ,OAAOA,SAAS,YAAY,eAAeA,QAAQ,UAAUA,MAAM;oBAC7EtC,eAAe,AAACsC,KAAyBN,SAAS;gBACpD;YACF;QACF;IACF;AACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/bin/index.ts"],"names":[],"mappings":"AA0BA,eAAO,MAAM,GAAG,qBAgCf,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/bin/index.ts"],"names":[],"mappings":"AA0BA,eAAO,MAAM,GAAG,qBAkCf,CAAA"}
package/dist/bin/index.js CHANGED
@@ -36,7 +36,9 @@ export const bin = async ()=>{
36
36
  });
37
37
  }, {
38
38
  // Do not run consecutive crons if previous crons still ongoing
39
- protect: true
39
+ protect: true,
40
+ // TODO: Remove this compatibility option in 4.0. This only exists to ensure backwards-compatibility between Croner v9 and Croner v10 cron syntax
41
+ sloppyRanges: true
40
42
  });
41
43
  process.stdin.resume(); // Keep the process alive
42
44
  return;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/bin/index.ts"],"sourcesContent":["/* eslint-disable no-console */\nimport { Cron } from 'croner'\nimport minimist from 'minimist'\nimport { pathToFileURL } from 'node:url'\nimport path from 'path'\n\nimport { findConfig } from '../config/find.js'\nimport { getPayload, type Payload } from '../index.js'\nimport { generateImportMap } from './generateImportMap/index.js'\nimport { generateTypes } from './generateTypes.js'\nimport { info } from './info.js'\nimport { loadEnv } from './loadEnv.js'\nimport { migrate, availableCommands as migrateCommands } from './migrate.js'\n\n// Note: this does not account for any user bin scripts\nconst availableScripts = [\n 'generate:db-schema',\n 'generate:importmap',\n 'generate:types',\n 'info',\n 'jobs:run',\n 'jobs:handle-schedules',\n 'run',\n ...migrateCommands,\n] as const\n\nexport const bin = async () => {\n loadEnv()\n process.env.DISABLE_PAYLOAD_HMR = 'true'\n\n const args = minimist(process.argv.slice(2))\n const script = (typeof args._[0] === 'string' ? args._[0] : '').toLowerCase()\n\n if (args.cron) {\n new Cron(\n args.cron,\n async () => {\n // If the bin script initializes payload (getPayload), this will only happen once, as getPayload\n // caches the payload instance on the module scope => no need to manually cache and manage getPayload initialization\n // outside the Cron here.\n await runBinScript({ args, script })\n },\n {\n // Do not run consecutive crons if previous crons still ongoing\n protect: true,\n },\n )\n\n process.stdin.resume() // Keep the process alive\n\n return\n } else {\n const { payload } = await runBinScript({ args, script })\n if (payload) {\n await payload.destroy() // close database connections after running jobs so process can exit cleanly\n }\n process.exit(0)\n }\n}\n\nasync function runBinScript({\n args,\n script,\n}: {\n args: minimist.ParsedArgs\n script: string\n}): Promise<{\n /**\n * Scripts can return a payload instance if it exists. The bin script runner can then safely\n * shut off the instance, depending on if it's running in a cron job or not.\n */\n payload?: Payload\n}> {\n if (script === 'info') {\n await info()\n return {}\n }\n\n if (script === 'run') {\n const scriptPath = args._[1]\n if (!scriptPath) {\n console.error('Please provide a script path to run.')\n process.exit(1)\n }\n\n const absoluteScriptPath = path.resolve(process.cwd(), scriptPath)\n\n // Modify process.argv to remove 'run' and the script path\n const originalArgv = process.argv\n process.argv = [process.argv[0]!, process.argv[1]!, ...args._.slice(2)]\n\n try {\n await import(pathToFileURL(absoluteScriptPath).toString())\n } catch (error) {\n console.error(`Error running script: ${absoluteScriptPath}`)\n console.error(error)\n process.exit(1)\n } finally {\n // Restore original process.argv\n process.argv = originalArgv\n }\n return {}\n }\n\n const configPath = findConfig()\n const configPromise = await import(pathToFileURL(configPath).toString())\n let config = await configPromise\n if (config.default) {\n config = await config.default\n }\n\n const userBinScript = Array.isArray(config.bin)\n ? config.bin.find(({ key }: { key: string }) => key === script)\n : false\n\n if (userBinScript) {\n try {\n const module = await import(pathToFileURL(userBinScript.scriptPath).toString())\n\n if (!module.script || typeof module.script !== 'function') {\n console.error(\n `Could not find \"script\" function export for script ${userBinScript.key} in ${userBinScript.scriptPath}`,\n )\n } else {\n await module.script(config).catch((err: unknown) => {\n console.log(`Script ${userBinScript.key} failed, details:`)\n console.error(err)\n })\n }\n } catch (err) {\n console.log(`Could not find associated bin script for the ${userBinScript.key} command`)\n console.error(err)\n }\n\n return {}\n }\n\n if (script.startsWith('migrate')) {\n await migrate({ config, parsedArgs: args })\n return {}\n }\n\n if (script === 'generate:types') {\n await generateTypes(config)\n return {}\n }\n\n if (script === 'generate:importmap') {\n await generateImportMap(config)\n return {}\n }\n\n if (script === 'jobs:run') {\n const payload = await getPayload({ config }) // Do not setup crons here - this bin script can set up its own crons\n const limit = args.limit ? parseInt(args.limit, 10) : undefined\n const queue = args.queue ? args.queue : undefined\n const allQueues = !!args['all-queues']\n const handleSchedules = !!args['handle-schedules']\n\n if (handleSchedules) {\n await payload.jobs.handleSchedules({\n allQueues,\n queue,\n })\n }\n\n await payload.jobs.run({\n allQueues,\n limit,\n queue,\n })\n\n return { payload }\n }\n\n if (script === 'jobs:handle-schedules') {\n const payload = await getPayload({ config }) // Do not setup crons here - this bin script can set up its own crons\n const queue = args.queue ? args.queue : undefined\n const allQueues = !!args['all-queues']\n\n await payload.jobs.handleSchedules({\n allQueues,\n queue,\n })\n\n return { payload }\n }\n\n if (script === 'generate:db-schema') {\n // Barebones instance to access database adapter, without connecting to the DB\n const payload = await getPayload({ config, disableDBConnect: true, disableOnInit: true }) // Do not setup crons here\n\n if (typeof payload.db.generateSchema !== 'function') {\n payload.logger.error({\n msg: `${payload.db.packageName} does not support database schema generation`,\n })\n\n await payload.destroy()\n process.exit(1)\n }\n\n await payload.db.generateSchema({\n log: args.log === 'false' ? false : true,\n prettify: args.prettify === 'false' ? false : true,\n })\n\n return { payload }\n }\n\n console.error(script ? `Unknown command: \"${script}\"` : 'Please provide a command to run')\n console.log(`\\nAvailable commands:\\n${availableScripts.map((c) => ` - ${c}`).join('\\n')}`)\n\n process.exit(1)\n}\n"],"names":["Cron","minimist","pathToFileURL","path","findConfig","getPayload","generateImportMap","generateTypes","info","loadEnv","migrate","availableCommands","migrateCommands","availableScripts","bin","process","env","DISABLE_PAYLOAD_HMR","args","argv","slice","script","_","toLowerCase","cron","runBinScript","protect","stdin","resume","payload","destroy","exit","scriptPath","console","error","absoluteScriptPath","resolve","cwd","originalArgv","toString","configPath","configPromise","config","default","userBinScript","Array","isArray","find","key","module","catch","err","log","startsWith","parsedArgs","limit","parseInt","undefined","queue","allQueues","handleSchedules","jobs","run","disableDBConnect","disableOnInit","db","generateSchema","logger","msg","packageName","prettify","map","c","join"],"mappings":"AAAA,6BAA6B,GAC7B,SAASA,IAAI,QAAQ,SAAQ;AAC7B,OAAOC,cAAc,WAAU;AAC/B,SAASC,aAAa,QAAQ,WAAU;AACxC,OAAOC,UAAU,OAAM;AAEvB,SAASC,UAAU,QAAQ,oBAAmB;AAC9C,SAASC,UAAU,QAAsB,cAAa;AACtD,SAASC,iBAAiB,QAAQ,+BAA8B;AAChE,SAASC,aAAa,QAAQ,qBAAoB;AAClD,SAASC,IAAI,QAAQ,YAAW;AAChC,SAASC,OAAO,QAAQ,eAAc;AACtC,SAASC,OAAO,EAAEC,qBAAqBC,eAAe,QAAQ,eAAc;AAE5E,uDAAuD;AACvD,MAAMC,mBAAmB;IACvB;IACA;IACA;IACA;IACA;IACA;IACA;OACGD;CACJ;AAED,OAAO,MAAME,MAAM;IACjBL;IACAM,QAAQC,GAAG,CAACC,mBAAmB,GAAG;IAElC,MAAMC,OAAOjB,SAASc,QAAQI,IAAI,CAACC,KAAK,CAAC;IACzC,MAAMC,SAAS,AAAC,CAAA,OAAOH,KAAKI,CAAC,CAAC,EAAE,KAAK,WAAWJ,KAAKI,CAAC,CAAC,EAAE,GAAG,EAAC,EAAGC,WAAW;IAE3E,IAAIL,KAAKM,IAAI,EAAE;QACb,IAAIxB,KACFkB,KAAKM,IAAI,EACT;YACE,gGAAgG;YAChG,oHAAoH;YACpH,yBAAyB;YACzB,MAAMC,aAAa;gBAAEP;gBAAMG;YAAO;QACpC,GACA;YACE,+DAA+D;YAC/DK,SAAS;QACX;QAGFX,QAAQY,KAAK,CAACC,MAAM,IAAG,yBAAyB;QAEhD;IACF,OAAO;QACL,MAAM,EAAEC,OAAO,EAAE,GAAG,MAAMJ,aAAa;YAAEP;YAAMG;QAAO;QACtD,IAAIQ,SAAS;YACX,MAAMA,QAAQC,OAAO,IAAG,4EAA4E;QACtG;QACAf,QAAQgB,IAAI,CAAC;IACf;AACF,EAAC;AAED,eAAeN,aAAa,EAC1BP,IAAI,EACJG,MAAM,EAIP;IAOC,IAAIA,WAAW,QAAQ;QACrB,MAAMb;QACN,OAAO,CAAC;IACV;IAEA,IAAIa,WAAW,OAAO;QACpB,MAAMW,aAAad,KAAKI,CAAC,CAAC,EAAE;QAC5B,IAAI,CAACU,YAAY;YACfC,QAAQC,KAAK,CAAC;YACdnB,QAAQgB,IAAI,CAAC;QACf;QAEA,MAAMI,qBAAqBhC,KAAKiC,OAAO,CAACrB,QAAQsB,GAAG,IAAIL;QAEvD,0DAA0D;QAC1D,MAAMM,eAAevB,QAAQI,IAAI;QACjCJ,QAAQI,IAAI,GAAG;YAACJ,QAAQI,IAAI,CAAC,EAAE;YAAGJ,QAAQI,IAAI,CAAC,EAAE;eAAMD,KAAKI,CAAC,CAACF,KAAK,CAAC;SAAG;QAEvE,IAAI;YACF,MAAM,MAAM,CAAClB,cAAciC,oBAAoBI,QAAQ;QACzD,EAAE,OAAOL,OAAO;YACdD,QAAQC,KAAK,CAAC,CAAC,sBAAsB,EAAEC,oBAAoB;YAC3DF,QAAQC,KAAK,CAACA;YACdnB,QAAQgB,IAAI,CAAC;QACf,SAAU;YACR,gCAAgC;YAChChB,QAAQI,IAAI,GAAGmB;QACjB;QACA,OAAO,CAAC;IACV;IAEA,MAAME,aAAapC;IACnB,MAAMqC,gBAAgB,MAAM,MAAM,CAACvC,cAAcsC,YAAYD,QAAQ;IACrE,IAAIG,SAAS,MAAMD;IACnB,IAAIC,OAAOC,OAAO,EAAE;QAClBD,SAAS,MAAMA,OAAOC,OAAO;IAC/B;IAEA,MAAMC,gBAAgBC,MAAMC,OAAO,CAACJ,OAAO5B,GAAG,IAC1C4B,OAAO5B,GAAG,CAACiC,IAAI,CAAC,CAAC,EAAEC,GAAG,EAAmB,GAAKA,QAAQ3B,UACtD;IAEJ,IAAIuB,eAAe;QACjB,IAAI;YACF,MAAMK,SAAS,MAAM,MAAM,CAAC/C,cAAc0C,cAAcZ,UAAU,EAAEO,QAAQ;YAE5E,IAAI,CAACU,OAAO5B,MAAM,IAAI,OAAO4B,OAAO5B,MAAM,KAAK,YAAY;gBACzDY,QAAQC,KAAK,CACX,CAAC,mDAAmD,EAAEU,cAAcI,GAAG,CAAC,IAAI,EAAEJ,cAAcZ,UAAU,EAAE;YAE5G,OAAO;gBACL,MAAMiB,OAAO5B,MAAM,CAACqB,QAAQQ,KAAK,CAAC,CAACC;oBACjClB,QAAQmB,GAAG,CAAC,CAAC,OAAO,EAAER,cAAcI,GAAG,CAAC,iBAAiB,CAAC;oBAC1Df,QAAQC,KAAK,CAACiB;gBAChB;YACF;QACF,EAAE,OAAOA,KAAK;YACZlB,QAAQmB,GAAG,CAAC,CAAC,6CAA6C,EAAER,cAAcI,GAAG,CAAC,QAAQ,CAAC;YACvFf,QAAQC,KAAK,CAACiB;QAChB;QAEA,OAAO,CAAC;IACV;IAEA,IAAI9B,OAAOgC,UAAU,CAAC,YAAY;QAChC,MAAM3C,QAAQ;YAAEgC;YAAQY,YAAYpC;QAAK;QACzC,OAAO,CAAC;IACV;IAEA,IAAIG,WAAW,kBAAkB;QAC/B,MAAMd,cAAcmC;QACpB,OAAO,CAAC;IACV;IAEA,IAAIrB,WAAW,sBAAsB;QACnC,MAAMf,kBAAkBoC;QACxB,OAAO,CAAC;IACV;IAEA,IAAIrB,WAAW,YAAY;QACzB,MAAMQ,UAAU,MAAMxB,WAAW;YAAEqC;QAAO,GAAG,qEAAqE;;QAClH,MAAMa,QAAQrC,KAAKqC,KAAK,GAAGC,SAAStC,KAAKqC,KAAK,EAAE,MAAME;QACtD,MAAMC,QAAQxC,KAAKwC,KAAK,GAAGxC,KAAKwC,KAAK,GAAGD;QACxC,MAAME,YAAY,CAAC,CAACzC,IAAI,CAAC,aAAa;QACtC,MAAM0C,kBAAkB,CAAC,CAAC1C,IAAI,CAAC,mBAAmB;QAElD,IAAI0C,iBAAiB;YACnB,MAAM/B,QAAQgC,IAAI,CAACD,eAAe,CAAC;gBACjCD;gBACAD;YACF;QACF;QAEA,MAAM7B,QAAQgC,IAAI,CAACC,GAAG,CAAC;YACrBH;YACAJ;YACAG;QACF;QAEA,OAAO;YAAE7B;QAAQ;IACnB;IAEA,IAAIR,WAAW,yBAAyB;QACtC,MAAMQ,UAAU,MAAMxB,WAAW;YAAEqC;QAAO,GAAG,qEAAqE;;QAClH,MAAMgB,QAAQxC,KAAKwC,KAAK,GAAGxC,KAAKwC,KAAK,GAAGD;QACxC,MAAME,YAAY,CAAC,CAACzC,IAAI,CAAC,aAAa;QAEtC,MAAMW,QAAQgC,IAAI,CAACD,eAAe,CAAC;YACjCD;YACAD;QACF;QAEA,OAAO;YAAE7B;QAAQ;IACnB;IAEA,IAAIR,WAAW,sBAAsB;QACnC,8EAA8E;QAC9E,MAAMQ,UAAU,MAAMxB,WAAW;YAAEqC;YAAQqB,kBAAkB;YAAMC,eAAe;QAAK,GAAG,0BAA0B;;QAEpH,IAAI,OAAOnC,QAAQoC,EAAE,CAACC,cAAc,KAAK,YAAY;YACnDrC,QAAQsC,MAAM,CAACjC,KAAK,CAAC;gBACnBkC,KAAK,GAAGvC,QAAQoC,EAAE,CAACI,WAAW,CAAC,4CAA4C,CAAC;YAC9E;YAEA,MAAMxC,QAAQC,OAAO;YACrBf,QAAQgB,IAAI,CAAC;QACf;QAEA,MAAMF,QAAQoC,EAAE,CAACC,cAAc,CAAC;YAC9Bd,KAAKlC,KAAKkC,GAAG,KAAK,UAAU,QAAQ;YACpCkB,UAAUpD,KAAKoD,QAAQ,KAAK,UAAU,QAAQ;QAChD;QAEA,OAAO;YAAEzC;QAAQ;IACnB;IAEAI,QAAQC,KAAK,CAACb,SAAS,CAAC,kBAAkB,EAAEA,OAAO,CAAC,CAAC,GAAG;IACxDY,QAAQmB,GAAG,CAAC,CAAC,uBAAuB,EAAEvC,iBAAiB0D,GAAG,CAAC,CAACC,IAAM,CAAC,IAAI,EAAEA,GAAG,EAAEC,IAAI,CAAC,OAAO;IAE1F1D,QAAQgB,IAAI,CAAC;AACf"}
1
+ {"version":3,"sources":["../../src/bin/index.ts"],"sourcesContent":["/* eslint-disable no-console */\nimport { Cron } from 'croner'\nimport minimist from 'minimist'\nimport { pathToFileURL } from 'node:url'\nimport path from 'path'\n\nimport { findConfig } from '../config/find.js'\nimport { getPayload, type Payload } from '../index.js'\nimport { generateImportMap } from './generateImportMap/index.js'\nimport { generateTypes } from './generateTypes.js'\nimport { info } from './info.js'\nimport { loadEnv } from './loadEnv.js'\nimport { migrate, availableCommands as migrateCommands } from './migrate.js'\n\n// Note: this does not account for any user bin scripts\nconst availableScripts = [\n 'generate:db-schema',\n 'generate:importmap',\n 'generate:types',\n 'info',\n 'jobs:run',\n 'jobs:handle-schedules',\n 'run',\n ...migrateCommands,\n] as const\n\nexport const bin = async () => {\n loadEnv()\n process.env.DISABLE_PAYLOAD_HMR = 'true'\n\n const args = minimist(process.argv.slice(2))\n const script = (typeof args._[0] === 'string' ? args._[0] : '').toLowerCase()\n\n if (args.cron) {\n new Cron(\n args.cron,\n async () => {\n // If the bin script initializes payload (getPayload), this will only happen once, as getPayload\n // caches the payload instance on the module scope => no need to manually cache and manage getPayload initialization\n // outside the Cron here.\n await runBinScript({ args, script })\n },\n {\n // Do not run consecutive crons if previous crons still ongoing\n protect: true,\n // TODO: Remove this compatibility option in 4.0. This only exists to ensure backwards-compatibility between Croner v9 and Croner v10 cron syntax\n sloppyRanges: true,\n },\n )\n\n process.stdin.resume() // Keep the process alive\n\n return\n } else {\n const { payload } = await runBinScript({ args, script })\n if (payload) {\n await payload.destroy() // close database connections after running jobs so process can exit cleanly\n }\n process.exit(0)\n }\n}\n\nasync function runBinScript({\n args,\n script,\n}: {\n args: minimist.ParsedArgs\n script: string\n}): Promise<{\n /**\n * Scripts can return a payload instance if it exists. The bin script runner can then safely\n * shut off the instance, depending on if it's running in a cron job or not.\n */\n payload?: Payload\n}> {\n if (script === 'info') {\n await info()\n return {}\n }\n\n if (script === 'run') {\n const scriptPath = args._[1]\n if (!scriptPath) {\n console.error('Please provide a script path to run.')\n process.exit(1)\n }\n\n const absoluteScriptPath = path.resolve(process.cwd(), scriptPath)\n\n // Modify process.argv to remove 'run' and the script path\n const originalArgv = process.argv\n process.argv = [process.argv[0]!, process.argv[1]!, ...args._.slice(2)]\n\n try {\n await import(pathToFileURL(absoluteScriptPath).toString())\n } catch (error) {\n console.error(`Error running script: ${absoluteScriptPath}`)\n console.error(error)\n process.exit(1)\n } finally {\n // Restore original process.argv\n process.argv = originalArgv\n }\n return {}\n }\n\n const configPath = findConfig()\n const configPromise = await import(pathToFileURL(configPath).toString())\n let config = await configPromise\n if (config.default) {\n config = await config.default\n }\n\n const userBinScript = Array.isArray(config.bin)\n ? config.bin.find(({ key }: { key: string }) => key === script)\n : false\n\n if (userBinScript) {\n try {\n const module = await import(pathToFileURL(userBinScript.scriptPath).toString())\n\n if (!module.script || typeof module.script !== 'function') {\n console.error(\n `Could not find \"script\" function export for script ${userBinScript.key} in ${userBinScript.scriptPath}`,\n )\n } else {\n await module.script(config).catch((err: unknown) => {\n console.log(`Script ${userBinScript.key} failed, details:`)\n console.error(err)\n })\n }\n } catch (err) {\n console.log(`Could not find associated bin script for the ${userBinScript.key} command`)\n console.error(err)\n }\n\n return {}\n }\n\n if (script.startsWith('migrate')) {\n await migrate({ config, parsedArgs: args })\n return {}\n }\n\n if (script === 'generate:types') {\n await generateTypes(config)\n return {}\n }\n\n if (script === 'generate:importmap') {\n await generateImportMap(config)\n return {}\n }\n\n if (script === 'jobs:run') {\n const payload = await getPayload({ config }) // Do not setup crons here - this bin script can set up its own crons\n const limit = args.limit ? parseInt(args.limit, 10) : undefined\n const queue = args.queue ? args.queue : undefined\n const allQueues = !!args['all-queues']\n const handleSchedules = !!args['handle-schedules']\n\n if (handleSchedules) {\n await payload.jobs.handleSchedules({\n allQueues,\n queue,\n })\n }\n\n await payload.jobs.run({\n allQueues,\n limit,\n queue,\n })\n\n return { payload }\n }\n\n if (script === 'jobs:handle-schedules') {\n const payload = await getPayload({ config }) // Do not setup crons here - this bin script can set up its own crons\n const queue = args.queue ? args.queue : undefined\n const allQueues = !!args['all-queues']\n\n await payload.jobs.handleSchedules({\n allQueues,\n queue,\n })\n\n return { payload }\n }\n\n if (script === 'generate:db-schema') {\n // Barebones instance to access database adapter, without connecting to the DB\n const payload = await getPayload({ config, disableDBConnect: true, disableOnInit: true }) // Do not setup crons here\n\n if (typeof payload.db.generateSchema !== 'function') {\n payload.logger.error({\n msg: `${payload.db.packageName} does not support database schema generation`,\n })\n\n await payload.destroy()\n process.exit(1)\n }\n\n await payload.db.generateSchema({\n log: args.log === 'false' ? false : true,\n prettify: args.prettify === 'false' ? false : true,\n })\n\n return { payload }\n }\n\n console.error(script ? `Unknown command: \"${script}\"` : 'Please provide a command to run')\n console.log(`\\nAvailable commands:\\n${availableScripts.map((c) => ` - ${c}`).join('\\n')}`)\n\n process.exit(1)\n}\n"],"names":["Cron","minimist","pathToFileURL","path","findConfig","getPayload","generateImportMap","generateTypes","info","loadEnv","migrate","availableCommands","migrateCommands","availableScripts","bin","process","env","DISABLE_PAYLOAD_HMR","args","argv","slice","script","_","toLowerCase","cron","runBinScript","protect","sloppyRanges","stdin","resume","payload","destroy","exit","scriptPath","console","error","absoluteScriptPath","resolve","cwd","originalArgv","toString","configPath","configPromise","config","default","userBinScript","Array","isArray","find","key","module","catch","err","log","startsWith","parsedArgs","limit","parseInt","undefined","queue","allQueues","handleSchedules","jobs","run","disableDBConnect","disableOnInit","db","generateSchema","logger","msg","packageName","prettify","map","c","join"],"mappings":"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"}
@@ -1,5 +1,10 @@
1
1
  import type { Config, SanitizedConfig } from '../../config/types.js';
2
2
  import type { OrderableJoinInfo } from '../../fields/config/sanitizeJoinField.js';
3
3
  import type { CollectionConfig, SanitizedCollectionConfig } from './types.js';
4
+ /**
5
+ * Warns at startup when custom collection views are misconfigured with a missing `path`.
6
+ * Views without `path` will never be matched by the router and are silently ignored.
7
+ */
8
+ export declare const warnOnInvalidCustomViews: (collection: CollectionConfig) => void;
4
9
  export declare const sanitizeCollection: (config: Config, collection: CollectionConfig, richTextSanitizationPromises?: Array<(config: SanitizedConfig) => Promise<void>>, _validRelationships?: string[], orderableJoins?: OrderableJoinInfo[]) => Promise<SanitizedCollectionConfig>;
5
10
  //# sourceMappingURL=sanitize.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"sanitize.d.ts","sourceRoot":"","sources":["../../../src/collections/config/sanitize.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AACpE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,0CAA0C,CAAA;AACjF,OAAO,KAAK,EACV,gBAAgB,EAChB,yBAAyB,EAG1B,MAAM,YAAY,CAAA;AAyBnB,eAAO,MAAM,kBAAkB,WACrB,MAAM,cACF,gBAAgB,iCAKG,KAAK,CAAC,CAAC,MAAM,EAAE,eAAe,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC,wBAC1D,MAAM,EAAE,mBAIb,iBAAiB,EAAE,KACnC,OAAO,CAAC,yBAAyB,CAiRnC,CAAA"}
1
+ {"version":3,"file":"sanitize.d.ts","sourceRoot":"","sources":["../../../src/collections/config/sanitize.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AACpE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,0CAA0C,CAAA;AACjF,OAAO,KAAK,EACV,gBAAgB,EAChB,yBAAyB,EAG1B,MAAM,YAAY,CAAA;AAyBnB;;;GAGG;AACH,eAAO,MAAM,wBAAwB,eAAgB,gBAAgB,KAAG,IAuBvE,CAAA;AAED,eAAO,MAAM,kBAAkB,WACrB,MAAM,cACF,gBAAgB,iCAKG,KAAK,CAAC,CAAC,MAAM,EAAE,eAAe,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC,wBAC1D,MAAM,EAAE,mBAIb,iBAAiB,EAAE,KACnC,OAAO,CAAC,yBAAyB,CAmRnC,CAAA"}
@@ -16,6 +16,26 @@ import { defaultCollectionEndpoints } from '../endpoints/index.js';
16
16
  import { addDefaultsToAuthConfig, addDefaultsToCollectionConfig, addDefaultsToLoginWithUsernameConfig } from './defaults.js';
17
17
  import { sanitizeCompoundIndexes } from './sanitizeCompoundIndexes.js';
18
18
  import { validateUseAsTitle } from './useAsTitle.js';
19
+ /**
20
+ * Warns at startup when custom collection views are misconfigured with a missing `path`.
21
+ * Views without `path` will never be matched by the router and are silently ignored.
22
+ */ export const warnOnInvalidCustomViews = (collection)=>{
23
+ const views = collection.admin?.components?.views;
24
+ if (!views || typeof views !== 'object') {
25
+ return;
26
+ }
27
+ for (const [key, view] of Object.entries(views)){
28
+ if (key === 'edit' || key === 'list') {
29
+ continue;
30
+ }
31
+ if (view && typeof view === 'object' && 'Component' in view && !('path' in view)) {
32
+ console.warn(`[Payload] Custom collection view "${key}" in collection "${collection.slug}" is missing a "path" property. The view will never be rendered.`);
33
+ }
34
+ if (view && typeof view === 'object' && 'path' in view && !('Component' in view)) {
35
+ console.warn(`[Payload] Custom collection view "${key}" in collection "${collection.slug}" has a "path" but is missing a "Component". The view will never be rendered.`);
36
+ }
37
+ }
38
+ };
19
39
  export const sanitizeCollection = async (config, collection, /**
20
40
  * If this property is set, RichText fields won't be sanitized immediately. Instead, they will be added to this array as promises
21
41
  * so that you can sanitize them together, after the config has been sanitized.
@@ -26,6 +46,7 @@ export const sanitizeCollection = async (config, collection, /**
26
46
  return collection;
27
47
  }
28
48
  collection._sanitized = true;
49
+ warnOnInvalidCustomViews(collection);
29
50
  // /////////////////////////////////
30
51
  // Make copy of collection config
31
52
  // /////////////////////////////////