payload 0.15.3 → 0.15.4

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 (89) hide show
  1. package/CHANGELOG.md +21 -0
  2. package/dist/admin/components/elements/WhereBuilder/field-types.d.ts +2 -2
  3. package/dist/admin/components/elements/WhereBuilder/field-types.js +11 -7
  4. package/dist/admin/components/forms/DraggableSection/index.js +2 -3
  5. package/dist/admin/components/forms/Form/buildStateFromSchema.d.ts +10 -1
  6. package/dist/admin/components/forms/Form/buildStateFromSchema.js +14 -6
  7. package/dist/admin/components/forms/Form/getDataByPath.js +6 -11
  8. package/dist/admin/components/forms/Form/getSiblingData.js +12 -14
  9. package/dist/admin/components/forms/Form/index.js +23 -6
  10. package/dist/admin/components/forms/Form/reduceFieldsToValues.d.ts +1 -1
  11. package/dist/admin/components/forms/Form/reduceFieldsToValues.js +1 -2
  12. package/dist/admin/components/forms/Form/types.d.ts +3 -2
  13. package/dist/admin/components/forms/RenderFields/index.d.ts +1 -2
  14. package/dist/admin/components/forms/RenderFields/index.js +6 -16
  15. package/dist/admin/components/forms/RenderFields/types.d.ts +0 -5
  16. package/dist/admin/components/forms/field-types/Array/Array.js +18 -9
  17. package/dist/admin/components/forms/field-types/Blocks/Blocks.js +21 -15
  18. package/dist/admin/components/forms/field-types/Checkbox/index.js +3 -4
  19. package/dist/admin/components/forms/field-types/Code/Code.js +4 -5
  20. package/dist/admin/components/forms/field-types/DateTime/index.js +2 -3
  21. package/dist/admin/components/forms/field-types/Email/index.js +2 -3
  22. package/dist/admin/components/forms/field-types/Number/index.js +3 -4
  23. package/dist/admin/components/forms/field-types/Password/index.js +2 -2
  24. package/dist/admin/components/forms/field-types/Point/index.js +2 -3
  25. package/dist/admin/components/forms/field-types/RadioGroup/index.js +3 -4
  26. package/dist/admin/components/forms/field-types/Relationship/index.js +49 -17
  27. package/dist/admin/components/forms/field-types/RichText/RichText.js +3 -4
  28. package/dist/admin/components/forms/field-types/RichText/elements/upload/Element/EditModal/index.js +4 -2
  29. package/dist/admin/components/forms/field-types/Row/index.js +7 -2
  30. package/dist/admin/components/forms/field-types/Select/index.js +4 -5
  31. package/dist/admin/components/forms/field-types/Text/index.js +6 -3
  32. package/dist/admin/components/forms/field-types/Textarea/index.js +4 -5
  33. package/dist/admin/components/forms/field-types/Upload/Add/index.js +1 -1
  34. package/dist/admin/components/forms/field-types/Upload/Input.d.ts +2 -1
  35. package/dist/admin/components/forms/field-types/Upload/Input.js +3 -1
  36. package/dist/admin/components/forms/field-types/Upload/SelectExisting/index.js +27 -4
  37. package/dist/admin/components/forms/field-types/Upload/SelectExisting/types.d.ts +3 -0
  38. package/dist/admin/components/forms/field-types/Upload/index.js +4 -5
  39. package/dist/admin/components/forms/field-types/getFilterOptionsQuery.d.ts +5 -0
  40. package/dist/admin/components/forms/field-types/getFilterOptionsQuery.js +11 -0
  41. package/dist/admin/components/forms/useField/index.js +39 -8
  42. package/dist/admin/components/utilities/OperationProvider/index.d.ts +4 -0
  43. package/dist/admin/components/utilities/OperationProvider/index.js +3 -0
  44. package/dist/admin/components/views/Account/Default.js +41 -39
  45. package/dist/admin/components/views/Account/index.js +4 -2
  46. package/dist/admin/components/views/CreateFirstUser/index.js +1 -1
  47. package/dist/admin/components/views/Global/Default.js +45 -43
  48. package/dist/admin/components/views/Global/index.js +5 -5
  49. package/dist/admin/components/views/collections/Edit/Auth/APIKey.js +1 -1
  50. package/dist/admin/components/views/collections/Edit/Default.js +55 -53
  51. package/dist/admin/components/views/collections/Edit/index.js +5 -5
  52. package/dist/collections/tests/pointField.spec.js +26 -15
  53. package/dist/collections/tests/relationships.spec.js +21 -1
  54. package/dist/config/load.d.ts +3 -1
  55. package/dist/config/load.js +5 -3
  56. package/dist/config/types.d.ts +3 -0
  57. package/dist/config/types.js +1 -1
  58. package/dist/config/validate.d.ts +2 -1
  59. package/dist/config/validate.js +2 -4
  60. package/dist/email/build.d.ts +2 -1
  61. package/dist/email/build.js +7 -9
  62. package/dist/express/middleware/errorHandler.spec.js +2 -2
  63. package/dist/fields/config/sanitize.js +2 -2
  64. package/dist/fields/config/schema.js +3 -1
  65. package/dist/fields/config/types.d.ts +25 -1
  66. package/dist/fields/config/types.js +1 -1
  67. package/dist/fields/performFieldOperations.js +3 -3
  68. package/dist/fields/traverseFields.js +15 -5
  69. package/dist/fields/validationPromise.d.ts +10 -3
  70. package/dist/fields/validationPromise.js +16 -5
  71. package/dist/fields/validations.d.ts +33 -35
  72. package/dist/fields/validations.js +130 -76
  73. package/dist/fields/validations.spec.js +115 -43
  74. package/dist/graphql/schema/fieldToSchemaMap.js +7 -7
  75. package/dist/index.d.ts +2 -2
  76. package/dist/index.js +5 -5
  77. package/dist/mongoose/buildQuery.js +2 -2
  78. package/dist/mongoose/connect.d.ts +2 -1
  79. package/dist/mongoose/connect.js +2 -4
  80. package/dist/mongoose/sanitizeFormattedValue.js +12 -3
  81. package/dist/utilities/logger.d.ts +1 -1
  82. package/dist/utilities/logger.js +10 -6
  83. package/dist/webpack/getBaseConfig.js +2 -1
  84. package/docs/fields/overview.mdx +39 -3
  85. package/docs/fields/relationship.mdx +45 -0
  86. package/docs/fields/upload.mdx +1 -0
  87. package/docs/getting-started/installation.mdx +14 -10
  88. package/docs/queries/overview.mdx +2 -1
  89. package/package.json +1 -1
@@ -14,6 +14,7 @@ import LeaveWithoutSaving from '../../modals/LeaveWithoutSaving';
14
14
  import Meta from '../../utilities/Meta';
15
15
  import Auth from '../collections/Edit/Auth';
16
16
  import Loading from '../../elements/Loading';
17
+ import { OperationContext } from '../../utilities/OperationProvider';
17
18
  import './index.scss';
18
19
  const baseClass = 'account';
19
20
  const DefaultAccount = (props) => {
@@ -26,44 +27,45 @@ const DefaultAccount = (props) => {
26
27
  ].filter(Boolean).join(' ');
27
28
  return (React.createElement("div", { className: classes },
28
29
  isLoading && (React.createElement(Loading, null)),
29
- !isLoading && (React.createElement(Form, { className: `${baseClass}__form`, method: "put", action: action, initialState: initialState, disabled: !hasSavePermission },
30
- React.createElement("div", { className: `${baseClass}__main` },
31
- React.createElement(Meta, { title: "Account", description: "Account of current user", keywords: "Account, Dashboard, Payload, CMS" }),
32
- React.createElement(Eyebrow, null),
33
- !(((_a = collection.versions) === null || _a === void 0 ? void 0 : _a.drafts) && ((_c = (_b = collection.versions) === null || _b === void 0 ? void 0 : _b.drafts) === null || _c === void 0 ? void 0 : _c.autosave)) && (React.createElement(LeaveWithoutSaving, null)),
34
- React.createElement("div", { className: `${baseClass}__edit` },
35
- React.createElement("header", { className: `${baseClass}__header` },
36
- React.createElement("h1", null,
37
- React.createElement(RenderTitle, { ...{ data, useAsTitle, fallback: '[Untitled]' } }))),
38
- React.createElement(Auth, { useAPIKey: auth.useAPIKey, collection: collection, email: data === null || data === void 0 ? void 0 : data.email, operation: "update" }),
39
- React.createElement(RenderFields, { operation: "update", permissions: permissions.fields, readOnly: !hasSavePermission, filter: (field) => { var _a; return ((_a = field === null || field === void 0 ? void 0 : field.admin) === null || _a === void 0 ? void 0 : _a.position) !== 'sidebar'; }, fieldTypes: fieldTypes, fieldSchema: fields }))),
40
- React.createElement("div", { className: `${baseClass}__sidebar-wrap` },
41
- React.createElement("div", { className: `${baseClass}__sidebar` },
42
- React.createElement("div", { className: `${baseClass}__sidebar-sticky-wrap` },
43
- React.createElement("ul", { className: `${baseClass}__collection-actions` }, ((_d = permissions === null || permissions === void 0 ? void 0 : permissions.create) === null || _d === void 0 ? void 0 : _d.permission) && (React.createElement(React.Fragment, null,
44
- React.createElement("li", null,
45
- React.createElement(Link, { to: `${admin}/collections/${slug}/create` }, "Create New"))))),
46
- React.createElement("div", { className: `${baseClass}__document-actions${preview ? ` ${baseClass}__document-actions--with-preview` : ''}` },
47
- React.createElement(PreviewButton, { generatePreviewURL: preview, data: data }),
48
- hasSavePermission && (React.createElement(FormSubmit, null, "Save"))),
49
- React.createElement("div", { className: `${baseClass}__sidebar-fields` },
50
- React.createElement(RenderFields, { operation: "update", permissions: permissions.fields, readOnly: !hasSavePermission, filter: (field) => { var _a; return ((_a = field === null || field === void 0 ? void 0 : field.admin) === null || _a === void 0 ? void 0 : _a.position) === 'sidebar'; }, fieldTypes: fieldTypes, fieldSchema: fields })),
51
- React.createElement("ul", { className: `${baseClass}__meta` },
52
- React.createElement("li", { className: `${baseClass}__api-url` },
53
- React.createElement("span", { className: `${baseClass}__label` },
54
- "API URL",
55
- ' ',
56
- React.createElement(CopyToClipboard, { value: apiURL })),
57
- React.createElement("a", { href: apiURL, target: "_blank", rel: "noopener noreferrer" }, apiURL)),
58
- React.createElement("li", null,
59
- React.createElement("div", { className: `${baseClass}__label` }, "ID"),
60
- React.createElement("div", null, data === null || data === void 0 ? void 0 : data.id)),
61
- timestamps && (React.createElement(React.Fragment, null,
62
- data.updatedAt && (React.createElement("li", null,
63
- React.createElement("div", { className: `${baseClass}__label` }, "Last Modified"),
64
- React.createElement("div", null, format(new Date(data.updatedAt), dateFormat)))),
65
- data.createdAt && (React.createElement("li", null,
66
- React.createElement("div", { className: `${baseClass}__label` }, "Created"),
67
- React.createElement("div", null, format(new Date(data.createdAt), dateFormat))))))))))))));
30
+ !isLoading && (React.createElement(OperationContext.Provider, { value: "update" },
31
+ React.createElement(Form, { className: `${baseClass}__form`, method: "put", action: action, initialState: initialState, disabled: !hasSavePermission },
32
+ React.createElement("div", { className: `${baseClass}__main` },
33
+ React.createElement(Meta, { title: "Account", description: "Account of current user", keywords: "Account, Dashboard, Payload, CMS" }),
34
+ React.createElement(Eyebrow, null),
35
+ !(((_a = collection.versions) === null || _a === void 0 ? void 0 : _a.drafts) && ((_c = (_b = collection.versions) === null || _b === void 0 ? void 0 : _b.drafts) === null || _c === void 0 ? void 0 : _c.autosave)) && (React.createElement(LeaveWithoutSaving, null)),
36
+ React.createElement("div", { className: `${baseClass}__edit` },
37
+ React.createElement("header", { className: `${baseClass}__header` },
38
+ React.createElement("h1", null,
39
+ React.createElement(RenderTitle, { ...{ data, useAsTitle, fallback: '[Untitled]' } }))),
40
+ React.createElement(Auth, { useAPIKey: auth.useAPIKey, collection: collection, email: data === null || data === void 0 ? void 0 : data.email, operation: "update" }),
41
+ React.createElement(RenderFields, { permissions: permissions.fields, readOnly: !hasSavePermission, filter: (field) => { var _a; return ((_a = field === null || field === void 0 ? void 0 : field.admin) === null || _a === void 0 ? void 0 : _a.position) !== 'sidebar'; }, fieldTypes: fieldTypes, fieldSchema: fields }))),
42
+ React.createElement("div", { className: `${baseClass}__sidebar-wrap` },
43
+ React.createElement("div", { className: `${baseClass}__sidebar` },
44
+ React.createElement("div", { className: `${baseClass}__sidebar-sticky-wrap` },
45
+ React.createElement("ul", { className: `${baseClass}__collection-actions` }, ((_d = permissions === null || permissions === void 0 ? void 0 : permissions.create) === null || _d === void 0 ? void 0 : _d.permission) && (React.createElement(React.Fragment, null,
46
+ React.createElement("li", null,
47
+ React.createElement(Link, { to: `${admin}/collections/${slug}/create` }, "Create New"))))),
48
+ React.createElement("div", { className: `${baseClass}__document-actions${preview ? ` ${baseClass}__document-actions--with-preview` : ''}` },
49
+ React.createElement(PreviewButton, { generatePreviewURL: preview, data: data }),
50
+ hasSavePermission && (React.createElement(FormSubmit, null, "Save"))),
51
+ React.createElement("div", { className: `${baseClass}__sidebar-fields` },
52
+ React.createElement(RenderFields, { permissions: permissions.fields, readOnly: !hasSavePermission, filter: (field) => { var _a; return ((_a = field === null || field === void 0 ? void 0 : field.admin) === null || _a === void 0 ? void 0 : _a.position) === 'sidebar'; }, fieldTypes: fieldTypes, fieldSchema: fields })),
53
+ React.createElement("ul", { className: `${baseClass}__meta` },
54
+ React.createElement("li", { className: `${baseClass}__api-url` },
55
+ React.createElement("span", { className: `${baseClass}__label` },
56
+ "API URL",
57
+ ' ',
58
+ React.createElement(CopyToClipboard, { value: apiURL })),
59
+ React.createElement("a", { href: apiURL, target: "_blank", rel: "noopener noreferrer" }, apiURL)),
60
+ React.createElement("li", null,
61
+ React.createElement("div", { className: `${baseClass}__label` }, "ID"),
62
+ React.createElement("div", null, data === null || data === void 0 ? void 0 : data.id)),
63
+ timestamps && (React.createElement(React.Fragment, null,
64
+ data.updatedAt && (React.createElement("li", null,
65
+ React.createElement("div", { className: `${baseClass}__label` }, "Last Modified"),
66
+ React.createElement("div", null, format(new Date(data.updatedAt), dateFormat)))),
67
+ data.createdAt && (React.createElement("li", null,
68
+ React.createElement("div", { className: `${baseClass}__label` }, "Created"),
69
+ React.createElement("div", null, format(new Date(data.createdAt), dateFormat)))))))))))))));
68
70
  };
69
71
  export default DefaultAccount;
@@ -8,6 +8,7 @@ import DefaultAccount from './Default';
8
8
  import buildStateFromSchema from '../../forms/Form/buildStateFromSchema';
9
9
  import RenderCustomComponent from '../../utilities/RenderCustomComponent';
10
10
  import { NegativeFieldGutterProvider } from '../../forms/FieldTypeGutter/context';
11
+ import { useDocumentInfo } from '../../utilities/DocumentInfo';
11
12
  const AccountView = () => {
12
13
  var _a, _b;
13
14
  const { state: locationState } = useLocation();
@@ -15,6 +16,7 @@ const AccountView = () => {
15
16
  const { setStepNav } = useStepNav();
16
17
  const { user, permissions } = useAuth();
17
18
  const [initialState, setInitialState] = useState({});
19
+ const { id } = useDocumentInfo();
18
20
  const { serverURL, routes: { api }, collections, admin: { user: adminUser, components: { views: { Account: CustomAccount, } = {
19
21
  Account: undefined,
20
22
  }, } = {}, } = {
@@ -36,11 +38,11 @@ const AccountView = () => {
36
38
  }, [setStepNav]);
37
39
  useEffect(() => {
38
40
  const awaitInitialState = async () => {
39
- const state = await buildStateFromSchema(fields, dataToRender);
41
+ const state = await buildStateFromSchema({ fieldSchema: fields, data: dataToRender, operation: 'update', id, user });
40
42
  setInitialState(state);
41
43
  };
42
44
  awaitInitialState();
43
- }, [dataToRender, fields]);
45
+ }, [dataToRender, fields, id, user]);
44
46
  return (React.createElement(NegativeFieldGutterProvider, { allow: true },
45
47
  React.createElement(RenderCustomComponent, { DefaultComponent: DefaultAccount, CustomComponent: CustomAccount, componentProps: {
46
48
  action,
@@ -43,7 +43,7 @@ const CreateFirstUser = (props) => {
43
43
  React.createElement("h1", null, "Welcome"),
44
44
  React.createElement("p", null, "To begin, create your first user."),
45
45
  React.createElement(Meta, { title: "Create First User", description: "Create first user", keywords: "Create, Payload, CMS" }),
46
- React.createElement(Form, { onSuccess: onSuccess, method: "post", redirect: admin, action: `${serverURL}${api}/${userSlug}/first-register` },
46
+ React.createElement(Form, { onSuccess: onSuccess, method: "post", redirect: admin, action: `${serverURL}${api}/${userSlug}/first-register`, validationOperation: "create" },
47
47
  React.createElement(NegativeFieldGutterProvider, { allow: true },
48
48
  React.createElement(RenderFields, { fieldSchema: [
49
49
  ...fields,
@@ -19,6 +19,7 @@ import Publish from '../../elements/Publish';
19
19
  import Status from '../../elements/Status';
20
20
  import Autosave from '../../elements/Autosave';
21
21
  import './index.scss';
22
+ import { OperationContext } from '../../utilities/OperationProvider';
22
23
  const baseClass = 'global-edit';
23
24
  const DefaultGlobalView = (props) => {
24
25
  var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r;
@@ -29,48 +30,49 @@ const DefaultGlobalView = (props) => {
29
30
  const hasSavePermission = (_a = permissions === null || permissions === void 0 ? void 0 : permissions.update) === null || _a === void 0 ? void 0 : _a.permission;
30
31
  return (React.createElement("div", { className: baseClass },
31
32
  isLoading && (React.createElement(Loading, null)),
32
- !isLoading && (React.createElement(Form, { className: `${baseClass}__form`, method: "post", action: action, onSuccess: onSave, disabled: !hasSavePermission, initialState: initialState },
33
- React.createElement("div", { className: `${baseClass}__main` },
34
- React.createElement(Meta, { title: label, description: label, keywords: `${label}, Payload, CMS` }),
35
- React.createElement(Eyebrow, null),
36
- !(((_b = global.versions) === null || _b === void 0 ? void 0 : _b.drafts) && ((_d = (_c = global.versions) === null || _c === void 0 ? void 0 : _c.drafts) === null || _d === void 0 ? void 0 : _d.autosave)) && (React.createElement(LeaveWithoutSaving, null)),
37
- React.createElement("div", { className: `${baseClass}__edit` },
38
- React.createElement("header", { className: `${baseClass}__header` },
39
- React.createElement("h1", null,
40
- "Edit",
41
- ' ',
42
- label),
43
- description && (React.createElement("div", { className: `${baseClass}__sub-header` },
44
- React.createElement(ViewDescription, { description: description })))),
45
- React.createElement(RenderFields, { operation: "update", readOnly: !hasSavePermission, permissions: permissions.fields, filter: (field) => (!field.admin.position || (field.admin.position && field.admin.position !== 'sidebar')), fieldTypes: fieldTypes, fieldSchema: fields }))),
46
- React.createElement("div", { className: `${baseClass}__sidebar-wrap` },
47
- React.createElement("div", { className: `${baseClass}__sidebar` },
48
- React.createElement("div", { className: `${baseClass}__sidebar-sticky-wrap` },
49
- React.createElement("div", { className: `${baseClass}__document-actions${((((_e = global.versions) === null || _e === void 0 ? void 0 : _e.drafts) && !((_g = (_f = global.versions) === null || _f === void 0 ? void 0 : _f.drafts) === null || _g === void 0 ? void 0 : _g.autosave)) || preview) ? ` ${baseClass}__document-actions--has-2` : ''}` },
50
- (preview && (!((_h = global.versions) === null || _h === void 0 ? void 0 : _h.drafts) || ((_k = (_j = global.versions) === null || _j === void 0 ? void 0 : _j.drafts) === null || _k === void 0 ? void 0 : _k.autosave))) && (React.createElement(PreviewButton, { generatePreviewURL: preview, data: data })),
51
- hasSavePermission && (React.createElement(React.Fragment, null,
52
- ((_l = global.versions) === null || _l === void 0 ? void 0 : _l.drafts) && (React.createElement(React.Fragment, null,
53
- !global.versions.drafts.autosave && (React.createElement(SaveDraft, null)),
54
- React.createElement(Publish, null))),
55
- !((_m = global.versions) === null || _m === void 0 ? void 0 : _m.drafts) && (React.createElement(FormSubmit, null, "Save"))))),
56
- React.createElement("div", { className: `${baseClass}__sidebar-fields` },
57
- (preview && (((_o = global.versions) === null || _o === void 0 ? void 0 : _o.drafts) && !((_q = (_p = global.versions) === null || _p === void 0 ? void 0 : _p.drafts) === null || _q === void 0 ? void 0 : _q.autosave))) && (React.createElement(PreviewButton, { generatePreviewURL: preview, data: data })),
58
- ((_r = global.versions) === null || _r === void 0 ? void 0 : _r.drafts) && (React.createElement(React.Fragment, null,
59
- React.createElement(Status, null),
60
- (global.versions.drafts.autosave && hasSavePermission) && (React.createElement(Autosave, { publishedDocUpdatedAt: (publishedDoc === null || publishedDoc === void 0 ? void 0 : publishedDoc.updatedAt) || (data === null || data === void 0 ? void 0 : data.createdAt), global: global })))),
61
- React.createElement(RenderFields, { operation: "update", readOnly: !hasSavePermission, permissions: permissions.fields, filter: (field) => field.admin.position === 'sidebar', fieldTypes: fieldTypes, fieldSchema: fields })),
62
- React.createElement("ul", { className: `${baseClass}__meta` },
63
- versions && (React.createElement("li", null,
64
- React.createElement("div", { className: `${baseClass}__label` }, "Versions"),
65
- React.createElement(VersionsCount, { global: global }))),
66
- (data && !hideAPIURL) && (React.createElement("li", { className: `${baseClass}__api-url` },
67
- React.createElement("span", { className: `${baseClass}__label` },
68
- "API URL",
69
- ' ',
70
- React.createElement(CopyToClipboard, { value: apiURL })),
71
- React.createElement("a", { href: apiURL, target: "_blank", rel: "noopener noreferrer" }, apiURL))),
72
- data.updatedAt && (React.createElement("li", null,
73
- React.createElement("div", { className: `${baseClass}__label` }, "Last Modified"),
74
- React.createElement("div", null, format(new Date(data.updatedAt), dateFormat))))))))))));
33
+ !isLoading && (React.createElement(OperationContext.Provider, { value: "update" },
34
+ React.createElement(Form, { className: `${baseClass}__form`, method: "post", action: action, onSuccess: onSave, disabled: !hasSavePermission, initialState: initialState },
35
+ React.createElement("div", { className: `${baseClass}__main` },
36
+ React.createElement(Meta, { title: label, description: label, keywords: `${label}, Payload, CMS` }),
37
+ React.createElement(Eyebrow, null),
38
+ !(((_b = global.versions) === null || _b === void 0 ? void 0 : _b.drafts) && ((_d = (_c = global.versions) === null || _c === void 0 ? void 0 : _c.drafts) === null || _d === void 0 ? void 0 : _d.autosave)) && (React.createElement(LeaveWithoutSaving, null)),
39
+ React.createElement("div", { className: `${baseClass}__edit` },
40
+ React.createElement("header", { className: `${baseClass}__header` },
41
+ React.createElement("h1", null,
42
+ "Edit",
43
+ ' ',
44
+ label),
45
+ description && (React.createElement("div", { className: `${baseClass}__sub-header` },
46
+ React.createElement(ViewDescription, { description: description })))),
47
+ React.createElement(RenderFields, { readOnly: !hasSavePermission, permissions: permissions.fields, filter: (field) => (!field.admin.position || (field.admin.position && field.admin.position !== 'sidebar')), fieldTypes: fieldTypes, fieldSchema: fields }))),
48
+ React.createElement("div", { className: `${baseClass}__sidebar-wrap` },
49
+ React.createElement("div", { className: `${baseClass}__sidebar` },
50
+ React.createElement("div", { className: `${baseClass}__sidebar-sticky-wrap` },
51
+ React.createElement("div", { className: `${baseClass}__document-actions${((((_e = global.versions) === null || _e === void 0 ? void 0 : _e.drafts) && !((_g = (_f = global.versions) === null || _f === void 0 ? void 0 : _f.drafts) === null || _g === void 0 ? void 0 : _g.autosave)) || preview) ? ` ${baseClass}__document-actions--has-2` : ''}` },
52
+ (preview && (!((_h = global.versions) === null || _h === void 0 ? void 0 : _h.drafts) || ((_k = (_j = global.versions) === null || _j === void 0 ? void 0 : _j.drafts) === null || _k === void 0 ? void 0 : _k.autosave))) && (React.createElement(PreviewButton, { generatePreviewURL: preview, data: data })),
53
+ hasSavePermission && (React.createElement(React.Fragment, null,
54
+ ((_l = global.versions) === null || _l === void 0 ? void 0 : _l.drafts) && (React.createElement(React.Fragment, null,
55
+ !global.versions.drafts.autosave && (React.createElement(SaveDraft, null)),
56
+ React.createElement(Publish, null))),
57
+ !((_m = global.versions) === null || _m === void 0 ? void 0 : _m.drafts) && (React.createElement(FormSubmit, null, "Save"))))),
58
+ React.createElement("div", { className: `${baseClass}__sidebar-fields` },
59
+ (preview && (((_o = global.versions) === null || _o === void 0 ? void 0 : _o.drafts) && !((_q = (_p = global.versions) === null || _p === void 0 ? void 0 : _p.drafts) === null || _q === void 0 ? void 0 : _q.autosave))) && (React.createElement(PreviewButton, { generatePreviewURL: preview, data: data })),
60
+ ((_r = global.versions) === null || _r === void 0 ? void 0 : _r.drafts) && (React.createElement(React.Fragment, null,
61
+ React.createElement(Status, null),
62
+ (global.versions.drafts.autosave && hasSavePermission) && (React.createElement(Autosave, { publishedDocUpdatedAt: (publishedDoc === null || publishedDoc === void 0 ? void 0 : publishedDoc.updatedAt) || (data === null || data === void 0 ? void 0 : data.createdAt), global: global })))),
63
+ React.createElement(RenderFields, { readOnly: !hasSavePermission, permissions: permissions.fields, filter: (field) => field.admin.position === 'sidebar', fieldTypes: fieldTypes, fieldSchema: fields })),
64
+ React.createElement("ul", { className: `${baseClass}__meta` },
65
+ versions && (React.createElement("li", null,
66
+ React.createElement("div", { className: `${baseClass}__label` }, "Versions"),
67
+ React.createElement(VersionsCount, { global: global }))),
68
+ (data && !hideAPIURL) && (React.createElement("li", { className: `${baseClass}__api-url` },
69
+ React.createElement("span", { className: `${baseClass}__label` },
70
+ "API URL",
71
+ ' ',
72
+ React.createElement(CopyToClipboard, { value: apiURL })),
73
+ React.createElement("a", { href: apiURL, target: "_blank", rel: "noopener noreferrer" }, apiURL))),
74
+ data.updatedAt && (React.createElement("li", null,
75
+ React.createElement("div", { className: `${baseClass}__label` }, "Last Modified"),
76
+ React.createElement("div", null, format(new Date(data.updatedAt), dateFormat)))))))))))));
75
77
  };
76
78
  export default DefaultGlobalView;
@@ -14,7 +14,7 @@ const GlobalView = (props) => {
14
14
  const { state: locationState } = useLocation();
15
15
  const locale = useLocale();
16
16
  const { setStepNav } = useStepNav();
17
- const { permissions } = useAuth();
17
+ const { permissions, user } = useAuth();
18
18
  const [initialState, setInitialState] = useState({});
19
19
  const { getVersions } = useDocumentInfo();
20
20
  const { serverURL, routes: { api, }, } = useConfig();
@@ -22,9 +22,9 @@ const GlobalView = (props) => {
22
22
  const { slug, label, fields, admin: { components: { views: { Edit: CustomEdit, } = {}, } = {}, } = {}, } = global;
23
23
  const onSave = useCallback(async (json) => {
24
24
  getVersions();
25
- const state = await buildStateFromSchema(fields, json.result);
25
+ const state = await buildStateFromSchema({ fieldSchema: fields, data: json.result, operation: 'update', user });
26
26
  setInitialState(state);
27
- }, [getVersions, fields]);
27
+ }, [getVersions, fields, user]);
28
28
  const [{ data, isLoading }] = usePayloadAPI(`${serverURL}${api}/globals/${slug}`, { initialParams: { 'fallback-locale': 'null', depth: 0, draft: 'true' } });
29
29
  const dataToRender = (locationState === null || locationState === void 0 ? void 0 : locationState.data) || data;
30
30
  useEffect(() => {
@@ -35,11 +35,11 @@ const GlobalView = (props) => {
35
35
  }, [setStepNav, label]);
36
36
  useEffect(() => {
37
37
  const awaitInitialState = async () => {
38
- const state = await buildStateFromSchema(fields, dataToRender);
38
+ const state = await buildStateFromSchema({ fieldSchema: fields, data: dataToRender, user, operation: 'update' });
39
39
  setInitialState(state);
40
40
  };
41
41
  awaitInitialState();
42
- }, [dataToRender, fields]);
42
+ }, [dataToRender, fields, user]);
43
43
  const globalPermissions = (_a = permissions === null || permissions === void 0 ? void 0 : permissions.globals) === null || _a === void 0 ? void 0 : _a[slug];
44
44
  return (React.createElement(NegativeFieldGutterProvider, { allow: true },
45
45
  React.createElement(RenderCustomComponent, { DefaultComponent: DefaultGlobal, CustomComponent: CustomEdit, componentProps: {
@@ -8,7 +8,7 @@ import { useWatchForm } from '../../../../forms/Form/context';
8
8
  import GenerateConfirmation from '../../../../elements/GenerateConfirmation';
9
9
  const path = 'apiKey';
10
10
  const baseClass = 'api-key';
11
- const validate = (val) => text(val, { minLength: 24, maxLength: 48 });
11
+ const validate = (val) => text(val, { minLength: 24, maxLength: 48, data: {}, siblingData: {} });
12
12
  const APIKey = () => {
13
13
  const [initialAPIKey, setInitialAPIKey] = useState(null);
14
14
  const [highlightedField, setHighlightedField] = useState(false);
@@ -23,6 +23,7 @@ import Status from '../../../elements/Status';
23
23
  import Publish from '../../../elements/Publish';
24
24
  import SaveDraft from '../../../elements/SaveDraft';
25
25
  import { useDocumentInfo } from '../../../utilities/DocumentInfo';
26
+ import { OperationContext } from '../../../utilities/OperationProvider';
26
27
  import './index.scss';
27
28
  const baseClass = 'collection-edit';
28
29
  const DefaultEditView = (props) => {
@@ -39,58 +40,59 @@ const DefaultEditView = (props) => {
39
40
  const operation = isEditing ? 'update' : 'create';
40
41
  return (React.createElement("div", { className: classes },
41
42
  isLoading && (React.createElement(Loading, null)),
42
- !isLoading && (React.createElement(Form, { className: `${baseClass}__form`, method: id ? 'put' : 'post', action: action, onSuccess: onSave, disabled: !hasSavePermission, initialState: initialState },
43
- React.createElement("div", { className: `${baseClass}__main` },
44
- React.createElement(Meta, { title: `${isEditing ? 'Editing' : 'Creating'} - ${collection.labels.singular}`, description: `${isEditing ? 'Editing' : 'Creating'} - ${collection.labels.singular}`, keywords: `${collection.labels.singular}, Payload, CMS` }),
45
- React.createElement(Eyebrow, null),
46
- !(((_a = collection.versions) === null || _a === void 0 ? void 0 : _a.drafts) && ((_c = (_b = collection.versions) === null || _b === void 0 ? void 0 : _b.drafts) === null || _c === void 0 ? void 0 : _c.autosave)) && (React.createElement(LeaveWithoutSaving, null)),
47
- React.createElement("div", { className: `${baseClass}__edit` },
48
- React.createElement("header", { className: `${baseClass}__header` },
49
- React.createElement("h1", null,
50
- React.createElement(RenderTitle, { ...{ data, useAsTitle, fallback: '[Untitled]' } }))),
51
- auth && (React.createElement(Auth, { useAPIKey: auth.useAPIKey, requirePassword: !isEditing, verify: auth.verify, collection: collection, email: data === null || data === void 0 ? void 0 : data.email, operation: operation })),
52
- upload && (React.createElement(Upload, { data: data, collection: collection })),
53
- React.createElement(RenderFields, { operation: operation, readOnly: !hasSavePermission, permissions: permissions.fields, filter: (field) => { var _a, _b; return (!((_a = field === null || field === void 0 ? void 0 : field.admin) === null || _a === void 0 ? void 0 : _a.position) || (((_b = field === null || field === void 0 ? void 0 : field.admin) === null || _b === void 0 ? void 0 : _b.position) !== 'sidebar')); }, fieldTypes: fieldTypes, fieldSchema: fields }))),
54
- React.createElement("div", { className: `${baseClass}__sidebar-wrap` },
55
- React.createElement("div", { className: `${baseClass}__sidebar` },
56
- React.createElement("div", { className: `${baseClass}__sidebar-sticky-wrap` },
57
- React.createElement("ul", { className: `${baseClass}__collection-actions` },
58
- ((_d = permissions === null || permissions === void 0 ? void 0 : permissions.create) === null || _d === void 0 ? void 0 : _d.permission) && (React.createElement(React.Fragment, null,
59
- React.createElement("li", null,
60
- React.createElement(Link, { to: `${admin}/collections/${slug}/create` }, "Create New")),
61
- !disableDuplicate && (React.createElement("li", null,
62
- React.createElement(DuplicateDocument, { slug: slug }))))),
63
- ((_e = permissions === null || permissions === void 0 ? void 0 : permissions.delete) === null || _e === void 0 ? void 0 : _e.permission) && (React.createElement("li", null,
64
- React.createElement(DeleteDocument, { collection: collection, id: id })))),
65
- React.createElement("div", { className: `${baseClass}__document-actions${((((_f = collection.versions) === null || _f === void 0 ? void 0 : _f.drafts) && !((_h = (_g = collection.versions) === null || _g === void 0 ? void 0 : _g.drafts) === null || _h === void 0 ? void 0 : _h.autosave)) || (isEditing && preview)) ? ` ${baseClass}__document-actions--has-2` : ''}` },
66
- (preview && (!((_j = collection.versions) === null || _j === void 0 ? void 0 : _j.drafts) || ((_l = (_k = collection.versions) === null || _k === void 0 ? void 0 : _k.drafts) === null || _l === void 0 ? void 0 : _l.autosave))) && (React.createElement(PreviewButton, { generatePreviewURL: preview, data: data })),
67
- hasSavePermission && (React.createElement(React.Fragment, null,
68
- ((_m = collection.versions) === null || _m === void 0 ? void 0 : _m.drafts) && (React.createElement(React.Fragment, null,
69
- !collection.versions.drafts.autosave && (React.createElement(SaveDraft, null)),
70
- React.createElement(Publish, null))),
71
- !((_o = collection.versions) === null || _o === void 0 ? void 0 : _o.drafts) && (React.createElement(FormSubmit, null, "Save"))))),
72
- React.createElement("div", { className: `${baseClass}__sidebar-fields` },
73
- (isEditing && preview && (((_p = collection.versions) === null || _p === void 0 ? void 0 : _p.drafts) && !((_r = (_q = collection.versions) === null || _q === void 0 ? void 0 : _q.drafts) === null || _r === void 0 ? void 0 : _r.autosave))) && (React.createElement(PreviewButton, { generatePreviewURL: preview, data: data })),
74
- ((_s = collection.versions) === null || _s === void 0 ? void 0 : _s.drafts) && (React.createElement(React.Fragment, null,
75
- React.createElement(Status, null),
76
- (((_t = collection.versions) === null || _t === void 0 ? void 0 : _t.drafts.autosave) && hasSavePermission) && (React.createElement(Autosave, { publishedDocUpdatedAt: (publishedDoc === null || publishedDoc === void 0 ? void 0 : publishedDoc.updatedAt) || (data === null || data === void 0 ? void 0 : data.createdAt), collection: collection, id: id })))),
77
- React.createElement(RenderFields, { operation: isEditing ? 'update' : 'create', readOnly: !hasSavePermission, permissions: permissions.fields, filter: (field) => { var _a; return ((_a = field === null || field === void 0 ? void 0 : field.admin) === null || _a === void 0 ? void 0 : _a.position) === 'sidebar'; }, fieldTypes: fieldTypes, fieldSchema: fields })),
78
- isEditing && (React.createElement("ul", { className: `${baseClass}__meta` },
79
- !hideAPIURL && (React.createElement("li", { className: `${baseClass}__api-url` },
80
- React.createElement("span", { className: `${baseClass}__label` },
81
- "API URL",
82
- ' ',
83
- React.createElement(CopyToClipboard, { value: apiURL })),
84
- React.createElement("a", { href: apiURL, target: "_blank", rel: "noopener noreferrer" }, apiURL))),
85
- versions && (React.createElement("li", null,
86
- React.createElement("div", { className: `${baseClass}__label` }, "Versions"),
87
- React.createElement(VersionsCount, { collection: collection, id: id }))),
88
- timestamps && (React.createElement(React.Fragment, null,
89
- data.updatedAt && (React.createElement("li", null,
90
- React.createElement("div", { className: `${baseClass}__label` }, "Last Modified"),
91
- React.createElement("div", null, format(new Date(data.updatedAt), dateFormat)))),
92
- ((publishedDoc === null || publishedDoc === void 0 ? void 0 : publishedDoc.createdAt) || (data === null || data === void 0 ? void 0 : data.createdAt)) && (React.createElement("li", null,
93
- React.createElement("div", { className: `${baseClass}__label` }, "Created"),
94
- React.createElement("div", null, format(new Date((publishedDoc === null || publishedDoc === void 0 ? void 0 : publishedDoc.createdAt) || (data === null || data === void 0 ? void 0 : data.createdAt)), dateFormat)))))))))))))));
43
+ !isLoading && (React.createElement(OperationContext.Provider, { value: operation },
44
+ React.createElement(Form, { className: `${baseClass}__form`, method: id ? 'put' : 'post', action: action, onSuccess: onSave, disabled: !hasSavePermission, initialState: initialState },
45
+ React.createElement("div", { className: `${baseClass}__main` },
46
+ React.createElement(Meta, { title: `${isEditing ? 'Editing' : 'Creating'} - ${collection.labels.singular}`, description: `${isEditing ? 'Editing' : 'Creating'} - ${collection.labels.singular}`, keywords: `${collection.labels.singular}, Payload, CMS` }),
47
+ React.createElement(Eyebrow, null),
48
+ !(((_a = collection.versions) === null || _a === void 0 ? void 0 : _a.drafts) && ((_c = (_b = collection.versions) === null || _b === void 0 ? void 0 : _b.drafts) === null || _c === void 0 ? void 0 : _c.autosave)) && (React.createElement(LeaveWithoutSaving, null)),
49
+ React.createElement("div", { className: `${baseClass}__edit` },
50
+ React.createElement("header", { className: `${baseClass}__header` },
51
+ React.createElement("h1", null,
52
+ React.createElement(RenderTitle, { ...{ data, useAsTitle, fallback: '[Untitled]' } }))),
53
+ auth && (React.createElement(Auth, { useAPIKey: auth.useAPIKey, requirePassword: !isEditing, verify: auth.verify, collection: collection, email: data === null || data === void 0 ? void 0 : data.email, operation: operation })),
54
+ upload && (React.createElement(Upload, { data: data, collection: collection })),
55
+ React.createElement(RenderFields, { readOnly: !hasSavePermission, permissions: permissions.fields, filter: (field) => { var _a, _b; return (!((_a = field === null || field === void 0 ? void 0 : field.admin) === null || _a === void 0 ? void 0 : _a.position) || (((_b = field === null || field === void 0 ? void 0 : field.admin) === null || _b === void 0 ? void 0 : _b.position) !== 'sidebar')); }, fieldTypes: fieldTypes, fieldSchema: fields }))),
56
+ React.createElement("div", { className: `${baseClass}__sidebar-wrap` },
57
+ React.createElement("div", { className: `${baseClass}__sidebar` },
58
+ React.createElement("div", { className: `${baseClass}__sidebar-sticky-wrap` },
59
+ React.createElement("ul", { className: `${baseClass}__collection-actions` },
60
+ ((_d = permissions === null || permissions === void 0 ? void 0 : permissions.create) === null || _d === void 0 ? void 0 : _d.permission) && (React.createElement(React.Fragment, null,
61
+ React.createElement("li", null,
62
+ React.createElement(Link, { to: `${admin}/collections/${slug}/create` }, "Create New")),
63
+ !disableDuplicate && (React.createElement("li", null,
64
+ React.createElement(DuplicateDocument, { slug: slug }))))),
65
+ ((_e = permissions === null || permissions === void 0 ? void 0 : permissions.delete) === null || _e === void 0 ? void 0 : _e.permission) && (React.createElement("li", null,
66
+ React.createElement(DeleteDocument, { collection: collection, id: id })))),
67
+ React.createElement("div", { className: `${baseClass}__document-actions${((((_f = collection.versions) === null || _f === void 0 ? void 0 : _f.drafts) && !((_h = (_g = collection.versions) === null || _g === void 0 ? void 0 : _g.drafts) === null || _h === void 0 ? void 0 : _h.autosave)) || (isEditing && preview)) ? ` ${baseClass}__document-actions--has-2` : ''}` },
68
+ (preview && (!((_j = collection.versions) === null || _j === void 0 ? void 0 : _j.drafts) || ((_l = (_k = collection.versions) === null || _k === void 0 ? void 0 : _k.drafts) === null || _l === void 0 ? void 0 : _l.autosave))) && (React.createElement(PreviewButton, { generatePreviewURL: preview, data: data })),
69
+ hasSavePermission && (React.createElement(React.Fragment, null,
70
+ ((_m = collection.versions) === null || _m === void 0 ? void 0 : _m.drafts) && (React.createElement(React.Fragment, null,
71
+ !collection.versions.drafts.autosave && (React.createElement(SaveDraft, null)),
72
+ React.createElement(Publish, null))),
73
+ !((_o = collection.versions) === null || _o === void 0 ? void 0 : _o.drafts) && (React.createElement(FormSubmit, null, "Save"))))),
74
+ React.createElement("div", { className: `${baseClass}__sidebar-fields` },
75
+ (isEditing && preview && (((_p = collection.versions) === null || _p === void 0 ? void 0 : _p.drafts) && !((_r = (_q = collection.versions) === null || _q === void 0 ? void 0 : _q.drafts) === null || _r === void 0 ? void 0 : _r.autosave))) && (React.createElement(PreviewButton, { generatePreviewURL: preview, data: data })),
76
+ ((_s = collection.versions) === null || _s === void 0 ? void 0 : _s.drafts) && (React.createElement(React.Fragment, null,
77
+ React.createElement(Status, null),
78
+ (((_t = collection.versions) === null || _t === void 0 ? void 0 : _t.drafts.autosave) && hasSavePermission) && (React.createElement(Autosave, { publishedDocUpdatedAt: (publishedDoc === null || publishedDoc === void 0 ? void 0 : publishedDoc.updatedAt) || (data === null || data === void 0 ? void 0 : data.createdAt), collection: collection, id: id })))),
79
+ React.createElement(RenderFields, { readOnly: !hasSavePermission, permissions: permissions.fields, filter: (field) => { var _a; return ((_a = field === null || field === void 0 ? void 0 : field.admin) === null || _a === void 0 ? void 0 : _a.position) === 'sidebar'; }, fieldTypes: fieldTypes, fieldSchema: fields })),
80
+ isEditing && (React.createElement("ul", { className: `${baseClass}__meta` },
81
+ !hideAPIURL && (React.createElement("li", { className: `${baseClass}__api-url` },
82
+ React.createElement("span", { className: `${baseClass}__label` },
83
+ "API URL",
84
+ ' ',
85
+ React.createElement(CopyToClipboard, { value: apiURL })),
86
+ React.createElement("a", { href: apiURL, target: "_blank", rel: "noopener noreferrer" }, apiURL))),
87
+ versions && (React.createElement("li", null,
88
+ React.createElement("div", { className: `${baseClass}__label` }, "Versions"),
89
+ React.createElement(VersionsCount, { collection: collection, id: id }))),
90
+ timestamps && (React.createElement(React.Fragment, null,
91
+ data.updatedAt && (React.createElement("li", null,
92
+ React.createElement("div", { className: `${baseClass}__label` }, "Last Modified"),
93
+ React.createElement("div", null, format(new Date(data.updatedAt), dateFormat)))),
94
+ ((publishedDoc === null || publishedDoc === void 0 ? void 0 : publishedDoc.createdAt) || (data === null || data === void 0 ? void 0 : data.createdAt)) && (React.createElement("li", null,
95
+ React.createElement("div", { className: `${baseClass}__label` }, "Created"),
96
+ React.createElement("div", null, format(new Date((publishedDoc === null || publishedDoc === void 0 ? void 0 : publishedDoc.createdAt) || (data === null || data === void 0 ? void 0 : data.createdAt)), dateFormat))))))))))))))));
95
97
  };
96
98
  export default DefaultEditView;
@@ -23,7 +23,7 @@ const EditView = (props) => {
23
23
  const history = useHistory();
24
24
  const { setStepNav } = useStepNav();
25
25
  const [initialState, setInitialState] = useState({});
26
- const { permissions } = useAuth();
26
+ const { permissions, user } = useAuth();
27
27
  const { getVersions } = useDocumentInfo();
28
28
  const onSave = useCallback(async (json) => {
29
29
  var _a;
@@ -32,10 +32,10 @@ const EditView = (props) => {
32
32
  history.push(`${admin}/collections/${collection.slug}/${(_a = json === null || json === void 0 ? void 0 : json.doc) === null || _a === void 0 ? void 0 : _a.id}`);
33
33
  }
34
34
  else {
35
- const state = await buildStateFromSchema(collection.fields, json.doc);
35
+ const state = await buildStateFromSchema({ fieldSchema: collection.fields, data: json.doc, user, id, operation: 'update' });
36
36
  setInitialState(state);
37
37
  }
38
- }, [admin, collection, history, isEditing, getVersions]);
38
+ }, [admin, collection, history, isEditing, getVersions, user, id]);
39
39
  const [{ data, isLoading, isError }] = usePayloadAPI((isEditing ? `${serverURL}${api}/${slug}/${id}` : null), { initialParams: { 'fallback-locale': 'null', depth: 0, draft: 'true' } });
40
40
  const dataToRender = ((_a = locationState) === null || _a === void 0 ? void 0 : _a.data) || data;
41
41
  useEffect(() => {
@@ -71,11 +71,11 @@ const EditView = (props) => {
71
71
  }, [setStepNav, isEditing, pluralLabel, dataToRender, slug, useAsTitle, admin]);
72
72
  useEffect(() => {
73
73
  const awaitInitialState = async () => {
74
- const state = await buildStateFromSchema(fields, dataToRender);
74
+ const state = await buildStateFromSchema({ fieldSchema: fields, data: dataToRender, user, operation: isEditing ? 'update' : 'create', id });
75
75
  setInitialState(state);
76
76
  };
77
77
  awaitInitialState();
78
- }, [dataToRender, fields]);
78
+ }, [dataToRender, fields, isEditing, id, user]);
79
79
  if (isError) {
80
80
  return (React.createElement(Redirect, { to: `${admin}/not-found` }));
81
81
  }
@@ -31,7 +31,7 @@ describe('GeoJSON', () => {
31
31
  done();
32
32
  });
33
33
  describe('Point Field - REST', () => {
34
- const location = [10, 20];
34
+ let location = [10, 20];
35
35
  const localizedPoint = [30, 40];
36
36
  const group = { point: [15, 25] };
37
37
  let doc;
@@ -100,6 +100,17 @@ describe('GeoJSON', () => {
100
100
  expect(hitDocs).toHaveLength(1);
101
101
  expect(missDocs).toHaveLength(0);
102
102
  });
103
+ it('should save with non-required point', async () => {
104
+ location = undefined;
105
+ const create = await fetch(`${serverURL}/api/geolocation`, {
106
+ body: JSON.stringify({ location }),
107
+ headers,
108
+ method: 'post',
109
+ });
110
+ const { doc } = await create.json();
111
+ expect(doc.id).toBeDefined();
112
+ expect(doc.location).toStrictEqual(location);
113
+ });
103
114
  });
104
115
  describe('Point Field - GraphQL', () => {
105
116
  const url = `${serverURL}${routes.api}${routes.graphQL}`;
@@ -112,20 +123,20 @@ describe('GeoJSON', () => {
112
123
  client = new graphql_request_1.GraphQLClient(url, { headers: { Authorization: `JWT ${token}` } });
113
124
  // language=graphQL
114
125
  const query = `mutation {
115
- createGeolocation (
116
- data: {
117
- location: [${location[0]}, ${location[1]}],
118
- localizedPoint: [${localizedPoint[0]}, ${localizedPoint[1]}],
119
- group: {
120
- point: [${group.point[0]}, ${group.point[1]}]
121
- }
122
- }
123
- ) {
124
- id
125
- location
126
- localizedPoint
126
+ createGeolocation (
127
+ data: {
128
+ location: [${location[0]}, ${location[1]}],
129
+ localizedPoint: [${localizedPoint[0]}, ${localizedPoint[1]}],
130
+ group: {
131
+ point: [${group.point[0]}, ${group.point[1]}]
132
+ }
127
133
  }
128
- }`;
134
+ ) {
135
+ id
136
+ location
137
+ localizedPoint
138
+ }
139
+ }`;
129
140
  const response = await client.request(query);
130
141
  const { id } = response.createGeolocation;
131
142
  // language=graphQL
@@ -205,4 +216,4 @@ describe('GeoJSON', () => {
205
216
  });
206
217
  });
207
218
  });
208
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9pbnRGaWVsZC5zcGVjLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbGxlY3Rpb25zL3Rlc3RzL3BvaW50RmllbGQuc3BlYy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLHFEQUFnRDtBQUNoRCw2REFBMEM7QUFDMUMsb0VBQWlFO0FBRWpFLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0FBRTVCLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLEdBQUcsSUFBQSxjQUFTLEdBQUUsQ0FBQztBQUUxQyxJQUFJLEtBQUssR0FBRyxJQUFJLENBQUM7QUFDakIsSUFBSSxPQUFPLEdBQUcsSUFBSSxDQUFDO0FBRW5CLFFBQVEsQ0FBQyxTQUFTLEVBQUUsR0FBRyxFQUFFO0lBQ3ZCLFNBQVMsQ0FBQyxLQUFLLEVBQUUsSUFBSSxFQUFFLEVBQUU7UUFDdkIsTUFBTSxRQUFRLEdBQUcsTUFBTSxLQUFLLENBQUMsR0FBRyxTQUFTLG1CQUFtQixFQUFFO1lBQzVELElBQUksRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDO2dCQUNuQixLQUFLLEVBQUwsdUJBQUs7Z0JBQ0wsUUFBUSxFQUFSLDBCQUFRO2FBQ1QsQ0FBQztZQUNGLE9BQU8sRUFBRTtnQkFDUCxjQUFjLEVBQUUsa0JBQWtCO2FBQ25DO1lBQ0QsTUFBTSxFQUFFLE1BQU07U0FDZixDQUFDLENBQUM7UUFFSCxNQUFNLElBQUksR0FBRyxNQUFNLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUVuQyxDQUFDLEVBQUUsS0FBSyxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUM7UUFDbkIsT0FBTyxHQUFHO1lBQ1IsYUFBYSxFQUFFLE9BQU8sS0FBSyxFQUFFO1lBQzdCLGNBQWMsRUFBRSxrQkFBa0I7U0FDbkMsQ0FBQztRQUVGLElBQUksRUFBRSxDQUFDO0lBQ1QsQ0FBQyxDQUFDLENBQUM7SUFFSCxRQUFRLENBQUMsb0JBQW9CLEVBQUUsR0FBRyxFQUFF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
219
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9pbnRGaWVsZC5zcGVjLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbGxlY3Rpb25zL3Rlc3RzL3BvaW50RmllbGQuc3BlYy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLHFEQUFnRDtBQUNoRCw2REFBMEM7QUFDMUMsb0VBQWlFO0FBRWpFLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0FBRTVCLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLEdBQUcsSUFBQSxjQUFTLEdBQUUsQ0FBQztBQUUxQyxJQUFJLEtBQUssR0FBRyxJQUFJLENBQUM7QUFDakIsSUFBSSxPQUFPLEdBQUcsSUFBSSxDQUFDO0FBRW5CLFFBQVEsQ0FBQyxTQUFTLEVBQUUsR0FBRyxFQUFFO0lBQ3ZCLFNBQVMsQ0FBQyxLQUFLLEVBQUUsSUFBSSxFQUFFLEVBQUU7UUFDdkIsTUFBTSxRQUFRLEdBQUcsTUFBTSxLQUFLLENBQUMsR0FBRyxTQUFTLG1CQUFtQixFQUFFO1lBQzVELElBQUksRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDO2dCQUNuQixLQUFLLEVBQUwsdUJBQUs7Z0JBQ0wsUUFBUSxFQUFSLDBCQUFRO2FBQ1QsQ0FBQztZQUNGLE9BQU8sRUFBRTtnQkFDUCxjQUFjLEVBQUUsa0JBQWtCO2FBQ25DO1lBQ0QsTUFBTSxFQUFFLE1BQU07U0FDZixDQUFDLENBQUM7UUFFSCxNQUFNLElBQUksR0FBRyxNQUFNLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUVuQyxDQUFDLEVBQUUsS0FBSyxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUM7UUFDbkIsT0FBTyxHQUFHO1lBQ1IsYUFBYSxFQUFFLE9BQU8sS0FBSyxFQUFFO1lBQzdCLGNBQWMsRUFBRSxrQkFBa0I7U0FDbkMsQ0FBQztRQUVGLElBQUksRUFBRSxDQUFDO0lBQ1QsQ0FBQyxDQUFDLENBQUM7SUFFSCxRQUFRLENBQUMsb0JBQW9CLEVBQUUsR0FBRyxFQUFF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