typed-locales 1.0.37 → 1.0.38
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/.prettierrc +11 -0
- package/dist/formatters.d.ts +1 -1
- package/dist/formatters.d.ts.map +1 -1
- package/dist/formatters.js +10 -6
- package/dist/index.d.ts +11 -10
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +13 -13
- package/dist/validation.d.ts +1 -1
- package/dist/validation.d.ts.map +1 -1
- package/eslint.config.js +46 -0
- package/package.json +10 -2
package/.prettierrc
ADDED
package/dist/formatters.d.ts
CHANGED
package/dist/formatters.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"formatters.d.ts","sourceRoot":"","sources":["../src/formatters.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAE5C,MAAM,MAAM,SAAS,GAAG,CAAC,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,KAAK,MAAM,CAAC;AAErE,QAAA,MAAM,UAAU;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"formatters.d.ts","sourceRoot":"","sources":["../src/formatters.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAE5C,MAAM,MAAM,SAAS,GAAG,CAAC,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,KAAK,MAAM,CAAC;AAErE,QAAA,MAAM,UAAU;;;;;;;;;CAoB8B,CAAC;AAE/C,eAAe,UAAU,CAAC"}
|
package/dist/formatters.js
CHANGED
|
@@ -1,14 +1,18 @@
|
|
|
1
1
|
const formatters = {
|
|
2
|
-
lowercase:
|
|
3
|
-
uppercase:
|
|
4
|
-
capitalize:
|
|
2
|
+
lowercase: value => value?.toString().toLowerCase() ?? '',
|
|
3
|
+
uppercase: value => value?.toString().toUpperCase() ?? '',
|
|
4
|
+
capitalize: value => value
|
|
5
|
+
? value.toString().charAt(0).toUpperCase() + value.toString().slice(1)
|
|
6
|
+
: '',
|
|
5
7
|
void: () => '',
|
|
6
|
-
weekday:
|
|
8
|
+
weekday: value => new Date(value?.toString() ?? '').toLocaleDateString('en-US', {
|
|
9
|
+
weekday: 'long',
|
|
10
|
+
}),
|
|
7
11
|
number: (value, locale) => new Intl.NumberFormat(locale).format(Number(value)),
|
|
8
|
-
json:
|
|
12
|
+
json: value => JSON.stringify(value),
|
|
9
13
|
currency: (value, locale) => new Intl.NumberFormat(locale, {
|
|
10
14
|
style: 'currency',
|
|
11
|
-
currency: 'USD'
|
|
15
|
+
currency: 'USD',
|
|
12
16
|
}).format(Number(value)),
|
|
13
17
|
};
|
|
14
18
|
export default formatters;
|
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import formatters, { type Formatter } from
|
|
1
|
+
import formatters, { type Formatter } from './formatters.js';
|
|
2
2
|
export type ValueType = null | number | string | undefined | object;
|
|
3
3
|
export type TypeMap = {
|
|
4
4
|
string: string;
|
|
@@ -18,12 +18,13 @@ export interface DefaultOverrides {
|
|
|
18
18
|
}
|
|
19
19
|
export interface Overrides extends DefaultOverrides {
|
|
20
20
|
}
|
|
21
|
-
export type Translations = Overrides[
|
|
21
|
+
export type Translations = Overrides['shape'];
|
|
22
22
|
export type TranslationType = DeepResolve<GenerateTranslationType<Translations>>;
|
|
23
|
-
export type Locales = Overrides[
|
|
23
|
+
export type Locales = Overrides['locales'];
|
|
24
24
|
export type PossibleTranslationKeys = DotNestedLeafKeys<Translations>;
|
|
25
25
|
export type ExtraFormatters = Overrides['extraFormatters'];
|
|
26
26
|
export type FormatterTypes = keyof ExtraFormatters | keyof typeof formatters;
|
|
27
|
+
export type TranslateFunctionType = ReturnType<typeof getTranslate>;
|
|
27
28
|
declare const pluralSufixes: readonly ["_none", "_one", "_other"];
|
|
28
29
|
type PluralSuffix = (typeof pluralSufixes)[number];
|
|
29
30
|
type RemovePluralSuffix<T extends string> = T extends `${infer Base}${PluralSuffix}` ? Base : T;
|
|
@@ -70,17 +71,17 @@ type HasPluralKeys<T, Path extends string> = Path extends `${infer K}.${infer Re
|
|
|
70
71
|
type IsPlural<Path extends string> = HasPluralKeys<Translations, Path>;
|
|
71
72
|
type InternalGetValue<T, Path extends string> = Path extends `${infer K}.${infer Rest}` ? K extends keyof T ? InternalGetValue<T[K], Rest> : never : Path extends keyof T ? T[Path] : T[PluralKeys<Path> & keyof T];
|
|
72
73
|
type GetValue<Path extends string> = Exclude<InternalGetValue<Translations, Path>, undefined>;
|
|
73
|
-
type InterpolationProperties<S extends string,
|
|
74
|
+
type InterpolationProperties<S extends string, IsKeyPlural = IsPlural<S>> = DeepResolve<IsKeyPlural extends true ? {
|
|
74
75
|
count: number;
|
|
75
|
-
}
|
|
76
|
-
name:
|
|
76
|
+
} & PlaceholderInfoToObject<Exclude<ExtractPlaceholdersWithTypes<S>, {
|
|
77
|
+
name: 'count';
|
|
77
78
|
type: any;
|
|
78
79
|
}>> : ExtractPlaceholders<S> extends never ? {} : PlaceholderInfoToObject<ExtractPlaceholdersWithTypes<S>>>;
|
|
79
80
|
export type DeepResolve<T> = T extends (...args: any[]) => any ? T : T extends object ? {
|
|
80
81
|
-readonly [K in keyof T]: DeepResolve<T[K]>;
|
|
81
82
|
} : T;
|
|
82
|
-
export declare const getTranslate: (translations: TranslationType, locale: Locales, extraFormatters: ExtraFormatters, baseTranslate?: <Key extends PossibleTranslationKeys>(...props: any) => string) => <Key extends PossibleTranslationKeys>(key: Key, ...arguments_: InterpolationProperties<GetValue<Key
|
|
83
|
-
export { initReact } from
|
|
84
|
-
export { type Formatter, default as defaultFormatters } from
|
|
85
|
-
export { type ValidateTranslation, type EnsureValidTranslation, } from
|
|
83
|
+
export declare const getTranslate: (translations: TranslationType, locale: Locales, extraFormatters: ExtraFormatters, baseTranslate?: <Key extends PossibleTranslationKeys>(...props: any) => string) => <Key extends PossibleTranslationKeys>(key: Key, ...arguments_: InterpolationProperties<GetValue<Key>> extends Record<string, never> ? [] : Key extends PossibleTranslationKeys ? [params: InterpolationProperties<GetValue<Key>>] : []) => GetValue<Key>;
|
|
84
|
+
export { initReact } from './react.js';
|
|
85
|
+
export { type Formatter, default as defaultFormatters } from './formatters.js';
|
|
86
|
+
export { type ValidateTranslation, type EnsureValidTranslation, } from './validation.js';
|
|
86
87
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,UAAU,EAAE,EAAE,KAAK,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAG7D,MAAM,MAAM,SAAS,GAAG,IAAI,GAAG,MAAM,GAAG,MAAM,GAAG,SAAS,GAAG,MAAM,CAAC;AAGpE,MAAM,MAAM,OAAO,GAAG;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,GAAG,EAAE,CAAC;IACb,IAAI,EAAE,IAAI,CAAC;IACX,SAAS,EAAE,SAAS,CAAC;IACrB,GAAG,EAAE,GAAG,CAAC;CACT,CAAC;AAEF,MAAM,WAAW,gBAAgB;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IAC5C,OAAO,EAAE,MAAM,CAAC;IAChB,kBAAkB,EAAE,IAAI,CAAC;CACzB;AACD,MAAM,WAAW,SAAU,SAAQ,gBAAgB;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -1,19 +1,19 @@
|
|
|
1
|
-
import baseFormatters from
|
|
1
|
+
import baseFormatters from './formatters.js';
|
|
2
2
|
// TODO add more
|
|
3
|
-
const pluralSufixes = [
|
|
3
|
+
const pluralSufixes = ['_none', '_one', '_other'];
|
|
4
4
|
// Given a translations object returns a function that can be used to translate keys
|
|
5
5
|
export const getTranslate = (translations, locale, extraFormatters, baseTranslate) => {
|
|
6
6
|
const formatters = { ...baseFormatters, ...extraFormatters };
|
|
7
7
|
function translate(key, ...arguments_) {
|
|
8
|
-
const parts = key.split(
|
|
8
|
+
const parts = key.split('.');
|
|
9
9
|
const parameters = arguments_[0];
|
|
10
10
|
let current = translations;
|
|
11
11
|
let value = key;
|
|
12
12
|
let isPlural = false;
|
|
13
|
-
let lastPart =
|
|
13
|
+
let lastPart = '';
|
|
14
14
|
for (const part of parts) {
|
|
15
15
|
if (current && current[part]) {
|
|
16
|
-
if (typeof current[part] ===
|
|
16
|
+
if (typeof current[part] === 'string') {
|
|
17
17
|
value = current[part];
|
|
18
18
|
break;
|
|
19
19
|
}
|
|
@@ -21,7 +21,7 @@ export const getTranslate = (translations, locale, extraFormatters, baseTranslat
|
|
|
21
21
|
}
|
|
22
22
|
else {
|
|
23
23
|
lastPart = parts.at(-1);
|
|
24
|
-
isPlural = pluralSufixes.some(
|
|
24
|
+
isPlural = pluralSufixes.some(sufix => current[lastPart + sufix] !== undefined);
|
|
25
25
|
if (!isPlural) {
|
|
26
26
|
if (baseTranslate) {
|
|
27
27
|
return baseTranslate(key, parameters);
|
|
@@ -44,13 +44,13 @@ export const getTranslate = (translations, locale, extraFormatters, baseTranslat
|
|
|
44
44
|
const none = current[`${lastPart}_none`];
|
|
45
45
|
const one = current[`${lastPart}_one`];
|
|
46
46
|
const other = current[`${lastPart}_other`];
|
|
47
|
-
if (!count && typeof none ===
|
|
47
|
+
if (!count && typeof none === 'string') {
|
|
48
48
|
value = none;
|
|
49
49
|
}
|
|
50
|
-
else if (count === 1 && typeof one ===
|
|
50
|
+
else if (count === 1 && typeof one === 'string') {
|
|
51
51
|
value = one;
|
|
52
52
|
}
|
|
53
|
-
else if (typeof other ===
|
|
53
|
+
else if (typeof other === 'string') {
|
|
54
54
|
value = other;
|
|
55
55
|
}
|
|
56
56
|
else if (baseTranslate) {
|
|
@@ -63,8 +63,8 @@ export const getTranslate = (translations, locale, extraFormatters, baseTranslat
|
|
|
63
63
|
}
|
|
64
64
|
if (parameters) {
|
|
65
65
|
for (const [parameter, value_] of Object.entries(parameters)) {
|
|
66
|
-
value = value.replaceAll(new RegExp(`{${parameter}(:\w+)?(\\|[\w|]+)?}`,
|
|
67
|
-
const parsedFormatters = (formatters_?.split(
|
|
66
|
+
value = value.replaceAll(new RegExp(`{${parameter}(:\w+)?(\\|[\w|]+)?}`, 'g'), (match, _type, formatters_) => {
|
|
67
|
+
const parsedFormatters = (formatters_?.split('|').filter(Boolean) ??
|
|
68
68
|
[]);
|
|
69
69
|
let formattedValue = String(value_);
|
|
70
70
|
for (const formatter of parsedFormatters) {
|
|
@@ -82,5 +82,5 @@ export const getTranslate = (translations, locale, extraFormatters, baseTranslat
|
|
|
82
82
|
}
|
|
83
83
|
return translate;
|
|
84
84
|
};
|
|
85
|
-
export { initReact } from
|
|
86
|
-
export { default as defaultFormatters } from
|
|
85
|
+
export { initReact } from './react.js';
|
|
86
|
+
export { default as defaultFormatters } from './formatters.js';
|
package/dist/validation.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { FormatterTypes, TypeMap } from
|
|
1
|
+
import type { FormatterTypes, TypeMap } from './index.js';
|
|
2
2
|
type ErrorMessage<Value extends string, T extends string> = `You are using an invalid formatter: ${T} in: "${Value}"`;
|
|
3
3
|
type InvalidTypeError<Value extends string, T extends string> = `You are using an invalid type: ${T} in: "${Value}"`;
|
|
4
4
|
type EmptyBracesError<Value extends string> = `Empty braces {} are not allowed in: "${Value}"`;
|
package/dist/validation.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../src/validation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAE1D,KAAK,YAAY,
|
|
1
|
+
{"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../src/validation.ts"],"names":[],"mappings":"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"}
|
package/eslint.config.js
ADDED
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import js from '@eslint/js';
|
|
2
|
+
import globals from 'globals';
|
|
3
|
+
import tseslint from 'typescript-eslint';
|
|
4
|
+
import markdown from '@eslint/markdown';
|
|
5
|
+
import { defineConfig } from 'eslint/config';
|
|
6
|
+
import prettier from 'eslint-config-prettier';
|
|
7
|
+
import prettierPlugin from 'eslint-plugin-prettier';
|
|
8
|
+
|
|
9
|
+
export default defineConfig([
|
|
10
|
+
{
|
|
11
|
+
files: ['**/*.{js,mjs,cjs,ts,mts,cts}'],
|
|
12
|
+
plugins: {
|
|
13
|
+
js,
|
|
14
|
+
prettier: prettierPlugin,
|
|
15
|
+
},
|
|
16
|
+
extends: ['js/recommended'],
|
|
17
|
+
rules: {
|
|
18
|
+
'prettier/prettier': 'error',
|
|
19
|
+
},
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
files: ['**/*.{js,mjs,cjs,ts,mts,cts}'],
|
|
23
|
+
languageOptions: {
|
|
24
|
+
globals: globals.node,
|
|
25
|
+
},
|
|
26
|
+
},
|
|
27
|
+
...tseslint.configs.recommended,
|
|
28
|
+
{
|
|
29
|
+
files: ['**/*.md'],
|
|
30
|
+
plugins: {
|
|
31
|
+
markdown,
|
|
32
|
+
},
|
|
33
|
+
language: 'markdown/gfm',
|
|
34
|
+
extends: ['markdown/recommended'],
|
|
35
|
+
},
|
|
36
|
+
prettier,
|
|
37
|
+
{
|
|
38
|
+
ignores: [
|
|
39
|
+
'node_modules/**',
|
|
40
|
+
'dist/**',
|
|
41
|
+
'build/**',
|
|
42
|
+
'*.min.js',
|
|
43
|
+
'coverage/**',
|
|
44
|
+
],
|
|
45
|
+
},
|
|
46
|
+
]);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "typed-locales",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.38",
|
|
4
4
|
"description": "Type safe utilities for translating strings",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"types": "./dist/index.d.ts",
|
|
@@ -22,6 +22,14 @@
|
|
|
22
22
|
"typescript": "^5.8.3"
|
|
23
23
|
},
|
|
24
24
|
"devDependencies": {
|
|
25
|
-
"@
|
|
25
|
+
"@eslint/js": "^9.28.0",
|
|
26
|
+
"@eslint/markdown": "^6.4.0",
|
|
27
|
+
"@types/react": "^19.1.5",
|
|
28
|
+
"eslint": "^9.28.0",
|
|
29
|
+
"eslint-config-prettier": "^10.1.5",
|
|
30
|
+
"eslint-plugin-prettier": "^5.4.1",
|
|
31
|
+
"globals": "^16.2.0",
|
|
32
|
+
"prettier": "^3.5.3",
|
|
33
|
+
"typescript-eslint": "^8.33.0"
|
|
26
34
|
}
|
|
27
35
|
}
|