nuxt-i18n-micro 3.2.4 → 3.3.0

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.
Files changed (35) hide show
  1. package/README.md +24 -15
  2. package/dist/client/200.html +1 -1
  3. package/dist/client/404.html +1 -1
  4. package/dist/client/_nuxt/CPIcll7P.js +1 -0
  5. package/dist/client/_nuxt/{BGh93ua4.js → C_iIToZW.js} +9 -11
  6. package/dist/client/_nuxt/{BHdvmNAL.js → DU8MOPKR.js} +1 -1
  7. package/dist/client/_nuxt/builds/latest.json +1 -1
  8. package/dist/client/_nuxt/builds/meta/7af9cef1-a153-4ef4-bce0-e0bffd41cb41.json +1 -0
  9. package/dist/client/_nuxt/{entry.Kj_DYE7z.css → entry.CT2N5IzL.css} +1 -1
  10. package/dist/client/_nuxt/error-404.DotYE5uV.css +1 -0
  11. package/dist/client/_nuxt/error-500.C1UsO9me.css +1 -0
  12. package/dist/client/_nuxt/{DDGd_lid.js → zD6bdx6d.js} +1 -1
  13. package/dist/client/index.html +1 -1
  14. package/dist/module.json +1 -1
  15. package/dist/module.mjs +9 -7
  16. package/dist/runtime/components/i18n-link.vue +1 -1
  17. package/dist/runtime/plugins/01.plugin.d.ts +8 -6
  18. package/dist/runtime/plugins/01.plugin.js +139 -134
  19. package/dist/runtime/plugins/06.redirect.js +184 -0
  20. package/dist/runtime/server/middleware/i18n.global.js +15 -163
  21. package/dist/runtime/server/routes/i18n.d.ts +2 -1
  22. package/dist/runtime/server/routes/i18n.js +4 -4
  23. package/dist/runtime/server/utils/server-loader.d.ts +1 -0
  24. package/dist/runtime/server/utils/server-loader.js +20 -2
  25. package/dist/runtime/utils/storage.d.ts +5 -0
  26. package/dist/runtime/utils/storage.js +15 -5
  27. package/package.json +9 -5
  28. package/dist/client/_nuxt/DCzpQabR.js +0 -1
  29. package/dist/client/_nuxt/builds/meta/87f9a27e-6790-4bcc-9e43-9e546b53a4a0.json +0 -1
  30. package/dist/client/_nuxt/error-404.Gqn9dG-k.css +0 -1
  31. package/dist/client/_nuxt/error-500.B7WZZ6sx.css +0 -1
  32. package/dist/runtime/plugins/06.client-redirect.client.js +0 -50
  33. package/dist/runtime/utils/index.d.ts +0 -1
  34. package/dist/runtime/utils/index.js +0 -0
  35. /package/dist/runtime/plugins/{06.client-redirect.client.d.ts → 06.redirect.d.ts} +0 -0
package/README.md CHANGED
@@ -28,28 +28,33 @@ To showcase the efficiency of `Nuxt I18n Micro`, we conducted tests under identi
28
28
 
29
29
  > **Note:** The `plain-nuxt` baseline is a minimal implementation created solely for benchmarking purposes. It loads data directly from JSON files without any i18n logic. Real-world applications will have more complexity and higher resource usage.
30
30
 
31
- | Project | Build Time | Max Memory | Max CPU |
32
- |---------|------------|------------|---------|
33
- | **plain-nuxt** (baseline) | 4.48s | 609.55 MB | 242.60% |
34
- | **i18n-micro** | 7.88s | 1164.02 MB | 336.00% |
35
- | **i18n v10** | 77.81s | 9494.69 MB | 449.00% |
31
+ | Project | Build Time | Code Bundle | Max Memory | Max CPU |
32
+ |---------|------------|-------------|------------|---------|
33
+ | **plain-nuxt** (baseline) | 5.71s | 1.35 MB | 674 MB | 240% |
34
+ | **i18n-micro** | 23.47s | 1.5 MB | 1,658 MB | 208% |
35
+ | **i18n v10** | 84.91s | 19.24 MB | 9,528 MB | 439% |
36
36
 
37
- - **i18n-micro vs baseline**: +3.40s build, +554.47 MB memory
38
- - **i18n v10 vs baseline**: +73.33s build, +8885.14 MB memory
37
+ > **Code Bundle** = JavaScript/CSS code only (excludes translation JSON files).
38
+ > i18n-micro stores translations as lazy-loaded JSON files, keeping the code bundle minimal.
39
+
40
+ - **i18n-micro vs baseline**: +17.76s build, +0.15 MB code, +984 MB memory
41
+ - **i18n v10 vs baseline**: +79.20s build, +17.89 MB code, +8,854 MB memory
39
42
 
40
43
  #### Stress Test Results (Requests per Second)
41
44
 
42
- | Project | Avg Response | RPS | Max Memory |
43
- |---------|--------------|-----|------------|
44
- | **plain-nuxt** | 106.50 ms | 318.00 | 229.02 MB |
45
- | **i18n-micro** | 516.70 ms | 225.00 | 366.69 MB |
46
- | **i18n v10** | 1130.20 ms | 51.00 | 1050.38 MB |
45
+ | Project | Avg Response | RPS (Artillery) | Max Memory |
46
+ |---------|--------------|-----------------|------------|
47
+ | **plain-nuxt** | 544 ms | 228 | 340 MB |
48
+ | **i18n-micro** | 411 ms | 292 | 347 MB |
49
+ | **i18n v10** | 1,363 ms | 51 | 1,243 MB |
47
50
 
48
51
  #### Comparison: i18n v10 vs i18n-micro
49
52
 
50
- - **Max Memory Used**: -683.69 MB (i18n-micro uses less)
51
- - **Average Response Time**: -613.50 ms (i18n-micro is faster)
52
- - **Requests Per Second**: +174.00 (i18n-micro handles more)
53
+ - **Code Bundle**: 17.74 MB smaller (i18n-micro: 1.5 MB vs i18n v10: 19.24 MB)
54
+ - **Build Time**: 61.44s faster (i18n-micro: 23.47s vs i18n v10: 84.91s)
55
+ - **Max Memory (build)**: 7,870 MB less (i18n-micro: 1,658 MB vs i18n v10: 9,528 MB)
56
+ - **Average Response Time**: 952 ms faster (i18n-micro: 411 ms vs i18n v10: 1,363 ms)
57
+ - **Requests Per Second**: 241 more (i18n-micro: 292 vs i18n v10: 51)
53
58
 
54
59
  These results clearly demonstrate that `Nuxt I18n Micro` significantly outperforms the original module in every critical area while staying close to the plain Nuxt baseline.
55
60
 
@@ -91,6 +96,10 @@ export default defineNuxtConfig({
91
96
 
92
97
  That's it! You're now ready to use Nuxt I18n Micro in your Nuxt app.
93
98
 
99
+ ## Star History
100
+
101
+ [![Star History Chart](https://api.star-history.com/svg?repos=s00d/nuxt-i18n-micro&type=date&legend=top-left)](https://www.star-history.com/#s00d/nuxt-i18n-micro&type=date&legend=top-left)
102
+
94
103
 
95
104
  [Docs](https://s00d.github.io/nuxt-i18n-micro/)
96
105
 
@@ -1 +1 @@
1
- <!DOCTYPE html><html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><link rel="stylesheet" href="/__NUXT_DEVTOOLS_I18N_BASE__/_nuxt/entry.Kj_DYE7z.css" crossorigin><link rel="modulepreload" as="script" crossorigin href="/__NUXT_DEVTOOLS_I18N_BASE__/_nuxt/BGh93ua4.js"><script type="module" src="/__NUXT_DEVTOOLS_I18N_BASE__/_nuxt/BGh93ua4.js" crossorigin></script><link rel="prefetch" as="style" crossorigin href="/__NUXT_DEVTOOLS_I18N_BASE__/_nuxt/error-404.Gqn9dG-k.css"><link rel="prefetch" as="script" crossorigin href="/__NUXT_DEVTOOLS_I18N_BASE__/_nuxt/BHdvmNAL.js"><link rel="prefetch" as="script" crossorigin href="/__NUXT_DEVTOOLS_I18N_BASE__/_nuxt/DCzpQabR.js"><link rel="prefetch" as="style" crossorigin href="/__NUXT_DEVTOOLS_I18N_BASE__/_nuxt/error-500.B7WZZ6sx.css"><link rel="prefetch" as="script" crossorigin href="/__NUXT_DEVTOOLS_I18N_BASE__/_nuxt/DDGd_lid.js"></head><body><div id="__nuxt"></div><div id="teleports"></div><script>window.__NUXT__={};window.__NUXT__.config={public:{},app:{baseURL:"/__NUXT_DEVTOOLS_I18N_BASE__/",buildId:"87f9a27e-6790-4bcc-9e43-9e546b53a4a0",buildAssetsDir:"/_nuxt/",cdnURL:""}}</script><script type="application/json" data-nuxt-data="nuxt-app" data-ssr="false" id="__NUXT_DATA__">[{"prerenderedAt":1,"serverRendered":2},1770293874374,false]</script></body></html>
1
+ <!DOCTYPE html><html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><link rel="stylesheet" href="/__NUXT_DEVTOOLS_I18N_BASE__/_nuxt/entry.CT2N5IzL.css" crossorigin><link rel="modulepreload" as="script" crossorigin href="/__NUXT_DEVTOOLS_I18N_BASE__/_nuxt/C_iIToZW.js"><script type="module" src="/__NUXT_DEVTOOLS_I18N_BASE__/_nuxt/C_iIToZW.js" crossorigin></script></head><body><div id="__nuxt"></div><div id="teleports"></div><script>window.__NUXT__={};window.__NUXT__.config={public:{},app:{baseURL:"/__NUXT_DEVTOOLS_I18N_BASE__/",buildId:"7af9cef1-a153-4ef4-bce0-e0bffd41cb41",buildAssetsDir:"/_nuxt/",cdnURL:""}}</script><script type="application/json" data-nuxt-data="nuxt-app" data-ssr="false" id="__NUXT_DATA__">[{"prerenderedAt":1,"serverRendered":2},1770392966749,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"><link rel="stylesheet" href="/__NUXT_DEVTOOLS_I18N_BASE__/_nuxt/entry.Kj_DYE7z.css" crossorigin><link rel="modulepreload" as="script" crossorigin href="/__NUXT_DEVTOOLS_I18N_BASE__/_nuxt/BGh93ua4.js"><script type="module" src="/__NUXT_DEVTOOLS_I18N_BASE__/_nuxt/BGh93ua4.js" crossorigin></script><link rel="prefetch" as="style" crossorigin href="/__NUXT_DEVTOOLS_I18N_BASE__/_nuxt/error-404.Gqn9dG-k.css"><link rel="prefetch" as="script" crossorigin href="/__NUXT_DEVTOOLS_I18N_BASE__/_nuxt/BHdvmNAL.js"><link rel="prefetch" as="script" crossorigin href="/__NUXT_DEVTOOLS_I18N_BASE__/_nuxt/DCzpQabR.js"><link rel="prefetch" as="style" crossorigin href="/__NUXT_DEVTOOLS_I18N_BASE__/_nuxt/error-500.B7WZZ6sx.css"><link rel="prefetch" as="script" crossorigin href="/__NUXT_DEVTOOLS_I18N_BASE__/_nuxt/DDGd_lid.js"></head><body><div id="__nuxt"></div><div id="teleports"></div><script>window.__NUXT__={};window.__NUXT__.config={public:{},app:{baseURL:"/__NUXT_DEVTOOLS_I18N_BASE__/",buildId:"87f9a27e-6790-4bcc-9e43-9e546b53a4a0",buildAssetsDir:"/_nuxt/",cdnURL:""}}</script><script type="application/json" data-nuxt-data="nuxt-app" data-ssr="false" id="__NUXT_DATA__">[{"prerenderedAt":1,"serverRendered":2},1770293874375,false]</script></body></html>
1
+ <!DOCTYPE html><html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><link rel="stylesheet" href="/__NUXT_DEVTOOLS_I18N_BASE__/_nuxt/entry.CT2N5IzL.css" crossorigin><link rel="modulepreload" as="script" crossorigin href="/__NUXT_DEVTOOLS_I18N_BASE__/_nuxt/C_iIToZW.js"><script type="module" src="/__NUXT_DEVTOOLS_I18N_BASE__/_nuxt/C_iIToZW.js" crossorigin></script></head><body><div id="__nuxt"></div><div id="teleports"></div><script>window.__NUXT__={};window.__NUXT__.config={public:{},app:{baseURL:"/__NUXT_DEVTOOLS_I18N_BASE__/",buildId:"7af9cef1-a153-4ef4-bce0-e0bffd41cb41",buildAssetsDir:"/_nuxt/",cdnURL:""}}</script><script type="application/json" data-nuxt-data="nuxt-app" data-ssr="false" id="__NUXT_DATA__">[{"prerenderedAt":1,"serverRendered":2},1770392966749,false]</script></body></html>
@@ -0,0 +1 @@
1
+ import{D as r,a as o,E as u,F as c,G as d}from"./C_iIToZW.js";function h(n){const t=n||o();return t.ssrContext?.head||t.runWithContext(()=>{if(u()){const e=c(d);if(!e)throw new Error("[nuxt] [unhead] Missing Unhead instance.");return e}})}function x(n,t={}){const e=t.head||h(t.nuxt);return r(n,{head:e,...t})}const f=(n,t)=>{const e=n.__vccOpts||n;for(const[a,s]of t)e[a]=s;return e};export{f as _,x as u};