payload 1.1.21 → 1.1.23

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.
@@ -3,3 +3,4 @@ export { useLocale } from '../dist/admin/components/utilities/Locale';
3
3
  export { useDocumentInfo } from '../dist/admin/components/utilities/DocumentInfo';
4
4
  export { useConfig } from '../dist/admin/components/utilities/Config';
5
5
  export { useAuth } from '../dist/admin/components/utilities/Auth';
6
+ export { useEditDepth } from '../dist/admin/components/utilities/EditDepth';
@@ -0,0 +1,2 @@
1
+ import { Field, FieldAffectingData } from '../../../../fields/config/types';
2
+ export declare const getTextFieldsToBeSearched: (listSearchableFields: string[], fields: Field[]) => () => FieldAffectingData[];
@@ -0,0 +1,9 @@
1
+ import { fieldAffectsData } from '../../../../fields/config/types';
2
+ import flattenFields from '../../../../utilities/flattenTopLevelFields';
3
+ export const getTextFieldsToBeSearched = (listSearchableFields, fields) => () => {
4
+ if (listSearchableFields) {
5
+ const flattenedFields = flattenFields(fields);
6
+ return flattenedFields.filter((field) => fieldAffectsData(field) && listSearchableFields.includes(field.name));
7
+ }
8
+ return null;
9
+ };
@@ -8,6 +8,7 @@ import SortComplex from '../SortComplex';
8
8
  import Button from '../Button';
9
9
  import { useSearchParams } from '../../utilities/SearchParams';
10
10
  import validateWhereQuery from '../WhereBuilder/validateWhereQuery';
11
+ import { getTextFieldsToBeSearched } from './getTextFieldsToBeSearched';
11
12
  import './index.scss';
12
13
  const baseClass = 'list-controls';
13
14
  const ListControls = (props) => {
@@ -15,7 +16,7 @@ const ListControls = (props) => {
15
16
  const params = useSearchParams();
16
17
  const shouldInitializeWhereOpened = validateWhereQuery(params === null || params === void 0 ? void 0 : params.where);
17
18
  const [titleField] = useState(() => fields.find((field) => fieldAffectsData(field) && field.name === useAsTitle));
18
- const [textFieldsToBeSearched] = useState(listSearchableFields ? () => fields.filter((field) => fieldAffectsData(field) && listSearchableFields.includes(field.name)) : null);
19
+ const [textFieldsToBeSearched] = useState(getTextFieldsToBeSearched(listSearchableFields, fields));
19
20
  const [visibleDrawer, setVisibleDrawer] = useState(shouldInitializeWhereOpened ? 'where' : undefined);
20
21
  return (React.createElement("div", { className: baseClass },
21
22
  React.createElement("div", { className: `${baseClass}__wrap` },
@@ -44,7 +44,7 @@ const ReactSelect = (props) => {
44
44
  // small fix for https://github.com/clauderic/react-sortable-hoc/pull/352:
45
45
  getHelperDimensions: ({ node }) => node.getBoundingClientRect(),
46
46
  // react-select props:
47
- placeholder: placeholder, ...props, value: value, onChange: onChange, disabled: disabled ? 'disabled' : undefined, className: classes, classNamePrefix: "rs", options: options, isSearchable: isSearchable, isClearable: isClearable, components: {
47
+ placeholder: placeholder, ...props, value: value, onChange: onChange, disabled: disabled ? 'disabled' : undefined, className: classes, classNamePrefix: "rs", captureMenuScroll: true, options: options, isSearchable: isSearchable, isClearable: isClearable, components: {
48
48
  // eslint-disable-next-line @typescript-eslint/ban-ts-comment
49
49
  // @ts-ignore We're failing to provide a required index prop to SortableElement
50
50
  MultiValue: SortableMultiValue,
@@ -52,6 +52,6 @@ const ReactSelect = (props) => {
52
52
  DropdownIndicator: Chevron,
53
53
  }, filterOption: filterOption }));
54
54
  }
55
- return (React.createElement(Select, { placeholder: placeholder, ...props, value: value, onChange: onChange, disabled: disabled ? 'disabled' : undefined, components: { DropdownIndicator: Chevron }, className: classes, classNamePrefix: "rs", options: options, isSearchable: isSearchable, isClearable: isClearable, filterOption: filterOption }));
55
+ return (React.createElement(Select, { placeholder: placeholder, captureMenuScroll: true, ...props, value: value, onChange: onChange, disabled: disabled ? 'disabled' : undefined, components: { DropdownIndicator: Chevron }, className: classes, classNamePrefix: "rs", options: options, isSearchable: isSearchable, isClearable: isClearable, filterOption: filterOption }));
56
56
  };
57
57
  export default ReactSelect;
@@ -1,33 +1,8 @@
1
1
  import equal from 'deep-equal';
2
- import { unflatten, flatten } from 'flatley';
3
- import flattenFilters from './flattenFilters';
4
2
  import getSiblingData from './getSiblingData';
5
3
  import reduceFieldsToValues from './reduceFieldsToValues';
6
4
  import deepCopyObject from '../../../../utilities/deepCopyObject';
7
- const unflattenRowsFromState = (state, path) => {
8
- // Take a copy of state
9
- const remainingFlattenedState = { ...state };
10
- const rowsFromStateObject = {};
11
- const pathPrefixToRemove = path.substring(0, path.lastIndexOf('.') + 1);
12
- // Loop over all keys from state
13
- // If the key begins with the name of the parent field,
14
- // Add value to rowsFromStateObject and delete it from remaining state
15
- Object.keys(state).forEach((key) => {
16
- if (key.indexOf(`${path}.`) === 0) {
17
- if (!state[key].disableFormData) {
18
- const name = key.replace(pathPrefixToRemove, '');
19
- rowsFromStateObject[name] = state[key];
20
- rowsFromStateObject[name].initialValue = rowsFromStateObject[name].value;
21
- }
22
- delete remainingFlattenedState[key];
23
- }
24
- });
25
- const unflattenedRows = unflatten(rowsFromStateObject);
26
- return {
27
- unflattenedRows: unflattenedRows[path.replace(pathPrefixToRemove, '')] || [],
28
- remainingFlattenedState,
29
- };
30
- };
5
+ import { flattenRows, separateRows } from './rows';
31
6
  function fieldReducer(state, action) {
32
7
  switch (action.type) {
33
8
  case 'REPLACE_STATE': {
@@ -57,21 +32,21 @@ function fieldReducer(state, action) {
57
32
  }
58
33
  case 'REMOVE_ROW': {
59
34
  const { rowIndex, path } = action;
60
- const { unflattenedRows, remainingFlattenedState } = unflattenRowsFromState(state, path);
61
- unflattenedRows.splice(rowIndex, 1);
62
- const flattenedRowState = unflattenedRows.length > 0 ? flatten({ [path]: unflattenedRows }, { filters: flattenFilters }) : {};
63
- return {
64
- ...remainingFlattenedState,
35
+ const { remainingFields, rows } = separateRows(path, state);
36
+ rows.splice(rowIndex, 1);
37
+ const newState = {
38
+ ...remainingFields,
65
39
  [path]: {
66
- ...(state[path] || {}),
67
- disableFormData: unflattenedRows.length > 0,
40
+ ...state[path],
41
+ value: rows.length,
42
+ disableFormData: rows.length > 0,
68
43
  },
69
- ...flattenedRowState,
44
+ ...flattenRows(path, rows),
70
45
  };
46
+ return newState;
71
47
  }
72
48
  case 'ADD_ROW': {
73
49
  const { rowIndex, path, subFieldState, blockType, } = action;
74
- const { unflattenedRows, remainingFlattenedState } = unflattenRowsFromState(state, path);
75
50
  if (blockType) {
76
51
  subFieldState.blockType = {
77
52
  value: blockType,
@@ -79,56 +54,53 @@ function fieldReducer(state, action) {
79
54
  valid: true,
80
55
  };
81
56
  }
82
- // If there are subfields
83
- if (Object.keys(subFieldState).length > 0) {
84
- // Add new object containing subfield names to unflattenedRows array
85
- unflattenedRows.splice(rowIndex + 1, 0, subFieldState);
86
- }
57
+ const { remainingFields, rows } = separateRows(path, state);
58
+ rows.splice(rowIndex + 1, 0, subFieldState);
87
59
  const newState = {
88
- ...remainingFlattenedState,
60
+ ...remainingFields,
89
61
  [path]: {
90
- ...(state[path] || {}),
91
- value: unflattenedRows.length,
62
+ ...state[path],
63
+ value: rows.length,
92
64
  disableFormData: true,
93
65
  },
94
- ...(flatten({ [path]: unflattenedRows }, { filters: flattenFilters })),
66
+ ...flattenRows(path, rows),
95
67
  };
96
68
  return newState;
97
69
  }
98
70
  case 'DUPLICATE_ROW': {
99
71
  const { rowIndex, path, } = action;
100
- const { unflattenedRows, remainingFlattenedState } = unflattenRowsFromState(state, path);
101
- const duplicate = deepCopyObject(unflattenedRows[rowIndex]);
72
+ const { remainingFields, rows } = separateRows(path, state);
73
+ const duplicate = deepCopyObject(rows[rowIndex]);
102
74
  if (duplicate.id)
103
75
  delete duplicate.id;
104
76
  // If there are subfields
105
77
  if (Object.keys(duplicate).length > 0) {
106
78
  // Add new object containing subfield names to unflattenedRows array
107
- unflattenedRows.splice(rowIndex + 1, 0, duplicate);
79
+ rows.splice(rowIndex + 1, 0, duplicate);
108
80
  }
109
81
  const newState = {
110
- ...remainingFlattenedState,
82
+ ...remainingFields,
111
83
  [path]: {
112
- ...(state[path] || {}),
113
- value: unflattenedRows.length,
84
+ ...state[path],
85
+ value: rows.length,
114
86
  disableFormData: true,
115
87
  },
116
- ...(flatten({ [path]: unflattenedRows }, { filters: flattenFilters })),
88
+ ...flattenRows(path, rows),
117
89
  };
118
90
  return newState;
119
91
  }
120
92
  case 'MOVE_ROW': {
121
93
  const { moveFromIndex, moveToIndex, path } = action;
122
- const { unflattenedRows, remainingFlattenedState } = unflattenRowsFromState(state, path);
94
+ const { remainingFields, rows } = separateRows(path, state);
123
95
  // copy the row to move
124
- const copyOfMovingRow = unflattenedRows[moveFromIndex];
96
+ const copyOfMovingRow = rows[moveFromIndex];
125
97
  // delete the row by index
126
- unflattenedRows.splice(moveFromIndex, 1);
98
+ rows.splice(moveFromIndex, 1);
127
99
  // insert row copyOfMovingRow back in
128
- unflattenedRows.splice(moveToIndex, 0, copyOfMovingRow);
100
+ rows.splice(moveToIndex, 0, copyOfMovingRow);
129
101
  const newState = {
130
- ...remainingFlattenedState,
131
- ...(flatten({ [path]: unflattenedRows }, { filters: flattenFilters })),
102
+ ...remainingFields,
103
+ ...flattenRows(path, rows),
132
104
  };
133
105
  return newState;
134
106
  }
@@ -201,7 +201,7 @@ const Form = (props) => {
201
201
  });
202
202
  return;
203
203
  }
204
- const message = errorMessages[res.status] || 'An unknown error occurrred.';
204
+ const message = errorMessages[res.status] || 'An unknown error occurred.';
205
205
  toast.error(message);
206
206
  }
207
207
  return;
@@ -283,13 +283,6 @@ const Form = (props) => {
283
283
  useThrottledEffect(() => {
284
284
  refreshCookie();
285
285
  }, 15000, [fields]);
286
- // Re-run form validation every second
287
- // as fields change, because field validations can
288
- // potentially rely on OTHER field values to determine
289
- // if they are valid or not (siblingData, data)
290
- useThrottledEffect(() => {
291
- validateForm();
292
- }, 1000, [validateForm, fields]);
293
286
  useEffect(() => {
294
287
  contextRef.current = { ...contextRef.current }; // triggers rerender of all components that subscribe to form
295
288
  setModified(false);
@@ -0,0 +1,8 @@
1
+ import { Fields } from './types';
2
+ declare type Result = {
3
+ remainingFields: Fields;
4
+ rows: Fields[];
5
+ };
6
+ export declare const separateRows: (path: string, fields: Fields) => Result;
7
+ export declare const flattenRows: (path: string, rows: Fields[]) => Fields;
8
+ export {};
@@ -0,0 +1,31 @@
1
+ export const separateRows = (path, fields) => {
2
+ const remainingFields = {};
3
+ const rows = Object.entries(fields).reduce((incomingRows, [fieldPath, field]) => {
4
+ const newRows = incomingRows;
5
+ if (fieldPath.indexOf(`${path}.`) === 0) {
6
+ const index = Number(fieldPath.replace(`${path}.`, '').split('.')[0]);
7
+ if (!newRows[index])
8
+ newRows[index] = {};
9
+ newRows[index][fieldPath.replace(`${path}.${String(index)}.`, '')] = field;
10
+ }
11
+ else {
12
+ remainingFields[fieldPath] = field;
13
+ }
14
+ return newRows;
15
+ }, []);
16
+ return {
17
+ remainingFields,
18
+ rows,
19
+ };
20
+ };
21
+ export const flattenRows = (path, rows) => {
22
+ return rows.reduce((fields, row, i) => ({
23
+ ...fields,
24
+ ...Object.entries(row).reduce((subFields, [subPath, subField]) => {
25
+ return {
26
+ ...subFields,
27
+ [`${path}.${i}.${subPath}`]: subField,
28
+ };
29
+ }, {}),
30
+ }), {});
31
+ };
@@ -1,4 +1,4 @@
1
- import { useCallback, useMemo } from 'react';
1
+ import { useCallback, useEffect, useMemo, useState } from 'react';
2
2
  import { useAuth } from '../../utilities/Auth';
3
3
  import { useFormProcessing, useFormSubmitted, useFormModified, useForm, useFormFields } from '../Form/context';
4
4
  import { useDocumentInfo } from '../../utilities/DocumentInfo';
@@ -15,10 +15,14 @@ const useField = (options) => {
15
15
  const field = useFormFields(([fields]) => fields[path]);
16
16
  const dispatchField = useFormFields(([_, dispatch]) => dispatch);
17
17
  const { getData, getSiblingData, setModified } = useForm();
18
- const value = field === null || field === void 0 ? void 0 : field.value;
19
18
  const initialValue = field === null || field === void 0 ? void 0 : field.initialValue;
20
19
  const valid = typeof (field === null || field === void 0 ? void 0 : field.valid) === 'boolean' ? field.valid : true;
21
20
  const showError = valid === false && submitted;
21
+ // We store internal value to ensure that components react immediately
22
+ // to any value changes, therefore preventing "cursor jump" that can be seen
23
+ // if a user types quickly in an input
24
+ const [internalValue, setInternalValue] = useState(() => field === null || field === void 0 ? void 0 : field.value);
25
+ const [internalInitialValue, setInternalInitialValue] = useState(() => field === null || field === void 0 ? void 0 : field.initialValue);
22
26
  // Method to return from `useField`, used to
23
27
  // update field values from field component(s)
24
28
  const setValue = useCallback((e, disableModifyingForm = false) => {
@@ -28,6 +32,7 @@ const useField = (options) => {
28
32
  setModified(true);
29
33
  }
30
34
  }
35
+ setInternalValue(val);
31
36
  dispatchField({
32
37
  type: 'UPDATE',
33
38
  path,
@@ -46,12 +51,12 @@ const useField = (options) => {
46
51
  const result = useMemo(() => ({
47
52
  showError,
48
53
  errorMessage: field === null || field === void 0 ? void 0 : field.errorMessage,
49
- value,
54
+ value: internalValue,
50
55
  formSubmitted: submitted,
51
56
  formProcessing: processing,
52
57
  setValue,
53
58
  initialValue,
54
- }), [field, processing, setValue, showError, submitted, value, initialValue]);
59
+ }), [field, processing, setValue, showError, submitted, internalValue, initialValue]);
55
60
  // Throttle the validate function
56
61
  useThrottledEffect(() => {
57
62
  const validateField = async () => {
@@ -61,7 +66,7 @@ const useField = (options) => {
61
66
  disableFormData,
62
67
  validate,
63
68
  condition,
64
- value,
69
+ value: internalValue,
65
70
  valid: false,
66
71
  errorMessage: undefined,
67
72
  };
@@ -72,7 +77,7 @@ const useField = (options) => {
72
77
  siblingData: getSiblingData(path),
73
78
  operation,
74
79
  };
75
- const validationResult = typeof validate === 'function' ? await validate(value, validateOptions) : true;
80
+ const validationResult = typeof validate === 'function' ? await validate(internalValue, validateOptions) : true;
76
81
  if (typeof validationResult === 'string') {
77
82
  action.errorMessage = validationResult;
78
83
  action.valid = false;
@@ -81,13 +86,13 @@ const useField = (options) => {
81
86
  action.valid = validationResult;
82
87
  action.errorMessage = undefined;
83
88
  }
84
- if (action.valid !== valid && typeof dispatchField === 'function') {
89
+ if (typeof dispatchField === 'function') {
85
90
  dispatchField(action);
86
91
  }
87
92
  };
88
93
  validateField();
89
94
  }, 150, [
90
- value,
95
+ internalValue,
91
96
  condition,
92
97
  disableFormData,
93
98
  dispatchField,
@@ -98,8 +103,13 @@ const useField = (options) => {
98
103
  path,
99
104
  user,
100
105
  validate,
101
- valid,
102
106
  ]);
107
+ useEffect(() => {
108
+ if (initialValue !== internalInitialValue) {
109
+ setInternalValue(initialValue);
110
+ setInternalInitialValue(initialValue);
111
+ }
112
+ }, [initialValue, internalInitialValue]);
103
113
  return result;
104
114
  };
105
115
  export default useField;
@@ -42,11 +42,11 @@ export const AuthProvider = ({ children }) => {
42
42
  setUser(decoded);
43
43
  setTokenInMemory(token);
44
44
  }, []);
45
- const logOut = () => {
45
+ const logOut = useCallback(() => {
46
46
  setUser(null);
47
47
  setTokenInMemory(undefined);
48
48
  requests.post(`${serverURL}${api}/${userSlug}/logout`);
49
- };
49
+ }, [serverURL, api, userSlug]);
50
50
  // On mount, get user and set
51
51
  useEffect(() => {
52
52
  const fetchMe = async () => {
@@ -1,3 +1,3 @@
1
1
  import { Payload } from '../../..';
2
- declare function accessResolver(payload: Payload): (_: any, args: any, context: any) => Promise<import("../..").Permissions>;
2
+ declare function accessResolver(payload: Payload): (_: any, args: any, context: any) => Promise<any>;
3
3
  export default accessResolver;
@@ -19,12 +19,14 @@ function accessResolver(payload) {
19
19
  const options = {
20
20
  req: context.req,
21
21
  };
22
- let accessResults = await (0, access_1.default)(options);
23
- accessResults = formatConfigNames(accessResults, payload.config.collections);
24
- accessResults = formatConfigNames(accessResults, payload.config.globals);
25
- return accessResults;
22
+ const accessResults = await (0, access_1.default)(options);
23
+ return {
24
+ ...accessResults,
25
+ ...formatConfigNames(accessResults.collections, payload.config.collections),
26
+ ...formatConfigNames(accessResults.globals, payload.config.globals)
27
+ };
26
28
  }
27
29
  return resolver;
28
30
  }
29
31
  exports.default = accessResolver;
30
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjZXNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2F1dGgvZ3JhcGhxbC9yZXNvbHZlcnMvYWNjZXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsdUZBQStEO0FBQy9ELHFFQUE2QztBQUc3QyxNQUFNLGlCQUFpQixHQUFHLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxFQUFFO0lBQzdDLE1BQU0sZ0JBQWdCLEdBQUcsRUFBRSxHQUFHLE9BQU8sRUFBRSxDQUFDO0lBRXhDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUU7UUFDM0IsTUFBTSxNQUFNLEdBQUcsRUFBRSxHQUFHLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQztRQUNyRCxPQUFPLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzlCLGdCQUFnQixDQUFDLElBQUEsb0JBQVUsRUFBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQztJQUM5QyxDQUFDLENBQUMsQ0FBQztJQUVILE9BQU8sZ0JBQWdCLENBQUM7QUFDMUIsQ0FBQyxDQUFDO0FBRUYsU0FBUyxjQUFjLENBQUMsT0FBZ0I7SUFDdEMsS0FBSyxVQUFVLFFBQVEsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLE9BQU87UUFDdEMsTUFBTSxPQUFPLEdBQUc7WUFDZCxHQUFHLEVBQUUsT0FBTyxDQUFDLEdBQUc7U0FDakIsQ0FBQztRQUVGLElBQUksYUFBYSxHQUFHLE1BQU0sSUFBQSxnQkFBTSxFQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRTFDLGFBQWEsR0FBRyxpQkFBaUIsQ0FBQyxhQUFhLEVBQUUsT0FBTyxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUM3RSxhQUFhLEdBQUcsaUJBQWlCLENBQUMsYUFBYSxFQUFFLE9BQU8sQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFekUsT0FBTyxhQUFhLENBQUM7SUFDdkIsQ0FBQztJQUVELE9BQU8sUUFBUSxDQUFDO0FBQ2xCLENBQUM7QUFFRCxrQkFBZSxjQUFjLENBQUMifQ==
32
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjZXNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2F1dGgvZ3JhcGhxbC9yZXNvbHZlcnMvYWNjZXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsdUZBQStEO0FBQy9ELHFFQUE2QztBQUc3QyxNQUFNLGlCQUFpQixHQUFHLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxFQUFFO0lBQzdDLE1BQU0sZ0JBQWdCLEdBQUcsRUFBRSxHQUFHLE9BQU8sRUFBRSxDQUFDO0lBRXhDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUU7UUFDM0IsTUFBTSxNQUFNLEdBQUcsRUFBRSxHQUFHLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQztRQUNyRCxPQUFPLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzlCLGdCQUFnQixDQUFDLElBQUEsb0JBQVUsRUFBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQztJQUM5QyxDQUFDLENBQUMsQ0FBQztJQUVILE9BQU8sZ0JBQWdCLENBQUM7QUFDMUIsQ0FBQyxDQUFDO0FBRUYsU0FBUyxjQUFjLENBQUMsT0FBZ0I7SUFDdEMsS0FBSyxVQUFVLFFBQVEsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLE9BQU87UUFDdEMsTUFBTSxPQUFPLEdBQUc7WUFDZCxHQUFHLEVBQUUsT0FBTyxDQUFDLEdBQUc7U0FDakIsQ0FBQztRQUVGLE1BQU0sYUFBYSxHQUFHLE1BQU0sSUFBQSxnQkFBTSxFQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRTVDLE9BQU87WUFDTCxHQUFHLGFBQWE7WUFDaEIsR0FBRyxpQkFBaUIsQ0FBQyxhQUFhLENBQUMsV0FBVyxFQUFFLE9BQU8sQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDO1lBQzNFLEdBQUcsaUJBQWlCLENBQUMsYUFBYSxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQztTQUNwRSxDQUFDO0lBQ0osQ0FBQztJQUVELE9BQU8sUUFBUSxDQUFDO0FBQ2xCLENBQUM7QUFFRCxrQkFBZSxjQUFjLENBQUMifQ==
@@ -5,7 +5,6 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  const url_1 = __importDefault(require("url"));
7
7
  const passport_jwt_1 = __importDefault(require("passport-jwt"));
8
- const findByID_1 = __importDefault(require("../../collections/operations/findByID"));
9
8
  const getExtractJWT_1 = __importDefault(require("../getExtractJWT"));
10
9
  const JwtStrategy = passport_jwt_1.default.Strategy;
11
10
  exports.default = ({ secret, config, collections }) => {
@@ -22,11 +21,10 @@ exports.default = ({ secret, config, collections }) => {
22
21
  const collection = collections[token.collection];
23
22
  const parsedURL = url_1.default.parse(req.url);
24
23
  const isGraphQL = parsedURL.pathname === config.routes.graphQL;
25
- const user = await (0, findByID_1.default)({
24
+ const user = await req.payload.findByID({
26
25
  id: token.id,
27
- collection,
26
+ collection: token.collection,
28
27
  req,
29
- overrideAccess: true,
30
28
  depth: isGraphQL ? 0 : collection.config.auth.depth,
31
29
  });
32
30
  if (user && (!collection.config.auth.verify || user._verified)) {
@@ -43,4 +41,4 @@ exports.default = ({ secret, config, collections }) => {
43
41
  }
44
42
  });
45
43
  };
46
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiand0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2F1dGgvc3RyYXRlZ2llcy9qd3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSw4Q0FBc0I7QUFDdEIsZ0VBQTREO0FBRzVELHFGQUE2RDtBQUM3RCxxRUFBNkM7QUFFN0MsTUFBTSxXQUFXLEdBQUcsc0JBQVcsQ0FBQyxRQUFRLENBQUM7QUFFekMsa0JBQWUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFXLEVBQW9CLEVBQUU7SUFDNUUsTUFBTSxJQUFJLEdBQW9CO1FBQzVCLGlCQUFpQixFQUFFLElBQUk7UUFDdkIsY0FBYyxFQUFFLElBQUEsdUJBQWEsRUFBQyxNQUFNLENBQUM7UUFDckMsV0FBVyxFQUFFLE1BQU07S0FDcEIsQ0FBQztJQUVGLE9BQU8sSUFBSSxXQUFXLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxFQUFFO1FBQ3RELElBQUksR0FBRyxDQUFDLElBQUksRUFBRTtZQUNaLElBQUksQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQ3RCO1FBRUQsSUFBSTtZQUNGLE1BQU0sVUFBVSxHQUFHLFdBQVcsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUM7WUFFakQsTUFBTSxTQUFTLEdBQUcsYUFBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDckMsTUFBTSxTQUFTLEdBQUcsU0FBUyxDQUFDLFFBQVEsS0FBSyxNQUFNLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQztZQUUvRCxNQUFNLElBQUksR0FBRyxNQUFNLElBQUEsa0JBQVEsRUFBQztnQkFDMUIsRUFBRSxFQUFFLEtBQUssQ0FBQyxFQUFFO2dCQUNaLFVBQVU7Z0JBQ1YsR0FBRztnQkFDSCxjQUFjLEVBQUUsSUFBSTtnQkFDcEIsS0FBSyxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLO2FBQ3BELENBQUMsQ0FBQztZQUVILElBQUksSUFBSSxJQUFJLENBQUMsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFO2dCQUM5RCxJQUFJLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDO2dCQUN6QyxJQUFJLENBQUMsU0FBUyxHQUFHLFdBQVcsQ0FBQztnQkFDN0IsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQzthQUNsQjtpQkFBTTtnQkFDTCxJQUFJLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO2FBQ25CO1NBQ0Y7UUFBQyxPQUFPLEdBQUcsRUFBRTtZQUNaLElBQUksQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7U0FDbkI7SUFDSCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyJ9
44
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiand0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2F1dGgvc3RyYXRlZ2llcy9qd3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSw4Q0FBc0I7QUFDdEIsZ0VBQTREO0FBRzVELHFFQUE2QztBQUU3QyxNQUFNLFdBQVcsR0FBRyxzQkFBVyxDQUFDLFFBQVEsQ0FBQztBQUV6QyxrQkFBZSxDQUFDLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQVcsRUFBb0IsRUFBRTtJQUM1RSxNQUFNLElBQUksR0FBb0I7UUFDNUIsaUJBQWlCLEVBQUUsSUFBSTtRQUN2QixjQUFjLEVBQUUsSUFBQSx1QkFBYSxFQUFDLE1BQU0sQ0FBQztRQUNyQyxXQUFXLEVBQUUsTUFBTTtLQUNwQixDQUFDO0lBRUYsT0FBTyxJQUFJLFdBQVcsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLEVBQUU7UUFDdEQsSUFBSSxHQUFHLENBQUMsSUFBSSxFQUFFO1lBQ1osSUFBSSxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDdEI7UUFFRCxJQUFJO1lBQ0YsTUFBTSxVQUFVLEdBQUcsV0FBVyxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUVqRCxNQUFNLFNBQVMsR0FBRyxhQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNyQyxNQUFNLFNBQVMsR0FBRyxTQUFTLENBQUMsUUFBUSxLQUFLLE1BQU0sQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDO1lBRS9ELE1BQU0sSUFBSSxHQUFHLE1BQU0sR0FBRyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUM7Z0JBQ3RDLEVBQUUsRUFBRSxLQUFLLENBQUMsRUFBRTtnQkFDWixVQUFVLEVBQUUsS0FBSyxDQUFDLFVBQVU7Z0JBQzVCLEdBQUc7Z0JBQ0gsS0FBSyxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLO2FBQ3BELENBQUMsQ0FBQztZQUVILElBQUksSUFBSSxJQUFJLENBQUMsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFO2dCQUM5RCxJQUFJLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDO2dCQUN6QyxJQUFJLENBQUMsU0FBUyxHQUFHLFdBQVcsQ0FBQztnQkFDN0IsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQzthQUNsQjtpQkFBTTtnQkFDTCxJQUFJLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO2FBQ25CO1NBQ0Y7UUFBQyxPQUFPLEdBQUcsRUFBRTtZQUNaLElBQUksQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7U0FDbkI7SUFDSCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyJ9
@@ -13,6 +13,11 @@ const globalSchema = joi_1.default.object().keys({
13
13
  group: joi_1.default.string(),
14
14
  hideAPIURL: joi_1.default.boolean(),
15
15
  description: joi_1.default.alternatives().try(joi_1.default.string(), componentSchema_1.componentSchema),
16
+ components: joi_1.default.object({
17
+ views: joi_1.default.object({
18
+ Edit: componentSchema_1.componentSchema,
19
+ }),
20
+ }),
16
21
  }),
17
22
  hooks: joi_1.default.object({
18
23
  beforeValidate: joi_1.default.array().items(joi_1.default.func()),
@@ -38,4 +43,4 @@ const globalSchema = joi_1.default.object().keys({
38
43
  }), joi_1.default.boolean()),
39
44
  }).unknown();
40
45
  exports.default = globalSchema;
41
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NoZW1hLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2dsb2JhbHMvY29uZmlnL3NjaGVtYS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLDhDQUFzQjtBQUN0QixxRUFBa0U7QUFDbEUsZ0RBQXNEO0FBRXRELE1BQU0sWUFBWSxHQUFHLGFBQUcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxJQUFJLENBQUM7SUFDckMsSUFBSSxFQUFFLGFBQUcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUU7SUFDN0IsS0FBSyxFQUFFLGFBQUcsQ0FBQyxNQUFNLEVBQUU7SUFDbkIsS0FBSyxFQUFFLGFBQUcsQ0FBQyxNQUFNLENBQUM7UUFDaEIsS0FBSyxFQUFFLGFBQUcsQ0FBQyxNQUFNLEVBQUU7UUFDbkIsVUFBVSxFQUFFLGFBQUcsQ0FBQyxPQUFPLEVBQUU7UUFDekIsV0FBVyxFQUFFLGFBQUcsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxHQUFHLENBQ2pDLGFBQUcsQ0FBQyxNQUFNLEVBQUUsRUFDWixpQ0FBZSxDQUNoQjtLQUNGLENBQUM7SUFDRixLQUFLLEVBQUUsYUFBRyxDQUFDLE1BQU0sQ0FBQztRQUNoQixjQUFjLEVBQUUsYUFBRyxDQUFDLEtBQUssRUFBRSxDQUFDLEtBQUssQ0FBQyxhQUFHLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDN0MsWUFBWSxFQUFFLGFBQUcsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxLQUFLLENBQUMsYUFBRyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzNDLFdBQVcsRUFBRSxhQUFHLENBQUMsS0FBSyxFQUFFLENBQUMsS0FBSyxDQUFDLGFBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUMxQyxVQUFVLEVBQUUsYUFBRyxDQUFDLEtBQUssRUFBRSxDQUFDLEtBQUssQ0FBQyxhQUFHLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDekMsU0FBUyxFQUFFLGFBQUcsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxLQUFLLENBQUMsYUFBRyxDQUFDLElBQUksRUFBRSxDQUFDO0tBQ3pDLENBQUM7SUFDRixTQUFTLEVBQUUsd0JBQWU7SUFDMUIsTUFBTSxFQUFFLGFBQUcsQ0FBQyxNQUFNLENBQUM7UUFDakIsSUFBSSxFQUFFLGFBQUcsQ0FBQyxJQUFJLEVBQUU7UUFDaEIsWUFBWSxFQUFFLGFBQUcsQ0FBQyxJQUFJLEVBQUU7UUFDeEIsTUFBTSxFQUFFLGFBQUcsQ0FBQyxJQUFJLEVBQUU7S0FDbkIsQ0FBQztJQUNGLE1BQU0sRUFBRSxhQUFHLENBQUMsS0FBSyxFQUFFO0lBQ25CLFFBQVEsRUFBRSxhQUFHLENBQUMsWUFBWSxFQUFFLENBQUMsR0FBRyxDQUM5QixhQUFHLENBQUMsTUFBTSxDQUFDO1FBQ1QsR0FBRyxFQUFFLGFBQUcsQ0FBQyxNQUFNLEVBQUU7UUFDakIsTUFBTSxFQUFFLGFBQUcsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxHQUFHLENBQzVCLGFBQUcsQ0FBQyxNQUFNLENBQUM7WUFDVCxRQUFRLEVBQUUsYUFBRyxDQUFDLFlBQVksRUFBRSxDQUFDLEdBQUcsQ0FDOUIsYUFBRyxDQUFDLE9BQU8sRUFBRSxFQUNiLGFBQUcsQ0FBQyxNQUFNLENBQUM7Z0JBQ1QsUUFBUSxFQUFFLGFBQUcsQ0FBQyxNQUFNLEVBQUU7YUFDdkIsQ0FBQyxDQUNIO1NBQ0YsQ0FBQyxFQUNGLGFBQUcsQ0FBQyxPQUFPLEVBQUUsQ0FDZDtLQUNGLENBQUMsRUFDRixhQUFHLENBQUMsT0FBTyxFQUFFLENBQ2Q7Q0FDRixDQUFDLENBQUMsT0FBTyxFQUFFLENBQUM7QUFFYixrQkFBZSxZQUFZLENBQUMifQ==
46
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NoZW1hLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2dsb2JhbHMvY29uZmlnL3NjaGVtYS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLDhDQUFzQjtBQUN0QixxRUFBa0U7QUFDbEUsZ0RBQXNEO0FBRXRELE1BQU0sWUFBWSxHQUFHLGFBQUcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxJQUFJLENBQUM7SUFDckMsSUFBSSxFQUFFLGFBQUcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUU7SUFDN0IsS0FBSyxFQUFFLGFBQUcsQ0FBQyxNQUFNLEVBQUU7SUFDbkIsS0FBSyxFQUFFLGFBQUcsQ0FBQyxNQUFNLENBQUM7UUFDaEIsS0FBSyxFQUFFLGFBQUcsQ0FBQyxNQUFNLEVBQUU7UUFDbkIsVUFBVSxFQUFFLGFBQUcsQ0FBQyxPQUFPLEVBQUU7UUFDekIsV0FBVyxFQUFFLGFBQUcsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxHQUFHLENBQ2pDLGFBQUcsQ0FBQyxNQUFNLEVBQUUsRUFDWixpQ0FBZSxDQUNoQjtRQUNELFVBQVUsRUFBRSxhQUFHLENBQUMsTUFBTSxDQUFDO1lBQ3JCLEtBQUssRUFBRSxhQUFHLENBQUMsTUFBTSxDQUFDO2dCQUNoQixJQUFJLEVBQUUsaUNBQWU7YUFDdEIsQ0FBQztTQUNILENBQUM7S0FDSCxDQUFDO0lBQ0YsS0FBSyxFQUFFLGFBQUcsQ0FBQyxNQUFNLENBQUM7UUFDaEIsY0FBYyxFQUFFLGFBQUcsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxLQUFLLENBQUMsYUFBRyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzdDLFlBQVksRUFBRSxhQUFHLENBQUMsS0FBSyxFQUFFLENBQUMsS0FBSyxDQUFDLGFBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUMzQyxXQUFXLEVBQUUsYUFBRyxDQUFDLEtBQUssRUFBRSxDQUFDLEtBQUssQ0FBQyxhQUFHLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDMUMsVUFBVSxFQUFFLGFBQUcsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxLQUFLLENBQUMsYUFBRyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3pDLFNBQVMsRUFBRSxhQUFHLENBQUMsS0FBSyxFQUFFLENBQUMsS0FBSyxDQUFDLGFBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQztLQUN6QyxDQUFDO0lBQ0YsU0FBUyxFQUFFLHdCQUFlO0lBQzFCLE1BQU0sRUFBRSxhQUFHLENBQUMsTUFBTSxDQUFDO1FBQ2pCLElBQUksRUFBRSxhQUFHLENBQUMsSUFBSSxFQUFFO1FBQ2hCLFlBQVksRUFBRSxhQUFHLENBQUMsSUFBSSxFQUFFO1FBQ3hCLE1BQU0sRUFBRSxhQUFHLENBQUMsSUFBSSxFQUFFO0tBQ25CLENBQUM7SUFDRixNQUFNLEVBQUUsYUFBRyxDQUFDLEtBQUssRUFBRTtJQUNuQixRQUFRLEVBQUUsYUFBRyxDQUFDLFlBQVksRUFBRSxDQUFDLEdBQUcsQ0FDOUIsYUFBRyxDQUFDLE1BQU0sQ0FBQztRQUNULEdBQUcsRUFBRSxhQUFHLENBQUMsTUFBTSxFQUFFO1FBQ2pCLE1BQU0sRUFBRSxhQUFHLENBQUMsWUFBWSxFQUFFLENBQUMsR0FBRyxDQUM1QixhQUFHLENBQUMsTUFBTSxDQUFDO1lBQ1QsUUFBUSxFQUFFLGFBQUcsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxHQUFHLENBQzlCLGFBQUcsQ0FBQyxPQUFPLEVBQUUsRUFDYixhQUFHLENBQUMsTUFBTSxDQUFDO2dCQUNULFFBQVEsRUFBRSxhQUFHLENBQUMsTUFBTSxFQUFFO2FBQ3ZCLENBQUMsQ0FDSDtTQUNGLENBQUMsRUFDRixhQUFHLENBQUMsT0FBTyxFQUFFLENBQ2Q7S0FDRixDQUFDLEVBQ0YsYUFBRyxDQUFDLE9BQU8sRUFBRSxDQUNkO0NBQ0YsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO0FBRWIsa0JBQWUsWUFBWSxDQUFDIn0=
@@ -60,7 +60,7 @@ function registerSchema(payload) {
60
60
  (0, init_3.default)(payload);
61
61
  payload.Query.fields.Access = {
62
62
  type: (0, buildPoliciesType_1.default)(payload),
63
- resolve: access_1.default,
63
+ resolve: (0, access_1.default)(payload),
64
64
  };
65
65
  if (typeof payload.config.graphQL.queries === 'function') {
66
66
  const customQueries = payload.config.graphQL.queries(GraphQL, payload);
@@ -119,4 +119,4 @@ function registerSchema(payload) {
119
119
  ]);
120
120
  }
121
121
  exports.default = registerSchema;
122
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVnaXN0ZXJTY2hlbWEuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZ3JhcGhxbC9yZWdpc3RlclNjaGVtYS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsc0NBQXNDO0FBQ3RDLGlEQUFtQztBQUNuQyxxQ0FBMkQ7QUFDM0QscUZBQXNHO0FBRXRHLHlGQUFpRTtBQUNqRSx5R0FBaUY7QUFDakYsdUVBQTBEO0FBQzFELG1FQUFrRDtBQUNsRCx1RUFBMEQ7QUFDMUQsbUZBQTJEO0FBQzNELDhFQUE4RDtBQUM5RCxrRUFBMEM7QUFFMUMsU0FBd0IsY0FBYyxDQUFDLE9BQWdCO0lBQ3JELE9BQU8sQ0FBQyxLQUFLLEdBQUc7UUFDZCxVQUFVLEVBQUUsRUFBRTtRQUNkLGVBQWUsRUFBRSxFQUFFO0tBQ3BCLENBQUM7SUFFRixJQUFJLE9BQU8sQ0FBQyxNQUFNLENBQUMsWUFBWSxFQUFFO1FBQy9CLE9BQU8sQ0FBQyxLQUFLLENBQUMsZUFBZSxHQUFHLElBQUEsOEJBQW9CLEVBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUNsRixPQUFPLENBQUMsS0FBSyxDQUFDLHVCQUF1QixHQUFHLElBQUEsc0NBQTRCLEVBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztLQUNuRztJQUVELE9BQU8sQ0FBQyxLQUFLLEdBQUc7UUFDZCxJQUFJLEVBQUUsT0FBTztRQUNiLE1BQU0sRUFBRSxFQUFFO0tBQ1gsQ0FBQztJQUVGLE9BQU8sQ0FBQyxRQUFRLEdBQUc7UUFDakIsSUFBSSxFQUFFLFVBQVU7UUFDaEIsTUFBTSxFQUFFLEVBQUU7S0FDWCxDQUFDO0lBRUYsSUFBQSxjQUFlLEVBQUMsT0FBTyxDQUFDLENBQUM7SUFDekIsSUFBQSxjQUFXLEVBQUMsT0FBTyxDQUFDLENBQUM7SUFDckIsSUFBQSxjQUFlLEVBQUMsT0FBTyxDQUFDLENBQUM7SUFFekIsT0FBTyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsTUFBTSxHQUFHO1FBQzVCLElBQUksRUFBRSxJQUFBLDJCQUFpQixFQUFDLE9BQU8sQ0FBQztRQUNoQyxPQUFPLEVBQUUsZ0JBQWM7S0FDeEIsQ0FBQztJQUVGLElBQUksT0FBTyxPQUFPLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEtBQUssVUFBVSxFQUFFO1FBQ3hELE1BQU0sYUFBYSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDdkUsT0FBTyxDQUFDLEtBQUssR0FBRztZQUNkLEdBQUcsT0FBTyxDQUFDLEtBQUs7WUFDaEIsTUFBTSxFQUFFO2dCQUNOLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxNQUFNO2dCQUN2QixHQUFHLENBQUMsYUFBYSxJQUFJLEVBQUUsQ0FBQzthQUN6QjtTQUNGLENBQUM7S0FDSDtJQUVELElBQUksT0FBTyxPQUFPLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEtBQUssVUFBVSxFQUFFO1FBQzFELE1BQU0sZUFBZSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDM0UsT0FBTyxDQUFDLFFBQVEsR0FBRztZQUNqQixHQUFHLE9BQU8sQ0FBQyxRQUFRO1lBQ25CLE1BQU0sRUFBRTtnQkFDTixHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUMsTUFBTTtnQkFDMUIsR0FBRyxDQUFDLGVBQWUsSUFBSSxFQUFFLENBQUM7YUFDM0I7U0FDRixDQUFDO0tBQ0g7SUFFRCxNQUFNLEtBQUssR0FBRyxJQUFJLDJCQUFpQixDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNuRCxNQUFNLFFBQVEsR0FBRyxJQUFJLDJCQUFpQixDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUV6RCxNQUFNLE1BQU0sR0FBRztRQUNiLEtBQUs7UUFDTCxRQUFRO0tBQ1QsQ0FBQztJQUVGLE9BQU8sQ0FBQyxNQUFNLEdBQUcsSUFBSSx1QkFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBRTNDLE9BQU8sQ0FBQyxVQUFVLEdBQUcsS0FBSyxFQUFFLElBQUksRUFBRSxFQUFFO1FBQ2xDLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUM7UUFDeEIsSUFBSSxNQUFNLENBQUMsTUFBTSxFQUFFO1lBQ2pCLE9BQU8sQ0FBQyxVQUFVLEdBQUcsQ0FBQyxDQUFDO1lBQ3ZCLE1BQU0sY0FBYyxHQUFHLE9BQU8sT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsVUFBVSxLQUFLLFVBQVUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7WUFDdEgsT0FBTyxDQUFDLGNBQWMsR0FBRyxNQUFNLElBQUEsc0JBQVksRUFBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsY0FBYyxDQUFDLENBQUM7U0FDekY7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUMsQ0FBQztJQUVGLE9BQU8sQ0FBQyxtQkFBbUIsR0FBRyxDQUFDLEtBQUssRUFBRSxFQUFFO1FBQ3RDLElBQUksT0FBTyxDQUFDLGNBQWMsSUFBSSxPQUFPLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsRUFBRTtZQUN4RSxNQUFNLFFBQVEsR0FBRyxPQUFPLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUM1RCxPQUFPLENBQUMsVUFBVSxJQUFJLENBQUMsQ0FBQztZQUN4QixPQUFPLFFBQVEsQ0FBQztTQUNqQjtRQUVELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQyxDQUFDO0lBRUYsT0FBTyxDQUFDLGVBQWUsR0FBRyxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUN4QyxJQUFBLGtDQUFlLEVBQUM7WUFDZCxVQUFVLEVBQUU7Z0JBQ1YsSUFBQSxtREFBd0IsR0FBRTtnQkFDMUIsSUFBQSwwQ0FBZSxFQUFDLEVBQUUsaUJBQWlCLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxpQ0FBaUM7YUFDN0U7WUFDRCxpQkFBaUIsRUFBRSxPQUFPLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxhQUFhO1lBQ3ZELFNBQVM7WUFDVCxpRkFBaUY7U0FDbEYsQ0FBQztLQUNILENBQUMsQ0FBQztBQUNMLENBQUM7QUE3RkQsaUNBNkZDIn0=
122
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVnaXN0ZXJTY2hlbWEuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZ3JhcGhxbC9yZWdpc3RlclNjaGVtYS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsc0NBQXNDO0FBQ3RDLGlEQUFtQztBQUNuQyxxQ0FBMkQ7QUFDM0QscUZBQXNHO0FBRXRHLHlGQUFpRTtBQUNqRSx5R0FBaUY7QUFDakYsdUVBQTBEO0FBQzFELG1FQUFrRDtBQUNsRCx1RUFBMEQ7QUFDMUQsbUZBQTJEO0FBQzNELDhFQUE4RDtBQUM5RCxrRUFBMEM7QUFFMUMsU0FBd0IsY0FBYyxDQUFDLE9BQWdCO0lBQ3JELE9BQU8sQ0FBQyxLQUFLLEdBQUc7UUFDZCxVQUFVLEVBQUUsRUFBRTtRQUNkLGVBQWUsRUFBRSxFQUFFO0tBQ3BCLENBQUM7SUFFRixJQUFJLE9BQU8sQ0FBQyxNQUFNLENBQUMsWUFBWSxFQUFFO1FBQy9CLE9BQU8sQ0FBQyxLQUFLLENBQUMsZUFBZSxHQUFHLElBQUEsOEJBQW9CLEVBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUNsRixPQUFPLENBQUMsS0FBSyxDQUFDLHVCQUF1QixHQUFHLElBQUEsc0NBQTRCLEVBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztLQUNuRztJQUVELE9BQU8sQ0FBQyxLQUFLLEdBQUc7UUFDZCxJQUFJLEVBQUUsT0FBTztRQUNiLE1BQU0sRUFBRSxFQUFFO0tBQ1gsQ0FBQztJQUVGLE9BQU8sQ0FBQyxRQUFRLEdBQUc7UUFDakIsSUFBSSxFQUFFLFVBQVU7UUFDaEIsTUFBTSxFQUFFLEVBQUU7S0FDWCxDQUFDO0lBRUYsSUFBQSxjQUFlLEVBQUMsT0FBTyxDQUFDLENBQUM7SUFDekIsSUFBQSxjQUFXLEVBQUMsT0FBTyxDQUFDLENBQUM7SUFDckIsSUFBQSxjQUFlLEVBQUMsT0FBTyxDQUFDLENBQUM7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
@@ -266,6 +266,24 @@ const MyComponent: React.FC = () => {
266
266
  };
267
267
  ```
268
268
 
269
+ ### useEditDepth
270
+
271
+ Sends back how many editing levels "deep" the current component is. Edit depth is relevant while adding new documents / editing documents in modal windows and other cases.
272
+
273
+ ```tsx
274
+ import { useEditDepth } from 'payload/components/utilities';
275
+
276
+ const MyComponent: React.FC = () => {
277
+ // highlight-start
278
+ const editDepth = useEditDepth();
279
+ // highlight-end
280
+
281
+ return (
282
+ <span>My component is {editDepth} levels deep</span>
283
+ )
284
+ }
285
+ ```
286
+
269
287
  ### usePreferences
270
288
 
271
289
  Returns methods to set and get user preferences. More info can be found [here](https://payloadcms.com/docs/admin/preferences).
@@ -27,9 +27,9 @@ Field-level hooks offer incredible potential for encapsulating your logic. They
27
27
 
28
28
  Example field configuration:
29
29
  ```ts
30
- import { CollectionConfig } from 'payload/types';
30
+ import { Field } from 'payload/types';
31
31
 
32
- const ExampleCollection: CollectionConfig = {
32
+ const ExampleField: Field = {
33
33
  name: 'name',
34
34
  type: 'text',
35
35
  // highlight-start
@@ -63,8 +63,8 @@ You can specify more options within the Local API vs. REST or GraphQL due to the
63
63
  | `depth` | [Control auto-population](/docs/getting-started/concepts#depth) of nested relationship and upload fields. |
64
64
  | `locale` | Specify [locale](/docs/configuration/localization) for any returned documents. |
65
65
  | `fallbackLocale` | Specify a [fallback locale](/docs/configuration/localization) to use for any returned documents. |
66
- | `overrideAccess` | Skip access control. By default, this property is set to false. |
67
- | `user` | If you re-enable access control, you can specify a user to use against the access control checks. |
66
+ | `overrideAccess` | Skip access control. By default, this property is set to true within all Local API operations. |
67
+ | `user` | If you set `overrideAccess` to `false`, you can pass a user to use against the access control checks. |
68
68
  | `showHiddenFields` | Opt-in to receiving hidden fields. By default, they are hidden from returned documents in accordance to your config. |
69
69
  | `pagination` | Set to false to return all documents and avoid querying for document counts. |
70
70
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "payload",
3
- "version": "1.1.21",
3
+ "version": "1.1.23",
4
4
  "description": "Node, React and MongoDB Headless CMS and Application Framework",
5
5
  "license": "MIT",
6
6
  "engines": {
@@ -1,4 +0,0 @@
1
- declare const flattenFilters: {
2
- test: (_: string, value: unknown) => boolean;
3
- }[];
4
- export default flattenFilters;
@@ -1,8 +0,0 @@
1
- const flattenFilters = [{
2
- test: (_, value) => {
3
- const hasValidProperty = Object.prototype.hasOwnProperty.call(value, 'valid');
4
- const hasValueProperty = Object.prototype.hasOwnProperty.call(value, 'value');
5
- return (hasValidProperty && hasValueProperty);
6
- },
7
- }];
8
- export default flattenFilters;