payload 0.12.13-beta.0 → 0.13.3

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 (85) hide show
  1. package/CHANGELOG.md +29 -33
  2. package/components/forms.ts +2 -1
  3. package/components/index.js +1 -1
  4. package/dist/admin/components/elements/SearchFilter/index.js +6 -3
  5. package/dist/admin/components/elements/WhereBuilder/Condition/Relationship/types.d.ts +1 -1
  6. package/dist/admin/components/forms/DraggableSection/SectionTitle/index.js +2 -2
  7. package/dist/admin/components/forms/field-types/Array/Array.js +2 -2
  8. package/dist/admin/components/forms/field-types/Blocks/Blocks.js +2 -2
  9. package/dist/admin/components/forms/field-types/Checkbox/index.js +2 -2
  10. package/dist/admin/components/forms/field-types/Code/Code.js +2 -2
  11. package/dist/admin/components/forms/field-types/ConfirmPassword/index.js +2 -2
  12. package/dist/admin/components/forms/field-types/DateTime/index.js +2 -2
  13. package/dist/admin/components/forms/field-types/Email/index.js +2 -2
  14. package/dist/admin/components/forms/field-types/HiddenInput/index.js +2 -2
  15. package/dist/admin/components/forms/field-types/Number/index.js +2 -2
  16. package/dist/admin/components/forms/field-types/Password/index.js +2 -2
  17. package/dist/admin/components/forms/field-types/Point/index.js +2 -2
  18. package/dist/admin/components/forms/field-types/RadioGroup/index.js +2 -2
  19. package/dist/admin/components/forms/field-types/Relationship/index.js +2 -2
  20. package/dist/admin/components/forms/field-types/Relationship/types.d.ts +1 -1
  21. package/dist/admin/components/forms/field-types/RichText/RichText.js +2 -2
  22. package/dist/admin/components/forms/field-types/Select/index.js +32 -16
  23. package/dist/admin/components/forms/field-types/Text/index.js +19 -6
  24. package/dist/admin/components/forms/field-types/Textarea/index.js +2 -2
  25. package/dist/admin/components/forms/field-types/Upload/index.js +21 -8
  26. package/dist/admin/components/forms/useField/index.d.ts +3 -0
  27. package/dist/admin/components/forms/{useFieldType → useField}/index.js +30 -9
  28. package/dist/admin/components/forms/{useFieldType → useField}/types.d.ts +0 -0
  29. package/dist/admin/components/forms/{useFieldType → useField}/types.js +0 -0
  30. package/dist/admin/components/views/collections/Edit/Auth/APIKey.js +2 -2
  31. package/dist/admin/components/views/collections/Edit/Upload/index.js +2 -2
  32. package/dist/admin/components/views/collections/List/types.d.ts +1 -1
  33. package/dist/bin/generateTypes.js +5 -1
  34. package/dist/collections/config/types.d.ts +102 -39
  35. package/dist/collections/operations/create.d.ts +1 -0
  36. package/dist/collections/operations/create.js +12 -4
  37. package/dist/collections/operations/delete.js +6 -5
  38. package/dist/collections/operations/find.d.ts +2 -2
  39. package/dist/collections/operations/find.js +13 -11
  40. package/dist/collections/operations/findByID.d.ts +2 -3
  41. package/dist/collections/operations/findByID.js +1 -1
  42. package/dist/collections/operations/local/create.d.ts +1 -0
  43. package/dist/collections/operations/local/create.js +3 -2
  44. package/dist/collections/operations/local/delete.d.ts +2 -1
  45. package/dist/collections/operations/local/delete.js +1 -1
  46. package/dist/collections/operations/local/find.d.ts +2 -2
  47. package/dist/collections/operations/local/find.js +1 -1
  48. package/dist/collections/operations/local/findByID.d.ts +2 -1
  49. package/dist/collections/operations/local/findByID.js +1 -1
  50. package/dist/collections/operations/local/update.d.ts +2 -1
  51. package/dist/collections/operations/local/update.js +1 -1
  52. package/dist/collections/operations/update.js +11 -3
  53. package/dist/collections/requestHandlers/find.d.ts +2 -2
  54. package/dist/collections/requestHandlers/find.js +1 -1
  55. package/dist/config/types.d.ts +3 -0
  56. package/dist/fields/baseFields/getBaseUploadFields.js +2 -1
  57. package/dist/fields/config/types.d.ts +20 -15
  58. package/dist/fields/config/types.js +1 -1
  59. package/dist/fields/validations.d.ts +17 -17
  60. package/dist/graphql/errorHandler.d.ts +1 -1
  61. package/dist/index.d.ts +8 -9
  62. package/dist/index.js +1 -1
  63. package/dist/mongoose/buildQuery.js +6 -2
  64. package/dist/uploads/docWithFilenameExists.d.ts +3 -0
  65. package/dist/uploads/docWithFilenameExists.js +10 -0
  66. package/dist/uploads/fileExists.d.ts +2 -2
  67. package/dist/uploads/fileExists.js +4 -3
  68. package/dist/uploads/getSafeFilename.d.ts +2 -1
  69. package/dist/uploads/getSafeFilename.js +4 -3
  70. package/dist/uploads/imageResizer.d.ts +11 -1
  71. package/dist/uploads/imageResizer.js +2 -2
  72. package/dist/utilities/sanitizeInternalFields.d.ts +2 -1
  73. package/dist/utilities/sanitizeInternalFields.js +1 -1
  74. package/docs/admin/components.mdx +3 -3
  75. package/docs/fields/blocks.mdx +9 -0
  76. package/docs/fields/overview.mdx +12 -0
  77. package/docs/fields/rich-text.mdx +11 -0
  78. package/docs/hooks/collections.mdx +23 -0
  79. package/docs/hooks/fields.mdx +28 -0
  80. package/docs/hooks/globals.mdx +17 -0
  81. package/docs/typescript/generating-types.mdx +114 -0
  82. package/docs/typescript/overview.mdx +36 -0
  83. package/package.json +2 -2
  84. package/types.d.ts +18 -2
  85. package/dist/admin/components/forms/useFieldType/index.d.ts +0 -3
@@ -1,7 +1,7 @@
1
1
  import React, { useCallback, useState } from 'react';
2
2
  import withCondition from '../../withCondition';
3
3
  import ReactSelect from '../../../elements/ReactSelect';
4
- import useFieldType from '../../useFieldType';
4
+ import useField from '../../useField';
5
5
  import Label from '../../Label';
6
6
  import Error from '../../Error';
7
7
  import FieldDescription from '../../FieldDescription';
@@ -18,18 +18,45 @@ const formatOptions = (options) => options.map((option) => {
18
18
  };
19
19
  });
20
20
  const Select = (props) => {
21
- const { path: pathFromProps, name, required, validate = select, label, options: optionsFromProps, hasMany, admin: { readOnly, style, width, description, condition, } = {}, } = props;
21
+ const { path: pathFromProps, name, required, validate = select, label, options: optionsFromProps, hasMany, admin: { readOnly, style, width, description, condition, } = {}, value: valueFromProps, onChange: onChangeFromProps } = props;
22
22
  const path = pathFromProps || name;
23
23
  const [options] = useState(formatOptions(optionsFromProps));
24
24
  const memoizedValidate = useCallback((value) => {
25
25
  const validationResult = validate(value, { required, options });
26
26
  return validationResult;
27
27
  }, [validate, required, options]);
28
- const { value, showError, setValue, errorMessage, } = useFieldType({
28
+ const { value: valueFromContext, showError, setValue, errorMessage, } = useField({
29
29
  path,
30
30
  validate: memoizedValidate,
31
31
  condition,
32
32
  });
33
+ const onChange = useCallback((selectedOption) => {
34
+ if (!readOnly) {
35
+ let newValue;
36
+ if (hasMany) {
37
+ if (Array.isArray(selectedOption)) {
38
+ newValue = selectedOption.map((option) => option.value);
39
+ }
40
+ else {
41
+ newValue = [];
42
+ }
43
+ }
44
+ else {
45
+ newValue = selectedOption.value;
46
+ }
47
+ if (typeof onChangeFromProps === 'function') {
48
+ onChangeFromProps(newValue);
49
+ }
50
+ else {
51
+ setValue(newValue);
52
+ }
53
+ }
54
+ }, [
55
+ readOnly,
56
+ hasMany,
57
+ onChangeFromProps,
58
+ setValue
59
+ ]);
33
60
  const classes = [
34
61
  'field-type',
35
62
  baseClass,
@@ -37,6 +64,7 @@ const Select = (props) => {
37
64
  readOnly && `${baseClass}--read-only`,
38
65
  ].filter(Boolean).join(' ');
39
66
  let valueToRender;
67
+ const value = valueFromProps || valueFromContext || '';
40
68
  if (hasMany && Array.isArray(value)) {
41
69
  valueToRender = value.map((val) => options.find((option) => option.value === val));
42
70
  }
@@ -49,19 +77,7 @@ const Select = (props) => {
49
77
  } },
50
78
  React.createElement(Error, { showError: showError, message: errorMessage }),
51
79
  React.createElement(Label, { htmlFor: path, label: label, required: required }),
52
- React.createElement(ReactSelect, { onChange: !readOnly ? (selectedOption) => {
53
- if (hasMany) {
54
- if (Array.isArray(selectedOption)) {
55
- setValue(selectedOption.map((option) => option.value));
56
- }
57
- else {
58
- setValue([]);
59
- }
60
- }
61
- else {
62
- setValue(selectedOption.value);
63
- }
64
- } : undefined, value: valueToRender, showError: showError, isDisabled: readOnly, options: options, isMulti: hasMany }),
80
+ React.createElement(ReactSelect, { onChange: onChange, value: valueToRender, showError: showError, isDisabled: readOnly, options: options, isMulti: hasMany }),
65
81
  React.createElement(FieldDescription, { value: value, description: description })));
66
82
  };
67
83
  export default withCondition(Select);
@@ -1,5 +1,5 @@
1
- import React from 'react';
2
- import useFieldType from '../../useFieldType';
1
+ import React, { useCallback } from 'react';
2
+ import useField from '../../useField';
3
3
  import withCondition from '../../withCondition';
4
4
  import Label from '../../Label';
5
5
  import Error from '../../Error';
@@ -7,28 +7,41 @@ import { text } from '../../../../../fields/validations';
7
7
  import FieldDescription from '../../FieldDescription';
8
8
  import './index.scss';
9
9
  const Text = (props) => {
10
- const { path: pathFromProps, name, required, validate = text, label, admin: { placeholder, readOnly, style, width, description, condition, } = {}, } = props;
10
+ const { path: pathFromProps, name, required, validate = text, label, admin: { placeholder, readOnly, style, width, description, condition, } = {}, value: valueFromProps, onChange: onChangeFromProps, } = props;
11
11
  const path = pathFromProps || name;
12
- const fieldType = useFieldType({
12
+ const fieldType = useField({
13
13
  path,
14
14
  validate,
15
15
  enableDebouncedValue: true,
16
16
  condition,
17
17
  });
18
- const { value, showError, setValue, errorMessage, } = fieldType;
18
+ const { value: valueFromContext, showError, setValue, errorMessage, } = fieldType;
19
+ const onChange = useCallback((e) => {
20
+ const { value: incomingValue } = e.target;
21
+ if (typeof onChangeFromProps === 'function') {
22
+ onChangeFromProps(incomingValue);
23
+ }
24
+ else {
25
+ setValue(e);
26
+ }
27
+ }, [
28
+ onChangeFromProps,
29
+ setValue,
30
+ ]);
19
31
  const classes = [
20
32
  'field-type',
21
33
  'text',
22
34
  showError && 'error',
23
35
  readOnly && 'read-only',
24
36
  ].filter(Boolean).join(' ');
37
+ const value = valueFromProps || valueFromContext || '';
25
38
  return (React.createElement("div", { className: classes, style: {
26
39
  ...style,
27
40
  width,
28
41
  } },
29
42
  React.createElement(Error, { showError: showError, message: errorMessage }),
30
43
  React.createElement(Label, { htmlFor: path, label: label, required: required }),
31
- React.createElement("input", { value: value || '', onChange: setValue, disabled: readOnly, placeholder: placeholder, type: "text", id: path, name: path }),
44
+ React.createElement("input", { value: value, onChange: onChange, disabled: readOnly, placeholder: placeholder, type: "text", id: path, name: path }),
32
45
  React.createElement(FieldDescription, { value: value, description: description })));
33
46
  };
34
47
  export default withCondition(Text);
@@ -1,5 +1,5 @@
1
1
  import React, { useCallback } from 'react';
2
- import useFieldType from '../../useFieldType';
2
+ import useField from '../../useField';
3
3
  import withCondition from '../../withCondition';
4
4
  import Label from '../../Label';
5
5
  import Error from '../../Error';
@@ -13,7 +13,7 @@ const Textarea = (props) => {
13
13
  const validationResult = validate(value, { minLength, maxLength, required });
14
14
  return validationResult;
15
15
  }, [validate, maxLength, minLength, required]);
16
- const { value, showError, setValue, errorMessage, } = useFieldType({
16
+ const { value, showError, setValue, errorMessage, } = useField({
17
17
  path,
18
18
  validate: memoizedValidate,
19
19
  enableDebouncedValue: true,
@@ -1,7 +1,7 @@
1
1
  import React, { useState, useEffect, useCallback } from 'react';
2
2
  import { useModal } from '@faceless-ui/modal';
3
3
  import { useConfig } from '@payloadcms/config-provider';
4
- import useFieldType from '../../useFieldType';
4
+ import useField from '../../useField';
5
5
  import withCondition from '../../withCondition';
6
6
  import Button from '../../../elements/Button';
7
7
  import Label from '../../Label';
@@ -18,7 +18,7 @@ const Upload = (props) => {
18
18
  const [internalValue, setInternalValue] = useState(undefined);
19
19
  const [missingFile, setMissingFile] = useState(false);
20
20
  const { collections, serverURL, routes: { api } } = useConfig();
21
- const { path: pathFromProps, name, required, admin: { readOnly, style, width, description, condition, } = {}, label, validate = upload, relationTo, fieldTypes, } = props;
21
+ const { path: pathFromProps, name, required, admin: { readOnly, style, width, description, condition, } = {}, label, validate = upload, relationTo, fieldTypes, value: valueFromProps, onChange: onChangeFromProps, } = props;
22
22
  const collection = collections.find((coll) => coll.slug === relationTo);
23
23
  const path = pathFromProps || name;
24
24
  const addModalSlug = `${path}-add`;
@@ -27,12 +27,13 @@ const Upload = (props) => {
27
27
  const validationResult = validate(value, { required });
28
28
  return validationResult;
29
29
  }, [validate, required]);
30
- const fieldType = useFieldType({
30
+ const fieldType = useField({
31
31
  path,
32
32
  validate: memoizedValidate,
33
33
  condition,
34
34
  });
35
- const { value, showError, setValue, errorMessage, } = fieldType;
35
+ const { value: valueFromContext, showError, setValue, errorMessage, } = fieldType;
36
+ const value = valueFromProps || valueFromContext || '';
36
37
  const classes = [
37
38
  'field-type',
38
39
  baseClass,
@@ -49,13 +50,27 @@ const Upload = (props) => {
49
50
  }
50
51
  else {
51
52
  setInternalValue(undefined);
52
- setValue(null);
53
53
  setMissingFile(true);
54
54
  }
55
55
  };
56
56
  fetchFile();
57
57
  }
58
- }, [value, setInternalValue, relationTo, api, serverURL, setValue]);
58
+ }, [
59
+ value,
60
+ relationTo,
61
+ api,
62
+ serverURL,
63
+ setValue
64
+ ]);
65
+ useEffect(() => {
66
+ const { id: incomingID } = internalValue || {};
67
+ if (typeof onChangeFromProps === 'function') {
68
+ onChangeFromProps(incomingID);
69
+ }
70
+ else {
71
+ setValue(incomingID);
72
+ }
73
+ }, [internalValue]);
59
74
  return (React.createElement("div", { className: classes, style: {
60
75
  ...style,
61
76
  width,
@@ -83,7 +98,6 @@ const Upload = (props) => {
83
98
  fieldTypes,
84
99
  setValue: (val) => {
85
100
  setMissingFile(false);
86
- setValue(val.id);
87
101
  setInternalValue(val);
88
102
  },
89
103
  } }),
@@ -92,7 +106,6 @@ const Upload = (props) => {
92
106
  slug: selectExistingModalSlug,
93
107
  setValue: (val) => {
94
108
  setMissingFile(false);
95
- setValue(val.id);
96
109
  setInternalValue(val);
97
110
  },
98
111
  addModalSlug,
@@ -0,0 +1,3 @@
1
+ import { Options, FieldType } from './types';
2
+ declare const useField: <T extends unknown>(options: Options) => FieldType<T>;
3
+ export default useField;
@@ -1,13 +1,13 @@
1
1
  import { useCallback, useEffect, useState, } from 'react';
2
2
  import { useFormProcessing, useFormSubmitted, useFormModified, useForm } from '../Form/context';
3
3
  import useDebounce from '../../../hooks/useDebounce';
4
- const useFieldType = (options) => {
4
+ const useField = (options) => {
5
5
  const { path, validate, enableDebouncedValue, disableFormData, ignoreWhileFlattening, stringify, condition, } = options;
6
6
  const formContext = useForm();
7
7
  const submitted = useFormSubmitted();
8
8
  const processing = useFormProcessing();
9
9
  const modified = useFormModified();
10
- const { dispatchFields, getField, setModified, } = formContext;
10
+ const { dispatchFields, getField, setModified, } = formContext || {};
11
11
  const [internalValue, setInternalValue] = useState(undefined);
12
12
  // Debounce internal values to update form state only every 60ms
13
13
  const debouncedValue = useDebounce(internalValue, 120);
@@ -40,18 +40,35 @@ const useFieldType = (options) => {
40
40
  else {
41
41
  fieldToDispatch.valid = validationResult;
42
42
  }
43
- dispatchFields(fieldToDispatch);
44
- }, [path, dispatchFields, validate, disableFormData, ignoreWhileFlattening, initialValue, stringify, condition]);
45
- // Method to return from `useFieldType`, used to
43
+ if (typeof dispatchFields === 'function') {
44
+ dispatchFields(fieldToDispatch);
45
+ }
46
+ }, [
47
+ path,
48
+ dispatchFields,
49
+ validate,
50
+ disableFormData,
51
+ ignoreWhileFlattening,
52
+ initialValue,
53
+ stringify,
54
+ condition
55
+ ]);
56
+ // Method to return from `useField`, used to
46
57
  // update internal field values from field component(s)
47
58
  // as fast as they arrive. NOTE - this method is NOT debounced
48
59
  const setValue = useCallback((e, modifyForm = true) => {
49
60
  const val = (e && e.target) ? e.target.value : e;
50
61
  if ((!ignoreWhileFlattening && !modified) && modifyForm) {
51
- setModified(true);
62
+ if (typeof setModified === 'function') {
63
+ setModified(true);
64
+ }
52
65
  }
53
66
  setInternalValue(val);
54
- }, [setModified, modified, ignoreWhileFlattening]);
67
+ }, [
68
+ setModified,
69
+ modified,
70
+ ignoreWhileFlattening
71
+ ]);
55
72
  useEffect(() => {
56
73
  setInternalValue(initialValue);
57
74
  }, [initialValue]);
@@ -63,7 +80,11 @@ const useFieldType = (options) => {
63
80
  if ((field === null || field === void 0 ? void 0 : field.value) !== valueToSend && valueToSend !== undefined) {
64
81
  sendField(valueToSend);
65
82
  }
66
- }, [valueToSend, sendField, field]);
83
+ }, [
84
+ valueToSend,
85
+ sendField,
86
+ field
87
+ ]);
67
88
  return {
68
89
  ...options,
69
90
  showError,
@@ -74,4 +95,4 @@ const useFieldType = (options) => {
74
95
  setValue,
75
96
  };
76
97
  };
77
- export default useFieldType;
98
+ export default useField;
@@ -1,6 +1,6 @@
1
1
  import React, { useMemo, useState, useEffect } from 'react';
2
2
  import { v4 as uuidv4 } from 'uuid';
3
- import useFieldType from '../../../../forms/useFieldType';
3
+ import useField from '../../../../forms/useField';
4
4
  import Label from '../../../../forms/Label';
5
5
  import CopyToClipboard from '../../../../elements/CopyToClipboard';
6
6
  import { text } from '../../../../../../fields/validations';
@@ -18,7 +18,7 @@ const APIKey = () => {
18
18
  const APIKeyLabel = useMemo(() => (React.createElement("div", { className: `${baseClass}__label` },
19
19
  React.createElement("span", null, "API Key"),
20
20
  React.createElement(CopyToClipboard, { value: apiKeyValue }))), [apiKeyValue]);
21
- const fieldType = useFieldType({
21
+ const fieldType = useField({
22
22
  path: 'apiKey',
23
23
  validate,
24
24
  });
@@ -1,5 +1,5 @@
1
1
  import React, { useState, useRef, useEffect, useCallback, } from 'react';
2
- import useFieldType from '../../../../forms/useFieldType';
2
+ import useField from '../../../../forms/useField';
3
3
  import Button from '../../../../elements/Button';
4
4
  import FileDetails from '../../../../elements/FileDetails';
5
5
  import Error from '../../../../forms/Error';
@@ -26,7 +26,7 @@ const Upload = (props) => {
26
26
  const [replacingFile, setReplacingFile] = useState(false);
27
27
  const { data = {}, collection, } = props;
28
28
  const { filename } = data;
29
- const { value, setValue, showError, errorMessage, } = useFieldType({
29
+ const { value, setValue, showError, errorMessage, } = useField({
30
30
  path: 'file',
31
31
  validate,
32
32
  });
@@ -2,7 +2,7 @@ import { SanitizedCollectionConfig, PaginatedDocs } from '../../../../../collect
2
2
  import { Column } from '../../../elements/Table/types';
3
3
  export declare type Props = {
4
4
  collection: SanitizedCollectionConfig;
5
- data: PaginatedDocs;
5
+ data: PaginatedDocs<any>;
6
6
  newDocumentURL: string;
7
7
  setListControls: (controls: unknown) => void;
8
8
  setSort: (sort: string) => void;
@@ -319,6 +319,10 @@ function generateTypes() {
319
319
  const jsonSchema = configToJsonSchema(config);
320
320
  (0, json_schema_to_typescript_1.compile)(jsonSchema, 'Config', {
321
321
  unreachableDefinitions: true,
322
+ bannerComment: '/* tslint:disable */\n/**\n* This file was automatically generated by Payload CMS.\n* DO NOT MODIFY IT BY HAND. Instead, modify your source Payload config,\n* and re-run `payload generate:types` to regenerate this file.\n*/',
323
+ style: {
324
+ singleQuote: true,
325
+ },
322
326
  }).then((compiled) => {
323
327
  fs_1.default.writeFileSync(config.typescript.outputFile, compiled);
324
328
  __1.default.logger.info(`Types written to ${config.typescript.outputFile}`);
@@ -329,4 +333,4 @@ exports.generateTypes = generateTypes;
329
333
  if (module.id === require.main.id) {
330
334
  generateTypes();
331
335
  }
332
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJhdGVUeXBlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9iaW4vZ2VuZXJhdGVUeXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxzQ0FBc0M7QUFDdEMsNENBQW9CO0FBRXBCLHlFQUFvRDtBQUNwRCwyQ0FBeUI7QUFDekIsa0RBQTZGO0FBRzdGLDBEQUF3QztBQUd4QyxTQUFTLG1CQUFtQixDQUFDLFdBQXdDLEVBQUUsSUFBWTtJQUNqRixNQUFNLGlCQUFpQixHQUFHLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEtBQUssSUFBSSxDQUFDLENBQUM7SUFDckYsTUFBTSxhQUFhLEdBQUcsaUJBQWlCLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsTUFBTSxJQUFJLEtBQUssSUFBSSxLQUFLLENBQUMsSUFBSSxLQUFLLElBQUksQ0FBQyxDQUFDO0lBRXZHLElBQUksYUFBYSxJQUFJLGFBQWEsQ0FBQyxJQUFJLEtBQUssUUFBUSxFQUFFO1FBQ3BELE9BQU8sUUFBUSxDQUFDO0tBQ2pCO0lBRUQsT0FBTyxRQUFRLENBQUM7QUFDbEIsQ0FBQztBQUVELFNBQVMsaUJBQWlCLENBQUMsT0FBaUI7SUFDMUMsT0FBTyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7UUFDNUIsSUFBSSxPQUFPLE1BQU0sS0FBSyxRQUFRLElBQUksT0FBTyxJQUFJLE1BQU0sRUFBRTtZQUNuRCxPQUFPLE1BQU0sQ0FBQyxLQUFLLENBQUM7U0FDckI7UUFFRCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDLENBQUMsQ0FBQztBQUNMLENBQUM7QUFFRCxTQUFTLGtCQUFrQixDQUFDLE1BQXVCLEVBQUUsTUFBZTtJQU1sRSxJQUFJLGFBQWEsR0FBRyxFQUFFLENBQUM7SUFDdkIsSUFBSSxxQkFBcUIs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
336
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJhdGVUeXBlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9iaW4vZ2VuZXJhdGVUeXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxzQ0FBc0M7QUFDdEMsNENBQW9CO0FBRXBCLHlFQUFvRDtBQUNwRCwyQ0FBeUI7QUFDekIsa0RBQTZGO0FBRzdGLDBEQUF3QztBQUd4QyxTQUFTLG1CQUFtQixDQUFDLFdBQXdDLEVBQUUsSUFBWTtJQUNqRixNQUFNLGlCQUFpQixHQUFHLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEtBQUssSUFBSSxDQUFDLENBQUM7SUFDckYsTUFBTSxhQUFhLEdBQUcsaUJBQWlCLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsTUFBTSxJQUFJLEtBQUssSUFBSSxLQUFLLENBQUMsSUFBSSxLQUFLLElBQUksQ0FBQyxDQUFDO0lBRXZHLElBQUksYUFBYSxJQUFJLGFBQWEsQ0FBQyxJQUFJLEtBQUssUUFBUSxFQUFFO1FBQ3BELE9BQU8sUUFBUSxDQUFDO0tBQ2pCO0lBRUQsT0FBTyxRQUFRLENBQUM7QUFDbEIsQ0FBQztBQUVELFNBQVMsaUJBQWlCLENBQUMsT0FBaUI7SUFDMUMsT0FBTyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7UUFDNUIsSUFBSSxPQUFPLE1BQU0sS0FBSyxRQUFRLElBQUksT0FBTyxJQUFJLE1BQU0sRUFBRTtZQUNuRCxPQUFPLE1BQU0sQ0FBQyxLQUFLLENBQUM7U0FDckI7UUFFRCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDLENBQUMsQ0FBQztBQUNMLENBQUM7QUFFRCxTQUFTLGtCQUFrQixDQUFDLE1BQXVCLEVBQUUsTUFBZTtJQU1sRSxJQUFJLGFBQWEsR0FBRyxFQUFFLENBQUM7SUFDdkIsSUFBSSxxQkFBcUIs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
@@ -16,36 +16,59 @@ export interface AuthCollectionModel extends CollectionModel {
16
16
  resetPasswordExpiration: Date;
17
17
  }
18
18
  export declare type HookOperationType = 'create' | 'read' | 'update' | 'delete' | 'refresh' | 'login' | 'forgotPassword';
19
+ declare type CreateOrUpdateOperation = Extract<HookOperationType, 'create' | 'update'>;
19
20
  export declare type BeforeOperationHook = (args: {
20
21
  args?: any;
22
+ /**
23
+ * Hook operation being performed
24
+ */
21
25
  operation: HookOperationType;
22
26
  }) => any;
23
- export declare type BeforeValidateHook = (args: {
24
- data?: any;
27
+ export declare type BeforeValidateHook<T extends TypeWithID = any> = (args: {
28
+ data?: Partial<T>;
25
29
  req?: PayloadRequest;
26
- operation: 'create' | 'update';
27
- originalDoc?: any;
30
+ /**
31
+ * Hook operation being performed
32
+ */
33
+ operation: CreateOrUpdateOperation;
34
+ /**
35
+ * Original document before change
36
+ *
37
+ * `undefined` on 'create' operation
38
+ */
39
+ originalDoc?: T;
28
40
  }) => any;
29
- export declare type BeforeChangeHook = (args: {
30
- data: any;
41
+ export declare type BeforeChangeHook<T extends TypeWithID = any> = (args: {
42
+ data: Partial<T>;
31
43
  req: PayloadRequest;
32
- operation: 'create' | 'update';
33
- originalDoc?: any;
44
+ /**
45
+ * Hook operation being performed
46
+ */
47
+ operation: CreateOrUpdateOperation;
48
+ /**
49
+ * Original document before change
50
+ *
51
+ * `undefined` on 'create' operation
52
+ */
53
+ originalDoc?: T;
34
54
  }) => any;
35
- export declare type AfterChangeHook = (args: {
36
- doc: any;
55
+ export declare type AfterChangeHook<T extends TypeWithID = any> = (args: {
56
+ doc: T;
37
57
  req: PayloadRequest;
38
- operation: 'create' | 'update';
58
+ /**
59
+ * Hook operation being performed
60
+ */
61
+ operation: CreateOrUpdateOperation;
39
62
  }) => any;
40
- export declare type BeforeReadHook = (args: {
41
- doc: any;
63
+ export declare type BeforeReadHook<T extends TypeWithID = any> = (args: {
64
+ doc: T;
42
65
  req: PayloadRequest;
43
66
  query: {
44
67
  [key: string]: any;
45
68
  };
46
69
  }) => any;
47
- export declare type AfterReadHook = (args: {
48
- doc: any;
70
+ export declare type AfterReadHook<T extends TypeWithID = any> = (args: {
71
+ doc: T;
49
72
  req: PayloadRequest;
50
73
  query?: {
51
74
  [key: string]: any;
@@ -55,10 +78,10 @@ export declare type BeforeDeleteHook = (args: {
55
78
  req: PayloadRequest;
56
79
  id: string;
57
80
  }) => any;
58
- export declare type AfterDeleteHook = (args: {
81
+ export declare type AfterDeleteHook<T extends TypeWithID = any> = (args: {
82
+ doc: T;
59
83
  req: PayloadRequest;
60
84
  id: string;
61
- doc: any;
62
85
  }) => any;
63
86
  export declare type AfterErrorHook = (err: Error, res: unknown) => {
64
87
  response: any;
@@ -67,39 +90,64 @@ export declare type AfterErrorHook = (err: Error, res: unknown) => {
67
90
  export declare type BeforeLoginHook = (args: {
68
91
  req: PayloadRequest;
69
92
  }) => any;
70
- export declare type AfterLoginHook = (args: {
93
+ export declare type AfterLoginHook<T extends TypeWithID = any> = (args: {
71
94
  req: PayloadRequest;
72
- doc: any;
95
+ doc: T;
73
96
  token: string;
74
97
  }) => any;
75
98
  export declare type AfterForgotPasswordHook = (args: {
76
99
  args?: any;
77
100
  }) => any;
101
+ export declare type CollectionAdminOptions = {
102
+ /**
103
+ * Field to use as title in Edit view and first column in List view
104
+ */
105
+ useAsTitle?: string;
106
+ /**
107
+ * Default columns to show in list view
108
+ */
109
+ defaultColumns?: string[];
110
+ /**
111
+ * Custom description for collection
112
+ */
113
+ description?: string | (() => string) | React.FC;
114
+ disableDuplicate?: boolean;
115
+ /**
116
+ * Custom admin components
117
+ */
118
+ components?: {
119
+ views?: {
120
+ Edit?: React.ComponentType;
121
+ List?: React.ComponentType;
122
+ };
123
+ };
124
+ pagination?: {
125
+ defaultLimit?: number;
126
+ limits?: number[];
127
+ };
128
+ enableRichTextRelationship?: boolean;
129
+ /**
130
+ * Function to generate custom preview URL
131
+ */
132
+ preview?: GeneratePreviewURL;
133
+ };
78
134
  export declare type CollectionConfig = {
79
135
  slug: string;
136
+ /**
137
+ * Label configuration
138
+ */
80
139
  labels?: {
81
140
  singular?: string;
82
141
  plural?: string;
83
142
  };
84
143
  fields: Field[];
85
- admin?: {
86
- useAsTitle?: string;
87
- defaultColumns?: string[];
88
- description?: string | (() => string);
89
- disableDuplicate?: boolean;
90
- components?: {
91
- views?: {
92
- Edit?: React.ComponentType;
93
- List?: React.ComponentType;
94
- };
95
- };
96
- pagination?: {
97
- defaultLimit?: number;
98
- limits?: number[];
99
- };
100
- enableRichTextRelationship?: boolean;
101
- preview?: GeneratePreviewURL;
102
- };
144
+ /**
145
+ * Collection admin options
146
+ */
147
+ admin?: CollectionAdminOptions;
148
+ /**
149
+ * Hooks to modify Payload functionality
150
+ */
103
151
  hooks?: {
104
152
  beforeOperation?: BeforeOperationHook[];
105
153
  beforeValidate?: BeforeValidateHook[];
@@ -114,6 +162,9 @@ export declare type CollectionConfig = {
114
162
  afterLogin?: AfterLoginHook[];
115
163
  afterForgotPassword?: AfterForgotPasswordHook[];
116
164
  };
165
+ /**
166
+ * Access control
167
+ */
117
168
  access?: {
118
169
  create?: Access;
119
170
  read?: Access;
@@ -122,7 +173,15 @@ export declare type CollectionConfig = {
122
173
  admin?: Access;
123
174
  unlock?: Access;
124
175
  };
176
+ /**
177
+ * Collection login options
178
+ *
179
+ * Use `true` to enable with default options
180
+ */
125
181
  auth?: IncomingAuthType | boolean;
182
+ /**
183
+ * Upload options
184
+ */
126
185
  upload?: IncomingUploadType | boolean;
127
186
  timestamps?: boolean;
128
187
  };
@@ -139,8 +198,8 @@ export declare type AuthCollection = {
139
198
  Model: AuthCollectionModel;
140
199
  config: SanitizedCollectionConfig;
141
200
  };
142
- export declare type PaginatedDocs = {
143
- docs: any[];
201
+ export declare type PaginatedDocs<T extends TypeWithID = any> = {
202
+ docs: T[];
144
203
  totalDocs: number;
145
204
  limit: number;
146
205
  totalPages: number;
@@ -151,3 +210,7 @@ export declare type PaginatedDocs = {
151
210
  prevPage: number | null;
152
211
  nextPage: number | null;
153
212
  };
213
+ export declare type TypeWithID = {
214
+ id: string | number;
215
+ };
216
+ export {};
@@ -10,6 +10,7 @@ export declare type Arguments = {
10
10
  overrideAccess?: boolean;
11
11
  showHiddenFields?: boolean;
12
12
  data: Record<string, unknown>;
13
+ overwriteExistingFiles?: boolean;
13
14
  };
14
15
  declare function create(this: Payload, incomingArgs: Arguments): Promise<Document>;
15
16
  export default create;