{"id":20333098,"url":"https://github.com/jaebradley/github-languages-client","last_synced_at":"2026-05-08T06:12:03.271Z","repository":{"id":45046458,"uuid":"128462245","full_name":"jaebradley/github-languages-client","owner":"jaebradley","description":"📖 NodeJS Client for GitHub Languages","archived":false,"fork":false,"pushed_at":"2022-01-12T19:41:09.000Z","size":1382,"stargazers_count":1,"open_issues_count":1,"forks_count":0,"subscribers_count":3,"default_branch":"master","last_synced_at":"2024-10-16T08:31:24.346Z","etag":null,"topics":["github-language","github-languages","nodejs","npm","npm-package","programming-language","programming-languages"],"latest_commit_sha":null,"homepage":"https://www.npmjs.com/package/github-languages-client","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jaebradley.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2018-04-06T19:49:01.000Z","updated_at":"2021-06-16T01:45:59.000Z","dependencies_parsed_at":"2022-09-23T10:42:29.555Z","dependency_job_id":null,"html_url":"https://github.com/jaebradley/github-languages-client","commit_stats":null,"previous_names":[],"tags_count":125,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jaebradley%2Fgithub-languages-client","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jaebradley%2Fgithub-languages-client/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jaebradley%2Fgithub-languages-client/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jaebradley%2Fgithub-languages-client/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jaebradley","download_url":"https://codeload.github.com/jaebradley/github-languages-client/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":241698929,"owners_count":20005289,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["github-language","github-languages","nodejs","npm","npm-package","programming-language","programming-languages"],"created_at":"2024-11-14T20:29:20.888Z","updated_at":"2026-05-08T06:11:58.219Z","avatar_url":"https://github.com/jaebradley.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# GitHub Languages Client\n\n![GitHub Languages Client](https://github.com/jaebradley/github-languages-client/workflows/GitHub%20Languages%20Client/badge.svg)\n[![codecov](https://codecov.io/gh/jaebradley/github-languages-client/branch/master/graph/badge.svg)](https://codecov.io/gh/jaebradley/github-languages-client)\n[![npm](https://img.shields.io/npm/v/github-languages-client.svg)](https://www.npmjs.com/package/github-languages-client)\n![npm bundle size](https://img.shields.io/bundlephobia/minzip/github-languages-client)\n[![npm-total-downloads](https://img.shields.io/npm/dt/github-languages-client.svg)](https://www.npmjs.com/package/github-languages-client)\n![GitHub](https://img.shields.io/github/license/jaebradley/github-languages-client)\n\nA `NodeJS` client to get languages GitHub knows about for [`Advanced Search`](https://github.com/search/advanced), for example.\n\n![advanced-search](https://imgur.com/TYoc7Qy.png)\n\n## Implementation\n\n`GitHub` maintains [a `linguist` repository](https://github.com/github/linguist) that contains [a `languages.yml` file](https://raw.githubusercontent.com/github/linguist/master/lib/linguist/languages.yml) that seems to represent the set of languages that `GitHub` knows about.\n\nI convert this `languages.yml` file to [a JSON file](~/src/languages.json). \u003csup\u003e[1](#languages-job-footnote)\u003c/sup\u003e\n\nI then read from this file when instantiating the `GitHubLanguagesClient`.\n\nFor fuzzy-searching, I use [the `fuse` library](http://fusejs.io/).\n\n## API\n\n### Constructor\n\nThe default constructor parameters, used for fuzzy-searching, are\n\n```javascript\n{\n  maxPatternLength = 32,\n  caseSensitive = false,\n  includeScore = false,\n  shouldSort = true,\n  threshold = 0.6,\n  location = 0,\n  distance = 100,\n  minMatchCharLength = 1,\n}\n```\n\nThe [`fuse.io` site](http://fusejs.io/) gives a good explanation of why and how these values are used.\n\n### `getAllLanguages`\n\nThis `static` method returns the complete array of all languages available, and the metadata associated with each language. It essentially returns [the `src/languages.json`](src/languages.json) file as a `JavaScript` object.\n\n```javascript\nimport GitHubLanguagesClient from 'github-languages-client';\n\nconst allLanguages = GitHubLanguagesClient.getAllLanguages();\n```\n\n### `search`\n\nThis `class` method returns fuzzy-search text matching on the language's name, aliases, and extensions.\n\n```javascript\nimport GitHubLanguagesClient from 'github-languages-client';\n\nconst client = new GitHubLanguagesClient();\n\nconst matchingLanguages = client.search('JavaScript');\n\n// {\n//   type: 'programming',\n//   tmScope: 'source.js',\n//   aceMode: 'javascript',\n//   codemirrorMode: 'javascript',\n//   codemirrorMimeType: 'text/javascript',\n//   color: '#f1e05a',\n//   aliases: [ 'js', 'node', 'javascript' ],\n//   extensions:\n//     [ '.js',\n//       '._js',\n//       '.bones',\n//       '.es',\n//       '.es6',\n//       '.frag',\n//       '.gs',\n//       '.jake',\n//       '.jsb',\n//       '.jscad',\n//       '.jsfl',\n//       '.jsm',\n//       '.jss',\n//       '.mjs',\n//       '.njs',\n//       '.pac',\n//       '.sjs',\n//       '.ssjs',\n//       '.xsjs',\n//       '.xsjslib' ],\n//   filenames: [ 'Jakefile' ],\n//   interpreters: [ 'node' ],\n//   languageId: 183,\n//   name: 'JavaScript',\n//   wrap: 'false',\n//   searchable: 'true' },\n// { type: 'programming',\n//   color: '#00a6a6',\n//   extensions: [ '.ms', '.mcr' ],\n//   tmScope: 'source.maxscript',\n//   aceMode: 'text',\n//   languageId: 217,\n//   name: 'MAXScript',\n//   aliases: [ 'maxscript' ],\n//   wrap: 'false',\n//   searchable: 'true' },\n//   etc., etc.\n```\n\n## Footnotes\n\n\u003cul\u003e\n  \u003cli\u003e\n    \u003ca name='languages-job-footnote'\u003e\u003csup\u003e1\u003c/sup\u003e I have \u003ca href=\"https://github.com/jaebradley/github-languages-watcher\"\u003ea Travis CI job\u003c/a\u003e that runs daily and opens PRs against this repository if it detects changes in the `languages.yml` file.\u003c/a\u003e\n  \u003c/li\u003e\n\u003c/ul\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjaebradley%2Fgithub-languages-client","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjaebradley%2Fgithub-languages-client","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjaebradley%2Fgithub-languages-client/lists"}