{"version":3,"sources":["../../../src/frameworks/nextjs/config.ts"],"names":[],"mappings":";;;;;;;AA6BO,IAAM,2BAAA,GAA8B;AAAA;AAAA,EAEzC,aAAA;AAAA,EACA,gBAAA;AAAA,EACA,sBAAA;AAAA,EACA,WAAA;AAAA;AAAA,EAGA,gBAAA;AAAA,EACA,cAAA;AAAA,EACA,0BAAA;AAAA,EACA,kBAAA;AAAA;AAAA,EAGA,YAAA;AAAA,EACA,iBAAA;AAAA,EACA,WAAA;AAAA,EACA,gBAAA;AAAA,EACA,OAAA;AAAA;AAAA,EAGA,WAAA;AAAA,EACA,UAAA;AAAA;AAAA,EAGA;AACF;AAMO,IAAM,2BAAA,GAA8B;AAAA,EACzC,GAAA,EAAK,KAAA;AAAA,EACL,GAAA,EAAK,KAAA;AAAA,EACL,GAAA,EAAK,KAAA;AAAA,EACL,EAAA,EAAI,KAAA;AAAA,EACJ,aAAA,EAAe,KAAA;AAAA,EACf,WAAA,EAAa,KAAA;AAAA,EACb,UAAA,EAAY;AACd;AAMO,IAAM,yBAAA,GAA4B;AAAA,EACvC,OAAA,EAAS;AACX;AA0CO,SAAS,mBAAA,CACd,MAAA,EACA,OAAA,GAAsC,EAAC,EAC3B;AACZ,EAAA,MAAM;AAAA,IACJ,6BAA6B,EAAC;AAAA,IAC9B,4BAA4B,EAAC;AAAA,IAC7B,0BAA0B,EAAC;AAAA,IAC3B,8BAAA,GAAiC,KAAA;AAAA,IACjC,6BAAA,GAAgC;AAAA,GAClC,GAAI,OAAA;AAGJ,EAAA,MAAM,sBAAA,GAAyB;AAAA,IAC7B,GAAI,MAAA,CAAO,sBAAA,IAA0B,EAAC;AAAA,IACtC,GAAI,8BAAA,GAAiC,EAAC,GAAI,2BAAA;AAAA,IAC1C,GAAG;AAAA,GACL;AAGA,EAAA,MAAM,eAAA,GAAkB;AAAA,IACtB,GAAI,6BAAA,GAAgC,EAAC,GAAI,2BAAA;AAAA,IACzC,GAAG;AAAA,GACL;AAGA,EAAA,MAAM,aAAA,GAAgB;AAAA,IACpB,GAAG,yBAAA;AAAA,IACH,GAAG;AAAA,GACL;AAEA,EAAA,OAAO;AAAA,IACL,GAAG,MAAA;AAAA,IACH,sBAAA;AAAA,IACA,OAAA,kBAAS,MAAA,CAAA,CAAC,aAAA,EAAe,OAAA,KAAY;AAEnC,MAAA,IAAI,CAAC,QAAQ,QAAA,EAAU;AACrB,QAAA,aAAA,CAAc,OAAA,GAAU,aAAA,CAAc,OAAA,IAAW,EAAC;AAClD,QAAA,aAAA,CAAc,QAAQ,QAAA,GAAW;AAAA,UAC/B,GAAG,cAAc,OAAA,CAAQ,QAAA;AAAA,UACzB,GAAG;AAAA,SACL;AACA,QAAA,aAAA,CAAc,QAAQ,KAAA,GAAQ;AAAA,UAC5B,GAAG,cAAc,OAAA,CAAQ,KAAA;AAAA,UACzB,GAAG;AAAA,SACL;AAAA,MACF;AAGA,MAAA,OAAO,MAAA,CAAO,OAAA,GAAU,aAAA,EAAe,OAAO,CAAA,IAAK,aAAA;AAAA,IACrD,CAAA,EAhBS,SAAA;AAAA,GAiBX;AACF;AApDgB,MAAA,CAAA,mBAAA,EAAA,qBAAA,CAAA","file":"config.cjs","sourcesContent":["/**\n * ============================================================================\n * NEXT.JS CONFIG HELPERS\n * ============================================================================\n *\n * Helpers for configuring Next.js projects using Plyaz packages.\n * These handle common webpack fallbacks, server external packages, and other\n * configurations needed when using @plyaz/core and related packages.\n *\n * @example\n * ```typescript\n * // next.config.ts\n * import { withPlyazNextConfig } from '@plyaz/core/frameworks/nextjs';\n *\n * export default withPlyazNextConfig({\n *   experimental: {\n *     serverActions: { bodySizeLimit: '100mb' },\n *   },\n * });\n * ```\n */\n\nimport type { NextConfig } from 'next';\nimport type { CorePlyazNextConfigOptions } from '@plyaz/types/core';\n\n/**\n * Packages that should be externalized from the server bundle.\n * These are packages with native dependencies or server-only code.\n */\nexport const plyazServerExternalPackages = [\n  // Plyaz packages with native/server dependencies\n  '@plyaz/core',\n  '@plyaz/storage',\n  '@plyaz/notifications',\n  '@plyaz/db',\n\n  // NestJS (included in @plyaz/core backend)\n  '@nestjs/common',\n  '@nestjs/core',\n  '@nestjs/platform-express',\n  'reflect-metadata',\n\n  // Native/binary packages\n  'playwright',\n  'playwright-core',\n  'puppeteer',\n  'puppeteer-core',\n  'sharp',\n\n  // File handling\n  'file-type',\n  'load-esm',\n\n  // Redis\n  'ioredis',\n] as const;\n\n/**\n * Webpack fallbacks for client-side bundling.\n * These stub out Node.js modules that might leak into the frontend bundle.\n */\nexport const plyazWebpackClientFallbacks = {\n  dns: false,\n  net: false,\n  tls: false,\n  fs: false,\n  child_process: false,\n  async_hooks: false,\n  perf_hooks: false,\n} as const;\n\n/**\n * Packages to alias to false for client-side bundling.\n * These are backend-only packages that should never be in the client bundle.\n */\nexport const plyazWebpackClientAliases = {\n  ioredis: false,\n} as const;\n\n/**\n * Wraps a Next.js config with Plyaz-specific settings.\n *\n * This function adds:\n * - Server external packages for @plyaz/* and native modules\n * - Webpack client fallbacks for Node.js modules\n * - Webpack client aliases for backend-only packages\n *\n * @param config - Your Next.js configuration\n * @param options - Optional Plyaz-specific options\n * @returns The wrapped Next.js configuration\n *\n * @example\n * ```typescript\n * // Basic usage\n * import { withPlyazNextConfig } from '@plyaz/core/frameworks/nextjs';\n *\n * export default withPlyazNextConfig({\n *   experimental: {\n *     serverActions: { bodySizeLimit: '100mb' },\n *   },\n * });\n *\n * // With next-intl or other plugins\n * import createNextIntlPlugin from 'next-intl/plugin';\n *\n * const withNextIntl = createNextIntlPlugin();\n * export default withNextIntl(withPlyazNextConfig({ ... }));\n *\n * // With custom options\n * export default withPlyazNextConfig(\n *   { ... },\n *   {\n *     additionalExternalPackages: ['my-native-package'],\n *     additionalClientFallbacks: { http: false },\n *   }\n * );\n * ```\n */\n// eslint-disable-next-line complexity\nexport function withPlyazNextConfig(\n  config: NextConfig,\n  options: CorePlyazNextConfigOptions = {}\n): NextConfig {\n  const {\n    additionalExternalPackages = [],\n    additionalClientFallbacks = {},\n    additionalClientAliases = {},\n    disableDefaultExternalPackages = false,\n    disableDefaultClientFallbacks = false,\n  } = options;\n\n  // Build server external packages list\n  const serverExternalPackages = [\n    ...(config.serverExternalPackages ?? []),\n    ...(disableDefaultExternalPackages ? [] : plyazServerExternalPackages),\n    ...additionalExternalPackages,\n  ];\n\n  // Build client fallbacks\n  const clientFallbacks = {\n    ...(disableDefaultClientFallbacks ? {} : plyazWebpackClientFallbacks),\n    ...additionalClientFallbacks,\n  };\n\n  // Build client aliases\n  const clientAliases = {\n    ...plyazWebpackClientAliases,\n    ...additionalClientAliases,\n  };\n\n  return {\n    ...config,\n    serverExternalPackages,\n    webpack: (webpackConfig, context) => {\n      // Apply client-side fallbacks and aliases\n      if (!context.isServer) {\n        webpackConfig.resolve = webpackConfig.resolve ?? {};\n        webpackConfig.resolve.fallback = {\n          ...webpackConfig.resolve.fallback,\n          ...clientFallbacks,\n        };\n        webpackConfig.resolve.alias = {\n          ...webpackConfig.resolve.alias,\n          ...clientAliases,\n        };\n      }\n\n      // Call user's webpack config if provided\n      return config.webpack?.(webpackConfig, context) ?? webpackConfig;\n    },\n  };\n}\n"]}