nuxt-i18n-micro 4.1.0 → 4.1.2

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 +1 @@
1
- <!DOCTYPE html><html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><script type="importmap">{"imports":{"#entry":"/__nuxt-i18n-micro/_nuxt/DKUOBR6F.js"}}</script><link rel="stylesheet" href="/__nuxt-i18n-micro/_nuxt/entry.PSWtHhay.css" crossorigin><link rel="modulepreload" as="script" crossorigin href="/__nuxt-i18n-micro/_nuxt/DKUOBR6F.js"><link rel="modulepreload" as="script" crossorigin href="/__nuxt-i18n-micro/_nuxt/BVna_KKx.js"><script type="module" src="/__nuxt-i18n-micro/_nuxt/DKUOBR6F.js" crossorigin></script><link rel="prefetch" as="style" crossorigin href="/__nuxt-i18n-micro/_nuxt/error-404.xs3fxhVJ.css"><link rel="prefetch" as="script" crossorigin href="/__nuxt-i18n-micro/_nuxt/CmvObVGq.js"><link rel="prefetch" as="script" crossorigin href="/__nuxt-i18n-micro/_nuxt/CPz_jhsD.js"><link rel="prefetch" as="style" crossorigin href="/__nuxt-i18n-micro/_nuxt/error-500.C2S-4iLg.css"><link rel="prefetch" as="script" crossorigin href="/__nuxt-i18n-micro/_nuxt/Bw81RhAv.js"></head><body><div id="__nuxt"></div><div id="teleports"></div><script>window.__NUXT__={};window.__NUXT__.config={public:{},app:{baseURL:"/__nuxt-i18n-micro",buildId:"54fb212e-6673-4dcd-9032-ab7a5f971d8f",buildAssetsDir:"/_nuxt/",cdnURL:""}}</script><script type="application/json" data-nuxt-data="nuxt-app" data-ssr="false" id="__NUXT_DATA__">[{"prerenderedAt":1,"serverRendered":2},1793807641063,false]</script></body></html>
1
+ <!DOCTYPE html><html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><script type="importmap">{"imports":{"#entry":"/__nuxt-i18n-micro/_nuxt/DKUOBR6F.js"}}</script><link rel="stylesheet" href="/__nuxt-i18n-micro/_nuxt/entry.PSWtHhay.css" crossorigin><link rel="modulepreload" as="script" crossorigin href="/__nuxt-i18n-micro/_nuxt/DKUOBR6F.js"><link rel="modulepreload" as="script" crossorigin href="/__nuxt-i18n-micro/_nuxt/BVna_KKx.js"><script type="module" src="/__nuxt-i18n-micro/_nuxt/DKUOBR6F.js" crossorigin></script><link rel="prefetch" as="style" crossorigin href="/__nuxt-i18n-micro/_nuxt/error-404.xs3fxhVJ.css"><link rel="prefetch" as="script" crossorigin href="/__nuxt-i18n-micro/_nuxt/CmvObVGq.js"><link rel="prefetch" as="script" crossorigin href="/__nuxt-i18n-micro/_nuxt/CPz_jhsD.js"><link rel="prefetch" as="style" crossorigin href="/__nuxt-i18n-micro/_nuxt/error-500.C2S-4iLg.css"><link rel="prefetch" as="script" crossorigin href="/__nuxt-i18n-micro/_nuxt/Bw81RhAv.js"></head><body><div id="__nuxt"></div><div id="teleports"></div><script>window.__NUXT__={};window.__NUXT__.config={public:{},app:{baseURL:"/__nuxt-i18n-micro",buildId:"8424c758-2948-4898-81af-bcb5dfd05cc1",buildAssetsDir:"/_nuxt/",cdnURL:""}}</script><script type="application/json" data-nuxt-data="nuxt-app" data-ssr="false" id="__NUXT_DATA__">[{"prerenderedAt":1,"serverRendered":2},1794688189609,false]</script></body></html>
@@ -1 +1 @@
1
- <!DOCTYPE html><html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><script type="importmap">{"imports":{"#entry":"/__nuxt-i18n-micro/_nuxt/DKUOBR6F.js"}}</script><link rel="stylesheet" href="/__nuxt-i18n-micro/_nuxt/entry.PSWtHhay.css" crossorigin><link rel="modulepreload" as="script" crossorigin href="/__nuxt-i18n-micro/_nuxt/DKUOBR6F.js"><link rel="modulepreload" as="script" crossorigin href="/__nuxt-i18n-micro/_nuxt/BVna_KKx.js"><script type="module" src="/__nuxt-i18n-micro/_nuxt/DKUOBR6F.js" crossorigin></script><link rel="prefetch" as="style" crossorigin href="/__nuxt-i18n-micro/_nuxt/error-404.xs3fxhVJ.css"><link rel="prefetch" as="script" crossorigin href="/__nuxt-i18n-micro/_nuxt/CmvObVGq.js"><link rel="prefetch" as="script" crossorigin href="/__nuxt-i18n-micro/_nuxt/CPz_jhsD.js"><link rel="prefetch" as="style" crossorigin href="/__nuxt-i18n-micro/_nuxt/error-500.C2S-4iLg.css"><link rel="prefetch" as="script" crossorigin href="/__nuxt-i18n-micro/_nuxt/Bw81RhAv.js"></head><body><div id="__nuxt"></div><div id="teleports"></div><script>window.__NUXT__={};window.__NUXT__.config={public:{},app:{baseURL:"/__nuxt-i18n-micro",buildId:"54fb212e-6673-4dcd-9032-ab7a5f971d8f",buildAssetsDir:"/_nuxt/",cdnURL:""}}</script><script type="application/json" data-nuxt-data="nuxt-app" data-ssr="false" id="__NUXT_DATA__">[{"prerenderedAt":1,"serverRendered":2},1793807641063,false]</script></body></html>
1
+ <!DOCTYPE html><html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><script type="importmap">{"imports":{"#entry":"/__nuxt-i18n-micro/_nuxt/DKUOBR6F.js"}}</script><link rel="stylesheet" href="/__nuxt-i18n-micro/_nuxt/entry.PSWtHhay.css" crossorigin><link rel="modulepreload" as="script" crossorigin href="/__nuxt-i18n-micro/_nuxt/DKUOBR6F.js"><link rel="modulepreload" as="script" crossorigin href="/__nuxt-i18n-micro/_nuxt/BVna_KKx.js"><script type="module" src="/__nuxt-i18n-micro/_nuxt/DKUOBR6F.js" crossorigin></script><link rel="prefetch" as="style" crossorigin href="/__nuxt-i18n-micro/_nuxt/error-404.xs3fxhVJ.css"><link rel="prefetch" as="script" crossorigin href="/__nuxt-i18n-micro/_nuxt/CmvObVGq.js"><link rel="prefetch" as="script" crossorigin href="/__nuxt-i18n-micro/_nuxt/CPz_jhsD.js"><link rel="prefetch" as="style" crossorigin href="/__nuxt-i18n-micro/_nuxt/error-500.C2S-4iLg.css"><link rel="prefetch" as="script" crossorigin href="/__nuxt-i18n-micro/_nuxt/Bw81RhAv.js"></head><body><div id="__nuxt"></div><div id="teleports"></div><script>window.__NUXT__={};window.__NUXT__.config={public:{},app:{baseURL:"/__nuxt-i18n-micro",buildId:"8424c758-2948-4898-81af-bcb5dfd05cc1",buildAssetsDir:"/_nuxt/",cdnURL:""}}</script><script type="application/json" data-nuxt-data="nuxt-app" data-ssr="false" id="__NUXT_DATA__">[{"prerenderedAt":1,"serverRendered":2},1794688189610,false]</script></body></html>
@@ -1 +1 @@
1
- {"id":"54fb212e-6673-4dcd-9032-ab7a5f971d8f","timestamp":1793807638616}
1
+ {"id":"8424c758-2948-4898-81af-bcb5dfd05cc1","timestamp":1794688186832}
@@ -0,0 +1 @@
1
+ {"id":"8424c758-2948-4898-81af-bcb5dfd05cc1","timestamp":1794688186832,"prerendered":[]}
@@ -1 +1 @@
1
- <!DOCTYPE html><html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><script type="importmap">{"imports":{"#entry":"/__nuxt-i18n-micro/_nuxt/DKUOBR6F.js"}}</script><link rel="stylesheet" href="/__nuxt-i18n-micro/_nuxt/entry.PSWtHhay.css" crossorigin><link rel="modulepreload" as="script" crossorigin href="/__nuxt-i18n-micro/_nuxt/DKUOBR6F.js"><link rel="modulepreload" as="script" crossorigin href="/__nuxt-i18n-micro/_nuxt/BVna_KKx.js"><script type="module" src="/__nuxt-i18n-micro/_nuxt/DKUOBR6F.js" crossorigin></script><link rel="prefetch" as="style" crossorigin href="/__nuxt-i18n-micro/_nuxt/error-404.xs3fxhVJ.css"><link rel="prefetch" as="script" crossorigin href="/__nuxt-i18n-micro/_nuxt/CmvObVGq.js"><link rel="prefetch" as="script" crossorigin href="/__nuxt-i18n-micro/_nuxt/CPz_jhsD.js"><link rel="prefetch" as="style" crossorigin href="/__nuxt-i18n-micro/_nuxt/error-500.C2S-4iLg.css"><link rel="prefetch" as="script" crossorigin href="/__nuxt-i18n-micro/_nuxt/Bw81RhAv.js"></head><body><div id="__nuxt"></div><div id="teleports"></div><script>window.__NUXT__={};window.__NUXT__.config={public:{},app:{baseURL:"/__nuxt-i18n-micro",buildId:"54fb212e-6673-4dcd-9032-ab7a5f971d8f",buildAssetsDir:"/_nuxt/",cdnURL:""}}</script><script type="application/json" data-nuxt-data="nuxt-app" data-ssr="false" id="__NUXT_DATA__">[{"prerenderedAt":1,"serverRendered":2},1793807641063,false]</script></body></html>
1
+ <!DOCTYPE html><html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><script type="importmap">{"imports":{"#entry":"/__nuxt-i18n-micro/_nuxt/DKUOBR6F.js"}}</script><link rel="stylesheet" href="/__nuxt-i18n-micro/_nuxt/entry.PSWtHhay.css" crossorigin><link rel="modulepreload" as="script" crossorigin href="/__nuxt-i18n-micro/_nuxt/DKUOBR6F.js"><link rel="modulepreload" as="script" crossorigin href="/__nuxt-i18n-micro/_nuxt/BVna_KKx.js"><script type="module" src="/__nuxt-i18n-micro/_nuxt/DKUOBR6F.js" crossorigin></script><link rel="prefetch" as="style" crossorigin href="/__nuxt-i18n-micro/_nuxt/error-404.xs3fxhVJ.css"><link rel="prefetch" as="script" crossorigin href="/__nuxt-i18n-micro/_nuxt/CmvObVGq.js"><link rel="prefetch" as="script" crossorigin href="/__nuxt-i18n-micro/_nuxt/CPz_jhsD.js"><link rel="prefetch" as="style" crossorigin href="/__nuxt-i18n-micro/_nuxt/error-500.C2S-4iLg.css"><link rel="prefetch" as="script" crossorigin href="/__nuxt-i18n-micro/_nuxt/Bw81RhAv.js"></head><body><div id="__nuxt"></div><div id="teleports"></div><script>window.__NUXT__={};window.__NUXT__.config={public:{},app:{baseURL:"/__nuxt-i18n-micro",buildId:"8424c758-2948-4898-81af-bcb5dfd05cc1",buildAssetsDir:"/_nuxt/",cdnURL:""}}</script><script type="application/json" data-nuxt-data="nuxt-app" data-ssr="false" id="__NUXT_DATA__">[{"prerenderedAt":1,"serverRendered":2},1794688189610,false]</script></body></html>
package/dist/module.json CHANGED
@@ -4,7 +4,7 @@
4
4
  "compatibility": {
5
5
  "nuxt": ">=3.18.0"
6
6
  },
7
- "version": "4.1.0",
7
+ "version": "4.1.2",
8
8
  "builder": {
9
9
  "@nuxt/module-builder": "1.0.3",
10
10
  "unbuild": "3.6.1"
package/dist/module.mjs CHANGED
@@ -183,6 +183,13 @@ async function buildTranslationSourceLayers(rootDirs, translationDirName, output
183
183
  });
184
184
  }
185
185
 
186
+ function resolvePayloadHostSources(options, env = process.env) {
187
+ return {
188
+ apiBaseClientHost: env.NUXT_I18N_APP_BASE_CLIENT_HOST || options.apiBaseClientHost || void 0,
189
+ apiBaseServerHost: env.NUXT_I18N_APP_BASE_SERVER_HOST || options.apiBaseServerHost || void 0,
190
+ apiBaseUrl: env.NUXT_I18N_APP_BASE_URL || options.apiBaseUrl || "_locales"
191
+ };
192
+ }
186
193
  const DEFAULT_TRANSLATION_PAYLOAD_WARN_FILE_COUNT = 500;
187
194
  const DEFAULT_TRANSLATION_PAYLOAD_WARN_SIZE_BYTES = 10 * 1024 * 1024;
188
195
  function resolveTranslationPayloadOptions(options) {
@@ -274,6 +281,10 @@ function getTranslationPayloadSizeWarning(stats, thresholds) {
274
281
  return `Generated translation payloads are large (${stats.fileCount} files, ${formatBytes(stats.totalBytes)}). Consider translationPayloads.mode: 'source' for public output, hosting payloads externally, or disabling unused public/prerender outputs.`;
275
282
  }
276
283
 
284
+ function localesByLayerPriority(layers, merged = []) {
285
+ return [...layers.flatMap((layer) => layer.config.i18n?.locales ?? []), ...merged];
286
+ }
287
+
277
288
  function collectJsonFiles(dir) {
278
289
  return readdirSync(dir, { withFileTypes: true }).flatMap((entry) => {
279
290
  const fullPath = join(dir, entry.name);
@@ -378,8 +389,10 @@ function buildI18nPluralTemplate(plural, helpersImportPath) {
378
389
  return `export { defaultPlural as plural } from '${helpersImportPath}'
379
390
  `;
380
391
  }
381
- return `import { interpolate } from '${helpersImportPath}'
382
- export const plural = ${plural.toString()}
392
+ const source = plural.toString();
393
+ const imports = /\binterpolate\b/.test(source) ? `import { interpolate } from '${helpersImportPath}'
394
+ ` : "";
395
+ return `${imports}export const plural = ${source}
383
396
  `;
384
397
  }
385
398
 
@@ -1160,6 +1173,7 @@ const module$1 = defineNuxtModule({
1160
1173
  httpCacheDuration: 31536e3
1161
1174
  },
1162
1175
  async setup(options, nuxt) {
1176
+ options.locales = localesByLayerPriority(nuxt.options._layers, options.locales);
1163
1177
  const defaultLocale = process.env.DEFAULT_LOCALE || options.defaultLocale || "en";
1164
1178
  let isSSG = false;
1165
1179
  const logger = useLogger("nuxt-i18n-micro");
@@ -1207,7 +1221,8 @@ const module$1 = defineNuxtModule({
1207
1221
  })) {
1208
1222
  logger.warn(warning);
1209
1223
  }
1210
- const rawServerHost = process.env.NUXT_I18N_APP_BASE_SERVER_HOST ?? options.apiBaseServerHost ?? void 0;
1224
+ const payloadSources = resolvePayloadHostSources(options);
1225
+ const rawServerHost = payloadSources.apiBaseServerHost;
1211
1226
  if (!translationPayloads.serverAssets && !translationPayloads.publicAssets && !rawServerHost) {
1212
1227
  throw new Error(
1213
1228
  "nuxt-i18n-micro: local SSR payloads are disabled (serverAssets/publicAssets false) and apiBaseServerHost is not set. SSR would load empty translations."
@@ -1262,12 +1277,12 @@ const module$1 = defineNuxtModule({
1262
1277
  } = mergeDefineI18nRouteMeta(collectDefineI18nRouteMetaFromFiles(pageFiles, rootDirs), options);
1263
1278
  const resolvedStrategyPath = await resolveEntry("@i18n-micro/path-strategy");
1264
1279
  const resolvedHelpersPath = await resolveEntry("@i18n-micro/core/helpers");
1265
- let apiBaseClientHost = process.env.NUXT_I18N_APP_BASE_CLIENT_HOST ?? options.apiBaseClientHost ?? void 0;
1280
+ let apiBaseClientHost = payloadSources.apiBaseClientHost;
1266
1281
  if (apiBaseClientHost?.endsWith("/")) {
1267
1282
  apiBaseClientHost = apiBaseClientHost.slice(0, -1);
1268
1283
  }
1269
1284
  const apiBaseServerHost = rawServerHost?.endsWith("/") ? rawServerHost.slice(0, -1) : rawServerHost;
1270
- const rawUrl = process.env.NUXT_I18N_APP_BASE_URL ?? options.apiBaseUrl ?? "_locales";
1285
+ const rawUrl = payloadSources.apiBaseUrl;
1271
1286
  if (rawUrl.startsWith("http://") || rawUrl.startsWith("https://")) {
1272
1287
  throw new Error("Nuxt-i18n-micro: Please use NUXT_I18N_APP_BASE_CLIENT_HOST or NUXT_I18N_APP_BASE_SERVER_HOST instead.");
1273
1288
  }
@@ -18,7 +18,7 @@ const pending = /* @__PURE__ */ new Map();
18
18
  const requestBoundIo = typeof navigator !== "undefined" && navigator.userAgent === "Cloudflare-Workers";
19
19
  function runtimeHost() {
20
20
  try {
21
- return process.env.NUXT_I18N_APP_BASE_SERVER_HOST;
21
+ return process.env.NUXT_I18N_APP_BASE_SERVER_HOST || void 0;
22
22
  } catch {
23
23
  return void 0;
24
24
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "nuxt-i18n-micro",
3
- "version": "4.1.0",
3
+ "version": "4.1.2",
4
4
  "description": "Fast, lightweight i18n for Nuxt with strategy-based routing and minimal overhead.",
5
5
  "keywords": [
6
6
  "i18n",
@@ -80,9 +80,9 @@
80
80
  "ufo": "^1.6.4",
81
81
  "@i18n-micro/core": "^2.1.0",
82
82
  "@i18n-micro/path-strategy": "^2.1.0",
83
- "@i18n-micro/route-strategy": "^2.1.0",
84
- "@i18n-micro/types": "^2.1.0",
85
- "@i18n-micro/utils": "^2.1.0"
83
+ "@i18n-micro/utils": "^2.1.0",
84
+ "@i18n-micro/route-strategy": "^2.1.1",
85
+ "@i18n-micro/types": "^2.1.0"
86
86
  },
87
87
  "devDependencies": {
88
88
  "@nuxt/devtools": "^3.4.2",
@@ -1 +0,0 @@
1
- {"id":"54fb212e-6673-4dcd-9032-ab7a5f971d8f","timestamp":1793807638616,"prerendered":[]}