Skip to content

Commit 4c8b4f6

Browse files
authored
version increment (#36)
* version increment * refactored data types
1 parent 08b07b6 commit 4c8b4f6

File tree

5 files changed

+136
-149
lines changed

5 files changed

+136
-149
lines changed

package-lock.json

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@crowdin/ota-client",
3-
"version": "0.6.0",
3+
"version": "0.7.0",
44
"description": "JavaScript library for Crowdin OTA Content Delivery",
55
"main": "out/index.js",
66
"types": "out/index.d.ts",

src/index.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,7 @@ export default class OtaClient {
111111
private stringsCache: { [file: string]: { [language: string]: Promise<any> } } = {};
112112
private disableStringsCache = false;
113113

114-
private languagesCache: Promise<APIData> | null = null;
114+
private languagesCache: Promise<Language[]> | null = null;
115115
private disableLanguagesCache = false;
116116
private enterpriseOrganizationDomain: string | null = null;
117117

@@ -422,19 +422,19 @@ export default class OtaClient {
422422
return (await this.listFiles()).filter(f => !file || file === f).filter(isJsonFile);
423423
}
424424

425-
private getLanguages(): Promise<APIData> {
425+
private getLanguages(): Promise<Language[]> {
426426
if (this.languagesCache) {
427427
return this.languagesCache;
428428
}
429-
const languages = this.httpClient.get<APIData>(this.apiURL);
429+
const languages = this.httpClient.get<LanguagesData>(this.apiURL).then(d => d.data.map(l => l.data));
430430
if (!this.disableLanguagesCache) {
431431
this.languagesCache = languages;
432432
}
433433
return languages;
434434
}
435435
}
436436

437-
export interface APIData {
437+
interface LanguagesData {
438438
data: {
439439
data: Language;
440440
}[];

src/internal/util/exportPattern.ts

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { APIData, CustomLanguageRaw, LanguageMapping } from '../..';
1+
import { CustomLanguageRaw, LanguageMapping } from '../..';
22

33
export interface Language {
44
id: string;
@@ -59,10 +59,9 @@ export function includesLanguagePlaceholders(str: string): boolean {
5959

6060
export function findLanguageObject(
6161
languageCode: string,
62-
apiLanguages: APIData,
62+
languages: Language[],
6363
customLanguage?: CustomLanguageRaw,
6464
): CustomLanguage {
65-
const languages = apiLanguages.data.map(l => l.data);
6665
let language: CustomLanguage | undefined;
6766
if (customLanguage) {
6867
language = {
@@ -87,11 +86,11 @@ export function findLanguageObject(
8786
export function replaceLanguagePlaceholders(
8887
str: string,
8988
languageCode: string,
90-
apiLanguages: APIData,
89+
languages: Language[],
9190
languageMapping?: LanguageMapping,
9291
customLanguage?: CustomLanguageRaw,
9392
): string {
94-
const language = findLanguageObject(languageCode, apiLanguages, customLanguage);
93+
const language = findLanguageObject(languageCode, languages, customLanguage);
9594
let result = str;
9695
for (const placeholder of Object.keys(languagePlaceholders)) {
9796
if (result.includes(placeholder)) {

tests/internal/util/exportPattern.spec.ts

Lines changed: 126 additions & 138 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
1-
import { APIData, CustomLanguageRaw } from '../../../src';
2-
import { includesLanguagePlaceholders, replaceLanguagePlaceholders } from '../../../src/internal/util/exportPattern';
1+
import { CustomLanguageRaw } from '../../../src';
2+
import {
3+
includesLanguagePlaceholders,
4+
Language,
5+
replaceLanguagePlaceholders,
6+
} from '../../../src/internal/util/exportPattern';
37

48
describe('Export Pattern Util', () => {
59
it('should detect language placehodlers', () => {
@@ -9,142 +13,126 @@ describe('Export Pattern Util', () => {
913
expect(includesLanguagePlaceholders(string2)).toBe(false);
1014
});
1115

12-
const languages: APIData = {
13-
data: [
14-
{
15-
data: {
16-
id: 'uk',
17-
name: 'Ukrainian',
18-
editorCode: 'uk',
19-
twoLettersCode: 'uk',
20-
threeLettersCode: 'ukr',
21-
locale: 'uk-UA',
22-
androidCode: 'uk-rUA',
23-
osxCode: 'uk.lproj',
24-
osxLocale: 'uk',
25-
pluralCategoryNames: ['one', 'few', 'many', 'other'],
26-
pluralRules:
27-
'((n%10==1 && n%100!=11) ? 0 : ((n%10 >= 2 && n%10 <=4 && (n%100 < 12 || n%100 > 14)) ? 1 : ((n%10 == 0 || (n%10 >= 5 && n%10 <=9)) || (n%100 >= 11 && n%100 <= 14)) ? 2 : 3))',
28-
pluralExamples: [
29-
'1, 21, 31, 41, 51, 61, 71, 81...',
30-
'2-4, 22-24, 32-34, 42-44, 52-54, 62...',
31-
'0, 5-19, 100, 1000, 10000...',
32-
'0.0-0.9, 1.1-1.6, 10.0, 100.0...',
33-
],
34-
textDirection: 'ltr',
35-
dialectOf: null,
36-
},
37-
},
38-
{
39-
data: {
40-
id: 'es-ES',
41-
name: 'Spanish',
42-
editorCode: 'es',
43-
twoLettersCode: 'es',
44-
threeLettersCode: 'spa',
45-
locale: 'es-ES',
46-
androidCode: 'es-rES',
47-
osxCode: 'es.lproj',
48-
osxLocale: 'es',
49-
pluralCategoryNames: ['one', 'other'],
50-
pluralRules: '(n != 1)',
51-
pluralExamples: ['1', '0, 2-999; 1.2, 2.07...'],
52-
textDirection: 'ltr',
53-
dialectOf: null,
54-
},
55-
},
56-
{
57-
data: {
58-
id: 'en',
59-
name: 'English',
60-
editorCode: 'en',
61-
twoLettersCode: 'en',
62-
threeLettersCode: 'eng',
63-
locale: 'en-US',
64-
androidCode: 'en-rUS',
65-
osxCode: 'en.lproj',
66-
osxLocale: 'en',
67-
pluralCategoryNames: ['one', 'other'],
68-
pluralRules: '(n != 1)',
69-
pluralExamples: ['1', '0, 2-999; 1.2, 2.07...'],
70-
textDirection: 'ltr',
71-
dialectOf: null,
72-
},
73-
},
74-
{
75-
data: {
76-
id: 'de',
77-
name: 'German',
78-
editorCode: 'de',
79-
twoLettersCode: 'de',
80-
threeLettersCode: 'deu',
81-
locale: 'de-DE',
82-
androidCode: 'de-rDE',
83-
osxCode: 'de.lproj',
84-
osxLocale: 'de',
85-
pluralCategoryNames: ['one', 'other'],
86-
pluralRules: '(n != 1)',
87-
pluralExamples: ['1', '0, 2-999; 1.2, 2.07...'],
88-
textDirection: 'ltr',
89-
dialectOf: null,
90-
},
91-
},
92-
{
93-
data: {
94-
id: 'es-US',
95-
name: 'Spanish, United States',
96-
editorCode: 'esus',
97-
twoLettersCode: 'es',
98-
threeLettersCode: 'spa',
99-
locale: 'es-US',
100-
androidCode: 'es-rUS',
101-
osxCode: 'es-US.lproj',
102-
osxLocale: 'es_US',
103-
pluralCategoryNames: ['one', 'other'],
104-
pluralRules: '(n != 1)',
105-
pluralExamples: ['1', '0, 2-999; 1.2, 2.07...'],
106-
textDirection: 'ltr',
107-
dialectOf: 'es-ES',
108-
},
109-
},
110-
{
111-
data: {
112-
id: 'en-GB',
113-
name: 'English, United Kingdom',
114-
editorCode: 'engb',
115-
twoLettersCode: 'en',
116-
threeLettersCode: 'eng',
117-
locale: 'en-GB',
118-
androidCode: 'en-rGB',
119-
osxCode: 'en-GB.lproj',
120-
osxLocale: 'en_GB',
121-
pluralCategoryNames: ['one', 'other'],
122-
pluralRules: '(n != 1)',
123-
pluralExamples: ['1', '0, 2-999; 1.2, 2.07...'],
124-
textDirection: 'ltr',
125-
dialectOf: 'en',
126-
},
127-
},
128-
{
129-
data: {
130-
id: 'pt-PT',
131-
name: 'Portuguese',
132-
editorCode: 'pt',
133-
twoLettersCode: 'pt',
134-
threeLettersCode: 'por',
135-
locale: 'pt-PT',
136-
androidCode: 'pt-rPT',
137-
osxCode: 'pt.lproj',
138-
osxLocale: 'pt',
139-
pluralCategoryNames: ['one', 'other'],
140-
pluralRules: '(n != 1)',
141-
pluralExamples: ['1', '0, 2-999; 1.2, 2.07...'],
142-
textDirection: 'ltr',
143-
dialectOf: null,
144-
},
145-
},
146-
],
147-
};
16+
const languages: Language[] = [
17+
{
18+
id: 'uk',
19+
name: 'Ukrainian',
20+
editorCode: 'uk',
21+
twoLettersCode: 'uk',
22+
threeLettersCode: 'ukr',
23+
locale: 'uk-UA',
24+
androidCode: 'uk-rUA',
25+
osxCode: 'uk.lproj',
26+
osxLocale: 'uk',
27+
pluralCategoryNames: ['one', 'few', 'many', 'other'],
28+
pluralRules:
29+
'((n%10==1 && n%100!=11) ? 0 : ((n%10 >= 2 && n%10 <=4 && (n%100 < 12 || n%100 > 14)) ? 1 : ((n%10 == 0 || (n%10 >= 5 && n%10 <=9)) || (n%100 >= 11 && n%100 <= 14)) ? 2 : 3))',
30+
pluralExamples: [
31+
'1, 21, 31, 41, 51, 61, 71, 81...',
32+
'2-4, 22-24, 32-34, 42-44, 52-54, 62...',
33+
'0, 5-19, 100, 1000, 10000...',
34+
'0.0-0.9, 1.1-1.6, 10.0, 100.0...',
35+
],
36+
textDirection: 'ltr',
37+
dialectOf: null,
38+
},
39+
{
40+
id: 'es-ES',
41+
name: 'Spanish',
42+
editorCode: 'es',
43+
twoLettersCode: 'es',
44+
threeLettersCode: 'spa',
45+
locale: 'es-ES',
46+
androidCode: 'es-rES',
47+
osxCode: 'es.lproj',
48+
osxLocale: 'es',
49+
pluralCategoryNames: ['one', 'other'],
50+
pluralRules: '(n != 1)',
51+
pluralExamples: ['1', '0, 2-999; 1.2, 2.07...'],
52+
textDirection: 'ltr',
53+
dialectOf: null,
54+
},
55+
{
56+
id: 'en',
57+
name: 'English',
58+
editorCode: 'en',
59+
twoLettersCode: 'en',
60+
threeLettersCode: 'eng',
61+
locale: 'en-US',
62+
androidCode: 'en-rUS',
63+
osxCode: 'en.lproj',
64+
osxLocale: 'en',
65+
pluralCategoryNames: ['one', 'other'],
66+
pluralRules: '(n != 1)',
67+
pluralExamples: ['1', '0, 2-999; 1.2, 2.07...'],
68+
textDirection: 'ltr',
69+
dialectOf: null,
70+
},
71+
{
72+
id: 'de',
73+
name: 'German',
74+
editorCode: 'de',
75+
twoLettersCode: 'de',
76+
threeLettersCode: 'deu',
77+
locale: 'de-DE',
78+
androidCode: 'de-rDE',
79+
osxCode: 'de.lproj',
80+
osxLocale: 'de',
81+
pluralCategoryNames: ['one', 'other'],
82+
pluralRules: '(n != 1)',
83+
pluralExamples: ['1', '0, 2-999; 1.2, 2.07...'],
84+
textDirection: 'ltr',
85+
dialectOf: null,
86+
},
87+
{
88+
id: 'es-US',
89+
name: 'Spanish, United States',
90+
editorCode: 'esus',
91+
twoLettersCode: 'es',
92+
threeLettersCode: 'spa',
93+
locale: 'es-US',
94+
androidCode: 'es-rUS',
95+
osxCode: 'es-US.lproj',
96+
osxLocale: 'es_US',
97+
pluralCategoryNames: ['one', 'other'],
98+
pluralRules: '(n != 1)',
99+
pluralExamples: ['1', '0, 2-999; 1.2, 2.07...'],
100+
textDirection: 'ltr',
101+
dialectOf: 'es-ES',
102+
},
103+
{
104+
id: 'en-GB',
105+
name: 'English, United Kingdom',
106+
editorCode: 'engb',
107+
twoLettersCode: 'en',
108+
threeLettersCode: 'eng',
109+
locale: 'en-GB',
110+
androidCode: 'en-rGB',
111+
osxCode: 'en-GB.lproj',
112+
osxLocale: 'en_GB',
113+
pluralCategoryNames: ['one', 'other'],
114+
pluralRules: '(n != 1)',
115+
pluralExamples: ['1', '0, 2-999; 1.2, 2.07...'],
116+
textDirection: 'ltr',
117+
dialectOf: 'en',
118+
},
119+
{
120+
id: 'pt-PT',
121+
name: 'Portuguese',
122+
editorCode: 'pt',
123+
twoLettersCode: 'pt',
124+
threeLettersCode: 'por',
125+
locale: 'pt-PT',
126+
androidCode: 'pt-rPT',
127+
osxCode: 'pt.lproj',
128+
osxLocale: 'pt',
129+
pluralCategoryNames: ['one', 'other'],
130+
pluralRules: '(n != 1)',
131+
pluralExamples: ['1', '0, 2-999; 1.2, 2.07...'],
132+
textDirection: 'ltr',
133+
dialectOf: null,
134+
},
135+
];
148136

149137
it('should replace language placeholders', () => {
150138
const str1 = '/folder/%locale%/%three_letters_code%/file1.csv';

0 commit comments

Comments
 (0)