code-languages 1.1.0 → 1.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.
Files changed (172) hide show
  1. package/README.md +136 -8
  2. package/dist/detect.cjs +745 -0
  3. package/dist/detect.cjs.map +1 -0
  4. package/dist/detect.d.cts +25 -0
  5. package/dist/detect.d.ts +25 -0
  6. package/dist/detect.js +742 -0
  7. package/dist/detect.js.map +1 -0
  8. package/dist/i18n.cjs +31 -0
  9. package/dist/i18n.cjs.map +1 -0
  10. package/dist/i18n.d.cts +5 -0
  11. package/dist/i18n.d.ts +5 -0
  12. package/dist/i18n.js +29 -0
  13. package/dist/i18n.js.map +1 -0
  14. package/dist/index.cjs +650 -48
  15. package/dist/index.cjs.map +1 -1
  16. package/dist/index.d.cts +625 -17
  17. package/dist/index.d.ts +625 -17
  18. package/dist/index.js +634 -49
  19. package/dist/index.js.map +1 -1
  20. package/dist/languages/astro.cjs +34 -0
  21. package/dist/languages/astro.cjs.map +1 -0
  22. package/dist/languages/astro.d.cts +29 -0
  23. package/dist/languages/astro.d.ts +29 -0
  24. package/dist/languages/astro.js +32 -0
  25. package/dist/languages/astro.js.map +1 -0
  26. package/dist/languages/bash.cjs +34 -0
  27. package/dist/languages/bash.cjs.map +1 -0
  28. package/dist/languages/bash.d.cts +29 -0
  29. package/dist/languages/bash.d.ts +29 -0
  30. package/dist/languages/bash.js +32 -0
  31. package/dist/languages/bash.js.map +1 -0
  32. package/dist/languages/c.cjs +18 -4
  33. package/dist/languages/c.cjs.map +1 -1
  34. package/dist/languages/c.d.cts +17 -3
  35. package/dist/languages/c.d.ts +17 -3
  36. package/dist/languages/c.js +18 -4
  37. package/dist/languages/c.js.map +1 -1
  38. package/dist/languages/cpp.cjs +34 -0
  39. package/dist/languages/cpp.cjs.map +1 -0
  40. package/dist/languages/cpp.d.cts +29 -0
  41. package/dist/languages/cpp.d.ts +29 -0
  42. package/dist/languages/cpp.js +32 -0
  43. package/dist/languages/cpp.js.map +1 -0
  44. package/dist/languages/css.cjs +13 -4
  45. package/dist/languages/css.cjs.map +1 -1
  46. package/dist/languages/css.d.cts +12 -3
  47. package/dist/languages/css.d.ts +12 -3
  48. package/dist/languages/css.js +13 -4
  49. package/dist/languages/css.js.map +1 -1
  50. package/dist/languages/dockerfile.cjs +33 -0
  51. package/dist/languages/dockerfile.cjs.map +1 -0
  52. package/dist/languages/dockerfile.d.cts +28 -0
  53. package/dist/languages/dockerfile.d.ts +28 -0
  54. package/dist/languages/dockerfile.js +31 -0
  55. package/dist/languages/dockerfile.js.map +1 -0
  56. package/dist/languages/go.cjs +18 -4
  57. package/dist/languages/go.cjs.map +1 -1
  58. package/dist/languages/go.d.cts +17 -3
  59. package/dist/languages/go.d.ts +17 -3
  60. package/dist/languages/go.js +18 -4
  61. package/dist/languages/go.js.map +1 -1
  62. package/dist/languages/groovy.cjs +34 -0
  63. package/dist/languages/groovy.cjs.map +1 -0
  64. package/dist/languages/groovy.d.cts +29 -0
  65. package/dist/languages/groovy.d.ts +29 -0
  66. package/dist/languages/groovy.js +32 -0
  67. package/dist/languages/groovy.js.map +1 -0
  68. package/dist/languages/html.cjs +13 -4
  69. package/dist/languages/html.cjs.map +1 -1
  70. package/dist/languages/html.d.cts +12 -3
  71. package/dist/languages/html.d.ts +12 -3
  72. package/dist/languages/html.js +13 -4
  73. package/dist/languages/html.js.map +1 -1
  74. package/dist/languages/java.cjs +18 -4
  75. package/dist/languages/java.cjs.map +1 -1
  76. package/dist/languages/java.d.cts +17 -3
  77. package/dist/languages/java.d.ts +17 -3
  78. package/dist/languages/java.js +18 -4
  79. package/dist/languages/java.js.map +1 -1
  80. package/dist/languages/javascript.cjs +18 -4
  81. package/dist/languages/javascript.cjs.map +1 -1
  82. package/dist/languages/javascript.d.cts +17 -3
  83. package/dist/languages/javascript.d.ts +17 -3
  84. package/dist/languages/javascript.js +18 -4
  85. package/dist/languages/javascript.js.map +1 -1
  86. package/dist/languages/json.cjs +13 -4
  87. package/dist/languages/json.cjs.map +1 -1
  88. package/dist/languages/json.d.cts +12 -3
  89. package/dist/languages/json.d.ts +12 -3
  90. package/dist/languages/json.js +13 -4
  91. package/dist/languages/json.js.map +1 -1
  92. package/dist/languages/kotlin.cjs +34 -0
  93. package/dist/languages/kotlin.cjs.map +1 -0
  94. package/dist/languages/kotlin.d.cts +29 -0
  95. package/dist/languages/kotlin.d.ts +29 -0
  96. package/dist/languages/kotlin.js +32 -0
  97. package/dist/languages/kotlin.js.map +1 -0
  98. package/dist/languages/markdown.cjs +13 -4
  99. package/dist/languages/markdown.cjs.map +1 -1
  100. package/dist/languages/markdown.d.cts +12 -3
  101. package/dist/languages/markdown.d.ts +12 -3
  102. package/dist/languages/markdown.js +13 -4
  103. package/dist/languages/markdown.js.map +1 -1
  104. package/dist/languages/php.cjs +34 -0
  105. package/dist/languages/php.cjs.map +1 -0
  106. package/dist/languages/php.d.cts +29 -0
  107. package/dist/languages/php.d.ts +29 -0
  108. package/dist/languages/php.js +32 -0
  109. package/dist/languages/php.js.map +1 -0
  110. package/dist/languages/python.cjs +18 -4
  111. package/dist/languages/python.cjs.map +1 -1
  112. package/dist/languages/python.d.cts +17 -3
  113. package/dist/languages/python.d.ts +17 -3
  114. package/dist/languages/python.js +18 -4
  115. package/dist/languages/python.js.map +1 -1
  116. package/dist/languages/rust.cjs +18 -4
  117. package/dist/languages/rust.cjs.map +1 -1
  118. package/dist/languages/rust.d.cts +17 -3
  119. package/dist/languages/rust.d.ts +17 -3
  120. package/dist/languages/rust.js +18 -4
  121. package/dist/languages/rust.js.map +1 -1
  122. package/dist/languages/scss.cjs +34 -0
  123. package/dist/languages/scss.cjs.map +1 -0
  124. package/dist/languages/scss.d.cts +29 -0
  125. package/dist/languages/scss.d.ts +29 -0
  126. package/dist/languages/scss.js +32 -0
  127. package/dist/languages/scss.js.map +1 -0
  128. package/dist/languages/sql.cjs +29 -0
  129. package/dist/languages/sql.cjs.map +1 -0
  130. package/dist/languages/sql.d.cts +24 -0
  131. package/dist/languages/sql.d.ts +24 -0
  132. package/dist/languages/sql.js +27 -0
  133. package/dist/languages/sql.js.map +1 -0
  134. package/dist/languages/swift.cjs +34 -0
  135. package/dist/languages/swift.cjs.map +1 -0
  136. package/dist/languages/swift.d.cts +29 -0
  137. package/dist/languages/swift.d.ts +29 -0
  138. package/dist/languages/swift.js +32 -0
  139. package/dist/languages/swift.js.map +1 -0
  140. package/dist/languages/typescript.cjs +18 -4
  141. package/dist/languages/typescript.cjs.map +1 -1
  142. package/dist/languages/typescript.d.cts +17 -3
  143. package/dist/languages/typescript.d.ts +17 -3
  144. package/dist/languages/typescript.js +18 -4
  145. package/dist/languages/typescript.js.map +1 -1
  146. package/dist/languages/vue.cjs +34 -0
  147. package/dist/languages/vue.cjs.map +1 -0
  148. package/dist/languages/vue.d.cts +29 -0
  149. package/dist/languages/vue.d.ts +29 -0
  150. package/dist/languages/vue.js +32 -0
  151. package/dist/languages/vue.js.map +1 -0
  152. package/dist/languages/webassembly.cjs +34 -0
  153. package/dist/languages/webassembly.cjs.map +1 -0
  154. package/dist/languages/webassembly.d.cts +29 -0
  155. package/dist/languages/webassembly.d.ts +29 -0
  156. package/dist/languages/webassembly.js +32 -0
  157. package/dist/languages/webassembly.js.map +1 -0
  158. package/dist/languages/xml.cjs +29 -0
  159. package/dist/languages/xml.cjs.map +1 -0
  160. package/dist/languages/xml.d.cts +24 -0
  161. package/dist/languages/xml.d.ts +24 -0
  162. package/dist/languages/xml.js +27 -0
  163. package/dist/languages/xml.js.map +1 -0
  164. package/dist/languages/yaml.cjs +13 -4
  165. package/dist/languages/yaml.cjs.map +1 -1
  166. package/dist/languages/yaml.d.cts +12 -3
  167. package/dist/languages/yaml.d.ts +12 -3
  168. package/dist/languages/yaml.js +13 -4
  169. package/dist/languages/yaml.js.map +1 -1
  170. package/dist/types-CZDaRR4t.d.cts +53 -0
  171. package/dist/types-CZDaRR4t.d.ts +53 -0
  172. package/package.json +87 -1
package/README.md CHANGED
@@ -8,7 +8,7 @@
8
8
 
9
9
  Structured metadata for programming languages, packaged as a typed, tree-shakeable TypeScript library.
10
10
 
11
- `code-languages` is useful when you need a small source of truth for language names, slugs, file extensions, release metadata, websites, paradigms, and logos in developer tools, docs sites, learning platforms, or editor-like interfaces. It currently includes metadata for 12 languages.
11
+ `code-languages` is useful when you need a small source of truth for language names, slugs, file extensions, release metadata, websites, paradigms, and logos in developer tools, docs sites, learning platforms, or editor-like interfaces. It currently includes metadata for 25 languages.
12
12
 
13
13
  ## Features
14
14
 
@@ -31,8 +31,12 @@ Import only the language metadata you need:
31
31
 
32
32
  ```ts
33
33
  import { typescript } from "code-languages/typescript";
34
+ import { localizeLanguage } from "code-languages/i18n";
34
35
 
35
- console.log(typescript.name);
36
+ const localized = localizeLanguage(typescript, "en");
37
+
38
+ console.log(localized.name);
39
+ console.log(localized.description);
36
40
  console.log(typescript.extensions);
37
41
  console.log(typescript.paradigms);
38
42
  ```
@@ -40,39 +44,107 @@ console.log(typescript.paradigms);
40
44
  Import multiple languages:
41
45
 
42
46
  ```ts
47
+ import { astro } from "code-languages/astro";
48
+ import { bash } from "code-languages/bash";
43
49
  import { c } from "code-languages/c";
50
+ import { cpp } from "code-languages/cpp";
44
51
  import { css } from "code-languages/css";
52
+ import { dockerfile } from "code-languages/dockerfile";
53
+ import { groovy } from "code-languages/groovy";
45
54
  import { javascript } from "code-languages/javascript";
46
55
  import { java } from "code-languages/java";
47
56
  import { html } from "code-languages/html";
57
+ import { kotlin } from "code-languages/kotlin";
48
58
  import { markdown } from "code-languages/markdown";
59
+ import { php } from "code-languages/php";
49
60
  import { python } from "code-languages/python";
61
+ import { scss } from "code-languages/scss";
50
62
  import { json } from "code-languages/json";
63
+ import { sql } from "code-languages/sql";
64
+ import { swift } from "code-languages/swift";
65
+ import { vue } from "code-languages/vue";
66
+ import { webassembly } from "code-languages/webassembly";
67
+ import { xml } from "code-languages/xml";
51
68
  import { yaml } from "code-languages/yaml";
52
69
 
70
+ console.log(astro.version);
71
+ console.log(bash.version);
53
72
  console.log(c.extensions);
73
+ console.log(cpp.i18n.en.name);
54
74
  console.log(css.paradigms);
75
+ console.log(dockerfile.i18n.en.name);
76
+ console.log(groovy.version);
55
77
  console.log(javascript.website);
56
78
  console.log(java.version);
57
79
  console.log(html.extensions);
80
+ console.log(kotlin.version);
58
81
  console.log(markdown.website);
82
+ console.log(php.version);
59
83
  console.log(python.publishedDate);
60
- console.log(json.description);
84
+ console.log(scss.extensions);
85
+ console.log(json.i18n.en.description);
86
+ console.log(sql.i18n.en.name);
87
+ console.log(swift.version);
88
+ console.log(vue.website);
89
+ console.log(webassembly.extensions);
90
+ console.log(xml.extensions);
61
91
  console.log(yaml.version);
62
92
  ```
63
93
 
64
94
  Import from the package root when bundle size is not a concern:
65
95
 
66
96
  ```ts
67
- import { c, css, go, html, java, json, markdown, rust, typescript, yaml } from "code-languages";
97
+ import {
98
+ astro,
99
+ bash,
100
+ c,
101
+ cpp,
102
+ css,
103
+ detectLanguage,
104
+ detectLanguages,
105
+ dockerfile,
106
+ go,
107
+ groovy,
108
+ html,
109
+ java,
110
+ json,
111
+ kotlin,
112
+ localizeLanguage,
113
+ markdown,
114
+ php,
115
+ rust,
116
+ scss,
117
+ sql,
118
+ swift,
119
+ typescript,
120
+ vue,
121
+ webassembly,
122
+ xml,
123
+ yaml,
124
+ } from "code-languages";
68
125
 
126
+ console.log(localizeLanguage(astro, "es").description);
127
+ console.log(detectLanguage("src/index.ts")?.slug);
128
+ console.log(detectLanguages("include/config.h").map((language) => language.slug));
129
+ console.log(localizeLanguage(bash, "es").description);
69
130
  console.log(c.version);
70
- console.log(css.name);
71
- console.log(java.name);
131
+ console.log(cpp.website);
132
+ console.log(localizeLanguage(css).name);
133
+ console.log(dockerfile.website);
134
+ console.log(localizeLanguage(groovy).description);
135
+ console.log(localizeLanguage(java).name);
72
136
  console.log(html.website);
137
+ console.log(localizeLanguage(kotlin, "es-PE").description);
73
138
  console.log(markdown.extensions);
139
+ console.log(localizeLanguage(php, "es").description);
74
140
  console.log(go.logo);
141
+ console.log(localizeLanguage(scss).name);
75
142
  console.log(json.website);
143
+ console.log(sql.extensions);
144
+ console.log(swift.i18n.en.description);
145
+ console.log(localizeLanguage(vue, "es").description);
146
+ console.log(localizeLanguage(webassembly).name);
147
+ console.log(localizeLanguage(xml, "es").name);
76
148
  console.log(yaml.paradigms);
77
149
  ```
78
150
 
@@ -81,36 +153,92 @@ console.log(yaml.paradigms);
81
153
  Every language object satisfies the `Language` interface:
82
154
 
83
155
  ```ts
84
- export interface Language {
156
+ export type Locale = "en" | "es";
157
+
158
+ export interface LanguageContent {
85
159
  name: string;
86
- slug: string;
87
160
  description: string;
88
161
  longDescription: string;
162
+ }
163
+
164
+ export interface Language {
165
+ slug: string;
89
166
  publishedDate: string;
90
167
  extensions: string[];
91
168
  author: string;
92
169
  website: string;
93
170
  paradigms: string[];
171
+ tooling?: {
172
+ runtimes?: string[];
173
+ packageManagers?: string[];
174
+ ecosystems?: string[];
175
+ };
94
176
  version: string;
95
177
  logo: string;
178
+ i18n: {
179
+ en: LanguageContent;
180
+ es?: LanguageContent;
181
+ };
96
182
  }
97
183
  ```
98
184
 
185
+ Use `localizeLanguage` to read localized display content with English fallback:
186
+
187
+ ```ts
188
+ import { json } from "code-languages/json";
189
+ import { localizeLanguage } from "code-languages/i18n";
190
+
191
+ const language = localizeLanguage(json, "es-PE");
192
+
193
+ console.log(language.name);
194
+ console.log(language.longDescription);
195
+ console.log(language.resolvedLocale); // "es"
196
+ ```
197
+
198
+ `localizeLanguage` resolves locales in this order:
199
+
200
+ 1. Exact locale, for example `es`.
201
+ 2. Base language from a regional locale, for example `es-PE` -> `es`.
202
+ 3. English fallback, for example `fr-FR` -> `en`.
203
+
204
+ Use `detectLanguage` or `detectLanguages` to infer languages from filenames:
205
+
206
+ ```ts
207
+ import { detectLanguage, detectLanguages } from "code-languages/detect";
208
+
209
+ console.log(detectLanguage("src/index.ts")?.slug); // "typescript"
210
+ console.log(detectLanguage("Dockerfile")?.slug); // "dockerfile"
211
+ console.log(detectLanguages("include/config.h").map((language) => language.slug)); // ["c", "cpp"]
212
+ ```
213
+
99
214
  ## Supported Languages
100
215
 
101
216
  | Language | Slug | Extensions | Version | Import |
102
217
  |---|---|---|---|---|
218
+ | Astro | `astro` | `.astro` | `6.3.1` | `code-languages/astro` |
219
+ | Bash | `bash` | `.sh`, `.bash`, `.bashrc`, `.bash_profile`, `.bash_login`, `.profile` | `5.3` | `code-languages/bash` |
103
220
  | C | `c` | `.c`, `.h` | `C23` | `code-languages/c` |
221
+ | C++ | `cpp` | `.cpp`, `.cc`, `.cxx`, `.h`, `.hpp`, `.hh`, `.hxx` | `C++23` | `code-languages/cpp` |
222
+ | Dockerfile | `dockerfile` | `Dockerfile`, `.dockerfile` | `1.10` | `code-languages/dockerfile` |
223
+ | Groovy | `groovy` | `.groovy`, `.gvy`, `.gy`, `.gsh` | `5.0.5` | `code-languages/groovy` |
104
224
  | TypeScript | `typescript` | `.ts`, `.tsx`, `.mts`, `.cts` | `6.0` | `code-languages/typescript` |
105
225
  | JavaScript | `javascript` | `.js`, `.mjs`, `.cjs`, `.jsx` | `ECMAScript 2025` | `code-languages/javascript` |
106
226
  | JSON | `json` | `.json` | `RFC 8259` | `code-languages/json` |
227
+ | SQL | `sql` | `.sql` | `SQL:2023` | `code-languages/sql` |
107
228
  | Java | `java` | `.java` | `26` | `code-languages/java` |
229
+ | Swift | `swift` | `.swift` | `6.2.2` | `code-languages/swift` |
230
+ | Kotlin | `kotlin` | `.kt`, `.kts` | `2.3.20` | `code-languages/kotlin` |
231
+ | PHP | `php` | `.php`, `.phtml`, `.php3`, `.php4`, `.php5`, `.phps` | `8.5.6` | `code-languages/php` |
108
232
  | HTML | `html` | `.html`, `.htm` | `Living Standard` | `code-languages/html` |
109
233
  | CSS | `css` | `.css` | `Living Standard` | `code-languages/css` |
110
234
  | Markdown | `markdown` | `.md`, `.markdown`, `.mdown`, `.mkd` | `CommonMark 0.31.2` | `code-languages/markdown` |
235
+ | XML | `xml` | `.xml`, `.xsd`, `.xsl`, `.xslt` | `XML 1.0 Fifth Edition` | `code-languages/xml` |
111
236
  | YAML | `yaml` | `.yaml`, `.yml` | `1.2.2` | `code-languages/yaml` |
112
237
  | Python | `python` | `.py`, `.pyw` | `3.14.4` | `code-languages/python` |
113
238
  | Rust | `rust` | `.rs` | `1.95.0` | `code-languages/rust` |
239
+ | Sass | `scss` | `.scss`, `.sass` | `1.99.0` | `code-languages/scss` |
240
+ | Vue | `vue` | `.vue` | `3.5.34` | `code-languages/vue` |
241
+ | WebAssembly | `webassembly` | `.wasm`, `.wat` | `3.0` | `code-languages/webassembly` |
114
242
  | Go | `go` | `.go` | `1.26.3` | `code-languages/go` |
115
243
 
116
244
  ## Development