{"version":3,"file":"resolve-link-ref.mjs","sources":["../../../../../../src/strapi/providers/local-destination/strategies/restore/resolve-link-ref.ts"],"sourcesContent":["import type { Core } from '@strapi/types';\n\nimport type { ILink } from '../../../../../types';\n\n/**\n * joinColumn relations (e.g. i18n `localizations`) store `document_id` on the\n * inverse side. Export emits that value as a string ref; restore must not run it\n * through the numeric id mapper.\n */\nexport const isDocumentIdJoinColumnTarget = (\n strapi: Core.Strapi,\n link: ILink,\n side: 'left' | 'right'\n): boolean => {\n if (side !== 'right') {\n return false;\n }\n\n const metadata = strapi.db?.metadata?.get(link.left.type);\n const attribute = metadata?.attributes?.[link.left.field];\n\n if (!attribute || attribute.type !== 'relation') {\n return false;\n }\n\n if (!('joinColumn' in attribute) || !attribute.joinColumn) {\n return false;\n }\n\n return attribute.joinColumn.referencedColumn === 'document_id';\n};\n\nexport const resolveLinkRef = (\n strapi: Core.Strapi,\n link: ILink,\n side: 'left' | 'right',\n mapID: (uid: string, id: number) => number | undefined\n): number | string | undefined => {\n const { type, ref } = side === 'left' ? link.left : link.right;\n\n if (isDocumentIdJoinColumnTarget(strapi, link, side)) {\n return ref;\n }\n\n const numericRef = typeof ref === 'number' ? ref : Number(ref);\n\n if (!Number.isFinite(numericRef)) {\n return undefined;\n }\n\n return mapID(type, numericRef);\n};\n"],"names":["isDocumentIdJoinColumnTarget","strapi","link","side","metadata","db","get","left","type","attribute","attributes","field","joinColumn","referencedColumn","resolveLinkRef","mapID","ref","right","numericRef","Number","isFinite","undefined"],"mappings":"AAIA;;;;AAIC,IACM,MAAMA,4BAAAA,GAA+B,CAC1CC,QACAC,IAAAA,EACAC,IAAAA,GAAAA;AAEA,IAAA,IAAIA,SAAS,OAAA,EAAS;QACpB,OAAO,KAAA;AACT,IAAA;IAEA,MAAMC,QAAAA,GAAWH,OAAOI,EAAE,EAAED,UAAUE,GAAAA,CAAIJ,IAAAA,CAAKK,IAAI,CAACC,IAAI,CAAA;IACxD,MAAMC,SAAAA,GAAYL,UAAUM,UAAAA,GAAaR,KAAKK,IAAI,CAACI,KAAK,CAAC;AAEzD,IAAA,IAAI,CAACF,SAAAA,IAAaA,SAAAA,CAAUD,IAAI,KAAK,UAAA,EAAY;QAC/C,OAAO,KAAA;AACT,IAAA;IAEA,IAAI,EAAE,YAAA,IAAgBC,SAAQ,KAAM,CAACA,SAAAA,CAAUG,UAAU,EAAE;QACzD,OAAO,KAAA;AACT,IAAA;AAEA,IAAA,OAAOH,SAAAA,CAAUG,UAAU,CAACC,gBAAgB,KAAK,aAAA;AACnD;AAEO,MAAMC,cAAAA,GAAiB,CAC5Bb,MAAAA,EACAC,MACAC,IAAAA,EACAY,KAAAA,GAAAA;AAEA,IAAA,MAAM,EAAEP,IAAI,EAAEQ,GAAG,EAAE,GAAGb,IAAAA,KAAS,MAAA,GAASD,IAAAA,CAAKK,IAAI,GAAGL,IAAAA,CAAKe,KAAK;IAE9D,IAAIjB,4BAAAA,CAA6BC,MAAAA,EAAQC,IAAAA,EAAMC,IAAAA,CAAAA,EAAO;QACpD,OAAOa,GAAAA;AACT,IAAA;AAEA,IAAA,MAAME,UAAAA,GAAa,OAAOF,GAAAA,KAAQ,QAAA,GAAWA,MAAMG,MAAAA,CAAOH,GAAAA,CAAAA;AAE1D,IAAA,IAAI,CAACG,MAAAA,CAAOC,QAAQ,CAACF,UAAAA,CAAAA,EAAa;QAChC,OAAOG,SAAAA;AACT,IAAA;AAEA,IAAA,OAAON,MAAMP,IAAAA,EAAMU,UAAAA,CAAAA;AACrB;;;;"}