payload 0.10.17-beta.0 → 0.12.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (73) hide show
  1. package/CHANGELOG.md +25 -25
  2. package/README.md +1 -1
  3. package/components/forms.ts +2 -0
  4. package/components/index.js +2 -2
  5. package/dist/admin/components/elements/FileDetails/Meta/index.js +2 -2
  6. package/dist/admin/components/elements/FileDetails/Meta/types.d.ts +1 -0
  7. package/dist/admin/components/elements/FileDetails/index.js +10 -5
  8. package/dist/admin/components/elements/ListControls/index.js +3 -3
  9. package/dist/admin/components/elements/SortComplex/index.js +2 -2
  10. package/dist/admin/components/forms/DraggableSection/index.js +2 -2
  11. package/dist/admin/components/forms/Form/buildStateFromSchema.js +4 -4
  12. package/dist/admin/components/forms/Form/fieldReducer.js +5 -2
  13. package/dist/admin/components/forms/RenderFields/index.js +15 -8
  14. package/dist/admin/components/forms/field-types/Group/index.js +2 -2
  15. package/dist/admin/components/forms/field-types/Relationship/index.js +58 -119
  16. package/dist/admin/components/forms/field-types/Relationship/types.d.ts +0 -4
  17. package/dist/admin/components/forms/field-types/RichText/elements/upload/Button/index.js +13 -6
  18. package/dist/admin/components/forms/field-types/Row/index.js +2 -2
  19. package/dist/admin/components/forms/field-types/UI/index.d.ts +4 -0
  20. package/dist/admin/components/forms/field-types/UI/index.js +10 -0
  21. package/dist/admin/components/forms/field-types/index.d.ts +1 -0
  22. package/dist/admin/components/forms/field-types/index.js +2 -0
  23. package/dist/admin/components/views/collections/Edit/formatFields.js +2 -2
  24. package/dist/admin/components/views/collections/List/buildColumns.js +5 -5
  25. package/dist/admin/components/views/collections/List/formatFields.js +3 -3
  26. package/dist/admin/components/views/collections/List/getInitialColumns.js +5 -5
  27. package/dist/admin/hooks/useThumbnail.js +5 -2
  28. package/dist/auth/operations/login.js +4 -4
  29. package/dist/auth/operations/resetPassword.js +2 -2
  30. package/dist/collections/config/sanitize.d.ts +2 -1
  31. package/dist/collections/config/sanitize.js +8 -14
  32. package/dist/collections/operations/create.js +2 -2
  33. package/dist/config/sanitize.js +3 -3
  34. package/dist/config/validate.js +5 -4
  35. package/dist/errors/MissingFieldType.js +2 -2
  36. package/dist/fields/accessPromise.d.ts +2 -2
  37. package/dist/fields/accessPromise.js +2 -5
  38. package/dist/fields/baseFields/getBaseUploadFields.d.ts +9 -0
  39. package/dist/fields/baseFields/getBaseUploadFields.js +128 -0
  40. package/dist/fields/config/sanitize.js +15 -12
  41. package/dist/fields/config/schema.d.ts +1 -0
  42. package/dist/fields/config/schema.js +17 -3
  43. package/dist/fields/config/types.d.ts +21 -3
  44. package/dist/fields/config/types.js +9 -5
  45. package/dist/fields/hookPromise.d.ts +2 -2
  46. package/dist/fields/traverseFields.js +13 -13
  47. package/dist/fields/validationPromise.d.ts +2 -2
  48. package/dist/graphql/schema/buildMutationInputType.js +6 -6
  49. package/dist/graphql/schema/buildObjectType.js +5 -4
  50. package/dist/graphql/schema/buildWhereInputType.js +30 -25
  51. package/dist/graphql/schema/withNullableType.d.ts +2 -2
  52. package/dist/graphql/schema/withNullableType.js +1 -1
  53. package/dist/graphql/schema/withOperators.d.ts +2 -2
  54. package/dist/graphql/schema/withOperators.js +1 -1
  55. package/dist/mongoose/buildQuery.js +14 -1
  56. package/dist/mongoose/buildSchema.js +19 -16
  57. package/dist/{fields/baseFields → uploads}/mimeTypeValidator.d.ts +1 -1
  58. package/dist/uploads/mimeTypeValidator.js +11 -0
  59. package/dist/{fields/baseFields → uploads}/mimeTypeValidator.spec.d.ts +0 -0
  60. package/dist/uploads/mimeTypeValidator.spec.js +50 -0
  61. package/dist/webpack/getBaseConfig.js +1 -2
  62. package/docs/fields/overview.mdx +32 -2
  63. package/docs/fields/rich-text.mdx +2 -2
  64. package/docs/fields/ui.mdx +54 -0
  65. package/docs/fields/upload.mdx +1 -1
  66. package/docs/upload/overview.mdx +1 -1
  67. package/package.json +1 -3
  68. package/dist/fields/baseFields/baseImageUploadFields.d.ts +0 -4
  69. package/dist/fields/baseFields/baseImageUploadFields.js +0 -81
  70. package/dist/fields/baseFields/baseUploadFields.d.ts +0 -3
  71. package/dist/fields/baseFields/baseUploadFields.js +0 -32
  72. package/dist/fields/baseFields/mimeTypeValidator.js +0 -11
  73. package/dist/fields/baseFields/mimeTypeValidator.spec.js +0 -50
@@ -1,6 +1,5 @@
1
1
  import React, { useCallback, useEffect, useState, useReducer, } from 'react';
2
2
  import { useConfig } from '@payloadcms/config-provider';
3
- import some from 'async-some';
4
3
  import withCondition from '../../withCondition';
5
4
  import ReactSelect from '../../../elements/ReactSelect';
6
5
  import useFieldType from '../../useFieldType';
@@ -23,9 +22,9 @@ const Relationship = (props) => {
23
22
  const [lastFullyLoadedRelation, setLastFullyLoadedRelation] = useState(-1);
24
23
  const [lastLoadedPage, setLastLoadedPage] = useState(1);
25
24
  const [search, setSearch] = useState('');
26
- const [errorLoading, setErrorLoading] = useState(false);
25
+ const [errorLoading, setErrorLoading] = useState('');
27
26
  const [hasLoadedFirstOptions, setHasLoadedFirstOptions] = useState(false);
28
- const debouncedSearch = useDebounce(search, 120);
27
+ const debouncedSearch = useDebounce(search, 300);
29
28
  const memoizedValidate = useCallback((value) => {
30
29
  const validationResult = validate(value, { required });
31
30
  return validationResult;
@@ -39,59 +38,41 @@ const Relationship = (props) => {
39
38
  const collection = collections.find((coll) => coll.slug === relation);
40
39
  dispatchOptions({ type: 'ADD', data, relation, hasMultipleRelations, collection });
41
40
  }, [collections, hasMultipleRelations]);
42
- const getResults = useCallback(({ relations: relationsArg, lastLoadedPage: lastLoadedPageArg }) => {
43
- if (relationsArg.length > 0) {
44
- some(relationsArg, async (relation, callback) => {
41
+ const getResults = useCallback(async ({ lastFullyLoadedRelation: lastFullyLoadedRelationArg, lastLoadedPage: lastLoadedPageArg, search: searchArg, } = {
42
+ lastFullyLoadedRelation: -1,
43
+ lastLoadedPage: 1,
44
+ search: '',
45
+ }) => {
46
+ const relations = Array.isArray(relationTo) ? relationTo : [relationTo];
47
+ const relationsToFetch = lastFullyLoadedRelationArg === -1 ? relations : relations.slice(lastFullyLoadedRelationArg);
48
+ let resultsFetched = 0;
49
+ if (!errorLoading) {
50
+ relationsToFetch.reduce(async (priorRelation, relation) => {
45
51
  var _a;
46
- const collection = collections.find((coll) => coll.slug === relation);
47
- const fieldToSearch = ((_a = collection === null || collection === void 0 ? void 0 : collection.admin) === null || _a === void 0 ? void 0 : _a.useAsTitle) || 'id';
48
- const searchParam = search ? `&where[${fieldToSearch}][like]=${search}` : '';
49
- const response = await fetch(`${serverURL}${api}/${relation}?limit=${maxResultsPerRequest}&page=${lastLoadedPageArg}&depth=0${searchParam}`);
50
- const data = await response.json();
51
- if (response.ok) {
52
- if (data.hasNextPage) {
53
- return callback(false, {
54
- data,
55
- relation,
56
- });
52
+ await priorRelation;
53
+ if (resultsFetched < 10) {
54
+ const collection = collections.find((coll) => coll.slug === relation);
55
+ const fieldToSearch = ((_a = collection === null || collection === void 0 ? void 0 : collection.admin) === null || _a === void 0 ? void 0 : _a.useAsTitle) || 'id';
56
+ const searchParam = searchArg ? `&where[${fieldToSearch}][like]=${searchArg}` : '';
57
+ const response = await fetch(`${serverURL}${api}/${relation}?limit=${maxResultsPerRequest}&page=${lastLoadedPageArg}&depth=0${searchParam}`);
58
+ if (response.ok) {
59
+ const data = await response.json();
60
+ if (data.docs.length > 0) {
61
+ resultsFetched += data.docs.length;
62
+ addOptions(data, relation);
63
+ setLastLoadedPage(data.page);
64
+ if (!data.nextPage) {
65
+ setLastFullyLoadedRelation(relations.indexOf(relation));
66
+ }
67
+ }
68
+ }
69
+ else {
70
+ setErrorLoading('An error has occurred.');
57
71
  }
58
- return callback({ relation, data });
59
- }
60
- return setErrorLoading(true);
61
- }, (lastPage, nextPage) => {
62
- if (nextPage) {
63
- const { data, relation } = nextPage;
64
- addOptions(data, relation);
65
- setLastLoadedPage((l) => l + 1);
66
- }
67
- else {
68
- const relations = Array.isArray(relationTo) ? relationTo : [relationTo];
69
- const { data, relation } = lastPage;
70
- addOptions(data, relation);
71
- setLastFullyLoadedRelation(relations.indexOf(relation));
72
- setLastLoadedPage(1);
73
72
  }
74
- });
75
- }
76
- }, [addOptions, api, collections, relationTo, search, serverURL]);
77
- const getNextOptions = useCallback((params = {}) => {
78
- const clear = params === null || params === void 0 ? void 0 : params.clear;
79
- const relations = Array.isArray(relationTo) ? relationTo : [relationTo];
80
- if (clear) {
81
- dispatchOptions({
82
- type: 'CLEAR',
83
- required,
84
- });
85
- setLastFullyLoadedRelation(-1);
73
+ }, Promise.resolve());
86
74
  }
87
- if (!errorLoading) {
88
- const relationsToSearch = lastFullyLoadedRelation === -1 ? relations : relations.slice(lastFullyLoadedRelation + 1);
89
- getResults({
90
- relations: relationsToSearch,
91
- lastLoadedPage,
92
- });
93
- }
94
- }, [errorLoading, required, lastFullyLoadedRelation, relationTo, getResults, lastLoadedPage]);
75
+ }, [addOptions, api, collections, serverURL, errorLoading, relationTo]);
95
76
  const findOptionsByValue = useCallback(() => {
96
77
  if (value) {
97
78
  if (hasMany) {
@@ -154,6 +135,28 @@ const Relationship = (props) => {
154
135
  }
155
136
  }
156
137
  }, [addOptions, api, errorLoading, serverURL]);
138
+ // ///////////////////////////
139
+ // Get first results
140
+ // ///////////////////////////
141
+ useEffect(() => {
142
+ getResults();
143
+ setHasLoadedFirstOptions(true);
144
+ }, [addOptions, api, required, relationTo, serverURL, getResults]);
145
+ // ///////////////////////////
146
+ // Get results when search input changes
147
+ // ///////////////////////////
148
+ useEffect(() => {
149
+ dispatchOptions({
150
+ type: 'CLEAR',
151
+ required,
152
+ });
153
+ setLastLoadedPage(1);
154
+ setLastFullyLoadedRelation(-1);
155
+ getResults({ search: debouncedSearch });
156
+ }, [getResults, debouncedSearch, relationTo, required]);
157
+ // ///////////////////////////
158
+ // Format options once first options have been retrieved
159
+ // ///////////////////////////
157
160
  useEffect(() => {
158
161
  if (value && hasLoadedFirstOptions) {
159
162
  if (hasMany) {
@@ -183,72 +186,6 @@ const Relationship = (props) => {
183
186
  }
184
187
  }
185
188
  }, [addOptionByID, findOptionsByValue, hasMany, hasMultipleRelations, relationTo, value, hasLoadedFirstOptions]);
186
- useEffect(() => {
187
- const getFirstResults = async () => {
188
- dispatchOptions({
189
- type: 'CLEAR',
190
- required,
191
- });
192
- setLastLoadedPage(1);
193
- setLastFullyLoadedRelation(-1);
194
- setHasLoadedFirstOptions(false);
195
- const relations = Array.isArray(relationTo) ? relationTo : [relationTo];
196
- const res = await fetch(`${serverURL}${api}/${relations[0]}?limit=${maxResultsPerRequest}&depth=0`);
197
- if (res.ok) {
198
- const data = await res.json();
199
- addOptions(data, relations[0]);
200
- if (!data.hasNextPage) {
201
- setLastFullyLoadedRelation(0);
202
- if (relations[1]) {
203
- const secondRes = await fetch(`${serverURL}${api}/${relations[1]}?limit=${maxResultsPerRequest}&depth=0`);
204
- if (res.ok) {
205
- const secondData = await secondRes.json();
206
- addOptions(secondData, relations[1]);
207
- if (!secondData.hasNextPage) {
208
- setLastFullyLoadedRelation(1);
209
- if (relations[2]) {
210
- const thirdRes = await fetch(`${serverURL}${api}/${relations[2]}?limit=${maxResultsPerRequest}&depth=0`);
211
- if (res.ok) {
212
- const thirdData = await thirdRes.json();
213
- addOptions(thirdData, relations[2]);
214
- if (!thirdData.hasNextPage) {
215
- setLastFullyLoadedRelation(2);
216
- }
217
- else {
218
- setLastLoadedPage(2);
219
- }
220
- }
221
- }
222
- }
223
- else {
224
- setLastLoadedPage(2);
225
- }
226
- }
227
- }
228
- }
229
- else {
230
- setLastLoadedPage(2);
231
- }
232
- setHasLoadedFirstOptions(true);
233
- }
234
- };
235
- getFirstResults();
236
- }, [addOptions, api, required, relationTo, serverURL]);
237
- useEffect(() => {
238
- if (debouncedSearch) {
239
- dispatchOptions({
240
- type: 'CLEAR',
241
- required,
242
- });
243
- setLastLoadedPage(1);
244
- setLastFullyLoadedRelation(-1);
245
- const relations = Array.isArray(relationTo) ? relationTo : [relationTo];
246
- getResults({
247
- relations,
248
- lastLoadedPage: 1,
249
- });
250
- }
251
- }, [getResults, debouncedSearch, relationTo, required]);
252
189
  const classes = [
253
190
  'field-type',
254
191
  baseClass,
@@ -284,7 +221,9 @@ const Relationship = (props) => {
284
221
  else {
285
222
  setValue(selected.value);
286
223
  }
287
- } : undefined, onMenuScrollToBottom: getNextOptions, value: valueToRender, showError: showError, disabled: formProcessing, options: options, isMulti: hasMany })),
224
+ } : undefined, onMenuScrollToBottom: () => {
225
+ getResults({ lastFullyLoadedRelation: lastFullyLoadedRelation + 1, lastLoadedPage });
226
+ }, value: valueToRender, showError: showError, disabled: formProcessing, options: options, isMulti: hasMany })),
288
227
  errorLoading && (React.createElement("div", { className: `${baseClass}__error-loading` }, errorLoading)),
289
228
  React.createElement(FieldDescription, { value: value, description: description })));
290
229
  };
@@ -1,9 +1,5 @@
1
1
  import { PaginatedDocs, SanitizedCollectionConfig } from '../../../../../collections/config/types';
2
2
  import { RelationshipField } from '../../../../../fields/config/types';
3
- export declare type OptionsPage = {
4
- relation: string;
5
- data: PaginatedDocs;
6
- };
7
3
  export declare type Props = Omit<RelationshipField, 'type'> & {
8
4
  path?: string;
9
5
  };
@@ -44,15 +44,17 @@ const UploadButton = ({ path }) => {
44
44
  const [renderModal, setRenderModal] = useState(false);
45
45
  const [modalCollectionOption, setModalCollectionOption] = useState(() => {
46
46
  const firstAvailableCollection = collections.find(({ admin: { enableRichTextRelationship }, upload }) => (Boolean(upload) && enableRichTextRelationship));
47
- return { label: firstAvailableCollection.labels.singular, value: firstAvailableCollection.slug };
47
+ if (firstAvailableCollection) {
48
+ return { label: firstAvailableCollection.labels.singular, value: firstAvailableCollection.slug };
49
+ }
50
+ return undefined;
48
51
  });
49
52
  const [modalCollection, setModalCollection] = useState(() => collections.find(({ admin: { enableRichTextRelationship }, upload }) => (Boolean(upload) && enableRichTextRelationship)));
50
- const [fields, setFields] = useState(() => formatFields(modalCollection));
53
+ const [fields, setFields] = useState(() => (modalCollection ? formatFields(modalCollection) : undefined));
51
54
  const [limit, setLimit] = useState();
52
55
  const [sort, setSort] = useState(null);
53
56
  const [where, setWhere] = useState(null);
54
57
  const [page, setPage] = useState(null);
55
- const [hasEnabledCollections] = useState(() => collections.find(({ upload, admin: { enableRichTextRelationship } }) => upload && enableRichTextRelationship));
56
58
  const modalSlug = `${path}-add-upload`;
57
59
  const moreThanOneAvailableCollection = availableCollections.length > 1;
58
60
  const isOpen = currentModal === modalSlug;
@@ -60,7 +62,9 @@ const UploadButton = ({ path }) => {
60
62
  const apiURL = isOpen ? `${serverURL}${api}/${modalCollection.slug}` : null;
61
63
  const [{ data }, { setParams }] = usePayloadAPI(apiURL, {});
62
64
  useEffect(() => {
63
- setFields(formatFields(modalCollection));
65
+ if (modalCollection) {
66
+ setFields(formatFields(modalCollection));
67
+ }
64
68
  }, [modalCollection]);
65
69
  useEffect(() => {
66
70
  if (renderModal) {
@@ -80,10 +84,13 @@ const UploadButton = ({ path }) => {
80
84
  setParams(params);
81
85
  }, [setParams, page, sort, where, limit]);
82
86
  useEffect(() => {
83
- setModalCollection(collections.find(({ slug }) => modalCollectionOption.value === slug));
87
+ if (modalCollectionOption) {
88
+ setModalCollection(collections.find(({ slug }) => modalCollectionOption.value === slug));
89
+ }
84
90
  }, [modalCollectionOption, collections]);
85
- if (!hasEnabledCollections)
91
+ if (!modalCollection) {
86
92
  return null;
93
+ }
87
94
  return (React.createElement(Fragment, null,
88
95
  React.createElement(ElementButton, { className: baseClass, format: "upload", onClick: () => setRenderModal(true) },
89
96
  React.createElement(UploadIcon, null)),
@@ -1,13 +1,13 @@
1
1
  import React from 'react';
2
2
  import RenderFields from '../../RenderFields';
3
3
  import withCondition from '../../withCondition';
4
- import { fieldIsNamed } from '../../../../../fields/config/types';
4
+ import { fieldAffectsData } from '../../../../../fields/config/types';
5
5
  import './index.scss';
6
6
  const Row = (props) => {
7
7
  const { fields, fieldTypes, path, permissions, admin: { readOnly, }, } = props;
8
8
  return (React.createElement(RenderFields, { readOnly: readOnly, className: "field-type row", permissions: permissions === null || permissions === void 0 ? void 0 : permissions.fields, fieldTypes: fieldTypes, fieldSchema: fields.map((field) => ({
9
9
  ...field,
10
- path: `${path ? `${path}.` : ''}${fieldIsNamed(field) ? field.name : ''}`,
10
+ path: `${path ? `${path}.` : ''}${fieldAffectsData(field) ? field.name : ''}`,
11
11
  })) }));
12
12
  };
13
13
  export default withCondition(Row);
@@ -0,0 +1,4 @@
1
+ import React from 'react';
2
+ import { UIField } from '../../../../../fields/config/types';
3
+ declare const _default: React.FC<UIField>;
4
+ export default _default;
@@ -0,0 +1,10 @@
1
+ import React from 'react';
2
+ import withCondition from '../../withCondition';
3
+ const UI = (props) => {
4
+ const { admin: { components: { Field, }, }, } = props;
5
+ if (Field) {
6
+ return React.createElement(Field, { ...props });
7
+ }
8
+ return null;
9
+ };
10
+ export default withCondition(UI);
@@ -20,6 +20,7 @@ export declare type FieldTypes = {
20
20
  array: React.ComponentType;
21
21
  row: React.ComponentType;
22
22
  upload: React.ComponentType;
23
+ ui: React.ComponentType;
23
24
  };
24
25
  declare const fieldTypes: FieldTypes;
25
26
  export default fieldTypes;
@@ -18,6 +18,7 @@ import group from './Group';
18
18
  import array from './Array';
19
19
  import row from './Row';
20
20
  import upload from './Upload';
21
+ import ui from './UI';
21
22
  const fieldTypes = {
22
23
  code,
23
24
  email,
@@ -39,5 +40,6 @@ const fieldTypes = {
39
40
  array,
40
41
  row,
41
42
  upload,
43
+ ui,
42
44
  };
43
45
  export default fieldTypes;
@@ -1,5 +1,5 @@
1
- import { fieldIsNamed } from '../../../../../fields/config/types';
1
+ import { fieldAffectsData } from '../../../../../fields/config/types';
2
2
  const formatFields = (collection, isEditing) => (isEditing
3
- ? collection.fields.filter((field) => fieldIsNamed(field) && field.name !== 'id')
3
+ ? collection.fields.filter((field) => (fieldAffectsData(field) && field.name !== 'id') || true)
4
4
  : collection.fields);
5
5
  export default formatFields;
@@ -1,7 +1,7 @@
1
1
  import React from 'react';
2
2
  import Cell from './Cell';
3
3
  import SortColumn from '../../../elements/SortColumn';
4
- import { fieldHasSubFields, fieldIsNamed } from '../../../../../fields/config/types';
4
+ import { fieldHasSubFields, fieldAffectsData, fieldIsPresentationalOnly } from '../../../../../fields/config/types';
5
5
  const buildColumns = (collection, columns) => (columns || []).reduce((cols, col, colIndex) => {
6
6
  let field = null;
7
7
  const fields = [
@@ -23,12 +23,12 @@ const buildColumns = (collection, columns) => (columns || []).reduce((cols, col,
23
23
  },
24
24
  ];
25
25
  fields.forEach((fieldToCheck) => {
26
- if (fieldIsNamed(fieldToCheck) && fieldToCheck.name === col) {
26
+ if ((fieldAffectsData(fieldToCheck) || fieldIsPresentationalOnly(fieldToCheck)) && fieldToCheck.name === col) {
27
27
  field = fieldToCheck;
28
28
  }
29
- if (!fieldIsNamed(fieldToCheck) && fieldHasSubFields(fieldToCheck)) {
29
+ if (!fieldAffectsData(fieldToCheck) && fieldHasSubFields(fieldToCheck)) {
30
30
  fieldToCheck.fields.forEach((subField) => {
31
- if (fieldIsNamed(subField) && subField.name === col) {
31
+ if (fieldAffectsData(subField) && subField.name === col) {
32
32
  field = subField;
33
33
  }
34
34
  });
@@ -41,7 +41,7 @@ const buildColumns = (collection, columns) => (columns || []).reduce((cols, col,
41
41
  {
42
42
  accessor: field.name,
43
43
  components: {
44
- Heading: (React.createElement(SortColumn, { label: field.label || field.name, name: field.name, disable: field.disableSort || undefined })),
44
+ Heading: (React.createElement(SortColumn, { label: field.label || field.name, name: field.name, disable: (field.disableSort || fieldIsPresentationalOnly(field)) || undefined })),
45
45
  renderCell: (rowData, cellData) => (React.createElement(Cell, { field: field, colIndex: colIndex, collection: collection, rowData: rowData, cellData: cellData })),
46
46
  },
47
47
  },
@@ -1,9 +1,9 @@
1
- import { fieldIsNamed } from '../../../../../fields/config/types';
1
+ import { fieldAffectsData, fieldIsPresentationalOnly } from '../../../../../fields/config/types';
2
2
  const formatFields = (config) => {
3
- const hasID = config.fields.findIndex((field) => fieldIsNamed(field) && field.name === 'id') > -1;
3
+ const hasID = config.fields.findIndex((field) => fieldAffectsData(field) && field.name === 'id') > -1;
4
4
  let fields = config.fields.reduce((formatted, field) => {
5
5
  var _a;
6
- if (field.hidden === true || ((_a = field === null || field === void 0 ? void 0 : field.admin) === null || _a === void 0 ? void 0 : _a.disabled) === true) {
6
+ if (!fieldIsPresentationalOnly(field) && (field.hidden === true || ((_a = field === null || field === void 0 ? void 0 : field.admin) === null || _a === void 0 ? void 0 : _a.disabled) === true)) {
7
7
  return formatted;
8
8
  }
9
9
  return [
@@ -1,4 +1,4 @@
1
- import { fieldHasSubFields, fieldIsNamed } from '../../../../../fields/config/types';
1
+ import { fieldHasSubFields, fieldAffectsData } from '../../../../../fields/config/types';
2
2
  const getInitialColumnState = (fields, useAsTitle, defaultColumns) => {
3
3
  let initialColumns = [];
4
4
  if (Array.isArray(defaultColumns) && defaultColumns.length >= 1) {
@@ -8,17 +8,17 @@ const getInitialColumnState = (fields, useAsTitle, defaultColumns) => {
8
8
  initialColumns.push(useAsTitle);
9
9
  }
10
10
  const remainingColumns = fields.reduce((remaining, field) => {
11
- if (fieldIsNamed(field) && field.name === useAsTitle) {
11
+ if (fieldAffectsData(field) && field.name === useAsTitle) {
12
12
  return remaining;
13
13
  }
14
- if (!fieldIsNamed(field) && fieldHasSubFields(field)) {
14
+ if (!fieldAffectsData(field) && fieldHasSubFields(field)) {
15
15
  return [
16
16
  ...remaining,
17
17
  ...field.fields.reduce((subFields, subField) => {
18
- if (fieldIsNamed(subField)) {
18
+ if (fieldAffectsData(subField)) {
19
19
  return [
20
20
  ...subFields,
21
- subField.name
21
+ subField.name,
22
22
  ];
23
23
  }
24
24
  return subFields;
@@ -2,7 +2,7 @@ import { useConfig } from '@payloadcms/config-provider';
2
2
  import isImage from '../../uploads/isImage';
3
3
  const absoluteURLPattern = new RegExp('^(?:[a-z]+:)?//', 'i');
4
4
  const useThumbnail = (collection, doc) => {
5
- var _a;
5
+ var _a, _b;
6
6
  const { upload: { staticURL, adminThumbnail, }, } = collection;
7
7
  const { mimeType, sizes, filename, } = doc;
8
8
  const { serverURL } = useConfig();
@@ -14,7 +14,10 @@ const useThumbnail = (collection, doc) => {
14
14
  }
15
15
  return `${serverURL}${thumbnailURL}`;
16
16
  }
17
- if ((_a = sizes === null || sizes === void 0 ? void 0 : sizes[adminThumbnail]) === null || _a === void 0 ? void 0 : _a.filename) {
17
+ if ((_a = sizes === null || sizes === void 0 ? void 0 : sizes[adminThumbnail]) === null || _a === void 0 ? void 0 : _a.url) {
18
+ return sizes[adminThumbnail].url;
19
+ }
20
+ if ((_b = sizes === null || sizes === void 0 ? void 0 : sizes[adminThumbnail]) === null || _b === void 0 ? void 0 : _b.filename) {
18
21
  return `${serverURL}${staticURL}/${sizes[adminThumbnail].filename}`;
19
22
  }
20
23
  return `${serverURL}${staticURL}/${filename}`;
@@ -62,14 +62,14 @@ async function login(incomingArgs) {
62
62
  const result = {
63
63
  ...signedFields,
64
64
  };
65
- if (!(0, types_1.fieldIsNamed)(field) && (0, types_1.fieldHasSubFields)(field)) {
65
+ if (!(0, types_1.fieldAffectsData)(field) && (0, types_1.fieldHasSubFields)(field)) {
66
66
  field.fields.forEach((subField) => {
67
- if (subField.saveToJWT && (0, types_1.fieldIsNamed)(subField)) {
67
+ if ((0, types_1.fieldAffectsData)(subField) && subField.saveToJWT) {
68
68
  result[subField.name] = user[subField.name];
69
69
  }
70
70
  });
71
71
  }
72
- if (field.saveToJWT && (0, types_1.fieldIsNamed)(field)) {
72
+ if ((0, types_1.fieldAffectsData)(field) && field.saveToJWT) {
73
73
  result[field.name] = user[field.name];
74
74
  }
75
75
  return result;
@@ -140,4 +140,4 @@ async function login(incomingArgs) {
140
140
  };
141
141
  }
142
142
  exports.default = login;
143
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9naW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXV0aC9vcGVyYXRpb25zL2xvZ2luLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsZ0VBQStCO0FBRS9CLHlDQUErRDtBQUUvRCw4RkFBc0U7QUFDdEUsMkRBQW1DO0FBQ25DLG9HQUE0RTtBQUM1RSxxREFBbUY7QUF1Qm5GLEtBQUssVUFBVSxLQUFLLENBQUMsWUFBdUI7SUFDMUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDO0lBRTVDLElBQUksSUFBSSxHQUFHLFlBQVksQ0FBQztJQUV4Qix3Q0FBd0M7SUFDeEMsK0JBQStCO0lBQy9CLHdDQUF3QztJQUV4QyxNQUFNLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLEVBQUU7UUFDbEYsTUFBTSxTQUFTLENBQUM7UUFFaEIsSUFBSSxHQUFHLENBQUMsTUFBTSxJQUFJLENBQUM7WUFDakIsSUFBSTtZQUNKLFNBQVMsRUFBRSxPQUFPO1NBQ25CLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQztJQUNkLENBQUMsRUFBRSxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztJQUV0QixNQUFNLEVBQ0osVUFBVSxFQUFFLEVBQ1YsS0FBSyxFQUNMLE1BQU0sRUFBRSxnQkFBZ0IsR0FDekIsRUFDRCxJQUFJLEVBQ0osR0FBRyxFQUNILEtBQUssRUFDTCxjQUFjLEVBQ2QsZ0JBQWdCLEdBQ2pCLEdBQUcsSUFBSSxDQUFDO0lBRVQsd0NBQXdDO0lBQ3hDLFFBQVE7SUFDUix3Q0FBd0M7SUFFeEMsTUFBTSxFQUFFLEtBQUssRUFBRSxnQkFBZ0IsRUFBRSxRQUFRLEVBQUUsR0FBRyxJQUFJLENBQUM7SUFFbkQsTUFBTSxLQUFLLEdBQUcsZ0JBQWdC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
143
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9naW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXV0aC9vcGVyYXRpb25zL2xvZ2luLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsZ0VBQStCO0FBRS9CLHlDQUErRDtBQUUvRCw4RkFBc0U7QUFDdEUsMkRBQW1DO0FBQ25DLG9HQUE0RTtBQUM1RSxxREFBdUY7QUF1QnZGLEtBQUssVUFBVSxLQUFLLENBQUMsWUFBdUI7SUFDMUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDO0lBRTVDLElBQUksSUFBSSxHQUFHLFlBQVksQ0FBQztJQUV4Qix3Q0FBd0M7SUFDeEMsK0JBQStCO0lBQy9CLHdDQUF3QztJQUV4QyxNQUFNLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLEVBQUU7UUFDbEYsTUFBTSxTQUFTLENBQUM7UUFFaEIsSUFBSSxHQUFHLENBQUMsTUFBTSxJQUFJLENBQUM7WUFDakIsSUFBSTtZQUNKLFNBQVMsRUFBRSxPQUFPO1NBQ25CLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQztJQUNkLENBQUMsRUFBRSxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztJQUV0QixNQUFNLEVBQ0osVUFBVSxFQUFFLEVBQ1YsS0FBSyxFQUNMLE1BQU0sRUFBRSxnQkFBZ0IsR0FDekIsRUFDRCxJQUFJLEVBQ0osR0FBRyxFQUNILEtBQUssRUFDTCxjQUFjLEVBQ2QsZ0JBQWdCLEdBQ2pCLEdBQUcsSUFBSSxDQUFDO0lBRVQsd0NBQXdDO0lBQ3hDLFFBQVE7SUFDUix3Q0FBd0M7SUFFeEMsTUFBTSxFQUFFLEtBQUssRUFBRSxnQkFBZ0IsRUFBRSxRQUFRLEVBQUUsR0FBRyxJQUFJLENBQUM7SUFFbkQsTUFBTSxLQUFLLEdBQUcsZ0JBQWdC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
@@ -25,7 +25,7 @@ async function resetPassword(args) {
25
25
  await user.save();
26
26
  await user.authenticate(data.password);
27
27
  const fieldsToSign = collectionConfig.fields.reduce((signedFields, field) => {
28
- if (field.saveToJWT && (0, types_1.fieldIsNamed)(field)) {
28
+ if ((0, types_1.fieldAffectsData)(field) && field.saveToJWT) {
29
29
  return {
30
30
  ...signedFields,
31
31
  [field.name]: user[field.name],
@@ -57,4 +57,4 @@ async function resetPassword(args) {
57
57
  return { token, user: fullUser };
58
58
  }
59
59
  exports.default = resetPassword;
60
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzZXRQYXNzd29yZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hdXRoL29wZXJhdGlvbnMvcmVzZXRQYXNzd29yZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLGdFQUErQjtBQUcvQix5Q0FBd0M7QUFDeEMsOEZBQXNFO0FBRXRFLHFEQUF5RDtBQWdCekQsS0FBSyxVQUFVLGFBQWEsQ0FBQyxJQUFlO0lBQzFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDO0lBRWhDLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxPQUFPLENBQUM7V0FDeEQsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxVQUFVLENBQUMsRUFBRTtRQUNqRSxNQUFNLElBQUksaUJBQVEsQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO0tBQzlDO0lBRUQsTUFBTSxFQUNKLFVBQVUsRUFBRSxFQUNWLEtBQUssRUFDTCxNQUFNLEVBQUUsZ0JBQWdCLEdBQ3pCLEVBQ0QsSUFBSSxHQUNMLEdBQUcsSUFBSSxDQUFDO0lBRVQsTUFBTSxJQUFJLEdBQUcsTUFBTSxLQUFLLENBQUMsT0FBTyxDQUFDO1FBQy9CLGtCQUFrQixFQUFFLElBQUksQ0FBQyxLQUFLO1FBQzlCLHVCQUF1QixFQUFFLEVBQUUsR0FBRyxFQUFFLElBQUksQ0FBQyxHQUFHLEVBQUUsRUFBRTtLQUM3QyxDQUFpQixDQUFDO0lBRW5CLElBQUksQ0FBQyxJQUFJO1FBQUUsTUFBTSxJQUFJLGlCQUFRLENBQUMseUNBQXlDLENBQUMsQ0FBQztJQUV6RSxNQUFNLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBRXRDLElBQUksQ0FBQyx1QkFBdUIsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7SUFFMUMsTUFBTSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7SUFFbEIsTUFBTSxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUV2QyxNQUFNLFlBQVksR0FBRyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsWUFBWSxFQUFFLEtBQUssRUFBRSxFQUFFO1FBQzFFLElBQUksS0FBSyxDQUFDLFNBQVMsSUFBSSxJQUFBLG9CQUFZLEVBQUMsS0FBSyxDQUFDLEVBQUU7WUFDMUMsT0FBTztnQkFDTCxHQUFHLFlBQVk7Z0JBQ2YsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUM7YUFDL0IsQ0FBQztTQUNIO1FBQ0QsT0FBTyxZQUFZLENBQUM7SUFDdEIsQ0FBQyxFQUFFO1FBQ0QsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLO1FBQ2pCLEVBQUUsRUFBRSxJQUFJLENBQUMsRUFBRTtRQUNYLFVBQVUsRUFBRSxnQkFBZ0IsQ0FBQyxJQUFJO0tBQ2xDLENBQUMsQ0FBQztJQUVILE1BQU0sS0FBSyxHQUFHLHNCQUFHLENBQUMsSUFBSSxDQUNwQixZQUFZLEVBQ1osTUFBTSxFQUNOO1FBQ0UsU0FBUyxFQUFFLGdCQUFnQixDQUFDLElBQUksQ0FBQyxlQUFlO0tBQ2pELENBQ0YsQ0FBQztJQUVGLElBQUksSUFBSSxDQUFDLEdBQUcsRUFBRTtRQUNaLE1BQU0sYUFBYSxHQUFHO1lBQ3BCLElBQUksRUFBRSxHQUFHO1lBQ1QsUUFBUSxFQUFFLElBQUk7WUFDZCxPQUFPLEVBQUUsSUFBQSw2QkFBbUIsRUFBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDO1lBQ25FLE1BQU0sRUFBRSxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU07WUFDNUMsUUFBUSxFQUFFLGdCQUFnQixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUTtZQUNoRCxNQUFNLEVBQUUsU0FBUztTQUNsQixDQUFDO1FBR0YsSUFBSSxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU07WUFBRSxhQUFhLENBQUMsTUFBTSxHQUFHLGdCQUFnQixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDO1FBRXRHLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLFlBQVksUUFBUSxFQUFFLEtBQUssRUFBRSxhQUFhLENBQUMsQ0FBQztLQUN2RTtJQUVELE1BQU0sUUFBUSxHQUFHLE1BQU0sSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLFVBQVUsRUFBRSxnQkFBZ0IsQ0FBQyxJQUFJLEVBQUUsRUFBRSxFQUFFLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ3pGLE9BQU8sRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxDQUFDO0FBQ25DLENBQUM7QUFFRCxrQkFBZSxhQUFhLENBQUMifQ==
60
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzZXRQYXNzd29yZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hdXRoL29wZXJhdGlvbnMvcmVzZXRQYXNzd29yZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLGdFQUErQjtBQUcvQix5Q0FBd0M7QUFDeEMsOEZBQXNFO0FBRXRFLHFEQUE2RDtBQWdCN0QsS0FBSyxVQUFVLGFBQWEsQ0FBQyxJQUFlO0lBQzFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDO0lBRWhDLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxPQUFPLENBQUM7V0FDeEQsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxVQUFVLENBQUMsRUFBRTtRQUNqRSxNQUFNLElBQUksaUJBQVEsQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO0tBQzlDO0lBRUQsTUFBTSxFQUNKLFVBQVUsRUFBRSxFQUNWLEtBQUssRUFDTCxNQUFNLEVBQUUsZ0JBQWdCLEdBQ3pCLEVBQ0QsSUFBSSxHQUNMLEdBQUcsSUFBSSxDQUFDO0lBRVQsTUFBTSxJQUFJLEdBQUcsTUFBTSxLQUFLLENBQUMsT0FBTyxDQUFDO1FBQy9CLGtCQUFrQixFQUFFLElBQUksQ0FBQyxLQUFLO1FBQzlCLHVCQUF1QixFQUFFLEVBQUUsR0FBRyxFQUFFLElBQUksQ0FBQyxHQUFHLEVBQUUsRUFBRTtLQUM3QyxDQUFpQixDQUFDO0lBRW5CLElBQUksQ0FBQyxJQUFJO1FBQUUsTUFBTSxJQUFJLGlCQUFRLENBQUMseUNBQXlDLENBQUMsQ0FBQztJQUV6RSxNQUFNLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBRXRDLElBQUksQ0FBQyx1QkFBdUIsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7SUFFMUMsTUFBTSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7SUFFbEIsTUFBTSxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUV2QyxNQUFNLFlBQVksR0FBRyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsWUFBWSxFQUFFLEtBQUssRUFBRSxFQUFFO1FBQzFFLElBQUksSUFBQSx3QkFBZ0IsRUFBQyxLQUFLLENBQUMsSUFBSSxLQUFLLENBQUMsU0FBUyxFQUFFO1lBQzlDLE9BQU87Z0JBQ0wsR0FBRyxZQUFZO2dCQUNmLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDO2FBQy9CLENBQUM7U0FDSDtRQUNELE9BQU8sWUFBWSxDQUFDO0lBQ3RCLENBQUMsRUFBRTtRQUNELEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSztRQUNqQixFQUFFLEVBQUUsSUFBSSxDQUFDLEVBQUU7UUFDWCxVQUFVLEVBQUUsZ0JBQWdCLENBQUMsSUFBSTtLQUNsQyxDQUFDLENBQUM7SUFFSCxNQUFNLEtBQUssR0FBRyxzQkFBRyxDQUFDLElBQUksQ0FDcEIsWUFBWSxFQUNaLE1BQU0sRUFDTjtRQUNFLFNBQVMsRUFBRSxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsZUFBZTtLQUNqRCxDQUNGLENBQUM7SUFFRixJQUFJLElBQUksQ0FBQyxHQUFHLEVBQUU7UUFDWixNQUFNLGFBQWEsR0FBRztZQUNwQixJQUFJLEVBQUUsR0FBRztZQUNULFFBQVEsRUFBRSxJQUFJO1lBQ2QsT0FBTyxFQUFFLElBQUEsNkJBQW1CLEVBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQztZQUNuRSxNQUFNLEVBQUUsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNO1lBQzVDLFFBQVEsRUFBRSxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVE7WUFDaEQsTUFBTSxFQUFFLFNBQVM7U0FDbEIsQ0FBQztRQUdGLElBQUksZ0JBQWdCLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNO1lBQUUsYUFBYSxDQUFDLE1BQU0sR0FBRyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQztRQUV0RyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLE1BQU0sQ0FBQyxZQUFZLFFBQVEsRUFBRSxLQUFLLEVBQUUsYUFBYSxDQUFDLENBQUM7S0FDdkU7SUFFRCxNQUFNLFFBQVEsR0FBRyxNQUFNLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxVQUFVLEVBQUUsZ0JBQWdCLENBQUMsSUFBSSxFQUFFLEVBQUUsRUFBRSxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUN6RixPQUFPLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsQ0FBQztBQUNuQyxDQUFDO0FBRUQsa0JBQWUsYUFBYSxDQUFDIn0=
@@ -1,3 +1,4 @@
1
1
  import { SanitizedCollectionConfig, CollectionConfig } from './types';
2
- declare const sanitizeCollection: (collections: CollectionConfig[], collection: CollectionConfig) => SanitizedCollectionConfig;
2
+ import { Config } from '../../config/types';
3
+ declare const sanitizeCollection: (config: Config, collection: CollectionConfig) => SanitizedCollectionConfig;
3
4
  export default sanitizeCollection;
@@ -4,18 +4,15 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  const deepmerge_1 = __importDefault(require("deepmerge"));
7
- const types_1 = require("../../fields/config/types");
8
7
  const sanitize_1 = __importDefault(require("../../fields/config/sanitize"));
9
8
  const toKebabCase_1 = __importDefault(require("../../utilities/toKebabCase"));
10
9
  const baseAuthFields_1 = __importDefault(require("../../fields/baseFields/baseAuthFields"));
11
10
  const baseAPIKeyFields_1 = __importDefault(require("../../fields/baseFields/baseAPIKeyFields"));
12
11
  const baseVerificationFields_1 = __importDefault(require("../../fields/baseFields/baseVerificationFields"));
13
12
  const baseAccountLockFields_1 = __importDefault(require("../../fields/baseFields/baseAccountLockFields"));
14
- const baseUploadFields_1 = __importDefault(require("../../fields/baseFields/baseUploadFields"));
15
- const baseImageUploadFields_1 = __importDefault(require("../../fields/baseFields/baseImageUploadFields"));
13
+ const getBaseUploadFields_1 = __importDefault(require("../../fields/baseFields/getBaseUploadFields"));
16
14
  const formatLabels_1 = require("../../utilities/formatLabels");
17
15
  const defaults_1 = require("./defaults");
18
- const mimeTypeValidator_1 = require("../../fields/baseFields/mimeTypeValidator");
19
16
  const mergeBaseFields = (fields, baseFields) => {
20
17
  const mergedFields = [];
21
18
  if (fields) {
@@ -48,7 +45,7 @@ const mergeBaseFields = (fields, baseFields) => {
48
45
  }
49
46
  return baseFields;
50
47
  };
51
- const sanitizeCollection = (collections, collection) => {
48
+ const sanitizeCollection = (config, collection) => {
52
49
  // /////////////////////////////////
53
50
  // Make copy of collection config
54
51
  // /////////////////////////////////
@@ -61,13 +58,10 @@ const sanitizeCollection = (collections, collection) => {
61
58
  sanitized.upload.staticDir = sanitized.upload.staticDir || sanitized.slug;
62
59
  sanitized.upload.staticURL = sanitized.upload.staticURL || `/${sanitized.slug}`;
63
60
  sanitized.admin.useAsTitle = (sanitized.admin.useAsTitle && sanitized.admin.useAsTitle !== 'id') ? sanitized.admin.useAsTitle : 'filename';
64
- let uploadFields = baseUploadFields_1.default;
65
- if (sanitized.upload.mimeTypes) {
66
- uploadFields.find((field) => (0, types_1.fieldIsNamed)(field) && field.name === 'mimeType').validate = (0, mimeTypeValidator_1.mimeTypeValidator)(sanitized.upload.mimeTypes);
67
- }
68
- if (sanitized.upload.imageSizes && Array.isArray(sanitized.upload.imageSizes)) {
69
- uploadFields = uploadFields.concat((0, baseImageUploadFields_1.default)(sanitized.upload.imageSizes));
70
- }
61
+ let uploadFields = (0, getBaseUploadFields_1.default)({
62
+ config,
63
+ collection: sanitized,
64
+ });
71
65
  uploadFields = mergeBaseFields(sanitized.fields, uploadFields);
72
66
  sanitized.fields = [
73
67
  ...uploadFields,
@@ -97,9 +91,9 @@ const sanitizeCollection = (collections, collection) => {
97
91
  // /////////////////////////////////
98
92
  // Sanitize fields
99
93
  // /////////////////////////////////
100
- const validRelationships = collections.map((c) => c.slug);
94
+ const validRelationships = config.collections.map((c) => c.slug);
101
95
  sanitized.fields = (0, sanitize_1.default)(sanitized.fields, validRelationships);
102
96
  return sanitized;
103
97
  };
104
98
  exports.default = sanitizeCollection;
105
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2FuaXRpemUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29sbGVjdGlvbnMvY29uZmlnL3Nhbml0aXplLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsMERBQThCO0FBQzlCLHFEQUF5RDtBQUV6RCw0RUFBMEQ7QUFDMUQsOEVBQXNEO0FBQ3RELDRGQUFvRTtBQUNwRSxnR0FBd0U7QUFDeEUsNEdBQW9GO0FBQ3BGLDBHQUFrRjtBQUNsRixnR0FBd0U7QUFDeEUsMEdBQWtGO0FBQ2xGLCtEQUE0RDtBQUM1RCx5Q0FBb0Q7QUFDcEQsaUZBQThFO0FBRTlFLE1BQU0sZUFBZSxHQUFHLENBQUMsTUFBTSxFQUFFLFVBQVUsRUFBRSxFQUFFO0lBQzdDLE1BQU0sWUFBWSxHQUFHLEVBQUUsQ0FBQztJQUV4QixJQUFJLE1BQU0sRUFBRTtRQUNWLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLEVBQUUsRUFBRTtZQUMvQixJQUFJLFlBQVksR0FBRyxJQUFJLENBQUM7WUFFeEIsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLEVBQUUsRUFBRTtnQkFDckMsSUFBSSxLQUFLLENBQUMsSUFBSSxLQUFLLFNBQVMsQ0FBQyxJQUFJLEVBQUU7b0JBQ2pDLFlBQVksR0FBRyxDQUFDLENBQUM7b0JBQ2pCLE9BQU8sSUFBSSxDQUFDO2lCQUNiO2dCQUVELE9BQU8sS0FBSyxDQUFDO1lBQ2YsQ0FBQyxDQUFDLENBQUM7WUFFSCxJQUFJLEtBQUssRUFBRTtnQkFDVCxNQUFNLFNBQVMsR0FBRyxFQUFFLEdBQUcsS0FBSyxFQUFFLENBQUM7Z0JBQy9CLE1BQU0sQ0FBQyxNQUFNLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQyxDQUFDO2dCQUUvQixJQUFJLFdBQVcsR0FBRztvQkFDaEIsR0FBRyxTQUFTO29CQUNaLEdBQUcsU0FBUztpQkFDYixDQUFDO2dCQUVGLElBQUksU0FB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
99
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2FuaXRpemUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29sbGVjdGlvbnMvY29uZmlnL3Nhbml0aXplLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsMERBQThCO0FBRzlCLDRFQUEwRDtBQUMxRCw4RUFBc0Q7QUFDdEQsNEZBQW9FO0FBQ3BFLGdHQUF3RTtBQUN4RSw0R0FBb0Y7QUFDcEYsMEdBQWtGO0FBQ2xGLHNHQUE4RTtBQUM5RSwrREFBNEQ7QUFDNUQseUNBQW9EO0FBR3BELE1BQU0sZUFBZSxHQUFHLENBQUMsTUFBTSxFQUFFLFVBQVUsRUFBRSxFQUFFO0lBQzdDLE1BQU0sWUFBWSxHQUFHLEVBQUUsQ0FBQztJQUV4QixJQUFJLE1BQU0sRUFBRTtRQUNWLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLEVBQUUsRUFBRTtZQUMvQixJQUFJLFlBQVksR0FBRyxJQUFJLENBQUM7WUFFeEIsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLEVBQUUsRUFBRTtnQkFDckMsSUFBSSxLQUFLLENBQUMsSUFBSSxLQUFLLFNBQVMsQ0FBQyxJQUFJLEVBQUU7b0JBQ2pDLFlBQVksR0FBRyxDQUFDLENBQUM7b0JBQ2pCLE9BQU8sSUFBSSxDQUFDO2lCQUNiO2dCQUVELE9BQU8sS0FBSyxDQUFDO1lBQ2YsQ0FBQyxDQUFDLENBQUM7WUFFSCxJQUFJLEtBQUssRUFBRTtnQkFDVCxNQUFNLFNBQVMsR0FBRyxFQUFFLEdBQUcsS0FBSyxFQUFFLENBQUM7Z0JBQy9CLE1BQU0sQ0FBQyxNQUFNLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQyxDQUFDO2dCQUUvQixJQUFJLFdBQVcsR0FBRztvQkFDaEIsR0FBRyxTQUFTO29CQUNaLEdBQUcsU0FBUztpQkFDYixDQUFDO2dCQUVGLElBQUksU0FBUyxDQUFDLE1BQU0sSUFBSSxTQUFTLENBQUMsTUFBTSxFQUFFO29C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