Vigia

Memperbarui i18next dari 26.x ke 27.x

Perbandingan API publik i18next 26.7.2 dan 27.0.0, dihitung otomatis dari tipe TypeScript-nya. Tanda tangan yang berubah adalah kemungkinan perubahan tidak kompatibel, bukan kepastian.

Ringkasan

Jalur impor yang dihapus0
Ekspor yang dihapus87
Tanda tangan yang berubah5
Anggota kelas atau antarmuka yang dihapus21
Anggota kelas atau antarmuka yang berubah1
Baru ditandai usang2
Perubahan persyaratan (engines, dependensi peer)1
Ekspor baru0

Ekspor yang dihapus

importexportkindSebelum
i18next_IcuArgtypeA extends `${infer Name},${infer Type},${infer Cases}` ? _IcuTrim<Type> extends "plural" | "selectordinal" ? [_IcuTrim<Name>, _IcuFormatType<_IcuTrim<Type>>] | _IcuCases<Cases, never, never>[1] : _IcuTrim<Type> extends "select" ? _IcuCases<Cases, never, never> extends [infer Keys, infer E] ? E | [_IcuTrim<Name>, "other" extends Keys ? Exclude<Keys, "other"> | (string & {}) : Keys] : never : [_IcuTrim<Name>, _IcuFormatType<_IcuTrim<Type>>] : A extends `${infer Name},${infer Type}` ? [_IcuTrim<Name>, _IcuFormatType<_IcuTrim<Type>>] : [_IcuTrim<A>, string | number]
i18next_KeysOftype[Res] extends [unknown] ? keyof Res : never
i18next_IcuTrimtypeS extends ` ${infer R}` | ` ${infer R}` | `\t${infer R}` | `\r${infer R}` ? _IcuTrim<R> : S extends `${infer R} ` | `${infer R} ` | `${infer R}\t` | `${infer R}\r` ? _IcuTrim<R> : S
i18next_Mf2NametypeS extends `${infer N} ${string}` ? _Mf2Name<N> : S extends `${infer N}/${string}` ? N : S
i18next_Mf2VarstypeS extends `${string}$${infer R}` ? _Mf2Vars<R, Acc | [_Mf2Name<R>, string | number]> : Acc
i18next_ValueOftypeKey extends _KeysOf<Res> ? Res[Key] : _IsLiteral<Key & PropertyKey> extends true ? never : Res[Key & _KeysOf<Res>]
i18next_IcuBlocktypeS extends `${infer L}}${infer R}` ? L extends `${infer L2}{${infer R2}` ? _IcuBlock<`${R2}}${R}`, `${Acc}${L2}{`, [...Depth, 0]> : Depth extends [0, ...infer D extends 0[]] ? _IcuBlock<R, `${Acc}${L}}`, D> : [`${Acc}${L}`, R] : never
i18next_IcuCasestypeS extends `${infer L}{${infer R}` ? _IcuBlock<R, "", []> extends [infer Msg, infer Rest] ? _IcuCases<Rest, Keys | _IcuTrim<L>, Acc | _IcuEntries<Msg, never>> : [Keys, Acc] : [Keys, Acc]
i18next_Mf2SpacetypeS extends `${infer L}${C}${infer R}` ? _Mf2Space<`${L} ${R}`, C> : S
i18next_HasPluraltype0 extends 1 & R ? false : [Extract<R, PluralValue<string>>] extends [never] ? false : true
i18next_IsLiteraltype{} extends Record<S, unknown> ? false : true
i18next_Mf2LocalstypeS extends `${string}.local${infer R}` ? _Mf2Locals<R, Acc | (_IcuTrim<R> extends `$${infer N}=${string}` ? _IcuTrim<N> : never)> : Acc
i18next_Mf2Spacestype_Mf2Space<_Mf2Space<_Mf2Space<S, "\n">, "\t">, "\r"> extends ` ${infer R}` | ` ${infer R}` | `\t${infer R}` | `\r${infer R}` ? _IcuTrim<R> : _Mf2Space<_Mf2Space<_Mf2Space<S, "\n">, "\t">, "\r"> extends `${infer R} ` | `${infer R} ` | `${infer R}\t` | `${infer R}\r` ? _IcuTrim<R> : _Mf2Space<_Mf2Space<_Mf2Space<S, "\n">, "\t">, "\r">
i18next_Resourcestypeobject
i18next_IcuArgsMaptypeRet extends string ? string extends Ret ? never : _ArgsFromEntries<_IcuEntries<_IcuStripQuotes<Ret, "">, never>> : never
i18next_IcuEntriestypeS extends `${string}{${infer R}` ? _IcuBlock<R, "", []> extends [infer Arg, infer Rest] ? _IcuEntries<Rest, Acc | _IcuArg<Arg>> : Acc : Acc
i18next_Mf2ArgsMaptypeRet extends string ? string extends Ret ? never : _Mf2StripEscapes<Ret, ""> extends infer S ? _ArgsFromEntries<Exclude<_Mf2Entries<S, never>, [_IcuTrim<S> extends `.${string}` ? _Mf2Locals<S, never> : never, unknown]> | Exclude<_Mf2Selectors<S>, [_IcuTrim<S> extends `.${string}` ? _Mf2Locals<S, never> : never, unknown]>> : never : never
i18next_Mf2EntriestypeS extends `${string}{${infer R}` ? R extends `{${infer Pattern}` ? _Mf2Entries<Pattern, Acc> : _Mf2Expression<R, ""> extends [infer Body, infer Rest] ? _Mf2Entries<Rest, Acc | _Mf2ExprEntries<_IcuTrim<_Mf2Space<_Mf2Space<_Mf2Space<Body, "\n">, "\t">, "\r">>>> : Acc : Acc
i18next_ReturnNulltypefalse
i18next$PluralBrandvariabletypeof $PluralBrand
i18next_DefinedKeystype[T] extends [unknown] ? keyof { [P in keyof T as [T[P]] extends [undefined] ? never : P]: true; } : never
i18next_NsSeparatortype":"
i18next_ContextBasestype[T] extends [unknown] ? _ContextPrefixes<T>[1] : never
i18next_KeySeparatortype"."
i18next_Mf2SelectorstypeS extends `${string}.match${infer R}` ? _Mf2Vars<_IcuTrim<_Mf2Space<_Mf2Space<_Mf2Space<R extends `${infer Sel}{${string}` ? Sel : R, "\n">, "\t">, "\r">>, never> : never
i18next_NonNeverKeystype{ [K in keyof T]: [T[K]] extends [never] ? never : K; }[keyof T]
i18next_PerPropMergetype{ [K in keyof L | keyof R]: K extends keyof L ? K extends keyof R ? L[K] & R[K] : L[K] : K extends keyof R ? R[K] : never; }
i18next_PrimaryParsetype(ActualKey extends `${infer K1}.${infer RestKey}` ? ParseTReturnWithFallback<RestKey, RestKey extends `${infer K1}.${infer RestKey}` ? ParseTReturnWithFallback<RestKey, RestKey extends `${infer K1}.${infer RestKey}` ? ParseTReturnWithFallback<RestKey, RestKey extends `${infer K1}.${infer RestKey}` ? ParseTReturnWithFallback<RestKey, RestKey extends `${infer K1}.${infer RestKey}` ? ParseTReturnWithFallback<RestKey, RestKey extends `${infer K1}.${infer RestKey}` ? ParseTReturnWithFallback<RestKey, RestKey extends `${infer K1}.${infer RestKey}` ? ParseTReturnWithFallback<RestKey, RestKey extends …
i18next_CountIfPluraltype_HasPlural<R> extends true ? { count: number; } : {}
i18next_FallbackParsetype[FallbackResourcesOf<FallbackNS, $Dictionary<string>>] extends [never] ? never : ParseTReturnWithFallback<ActualKey, ActualKey extends `${infer K1}.${infer RestKey}` ? ParseTReturnWithFallback<RestKey, RestKey extends `${infer K1}.${infer RestKey}` ? ParseTReturnWithFallback<RestKey, RestKey extends `${infer K1}.${infer RestKey}` ? ParseTReturnWithFallback<RestKey, RestKey extends `${infer K1}.${infer RestKey}` ? ParseTReturnWithFallback<RestKey, RestKey extends `${infer K1}.${infer RestKey}` ? ParseTReturnWithFallback<RestKey, RestKey extends `${infer K1}.${infer RestKey}` ? ParseTReturnWithF…
i18next_HasDefinedKeytype[false extends (Pattern extends unknown ? _IsLiteral<Pattern> : never) ? keyof _DefinedContextKeys<T, Pattern> : Extract<Pattern, _DefinedKeys<T>>] extends [never] ? false : true
i18next_IcuFormatTypetype[F] extends [never] ? string | number : F extends never ? {}[F] : F extends "number" | "plural" | "selectordinal" ? number : F extends "date" | "time" ? Date : string | number
i18next_IcuSkipQuotedtypeS extends `${string}'${infer R}` ? R extends `'${infer R2}` ? _IcuSkipQuoted<R2> : R : ""
i18next_IcuWhitespacetype" " | "\n" | "\t" | "\r"
i18next_KeyAndOptionstype[key: Key | Key[], options?: Opts | undefined]
i18next_Mf2ExpressiontypeS extends `${infer B}}${infer Rest}` ? B extends `${infer Before}|${infer Lit}` ? `${Lit}}${Rest}` extends `${string}|${infer After}` ? _Mf2Expression<After, `${Acc}${Before} `> : never : [`${Acc}${B}`, Rest] : never
i18next_ReturnObjectstypefalse
i18next$FirstNamespacetypeNs extends readonly any[] ? Ns[0] : Ns
i18next_EnableSelectortypefalse
i18next_IcuStripQuotestypeS extends `${infer L}'${infer R}` ? R extends `'${infer R2}` ? _IcuStripQuotes<R2, `${Acc}${L}`> : R extends `{${string}` | `}${string}` | `<${string}` | `>${string}` | `#${string}` ? _IcuStripQuotes<_IcuSkipQuoted<R>, `${Acc}${L}`> : _IcuStripQuotes<R, `${Acc}${L}'`> : `${Acc}${S & string}`
i18next_Mf2ExprEntriestypeBody extends `$${infer R}` ? R extends `${infer Name} ${infer Tail}` ? [Name, _Mf2FunctionType<_IcuTrim<Tail> extends `:${infer F}` ? _Mf2Name<F> : never>] | _Mf2Vars<Tail, never> : [_Mf2Name<R>, string | number] : _Mf2Vars<Body, never>
i18next_UnescapePrefixtype"-"
i18next_UnescapeSuffixtype""
i18next_ArgsFromEntriestype_UnionToIntersection<E extends [infer Name extends string, infer Type] ? Name extends `${string}.${string}` ? $StringKeyPathToRecord<Name, Type> : { [K in Name]: Type; } : never> extends infer M ? [E] extends [never] ? never : { [K in keyof M]: M[K]; } : never
i18next_ContextPrefixestype[T] extends [unknown] ? _ContextPrefixesOf<_DefinedKeys<T> & string, "", never, never> : never
i18next_IsContextualKeytype_IsLiteral<K> extends true ? K extends _ContextBases<T> ? true : false : [Exclude<keyof _DefinedContextKeys<T, `${K}_${string}`>, `${K}_zero` | `${K}_one` | `${K}_two` | `${K}_few` | `${K}_many` | `${K}_other` | `${K}_ordinal_zero` | `${K}_ordinal_one` | `${K}_ordinal_two` | `${K}_ordinal_few` | `${K}_ordinal_many` | `${K}_ordinal_other`>] extends [never] ? false : true
i18next_LegacyResourcestypeobject
i18next_MergeNamespacestype{ [K in keyof L | keyof R]: K extends keyof L ? K extends keyof R ? _DropConflictKeys<_PerPropMerge<L[K], R[K]>> : L[K] : K extends keyof R ? R[K] : never; }
i18next_MergedResourcestypeobject
i18next_Mf2FunctionTypetype[F] extends [never] ? string | number : F extends never ? {}[F] : F extends "number" | "currency" | "integer" | "percent" | "offset" | "unit" | "math" ? number : F extends "datetime" | "date" | "time" ? Date : F extends "string" ? string : string | number
i18next_Mf2StripEscapestypeS extends `${infer L}\\${string}${infer R}` ? _Mf2StripEscapes<R, `${Acc}${L}`> : `${Acc}${S & string}`
i18next_PluralSeparatortype"_"
i18next_SelectorsReturntypeFns[number] extends (...args: any[]) => infer R ? R : never
i18next_StrictKeyCheckstypefalse
i18next$SelectorKeyBrandvariabletypeof $SelectorKeyBrand
i18next_ContextSeparatortype"_"
i18next_DefaultVariablestype{}
i18next_DropConflictKeystype{ [P in _NonNeverKeys<T>]: T[P]; }
i18next_NsResourceStricttypeNs extends readonly any[] ? PickNamespaces<$Dictionary<string>, Ns[number]> : PickNamespaces<$Dictionary<string>, Ns & (string | number)>
i18next_ResolveEntryTypetype[Format] extends [never] ? Name extends "count" ? number : string | number : Format extends never ? {}[Format] : _StripFormatOptions<Format> extends never ? never : Format extends keyof _BuiltInFormatTypeMap ? _BuiltInFormatTypeMap[Format] : _StripFormatOptions<Format> extends keyof _BuiltInFormatTypeMap ? _BuiltInFormatTypeMap[_StripFormatOptions<Format> & keyof _BuiltInFormatTypeMap] : string
i18next_CompatibilityJSONtype"v4"
i18next_ContextPrefixesOftypeP extends `${infer B}_${string}` ? P extends `${B}${infer FromSep}` ? FromSep extends `${infer C}${infer Rest}` ? _ContextPrefixesOf<Rest, `${Head}${B}${C}`, All | `${Head}${B}`, FromSep extends "_zero" | "_one" | "_two" | "_few" | "_many" | "_other" | "_ordinal_zero" | "_ordinal_one" | "_ordinal_two" | "_ordinal_few" | "_ordinal_many" | "_ordinal_other" ? Bases : Bases | `${Head}${B}`> : [All, Bases] : [All, Bases] : [All, Bases]
i18next_FallbackNamespacetypefalse
i18next_HasContextVarianttypestring extends Context ? _IsLiteral<K> extends true ? K extends _AllContextPrefixes<T> ? true : false : _HasDefinedKey<T, `${K}_${string}`> : _HasDefinedKey<T, `${K}_${Context & string}` | `${K}_${Context & string}_zero` | `${K}_${Context & string}_one` | `${K}_${Context & string}_two` | `${K}_${Context & string}_few` | `${K}_${Context & string}_many` | `${K}_${Context & string}_other`>
i18next_IfOptionalOptionstypeunknown
i18next_ReturnEmptyStringtypetrue
i18next$IsResourcesDefinedtypefalse
i18next_AllContextPrefixestype[T] extends [unknown] ? _ContextPrefixes<T>[0] : never
i18next_DefinedContextKeystype{ [P in keyof T as P extends Pattern ? [T[P]] extends [undefined] ? never : P : never]: true; }
i18next_ParseInterpolationtypetrue
i18next_SelectorOptionsArgtype[options?: Opts | undefined]
i18next_StripFormatOptionstypeF extends `${infer Name}(${string})` ? Name : F
i18next_InterpolationPrefixtype"{{"
i18next_InterpolationSuffixtype"}}"
i18next_ParsesMessageFormattypefalse
i18next_UnionToIntersectiontype(T extends unknown ? (k: T) => void : never) extends (k: infer I) => void ? I : never
i18next_BuiltInFormatTypeMaptype{ number: number; currency: number; datetime: Date; relativetime: number; list: readonly string[]; }
i18next_KeysWithoutVariablestypeKey extends string ? Key : never
i18next_WithDefaultVariablestypeMap
i18next_RequiresMessageOptionstypefalse
i18next$ValueIfResourcesDefinedtypeFallback
i18next_SelectorArrayOptionsArgtype_HasPlural<R> extends true ? [options: Opts & { count: number; } & $PreservedValue<_UnionToIntersection<(DeepUnwrapPlural<R> extends `${string}{{${infer Value}}}${infer Rest}` ? (Value extends `${infer ActualValue},${infer Format}` ? [ParseActualValue<ActualValue>, TrimSpaces<Format, "">] : [ParseActualValue<Value>, never]) | (Rest extends `${string}{{${infer Value}}}${infer Rest}` ? any : never) : never) extends [infer Name extends string, infer Format] ? $UnionToIntersection<$StringKeyPathToRecordUnion<Name, _ResolveEntryType<Name, Format>>> : never>, Record<string, unknown>>] : [options?: (…
i18next_IfOptionalDefaultOptionstypeunknown
i18next_StrictInterpolationCheckstypefalse
i18next_InterpolationFormatTypeMaptype{}
i18next_InterpolationMapFromEntriestype((E extends [infer Name extends string, infer Format] ? $StringKeyPathToRecord<Name, _ResolveEntryType<Name, Format>> : never) extends unknown ? (k: E extends [infer Name extends string, infer Format] ? $StringKeyPathToRecord<Name, _ResolveEntryType<Name, Format>> : never) => void : never) extends (k: infer I) => void ? I : never
i18next_InterpolationFormatSeparatortype","

Tanda tangan yang berubah

exportSebelumSesudah
i18next · t<const Key extends ParseKeys<["translation", ...string[]], TOpt, EffectiveKPrefix<undefined, TOpt>> | TemplateStringsArray, const TOpt extends TOptions, Ret extends TOpt["returnObjects"] extends true ? $SpecialObject : string, const ActualOptions extends Omit<TOpt, "context"> & $PreservedValue<_UnionToIntersection<(Ret extends `${string}{{${infer Value}}}${infer Rest}` ? (Value extends `${infer ActualValue},${infer Format}` ? [ParseActualValue<ActualValue>, TrimSpaces<Format, "">] : [ParseActualValue<Value>, never]) | (Rest extends `${string}{{${infer Value}}}${infer Rest}` ? any : never) : ne…<const Key extends ParseKeys<["translation", ...string[]], TOpt, EffectiveKPrefix<undefined, TOpt>> | TemplateStringsArray, const TOpt extends TOptions, Ret extends TOpt["returnObjects"] extends true ? $SpecialObject : string, const ActualOptions extends Omit<TOpt, "context"> & $PreservedValue<_UnionToIntersection<($NoInfer<string extends Ret ? _CheckedValue<["translation", ...string[]], AppendKeyPrefix<Key, EffectiveKPrefix<undefined, TOpt>>, TOpt> : Ret> extends `${string}{{${infer Value}}}${infer Rest}` ? (Value extends `${infer ActualValue},${infer Format}` ? [ParseActualValue<ActualValue>…
i18next · TypeOptionsOmit<$MergeBy<{ returnNull: false; returnEmptyString: true; returnObjects: false; keySeparator: "."; nsSeparator: ":"; pluralSeparator: "_"; contextSeparator: "_"; defaultNS: "translation"; fallbackNS: false; compatibilityJSON: "v4"; resources: object; allowObjectInHTMLChildren: false; strictKeyChecks: false; strictInterpolationChecks: false; interpolationPrefix: "{{"; interpolationSuffix: "}}"; interpolationFormatSeparator: ","; unescapePrefix: "-"; unescapeSuffix: ""; parseInterpolation: true; enableSelector: false; interpolationFormatTypeMap: {}; defaultVariables: {}; }, CustomTypeOptions>,…Omit<$MergeBy<{ returnNull: false; returnEmptyString: false; returnObjects: false; keySeparator: "."; nsSeparator: ":"; pluralSeparator: "_"; contextSeparator: "_"; defaultNS: "translation"; fallbackNS: false; resources: object; allowObjectInHTMLChildren: false; strictKeyChecks: false; strictInterpolationChecks: true; interpolationPrefix: "{{"; interpolationSuffix: "}}"; interpolationFormatSeparator: ","; unescapePrefix: "-"; unescapeSuffix: ""; parseInterpolation: true; enableSelector: false; interpolationFormatTypeMap: {}; defaultVariables: {}; }, CustomTypeOptions>, "resources"> & { resourc…
i18next · ParseTReturnWithFallbackVal extends "" ? "" : Val extends null ? Key : ValVal extends "" ? Key : Val extends null ? Key : Val
i18next · ParseKeysWithoutVariablesstring{} extends $PreservedValue<_UnionToIntersection<(_CheckedValue<Ns, AppendKeyPrefix<string, KPrefix>, {}> extends `${string}{{${infer Value}}}${infer Rest}` ? (Value extends `${infer ActualValue},${infer Format}` ? [ParseActualValue<ActualValue>, TrimSpaces<Format, "">] : [ParseActualValue<Value>, never]) | (Rest extends `${string}{{${infer Value}}}${infer Rest}` ? any : never) : never) extends [infer Name extends string, infer Format] ? $UnionToIntersection<$StringKeyPathToRecordUnion<Name, _ResolveEntryType<Name, Format>>> : never>, Record<string, unknown>> ? string : never
i18next · KeysBuilderWithReturnObjectsKey extends _KeysOf<Res> ? Res[Key] extends $Dictionary | readonly unknown[] ? `${Key & string}.${(keyof $OmitArrayKeys<Res[Key]> extends `${infer KeyWithoutOrdinalPlural}_ordinal_zero` | `${infer KeyWithoutOrdinalPlural}_ordinal_one` | `${infer KeyWithoutOrdinalPlural}_ordinal_two` | `${infer KeyWithoutOrdinalPlural}_ordinal_few` | `${infer KeyWithoutOrdinalPlural}_ordinal_many` | `${infer KeyWithoutOrdinalPlural}_ordinal_other` ? KeyWithoutOrdinalPlural | ((`${KeyWithoutOrdinalPlural}_ordinal_zero` | `${KeyWithoutOrdinalPlural}_ordinal_one` | `${KeyWithoutOrdinalPlural}_ordinal_two` | `${Key…Key extends _KeysOf<Res> ? Res[Key] extends $Dictionary | readonly unknown[] ? `${Key & string}.${WithOrWithoutPlural<keyof $OmitArrayKeys<Res[Key]>> & string}` | `${Key & string}.${KeysBuilderWithReturnObjects<Res[Key], keyof Res[Key]> & string}` : never : never

Anggota kelas atau antarmuka yang dihapus

memberimportSebelum
InitOptions.locizeLastUsedi18next{ projectId: string; apiKey?: string | undefined; referenceLng?: string | undefined; version?: string | undefined; debounceSubmit?: number | undefined; allowedHosts?: readonly string[] | undefined; } | undefined
InitOptions.compatibilityJSONi18next"v4" | undefined
CloneOptions.locizeLastUsedi18next{ projectId: string; apiKey?: string | undefined; referenceLng?: string | undefined; version?: string | undefined; debounceSubmit?: number | undefined; allowedHosts?: readonly string[] | undefined; } | undefined
CloneOptions.compatibilityJSONi18next"v4" | undefined
ReactOptions.nsModei18next"fallback" | "default" | undefined
ReactOptions.bindI18ni18nextstring | false | undefined
ReactOptions.unescapei18next((str: string) => string) | undefined
ReactOptions.keyPrefixi18nextstring | (($: any) => any) | undefined
ReactOptions.useSuspensei18nextboolean | undefined
ReactOptions.hashTransKeyi18next((defaultValue: unknown) => unknown) | undefined
ReactOptions.bindI18nStorei18nextstring | false | undefined
ReactOptions.transDefaultPropsi18next{ tOptions?: TOptions<$Dictionary> | undefined; values?: object | undefined; shouldUnescape?: boolean | undefined; components?: readonly unknown[] | { readonly [tagName: string]: unknown; } | undefined; } | undefined
ReactOptions.defaultTransParenti18nextstring | undefined
ReactOptions.transWrapTextNodesi18nextstring | undefined
ReactOptions.transEmptyNodeValuei18nextstring | undefined
ReactOptions.transKeepBasicHtmlNodesFori18nextreadonly string[] | undefined
ReactOptions.transSupportBasicHtmlNodesi18nextboolean | undefined
InterpolationOptions.prefixEscapedi18nextstring | undefined
InterpolationOptions.suffixEscapedi18nextstring | undefined
InterpolationOptions.nestingPrefixEscapedi18nextstring | undefined
InterpolationOptions.nestingSuffixEscapedi18nextstring | undefined

Anggota kelas atau antarmuka yang berubah

memberSebelumSesudah
WithT.t<const Key extends ParseKeys<Ns, TOpt, EffectiveKPrefix<undefined, TOpt>> | TemplateStringsArray, const TOpt extends TOptions, Ret extends TOpt["returnObjects"] extends true ? $SpecialObject : string, const ActualOptions extends Omit<TOpt, "context"> & $PreservedValue<_UnionToIntersection<(Ret exten…<const Key extends ParseKeys<Ns, TOpt, EffectiveKPrefix<undefined, TOpt>> | TemplateStringsArray, const TOpt extends TOptions, Ret extends TOpt["returnObjects"] extends true ? $SpecialObject : string, const ActualOptions extends Omit<TOpt, "context"> & $PreservedValue<_UnionToIntersection<($NoInfer<…

Baru ditandai usang

export@deprecated
i18next · InitOptions.cleanCodecanonical codes are the default since v27
i18next · CloneOptions.cleanCodecanonical codes are the default since v27

Perubahan persyaratan (engines, dependensi peer)

SebelumSesudah
engines.node—>=22

Berikan fakta ini ke agen AI Anda

Vigia adalah server MCP gratis: agen coding Anda memeriksa versi, perubahan yang merusak kompatibilitas, dan kerentanan sebelum menulis kode. Tanpa pendaftaran, tanpa kunci API.

claude mcp add --transport http vigia https://vigia.coredls.cloud/mcp

Tambahkan ke CursorTambahkan ke VS Code★ Bintang di GitHub

Klien MCP lainnya
{ "mcpServers": { "vigia": { "url": "https://vigia.coredls.cloud/mcp" } } }

Skill agen (SKILL.md): memberi tahu agen kapan memakai Vigia · GitHub Action untuk pull request

Pertanyaan umum

Apa saja perubahan tidak kompatibel saat memperbarui i18next dari 26 ke 27?

Antara i18next 26.7.2 dan 27.0.0, Vigia menemukan 87 ekspor yang dihapus, 5 tanda tangan yang berubah, dan 22 anggota kelas atau antarmuka yang dihapus atau berubah.

Apa yang ditandai usang di i18next 27?

2 ekspor atau anggota baru ditandai usang di i18next 27.0.0.

Untuk agen

GET https://vigia.coredls.cloud/v1/packages/npm/i18next/upgrade?from=26.7.2&to=27.0.0