From 727dba2d913d6f958c56b087b997c6b37f2546fc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Torma=20G=C3=A1bor?= <11255009+GaborTorma@users.noreply.github.com> Date: Fri, 3 Nov 2023 02:39:20 +0100 Subject: [PATCH] feat: remove `jsTsFormatResource` experimental (#2531) * feat: support disableWarning option for experimental * fix: remove jsTsFormatResource from experimental --- docs/content/2.guide/8.lazy-load-translations.md | 4 ---- docs/content/3.options/10.misc.md | 14 ++------------ docs/content/3.options/9.runtime-config.md | 12 ------------ playground/nuxt.config.ts | 6 ------ specs/fixtures/inline_options/nuxt.config.ts | 3 --- specs/fixtures/issues/2000/nuxt.config.ts | 3 --- specs/fixtures/issues/2151/nuxt.config.ts | 3 --- specs/fixtures/lazy/nuxt.config.ts | 3 --- src/constants.ts | 4 +--- src/module.ts | 7 +------ src/runtime/internal.ts | 14 ++------------ src/types.ts | 4 +--- 12 files changed, 7 insertions(+), 70 deletions(-) diff --git a/docs/content/2.guide/8.lazy-load-translations.md b/docs/content/2.guide/8.lazy-load-translations.md index 55fdfacdd..73e6360d8 100755 --- a/docs/content/2.guide/8.lazy-load-translations.md +++ b/docs/content/2.guide/8.lazy-load-translations.md @@ -77,10 +77,6 @@ If your function returns an object of locale messages, **you must define it in t About `defineI18nLocale` details, see the [here](/api/composables#defineI18nLocale). :: -::alert{type="warn"} -Support for JS/TS format resources is an experimental feature and is disabled by default, to enable this set the `experimental.jsTsFormatResource` module option to `true`. -:: - ::alert{type="info"} If the function returns an Object available in nuxt i18n module, you can configure the dynamic locale messages, like the API (including external API) or back-end, via fetch: diff --git a/docs/content/3.options/10.misc.md b/docs/content/3.options/10.misc.md index 60134f997..a73c8be60 100644 --- a/docs/content/3.options/10.misc.md +++ b/docs/content/3.options/10.misc.md @@ -7,19 +7,9 @@ Miscellaneous options. ## `experimental` - type: `object` -- default: `{ jsTsFormatResource: false }` - -Configure the flag for experimental features of the nuxt i18n module. - -::alert{type="info"} -This property can also be set using [`runtimeConfig`](./runtime-config). -:: - -Supported properties: - -- `jsTsFormatResource` (default: `false`) - Allow the format `js` and `ts` for locale messages in lazy load translation. - +- default: `{}` +Currently no experimental options are available. ## `customBlocks` - type: `object` diff --git a/docs/content/3.options/9.runtime-config.md b/docs/content/3.options/9.runtime-config.md index 174a69e51..d3f8dce5a 100644 --- a/docs/content/3.options/9.runtime-config.md +++ b/docs/content/3.options/9.runtime-config.md @@ -16,17 +16,11 @@ export default defineNuxtConfig({ i18n: { // Leave options unset that you want to set using `runtimeConfig` // baseUrl: 'https://example.com', - // experimental: { - // jsTsFormatResource: true, - // }, }, runtimeConfig: { public: { i18n: { baseUrl: 'https://example.com', - experimental: { - jsTsFormatResource: true, - }, locales: {}, // other options ... } @@ -62,12 +56,6 @@ This runtime config option is the same as the [`baseUrl`](./routing#baseUrl) mod Note that the `baseUrl` module option allows you to set the function, but the runtime config does not due to limitations. :: -### `experimental` -* property: `experimental.jsTsFormatResource` -* key: `NUXT_PUBLIC_I18N_EXPERIMENTAL_JS_TS_FORMAT_RESOURCE` - -This runtime config option is the same as the [`experimental`](./misc#experimental) module option. - ### `locales` * property: `locales[code].domain` * key: `NUXT_PUBLIC_I18N_LOCALES_{code}_DOMAIN` diff --git a/playground/nuxt.config.ts b/playground/nuxt.config.ts index 58b15195a..894c15b11 100644 --- a/playground/nuxt.config.ts +++ b/playground/nuxt.config.ts @@ -20,9 +20,6 @@ export default defineNuxtConfig({ [ '@nuxtjs/i18n', { - experimental: { - jsTsFormatResource: true - }, compilation: { strictMessage: false, escapeHtml: true @@ -110,9 +107,6 @@ export default defineNuxtConfig({ // }, // debug: true, i18n: { - experimental: { - jsTsFormatResource: true - }, compilation: { // jit: false, strictMessage: false, diff --git a/specs/fixtures/inline_options/nuxt.config.ts b/specs/fixtures/inline_options/nuxt.config.ts index 6dcabfc15..9712bcec9 100644 --- a/specs/fixtures/inline_options/nuxt.config.ts +++ b/specs/fixtures/inline_options/nuxt.config.ts @@ -11,9 +11,6 @@ export default defineNuxtConfig({ lazy: false, langDir: 'lang', defaultLocale: 'en', - experimental: { - jsTsFormatResource: true - }, detectBrowserLanguage: false, locales: [ { diff --git a/specs/fixtures/issues/2000/nuxt.config.ts b/specs/fixtures/issues/2000/nuxt.config.ts index b334a369a..6e3c588d4 100644 --- a/specs/fixtures/issues/2000/nuxt.config.ts +++ b/specs/fixtures/issues/2000/nuxt.config.ts @@ -9,9 +9,6 @@ export default defineNuxtConfig({ }, i18n: { - experimental: { - jsTsFormatResource: true - }, defaultLocale: 'en', langDir: 'locales', lazy: true, diff --git a/specs/fixtures/issues/2151/nuxt.config.ts b/specs/fixtures/issues/2151/nuxt.config.ts index 43e8c1b80..cce21a5ab 100644 --- a/specs/fixtures/issues/2151/nuxt.config.ts +++ b/specs/fixtures/issues/2151/nuxt.config.ts @@ -24,9 +24,6 @@ export default defineNuxtConfig({ ], strategy: 'prefix', defaultLocale: 'en', - experimental: { - jsTsFormatResource: true - }, // debug: true, detectBrowserLanguage: { useCookie: true, diff --git a/specs/fixtures/lazy/nuxt.config.ts b/specs/fixtures/lazy/nuxt.config.ts index 136866ca9..049857c0b 100644 --- a/specs/fixtures/lazy/nuxt.config.ts +++ b/specs/fixtures/lazy/nuxt.config.ts @@ -8,9 +8,6 @@ export default defineNuxtConfig({ // langDir: 'lang', // defaultLocale: 'fr', detectBrowserLanguage: false, - experimental: { - jsTsFormatResource: true - }, compilation: { strictMessage: false }, diff --git a/src/constants.ts b/src/constants.ts index c95d15db9..b95223dbf 100644 --- a/src/constants.ts +++ b/src/constants.ts @@ -35,9 +35,7 @@ export const REDIRECT_ON_OPTIONS = { export const COMPONENT_OPTIONS_KEY = 'nuxtI18n' export const DEFAULT_OPTIONS = { - experimental: { - jsTsFormatResource: false - }, + experimental: {}, bundle: { compositionOnly: true, runtimeOnly: false, diff --git a/src/module.ts b/src/module.ts index 84d99c3e1..2d95c2084 100644 --- a/src/module.ts +++ b/src/module.ts @@ -61,10 +61,6 @@ export default defineNuxtModule({ applyOptionOverrides(options, nuxt) debug('options', options) - if (options.experimental.jsTsFormatResource) { - logger.warn('JS / TS extension format is an experimental feature') - } - if (!options.compilation.jit) { logger.warn( 'Opt-out JIT compilation. ' + @@ -136,7 +132,6 @@ export default defineNuxtModule({ // for public nuxt.options.runtimeConfig.public.i18n = defu(nuxt.options.runtimeConfig.public.i18n, { - experimental: options.experimental, baseUrl: options.baseUrl, locales: options.locales.reduce( (obj, locale) => { @@ -337,7 +332,7 @@ export default defineNuxtModule({ type MaybePromise = T | Promise type LocaleSwitch = { oldLocale: T; newLocale: T } -type ModulePublicRuntimeConfig = Pick, 'baseUrl' | 'experimental'> +type ModulePublicRuntimeConfig = Pick, 'baseUrl'> declare module '@nuxt/schema' { interface NuxtConfig { diff --git a/src/runtime/internal.ts b/src/runtime/internal.ts index 0f3fa1f08..d7790551a 100644 --- a/src/runtime/internal.ts +++ b/src/runtime/internal.ts @@ -119,23 +119,13 @@ type LocaleLoader = { key: string; load: () => Promise; cache: boolean } const loadedMessages = new Map>() async function loadMessage(context: NuxtApp, { key, load }: LocaleLoader, locale: Locale) { - const i18nConfig = context.$config.public?.i18n as { experimental?: { jsTsFormatResource?: boolean } } - let message: LocaleMessages | null = null try { __DEBUG__ && console.log('loadMessage: (locale) -', locale) const getter = await load().then(r => r.default || r) if (isFunction(getter)) { - if (i18nConfig.experimental?.jsTsFormatResource) { - message = await getter(locale) - __DEBUG__ && console.log('loadMessage: dynamic load', message) - } else { - console.warn( - formatMessage( - 'JS / TS extension format is not supported by default. This can be enabled by setting `i18n.experimental.jsTsFormatResource: true` (experimental)' - ) - ) - } + message = await getter(locale) + __DEBUG__ && console.log('loadMessage: dynamic load', message) } else { message = getter if (message != null) { diff --git a/src/types.ts b/src/types.ts index 4b4369016..c1401b646 100644 --- a/src/types.ts +++ b/src/types.ts @@ -69,9 +69,7 @@ export type CustomRoutePages = { } } -export interface ExperimentalFeatures { - jsTsFormatResource?: boolean -} +export interface ExperimentalFeatures {} export interface BundleOptions extends Pick<