Vigia

Обновление i18next с 26.x до 27.x

Сравнение публичного API i18next 26.7.2 и 27.0.0, вычисленное автоматически по их типам TypeScript. Изменённая сигнатура — возможное несовместимое изменение, а не гарантия.

Сводка

Удалённые пути импорта0
Удалённые экспорты87
Изменённые сигнатуры5
Удалённые члены классов или интерфейсов21
Изменённые члены классов или интерфейсов1
Новые устаревания2
Изменения требований (engines, peer-зависимости)1
Новые экспорты0

Удалённые экспорты

importexportkindБыло
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","

Изменённые сигнатуры

exportБылоСтало
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

Удалённые члены классов или интерфейсов

memberimportБыло
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

Изменённые члены классов или интерфейсов

memberБылоСтало
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<…

Новые устаревания

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

Изменения требований (engines, peer-зависимости)

БылоСтало
engines.node—>=22

Передайте эти данные своему ИИ-агенту

Vigia — бесплатный MCP-сервер: ваш агент для программирования проверяет версии, несовместимые изменения и уязвимости до того, как напишет код. Без регистрации и API-ключа.

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

Добавить в CursorДобавить в VS Code★ Звезда на GitHub

Любой другой MCP-клиент
{ "mcpServers": { "vigia": { "url": "https://vigia.coredls.cloud/mcp" } } }

Навык для агентов (SKILL.md): подсказывает агенту, когда использовать Vigia · GitHub Action для pull request

Часто задаваемые вопросы

Какие несовместимые изменения при обновлении i18next с 26 до 27?

Между i18next 26.7.2 и 27.0.0 Vigia нашла удалённых экспортов: 87, изменённых сигнатур: 5, удалённых или изменённых членов классов и интерфейсов: 22.

Что устарело в i18next 27?

В i18next 27.0.0 новыми устаревшими помечено экспортов или членов: 2.

Для агентов

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