@polyglot-bundles/ms-minimal-pairs 0.2.2 → 0.3.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.
@@ -0,0 +1,3 @@
1
+ import { MinimalPairsMinimalPair } from '../../../content-shared';
2
+ export declare const level0Pairs: MinimalPairsMinimalPair[];
3
+ //# sourceMappingURL=level-0.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"level-0.d.ts","sourceRoot":"","sources":["../../src/data/level-0.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,kCAAkC,CAAC;AAEhF,eAAO,MAAM,WAAW,EAAE,uBAAuB,EAoBhD,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { MinimalPairsMinimalPair } from '../../../content-shared';
2
+ export declare const level1Pairs: MinimalPairsMinimalPair[];
3
+ //# sourceMappingURL=level-1.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"level-1.d.ts","sourceRoot":"","sources":["../../src/data/level-1.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,kCAAkC,CAAC;AAEhF,eAAO,MAAM,WAAW,EAAE,uBAAuB,EAuChD,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { MinimalPairsMinimalPair } from '../../../content-shared';
2
+ export declare const level2Pairs: MinimalPairsMinimalPair[];
3
+ //# sourceMappingURL=level-2.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"level-2.d.ts","sourceRoot":"","sources":["../../src/data/level-2.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,kCAAkC,CAAC;AAEhF,eAAO,MAAM,WAAW,EAAE,uBAAuB,EAuChD,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { MinimalPairsMinimalPair } from '../../../content-shared';
2
+ export declare const level3Pairs: MinimalPairsMinimalPair[];
3
+ //# sourceMappingURL=level-3.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"level-3.d.ts","sourceRoot":"","sources":["../../src/data/level-3.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,kCAAkC,CAAC;AAEhF,eAAO,MAAM,WAAW,EAAE,uBAAuB,EAuChD,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { MinimalPairsMinimalPair } from '../../../content-shared';
2
+ export declare const level4Pairs: MinimalPairsMinimalPair[];
3
+ //# sourceMappingURL=level-4.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"level-4.d.ts","sourceRoot":"","sources":["../../src/data/level-4.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,kCAAkC,CAAC;AAEhF,eAAO,MAAM,WAAW,EAAE,uBAAuB,EA8BhD,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { MinimalPairsMinimalPair } from '../../../content-shared';
2
+ export declare const level5Pairs: MinimalPairsMinimalPair[];
3
+ //# sourceMappingURL=level-5.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"level-5.d.ts","sourceRoot":"","sources":["../../src/data/level-5.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,kCAAkC,CAAC;AAEhF,eAAO,MAAM,WAAW,EAAE,uBAAuB,EAgChD,CAAC"}
@@ -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,wBA2N9B,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;AAmBjF,eAAO,MAAM,gBAAgB,EAAE,wBAI9B,CAAC;AAEF,eAAe,gBAAgB,CAAC"}
package/dist/data.js CHANGED
@@ -1,215 +1,235 @@
1
- const i = {
2
- levels: [
3
- { level: 0, title: "Getting Started", description: "Practice with clearly different sounds" },
4
- { level: 1, title: "Basic Vowels", description: "Malay vowel system" },
5
- { level: 2, title: "Consonant Pairs", description: "Stop and fricative contrasts" },
6
- { level: 3, title: "Nasals and Liquids", description: "Nasal and liquid consonants" },
7
- { level: 4, title: "Diphthongs", description: "Vowel glide contrasts" },
8
- { level: 5, title: "Expert Level", description: "Subtle distinctions and dialectal variation" }
9
- ],
10
- minimalPairs: [
11
- // Level 0: Clear contrasts
12
- {
13
- pairId: "ms_l0_001",
14
- level: 0,
15
- tags: ["level_0"],
16
- contrastFeature: "consonant",
17
- contrastDescription: "/k/ vs /t/",
18
- word1: { script: "kaki", romanization: "kaki", definition: "foot; leg", audioFile: null },
19
- word2: { script: "tari", romanization: "tari", definition: "dance", audioFile: null }
20
- },
21
- {
22
- pairId: "ms_l0_002",
23
- level: 0,
24
- tags: ["level_0"],
25
- contrastFeature: "consonant",
26
- contrastDescription: "/m/ vs /b/",
27
- word1: { script: "makan", romanization: "makan", definition: "to eat", audioFile: null },
28
- word2: { script: "bakan", romanization: "bakan", definition: "(will cook)", audioFile: null }
29
- },
30
- // Level 1: Basic vowels
31
- {
32
- pairId: "ms_l1_001",
33
- level: 1,
34
- tags: ["level_1", "vowel"],
35
- contrastFeature: "vowel",
36
- contrastDescription: "/a/ vs /i/",
37
- pronunciationTipId: "vowel_a_i",
38
- word1: { script: "pasir", romanization: "pasir", definition: "sand", audioFile: null },
39
- word2: { script: "pisir", romanization: "pisir", definition: "(coastal - dialectal)", audioFile: null }
40
- },
41
- {
42
- pairId: "ms_l1_002",
43
- level: 1,
44
- tags: ["level_1", "vowel"],
45
- contrastFeature: "vowel",
46
- contrastDescription: "/a/ vs /u/",
47
- word1: { script: "pasang", romanization: "pasang", definition: "pair; install", audioFile: null },
48
- word2: { script: "pusang", romanization: "pusang", definition: "(to turn - dialectal)", audioFile: null }
49
- },
50
- {
51
- pairId: "ms_l1_003",
52
- level: 1,
53
- tags: ["level_1", "vowel"],
54
- contrastFeature: "vowel",
55
- contrastDescription: "/e/ vs /o/",
56
- word1: { script: "bekas", romanization: "bekas", definition: "former; used", audioFile: null },
57
- word2: { script: "bokas", romanization: "bokas", definition: "(dialectal)", audioFile: null }
58
- },
59
- {
60
- pairId: "ms_l1_004",
61
- level: 1,
62
- tags: ["level_1", "vowel"],
63
- contrastFeature: "vowel",
64
- contrastDescription: "/ə/ (e) vs /a/",
65
- word1: { script: "elang", romanization: "elang", definition: "eagle", audioFile: null },
66
- word2: { script: "ilang", romanization: "ilang", definition: "(lost - dialectal)", audioFile: null }
67
- },
68
- // Level 2: Consonant pairs
69
- {
70
- pairId: "ms_l2_001",
71
- level: 2,
72
- tags: ["level_2", "consonant"],
73
- contrastFeature: "consonant",
74
- contrastDescription: "/b/ vs /p/",
75
- pronunciationTipId: "consonant_b_p",
76
- word1: { script: "bacar", romanization: "bacar", definition: "(to read - dialectal)", audioFile: null },
77
- word2: { script: "pacar", romanization: "pacar", definition: "girlfriend/boyfriend", audioFile: null }
78
- },
79
- {
80
- pairId: "ms_l2_002",
81
- level: 2,
82
- tags: ["level_2", "consonant"],
83
- contrastFeature: "consonant",
84
- contrastDescription: "/d/ vs /t/",
85
- word1: { script: "duri", romanization: "duri", definition: "thorn", audioFile: null },
86
- word2: { script: "turi", romanization: "turi", definition: "to show", audioFile: null }
87
- },
88
- {
89
- pairId: "ms_l2_003",
90
- level: 2,
91
- tags: ["level_2", "consonant"],
92
- contrastFeature: "consonant",
93
- contrastDescription: "/k/ vs /g/",
94
- word1: { script: "kasa", romanization: "kasa", definition: "gauze", audioFile: null },
95
- word2: { script: "gasa", romanization: "gasa", definition: "(force - dialectal)", audioFile: null }
96
- },
97
- {
98
- pairId: "ms_l2_004",
99
- level: 2,
100
- tags: ["level_2", "consonant"],
101
- contrastFeature: "consonant",
102
- contrastDescription: "/s/ vs /h/",
103
- word1: { script: "sinar", romanization: "sinar", definition: "ray; light", audioFile: null },
104
- word2: { script: "hinar", romanization: "hinar", definition: "(dialectal)", audioFile: null }
105
- },
106
- // Level 3: Nasals and liquids
107
- {
108
- pairId: "ms_l3_001",
109
- level: 3,
110
- tags: ["level_3", "consonant"],
111
- contrastFeature: "consonant",
112
- contrastDescription: "/m/ vs /n/",
113
- pronunciationTipId: "consonant_m_n",
114
- word1: { script: "masa", romanization: "masa", definition: "time; mass", audioFile: null },
115
- word2: { script: "nasa", romanization: "nasa", definition: "(intention)", audioFile: null }
116
- },
117
- {
118
- pairId: "ms_l3_002",
119
- level: 3,
120
- tags: ["level_3", "consonant"],
121
- contrastFeature: "consonant",
122
- contrastDescription: "/n/ vs /ŋ/ (ng)",
123
- word1: { script: "nasi", romanization: "nasi", definition: "rice", audioFile: null },
124
- word2: { script: "ngasi", romanization: "ngasi", definition: "(to give - dialectal)", audioFile: null }
125
- },
126
- {
127
- pairId: "ms_l3_003",
128
- level: 3,
129
- tags: ["level_3", "consonant"],
130
- contrastFeature: "consonant",
131
- contrastDescription: "/l/ vs /r/",
132
- word1: { script: "lalat", romanization: "lalat", definition: "fly (insect)", audioFile: null },
133
- word2: { script: "ralat", romanization: "ralat", definition: "correction", audioFile: null }
134
- },
135
- {
136
- pairId: "ms_l3_004",
137
- level: 3,
138
- tags: ["level_3", "consonant"],
139
- contrastFeature: "consonant",
140
- contrastDescription: "/ɲ/ (ny) vs /n/",
141
- word1: { script: "nyanyi", romanization: "nyanyi", definition: "to sing", audioFile: null },
142
- word2: { script: "nanyi", romanization: "nanyi", definition: "(dialectal)", audioFile: null }
143
- },
144
- // Level 4: Diphthongs
145
- {
146
- pairId: "ms_l4_001",
147
- level: 4,
148
- tags: ["level_4", "diphthong"],
149
- contrastFeature: "diphthong",
150
- contrastDescription: "/ai/ vs /a/",
151
- pronunciationTipId: "diphthong_ai",
152
- word1: { script: "pantai", romanization: "pantai", definition: "beach", audioFile: null },
153
- word2: { script: "panti", romanization: "panti", definition: "orphanage; hall", audioFile: null }
154
- },
155
- {
156
- pairId: "ms_l4_002",
157
- level: 4,
158
- tags: ["level_4", "diphthong"],
159
- contrastFeature: "diphthong",
160
- contrastDescription: "/au/ vs /a/",
161
- word1: { script: "pulau", romanization: "pulau", definition: "island", audioFile: null },
162
- word2: { script: "pula", romanization: "pula", definition: "again; also", audioFile: null }
163
- },
164
- {
165
- pairId: "ms_l4_003",
166
- level: 4,
167
- tags: ["level_4", "diphthong"],
168
- contrastFeature: "diphthong",
169
- contrastDescription: "/oi/ vs /o/",
170
- word1: { script: "sepoi", romanization: "sepoi", definition: "gentle breeze", audioFile: null },
171
- word2: { script: "sepo", romanization: "sepo", definition: "(dialectal)", audioFile: null }
172
- },
173
- // Level 5: Expert - subtle distinctions
174
- {
175
- pairId: "ms_l5_001",
176
- level: 5,
177
- tags: ["level_5", "consonant"],
178
- contrastFeature: "consonant",
179
- contrastDescription: "/tʃ/ (c) vs /k/",
180
- word1: { script: "cari", romanization: "cari", definition: "to search", audioFile: null },
181
- word2: { script: "kari", romanization: "kari", definition: "curry", audioFile: null },
182
- notes: "Malay 'c' is pronounced /tʃ/ like English 'ch'."
183
- },
184
- {
185
- pairId: "ms_l5_002",
186
- level: 5,
187
- tags: ["level_5", "consonant"],
188
- contrastFeature: "consonant",
189
- contrastDescription: "/dʒ/ (j) vs /tʃ/ (c)",
190
- word1: { script: "jari", romanization: "jari", definition: "finger", audioFile: null },
191
- word2: { script: "cari", romanization: "cari", definition: "to search", audioFile: null },
192
- notes: "'j' is /dʒ/ like English 'j', 'c' is /tʃ/ like English 'ch'."
193
- },
194
- {
195
- pairId: "ms_l5_003",
196
- level: 5,
197
- tags: ["level_5", "vowel"],
198
- contrastFeature: "vowel",
199
- contrastDescription: "Schwa /ə/ variation",
200
- word1: { script: "empat", romanization: "empat", definition: "four", audioFile: null },
201
- word2: { script: "ampat", romanization: "ampat", definition: "(four - dialectal)", audioFile: null },
202
- notes: "Schwa /e/ in standard Malay may be pronounced as /a/ in some dialects."
203
- }
204
- ],
205
- pronunciationTips: {
206
- vowel_a_i: "/a/ is open central (like 'father'). /i/ is close front (like 'see'). Malay vowels are pure and stable.",
207
- consonant_b_p: "/b/ is voiced (throat vibrates). /p/ is voiceless. Malay /p/ is unaspirated (no puff of air).",
208
- consonant_m_n: "/m/ is bilabial nasal (lips together). /n/ is alveolar nasal (tongue on ridge).",
209
- diphthong_ai: "/ai/ glides from /a/ to /i/. Keep both vowel qualities clear - don't reduce to a single sound."
1
+ const i = [
2
+ { level: 0, title: "Getting Started", description: "Practice with clearly different sounds" },
3
+ { level: 1, title: "Basic Vowels", description: "Malay vowel system" },
4
+ { level: 2, title: "Consonant Pairs", description: "Stop and fricative contrasts" },
5
+ { level: 3, title: "Nasals and Liquids", description: "Nasal and liquid consonants" },
6
+ { level: 4, title: "Diphthongs", description: "Vowel glide contrasts" },
7
+ { level: 5, title: "Expert Level", description: "Subtle distinctions and dialectal variation" }
8
+ ], a = {
9
+ vowel_a_i: "/a/ is open central (like 'father'). /i/ is close front (like 'see'). Malay vowels are pure and stable.",
10
+ consonant_b_p: "/b/ is voiced (throat vibrates). /p/ is voiceless. Malay /p/ is unaspirated (no puff of air).",
11
+ consonant_m_n: "/m/ is bilabial nasal (lips together). /n/ is alveolar nasal (tongue on ridge).",
12
+ diphthong_ai: "/ai/ glides from /a/ to /i/. Keep both vowel qualities clear - don't reduce to a single sound."
13
+ }, n = [
14
+ // Level 0: Clear contrasts
15
+ {
16
+ pairId: "ms_l0_001",
17
+ level: 0,
18
+ tags: ["level_0"],
19
+ contrastFeature: "consonant",
20
+ contrastDescription: "/k/ vs /t/",
21
+ word1: { script: "kaki", romanization: "kaki", definition: "foot; leg", audioFile: null },
22
+ word2: { script: "tari", romanization: "tari", definition: "dance", audioFile: null }
23
+ },
24
+ {
25
+ pairId: "ms_l0_002",
26
+ level: 0,
27
+ tags: ["level_0"],
28
+ contrastFeature: "consonant",
29
+ contrastDescription: "/m/ vs /b/",
30
+ word1: { script: "makan", romanization: "makan", definition: "to eat", audioFile: null },
31
+ word2: { script: "bakan", romanization: "bakan", definition: "(will cook)", audioFile: null }
210
32
  }
33
+ ], o = [
34
+ // Level 1: Basic vowels
35
+ {
36
+ pairId: "ms_l1_001",
37
+ level: 1,
38
+ tags: ["level_1", "vowel"],
39
+ contrastFeature: "vowel",
40
+ contrastDescription: "/a/ vs /i/",
41
+ pronunciationTipId: "vowel_a_i",
42
+ word1: { script: "pasir", romanization: "pasir", definition: "sand", audioFile: null },
43
+ word2: { script: "pisir", romanization: "pisir", definition: "(coastal - dialectal)", audioFile: null }
44
+ },
45
+ {
46
+ pairId: "ms_l1_002",
47
+ level: 1,
48
+ tags: ["level_1", "vowel"],
49
+ contrastFeature: "vowel",
50
+ contrastDescription: "/a/ vs /u/",
51
+ word1: { script: "pasang", romanization: "pasang", definition: "pair; install", audioFile: null },
52
+ word2: { script: "pusang", romanization: "pusang", definition: "(to turn - dialectal)", audioFile: null }
53
+ },
54
+ {
55
+ pairId: "ms_l1_003",
56
+ level: 1,
57
+ tags: ["level_1", "vowel"],
58
+ contrastFeature: "vowel",
59
+ contrastDescription: "/e/ vs /o/",
60
+ word1: { script: "bekas", romanization: "bekas", definition: "former; used", audioFile: null },
61
+ word2: { script: "bokas", romanization: "bokas", definition: "(dialectal)", audioFile: null }
62
+ },
63
+ {
64
+ pairId: "ms_l1_004",
65
+ level: 1,
66
+ tags: ["level_1", "vowel"],
67
+ contrastFeature: "vowel",
68
+ contrastDescription: "/ə/ (e) vs /a/",
69
+ word1: { script: "elang", romanization: "elang", definition: "eagle", audioFile: null },
70
+ word2: { script: "ilang", romanization: "ilang", definition: "(lost - dialectal)", audioFile: null }
71
+ }
72
+ ], t = [
73
+ // Level 2: Consonant pairs
74
+ {
75
+ pairId: "ms_l2_001",
76
+ level: 2,
77
+ tags: ["level_2", "consonant"],
78
+ contrastFeature: "consonant",
79
+ contrastDescription: "/b/ vs /p/",
80
+ pronunciationTipId: "consonant_b_p",
81
+ word1: { script: "bacar", romanization: "bacar", definition: "(to read - dialectal)", audioFile: null },
82
+ word2: { script: "pacar", romanization: "pacar", definition: "girlfriend/boyfriend", audioFile: null }
83
+ },
84
+ {
85
+ pairId: "ms_l2_002",
86
+ level: 2,
87
+ tags: ["level_2", "consonant"],
88
+ contrastFeature: "consonant",
89
+ contrastDescription: "/d/ vs /t/",
90
+ word1: { script: "duri", romanization: "duri", definition: "thorn", audioFile: null },
91
+ word2: { script: "turi", romanization: "turi", definition: "to show", audioFile: null }
92
+ },
93
+ {
94
+ pairId: "ms_l2_003",
95
+ level: 2,
96
+ tags: ["level_2", "consonant"],
97
+ contrastFeature: "consonant",
98
+ contrastDescription: "/k/ vs /g/",
99
+ word1: { script: "kasa", romanization: "kasa", definition: "gauze", audioFile: null },
100
+ word2: { script: "gasa", romanization: "gasa", definition: "(force - dialectal)", audioFile: null }
101
+ },
102
+ {
103
+ pairId: "ms_l2_004",
104
+ level: 2,
105
+ tags: ["level_2", "consonant"],
106
+ contrastFeature: "consonant",
107
+ contrastDescription: "/s/ vs /h/",
108
+ word1: { script: "sinar", romanization: "sinar", definition: "ray; light", audioFile: null },
109
+ word2: { script: "hinar", romanization: "hinar", definition: "(dialectal)", audioFile: null }
110
+ }
111
+ ], e = [
112
+ // Level 3: Nasals and liquids
113
+ {
114
+ pairId: "ms_l3_001",
115
+ level: 3,
116
+ tags: ["level_3", "consonant"],
117
+ contrastFeature: "consonant",
118
+ contrastDescription: "/m/ vs /n/",
119
+ pronunciationTipId: "consonant_m_n",
120
+ word1: { script: "masa", romanization: "masa", definition: "time; mass", audioFile: null },
121
+ word2: { script: "nasa", romanization: "nasa", definition: "(intention)", audioFile: null }
122
+ },
123
+ {
124
+ pairId: "ms_l3_002",
125
+ level: 3,
126
+ tags: ["level_3", "consonant"],
127
+ contrastFeature: "consonant",
128
+ contrastDescription: "/n/ vs /ŋ/ (ng)",
129
+ word1: { script: "nasi", romanization: "nasi", definition: "rice", audioFile: null },
130
+ word2: { script: "ngasi", romanization: "ngasi", definition: "(to give - dialectal)", audioFile: null }
131
+ },
132
+ {
133
+ pairId: "ms_l3_003",
134
+ level: 3,
135
+ tags: ["level_3", "consonant"],
136
+ contrastFeature: "consonant",
137
+ contrastDescription: "/l/ vs /r/",
138
+ word1: { script: "lalat", romanization: "lalat", definition: "fly (insect)", audioFile: null },
139
+ word2: { script: "ralat", romanization: "ralat", definition: "correction", audioFile: null }
140
+ },
141
+ {
142
+ pairId: "ms_l3_004",
143
+ level: 3,
144
+ tags: ["level_3", "consonant"],
145
+ contrastFeature: "consonant",
146
+ contrastDescription: "/ɲ/ (ny) vs /n/",
147
+ word1: { script: "nyanyi", romanization: "nyanyi", definition: "to sing", audioFile: null },
148
+ word2: { script: "nanyi", romanization: "nanyi", definition: "(dialectal)", audioFile: null }
149
+ }
150
+ ], l = [
151
+ // Level 4: Diphthongs
152
+ {
153
+ pairId: "ms_l4_001",
154
+ level: 4,
155
+ tags: ["level_4", "diphthong"],
156
+ contrastFeature: "diphthong",
157
+ contrastDescription: "/ai/ vs /a/",
158
+ pronunciationTipId: "diphthong_ai",
159
+ word1: { script: "pantai", romanization: "pantai", definition: "beach", audioFile: null },
160
+ word2: { script: "panti", romanization: "panti", definition: "orphanage; hall", audioFile: null }
161
+ },
162
+ {
163
+ pairId: "ms_l4_002",
164
+ level: 4,
165
+ tags: ["level_4", "diphthong"],
166
+ contrastFeature: "diphthong",
167
+ contrastDescription: "/au/ vs /a/",
168
+ word1: { script: "pulau", romanization: "pulau", definition: "island", audioFile: null },
169
+ word2: { script: "pula", romanization: "pula", definition: "again; also", audioFile: null }
170
+ },
171
+ {
172
+ pairId: "ms_l4_003",
173
+ level: 4,
174
+ tags: ["level_4", "diphthong"],
175
+ contrastFeature: "diphthong",
176
+ contrastDescription: "/oi/ vs /o/",
177
+ word1: { script: "sepoi", romanization: "sepoi", definition: "gentle breeze", audioFile: null },
178
+ word2: { script: "sepo", romanization: "sepo", definition: "(dialectal)", audioFile: null }
179
+ }
180
+ ], r = [
181
+ // Level 5: Expert - subtle distinctions
182
+ {
183
+ pairId: "ms_l5_001",
184
+ level: 5,
185
+ tags: ["level_5", "consonant"],
186
+ contrastFeature: "consonant",
187
+ contrastDescription: "/tʃ/ (c) vs /k/",
188
+ word1: { script: "cari", romanization: "cari", definition: "to search", audioFile: null },
189
+ word2: { script: "kari", romanization: "kari", definition: "curry", audioFile: null },
190
+ notes: "Malay 'c' is pronounced /tʃ/ like English 'ch'."
191
+ },
192
+ {
193
+ pairId: "ms_l5_002",
194
+ level: 5,
195
+ tags: ["level_5", "consonant"],
196
+ contrastFeature: "consonant",
197
+ contrastDescription: "/dʒ/ (j) vs /tʃ/ (c)",
198
+ word1: { script: "jari", romanization: "jari", definition: "finger", audioFile: null },
199
+ word2: { script: "cari", romanization: "cari", definition: "to search", audioFile: null },
200
+ notes: "'j' is /dʒ/ like English 'j', 'c' is /tʃ/ like English 'ch'."
201
+ },
202
+ {
203
+ pairId: "ms_l5_003",
204
+ level: 5,
205
+ tags: ["level_5", "vowel"],
206
+ contrastFeature: "vowel",
207
+ contrastDescription: "Schwa /ə/ variation",
208
+ word1: { script: "empat", romanization: "empat", definition: "four", audioFile: null },
209
+ word2: { script: "ampat", romanization: "ampat", definition: "(four - dialectal)", audioFile: null },
210
+ notes: "Schwa /e/ in standard Malay may be pronounced as /a/ in some dialects."
211
+ }
212
+ ], s = [
213
+ ...n,
214
+ ...o,
215
+ ...t,
216
+ ...e,
217
+ ...l,
218
+ ...r
219
+ ], d = {
220
+ levels: i,
221
+ minimalPairs: s,
222
+ pronunciationTips: a
211
223
  };
212
224
  export {
213
- i as default,
214
- i as minimalPairsData
225
+ o as a,
226
+ t as b,
227
+ e as c,
228
+ l as d,
229
+ d as default,
230
+ r as e,
231
+ i as f,
232
+ n as l,
233
+ d as minimalPairsData,
234
+ a as p
215
235
  };
package/dist/index.d.ts CHANGED
@@ -1,4 +1,11 @@
1
1
  export { minimalPairsData as default } from './data';
2
- export { minimalPairsData } from './data';
2
+ export { levels } from './levels';
3
+ export { pronunciationTips } from './pronunciationTips';
4
+ export { level0Pairs } from './data/level-0';
5
+ export { level1Pairs } from './data/level-1';
6
+ export { level2Pairs } from './data/level-2';
7
+ export { level3Pairs } from './data/level-3';
8
+ export { level4Pairs } from './data/level-4';
9
+ export { level5Pairs } from './data/level-5';
3
10
  export type { MinimalPairsLanguageData, MinimalPairsLevelInfo, MinimalPairsMinimalPair, MinimalPairsPronunciationTipsMap, MinimalPairsRubySegment, MinimalPairsWordInfo, } from '../../content-shared';
4
11
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,IAAI,OAAO,EAAE,MAAM,QAAQ,CAAC;AAGrD,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAGxD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAG7C,YAAY,EACV,wBAAwB,EACxB,qBAAqB,EACrB,uBAAuB,EACvB,gCAAgC,EAChC,uBAAuB,EACvB,oBAAoB,GACrB,MAAM,kCAAkC,CAAC"}
package/dist/index.js CHANGED
@@ -1,5 +1,12 @@
1
- import { default as e, default as f } from "./data.js";
1
+ import { default as l, l as s, a as i, b as r, c as v, d as P, e as o, f as p, p as f } from "./data.js";
2
2
  export {
3
- e as default,
4
- f as minimalPairsData
3
+ l as default,
4
+ s as level0Pairs,
5
+ i as level1Pairs,
6
+ r as level2Pairs,
7
+ v as level3Pairs,
8
+ P as level4Pairs,
9
+ o as level5Pairs,
10
+ p as levels,
11
+ f as pronunciationTips
5
12
  };
@@ -0,0 +1,3 @@
1
+ import { MinimalPairsLevelInfo } from '../../content-shared';
2
+ export declare const levels: MinimalPairsLevelInfo[];
3
+ //# sourceMappingURL=levels.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"levels.d.ts","sourceRoot":"","sources":["../src/levels.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAC;AAE9E,eAAO,MAAM,MAAM,EAAE,qBAAqB,EAOzC,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { MinimalPairsPronunciationTipsMap } from '../../content-shared';
2
+ export declare const pronunciationTips: MinimalPairsPronunciationTipsMap;
3
+ //# sourceMappingURL=pronunciationTips.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pronunciationTips.d.ts","sourceRoot":"","sources":["../src/pronunciationTips.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gCAAgC,EAAE,MAAM,kCAAkC,CAAC;AAEzF,eAAO,MAAM,iBAAiB,EAAE,gCAS/B,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@polyglot-bundles/ms-minimal-pairs",
3
- "version": "0.2.2",
3
+ "version": "0.3.0",
4
4
  "type": "module",
5
5
  "main": "./dist/index.js",
6
6
  "types": "./dist/index.d.ts",
@@ -12,6 +12,38 @@
12
12
  "./data": {
13
13
  "types": "./dist/data.d.ts",
14
14
  "import": "./dist/data.js"
15
+ },
16
+ "./levels": {
17
+ "types": "./dist/levels.d.ts",
18
+ "import": "./dist/levels.js"
19
+ },
20
+ "./pronunciationTips": {
21
+ "types": "./dist/pronunciationTips.d.ts",
22
+ "import": "./dist/pronunciationTips.js"
23
+ },
24
+ "./data/level-0": {
25
+ "types": "./dist/data/level-0.d.ts",
26
+ "import": "./dist/data/level-0.js"
27
+ },
28
+ "./data/level-1": {
29
+ "types": "./dist/data/level-1.d.ts",
30
+ "import": "./dist/data/level-1.js"
31
+ },
32
+ "./data/level-2": {
33
+ "types": "./dist/data/level-2.d.ts",
34
+ "import": "./dist/data/level-2.js"
35
+ },
36
+ "./data/level-3": {
37
+ "types": "./dist/data/level-3.d.ts",
38
+ "import": "./dist/data/level-3.js"
39
+ },
40
+ "./data/level-4": {
41
+ "types": "./dist/data/level-4.d.ts",
42
+ "import": "./dist/data/level-4.js"
43
+ },
44
+ "./data/level-5": {
45
+ "types": "./dist/data/level-5.d.ts",
46
+ "import": "./dist/data/level-5.js"
15
47
  }
16
48
  },
17
49
  "files": [