payload 3.0.0-beta.113 → 3.0.0-beta.115
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.
- package/dist/admin/types.d.ts +2 -2
- package/dist/admin/types.d.ts.map +1 -1
- package/dist/admin/types.js.map +1 -1
- package/dist/admin/views/types.d.ts +1 -1
- package/dist/admin/views/types.d.ts.map +1 -1
- package/dist/admin/views/types.js.map +1 -1
- package/dist/auth/operations/resetPassword.d.ts.map +1 -1
- package/dist/auth/operations/resetPassword.js +16 -0
- package/dist/auth/operations/resetPassword.js.map +1 -1
- package/dist/collections/operations/create.d.ts +1 -0
- package/dist/collections/operations/create.d.ts.map +1 -1
- package/dist/collections/operations/create.js +1 -1
- package/dist/collections/operations/create.js.map +1 -1
- package/dist/collections/operations/delete.d.ts +1 -0
- package/dist/collections/operations/delete.d.ts.map +1 -1
- package/dist/collections/operations/delete.js +1 -1
- package/dist/collections/operations/delete.js.map +1 -1
- package/dist/collections/operations/deleteByID.d.ts +1 -0
- package/dist/collections/operations/deleteByID.d.ts.map +1 -1
- package/dist/collections/operations/deleteByID.js +1 -1
- package/dist/collections/operations/deleteByID.js.map +1 -1
- package/dist/collections/operations/duplicate.d.ts +1 -0
- package/dist/collections/operations/duplicate.d.ts.map +1 -1
- package/dist/collections/operations/duplicate.js +2 -5
- package/dist/collections/operations/duplicate.js.map +1 -1
- package/dist/collections/operations/find.js +4 -1
- package/dist/collections/operations/find.js.map +1 -1
- package/dist/collections/operations/local/create.d.ts +1 -0
- package/dist/collections/operations/local/create.d.ts.map +1 -1
- package/dist/collections/operations/local/create.js +2 -1
- package/dist/collections/operations/local/create.js.map +1 -1
- package/dist/collections/operations/local/delete.d.ts +1 -0
- package/dist/collections/operations/local/delete.d.ts.map +1 -1
- package/dist/collections/operations/local/delete.js +2 -1
- package/dist/collections/operations/local/delete.js.map +1 -1
- package/dist/collections/operations/local/duplicate.d.ts +1 -0
- package/dist/collections/operations/local/duplicate.d.ts.map +1 -1
- package/dist/collections/operations/local/duplicate.js +2 -1
- package/dist/collections/operations/local/duplicate.js.map +1 -1
- package/dist/collections/operations/local/update.d.ts +3 -0
- package/dist/collections/operations/local/update.d.ts.map +1 -1
- package/dist/collections/operations/local/update.js +3 -1
- package/dist/collections/operations/local/update.js.map +1 -1
- package/dist/collections/operations/update.d.ts +2 -0
- package/dist/collections/operations/update.d.ts.map +1 -1
- package/dist/collections/operations/update.js +5 -7
- package/dist/collections/operations/update.js.map +1 -1
- package/dist/collections/operations/updateByID.d.ts +1 -0
- package/dist/collections/operations/updateByID.d.ts.map +1 -1
- package/dist/collections/operations/updateByID.js +2 -5
- package/dist/collections/operations/updateByID.js.map +1 -1
- package/dist/database/migrations/migrateReset.js +1 -1
- package/dist/database/migrations/migrateReset.js.map +1 -1
- package/dist/fields/config/sanitize.d.ts +1 -1
- package/dist/fields/config/sanitize.d.ts.map +1 -1
- package/dist/fields/config/sanitize.js +15 -8
- package/dist/fields/config/sanitize.js.map +1 -1
- package/dist/globals/operations/update.d.ts +1 -0
- package/dist/globals/operations/update.d.ts.map +1 -1
- package/dist/globals/operations/update.js +3 -7
- package/dist/globals/operations/update.js.map +1 -1
- package/dist/versions/drafts/getQueryDraftsSort.d.ts +5 -1
- package/dist/versions/drafts/getQueryDraftsSort.d.ts.map +1 -1
- package/dist/versions/drafts/getQueryDraftsSort.js +6 -2
- package/dist/versions/drafts/getQueryDraftsSort.js.map +1 -1
- package/dist/versions/getLatestCollectionVersion.d.ts.map +1 -1
- package/dist/versions/getLatestCollectionVersion.js +2 -6
- package/dist/versions/getLatestCollectionVersion.js.map +1 -1
- package/dist/versions/getLatestGlobalVersion.d.ts.map +1 -1
- package/dist/versions/getLatestGlobalVersion.js +7 -5
- package/dist/versions/getLatestGlobalVersion.js.map +1 -1
- package/dist/versions/saveVersion.d.ts.map +1 -1
- package/dist/versions/saveVersion.js +3 -5
- package/dist/versions/saveVersion.js.map +1 -1
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/fields/config/sanitize.ts"],"sourcesContent":["import { deepMergeSimple } from '@payloadcms/translations/utilities'\n\nimport type { CollectionConfig, SanitizedJoins } from '../../collections/config/types.js'\nimport type { Config, SanitizedConfig } from '../../config/types.js'\nimport type { Field } from './types.js'\n\nimport {\n DuplicateFieldName,\n InvalidFieldName,\n InvalidFieldRelationship,\n MissingEditorProp,\n MissingFieldType,\n} from '../../errors/index.js'\nimport { formatLabels, toWords } from '../../utilities/formatLabels.js'\nimport { baseBlockFields } from '../baseFields/baseBlockFields.js'\nimport { baseIDField } from '../baseFields/baseIDField.js'\nimport { setDefaultBeforeDuplicate } from '../setDefaultBeforeDuplicate.js'\nimport validations from '../validations.js'\nimport { sanitizeJoinField } from './sanitizeJoinField.js'\nimport { fieldAffectsData, tabHasName } from './types.js'\n\ntype Args = {\n collectionConfig?: CollectionConfig\n config: Config\n existingFieldNames?: Set<string>\n fields: Field[]\n /**\n * When not passed in, assume that join are not supported (globals, arrays, blocks)\n */\n joins?: SanitizedJoins\n parentIsLocalized: boolean\n /**\n * If true, a richText field will require an editor property to be set, as the sanitizeFields function will not add it from the payload config if not present.\n *\n * @default false\n */\n requireFieldLevelRichTextEditor?: boolean\n\n /**\n * If this property is set, RichText fields won't be sanitized immediately. Instead, they will be added to this array as promises\n * so that you can sanitize them together, after the config has been sanitized.\n */\n richTextSanitizationPromises?: Array<(config: SanitizedConfig) => Promise<void>>\n schemaPath?: string\n /**\n * If not null, will validate that upload and relationship fields do not relate to a collection that is not in this array.\n * This validation will be skipped if validRelationships is null.\n */\n validRelationships: null | string[]\n}\n\nexport const sanitizeFields = async ({\n config,\n existingFieldNames = new Set(),\n fields,\n joins,\n parentIsLocalized,\n requireFieldLevelRichTextEditor = false,\n richTextSanitizationPromises,\n schemaPath: schemaPathArg,\n validRelationships,\n}: Args): Promise<Field[]> => {\n if (!fields) {\n return []\n }\n\n let schemaPath = schemaPathArg\n\n for (let i = 0; i < fields.length; i++) {\n const field = fields[i]\n\n if ('_sanitized' in field && field._sanitized === true) {\n continue\n }\n\n if (!field.type) {\n throw new MissingFieldType(field)\n }\n\n // assert that field names do not contain forbidden characters\n if (fieldAffectsData(field) && field.name.includes('.')) {\n throw new InvalidFieldName(field, field.name)\n }\n\n // Auto-label\n if (\n 'name' in field &&\n field.name &&\n typeof field.label !== 'object' &&\n typeof field.label !== 'string' &&\n typeof field.label !== 'function' &&\n field.label !== false\n ) {\n field.label = toWords(field.name)\n }\n\n if (\n field.type === 'checkbox' &&\n typeof field.defaultValue === 'undefined' &&\n field.required === true\n ) {\n field.defaultValue = false\n }\n\n if (field.type === 'join') {\n sanitizeJoinField({ config, field, joins, schemaPath })\n }\n\n if (field.type === 'relationship' || field.type === 'upload') {\n if (validRelationships) {\n const relationships = Array.isArray(field.relationTo)\n ? field.relationTo\n : [field.relationTo]\n relationships.forEach((relationship: string) => {\n if (!validRelationships.includes(relationship)) {\n throw new InvalidFieldRelationship(field, relationship)\n }\n })\n }\n\n if (field.min && !field.minRows) {\n console.warn(\n `(payload): The \"min\" property is deprecated for the Relationship field \"${field.name}\" and will be removed in a future version. Please use \"minRows\" instead.`,\n )\n }\n if (field.max && !field.maxRows) {\n console.warn(\n `(payload): The \"max\" property is deprecated for the Relationship field \"${field.name}\" and will be removed in a future version. Please use \"maxRows\" instead.`,\n )\n }\n field.minRows = field.minRows || field.min\n field.maxRows = field.maxRows || field.max\n }\n\n if (field.type === 'upload') {\n if (!field.admin || !('isSortable' in field.admin)) {\n field.admin = {\n isSortable: true,\n ...field.admin,\n }\n }\n }\n\n if (field.type === 'array' && field.fields) {\n field.fields.push(baseIDField)\n }\n\n if ((field.type === 'blocks' || field.type === 'array') && field.label) {\n field.labels = field.labels || formatLabels(field.name)\n }\n\n if (fieldAffectsData(field)) {\n if (existingFieldNames.has(field.name)) {\n throw new DuplicateFieldName(field.name)\n } else if (!['blockName', 'id'].includes(field.name)) {\n existingFieldNames.add(field.name)\n }\n\n if (typeof field.localized !== 'undefined') {\n let shouldDisableLocalized = !config.localization\n\n if (!config.compatibility?.allowLocalizedWithinLocalized && parentIsLocalized) {\n shouldDisableLocalized = true\n }\n\n if (shouldDisableLocalized) {\n delete field.localized\n }\n }\n\n if (typeof field.validate === 'undefined') {\n const defaultValidate = validations[field.type]\n if (defaultValidate) {\n field.validate = (val, options) => defaultValidate(val, { ...field, ...options })\n } else {\n field.validate = (): true => true\n }\n }\n\n if (typeof field.virtual === 'undefined') {\n field.virtual = false\n }\n\n if (!field.hooks) {\n field.hooks = {}\n }\n if (!field.access) {\n field.access = {}\n }\n\n setDefaultBeforeDuplicate(field)\n }\n\n if (!field.admin) {\n field.admin = {}\n }\n\n // Make sure that the richText field has an editor\n if (field.type === 'richText') {\n const sanitizeRichText = async (_config: SanitizedConfig) => {\n if (!field.editor) {\n if (_config.editor && !requireFieldLevelRichTextEditor) {\n // config.editor should be sanitized at this point\n field.editor = _config.editor\n } else {\n throw new MissingEditorProp(field) // while we allow disabling editor functionality, you should not have any richText fields defined if you do not have an editor\n }\n }\n\n if (typeof field.editor === 'function') {\n field.editor = await field.editor({\n config: _config,\n isRoot: requireFieldLevelRichTextEditor,\n parentIsLocalized: parentIsLocalized || field.localized,\n })\n }\n\n if (field.editor.i18n && Object.keys(field.editor.i18n).length >= 0) {\n config.i18n.translations = deepMergeSimple(config.i18n.translations, field.editor.i18n)\n }\n }\n if (richTextSanitizationPromises) {\n richTextSanitizationPromises.push(sanitizeRichText)\n } else {\n await sanitizeRichText(config as unknown as SanitizedConfig)\n }\n }\n\n if (field.type === 'blocks' && field.blocks) {\n for (const block of field.blocks) {\n if (block._sanitized === true) {\n continue\n }\n block._sanitized = true\n block.fields = block.fields.concat(baseBlockFields)\n block.labels = !block.labels ? formatLabels(block.slug) : block.labels\n\n block.fields = await sanitizeFields({\n config,\n existingFieldNames: new Set(),\n fields: block.fields,\n parentIsLocalized: parentIsLocalized || field.localized,\n requireFieldLevelRichTextEditor,\n richTextSanitizationPromises,\n validRelationships,\n })\n }\n }\n\n if ('fields' in field && field.fields) {\n if ('name' in field && field.name) {\n schemaPath = `${schemaPath || ''}${schemaPath ? '.' : ''}${field.name}`\n }\n field.fields = await sanitizeFields({\n config,\n existingFieldNames: fieldAffectsData(field) ? new Set() : existingFieldNames,\n fields: field.fields,\n joins,\n parentIsLocalized: parentIsLocalized || field.localized,\n requireFieldLevelRichTextEditor,\n richTextSanitizationPromises,\n schemaPath,\n validRelationships,\n })\n }\n\n if (field.type === 'tabs') {\n for (let j = 0; j < field.tabs.length; j++) {\n const tab = field.tabs[j]\n if (tabHasName(tab)) {\n schemaPath = `${schemaPath || ''}${schemaPath ? '.' : ''}${tab.name}`\n if (typeof tab.label === 'undefined') {\n tab.label = toWords(tab.name)\n }\n }\n\n tab.fields = await sanitizeFields({\n config,\n existingFieldNames: tabHasName(tab) ? new Set() : existingFieldNames,\n fields: tab.fields,\n joins,\n parentIsLocalized: parentIsLocalized || (tabHasName(tab) && tab.localized),\n requireFieldLevelRichTextEditor,\n richTextSanitizationPromises,\n schemaPath,\n validRelationships,\n })\n field.tabs[j] = tab\n }\n }\n\n if (field.type === 'ui' && typeof field.admin.disableBulkEdit === 'undefined') {\n field.admin.disableBulkEdit = true\n }\n\n if ('_sanitized' in field) {\n field._sanitized = true\n }\n\n fields[i] = field\n }\n\n return fields\n}\n"],"names":["deepMergeSimple","DuplicateFieldName","InvalidFieldName","InvalidFieldRelationship","MissingEditorProp","MissingFieldType","formatLabels","toWords","baseBlockFields","baseIDField","setDefaultBeforeDuplicate","validations","sanitizeJoinField","fieldAffectsData","tabHasName","sanitizeFields","config","existingFieldNames","Set","fields","joins","parentIsLocalized","requireFieldLevelRichTextEditor","richTextSanitizationPromises","schemaPath","schemaPathArg","validRelationships","i","length","field","_sanitized","type","name","includes","label","defaultValue","required","relationships","Array","isArray","relationTo","forEach","relationship","min","minRows","console","warn","max","maxRows","admin","isSortable","push","labels","has","add","localized","shouldDisableLocalized","localization","compatibility","allowLocalizedWithinLocalized","validate","defaultValidate","val","options","virtual","hooks","access","sanitizeRichText","_config","editor","isRoot","i18n","Object","keys","translations","blocks","block","concat","slug","j","tabs","tab","disableBulkEdit"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../../src/fields/config/sanitize.ts"],"sourcesContent":["import { deepMergeSimple } from '@payloadcms/translations/utilities'\n\nimport type { CollectionConfig, SanitizedJoins } from '../../collections/config/types.js'\nimport type { Config, SanitizedConfig } from '../../config/types.js'\nimport type { Field } from './types.js'\n\nimport {\n DuplicateFieldName,\n InvalidFieldName,\n InvalidFieldRelationship,\n MissingEditorProp,\n MissingFieldType,\n} from '../../errors/index.js'\nimport { formatLabels, toWords } from '../../utilities/formatLabels.js'\nimport { baseBlockFields } from '../baseFields/baseBlockFields.js'\nimport { baseIDField } from '../baseFields/baseIDField.js'\nimport { setDefaultBeforeDuplicate } from '../setDefaultBeforeDuplicate.js'\nimport validations from '../validations.js'\nimport { sanitizeJoinField } from './sanitizeJoinField.js'\nimport { fieldAffectsData, tabHasName } from './types.js'\n\ntype Args = {\n collectionConfig?: CollectionConfig\n config: Config\n existingFieldNames?: Set<string>\n fields: Field[]\n /**\n * When not passed in, assume that join are not supported (globals, arrays, blocks)\n */\n joins?: SanitizedJoins\n parentIsLocalized: boolean\n /**\n * If true, a richText field will require an editor property to be set, as the sanitizeFields function will not add it from the payload config if not present.\n *\n * @default false\n */\n requireFieldLevelRichTextEditor?: boolean\n\n /**\n * If this property is set, RichText fields won't be sanitized immediately. Instead, they will be added to this array as promises\n * so that you can sanitize them together, after the config has been sanitized.\n */\n richTextSanitizationPromises?: Array<(config: SanitizedConfig) => Promise<void>>\n schemaPath?: string\n /**\n * If not null, will validate that upload and relationship fields do not relate to a collection that is not in this array.\n * This validation will be skipped if validRelationships is null.\n */\n validRelationships: null | string[]\n}\n\nfunction generateSchemaPath({ name, path = '' }: { name?: string; path?: string }): string {\n if (!name) {\n return path\n }\n return path ? `${path}.${name}` : name\n}\n\nexport const sanitizeFields = async ({\n config,\n existingFieldNames = new Set(),\n fields,\n joins,\n parentIsLocalized,\n requireFieldLevelRichTextEditor = false,\n richTextSanitizationPromises,\n schemaPath = '',\n validRelationships,\n}: Args): Promise<Field[]> => {\n if (!fields) {\n return []\n }\n\n for (let i = 0; i < fields.length; i++) {\n const field = fields[i]\n\n if ('_sanitized' in field && field._sanitized === true) {\n continue\n }\n\n if (!field.type) {\n throw new MissingFieldType(field)\n }\n\n // assert that field names do not contain forbidden characters\n if (fieldAffectsData(field) && field.name.includes('.')) {\n throw new InvalidFieldName(field, field.name)\n }\n\n // Auto-label\n if (\n 'name' in field &&\n field.name &&\n typeof field.label !== 'object' &&\n typeof field.label !== 'string' &&\n typeof field.label !== 'function' &&\n field.label !== false\n ) {\n field.label = toWords(field.name)\n }\n\n if (\n field.type === 'checkbox' &&\n typeof field.defaultValue === 'undefined' &&\n field.required === true\n ) {\n field.defaultValue = false\n }\n\n if (field.type === 'join') {\n sanitizeJoinField({ config, field, joins, schemaPath })\n }\n\n if (field.type === 'relationship' || field.type === 'upload') {\n if (validRelationships) {\n const relationships = Array.isArray(field.relationTo)\n ? field.relationTo\n : [field.relationTo]\n relationships.forEach((relationship: string) => {\n if (!validRelationships.includes(relationship)) {\n throw new InvalidFieldRelationship(field, relationship)\n }\n })\n }\n\n if (field.min && !field.minRows) {\n console.warn(\n `(payload): The \"min\" property is deprecated for the Relationship field \"${field.name}\" and will be removed in a future version. Please use \"minRows\" instead.`,\n )\n }\n if (field.max && !field.maxRows) {\n console.warn(\n `(payload): The \"max\" property is deprecated for the Relationship field \"${field.name}\" and will be removed in a future version. Please use \"maxRows\" instead.`,\n )\n }\n field.minRows = field.minRows || field.min\n field.maxRows = field.maxRows || field.max\n }\n\n if (field.type === 'upload') {\n if (!field.admin || !('isSortable' in field.admin)) {\n field.admin = {\n isSortable: true,\n ...field.admin,\n }\n }\n }\n\n if (field.type === 'array' && field.fields) {\n field.fields.push(baseIDField)\n }\n\n if ((field.type === 'blocks' || field.type === 'array') && field.label) {\n field.labels = field.labels || formatLabels(field.name)\n }\n\n if (fieldAffectsData(field)) {\n if (existingFieldNames.has(field.name)) {\n throw new DuplicateFieldName(field.name)\n } else if (!['blockName', 'id'].includes(field.name)) {\n existingFieldNames.add(field.name)\n }\n\n if (typeof field.localized !== 'undefined') {\n let shouldDisableLocalized = !config.localization\n\n if (!config.compatibility?.allowLocalizedWithinLocalized && parentIsLocalized) {\n shouldDisableLocalized = true\n }\n\n if (shouldDisableLocalized) {\n delete field.localized\n }\n }\n\n if (typeof field.validate === 'undefined') {\n const defaultValidate = validations[field.type]\n if (defaultValidate) {\n field.validate = (val, options) => defaultValidate(val, { ...field, ...options })\n } else {\n field.validate = (): true => true\n }\n }\n\n if (typeof field.virtual === 'undefined') {\n field.virtual = false\n }\n\n if (!field.hooks) {\n field.hooks = {}\n }\n if (!field.access) {\n field.access = {}\n }\n\n setDefaultBeforeDuplicate(field)\n }\n\n if (!field.admin) {\n field.admin = {}\n }\n\n // Make sure that the richText field has an editor\n if (field.type === 'richText') {\n const sanitizeRichText = async (_config: SanitizedConfig) => {\n if (!field.editor) {\n if (_config.editor && !requireFieldLevelRichTextEditor) {\n // config.editor should be sanitized at this point\n field.editor = _config.editor\n } else {\n throw new MissingEditorProp(field) // while we allow disabling editor functionality, you should not have any richText fields defined if you do not have an editor\n }\n }\n\n if (typeof field.editor === 'function') {\n field.editor = await field.editor({\n config: _config,\n isRoot: requireFieldLevelRichTextEditor,\n parentIsLocalized: parentIsLocalized || field.localized,\n })\n }\n\n if (field.editor.i18n && Object.keys(field.editor.i18n).length >= 0) {\n config.i18n.translations = deepMergeSimple(config.i18n.translations, field.editor.i18n)\n }\n }\n if (richTextSanitizationPromises) {\n richTextSanitizationPromises.push(sanitizeRichText)\n } else {\n await sanitizeRichText(config as unknown as SanitizedConfig)\n }\n }\n\n if (field.type === 'blocks' && field.blocks) {\n for (const block of field.blocks) {\n if (block._sanitized === true) {\n continue\n }\n block._sanitized = true\n block.fields = block.fields.concat(baseBlockFields)\n block.labels = !block.labels ? formatLabels(block.slug) : block.labels\n\n block.fields = await sanitizeFields({\n config,\n existingFieldNames: new Set(),\n fields: block.fields,\n parentIsLocalized: parentIsLocalized || field.localized,\n requireFieldLevelRichTextEditor,\n richTextSanitizationPromises,\n validRelationships,\n })\n }\n }\n\n if ('fields' in field && field.fields) {\n field.fields = await sanitizeFields({\n config,\n existingFieldNames: fieldAffectsData(field) ? new Set() : existingFieldNames,\n fields: field.fields,\n joins,\n parentIsLocalized: parentIsLocalized || field.localized,\n requireFieldLevelRichTextEditor,\n richTextSanitizationPromises,\n schemaPath: generateSchemaPath({\n name: 'name' in field ? field.name : undefined,\n path: schemaPath,\n }),\n validRelationships,\n })\n }\n\n if (field.type === 'tabs') {\n for (let j = 0; j < field.tabs.length; j++) {\n const tab = field.tabs[j]\n if (tabHasName(tab)) {\n if (typeof tab.label === 'undefined') {\n tab.label = toWords(tab.name)\n }\n }\n\n tab.fields = await sanitizeFields({\n config,\n existingFieldNames: tabHasName(tab) ? new Set() : existingFieldNames,\n fields: tab.fields,\n joins,\n parentIsLocalized: parentIsLocalized || (tabHasName(tab) && tab.localized),\n requireFieldLevelRichTextEditor,\n richTextSanitizationPromises,\n schemaPath: generateSchemaPath({\n name: 'name' in tab ? tab.name : undefined,\n path: schemaPath,\n }),\n validRelationships,\n })\n field.tabs[j] = tab\n }\n }\n\n if (field.type === 'ui' && typeof field.admin.disableBulkEdit === 'undefined') {\n field.admin.disableBulkEdit = true\n }\n\n if ('_sanitized' in field) {\n field._sanitized = true\n }\n\n fields[i] = field\n }\n\n return fields\n}\n"],"names":["deepMergeSimple","DuplicateFieldName","InvalidFieldName","InvalidFieldRelationship","MissingEditorProp","MissingFieldType","formatLabels","toWords","baseBlockFields","baseIDField","setDefaultBeforeDuplicate","validations","sanitizeJoinField","fieldAffectsData","tabHasName","generateSchemaPath","name","path","sanitizeFields","config","existingFieldNames","Set","fields","joins","parentIsLocalized","requireFieldLevelRichTextEditor","richTextSanitizationPromises","schemaPath","validRelationships","i","length","field","_sanitized","type","includes","label","defaultValue","required","relationships","Array","isArray","relationTo","forEach","relationship","min","minRows","console","warn","max","maxRows","admin","isSortable","push","labels","has","add","localized","shouldDisableLocalized","localization","compatibility","allowLocalizedWithinLocalized","validate","defaultValidate","val","options","virtual","hooks","access","sanitizeRichText","_config","editor","isRoot","i18n","Object","keys","translations","blocks","block","concat","slug","undefined","j","tabs","tab","disableBulkEdit"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../../src/globals/operations/update.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAEhD,OAAO,KAAK,EAAE,UAAU,EAAc,MAAM,gBAAgB,CAAA;AAC5D,OAAO,KAAK,EAAa,cAAc,EAAS,MAAM,sBAAsB,CAAA;AAC5E,OAAO,KAAK,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAA;AAenF,KAAK,IAAI,CAAC,KAAK,SAAS,UAAU,IAAI;IACpC,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,IAAI,EAAE,WAAW,CAAC,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,CAAC,CAAA;IACxD,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,YAAY,EAAE,qBAAqB,CAAA;IACnC,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,qBAAqB,CAAC,EAAE,MAAM,CAAA;IAC9B,GAAG,EAAE,cAAc,CAAA;IACnB,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B,IAAI,EAAE,MAAM,CAAA;CACb,CAAA;AAED,eAAO,MAAM,eAAe,GAAU,KAAK,SAAS,UAAU,QACtD,IAAI,CAAC,KAAK,CAAC,KAChB,OAAO,CAAC,kBAAkB,CAAC,KAAK,CAAC,
|
|
1
|
+
{"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../../src/globals/operations/update.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAEhD,OAAO,KAAK,EAAE,UAAU,EAAc,MAAM,gBAAgB,CAAA;AAC5D,OAAO,KAAK,EAAa,cAAc,EAAS,MAAM,sBAAsB,CAAA;AAC5E,OAAO,KAAK,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAA;AAenF,KAAK,IAAI,CAAC,KAAK,SAAS,UAAU,IAAI;IACpC,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,IAAI,EAAE,WAAW,CAAC,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,CAAC,CAAA;IACxD,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,kBAAkB,CAAC,EAAE,OAAO,CAAA;IAC5B,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,YAAY,EAAE,qBAAqB,CAAA;IACnC,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,qBAAqB,CAAC,EAAE,MAAM,CAAA;IAC9B,GAAG,EAAE,cAAc,CAAA;IACnB,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B,IAAI,EAAE,MAAM,CAAA;CACb,CAAA;AAED,eAAO,MAAM,eAAe,GAAU,KAAK,SAAS,UAAU,QACtD,IAAI,CAAC,KAAK,CAAC,KAChB,OAAO,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAmTnC,CAAA"}
|
|
@@ -14,9 +14,9 @@ export const updateOperation = async (args)=>{
|
|
|
14
14
|
if (args.publishSpecificLocale) {
|
|
15
15
|
args.req.locale = args.publishSpecificLocale;
|
|
16
16
|
}
|
|
17
|
-
const { slug, autosave, depth, draft: draftArg, globalConfig, overrideAccess, overrideLock, publishSpecificLocale, req: { fallbackLocale, locale, payload }, req, showHiddenFields } = args;
|
|
17
|
+
const { slug, autosave, depth, disableTransaction, draft: draftArg, globalConfig, overrideAccess, overrideLock, publishSpecificLocale, req: { fallbackLocale, locale, payload }, req, showHiddenFields } = args;
|
|
18
18
|
try {
|
|
19
|
-
const shouldCommit = await initTransaction(req);
|
|
19
|
+
const shouldCommit = !disableTransaction && await initTransaction(req);
|
|
20
20
|
let { data } = args;
|
|
21
21
|
const shouldSaveDraft = Boolean(draftArg && globalConfig.versions?.drafts);
|
|
22
22
|
// /////////////////////////////////////
|
|
@@ -170,11 +170,7 @@ export const updateOperation = async (args)=>{
|
|
|
170
170
|
const { globalType } = result;
|
|
171
171
|
result = await saveVersion({
|
|
172
172
|
autosave,
|
|
173
|
-
docWithLocales:
|
|
174
|
-
...result,
|
|
175
|
-
createdAt: result.createdAt,
|
|
176
|
-
updatedAt: result.updatedAt
|
|
177
|
-
},
|
|
173
|
+
docWithLocales: result,
|
|
178
174
|
draft: shouldSaveDraft,
|
|
179
175
|
global: globalConfig,
|
|
180
176
|
payload,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/globals/operations/update.ts"],"sourcesContent":["import type { DeepPartial } from 'ts-essentials'\n\nimport type { GlobalSlug, JsonObject } from '../../index.js'\nimport type { Operation, PayloadRequest, Where } from '../../types/index.js'\nimport type { DataFromGlobalSlug, SanitizedGlobalConfig } from '../config/types.js'\n\nimport executeAccess from '../../auth/executeAccess.js'\nimport { afterChange } from '../../fields/hooks/afterChange/index.js'\nimport { afterRead } from '../../fields/hooks/afterRead/index.js'\nimport { beforeChange } from '../../fields/hooks/beforeChange/index.js'\nimport { beforeValidate } from '../../fields/hooks/beforeValidate/index.js'\nimport { deepCopyObjectSimple } from '../../index.js'\nimport { checkDocumentLockStatus } from '../../utilities/checkDocumentLockStatus.js'\nimport { commitTransaction } from '../../utilities/commitTransaction.js'\nimport { initTransaction } from '../../utilities/initTransaction.js'\nimport { killTransaction } from '../../utilities/killTransaction.js'\nimport { getLatestGlobalVersion } from '../../versions/getLatestGlobalVersion.js'\nimport { saveVersion } from '../../versions/saveVersion.js'\n\ntype Args<TSlug extends GlobalSlug> = {\n autosave?: boolean\n data: DeepPartial<Omit<DataFromGlobalSlug<TSlug>, 'id'>>\n depth?: number\n draft?: boolean\n globalConfig: SanitizedGlobalConfig\n overrideAccess?: boolean\n overrideLock?: boolean\n publishSpecificLocale?: string\n req: PayloadRequest\n showHiddenFields?: boolean\n slug: string\n}\n\nexport const updateOperation = async <TSlug extends GlobalSlug>(\n args: Args<TSlug>,\n): Promise<DataFromGlobalSlug<TSlug>> => {\n if (args.publishSpecificLocale) {\n args.req.locale = args.publishSpecificLocale\n }\n\n const {\n slug,\n autosave,\n depth,\n draft: draftArg,\n globalConfig,\n overrideAccess,\n overrideLock,\n publishSpecificLocale,\n req: { fallbackLocale, locale, payload },\n req,\n showHiddenFields,\n } = args\n\n try {\n const shouldCommit = await initTransaction(req)\n\n let { data } = args\n\n const shouldSaveDraft = Boolean(draftArg && globalConfig.versions?.drafts)\n\n // /////////////////////////////////////\n // 1. Retrieve and execute access\n // /////////////////////////////////////\n\n const accessResults = !overrideAccess\n ? await executeAccess(\n {\n data,\n req,\n },\n globalConfig.access.update,\n )\n : true\n\n // /////////////////////////////////////\n // Retrieve document\n // /////////////////////////////////////\n\n const query: Where = overrideAccess ? undefined : (accessResults as Where)\n\n // /////////////////////////////////////\n // 2. Retrieve document\n // /////////////////////////////////////\n const globalVersion = await getLatestGlobalVersion({\n slug,\n config: globalConfig,\n locale,\n payload,\n req,\n where: query,\n })\n const { global, globalExists } = globalVersion || {}\n\n let globalJSON: JsonObject = {}\n\n if (globalVersion && globalVersion.global) {\n globalJSON = deepCopyObjectSimple(global)\n\n if (globalJSON._id) {\n delete globalJSON._id\n }\n }\n\n const originalDoc = await afterRead({\n collection: null,\n context: req.context,\n depth: 0,\n doc: globalJSON,\n draft: draftArg,\n fallbackLocale,\n global: globalConfig,\n locale,\n overrideAccess: true,\n req,\n showHiddenFields,\n })\n\n // ///////////////////////////////////////////\n // Handle potentially locked global documents\n // ///////////////////////////////////////////\n\n await checkDocumentLockStatus({\n globalSlug: slug,\n lockErrorMessage: `Global with slug \"${slug}\" is currently locked by another user and cannot be updated.`,\n overrideLock,\n req,\n })\n\n // /////////////////////////////////////\n // beforeValidate - Fields\n // /////////////////////////////////////\n\n data = await beforeValidate({\n collection: null,\n context: req.context,\n data,\n doc: originalDoc,\n global: globalConfig,\n operation: 'update',\n overrideAccess,\n req,\n })\n\n // /////////////////////////////////////\n // beforeValidate - Global\n // /////////////////////////////////////\n\n await globalConfig.hooks.beforeValidate.reduce(async (priorHook, hook) => {\n await priorHook\n\n data =\n (await hook({\n context: req.context,\n data,\n global: globalConfig,\n originalDoc,\n req,\n })) || data\n }, Promise.resolve())\n\n // /////////////////////////////////////\n // beforeChange - Global\n // /////////////////////////////////////\n\n await globalConfig.hooks.beforeChange.reduce(async (priorHook, hook) => {\n await priorHook\n\n data =\n (await hook({\n context: req.context,\n data,\n global: globalConfig,\n originalDoc,\n req,\n })) || data\n }, Promise.resolve())\n\n // /////////////////////////////////////\n // beforeChange - Fields\n // /////////////////////////////////////\n let publishedDocWithLocales = globalJSON\n let versionSnapshotResult\n\n const beforeChangeArgs = {\n collection: null,\n context: req.context,\n data,\n doc: originalDoc,\n docWithLocales: undefined,\n global: globalConfig,\n operation: 'update' as Operation,\n req,\n skipValidation:\n shouldSaveDraft && globalConfig.versions.drafts && !globalConfig.versions.drafts.validate,\n }\n\n if (publishSpecificLocale) {\n const latestVersion = await getLatestGlobalVersion({\n slug,\n config: globalConfig,\n payload,\n published: true,\n req,\n where: query,\n })\n\n publishedDocWithLocales = latestVersion?.global || {}\n\n versionSnapshotResult = await beforeChange({\n ...beforeChangeArgs,\n docWithLocales: globalJSON,\n })\n }\n\n let result = await beforeChange({\n ...beforeChangeArgs,\n docWithLocales: publishedDocWithLocales,\n })\n\n // /////////////////////////////////////\n // Update\n // /////////////////////////////////////\n\n if (!shouldSaveDraft) {\n if (globalExists) {\n result = await payload.db.updateGlobal({\n slug,\n data: result,\n req,\n })\n } else {\n result = await payload.db.createGlobal({\n slug,\n data: result,\n req,\n })\n }\n }\n\n // /////////////////////////////////////\n // Create version\n // /////////////////////////////////////\n if (globalConfig.versions) {\n const { globalType } = result\n result = await saveVersion({\n autosave,\n docWithLocales: {\n ...result,\n createdAt: result.createdAt,\n updatedAt: result.updatedAt,\n },\n draft: shouldSaveDraft,\n global: globalConfig,\n payload,\n publishSpecificLocale,\n req,\n snapshot: versionSnapshotResult,\n })\n\n result = {\n ...result,\n globalType,\n }\n }\n\n // /////////////////////////////////////\n // afterRead - Fields\n // /////////////////////////////////////\n\n result = await afterRead({\n collection: null,\n context: req.context,\n depth,\n doc: result,\n draft: draftArg,\n fallbackLocale: null,\n global: globalConfig,\n locale,\n overrideAccess,\n req,\n showHiddenFields,\n })\n\n // /////////////////////////////////////\n // afterRead - Global\n // /////////////////////////////////////\n\n await globalConfig.hooks.afterRead.reduce(async (priorHook, hook) => {\n await priorHook\n\n result =\n (await hook({\n context: req.context,\n doc: result,\n global: globalConfig,\n req,\n })) || result\n }, Promise.resolve())\n\n // /////////////////////////////////////\n // afterChange - Fields\n // /////////////////////////////////////\n\n result = await afterChange({\n collection: null,\n context: req.context,\n data,\n doc: result,\n global: globalConfig,\n operation: 'update',\n previousDoc: originalDoc,\n req,\n })\n\n // /////////////////////////////////////\n // afterChange - Global\n // /////////////////////////////////////\n\n await globalConfig.hooks.afterChange.reduce(async (priorHook, hook) => {\n await priorHook\n\n result =\n (await hook({\n context: req.context,\n doc: result,\n global: globalConfig,\n previousDoc: originalDoc,\n req,\n })) || result\n }, Promise.resolve())\n\n // /////////////////////////////////////\n // Return results\n // /////////////////////////////////////\n\n if (shouldCommit) {\n await commitTransaction(req)\n }\n\n return result\n } catch (error: unknown) {\n await killTransaction(req)\n throw error\n }\n}\n"],"names":["executeAccess","afterChange","afterRead","beforeChange","beforeValidate","deepCopyObjectSimple","checkDocumentLockStatus","commitTransaction","initTransaction","killTransaction","getLatestGlobalVersion","saveVersion","updateOperation","args","publishSpecificLocale","req","locale","slug","autosave","depth","draft","draftArg","globalConfig","overrideAccess","overrideLock","fallbackLocale","payload","showHiddenFields","shouldCommit","data","shouldSaveDraft","Boolean","versions","drafts","accessResults","access","update","query","undefined","globalVersion","config","where","global","globalExists","globalJSON","_id","originalDoc","collection","context","doc","globalSlug","lockErrorMessage","operation","hooks","reduce","priorHook","hook","Promise","resolve","publishedDocWithLocales","versionSnapshotResult","beforeChangeArgs","docWithLocales","skipValidation","validate","latestVersion","published","result","db","updateGlobal","createGlobal","globalType","createdAt","updatedAt","snapshot","previousDoc","error"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../../src/globals/operations/update.ts"],"sourcesContent":["import type { DeepPartial } from 'ts-essentials'\n\nimport type { GlobalSlug, JsonObject } from '../../index.js'\nimport type { Operation, PayloadRequest, Where } from '../../types/index.js'\nimport type { DataFromGlobalSlug, SanitizedGlobalConfig } from '../config/types.js'\n\nimport executeAccess from '../../auth/executeAccess.js'\nimport { afterChange } from '../../fields/hooks/afterChange/index.js'\nimport { afterRead } from '../../fields/hooks/afterRead/index.js'\nimport { beforeChange } from '../../fields/hooks/beforeChange/index.js'\nimport { beforeValidate } from '../../fields/hooks/beforeValidate/index.js'\nimport { deepCopyObjectSimple } from '../../index.js'\nimport { checkDocumentLockStatus } from '../../utilities/checkDocumentLockStatus.js'\nimport { commitTransaction } from '../../utilities/commitTransaction.js'\nimport { initTransaction } from '../../utilities/initTransaction.js'\nimport { killTransaction } from '../../utilities/killTransaction.js'\nimport { getLatestGlobalVersion } from '../../versions/getLatestGlobalVersion.js'\nimport { saveVersion } from '../../versions/saveVersion.js'\n\ntype Args<TSlug extends GlobalSlug> = {\n autosave?: boolean\n data: DeepPartial<Omit<DataFromGlobalSlug<TSlug>, 'id'>>\n depth?: number\n disableTransaction?: boolean\n draft?: boolean\n globalConfig: SanitizedGlobalConfig\n overrideAccess?: boolean\n overrideLock?: boolean\n publishSpecificLocale?: string\n req: PayloadRequest\n showHiddenFields?: boolean\n slug: string\n}\n\nexport const updateOperation = async <TSlug extends GlobalSlug>(\n args: Args<TSlug>,\n): Promise<DataFromGlobalSlug<TSlug>> => {\n if (args.publishSpecificLocale) {\n args.req.locale = args.publishSpecificLocale\n }\n\n const {\n slug,\n autosave,\n depth,\n disableTransaction,\n draft: draftArg,\n globalConfig,\n overrideAccess,\n overrideLock,\n publishSpecificLocale,\n req: { fallbackLocale, locale, payload },\n req,\n showHiddenFields,\n } = args\n\n try {\n const shouldCommit = !disableTransaction && (await initTransaction(req))\n\n let { data } = args\n\n const shouldSaveDraft = Boolean(draftArg && globalConfig.versions?.drafts)\n\n // /////////////////////////////////////\n // 1. Retrieve and execute access\n // /////////////////////////////////////\n\n const accessResults = !overrideAccess\n ? await executeAccess(\n {\n data,\n req,\n },\n globalConfig.access.update,\n )\n : true\n\n // /////////////////////////////////////\n // Retrieve document\n // /////////////////////////////////////\n\n const query: Where = overrideAccess ? undefined : (accessResults as Where)\n\n // /////////////////////////////////////\n // 2. Retrieve document\n // /////////////////////////////////////\n const globalVersion = await getLatestGlobalVersion({\n slug,\n config: globalConfig,\n locale,\n payload,\n req,\n where: query,\n })\n const { global, globalExists } = globalVersion || {}\n\n let globalJSON: JsonObject = {}\n\n if (globalVersion && globalVersion.global) {\n globalJSON = deepCopyObjectSimple(global)\n\n if (globalJSON._id) {\n delete globalJSON._id\n }\n }\n\n const originalDoc = await afterRead({\n collection: null,\n context: req.context,\n depth: 0,\n doc: globalJSON,\n draft: draftArg,\n fallbackLocale,\n global: globalConfig,\n locale,\n overrideAccess: true,\n req,\n showHiddenFields,\n })\n\n // ///////////////////////////////////////////\n // Handle potentially locked global documents\n // ///////////////////////////////////////////\n\n await checkDocumentLockStatus({\n globalSlug: slug,\n lockErrorMessage: `Global with slug \"${slug}\" is currently locked by another user and cannot be updated.`,\n overrideLock,\n req,\n })\n\n // /////////////////////////////////////\n // beforeValidate - Fields\n // /////////////////////////////////////\n\n data = await beforeValidate({\n collection: null,\n context: req.context,\n data,\n doc: originalDoc,\n global: globalConfig,\n operation: 'update',\n overrideAccess,\n req,\n })\n\n // /////////////////////////////////////\n // beforeValidate - Global\n // /////////////////////////////////////\n\n await globalConfig.hooks.beforeValidate.reduce(async (priorHook, hook) => {\n await priorHook\n\n data =\n (await hook({\n context: req.context,\n data,\n global: globalConfig,\n originalDoc,\n req,\n })) || data\n }, Promise.resolve())\n\n // /////////////////////////////////////\n // beforeChange - Global\n // /////////////////////////////////////\n\n await globalConfig.hooks.beforeChange.reduce(async (priorHook, hook) => {\n await priorHook\n\n data =\n (await hook({\n context: req.context,\n data,\n global: globalConfig,\n originalDoc,\n req,\n })) || data\n }, Promise.resolve())\n\n // /////////////////////////////////////\n // beforeChange - Fields\n // /////////////////////////////////////\n let publishedDocWithLocales = globalJSON\n let versionSnapshotResult\n\n const beforeChangeArgs = {\n collection: null,\n context: req.context,\n data,\n doc: originalDoc,\n docWithLocales: undefined,\n global: globalConfig,\n operation: 'update' as Operation,\n req,\n skipValidation:\n shouldSaveDraft && globalConfig.versions.drafts && !globalConfig.versions.drafts.validate,\n }\n\n if (publishSpecificLocale) {\n const latestVersion = await getLatestGlobalVersion({\n slug,\n config: globalConfig,\n payload,\n published: true,\n req,\n where: query,\n })\n\n publishedDocWithLocales = latestVersion?.global || {}\n\n versionSnapshotResult = await beforeChange({\n ...beforeChangeArgs,\n docWithLocales: globalJSON,\n })\n }\n\n let result = await beforeChange({\n ...beforeChangeArgs,\n docWithLocales: publishedDocWithLocales,\n })\n\n // /////////////////////////////////////\n // Update\n // /////////////////////////////////////\n\n if (!shouldSaveDraft) {\n if (globalExists) {\n result = await payload.db.updateGlobal({\n slug,\n data: result,\n req,\n })\n } else {\n result = await payload.db.createGlobal({\n slug,\n data: result,\n req,\n })\n }\n }\n\n // /////////////////////////////////////\n // Create version\n // /////////////////////////////////////\n if (globalConfig.versions) {\n const { globalType } = result\n result = await saveVersion({\n autosave,\n docWithLocales: result,\n draft: shouldSaveDraft,\n global: globalConfig,\n payload,\n publishSpecificLocale,\n req,\n snapshot: versionSnapshotResult,\n })\n\n result = {\n ...result,\n globalType,\n }\n }\n\n // /////////////////////////////////////\n // afterRead - Fields\n // /////////////////////////////////////\n\n result = await afterRead({\n collection: null,\n context: req.context,\n depth,\n doc: result,\n draft: draftArg,\n fallbackLocale: null,\n global: globalConfig,\n locale,\n overrideAccess,\n req,\n showHiddenFields,\n })\n\n // /////////////////////////////////////\n // afterRead - Global\n // /////////////////////////////////////\n\n await globalConfig.hooks.afterRead.reduce(async (priorHook, hook) => {\n await priorHook\n\n result =\n (await hook({\n context: req.context,\n doc: result,\n global: globalConfig,\n req,\n })) || result\n }, Promise.resolve())\n\n // /////////////////////////////////////\n // afterChange - Fields\n // /////////////////////////////////////\n\n result = await afterChange({\n collection: null,\n context: req.context,\n data,\n doc: result,\n global: globalConfig,\n operation: 'update',\n previousDoc: originalDoc,\n req,\n })\n\n // /////////////////////////////////////\n // afterChange - Global\n // /////////////////////////////////////\n\n await globalConfig.hooks.afterChange.reduce(async (priorHook, hook) => {\n await priorHook\n\n result =\n (await hook({\n context: req.context,\n doc: result,\n global: globalConfig,\n previousDoc: originalDoc,\n req,\n })) || result\n }, Promise.resolve())\n\n // /////////////////////////////////////\n // Return results\n // /////////////////////////////////////\n\n if (shouldCommit) {\n await commitTransaction(req)\n }\n\n return result\n } catch (error: unknown) {\n await killTransaction(req)\n throw error\n }\n}\n"],"names":["executeAccess","afterChange","afterRead","beforeChange","beforeValidate","deepCopyObjectSimple","checkDocumentLockStatus","commitTransaction","initTransaction","killTransaction","getLatestGlobalVersion","saveVersion","updateOperation","args","publishSpecificLocale","req","locale","slug","autosave","depth","disableTransaction","draft","draftArg","globalConfig","overrideAccess","overrideLock","fallbackLocale","payload","showHiddenFields","shouldCommit","data","shouldSaveDraft","Boolean","versions","drafts","accessResults","access","update","query","undefined","globalVersion","config","where","global","globalExists","globalJSON","_id","originalDoc","collection","context","doc","globalSlug","lockErrorMessage","operation","hooks","reduce","priorHook","hook","Promise","resolve","publishedDocWithLocales","versionSnapshotResult","beforeChangeArgs","docWithLocales","skipValidation","validate","latestVersion","published","result","db","updateGlobal","createGlobal","globalType","snapshot","previousDoc","error"],"mappings":"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"}
|
|
@@ -1,6 +1,10 @@
|
|
|
1
|
+
import type { SanitizedCollectionConfig } from '../../collections/config/types.js';
|
|
1
2
|
/**
|
|
2
3
|
* Takes the incoming sort argument and prefixes it with `versions.` and preserves any `-` prefixes for descending order
|
|
3
4
|
* @param sort
|
|
4
5
|
*/
|
|
5
|
-
export declare const getQueryDraftsSort: (sort:
|
|
6
|
+
export declare const getQueryDraftsSort: ({ collectionConfig, sort, }: {
|
|
7
|
+
collectionConfig: SanitizedCollectionConfig;
|
|
8
|
+
sort: string;
|
|
9
|
+
}) => string;
|
|
6
10
|
//# sourceMappingURL=getQueryDraftsSort.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getQueryDraftsSort.d.ts","sourceRoot":"","sources":["../../../src/versions/drafts/getQueryDraftsSort.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,eAAO,MAAM,kBAAkB,
|
|
1
|
+
{"version":3,"file":"getQueryDraftsSort.d.ts","sourceRoot":"","sources":["../../../src/versions/drafts/getQueryDraftsSort.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,mCAAmC,CAAA;AAElF;;;GAGG;AACH,eAAO,MAAM,kBAAkB,gCAG5B;IACD,gBAAgB,EAAE,yBAAyB,CAAA;IAC3C,IAAI,EAAE,MAAM,CAAA;CACb,KAAG,MAsBH,CAAA"}
|
|
@@ -1,9 +1,13 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Takes the incoming sort argument and prefixes it with `versions.` and preserves any `-` prefixes for descending order
|
|
3
3
|
* @param sort
|
|
4
|
-
*/ export const getQueryDraftsSort = (sort)=>{
|
|
4
|
+
*/ export const getQueryDraftsSort = ({ collectionConfig, sort })=>{
|
|
5
5
|
if (!sort) {
|
|
6
|
-
|
|
6
|
+
if (collectionConfig.defaultSort) {
|
|
7
|
+
sort = collectionConfig.defaultSort;
|
|
8
|
+
} else {
|
|
9
|
+
sort = '-createdAt';
|
|
10
|
+
}
|
|
7
11
|
}
|
|
8
12
|
let direction = '';
|
|
9
13
|
let orderBy = sort;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/versions/drafts/getQueryDraftsSort.ts"],"sourcesContent":["/**\n * Takes the incoming sort argument and prefixes it with `versions.` and preserves any `-` prefixes for descending order\n * @param sort\n */\nexport const getQueryDraftsSort = (sort: string): string => {\n if (!sort) {\n
|
|
1
|
+
{"version":3,"sources":["../../../src/versions/drafts/getQueryDraftsSort.ts"],"sourcesContent":["import type { SanitizedCollectionConfig } from '../../collections/config/types.js'\n\n/**\n * Takes the incoming sort argument and prefixes it with `versions.` and preserves any `-` prefixes for descending order\n * @param sort\n */\nexport const getQueryDraftsSort = ({\n collectionConfig,\n sort,\n}: {\n collectionConfig: SanitizedCollectionConfig\n sort: string\n}): string => {\n if (!sort) {\n if (collectionConfig.defaultSort) {\n sort = collectionConfig.defaultSort\n } else {\n sort = '-createdAt'\n }\n }\n\n let direction = ''\n let orderBy = sort\n\n if (sort[0] === '-') {\n direction = '-'\n orderBy = sort.substring(1)\n }\n\n if (orderBy === 'id') {\n return `${direction}parent`\n }\n\n return `${direction}version.${orderBy}`\n}\n"],"names":["getQueryDraftsSort","collectionConfig","sort","defaultSort","direction","orderBy","substring"],"mappings":"AAEA;;;CAGC,GACD,OAAO,MAAMA,qBAAqB,CAAC,EACjCC,gBAAgB,EAChBC,IAAI,EAIL;IACC,IAAI,CAACA,MAAM;QACT,IAAID,iBAAiBE,WAAW,EAAE;YAChCD,OAAOD,iBAAiBE,WAAW;QACrC,OAAO;YACLD,OAAO;QACT;IACF;IAEA,IAAIE,YAAY;IAChB,IAAIC,UAAUH;IAEd,IAAIA,IAAI,CAAC,EAAE,KAAK,KAAK;QACnBE,YAAY;QACZC,UAAUH,KAAKI,SAAS,CAAC;IAC3B;IAEA,IAAID,YAAY,MAAM;QACpB,OAAO,CAAC,EAAED,UAAU,MAAM,CAAC;IAC7B;IAEA,OAAO,CAAC,EAAEA,UAAU,QAAQ,EAAEC,QAAQ,CAAC;AACzC,EAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getLatestCollectionVersion.d.ts","sourceRoot":"","sources":["../../src/versions/getLatestCollectionVersion.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,yBAAyB,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAA;AAC3F,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAA;AACvD,OAAO,KAAK,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAGhE,KAAK,IAAI,GAAG;IACV,MAAM,EAAE,yBAAyB,CAAA;IACjC,EAAE,EAAE,MAAM,GAAG,MAAM,CAAA;IACnB,OAAO,EAAE,OAAO,CAAA;IAChB,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,KAAK,EAAE,WAAW,CAAA;IAClB,GAAG,CAAC,EAAE,cAAc,CAAA;CACrB,CAAA;AAED,eAAO,MAAM,0BAA0B,GAAU,CAAC,SAAS,UAAU,yDAOlE,IAAI,KAAG,OAAO,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"getLatestCollectionVersion.d.ts","sourceRoot":"","sources":["../../src/versions/getLatestCollectionVersion.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,yBAAyB,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAA;AAC3F,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAA;AACvD,OAAO,KAAK,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAGhE,KAAK,IAAI,GAAG;IACV,MAAM,EAAE,yBAAyB,CAAA;IACjC,EAAE,EAAE,MAAM,GAAG,MAAM,CAAA;IACnB,OAAO,EAAE,OAAO,CAAA;IAChB,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,KAAK,EAAE,WAAW,CAAA;IAClB,GAAG,CAAC,EAAE,cAAc,CAAA;CACrB,CAAA;AAED,eAAO,MAAM,0BAA0B,GAAU,CAAC,SAAS,UAAU,yDAOlE,IAAI,KAAG,OAAO,CAAC,CAAC,CAgClB,CAAA"}
|
|
@@ -48,12 +48,8 @@ export const getLatestCollectionVersion = async ({ id, config, payload, publishe
|
|
|
48
48
|
}
|
|
49
49
|
return undefined;
|
|
50
50
|
}
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
id,
|
|
54
|
-
createdAt: latestVersion.createdAt,
|
|
55
|
-
updatedAt: latestVersion.updatedAt
|
|
56
|
-
};
|
|
51
|
+
latestVersion.version.id = id;
|
|
52
|
+
return latestVersion.version;
|
|
57
53
|
};
|
|
58
54
|
|
|
59
55
|
//# sourceMappingURL=getLatestCollectionVersion.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/versions/getLatestCollectionVersion.ts"],"sourcesContent":["import type { SanitizedCollectionConfig, TypeWithID } from '../collections/config/types.js'\nimport type { FindOneArgs } from '../database/types.js'\nimport type { Payload, PayloadRequest } from '../types/index.js'\nimport type { TypeWithVersion } from './types.js'\n\ntype Args = {\n config: SanitizedCollectionConfig\n id: number | string\n payload: Payload\n published?: boolean\n query: FindOneArgs\n req?: PayloadRequest\n}\n\nexport const getLatestCollectionVersion = async <T extends TypeWithID = any>({\n id,\n config,\n payload,\n published,\n query,\n req,\n}: Args): Promise<T> => {\n let latestVersion: TypeWithVersion<T>\n\n const whereQuery = published\n ? { and: [{ parent: { equals: id } }, { 'version._status': { equals: 'published' } }] }\n : { and: [{ parent: { equals: id } }, { latest: { equals: true } }] }\n\n if (config.versions?.drafts) {\n const { docs } = await payload.db.findVersions<T>({\n collection: config.slug,\n limit: 1,\n pagination: false,\n req,\n sort: '-updatedAt',\n where: whereQuery,\n })\n ;[latestVersion] = docs\n }\n\n if (!latestVersion) {\n if (!published) {\n const doc = await payload.db.findOne<T>({ ...query, req })\n\n return doc\n }\n\n return undefined\n }\n\n
|
|
1
|
+
{"version":3,"sources":["../../src/versions/getLatestCollectionVersion.ts"],"sourcesContent":["import type { SanitizedCollectionConfig, TypeWithID } from '../collections/config/types.js'\nimport type { FindOneArgs } from '../database/types.js'\nimport type { Payload, PayloadRequest } from '../types/index.js'\nimport type { TypeWithVersion } from './types.js'\n\ntype Args = {\n config: SanitizedCollectionConfig\n id: number | string\n payload: Payload\n published?: boolean\n query: FindOneArgs\n req?: PayloadRequest\n}\n\nexport const getLatestCollectionVersion = async <T extends TypeWithID = any>({\n id,\n config,\n payload,\n published,\n query,\n req,\n}: Args): Promise<T> => {\n let latestVersion: TypeWithVersion<T>\n\n const whereQuery = published\n ? { and: [{ parent: { equals: id } }, { 'version._status': { equals: 'published' } }] }\n : { and: [{ parent: { equals: id } }, { latest: { equals: true } }] }\n\n if (config.versions?.drafts) {\n const { docs } = await payload.db.findVersions<T>({\n collection: config.slug,\n limit: 1,\n pagination: false,\n req,\n sort: '-updatedAt',\n where: whereQuery,\n })\n ;[latestVersion] = docs\n }\n\n if (!latestVersion) {\n if (!published) {\n const doc = await payload.db.findOne<T>({ ...query, req })\n\n return doc\n }\n\n return undefined\n }\n\n latestVersion.version.id = id\n\n return latestVersion.version\n}\n"],"names":["getLatestCollectionVersion","id","config","payload","published","query","req","latestVersion","whereQuery","and","parent","equals","latest","versions","drafts","docs","db","findVersions","collection","slug","limit","pagination","sort","where","doc","findOne","undefined","version"],"mappings":"AAcA,OAAO,MAAMA,6BAA6B,OAAmC,EAC3EC,EAAE,EACFC,MAAM,EACNC,OAAO,EACPC,SAAS,EACTC,KAAK,EACLC,GAAG,EACE;IACL,IAAIC;IAEJ,MAAMC,aAAaJ,YACf;QAAEK,KAAK;YAAC;gBAAEC,QAAQ;oBAAEC,QAAQV;gBAAG;YAAE;YAAG;gBAAE,mBAAmB;oBAAEU,QAAQ;gBAAY;YAAE;SAAE;IAAC,IACpF;QAAEF,KAAK;YAAC;gBAAEC,QAAQ;oBAAEC,QAAQV;gBAAG;YAAE;YAAG;gBAAEW,QAAQ;oBAAED,QAAQ;gBAAK;YAAE;SAAE;IAAC;IAEtE,IAAIT,OAAOW,QAAQ,EAAEC,QAAQ;QAC3B,MAAM,EAAEC,IAAI,EAAE,GAAG,MAAMZ,QAAQa,EAAE,CAACC,YAAY,CAAI;YAChDC,YAAYhB,OAAOiB,IAAI;YACvBC,OAAO;YACPC,YAAY;YACZf;YACAgB,MAAM;YACNC,OAAOf;QACT;QACC,CAACD,cAAc,GAAGQ;IACrB;IAEA,IAAI,CAACR,eAAe;QAClB,IAAI,CAACH,WAAW;YACd,MAAMoB,MAAM,MAAMrB,QAAQa,EAAE,CAACS,OAAO,CAAI;gBAAE,GAAGpB,KAAK;gBAAEC;YAAI;YAExD,OAAOkB;QACT;QAEA,OAAOE;IACT;IAEAnB,cAAcoB,OAAO,CAAC1B,EAAE,GAAGA;IAE3B,OAAOM,cAAcoB,OAAO;AAC9B,EAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getLatestGlobalVersion.d.ts","sourceRoot":"","sources":["../../src/versions/getLatestGlobalVersion.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAA;AACvE,OAAO,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAA;AAIjF,KAAK,IAAI,GAAG;IACV,MAAM,EAAE,qBAAqB,CAAA;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,OAAO,CAAA;IAChB,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,GAAG,CAAC,EAAE,cAAc,CAAA;IACpB,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,KAAK,CAAA;CACb,CAAA;AAED,eAAO,MAAM,sBAAsB,8DAQhC,IAAI,KAAG,OAAO,CAAC;IAAE,MAAM,EAAE,QAAQ,CAAC;IAAC,YAAY,EAAE,OAAO,CAAA;CAAE,
|
|
1
|
+
{"version":3,"file":"getLatestGlobalVersion.d.ts","sourceRoot":"","sources":["../../src/versions/getLatestGlobalVersion.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAA;AACvE,OAAO,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAA;AAIjF,KAAK,IAAI,GAAG;IACV,MAAM,EAAE,qBAAqB,CAAA;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,OAAO,CAAA;IAChB,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,GAAG,CAAC,EAAE,cAAc,CAAA;IACpB,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,KAAK,CAAA;CACb,CAAA;AAED,eAAO,MAAM,sBAAsB,8DAQhC,IAAI,KAAG,OAAO,CAAC;IAAE,MAAM,EAAE,QAAQ,CAAC;IAAC,YAAY,EAAE,OAAO,CAAA;CAAE,CA+C5D,CAAA"}
|
|
@@ -32,12 +32,14 @@ export const getLatestGlobalVersion = async ({ slug, config, locale, payload, pu
|
|
|
32
32
|
globalExists
|
|
33
33
|
};
|
|
34
34
|
}
|
|
35
|
+
if (!latestVersion.version.createdAt) {
|
|
36
|
+
latestVersion.version.createdAt = latestVersion.createdAt;
|
|
37
|
+
}
|
|
38
|
+
if (!latestVersion.version.updatedAt) {
|
|
39
|
+
latestVersion.version.updatedAt = latestVersion.updatedAt;
|
|
40
|
+
}
|
|
35
41
|
return {
|
|
36
|
-
global:
|
|
37
|
-
...latestVersion.version,
|
|
38
|
-
createdAt: latestVersion.createdAt,
|
|
39
|
-
updatedAt: latestVersion.updatedAt
|
|
40
|
-
},
|
|
42
|
+
global: latestVersion.version,
|
|
41
43
|
globalExists
|
|
42
44
|
};
|
|
43
45
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/versions/getLatestGlobalVersion.ts"],"sourcesContent":["import type { SanitizedGlobalConfig } from '../globals/config/types.js'\nimport type { Document, Payload, PayloadRequest, Where } from '../types/index.js'\n\nimport { docHasTimestamps } from '../types/index.js'\n\ntype Args = {\n config: SanitizedGlobalConfig\n locale?: string\n payload: Payload\n published?: boolean\n req?: PayloadRequest\n slug: string\n where: Where\n}\n\nexport const getLatestGlobalVersion = async ({\n slug,\n config,\n locale,\n payload,\n published,\n req,\n where,\n}: Args): Promise<{ global: Document; globalExists: boolean }> => {\n let latestVersion\n\n const whereQuery = published\n ? { 'version._status': { equals: 'published' } }\n : { latest: { equals: true } }\n\n if (config.versions?.drafts) {\n latestVersion = (\n await payload.db.findGlobalVersions({\n global: slug,\n limit: 1,\n locale,\n pagination: false,\n req,\n where: whereQuery,\n })\n ).docs[0]\n }\n\n const global = await payload.db.findGlobal({\n slug,\n locale,\n req,\n where,\n })\n const globalExists = Boolean(global)\n\n if (!latestVersion) {\n return {\n global,\n globalExists,\n }\n }\n\n
|
|
1
|
+
{"version":3,"sources":["../../src/versions/getLatestGlobalVersion.ts"],"sourcesContent":["import type { SanitizedGlobalConfig } from '../globals/config/types.js'\nimport type { Document, Payload, PayloadRequest, Where } from '../types/index.js'\n\nimport { docHasTimestamps } from '../types/index.js'\n\ntype Args = {\n config: SanitizedGlobalConfig\n locale?: string\n payload: Payload\n published?: boolean\n req?: PayloadRequest\n slug: string\n where: Where\n}\n\nexport const getLatestGlobalVersion = async ({\n slug,\n config,\n locale,\n payload,\n published,\n req,\n where,\n}: Args): Promise<{ global: Document; globalExists: boolean }> => {\n let latestVersion\n\n const whereQuery = published\n ? { 'version._status': { equals: 'published' } }\n : { latest: { equals: true } }\n\n if (config.versions?.drafts) {\n latestVersion = (\n await payload.db.findGlobalVersions({\n global: slug,\n limit: 1,\n locale,\n pagination: false,\n req,\n where: whereQuery,\n })\n ).docs[0]\n }\n\n const global = await payload.db.findGlobal({\n slug,\n locale,\n req,\n where,\n })\n const globalExists = Boolean(global)\n\n if (!latestVersion) {\n return {\n global,\n globalExists,\n }\n }\n\n if (!latestVersion.version.createdAt) {\n latestVersion.version.createdAt = latestVersion.createdAt\n }\n\n if (!latestVersion.version.updatedAt) {\n latestVersion.version.updatedAt = latestVersion.updatedAt\n }\n\n return {\n global: latestVersion.version,\n globalExists,\n }\n}\n"],"names":["getLatestGlobalVersion","slug","config","locale","payload","published","req","where","latestVersion","whereQuery","equals","latest","versions","drafts","db","findGlobalVersions","global","limit","pagination","docs","findGlobal","globalExists","Boolean","version","createdAt","updatedAt"],"mappings":"AAeA,OAAO,MAAMA,yBAAyB,OAAO,EAC3CC,IAAI,EACJC,MAAM,EACNC,MAAM,EACNC,OAAO,EACPC,SAAS,EACTC,GAAG,EACHC,KAAK,EACA;IACL,IAAIC;IAEJ,MAAMC,aAAaJ,YACf;QAAE,mBAAmB;YAAEK,QAAQ;QAAY;IAAE,IAC7C;QAAEC,QAAQ;YAAED,QAAQ;QAAK;IAAE;IAE/B,IAAIR,OAAOU,QAAQ,EAAEC,QAAQ;QAC3BL,gBAAgB,AACd,CAAA,MAAMJ,QAAQU,EAAE,CAACC,kBAAkB,CAAC;YAClCC,QAAQf;YACRgB,OAAO;YACPd;YACAe,YAAY;YACZZ;YACAC,OAAOE;QACT,EAAC,EACDU,IAAI,CAAC,EAAE;IACX;IAEA,MAAMH,SAAS,MAAMZ,QAAQU,EAAE,CAACM,UAAU,CAAC;QACzCnB;QACAE;QACAG;QACAC;IACF;IACA,MAAMc,eAAeC,QAAQN;IAE7B,IAAI,CAACR,eAAe;QAClB,OAAO;YACLQ;YACAK;QACF;IACF;IAEA,IAAI,CAACb,cAAce,OAAO,CAACC,SAAS,EAAE;QACpChB,cAAce,OAAO,CAACC,SAAS,GAAGhB,cAAcgB,SAAS;IAC3D;IAEA,IAAI,CAAChB,cAAce,OAAO,CAACE,SAAS,EAAE;QACpCjB,cAAce,OAAO,CAACE,SAAS,GAAGjB,cAAciB,SAAS;IAC3D;IAEA,OAAO;QACLT,QAAQR,cAAce,OAAO;QAC7BF;IACF;AACF,EAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"saveVersion.d.ts","sourceRoot":"","sources":["../../src/versions/saveVersion.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,yBAAyB,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAA;AAC3F,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAA;AACvE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AAC1C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAMvD,KAAK,IAAI,GAAG;IACV,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,UAAU,CAAC,EAAE,yBAAyB,CAAA;IACtC,cAAc,EAAE,GAAG,CAAA;IACnB,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,MAAM,CAAC,EAAE,qBAAqB,CAAA;IAC9B,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IACpB,OAAO,EAAE,OAAO,CAAA;IAChB,qBAAqB,CAAC,EAAE,MAAM,CAAA;IAC9B,GAAG,CAAC,EAAE,cAAc,CAAA;IACpB,QAAQ,CAAC,EAAE,GAAG,CAAA;CACf,CAAA;AAED,eAAO,MAAM,WAAW,qHAWrB,IAAI,KAAG,OAAO,CAAC,UAAU,
|
|
1
|
+
{"version":3,"file":"saveVersion.d.ts","sourceRoot":"","sources":["../../src/versions/saveVersion.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,yBAAyB,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAA;AAC3F,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAA;AACvE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AAC1C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAMvD,KAAK,IAAI,GAAG;IACV,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,UAAU,CAAC,EAAE,yBAAyB,CAAA;IACtC,cAAc,EAAE,GAAG,CAAA;IACnB,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,MAAM,CAAC,EAAE,qBAAqB,CAAA;IAC9B,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IACpB,OAAO,EAAE,OAAO,CAAA;IAChB,qBAAqB,CAAC,EAAE,MAAM,CAAA;IAC9B,GAAG,CAAC,EAAE,cAAc,CAAA;IACpB,QAAQ,CAAC,EAAE,GAAG,CAAA;CACf,CAAA;AAED,eAAO,MAAM,WAAW,qHAWrB,IAAI,KAAG,OAAO,CAAC,UAAU,CAwK3B,CAAA"}
|
|
@@ -49,7 +49,7 @@ export const saveVersion = async ({ id, autosave, collection, docWithLocales: do
|
|
|
49
49
|
createNewVersion = false;
|
|
50
50
|
const data = {
|
|
51
51
|
createdAt: new Date(latestVersion.createdAt).toISOString(),
|
|
52
|
-
updatedAt:
|
|
52
|
+
updatedAt: now,
|
|
53
53
|
version: {
|
|
54
54
|
...versionData
|
|
55
55
|
}
|
|
@@ -78,12 +78,12 @@ export const saveVersion = async ({ id, autosave, collection, docWithLocales: do
|
|
|
78
78
|
const createVersionArgs = {
|
|
79
79
|
autosave: Boolean(autosave),
|
|
80
80
|
collectionSlug: undefined,
|
|
81
|
-
createdAt:
|
|
81
|
+
createdAt: now,
|
|
82
82
|
globalSlug: undefined,
|
|
83
83
|
parent: collection ? id : undefined,
|
|
84
84
|
publishedLocale: publishSpecificLocale || undefined,
|
|
85
85
|
req,
|
|
86
|
-
updatedAt:
|
|
86
|
+
updatedAt: now,
|
|
87
87
|
versionData
|
|
88
88
|
};
|
|
89
89
|
if (collection) {
|
|
@@ -146,8 +146,6 @@ export const saveVersion = async ({ id, autosave, collection, docWithLocales: do
|
|
|
146
146
|
});
|
|
147
147
|
}
|
|
148
148
|
let createdVersion = result.version;
|
|
149
|
-
createdVersion.createdAt = result.createdAt;
|
|
150
|
-
createdVersion.updatedAt = result.updatedAt;
|
|
151
149
|
createdVersion = sanitizeInternalFields(createdVersion);
|
|
152
150
|
createdVersion.id = result.parent;
|
|
153
151
|
return createdVersion;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/versions/saveVersion.ts"],"sourcesContent":["import type { SanitizedCollectionConfig, TypeWithID } from '../collections/config/types.js'\nimport type { SanitizedGlobalConfig } from '../globals/config/types.js'\nimport type { Payload } from '../index.js'\nimport type { PayloadRequest } from '../types/index.js'\n\nimport { deepCopyObjectSimple } from '../index.js'\nimport sanitizeInternalFields from '../utilities/sanitizeInternalFields.js'\nimport { enforceMaxVersions } from './enforceMaxVersions.js'\n\ntype Args = {\n autosave?: boolean\n collection?: SanitizedCollectionConfig\n docWithLocales: any\n draft?: boolean\n global?: SanitizedGlobalConfig\n id?: number | string\n payload: Payload\n publishSpecificLocale?: string\n req?: PayloadRequest\n snapshot?: any\n}\n\nexport const saveVersion = async ({\n id,\n autosave,\n collection,\n docWithLocales: doc,\n draft,\n global,\n payload,\n publishSpecificLocale,\n req,\n snapshot,\n}: Args): Promise<TypeWithID> => {\n let result\n let createNewVersion = true\n const now = new Date().toISOString()\n const versionData = deepCopyObjectSimple(doc)\n if (draft) {\n versionData._status = 'draft'\n }\n if (versionData._id) {\n delete versionData._id\n }\n\n try {\n if (autosave) {\n let docs\n const findVersionArgs = {\n limit: 1,\n pagination: false,\n req,\n sort: '-updatedAt',\n }\n if (collection) {\n ;({ docs } = await payload.db.findVersions({\n ...findVersionArgs,\n collection: collection.slug,\n limit: 1,\n pagination: false,\n req,\n where: {\n parent: {\n equals: id,\n },\n },\n }))\n } else {\n ;({ docs } = await payload.db.findGlobalVersions({\n ...findVersionArgs,\n global: global.slug,\n limit: 1,\n pagination: false,\n req,\n }))\n }\n const [latestVersion] = docs\n\n // overwrite the latest version if it's set to autosave\n if (latestVersion?.autosave === true) {\n createNewVersion = false\n\n const data: Record<string, unknown> = {\n createdAt: new Date(latestVersion.createdAt).toISOString(),\n updatedAt:
|
|
1
|
+
{"version":3,"sources":["../../src/versions/saveVersion.ts"],"sourcesContent":["import type { SanitizedCollectionConfig, TypeWithID } from '../collections/config/types.js'\nimport type { SanitizedGlobalConfig } from '../globals/config/types.js'\nimport type { Payload } from '../index.js'\nimport type { PayloadRequest } from '../types/index.js'\n\nimport { deepCopyObjectSimple } from '../index.js'\nimport sanitizeInternalFields from '../utilities/sanitizeInternalFields.js'\nimport { enforceMaxVersions } from './enforceMaxVersions.js'\n\ntype Args = {\n autosave?: boolean\n collection?: SanitizedCollectionConfig\n docWithLocales: any\n draft?: boolean\n global?: SanitizedGlobalConfig\n id?: number | string\n payload: Payload\n publishSpecificLocale?: string\n req?: PayloadRequest\n snapshot?: any\n}\n\nexport const saveVersion = async ({\n id,\n autosave,\n collection,\n docWithLocales: doc,\n draft,\n global,\n payload,\n publishSpecificLocale,\n req,\n snapshot,\n}: Args): Promise<TypeWithID> => {\n let result\n let createNewVersion = true\n const now = new Date().toISOString()\n const versionData = deepCopyObjectSimple(doc)\n if (draft) {\n versionData._status = 'draft'\n }\n if (versionData._id) {\n delete versionData._id\n }\n\n try {\n if (autosave) {\n let docs\n const findVersionArgs = {\n limit: 1,\n pagination: false,\n req,\n sort: '-updatedAt',\n }\n if (collection) {\n ;({ docs } = await payload.db.findVersions({\n ...findVersionArgs,\n collection: collection.slug,\n limit: 1,\n pagination: false,\n req,\n where: {\n parent: {\n equals: id,\n },\n },\n }))\n } else {\n ;({ docs } = await payload.db.findGlobalVersions({\n ...findVersionArgs,\n global: global.slug,\n limit: 1,\n pagination: false,\n req,\n }))\n }\n const [latestVersion] = docs\n\n // overwrite the latest version if it's set to autosave\n if (latestVersion?.autosave === true) {\n createNewVersion = false\n\n const data: Record<string, unknown> = {\n createdAt: new Date(latestVersion.createdAt).toISOString(),\n updatedAt: now,\n version: {\n ...versionData,\n },\n }\n\n const updateVersionArgs = {\n id: latestVersion.id,\n req,\n versionData: data as TypeWithID,\n }\n\n if (collection) {\n result = await payload.db.updateVersion({\n ...updateVersionArgs,\n collection: collection.slug,\n req,\n })\n } else {\n result = await payload.db.updateGlobalVersion({\n ...updateVersionArgs,\n global: global.slug,\n req,\n })\n }\n }\n }\n\n if (createNewVersion) {\n const createVersionArgs = {\n autosave: Boolean(autosave),\n collectionSlug: undefined,\n createdAt: now,\n globalSlug: undefined,\n parent: collection ? id : undefined,\n publishedLocale: publishSpecificLocale || undefined,\n req,\n updatedAt: now,\n versionData,\n }\n\n if (collection) {\n createVersionArgs.collectionSlug = collection.slug\n result = await payload.db.createVersion(createVersionArgs)\n }\n\n if (global) {\n createVersionArgs.globalSlug = global.slug\n result = await payload.db.createGlobalVersion(createVersionArgs)\n }\n\n if (publishSpecificLocale && snapshot) {\n const snapshotData = deepCopyObjectSimple(snapshot)\n if (snapshotData._id) {\n delete snapshotData._id\n }\n\n snapshotData._status = 'draft'\n\n const snapshotDate = new Date().toISOString()\n\n const updatedArgs = {\n ...createVersionArgs,\n createdAt: snapshotDate,\n snapshot: true,\n updatedAt: snapshotDate,\n versionData: snapshotData,\n } as any\n\n if (collection) {\n await payload.db.createVersion(updatedArgs)\n }\n if (global) {\n await payload.db.createGlobalVersion(updatedArgs)\n }\n }\n }\n } catch (err) {\n let errorMessage: string\n\n if (collection) {\n errorMessage = `There was an error while saving a version for the ${collection.labels.singular} with ID ${id}.`\n }\n if (global) {\n errorMessage = `There was an error while saving a version for the global ${global.label}.`\n }\n payload.logger.error(errorMessage)\n payload.logger.error(err)\n return\n }\n\n let max = 100\n\n if (collection && typeof collection.versions.maxPerDoc === 'number') {\n max = collection.versions.maxPerDoc\n }\n if (global && typeof global.versions.max === 'number') {\n max = global.versions.max\n }\n\n if (createNewVersion && max > 0) {\n await enforceMaxVersions({\n id,\n collection,\n global,\n max,\n payload,\n req,\n })\n }\n\n let createdVersion = result.version\n\n createdVersion = sanitizeInternalFields(createdVersion)\n createdVersion.id = result.parent\n\n return createdVersion\n}\n"],"names":["deepCopyObjectSimple","sanitizeInternalFields","enforceMaxVersions","saveVersion","id","autosave","collection","docWithLocales","doc","draft","global","payload","publishSpecificLocale","req","snapshot","result","createNewVersion","now","Date","toISOString","versionData","_status","_id","docs","findVersionArgs","limit","pagination","sort","db","findVersions","slug","where","parent","equals","findGlobalVersions","latestVersion","data","createdAt","updatedAt","version","updateVersionArgs","updateVersion","updateGlobalVersion","createVersionArgs","Boolean","collectionSlug","undefined","globalSlug","publishedLocale","createVersion","createGlobalVersion","snapshotData","snapshotDate","updatedArgs","err","errorMessage","labels","singular","label","logger","error","max","versions","maxPerDoc","createdVersion"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "payload",
|
|
3
|
-
"version": "3.0.0-beta.
|
|
3
|
+
"version": "3.0.0-beta.115",
|
|
4
4
|
"description": "Node, React, Headless CMS and Application Framework built on Next.js",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"admin panel",
|
|
@@ -95,7 +95,7 @@
|
|
|
95
95
|
"ts-essentials": "10.0.2",
|
|
96
96
|
"tsx": "4.19.1",
|
|
97
97
|
"uuid": "10.0.0",
|
|
98
|
-
"@payloadcms/translations": "3.0.0-beta.
|
|
98
|
+
"@payloadcms/translations": "3.0.0-beta.115"
|
|
99
99
|
},
|
|
100
100
|
"devDependencies": {
|
|
101
101
|
"@hyrious/esbuild-plugin-commonjs": "^0.2.4",
|