@polyglot-bundles/ja-minimal-pairs 0.2.5 → 0.2.6

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,34 +1,62 @@
1
- const i = [
2
- // Level 0
3
- {
4
- pairId: "ja_l0_001",
5
- level: 0,
6
- tags: ["level_0"],
7
- contrastFeature: "consonant",
8
- contrastDescription: "/k/ vs /s/",
9
- word1: { script: "かさ", romanization: "kasa", definition: "umbrella", audioFile: null },
10
- word2: { script: "ささ", romanization: "sasa", definition: "bamboo grass", audioFile: null }
11
- },
12
- // Additional Level 0 pairs
13
- {
14
- pairId: "ja_l0_002",
15
- level: 0,
16
- tags: ["level_0"],
17
- contrastFeature: "consonant",
18
- contrastDescription: "/t/ vs /n/",
19
- word1: { script: "たこ", romanization: "tako", definition: "kite; octopus", audioFile: null },
20
- word2: { script: "なご", romanization: "nago", definition: "(name)", audioFile: null }
21
- },
22
- {
23
- pairId: "ja_l0_003",
24
- level: 0,
25
- tags: ["level_0"],
26
- contrastFeature: "consonant",
27
- contrastDescription: "/h/ vs /m/",
28
- word1: { script: "はな", romanization: "hana", definition: "flower; nose", audioFile: null },
29
- word2: { script: "まな", romanization: "mana", definition: "learning", audioFile: null }
30
- }
1
+ //#region src/data/level-0.ts
2
+ var e = [
3
+ {
4
+ pairId: "ja_l0_001",
5
+ level: 0,
6
+ tags: ["level_0"],
7
+ contrastFeature: "consonant",
8
+ contrastDescription: "/k/ vs /s/",
9
+ word1: {
10
+ script: "かさ",
11
+ romanization: "kasa",
12
+ definition: "umbrella",
13
+ audioFile: null
14
+ },
15
+ word2: {
16
+ script: "ささ",
17
+ romanization: "sasa",
18
+ definition: "bamboo grass",
19
+ audioFile: null
20
+ }
21
+ },
22
+ {
23
+ pairId: "ja_l0_002",
24
+ level: 0,
25
+ tags: ["level_0"],
26
+ contrastFeature: "consonant",
27
+ contrastDescription: "/t/ vs /n/",
28
+ word1: {
29
+ script: "たこ",
30
+ romanization: "tako",
31
+ definition: "kite; octopus",
32
+ audioFile: null
33
+ },
34
+ word2: {
35
+ script: "なご",
36
+ romanization: "nago",
37
+ definition: "(name)",
38
+ audioFile: null
39
+ }
40
+ },
41
+ {
42
+ pairId: "ja_l0_003",
43
+ level: 0,
44
+ tags: ["level_0"],
45
+ contrastFeature: "consonant",
46
+ contrastDescription: "/h/ vs /m/",
47
+ word1: {
48
+ script: "はな",
49
+ romanization: "hana",
50
+ definition: "flower; nose",
51
+ audioFile: null
52
+ },
53
+ word2: {
54
+ script: "まな",
55
+ romanization: "mana",
56
+ definition: "learning",
57
+ audioFile: null
58
+ }
59
+ }
31
60
  ];
32
- export {
33
- i as level0Pairs
34
- };
61
+ //#endregion
62
+ export { e as level0Pairs };
@@ -1,53 +1,101 @@
1
- const i = [
2
- // Level 1: Vowels
3
- {
4
- pairId: "ja_l1_001",
5
- level: 1,
6
- tags: ["level_1", "vowel"],
7
- contrastFeature: "vowel",
8
- contrastDescription: "/a/ vs /o/",
9
- pronunciationTipId: "vowel_a_o",
10
- word1: { script: "さか", romanization: "saka", definition: "slope", audioFile: null },
11
- word2: { script: "さこ", romanization: "sako", definition: "cape", audioFile: null }
12
- },
13
- {
14
- pairId: "ja_l1_002",
15
- level: 1,
16
- tags: ["level_1", "vowel"],
17
- contrastFeature: "vowel",
18
- contrastDescription: "/i/ vs /e/",
19
- word1: { script: "きた", romanization: "kita", definition: "north; came", audioFile: null },
20
- word2: { script: "けた", romanization: "keta", definition: "digit", audioFile: null }
21
- },
22
- {
23
- pairId: "ja_l1_003",
24
- level: 1,
25
- tags: ["level_1", "vowel"],
26
- contrastFeature: "vowel",
27
- contrastDescription: "/u/ vs /o/",
28
- word1: { script: "くち", romanization: "kuchi", definition: "mouth", audioFile: null },
29
- word2: { script: "こち", romanization: "kochi", definition: "this way", audioFile: null }
30
- },
31
- // Additional Level 1: More vowel contrasts
32
- {
33
- pairId: "ja_l1_004",
34
- level: 1,
35
- tags: ["level_1", "vowel"],
36
- contrastFeature: "vowel",
37
- contrastDescription: "/a/ vs /u/",
38
- word1: { script: "さか", romanization: "saka", definition: "slope", audioFile: null },
39
- word2: { script: "すか", romanization: "suka", definition: "(skirt)", audioFile: null }
40
- },
41
- {
42
- pairId: "ja_l1_005",
43
- level: 1,
44
- tags: ["level_1", "vowel"],
45
- contrastFeature: "vowel",
46
- contrastDescription: "/o/ vs /u/",
47
- word1: { script: "とり", romanization: "tori", definition: "bird", audioFile: null },
48
- word2: { script: "つり", romanization: "tsuri", definition: "fishing", audioFile: null }
49
- }
1
+ //#region src/data/level-1.ts
2
+ var e = [
3
+ {
4
+ pairId: "ja_l1_001",
5
+ level: 1,
6
+ tags: ["level_1", "vowel"],
7
+ contrastFeature: "vowel",
8
+ contrastDescription: "/a/ vs /o/",
9
+ pronunciationTipId: "vowel_a_o",
10
+ word1: {
11
+ script: "さか",
12
+ romanization: "saka",
13
+ definition: "slope",
14
+ audioFile: null
15
+ },
16
+ word2: {
17
+ script: "さこ",
18
+ romanization: "sako",
19
+ definition: "cape",
20
+ audioFile: null
21
+ }
22
+ },
23
+ {
24
+ pairId: "ja_l1_002",
25
+ level: 1,
26
+ tags: ["level_1", "vowel"],
27
+ contrastFeature: "vowel",
28
+ contrastDescription: "/i/ vs /e/",
29
+ word1: {
30
+ script: "きた",
31
+ romanization: "kita",
32
+ definition: "north; came",
33
+ audioFile: null
34
+ },
35
+ word2: {
36
+ script: "けた",
37
+ romanization: "keta",
38
+ definition: "digit",
39
+ audioFile: null
40
+ }
41
+ },
42
+ {
43
+ pairId: "ja_l1_003",
44
+ level: 1,
45
+ tags: ["level_1", "vowel"],
46
+ contrastFeature: "vowel",
47
+ contrastDescription: "/u/ vs /o/",
48
+ word1: {
49
+ script: "くち",
50
+ romanization: "kuchi",
51
+ definition: "mouth",
52
+ audioFile: null
53
+ },
54
+ word2: {
55
+ script: "こち",
56
+ romanization: "kochi",
57
+ definition: "this way",
58
+ audioFile: null
59
+ }
60
+ },
61
+ {
62
+ pairId: "ja_l1_004",
63
+ level: 1,
64
+ tags: ["level_1", "vowel"],
65
+ contrastFeature: "vowel",
66
+ contrastDescription: "/a/ vs /u/",
67
+ word1: {
68
+ script: "さか",
69
+ romanization: "saka",
70
+ definition: "slope",
71
+ audioFile: null
72
+ },
73
+ word2: {
74
+ script: "すか",
75
+ romanization: "suka",
76
+ definition: "(skirt)",
77
+ audioFile: null
78
+ }
79
+ },
80
+ {
81
+ pairId: "ja_l1_005",
82
+ level: 1,
83
+ tags: ["level_1", "vowel"],
84
+ contrastFeature: "vowel",
85
+ contrastDescription: "/o/ vs /u/",
86
+ word1: {
87
+ script: "とり",
88
+ romanization: "tori",
89
+ definition: "bird",
90
+ audioFile: null
91
+ },
92
+ word2: {
93
+ script: "つり",
94
+ romanization: "tsuri",
95
+ definition: "fishing",
96
+ audioFile: null
97
+ }
98
+ }
50
99
  ];
51
- export {
52
- i as level1Pairs
53
- };
100
+ //#endregion
101
+ export { e as level1Pairs };
@@ -1,62 +1,120 @@
1
- const i = [
2
- // Level 2: Long vowels
3
- {
4
- pairId: "ja_l2_001",
5
- level: 2,
6
- tags: ["level_2", "length"],
7
- contrastFeature: "vowel",
8
- contrastDescription: "Short /o/ vs Long /oo/",
9
- pronunciationTipId: "vowel_length",
10
- word1: { script: "おばさん", romanization: "obasan", definition: "aunt; middle-aged woman", audioFile: null },
11
- word2: { script: "おばあさん", romanization: "obaasan", definition: "grandmother; elderly woman", audioFile: null }
12
- },
13
- {
14
- pairId: "ja_l2_002",
15
- level: 2,
16
- tags: ["level_2", "length"],
17
- contrastFeature: "vowel",
18
- contrastDescription: "Short /u/ vs Long /uu/",
19
- word1: { script: "ゆき", romanization: "yuki", definition: "snow", audioFile: null },
20
- word2: { script: "ゆうき", romanization: "yuuki", definition: "courage", audioFile: null }
21
- },
22
- {
23
- pairId: "ja_l2_003",
24
- level: 2,
25
- tags: ["level_2", "length"],
26
- contrastFeature: "vowel",
27
- contrastDescription: "Short /e/ vs Long /ee/",
28
- word1: { script: "せんせい", romanization: "sensei", definition: "teacher", audioFile: null },
29
- word2: { script: "せんせえ", romanization: "sensee", definition: "(casual form of sensei)", audioFile: null }
30
- },
31
- // Additional Level 2: More long vowel contrasts
32
- {
33
- pairId: "ja_l2_004",
34
- level: 2,
35
- tags: ["level_2", "length"],
36
- contrastFeature: "vowel",
37
- contrastDescription: "Short /i/ vs Long /ii/",
38
- word1: { script: "びる", romanization: "biru", definition: "building (loanword)", audioFile: null },
39
- word2: { script: "びいる", romanization: "biiru", definition: "beer", audioFile: null }
40
- },
41
- {
42
- pairId: "ja_l2_005",
43
- level: 2,
44
- tags: ["level_2", "length"],
45
- contrastFeature: "vowel",
46
- contrastDescription: "Short /a/ vs Long /aa/",
47
- word1: { script: "おばさん", romanization: "obasan", definition: "aunt", audioFile: null },
48
- word2: { script: "おばあさん", romanization: "obaasan", definition: "grandmother", audioFile: null }
49
- },
50
- {
51
- pairId: "ja_l2_006",
52
- level: 2,
53
- tags: ["level_2", "length"],
54
- contrastFeature: "vowel",
55
- contrastDescription: "Short /e/ vs Long /ee/",
56
- word1: { script: "えき", romanization: "eki", definition: "station", audioFile: null },
57
- word2: { script: "ええき", romanization: "eeki", definition: "(good smell - dialectal)", audioFile: null }
58
- }
1
+ //#region src/data/level-2.ts
2
+ var e = [
3
+ {
4
+ pairId: "ja_l2_001",
5
+ level: 2,
6
+ tags: ["level_2", "length"],
7
+ contrastFeature: "vowel",
8
+ contrastDescription: "Short /o/ vs Long /oo/",
9
+ pronunciationTipId: "vowel_length",
10
+ word1: {
11
+ script: "おばさん",
12
+ romanization: "obasan",
13
+ definition: "aunt; middle-aged woman",
14
+ audioFile: null
15
+ },
16
+ word2: {
17
+ script: "おばあさん",
18
+ romanization: "obaasan",
19
+ definition: "grandmother; elderly woman",
20
+ audioFile: null
21
+ }
22
+ },
23
+ {
24
+ pairId: "ja_l2_002",
25
+ level: 2,
26
+ tags: ["level_2", "length"],
27
+ contrastFeature: "vowel",
28
+ contrastDescription: "Short /u/ vs Long /uu/",
29
+ word1: {
30
+ script: "ゆき",
31
+ romanization: "yuki",
32
+ definition: "snow",
33
+ audioFile: null
34
+ },
35
+ word2: {
36
+ script: "ゆうき",
37
+ romanization: "yuuki",
38
+ definition: "courage",
39
+ audioFile: null
40
+ }
41
+ },
42
+ {
43
+ pairId: "ja_l2_003",
44
+ level: 2,
45
+ tags: ["level_2", "length"],
46
+ contrastFeature: "vowel",
47
+ contrastDescription: "Short /e/ vs Long /ee/",
48
+ word1: {
49
+ script: "せんせい",
50
+ romanization: "sensei",
51
+ definition: "teacher",
52
+ audioFile: null
53
+ },
54
+ word2: {
55
+ script: "せんせえ",
56
+ romanization: "sensee",
57
+ definition: "(casual form of sensei)",
58
+ audioFile: null
59
+ }
60
+ },
61
+ {
62
+ pairId: "ja_l2_004",
63
+ level: 2,
64
+ tags: ["level_2", "length"],
65
+ contrastFeature: "vowel",
66
+ contrastDescription: "Short /i/ vs Long /ii/",
67
+ word1: {
68
+ script: "びる",
69
+ romanization: "biru",
70
+ definition: "building (loanword)",
71
+ audioFile: null
72
+ },
73
+ word2: {
74
+ script: "びいる",
75
+ romanization: "biiru",
76
+ definition: "beer",
77
+ audioFile: null
78
+ }
79
+ },
80
+ {
81
+ pairId: "ja_l2_005",
82
+ level: 2,
83
+ tags: ["level_2", "length"],
84
+ contrastFeature: "vowel",
85
+ contrastDescription: "Short /a/ vs Long /aa/",
86
+ word1: {
87
+ script: "おばさん",
88
+ romanization: "obasan",
89
+ definition: "aunt",
90
+ audioFile: null
91
+ },
92
+ word2: {
93
+ script: "おばあさん",
94
+ romanization: "obaasan",
95
+ definition: "grandmother",
96
+ audioFile: null
97
+ }
98
+ },
99
+ {
100
+ pairId: "ja_l2_006",
101
+ level: 2,
102
+ tags: ["level_2", "length"],
103
+ contrastFeature: "vowel",
104
+ contrastDescription: "Short /e/ vs Long /ee/",
105
+ word1: {
106
+ script: "えき",
107
+ romanization: "eki",
108
+ definition: "station",
109
+ audioFile: null
110
+ },
111
+ word2: {
112
+ script: "ええき",
113
+ romanization: "eeki",
114
+ definition: "(good smell - dialectal)",
115
+ audioFile: null
116
+ }
117
+ }
59
118
  ];
60
- export {
61
- i as level2Pairs
62
- };
119
+ //#endregion
120
+ export { e as level2Pairs };
@@ -1,62 +1,120 @@
1
- const i = [
2
- // Level 3: Voicing
3
- {
4
- pairId: "ja_l3_001",
5
- level: 3,
6
- tags: ["level_3", "voicing"],
7
- contrastFeature: "consonant",
8
- contrastDescription: "/k/ vs /g/ - voiceless vs voiced",
9
- pronunciationTipId: "consonant_k_g",
10
- word1: { script: "かみ", romanization: "kami", definition: "paper; god; hair", audioFile: null },
11
- word2: { script: "がみ", romanization: "gami", definition: "harsh scolding", audioFile: null }
12
- },
13
- {
14
- pairId: "ja_l3_002",
15
- level: 3,
16
- tags: ["level_3", "voicing"],
17
- contrastFeature: "consonant",
18
- contrastDescription: "/t/ vs /d/",
19
- word1: { script: "たいこ", romanization: "taiko", definition: "drum", audioFile: null },
20
- word2: { script: "だいこ", romanization: "daiko", definition: "substitute", audioFile: null }
21
- },
22
- {
23
- pairId: "ja_l3_003",
24
- level: 3,
25
- tags: ["level_3", "voicing"],
26
- contrastFeature: "consonant",
27
- contrastDescription: "/h/ vs /b/ vs /p/",
28
- word1: { script: "はな", romanization: "hana", definition: "flower; nose", audioFile: null },
29
- word2: { script: "ばな", romanization: "bana", definition: "(in compounds)", audioFile: null }
30
- },
31
- // Additional Level 3: More voicing contrasts
32
- {
33
- pairId: "ja_l3_004",
34
- level: 3,
35
- tags: ["level_3", "voicing"],
36
- contrastFeature: "consonant",
37
- contrastDescription: "/s/ vs /z/",
38
- word1: { script: "さか", romanization: "saka", definition: "slope", audioFile: null },
39
- word2: { script: "ざか", romanization: "zaka", definition: "slope (alternative)", audioFile: null }
40
- },
41
- {
42
- pairId: "ja_l3_005",
43
- level: 3,
44
- tags: ["level_3", "voicing"],
45
- contrastFeature: "consonant",
46
- contrastDescription: "/h/ vs /p/",
47
- word1: { script: "はな", romanization: "hana", definition: "flower", audioFile: null },
48
- word2: { script: "ぱな", romanization: "pana", definition: "(panel - loanword)", audioFile: null }
49
- },
50
- {
51
- pairId: "ja_l3_006",
52
- level: 3,
53
- tags: ["level_3", "voicing"],
54
- contrastFeature: "consonant",
55
- contrastDescription: "/s/ vs /ʃ/ (sh)",
56
- word1: { script: "さか", romanization: "saka", definition: "slope", audioFile: null },
57
- word2: { script: "しゃか", romanization: "shaka", definition: "Shaka (name)", audioFile: null }
58
- }
1
+ //#region src/data/level-3.ts
2
+ var e = [
3
+ {
4
+ pairId: "ja_l3_001",
5
+ level: 3,
6
+ tags: ["level_3", "voicing"],
7
+ contrastFeature: "consonant",
8
+ contrastDescription: "/k/ vs /g/ - voiceless vs voiced",
9
+ pronunciationTipId: "consonant_k_g",
10
+ word1: {
11
+ script: "かみ",
12
+ romanization: "kami",
13
+ definition: "paper; god; hair",
14
+ audioFile: null
15
+ },
16
+ word2: {
17
+ script: "がみ",
18
+ romanization: "gami",
19
+ definition: "harsh scolding",
20
+ audioFile: null
21
+ }
22
+ },
23
+ {
24
+ pairId: "ja_l3_002",
25
+ level: 3,
26
+ tags: ["level_3", "voicing"],
27
+ contrastFeature: "consonant",
28
+ contrastDescription: "/t/ vs /d/",
29
+ word1: {
30
+ script: "たいこ",
31
+ romanization: "taiko",
32
+ definition: "drum",
33
+ audioFile: null
34
+ },
35
+ word2: {
36
+ script: "だいこ",
37
+ romanization: "daiko",
38
+ definition: "substitute",
39
+ audioFile: null
40
+ }
41
+ },
42
+ {
43
+ pairId: "ja_l3_003",
44
+ level: 3,
45
+ tags: ["level_3", "voicing"],
46
+ contrastFeature: "consonant",
47
+ contrastDescription: "/h/ vs /b/ vs /p/",
48
+ word1: {
49
+ script: "はな",
50
+ romanization: "hana",
51
+ definition: "flower; nose",
52
+ audioFile: null
53
+ },
54
+ word2: {
55
+ script: "ばな",
56
+ romanization: "bana",
57
+ definition: "(in compounds)",
58
+ audioFile: null
59
+ }
60
+ },
61
+ {
62
+ pairId: "ja_l3_004",
63
+ level: 3,
64
+ tags: ["level_3", "voicing"],
65
+ contrastFeature: "consonant",
66
+ contrastDescription: "/s/ vs /z/",
67
+ word1: {
68
+ script: "さか",
69
+ romanization: "saka",
70
+ definition: "slope",
71
+ audioFile: null
72
+ },
73
+ word2: {
74
+ script: "ざか",
75
+ romanization: "zaka",
76
+ definition: "slope (alternative)",
77
+ audioFile: null
78
+ }
79
+ },
80
+ {
81
+ pairId: "ja_l3_005",
82
+ level: 3,
83
+ tags: ["level_3", "voicing"],
84
+ contrastFeature: "consonant",
85
+ contrastDescription: "/h/ vs /p/",
86
+ word1: {
87
+ script: "はな",
88
+ romanization: "hana",
89
+ definition: "flower",
90
+ audioFile: null
91
+ },
92
+ word2: {
93
+ script: "ぱな",
94
+ romanization: "pana",
95
+ definition: "(panel - loanword)",
96
+ audioFile: null
97
+ }
98
+ },
99
+ {
100
+ pairId: "ja_l3_006",
101
+ level: 3,
102
+ tags: ["level_3", "voicing"],
103
+ contrastFeature: "consonant",
104
+ contrastDescription: "/s/ vs /ʃ/ (sh)",
105
+ word1: {
106
+ script: "さか",
107
+ romanization: "saka",
108
+ definition: "slope",
109
+ audioFile: null
110
+ },
111
+ word2: {
112
+ script: "しゃか",
113
+ romanization: "shaka",
114
+ definition: "Shaka (name)",
115
+ audioFile: null
116
+ }
117
+ }
59
118
  ];
60
- export {
61
- i as level3Pairs
62
- };
119
+ //#endregion
120
+ export { e as level3Pairs };
@@ -1,52 +1,100 @@
1
- const i = [
2
- // Level 4: Special sounds
3
- {
4
- pairId: "ja_l4_001",
5
- level: 4,
6
- tags: ["level_4", "special"],
7
- contrastFeature: "consonant",
8
- contrastDescription: "Without vs with ん /n/",
9
- word1: { script: "かさい", romanization: "kasai", definition: "fire", audioFile: null },
10
- word2: { script: "かんさい", romanization: "kansai", definition: "Kansai region", audioFile: null }
11
- },
12
- {
13
- pairId: "ja_l4_002",
14
- level: 4,
15
- tags: ["level_4", "special"],
16
- contrastFeature: "consonant",
17
- contrastDescription: "Without vs with っ (geminate)",
18
- word1: { script: "いて", romanization: "ite", definition: "being (te-form)", audioFile: null },
19
- word2: { script: "いって", romanization: "itte", definition: "going (te-form)", audioFile: null }
20
- },
21
- // Additional Level 4: More special sound contrasts
22
- {
23
- pairId: "ja_l4_003",
24
- level: 4,
25
- tags: ["level_4", "special"],
26
- contrastFeature: "consonant",
27
- contrastDescription: "Without vs with /n/ (syllabic nasal)",
28
- word1: { script: "たい", romanization: "tai", definition: "sea bream", audioFile: null },
29
- word2: { script: "たん", romanization: "tan", definition: "carbon", audioFile: null }
30
- },
31
- {
32
- pairId: "ja_l4_004",
33
- level: 4,
34
- tags: ["level_4", "special"],
35
- contrastFeature: "consonant",
36
- contrastDescription: "Without vs with っ (geminate consonant)",
37
- word1: { script: "さか", romanization: "saka", definition: "slope", audioFile: null },
38
- word2: { script: "さっか", romanization: "sakka", definition: "author", audioFile: null }
39
- },
40
- {
41
- pairId: "ja_l4_005",
42
- level: 4,
43
- tags: ["level_4", "special"],
44
- contrastFeature: "consonant",
45
- contrastDescription: "ん vs っ contrast",
46
- word1: { script: "てんき", romanization: "tenki", definition: "weather", audioFile: null },
47
- word2: { script: "てっき", romanization: "tekki", definition: "(iron key)", audioFile: null }
48
- }
1
+ //#region src/data/level-4.ts
2
+ var e = [
3
+ {
4
+ pairId: "ja_l4_001",
5
+ level: 4,
6
+ tags: ["level_4", "special"],
7
+ contrastFeature: "consonant",
8
+ contrastDescription: "Without vs with ん /n/",
9
+ word1: {
10
+ script: "かさい",
11
+ romanization: "kasai",
12
+ definition: "fire",
13
+ audioFile: null
14
+ },
15
+ word2: {
16
+ script: "かんさい",
17
+ romanization: "kansai",
18
+ definition: "Kansai region",
19
+ audioFile: null
20
+ }
21
+ },
22
+ {
23
+ pairId: "ja_l4_002",
24
+ level: 4,
25
+ tags: ["level_4", "special"],
26
+ contrastFeature: "consonant",
27
+ contrastDescription: "Without vs with (geminate)",
28
+ word1: {
29
+ script: "いて",
30
+ romanization: "ite",
31
+ definition: "being (te-form)",
32
+ audioFile: null
33
+ },
34
+ word2: {
35
+ script: "いって",
36
+ romanization: "itte",
37
+ definition: "going (te-form)",
38
+ audioFile: null
39
+ }
40
+ },
41
+ {
42
+ pairId: "ja_l4_003",
43
+ level: 4,
44
+ tags: ["level_4", "special"],
45
+ contrastFeature: "consonant",
46
+ contrastDescription: "Without vs with /n/ (syllabic nasal)",
47
+ word1: {
48
+ script: "たい",
49
+ romanization: "tai",
50
+ definition: "sea bream",
51
+ audioFile: null
52
+ },
53
+ word2: {
54
+ script: "たん",
55
+ romanization: "tan",
56
+ definition: "carbon",
57
+ audioFile: null
58
+ }
59
+ },
60
+ {
61
+ pairId: "ja_l4_004",
62
+ level: 4,
63
+ tags: ["level_4", "special"],
64
+ contrastFeature: "consonant",
65
+ contrastDescription: "Without vs with っ (geminate consonant)",
66
+ word1: {
67
+ script: "さか",
68
+ romanization: "saka",
69
+ definition: "slope",
70
+ audioFile: null
71
+ },
72
+ word2: {
73
+ script: "さっか",
74
+ romanization: "sakka",
75
+ definition: "author",
76
+ audioFile: null
77
+ }
78
+ },
79
+ {
80
+ pairId: "ja_l4_005",
81
+ level: 4,
82
+ tags: ["level_4", "special"],
83
+ contrastFeature: "consonant",
84
+ contrastDescription: "ん vs っ contrast",
85
+ word1: {
86
+ script: "てんき",
87
+ romanization: "tenki",
88
+ definition: "weather",
89
+ audioFile: null
90
+ },
91
+ word2: {
92
+ script: "てっき",
93
+ romanization: "tekki",
94
+ definition: "(iron key)",
95
+ audioFile: null
96
+ }
97
+ }
49
98
  ];
50
- export {
51
- i as level4Pairs
52
- };
99
+ //#endregion
100
+ export { e as level4Pairs };
@@ -1,47 +1,89 @@
1
- const i = [
2
- // Level 5: Expert
3
- {
4
- pairId: "ja_l5_001",
5
- level: 5,
6
- tags: ["level_5", "pitch"],
7
- contrastFeature: "pitch_accent",
8
- contrastDescription: "Pitch accent: はし (bridge) vs はし (chopsticks)",
9
- word1: { script: "はし", romanization: "hashi", definition: "bridge (LH)", audioFile: null },
10
- word2: { script: "はし", romanization: "hashi", definition: "chopsticks (HL)", audioFile: null },
11
- notes: "Same spelling, different pitch accent patterns"
12
- },
13
- // Additional Level 5: More pitch accent pairs
14
- {
15
- pairId: "ja_l5_002",
16
- level: 5,
17
- tags: ["level_5", "pitch"],
18
- contrastFeature: "pitch_accent",
19
- contrastDescription: "Pitch accent: かみ (hair) vs かみ (god)",
20
- word1: { script: "かみ", romanization: "kami", definition: "hair (accent on ka)", audioFile: null },
21
- word2: { script: "かみ", romanization: "kami", definition: "god; paper (accent on mi)", audioFile: null },
22
- notes: "Same spelling, different pitch accent. Hair: HI-lo, God/paper: lo-HI."
23
- },
24
- {
25
- pairId: "ja_l5_003",
26
- level: 5,
27
- tags: ["level_5", "pitch"],
28
- contrastFeature: "pitch_accent",
29
- contrastDescription: "Pitch accent: あめ (rain) vs あめ (candy)",
30
- word1: { script: "あめ", romanization: "ame", definition: "rain (accent on a)", audioFile: null },
31
- word2: { script: "あめ", romanization: "ame", definition: "candy (accent on me or unaccented)", audioFile: null },
32
- notes: "Rain: HI-lo, Candy: lo-HI or flat."
33
- },
34
- {
35
- pairId: "ja_l5_004",
36
- level: 5,
37
- tags: ["level_5", "pitch", "length"],
38
- contrastFeature: "pitch_accent",
39
- contrastDescription: "Combined pitch and length contrast",
40
- word1: { script: "おばさん", romanization: "obasan", definition: "aunt (middle-aged woman)", audioFile: null },
41
- word2: { script: "おばあさん", romanization: "obaasan", definition: "grandmother", audioFile: null },
42
- notes: "Both pitch and vowel length differ. The long vowel changes the meaning."
43
- }
1
+ //#region src/data/level-5.ts
2
+ var e = [
3
+ {
4
+ pairId: "ja_l5_001",
5
+ level: 5,
6
+ tags: ["level_5", "pitch"],
7
+ contrastFeature: "pitch_accent",
8
+ contrastDescription: "Pitch accent: はし (bridge) vs はし (chopsticks)",
9
+ word1: {
10
+ script: "はし",
11
+ romanization: "hashi",
12
+ definition: "bridge (LH)",
13
+ audioFile: null
14
+ },
15
+ word2: {
16
+ script: "はし",
17
+ romanization: "hashi",
18
+ definition: "chopsticks (HL)",
19
+ audioFile: null
20
+ },
21
+ notes: "Same spelling, different pitch accent patterns"
22
+ },
23
+ {
24
+ pairId: "ja_l5_002",
25
+ level: 5,
26
+ tags: ["level_5", "pitch"],
27
+ contrastFeature: "pitch_accent",
28
+ contrastDescription: "Pitch accent: かみ (hair) vs かみ (god)",
29
+ word1: {
30
+ script: "かみ",
31
+ romanization: "kami",
32
+ definition: "hair (accent on ka)",
33
+ audioFile: null
34
+ },
35
+ word2: {
36
+ script: "かみ",
37
+ romanization: "kami",
38
+ definition: "god; paper (accent on mi)",
39
+ audioFile: null
40
+ },
41
+ notes: "Same spelling, different pitch accent. Hair: HI-lo, God/paper: lo-HI."
42
+ },
43
+ {
44
+ pairId: "ja_l5_003",
45
+ level: 5,
46
+ tags: ["level_5", "pitch"],
47
+ contrastFeature: "pitch_accent",
48
+ contrastDescription: "Pitch accent: あめ (rain) vs あめ (candy)",
49
+ word1: {
50
+ script: "あめ",
51
+ romanization: "ame",
52
+ definition: "rain (accent on a)",
53
+ audioFile: null
54
+ },
55
+ word2: {
56
+ script: "あめ",
57
+ romanization: "ame",
58
+ definition: "candy (accent on me or unaccented)",
59
+ audioFile: null
60
+ },
61
+ notes: "Rain: HI-lo, Candy: lo-HI or flat."
62
+ },
63
+ {
64
+ pairId: "ja_l5_004",
65
+ level: 5,
66
+ tags: [
67
+ "level_5",
68
+ "pitch",
69
+ "length"
70
+ ],
71
+ contrastFeature: "pitch_accent",
72
+ contrastDescription: "Combined pitch and length contrast",
73
+ word1: {
74
+ script: "おばさん",
75
+ romanization: "obasan",
76
+ definition: "aunt (middle-aged woman)",
77
+ audioFile: null
78
+ },
79
+ word2: {
80
+ script: "おばあさん",
81
+ romanization: "obaasan",
82
+ definition: "grandmother",
83
+ audioFile: null
84
+ },
85
+ notes: "Both pitch and vowel length differ. The long vowel changes the meaning."
86
+ }
44
87
  ];
45
- export {
46
- i as level5Pairs
47
- };
88
+ //#endregion
89
+ export { e as level5Pairs };
package/dist/data.js CHANGED
@@ -1,24 +1,22 @@
1
- import { levels as r } from "./levels.js";
2
- import { pronunciationTips as i } from "./pronunciationTips.js";
3
- import { level0Pairs as o } from "./data/level-0.js";
4
- import { level1Pairs as m } from "./data/level-1.js";
5
- import { level2Pairs as l } from "./data/level-2.js";
1
+ import { levels as e } from "./levels.js";
2
+ import { pronunciationTips as t } from "./pronunciationTips.js";
3
+ import { level0Pairs as n } from "./data/level-0.js";
4
+ import { level1Pairs as r } from "./data/level-1.js";
5
+ import { level2Pairs as i } from "./data/level-2.js";
6
6
  import { level3Pairs as a } from "./data/level-3.js";
7
- import { level4Pairs as e } from "./data/level-4.js";
7
+ import { level4Pairs as o } from "./data/level-4.js";
8
8
  import { level5Pairs as s } from "./data/level-5.js";
9
- const t = [
10
- ...o,
11
- ...m,
12
- ...l,
13
- ...a,
14
- ...e,
15
- ...s
16
- ], x = {
17
- levels: r,
18
- minimalPairs: t,
19
- pronunciationTips: i
20
- };
21
- export {
22
- x as default,
23
- x as minimalPairsData
9
+ var c = {
10
+ levels: e,
11
+ minimalPairs: [
12
+ ...n,
13
+ ...r,
14
+ ...i,
15
+ ...a,
16
+ ...o,
17
+ ...s
18
+ ],
19
+ pronunciationTips: t
24
20
  };
21
+ //#endregion
22
+ export { c as default, c as minimalPairsData };
package/dist/index.js CHANGED
@@ -1,20 +1,10 @@
1
- import { default as o } from "./data.js";
2
- import { levels as p } from "./levels.js";
3
- import { pronunciationTips as f } from "./pronunciationTips.js";
4
- import { level0Pairs as m } from "./data/level-0.js";
5
- import { level1Pairs as a } from "./data/level-1.js";
6
- import { level2Pairs as v } from "./data/level-2.js";
7
- import { level3Pairs as n } from "./data/level-3.js";
8
- import { level4Pairs as c } from "./data/level-4.js";
9
- import { level5Pairs as T } from "./data/level-5.js";
10
- export {
11
- o as default,
12
- m as level0Pairs,
13
- a as level1Pairs,
14
- v as level2Pairs,
15
- n as level3Pairs,
16
- c as level4Pairs,
17
- T as level5Pairs,
18
- p as levels,
19
- f as pronunciationTips
20
- };
1
+ import { levels as e } from "./levels.js";
2
+ import { pronunciationTips as t } from "./pronunciationTips.js";
3
+ import { level0Pairs as n } from "./data/level-0.js";
4
+ import { level1Pairs as r } from "./data/level-1.js";
5
+ import { level2Pairs as i } from "./data/level-2.js";
6
+ import { level3Pairs as a } from "./data/level-3.js";
7
+ import { level4Pairs as o } from "./data/level-4.js";
8
+ import { level5Pairs as s } from "./data/level-5.js";
9
+ import c from "./data.js";
10
+ export { c as default, n as level0Pairs, r as level1Pairs, i as level2Pairs, a as level3Pairs, o as level4Pairs, s as level5Pairs, e as levels, t as pronunciationTips };
package/dist/levels.js CHANGED
@@ -1,11 +1,35 @@
1
- const e = [
2
- { level: 0, title: "Getting Started", description: "Practice with clearly different sounds" },
3
- { level: 1, title: "Vowels", description: "Japanese vowel differences" },
4
- { level: 2, title: "Long Vowels", description: "Short vs long vowels" },
5
- { level: 3, title: "Voicing", description: "Voiceless vs voiced consonants" },
6
- { level: 4, title: "Special Sounds", description: "The differences of n, tt, and long vowels" },
7
- { level: 5, title: "Expert Level", description: "Subtle differences" }
1
+ //#region src/levels.ts
2
+ var e = [
3
+ {
4
+ level: 0,
5
+ title: "Getting Started",
6
+ description: "Practice with clearly different sounds"
7
+ },
8
+ {
9
+ level: 1,
10
+ title: "Vowels",
11
+ description: "Japanese vowel differences"
12
+ },
13
+ {
14
+ level: 2,
15
+ title: "Long Vowels",
16
+ description: "Short vs long vowels"
17
+ },
18
+ {
19
+ level: 3,
20
+ title: "Voicing",
21
+ description: "Voiceless vs voiced consonants"
22
+ },
23
+ {
24
+ level: 4,
25
+ title: "Special Sounds",
26
+ description: "The differences of n, tt, and long vowels"
27
+ },
28
+ {
29
+ level: 5,
30
+ title: "Expert Level",
31
+ description: "Subtle differences"
32
+ }
8
33
  ];
9
- export {
10
- e as levels
11
- };
34
+ //#endregion
35
+ export { e as levels };
@@ -1,8 +1,8 @@
1
- const o = {
2
- vowel_a_o: "/a/ is open, /o/ is rounded. Japanese vowels are pure, not diphthongs.",
3
- vowel_length: "Long vowels are held exactly twice as long as short vowels.",
4
- consonant_k_g: "/k/ is voiceless (no throat vibration). /g/ is voiced (throat vibrates)."
5
- };
6
- export {
7
- o as pronunciationTips
1
+ //#region src/pronunciationTips.ts
2
+ var e = {
3
+ vowel_a_o: "/a/ is open, /o/ is rounded. Japanese vowels are pure, not diphthongs.",
4
+ vowel_length: "Long vowels are held exactly twice as long as short vowels.",
5
+ consonant_k_g: "/k/ is voiceless (no throat vibration). /g/ is voiced (throat vibrates)."
8
6
  };
7
+ //#endregion
8
+ export { e as pronunciationTips };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@polyglot-bundles/ja-minimal-pairs",
3
- "version": "0.2.5",
3
+ "version": "0.2.6",
4
4
  "type": "module",
5
5
  "main": "./dist/index.js",
6
6
  "types": "./dist/index.d.ts",
@@ -50,12 +50,12 @@
50
50
  "dist"
51
51
  ],
52
52
  "dependencies": {
53
- "@polyglot-bundles/content-shared": "0.4.1",
54
- "@polyglot-bundles/ja-lang": "0.2.3"
53
+ "@polyglot-bundles/content-shared": "0.5.1",
54
+ "@polyglot-bundles/ja-lang": "0.2.4"
55
55
  },
56
56
  "devDependencies": {
57
- "vite": "^5.4.0",
58
- "vite-plugin-dts": "^4.0.0",
57
+ "vite": "^8.0.8",
58
+ "vite-plugin-dts": "^4.5.4",
59
59
  "@polyglot-bundles/lang-tooling": "0.0.0"
60
60
  },
61
61
  "publishConfig": {
@@ -68,7 +68,6 @@
68
68
  },
69
69
  "scripts": {
70
70
  "typecheck": "tsc --noEmit",
71
- "build": "vite build",
72
- "clean": "rm -rf dist"
71
+ "build": "vite build"
73
72
  }
74
73
  }