@kolanut/language-packs 0.1.0 → 0.1.1

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.
Files changed (65) hide show
  1. package/CONTRIBUTING.md +1 -1
  2. package/README.md +132 -40
  3. package/package.json +1 -2
  4. package/packs/afrikaans/keywords.json +39 -0
  5. package/packs/afrikaans/pack.json +40 -1
  6. package/packs/amharic/keywords.json +39 -0
  7. package/packs/amharic/pack.json +40 -1
  8. package/packs/arabic/keywords.json +39 -0
  9. package/packs/arabic/pack.json +40 -1
  10. package/packs/bambara/keywords.json +39 -0
  11. package/packs/bambara/pack.json +40 -1
  12. package/packs/by-country.json +1 -1
  13. package/packs/by-region.json +1 -1
  14. package/packs/coverage-summary.json +12 -12
  15. package/packs/french/keywords.json +39 -0
  16. package/packs/french/pack.json +40 -1
  17. package/packs/fulfulde/keywords.json +39 -0
  18. package/packs/fulfulde/pack.json +40 -1
  19. package/packs/hausa/keywords.json +39 -0
  20. package/packs/hausa/pack.json +40 -1
  21. package/packs/igbo/keywords.json +39 -0
  22. package/packs/igbo/pack.json +40 -1
  23. package/packs/index.json +25 -25
  24. package/packs/kinyarwanda/keywords.json +39 -0
  25. package/packs/kinyarwanda/pack.json +40 -1
  26. package/packs/languages-roadmap.json +151 -4
  27. package/packs/lingala/keywords.json +39 -0
  28. package/packs/lingala/pack.json +40 -1
  29. package/packs/logical-tokens.json +22 -8
  30. package/packs/luganda/keywords.json +39 -0
  31. package/packs/luganda/pack.json +40 -1
  32. package/packs/nigerian-pidgin/keywords.json +39 -0
  33. package/packs/nigerian-pidgin/pack.json +40 -1
  34. package/packs/official-target-keywords.json +16 -3
  35. package/packs/oromo/keywords.json +39 -0
  36. package/packs/oromo/pack.json +40 -1
  37. package/packs/portuguese-africa/keywords.json +39 -0
  38. package/packs/portuguese-africa/pack.json +40 -1
  39. package/packs/sesotho/keywords.json +39 -0
  40. package/packs/sesotho/pack.json +40 -1
  41. package/packs/setswana/keywords.json +39 -0
  42. package/packs/setswana/pack.json +40 -1
  43. package/packs/shona/keywords.json +39 -0
  44. package/packs/shona/pack.json +40 -1
  45. package/packs/somali/keywords.json +39 -0
  46. package/packs/somali/pack.json +40 -1
  47. package/packs/swahili/keywords.json +39 -0
  48. package/packs/swahili/pack.json +40 -1
  49. package/packs/target-coverage.json +90 -13
  50. package/packs/tigrinya/keywords.json +39 -0
  51. package/packs/tigrinya/pack.json +40 -1
  52. package/packs/twi/keywords.json +39 -0
  53. package/packs/twi/pack.json +40 -1
  54. package/packs/wolof/keywords.json +39 -0
  55. package/packs/wolof/pack.json +40 -1
  56. package/packs/xhosa/keywords.json +39 -0
  57. package/packs/xhosa/pack.json +40 -1
  58. package/packs/yoruba/keywords.json +39 -0
  59. package/packs/yoruba/pack.json +40 -1
  60. package/packs/zulu/keywords.json +39 -0
  61. package/packs/zulu/pack.json +40 -1
  62. package/badges/coverage.json +0 -6
  63. package/badges/packs.json +0 -6
  64. package/badges/targets.json +0 -6
  65. package/badges/tokens.json +0 -6
package/packs/index.json CHANGED
@@ -13,7 +13,7 @@
13
13
  "regions": [
14
14
  "West Africa"
15
15
  ],
16
- "version": "0.1.0"
16
+ "version": "0.1.1"
17
17
  },
18
18
  {
19
19
  "name": "nigerian-pidgin",
@@ -26,7 +26,7 @@
26
26
  "regions": [
27
27
  "West Africa"
28
28
  ],
29
- "version": "0.1.0"
29
+ "version": "0.1.1"
30
30
  },
31
31
  {
32
32
  "name": "hausa",
@@ -42,7 +42,7 @@
42
42
  "regions": [
43
43
  "West Africa"
44
44
  ],
45
- "version": "0.1.0"
45
+ "version": "0.1.1"
46
46
  },
47
47
  {
48
48
  "name": "igbo",
@@ -55,7 +55,7 @@
55
55
  "regions": [
56
56
  "West Africa"
57
57
  ],
58
- "version": "0.1.0"
58
+ "version": "0.1.1"
59
59
  },
60
60
  {
61
61
  "name": "swahili",
@@ -72,7 +72,7 @@
72
72
  "regions": [
73
73
  "East Africa"
74
74
  ],
75
- "version": "0.1.0"
75
+ "version": "0.1.1"
76
76
  },
77
77
  {
78
78
  "name": "amharic",
@@ -85,7 +85,7 @@
85
85
  "regions": [
86
86
  "East Africa"
87
87
  ],
88
- "version": "0.1.0"
88
+ "version": "0.1.1"
89
89
  },
90
90
  {
91
91
  "name": "zulu",
@@ -98,7 +98,7 @@
98
98
  "regions": [
99
99
  "Southern Africa"
100
100
  ],
101
- "version": "0.1.0"
101
+ "version": "0.1.1"
102
102
  },
103
103
  {
104
104
  "name": "xhosa",
@@ -111,7 +111,7 @@
111
111
  "regions": [
112
112
  "Southern Africa"
113
113
  ],
114
- "version": "0.1.0"
114
+ "version": "0.1.1"
115
115
  },
116
116
  {
117
117
  "name": "twi",
@@ -124,7 +124,7 @@
124
124
  "regions": [
125
125
  "West Africa"
126
126
  ],
127
- "version": "0.1.0"
127
+ "version": "0.1.1"
128
128
  },
129
129
  {
130
130
  "name": "somali",
@@ -140,7 +140,7 @@
140
140
  "regions": [
141
141
  "Horn of Africa"
142
142
  ],
143
- "version": "0.1.0"
143
+ "version": "0.1.1"
144
144
  },
145
145
  {
146
146
  "name": "wolof",
@@ -155,7 +155,7 @@
155
155
  "regions": [
156
156
  "West Africa"
157
157
  ],
158
- "version": "0.1.0"
158
+ "version": "0.1.1"
159
159
  },
160
160
  {
161
161
  "name": "lingala",
@@ -169,7 +169,7 @@
169
169
  "regions": [
170
170
  "Central Africa"
171
171
  ],
172
- "version": "0.1.0"
172
+ "version": "0.1.1"
173
173
  },
174
174
  {
175
175
  "name": "kinyarwanda",
@@ -182,7 +182,7 @@
182
182
  "regions": [
183
183
  "East Africa"
184
184
  ],
185
- "version": "0.1.0"
185
+ "version": "0.1.1"
186
186
  },
187
187
  {
188
188
  "name": "luganda",
@@ -195,7 +195,7 @@
195
195
  "regions": [
196
196
  "East Africa"
197
197
  ],
198
- "version": "0.1.0"
198
+ "version": "0.1.1"
199
199
  },
200
200
  {
201
201
  "name": "shona",
@@ -208,7 +208,7 @@
208
208
  "regions": [
209
209
  "Southern Africa"
210
210
  ],
211
- "version": "0.1.0"
211
+ "version": "0.1.1"
212
212
  },
213
213
  {
214
214
  "name": "oromo",
@@ -222,7 +222,7 @@
222
222
  "regions": [
223
223
  "East Africa"
224
224
  ],
225
- "version": "0.1.0"
225
+ "version": "0.1.1"
226
226
  },
227
227
  {
228
228
  "name": "tigrinya",
@@ -236,7 +236,7 @@
236
236
  "regions": [
237
237
  "East Africa"
238
238
  ],
239
- "version": "0.1.0"
239
+ "version": "0.1.1"
240
240
  },
241
241
  {
242
242
  "name": "afrikaans",
@@ -250,7 +250,7 @@
250
250
  "regions": [
251
251
  "Southern Africa"
252
252
  ],
253
- "version": "0.1.0"
253
+ "version": "0.1.1"
254
254
  },
255
255
  {
256
256
  "name": "arabic",
@@ -273,7 +273,7 @@
273
273
  "North Africa",
274
274
  "East Africa"
275
275
  ],
276
- "version": "0.1.0"
276
+ "version": "0.1.1"
277
277
  },
278
278
  {
279
279
  "name": "french",
@@ -308,7 +308,7 @@
308
308
  "East Africa",
309
309
  "Indian Ocean"
310
310
  ],
311
- "version": "0.1.0"
311
+ "version": "0.1.1"
312
312
  },
313
313
  {
314
314
  "name": "fulfulde",
@@ -328,7 +328,7 @@
328
328
  "regions": [
329
329
  "West Africa"
330
330
  ],
331
- "version": "0.1.0"
331
+ "version": "0.1.1"
332
332
  },
333
333
  {
334
334
  "name": "sesotho",
@@ -342,7 +342,7 @@
342
342
  "regions": [
343
343
  "Southern Africa"
344
344
  ],
345
- "version": "0.1.0"
345
+ "version": "0.1.1"
346
346
  },
347
347
  {
348
348
  "name": "setswana",
@@ -357,7 +357,7 @@
357
357
  "regions": [
358
358
  "Southern Africa"
359
359
  ],
360
- "version": "0.1.0"
360
+ "version": "0.1.1"
361
361
  },
362
362
  {
363
363
  "name": "bambara",
@@ -373,7 +373,7 @@
373
373
  "regions": [
374
374
  "West Africa"
375
375
  ],
376
- "version": "0.1.0"
376
+ "version": "0.1.1"
377
377
  },
378
378
  {
379
379
  "name": "portuguese-africa",
@@ -391,7 +391,7 @@
391
391
  "Southern Africa",
392
392
  "West Africa"
393
393
  ],
394
- "version": "0.1.0"
394
+ "version": "0.1.1"
395
395
  }
396
396
  ]
397
397
  }
@@ -314,6 +314,45 @@
314
314
  "SATISFIES": [
315
315
  "satisfies"
316
316
  ],
317
+ "ANY": [
318
+ "any"
319
+ ],
320
+ "BOOLEAN": [
321
+ "boolean"
322
+ ],
323
+ "NUMBER": [
324
+ "number"
325
+ ],
326
+ "STRING": [
327
+ "string"
328
+ ],
329
+ "SYMBOL": [
330
+ "symbol"
331
+ ],
332
+ "OBJECT": [
333
+ "object"
334
+ ],
335
+ "NEVER": [
336
+ "never"
337
+ ],
338
+ "UNKNOWN": [
339
+ "unknown"
340
+ ],
341
+ "BIGINT": [
342
+ "bigint"
343
+ ],
344
+ "CONSTRUCTOR": [
345
+ "constructor"
346
+ ],
347
+ "REQUIRE": [
348
+ "require"
349
+ ],
350
+ "USING": [
351
+ "using"
352
+ ],
353
+ "OF": [
354
+ "of"
355
+ ],
317
356
  "DYN": [
318
357
  "dyn"
319
358
  ],
@@ -8,7 +8,7 @@
8
8
  "regions": [
9
9
  "East Africa"
10
10
  ],
11
- "version": "0.1.0",
11
+ "version": "0.1.1",
12
12
  "displayName": "Kinyarwanda",
13
13
  "description": "Kinyarwanda keyword map — starter pack (community contributions welcome)",
14
14
  "reviewStatus": "starter",
@@ -338,6 +338,45 @@
338
338
  "SATISFIES": [
339
339
  "satisfies"
340
340
  ],
341
+ "ANY": [
342
+ "any"
343
+ ],
344
+ "BOOLEAN": [
345
+ "boolean"
346
+ ],
347
+ "NUMBER": [
348
+ "number"
349
+ ],
350
+ "STRING": [
351
+ "string"
352
+ ],
353
+ "SYMBOL": [
354
+ "symbol"
355
+ ],
356
+ "OBJECT": [
357
+ "object"
358
+ ],
359
+ "NEVER": [
360
+ "never"
361
+ ],
362
+ "UNKNOWN": [
363
+ "unknown"
364
+ ],
365
+ "BIGINT": [
366
+ "bigint"
367
+ ],
368
+ "CONSTRUCTOR": [
369
+ "constructor"
370
+ ],
371
+ "REQUIRE": [
372
+ "require"
373
+ ],
374
+ "USING": [
375
+ "using"
376
+ ],
377
+ "OF": [
378
+ "of"
379
+ ],
341
380
  "DYN": [
342
381
  "dyn"
343
382
  ],
@@ -1,6 +1,6 @@
1
1
  {
2
- "version": "1.0.0",
3
- "description": "African human-language packs: shipped vs planned. Programming targets are separate see official-target-keywords.json.",
2
+ "version": "0.1.1",
3
+ "description": "Roadmap for African human-language packs and programming-target / logical-token registry growth. Shipped state: see packs/index.json, logical-tokens.json, official-target-keywords.json.",
4
4
  "shippedCount": 25,
5
5
  "plannedCount": 40,
6
6
  "shipped": "See packs/index.json and packs/coverage-summary.json",
@@ -21,8 +21,155 @@
21
21
  { "name": "venda", "languageCode": "ve", "locale": "ve-ZA", "regions": ["Southern Africa"], "priority": "low" },
22
22
  { "name": "sotho-northern", "languageCode": "nso", "locale": "nso-ZA", "regions": ["Southern Africa"], "priority": "low" }
23
23
  ],
24
+ "logicalTokenRoadmap": {
25
+ "shippedVersion": "4.0.0",
26
+ "shippedCount": 112,
27
+ "shippedTargets": ["javascript", "python", "typescript", "go", "rust"],
28
+ "plannedTokens": [
29
+ {
30
+ "logical": "GEN",
31
+ "tier": "advanced",
32
+ "group": "generics",
33
+ "targets": { "rust": "gen" },
34
+ "release": "v0.2.0",
35
+ "trigger": "Rust 2024 edition reserved keyword",
36
+ "priority": "high",
37
+ "status": "planned",
38
+ "workItems": [
39
+ "Add GEN to logical-tokens.json with rust emit gen",
40
+ "Add gen to official-target-keywords.json rust list + keywordToLogical",
41
+ "npm run bootstrap && npm test"
42
+ ]
43
+ },
44
+ {
45
+ "logical": "LAZY",
46
+ "tier": "advanced",
47
+ "group": "evaluation",
48
+ "targets": { "python": "lazy" },
49
+ "release": "v0.2.0",
50
+ "trigger": "Python 3.15+ soft keyword (PEP 810, in progress)",
51
+ "priority": "medium",
52
+ "status": "planned",
53
+ "workItems": [
54
+ "Add LAZY to logical-tokens.json with python emit lazy",
55
+ "Add lazy to official-target-keywords.json python soft keywords + keywordToLogical",
56
+ "Only require emit when Kola min Python is 3.15+",
57
+ "npm run bootstrap && npm test"
58
+ ]
59
+ }
60
+ ],
61
+ "plannedTiers": [
62
+ {
63
+ "id": "stdlib-builtins",
64
+ "name": "Stdlib / builtins",
65
+ "release": "v2.0.0",
66
+ "priority": "low",
67
+ "status": "planned",
68
+ "rationale": "Not reserved words; huge surface. Beginner African packs should not need to translate type names or stdlib for control-flow-only transpilation.",
69
+ "scopeNote": "Add only when Kola transpiles translated API calls at scale. PRINT (print / console.log / fmt.Println) is the existing pattern.",
70
+ "designFirst": [
71
+ "New tier or group in logical-tokens.json (e.g. stdlib, not core)",
72
+ "Separate coverage rules — not part of official keyword gap checks",
73
+ "Resolve naming collisions (e.g. Go MAP keyword vs map builtin)"
74
+ ],
75
+ "examples": [
76
+ { "concept": "length", "python": "len", "javascript": "length / Array", "go": "len", "rust": "len" },
77
+ { "concept": "map/transform", "python": "map", "javascript": "map", "note": "Do not collide with Go MAP logical token" },
78
+ { "concept": "format I/O", "go": "fmt", "note": "PRINT already covers primary print paths" },
79
+ { "concept": "array type", "typescript": "Array", "javascript": "Array", "note": "TypeScript blur; optional future tier" }
80
+ ]
81
+ }
82
+ ]
83
+ },
24
84
  "programmingTargets": {
25
85
  "shipped": ["javascript", "python", "typescript", "go", "rust"],
26
- "planned": ["c", "cpp", "kotlin", "swift", "dart", "ruby", "php", "csharp", "java"]
27
- }
86
+ "planned": ["c", "cpp", "kotlin", "swift", "dart", "ruby", "php", "csharp", "java"],
87
+ "plannedDetails": [
88
+ {
89
+ "id": "java",
90
+ "release": "v0.3.0+",
91
+ "priority": "high",
92
+ "status": "planned",
93
+ "specSource": "https://docs.oracle.com/javase/specs/jls/se21/html/jls-3.html#jls-3.9",
94
+ "workItems": [
95
+ "Add targets.java column to logical-tokens.json + pack schema",
96
+ "Add official-target-keywords.json java section from JLS §3.9",
97
+ "Extend bootstrap-packs.mjs, validate.mjs, generate-coverage.mjs",
98
+ "Update README coverage table; npm run bootstrap && npm test"
99
+ ],
100
+ "sampleKeywords": ["abstract", "class", "interface", "extends", "implements", "package", "import", "public", "protected", "private", "static", "final", "void", "int", "boolean", "new", "this", "super", "return", "if", "else", "for", "while", "switch", "case", "try", "catch", "throw", "enum"]
101
+ },
102
+ {
103
+ "id": "c",
104
+ "release": "v0.3.0+",
105
+ "priority": "medium",
106
+ "status": "planned",
107
+ "workItems": ["Same target-add pipeline as java", "Map C89/C11 reserved words + common extensions"],
108
+ "sampleKeywords": ["auto", "break", "case", "char", "const", "continue", "default", "do", "double", "else", "enum", "extern", "float", "for", "goto", "if", "int", "long", "register", "return", "short", "signed", "sizeof", "static", "struct", "switch", "typedef", "union", "unsigned", "void", "volatile", "while"]
109
+ },
110
+ {
111
+ "id": "cpp",
112
+ "release": "v0.3.0+",
113
+ "priority": "medium",
114
+ "status": "planned",
115
+ "workItems": ["Same target-add pipeline as java", "C superset + C++ keywords"],
116
+ "sampleKeywords": ["class", "namespace", "template", "virtual", "public", "protected", "private", "typename", "constexpr", "noexcept", "concept", "requires"]
117
+ },
118
+ {
119
+ "id": "csharp",
120
+ "release": "v0.4.0+",
121
+ "priority": "medium",
122
+ "status": "planned",
123
+ "sampleKeywords": ["namespace", "class", "struct", "interface", "using", "async", "await", "var", "void", "int", "string", "bool"]
124
+ },
125
+ {
126
+ "id": "kotlin",
127
+ "release": "v0.4.0+",
128
+ "priority": "medium",
129
+ "status": "planned",
130
+ "sampleKeywords": ["fun", "val", "var", "class", "object", "interface", "when", "suspend", "package", "import"]
131
+ },
132
+ {
133
+ "id": "swift",
134
+ "release": "v0.4.0+",
135
+ "priority": "low",
136
+ "status": "planned",
137
+ "sampleKeywords": ["func", "var", "let", "class", "struct", "enum", "protocol", "extension", "import", "guard", "defer"]
138
+ },
139
+ {
140
+ "id": "dart",
141
+ "release": "v0.4.0+",
142
+ "priority": "low",
143
+ "status": "planned",
144
+ "sampleKeywords": ["class", "extends", "implements", "import", "library", "part", "async", "await", "yield"]
145
+ },
146
+ {
147
+ "id": "ruby",
148
+ "release": "v0.4.0+",
149
+ "priority": "low",
150
+ "status": "planned",
151
+ "sampleKeywords": ["def", "class", "module", "end", "if", "unless", "while", "until", "for", "do", "yield", "require"]
152
+ },
153
+ {
154
+ "id": "php",
155
+ "release": "v0.4.0+",
156
+ "priority": "low",
157
+ "status": "planned",
158
+ "sampleKeywords": ["function", "class", "interface", "trait", "namespace", "use", "public", "protected", "private", "static", "echo"]
159
+ }
160
+ ],
161
+ "addTargetChecklist": [
162
+ "Pick one target from plannedDetails — do not batch multiple targets in one PR",
163
+ "Add spec URL to official-target-keywords.json sources",
164
+ "Add targets.{id} emits to every logical token (empty string where no keyword)",
165
+ "Run npm run bootstrap to refresh all 25+ packs",
166
+ "Run npm test and npm run readme:metrics"
167
+ ]
168
+ },
169
+ "releaseSequence": [
170
+ { "release": "v0.1.x", "focus": "Ship 112 logical tokens, 5 targets, 25 African packs; npm publish", "status": "current" },
171
+ { "release": "v0.2.0", "focus": "GEN (Rust 2024), LAZY (Python 3.15 when ready)", "status": "planned" },
172
+ { "release": "v0.3.0+", "focus": "First new programming target (Java or C — one per release)", "status": "planned" },
173
+ { "release": "v2.0.0", "focus": "Optional stdlib/builtins tier (design-first)", "status": "planned" }
174
+ ]
28
175
  }
@@ -314,6 +314,45 @@
314
314
  "SATISFIES": [
315
315
  "satisfies"
316
316
  ],
317
+ "ANY": [
318
+ "any"
319
+ ],
320
+ "BOOLEAN": [
321
+ "boolean"
322
+ ],
323
+ "NUMBER": [
324
+ "number"
325
+ ],
326
+ "STRING": [
327
+ "string"
328
+ ],
329
+ "SYMBOL": [
330
+ "symbol"
331
+ ],
332
+ "OBJECT": [
333
+ "object"
334
+ ],
335
+ "NEVER": [
336
+ "never"
337
+ ],
338
+ "UNKNOWN": [
339
+ "unknown"
340
+ ],
341
+ "BIGINT": [
342
+ "bigint"
343
+ ],
344
+ "CONSTRUCTOR": [
345
+ "constructor"
346
+ ],
347
+ "REQUIRE": [
348
+ "require"
349
+ ],
350
+ "USING": [
351
+ "using"
352
+ ],
353
+ "OF": [
354
+ "of"
355
+ ],
317
356
  "DYN": [
318
357
  "dyn"
319
358
  ],
@@ -9,7 +9,7 @@
9
9
  "regions": [
10
10
  "Central Africa"
11
11
  ],
12
- "version": "0.1.0",
12
+ "version": "0.1.1",
13
13
  "displayName": "Lingala",
14
14
  "description": "Lingala keyword map — starter pack (community contributions welcome)",
15
15
  "reviewStatus": "starter",
@@ -339,6 +339,45 @@
339
339
  "SATISFIES": [
340
340
  "satisfies"
341
341
  ],
342
+ "ANY": [
343
+ "any"
344
+ ],
345
+ "BOOLEAN": [
346
+ "boolean"
347
+ ],
348
+ "NUMBER": [
349
+ "number"
350
+ ],
351
+ "STRING": [
352
+ "string"
353
+ ],
354
+ "SYMBOL": [
355
+ "symbol"
356
+ ],
357
+ "OBJECT": [
358
+ "object"
359
+ ],
360
+ "NEVER": [
361
+ "never"
362
+ ],
363
+ "UNKNOWN": [
364
+ "unknown"
365
+ ],
366
+ "BIGINT": [
367
+ "bigint"
368
+ ],
369
+ "CONSTRUCTOR": [
370
+ "constructor"
371
+ ],
372
+ "REQUIRE": [
373
+ "require"
374
+ ],
375
+ "USING": [
376
+ "using"
377
+ ],
378
+ "OF": [
379
+ "of"
380
+ ],
342
381
  "DYN": [
343
382
  "dyn"
344
383
  ],