payload 1.6.23 → 1.6.25

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 (186) hide show
  1. package/dist/admin/components/Routes.js +1 -3
  2. package/dist/admin/components/Routes.js.map +1 -1
  3. package/dist/admin/components/elements/ColumnSelector/index.js +2 -0
  4. package/dist/admin/components/elements/ColumnSelector/index.js.map +1 -1
  5. package/dist/admin/components/elements/{UploadGallery → DeleteMany}/index.d.ts +2 -2
  6. package/dist/admin/components/elements/DeleteMany/index.js +104 -0
  7. package/dist/admin/components/elements/DeleteMany/index.js.map +1 -0
  8. package/dist/admin/components/elements/DeleteMany/index.scss +17 -0
  9. package/dist/admin/components/elements/DeleteMany/types.d.ts +7 -0
  10. package/dist/admin/components/elements/DeleteMany/types.js.map +1 -0
  11. package/dist/admin/components/elements/EditMany/index.d.ts +5 -0
  12. package/dist/admin/components/elements/EditMany/index.js +131 -0
  13. package/dist/admin/components/elements/EditMany/index.js.map +1 -0
  14. package/dist/admin/components/elements/EditMany/index.scss +190 -0
  15. package/dist/admin/components/elements/{UploadGallery → EditMany}/types.d.ts +2 -2
  16. package/dist/admin/components/elements/EditMany/types.js +3 -0
  17. package/dist/admin/components/elements/EditMany/types.js.map +1 -0
  18. package/dist/admin/components/elements/FieldSelect/index.d.ts +9 -0
  19. package/dist/admin/components/elements/FieldSelect/index.js +107 -0
  20. package/dist/admin/components/elements/FieldSelect/index.js.map +1 -0
  21. package/dist/admin/components/elements/FieldSelect/index.scss +5 -0
  22. package/dist/admin/components/elements/ListControls/index.js +16 -3
  23. package/dist/admin/components/elements/ListControls/index.js.map +1 -1
  24. package/dist/admin/components/elements/ListControls/index.scss +34 -31
  25. package/dist/admin/components/elements/ListControls/types.d.ts +2 -0
  26. package/dist/admin/components/elements/ListDrawer/DrawerContent.js +0 -10
  27. package/dist/admin/components/elements/ListDrawer/DrawerContent.js.map +1 -1
  28. package/dist/admin/components/elements/ListSelection/index.d.ts +7 -0
  29. package/dist/admin/components/elements/ListSelection/index.js +45 -0
  30. package/dist/admin/components/elements/ListSelection/index.js.map +1 -0
  31. package/dist/admin/components/elements/ListSelection/index.scss +19 -0
  32. package/dist/admin/components/elements/PublishMany/index.d.ts +5 -0
  33. package/dist/admin/components/elements/PublishMany/index.js +106 -0
  34. package/dist/admin/components/elements/PublishMany/index.js.map +1 -0
  35. package/dist/admin/components/elements/PublishMany/index.scss +17 -0
  36. package/dist/admin/components/elements/PublishMany/types.d.ts +6 -0
  37. package/dist/admin/components/elements/PublishMany/types.js +3 -0
  38. package/dist/admin/components/elements/PublishMany/types.js.map +1 -0
  39. package/dist/admin/components/elements/SearchFilter/index.scss +11 -1
  40. package/dist/admin/components/elements/TableColumns/buildColumns.d.ts +1 -3
  41. package/dist/admin/components/elements/TableColumns/buildColumns.js +24 -29
  42. package/dist/admin/components/elements/TableColumns/buildColumns.js.map +1 -1
  43. package/dist/admin/components/elements/TableColumns/columnReducer.d.ts +0 -4
  44. package/dist/admin/components/elements/TableColumns/columnReducer.js +3 -6
  45. package/dist/admin/components/elements/TableColumns/columnReducer.js.map +1 -1
  46. package/dist/admin/components/elements/TableColumns/index.js +11 -14
  47. package/dist/admin/components/elements/TableColumns/index.js.map +1 -1
  48. package/dist/admin/components/elements/Thumbnail/index.js +2 -1
  49. package/dist/admin/components/elements/Thumbnail/index.js.map +1 -1
  50. package/dist/admin/components/elements/Thumbnail/types.d.ts +1 -0
  51. package/dist/admin/components/elements/UnpublishMany/index.d.ts +5 -0
  52. package/dist/admin/components/elements/UnpublishMany/index.js +106 -0
  53. package/dist/admin/components/elements/UnpublishMany/index.js.map +1 -0
  54. package/dist/admin/components/elements/UnpublishMany/index.scss +17 -0
  55. package/dist/admin/components/elements/UnpublishMany/types.d.ts +6 -0
  56. package/dist/admin/components/elements/UnpublishMany/types.js +3 -0
  57. package/dist/admin/components/elements/UnpublishMany/types.js.map +1 -0
  58. package/dist/admin/components/icons/Line/index.d.ts +4 -0
  59. package/dist/admin/components/icons/Line/index.js +11 -0
  60. package/dist/admin/components/icons/Line/index.js.map +1 -0
  61. package/dist/admin/components/icons/Line/index.scss +11 -0
  62. package/dist/admin/components/views/collections/List/Cell/field-types/File/index.d.ts +8 -0
  63. package/dist/admin/components/views/collections/List/Cell/field-types/File/index.js +19 -0
  64. package/dist/admin/components/views/collections/List/Cell/field-types/File/index.js.map +1 -0
  65. package/dist/admin/components/views/collections/List/Cell/field-types/File/index.scss +18 -0
  66. package/dist/admin/components/views/collections/List/Cell/field-types/index.d.ts +5 -0
  67. package/dist/admin/components/views/collections/List/Cell/field-types/index.js +2 -0
  68. package/dist/admin/components/views/collections/List/Cell/field-types/index.js.map +1 -1
  69. package/dist/admin/components/views/collections/List/Cell/index.js +14 -8
  70. package/dist/admin/components/views/collections/List/Cell/index.js.map +1 -1
  71. package/dist/admin/components/views/collections/List/Default.js +45 -43
  72. package/dist/admin/components/views/collections/List/Default.js.map +1 -1
  73. package/dist/admin/components/views/collections/List/SelectAll/index.d.ts +4 -0
  74. package/dist/admin/components/views/collections/List/SelectAll/index.js +21 -0
  75. package/dist/admin/components/views/collections/List/SelectAll/index.js.map +1 -0
  76. package/dist/admin/components/views/collections/List/SelectAll/index.scss +30 -0
  77. package/dist/admin/components/views/collections/List/SelectRow/index.d.ts +6 -0
  78. package/dist/admin/components/views/collections/List/SelectRow/index.js +22 -0
  79. package/dist/admin/components/views/collections/List/SelectRow/index.js.map +1 -0
  80. package/dist/admin/components/views/collections/List/SelectRow/index.scss +44 -0
  81. package/dist/admin/components/views/collections/List/SelectionProvider/index.d.ts +25 -0
  82. package/dist/admin/components/views/collections/List/SelectionProvider/index.js +154 -0
  83. package/dist/admin/components/views/collections/List/SelectionProvider/index.js.map +1 -0
  84. package/dist/admin/components/views/collections/List/formatFields.js +22 -20
  85. package/dist/admin/components/views/collections/List/formatFields.js.map +1 -1
  86. package/dist/admin/components/views/collections/List/index.js +40 -14
  87. package/dist/admin/components/views/collections/List/index.js.map +1 -1
  88. package/dist/admin/components/views/collections/List/index.scss +34 -29
  89. package/dist/admin/components/views/collections/List/types.d.ts +7 -2
  90. package/dist/collections/buildEndpoints.js +15 -3
  91. package/dist/collections/buildEndpoints.js.map +1 -1
  92. package/dist/collections/config/types.d.ts +10 -2
  93. package/dist/collections/graphql/resolvers/delete.js +2 -2
  94. package/dist/collections/graphql/resolvers/delete.js.map +1 -1
  95. package/dist/collections/graphql/resolvers/update.js +2 -2
  96. package/dist/collections/graphql/resolvers/update.js.map +1 -1
  97. package/dist/collections/operations/delete.d.ts +9 -2
  98. package/dist/collections/operations/delete.js +114 -109
  99. package/dist/collections/operations/delete.js.map +1 -1
  100. package/dist/collections/operations/deleteByID.d.ts +14 -0
  101. package/dist/collections/operations/deleteByID.js +127 -0
  102. package/dist/collections/operations/deleteByID.js.map +1 -0
  103. package/dist/collections/operations/local/delete.d.ts +17 -5
  104. package/dist/collections/operations/local/delete.js +9 -3
  105. package/dist/collections/operations/local/delete.js.map +1 -1
  106. package/dist/collections/operations/local/index.d.ts +9 -3
  107. package/dist/collections/operations/local/index.js +8 -2
  108. package/dist/collections/operations/local/index.js.map +1 -1
  109. package/dist/collections/operations/local/update.d.ts +16 -4
  110. package/dist/collections/operations/local/update.js +7 -2
  111. package/dist/collections/operations/local/update.js.map +1 -1
  112. package/dist/collections/operations/update.d.ts +4 -4
  113. package/dist/collections/operations/update.js +208 -227
  114. package/dist/collections/operations/update.js.map +1 -1
  115. package/dist/collections/operations/updateByID.d.ts +20 -0
  116. package/dist/collections/operations/updateByID.js +256 -0
  117. package/dist/collections/operations/updateByID.js.map +1 -0
  118. package/dist/collections/requestHandlers/delete.js +23 -6
  119. package/dist/collections/requestHandlers/delete.js.map +1 -1
  120. package/dist/collections/requestHandlers/deleteByID.d.ts +8 -0
  121. package/dist/collections/requestHandlers/deleteByID.js +27 -0
  122. package/dist/collections/requestHandlers/deleteByID.js.map +1 -0
  123. package/dist/collections/requestHandlers/update.d.ts +1 -2
  124. package/dist/collections/requestHandlers/update.js +21 -17
  125. package/dist/collections/requestHandlers/update.js.map +1 -1
  126. package/dist/collections/requestHandlers/updateByID.d.ts +8 -0
  127. package/dist/collections/requestHandlers/updateByID.js +43 -0
  128. package/dist/collections/requestHandlers/updateByID.js.map +1 -0
  129. package/dist/fields/config/schema.js +1 -0
  130. package/dist/fields/config/schema.js.map +1 -1
  131. package/dist/fields/config/types.d.ts +2 -0
  132. package/dist/fields/config/types.js.map +1 -1
  133. package/dist/fields/hooks/afterChange/promise.js +5 -5
  134. package/dist/fields/hooks/afterChange/promise.js.map +1 -1
  135. package/dist/fields/validations.d.ts +1 -0
  136. package/dist/index.js.map +1 -1
  137. package/dist/payload.d.ts +23 -6
  138. package/dist/payload.js +9 -10
  139. package/dist/payload.js.map +1 -1
  140. package/dist/translations/cs.json +18 -1
  141. package/dist/translations/de.json +32 -11
  142. package/dist/translations/en.json +25 -8
  143. package/dist/translations/es.json +25 -8
  144. package/dist/translations/fr.json +30 -10
  145. package/dist/translations/hr.json +25 -8
  146. package/dist/translations/hu.json +18 -1
  147. package/dist/translations/index.d.ts +630 -191
  148. package/dist/translations/it.json +36 -10
  149. package/dist/translations/ja.json +14 -2
  150. package/dist/translations/my.json +37 -8
  151. package/dist/translations/nb.json +26 -8
  152. package/dist/translations/nl.json +37 -9
  153. package/dist/translations/pl.json +38 -9
  154. package/dist/translations/pt.json +38 -9
  155. package/dist/translations/ru.json +28 -10
  156. package/dist/translations/sv.json +37 -9
  157. package/dist/translations/th.json +26 -9
  158. package/dist/translations/tr.json +53 -35
  159. package/dist/translations/ua.json +25 -8
  160. package/dist/translations/vi.json +38 -11
  161. package/dist/translations/zh.json +25 -8
  162. package/dist/uploads/deleteAssociatedFiles.d.ts +14 -0
  163. package/dist/uploads/deleteAssociatedFiles.js +41 -0
  164. package/dist/uploads/deleteAssociatedFiles.js.map +1 -0
  165. package/dist/uploads/getBaseFields.js +1 -0
  166. package/dist/uploads/getBaseFields.js.map +1 -1
  167. package/dist/uploads/unlinkTempFiles.d.ts +13 -0
  168. package/dist/uploads/unlinkTempFiles.js +28 -0
  169. package/dist/uploads/unlinkTempFiles.js.map +1 -0
  170. package/dist/versions/baseFields.js +1 -0
  171. package/dist/versions/baseFields.js.map +1 -1
  172. package/dist/versions/drafts/queryDrafts.d.ts +1 -1
  173. package/dist/versions/drafts/queryDrafts.js +22 -15
  174. package/dist/versions/drafts/queryDrafts.js.map +1 -1
  175. package/docs/fields/overview.mdx +13 -12
  176. package/docs/local-api/overview.mdx +62 -1
  177. package/docs/rest-api/overview.mdx +9 -7
  178. package/package.json +1 -1
  179. package/dist/admin/components/elements/UploadGallery/index.js +0 -19
  180. package/dist/admin/components/elements/UploadGallery/index.js.map +0 -1
  181. package/dist/admin/components/elements/UploadGallery/index.scss +0 -32
  182. package/dist/admin/components/elements/UploadGallery/types.js.map +0 -1
  183. package/dist/admin/components/views/collections/List/Cell/field-types/Upload/index.d.ts +0 -0
  184. package/dist/admin/components/views/collections/List/Cell/field-types/Upload/index.js +0 -1
  185. package/dist/admin/components/views/collections/List/Cell/field-types/Upload/index.js.map +0 -1
  186. /package/dist/admin/components/elements/{UploadGallery → DeleteMany}/types.js +0 -0
@@ -1,10 +1,10 @@
1
1
  import { Config as GeneratedTypes } from 'payload/generated-types';
2
2
  import { Payload } from '../../../payload';
3
- import { Document } from '../../../types';
3
+ import { Document, Where } from '../../../types';
4
4
  import { File } from '../../../uploads/types';
5
- export type Options<TSlug extends keyof GeneratedTypes['collections']> = {
5
+ import { BulkOperationResult } from '../../config/types';
6
+ export type BaseOptions<TSlug extends keyof GeneratedTypes['collections']> = {
6
7
  collection: TSlug;
7
- id: string | number;
8
8
  data: Partial<GeneratedTypes['collections'][TSlug]>;
9
9
  depth?: number;
10
10
  locale?: string;
@@ -18,4 +18,16 @@ export type Options<TSlug extends keyof GeneratedTypes['collections']> = {
18
18
  draft?: boolean;
19
19
  autosave?: boolean;
20
20
  };
21
- export default function updateLocal<TSlug extends keyof GeneratedTypes['collections']>(payload: Payload, options: Options<TSlug>): Promise<GeneratedTypes['collections'][TSlug]>;
21
+ export type ByIDOptions<TSlug extends keyof GeneratedTypes['collections']> = BaseOptions<TSlug> & {
22
+ id: string | number;
23
+ where?: never;
24
+ };
25
+ export type ManyOptions<TSlug extends keyof GeneratedTypes['collections']> = BaseOptions<TSlug> & {
26
+ where: Where;
27
+ id?: never;
28
+ };
29
+ export type Options<TSlug extends keyof GeneratedTypes['collections']> = ByIDOptions<TSlug> | ManyOptions<TSlug>;
30
+ declare function updateLocal<TSlug extends keyof GeneratedTypes['collections']>(payload: Payload, options: ByIDOptions<TSlug>): Promise<GeneratedTypes['collections'][TSlug]>;
31
+ declare function updateLocal<TSlug extends keyof GeneratedTypes['collections']>(payload: Payload, options: ManyOptions<TSlug>): Promise<BulkOperationResult<TSlug>>;
32
+ declare function updateLocal<TSlug extends keyof GeneratedTypes['collections']>(payload: Payload, options: Options<TSlug>): Promise<GeneratedTypes['collections'][TSlug] | BulkOperationResult<TSlug>>;
33
+ export default updateLocal;
@@ -8,9 +8,10 @@ const update_1 = __importDefault(require("../update"));
8
8
  const dataloader_1 = require("../../dataloader");
9
9
  const init_1 = __importDefault(require("../../../translations/init"));
10
10
  const errors_1 = require("../../../errors");
11
+ const updateByID_1 = __importDefault(require("../updateByID"));
11
12
  async function updateLocal(payload, options) {
12
13
  var _a;
13
- const { collection: collectionSlug, depth, locale = null, fallbackLocale = null, data, id, user, overrideAccess = true, showHiddenFields, filePath, file, overwriteExistingFiles = false, draft, autosave, } = options;
14
+ const { collection: collectionSlug, depth, locale = null, fallbackLocale = null, data, user, overrideAccess = true, showHiddenFields, filePath, file, overwriteExistingFiles = false, draft, autosave, id, where, } = options;
14
15
  const collection = payload.collections[collectionSlug];
15
16
  if (!collection) {
16
17
  throw new errors_1.APIError(`The collection with slug ${String(collectionSlug)} can't be found.`);
@@ -37,14 +38,18 @@ async function updateLocal(payload, options) {
37
38
  data,
38
39
  collection,
39
40
  overrideAccess,
40
- id,
41
41
  showHiddenFields,
42
42
  overwriteExistingFiles,
43
43
  draft,
44
44
  autosave,
45
45
  payload,
46
46
  req,
47
+ id,
48
+ where,
47
49
  };
50
+ if (options.id) {
51
+ return (0, updateByID_1.default)(args);
52
+ }
48
53
  return (0, update_1.default)(args);
49
54
  }
50
55
  exports.default = updateLocal;
@@ -1 +1 @@
1
- {"version":3,"file":"update.js","sourceRoot":"","sources":["../../../../src/collections/operations/local/update.ts"],"names":[],"mappings":";;;;;AAGA,mFAA2D;AAC3D,uDAA+B;AAE/B,iDAAiD;AAEjD,sEAAkD;AAClD,4CAA2C;AAmB5B,KAAK,UAAU,WAAW,CACvC,OAAgB,EAChB,OAAuB;;IAEvB,MAAM,EACJ,UAAU,EAAE,cAAc,EAC1B,KAAK,EACL,MAAM,GAAG,IAAI,EACb,cAAc,GAAG,IAAI,EACrB,IAAI,EACJ,EAAE,EACF,IAAI,EACJ,cAAc,GAAG,IAAI,EACrB,gBAAgB,EAChB,QAAQ,EACR,IAAI,EACJ,sBAAsB,GAAG,KAAK,EAC9B,KAAK,EACL,QAAQ,GACT,GAAG,OAAO,CAAC;IAEZ,MAAM,UAAU,GAAG,OAAO,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;IAEvD,IAAI,CAAC,UAAU,EAAE;QACf,MAAM,IAAI,iBAAQ,CAAC,4BAA4B,MAAM,CAAC,cAAc,CAAC,kBAAkB,CAAC,CAAC;KAC1F;IAED,MAAM,IAAI,GAAG,IAAA,cAAQ,EAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC3C,MAAM,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,MAAA,OAAO,CAAC,MAAM,CAAC,YAAY,0CAAE,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC;IAEtG,MAAM,GAAG,GAAG;QACV,IAAI;QACJ,UAAU,EAAE,OAAO;QACnB,MAAM,EAAE,MAAM,aAAN,MAAM,cAAN,MAAM,GAAI,aAAa;QAC/B,cAAc,EAAE,cAAc,aAAd,cAAc,cAAd,cAAc,GAAI,aAAa;QAC/C,OAAO;QACP,IAAI;QACJ,KAAK,EAAE;YACL,IAAI,EAAE,IAAI,aAAJ,IAAI,cAAJ,IAAI,GAAI,MAAM,IAAA,uBAAa,EAAC,QAAQ,CAAC;SAC5C;KACgB,CAAC;IAEpB,IAAI,CAAC,GAAG,CAAC,CAAC;QAAE,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;IAC/B,IAAI,CAAC,GAAG,CAAC,iBAAiB;QAAE,GAAG,CAAC,iBAAiB,GAAG,IAAA,0BAAa,EAAC,GAAG,CAAC,CAAC;IAEvE,MAAM,IAAI,GAAG;QACX,KAAK;QACL,IAAI;QACJ,UAAU;QACV,cAAc;QACd,EAAE;QACF,gBAAgB;QAChB,sBAAsB;QACtB,KAAK;QACL,QAAQ;QACR,OAAO;QACP,GAAG;KACJ,CAAC;IAEF,OAAO,IAAA,gBAAM,EAAQ,IAAI,CAAC,CAAC;AAC7B,CAAC;AA5DD,8BA4DC"}
1
+ {"version":3,"file":"update.js","sourceRoot":"","sources":["../../../../src/collections/operations/local/update.ts"],"names":[],"mappings":";;;;;AAGA,mFAA2D;AAC3D,uDAA+B;AAE/B,iDAAiD;AAEjD,sEAAkD;AAClD,4CAA2C;AAC3C,+DAAuC;AAkCvC,KAAK,UAAU,WAAW,CAAoD,OAAgB,EAAE,OAAuB;;IACrH,MAAM,EACJ,UAAU,EAAE,cAAc,EAC1B,KAAK,EACL,MAAM,GAAG,IAAI,EACb,cAAc,GAAG,IAAI,EACrB,IAAI,EACJ,IAAI,EACJ,cAAc,GAAG,IAAI,EACrB,gBAAgB,EAChB,QAAQ,EACR,IAAI,EACJ,sBAAsB,GAAG,KAAK,EAC9B,KAAK,EACL,QAAQ,EACR,EAAE,EACF,KAAK,GACN,GAAG,OAAO,CAAC;IAEZ,MAAM,UAAU,GAAG,OAAO,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;IAEvD,IAAI,CAAC,UAAU,EAAE;QACf,MAAM,IAAI,iBAAQ,CAAC,4BAA4B,MAAM,CAAC,cAAc,CAAC,kBAAkB,CAAC,CAAC;KAC1F;IAED,MAAM,IAAI,GAAG,IAAA,cAAQ,EAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC3C,MAAM,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,MAAA,OAAO,CAAC,MAAM,CAAC,YAAY,0CAAE,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC;IAEtG,MAAM,GAAG,GAAG;QACV,IAAI;QACJ,UAAU,EAAE,OAAO;QACnB,MAAM,EAAE,MAAM,aAAN,MAAM,cAAN,MAAM,GAAI,aAAa;QAC/B,cAAc,EAAE,cAAc,aAAd,cAAc,cAAd,cAAc,GAAI,aAAa;QAC/C,OAAO;QACP,IAAI;QACJ,KAAK,EAAE;YACL,IAAI,EAAE,IAAI,aAAJ,IAAI,cAAJ,IAAI,GAAI,MAAM,IAAA,uBAAa,EAAC,QAAQ,CAAC;SAC5C;KACgB,CAAC;IAEpB,IAAI,CAAC,GAAG,CAAC,CAAC;QAAE,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;IAC/B,IAAI,CAAC,GAAG,CAAC,iBAAiB;QAAE,GAAG,CAAC,iBAAiB,GAAG,IAAA,0BAAa,EAAC,GAAG,CAAC,CAAC;IAEvE,MAAM,IAAI,GAAG;QACX,KAAK;QACL,IAAI;QACJ,UAAU;QACV,cAAc;QACd,gBAAgB;QAChB,sBAAsB;QACtB,KAAK;QACL,QAAQ;QACR,OAAO;QACP,GAAG;QACH,EAAE;QACF,KAAK;KACN,CAAC;IAEF,IAAI,OAAO,CAAC,EAAE,EAAE;QACd,OAAO,IAAA,oBAAU,EAAQ,IAAI,CAAC,CAAC;KAChC;IACD,OAAO,IAAA,gBAAM,EAAQ,IAAI,CAAC,CAAC;AAC7B,CAAC;AAED,kBAAe,WAAW,CAAC"}
@@ -1,12 +1,13 @@
1
1
  import { Config as GeneratedTypes } from 'payload/generated-types';
2
- import { Collection } from '../config/types';
2
+ import { Where } from '../../types';
3
+ import { BulkOperationResult, Collection } from '../config/types';
3
4
  import { PayloadRequest } from '../../express/types';
4
5
  export type Arguments<T extends {
5
6
  [field: string | number | symbol]: unknown;
6
7
  }> = {
7
8
  collection: Collection;
8
9
  req: PayloadRequest;
9
- id: string | number;
10
+ where: Where;
10
11
  data: Partial<T>;
11
12
  depth?: number;
12
13
  disableVerificationEmail?: boolean;
@@ -14,7 +15,6 @@ export type Arguments<T extends {
14
15
  showHiddenFields?: boolean;
15
16
  overwriteExistingFiles?: boolean;
16
17
  draft?: boolean;
17
- autosave?: boolean;
18
18
  };
19
- declare function update<TSlug extends keyof GeneratedTypes['collections']>(incomingArgs: Arguments<GeneratedTypes['collections'][TSlug]>): Promise<GeneratedTypes['collections'][TSlug]>;
19
+ declare function update<TSlug extends keyof GeneratedTypes['collections']>(incomingArgs: Arguments<GeneratedTypes['collections'][TSlug]>): Promise<BulkOperationResult<TSlug>>;
20
20
  export default update;
@@ -3,9 +3,6 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- const fs_1 = __importDefault(require("fs"));
7
- const util_1 = require("util");
8
- const path_1 = __importDefault(require("path"));
9
6
  const http_status_1 = __importDefault(require("http-status"));
10
7
  const sanitizeInternalFields_1 = __importDefault(require("../../utilities/sanitizeInternalFields"));
11
8
  const executeAccess_1 = __importDefault(require("../../auth/executeAccess"));
@@ -18,10 +15,9 @@ const beforeValidate_1 = require("../../fields/hooks/beforeValidate");
18
15
  const afterChange_1 = require("../../fields/hooks/afterChange");
19
16
  const afterRead_1 = require("../../fields/hooks/afterRead");
20
17
  const generateFileData_1 = require("../../uploads/generateFileData");
21
- const getLatestCollectionVersion_1 = require("../../versions/getLatestCollectionVersion");
22
- const mapAsync_1 = require("../../utilities/mapAsync");
23
- const fileExists_1 = __importDefault(require("../../uploads/fileExists"));
24
- const unlinkFile = (0, util_1.promisify)(fs_1.default.unlink);
18
+ const queryDrafts_1 = require("../../versions/drafts/queryDrafts");
19
+ const deleteAssociatedFiles_1 = require("../../uploads/deleteAssociatedFiles");
20
+ const unlinkTempFiles_1 = require("../../uploads/unlinkTempFiles");
25
21
  async function update(incomingArgs) {
26
22
  var _a;
27
23
  let args = incomingArgs;
@@ -35,64 +31,60 @@ async function update(incomingArgs) {
35
31
  operation: 'update',
36
32
  })) || args;
37
33
  }, Promise.resolve());
38
- const { depth, collection, collection: { Model, config: collectionConfig, }, id, req, req: { t, locale, payload, payload: { config, }, }, overrideAccess, showHiddenFields, overwriteExistingFiles = false, draft: draftArg = false, autosave = false, } = args;
39
- if (!id) {
40
- throw new errors_1.APIError('Missing ID of document to update.', http_status_1.default.BAD_REQUEST);
34
+ const { depth, collection, collection: { Model, config: collectionConfig, }, where, req, req: { t, locale, payload, payload: { config, }, }, overrideAccess, showHiddenFields, overwriteExistingFiles = false, draft: draftArg = false, } = args;
35
+ if (!where) {
36
+ throw new errors_1.APIError('Missing \'where\' query of documents to update.', http_status_1.default.BAD_REQUEST);
41
37
  }
42
38
  let { data } = args;
43
- const { password } = data;
44
39
  const shouldSaveDraft = Boolean(draftArg && collectionConfig.versions.drafts);
45
- const shouldSavePassword = Boolean(password && collectionConfig.auth && !shouldSaveDraft);
46
- const lean = !shouldSavePassword;
47
40
  // /////////////////////////////////////
48
41
  // Access
49
42
  // /////////////////////////////////////
50
- const accessResults = !overrideAccess ? await (0, executeAccess_1.default)({ req, id, data }, collectionConfig.access.update) : true;
51
- const hasWherePolicy = (0, types_1.hasWhereAccessResult)(accessResults);
52
- // /////////////////////////////////////
53
- // Retrieve document
54
- // /////////////////////////////////////
55
43
  const queryToBuild = {
56
44
  where: {
57
- and: [
58
- {
59
- id: {
60
- equals: id,
61
- },
62
- },
63
- ],
45
+ and: [],
64
46
  },
65
47
  };
66
- if ((0, types_1.hasWhereAccessResult)(accessResults)) {
67
- queryToBuild.where.and.push(accessResults);
48
+ if (where) {
49
+ queryToBuild.where = {
50
+ and: [],
51
+ ...where,
52
+ };
53
+ if (Array.isArray(where.AND)) {
54
+ queryToBuild.where.and = [
55
+ ...queryToBuild.where.and,
56
+ ...where.AND,
57
+ ];
58
+ }
59
+ }
60
+ let accessResult;
61
+ if (!overrideAccess) {
62
+ accessResult = await (0, executeAccess_1.default)({ req }, collectionConfig.access.update);
63
+ if ((0, types_1.hasWhereAccessResult)(accessResult)) {
64
+ queryToBuild.where.and.push(accessResult);
65
+ }
68
66
  }
69
67
  const query = await Model.buildQuery(queryToBuild, locale);
70
- const doc = await (0, getLatestCollectionVersion_1.getLatestCollectionVersion)({
71
- payload,
72
- Model,
73
- config: collectionConfig,
74
- id,
75
- query,
76
- lean,
77
- });
78
- if (!doc && !hasWherePolicy)
79
- throw new errors_1.NotFound(t);
80
- if (!doc && hasWherePolicy)
81
- throw new errors_1.Forbidden(t);
82
- let docWithLocales = JSON.stringify(lean ? doc : doc.toJSON({ virtuals: true }));
83
- docWithLocales = JSON.parse(docWithLocales);
84
- const originalDoc = await (0, afterRead_1.afterRead)({
85
- depth: 0,
86
- doc: docWithLocales,
87
- entityConfig: collectionConfig,
88
- req,
89
- overrideAccess: true,
90
- showHiddenFields: true,
91
- });
68
+ // /////////////////////////////////////
69
+ // Retrieve documents
70
+ // /////////////////////////////////////
71
+ let docs;
72
+ if (((_a = collectionConfig.versions) === null || _a === void 0 ? void 0 : _a.drafts) && shouldSaveDraft) {
73
+ docs = await (0, queryDrafts_1.queryDrafts)({
74
+ accessResult,
75
+ collection,
76
+ locale,
77
+ payload,
78
+ where: query,
79
+ });
80
+ }
81
+ else {
82
+ docs = await Model.find(query, {}, { lean: true });
83
+ }
92
84
  // /////////////////////////////////////
93
85
  // Generate data for all files and sizes
94
86
  // /////////////////////////////////////
95
- const { data: newFileData, files: filesToUpload } = await (0, generateFileData_1.generateFileData)({
87
+ const { data: newFileData, files: filesToUpload, } = await (0, generateFileData_1.generateFileData)({
96
88
  config,
97
89
  collection,
98
90
  req,
@@ -101,190 +93,179 @@ async function update(incomingArgs) {
101
93
  overwriteExistingFiles,
102
94
  });
103
95
  data = newFileData;
104
- // /////////////////////////////////////
105
- // beforeValidate - Fields
106
- // /////////////////////////////////////
107
- data = await (0, beforeValidate_1.beforeValidate)({
108
- data,
109
- doc: originalDoc,
110
- entityConfig: collectionConfig,
111
- id,
112
- operation: 'update',
113
- overrideAccess,
114
- req,
115
- });
116
- // /////////////////////////////////////
117
- // beforeValidate - Collection
118
- // /////////////////////////////////////
119
- await collectionConfig.hooks.beforeValidate.reduce(async (priorHook, hook) => {
120
- await priorHook;
121
- data = (await hook({
122
- data,
123
- req,
124
- operation: 'update',
125
- originalDoc,
126
- })) || data;
127
- }, Promise.resolve());
128
- // /////////////////////////////////////
129
- // Write files to local storage
130
- // /////////////////////////////////////
131
- if (!collectionConfig.upload.disableLocalStorage) {
132
- await (0, uploadFiles_1.uploadFiles)(payload, filesToUpload, t);
133
- }
134
- // /////////////////////////////////////
135
- // beforeChange - Collection
136
- // /////////////////////////////////////
137
- await collectionConfig.hooks.beforeChange.reduce(async (priorHook, hook) => {
138
- await priorHook;
139
- data = (await hook({
140
- data,
141
- req,
142
- originalDoc,
143
- operation: 'update',
144
- })) || data;
145
- }, Promise.resolve());
146
- // /////////////////////////////////////
147
- // beforeChange - Fields
148
- // /////////////////////////////////////
149
- let result = await (0, beforeChange_1.beforeChange)({
150
- data,
151
- doc: originalDoc,
152
- docWithLocales,
153
- entityConfig: collectionConfig,
154
- id,
155
- operation: 'update',
156
- req,
157
- skipValidation: shouldSaveDraft || data._status === 'draft',
158
- });
159
- // /////////////////////////////////////
160
- // Handle potential password update
161
- // /////////////////////////////////////
162
- if (shouldSavePassword) {
163
- await doc.setPassword(password);
164
- await doc.save();
165
- delete data.password;
166
- delete result.password;
167
- }
168
- // /////////////////////////////////////
169
- // Update
170
- // /////////////////////////////////////
171
- if (!shouldSaveDraft) {
96
+ const errors = [];
97
+ const promises = docs.map(async (doc) => {
98
+ let docWithLocales = JSON.stringify(doc);
99
+ docWithLocales = JSON.parse(docWithLocales);
100
+ const id = docWithLocales._id;
172
101
  try {
173
- result = await Model.findByIdAndUpdate({ _id: id }, result, { new: true });
174
- }
175
- catch (error) {
176
- // Handle uniqueness error from MongoDB
177
- throw error.code === 11000 && error.keyValue
178
- ? new errors_1.ValidationError([{ message: 'Value must be unique', field: Object.keys(error.keyValue)[0] }], t)
179
- : error;
180
- }
181
- }
182
- result = JSON.parse(JSON.stringify(result));
183
- result.id = result._id;
184
- result = (0, sanitizeInternalFields_1.default)(result);
185
- // /////////////////////////////////////
186
- // Delete any associated files
187
- // /////////////////////////////////////
188
- if (collectionConfig.upload && !overwriteExistingFiles && filesToUpload && filesToUpload.length > 0) {
189
- const { staticDir } = collectionConfig.upload;
190
- const staticPath = path_1.default.resolve(config.paths.configDir, staticDir);
191
- const fileToDelete = `${staticPath}/${doc.filename}`;
192
- if (await (0, fileExists_1.default)(fileToDelete)) {
193
- fs_1.default.unlink(fileToDelete, (err) => {
194
- if (err) {
195
- throw new errors_1.ErrorDeletingFile(t);
102
+ const originalDoc = await (0, afterRead_1.afterRead)({
103
+ depth: 0,
104
+ doc: docWithLocales,
105
+ entityConfig: collectionConfig,
106
+ req,
107
+ overrideAccess: true,
108
+ showHiddenFields: true,
109
+ });
110
+ await (0, deleteAssociatedFiles_1.deleteAssociatedFiles)({ config, collectionConfig, files: filesToUpload, doc: docWithLocales, t, overrideDelete: false });
111
+ // /////////////////////////////////////
112
+ // beforeValidate - Fields
113
+ // /////////////////////////////////////
114
+ data = await (0, beforeValidate_1.beforeValidate)({
115
+ data,
116
+ doc: originalDoc,
117
+ entityConfig: collectionConfig,
118
+ id,
119
+ operation: 'update',
120
+ overrideAccess,
121
+ req,
122
+ });
123
+ // /////////////////////////////////////
124
+ // beforeValidate - Collection
125
+ // /////////////////////////////////////
126
+ await collectionConfig.hooks.beforeValidate.reduce(async (priorHook, hook) => {
127
+ await priorHook;
128
+ data = (await hook({
129
+ data,
130
+ req,
131
+ operation: 'update',
132
+ originalDoc,
133
+ })) || data;
134
+ }, Promise.resolve());
135
+ // /////////////////////////////////////
136
+ // Write files to local storage
137
+ // /////////////////////////////////////
138
+ if (!collectionConfig.upload.disableLocalStorage) {
139
+ await (0, uploadFiles_1.uploadFiles)(payload, filesToUpload, t);
140
+ }
141
+ // /////////////////////////////////////
142
+ // beforeChange - Collection
143
+ // /////////////////////////////////////
144
+ await collectionConfig.hooks.beforeChange.reduce(async (priorHook, hook) => {
145
+ await priorHook;
146
+ data = (await hook({
147
+ data,
148
+ req,
149
+ originalDoc,
150
+ operation: 'update',
151
+ })) || data;
152
+ }, Promise.resolve());
153
+ // /////////////////////////////////////
154
+ // beforeChange - Fields
155
+ // /////////////////////////////////////
156
+ let result = await (0, beforeChange_1.beforeChange)({
157
+ data,
158
+ doc: originalDoc,
159
+ docWithLocales,
160
+ entityConfig: collectionConfig,
161
+ id,
162
+ operation: 'update',
163
+ req,
164
+ skipValidation: shouldSaveDraft || data._status === 'draft',
165
+ });
166
+ // /////////////////////////////////////
167
+ // Update
168
+ // /////////////////////////////////////
169
+ if (!shouldSaveDraft) {
170
+ try {
171
+ result = await Model.findByIdAndUpdate({ _id: id }, result, { new: true });
172
+ }
173
+ catch (error) {
174
+ // Handle uniqueness error from MongoDB
175
+ throw error.code === 11000 && error.keyValue
176
+ ? new errors_1.ValidationError([{
177
+ message: 'Value must be unique',
178
+ field: Object.keys(error.keyValue)[0],
179
+ }], t)
180
+ : error;
196
181
  }
182
+ }
183
+ result = JSON.parse(JSON.stringify(result));
184
+ result.id = result._id;
185
+ result = (0, sanitizeInternalFields_1.default)(result);
186
+ // /////////////////////////////////////
187
+ // Create version
188
+ // /////////////////////////////////////
189
+ if (collectionConfig.versions) {
190
+ result = await (0, saveVersion_1.saveVersion)({
191
+ payload,
192
+ collection: collectionConfig,
193
+ req,
194
+ docWithLocales: {
195
+ ...result,
196
+ createdAt: docWithLocales.createdAt,
197
+ },
198
+ id,
199
+ draft: shouldSaveDraft,
200
+ });
201
+ }
202
+ // /////////////////////////////////////
203
+ // afterRead - Fields
204
+ // /////////////////////////////////////
205
+ result = await (0, afterRead_1.afterRead)({
206
+ depth,
207
+ doc: result,
208
+ entityConfig: collectionConfig,
209
+ req,
210
+ overrideAccess,
211
+ showHiddenFields,
197
212
  });
213
+ // /////////////////////////////////////
214
+ // afterRead - Collection
215
+ // /////////////////////////////////////
216
+ await collectionConfig.hooks.afterRead.reduce(async (priorHook, hook) => {
217
+ await priorHook;
218
+ result = await hook({
219
+ req,
220
+ doc: result,
221
+ }) || result;
222
+ }, Promise.resolve());
223
+ // /////////////////////////////////////
224
+ // afterChange - Fields
225
+ // /////////////////////////////////////
226
+ result = await (0, afterChange_1.afterChange)({
227
+ data,
228
+ doc: result,
229
+ previousDoc: originalDoc,
230
+ entityConfig: collectionConfig,
231
+ operation: 'update',
232
+ req,
233
+ });
234
+ // /////////////////////////////////////
235
+ // afterChange - Collection
236
+ // /////////////////////////////////////
237
+ await collectionConfig.hooks.afterChange.reduce(async (priorHook, hook) => {
238
+ await priorHook;
239
+ result = await hook({
240
+ doc: result,
241
+ previousDoc: originalDoc,
242
+ req,
243
+ operation: 'update',
244
+ }) || result;
245
+ }, Promise.resolve());
246
+ await (0, unlinkTempFiles_1.unlinkTempFiles)({
247
+ req,
248
+ config,
249
+ collectionConfig,
250
+ });
251
+ // /////////////////////////////////////
252
+ // Return results
253
+ // /////////////////////////////////////
254
+ return result;
198
255
  }
199
- if (doc.sizes) {
200
- Object.values(doc.sizes).forEach(async (size) => {
201
- const sizeToDelete = `${staticPath}/${size.filename}`;
202
- if (await (0, fileExists_1.default)(sizeToDelete)) {
203
- fs_1.default.unlink(sizeToDelete, (err) => {
204
- if (err) {
205
- throw new errors_1.ErrorDeletingFile(t);
206
- }
207
- });
208
- }
256
+ catch (error) {
257
+ errors.push({
258
+ message: error.message,
259
+ id,
209
260
  });
210
261
  }
211
- }
212
- // /////////////////////////////////////
213
- // Create version
214
- // /////////////////////////////////////
215
- if (collectionConfig.versions) {
216
- result = await (0, saveVersion_1.saveVersion)({
217
- payload,
218
- collection: collectionConfig,
219
- req,
220
- docWithLocales: {
221
- ...result,
222
- createdAt: docWithLocales.createdAt,
223
- },
224
- id,
225
- autosave,
226
- draft: shouldSaveDraft,
227
- });
228
- }
229
- // /////////////////////////////////////
230
- // afterRead - Fields
231
- // /////////////////////////////////////
232
- result = await (0, afterRead_1.afterRead)({
233
- depth,
234
- doc: result,
235
- entityConfig: collectionConfig,
236
- req,
237
- overrideAccess,
238
- showHiddenFields,
239
- });
240
- // /////////////////////////////////////
241
- // afterRead - Collection
242
- // /////////////////////////////////////
243
- await collectionConfig.hooks.afterRead.reduce(async (priorHook, hook) => {
244
- await priorHook;
245
- result = await hook({
246
- req,
247
- doc: result,
248
- }) || result;
249
- }, Promise.resolve());
250
- // /////////////////////////////////////
251
- // afterChange - Fields
252
- // /////////////////////////////////////
253
- result = await (0, afterChange_1.afterChange)({
254
- data,
255
- doc: result,
256
- previousDoc: originalDoc,
257
- entityConfig: collectionConfig,
258
- operation: 'update',
259
- req,
262
+ return null;
260
263
  });
261
- // /////////////////////////////////////
262
- // afterChange - Collection
263
- // /////////////////////////////////////
264
- await collectionConfig.hooks.afterChange.reduce(async (priorHook, hook) => {
265
- await priorHook;
266
- result = await hook({
267
- doc: result,
268
- previousDoc: originalDoc,
269
- req,
270
- operation: 'update',
271
- }) || result;
272
- }, Promise.resolve());
273
- // Remove temp files if enabled, as express-fileupload does not do this automatically
274
- if (((_a = config.upload) === null || _a === void 0 ? void 0 : _a.useTempFiles) && collectionConfig.upload) {
275
- const { files } = req;
276
- const fileArray = Array.isArray(files) ? files : [files];
277
- await (0, mapAsync_1.mapAsync)(fileArray, async ({ file }) => {
278
- // Still need this check because this will not be populated if using local API
279
- if (file.tempFilePath) {
280
- await unlinkFile(file.tempFilePath);
281
- }
282
- });
283
- }
284
- // /////////////////////////////////////
285
- // Return results
286
- // /////////////////////////////////////
287
- return result;
264
+ const awaitedDocs = await Promise.all(promises);
265
+ return {
266
+ docs: awaitedDocs.filter(Boolean),
267
+ errors,
268
+ };
288
269
  }
289
270
  exports.default = update;
290
271
  //# sourceMappingURL=update.js.map