{"version":3,"sources":["../../../src/globals/operations/update.ts"],"sourcesContent":["import type { DeepPartial } from 'ts-essentials'\n\nimport type { FindOptions } from '../../collections/operations/local/find.js'\nimport type { GlobalSlug, JsonObject } from '../../index.js'\nimport type {\n  Operation,\n  PayloadRequest,\n  PopulateType,\n  SelectType,\n  TransformGlobalWithSelect,\n  Where,\n} from '../../types/index.js'\nimport type {\n  DataFromGlobalSlug,\n  SanitizedGlobalConfig,\n  SelectFromGlobalSlug,\n} 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 { getSelectMode } from '../../utilities/getSelectMode.js'\nimport {\n  hasDraftsEnabled,\n  hasDraftValidationEnabled,\n  hasLocalizeStatusEnabled,\n} from '../../utilities/getVersionsConfig.js'\nimport { initTransaction } from '../../utilities/initTransaction.js'\nimport { killTransaction } from '../../utilities/killTransaction.js'\nimport { mergeLocalizedData } from '../../utilities/mergeLocalizedData.js'\nimport { sanitizeSelect } from '../../utilities/sanitizeSelect.js'\nimport { getLatestGlobalVersion } from '../../versions/getLatestGlobalVersion.js'\nimport { saveVersion } from '../../versions/saveVersion.js'\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  populate?: PopulateType\n  publishAllLocales?: boolean\n  publishSpecificLocale?: string\n  req: PayloadRequest\n  showHiddenFields?: boolean\n  slug: string\n  unpublishAllLocales?: boolean\n} & Pick<FindOptions<string, SelectType>, 'select'>\n\nexport const updateOperation = async <\n  TSlug extends GlobalSlug,\n  TSelect extends SelectFromGlobalSlug<TSlug>,\n>(\n  args: Args<TSlug>,\n): Promise<TransformGlobalWithSelect<TSlug, TSelect>> => {\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    populate,\n    publishAllLocales: publishAllLocalesArg,\n    publishSpecificLocale,\n    req: { fallbackLocale, locale, payload, payload: { config } = {} },\n    req,\n    select: incomingSelect,\n    showHiddenFields,\n    unpublishAllLocales: unpublishAllLocalesArg,\n  } = args\n\n  try {\n    const shouldCommit = !disableTransaction && (await initTransaction(req))\n\n    // /////////////////////////////////////\n    // beforeOperation - Global\n    // /////////////////////////////////////\n\n    if (globalConfig.hooks?.beforeOperation?.length) {\n      for (const hook of globalConfig.hooks.beforeOperation) {\n        args =\n          (await hook({\n            args,\n            context: args.req.context,\n            global: globalConfig,\n            operation: 'update',\n            overrideAccess,\n            req: args.req,\n          })) || args\n      }\n    }\n\n    let { data } = args\n\n    const publishAllLocales =\n      !draftArg && (publishAllLocalesArg ?? (hasLocalizeStatusEnabled(globalConfig) ? false : true))\n    const unpublishAllLocales =\n      typeof unpublishAllLocalesArg === 'string'\n        ? unpublishAllLocalesArg === 'true'\n        : !!unpublishAllLocalesArg\n    const isSavingDraft =\n      Boolean(draftArg && hasDraftsEnabled(globalConfig)) &&\n      data._status !== 'published' &&\n      !publishAllLocales\n\n    if (isSavingDraft) {\n      data._status = 'draft'\n    }\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 globalVersionResult = await getLatestGlobalVersion({\n      slug,\n      config: globalConfig,\n      locale: locale!,\n      payload,\n      req,\n      where: query,\n    })\n    const { global, globalExists } = globalVersionResult || {}\n\n    let globalJSON: JsonObject = {}\n\n    if (globalVersionResult && globalVersionResult.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: deepCopyObjectSimple(globalJSON),\n      draft: draftArg!,\n      fallbackLocale: fallbackLocale!,\n      global: globalConfig,\n      locale: locale!,\n      overrideAccess: true,\n      req,\n      showHiddenFields: 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: overrideAccess!,\n      req,\n    })\n\n    // /////////////////////////////////////\n    // beforeValidate - Global\n    // /////////////////////////////////////\n\n    if (globalConfig.hooks?.beforeValidate?.length) {\n      for (const hook of globalConfig.hooks.beforeValidate) {\n        data =\n          (await hook({\n            context: req.context,\n            data,\n            global: globalConfig,\n            originalDoc,\n            overrideAccess,\n            req,\n          })) || data\n      }\n    }\n\n    // /////////////////////////////////////\n    // beforeChange - Global\n    // /////////////////////////////////////\n\n    if (globalConfig.hooks?.beforeChange?.length) {\n      for (const hook of globalConfig.hooks.beforeChange) {\n        data =\n          (await hook({\n            context: req.context,\n            data,\n            global: globalConfig,\n            originalDoc,\n            overrideAccess,\n            req,\n          })) || data\n      }\n    }\n\n    // /////////////////////////////////////\n    // beforeChange - Fields\n    // /////////////////////////////////////\n\n    const beforeChangeArgs = {\n      collection: null,\n      context: req.context,\n      data,\n      doc: originalDoc,\n      docWithLocales: globalJSON,\n      global: globalConfig,\n      operation: 'update' as Operation,\n      req,\n      skipValidation:\n        (isSavingDraft && !hasDraftValidationEnabled(globalConfig)) ||\n        // Skip validation for unpublish operations — they only change _status, not document data\n        unpublishAllLocales,\n    }\n\n    let result: JsonObject = await beforeChange(beforeChangeArgs)\n    let snapshotToSave: JsonObject | undefined\n\n    // /////////////////////////////////////\n    // Handle Localized Data Merging\n    // /////////////////////////////////////\n\n    if (config && config.localization && globalConfig.versions) {\n      let currentGlobal: JsonObject | null = null\n      let snapshotData: JsonObject | undefined\n\n      if (globalConfig.versions.drafts && globalConfig.versions.drafts.localizeStatus) {\n        if (publishAllLocales || unpublishAllLocales) {\n          let accessibleLocaleCodes = config.localization.localeCodes\n\n          if (config.localization.filterAvailableLocales) {\n            const filteredLocales = await config.localization.filterAvailableLocales({\n              locales: config.localization.locales,\n              req,\n            })\n            accessibleLocaleCodes = filteredLocales.map((locale) =>\n              typeof locale === 'string' ? locale : locale.code,\n            )\n          }\n\n          if (typeof result._status !== 'object' || result._status === null) {\n            result._status = {}\n          }\n\n          for (const localeCode of accessibleLocaleCodes) {\n            result._status[localeCode] = unpublishAllLocales ? 'draft' : 'published'\n          }\n        } else if (!isSavingDraft) {\n          // publishing a single locale\n          currentGlobal = await payload.db.findGlobal({\n            slug: globalConfig.slug,\n            req,\n            where: query,\n          })\n          snapshotData = result\n        }\n      } else if (publishSpecificLocale) {\n        // previous way of publishing a single locale\n        currentGlobal = (\n          await getLatestGlobalVersion({\n            slug,\n            config: globalConfig,\n            payload,\n            published: true,\n            req,\n            where: query,\n          })\n        ).global\n        snapshotData = {\n          ...result,\n          _status: 'draft',\n        }\n      }\n\n      if (snapshotData) {\n        snapshotToSave = deepCopyObjectSimple(snapshotData)\n\n        result = mergeLocalizedData({\n          configBlockReferences: config.blocks,\n          dataWithLocales: result || {},\n          docWithLocales: currentGlobal || {},\n          fields: globalConfig.fields,\n          selectedLocales: [locale!],\n        })\n      }\n    }\n    // /////////////////////////////////////\n    // Update\n    // /////////////////////////////////////\n\n    const select = sanitizeSelect({\n      fields: globalConfig.flattenedFields,\n      forceSelect: globalConfig.forceSelect,\n      select: incomingSelect,\n    })\n\n    if (!isSavingDraft) {\n      const now = new Date().toISOString()\n      // Ensure global has createdAt\n      if (!result.createdAt) {\n        result.createdAt = now\n      }\n\n      // Ensure updatedAt date is always updated\n      result.updatedAt = now\n\n      if (globalExists) {\n        result = await payload.db.updateGlobal({\n          slug,\n          data: result,\n          req,\n          select,\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: isSavingDraft,\n        global: globalConfig,\n        operation: 'update',\n        payload,\n        publishSpecificLocale,\n        req,\n        select,\n        snapshot: snapshotToSave,\n        unpublish: unpublishAllLocales,\n      })\n\n      result = {\n        ...result,\n        globalType,\n      }\n    }\n\n    // /////////////////////////////////////\n    // Execute globalType field if not selected\n    // /////////////////////////////////////\n    if (select && result.globalType) {\n      const selectMode = getSelectMode(select)\n      if (\n        (selectMode === 'include' && !select['globalType']) ||\n        (selectMode === 'exclude' && select['globalType'] === false)\n      ) {\n        delete result['globalType']\n      }\n    }\n\n    // /////////////////////////////////////\n    // afterRead - Fields\n    // /////////////////////////////////////\n\n    result = await afterRead({\n      collection: null,\n      context: req.context,\n      depth: depth!,\n      doc: result,\n      draft: draftArg!,\n      fallbackLocale: null,\n      global: globalConfig,\n      locale: locale!,\n      overrideAccess: overrideAccess!,\n      populate,\n      req,\n      select,\n      showHiddenFields: showHiddenFields!,\n    })\n\n    // /////////////////////////////////////\n    // afterRead - Global\n    // /////////////////////////////////////\n\n    if (globalConfig.hooks?.afterRead?.length) {\n      for (const hook of globalConfig.hooks.afterRead) {\n        result =\n          (await hook({\n            context: req.context,\n            doc: result,\n            global: globalConfig,\n            overrideAccess,\n            req,\n          })) || result\n      }\n    }\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    if (globalConfig.hooks?.afterChange?.length) {\n      for (const hook of globalConfig.hooks.afterChange) {\n        result =\n          (await hook({\n            context: req.context,\n            data,\n            doc: result,\n            global: globalConfig,\n            overrideAccess,\n            previousDoc: originalDoc,\n            req,\n          })) || result\n      }\n    }\n\n    // /////////////////////////////////////\n    // Return results\n    // /////////////////////////////////////\n\n    if (shouldCommit) {\n      await commitTransaction(req)\n    }\n\n    return result as TransformGlobalWithSelect<TSlug, TSelect>\n  } catch (error: unknown) {\n    await killTransaction(req)\n    throw error\n  }\n}\n"],"names":["executeAccess","afterChange","afterRead","beforeChange","beforeValidate","deepCopyObjectSimple","checkDocumentLockStatus","commitTransaction","getSelectMode","hasDraftsEnabled","hasDraftValidationEnabled","hasLocalizeStatusEnabled","initTransaction","killTransaction","mergeLocalizedData","sanitizeSelect","getLatestGlobalVersion","saveVersion","updateOperation","args","publishSpecificLocale","req","locale","slug","autosave","depth","disableTransaction","draft","draftArg","globalConfig","overrideAccess","overrideLock","populate","publishAllLocales","publishAllLocalesArg","fallbackLocale","payload","config","select","incomingSelect","showHiddenFields","unpublishAllLocales","unpublishAllLocalesArg","shouldCommit","hooks","beforeOperation","length","hook","context","global","operation","data","isSavingDraft","Boolean","_status","accessResults","access","update","query","undefined","globalVersionResult","where","globalExists","globalJSON","_id","originalDoc","collection","doc","globalSlug","lockErrorMessage","beforeChangeArgs","docWithLocales","skipValidation","result","snapshotToSave","localization","versions","currentGlobal","snapshotData","drafts","localizeStatus","accessibleLocaleCodes","localeCodes","filterAvailableLocales","filteredLocales","locales","map","code","localeCode","db","findGlobal","published","configBlockReferences","blocks","dataWithLocales","fields","selectedLocales","flattenedFields","forceSelect","now","Date","toISOString","createdAt","updatedAt","updateGlobal","createGlobal","globalType","snapshot","unpublish","selectMode","previousDoc","error"],"mappings":"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"}