@webiny/i18n 0.0.0-unstable.e53eceafb5 → 0.0.0-unstable.e6f0dc8ca7
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/I18n.d.ts +1 -1
- package/I18n.js +22 -36
- package/I18n.js.map +1 -1
- package/README.md +7 -13
- package/extractor/extract.js +3 -15
- package/extractor/extract.js.map +1 -1
- package/extractor/index.js +7 -14
- package/extractor/index.js.map +1 -1
- package/index.d.ts +3 -3
- package/index.js +7 -25
- package/index.js.map +1 -1
- package/modifiers/countModifier.d.ts +1 -1
- package/modifiers/countModifier.js +1 -8
- package/modifiers/countModifier.js.map +1 -1
- package/modifiers/dateModifier.d.ts +1 -1
- package/modifiers/dateModifier.js +1 -8
- package/modifiers/dateModifier.js.map +1 -1
- package/modifiers/dateTimeModifier.d.ts +1 -1
- package/modifiers/dateTimeModifier.js +1 -8
- package/modifiers/dateTimeModifier.js.map +1 -1
- package/modifiers/genderModifier.d.ts +1 -1
- package/modifiers/genderModifier.js +1 -8
- package/modifiers/genderModifier.js.map +1 -1
- package/modifiers/ifModifier.d.ts +1 -1
- package/modifiers/ifModifier.js +1 -8
- package/modifiers/ifModifier.js.map +1 -1
- package/modifiers/index.d.ts +1 -1
- package/modifiers/index.js +10 -18
- package/modifiers/index.js.map +1 -1
- package/modifiers/numberModifier.d.ts +1 -1
- package/modifiers/numberModifier.js +1 -8
- package/modifiers/numberModifier.js.map +1 -1
- package/modifiers/pluralModifier.d.ts +1 -1
- package/modifiers/pluralModifier.js +1 -8
- package/modifiers/pluralModifier.js.map +1 -1
- package/modifiers/priceModifier.d.ts +1 -1
- package/modifiers/priceModifier.js +1 -8
- package/modifiers/priceModifier.js.map +1 -1
- package/modifiers/timeModifier.d.ts +1 -1
- package/modifiers/timeModifier.js +1 -8
- package/modifiers/timeModifier.js.map +1 -1
- package/package.json +20 -19
- package/processors/default.d.ts +1 -1
- package/processors/default.js +5 -11
- package/processors/default.js.map +1 -1
- package/types.d.ts +1 -1
- package/types.js +1 -5
- package/types.js.map +1 -1
package/I18n.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { Formats, I18NDataValues, Modifier, NumberFormat, PriceFormat, Processor, ProcessorResult, Translations, Translator } from "./types";
|
|
1
|
+
import type { Formats, I18NDataValues, Modifier, NumberFormat, PriceFormat, Processor, ProcessorResult, Translations, Translator } from "./types.js";
|
|
2
2
|
export type Translated = ((values: I18NDataValues) => ProcessorResult | null) | ProcessorResult | null;
|
|
3
3
|
/**
|
|
4
4
|
* Main class used for all I18n needs.
|
package/I18n.js
CHANGED
|
@@ -1,25 +1,12 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
value: true
|
|
7
|
-
});
|
|
8
|
-
exports.default = void 0;
|
|
9
|
-
var _accounting = _interopRequireDefault(require("accounting"));
|
|
10
|
-
var fecha = _interopRequireWildcard(require("fecha"));
|
|
11
|
-
var _shortHash = _interopRequireDefault(require("short-hash"));
|
|
12
|
-
var _assign = _interopRequireDefault(require("lodash/assign"));
|
|
13
|
-
var _get = _interopRequireDefault(require("lodash/get"));
|
|
14
|
-
/**
|
|
15
|
-
* Package short-hash has no types.
|
|
16
|
-
*/
|
|
17
|
-
// @ts-expect-error
|
|
18
|
-
|
|
1
|
+
import accounting from "accounting";
|
|
2
|
+
import * as fecha from "fecha";
|
|
3
|
+
import lodashAssign from "lodash/assign.js";
|
|
4
|
+
import lodashGet from "lodash/get.js";
|
|
5
|
+
import { hash } from "ohash";
|
|
19
6
|
/**
|
|
20
7
|
* Main class used for all I18n needs.
|
|
21
8
|
*/
|
|
22
|
-
class I18N {
|
|
9
|
+
export default class I18N {
|
|
23
10
|
locale = null;
|
|
24
11
|
constructor() {
|
|
25
12
|
/**
|
|
@@ -55,14 +42,14 @@ class I18N {
|
|
|
55
42
|
if (!namespace) {
|
|
56
43
|
throw Error("I18N text namespace not defined.");
|
|
57
44
|
}
|
|
58
|
-
base = (
|
|
59
|
-
let translation = this.getTranslation(namespace + "." + (
|
|
45
|
+
base = lodashGet(base, "raw.0", base);
|
|
46
|
+
let translation = this.getTranslation(namespace + "." + hash(base));
|
|
60
47
|
if (!translation) {
|
|
61
48
|
translation = base;
|
|
62
49
|
}
|
|
63
50
|
const hasVariables = base.includes("{") && base.includes("}");
|
|
64
51
|
if (hasVariables) {
|
|
65
|
-
//
|
|
52
|
+
// oxlint-disable-next-line typescript/no-this-alias
|
|
66
53
|
const $this = this;
|
|
67
54
|
return function i18n(values) {
|
|
68
55
|
const data = {
|
|
@@ -119,7 +106,7 @@ class I18N {
|
|
|
119
106
|
if (typeof value === "string") {
|
|
120
107
|
parsedValue = fecha.parse(value, inputFormat);
|
|
121
108
|
} else {
|
|
122
|
-
parsedValue = value;
|
|
109
|
+
parsedValue = value instanceof Date ? value : new Date(value);
|
|
123
110
|
}
|
|
124
111
|
return fecha.format(parsedValue, outputFormat);
|
|
125
112
|
}
|
|
@@ -139,7 +126,7 @@ class I18N {
|
|
|
139
126
|
if (typeof value === "string") {
|
|
140
127
|
parsedValue = fecha.parse(value, inputFormat);
|
|
141
128
|
} else {
|
|
142
|
-
parsedValue = value;
|
|
129
|
+
parsedValue = value instanceof Date ? value : new Date(value);
|
|
143
130
|
}
|
|
144
131
|
return fecha.format(parsedValue, outputFormat);
|
|
145
132
|
}
|
|
@@ -159,7 +146,7 @@ class I18N {
|
|
|
159
146
|
if (typeof value === "string") {
|
|
160
147
|
parsedValue = fecha.parse(value, inputFormat);
|
|
161
148
|
} else {
|
|
162
|
-
parsedValue = value;
|
|
149
|
+
parsedValue = value instanceof Date ? value : new Date(value);
|
|
163
150
|
}
|
|
164
151
|
return fecha.format(parsedValue, outputFormat);
|
|
165
152
|
}
|
|
@@ -171,14 +158,14 @@ class I18N {
|
|
|
171
158
|
if (!outputFormat) {
|
|
172
159
|
outputFormat = this.getPriceFormat();
|
|
173
160
|
} else {
|
|
174
|
-
outputFormat = (
|
|
161
|
+
outputFormat = lodashAssign({}, this.defaultFormats.price, outputFormat);
|
|
175
162
|
}
|
|
176
163
|
|
|
177
164
|
// Convert placeholders to accounting's placeholders.
|
|
178
165
|
let format = outputFormat.format;
|
|
179
166
|
format = format.replace("{symbol}", "%s");
|
|
180
167
|
format = format.replace("{amount}", "%v");
|
|
181
|
-
return
|
|
168
|
+
return accounting.formatMoney(value, outputFormat.symbol, outputFormat.precision, outputFormat.thousand, outputFormat.decimal, format);
|
|
182
169
|
}
|
|
183
170
|
|
|
184
171
|
/**
|
|
@@ -188,9 +175,9 @@ class I18N {
|
|
|
188
175
|
if (!outputFormat) {
|
|
189
176
|
outputFormat = this.getNumberFormat();
|
|
190
177
|
} else {
|
|
191
|
-
outputFormat = (
|
|
178
|
+
outputFormat = lodashAssign({}, this.defaultFormats.number, outputFormat);
|
|
192
179
|
}
|
|
193
|
-
return
|
|
180
|
+
return accounting.formatNumber(
|
|
194
181
|
/**
|
|
195
182
|
* Cast as number because method transforms it internally.
|
|
196
183
|
*/
|
|
@@ -250,7 +237,7 @@ class I18N {
|
|
|
250
237
|
*/
|
|
251
238
|
|
|
252
239
|
mergeTranslations(translations) {
|
|
253
|
-
return (
|
|
240
|
+
return lodashAssign(this.translations, translations);
|
|
254
241
|
}
|
|
255
242
|
|
|
256
243
|
/**
|
|
@@ -343,37 +330,36 @@ class I18N {
|
|
|
343
330
|
* Returns current format to be used when outputting dates.
|
|
344
331
|
*/
|
|
345
332
|
getDateFormat() {
|
|
346
|
-
return (
|
|
333
|
+
return lodashGet(this.locale, "formats.date", this.defaultFormats.date);
|
|
347
334
|
}
|
|
348
335
|
|
|
349
336
|
/**
|
|
350
337
|
* Returns current format to be used when outputting time.
|
|
351
338
|
*/
|
|
352
339
|
getTimeFormat() {
|
|
353
|
-
return (
|
|
340
|
+
return lodashGet(this.locale, "formats.time", this.defaultFormats.time);
|
|
354
341
|
}
|
|
355
342
|
|
|
356
343
|
/**
|
|
357
344
|
* Returns current format to be used when outputting date/time.
|
|
358
345
|
*/
|
|
359
346
|
getDateTimeFormat() {
|
|
360
|
-
return (
|
|
347
|
+
return lodashGet(this.locale, "formats.datetime", this.defaultFormats.datetime);
|
|
361
348
|
}
|
|
362
349
|
|
|
363
350
|
/**
|
|
364
351
|
* Returns current format to be used when outputting prices.
|
|
365
352
|
*/
|
|
366
353
|
getPriceFormat() {
|
|
367
|
-
return (
|
|
354
|
+
return lodashAssign({}, this.defaultFormats.price, lodashGet(this.locale, "formats.price", {}));
|
|
368
355
|
}
|
|
369
356
|
|
|
370
357
|
/**
|
|
371
358
|
* Returns current format to be used when outputting numbers.
|
|
372
359
|
*/
|
|
373
360
|
getNumberFormat() {
|
|
374
|
-
return (
|
|
361
|
+
return lodashAssign({}, this.defaultFormats.number, lodashGet(this.locale, "formats.number", {}));
|
|
375
362
|
}
|
|
376
363
|
}
|
|
377
|
-
exports.default = I18N;
|
|
378
364
|
|
|
379
365
|
//# sourceMappingURL=I18n.js.map
|
package/I18n.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_accounting","_interopRequireDefault","require","fecha","_interopRequireWildcard","_shortHash","_assign","_get","I18N","locale","constructor","defaultFormats","getDefaultFormats","translations","modifiers","processors","translate","base","namespace","Error","lodashGet","translation","getTranslation","hash","hasVariables","includes","$this","i18n","values","data","key","processor","canExecute","execute","ns","date","value","outputFormat","inputFormat","getDateFormat","parsedValue","parse","format","time","getTimeFormat","dateTime","getDateTimeFormat","price","getPriceFormat","lodashAssign","replace","accounting","formatMoney","symbol","precision","thousand","decimal","number","getNumberFormat","formatNumber","getTranslations","hasTranslation","setTranslation","setTranslations","clearTranslations","mergeTranslations","getLocale","setLocale","registerModifier","modifier","name","registerModifiers","forEach","unregisterModifier","registerProcessor","registerProcessors","unregisterProcessor","datetime","exports","default"],"sources":["I18n.ts"],"sourcesContent":["import accounting from \"accounting\";\nimport * as fecha from \"fecha\";\n/**\n * Package short-hash has no types.\n */\n// @ts-expect-error\nimport hash from \"short-hash\";\nimport lodashAssign from \"lodash/assign\";\nimport lodashGet from \"lodash/get\";\n\nimport type {\n Formats,\n I18NData,\n I18NDataValues,\n Modifier,\n NumberFormat,\n PriceFormat,\n Processor,\n ProcessorResult,\n Translations,\n Translator\n} from \"./types\";\n\nexport type Translated =\n | ((values: I18NDataValues) => ProcessorResult | null)\n | ProcessorResult\n | null;\n/**\n * Main class used for all I18n needs.\n */\nexport default class I18N {\n public locale: string | null = null;\n public defaultFormats: Formats;\n public translations: Translations;\n public modifiers: {\n [name: string]: Modifier;\n };\n public processors: {\n [name: string]: Processor;\n };\n\n public constructor() {\n /**\n * If we fail to fetch formats for currently selected locale, these default formats will be used.\n * @type {{date: string, time: string, datetime: string, number: string}}\n */\n this.defaultFormats = this.getDefaultFormats();\n\n /**\n * All currently-loaded translations, for easier (synchronous) access.\n * @type {{}}\n */\n this.translations = {};\n\n /**\n * All registered modifiers.\n * @type {{}}\n */\n this.modifiers = {};\n\n /**\n * All registered processors.\n * Default built-in processors are registered immediately below.\n * @type {{}}\n */\n this.processors = {};\n }\n\n public translate(base: string, namespace?: string): Translated {\n // Returns full translation for given base text in given namespace (optional).\n // If translation isn't found, base text will be returned.\n // We create a key out of given namespace and base text.\n\n if (!namespace) {\n throw Error(\"I18N text namespace not defined.\");\n }\n\n base = lodashGet(base, \"raw.0\", base);\n\n let translation: string | null = this.getTranslation(namespace + \".\" + hash(base));\n\n if (!translation) {\n translation = base;\n }\n\n const hasVariables = base.includes(\"{\") && base.includes(\"}\");\n if (hasVariables) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const $this = this;\n return function i18n(values: I18NDataValues) {\n const data: I18NData = {\n translation: translation as string,\n base,\n namespace,\n values,\n i18n: $this\n };\n for (const key in $this.processors) {\n const processor = $this.processors[key];\n if (processor.canExecute(data)) {\n return processor.execute(data);\n }\n }\n return null;\n };\n }\n\n const data: I18NData = { translation, base, namespace, values: {}, i18n: this };\n for (const key in this.processors) {\n if (this.processors[key].canExecute(data)) {\n return this.processors[key].execute(data);\n }\n }\n return null;\n }\n\n public namespace(namespace: string): Translator {\n return base => {\n return this.translate(base as string, namespace);\n };\n }\n\n public ns(namespace: string): Translator {\n return this.namespace(namespace);\n }\n\n /**\n * Formats and outputs date.\n * It will try to load format from currently selected locale's settings. If not defined, default formats will be used.\n */\n public date(\n value: Date | string | number,\n outputFormat?: string,\n inputFormat?: string\n ): string {\n if (!outputFormat) {\n outputFormat = this.getDateFormat();\n }\n if (!inputFormat) {\n inputFormat = \"YYYY-MM-DDTHH:mm:ss.SSSZ\";\n }\n\n let parsedValue: number | Date;\n\n if (typeof value === \"string\") {\n parsedValue = fecha.parse(value, inputFormat) as Date;\n } else {\n parsedValue = value;\n }\n\n return fecha.format(parsedValue, outputFormat);\n }\n\n /**\n * Formats and outputs time.\n * It will try to load format from currently selected locale's settings. If not defined, default formats will be used.\n */\n public time(\n value: Date | string | number,\n outputFormat?: string,\n inputFormat?: string\n ): string {\n if (!outputFormat) {\n outputFormat = this.getTimeFormat();\n }\n if (!inputFormat) {\n inputFormat = \"YYYY-MM-DDTHH:mm:ss.SSSZ\";\n }\n\n let parsedValue: number | Date;\n\n if (typeof value === \"string\") {\n parsedValue = fecha.parse(value, inputFormat) as Date;\n } else {\n parsedValue = value;\n }\n\n return fecha.format(parsedValue, outputFormat);\n }\n\n /**\n * Formats and outputs date/time.\n * It will try to load format from currently selected locale's settings. If not defined, default formats will be used.\n */\n dateTime(value: Date | string | number, outputFormat?: string, inputFormat?: string): string {\n if (!outputFormat) {\n outputFormat = this.getDateTimeFormat();\n }\n if (!inputFormat) {\n inputFormat = \"YYYY-MM-DDTHH:mm:ss.SSSZ\";\n }\n\n let parsedValue: number | Date;\n\n if (typeof value === \"string\") {\n parsedValue = fecha.parse(value, inputFormat) as Date;\n } else {\n parsedValue = value;\n }\n\n return fecha.format(parsedValue, outputFormat);\n }\n\n /**\n * Outputs formatted number as amount of price.\n */\n public price(value: string | number, outputFormat?: any): string {\n if (!outputFormat) {\n outputFormat = this.getPriceFormat();\n } else {\n outputFormat = lodashAssign({}, this.defaultFormats.price, outputFormat);\n }\n\n // Convert placeholders to accounting's placeholders.\n let format = outputFormat.format;\n format = format.replace(\"{symbol}\", \"%s\");\n format = format.replace(\"{amount}\", \"%v\");\n\n return accounting.formatMoney(\n value,\n outputFormat.symbol,\n outputFormat.precision,\n outputFormat.thousand,\n outputFormat.decimal,\n format\n );\n }\n\n /**\n * Outputs formatted number.\n */\n public number(value: string | number, outputFormat?: NumberFormat): string {\n if (!outputFormat) {\n outputFormat = this.getNumberFormat();\n } else {\n outputFormat = lodashAssign({}, this.defaultFormats.number, outputFormat);\n }\n return accounting.formatNumber(\n /**\n * Cast as number because method transforms it internally.\n */\n value as number,\n outputFormat.precision,\n outputFormat.thousand,\n outputFormat.decimal\n );\n }\n\n /**\n * Returns translation for given text key.\n */\n public getTranslation(key?: string): string | null {\n if (!key) {\n return null;\n }\n return this.translations[key];\n }\n\n /**\n * Returns all translations for current locale.\n */\n public getTranslations(): Translations {\n return this.translations;\n }\n\n /**\n * Returns true if given key has a translation for currently set locale.\n */\n public hasTranslation(key: string): boolean {\n return key in this.translations;\n }\n\n /**\n * Sets translation for given text key.\n */\n public setTranslation(key: string, translation: string): I18N {\n this.translations[key] = translation;\n return this;\n }\n\n /**\n * Sets translations that will be used.\n */\n public setTranslations(translations: Translations): I18N {\n this.translations = translations;\n return this;\n }\n\n /**\n * Clears all translations.\n */\n public clearTranslations(): I18N {\n this.setTranslations({});\n return this;\n }\n\n /**\n * Merges given translations object with already existing.\n */\n\n public mergeTranslations(translations: Translations): Translations {\n return lodashAssign(this.translations, translations);\n }\n\n /**\n * Returns currently selected locale (locale's key).\n */\n public getLocale(): null | string {\n return this.locale;\n }\n\n /**\n * Sets current locale.\n */\n public setLocale(locale: string): I18N {\n this.locale = locale;\n return this;\n }\n\n /**\n * Registers single modifier.\n */\n public registerModifier(modifier: Modifier): I18N {\n this.modifiers[modifier.name] = modifier;\n return this;\n }\n\n /**\n * Registers all modifiers in given array.\n */\n public registerModifiers(modifiers: Array<Modifier>): I18N {\n modifiers.forEach(modifier => this.registerModifier(modifier));\n return this;\n }\n\n /**\n * Unregisters given modifier.\n */\n public unregisterModifier(name: string): I18N {\n delete this.modifiers[name];\n return this;\n }\n\n /**\n * Registers single processor.\n */\n public registerProcessor(processor: Processor): I18N {\n this.processors[processor.name] = processor;\n return this;\n }\n\n /**\n * Registers all processors in given array.\n */\n public registerProcessors(processors: Array<Processor>): I18N {\n processors.forEach(processor => this.registerProcessor(processor));\n return this;\n }\n\n /**\n * Unregisters given processor.\n */\n public unregisterProcessor(name: string): I18N {\n delete this.processors[name];\n return this;\n }\n\n /**\n * Returns default formats\n */\n public getDefaultFormats(): Formats {\n return {\n date: \"DD/MM/YYYY\",\n time: \"HH:mm\",\n datetime: \"DD/MM/YYYY HH:mm\",\n price: {\n symbol: \"\",\n format: \"{symbol}{amount}\",\n decimal: \".\",\n thousand: \",\",\n precision: 2\n },\n number: {\n decimal: \".\",\n thousand: \",\",\n precision: 2\n }\n };\n }\n\n /**\n * Returns current format to be used when outputting dates.\n */\n public getDateFormat(): string {\n return lodashGet(this.locale, \"formats.date\", this.defaultFormats.date);\n }\n\n /**\n * Returns current format to be used when outputting time.\n */\n public getTimeFormat(): string {\n return lodashGet(this.locale, \"formats.time\", this.defaultFormats.time);\n }\n\n /**\n * Returns current format to be used when outputting date/time.\n */\n public getDateTimeFormat(): string {\n return lodashGet(this.locale, \"formats.datetime\", this.defaultFormats.datetime);\n }\n\n /**\n * Returns current format to be used when outputting prices.\n */\n public getPriceFormat(): PriceFormat {\n return lodashAssign(\n {},\n this.defaultFormats.price,\n lodashGet(this.locale, \"formats.price\", {})\n );\n }\n\n /**\n * Returns current format to be used when outputting numbers.\n */\n public getNumberFormat(): NumberFormat {\n return lodashAssign(\n {},\n this.defaultFormats.number,\n lodashGet(this.locale, \"formats.number\", {})\n );\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["accounting","fecha","lodashAssign","lodashGet","hash","I18N","locale","constructor","defaultFormats","getDefaultFormats","translations","modifiers","processors","translate","base","namespace","Error","translation","getTranslation","hasVariables","includes","$this","i18n","values","data","key","processor","canExecute","execute","ns","date","value","outputFormat","inputFormat","getDateFormat","parsedValue","parse","Date","format","time","getTimeFormat","dateTime","getDateTimeFormat","price","getPriceFormat","replace","formatMoney","symbol","precision","thousand","decimal","number","getNumberFormat","formatNumber","getTranslations","hasTranslation","setTranslation","setTranslations","clearTranslations","mergeTranslations","getLocale","setLocale","registerModifier","modifier","name","registerModifiers","forEach","unregisterModifier","registerProcessor","registerProcessors","unregisterProcessor","datetime"],"sources":["I18n.ts"],"sourcesContent":["import accounting from \"accounting\";\nimport * as fecha from \"fecha\";\nimport lodashAssign from \"lodash/assign.js\";\nimport lodashGet from \"lodash/get.js\";\n\nimport type {\n Formats,\n I18NData,\n I18NDataValues,\n Modifier,\n NumberFormat,\n PriceFormat,\n Processor,\n ProcessorResult,\n Translations,\n Translator\n} from \"./types.js\";\nimport { hash } from \"ohash\";\n\nexport type Translated =\n | ((values: I18NDataValues) => ProcessorResult | null)\n | ProcessorResult\n | null;\n/**\n * Main class used for all I18n needs.\n */\nexport default class I18N {\n public locale: string | null = null;\n public defaultFormats: Formats;\n public translations: Translations;\n public modifiers: {\n [name: string]: Modifier;\n };\n public processors: {\n [name: string]: Processor;\n };\n\n public constructor() {\n /**\n * If we fail to fetch formats for currently selected locale, these default formats will be used.\n * @type {{date: string, time: string, datetime: string, number: string}}\n */\n this.defaultFormats = this.getDefaultFormats();\n\n /**\n * All currently-loaded translations, for easier (synchronous) access.\n * @type {{}}\n */\n this.translations = {};\n\n /**\n * All registered modifiers.\n * @type {{}}\n */\n this.modifiers = {};\n\n /**\n * All registered processors.\n * Default built-in processors are registered immediately below.\n * @type {{}}\n */\n this.processors = {};\n }\n\n public translate(base: string, namespace?: string): Translated {\n // Returns full translation for given base text in given namespace (optional).\n // If translation isn't found, base text will be returned.\n // We create a key out of given namespace and base text.\n\n if (!namespace) {\n throw Error(\"I18N text namespace not defined.\");\n }\n\n base = lodashGet(base, \"raw.0\", base);\n\n let translation: string | null = this.getTranslation(namespace + \".\" + hash(base));\n\n if (!translation) {\n translation = base;\n }\n\n const hasVariables = base.includes(\"{\") && base.includes(\"}\");\n if (hasVariables) {\n // oxlint-disable-next-line typescript/no-this-alias\n const $this = this;\n return function i18n(values: I18NDataValues) {\n const data: I18NData = {\n translation: translation as string,\n base,\n namespace,\n values,\n i18n: $this\n };\n for (const key in $this.processors) {\n const processor = $this.processors[key];\n if (processor.canExecute(data)) {\n return processor.execute(data);\n }\n }\n return null;\n };\n }\n\n const data: I18NData = { translation, base, namespace, values: {}, i18n: this };\n for (const key in this.processors) {\n if (this.processors[key].canExecute(data)) {\n return this.processors[key].execute(data);\n }\n }\n return null;\n }\n\n public namespace(namespace: string): Translator {\n return base => {\n return this.translate(base as string, namespace);\n };\n }\n\n public ns(namespace: string): Translator {\n return this.namespace(namespace);\n }\n\n /**\n * Formats and outputs date.\n * It will try to load format from currently selected locale's settings. If not defined, default formats will be used.\n */\n public date(\n value: Date | string | number,\n outputFormat?: string,\n inputFormat?: string\n ): string {\n if (!outputFormat) {\n outputFormat = this.getDateFormat();\n }\n if (!inputFormat) {\n inputFormat = \"YYYY-MM-DDTHH:mm:ss.SSSZ\";\n }\n\n let parsedValue: Date;\n\n if (typeof value === \"string\") {\n parsedValue = fecha.parse(value, inputFormat) as Date;\n } else {\n parsedValue = value instanceof Date ? value : new Date(value);\n }\n\n return fecha.format(parsedValue, outputFormat);\n }\n\n /**\n * Formats and outputs time.\n * It will try to load format from currently selected locale's settings. If not defined, default formats will be used.\n */\n public time(\n value: Date | string | number,\n outputFormat?: string,\n inputFormat?: string\n ): string {\n if (!outputFormat) {\n outputFormat = this.getTimeFormat();\n }\n if (!inputFormat) {\n inputFormat = \"YYYY-MM-DDTHH:mm:ss.SSSZ\";\n }\n\n let parsedValue: Date;\n\n if (typeof value === \"string\") {\n parsedValue = fecha.parse(value, inputFormat) as Date;\n } else {\n parsedValue = value instanceof Date ? value : new Date(value);\n }\n\n return fecha.format(parsedValue, outputFormat);\n }\n\n /**\n * Formats and outputs date/time.\n * It will try to load format from currently selected locale's settings. If not defined, default formats will be used.\n */\n dateTime(value: Date | string | number, outputFormat?: string, inputFormat?: string): string {\n if (!outputFormat) {\n outputFormat = this.getDateTimeFormat();\n }\n if (!inputFormat) {\n inputFormat = \"YYYY-MM-DDTHH:mm:ss.SSSZ\";\n }\n\n let parsedValue: Date;\n\n if (typeof value === \"string\") {\n parsedValue = fecha.parse(value, inputFormat) as Date;\n } else {\n parsedValue = value instanceof Date ? value : new Date(value);\n }\n\n return fecha.format(parsedValue, outputFormat);\n }\n\n /**\n * Outputs formatted number as amount of price.\n */\n public price(value: string | number, outputFormat?: any): string {\n if (!outputFormat) {\n outputFormat = this.getPriceFormat();\n } else {\n outputFormat = lodashAssign({}, this.defaultFormats.price, outputFormat);\n }\n\n // Convert placeholders to accounting's placeholders.\n let format = outputFormat.format;\n format = format.replace(\"{symbol}\", \"%s\");\n format = format.replace(\"{amount}\", \"%v\");\n\n return accounting.formatMoney(\n value,\n outputFormat.symbol,\n outputFormat.precision,\n outputFormat.thousand,\n outputFormat.decimal,\n format\n );\n }\n\n /**\n * Outputs formatted number.\n */\n public number(value: string | number, outputFormat?: NumberFormat): string {\n if (!outputFormat) {\n outputFormat = this.getNumberFormat();\n } else {\n outputFormat = lodashAssign({}, this.defaultFormats.number, outputFormat);\n }\n return accounting.formatNumber(\n /**\n * Cast as number because method transforms it internally.\n */\n value as number,\n outputFormat.precision,\n outputFormat.thousand,\n outputFormat.decimal\n );\n }\n\n /**\n * Returns translation for given text key.\n */\n public getTranslation(key?: string): string | null {\n if (!key) {\n return null;\n }\n return this.translations[key];\n }\n\n /**\n * Returns all translations for current locale.\n */\n public getTranslations(): Translations {\n return this.translations;\n }\n\n /**\n * Returns true if given key has a translation for currently set locale.\n */\n public hasTranslation(key: string): boolean {\n return key in this.translations;\n }\n\n /**\n * Sets translation for given text key.\n */\n public setTranslation(key: string, translation: string): I18N {\n this.translations[key] = translation;\n return this;\n }\n\n /**\n * Sets translations that will be used.\n */\n public setTranslations(translations: Translations): I18N {\n this.translations = translations;\n return this;\n }\n\n /**\n * Clears all translations.\n */\n public clearTranslations(): I18N {\n this.setTranslations({});\n return this;\n }\n\n /**\n * Merges given translations object with already existing.\n */\n\n public mergeTranslations(translations: Translations): Translations {\n return lodashAssign(this.translations, translations);\n }\n\n /**\n * Returns currently selected locale (locale's key).\n */\n public getLocale(): null | string {\n return this.locale;\n }\n\n /**\n * Sets current locale.\n */\n public setLocale(locale: string): I18N {\n this.locale = locale;\n return this;\n }\n\n /**\n * Registers single modifier.\n */\n public registerModifier(modifier: Modifier): I18N {\n this.modifiers[modifier.name] = modifier;\n return this;\n }\n\n /**\n * Registers all modifiers in given array.\n */\n public registerModifiers(modifiers: Array<Modifier>): I18N {\n modifiers.forEach(modifier => this.registerModifier(modifier));\n return this;\n }\n\n /**\n * Unregisters given modifier.\n */\n public unregisterModifier(name: string): I18N {\n delete this.modifiers[name];\n return this;\n }\n\n /**\n * Registers single processor.\n */\n public registerProcessor(processor: Processor): I18N {\n this.processors[processor.name] = processor;\n return this;\n }\n\n /**\n * Registers all processors in given array.\n */\n public registerProcessors(processors: Array<Processor>): I18N {\n processors.forEach(processor => this.registerProcessor(processor));\n return this;\n }\n\n /**\n * Unregisters given processor.\n */\n public unregisterProcessor(name: string): I18N {\n delete this.processors[name];\n return this;\n }\n\n /**\n * Returns default formats\n */\n public getDefaultFormats(): Formats {\n return {\n date: \"DD/MM/YYYY\",\n time: \"HH:mm\",\n datetime: \"DD/MM/YYYY HH:mm\",\n price: {\n symbol: \"\",\n format: \"{symbol}{amount}\",\n decimal: \".\",\n thousand: \",\",\n precision: 2\n },\n number: {\n decimal: \".\",\n thousand: \",\",\n precision: 2\n }\n };\n }\n\n /**\n * Returns current format to be used when outputting dates.\n */\n public getDateFormat(): string {\n return lodashGet(this.locale, \"formats.date\", this.defaultFormats.date);\n }\n\n /**\n * Returns current format to be used when outputting time.\n */\n public getTimeFormat(): string {\n return lodashGet(this.locale, \"formats.time\", this.defaultFormats.time);\n }\n\n /**\n * Returns current format to be used when outputting date/time.\n */\n public getDateTimeFormat(): string {\n return lodashGet(this.locale, \"formats.datetime\", this.defaultFormats.datetime);\n }\n\n /**\n * Returns current format to be used when outputting prices.\n */\n public getPriceFormat(): PriceFormat {\n return lodashAssign(\n {},\n this.defaultFormats.price,\n lodashGet(this.locale, \"formats.price\", {})\n );\n }\n\n /**\n * Returns current format to be used when outputting numbers.\n */\n public getNumberFormat(): NumberFormat {\n return lodashAssign(\n {},\n this.defaultFormats.number,\n lodashGet(this.locale, \"formats.number\", {})\n );\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
package/README.md
CHANGED
|
@@ -1,17 +1,11 @@
|
|
|
1
1
|
# @webiny/i18n
|
|
2
|
-
[](https://www.npmjs.com/package/@webiny/i18n)
|
|
3
|
-
[](https://www.npmjs.com/package/@webiny/i18n)
|
|
4
|
-
[](https://github.com/prettier/prettier)
|
|
5
|
-
[](http://makeapullrequest.com)
|
|
6
2
|
|
|
7
|
-
|
|
3
|
+
> [!NOTE]
|
|
4
|
+
> This package is part of the [Webiny](https://www.webiny.com) monorepo.
|
|
5
|
+
> It’s **included in every Webiny project by default** and is not meant to be used as a standalone package.
|
|
8
6
|
|
|
9
|
-
|
|
10
|
-
```
|
|
11
|
-
npm install --save @webiny/i18n
|
|
12
|
-
```
|
|
7
|
+
📘 **Documentation:** [https://www.webiny.com/docs](https://www.webiny.com/docs)
|
|
13
8
|
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
```
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
_This README file is automatically generated during the publish process._
|
package/extractor/extract.js
CHANGED
|
@@ -1,15 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
|
-
Object.defineProperty(exports, "__esModule", {
|
|
5
|
-
value: true
|
|
6
|
-
});
|
|
7
|
-
exports.default = void 0;
|
|
8
|
-
var _shortHash = _interopRequireDefault(require("short-hash"));
|
|
9
|
-
/**
|
|
10
|
-
* Package short-hash has no types.
|
|
11
|
-
*/
|
|
12
|
-
// @ts-expect-error
|
|
1
|
+
import { hash } from "ohash";
|
|
13
2
|
|
|
14
3
|
/**
|
|
15
4
|
* Searches for all declared namespaces.
|
|
@@ -29,7 +18,7 @@ const getNamespaces = source => {
|
|
|
29
18
|
}
|
|
30
19
|
return results;
|
|
31
20
|
};
|
|
32
|
-
|
|
21
|
+
export default source => {
|
|
33
22
|
const results = {};
|
|
34
23
|
const allDeclaredNamespaces = getNamespaces(source);
|
|
35
24
|
for (const variable in allDeclaredNamespaces) {
|
|
@@ -42,12 +31,11 @@ var _default = source => {
|
|
|
42
31
|
|
|
43
32
|
// This is the key - namespace + hash of matched label.
|
|
44
33
|
const matchedText = m[1];
|
|
45
|
-
const key = allDeclaredNamespaces[variable] + "." + (
|
|
34
|
+
const key = allDeclaredNamespaces[variable] + "." + hash(matchedText);
|
|
46
35
|
results[key] = matchedText;
|
|
47
36
|
}
|
|
48
37
|
}
|
|
49
38
|
return results;
|
|
50
39
|
};
|
|
51
|
-
exports.default = _default;
|
|
52
40
|
|
|
53
41
|
//# sourceMappingURL=extract.js.map
|
package/extractor/extract.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["
|
|
1
|
+
{"version":3,"names":["hash","getNamespaces","source","regex","m","results","exec","index","lastIndex","allDeclaredNamespaces","variable","RegExp","matchedText","key"],"sources":["extract.ts"],"sourcesContent":["import { hash } from \"ohash\";\n\n/**\n * Searches for all declared namespaces.\n * Result contains an object with identifiers as keys, and namespaces they represent as values, for example:\n * {ns1: 'Webiny.Ns1', ns2: 'Webiny.Ns2', i18n: 'NewNamespace', t: 'Some.Other.Namespace'}\n * @param source\n */\nconst getNamespaces = (source: string) => {\n const regex = /([a-zA-Z0-9]+)[ ]+=[ ]+i18n.namespace\\(['\"`]([a-zA-Z0-9.]+)['\"`]\\)/g;\n let m;\n\n const results: Record<string, string> = {};\n\n while ((m = regex.exec(source)) !== null) {\n if (m.index === regex.lastIndex) {\n regex.lastIndex++;\n }\n\n results[m[1]] = m[2];\n }\n\n return results;\n};\n\nexport default (source: string) => {\n const results: Record<string, string> = {};\n const allDeclaredNamespaces = getNamespaces(source);\n\n for (const variable in allDeclaredNamespaces) {\n const regex = new RegExp(variable + \"`(.*?)`\", \"g\");\n\n let m;\n while ((m = regex.exec(source)) !== null) {\n if (m.index === regex.lastIndex) {\n regex.lastIndex++;\n }\n\n // This is the key - namespace + hash of matched label.\n const matchedText = m[1];\n const key = allDeclaredNamespaces[variable] + \".\" + hash(matchedText);\n results[key] = matchedText;\n }\n }\n\n return results;\n};\n"],"mappings":"AAAA,SAASA,IAAI,QAAQ,OAAO;;AAE5B;AACA;AACA;AACA;AACA;AACA;AACA,MAAMC,aAAa,GAAIC,MAAc,IAAK;EACtC,MAAMC,KAAK,GAAG,qEAAqE;EACnF,IAAIC,CAAC;EAEL,MAAMC,OAA+B,GAAG,CAAC,CAAC;EAE1C,OAAO,CAACD,CAAC,GAAGD,KAAK,CAACG,IAAI,CAACJ,MAAM,CAAC,MAAM,IAAI,EAAE;IACtC,IAAIE,CAAC,CAACG,KAAK,KAAKJ,KAAK,CAACK,SAAS,EAAE;MAC7BL,KAAK,CAACK,SAAS,EAAE;IACrB;IAEAH,OAAO,CAACD,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGA,CAAC,CAAC,CAAC,CAAC;EACxB;EAEA,OAAOC,OAAO;AAClB,CAAC;AAED,eAAgBH,MAAc,IAAK;EAC/B,MAAMG,OAA+B,GAAG,CAAC,CAAC;EAC1C,MAAMI,qBAAqB,GAAGR,aAAa,CAACC,MAAM,CAAC;EAEnD,KAAK,MAAMQ,QAAQ,IAAID,qBAAqB,EAAE;IAC1C,MAAMN,KAAK,GAAG,IAAIQ,MAAM,CAACD,QAAQ,GAAG,SAAS,EAAE,GAAG,CAAC;IAEnD,IAAIN,CAAC;IACL,OAAO,CAACA,CAAC,GAAGD,KAAK,CAACG,IAAI,CAACJ,MAAM,CAAC,MAAM,IAAI,EAAE;MACtC,IAAIE,CAAC,CAACG,KAAK,KAAKJ,KAAK,CAACK,SAAS,EAAE;QAC7BL,KAAK,CAACK,SAAS,EAAE;MACrB;;MAEA;MACA,MAAMI,WAAW,GAAGR,CAAC,CAAC,CAAC,CAAC;MACxB,MAAMS,GAAG,GAAGJ,qBAAqB,CAACC,QAAQ,CAAC,GAAG,GAAG,GAAGV,IAAI,CAACY,WAAW,CAAC;MACrEP,OAAO,CAACQ,GAAG,CAAC,GAAGD,WAAW;IAC9B;EACJ;EAEA,OAAOP,OAAO;AAClB,CAAC","ignoreList":[]}
|
package/extractor/index.js
CHANGED
|
@@ -1,13 +1,6 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
Object.defineProperty(exports, "__esModule", {
|
|
5
|
-
value: true
|
|
6
|
-
});
|
|
7
|
-
exports.default = void 0;
|
|
8
|
-
var _extract = _interopRequireDefault(require("./extract"));
|
|
9
|
-
var _glob = _interopRequireDefault(require("glob"));
|
|
10
|
-
var _fs = _interopRequireDefault(require("fs"));
|
|
1
|
+
import extract from "./extract.js";
|
|
2
|
+
import fastGlob from "fast-glob";
|
|
3
|
+
import fs from "node:fs";
|
|
11
4
|
class Extractor {
|
|
12
5
|
content = "";
|
|
13
6
|
listOnly = false;
|
|
@@ -24,10 +17,10 @@ class Extractor {
|
|
|
24
17
|
if (!this.glob) {
|
|
25
18
|
return results;
|
|
26
19
|
}
|
|
27
|
-
const paths =
|
|
20
|
+
const paths = fastGlob.sync(this.glob);
|
|
28
21
|
paths.forEach(path => {
|
|
29
|
-
const contents =
|
|
30
|
-
const parsed = (
|
|
22
|
+
const contents = fs.readFileSync(path, "utf8");
|
|
23
|
+
const parsed = extract(contents);
|
|
31
24
|
for (const key in parsed) {
|
|
32
25
|
results[key] = parsed[key];
|
|
33
26
|
}
|
|
@@ -39,6 +32,6 @@ class Extractor {
|
|
|
39
32
|
return this;
|
|
40
33
|
}
|
|
41
34
|
}
|
|
42
|
-
|
|
35
|
+
export default Extractor;
|
|
43
36
|
|
|
44
37
|
//# sourceMappingURL=index.js.map
|
package/extractor/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["
|
|
1
|
+
{"version":3,"names":["extract","fastGlob","fs","Extractor","content","listOnly","setGlob","value","glob","setContent","execute","results","paths","sync","forEach","path","contents","readFileSync","parsed","key","setListOnly","flag"],"sources":["index.ts"],"sourcesContent":["import extract from \"./extract.js\";\nimport fastGlob from \"fast-glob\";\nimport fs from \"node:fs\";\n\nexport interface ExtractorResults {\n [key: string]: string;\n}\nclass Extractor {\n private glob: string | undefined;\n public content = \"\";\n public listOnly = false;\n\n public setGlob(value: string): Extractor {\n this.glob = value;\n return this;\n }\n\n public setContent(content: string): Extractor {\n this.content = content;\n return this;\n }\n\n public execute(): ExtractorResults {\n const results: ExtractorResults = {};\n\n if (!this.glob) {\n return results;\n }\n const paths = fastGlob.sync(this.glob);\n paths.forEach(path => {\n const contents = fs.readFileSync(path, \"utf8\");\n const parsed = extract(contents);\n for (const key in parsed) {\n results[key] = parsed[key];\n }\n });\n\n return results;\n }\n\n public setListOnly(flag = true): Extractor {\n this.listOnly = flag;\n return this;\n }\n}\n\nexport default Extractor;\n"],"mappings":"AAAA,OAAOA,OAAO;AACd,OAAOC,QAAQ,MAAM,WAAW;AAChC,OAAOC,EAAE,MAAM,SAAS;AAKxB,MAAMC,SAAS,CAAC;EAELC,OAAO,GAAG,EAAE;EACZC,QAAQ,GAAG,KAAK;EAEhBC,OAAOA,CAACC,KAAa,EAAa;IACrC,IAAI,CAACC,IAAI,GAAGD,KAAK;IACjB,OAAO,IAAI;EACf;EAEOE,UAAUA,CAACL,OAAe,EAAa;IAC1C,IAAI,CAACA,OAAO,GAAGA,OAAO;IACtB,OAAO,IAAI;EACf;EAEOM,OAAOA,CAAA,EAAqB;IAC/B,MAAMC,OAAyB,GAAG,CAAC,CAAC;IAEpC,IAAI,CAAC,IAAI,CAACH,IAAI,EAAE;MACZ,OAAOG,OAAO;IAClB;IACA,MAAMC,KAAK,GAAGX,QAAQ,CAACY,IAAI,CAAC,IAAI,CAACL,IAAI,CAAC;IACtCI,KAAK,CAACE,OAAO,CAACC,IAAI,IAAI;MAClB,MAAMC,QAAQ,GAAGd,EAAE,CAACe,YAAY,CAACF,IAAI,EAAE,MAAM,CAAC;MAC9C,MAAMG,MAAM,GAAGlB,OAAO,CAACgB,QAAQ,CAAC;MAChC,KAAK,MAAMG,GAAG,IAAID,MAAM,EAAE;QACtBP,OAAO,CAACQ,GAAG,CAAC,GAAGD,MAAM,CAACC,GAAG,CAAC;MAC9B;IACJ,CAAC,CAAC;IAEF,OAAOR,OAAO;EAClB;EAEOS,WAAWA,CAACC,IAAI,GAAG,IAAI,EAAa;IACvC,IAAI,CAAChB,QAAQ,GAAGgB,IAAI;IACpB,OAAO,IAAI;EACf;AACJ;AAEA,eAAelB,SAAS","ignoreList":[]}
|
package/index.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import I18n from "./I18n";
|
|
2
|
-
import defaultProcessor from "./processors/default";
|
|
1
|
+
import I18n from "./I18n.js";
|
|
2
|
+
import defaultProcessor from "./processors/default.js";
|
|
3
3
|
declare const i18n: I18n;
|
|
4
|
-
declare const defaultModifiers: import("./types").Modifier[];
|
|
4
|
+
declare const defaultModifiers: import("./types.js").Modifier[];
|
|
5
5
|
export default i18n;
|
|
6
6
|
export { I18n, defaultModifiers, defaultProcessor };
|
package/index.js
CHANGED
|
@@ -1,29 +1,11 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
});
|
|
7
|
-
Object.defineProperty(exports, "I18n", {
|
|
8
|
-
enumerable: true,
|
|
9
|
-
get: function () {
|
|
10
|
-
return _I18n.default;
|
|
11
|
-
}
|
|
12
|
-
});
|
|
13
|
-
exports.defaultModifiers = exports.default = void 0;
|
|
14
|
-
Object.defineProperty(exports, "defaultProcessor", {
|
|
15
|
-
enumerable: true,
|
|
16
|
-
get: function () {
|
|
17
|
-
return _default2.default;
|
|
18
|
-
}
|
|
19
|
-
});
|
|
20
|
-
var _I18n = _interopRequireDefault(require("./I18n"));
|
|
21
|
-
var _default2 = _interopRequireDefault(require("./processors/default"));
|
|
22
|
-
var _modifiers = _interopRequireDefault(require("./modifiers"));
|
|
23
|
-
const i18n = new _I18n.default();
|
|
24
|
-
const defaultModifiers = exports.defaultModifiers = (0, _modifiers.default)({
|
|
1
|
+
import I18n from "./I18n.js";
|
|
2
|
+
import defaultProcessor from "./processors/default.js";
|
|
3
|
+
import modifiersFactory from "./modifiers/index.js";
|
|
4
|
+
const i18n = new I18n();
|
|
5
|
+
const defaultModifiers = modifiersFactory({
|
|
25
6
|
i18n
|
|
26
7
|
});
|
|
27
|
-
|
|
8
|
+
export default i18n;
|
|
9
|
+
export { I18n, defaultModifiers, defaultProcessor };
|
|
28
10
|
|
|
29
11
|
//# sourceMappingURL=index.js.map
|
package/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["
|
|
1
|
+
{"version":3,"names":["I18n","defaultProcessor","modifiersFactory","i18n","defaultModifiers"],"sources":["index.ts"],"sourcesContent":["import I18n from \"./I18n.js\";\nimport defaultProcessor from \"./processors/default.js\";\nimport modifiersFactory from \"./modifiers/index.js\";\n\nconst i18n = new I18n();\n\nconst defaultModifiers = modifiersFactory({ i18n });\n\nexport default i18n;\n\nexport { I18n, defaultModifiers, defaultProcessor };\n"],"mappings":"AAAA,OAAOA,IAAI;AACX,OAAOC,gBAAgB;AACvB,OAAOC,gBAAgB;AAEvB,MAAMC,IAAI,GAAG,IAAIH,IAAI,CAAC,CAAC;AAEvB,MAAMI,gBAAgB,GAAGF,gBAAgB,CAAC;EAAEC;AAAK,CAAC,CAAC;AAEnD,eAAeA,IAAI;AAEnB,SAASH,IAAI,EAAEI,gBAAgB,EAAEH,gBAAgB","ignoreList":[]}
|
|
@@ -1,10 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.default = void 0;
|
|
7
|
-
var _default = () => {
|
|
1
|
+
export default () => {
|
|
8
2
|
return {
|
|
9
3
|
name: "count",
|
|
10
4
|
execute(value, parameters) {
|
|
@@ -33,6 +27,5 @@ var _default = () => {
|
|
|
33
27
|
}
|
|
34
28
|
};
|
|
35
29
|
};
|
|
36
|
-
exports.default = _default;
|
|
37
30
|
|
|
38
31
|
//# sourceMappingURL=countModifier.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["
|
|
1
|
+
{"version":3,"names":["name","execute","value","parameters","i","length","current","numbers","split","String"],"sources":["countModifier.ts"],"sourcesContent":["import type { Modifier } from \"~/types.js\";\n\nexport default (): Modifier => {\n return {\n name: \"count\",\n execute(value: string, parameters: Array<string>) {\n // Numbers can be single number or ranges.\n for (let i = 0; i < parameters.length; i = i + 2) {\n const current = parameters[i];\n if (current === \"default\") {\n return value + \" \" + parameters[i + 1];\n }\n\n const numbers = current.split(\"-\");\n\n // If we are dealing with a numbers range, then let's check if we are in it.\n if (numbers.length === 2) {\n if (value >= numbers[0] && value <= numbers[1]) {\n return value + \" \" + parameters[i + 1];\n }\n continue;\n }\n\n if (String(value) === numbers[0]) {\n return value + \" \" + parameters[i + 1];\n }\n }\n\n // If we didn't match any condition, let's just remove the received value.\n return value;\n }\n };\n};\n"],"mappings":"AAEA,eAAe,MAAgB;EAC3B,OAAO;IACHA,IAAI,EAAE,OAAO;IACbC,OAAOA,CAACC,KAAa,EAAEC,UAAyB,EAAE;MAC9C;MACA,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGD,UAAU,CAACE,MAAM,EAAED,CAAC,GAAGA,CAAC,GAAG,CAAC,EAAE;QAC9C,MAAME,OAAO,GAAGH,UAAU,CAACC,CAAC,CAAC;QAC7B,IAAIE,OAAO,KAAK,SAAS,EAAE;UACvB,OAAOJ,KAAK,GAAG,GAAG,GAAGC,UAAU,CAACC,CAAC,GAAG,CAAC,CAAC;QAC1C;QAEA,MAAMG,OAAO,GAAGD,OAAO,CAACE,KAAK,CAAC,GAAG,CAAC;;QAElC;QACA,IAAID,OAAO,CAACF,MAAM,KAAK,CAAC,EAAE;UACtB,IAAIH,KAAK,IAAIK,OAAO,CAAC,CAAC,CAAC,IAAIL,KAAK,IAAIK,OAAO,CAAC,CAAC,CAAC,EAAE;YAC5C,OAAOL,KAAK,GAAG,GAAG,GAAGC,UAAU,CAACC,CAAC,GAAG,CAAC,CAAC;UAC1C;UACA;QACJ;QAEA,IAAIK,MAAM,CAACP,KAAK,CAAC,KAAKK,OAAO,CAAC,CAAC,CAAC,EAAE;UAC9B,OAAOL,KAAK,GAAG,GAAG,GAAGC,UAAU,CAACC,CAAC,GAAG,CAAC,CAAC;QAC1C;MACJ;;MAEA;MACA,OAAOF,KAAK;IAChB;EACJ,CAAC;AACL,CAAC","ignoreList":[]}
|
|
@@ -1,10 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.default = void 0;
|
|
7
|
-
var _default = ({
|
|
1
|
+
export default ({
|
|
8
2
|
i18n
|
|
9
3
|
}) => ({
|
|
10
4
|
name: "date",
|
|
@@ -12,6 +6,5 @@ var _default = ({
|
|
|
12
6
|
return i18n.date(value);
|
|
13
7
|
}
|
|
14
8
|
});
|
|
15
|
-
exports.default = _default;
|
|
16
9
|
|
|
17
10
|
//# sourceMappingURL=dateModifier.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["
|
|
1
|
+
{"version":3,"names":["i18n","name","execute","value","date"],"sources":["dateModifier.ts"],"sourcesContent":["import type { Modifier, ModifierOptions } from \"~/types.js\";\n\nexport default ({ i18n }: ModifierOptions): Modifier => ({\n name: \"date\",\n execute(value) {\n return i18n.date(value);\n }\n});\n"],"mappings":"AAEA,eAAe,CAAC;EAAEA;AAAsB,CAAC,MAAgB;EACrDC,IAAI,EAAE,MAAM;EACZC,OAAOA,CAACC,KAAK,EAAE;IACX,OAAOH,IAAI,CAACI,IAAI,CAACD,KAAK,CAAC;EAC3B;AACJ,CAAC,CAAC","ignoreList":[]}
|
|
@@ -1,10 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.default = void 0;
|
|
7
|
-
var _default = ({
|
|
1
|
+
export default ({
|
|
8
2
|
i18n
|
|
9
3
|
}) => ({
|
|
10
4
|
name: "dateTime",
|
|
@@ -12,6 +6,5 @@ var _default = ({
|
|
|
12
6
|
return i18n.dateTime(value);
|
|
13
7
|
}
|
|
14
8
|
});
|
|
15
|
-
exports.default = _default;
|
|
16
9
|
|
|
17
10
|
//# sourceMappingURL=dateTimeModifier.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["
|
|
1
|
+
{"version":3,"names":["i18n","name","execute","value","dateTime"],"sources":["dateTimeModifier.ts"],"sourcesContent":["import type { Modifier, ModifierOptions } from \"~/types.js\";\n\nexport default ({ i18n }: ModifierOptions): Modifier => ({\n name: \"dateTime\",\n execute(value: string) {\n return i18n.dateTime(value);\n }\n});\n"],"mappings":"AAEA,eAAe,CAAC;EAAEA;AAAsB,CAAC,MAAgB;EACrDC,IAAI,EAAE,UAAU;EAChBC,OAAOA,CAACC,KAAa,EAAE;IACnB,OAAOH,IAAI,CAACI,QAAQ,CAACD,KAAK,CAAC;EAC/B;AACJ,CAAC,CAAC","ignoreList":[]}
|
|
@@ -1,10 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.default = void 0;
|
|
7
|
-
var _default = () => {
|
|
1
|
+
export default () => {
|
|
8
2
|
return {
|
|
9
3
|
name: "gender",
|
|
10
4
|
execute(value, parameters) {
|
|
@@ -12,6 +6,5 @@ var _default = () => {
|
|
|
12
6
|
}
|
|
13
7
|
};
|
|
14
8
|
};
|
|
15
|
-
exports.default = _default;
|
|
16
9
|
|
|
17
10
|
//# sourceMappingURL=genderModifier.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["
|
|
1
|
+
{"version":3,"names":["name","execute","value","parameters"],"sources":["genderModifier.ts"],"sourcesContent":["import type { Modifier } from \"~/types.js\";\n\nexport default (): Modifier => {\n return {\n name: \"gender\",\n execute(value: string, parameters: Array<string>) {\n return value === \"male\" ? parameters[0] : parameters[1];\n }\n };\n};\n"],"mappings":"AAEA,eAAe,MAAgB;EAC3B,OAAO;IACHA,IAAI,EAAE,QAAQ;IACdC,OAAOA,CAACC,KAAa,EAAEC,UAAyB,EAAE;MAC9C,OAAOD,KAAK,KAAK,MAAM,GAAGC,UAAU,CAAC,CAAC,CAAC,GAAGA,UAAU,CAAC,CAAC,CAAC;IAC3D;EACJ,CAAC;AACL,CAAC","ignoreList":[]}
|
package/modifiers/ifModifier.js
CHANGED
|
@@ -1,10 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.default = void 0;
|
|
7
|
-
var _default = () => {
|
|
1
|
+
export default () => {
|
|
8
2
|
return {
|
|
9
3
|
name: "if",
|
|
10
4
|
execute(value, parameters) {
|
|
@@ -12,6 +6,5 @@ var _default = () => {
|
|
|
12
6
|
}
|
|
13
7
|
};
|
|
14
8
|
};
|
|
15
|
-
exports.default = _default;
|
|
16
9
|
|
|
17
10
|
//# sourceMappingURL=ifModifier.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["
|
|
1
|
+
{"version":3,"names":["name","execute","value","parameters"],"sources":["ifModifier.ts"],"sourcesContent":["import type { Modifier } from \"~/types.js\";\n\nexport default (): Modifier => {\n return {\n name: \"if\",\n execute(value: string, parameters: Array<string>) {\n return value === parameters[0] ? parameters[1] : parameters[2] || \"\";\n }\n };\n};\n"],"mappings":"AAEA,eAAe,MAAgB;EAC3B,OAAO;IACHA,IAAI,EAAE,IAAI;IACVC,OAAOA,CAACC,KAAa,EAAEC,UAAyB,EAAE;MAC9C,OAAOD,KAAK,KAAKC,UAAU,CAAC,CAAC,CAAC,GAAGA,UAAU,CAAC,CAAC,CAAC,GAAGA,UAAU,CAAC,CAAC,CAAC,IAAI,EAAE;IACxE;EACJ,CAAC;AACL,CAAC","ignoreList":[]}
|
package/modifiers/index.d.ts
CHANGED
package/modifiers/index.js
CHANGED
|
@@ -1,21 +1,13 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
|
-
Object.defineProperty(exports, "__esModule", {
|
|
5
|
-
value: true
|
|
6
|
-
});
|
|
7
|
-
exports.default = void 0;
|
|
8
|
-
var _countModifier = _interopRequireDefault(require("./countModifier"));
|
|
9
|
-
var _genderModifier = _interopRequireDefault(require("./genderModifier"));
|
|
10
|
-
var _ifModifier = _interopRequireDefault(require("./ifModifier"));
|
|
11
|
-
var _pluralModifier = _interopRequireDefault(require("./pluralModifier"));
|
|
12
|
-
var _dateModifier = _interopRequireDefault(require("./dateModifier"));
|
|
13
|
-
var _dateTimeModifier = _interopRequireDefault(require("./dateTimeModifier"));
|
|
14
|
-
var _timeModifier = _interopRequireDefault(require("./timeModifier"));
|
|
15
|
-
var _numberModifier = _interopRequireDefault(require("./numberModifier"));
|
|
16
|
-
var _priceModifier = _interopRequireDefault(require("./priceModifier"));
|
|
17
1
|
// Built-in modifiers
|
|
18
|
-
|
|
19
|
-
|
|
2
|
+
import countModifiers from "./countModifier.js";
|
|
3
|
+
import genderModifier from "./genderModifier.js";
|
|
4
|
+
import ifModifier from "./ifModifier.js";
|
|
5
|
+
import pluralModifier from "./pluralModifier.js";
|
|
6
|
+
import dateModifier from "./dateModifier.js";
|
|
7
|
+
import dateTimeModifier from "./dateTimeModifier.js";
|
|
8
|
+
import timeModifier from "./timeModifier.js";
|
|
9
|
+
import numberModifier from "./numberModifier.js";
|
|
10
|
+
import priceModifier from "./priceModifier.js";
|
|
11
|
+
export default options => [countModifiers(), genderModifier(), ifModifier(), pluralModifier(), dateModifier(options), dateTimeModifier(options), timeModifier(options), numberModifier(options), priceModifier(options)];
|
|
20
12
|
|
|
21
13
|
//# sourceMappingURL=index.js.map
|
package/modifiers/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["
|
|
1
|
+
{"version":3,"names":["countModifiers","genderModifier","ifModifier","pluralModifier","dateModifier","dateTimeModifier","timeModifier","numberModifier","priceModifier","options"],"sources":["index.ts"],"sourcesContent":["// Built-in modifiers\nimport countModifiers from \"./countModifier.js\";\nimport genderModifier from \"./genderModifier.js\";\nimport ifModifier from \"./ifModifier.js\";\nimport pluralModifier from \"./pluralModifier.js\";\nimport dateModifier from \"./dateModifier.js\";\nimport dateTimeModifier from \"./dateTimeModifier.js\";\nimport timeModifier from \"./timeModifier.js\";\nimport numberModifier from \"./numberModifier.js\";\nimport priceModifier from \"./priceModifier.js\";\nimport type { Modifier, ModifierOptions } from \"~/types.js\";\n\nexport default (options: ModifierOptions): Modifier[] => [\n countModifiers(),\n genderModifier(),\n ifModifier(),\n pluralModifier(),\n dateModifier(options),\n dateTimeModifier(options),\n timeModifier(options),\n numberModifier(options),\n priceModifier(options)\n];\n"],"mappings":"AAAA;AACA,OAAOA,cAAc;AACrB,OAAOC,cAAc;AACrB,OAAOC,UAAU;AACjB,OAAOC,cAAc;AACrB,OAAOC,YAAY;AACnB,OAAOC,gBAAgB;AACvB,OAAOC,YAAY;AACnB,OAAOC,cAAc;AACrB,OAAOC,aAAa;AAGpB,eAAgBC,OAAwB,IAAiB,CACrDT,cAAc,CAAC,CAAC,EAChBC,cAAc,CAAC,CAAC,EAChBC,UAAU,CAAC,CAAC,EACZC,cAAc,CAAC,CAAC,EAChBC,YAAY,CAACK,OAAO,CAAC,EACrBJ,gBAAgB,CAACI,OAAO,CAAC,EACzBH,YAAY,CAACG,OAAO,CAAC,EACrBF,cAAc,CAACE,OAAO,CAAC,EACvBD,aAAa,CAACC,OAAO,CAAC,CACzB","ignoreList":[]}
|
|
@@ -1,10 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.default = void 0;
|
|
7
|
-
var _default = ({
|
|
1
|
+
export default ({
|
|
8
2
|
i18n
|
|
9
3
|
}) => ({
|
|
10
4
|
name: "number",
|
|
@@ -12,6 +6,5 @@ var _default = ({
|
|
|
12
6
|
return i18n.number(value);
|
|
13
7
|
}
|
|
14
8
|
});
|
|
15
|
-
exports.default = _default;
|
|
16
9
|
|
|
17
10
|
//# sourceMappingURL=numberModifier.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["
|
|
1
|
+
{"version":3,"names":["i18n","name","execute","value","number"],"sources":["numberModifier.ts"],"sourcesContent":["import type { Modifier, ModifierOptions } from \"~/types.js\";\n\nexport default ({ i18n }: ModifierOptions): Modifier => ({\n name: \"number\",\n execute(value: string) {\n return i18n.number(value);\n }\n});\n"],"mappings":"AAEA,eAAe,CAAC;EAAEA;AAAsB,CAAC,MAAgB;EACrDC,IAAI,EAAE,QAAQ;EACdC,OAAOA,CAACC,KAAa,EAAE;IACnB,OAAOH,IAAI,CAACI,MAAM,CAACD,KAAK,CAAC;EAC7B;AACJ,CAAC,CAAC","ignoreList":[]}
|
|
@@ -1,10 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.default = void 0;
|
|
7
|
-
var _default = () => {
|
|
1
|
+
export default () => {
|
|
8
2
|
return {
|
|
9
3
|
name: "plural",
|
|
10
4
|
execute(value, parameters) {
|
|
@@ -31,6 +25,5 @@ var _default = () => {
|
|
|
31
25
|
}
|
|
32
26
|
};
|
|
33
27
|
};
|
|
34
|
-
exports.default = _default;
|
|
35
28
|
|
|
36
29
|
//# sourceMappingURL=pluralModifier.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["
|
|
1
|
+
{"version":3,"names":["name","execute","value","parameters","i","length","current","numbers","split","String"],"sources":["pluralModifier.ts"],"sourcesContent":["import type { Modifier } from \"~/types.js\";\n\nexport default (): Modifier => {\n return {\n name: \"plural\",\n execute(value: string, parameters: Array<string>) {\n // Numbers can be single number or ranges.\n for (let i = 0; i < parameters.length; i = i + 2) {\n const current = parameters[i];\n if (current === \"default\") {\n return parameters[i + 1];\n }\n\n const numbers = current.split(\"-\");\n\n // If we are dealing with a numbers range, then let's check if we are in it.\n if (numbers.length === 2) {\n if (value >= numbers[0] && value <= numbers[1]) {\n return parameters[i + 1];\n }\n continue;\n }\n\n if (String(value) === numbers[0]) {\n return parameters[i + 1];\n }\n }\n\n return \"\";\n }\n };\n};\n"],"mappings":"AAEA,eAAe,MAAgB;EAC3B,OAAO;IACHA,IAAI,EAAE,QAAQ;IACdC,OAAOA,CAACC,KAAa,EAAEC,UAAyB,EAAE;MAC9C;MACA,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGD,UAAU,CAACE,MAAM,EAAED,CAAC,GAAGA,CAAC,GAAG,CAAC,EAAE;QAC9C,MAAME,OAAO,GAAGH,UAAU,CAACC,CAAC,CAAC;QAC7B,IAAIE,OAAO,KAAK,SAAS,EAAE;UACvB,OAAOH,UAAU,CAACC,CAAC,GAAG,CAAC,CAAC;QAC5B;QAEA,MAAMG,OAAO,GAAGD,OAAO,CAACE,KAAK,CAAC,GAAG,CAAC;;QAElC;QACA,IAAID,OAAO,CAACF,MAAM,KAAK,CAAC,EAAE;UACtB,IAAIH,KAAK,IAAIK,OAAO,CAAC,CAAC,CAAC,IAAIL,KAAK,IAAIK,OAAO,CAAC,CAAC,CAAC,EAAE;YAC5C,OAAOJ,UAAU,CAACC,CAAC,GAAG,CAAC,CAAC;UAC5B;UACA;QACJ;QAEA,IAAIK,MAAM,CAACP,KAAK,CAAC,KAAKK,OAAO,CAAC,CAAC,CAAC,EAAE;UAC9B,OAAOJ,UAAU,CAACC,CAAC,GAAG,CAAC,CAAC;QAC5B;MACJ;MAEA,OAAO,EAAE;IACb;EACJ,CAAC;AACL,CAAC","ignoreList":[]}
|
|
@@ -1,10 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.default = void 0;
|
|
7
|
-
var _default = ({
|
|
1
|
+
export default ({
|
|
8
2
|
i18n
|
|
9
3
|
}) => ({
|
|
10
4
|
name: "price",
|
|
@@ -12,6 +6,5 @@ var _default = ({
|
|
|
12
6
|
return i18n.price(value);
|
|
13
7
|
}
|
|
14
8
|
});
|
|
15
|
-
exports.default = _default;
|
|
16
9
|
|
|
17
10
|
//# sourceMappingURL=priceModifier.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["
|
|
1
|
+
{"version":3,"names":["i18n","name","execute","value","price"],"sources":["priceModifier.ts"],"sourcesContent":["import type { Modifier, ModifierOptions } from \"~/types.js\";\n\nexport default ({ i18n }: ModifierOptions): Modifier => ({\n name: \"price\",\n execute(value: string) {\n return i18n.price(value);\n }\n});\n"],"mappings":"AAEA,eAAe,CAAC;EAAEA;AAAsB,CAAC,MAAgB;EACrDC,IAAI,EAAE,OAAO;EACbC,OAAOA,CAACC,KAAa,EAAE;IACnB,OAAOH,IAAI,CAACI,KAAK,CAACD,KAAK,CAAC;EAC5B;AACJ,CAAC,CAAC","ignoreList":[]}
|
|
@@ -1,10 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.default = void 0;
|
|
7
|
-
var _default = ({
|
|
1
|
+
export default ({
|
|
8
2
|
i18n
|
|
9
3
|
}) => ({
|
|
10
4
|
name: "time",
|
|
@@ -12,6 +6,5 @@ var _default = ({
|
|
|
12
6
|
return i18n.time(value);
|
|
13
7
|
}
|
|
14
8
|
});
|
|
15
|
-
exports.default = _default;
|
|
16
9
|
|
|
17
10
|
//# sourceMappingURL=timeModifier.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["
|
|
1
|
+
{"version":3,"names":["i18n","name","execute","value","time"],"sources":["timeModifier.ts"],"sourcesContent":["import type { Modifier, ModifierOptions } from \"~/types.js\";\n\nexport default ({ i18n }: ModifierOptions): Modifier => ({\n name: \"time\",\n execute(value: string) {\n return i18n.time(value);\n }\n});\n"],"mappings":"AAEA,eAAe,CAAC;EAAEA;AAAsB,CAAC,MAAgB;EACrDC,IAAI,EAAE,MAAM;EACZC,OAAOA,CAACC,KAAa,EAAE;IACnB,OAAOH,IAAI,CAACI,IAAI,CAACD,KAAK,CAAC;EAC3B;AACJ,CAAC,CAAC","ignoreList":[]}
|
package/package.json
CHANGED
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@webiny/i18n",
|
|
3
|
-
"version": "0.0.0-unstable.
|
|
4
|
-
"
|
|
3
|
+
"version": "0.0.0-unstable.e6f0dc8ca7",
|
|
4
|
+
"type": "module",
|
|
5
|
+
"exports": {
|
|
6
|
+
".": "./index.js",
|
|
7
|
+
"./*": "./*"
|
|
8
|
+
},
|
|
5
9
|
"repository": {
|
|
6
10
|
"type": "git",
|
|
7
11
|
"url": "https://github.com/webiny/webiny-js.git"
|
|
@@ -14,30 +18,27 @@
|
|
|
14
18
|
"license": "MIT",
|
|
15
19
|
"dependencies": {
|
|
16
20
|
"accounting": "0.4.1",
|
|
17
|
-
"
|
|
18
|
-
"
|
|
19
|
-
"
|
|
20
|
-
"
|
|
21
|
+
"fast-glob": "3.3.3",
|
|
22
|
+
"fecha": "4.2.3",
|
|
23
|
+
"lodash": "4.18.1",
|
|
24
|
+
"ohash": "2.0.11",
|
|
25
|
+
"yargs": "18.0.0"
|
|
21
26
|
},
|
|
22
27
|
"peerDependencies": {
|
|
23
|
-
"react": "18.
|
|
28
|
+
"react": "18.3.1"
|
|
24
29
|
},
|
|
25
30
|
"devDependencies": {
|
|
26
|
-
"@babel/register": "7.
|
|
27
|
-
"@types/accounting": "0.4.
|
|
28
|
-
"@types/lodash": "4.17.
|
|
29
|
-
"@webiny/
|
|
30
|
-
"
|
|
31
|
-
"
|
|
32
|
-
"
|
|
31
|
+
"@babel/register": "7.29.3",
|
|
32
|
+
"@types/accounting": "0.4.5",
|
|
33
|
+
"@types/lodash": "4.17.24",
|
|
34
|
+
"@webiny/build-tools": "0.0.0-unstable.e6f0dc8ca7",
|
|
35
|
+
"rimraf": "6.1.3",
|
|
36
|
+
"typescript": "6.0.3",
|
|
37
|
+
"vitest": "4.1.5"
|
|
33
38
|
},
|
|
34
39
|
"publishConfig": {
|
|
35
40
|
"access": "public",
|
|
36
41
|
"directory": "dist"
|
|
37
42
|
},
|
|
38
|
-
"
|
|
39
|
-
"build": "node ../cli/bin.js run build",
|
|
40
|
-
"watch": "node ../cli/bin.js run watch"
|
|
41
|
-
},
|
|
42
|
-
"gitHead": "e53eceafb5ce1a3872c9b4548939bb2eae5b1aef"
|
|
43
|
+
"gitHead": "e6f0dc8ca741c1fcc3fec9a5b9e86fdd49544641"
|
|
43
44
|
}
|
package/processors/default.d.ts
CHANGED
package/processors/default.js
CHANGED
|
@@ -1,18 +1,12 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
|
-
Object.defineProperty(exports, "__esModule", {
|
|
5
|
-
value: true
|
|
6
|
-
});
|
|
7
|
-
exports.default = void 0;
|
|
8
|
-
var _trim = _interopRequireDefault(require("lodash/trim"));
|
|
1
|
+
import lodashTrim from "lodash/trim.js";
|
|
9
2
|
const processTextPart = (part, values, modifiers) => {
|
|
10
3
|
if (part.startsWith("{") === false) {
|
|
11
4
|
return part;
|
|
12
5
|
}
|
|
13
|
-
const parts = (
|
|
6
|
+
const parts = lodashTrim(part, "{}").split("|");
|
|
14
7
|
const [variable, modifier] = parts;
|
|
15
|
-
|
|
8
|
+
const keys = Object.keys(values);
|
|
9
|
+
if (!keys.includes(variable)) {
|
|
16
10
|
return `{${variable}}`;
|
|
17
11
|
}
|
|
18
12
|
const output = {
|
|
@@ -48,6 +42,6 @@ const processor = {
|
|
|
48
42
|
return parts.reduce((carry, part) => carry + processTextPart(part, data.values, data.i18n.modifiers), "");
|
|
49
43
|
}
|
|
50
44
|
};
|
|
51
|
-
|
|
45
|
+
export default processor;
|
|
52
46
|
|
|
53
47
|
//# sourceMappingURL=default.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["
|
|
1
|
+
{"version":3,"names":["lodashTrim","processTextPart","part","values","modifiers","startsWith","parts","split","variable","modifier","keys","Object","includes","output","value","parameters","name","shift","execute","processor","canExecute","data","key","Date","translation","reduce","carry","i18n"],"sources":["default.ts"],"sourcesContent":["import lodashTrim from \"lodash/trim.js\";\nimport type { Modifier, Processor } from \"~/types.js\";\n\nconst processTextPart = (\n part: string,\n values: Record<string, any>,\n modifiers: Record<string, Modifier>\n): string => {\n if (part.startsWith(\"{\") === false) {\n return part;\n }\n\n const parts = lodashTrim(part, \"{}\").split(\"|\");\n\n const [variable, modifier] = parts;\n const keys = Object.keys(values);\n\n if (!keys.includes(variable)) {\n return `{${variable}}`;\n }\n\n const output = {\n value: values[variable]\n };\n\n if (modifier) {\n const parameters: string[] = modifier.split(\":\");\n const name = parameters.shift();\n if (!name) {\n return output.value;\n }\n if (modifiers[name]) {\n const modifier = modifiers[name];\n output.value = modifier.execute(output.value, parameters);\n }\n }\n\n return output.value;\n};\n\nconst processor: Processor = {\n name: \"default\",\n canExecute(data) {\n for (const key in data.values) {\n const value = data.values[key];\n if (\n typeof value === \"string\" ||\n typeof value === \"number\" ||\n value === null ||\n value instanceof Date\n ) {\n continue;\n }\n return false;\n }\n\n return true;\n },\n execute(data) {\n const parts = data.translation.split(/({.*?})/);\n return parts.reduce(\n (carry, part) => carry + processTextPart(part, data.values, data.i18n.modifiers),\n \"\"\n );\n }\n};\n\nexport default processor;\n"],"mappings":"AAAA,OAAOA,UAAU,MAAM,gBAAgB;AAGvC,MAAMC,eAAe,GAAGA,CACpBC,IAAY,EACZC,MAA2B,EAC3BC,SAAmC,KAC1B;EACT,IAAIF,IAAI,CAACG,UAAU,CAAC,GAAG,CAAC,KAAK,KAAK,EAAE;IAChC,OAAOH,IAAI;EACf;EAEA,MAAMI,KAAK,GAAGN,UAAU,CAACE,IAAI,EAAE,IAAI,CAAC,CAACK,KAAK,CAAC,GAAG,CAAC;EAE/C,MAAM,CAACC,QAAQ,EAAEC,QAAQ,CAAC,GAAGH,KAAK;EAClC,MAAMI,IAAI,GAAGC,MAAM,CAACD,IAAI,CAACP,MAAM,CAAC;EAEhC,IAAI,CAACO,IAAI,CAACE,QAAQ,CAACJ,QAAQ,CAAC,EAAE;IAC1B,OAAO,IAAIA,QAAQ,GAAG;EAC1B;EAEA,MAAMK,MAAM,GAAG;IACXC,KAAK,EAAEX,MAAM,CAACK,QAAQ;EAC1B,CAAC;EAED,IAAIC,QAAQ,EAAE;IACV,MAAMM,UAAoB,GAAGN,QAAQ,CAACF,KAAK,CAAC,GAAG,CAAC;IAChD,MAAMS,IAAI,GAAGD,UAAU,CAACE,KAAK,CAAC,CAAC;IAC/B,IAAI,CAACD,IAAI,EAAE;MACP,OAAOH,MAAM,CAACC,KAAK;IACvB;IACA,IAAIV,SAAS,CAACY,IAAI,CAAC,EAAE;MACjB,MAAMP,QAAQ,GAAGL,SAAS,CAACY,IAAI,CAAC;MAChCH,MAAM,CAACC,KAAK,GAAGL,QAAQ,CAACS,OAAO,CAACL,MAAM,CAACC,KAAK,EAAEC,UAAU,CAAC;IAC7D;EACJ;EAEA,OAAOF,MAAM,CAACC,KAAK;AACvB,CAAC;AAED,MAAMK,SAAoB,GAAG;EACzBH,IAAI,EAAE,SAAS;EACfI,UAAUA,CAACC,IAAI,EAAE;IACb,KAAK,MAAMC,GAAG,IAAID,IAAI,CAAClB,MAAM,EAAE;MAC3B,MAAMW,KAAK,GAAGO,IAAI,CAAClB,MAAM,CAACmB,GAAG,CAAC;MAC9B,IACI,OAAOR,KAAK,KAAK,QAAQ,IACzB,OAAOA,KAAK,KAAK,QAAQ,IACzBA,KAAK,KAAK,IAAI,IACdA,KAAK,YAAYS,IAAI,EACvB;QACE;MACJ;MACA,OAAO,KAAK;IAChB;IAEA,OAAO,IAAI;EACf,CAAC;EACDL,OAAOA,CAACG,IAAI,EAAE;IACV,MAAMf,KAAK,GAAGe,IAAI,CAACG,WAAW,CAACjB,KAAK,CAAC,SAAS,CAAC;IAC/C,OAAOD,KAAK,CAACmB,MAAM,CACf,CAACC,KAAK,EAAExB,IAAI,KAAKwB,KAAK,GAAGzB,eAAe,CAACC,IAAI,EAAEmB,IAAI,CAAClB,MAAM,EAAEkB,IAAI,CAACM,IAAI,CAACvB,SAAS,CAAC,EAChF,EACJ,CAAC;EACL;AACJ,CAAC;AAED,eAAee,SAAS","ignoreList":[]}
|
package/types.d.ts
CHANGED
package/types.js
CHANGED
package/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":[],"sources":["types.ts"],"sourcesContent":["import type I18N from \"./I18n\";\nimport type { ReactElement } from \"react\";\n\nexport interface I18NDataValues {\n [key: string]: any;\n}\nexport interface I18NData {\n translation: string;\n base: string;\n namespace: string;\n values: I18NDataValues;\n i18n: I18N;\n}\n\nexport interface ModifierOptions {\n i18n: I18N;\n}\n/**\n * @description I18N Modifier - used for modifying text dynamically.\n */\nexport interface Modifier {\n name: string;\n execute: (...args: any[]) => string;\n}\n\nexport type ProcessorResult = string | ReactElement;\n/**\n * @description I18N Processor - used for outputting text.\n */\nexport interface Processor {\n name: string;\n canExecute: (data: I18NData) => boolean;\n execute: (data: I18NData) => ProcessorResult;\n}\n\nexport interface NumberFormat {\n decimal: string;\n thousand: string;\n precision: number;\n}\n\nexport interface PriceFormat {\n symbol: string;\n format: string;\n decimal: string;\n thousand: string;\n precision: number;\n}\n\nexport interface Formats {\n date: string;\n time: string;\n datetime: string;\n price: PriceFormat;\n number: NumberFormat;\n}\n\nexport interface Translator {\n (base: any): any;\n}\n\nexport interface Translations {\n [key: string]: string;\n}\n"],"mappings":"","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":[],"sources":["types.ts"],"sourcesContent":["import type I18N from \"./I18n.js\";\nimport type { ReactElement } from \"react\";\n\nexport interface I18NDataValues {\n [key: string]: any;\n}\nexport interface I18NData {\n translation: string;\n base: string;\n namespace: string;\n values: I18NDataValues;\n i18n: I18N;\n}\n\nexport interface ModifierOptions {\n i18n: I18N;\n}\n/**\n * @description I18N Modifier - used for modifying text dynamically.\n */\nexport interface Modifier {\n name: string;\n execute: (...args: any[]) => string;\n}\n\nexport type ProcessorResult = string | ReactElement;\n/**\n * @description I18N Processor - used for outputting text.\n */\nexport interface Processor {\n name: string;\n canExecute: (data: I18NData) => boolean;\n execute: (data: I18NData) => ProcessorResult;\n}\n\nexport interface NumberFormat {\n decimal: string;\n thousand: string;\n precision: number;\n}\n\nexport interface PriceFormat {\n symbol: string;\n format: string;\n decimal: string;\n thousand: string;\n precision: number;\n}\n\nexport interface Formats {\n date: string;\n time: string;\n datetime: string;\n price: PriceFormat;\n number: NumberFormat;\n}\n\nexport interface Translator {\n (base: any): any;\n}\n\nexport interface Translations {\n [key: string]: string;\n}\n"],"mappings":"","ignoreList":[]}
|