/*
 * This file sets a custom webpack configuration to use your Next.js app
 * with Sentry.
 * https://nextjs.org/docs/api-reference/next.config.js/introduction
 * https://docs.sentry.io/platforms/javascript/guides/nextjs/
 */

const { withSentryConfig } = require("@sentry/nextjs");

const isSentryPropertiesInEnvironment =
  process.env.SENTRY_AUTH_TOKEN && process.env.SENTRY_PROJECT && process.env.SENTRY_ORG;

/**
 * @type {import('next').NextConfig}
 */
const moduleExports = {
  reactStrictMode: true,
  images: {
    remotePatterns: [
      {
        protocol: "https",
        hostname: "**",
      },
    ],
  },
  transpilePackages: ["@saleor/apps-shared", "@saleor/apps-ui", "@saleor/react-hook-form-macaw"],
  sentry: {
    /*
     * Use `hidden-source-map` rather than `source-map` as the Webpack `devtool`
     * for client-side builds. (This will be the default starting in
     * `@sentry/nextjs` version 8.0.0.) See
     * https://webpack.js.org/configuration/devtool/ and
     * https://docs.sentry.io/platforms/javascript/guides/nextjs/manual-setup/#use-hidden-source-map
     * for more information.
     */
    hideSourceMaps: true,
    disableServerWebpackPlugin: !isSentryPropertiesInEnvironment,
    disableClientWebpackPlugin: !isSentryPropertiesInEnvironment,
  },
};

const sentryWebpackPluginOptions = {
  /*
   * Additional config options for the Sentry Webpack plugin. Keep in mind that
   * the following options are set automatically, and overriding them is not
   * recommended:
   *   release, url, org, project, authToken, configFile, stripPrefix,
   *   urlPrefix, include, ignore
   */

  silent: true, // Suppresses all logs
  /*
   * For all available options, see:
   * https://github.com/getsentry/sentry-webpack-plugin#options.
   */
};

/*
 * Make sure adding Sentry options is the last code to run before exporting, to
 * ensure that your source maps include changes from all other Webpack plugins
 */
module.exports = withSentryConfig(moduleExports, sentryWebpackPluginOptions);
