{"version":3,"sources":["../../../src/shared/lib/image-loader.ts"],"sourcesContent":["import type { ImageLoaderPropsWithConfig } from './image-config'\n\nconst DEFAULT_Q = 75\n\nfunction defaultLoader({\n  config,\n  src,\n  width,\n  quality,\n}: ImageLoaderPropsWithConfig): string {\n  if (process.env.NODE_ENV !== 'production') {\n    const missingValues = []\n\n    // these should always be provided but make sure they are\n    if (!src) missingValues.push('src')\n    if (!width) missingValues.push('width')\n\n    if (missingValues.length > 0) {\n      throw new Error(\n        `Next Image Optimization requires ${missingValues.join(\n          ', '\n        )} to be provided. Make sure you pass them as props to the \\`next/image\\` component. Received: ${JSON.stringify(\n          { src, width, quality }\n        )}`\n      )\n    }\n\n    if (src.startsWith('//')) {\n      throw new Error(\n        `Failed to parse src \"${src}\" on \\`next/image\\`, protocol-relative URL (//) must be changed to an absolute URL (http:// or https://)`\n      )\n    }\n\n    if (src.startsWith('/') && config.localPatterns) {\n      if (\n        process.env.NODE_ENV !== 'test' &&\n        // micromatch isn't compatible with edge runtime\n        process.env.NEXT_RUNTIME !== 'edge'\n      ) {\n        // We use dynamic require because this should only error in development\n        const { hasLocalMatch } =\n          require('./match-local-pattern') as typeof import('./match-local-pattern')\n        if (!hasLocalMatch(config.localPatterns, src)) {\n          throw new Error(\n            `Invalid src prop (${src}) on \\`next/image\\` does not match \\`images.localPatterns\\` configured in your \\`next.config.js\\`\\n` +\n              `See more info: https://nextjs.org/docs/messages/next-image-unconfigured-localpatterns`\n          )\n        }\n      }\n    }\n\n    if (!src.startsWith('/') && (config.domains || config.remotePatterns)) {\n      let parsedSrc: URL\n      try {\n        parsedSrc = new URL(src)\n      } catch (err) {\n        console.error(err)\n        throw new Error(\n          `Failed to parse src \"${src}\" on \\`next/image\\`, if using relative image it must start with a leading slash \"/\" or be an absolute URL (http:// or https://)`\n        )\n      }\n\n      if (\n        process.env.NODE_ENV !== 'test' &&\n        // micromatch isn't compatible with edge runtime\n        process.env.NEXT_RUNTIME !== 'edge'\n      ) {\n        // We use dynamic require because this should only error in development\n        const { hasRemoteMatch } =\n          require('./match-remote-pattern') as typeof import('./match-remote-pattern')\n        if (\n          !hasRemoteMatch(config.domains!, config.remotePatterns!, parsedSrc)\n        ) {\n          throw new Error(\n            `Invalid src prop (${src}) on \\`next/image\\`, hostname \"${parsedSrc.hostname}\" is not configured under images in your \\`next.config.js\\`\\n` +\n              `See more info: https://nextjs.org/docs/messages/next-image-unconfigured-host`\n          )\n        }\n      }\n    }\n\n    if (quality && config.qualities && !config.qualities.includes(quality)) {\n      throw new Error(\n        `Invalid quality prop (${quality}) on \\`next/image\\` does not match \\`images.qualities\\` configured in your \\`next.config.js\\`\\n` +\n          `See more info: https://nextjs.org/docs/messages/next-image-unconfigured-qualities`\n      )\n    }\n  }\n\n  const q =\n    quality ||\n    config.qualities?.reduce((prev, cur) =>\n      Math.abs(cur - DEFAULT_Q) < Math.abs(prev - DEFAULT_Q) ? cur : prev\n    ) ||\n    DEFAULT_Q\n\n  return `${config.path}?url=${encodeURIComponent(src)}&w=${width}&q=${q}${\n    src.startsWith('/_next/static/media/') && process.env.NEXT_DEPLOYMENT_ID\n      ? `&dpl=${process.env.NEXT_DEPLOYMENT_ID}`\n      : ''\n  }`\n}\n\n// We use this to determine if the import is the default loader\n// or a custom loader defined by the user in next.config.js\ndefaultLoader.__next_img_default = true\n\nexport default defaultLoader\n"],"names":["DEFAULT_Q","defaultLoader","config","src","width","quality","process","env","NODE_ENV","missingValues","push","length","Error","join","JSON","stringify","startsWith","localPatterns","NEXT_RUNTIME","hasLocalMatch","require","domains","remotePatterns","parsedSrc","URL","err","console","error","hasRemoteMatch","hostname","qualities","includes","q","reduce","prev","cur","Math","abs","path","encodeURIComponent","NEXT_DEPLOYMENT_ID","__next_img_default"],"mappings":"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","ignoreList":[0]}