@polyglot-bundles/ko-minimal-pairs 0.1.0 → 0.2.0

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.
@@ -1 +1 @@
1
- {"version":3,"file":"data.d.ts","sourceRoot":"","sources":["../src/data.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AAEjF,eAAO,MAAM,gBAAgB,EAAE,wBAW9B,CAAC;AAEF,eAAe,gBAAgB,CAAC"}
1
+ {"version":3,"file":"data.d.ts","sourceRoot":"","sources":["../src/data.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AAEjF,eAAO,MAAM,gBAAgB,EAAE,wBAsP9B,CAAC;AAEF,eAAe,gBAAgB,CAAC"}
package/dist/data.js CHANGED
@@ -1,16 +1,242 @@
1
- const e = {
1
+ const i = {
2
2
  levels: [
3
3
  { level: 0, title: "Getting Started", description: "Practice with clearly different sounds" },
4
- { level: 1, title: "Basic Contrasts", description: "Common minimal pairs" },
5
- { level: 2, title: "Vowels", description: "Vowel distinctions" },
6
- { level: 3, title: "Consonants", description: "Consonant contrasts" },
7
- { level: 4, title: "Advanced", description: "More challenging distinctions" },
8
- { level: 5, title: "Expert Level", description: "Subtle differences" }
4
+ { level: 1, title: "Three-Way Consonant Contrast", description: "Plain vs tense vs aspirated" },
5
+ { level: 2, title: "Vowels", description: "Korean vowel system" },
6
+ { level: 3, title: "Advanced Consonants", description: "Fricatives and affricates" },
7
+ { level: 4, title: "Syllable Structure", description: "Final consonant contrasts" },
8
+ { level: 5, title: "Expert Level", description: "Subtle distinctions and loanwords" }
9
9
  ],
10
- minimalPairs: [],
11
- pronunciationTips: {}
10
+ minimalPairs: [
11
+ // Level 0: Clear contrasts
12
+ {
13
+ pairId: "ko_l0_001",
14
+ level: 0,
15
+ tags: ["level_0"],
16
+ contrastFeature: "consonant",
17
+ contrastDescription: "/k/ vs /t/",
18
+ word1: { script: "가구", romanization: "gagu", definition: "furniture", audioFile: null },
19
+ word2: { script: "다구", romanization: "dagu", definition: "(name)", audioFile: null }
20
+ },
21
+ {
22
+ pairId: "ko_l0_002",
23
+ level: 0,
24
+ tags: ["level_0"],
25
+ contrastFeature: "consonant",
26
+ contrastDescription: "/m/ vs /b/",
27
+ word1: { script: "물", romanization: "mul", definition: "water", audioFile: null },
28
+ word2: { script: "불", romanization: "bul", definition: "fire", audioFile: null }
29
+ },
30
+ // Level 1: The famous three-way contrast (plain, tense, aspirated)
31
+ {
32
+ pairId: "ko_l1_001",
33
+ level: 1,
34
+ tags: ["level_1", "consonant"],
35
+ contrastFeature: "consonant",
36
+ contrastDescription: "Plain /p/ vs tense /p͈/ vs aspirated /pʰ/",
37
+ pronunciationTipId: "consonant_three_way",
38
+ word1: { script: "발", romanization: "bal", definition: "foot", audioFile: null },
39
+ word2: { script: "팔", romanization: "pal", definition: "arm", audioFile: null }
40
+ },
41
+ {
42
+ pairId: "ko_l1_002",
43
+ level: 1,
44
+ tags: ["level_1", "consonant"],
45
+ contrastFeature: "consonant",
46
+ contrastDescription: "Plain /p/ vs tense /p͈/",
47
+ word1: { script: "발", romanization: "bal", definition: "foot", audioFile: null },
48
+ word2: { script: "쌀", romanization: "ssal", definition: "uncooked rice", audioFile: null }
49
+ },
50
+ {
51
+ pairId: "ko_l1_003",
52
+ level: 1,
53
+ tags: ["level_1", "consonant"],
54
+ contrastFeature: "consonant",
55
+ contrastDescription: "Tense /p͈/ vs aspirated /pʰ/",
56
+ word1: { script: "빨", romanization: "ppal", definition: "red", audioFile: null },
57
+ word2: { script: "팔", romanization: "pal", definition: "arm", audioFile: null }
58
+ },
59
+ {
60
+ pairId: "ko_l1_004",
61
+ level: 1,
62
+ tags: ["level_1", "consonant"],
63
+ contrastFeature: "consonant",
64
+ contrastDescription: "Plain /t/ vs tense /t͈/ vs aspirated /tʰ/",
65
+ word1: { script: "달", romanization: "dal", definition: "moon", audioFile: null },
66
+ word2: { script: "딸", romanization: "ttal", definition: "daughter", audioFile: null }
67
+ },
68
+ {
69
+ pairId: "ko_l1_005",
70
+ level: 1,
71
+ tags: ["level_1", "consonant"],
72
+ contrastFeature: "consonant",
73
+ contrastDescription: "Plain /t/ vs aspirated /tʰ/",
74
+ word1: { script: "달", romanization: "dal", definition: "moon", audioFile: null },
75
+ word2: { script: "탈", romanization: "tal", definition: "mask", audioFile: null }
76
+ },
77
+ {
78
+ pairId: "ko_l1_006",
79
+ level: 1,
80
+ tags: ["level_1", "consonant"],
81
+ contrastFeature: "consonant",
82
+ contrastDescription: "Plain /k/ vs tense /k͈/ vs aspirated /kʰ/",
83
+ word1: { script: "갈", romanization: "gal", definition: "to go", audioFile: null },
84
+ word2: { script: "깔", romanization: "kkal", definition: "to spread", audioFile: null }
85
+ },
86
+ {
87
+ pairId: "ko_l1_007",
88
+ level: 1,
89
+ tags: ["level_1", "consonant"],
90
+ contrastFeature: "consonant",
91
+ contrastDescription: "Plain /k/ vs aspirated /kʰ/",
92
+ word1: { script: "갈", romanization: "gal", definition: "to go", audioFile: null },
93
+ word2: { script: "칼", romanization: "kal", definition: "knife", audioFile: null }
94
+ },
95
+ {
96
+ pairId: "ko_l1_008",
97
+ level: 1,
98
+ tags: ["level_1", "consonant"],
99
+ contrastFeature: "consonant",
100
+ contrastDescription: "Plain /tɕ/ vs tense /tɕ͈/ vs aspirated /tɕʰ/",
101
+ word1: { script: "자", romanization: "ja", definition: "self; ruler", audioFile: null },
102
+ word2: { script: "짜", romanization: "jja", definition: "salty; to pair", audioFile: null }
103
+ },
104
+ {
105
+ pairId: "ko_l1_009",
106
+ level: 1,
107
+ tags: ["level_1", "consonant"],
108
+ contrastFeature: "consonant",
109
+ contrastDescription: "Plain /s/ vs tense /s͈/",
110
+ word1: { script: "살", romanization: "sal", definition: "flesh; to live", audioFile: null },
111
+ word2: { script: "쌀", romanization: "ssal", definition: "uncooked rice", audioFile: null }
112
+ },
113
+ // Level 2: Vowels
114
+ {
115
+ pairId: "ko_l2_001",
116
+ level: 2,
117
+ tags: ["level_2", "vowel"],
118
+ contrastFeature: "vowel",
119
+ contrastDescription: "/a/ vs /ʌ/",
120
+ pronunciationTipId: "vowel_a_eo",
121
+ word1: { script: "말", romanization: "mal", definition: "horse; speech", audioFile: null },
122
+ word2: { script: "멀", romanization: "meol", definition: "distance", audioFile: null }
123
+ },
124
+ {
125
+ pairId: "ko_l2_002",
126
+ level: 2,
127
+ tags: ["level_2", "vowel"],
128
+ contrastFeature: "vowel",
129
+ contrastDescription: "/o/ vs /u/",
130
+ word1: { script: "보", romanization: "bo", definition: "treasure", audioFile: null },
131
+ word2: { script: "부", romanization: "bu", definition: "wealth; part", audioFile: null }
132
+ },
133
+ {
134
+ pairId: "ko_l2_003",
135
+ level: 2,
136
+ tags: ["level_2", "vowel"],
137
+ contrastFeature: "vowel",
138
+ contrastDescription: "/i/ vs /ɛ/",
139
+ word1: { script: "비", romanization: "bi", definition: "rain", audioFile: null },
140
+ word2: { script: "배", romanization: "bae", definition: "ship; pear; stomach", audioFile: null }
141
+ },
142
+ {
143
+ pairId: "ko_l2_004",
144
+ level: 2,
145
+ tags: ["level_2", "vowel"],
146
+ contrastFeature: "vowel",
147
+ contrastDescription: "/e/ vs /ɛ/ (merging in modern Korean)",
148
+ word1: { script: "게", romanization: "ge", definition: "crab", audioFile: null },
149
+ word2: { script: "개", romanization: "gae", definition: "dog", audioFile: null },
150
+ notes: "These vowels are merging in modern Seoul Korean"
151
+ },
152
+ // Level 3: Advanced consonants
153
+ {
154
+ pairId: "ko_l3_001",
155
+ level: 3,
156
+ tags: ["level_3", "consonant"],
157
+ contrastFeature: "consonant",
158
+ contrastDescription: "/n/ vs /l/",
159
+ pronunciationTipId: "consonant_n_l",
160
+ word1: { script: "남", romanization: "nam", definition: "man; south", audioFile: null },
161
+ word2: { script: "람", romanization: "ram", definition: "(in compounds)", audioFile: null }
162
+ },
163
+ {
164
+ pairId: "ko_l3_002",
165
+ level: 3,
166
+ tags: ["level_3", "consonant"],
167
+ contrastFeature: "consonant",
168
+ contrastDescription: "/m/ vs /n/",
169
+ word1: { script: "무", romanization: "mu", definition: "radish", audioFile: null },
170
+ word2: { script: "누", romanization: "nu", definition: "(name)", audioFile: null }
171
+ },
172
+ {
173
+ pairId: "ko_l3_003",
174
+ level: 3,
175
+ tags: ["level_3", "consonant"],
176
+ contrastFeature: "consonant",
177
+ contrastDescription: "/p/ vs /m/",
178
+ word1: { script: "박", romanization: "bak", definition: "park (surname); gourd", audioFile: null },
179
+ word2: { script: "막", romanization: "mak", definition: "block; 막걸리", audioFile: null }
180
+ },
181
+ // Level 4: Syllable structure - final consonants
182
+ {
183
+ pairId: "ko_l4_001",
184
+ level: 4,
185
+ tags: ["level_4", "final"],
186
+ contrastFeature: "final_consonant",
187
+ contrastDescription: "Final /-k/ vs final /-t/",
188
+ pronunciationTipId: "final_consonants",
189
+ word1: { script: "국", romanization: "guk", definition: "soup", audioFile: null },
190
+ word2: { script: "굳", romanization: "gut", definition: "(firm)", audioFile: null }
191
+ },
192
+ {
193
+ pairId: "ko_l4_002",
194
+ level: 4,
195
+ tags: ["level_4", "final"],
196
+ contrastFeature: "final_consonant",
197
+ contrastDescription: "Final /-n/ vs final /-ng/",
198
+ word1: { script: "산", romanization: "san", definition: "mountain", audioFile: null },
199
+ word2: { script: "상", romanization: "sang", definition: "table; injury", audioFile: null }
200
+ },
201
+ {
202
+ pairId: "ko_l4_003",
203
+ level: 4,
204
+ tags: ["level_4", "final"],
205
+ contrastFeature: "final_consonant",
206
+ contrastDescription: "Final /-m/ vs final /-n/",
207
+ word1: { script: "감", romanization: "gam", definition: "persimmon; feeling", audioFile: null },
208
+ word2: { script: "간", romanization: "gan", definition: "liver; interval", audioFile: null }
209
+ },
210
+ // Level 5: Expert - subtle distinctions
211
+ {
212
+ pairId: "ko_l5_001",
213
+ level: 5,
214
+ tags: ["level_5", "consonant"],
215
+ contrastFeature: "consonant",
216
+ contrastDescription: "/h/ vs /k/",
217
+ word1: { script: "하다", romanization: "hada", definition: "to do", audioFile: null },
218
+ word2: { script: "카다", romanization: "kada", definition: "(loanword: card+suffix)", audioFile: null },
219
+ notes: "The /h/ sound is often weak or silent in certain positions"
220
+ },
221
+ {
222
+ pairId: "ko_l5_002",
223
+ level: 5,
224
+ tags: ["level_5", "vowel"],
225
+ contrastFeature: "vowel",
226
+ contrastDescription: "/ɯ/ (eu) vs /u/ (u)",
227
+ word1: { script: "그", romanization: "geu", definition: "that; the", audioFile: null },
228
+ word2: { script: "구", romanization: "gu", definition: "district; nine", audioFile: null },
229
+ notes: "/ɯ/ is unrounded, /u/ is rounded. English speakers often confuse these."
230
+ }
231
+ ],
232
+ pronunciationTips: {
233
+ consonant_three_way: "Korean has a three-way contrast: plain (ㄱㄷㅂㅈ), tense (ㄲㄸㅃㅉ), and aspirated (ㅋㅌㅍㅊ). Plain is voiced between vowels, tense is tight with no aspiration, aspirated has a strong puff of air.",
234
+ vowel_a_eo: "/a/ (ㅏ) is open front-central. /ʌ/ (ㅓ) is open-mid back. Think of 'father' vs 'sun' for approximation.",
235
+ consonant_n_l: "/n/ (ㄴ) is nasal through the nose. /l/ (ㄹ) is a flap - tongue briefly taps the ridge behind teeth.",
236
+ final_consonants: "Final consonants are unreleased. /-k/, /-t/, /-p/ stop abruptly without the final release burst."
237
+ }
12
238
  };
13
239
  export {
14
- e as default,
15
- e as minimalPairsData
240
+ i as default,
241
+ i as minimalPairsData
16
242
  };
package/dist/index.d.ts CHANGED
@@ -1,3 +1,4 @@
1
+ export { minimalPairsData as default } from './data';
1
2
  export { minimalPairsData } from './data';
2
- export default minimalPairsData;
3
+ export type { MinimalPairsLanguageData, MinimalPairsLevelInfo, MinimalPairsMinimalPair, MinimalPairsPronunciationTipsMap, MinimalPairsRubySegment, MinimalPairsWordInfo, } from '../../content-shared';
3
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,QAAQ,CAAC;AAE1C,eAAe,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,IAAI,OAAO,EAAE,MAAM,QAAQ,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,QAAQ,CAAC;AAG1C,YAAY,EACV,wBAAwB,EACxB,qBAAqB,EACrB,uBAAuB,EACvB,gCAAgC,EAChC,uBAAuB,EACvB,oBAAoB,GACrB,MAAM,kCAAkC,CAAC"}
package/dist/index.js CHANGED
@@ -1,6 +1,5 @@
1
- import { default as m } from "./data.js";
2
- const a = minimalPairsData;
1
+ import { default as e, default as f } from "./data.js";
3
2
  export {
4
- a as default,
5
- m as minimalPairsData
3
+ e as default,
4
+ f as minimalPairsData
6
5
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@polyglot-bundles/ko-minimal-pairs",
3
- "version": "0.1.0",
3
+ "version": "0.2.0",
4
4
  "type": "module",
5
5
  "main": "./dist/index.js",
6
6
  "types": "./dist/index.d.ts",