nuxt-i18n-micro 3.29.6 → 3.29.8

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/BpY-pULJ.js"}}</script><link rel="stylesheet" href="/__nuxt-i18n-micro/_nuxt/entry.CJGrD2VA.css" crossorigin><link rel="modulepreload" as="script" crossorigin href="/__nuxt-i18n-micro/_nuxt/BpY-pULJ.js"><link rel="modulepreload" as="script" crossorigin href="/__nuxt-i18n-micro/_nuxt/BAu8wLxk.js"><script type="module" src="/__nuxt-i18n-micro/_nuxt/BpY-pULJ.js" crossorigin></script><link rel="prefetch" as="style" crossorigin href="/__nuxt-i18n-micro/_nuxt/error-404.DJpOK4i4.css"><link rel="prefetch" as="script" crossorigin href="/__nuxt-i18n-micro/_nuxt/P5TxJjhx.js"><link rel="prefetch" as="script" crossorigin href="/__nuxt-i18n-micro/_nuxt/Bo5omLnI.js"><link rel="prefetch" as="style" crossorigin href="/__nuxt-i18n-micro/_nuxt/error-500.DRe0f5YQ.css"><link rel="prefetch" as="script" crossorigin href="/__nuxt-i18n-micro/_nuxt/DSTZVpLC.js"></head><body><div id="__nuxt"></div><div id="teleports"></div><script>window.__NUXT__={};window.__NUXT__.config={public:{},app:{baseURL:"/__nuxt-i18n-micro",buildId:"f3c72715-4078-46f0-b763-6a6bcd91acd1",buildAssetsDir:"/_nuxt/",cdnURL:""}}</script><script type="application/json" data-nuxt-data="nuxt-app" data-ssr="false" id="__NUXT_DATA__">[{"prerenderedAt":1,"serverRendered":2},1790267903272,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/BpY-pULJ.js"}}</script><link rel="stylesheet" href="/__nuxt-i18n-micro/_nuxt/entry.CJGrD2VA.css" crossorigin><link rel="modulepreload" as="script" crossorigin href="/__nuxt-i18n-micro/_nuxt/BpY-pULJ.js"><link rel="modulepreload" as="script" crossorigin href="/__nuxt-i18n-micro/_nuxt/BAu8wLxk.js"><script type="module" src="/__nuxt-i18n-micro/_nuxt/BpY-pULJ.js" crossorigin></script><link rel="prefetch" as="style" crossorigin href="/__nuxt-i18n-micro/_nuxt/error-404.DJpOK4i4.css"><link rel="prefetch" as="script" crossorigin href="/__nuxt-i18n-micro/_nuxt/P5TxJjhx.js"><link rel="prefetch" as="script" crossorigin href="/__nuxt-i18n-micro/_nuxt/Bo5omLnI.js"><link rel="prefetch" as="style" crossorigin href="/__nuxt-i18n-micro/_nuxt/error-500.DRe0f5YQ.css"><link rel="prefetch" as="script" crossorigin href="/__nuxt-i18n-micro/_nuxt/DSTZVpLC.js"></head><body><div id="__nuxt"></div><div id="teleports"></div><script>window.__NUXT__={};window.__NUXT__.config={public:{},app:{baseURL:"/__nuxt-i18n-micro",buildId:"95d9fdf4-13f4-409a-b441-89fa0f659582",buildAssetsDir:"/_nuxt/",cdnURL:""}}</script><script type="application/json" data-nuxt-data="nuxt-app" data-ssr="false" id="__NUXT_DATA__">[{"prerenderedAt":1,"serverRendered":2},1790417109219,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/BpY-pULJ.js"}}</script><link rel="stylesheet" href="/__nuxt-i18n-micro/_nuxt/entry.CJGrD2VA.css" crossorigin><link rel="modulepreload" as="script" crossorigin href="/__nuxt-i18n-micro/_nuxt/BpY-pULJ.js"><link rel="modulepreload" as="script" crossorigin href="/__nuxt-i18n-micro/_nuxt/BAu8wLxk.js"><script type="module" src="/__nuxt-i18n-micro/_nuxt/BpY-pULJ.js" crossorigin></script><link rel="prefetch" as="style" crossorigin href="/__nuxt-i18n-micro/_nuxt/error-404.DJpOK4i4.css"><link rel="prefetch" as="script" crossorigin href="/__nuxt-i18n-micro/_nuxt/P5TxJjhx.js"><link rel="prefetch" as="script" crossorigin href="/__nuxt-i18n-micro/_nuxt/Bo5omLnI.js"><link rel="prefetch" as="style" crossorigin href="/__nuxt-i18n-micro/_nuxt/error-500.DRe0f5YQ.css"><link rel="prefetch" as="script" crossorigin href="/__nuxt-i18n-micro/_nuxt/DSTZVpLC.js"></head><body><div id="__nuxt"></div><div id="teleports"></div><script>window.__NUXT__={};window.__NUXT__.config={public:{},app:{baseURL:"/__nuxt-i18n-micro",buildId:"f3c72715-4078-46f0-b763-6a6bcd91acd1",buildAssetsDir:"/_nuxt/",cdnURL:""}}</script><script type="application/json" data-nuxt-data="nuxt-app" data-ssr="false" id="__NUXT_DATA__">[{"prerenderedAt":1,"serverRendered":2},1790267903272,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/BpY-pULJ.js"}}</script><link rel="stylesheet" href="/__nuxt-i18n-micro/_nuxt/entry.CJGrD2VA.css" crossorigin><link rel="modulepreload" as="script" crossorigin href="/__nuxt-i18n-micro/_nuxt/BpY-pULJ.js"><link rel="modulepreload" as="script" crossorigin href="/__nuxt-i18n-micro/_nuxt/BAu8wLxk.js"><script type="module" src="/__nuxt-i18n-micro/_nuxt/BpY-pULJ.js" crossorigin></script><link rel="prefetch" as="style" crossorigin href="/__nuxt-i18n-micro/_nuxt/error-404.DJpOK4i4.css"><link rel="prefetch" as="script" crossorigin href="/__nuxt-i18n-micro/_nuxt/P5TxJjhx.js"><link rel="prefetch" as="script" crossorigin href="/__nuxt-i18n-micro/_nuxt/Bo5omLnI.js"><link rel="prefetch" as="style" crossorigin href="/__nuxt-i18n-micro/_nuxt/error-500.DRe0f5YQ.css"><link rel="prefetch" as="script" crossorigin href="/__nuxt-i18n-micro/_nuxt/DSTZVpLC.js"></head><body><div id="__nuxt"></div><div id="teleports"></div><script>window.__NUXT__={};window.__NUXT__.config={public:{},app:{baseURL:"/__nuxt-i18n-micro",buildId:"95d9fdf4-13f4-409a-b441-89fa0f659582",buildAssetsDir:"/_nuxt/",cdnURL:""}}</script><script type="application/json" data-nuxt-data="nuxt-app" data-ssr="false" id="__NUXT_DATA__">[{"prerenderedAt":1,"serverRendered":2},1790417109220,false]</script></body></html>
@@ -1 +1 @@
1
- {"id":"f3c72715-4078-46f0-b763-6a6bcd91acd1","timestamp":1790267901076}
1
+ {"id":"95d9fdf4-13f4-409a-b441-89fa0f659582","timestamp":1790417106107}
@@ -0,0 +1 @@
1
+ {"id":"95d9fdf4-13f4-409a-b441-89fa0f659582","timestamp":1790417106107,"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/BpY-pULJ.js"}}</script><link rel="stylesheet" href="/__nuxt-i18n-micro/_nuxt/entry.CJGrD2VA.css" crossorigin><link rel="modulepreload" as="script" crossorigin href="/__nuxt-i18n-micro/_nuxt/BpY-pULJ.js"><link rel="modulepreload" as="script" crossorigin href="/__nuxt-i18n-micro/_nuxt/BAu8wLxk.js"><script type="module" src="/__nuxt-i18n-micro/_nuxt/BpY-pULJ.js" crossorigin></script><link rel="prefetch" as="style" crossorigin href="/__nuxt-i18n-micro/_nuxt/error-404.DJpOK4i4.css"><link rel="prefetch" as="script" crossorigin href="/__nuxt-i18n-micro/_nuxt/P5TxJjhx.js"><link rel="prefetch" as="script" crossorigin href="/__nuxt-i18n-micro/_nuxt/Bo5omLnI.js"><link rel="prefetch" as="style" crossorigin href="/__nuxt-i18n-micro/_nuxt/error-500.DRe0f5YQ.css"><link rel="prefetch" as="script" crossorigin href="/__nuxt-i18n-micro/_nuxt/DSTZVpLC.js"></head><body><div id="__nuxt"></div><div id="teleports"></div><script>window.__NUXT__={};window.__NUXT__.config={public:{},app:{baseURL:"/__nuxt-i18n-micro",buildId:"f3c72715-4078-46f0-b763-6a6bcd91acd1",buildAssetsDir:"/_nuxt/",cdnURL:""}}</script><script type="application/json" data-nuxt-data="nuxt-app" data-ssr="false" id="__NUXT_DATA__">[{"prerenderedAt":1,"serverRendered":2},1790267903272,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/BpY-pULJ.js"}}</script><link rel="stylesheet" href="/__nuxt-i18n-micro/_nuxt/entry.CJGrD2VA.css" crossorigin><link rel="modulepreload" as="script" crossorigin href="/__nuxt-i18n-micro/_nuxt/BpY-pULJ.js"><link rel="modulepreload" as="script" crossorigin href="/__nuxt-i18n-micro/_nuxt/BAu8wLxk.js"><script type="module" src="/__nuxt-i18n-micro/_nuxt/BpY-pULJ.js" crossorigin></script><link rel="prefetch" as="style" crossorigin href="/__nuxt-i18n-micro/_nuxt/error-404.DJpOK4i4.css"><link rel="prefetch" as="script" crossorigin href="/__nuxt-i18n-micro/_nuxt/P5TxJjhx.js"><link rel="prefetch" as="script" crossorigin href="/__nuxt-i18n-micro/_nuxt/Bo5omLnI.js"><link rel="prefetch" as="style" crossorigin href="/__nuxt-i18n-micro/_nuxt/error-500.DRe0f5YQ.css"><link rel="prefetch" as="script" crossorigin href="/__nuxt-i18n-micro/_nuxt/DSTZVpLC.js"></head><body><div id="__nuxt"></div><div id="teleports"></div><script>window.__NUXT__={};window.__NUXT__.config={public:{},app:{baseURL:"/__nuxt-i18n-micro",buildId:"95d9fdf4-13f4-409a-b441-89fa0f659582",buildAssetsDir:"/_nuxt/",cdnURL:""}}</script><script type="application/json" data-nuxt-data="nuxt-app" data-ssr="false" id="__NUXT_DATA__">[{"prerenderedAt":1,"serverRendered":2},1790417109220,false]</script></body></html>
package/dist/module.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "nuxt-i18n-micro",
3
3
  "configKey": "i18n",
4
- "version": "3.29.6",
4
+ "version": "3.29.8",
5
5
  "builder": {
6
6
  "@nuxt/module-builder": "1.0.3",
7
7
  "unbuild": "3.6.1"
package/dist/module.mjs CHANGED
@@ -6,7 +6,7 @@ import { defaultPlural, isNoPrefixStrategy, withPrefixStrategy } from '@i18n-mic
6
6
  import { generateHmrPlugin } from '@i18n-micro/hmr/generate-plugin';
7
7
  import { RouteGenerator, isLocaleAllowedForUnlocalizedRoute, normalizePath, isInternalPath } from '@i18n-micro/route-strategy';
8
8
  import { buildTranslationSourceLayers, preMergeLocales } from '@i18n-micro/utils/build';
9
- import { resolveTranslationPayloadOptions, getTranslationPayloadMisconfigurationWarnings, getTranslationPayloadSizeWarning, resolveTranslationPayloadWarningThresholds, resolveTranslationPayloadPublicRel, shouldRegisterNitroServerAssets, shouldCopyTranslationPayloadsToPublic, resolveTranslationPayloadPublicDir } from '@i18n-micro/utils/payload-config';
9
+ import { resolveTranslationPayloadOptions, getTranslationPayloadMisconfigurationWarnings, getTranslationPayloadSizeWarning, resolveTranslationPayloadWarningThresholds, resolveTranslationPayloadPublicRel, shouldReadPayloadsFromPublicDir, shouldRegisterNitroServerAssets, shouldCopyTranslationPayloadsToPublic, resolveTranslationPayloadPublicDir } from '@i18n-micro/utils/payload-config';
10
10
  export { resolveTranslationPayloadMode, resolveTranslationPayloadOptions, resolveTranslationPayloadPublicDir, resolveTranslationPayloadPublicRel, shouldCopyTranslationPayloadsToPublic, shouldRegisterNitroServerAssets } from '@i18n-micro/utils/payload-config';
11
11
  import { hashTranslationSources, scanTranslationPayloadDirectory, compressTranslationPayloads } from '@i18n-micro/utils/payload-stats';
12
12
  import { buildTranslationPayloadCacheControl } from '@i18n-micro/utils/payload-url';
@@ -1064,24 +1064,7 @@ declare module '#i18n-internal/payload-source' {
1064
1064
  nitroConfig.alias["#i18n-internal/plural"] = pluralTemplate.dst;
1065
1065
  nitroConfig.alias["#i18n-internal/strategy"] = strategyTemplate.dst;
1066
1066
  nitroConfig.alias["#i18n-internal/config"] = configTemplate.dst;
1067
- const isNode = nitroConfig.node !== false;
1068
- nitroConfig.alias["#i18n-internal/payload-source"] = isNode ? resolver.resolve("./runtime/server/payload-source.fs") : resolver.resolve("./runtime/server/payload-source.assets");
1069
- if (shouldRegisterNitroServerAssets(translationPayloads, isNode)) {
1070
- nitroConfig.serverAssets = nitroConfig.serverAssets || [];
1071
- nitroConfig.serverAssets.push({
1072
- baseName: "i18n",
1073
- // Same layout as public (`mode`): premerged matrix or compact source.
1074
- dir: publicAssetsDir
1075
- });
1076
- if (translationPayloads.mode === "premerged") {
1077
- logger.warn(
1078
- `Edge target with translationPayloads.mode:"premerged" embeds the full page/locale matrix via Nitro serverAssets (Rollup raw:). Prefer mode:'source' for large catalogs.`
1079
- );
1080
- }
1081
- }
1082
- if (isNode && translationPayloads.serverAssets && !translationPayloads.publicAssets) {
1083
- logger.info("translationPayloads.serverAssets: on Node, payloads are served from public/ (publicAssets copy enabled for SSR).");
1084
- }
1067
+ nitroConfig.alias["#i18n-internal/payload-source"] = resolver.resolve("./runtime/server/payload-source.fs");
1085
1068
  nitroConfig.plugins = nitroConfig.plugins || [];
1086
1069
  if (nuxt.options.dev && (options.hmr ?? true)) {
1087
1070
  nitroConfig.plugins.push(resolver.resolve("./runtime/server/plugins/watcher.dev"));
@@ -1124,10 +1107,32 @@ declare module '#i18n-internal/payload-source' {
1124
1107
  handler: resolver.resolve("./runtime/server/middleware/i18n.global")
1125
1108
  });
1126
1109
  });
1110
+ nuxt.hook("nitro:init", (nitro) => {
1111
+ if (nitro.options.static) return;
1112
+ const readsPublicDir = shouldReadPayloadsFromPublicDir(nitro.options);
1113
+ if (!readsPublicDir) {
1114
+ nitro.options.alias["#i18n-internal/payload-source"] = resolver.resolve("./runtime/server/payload-source.assets");
1115
+ }
1116
+ if (shouldRegisterNitroServerAssets(translationPayloads, readsPublicDir)) {
1117
+ nitro.options.serverAssets.push({
1118
+ baseName: "i18n",
1119
+ // Same layout as public (`mode`): premerged matrix or compact source.
1120
+ dir: publicAssetsDir
1121
+ });
1122
+ if (translationPayloads.mode === "premerged") {
1123
+ logger.warn(
1124
+ `Preset "${nitro.options.preset}" does not ship public/ with the server, so translationPayloads.mode:"premerged" embeds the full page/locale matrix via Nitro serverAssets (Rollup raw:). Prefer mode:'source' for large catalogs.`
1125
+ );
1126
+ }
1127
+ }
1128
+ if (readsPublicDir && translationPayloads.serverAssets && !translationPayloads.publicAssets) {
1129
+ logger.info("translationPayloads.serverAssets: on Node, payloads are served from public/ (publicAssets copy enabled for SSR).");
1130
+ }
1131
+ });
1127
1132
  nuxt.hook("nitro:build:public-assets", (nitro) => {
1128
1133
  const isProd = nuxt.options.dev === false;
1129
- const isNode = nitro.options.node !== false;
1130
- const copyPublicPayloads = shouldCopyTranslationPayloadsToPublic(translationPayloads, isNode);
1134
+ const readsPublicDir = shouldReadPayloadsFromPublicDir(nitro.options);
1135
+ const copyPublicPayloads = shouldCopyTranslationPayloadsToPublic(translationPayloads, readsPublicDir);
1131
1136
  if (isProd && copyPublicPayloads) {
1132
1137
  const publicDir = resolveTranslationPayloadPublicDir(nitro.options.output.publicDir, options, apiBaseUrl);
1133
1138
  try {
@@ -28,5 +28,5 @@ export default defineEventHandler(async (event) => {
28
28
  setResponseHeader(event, "Cache-Control", cacheControl);
29
29
  }
30
30
  }
31
- return send(event, json);
31
+ await send(event, json);
32
32
  });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "nuxt-i18n-micro",
3
- "version": "3.29.6",
3
+ "version": "3.29.8",
4
4
  "description": "Fast, lightweight i18n for Nuxt with strategy-based routing and minimal overhead.",
5
5
  "keywords": [
6
6
  "i18n",
@@ -82,13 +82,13 @@
82
82
  "sirv": "^2.0.3",
83
83
  "ufo": "^1.6.4",
84
84
  "unplugin": "^1.16.1 || ^2.0.0 || ^3.3.0",
85
- "@i18n-micro/core": "^1.3.19",
86
- "@i18n-micro/route-strategy": "^1.1.26",
87
- "@i18n-micro/path-strategy": "^1.3.18",
88
- "@i18n-micro/types": "^1.2.16",
89
- "@i18n-micro/test-utils": "^1.2.16",
90
- "@i18n-micro/utils": "^1.0.24",
91
- "@i18n-micro/hmr": "^1.0.16"
85
+ "@i18n-micro/core": "^1.3.20",
86
+ "@i18n-micro/path-strategy": "^1.3.19",
87
+ "@i18n-micro/route-strategy": "^1.1.27",
88
+ "@i18n-micro/hmr": "^1.0.17",
89
+ "@i18n-micro/types": "^1.2.17",
90
+ "@i18n-micro/test-utils": "^1.2.17",
91
+ "@i18n-micro/utils": "^1.0.25"
92
92
  },
93
93
  "devDependencies": {
94
94
  "@nuxt/devtools": "^3.4.2",
@@ -98,15 +98,15 @@
98
98
  "@nuxt/test-utils": "^4.3.2",
99
99
  "@playwright/test": "^1.63.0",
100
100
  "@types/node": "^20.19.26",
101
- "@untestutils/nuxt": "^0.6.10",
102
- "@untestutils/perf": "^0.6.10",
101
+ "@untestutils/nuxt": "^0.7.1",
102
+ "@untestutils/perf": "^0.7.1",
103
103
  "@vue/devtools-api": "^8.1.5",
104
104
  "artillery": "2.0.34",
105
105
  "changelogen": "^0.6.2",
106
106
  "oxfmt": "^0.67.0",
107
107
  "oxlint": "^1.82.0",
108
108
  "typescript": "6.0.3",
109
- "untestutils": "^0.6.10",
109
+ "untestutils": "^0.7.1",
110
110
  "vitest": "^4.1.11",
111
111
  "vue-tsc": "^3.3.11"
112
112
  },
@@ -180,6 +180,10 @@
180
180
  "smoke:pack": "pnpm -C scripts cli smoke-pack",
181
181
  "smoke:verify": "pnpm -C scripts cli smoke-verify",
182
182
  "smoke:browser": "pnpm -C scripts cli smoke-browser",
183
+ "test:presets": "pnpm -C scripts cli preset-smoke --preset all",
184
+ "test:presets:vercel": "pnpm -C scripts cli preset-smoke --preset vercel",
185
+ "test:presets:cloudflare": "pnpm -C scripts cli preset-smoke --preset cloudflare_pages",
186
+ "test:presets:netlify": "pnpm -C scripts cli preset-smoke --preset netlify",
183
187
  "audit:deps": "pnpm -C scripts cli deps-audit",
184
188
  "audit:docs": "pnpm -C scripts cli docs-audit",
185
189
  "audit:fixtures": "pnpm -C scripts cli fixtures-audit",
@@ -1 +0,0 @@
1
- {"id":"f3c72715-4078-46f0-b763-6a6bcd91acd1","timestamp":1790267901076,"prerendered":[]}