@sheet-i18n/react-client 1.6.0-canary.0 → 1.6.0-canary.10

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.
package/dist/index.d.mts CHANGED
@@ -1,34 +1,37 @@
1
1
  import { I18nStore } from '@sheet-i18n/react-core';
2
- import { ObserverManager } from '@sheet-i18n/shared-utils';
3
- import { MessageDescriptor, IntlShape } from 'react-intl';
4
2
  import * as react_jsx_runtime from 'react/jsx-runtime';
3
+ import { ObserverManager } from '@sheet-i18n/shared-utils';
4
+ import * as react from 'react';
5
5
 
6
- interface IStorageService<V extends string> {
7
- getItem(key: string): V;
8
- setItem(key: string, value: V): boolean;
9
- removeItem(key: string): boolean;
10
- clear(): boolean;
6
+ type IntlProviderProps<TSupportedLocales extends readonly string[], TLocaleSet extends Partial<Record<TSupportedLocales[number], Record<string, any>>>, TTypeSafe extends boolean = false> = {
7
+ i18nStore: I18nStore<TSupportedLocales, TLocaleSet, TTypeSafe>;
8
+ currentLocale?: TSupportedLocales[number];
9
+ children: React.ReactNode;
10
+ };
11
+ declare function IntlProvider<TSupportedLocales extends readonly string[], TLocaleSet extends Partial<Record<TSupportedLocales[number], Record<string, any>>>, TTypeSafe extends boolean = false>({ i18nStore, currentLocale, children, }: IntlProviderProps<TSupportedLocales, TLocaleSet, TTypeSafe>): react_jsx_runtime.JSX.Element;
12
+
13
+ interface Message {
11
14
  }
12
- /**
13
- * locale storage manager
14
- * implements ILocaleStorageManager (injected StorageService)
15
- */
16
- interface ILocaleStorageManager<TSupportedLocales extends readonly string[]> {
17
- getLocale(): TSupportedLocales[number];
18
- setLocale(locale: TSupportedLocales[number]): void;
15
+ type MessageIds = Message extends {
16
+ ids: infer T;
17
+ } ? T extends string ? T : string : string;
18
+ interface MessageDescriptor {
19
+ id?: MessageIds;
20
+ description?: string | object;
21
+ defaultMessage?: any[];
19
22
  }
20
- declare class LocaleStorageManager<TSupportedLocales extends readonly string[], TLocaleSet extends Partial<Record<TSupportedLocales[number], Record<string, any>>>, TTypeSafe extends boolean = false> implements ILocaleStorageManager<TSupportedLocales> {
21
- private readonly storageService;
22
- private readonly i18nStore;
23
- private readonly localeStorageKey;
24
- observerManager: ObserverManager<TSupportedLocales[number]>;
25
- constructor(storageService: IStorageService<TSupportedLocales[number]>, i18nStore: I18nStore<TSupportedLocales, TLocaleSet, TTypeSafe>, localeStorageKey?: string);
26
- private initializeCurrentLocale;
27
- getLocale: () => TSupportedLocales[number];
28
- setLocale: (locale: TSupportedLocales[number]) => void;
23
+ type PrimitiveType = string | number | boolean | null | undefined | Date;
24
+ type FormatXMLElementFn<T, R = string | T | (string | T)[]> = (parts: Array<string | T>) => R;
25
+ interface ParserOptions {
26
+ ignoreTag?: boolean;
27
+ requiresOtherClause?: boolean;
28
+ shouldParseSkeletons?: boolean;
29
+ captureLocation?: boolean;
29
30
  }
30
-
31
- type UseIntlParams<D = MessageDescriptor> = Parameters<IntlShape['$t']> extends [D, ...infer R] ? [...R, Omit<D, 'id'>] : never;
31
+ interface Options extends ParserOptions {
32
+ }
33
+ type $T<T extends unknown = unknown> = (this: void, descriptor: MessageDescriptor, values?: Record<string, PrimitiveType | T | FormatXMLElementFn<T>>, opts?: Options) => string | T | (T | string)[];
34
+ type UseIntlParams<D = MessageDescriptor> = Parameters<$T> extends [D, ...infer R] ? [...R, Omit<D, 'id'>] : never;
32
35
  type ExtendedUseIntlParams<D = MessageDescriptor> = UseIntlParams<D> extends [infer A, infer B, ...infer Rest] ? A extends Record<string, infer V> ? [Record<string, V | React.ReactNode>, B, ...Rest] : [A, B, ...Rest] : UseIntlParams<D>;
33
36
  type $TParams = Partial<ExtendedUseIntlParams>;
34
37
  /**
@@ -51,29 +54,48 @@ type RuleKey = string;
51
54
  type RuleFn<TSupportedLocales extends SupportedLocales, TLocaleSet extends LocaleSet, TI18nStore extends I18nStore<TSupportedLocales, TLocaleSet, TTypeSafe>, TTypeSafe extends TypeSafe, TSheetTitle extends SafeSheetTitle<TSupportedLocales, TLocaleSet, TTypeSafe>, TMessageId extends SafeMessageId<TSupportedLocales, TLocaleSet, TSheetTitle, TTypeSafe>, TValues = any> = (values: TValues, currentLocaleSet: ReturnType<TI18nStore['getCurrentLocaleSet']>) => TMessageId;
52
55
  type Rules<TSupportedLocales extends SupportedLocales = SupportedLocales, TLocaleSet extends LocaleSet = LocaleSet, TTypeSafe extends TypeSafe = TypeSafe, TI18nStore extends I18nStore<TSupportedLocales, TLocaleSet, TTypeSafe> = I18nStore<TSupportedLocales, TLocaleSet, TTypeSafe>, TSheetTitle extends SafeSheetTitle<TSupportedLocales, TLocaleSet, TTypeSafe> = SafeSheetTitle<TSupportedLocales, TLocaleSet, TTypeSafe>, TMessageId extends SafeMessageId<TSupportedLocales, TLocaleSet, TSheetTitle, TTypeSafe> = SafeMessageId<TSupportedLocales, TLocaleSet, TSheetTitle, TTypeSafe>> = Record<RuleKey, RuleFn<TSupportedLocales, TLocaleSet, TI18nStore, TTypeSafe, TSheetTitle, TMessageId>>;
53
56
 
54
- type GetTranslationReturn<TSupportedLocales extends readonly string[], TLocaleSet extends Partial<Record<TSupportedLocales[number], Record<string, any>>>, TTypeSafe extends boolean, TSheetTitle extends SafeSheetTitle<TSupportedLocales, TLocaleSet, TTypeSafe>> = {
57
+ type UseTranslationReturn<TSupportedLocales extends readonly string[], TLocaleSet extends Partial<Partial<Record<TSupportedLocales[number], Record<string, any>>>>, TTypeSafe extends boolean, TSheetTitle extends SafeSheetTitle<TSupportedLocales, TLocaleSet, TTypeSafe>, TRules extends Rules> = {
55
58
  t: <TMessageId extends SafeMessageId<TSupportedLocales, TLocaleSet, TSheetTitle, TTypeSafe>, TValues extends $TParams[0], TOpts extends $TParams[1], TDescriptor extends $TParams[2]>(id: TMessageId, values?: TValues, opts?: TOpts, _descriptor?: TDescriptor) => TTypeSafe extends true ? TMessageId : any;
56
59
  } & {
57
60
  t: {
58
61
  dynamic: <TMessageId extends SafeMessageId<TSupportedLocales, TLocaleSet, TSheetTitle, TTypeSafe>, TValues extends $TParams[0], TOpts extends $TParams[1], TDescriptor extends $TParams[2]>(id: string, values?: TValues, opts?: TOpts, _descriptor?: TDescriptor) => TTypeSafe extends true ? string : any;
59
- promise: <TMessageId extends SafeMessageId<TSupportedLocales, TLocaleSet, TSheetTitle, TTypeSafe>, TValues extends $TParams[0], TOpts extends $TParams[1], TDescriptor extends $TParams[2]>(id: TMessageId, values?: TValues, opts?: TOpts, _descriptor?: TDescriptor) => TTypeSafe extends true ? Promise<TMessageId> : any;
62
+ rule: <TRuleKey extends keyof TRules, TMessageId extends SafeMessageId<TSupportedLocales, TLocaleSet, TSheetTitle, TTypeSafe>>(ruleKey: TRuleKey, values?: Parameters<TRules[TRuleKey]>[0]) => TTypeSafe extends true ? TMessageId : any;
60
63
  };
61
64
  };
62
65
 
63
- type UseTranslationReturn<TSupportedLocales extends readonly string[], TLocaleSet extends Partial<Partial<Record<TSupportedLocales[number], Record<string, any>>>>, TTypeSafe extends boolean, TSheetTitle extends SafeSheetTitle<TSupportedLocales, TLocaleSet, TTypeSafe>, TRules extends Rules> = {
66
+ type GetTranslationReturn<TSupportedLocales extends readonly string[], TLocaleSet extends Partial<Record<TSupportedLocales[number], Record<string, any>>>, TTypeSafe extends boolean, TSheetTitle extends SafeSheetTitle<TSupportedLocales, TLocaleSet, TTypeSafe>> = {
64
67
  t: <TMessageId extends SafeMessageId<TSupportedLocales, TLocaleSet, TSheetTitle, TTypeSafe>, TValues extends $TParams[0], TOpts extends $TParams[1], TDescriptor extends $TParams[2]>(id: TMessageId, values?: TValues, opts?: TOpts, _descriptor?: TDescriptor) => TTypeSafe extends true ? TMessageId : any;
65
68
  } & {
66
69
  t: {
67
70
  dynamic: <TMessageId extends SafeMessageId<TSupportedLocales, TLocaleSet, TSheetTitle, TTypeSafe>, TValues extends $TParams[0], TOpts extends $TParams[1], TDescriptor extends $TParams[2]>(id: string, values?: TValues, opts?: TOpts, _descriptor?: TDescriptor) => TTypeSafe extends true ? string : any;
68
- rule: <TRuleKey extends keyof TRules, TMessageId extends SafeMessageId<TSupportedLocales, TLocaleSet, TSheetTitle, TTypeSafe>>(ruleKey: TRuleKey, values?: Parameters<TRules[TRuleKey]>[0]) => TTypeSafe extends true ? TMessageId : any;
71
+ promise: <TMessageId extends SafeMessageId<TSupportedLocales, TLocaleSet, TSheetTitle, TTypeSafe>, TValues extends $TParams[0], TOpts extends $TParams[1], TDescriptor extends $TParams[2]>(id: TMessageId, values?: TValues, opts?: TOpts, _descriptor?: TDescriptor) => TTypeSafe extends true ? Promise<TMessageId> : any;
69
72
  };
70
73
  };
71
74
 
72
- type IntlProviderProps<TSupportedLocales extends readonly string[], TLocaleSet extends Partial<Record<TSupportedLocales[number], Record<string, any>>>, TTypeSafe extends boolean = false> = {
73
- i18nStore: I18nStore<TSupportedLocales, TLocaleSet, TTypeSafe>;
74
- currentLocale?: TSupportedLocales[number];
75
- children: React.ReactNode;
76
- };
75
+ interface IStorageService<V extends string> {
76
+ getItem(key: string): V;
77
+ setItem(key: string, value: V): boolean;
78
+ removeItem(key: string): boolean;
79
+ clear(): boolean;
80
+ }
81
+ /**
82
+ * locale storage manager
83
+ * implements ILocaleStorageManager (injected StorageService)
84
+ */
85
+ interface ILocaleStorageManager<TSupportedLocales extends readonly string[]> {
86
+ getLocale(): TSupportedLocales[number];
87
+ setLocale(locale: TSupportedLocales[number]): void;
88
+ }
89
+ declare class LocaleStorageManager<TSupportedLocales extends readonly string[], TLocaleSet extends Partial<Record<TSupportedLocales[number], Record<string, any>>>, TTypeSafe extends boolean = false> implements ILocaleStorageManager<TSupportedLocales> {
90
+ private readonly storageService;
91
+ private readonly i18nStore;
92
+ private readonly localeStorageKey;
93
+ observerManager: ObserverManager<TSupportedLocales[number]>;
94
+ constructor(storageService: IStorageService<TSupportedLocales[number]>, i18nStore: I18nStore<TSupportedLocales, TLocaleSet, TTypeSafe>, localeStorageKey?: string);
95
+ private initializeCurrentLocale;
96
+ getLocale: () => TSupportedLocales[number];
97
+ setLocale: (locale: TSupportedLocales[number]) => void;
98
+ }
77
99
 
78
100
  declare function useLocaleStorage<TSupportedLocales extends readonly string[], TLocaleSet extends Partial<Record<TSupportedLocales[number], Record<string, any>>>, TTypeSafe extends boolean = false>(localeStorageManager: LocaleStorageManager<TSupportedLocales, TLocaleSet, TTypeSafe>): {
79
101
  locale: TSupportedLocales[number] | undefined;
@@ -85,21 +107,20 @@ interface StorageBasedIntlProviderProps<TSupportedLocales extends readonly strin
85
107
  fallbackUI?: React.ReactNode;
86
108
  children: React.ReactNode;
87
109
  }
110
+ declare function StorageBasedIntlProvider<TSupportedLocales extends readonly string[], TLocaleSet extends Partial<Record<TSupportedLocales[number], Record<string, any>>>, TTypeSafe extends boolean = false>({ i18nStore, storageManager, fallbackUI, children, }: StorageBasedIntlProviderProps<TSupportedLocales, TLocaleSet, TTypeSafe>): string | number | bigint | boolean | Iterable<react.ReactNode> | Promise<string | number | bigint | boolean | react.ReactPortal | react.ReactElement<unknown, string | react.JSXElementConstructor<any>> | Iterable<react.ReactNode> | null | undefined> | react_jsx_runtime.JSX.Element | null;
88
111
 
89
112
  interface Plugins<TRules extends Rules> {
90
113
  rules?: TRules;
91
114
  }
92
- declare function createI18nContext<TSupportedLocales extends readonly string[], TLocaleSet extends Partial<Record<TSupportedLocales[number], Record<string, any>>>, TRules extends Rules, TTypeSafe extends boolean = false>(i18nStore: I18nStore<TSupportedLocales, TLocaleSet, TTypeSafe>, plugins?: Plugins<TRules>): {
93
- IntlProvider: ({ currentLocale, children, }: Omit<IntlProviderProps<TSupportedLocales, TLocaleSet>, "currentLocale" | "i18nStore"> & {
94
- currentLocale?: string;
95
- children?: React.ReactNode;
96
- }) => react_jsx_runtime.JSX.Element;
97
- StorageBasedIntlProvider: ({ storageManager, children, }: Omit<StorageBasedIntlProviderProps<TSupportedLocales, TLocaleSet, TTypeSafe>, "i18nStore">) => react_jsx_runtime.JSX.Element;
115
+ type CreateI18nContextReturn<TSupportedLocales extends readonly string[], TLocaleSet extends Partial<Record<TSupportedLocales[number], Record<string, any>>>, TRules extends Rules, TTypeSafe extends boolean = false> = {
116
+ IntlProvider: (props: IntlProviderProps<TSupportedLocales, TLocaleSet, TTypeSafe>) => ReturnType<typeof IntlProvider<TSupportedLocales, TLocaleSet, TTypeSafe>>;
117
+ StorageBasedIntlProvider: (props: StorageBasedIntlProviderProps<TSupportedLocales, TLocaleSet, TTypeSafe>) => ReturnType<typeof StorageBasedIntlProvider<TSupportedLocales, TLocaleSet, TTypeSafe>>;
98
118
  useTranslation: <TSheetTitle extends SafeSheetTitle<TSupportedLocales, TLocaleSet, TTypeSafe>>(sheetTitle: TSheetTitle) => UseTranslationReturn<TSupportedLocales, TLocaleSet, TTypeSafe, TSheetTitle, TRules>;
99
119
  getTranslation: <TSheetTitle extends SafeSheetTitle<TSupportedLocales, TLocaleSet, TTypeSafe>>(sheetTitle: TSheetTitle) => GetTranslationReturn<TSupportedLocales, TLocaleSet, TTypeSafe, TSheetTitle>;
100
120
  getLocaleStorageManager: (storageService?: IStorageService<string>) => LocaleStorageManager<TSupportedLocales, TLocaleSet, TTypeSafe>;
101
121
  useLocaleStorage: typeof useLocaleStorage;
102
122
  };
123
+ declare function createI18nContext<TSupportedLocales extends readonly string[], TLocaleSet extends Partial<Record<TSupportedLocales[number], Record<string, any>>>, TRules extends Rules, TTypeSafe extends boolean = false>(i18nStore: I18nStore<TSupportedLocales, TLocaleSet, TTypeSafe>, plugins?: Plugins<TRules>): CreateI18nContextReturn<TSupportedLocales, TLocaleSet, TRules, TTypeSafe>;
103
124
 
104
125
  declare class RuleService<TSupportedLocales extends SupportedLocales, TLocaleSet extends LocaleSet, TTypeSafe extends TypeSafe, TSheetTitle extends SafeSheetTitle<TSupportedLocales, TLocaleSet, TTypeSafe>, TMessageId extends SafeMessageId<TSupportedLocales, TLocaleSet, TSheetTitle, TTypeSafe>> {
105
126
  private readonly i18nStore;
@@ -108,4 +129,4 @@ declare class RuleService<TSupportedLocales extends SupportedLocales, TLocaleSet
108
129
  }
109
130
  declare const ruleFactory: <TSupportedLocales extends SupportedLocales, TLocaleSet extends LocaleSet, TTypeSafe extends TypeSafe>(i18nStore: I18nStore<TSupportedLocales, TLocaleSet, TTypeSafe>) => RuleService<TSupportedLocales, TLocaleSet, TTypeSafe, SafeSheetTitle<TSupportedLocales, TLocaleSet, TTypeSafe>, SafeMessageId<TSupportedLocales, TLocaleSet, SafeSheetTitle<TSupportedLocales, TLocaleSet, TTypeSafe>, TTypeSafe>>;
110
131
 
111
- export { type IStorageService, createI18nContext, ruleFactory };
132
+ export { type CreateI18nContextReturn, type IStorageService as Storage, createI18nContext, ruleFactory };
package/dist/index.d.ts CHANGED
@@ -1,34 +1,37 @@
1
1
  import { I18nStore } from '@sheet-i18n/react-core';
2
- import { ObserverManager } from '@sheet-i18n/shared-utils';
3
- import { MessageDescriptor, IntlShape } from 'react-intl';
4
2
  import * as react_jsx_runtime from 'react/jsx-runtime';
3
+ import { ObserverManager } from '@sheet-i18n/shared-utils';
4
+ import * as react from 'react';
5
5
 
6
- interface IStorageService<V extends string> {
7
- getItem(key: string): V;
8
- setItem(key: string, value: V): boolean;
9
- removeItem(key: string): boolean;
10
- clear(): boolean;
6
+ type IntlProviderProps<TSupportedLocales extends readonly string[], TLocaleSet extends Partial<Record<TSupportedLocales[number], Record<string, any>>>, TTypeSafe extends boolean = false> = {
7
+ i18nStore: I18nStore<TSupportedLocales, TLocaleSet, TTypeSafe>;
8
+ currentLocale?: TSupportedLocales[number];
9
+ children: React.ReactNode;
10
+ };
11
+ declare function IntlProvider<TSupportedLocales extends readonly string[], TLocaleSet extends Partial<Record<TSupportedLocales[number], Record<string, any>>>, TTypeSafe extends boolean = false>({ i18nStore, currentLocale, children, }: IntlProviderProps<TSupportedLocales, TLocaleSet, TTypeSafe>): react_jsx_runtime.JSX.Element;
12
+
13
+ interface Message {
11
14
  }
12
- /**
13
- * locale storage manager
14
- * implements ILocaleStorageManager (injected StorageService)
15
- */
16
- interface ILocaleStorageManager<TSupportedLocales extends readonly string[]> {
17
- getLocale(): TSupportedLocales[number];
18
- setLocale(locale: TSupportedLocales[number]): void;
15
+ type MessageIds = Message extends {
16
+ ids: infer T;
17
+ } ? T extends string ? T : string : string;
18
+ interface MessageDescriptor {
19
+ id?: MessageIds;
20
+ description?: string | object;
21
+ defaultMessage?: any[];
19
22
  }
20
- declare class LocaleStorageManager<TSupportedLocales extends readonly string[], TLocaleSet extends Partial<Record<TSupportedLocales[number], Record<string, any>>>, TTypeSafe extends boolean = false> implements ILocaleStorageManager<TSupportedLocales> {
21
- private readonly storageService;
22
- private readonly i18nStore;
23
- private readonly localeStorageKey;
24
- observerManager: ObserverManager<TSupportedLocales[number]>;
25
- constructor(storageService: IStorageService<TSupportedLocales[number]>, i18nStore: I18nStore<TSupportedLocales, TLocaleSet, TTypeSafe>, localeStorageKey?: string);
26
- private initializeCurrentLocale;
27
- getLocale: () => TSupportedLocales[number];
28
- setLocale: (locale: TSupportedLocales[number]) => void;
23
+ type PrimitiveType = string | number | boolean | null | undefined | Date;
24
+ type FormatXMLElementFn<T, R = string | T | (string | T)[]> = (parts: Array<string | T>) => R;
25
+ interface ParserOptions {
26
+ ignoreTag?: boolean;
27
+ requiresOtherClause?: boolean;
28
+ shouldParseSkeletons?: boolean;
29
+ captureLocation?: boolean;
29
30
  }
30
-
31
- type UseIntlParams<D = MessageDescriptor> = Parameters<IntlShape['$t']> extends [D, ...infer R] ? [...R, Omit<D, 'id'>] : never;
31
+ interface Options extends ParserOptions {
32
+ }
33
+ type $T<T extends unknown = unknown> = (this: void, descriptor: MessageDescriptor, values?: Record<string, PrimitiveType | T | FormatXMLElementFn<T>>, opts?: Options) => string | T | (T | string)[];
34
+ type UseIntlParams<D = MessageDescriptor> = Parameters<$T> extends [D, ...infer R] ? [...R, Omit<D, 'id'>] : never;
32
35
  type ExtendedUseIntlParams<D = MessageDescriptor> = UseIntlParams<D> extends [infer A, infer B, ...infer Rest] ? A extends Record<string, infer V> ? [Record<string, V | React.ReactNode>, B, ...Rest] : [A, B, ...Rest] : UseIntlParams<D>;
33
36
  type $TParams = Partial<ExtendedUseIntlParams>;
34
37
  /**
@@ -51,29 +54,48 @@ type RuleKey = string;
51
54
  type RuleFn<TSupportedLocales extends SupportedLocales, TLocaleSet extends LocaleSet, TI18nStore extends I18nStore<TSupportedLocales, TLocaleSet, TTypeSafe>, TTypeSafe extends TypeSafe, TSheetTitle extends SafeSheetTitle<TSupportedLocales, TLocaleSet, TTypeSafe>, TMessageId extends SafeMessageId<TSupportedLocales, TLocaleSet, TSheetTitle, TTypeSafe>, TValues = any> = (values: TValues, currentLocaleSet: ReturnType<TI18nStore['getCurrentLocaleSet']>) => TMessageId;
52
55
  type Rules<TSupportedLocales extends SupportedLocales = SupportedLocales, TLocaleSet extends LocaleSet = LocaleSet, TTypeSafe extends TypeSafe = TypeSafe, TI18nStore extends I18nStore<TSupportedLocales, TLocaleSet, TTypeSafe> = I18nStore<TSupportedLocales, TLocaleSet, TTypeSafe>, TSheetTitle extends SafeSheetTitle<TSupportedLocales, TLocaleSet, TTypeSafe> = SafeSheetTitle<TSupportedLocales, TLocaleSet, TTypeSafe>, TMessageId extends SafeMessageId<TSupportedLocales, TLocaleSet, TSheetTitle, TTypeSafe> = SafeMessageId<TSupportedLocales, TLocaleSet, TSheetTitle, TTypeSafe>> = Record<RuleKey, RuleFn<TSupportedLocales, TLocaleSet, TI18nStore, TTypeSafe, TSheetTitle, TMessageId>>;
53
56
 
54
- type GetTranslationReturn<TSupportedLocales extends readonly string[], TLocaleSet extends Partial<Record<TSupportedLocales[number], Record<string, any>>>, TTypeSafe extends boolean, TSheetTitle extends SafeSheetTitle<TSupportedLocales, TLocaleSet, TTypeSafe>> = {
57
+ type UseTranslationReturn<TSupportedLocales extends readonly string[], TLocaleSet extends Partial<Partial<Record<TSupportedLocales[number], Record<string, any>>>>, TTypeSafe extends boolean, TSheetTitle extends SafeSheetTitle<TSupportedLocales, TLocaleSet, TTypeSafe>, TRules extends Rules> = {
55
58
  t: <TMessageId extends SafeMessageId<TSupportedLocales, TLocaleSet, TSheetTitle, TTypeSafe>, TValues extends $TParams[0], TOpts extends $TParams[1], TDescriptor extends $TParams[2]>(id: TMessageId, values?: TValues, opts?: TOpts, _descriptor?: TDescriptor) => TTypeSafe extends true ? TMessageId : any;
56
59
  } & {
57
60
  t: {
58
61
  dynamic: <TMessageId extends SafeMessageId<TSupportedLocales, TLocaleSet, TSheetTitle, TTypeSafe>, TValues extends $TParams[0], TOpts extends $TParams[1], TDescriptor extends $TParams[2]>(id: string, values?: TValues, opts?: TOpts, _descriptor?: TDescriptor) => TTypeSafe extends true ? string : any;
59
- promise: <TMessageId extends SafeMessageId<TSupportedLocales, TLocaleSet, TSheetTitle, TTypeSafe>, TValues extends $TParams[0], TOpts extends $TParams[1], TDescriptor extends $TParams[2]>(id: TMessageId, values?: TValues, opts?: TOpts, _descriptor?: TDescriptor) => TTypeSafe extends true ? Promise<TMessageId> : any;
62
+ rule: <TRuleKey extends keyof TRules, TMessageId extends SafeMessageId<TSupportedLocales, TLocaleSet, TSheetTitle, TTypeSafe>>(ruleKey: TRuleKey, values?: Parameters<TRules[TRuleKey]>[0]) => TTypeSafe extends true ? TMessageId : any;
60
63
  };
61
64
  };
62
65
 
63
- type UseTranslationReturn<TSupportedLocales extends readonly string[], TLocaleSet extends Partial<Partial<Record<TSupportedLocales[number], Record<string, any>>>>, TTypeSafe extends boolean, TSheetTitle extends SafeSheetTitle<TSupportedLocales, TLocaleSet, TTypeSafe>, TRules extends Rules> = {
66
+ type GetTranslationReturn<TSupportedLocales extends readonly string[], TLocaleSet extends Partial<Record<TSupportedLocales[number], Record<string, any>>>, TTypeSafe extends boolean, TSheetTitle extends SafeSheetTitle<TSupportedLocales, TLocaleSet, TTypeSafe>> = {
64
67
  t: <TMessageId extends SafeMessageId<TSupportedLocales, TLocaleSet, TSheetTitle, TTypeSafe>, TValues extends $TParams[0], TOpts extends $TParams[1], TDescriptor extends $TParams[2]>(id: TMessageId, values?: TValues, opts?: TOpts, _descriptor?: TDescriptor) => TTypeSafe extends true ? TMessageId : any;
65
68
  } & {
66
69
  t: {
67
70
  dynamic: <TMessageId extends SafeMessageId<TSupportedLocales, TLocaleSet, TSheetTitle, TTypeSafe>, TValues extends $TParams[0], TOpts extends $TParams[1], TDescriptor extends $TParams[2]>(id: string, values?: TValues, opts?: TOpts, _descriptor?: TDescriptor) => TTypeSafe extends true ? string : any;
68
- rule: <TRuleKey extends keyof TRules, TMessageId extends SafeMessageId<TSupportedLocales, TLocaleSet, TSheetTitle, TTypeSafe>>(ruleKey: TRuleKey, values?: Parameters<TRules[TRuleKey]>[0]) => TTypeSafe extends true ? TMessageId : any;
71
+ promise: <TMessageId extends SafeMessageId<TSupportedLocales, TLocaleSet, TSheetTitle, TTypeSafe>, TValues extends $TParams[0], TOpts extends $TParams[1], TDescriptor extends $TParams[2]>(id: TMessageId, values?: TValues, opts?: TOpts, _descriptor?: TDescriptor) => TTypeSafe extends true ? Promise<TMessageId> : any;
69
72
  };
70
73
  };
71
74
 
72
- type IntlProviderProps<TSupportedLocales extends readonly string[], TLocaleSet extends Partial<Record<TSupportedLocales[number], Record<string, any>>>, TTypeSafe extends boolean = false> = {
73
- i18nStore: I18nStore<TSupportedLocales, TLocaleSet, TTypeSafe>;
74
- currentLocale?: TSupportedLocales[number];
75
- children: React.ReactNode;
76
- };
75
+ interface IStorageService<V extends string> {
76
+ getItem(key: string): V;
77
+ setItem(key: string, value: V): boolean;
78
+ removeItem(key: string): boolean;
79
+ clear(): boolean;
80
+ }
81
+ /**
82
+ * locale storage manager
83
+ * implements ILocaleStorageManager (injected StorageService)
84
+ */
85
+ interface ILocaleStorageManager<TSupportedLocales extends readonly string[]> {
86
+ getLocale(): TSupportedLocales[number];
87
+ setLocale(locale: TSupportedLocales[number]): void;
88
+ }
89
+ declare class LocaleStorageManager<TSupportedLocales extends readonly string[], TLocaleSet extends Partial<Record<TSupportedLocales[number], Record<string, any>>>, TTypeSafe extends boolean = false> implements ILocaleStorageManager<TSupportedLocales> {
90
+ private readonly storageService;
91
+ private readonly i18nStore;
92
+ private readonly localeStorageKey;
93
+ observerManager: ObserverManager<TSupportedLocales[number]>;
94
+ constructor(storageService: IStorageService<TSupportedLocales[number]>, i18nStore: I18nStore<TSupportedLocales, TLocaleSet, TTypeSafe>, localeStorageKey?: string);
95
+ private initializeCurrentLocale;
96
+ getLocale: () => TSupportedLocales[number];
97
+ setLocale: (locale: TSupportedLocales[number]) => void;
98
+ }
77
99
 
78
100
  declare function useLocaleStorage<TSupportedLocales extends readonly string[], TLocaleSet extends Partial<Record<TSupportedLocales[number], Record<string, any>>>, TTypeSafe extends boolean = false>(localeStorageManager: LocaleStorageManager<TSupportedLocales, TLocaleSet, TTypeSafe>): {
79
101
  locale: TSupportedLocales[number] | undefined;
@@ -85,21 +107,20 @@ interface StorageBasedIntlProviderProps<TSupportedLocales extends readonly strin
85
107
  fallbackUI?: React.ReactNode;
86
108
  children: React.ReactNode;
87
109
  }
110
+ declare function StorageBasedIntlProvider<TSupportedLocales extends readonly string[], TLocaleSet extends Partial<Record<TSupportedLocales[number], Record<string, any>>>, TTypeSafe extends boolean = false>({ i18nStore, storageManager, fallbackUI, children, }: StorageBasedIntlProviderProps<TSupportedLocales, TLocaleSet, TTypeSafe>): string | number | bigint | boolean | Iterable<react.ReactNode> | Promise<string | number | bigint | boolean | react.ReactPortal | react.ReactElement<unknown, string | react.JSXElementConstructor<any>> | Iterable<react.ReactNode> | null | undefined> | react_jsx_runtime.JSX.Element | null;
88
111
 
89
112
  interface Plugins<TRules extends Rules> {
90
113
  rules?: TRules;
91
114
  }
92
- declare function createI18nContext<TSupportedLocales extends readonly string[], TLocaleSet extends Partial<Record<TSupportedLocales[number], Record<string, any>>>, TRules extends Rules, TTypeSafe extends boolean = false>(i18nStore: I18nStore<TSupportedLocales, TLocaleSet, TTypeSafe>, plugins?: Plugins<TRules>): {
93
- IntlProvider: ({ currentLocale, children, }: Omit<IntlProviderProps<TSupportedLocales, TLocaleSet>, "currentLocale" | "i18nStore"> & {
94
- currentLocale?: string;
95
- children?: React.ReactNode;
96
- }) => react_jsx_runtime.JSX.Element;
97
- StorageBasedIntlProvider: ({ storageManager, children, }: Omit<StorageBasedIntlProviderProps<TSupportedLocales, TLocaleSet, TTypeSafe>, "i18nStore">) => react_jsx_runtime.JSX.Element;
115
+ type CreateI18nContextReturn<TSupportedLocales extends readonly string[], TLocaleSet extends Partial<Record<TSupportedLocales[number], Record<string, any>>>, TRules extends Rules, TTypeSafe extends boolean = false> = {
116
+ IntlProvider: (props: IntlProviderProps<TSupportedLocales, TLocaleSet, TTypeSafe>) => ReturnType<typeof IntlProvider<TSupportedLocales, TLocaleSet, TTypeSafe>>;
117
+ StorageBasedIntlProvider: (props: StorageBasedIntlProviderProps<TSupportedLocales, TLocaleSet, TTypeSafe>) => ReturnType<typeof StorageBasedIntlProvider<TSupportedLocales, TLocaleSet, TTypeSafe>>;
98
118
  useTranslation: <TSheetTitle extends SafeSheetTitle<TSupportedLocales, TLocaleSet, TTypeSafe>>(sheetTitle: TSheetTitle) => UseTranslationReturn<TSupportedLocales, TLocaleSet, TTypeSafe, TSheetTitle, TRules>;
99
119
  getTranslation: <TSheetTitle extends SafeSheetTitle<TSupportedLocales, TLocaleSet, TTypeSafe>>(sheetTitle: TSheetTitle) => GetTranslationReturn<TSupportedLocales, TLocaleSet, TTypeSafe, TSheetTitle>;
100
120
  getLocaleStorageManager: (storageService?: IStorageService<string>) => LocaleStorageManager<TSupportedLocales, TLocaleSet, TTypeSafe>;
101
121
  useLocaleStorage: typeof useLocaleStorage;
102
122
  };
123
+ declare function createI18nContext<TSupportedLocales extends readonly string[], TLocaleSet extends Partial<Record<TSupportedLocales[number], Record<string, any>>>, TRules extends Rules, TTypeSafe extends boolean = false>(i18nStore: I18nStore<TSupportedLocales, TLocaleSet, TTypeSafe>, plugins?: Plugins<TRules>): CreateI18nContextReturn<TSupportedLocales, TLocaleSet, TRules, TTypeSafe>;
103
124
 
104
125
  declare class RuleService<TSupportedLocales extends SupportedLocales, TLocaleSet extends LocaleSet, TTypeSafe extends TypeSafe, TSheetTitle extends SafeSheetTitle<TSupportedLocales, TLocaleSet, TTypeSafe>, TMessageId extends SafeMessageId<TSupportedLocales, TLocaleSet, TSheetTitle, TTypeSafe>> {
105
126
  private readonly i18nStore;
@@ -108,4 +129,4 @@ declare class RuleService<TSupportedLocales extends SupportedLocales, TLocaleSet
108
129
  }
109
130
  declare const ruleFactory: <TSupportedLocales extends SupportedLocales, TLocaleSet extends LocaleSet, TTypeSafe extends TypeSafe>(i18nStore: I18nStore<TSupportedLocales, TLocaleSet, TTypeSafe>) => RuleService<TSupportedLocales, TLocaleSet, TTypeSafe, SafeSheetTitle<TSupportedLocales, TLocaleSet, TTypeSafe>, SafeMessageId<TSupportedLocales, TLocaleSet, SafeSheetTitle<TSupportedLocales, TLocaleSet, TTypeSafe>, TTypeSafe>>;
110
131
 
111
- export { type IStorageService, createI18nContext, ruleFactory };
132
+ export { type CreateI18nContextReturn, type IStorageService as Storage, createI18nContext, ruleFactory };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sheet-i18n/react-client",
3
- "version": "1.6.0-canary.0",
3
+ "version": "1.6.0-canary.10",
4
4
  "description": "a client package for react modules used by sheet-i18n",
5
5
  "main": "./dist/index.js",
6
6
  "module": "./dist/index.mjs",
@@ -27,7 +27,7 @@
27
27
  "dependencies": {
28
28
  "@sheet-i18n/shared-utils": "1.8.2",
29
29
  "@sheet-i18n/errors": "1.8.1",
30
- "@sheet-i18n/react-core": "1.6.0-canary.0"
30
+ "@sheet-i18n/react-core": "1.6.0-canary.10"
31
31
  },
32
32
  "devDependencies": {
33
33
  "@types/react": "^19.0.2",