next-intlayer 5.2.3 → 5.2.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,9 +1,7 @@
1
1
  "use strict";
2
- var __create = Object.create;
3
2
  var __defProp = Object.defineProperty;
4
3
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
4
  var __getOwnPropNames = Object.getOwnPropertyNames;
6
- var __getProtoOf = Object.getPrototypeOf;
7
5
  var __hasOwnProp = Object.prototype.hasOwnProperty;
8
6
  var __export = (target, all) => {
9
7
  for (var name in all)
@@ -17,14 +15,6 @@ var __copyProps = (to, from, except, desc) => {
17
15
  }
18
16
  return to;
19
17
  };
20
- var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
- // If the importer is in node compatibility mode or this is not an ESM
22
- // file that has been converted to a CommonJS file using a Babel-
23
- // compatible transform (i.e. "__esModule" has not been set), then set
24
- // "default" to the CommonJS "module.exports" for node compatibility.
25
- isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
- mod
27
- ));
28
18
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
19
  var withIntlayer_exports = {};
30
20
  __export(withIntlayer_exports, {
@@ -34,8 +24,17 @@ module.exports = __toCommonJS(withIntlayer_exports);
34
24
  var import_path = require("path");
35
25
  var import_config = require("@intlayer/config");
36
26
  var import_webpack = require("@intlayer/webpack");
37
- var import_package = __toESM(require("next/package.json"));
38
- const nextMajorVersion = parseInt(import_package.default.version.split(".")[0], 10);
27
+ var import_fs = require("fs");
28
+ const getNextVersion = () => {
29
+ try {
30
+ const nextConfigPath = import_config.ESMxCJSRequire.resolve("next/package.json");
31
+ const nextPkg = JSON.parse((0, import_fs.readFileSync)(nextConfigPath, "utf-8"));
32
+ return parseInt(nextPkg.version.split(".")[0], 10);
33
+ } catch (e) {
34
+ return void 0;
35
+ }
36
+ };
37
+ const nextMajorVersion = getNextVersion();
39
38
  const isTurbopackEnabled = process.env.npm_lifecycle_script?.includes("--turbo");
40
39
  const withIntlayer = (nextConfig = {}) => {
41
40
  if (typeof nextConfig !== "object") {
@@ -68,7 +67,7 @@ const withIntlayer = (nextConfig = {}) => {
68
67
  // Merge environment variables
69
68
  env: { ...nextConfig.env, ...env },
70
69
  // Only add `serverExternalPackages` if Next.js is v15+
71
- ...nextMajorVersion >= 15 ? {
70
+ ...!nextMajorVersion || nextMajorVersion >= 15 ? {
72
71
  serverExternalPackages: [
73
72
  ...nextConfig.serverExternalPackages ?? [],
74
73
  "esbuild",
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/server/withIntlayer.ts"],"sourcesContent":["import { resolve, relative, join, dirname } from 'path';\nimport { getConfiguration, formatEnvVariable } from '@intlayer/config';\nimport { IntlayerPlugin } from '@intlayer/webpack';\nimport type { NextConfig } from 'next';\nimport type { NextJsWebpackConfig } from 'next/dist/server/config-shared';\nimport nextPkg from 'next/package.json' with { type: 'json' };\n\nconst nextMajorVersion = parseInt(nextPkg.version.split('.')[0], 10);\n\n// Extract from the start script if --turbo or --turbopack flag is used\nconst isTurbopackEnabled =\n process.env.npm_lifecycle_script?.includes('--turbo');\n\ntype WebpackParams = Parameters<NextJsWebpackConfig>;\n\n/**\n * A Next.js plugin that adds the intlayer configuration to the webpack configuration\n * and sets the environment variables\n *\n * Usage:\n *\n * ```ts\n * // next.config.js\n * export default withIntlayer(nextConfig)\n * ```\n */\nexport const withIntlayer = <T extends Partial<NextConfig>>(\n nextConfig: T = {} as T\n): NextConfig & T => {\n if (typeof nextConfig !== 'object') {\n nextConfig = {} as T;\n }\n\n const intlayerConfig = getConfiguration();\n\n // Format all configuration values as environment variables\n const env = formatEnvVariable('next');\n const { mainDir, configDir, baseDir } = intlayerConfig.content;\n\n const dictionariesPath = join(mainDir, 'dictionaries.mjs');\n const relativeDictionariesPath = relative(baseDir, dictionariesPath);\n\n const configurationPath = join(configDir, 'configuration.json');\n const relativeConfigurationPath = relative(baseDir, configurationPath);\n\n // Only provide turbo-specific config if user explicitly sets it\n const turboConfig = isTurbopackEnabled\n ? {\n turbo: {\n ...(nextConfig.experimental?.turbo ?? {}),\n resolveAlias: {\n ...(nextConfig.experimental?.turbo?.resolveAlias ?? {}),\n '@intlayer/dictionaries-entry': relativeDictionariesPath,\n '@intlayer/config/built': relativeConfigurationPath,\n },\n rules: {\n '*.node': {\n as: '*.node',\n loaders: ['node-loader'],\n },\n },\n },\n }\n : {};\n\n const newConfig: Partial<NextConfig> = {\n // Merge environment variables\n env: { ...nextConfig.env, ...env },\n\n // Only add `serverExternalPackages` if Next.js is v15+\n ...(nextMajorVersion >= 15\n ? {\n serverExternalPackages: [\n ...(nextConfig.serverExternalPackages ?? []),\n 'esbuild',\n 'module',\n 'fs',\n 'chokidar',\n 'fsevents',\n ],\n }\n : {}),\n\n experimental: {\n ...(nextConfig.experimental ?? {}),\n ...turboConfig,\n },\n\n webpack: (config: WebpackParams['0'], options: WebpackParams[1]) => {\n // If the user has defined their own webpack config, call it\n if (typeof nextConfig.webpack === 'function') {\n config = nextConfig.webpack(config, options);\n }\n\n // Alias the dictionary entry for all builds\n config.resolve.alias['@intlayer/dictionaries-entry'] = resolve(\n relativeDictionariesPath\n );\n config.resolve.alias['@intlayer/config/built'] = resolve(\n relativeConfigurationPath\n );\n\n // Mark these modules as externals\n config.externals.push({\n esbuild: 'esbuild',\n module: 'module',\n fs: 'fs',\n chokidar: 'chokidar',\n fsevents: 'fsevents',\n });\n\n // Use `node-loader` for any `.node` files\n config.module.rules.push({\n test: /\\.node$/,\n loader: 'node-loader',\n });\n\n // Only add Intlayer plugin on server side (node runtime)\n const { isServer, nextRuntime } = options;\n\n if (isServer && nextRuntime === 'nodejs') {\n config.plugins.push(new IntlayerPlugin());\n }\n\n return config;\n },\n };\n\n // Merge the new config with the user's config\n return { ...nextConfig, ...newConfig };\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,kBAAiD;AACjD,oBAAoD;AACpD,qBAA+B;AAG/B,qBAAoB;AAEpB,MAAM,mBAAmB,SAAS,eAAAA,QAAQ,QAAQ,MAAM,GAAG,EAAE,CAAC,GAAG,EAAE;AAGnE,MAAM,qBACJ,QAAQ,IAAI,sBAAsB,SAAS,SAAS;AAe/C,MAAM,eAAe,CAC1B,aAAgB,CAAC,MACE;AACnB,MAAI,OAAO,eAAe,UAAU;AAClC,iBAAa,CAAC;AAAA,EAChB;AAEA,QAAM,qBAAiB,gCAAiB;AAGxC,QAAM,UAAM,iCAAkB,MAAM;AACpC,QAAM,EAAE,SAAS,WAAW,QAAQ,IAAI,eAAe;AAEvD,QAAM,uBAAmB,kBAAK,SAAS,kBAAkB;AACzD,QAAM,+BAA2B,sBAAS,SAAS,gBAAgB;AAEnE,QAAM,wBAAoB,kBAAK,WAAW,oBAAoB;AAC9D,QAAM,gCAA4B,sBAAS,SAAS,iBAAiB;AAGrE,QAAM,cAAc,qBAChB;AAAA,IACE,OAAO;AAAA,MACL,GAAI,WAAW,cAAc,SAAS,CAAC;AAAA,MACvC,cAAc;AAAA,QACZ,GAAI,WAAW,cAAc,OAAO,gBAAgB,CAAC;AAAA,QACrD,gCAAgC;AAAA,QAChC,0BAA0B;AAAA,MAC5B;AAAA,MACA,OAAO;AAAA,QACL,UAAU;AAAA,UACR,IAAI;AAAA,UACJ,SAAS,CAAC,aAAa;AAAA,QACzB;AAAA,MACF;AAAA,IACF;AAAA,EACF,IACA,CAAC;AAEL,QAAM,YAAiC;AAAA;AAAA,IAErC,KAAK,EAAE,GAAG,WAAW,KAAK,GAAG,IAAI;AAAA;AAAA,IAGjC,GAAI,oBAAoB,KACpB;AAAA,MACE,wBAAwB;AAAA,QACtB,GAAI,WAAW,0BAA0B,CAAC;AAAA,QAC1C;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,IACF,IACA,CAAC;AAAA,IAEL,cAAc;AAAA,MACZ,GAAI,WAAW,gBAAgB,CAAC;AAAA,MAChC,GAAG;AAAA,IACL;AAAA,IAEA,SAAS,CAAC,QAA4B,YAA8B;AAElE,UAAI,OAAO,WAAW,YAAY,YAAY;AAC5C,iBAAS,WAAW,QAAQ,QAAQ,OAAO;AAAA,MAC7C;AAGA,aAAO,QAAQ,MAAM,8BAA8B,QAAI;AAAA,QACrD;AAAA,MACF;AACA,aAAO,QAAQ,MAAM,wBAAwB,QAAI;AAAA,QAC/C;AAAA,MACF;AAGA,aAAO,UAAU,KAAK;AAAA,QACpB,SAAS;AAAA,QACT,QAAQ;AAAA,QACR,IAAI;AAAA,QACJ,UAAU;AAAA,QACV,UAAU;AAAA,MACZ,CAAC;AAGD,aAAO,OAAO,MAAM,KAAK;AAAA,QACvB,MAAM;AAAA,QACN,QAAQ;AAAA,MACV,CAAC;AAGD,YAAM,EAAE,UAAU,YAAY,IAAI;AAElC,UAAI,YAAY,gBAAgB,UAAU;AACxC,eAAO,QAAQ,KAAK,IAAI,8BAAe,CAAC;AAAA,MAC1C;AAEA,aAAO;AAAA,IACT;AAAA,EACF;AAGA,SAAO,EAAE,GAAG,YAAY,GAAG,UAAU;AACvC;","names":["nextPkg"]}
1
+ {"version":3,"sources":["../../../src/server/withIntlayer.ts"],"sourcesContent":["import { resolve, relative, join } from 'path';\nimport {\n getConfiguration,\n formatEnvVariable,\n ESMxCJSRequire,\n} from '@intlayer/config';\nimport { IntlayerPlugin } from '@intlayer/webpack';\nimport type { NextConfig } from 'next';\nimport type { NextJsWebpackConfig } from 'next/dist/server/config-shared';\nimport { readFileSync } from 'fs';\n\nconst getNextVersion = () => {\n try {\n const nextConfigPath = ESMxCJSRequire.resolve('next/package.json');\n\n const nextPkg = JSON.parse(readFileSync(nextConfigPath, 'utf-8'));\n\n return parseInt(nextPkg.version.split('.')[0], 10);\n } catch (e) {\n return undefined;\n }\n};\n\nconst nextMajorVersion = getNextVersion();\n\n// Extract from the start script if --turbo or --turbopack flag is used\nconst isTurbopackEnabled =\n process.env.npm_lifecycle_script?.includes('--turbo');\n\ntype WebpackParams = Parameters<NextJsWebpackConfig>;\n\n/**\n * A Next.js plugin that adds the intlayer configuration to the webpack configuration\n * and sets the environment variables\n *\n * Usage:\n *\n * ```ts\n * // next.config.js\n * export default withIntlayer(nextConfig)\n * ```\n */\nexport const withIntlayer = <T extends Partial<NextConfig>>(\n nextConfig: T = {} as T\n): NextConfig & T => {\n if (typeof nextConfig !== 'object') {\n nextConfig = {} as T;\n }\n\n const intlayerConfig = getConfiguration();\n\n // Format all configuration values as environment variables\n const env = formatEnvVariable('next');\n const { mainDir, configDir, baseDir } = intlayerConfig.content;\n\n const dictionariesPath = join(mainDir, 'dictionaries.mjs');\n const relativeDictionariesPath = relative(baseDir, dictionariesPath);\n\n const configurationPath = join(configDir, 'configuration.json');\n const relativeConfigurationPath = relative(baseDir, configurationPath);\n\n // Only provide turbo-specific config if user explicitly sets it\n const turboConfig = isTurbopackEnabled\n ? {\n turbo: {\n ...(nextConfig.experimental?.turbo ?? {}),\n resolveAlias: {\n ...(nextConfig.experimental?.turbo?.resolveAlias ?? {}),\n '@intlayer/dictionaries-entry': relativeDictionariesPath,\n '@intlayer/config/built': relativeConfigurationPath,\n },\n rules: {\n '*.node': {\n as: '*.node',\n loaders: ['node-loader'],\n },\n },\n },\n }\n : {};\n\n const newConfig: Partial<NextConfig> = {\n // Merge environment variables\n env: { ...nextConfig.env, ...env },\n\n // Only add `serverExternalPackages` if Next.js is v15+\n ...(!nextMajorVersion || nextMajorVersion >= 15\n ? {\n serverExternalPackages: [\n ...(nextConfig.serverExternalPackages ?? []),\n 'esbuild',\n 'module',\n 'fs',\n 'chokidar',\n 'fsevents',\n ],\n }\n : {}),\n\n experimental: {\n ...(nextConfig.experimental ?? {}),\n ...turboConfig,\n },\n\n webpack: (config: WebpackParams['0'], options: WebpackParams[1]) => {\n // If the user has defined their own webpack config, call it\n if (typeof nextConfig.webpack === 'function') {\n config = nextConfig.webpack(config, options);\n }\n\n // Alias the dictionary entry for all builds\n config.resolve.alias['@intlayer/dictionaries-entry'] = resolve(\n relativeDictionariesPath\n );\n config.resolve.alias['@intlayer/config/built'] = resolve(\n relativeConfigurationPath\n );\n\n // Mark these modules as externals\n config.externals.push({\n esbuild: 'esbuild',\n module: 'module',\n fs: 'fs',\n chokidar: 'chokidar',\n fsevents: 'fsevents',\n });\n\n // Use `node-loader` for any `.node` files\n config.module.rules.push({\n test: /\\.node$/,\n loader: 'node-loader',\n });\n\n // Only add Intlayer plugin on server side (node runtime)\n const { isServer, nextRuntime } = options;\n\n if (isServer && nextRuntime === 'nodejs') {\n config.plugins.push(new IntlayerPlugin());\n }\n\n return config;\n },\n };\n\n // Merge the new config with the user's config\n return { ...nextConfig, ...newConfig };\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,kBAAwC;AACxC,oBAIO;AACP,qBAA+B;AAG/B,gBAA6B;AAE7B,MAAM,iBAAiB,MAAM;AAC3B,MAAI;AACF,UAAM,iBAAiB,6BAAe,QAAQ,mBAAmB;AAEjE,UAAM,UAAU,KAAK,UAAM,wBAAa,gBAAgB,OAAO,CAAC;AAEhE,WAAO,SAAS,QAAQ,QAAQ,MAAM,GAAG,EAAE,CAAC,GAAG,EAAE;AAAA,EACnD,SAAS,GAAG;AACV,WAAO;AAAA,EACT;AACF;AAEA,MAAM,mBAAmB,eAAe;AAGxC,MAAM,qBACJ,QAAQ,IAAI,sBAAsB,SAAS,SAAS;AAe/C,MAAM,eAAe,CAC1B,aAAgB,CAAC,MACE;AACnB,MAAI,OAAO,eAAe,UAAU;AAClC,iBAAa,CAAC;AAAA,EAChB;AAEA,QAAM,qBAAiB,gCAAiB;AAGxC,QAAM,UAAM,iCAAkB,MAAM;AACpC,QAAM,EAAE,SAAS,WAAW,QAAQ,IAAI,eAAe;AAEvD,QAAM,uBAAmB,kBAAK,SAAS,kBAAkB;AACzD,QAAM,+BAA2B,sBAAS,SAAS,gBAAgB;AAEnE,QAAM,wBAAoB,kBAAK,WAAW,oBAAoB;AAC9D,QAAM,gCAA4B,sBAAS,SAAS,iBAAiB;AAGrE,QAAM,cAAc,qBAChB;AAAA,IACE,OAAO;AAAA,MACL,GAAI,WAAW,cAAc,SAAS,CAAC;AAAA,MACvC,cAAc;AAAA,QACZ,GAAI,WAAW,cAAc,OAAO,gBAAgB,CAAC;AAAA,QACrD,gCAAgC;AAAA,QAChC,0BAA0B;AAAA,MAC5B;AAAA,MACA,OAAO;AAAA,QACL,UAAU;AAAA,UACR,IAAI;AAAA,UACJ,SAAS,CAAC,aAAa;AAAA,QACzB;AAAA,MACF;AAAA,IACF;AAAA,EACF,IACA,CAAC;AAEL,QAAM,YAAiC;AAAA;AAAA,IAErC,KAAK,EAAE,GAAG,WAAW,KAAK,GAAG,IAAI;AAAA;AAAA,IAGjC,GAAI,CAAC,oBAAoB,oBAAoB,KACzC;AAAA,MACE,wBAAwB;AAAA,QACtB,GAAI,WAAW,0BAA0B,CAAC;AAAA,QAC1C;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,IACF,IACA,CAAC;AAAA,IAEL,cAAc;AAAA,MACZ,GAAI,WAAW,gBAAgB,CAAC;AAAA,MAChC,GAAG;AAAA,IACL;AAAA,IAEA,SAAS,CAAC,QAA4B,YAA8B;AAElE,UAAI,OAAO,WAAW,YAAY,YAAY;AAC5C,iBAAS,WAAW,QAAQ,QAAQ,OAAO;AAAA,MAC7C;AAGA,aAAO,QAAQ,MAAM,8BAA8B,QAAI;AAAA,QACrD;AAAA,MACF;AACA,aAAO,QAAQ,MAAM,wBAAwB,QAAI;AAAA,QAC/C;AAAA,MACF;AAGA,aAAO,UAAU,KAAK;AAAA,QACpB,SAAS;AAAA,QACT,QAAQ;AAAA,QACR,IAAI;AAAA,QACJ,UAAU;AAAA,QACV,UAAU;AAAA,MACZ,CAAC;AAGD,aAAO,OAAO,MAAM,KAAK;AAAA,QACvB,MAAM;AAAA,QACN,QAAQ;AAAA,MACV,CAAC;AAGD,YAAM,EAAE,UAAU,YAAY,IAAI;AAElC,UAAI,YAAY,gBAAgB,UAAU;AACxC,eAAO,QAAQ,KAAK,IAAI,8BAAe,CAAC;AAAA,MAC1C;AAEA,aAAO;AAAA,IACT;AAAA,EACF;AAGA,SAAO,EAAE,GAAG,YAAY,GAAG,UAAU;AACvC;","names":[]}
@@ -1,8 +1,21 @@
1
1
  import { resolve, relative, join } from "path";
2
- import { getConfiguration, formatEnvVariable } from "@intlayer/config";
2
+ import {
3
+ getConfiguration,
4
+ formatEnvVariable,
5
+ ESMxCJSRequire
6
+ } from "@intlayer/config";
3
7
  import { IntlayerPlugin } from "@intlayer/webpack";
4
- import nextPkg from "next/package.json" with { type: "json" };
5
- const nextMajorVersion = parseInt(nextPkg.version.split(".")[0], 10);
8
+ import { readFileSync } from "fs";
9
+ const getNextVersion = () => {
10
+ try {
11
+ const nextConfigPath = ESMxCJSRequire.resolve("next/package.json");
12
+ const nextPkg = JSON.parse(readFileSync(nextConfigPath, "utf-8"));
13
+ return parseInt(nextPkg.version.split(".")[0], 10);
14
+ } catch (e) {
15
+ return void 0;
16
+ }
17
+ };
18
+ const nextMajorVersion = getNextVersion();
6
19
  const isTurbopackEnabled = process.env.npm_lifecycle_script?.includes("--turbo");
7
20
  const withIntlayer = (nextConfig = {}) => {
8
21
  if (typeof nextConfig !== "object") {
@@ -35,7 +48,7 @@ const withIntlayer = (nextConfig = {}) => {
35
48
  // Merge environment variables
36
49
  env: { ...nextConfig.env, ...env },
37
50
  // Only add `serverExternalPackages` if Next.js is v15+
38
- ...nextMajorVersion >= 15 ? {
51
+ ...!nextMajorVersion || nextMajorVersion >= 15 ? {
39
52
  serverExternalPackages: [
40
53
  ...nextConfig.serverExternalPackages ?? [],
41
54
  "esbuild",
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/server/withIntlayer.ts"],"sourcesContent":["import { resolve, relative, join, dirname } from 'path';\nimport { getConfiguration, formatEnvVariable } from '@intlayer/config';\nimport { IntlayerPlugin } from '@intlayer/webpack';\nimport type { NextConfig } from 'next';\nimport type { NextJsWebpackConfig } from 'next/dist/server/config-shared';\nimport nextPkg from 'next/package.json' with { type: 'json' };\n\nconst nextMajorVersion = parseInt(nextPkg.version.split('.')[0], 10);\n\n// Extract from the start script if --turbo or --turbopack flag is used\nconst isTurbopackEnabled =\n process.env.npm_lifecycle_script?.includes('--turbo');\n\ntype WebpackParams = Parameters<NextJsWebpackConfig>;\n\n/**\n * A Next.js plugin that adds the intlayer configuration to the webpack configuration\n * and sets the environment variables\n *\n * Usage:\n *\n * ```ts\n * // next.config.js\n * export default withIntlayer(nextConfig)\n * ```\n */\nexport const withIntlayer = <T extends Partial<NextConfig>>(\n nextConfig: T = {} as T\n): NextConfig & T => {\n if (typeof nextConfig !== 'object') {\n nextConfig = {} as T;\n }\n\n const intlayerConfig = getConfiguration();\n\n // Format all configuration values as environment variables\n const env = formatEnvVariable('next');\n const { mainDir, configDir, baseDir } = intlayerConfig.content;\n\n const dictionariesPath = join(mainDir, 'dictionaries.mjs');\n const relativeDictionariesPath = relative(baseDir, dictionariesPath);\n\n const configurationPath = join(configDir, 'configuration.json');\n const relativeConfigurationPath = relative(baseDir, configurationPath);\n\n // Only provide turbo-specific config if user explicitly sets it\n const turboConfig = isTurbopackEnabled\n ? {\n turbo: {\n ...(nextConfig.experimental?.turbo ?? {}),\n resolveAlias: {\n ...(nextConfig.experimental?.turbo?.resolveAlias ?? {}),\n '@intlayer/dictionaries-entry': relativeDictionariesPath,\n '@intlayer/config/built': relativeConfigurationPath,\n },\n rules: {\n '*.node': {\n as: '*.node',\n loaders: ['node-loader'],\n },\n },\n },\n }\n : {};\n\n const newConfig: Partial<NextConfig> = {\n // Merge environment variables\n env: { ...nextConfig.env, ...env },\n\n // Only add `serverExternalPackages` if Next.js is v15+\n ...(nextMajorVersion >= 15\n ? {\n serverExternalPackages: [\n ...(nextConfig.serverExternalPackages ?? []),\n 'esbuild',\n 'module',\n 'fs',\n 'chokidar',\n 'fsevents',\n ],\n }\n : {}),\n\n experimental: {\n ...(nextConfig.experimental ?? {}),\n ...turboConfig,\n },\n\n webpack: (config: WebpackParams['0'], options: WebpackParams[1]) => {\n // If the user has defined their own webpack config, call it\n if (typeof nextConfig.webpack === 'function') {\n config = nextConfig.webpack(config, options);\n }\n\n // Alias the dictionary entry for all builds\n config.resolve.alias['@intlayer/dictionaries-entry'] = resolve(\n relativeDictionariesPath\n );\n config.resolve.alias['@intlayer/config/built'] = resolve(\n relativeConfigurationPath\n );\n\n // Mark these modules as externals\n config.externals.push({\n esbuild: 'esbuild',\n module: 'module',\n fs: 'fs',\n chokidar: 'chokidar',\n fsevents: 'fsevents',\n });\n\n // Use `node-loader` for any `.node` files\n config.module.rules.push({\n test: /\\.node$/,\n loader: 'node-loader',\n });\n\n // Only add Intlayer plugin on server side (node runtime)\n const { isServer, nextRuntime } = options;\n\n if (isServer && nextRuntime === 'nodejs') {\n config.plugins.push(new IntlayerPlugin());\n }\n\n return config;\n },\n };\n\n // Merge the new config with the user's config\n return { ...nextConfig, ...newConfig };\n};\n"],"mappings":"AAAA,SAAS,SAAS,UAAU,YAAqB;AACjD,SAAS,kBAAkB,yBAAyB;AACpD,SAAS,sBAAsB;AAG/B,OAAO,aAAa,oBAAoB,KAAK,EAAE,MAAM,OAAO;AAE5D,MAAM,mBAAmB,SAAS,QAAQ,QAAQ,MAAM,GAAG,EAAE,CAAC,GAAG,EAAE;AAGnE,MAAM,qBACJ,QAAQ,IAAI,sBAAsB,SAAS,SAAS;AAe/C,MAAM,eAAe,CAC1B,aAAgB,CAAC,MACE;AACnB,MAAI,OAAO,eAAe,UAAU;AAClC,iBAAa,CAAC;AAAA,EAChB;AAEA,QAAM,iBAAiB,iBAAiB;AAGxC,QAAM,MAAM,kBAAkB,MAAM;AACpC,QAAM,EAAE,SAAS,WAAW,QAAQ,IAAI,eAAe;AAEvD,QAAM,mBAAmB,KAAK,SAAS,kBAAkB;AACzD,QAAM,2BAA2B,SAAS,SAAS,gBAAgB;AAEnE,QAAM,oBAAoB,KAAK,WAAW,oBAAoB;AAC9D,QAAM,4BAA4B,SAAS,SAAS,iBAAiB;AAGrE,QAAM,cAAc,qBAChB;AAAA,IACE,OAAO;AAAA,MACL,GAAI,WAAW,cAAc,SAAS,CAAC;AAAA,MACvC,cAAc;AAAA,QACZ,GAAI,WAAW,cAAc,OAAO,gBAAgB,CAAC;AAAA,QACrD,gCAAgC;AAAA,QAChC,0BAA0B;AAAA,MAC5B;AAAA,MACA,OAAO;AAAA,QACL,UAAU;AAAA,UACR,IAAI;AAAA,UACJ,SAAS,CAAC,aAAa;AAAA,QACzB;AAAA,MACF;AAAA,IACF;AAAA,EACF,IACA,CAAC;AAEL,QAAM,YAAiC;AAAA;AAAA,IAErC,KAAK,EAAE,GAAG,WAAW,KAAK,GAAG,IAAI;AAAA;AAAA,IAGjC,GAAI,oBAAoB,KACpB;AAAA,MACE,wBAAwB;AAAA,QACtB,GAAI,WAAW,0BAA0B,CAAC;AAAA,QAC1C;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,IACF,IACA,CAAC;AAAA,IAEL,cAAc;AAAA,MACZ,GAAI,WAAW,gBAAgB,CAAC;AAAA,MAChC,GAAG;AAAA,IACL;AAAA,IAEA,SAAS,CAAC,QAA4B,YAA8B;AAElE,UAAI,OAAO,WAAW,YAAY,YAAY;AAC5C,iBAAS,WAAW,QAAQ,QAAQ,OAAO;AAAA,MAC7C;AAGA,aAAO,QAAQ,MAAM,8BAA8B,IAAI;AAAA,QACrD;AAAA,MACF;AACA,aAAO,QAAQ,MAAM,wBAAwB,IAAI;AAAA,QAC/C;AAAA,MACF;AAGA,aAAO,UAAU,KAAK;AAAA,QACpB,SAAS;AAAA,QACT,QAAQ;AAAA,QACR,IAAI;AAAA,QACJ,UAAU;AAAA,QACV,UAAU;AAAA,MACZ,CAAC;AAGD,aAAO,OAAO,MAAM,KAAK;AAAA,QACvB,MAAM;AAAA,QACN,QAAQ;AAAA,MACV,CAAC;AAGD,YAAM,EAAE,UAAU,YAAY,IAAI;AAElC,UAAI,YAAY,gBAAgB,UAAU;AACxC,eAAO,QAAQ,KAAK,IAAI,eAAe,CAAC;AAAA,MAC1C;AAEA,aAAO;AAAA,IACT;AAAA,EACF;AAGA,SAAO,EAAE,GAAG,YAAY,GAAG,UAAU;AACvC;","names":[]}
1
+ {"version":3,"sources":["../../../src/server/withIntlayer.ts"],"sourcesContent":["import { resolve, relative, join } from 'path';\nimport {\n getConfiguration,\n formatEnvVariable,\n ESMxCJSRequire,\n} from '@intlayer/config';\nimport { IntlayerPlugin } from '@intlayer/webpack';\nimport type { NextConfig } from 'next';\nimport type { NextJsWebpackConfig } from 'next/dist/server/config-shared';\nimport { readFileSync } from 'fs';\n\nconst getNextVersion = () => {\n try {\n const nextConfigPath = ESMxCJSRequire.resolve('next/package.json');\n\n const nextPkg = JSON.parse(readFileSync(nextConfigPath, 'utf-8'));\n\n return parseInt(nextPkg.version.split('.')[0], 10);\n } catch (e) {\n return undefined;\n }\n};\n\nconst nextMajorVersion = getNextVersion();\n\n// Extract from the start script if --turbo or --turbopack flag is used\nconst isTurbopackEnabled =\n process.env.npm_lifecycle_script?.includes('--turbo');\n\ntype WebpackParams = Parameters<NextJsWebpackConfig>;\n\n/**\n * A Next.js plugin that adds the intlayer configuration to the webpack configuration\n * and sets the environment variables\n *\n * Usage:\n *\n * ```ts\n * // next.config.js\n * export default withIntlayer(nextConfig)\n * ```\n */\nexport const withIntlayer = <T extends Partial<NextConfig>>(\n nextConfig: T = {} as T\n): NextConfig & T => {\n if (typeof nextConfig !== 'object') {\n nextConfig = {} as T;\n }\n\n const intlayerConfig = getConfiguration();\n\n // Format all configuration values as environment variables\n const env = formatEnvVariable('next');\n const { mainDir, configDir, baseDir } = intlayerConfig.content;\n\n const dictionariesPath = join(mainDir, 'dictionaries.mjs');\n const relativeDictionariesPath = relative(baseDir, dictionariesPath);\n\n const configurationPath = join(configDir, 'configuration.json');\n const relativeConfigurationPath = relative(baseDir, configurationPath);\n\n // Only provide turbo-specific config if user explicitly sets it\n const turboConfig = isTurbopackEnabled\n ? {\n turbo: {\n ...(nextConfig.experimental?.turbo ?? {}),\n resolveAlias: {\n ...(nextConfig.experimental?.turbo?.resolveAlias ?? {}),\n '@intlayer/dictionaries-entry': relativeDictionariesPath,\n '@intlayer/config/built': relativeConfigurationPath,\n },\n rules: {\n '*.node': {\n as: '*.node',\n loaders: ['node-loader'],\n },\n },\n },\n }\n : {};\n\n const newConfig: Partial<NextConfig> = {\n // Merge environment variables\n env: { ...nextConfig.env, ...env },\n\n // Only add `serverExternalPackages` if Next.js is v15+\n ...(!nextMajorVersion || nextMajorVersion >= 15\n ? {\n serverExternalPackages: [\n ...(nextConfig.serverExternalPackages ?? []),\n 'esbuild',\n 'module',\n 'fs',\n 'chokidar',\n 'fsevents',\n ],\n }\n : {}),\n\n experimental: {\n ...(nextConfig.experimental ?? {}),\n ...turboConfig,\n },\n\n webpack: (config: WebpackParams['0'], options: WebpackParams[1]) => {\n // If the user has defined their own webpack config, call it\n if (typeof nextConfig.webpack === 'function') {\n config = nextConfig.webpack(config, options);\n }\n\n // Alias the dictionary entry for all builds\n config.resolve.alias['@intlayer/dictionaries-entry'] = resolve(\n relativeDictionariesPath\n );\n config.resolve.alias['@intlayer/config/built'] = resolve(\n relativeConfigurationPath\n );\n\n // Mark these modules as externals\n config.externals.push({\n esbuild: 'esbuild',\n module: 'module',\n fs: 'fs',\n chokidar: 'chokidar',\n fsevents: 'fsevents',\n });\n\n // Use `node-loader` for any `.node` files\n config.module.rules.push({\n test: /\\.node$/,\n loader: 'node-loader',\n });\n\n // Only add Intlayer plugin on server side (node runtime)\n const { isServer, nextRuntime } = options;\n\n if (isServer && nextRuntime === 'nodejs') {\n config.plugins.push(new IntlayerPlugin());\n }\n\n return config;\n },\n };\n\n // Merge the new config with the user's config\n return { ...nextConfig, ...newConfig };\n};\n"],"mappings":"AAAA,SAAS,SAAS,UAAU,YAAY;AACxC;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP,SAAS,sBAAsB;AAG/B,SAAS,oBAAoB;AAE7B,MAAM,iBAAiB,MAAM;AAC3B,MAAI;AACF,UAAM,iBAAiB,eAAe,QAAQ,mBAAmB;AAEjE,UAAM,UAAU,KAAK,MAAM,aAAa,gBAAgB,OAAO,CAAC;AAEhE,WAAO,SAAS,QAAQ,QAAQ,MAAM,GAAG,EAAE,CAAC,GAAG,EAAE;AAAA,EACnD,SAAS,GAAG;AACV,WAAO;AAAA,EACT;AACF;AAEA,MAAM,mBAAmB,eAAe;AAGxC,MAAM,qBACJ,QAAQ,IAAI,sBAAsB,SAAS,SAAS;AAe/C,MAAM,eAAe,CAC1B,aAAgB,CAAC,MACE;AACnB,MAAI,OAAO,eAAe,UAAU;AAClC,iBAAa,CAAC;AAAA,EAChB;AAEA,QAAM,iBAAiB,iBAAiB;AAGxC,QAAM,MAAM,kBAAkB,MAAM;AACpC,QAAM,EAAE,SAAS,WAAW,QAAQ,IAAI,eAAe;AAEvD,QAAM,mBAAmB,KAAK,SAAS,kBAAkB;AACzD,QAAM,2BAA2B,SAAS,SAAS,gBAAgB;AAEnE,QAAM,oBAAoB,KAAK,WAAW,oBAAoB;AAC9D,QAAM,4BAA4B,SAAS,SAAS,iBAAiB;AAGrE,QAAM,cAAc,qBAChB;AAAA,IACE,OAAO;AAAA,MACL,GAAI,WAAW,cAAc,SAAS,CAAC;AAAA,MACvC,cAAc;AAAA,QACZ,GAAI,WAAW,cAAc,OAAO,gBAAgB,CAAC;AAAA,QACrD,gCAAgC;AAAA,QAChC,0BAA0B;AAAA,MAC5B;AAAA,MACA,OAAO;AAAA,QACL,UAAU;AAAA,UACR,IAAI;AAAA,UACJ,SAAS,CAAC,aAAa;AAAA,QACzB;AAAA,MACF;AAAA,IACF;AAAA,EACF,IACA,CAAC;AAEL,QAAM,YAAiC;AAAA;AAAA,IAErC,KAAK,EAAE,GAAG,WAAW,KAAK,GAAG,IAAI;AAAA;AAAA,IAGjC,GAAI,CAAC,oBAAoB,oBAAoB,KACzC;AAAA,MACE,wBAAwB;AAAA,QACtB,GAAI,WAAW,0BAA0B,CAAC;AAAA,QAC1C;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,IACF,IACA,CAAC;AAAA,IAEL,cAAc;AAAA,MACZ,GAAI,WAAW,gBAAgB,CAAC;AAAA,MAChC,GAAG;AAAA,IACL;AAAA,IAEA,SAAS,CAAC,QAA4B,YAA8B;AAElE,UAAI,OAAO,WAAW,YAAY,YAAY;AAC5C,iBAAS,WAAW,QAAQ,QAAQ,OAAO;AAAA,MAC7C;AAGA,aAAO,QAAQ,MAAM,8BAA8B,IAAI;AAAA,QACrD;AAAA,MACF;AACA,aAAO,QAAQ,MAAM,wBAAwB,IAAI;AAAA,QAC/C;AAAA,MACF;AAGA,aAAO,UAAU,KAAK;AAAA,QACpB,SAAS;AAAA,QACT,QAAQ;AAAA,QACR,IAAI;AAAA,QACJ,UAAU;AAAA,QACV,UAAU;AAAA,MACZ,CAAC;AAGD,aAAO,OAAO,MAAM,KAAK;AAAA,QACvB,MAAM;AAAA,QACN,QAAQ;AAAA,MACV,CAAC;AAGD,YAAM,EAAE,UAAU,YAAY,IAAI;AAElC,UAAI,YAAY,gBAAgB,UAAU;AACxC,eAAO,QAAQ,KAAK,IAAI,eAAe,CAAC;AAAA,MAC1C;AAEA,aAAO;AAAA,IACT;AAAA,EACF;AAGA,SAAO,EAAE,GAAG,YAAY,GAAG,UAAU;AACvC;","names":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"withIntlayer.d.ts","sourceRoot":"","sources":["../../../src/server/withIntlayer.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,MAAM,CAAC;AAYvC;;;;;;;;;;GAUG;AACH,eAAO,MAAM,YAAY,GAAI,CAAC,SAAS,OAAO,CAAC,UAAU,CAAC,EACxD,aAAY,CAAW,KACtB,UAAU,GAAG,CAsGf,CAAC"}
1
+ {"version":3,"file":"withIntlayer.d.ts","sourceRoot":"","sources":["../../../src/server/withIntlayer.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,MAAM,CAAC;AAwBvC;;;;;;;;;;GAUG;AACH,eAAO,MAAM,YAAY,GAAI,CAAC,SAAS,OAAO,CAAC,UAAU,CAAC,EACxD,aAAY,CAAW,KACtB,UAAU,GAAG,CAsGf,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "next-intlayer",
3
- "version": "5.2.3",
3
+ "version": "5.2.5",
4
4
  "private": false,
5
5
  "description": "Simplify internationalization i18n in Next.js with context providers, hooks, locale detection, and multilingual content integration.",
6
6
  "keywords": [
@@ -67,15 +67,17 @@
67
67
  ],
68
68
  "dependencies": {
69
69
  "node-loader": "^2.1.0",
70
- "@intlayer/chokidar": "5.2.3",
71
- "@intlayer/config": "5.2.3",
72
- "@intlayer/core": "5.2.3",
73
- "@intlayer/dictionaries-entry": "5.2.3",
74
- "@intlayer/webpack": "5.2.3",
75
- "react-intlayer": "5.2.3"
70
+ "@intlayer/config": "5.2.5",
71
+ "@intlayer/core": "5.2.5",
72
+ "@intlayer/dictionaries-entry": "5.2.5",
73
+ "@intlayer/webpack": "5.2.5",
74
+ "@intlayer/chokidar": "5.2.5",
75
+ "react-intlayer": "5.2.5"
76
76
  },
77
77
  "devDependencies": {
78
78
  "@types/node": "^22.10.6",
79
+ "@types/react": ">=16.0.0",
80
+ "@types/react-dom": ">=16.0.0",
79
81
  "@typescript-eslint/parser": "^8.24.0",
80
82
  "concurrently": "^9.1.2",
81
83
  "eslint": "^9.20.0",
@@ -88,20 +90,18 @@
88
90
  "@utils/ts-config": "1.0.4",
89
91
  "@utils/ts-config-types": "1.0.4",
90
92
  "@utils/tsup-config": "1.0.4",
91
- "intlayer": "5.2.3"
93
+ "intlayer": "5.2.5"
92
94
  },
93
95
  "peerDependencies": {
94
- "@types/react": ">=16.0.0",
95
- "@types/react-dom": ">=16.0.0",
96
96
  "next": ">=14.0.0",
97
97
  "react": ">=16.0.0",
98
98
  "react-dom": ">=16.0.0",
99
- "@intlayer/config": "5.2.3",
100
- "@intlayer/core": "5.2.3",
101
- "@intlayer/dictionaries-entry": "5.2.3",
102
- "@intlayer/webpack": "5.2.3",
103
- "intlayer": "5.2.3",
104
- "react-intlayer": "5.2.3"
99
+ "@intlayer/config": "5.2.5",
100
+ "@intlayer/core": "5.2.5",
101
+ "@intlayer/dictionaries-entry": "5.2.5",
102
+ "@intlayer/webpack": "5.2.5",
103
+ "intlayer": "5.2.5",
104
+ "react-intlayer": "5.2.5"
105
105
  },
106
106
  "engines": {
107
107
  "node": ">=14.18"