@koine/next 1.0.27 → 1.0.30

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/README.md CHANGED
@@ -1 +1,13 @@
1
1
  # @koine/next
2
+
3
+ ## i18n
4
+
5
+ To make typescript work nicely with `useT`, `getT` and `T` make sure to enable [`resolveJsonModule`](https://www.typescriptlang.org/tsconfig#resolveJsonModule) in your `tsconfig.json` file:
6
+
7
+ ```json
8
+ {
9
+ "compilerOptions": {
10
+ "resolveJsonModule": true,
11
+ }
12
+ }
13
+ ```
package/i18n/T/index.d.ts CHANGED
@@ -1,6 +1,14 @@
1
1
  import type { TransProps } from "next-translate";
2
- import type { /* TranslationsPaths, */ TranslationsAllPaths } from "../useT";
3
- export declare type TProps = Omit<TransProps, "i18nKey" | "ns"> & {
2
+ import type { TranslateNamespace, TranslationsPaths, TranslationsAllPaths } from "../types";
3
+ export declare type TProps<TNamespace extends TranslateNamespace | undefined = undefined> = (Omit<TransProps, "i18nKey" | "ns"> & {
4
4
  i18nKey: TranslationsAllPaths;
5
- };
5
+ }) | (Omit<TransProps, "i18nKey" | "ns"> & {
6
+ ns: TNamespace;
7
+ i18nKey: TranslationsPaths<TNamespace>;
8
+ });
9
+ /**
10
+ * **NOTE**: To make typescript work nicely here make sure to enable
11
+ * [`resolveJsonModule`](https://www.typescriptlang.org/tsconfig#resolveJsonModule)
12
+ * in your `tsconfig.json` file.
13
+ */
6
14
  export declare const T: (props: TProps) => JSX.Element;
package/i18n/T/index.js CHANGED
@@ -1,4 +1,9 @@
1
1
  import { __assign } from "tslib";
2
2
  import { jsx as _jsx } from "react/jsx-runtime";
3
3
  import Trans from "next-translate/Trans";
4
+ /**
5
+ * **NOTE**: To make typescript work nicely here make sure to enable
6
+ * [`resolveJsonModule`](https://www.typescriptlang.org/tsconfig#resolveJsonModule)
7
+ * in your `tsconfig.json` file.
8
+ */
4
9
  export var T = function (props) { return _jsx(Trans, __assign({}, props)); };
@@ -1,3 +1,8 @@
1
- import type { Translate } from "../useT";
2
- export declare type GetT = <TNamespace extends keyof Koine.NextTranslations | undefined>(locale?: string, namespace?: TNamespace) => Promise<Translate<TNamespace>>;
1
+ import type { Translate, TranslateNamespace } from "../types";
2
+ export declare type GetT = <TNamespace extends TranslateNamespace | undefined = undefined>(locale?: string, namespace?: TNamespace) => Promise<Translate<TNamespace>>;
3
+ /**
4
+ * **NOTE**: To make typescript work nicely here make sure to enable
5
+ * [`resolveJsonModule`](https://www.typescriptlang.org/tsconfig#resolveJsonModule)
6
+ * in your `tsconfig.json` file.
7
+ */
3
8
  export declare const getT: GetT;
@@ -1,9 +1,8 @@
1
1
  /* eslint-disable @typescript-eslint/no-unnecessary-type-constraint */
2
+ import getTranslation from "next-translate/getT";
2
3
  /**
3
- * @file
4
- *
5
- * About the typescript support for translation strings @see:
6
- * - https://github.com/vinissimus/next-translate/issues/721
4
+ * **NOTE**: To make typescript work nicely here make sure to enable
5
+ * [`resolveJsonModule`](https://www.typescriptlang.org/tsconfig#resolveJsonModule)
6
+ * in your `tsconfig.json` file.
7
7
  */
8
- import getTranslation from "next-translate/getT";
9
8
  export var getT = getTranslation;
package/i18n/index.d.ts CHANGED
@@ -4,3 +4,4 @@ export * from "./translationAsOptions";
4
4
  export * from "./useDateFormat";
5
5
  export * from "./useLocale";
6
6
  export * from "./useT";
7
+ export * from "./types";
package/i18n/index.js CHANGED
@@ -4,3 +4,4 @@ export * from "./translationAsOptions";
4
4
  export * from "./useDateFormat";
5
5
  export * from "./useLocale";
6
6
  export * from "./useT";
7
+ export * from "./types";
@@ -1,3 +1,3 @@
1
- import type { TranslateLoose } from "../useT";
1
+ import type { TranslateLoose } from "../types";
2
2
  import type { Option } from "@koine/react";
3
3
  export declare function translationAsOptions(t: TranslateLoose, i18nKey: string): Option[];
@@ -0,0 +1,94 @@
1
+ /**
2
+ * @file
3
+ *
4
+ * Test this on TSplayground:
5
+ *
6
+ * https://www.typescriptlang.org/play#code/MYewdgzgLgBFCmAPWBeGBvAUDGEBcMARBAIYAmJhANNnAYVOZTTgK4FY5sCM9r3hWgF8WMeAFsADlACeHIZgWZQkWKwBOAGxhpOMAG4lNrePVIVBSsvGCaS6+DDAlx8CJJLBHAaRABLMEc9WUlHADkkKAAVdRJIOyg-cAgdDFocBGQCEPgQADM4SIBudJgNTWyZUPyyrRKcIRKlHJgAKX8wAB4AZW4qGG6AJgA+VN6xZHgwMhTodQCAc1oAfgHBiYRp2ah5sCWuGFWAAwASdF6hADozoaEj0oJe2gJA-Xh1EswkSRB1WBaYnEIAkkpAAAokKAACwgnVoUVEUQAgmQyAAlEAgWCRKYzODqEwwAA+ZWm8DyAXgZFSrDJFMCZEwo10tAA2t4YAEYABRZCxYBQToAa3gMhqCNwO0WwwAugQouyZRtcSkkepYjI4QcAPTazkFADujihJDeMDi5vVJBkMBqIAARgArGxQCClNE2X5kTpzRb9WlCsAgA1gYa0MMHY5nbx3B4wXX6mBGmAms0Wh3OgWlBXeJU4rYwD2gdTe317f1gQPB0OlZalA7I1EYrHKgs7Ez1rhR9Axo7EtodTrefqA+KQ0EQCHQ2E5mUjlHozFQYYRg5cAjtAJDkexMeJZJTmGdWfzptLlednAJkmnHt3eMAKhgC5geV+RAzhBgD+1l-jepJTcug5fM8TLBZDhgW9exgAgjiOHcgRBA9ISPE98RMC8DgIBM-ENY1TUcC17A1W0CkkeZxD8RI3jdBtFVbPE1Q1H0pT2fswFYcR7Xeft7UxTR4DiVccG7Xs41w-CU0I80YAovwqJoxxwO1TjuPebV+JAQS4mzBjQO2XYIJJNSePUPiBKEsBaxgEDJgLcDOzE2M11gqD7mw9ymlZXkdk8QURTFAoJXA2VPm+X5-iqRxR2BcdkiRTRNEPFIWRwVkwk5MAeT5fzhVFGpfEpS4ImQWLkMgfpQrlNIDnZLKcr8gV8qC2yOngErInK+LIAyudJSM2UCCKwJOrK3c4v3XqwhlfT7KYq1NU7SSkwItNspI60yNtJ0XTotciy9VijIrKsQxEmALtEqCzjCIQ8GjFy1xwvU8NW6T1p2zMoE7EaOtK6IJoqiA+rmzY8UOktjr9UkzprVy61cg4b1u+7Hr7bUnxfN9zMIT9v1-JGuEAwc-1cuzwcMxZINvO6HrvPs4NRvAELJtduqmydUNhP6xsBpCepBmbFX6dt4CupGJZexNk1TIiNsW7b5MUvxaN+9q+Y5idQdzRjVUW6H2JMrizIs7SrIl7s6fRztpbe2WZJIOTKOo1XlLYhZVJNjStJ06zyY1gGteSHW83mqmjacb3zJJX2rKc2y9YGxY-yttGGb-Jn0Dpjznq84QfNy5rAsKwOuqBwW+qqj2wsUQumoCgqCl5oOK856vBplT5MYfbAnwhCAIGpx1WGgKCMz7PwUidiAoUi4BWFgHGoPQGAHCgDQwAAeV2gV8AwxwXJ-L5EB+P44GimBg7AABFEx1BtFBaBJWlrHpKln6jpLP7xp1BBwEkeg6qBQIOBGq4EOLRzNn7eoXBGiYEwD3PuMAB5D3YiPMeRwJ6cmnrgOefwF5L3fEcVe69N472+vvMWMAj6-giufAEbdQRb2kBOHQn9X7kkpIyABH4-6fyAVwMh6ht671dMsAgcc4iwIOHkIwmh7SeCFBI5OkdwKsi7p2N+JBWCaCgCo8CMiaHhVPpFGA1hbD2EcIwgWCAwguDcB4LwqRfL8kbq1Fu5dbETg7tKbuep6GwAsXYBwF9QhXzbvAexrh3CeCpMeaJji4lJxLs3Mu41vHJGZDAY8HoN4iKTgGIMIZUihQABT72vlzacQ50n8z3NrKIiTYleBlMMAAlDoUYUQ8mbxKIE8xNgQnWMvhzKJDiWnxKaRMpxjgDIwFSW1YqrdMmQGybk+A+TsrzKKdWUpNcKnyiYShGpniMkNJDtMmJsz+pi2GP0AAjio6+d93gyH6CAZ5xzt6sOSJ0lA3TekiP6aY8+wSrFhJipEgAIuSHRejUgbK2YUysxTspoHKZU75EBErJW5o8r5qzXkPw+YSi5PzOb-MBZsvpCCBngtCXkWkApQRlAgPAKIZT2lHNsfAWFcjdFQBBWfIJQyIVMrACy8AbKOUJJmck+ZYzmmzOGGU5w1y4nymVXE7lETeXaq8N6K5SSvDDBKAmelYrGXMqmjKqIcqNXOPmYss59TJoTlVeqk1pgr4GvgLqpV8rDUOu9WahBKgx5QH5fC1AdquUlAjf8KINJ2WcoYJEQg7SE3JH+AAVRTRysphByiZs+Im2SaAo1wsFUWzIUA8CsEuPwUtygc0wHtKkaIRaJDSBkC28twBO25qLYYYw8AW1AAhttps://www.typescriptlang.org/play#code/MYewdgzgLgBFCmAPWBeGBvAUDGEBcMARBAIYAmJhANNnAYVOZTTgK4FY5sCM9r3hWgF8WMeAFsADlACeHIZgWZQkWKwBOAGxhpOMAG4lNrePVIVBSsvGCaS6+DDAlx8CJJLBHAaRABLMEc9WUlHADkkKAAVdRJIOyg-cAgdDFocBGQCEPgQADM4SIBudJgNTWyZUPyyrRKcIRKlHJgAKX8wAB4AZW4qGG6AJgA+VN6xZHgwMhTodQCAc1oAfgHBiYRp2ah5sCWuGFWAAwASdF6hADozoaEj0oJe2gJA-Xh1EswkSRB1WBaYnEIAkkpAAAokKAACwgnVoUVEUQAgmQyAAlEAgWCRKYzODqEwwAA+ZWm8DyAXgZFSrDJFMCZEwo10tAA2t4YAEYABRZCxYBQToAa3gMhqCNwO0WwwAugQouyZRtcSkkepYjI4QcAPTazkFADujihJDeMDi5vVJBkMBqIAARgArGxQCClNE2X5kTpzRb9WlCsAgA1gYa0MMHY5nbx3B4wXX6mBGmAms0Wh3OgWlBXeJU4rYwD2gdTe317f1gQPB0OlZalA7I1EYrHKgs7Ez1rhR9Axo7EtodTrefqA+KQ0EQCHQ2E5mUjlHozFQYYRg5cAjtAJDkexMeJZJTmGdWfzptLlednAJkmnHt3eMAKhgC5geV+RAzhBgD+1l-jepJTcug5fM8TLBZDhgW9exgAgjiOHcgRBA9ISPE98RMC8DgIBM-ENY1TUcC17A1W0CkkeZxD8RI3jdBtFVbPE1Q1H0pT2fswFYcR7Xeft7UxTR4DiVccG7Xs41w-CU0I80YAovwqJoxxwO1TjuPebV+JAQS4mzBjQO2XYIJJNSePUPiBKEsBaxgEDJgLcDOzE2M11gqD7mw9ymlZXkdk8QURTFAoJXA2VPm+X5-iqRxR2BcdkiRTRNEPFIWRwVkwk5MAeT5fzhVFGpfEpS4ImQWLkMgfpQrlNIDnZLKcr8gV8qC2yOngErInK+LIAyudJSM2UCCKwJOrK3c4v3XqwhlfT7KYq1NU7SSkwItNspI60yNtJ0XTotciy9VijIrKsQxEmALtEqCzjCIQ8GjFy1xwvU8NW6T1p2zMoE7EaOtK6IJoqiA+rmzY8UOktjr9UkzprVy61cg4b1u+7Hr7bUnxfN9zMIT9v1-JGuEAwc-1cuzwcMxZINvO6HrvPs4NRvAELJtduqmydUNhP6xsBpCepBmbFX6dt4CupGJZexNk1TIiNsW7b5MUvxaN+9q+Y5idQdzRjVUW6H2JMrizIs7SrIl7s6fRztpbe2WZJIOTKOo1XlLYhZVJNjStJ06zyY1gGteSHW83mqmjacb3zJJX2rKc2y9YGxY-yttGGb-Jn0Dpjznq84QfNy5rAsKwOuqBwW+qqj2wsUQumoCgqCl5oOK856vBplT5MYfbAnwhCAIGpx1WGgKCMz7PwUidiAoUi4BWFgHGoPQGAHCgDQwAAeV2gV8AwxwXJ-L5EB+P44GimBg7AABFEx1BtFBaBJWlrHpKln6jpLP7xp1BBwEkeg6qBQIOBGq4EOLRzNn7eoXBGiYEwD3PuMAB5D3YiPMeRwJ6cmnrgOefwF5L3fEcVe69N472+vvMWMAj6-giufAEbdQRb2kBOHQn9X7kkpIyABH4-6fyAVwMh6ht671dMsAgcc4iwIOHkIwmh7SeCFBI5OkdwKsi7p2N+JBWCaCgCo8CMiaHhVPpFGA1hbD2EcIwgWCAwguDcB4LwqRfL8kbq1Fu5dbETg7tKbuep6GwAsXYBwF9QhXzbvAexrh3CeCpMeaJji4lJxLs3Mu41vHJGZDAY8HoN4iKTgGIMIZUihQABT72vlzacQ50n8z3NrKIiTYleBlMMAAlDoUYUQ8mbxKIE8xNgQnWMvhzKJDiWnxKaRMpxjgDIwFSW1YqrdMmQGybk+A+TsrzKKdWUpNcKnyiYShGpniMkNJDtMmJsz+pi2GP0AAjio6+d93gyH6CAZ5xzt6sOSJ0lA3TekiP6aY8+wSrFhJipEgAIuSHRejUgbK2YUysxTspoHKZU75EBErJW5o8r5qzXkPw+YSi5PzOb-MBZsvpCCBngtCXkWkApQRlAgPAKIZT2lHNsfAWFcjdFQBBWfIJQyIVMrACy8AbKOUJJmck+ZYzmmzOGGU5w1y4nymVXE7lETeXaq8N6K5SSvDDBKAmelYrGXMqmjKqIcqNXOPmYss59TJoTlVeqk1pgr4GvgLqpV8rDUOu9WahBKgx5QH5fC1AdquUlAjf8KINJ2WcoYJEQg7SE3JH+AAVRTRysphByiZs+Im2SaAo1wsFUWzIUA8CsEuPwUtygc0wHtKkaIRaJDSBkC28twBO25qLYYYw8AW1AA
7
+ */
8
+ /**
9
+ * Translations dictionary extracted from JSON files.
10
+ * You need to augment this type with something like:
11
+ *
12
+ * ```ts
13
+ * declare namespace Koine {
14
+ * interface NextTranslations {
15
+ * "~": typeof import("./locales/en/~.json");
16
+ * "_": typeof import("./locales/en/_.json");
17
+ * "$team": typeof import("./locales/en/$team.json");
18
+ * "home": typeof import("./locales/en/home.json");
19
+ * "Header": typeof import("./locales/en/Header.json");
20
+ * }
21
+ * }
22
+ * ```
23
+ *
24
+ * An alternative to the use of the extended namespace (that I could not make it
25
+ * to work) is to augment the interface commented here below with module
26
+ * augmentation, something like:
27
+ *
28
+ * ```ts
29
+ * declare module "@koine/next/i18n" {
30
+ * interface TranslationsDictionary {
31
+ * "~": typeof import("./locales/en/~.json");
32
+ * }
33
+ * }
34
+ *```
35
+
36
+ * Best to follow a convention to name the files which become the namespaces:
37
+ *
38
+ * - `~`: for app wide **urls** translated definitions
39
+ * - `_`: for app wide **common** translations
40
+ * - `${data}`: dollar prefix for static **data** like arrays, objects, .etc
41
+ * - `{route-name}`: lower cased for **route** specific data
42
+ * - `{ComponentName}`: pascal cased for **components** specific data
43
+ */
44
+ export declare type TranslationsDictionary = Koine.NextTranslations;
45
+ export declare type TranslateNamespace = Extract<keyof TranslationsDictionary, string>;
46
+ declare type Join<S1, S2> = S1 extends string ? S2 extends string ? `${S1}.${S2}` : S1 : never;
47
+ export declare type TranslationsPaths<T, TAddRoot extends true | undefined = undefined> = {
48
+ [K in Extract<keyof T, string>]: T[K] extends Array<Record<string, unknown>> ? `${K}` : T[K] extends Record<string, unknown> ? TAddRoot extends true ? `${K}` | Join<K, TranslationsPaths<T[K], TAddRoot>> : Join<K, TranslationsPaths<T[K], TAddRoot>> : T[K] extends Array<string | number | boolean> ? `${K}` : T[K] extends string | number | boolean ? K extends string ? `${K}` : never : never;
49
+ }[Extract<keyof T, string>];
50
+ export declare type TranslationsAllPaths = {
51
+ [N in Extract<keyof TranslationsDictionary, string>]: {
52
+ [K in Extract<keyof TranslationsDictionary[N], string>]: TranslationsDictionary[N][K] extends Array<Record<string, unknown>> ? `${N}:${K}` : TranslationsDictionary[N][K] extends Record<string, unknown> ? `${N}:${K}` | Join<K extends string ? `${N}:${K}` : `${N}:`, TranslationsPaths<TranslationsDictionary[N][K], true>> : TranslationsDictionary[N][K] extends Array<string | number | boolean> ? `${N}:${K}` : TranslationsDictionary[N][K] extends string | number | boolean ? K extends string ? `${N}:${K}` : `${N}:` : never;
53
+ }[Extract<keyof TranslationsDictionary[N], string>];
54
+ }[Extract<keyof TranslationsDictionary, string>];
55
+ /**
56
+ * Query object to populate the returned translated string interpolating data.
57
+ * Unlike in `next-translate` we allow passing just `obj` as a shortcut for
58
+ * `{ returnObjects: true }`. In such case the thrid argument will not exists.
59
+ *
60
+ * TODO: type safe this behaviour of the third argument (options).
61
+ */
62
+ export declare type TranslationQuery = undefined | null | "obj" | {
63
+ [key: string]: string | number | boolean;
64
+ };
65
+ /**
66
+ * Opions of the translate function. Unlike in `next-translate` we allow passing
67
+ * just `obj` as a shortcut for `{ returnObjects: true }`.
68
+ */
69
+ export declare type TranslationOptions = undefined | "obj" | {
70
+ returnObjects?: boolean;
71
+ fallback?: string | string[];
72
+ default?: string;
73
+ };
74
+ /**
75
+ * Translate function which optionally accept a namespace as first argument
76
+ */
77
+ export declare type Translate<TNamespace extends TranslateNamespace | undefined> = TNamespace extends TranslateNamespace ? TranslateNamespaced<TNamespace> : TranslateDefault;
78
+ /**
79
+ * Translate function **without** namespace, it allows to select any of the all
80
+ * available strings in all namespaces.
81
+ */
82
+ export declare type TranslateDefault = <TReturn = string>(s: TranslationsAllPaths, q?: TranslationQuery, o?: TranslationOptions) => TReturn;
83
+ /**
84
+ * Translate function **with** namespace, it allows to select only the all available
85
+ * strings in the given namespace.
86
+ */
87
+ export declare type TranslateNamespaced<TNamespace extends TranslateNamespace> = <TReturn = string>(s: TranslationsPaths<TranslationsDictionary[TNamespace], true>, q?: TranslationQuery, o?: TranslationOptions) => TReturn;
88
+ /**
89
+ * Translate function loose type, to use only in implementations that uses
90
+ * the `t` function indirectly without needng knowledge of the string it needs
91
+ * to output.
92
+ */
93
+ export declare type TranslateLoose = (s?: any, q?: TranslationQuery, o?: TranslationOptions) => string;
94
+ export {};
package/i18n/types.js ADDED
@@ -0,0 +1,8 @@
1
+ /**
2
+ * @file
3
+ *
4
+ * Test this on TSplayground:
5
+ *
6
+ * https://www.typescriptlang.org/play#code/MYewdgzgLgBFCmAPWBeGBvAUDGEBcMARBAIYAmJhANNnAYVOZTTgK4FY5sCM9r3hWgF8WMeAFsADlACeHIZgWZQkWKwBOAGxhpOMAG4lNrePVIVBSsvGCaS6+DDAlx8CJJLBHAaRABLMEc9WUlHADkkKAAVdRJIOyg-cAgdDFocBGQCEPgQADM4SIBudJgNTWyZUPyyrRKcIRKlHJgAKX8wAB4AZW4qGG6AJgA+VN6xZHgwMhTodQCAc1oAfgHBiYRp2ah5sCWuGFWAAwASdF6hADozoaEj0oJe2gJA-Xh1EswkSRB1WBaYnEIAkkpAAAokKAACwgnVoUVEUQAgmQyAAlEAgWCRKYzODqEwwAA+ZWm8DyAXgZFSrDJFMCZEwo10tAA2t4YAEYABRZCxYBQToAa3gMhqCNwO0WwwAugQouyZRtcSkkepYjI4QcAPTazkFADujihJDeMDi5vVJBkMBqIAARgArGxQCClNE2X5kTpzRb9WlCsAgA1gYa0MMHY5nbx3B4wXX6mBGmAms0Wh3OgWlBXeJU4rYwD2gdTe317f1gQPB0OlZalA7I1EYrHKgs7Ez1rhR9Axo7EtodTrefqA+KQ0EQCHQ2E5mUjlHozFQYYRg5cAjtAJDkexMeJZJTmGdWfzptLlednAJkmnHt3eMAKhgC5geV+RAzhBgD+1l-jepJTcug5fM8TLBZDhgW9exgAgjiOHcgRBA9ISPE98RMC8DgIBM-ENY1TUcC17A1W0CkkeZxD8RI3jdBtFVbPE1Q1H0pT2fswFYcR7Xeft7UxTR4DiVccG7Xs41w-CU0I80YAovwqJoxxwO1TjuPebV+JAQS4mzBjQO2XYIJJNSePUPiBKEsBaxgEDJgLcDOzE2M11gqD7mw9ymlZXkdk8QURTFAoJXA2VPm+X5-iqRxR2BcdkiRTRNEPFIWRwVkwk5MAeT5fzhVFGpfEpS4ImQWLkMgfpQrlNIDnZLKcr8gV8qC2yOngErInK+LIAyudJSM2UCCKwJOrK3c4v3XqwhlfT7KYq1NU7SSkwItNspI60yNtJ0XTotciy9VijIrKsQxEmALtEqCzjCIQ8GjFy1xwvU8NW6T1p2zMoE7EaOtK6IJoqiA+rmzY8UOktjr9UkzprVy61cg4b1u+7Hr7bUnxfN9zMIT9v1-JGuEAwc-1cuzwcMxZINvO6HrvPs4NRvAELJtduqmydUNhP6xsBpCepBmbFX6dt4CupGJZexNk1TIiNsW7b5MUvxaN+9q+Y5idQdzRjVUW6H2JMrizIs7SrIl7s6fRztpbe2WZJIOTKOo1XlLYhZVJNjStJ06zyY1gGteSHW83mqmjacb3zJJX2rKc2y9YGxY-yttGGb-Jn0Dpjznq84QfNy5rAsKwOuqBwW+qqj2wsUQumoCgqCl5oOK856vBplT5MYfbAnwhCAIGpx1WGgKCMz7PwUidiAoUi4BWFgHGoPQGAHCgDQwAAeV2gV8AwxwXJ-L5EB+P44GimBg7AABFEx1BtFBaBJWlrHpKln6jpLP7xp1BBwEkeg6qBQIOBGq4EOLRzNn7eoXBGiYEwD3PuMAB5D3YiPMeRwJ6cmnrgOefwF5L3fEcVe69N472+vvMWMAj6-giufAEbdQRb2kBOHQn9X7kkpIyABH4-6fyAVwMh6ht671dMsAgcc4iwIOHkIwmh7SeCFBI5OkdwKsi7p2N+JBWCaCgCo8CMiaHhVPpFGA1hbD2EcIwgWCAwguDcB4LwqRfL8kbq1Fu5dbETg7tKbuep6GwAsXYBwF9QhXzbvAexrh3CeCpMeaJji4lJxLs3Mu41vHJGZDAY8HoN4iKTgGIMIZUihQABT72vlzacQ50n8z3NrKIiTYleBlMMAAlDoUYUQ8mbxKIE8xNgQnWMvhzKJDiWnxKaRMpxjgDIwFSW1YqrdMmQGybk+A+TsrzKKdWUpNcKnyiYShGpniMkNJDtMmJsz+pi2GP0AAjio6+d93gyH6CAZ5xzt6sOSJ0lA3TekiP6aY8+wSrFhJipEgAIuSHRejUgbK2YUysxTspoHKZU75EBErJW5o8r5qzXkPw+YSi5PzOb-MBZsvpCCBngtCXkWkApQRlAgPAKIZT2lHNsfAWFcjdFQBBWfIJQyIVMrACy8AbKOUJJmck+ZYzmmzOGGU5w1y4nymVXE7lETeXaq8N6K5SSvDDBKAmelYrGXMqmjKqIcqNXOPmYss59TJoTlVeqk1pgr4GvgLqpV8rDUOu9WahBKgx5QH5fC1AdquUlAjf8KINJ2WcoYJEQg7SE3JH+AAVRTRysphByiZs+Im2SaAo1wsFUWzIUA8CsEuPwUtygc0wHtKkaIRaJDSBkC28twBO25qLYYYw8AW1AAhttps://www.typescriptlang.org/play#code/MYewdgzgLgBFCmAPWBeGBvAUDGEBcMARBAIYAmJhANNnAYVOZTTgK4FY5sCM9r3hWgF8WMeAFsADlACeHIZgWZQkWKwBOAGxhpOMAG4lNrePVIVBSsvGCaS6+DDAlx8CJJLBHAaRABLMEc9WUlHADkkKAAVdRJIOyg-cAgdDFocBGQCEPgQADM4SIBudJgNTWyZUPyyrRKcIRKlHJgAKX8wAB4AZW4qGG6AJgA+VN6xZHgwMhTodQCAc1oAfgHBiYRp2ah5sCWuGFWAAwASdF6hADozoaEj0oJe2gJA-Xh1EswkSRB1WBaYnEIAkkpAAAokKAACwgnVoUVEUQAgmQyAAlEAgWCRKYzODqEwwAA+ZWm8DyAXgZFSrDJFMCZEwo10tAA2t4YAEYABRZCxYBQToAa3gMhqCNwO0WwwAugQouyZRtcSkkepYjI4QcAPTazkFADujihJDeMDi5vVJBkMBqIAARgArGxQCClNE2X5kTpzRb9WlCsAgA1gYa0MMHY5nbx3B4wXX6mBGmAms0Wh3OgWlBXeJU4rYwD2gdTe317f1gQPB0OlZalA7I1EYrHKgs7Ez1rhR9Axo7EtodTrefqA+KQ0EQCHQ2E5mUjlHozFQYYRg5cAjtAJDkexMeJZJTmGdWfzptLlednAJkmnHt3eMAKhgC5geV+RAzhBgD+1l-jepJTcug5fM8TLBZDhgW9exgAgjiOHcgRBA9ISPE98RMC8DgIBM-ENY1TUcC17A1W0CkkeZxD8RI3jdBtFVbPE1Q1H0pT2fswFYcR7Xeft7UxTR4DiVccG7Xs41w-CU0I80YAovwqJoxxwO1TjuPebV+JAQS4mzBjQO2XYIJJNSePUPiBKEsBaxgEDJgLcDOzE2M11gqD7mw9ymlZXkdk8QURTFAoJXA2VPm+X5-iqRxR2BcdkiRTRNEPFIWRwVkwk5MAeT5fzhVFGpfEpS4ImQWLkMgfpQrlNIDnZLKcr8gV8qC2yOngErInK+LIAyudJSM2UCCKwJOrK3c4v3XqwhlfT7KYq1NU7SSkwItNspI60yNtJ0XTotciy9VijIrKsQxEmALtEqCzjCIQ8GjFy1xwvU8NW6T1p2zMoE7EaOtK6IJoqiA+rmzY8UOktjr9UkzprVy61cg4b1u+7Hr7bUnxfN9zMIT9v1-JGuEAwc-1cuzwcMxZINvO6HrvPs4NRvAELJtduqmydUNhP6xsBpCepBmbFX6dt4CupGJZexNk1TIiNsW7b5MUvxaN+9q+Y5idQdzRjVUW6H2JMrizIs7SrIl7s6fRztpbe2WZJIOTKOo1XlLYhZVJNjStJ06zyY1gGteSHW83mqmjacb3zJJX2rKc2y9YGxY-yttGGb-Jn0Dpjznq84QfNy5rAsKwOuqBwW+qqj2wsUQumoCgqCl5oOK856vBplT5MYfbAnwhCAIGpx1WGgKCMz7PwUidiAoUi4BWFgHGoPQGAHCgDQwAAeV2gV8AwxwXJ-L5EB+P44GimBg7AABFEx1BtFBaBJWlrHpKln6jpLP7xp1BBwEkeg6qBQIOBGq4EOLRzNn7eoXBGiYEwD3PuMAB5D3YiPMeRwJ6cmnrgOefwF5L3fEcVe69N472+vvMWMAj6-giufAEbdQRb2kBOHQn9X7kkpIyABH4-6fyAVwMh6ht671dMsAgcc4iwIOHkIwmh7SeCFBI5OkdwKsi7p2N+JBWCaCgCo8CMiaHhVPpFGA1hbD2EcIwgWCAwguDcB4LwqRfL8kbq1Fu5dbETg7tKbuep6GwAsXYBwF9QhXzbvAexrh3CeCpMeaJji4lJxLs3Mu41vHJGZDAY8HoN4iKTgGIMIZUihQABT72vlzacQ50n8z3NrKIiTYleBlMMAAlDoUYUQ8mbxKIE8xNgQnWMvhzKJDiWnxKaRMpxjgDIwFSW1YqrdMmQGybk+A+TsrzKKdWUpNcKnyiYShGpniMkNJDtMmJsz+pi2GP0AAjio6+d93gyH6CAZ5xzt6sOSJ0lA3TekiP6aY8+wSrFhJipEgAIuSHRejUgbK2YUysxTspoHKZU75EBErJW5o8r5qzXkPw+YSi5PzOb-MBZsvpCCBngtCXkWkApQRlAgPAKIZT2lHNsfAWFcjdFQBBWfIJQyIVMrACy8AbKOUJJmck+ZYzmmzOGGU5w1y4nymVXE7lETeXaq8N6K5SSvDDBKAmelYrGXMqmjKqIcqNXOPmYss59TJoTlVeqk1pgr4GvgLqpV8rDUOu9WahBKgx5QH5fC1AdquUlAjf8KINJ2WcoYJEQg7SE3JH+AAVRTRysphByiZs+Im2SaAo1wsFUWzIUA8CsEuPwUtygc0wHtKkaIRaJDSBkC28twBO25qLYYYw8AW1AA
7
+ */
8
+ export {};
@@ -1,50 +1,16 @@
1
- export declare type TranslateNamespace = Extract<keyof Koine.NextTranslations, string>;
2
- declare type Join<S1, S2> = S1 extends string ? S2 extends string ? `${S1}.${S2}` : S1 : never;
3
- export declare type TranslationsPaths<T, TAddRoot extends true | undefined = undefined> = {
4
- [K in keyof T]: T[K] extends Record<string, unknown> ? K extends string ? TAddRoot extends true ? `${K}` | Join<K, TranslationsPaths<T[K], TAddRoot>> : Join<K, TranslationsPaths<T[K], TAddRoot>> : K : K;
5
- }[keyof T];
6
- export declare type TranslationsAllPaths = {
7
- [N in Extract<keyof Koine.NextTranslations, string>]: {
8
- [K in Extract<keyof Koine.NextTranslations[N], string>]: Koine.NextTranslations[N][K] extends Array<Record<string, unknown>> ? `${N}:${K}` : Koine.NextTranslations[N][K] extends Record<string, unknown> ? `${N}:${K}` | Join<K extends string ? `${N}:${K}` : `${N}:`, TranslationsPaths<Koine.NextTranslations[N][K], true>> : Koine.NextTranslations[N][K] extends Array<string | number | boolean> ? `${N}:${K}` : Koine.NextTranslations[N][K] extends string | number | boolean ? K extends string ? `${N}:${K}` : `${N}:` : ``;
9
- }[Extract<keyof Koine.NextTranslations[N], string>];
10
- }[Extract<keyof Koine.NextTranslations, string>];
1
+ import type { TranslateNamespace, TranslateDefault, TranslateNamespaced } from "../types";
11
2
  /**
12
- * Passing just `obj` is a shortcut for `{ returnObjects: true }`
13
- */
14
- export declare type TranslationQuery = undefined | null | "obj" | {
15
- [key: string]: string | number | boolean;
16
- };
17
- /**
18
- * Passing just `obj` is a shortcut for `{ returnObjects: true }`
19
- */
20
- export declare type TranslationOptions = undefined | "obj" | {
21
- returnObjects?: boolean;
22
- fallback?: string | string[];
23
- default?: string;
24
- };
25
- export declare type TranslateLoose = (s: any, // s: string,
26
- q?: any, // q?: TranslationQuery,
27
- o?: any) => string;
28
- export declare type Translate<TNamespace extends keyof Koine.NextTranslations | undefined> = TNamespace extends keyof Koine.NextTranslations ? TranslateNamespaced<TNamespace> : TranslateDefault;
29
- export declare type TranslateDefault = <TReturn extends unknown = string>(s: TranslationsAllPaths, q?: TranslationQuery, o?: TranslationOptions) => TReturn;
30
- export declare type TranslateNamespaced<TNamespace extends keyof Koine.NextTranslations> = <TReturn extends unknown = string>(s: TranslationsPaths<Koine.NextTranslations[TNamespace], true>, q?: TranslationQuery, o?: TranslationOptions) => TReturn;
31
- /**
32
- * Wrap `next-translate` useTranslations adding the `obj` second argument shortcut
33
- * and type safety
3
+ * Wrap `next-translate` useTranslations for type safet and adding the `obj`
4
+ * second argument shortcut for `{ returnObjects: true }`
34
5
  *
35
6
  * @see https://github.com/vinissimus/next-translate/issues/513#issuecomment-779826418
7
+ *
8
+ * About the typescript support for translation strings see:
9
+ * - https://github.com/vinissimus/next-translate/issues/721
10
+ *
11
+ * **NOTE**: To make typescript work nicely here make sure to enable
12
+ * [`resolveJsonModule`](https://www.typescriptlang.org/tsconfig#resolveJsonModule)
13
+ * in your `tsconfig.json` file.
36
14
  */
37
15
  export declare function useT(): TranslateDefault;
38
16
  export declare function useT<TNamespace extends TranslateNamespace>(namespace: TNamespace): TranslateNamespaced<TNamespace>;
39
- export {};
40
- /**
41
- * Using this as generic instead of the interface on the namespace `Koine.NextTranslations`
42
- * generates the typescript warning `Type instantiation is excessively deep and possibly infinite.`
43
- * Its usage is left here and commented out. Maybe we can restore it once we find
44
- * the time to look for a way to avoid the warning
45
- */
46
- /**
47
- * Instead of wrapping the `useTranslation` hook from [`next-translate`](https://github.com/vinissimus/next-translate/blob/master/src/useTranslation.tsx)
48
- * we might just rewrite it with our custom implementation but the `_context`
49
- * to use is not exposed by the library...
50
- */
@@ -1,105 +1,19 @@
1
- /* eslint-disable @typescript-eslint/no-unnecessary-type-constraint */
2
- /**
3
- * @file
4
- *
5
- * About the typescript support for translation strings @see:
6
- * - https://github.com/vinissimus/next-translate/issues/721
7
- */
8
1
  import { useMemo } from "react";
9
2
  import useTranslation from "next-translate/useTranslation";
10
3
  export function useT(namespace) {
11
4
  var t = useTranslation().t;
12
5
  var tMemoized = useMemo(function () {
13
6
  return function (s, q, o) {
14
- return t(
15
- // @ts-expect-error again...
16
- (namespace ? "".concat(namespace, ":").concat(s) : s), q === "obj" ? null : q, q === "obj" || o === "obj" ? { returnObjects: true } : o
7
+ return t(namespace ? "".concat(namespace, ":").concat(s) : s, q === "obj" ? null : q, q === "obj" || o === "obj" ? { returnObjects: true } : o
17
8
  // ) as TReturn extends (undefined | never | unknown) ? TranslateReturn<TranslationQuery, TranslationOptions> : TReturn;
18
9
  );
19
10
  };
20
11
  }, [t, namespace]);
21
12
  return tMemoized;
22
13
  }
23
- /**
24
- * Using this as generic instead of the interface on the namespace `Koine.NextTranslations`
25
- * generates the typescript warning `Type instantiation is excessively deep and possibly infinite.`
26
- * Its usage is left here and commented out. Maybe we can restore it once we find
27
- * the time to look for a way to avoid the warning
28
- */
29
- // type Translations = { [key: string]: Record<string, unknown> };
30
- // export type TranslationsAllPaths<TTranslations extends Translations> = {
31
- // [N in Extract<keyof TTranslations, string>]: {
32
- // [K in Extract<
33
- // keyof TTranslations[N],
34
- // string
35
- // >]: TTranslations[N][K] extends Array<
36
- // // if we have an array of objects
37
- // Record<string, unknown>
38
- // >
39
- // ? Join<
40
- // K extends string ? `${N}:${K}` : `${N}:`,
41
- // Paths<TTranslations[N][K], true>
42
- // >
43
- // : // if we have an object
44
- // TTranslations[N][K] extends Record<string, unknown>
45
- // ? Join<
46
- // K extends string ? `${N}:${K}` : `${N}:`,
47
- // Paths<TTranslations[N][K], true>
48
- // > /* &
49
- // Record<TTranslations[N][K], object> */
50
- // : // if we have an array of primitives
51
- // TTranslations[N][K] extends Array<string | number | boolean>
52
- // ? Join<
53
- // K extends string ? `${N}:${K}` : `${N}`,
54
- // Paths<TTranslations[N][K], true>
55
- // >
56
- // : // if we have a primitve string/number/boolean
57
- // TTranslations[N][K] extends string | number | boolean
58
- // ? K extends string
59
- // ? `${N}:${K}`
60
- // : `${N}:`
61
- // : ``;
62
- // }[Extract<keyof TTranslations[N], string>];
63
- // }[Extract<keyof TTranslations, string>];
64
- // export type Translate<
65
- // TTranslations extends Translations = Koine.NextTranslations,
66
- // TNamespace extends undefined | keyof TTranslations = undefined
67
- // > = <TReturn extends unknown = string>(
68
- // s: TNamespace extends keyof TTranslations
69
- // ? Paths<TTranslations[TNamespace]>
70
- // : TranslationsAllPaths<TTranslations>,
71
- // q?: TranslationQuery,
72
- // o?: TranslationOptions
73
- // ) => TReturn;
74
- // export function useT<
75
- // TTranslations extends Translations = Koine.NextTranslations,
76
- // TNamespace extends keyof TTranslations | undefined = undefined
77
- // >(namespace?: TNamespace) {
78
- // const t = useTranslation().t;
79
- // const tMemoized = useMemo(
80
- // () =>
81
- // <TReturn extends unknown = string>(
82
- // s: TNamespace extends keyof TTranslations
83
- // ? Paths<TTranslations[TNamespace], true>
84
- // : TranslationsAllPaths<TTranslations>,
85
- // q?: TranslationQuery,
86
- // o?: TranslationOptions
87
- // ) =>
88
- // t(
89
- // namespace ? `${namespace}:${s}` : s,
90
- // q === "obj" ? null : q,
91
- // q === "obj" || o === "obj" ? { returnObjects: true } : o
92
- // // ) as TReturn extends (undefined | never | unknown) ? TranslateReturn<TranslationQuery, TranslationOptions> : TReturn;
93
- // ) as TReturn,
94
- // [t, namespace]
95
- // );
96
- // return tMemoized;
97
- // }
98
- /**
99
- * Instead of wrapping the `useTranslation` hook from [`next-translate`](https://github.com/vinissimus/next-translate/blob/master/src/useTranslation.tsx)
100
- * we might just rewrite it with our custom implementation but the `_context`
101
- * to use is not exposed by the library...
102
- */
14
+ // Instead of wrapping the `useTranslation` hook from [`next-translate`](https://github.com/vinissimus/next-translate/blob/master/src/useTranslation.tsx)
15
+ // we might just rewrite it with our custom implementation but the `_context`
16
+ // to use is not exposed by the library...
103
17
  // import { useContext, useMemo } from "react"
104
18
  // import wrapTWithDefaultNs from "next-translate/lib/cjs/wrapTWithDefaultNs";
105
19
  // import I18nContext from "next-translate/lib/cjs/_context";
@@ -4,5 +4,10 @@ exports.T = void 0;
4
4
  var tslib_1 = require("tslib");
5
5
  var jsx_runtime_1 = require("react/jsx-runtime");
6
6
  var Trans_1 = tslib_1.__importDefault(require("next-translate/Trans"));
7
+ /**
8
+ * **NOTE**: To make typescript work nicely here make sure to enable
9
+ * [`resolveJsonModule`](https://www.typescriptlang.org/tsconfig#resolveJsonModule)
10
+ * in your `tsconfig.json` file.
11
+ */
7
12
  var T = function (props) { return (0, jsx_runtime_1.jsx)(Trans_1.default, tslib_1.__assign({}, props)); };
8
13
  exports.T = T;
@@ -3,11 +3,10 @@
3
3
  Object.defineProperty(exports, "__esModule", { value: true });
4
4
  exports.getT = void 0;
5
5
  var tslib_1 = require("tslib");
6
+ var getT_1 = tslib_1.__importDefault(require("next-translate/getT"));
6
7
  /**
7
- * @file
8
- *
9
- * About the typescript support for translation strings @see:
10
- * - https://github.com/vinissimus/next-translate/issues/721
8
+ * **NOTE**: To make typescript work nicely here make sure to enable
9
+ * [`resolveJsonModule`](https://www.typescriptlang.org/tsconfig#resolveJsonModule)
10
+ * in your `tsconfig.json` file.
11
11
  */
12
- var getT_1 = tslib_1.__importDefault(require("next-translate/getT"));
13
12
  exports.getT = getT_1.default;
@@ -7,3 +7,4 @@ tslib_1.__exportStar(require("./translationAsOptions"), exports);
7
7
  tslib_1.__exportStar(require("./useDateFormat"), exports);
8
8
  tslib_1.__exportStar(require("./useLocale"), exports);
9
9
  tslib_1.__exportStar(require("./useT"), exports);
10
+ tslib_1.__exportStar(require("./types"), exports);
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ /**
3
+ * @file
4
+ *
5
+ * Test this on TSplayground:
6
+ *
7
+ * https://www.typescriptlang.org/play#code/MYewdgzgLgBFCmAPWBeGBvAUDGEBcMARBAIYAmJhANNnAYVOZTTgK4FY5sCM9r3hWgF8WMeAFsADlACeHIZgWZQkWKwBOAGxhpOMAG4lNrePVIVBSsvGCaS6+DDAlx8CJJLBHAaRABLMEc9WUlHADkkKAAVdRJIOyg-cAgdDFocBGQCEPgQADM4SIBudJgNTWyZUPyyrRKcIRKlHJgAKX8wAB4AZW4qGG6AJgA+VN6xZHgwMhTodQCAc1oAfgHBiYRp2ah5sCWuGFWAAwASdF6hADozoaEj0oJe2gJA-Xh1EswkSRB1WBaYnEIAkkpAAAokKAACwgnVoUVEUQAgmQyAAlEAgWCRKYzODqEwwAA+ZWm8DyAXgZFSrDJFMCZEwo10tAA2t4YAEYABRZCxYBQToAa3gMhqCNwO0WwwAugQouyZRtcSkkepYjI4QcAPTazkFADujihJDeMDi5vVJBkMBqIAARgArGxQCClNE2X5kTpzRb9WlCsAgA1gYa0MMHY5nbx3B4wXX6mBGmAms0Wh3OgWlBXeJU4rYwD2gdTe317f1gQPB0OlZalA7I1EYrHKgs7Ez1rhR9Axo7EtodTrefqA+KQ0EQCHQ2E5mUjlHozFQYYRg5cAjtAJDkexMeJZJTmGdWfzptLlednAJkmnHt3eMAKhgC5geV+RAzhBgD+1l-jepJTcug5fM8TLBZDhgW9exgAgjiOHcgRBA9ISPE98RMC8DgIBM-ENY1TUcC17A1W0CkkeZxD8RI3jdBtFVbPE1Q1H0pT2fswFYcR7Xeft7UxTR4DiVccG7Xs41w-CU0I80YAovwqJoxxwO1TjuPebV+JAQS4mzBjQO2XYIJJNSePUPiBKEsBaxgEDJgLcDOzE2M11gqD7mw9ymlZXkdk8QURTFAoJXA2VPm+X5-iqRxR2BcdkiRTRNEPFIWRwVkwk5MAeT5fzhVFGpfEpS4ImQWLkMgfpQrlNIDnZLKcr8gV8qC2yOngErInK+LIAyudJSM2UCCKwJOrK3c4v3XqwhlfT7KYq1NU7SSkwItNspI60yNtJ0XTotciy9VijIrKsQxEmALtEqCzjCIQ8GjFy1xwvU8NW6T1p2zMoE7EaOtK6IJoqiA+rmzY8UOktjr9UkzprVy61cg4b1u+7Hr7bUnxfN9zMIT9v1-JGuEAwc-1cuzwcMxZINvO6HrvPs4NRvAELJtduqmydUNhP6xsBpCepBmbFX6dt4CupGJZexNk1TIiNsW7b5MUvxaN+9q+Y5idQdzRjVUW6H2JMrizIs7SrIl7s6fRztpbe2WZJIOTKOo1XlLYhZVJNjStJ06zyY1gGteSHW83mqmjacb3zJJX2rKc2y9YGxY-yttGGb-Jn0Dpjznq84QfNy5rAsKwOuqBwW+qqj2wsUQumoCgqCl5oOK856vBplT5MYfbAnwhCAIGpx1WGgKCMz7PwUidiAoUi4BWFgHGoPQGAHCgDQwAAeV2gV8AwxwXJ-L5EB+P44GimBg7AABFEx1BtFBaBJWlrHpKln6jpLP7xp1BBwEkeg6qBQIOBGq4EOLRzNn7eoXBGiYEwD3PuMAB5D3YiPMeRwJ6cmnrgOefwF5L3fEcVe69N472+vvMWMAj6-giufAEbdQRb2kBOHQn9X7kkpIyABH4-6fyAVwMh6ht671dMsAgcc4iwIOHkIwmh7SeCFBI5OkdwKsi7p2N+JBWCaCgCo8CMiaHhVPpFGA1hbD2EcIwgWCAwguDcB4LwqRfL8kbq1Fu5dbETg7tKbuep6GwAsXYBwF9QhXzbvAexrh3CeCpMeaJji4lJxLs3Mu41vHJGZDAY8HoN4iKTgGIMIZUihQABT72vlzacQ50n8z3NrKIiTYleBlMMAAlDoUYUQ8mbxKIE8xNgQnWMvhzKJDiWnxKaRMpxjgDIwFSW1YqrdMmQGybk+A+TsrzKKdWUpNcKnyiYShGpniMkNJDtMmJsz+pi2GP0AAjio6+d93gyH6CAZ5xzt6sOSJ0lA3TekiP6aY8+wSrFhJipEgAIuSHRejUgbK2YUysxTspoHKZU75EBErJW5o8r5qzXkPw+YSi5PzOb-MBZsvpCCBngtCXkWkApQRlAgPAKIZT2lHNsfAWFcjdFQBBWfIJQyIVMrACy8AbKOUJJmck+ZYzmmzOGGU5w1y4nymVXE7lETeXaq8N6K5SSvDDBKAmelYrGXMqmjKqIcqNXOPmYss59TJoTlVeqk1pgr4GvgLqpV8rDUOu9WahBKgx5QH5fC1AdquUlAjf8KINJ2WcoYJEQg7SE3JH+AAVRTRysphByiZs+Im2SaAo1wsFUWzIUA8CsEuPwUtygc0wHtKkaIRaJDSBkC28twBO25qLYYYw8AW1AAhttps://www.typescriptlang.org/play#code/MYewdgzgLgBFCmAPWBeGBvAUDGEBcMARBAIYAmJhANNnAYVOZTTgK4FY5sCM9r3hWgF8WMeAFsADlACeHIZgWZQkWKwBOAGxhpOMAG4lNrePVIVBSsvGCaS6+DDAlx8CJJLBHAaRABLMEc9WUlHADkkKAAVdRJIOyg-cAgdDFocBGQCEPgQADM4SIBudJgNTWyZUPyyrRKcIRKlHJgAKX8wAB4AZW4qGG6AJgA+VN6xZHgwMhTodQCAc1oAfgHBiYRp2ah5sCWuGFWAAwASdF6hADozoaEj0oJe2gJA-Xh1EswkSRB1WBaYnEIAkkpAAAokKAACwgnVoUVEUQAgmQyAAlEAgWCRKYzODqEwwAA+ZWm8DyAXgZFSrDJFMCZEwo10tAA2t4YAEYABRZCxYBQToAa3gMhqCNwO0WwwAugQouyZRtcSkkepYjI4QcAPTazkFADujihJDeMDi5vVJBkMBqIAARgArGxQCClNE2X5kTpzRb9WlCsAgA1gYa0MMHY5nbx3B4wXX6mBGmAms0Wh3OgWlBXeJU4rYwD2gdTe317f1gQPB0OlZalA7I1EYrHKgs7Ez1rhR9Axo7EtodTrefqA+KQ0EQCHQ2E5mUjlHozFQYYRg5cAjtAJDkexMeJZJTmGdWfzptLlednAJkmnHt3eMAKhgC5geV+RAzhBgD+1l-jepJTcug5fM8TLBZDhgW9exgAgjiOHcgRBA9ISPE98RMC8DgIBM-ENY1TUcC17A1W0CkkeZxD8RI3jdBtFVbPE1Q1H0pT2fswFYcR7Xeft7UxTR4DiVccG7Xs41w-CU0I80YAovwqJoxxwO1TjuPebV+JAQS4mzBjQO2XYIJJNSePUPiBKEsBaxgEDJgLcDOzE2M11gqD7mw9ymlZXkdk8QURTFAoJXA2VPm+X5-iqRxR2BcdkiRTRNEPFIWRwVkwk5MAeT5fzhVFGpfEpS4ImQWLkMgfpQrlNIDnZLKcr8gV8qC2yOngErInK+LIAyudJSM2UCCKwJOrK3c4v3XqwhlfT7KYq1NU7SSkwItNspI60yNtJ0XTotciy9VijIrKsQxEmALtEqCzjCIQ8GjFy1xwvU8NW6T1p2zMoE7EaOtK6IJoqiA+rmzY8UOktjr9UkzprVy61cg4b1u+7Hr7bUnxfN9zMIT9v1-JGuEAwc-1cuzwcMxZINvO6HrvPs4NRvAELJtduqmydUNhP6xsBpCepBmbFX6dt4CupGJZexNk1TIiNsW7b5MUvxaN+9q+Y5idQdzRjVUW6H2JMrizIs7SrIl7s6fRztpbe2WZJIOTKOo1XlLYhZVJNjStJ06zyY1gGteSHW83mqmjacb3zJJX2rKc2y9YGxY-yttGGb-Jn0Dpjznq84QfNy5rAsKwOuqBwW+qqj2wsUQumoCgqCl5oOK856vBplT5MYfbAnwhCAIGpx1WGgKCMz7PwUidiAoUi4BWFgHGoPQGAHCgDQwAAeV2gV8AwxwXJ-L5EB+P44GimBg7AABFEx1BtFBaBJWlrHpKln6jpLP7xp1BBwEkeg6qBQIOBGq4EOLRzNn7eoXBGiYEwD3PuMAB5D3YiPMeRwJ6cmnrgOefwF5L3fEcVe69N472+vvMWMAj6-giufAEbdQRb2kBOHQn9X7kkpIyABH4-6fyAVwMh6ht671dMsAgcc4iwIOHkIwmh7SeCFBI5OkdwKsi7p2N+JBWCaCgCo8CMiaHhVPpFGA1hbD2EcIwgWCAwguDcB4LwqRfL8kbq1Fu5dbETg7tKbuep6GwAsXYBwF9QhXzbvAexrh3CeCpMeaJji4lJxLs3Mu41vHJGZDAY8HoN4iKTgGIMIZUihQABT72vlzacQ50n8z3NrKIiTYleBlMMAAlDoUYUQ8mbxKIE8xNgQnWMvhzKJDiWnxKaRMpxjgDIwFSW1YqrdMmQGybk+A+TsrzKKdWUpNcKnyiYShGpniMkNJDtMmJsz+pi2GP0AAjio6+d93gyH6CAZ5xzt6sOSJ0lA3TekiP6aY8+wSrFhJipEgAIuSHRejUgbK2YUysxTspoHKZU75EBErJW5o8r5qzXkPw+YSi5PzOb-MBZsvpCCBngtCXkWkApQRlAgPAKIZT2lHNsfAWFcjdFQBBWfIJQyIVMrACy8AbKOUJJmck+ZYzmmzOGGU5w1y4nymVXE7lETeXaq8N6K5SSvDDBKAmelYrGXMqmjKqIcqNXOPmYss59TJoTlVeqk1pgr4GvgLqpV8rDUOu9WahBKgx5QH5fC1AdquUlAjf8KINJ2WcoYJEQg7SE3JH+AAVRTRysphByiZs+Im2SaAo1wsFUWzIUA8CsEuPwUtygc0wHtKkaIRaJDSBkC28twBO25qLYYYw8AW1AA
8
+ */
9
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -1,23 +1,14 @@
1
1
  "use strict";
2
- /* eslint-disable @typescript-eslint/no-unnecessary-type-constraint */
3
2
  Object.defineProperty(exports, "__esModule", { value: true });
4
3
  exports.useT = void 0;
5
4
  var tslib_1 = require("tslib");
6
- /**
7
- * @file
8
- *
9
- * About the typescript support for translation strings @see:
10
- * - https://github.com/vinissimus/next-translate/issues/721
11
- */
12
5
  var react_1 = require("react");
13
6
  var useTranslation_1 = tslib_1.__importDefault(require("next-translate/useTranslation"));
14
7
  function useT(namespace) {
15
8
  var t = (0, useTranslation_1.default)().t;
16
9
  var tMemoized = (0, react_1.useMemo)(function () {
17
10
  return function (s, q, o) {
18
- return t(
19
- // @ts-expect-error again...
20
- (namespace ? "".concat(namespace, ":").concat(s) : s), q === "obj" ? null : q, q === "obj" || o === "obj" ? { returnObjects: true } : o
11
+ return t(namespace ? "".concat(namespace, ":").concat(s) : s, q === "obj" ? null : q, q === "obj" || o === "obj" ? { returnObjects: true } : o
21
12
  // ) as TReturn extends (undefined | never | unknown) ? TranslateReturn<TranslationQuery, TranslationOptions> : TReturn;
22
13
  );
23
14
  };
@@ -25,86 +16,9 @@ function useT(namespace) {
25
16
  return tMemoized;
26
17
  }
27
18
  exports.useT = useT;
28
- /**
29
- * Using this as generic instead of the interface on the namespace `Koine.NextTranslations`
30
- * generates the typescript warning `Type instantiation is excessively deep and possibly infinite.`
31
- * Its usage is left here and commented out. Maybe we can restore it once we find
32
- * the time to look for a way to avoid the warning
33
- */
34
- // type Translations = { [key: string]: Record<string, unknown> };
35
- // export type TranslationsAllPaths<TTranslations extends Translations> = {
36
- // [N in Extract<keyof TTranslations, string>]: {
37
- // [K in Extract<
38
- // keyof TTranslations[N],
39
- // string
40
- // >]: TTranslations[N][K] extends Array<
41
- // // if we have an array of objects
42
- // Record<string, unknown>
43
- // >
44
- // ? Join<
45
- // K extends string ? `${N}:${K}` : `${N}:`,
46
- // Paths<TTranslations[N][K], true>
47
- // >
48
- // : // if we have an object
49
- // TTranslations[N][K] extends Record<string, unknown>
50
- // ? Join<
51
- // K extends string ? `${N}:${K}` : `${N}:`,
52
- // Paths<TTranslations[N][K], true>
53
- // > /* &
54
- // Record<TTranslations[N][K], object> */
55
- // : // if we have an array of primitives
56
- // TTranslations[N][K] extends Array<string | number | boolean>
57
- // ? Join<
58
- // K extends string ? `${N}:${K}` : `${N}`,
59
- // Paths<TTranslations[N][K], true>
60
- // >
61
- // : // if we have a primitve string/number/boolean
62
- // TTranslations[N][K] extends string | number | boolean
63
- // ? K extends string
64
- // ? `${N}:${K}`
65
- // : `${N}:`
66
- // : ``;
67
- // }[Extract<keyof TTranslations[N], string>];
68
- // }[Extract<keyof TTranslations, string>];
69
- // export type Translate<
70
- // TTranslations extends Translations = Koine.NextTranslations,
71
- // TNamespace extends undefined | keyof TTranslations = undefined
72
- // > = <TReturn extends unknown = string>(
73
- // s: TNamespace extends keyof TTranslations
74
- // ? Paths<TTranslations[TNamespace]>
75
- // : TranslationsAllPaths<TTranslations>,
76
- // q?: TranslationQuery,
77
- // o?: TranslationOptions
78
- // ) => TReturn;
79
- // export function useT<
80
- // TTranslations extends Translations = Koine.NextTranslations,
81
- // TNamespace extends keyof TTranslations | undefined = undefined
82
- // >(namespace?: TNamespace) {
83
- // const t = useTranslation().t;
84
- // const tMemoized = useMemo(
85
- // () =>
86
- // <TReturn extends unknown = string>(
87
- // s: TNamespace extends keyof TTranslations
88
- // ? Paths<TTranslations[TNamespace], true>
89
- // : TranslationsAllPaths<TTranslations>,
90
- // q?: TranslationQuery,
91
- // o?: TranslationOptions
92
- // ) =>
93
- // t(
94
- // namespace ? `${namespace}:${s}` : s,
95
- // q === "obj" ? null : q,
96
- // q === "obj" || o === "obj" ? { returnObjects: true } : o
97
- // // ) as TReturn extends (undefined | never | unknown) ? TranslateReturn<TranslationQuery, TranslationOptions> : TReturn;
98
- // ) as TReturn,
99
- // [t, namespace]
100
- // );
101
- // return tMemoized;
102
- // }
103
- /**
104
- * Instead of wrapping the `useTranslation` hook from [`next-translate`](https://github.com/vinissimus/next-translate/blob/master/src/useTranslation.tsx)
105
- * we might just rewrite it with our custom implementation but the `_context`
106
- * to use is not exposed by the library...
107
- */
19
+ // Instead of wrapping the `useTranslation` hook from [`next-translate`](https://github.com/vinissimus/next-translate/blob/master/src/useTranslation.tsx)
20
+ // we might just rewrite it with our custom implementation but the `_context`
21
+ // to use is not exposed by the library...
108
22
  // import { useContext, useMemo } from "react"
109
23
  // import wrapTWithDefaultNs from "next-translate/lib/cjs/wrapTWithDefaultNs";
110
24
  // import I18nContext from "next-translate/lib/cjs/_context";
package/package.json CHANGED
@@ -7,10 +7,14 @@
7
7
  "peerDependencies": {
8
8
  "react": "^16.8 || ^17 || ^18",
9
9
  "next": "^12.1.6",
10
- "@koine/utils": "1.0.27",
10
+ "@koine/utils": "1.0.30",
11
11
  "framer-motion": "^6.3.10",
12
- "@koine/react": "1.0.27",
12
+ "next-auth": "^4.3.4",
13
+ "@mui/material": "^5.8.2",
14
+ "@emotion/react": "^11.9.0",
13
15
  "styled-components": "^5.3.5",
16
+ "react-hook-form": "^7.31.3",
17
+ "@koine/react": "1.0.30",
14
18
  "@mui/base": "^5.0.0-alpha.83",
15
19
  "react-icons": "^4.4.0",
16
20
  "date-fns": "^2.28.0",
@@ -18,19 +22,15 @@
18
22
  "@tiptap/react": "^2.0.0-beta.109",
19
23
  "@tiptap/starter-kit": "^2.0.0-beta.185",
20
24
  "yup": "^0.32.11",
21
- "react-hook-form": "^7.31.3",
22
25
  "type-fest": "^2.13.0",
23
26
  "react-popper": "^2.3.0",
24
27
  "tslib": "^2.4.0",
25
- "next-auth": "^4.3.4",
26
- "@mui/material": "^5.8.2",
27
- "@emotion/react": "^11.9.0",
28
28
  "@emotion/server": "^11.4.0",
29
29
  "@hookform/resolvers": "^2.9.0",
30
30
  "next-translate": "^1.4.0",
31
31
  "next-seo": "^5.4.0"
32
32
  },
33
- "version": "1.0.27",
33
+ "version": "1.0.30",
34
34
  "module": "./index.js",
35
35
  "types": "./index.d.ts"
36
36
  }
package/typings.d.ts CHANGED
@@ -83,13 +83,8 @@ declare namespace Koine {
83
83
  * - `{ComponentName}`: pascal cased for **components** specific data
84
84
  */
85
85
  interface NextTranslations {
86
- "~": Record<string, string>;
87
- _: Record<string, string>;
86
+ [key: string]: any;
88
87
  }
89
- // interface NextTranslations {
90
- // "~": Record<string, string>;
91
- // _: Record<string, string>;
92
- // }
93
88
  }
94
89
 
95
90
  /**