From aeef755e28cf2a42663317450450fb86789383e4 Mon Sep 17 00:00:00 2001 From: jeongseok-ooh Date: Wed, 12 Feb 2025 11:29:01 +0900 Subject: [PATCH 1/5] Fix translation function issue related to curly braces --- packages/js/src/Airport.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/js/src/Airport.ts b/packages/js/src/Airport.ts index d996e7b..e9c3773 100644 --- a/packages/js/src/Airport.ts +++ b/packages/js/src/Airport.ts @@ -125,7 +125,7 @@ export class Airport, G extends LS | PartialL }) translated = translated?.replace(new RegExp(`\\{(.[^\\}]*)\\}`, 'gi'), (match, p1) => { - if (Object.keys(variableMap).every(variableKey => !p1?.includes(variableKey))) return match + if (Object.keys(variableMap ?? {}).every(variableKey => !p1?.includes(variableKey))) return match return eval( `${variableEntries .map(([key, value]) => { From fcc93c4af82530de55c3cc797b3557eee0cb36e5 Mon Sep 17 00:00:00 2001 From: jeongseok-ooh Date: Wed, 12 Feb 2025 11:29:29 +0900 Subject: [PATCH 2/5] Fix test code errors and add test case related curly braces --- .../js/src/__tests__/Airport-currency.test.ts | 18 ++++++------ .../src/__tests__/Airport-performance.test.ts | 2 +- .../src/__tests__/Airport-translation.test.ts | 28 +++++++++++++++---- 3 files changed, 32 insertions(+), 16 deletions(-) diff --git a/packages/js/src/__tests__/Airport-currency.test.ts b/packages/js/src/__tests__/Airport-currency.test.ts index 0f22c64..d71c06b 100644 --- a/packages/js/src/__tests__/Airport-currency.test.ts +++ b/packages/js/src/__tests__/Airport-currency.test.ts @@ -8,7 +8,7 @@ import { Currency } from '../types' describe('Airport currency functions test', () => { const supportedLocales = ['ko-KR', 'en-US', 'ja-JP'] as const - let airport: Airport + let airport: Airport beforeEach(() => { airport = new Airport({ supportedLocales, @@ -43,7 +43,7 @@ describe('Airport currency functions test', () => { const value = 100000 - const enUsFormatted = airport.fc(value, null, null, null, 'en-US') + const enUsFormatted = airport.fc(value, undefined, undefined, undefined, 'en-US') const enUsUsdIntlFormatted = new Intl.NumberFormat('en-US', { style: 'currency', currency: 'USD' }).format(value) expect(enUsFormatted).toBe(enUsUsdIntlFormatted) @@ -165,7 +165,7 @@ describe('Airport currency functions test', () => { const value = 100000 - const krwPrice = localAirport.fc(value, null, Currency.JPY) + const krwPrice = localAirport.fc(value, undefined, Currency.JPY) const exchangedValue = (value / (usdToJpy / usd)) * (usdToKrw / usd) const koKrKrwIntlFormatted = new Intl.NumberFormat('ko-KR', { style: 'currency', currency: 'KRW' }).format(exchangedValue) @@ -193,7 +193,7 @@ describe('Airport currency functions test', () => { const value = 100000 - const krwPrice = localAirport.fc(value, null, Currency.JPY) + const krwPrice = localAirport.fc(value, undefined, Currency.JPY) const koKrKrwIntlFormatted = new Intl.NumberFormat('ko-KR', { style: 'currency', currency: 'JPY' }).format(value) expect(krwPrice).toBe(koKrKrwIntlFormatted) @@ -221,7 +221,7 @@ describe('Airport currency functions test', () => { const value = 100000 - const krwPrice = localAirport.fc(value, null, Currency.JPY) + const krwPrice = localAirport.fc(value, undefined, Currency.JPY) const exchangedValue = (value / (krwToJyp / krw)) * (krw / krw) const koKrKrwIntlFormatted = new Intl.NumberFormat('ko-KR', { style: 'currency', currency: 'KRW' }).format(exchangedValue) @@ -247,14 +247,14 @@ describe('Airport currency functions test', () => { test('airport.fc() can format isFixedCurrency with baseCurrency', () => { const value = 100000 - const koKrIntlBasedFormatted = airport.fc(value, null, Currency.KRW, true) + const koKrIntlBasedFormatted = airport.fc(value, undefined, Currency.KRW, true) const koKrKrwIntlFormatted = new Intl.NumberFormat('ko-KR', { style: 'currency', currency: 'KRW' }).format(value) expect(koKrIntlBasedFormatted).toBe(koKrKrwIntlFormatted) airport.changeLocale('en-US') - const enUsIntlBasedFormatted = airport.fc(value, null, Currency.KRW, true) + const enUsIntlBasedFormatted = airport.fc(value, undefined, Currency.KRW, true) const enUsKrwIntlFormatted = new Intl.NumberFormat('en-US', { style: 'currency', currency: 'KRW' }).format(value) expect(enUsIntlBasedFormatted).toBe(enUsKrwIntlFormatted) @@ -272,13 +272,13 @@ describe('Airport currency functions test', () => { }, }) - const koKrLsBasedFormatted = formattedCurrencyAirport.fc(value, null, Currency.KRW, true) + const koKrLsBasedFormatted = formattedCurrencyAirport.fc(value, undefined, Currency.KRW, true) const koKrIntlNumberFormatted = new Intl.NumberFormat('ko-KR').format(value) expect(koKrLsBasedFormatted).toBe(`${koKrIntlNumberFormatted}원입니다.`) formattedCurrencyAirport.changeLocale('en-US') - const enUsLsBasedFormatted = formattedCurrencyAirport.fc(value, null, Currency.KRW, true) + const enUsLsBasedFormatted = formattedCurrencyAirport.fc(value, undefined, Currency.KRW, true) const enUsIntlNumberFormatted = new Intl.NumberFormat('en-US').format(value) expect(enUsLsBasedFormatted).toBe(`${enUsIntlNumberFormatted}원입니다.`) }) diff --git a/packages/js/src/__tests__/Airport-performance.test.ts b/packages/js/src/__tests__/Airport-performance.test.ts index 38fbe44..2479dc4 100644 --- a/packages/js/src/__tests__/Airport-performance.test.ts +++ b/packages/js/src/__tests__/Airport-performance.test.ts @@ -8,7 +8,7 @@ import { Currency } from '../types' describe('Airport performance test', () => { const supportedLocales = ['ko-KR', 'en-US', 'ja-JP'] as const - let airport: Airport + let airport: Airport beforeEach(() => { airport = new Airport({ supportedLocales, diff --git a/packages/js/src/__tests__/Airport-translation.test.ts b/packages/js/src/__tests__/Airport-translation.test.ts index 556eaf1..23abc43 100644 --- a/packages/js/src/__tests__/Airport-translation.test.ts +++ b/packages/js/src/__tests__/Airport-translation.test.ts @@ -134,7 +134,7 @@ describe('Airport translation functions test', () => { locale: 'ja', fallbackLocale: 'ko', }) - + const LS = createPartialLS({ onlyKoEn: { ko: 'korean', @@ -152,7 +152,7 @@ describe('Airport translation functions test', () => { locale: 'ja', fallbackLocale: 'ko', }) - + const LS = createPartialLS({ onlyEn: { en: 'english', @@ -162,15 +162,31 @@ describe('Airport translation functions test', () => { expect(airport.t(LS.onlyEn)).toBe('') }) + test('airport should not cause any errors related to curly braces', () => { + const airport = new Airport({ + supportedLocales, + globalLS, + locale: 'ja', + fallbackLocale: 'ko', + }) + + const LS = createPartialLS({ + onlyEn: { + ko: `형식: {"test": {"title": "", "alt": ""}, ...}`, + }, + }) + + expect(airport.t(LS.onlyEn)).toBe('형식: {"test": {"title": "", "alt": ""}, ...}') + }) + - test('Airport supports partialLS', () => { const partialLS = createPartialLS({ koTest: { ko: '부분 언어 집합' }, enTest: { en: 'This is english LS'} }) - // expect(airport.t(partialLS.koTest)).toBe('부분 언어 집합') - // expect(airport.t(partialLS.enTest)).toBe(undefined) - // TODO: Airport partialLS 기능 아직 미완성 상태. 완성 시 테스트 케이스 완성 예정 + + expect(airport.t(partialLS.koTest)).toBe('부분 언어 집합') + expect(airport.t(partialLS.enTest)).toBe("") }) }) From cad9b7f9b8869dc87d231be531fa4049282fd950 Mon Sep 17 00:00:00 2001 From: jeongseok-ooh Date: Wed, 12 Feb 2025 11:31:23 +0900 Subject: [PATCH 3/5] Upgrade version of packages --- packages/js/package.json | 2 +- packages/react/package.json | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/js/package.json b/packages/js/package.json index 9905153..5402585 100644 --- a/packages/js/package.json +++ b/packages/js/package.json @@ -1,6 +1,6 @@ { "name": "airport-js", - "version": "2.2.0", + "version": "2.2.1", "author": "jeongseok oh , junsoo choi ", "license": "MIT", "types": "./build/index.d.ts", diff --git a/packages/react/package.json b/packages/react/package.json index 18c93a8..9925383 100644 --- a/packages/react/package.json +++ b/packages/react/package.json @@ -1,6 +1,6 @@ { "name": "airport-react", - "version": "2.2.1", + "version": "2.2.2", "author": "jeongseok oh , junsoo choi ", "license": "MIT", "types": "./build/index.d.ts", @@ -20,7 +20,7 @@ "build": "yarn clean && npx rollup -c" }, "dependencies": { - "airport-js": "^2.2.0" + "airport-js": "^2.2.1" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0 || ^18.0.0", From f8793629345c1538972c41759675a410be824d68 Mon Sep 17 00:00:00 2001 From: jeongseok-ooh Date: Wed, 12 Feb 2025 11:35:54 +0900 Subject: [PATCH 4/5] Fix typo --- packages/js/src/__tests__/Airport-translation.test.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/js/src/__tests__/Airport-translation.test.ts b/packages/js/src/__tests__/Airport-translation.test.ts index 23abc43..afa4596 100644 --- a/packages/js/src/__tests__/Airport-translation.test.ts +++ b/packages/js/src/__tests__/Airport-translation.test.ts @@ -171,12 +171,12 @@ describe('Airport translation functions test', () => { }) const LS = createPartialLS({ - onlyEn: { + onlyKo: { ko: `형식: {"test": {"title": "", "alt": ""}, ...}`, }, }) - expect(airport.t(LS.onlyEn)).toBe('형식: {"test": {"title": "", "alt": ""}, ...}') + expect(airport.t(LS.onlyKo)).toBe('형식: {"test": {"title": "", "alt": ""}, ...}') }) From 513911d2f19f8fc52fec7f4c9614f1eed048e08e Mon Sep 17 00:00:00 2001 From: OSTAR Date: Wed, 12 Feb 2025 15:05:56 +0900 Subject: [PATCH 5/5] Fix patch version of airport-js --- packages/js/package.json | 2 +- packages/react/package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/js/package.json b/packages/js/package.json index 5402585..8b5b2b5 100644 --- a/packages/js/package.json +++ b/packages/js/package.json @@ -1,6 +1,6 @@ { "name": "airport-js", - "version": "2.2.1", + "version": "2.2.2", "author": "jeongseok oh , junsoo choi ", "license": "MIT", "types": "./build/index.d.ts", diff --git a/packages/react/package.json b/packages/react/package.json index 9925383..63663fe 100644 --- a/packages/react/package.json +++ b/packages/react/package.json @@ -20,7 +20,7 @@ "build": "yarn clean && npx rollup -c" }, "dependencies": { - "airport-js": "^2.2.1" + "airport-js": "^2.2.2" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0 || ^18.0.0",