{"id":28478996,"url":"https://github.com/seancannon/aybabtu","last_synced_at":"2025-07-03T09:31:08.858Z","repository":{"id":143845103,"uuid":"82619902","full_name":"SeanCannon/aybabtu","owner":"SeanCannon","description":"All Your Base Are Belong To Us","archived":false,"fork":false,"pushed_at":"2020-11-22T23:31:32.000Z","size":18,"stargazers_count":9,"open_issues_count":1,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-06-07T18:07:40.852Z","etag":null,"topics":["base-conversion","binary","decimal","hexadecimal","nodejs","quaternary"],"latest_commit_sha":null,"homepage":null,"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/SeanCannon.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,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-02-21T01:06:46.000Z","updated_at":"2024-02-11T13:02:32.000Z","dependencies_parsed_at":null,"dependency_job_id":"a90bd63a-4ed0-4fbb-ba03-7b319bf6e4a0","html_url":"https://github.com/SeanCannon/aybabtu","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/SeanCannon/aybabtu","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SeanCannon%2Faybabtu","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SeanCannon%2Faybabtu/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SeanCannon%2Faybabtu/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SeanCannon%2Faybabtu/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/SeanCannon","download_url":"https://codeload.github.com/SeanCannon/aybabtu/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SeanCannon%2Faybabtu/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":263300134,"owners_count":23445189,"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":["base-conversion","binary","decimal","hexadecimal","nodejs","quaternary"],"created_at":"2025-06-07T18:07:42.764Z","updated_at":"2025-07-03T09:31:08.837Z","avatar_url":"https://github.com/SeanCannon.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# aybabtu\n**All Your Base Are Belong To Us**\n\n*A simple and convenient API for converting data between mathematical bases.*\n\n[![Build Status](https://travis-ci.org/SeanCannon/aybabtu.svg?branch=master)](https://travis-ci.org/SeanCannon/aybabtu) [![npm version](http://img.shields.io/npm/v/aybabtu.svg)](https://npmjs.org/package/aybabtu) [![Dependency Status](https://david-dm.org/SeanCannon/aybabtu.svg)](https://david-dm.org/SeanCannon/aybabtu) [![Coverage Status](https://coveralls.io/repos/github/SeanCannon/aybabtu/badge.svg?branch=master)](https://coveralls.io/github/SeanCannon/aybabtu?branch=master)\n\n\n## Disclaimer\nUse of this library is quite silly since all it is really doing is this:\n\n```\nparseInt(myValue, baseFrom).toString(baseTo)\n```\n\nWhy use aybabtu then? \n - Your app could always use another dependency\n - 31,200% unit test coverage (pay no attention to the coveralls badge)\n - Magic constants like `16` (base hex) and `10` (base dec) can confuse junior devs\n - Because `parseInt` and `toString` should never be seen together so we hide them for you\n - Somebody set up us the bomb.\n\n## Limitations\n \n##### 32-bit limitation\nJavaScript caps bitwise operator support at 32 bits, so giving `aybabtu` a value larger than that [won't work](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Bitwise_Operators).\n\nA simple workaround is to break up your value into 32 bit chunks, for example: \n\n```js\nconst tooLargeBinary = '11111011000001010011100101111001010001110011100011011010';\nconst wrongValue     = base.bin2hex(tooLargeBinary); // \"fb0539794738d8\"\nconst rightValue     = tooLargeBinary.match(/.{1,32}/g).map(base.bin2hex).join(''); // \"fb0539794738da\"\n```\n\n\n\n## Install\n\n```\n$ npm install aybabtu --save\n```\n\nRun the specs\n\n```\n$ npm test\n```\n\n## Usage\n##### Using quick methods\n```js\nconst base = require('aybabtu');\n\nbase.dec2hex('42');  // '2a'\n```\n##### Using the master converter\n```js\nconst { allYour } = require('aybabtu');\n\nallYour('decimal').areBelongTo('binary')(50);  // '110010'\n```\n\n## Supported Bases\n - [Binary](#Binary)\n - [Ternary](#Ternary)\n - [Quaternary](#Quaternary)\n - [Quinary](#Quinary)\n - [Senary](#Senary)\n - [Septenary](#Septenary)\n - [Octal](#Octal)\n - [Nonary](#Nonary)\n - [Decimal](#Decimal)\n - [Undenary](#Undenary)\n - [Duodecimal](#Duodecimal)\n - [Hexadecimal](#Hexadecimal)\n - [Vigesimal](#Vigesimal)\n  \n## \u003ca name=\"Binary\"\u003eBinary\u003c/a\u003e: Base 2\n\n### Convert to Ternary\nString → String\n```js\nexpect(bin2ter('110010')).toBe('1212');\n```\n### Convert to Quaternary\nString → String\n```js\nexpect(bin2qua('110010')).toBe('302');\n```\n### Convert to Quinary\nString → String\n```js\nexpect(bin2qui('110010')).toBe('200');\n```\n### Convert to Senary\nString → String\n```js\nexpect(bin2sen('110010')).toBe('122');\n```\n### Convert to Septenary\nString → String\n```js\nexpect(bin2sep('110010')).toBe('101');\n```\n### Convert to Octal\nString → String\n```js\nexpect(bin2oct('110010')).toBe('62');\n```\n### Convert to Nonary\nString → String\n```js\nexpect(bin2non('110010')).toBe('55');\n```\n### Convert to Decimal\nString → String\n```js\nexpect(bin2dec('110010')).toBe('50');\n```\n### Convert to Undenary\nString → String\n```js\nexpect(bin2und('110010')).toBe('46');\n```\n### Convert to Duodecimal\nString → String\n```js\nexpect(bin2duo('110010')).toBe('42');\n```\n### Convert to Hexadecimal\nString → String\n```js\nexpect(bin2hex('110010')).toBe('32');\n```\n### Convert to Vigesimal\nString → String\n```js\nexpect(bin2vig('110010')).toBe('2a');\n```\n## \u003ca name=\"Ternary\"\u003eTernary\u003c/a\u003e: Base 3\n\n### Convert to Binary\nString → String\n```js\nexpect(ter2bin('1212')).toBe('110010');\n```\n### Convert to Quaternary\nString → String\n```js\nexpect(ter2qua('1212')).toBe('302');\n```\n### Convert to Quinary\nString → String\n```js\nexpect(ter2qui('1212')).toBe('200');\n```\n### Convert to Senary\nString → String\n```js\nexpect(ter2sen('1212')).toBe('122');\n```\n### Convert to Septenary\nString → String\n```js\nexpect(ter2sep('1212')).toBe('101');\n```\n### Convert to Octal\nString → String\n```js\nexpect(ter2oct('1212')).toBe('62');\n```\n### Convert to Nonary\nString → String\n```js\nexpect(ter2non('1212')).toBe('55');\n```\n### Convert to Decimal\nString → String\n```js\nexpect(ter2dec('1212')).toBe('50');\n```\n### Convert to Undenary\nString → String\n```js\nexpect(ter2und('1212')).toBe('46');\n```\n### Convert to Duodecimal\nString → String\n```js\nexpect(ter2duo('1212')).toBe('42');\n```\n### Convert to Hexadecimal\nString → String\n```js\nexpect(ter2hex('1212')).toBe('32');\n```\n### Convert to Vigesimal\nString → String\n```js\nexpect(ter2vig('1212')).toBe('2a');\n```\n## \u003ca name=\"Quaternary\"\u003eQuaternary\u003c/a\u003e: Base 4\n\n### Convert to Binary\nString → String\n```js\nexpect(qua2bin('302')).toBe('110010');\n```\n### Convert to Ternary\nString → String\n```js\nexpect(qua2ter('302')).toBe('1212');\n```\n### Convert to Quinary\nString → String\n```js\nexpect(qua2qui('302')).toBe('200');\n```\n### Convert to Senary\nString → String\n```js\nexpect(qua2sen('302')).toBe('122');\n```\n### Convert to Septenary\nString → String\n```js\nexpect(qua2sep('302')).toBe('101');\n```\n### Convert to Octal\nString → String\n```js\nexpect(qua2oct('302')).toBe('62');\n```\n### Convert to Nonary\nString → String\n```js\nexpect(qua2non('302')).toBe('55');\n```\n### Convert to Decimal\nString → String\n```js\nexpect(qua2dec('302')).toBe('50');\n```\n### Convert to Undenary\nString → String\n```js\nexpect(qua2und('302')).toBe('46');\n```\n### Convert to Duodecimal\nString → String\n```js\nexpect(qua2duo('302')).toBe('42');\n```\n### Convert to Hexadecimal\nString → String\n```js\nexpect(qua2hex('302')).toBe('32');\n```\n### Convert to Vigesimal\nString → String\n```js\nexpect(qua2vig('302')).toBe('2a');\n```\n## \u003ca name=\"Quinary\"\u003eQuinary\u003c/a\u003e: Base 5\n\n### Convert to Binary\nString → String\n```js\nexpect(qui2bin('200')).toBe('110010');\n```\n### Convert to Ternary\nString → String\n```js\nexpect(qui2ter('200')).toBe('1212');\n```\n### Convert to Quaternary\nString → String\n```js\nexpect(qui2qua('200')).toBe('302');\n```\n### Convert to Senary\nString → String\n```js\nexpect(qui2sen('200')).toBe('122');\n```\n### Convert to Septenary\nString → String\n```js\nexpect(qui2sep('200')).toBe('101');\n```\n### Convert to Octal\nString → String\n```js\nexpect(qui2oct('200')).toBe('62');\n```\n### Convert to Nonary\nString → String\n```js\nexpect(qui2non('200')).toBe('55');\n```\n### Convert to Decimal\nString → String\n```js\nexpect(qui2dec('200')).toBe('50');\n```\n### Convert to Undenary\nString → String\n```js\nexpect(qui2und('200')).toBe('46');\n```\n### Convert to Duodecimal\nString → String\n```js\nexpect(qui2duo('200')).toBe('42');\n```\n### Convert to Hexadecimal\nString → String\n```js\nexpect(qui2hex('200')).toBe('32');\n```\n### Convert to Vigesimal\nString → String\n```js\nexpect(qui2vig('200')).toBe('2a');\n```\n## \u003ca name=\"Senary\"\u003eSenary\u003c/a\u003e: Base 6\n\n### Convert to Binary\nString → String\n```js\nexpect(sen2bin('122')).toBe('110010');\n```\n### Convert to Ternary\nString → String\n```js\nexpect(sen2ter('122')).toBe('1212');\n```\n### Convert to Quaternary\nString → String\n```js\nexpect(sen2qua('122')).toBe('302');\n```\n### Convert to Quinary\nString → String\n```js\nexpect(sen2qui('122')).toBe('200');\n```\n### Convert to Septenary\nString → String\n```js\nexpect(sen2sep('122')).toBe('101');\n```\n### Convert to Octal\nString → String\n```js\nexpect(sen2oct('122')).toBe('62');\n```\n### Convert to Nonary\nString → String\n```js\nexpect(sen2non('122')).toBe('55');\n```\n### Convert to Decimal\nString → String\n```js\nexpect(sen2dec('122')).toBe('50');\n```\n### Convert to Undenary\nString → String\n```js\nexpect(sen2und('122')).toBe('46');\n```\n### Convert to Duodecimal\nString → String\n```js\nexpect(sen2duo('122')).toBe('42');\n```\n### Convert to Hexadecimal\nString → String\n```js\nexpect(sen2hex('122')).toBe('32');\n```\n### Convert to Vigesimal\nString → String\n```js\nexpect(sen2vig('122')).toBe('2a');\n```\n## \u003ca name=\"Septenary\"\u003eSeptenary\u003c/a\u003e: Base 7\n\n### Convert to Binary\nString → String\n```js\nexpect(sep2bin('101')).toBe('110010');\n```\n### Convert to Ternary\nString → String\n```js\nexpect(sep2ter('101')).toBe('1212');\n```\n### Convert to Quaternary\nString → String\n```js\nexpect(sep2qua('101')).toBe('302');\n```\n### Convert to Quinary\nString → String\n```js\nexpect(sep2qui('101')).toBe('200');\n```\n### Convert to Senary\nString → String\n```js\nexpect(sep2sen('101')).toBe('122');\n```\n### Convert to Octal\nString → String\n```js\nexpect(sep2oct('101')).toBe('62');\n```\n### Convert to Nonary\nString → String\n```js\nexpect(sep2non('101')).toBe('55');\n```\n### Convert to Decimal\nString → String\n```js\nexpect(sep2dec('101')).toBe('50');\n```\n### Convert to Undenary\nString → String\n```js\nexpect(sep2und('101')).toBe('46');\n```\n### Convert to Duodecimal\nString → String\n```js\nexpect(sep2duo('101')).toBe('42');\n```\n### Convert to Hexadecimal\nString → String\n```js\nexpect(sep2hex('101')).toBe('32');\n```\n### Convert to Vigesimal\nString → String\n```js\nexpect(sep2vig('101')).toBe('2a');\n```\n## \u003ca name=\"Octal\"\u003eOctal\u003c/a\u003e: Base 8\n\n### Convert to Binary\nString → String\n```js\nexpect(oct2bin('62')).toBe('110010');\n```\n### Convert to Ternary\nString → String\n```js\nexpect(oct2ter('62')).toBe('1212');\n```\n### Convert to Quaternary\nString → String\n```js\nexpect(oct2qua('62')).toBe('302');\n```\n### Convert to Quinary\nString → String\n```js\nexpect(oct2qui('62')).toBe('200');\n```\n### Convert to Senary\nString → String\n```js\nexpect(oct2sen('62')).toBe('122');\n```\n### Convert to Septenary\nString → String\n```js\nexpect(oct2sep('62')).toBe('101');\n```\n### Convert to Nonary\nString → String\n```js\nexpect(oct2non('62')).toBe('55');\n```\n### Convert to Decimal\nString → String\n```js\nexpect(oct2dec('62')).toBe('50');\n```\n### Convert to Undenary\nString → String\n```js\nexpect(oct2und('62')).toBe('46');\n```\n### Convert to Duodecimal\nString → String\n```js\nexpect(oct2duo('62')).toBe('42');\n```\n### Convert to Hexadecimal\nString → String\n```js\nexpect(oct2hex('62')).toBe('32');\n```\n### Convert to Vigesimal\nString → String\n```js\nexpect(oct2vig('62')).toBe('2a');\n```\n## \u003ca name=\"Nonary\"\u003eNonary\u003c/a\u003e: Base 9\n\n### Convert to Binary\nString → String\n```js\nexpect(non2bin('55')).toBe('110010');\n```\n### Convert to Ternary\nString → String\n```js\nexpect(non2ter('55')).toBe('1212');\n```\n### Convert to Quaternary\nString → String\n```js\nexpect(non2qua('55')).toBe('302');\n```\n### Convert to Quinary\nString → String\n```js\nexpect(non2qui('55')).toBe('200');\n```\n### Convert to Senary\nString → String\n```js\nexpect(non2sen('55')).toBe('122');\n```\n### Convert to Septenary\nString → String\n```js\nexpect(non2sep('55')).toBe('101');\n```\n### Convert to Octal\nString → String\n```js\nexpect(non2oct('55')).toBe('62');\n```\n### Convert to Decimal\nString → String\n```js\nexpect(non2dec('55')).toBe('50');\n```\n### Convert to Undenary\nString → String\n```js\nexpect(non2und('55')).toBe('46');\n```\n### Convert to Duodecimal\nString → String\n```js\nexpect(non2duo('55')).toBe('42');\n```\n### Convert to Hexadecimal\nString → String\n```js\nexpect(non2hex('55')).toBe('32');\n```\n### Convert to Vigesimal\nString → String\n```js\nexpect(non2vig('55')).toBe('2a');\n```\n## \u003ca name=\"Decimal\"\u003eDecimal\u003c/a\u003e: Base 10\n\n### Convert to Binary\nString → String\n```js\nexpect(dec2bin('50')).toBe('110010');\n```\n### Convert to Ternary\nString → String\n```js\nexpect(dec2ter('50')).toBe('1212');\n```\n### Convert to Quaternary\nString → String\n```js\nexpect(dec2qua('50')).toBe('302');\n```\n### Convert to Quinary\nString → String\n```js\nexpect(dec2qui('50')).toBe('200');\n```\n### Convert to Senary\nString → String\n```js\nexpect(dec2sen('50')).toBe('122');\n```\n### Convert to Septenary\nString → String\n```js\nexpect(dec2sep('50')).toBe('101');\n```\n### Convert to Octal\nString → String\n```js\nexpect(dec2oct('50')).toBe('62');\n```\n### Convert to Nonary\nString → String\n```js\nexpect(dec2non('50')).toBe('55');\n```\n### Convert to Undenary\nString → String\n```js\nexpect(dec2und('50')).toBe('46');\n```\n### Convert to Duodecimal\nString → String\n```js\nexpect(dec2duo('50')).toBe('42');\n```\n### Convert to Hexadecimal\nString → String\n```js\nexpect(dec2hex('50')).toBe('32');\n```\n### Convert to Vigesimal\nString → String\n```js\nexpect(dec2vig('50')).toBe('2a');\n```\n## \u003ca name=\"Undenary\"\u003eUndenary\u003c/a\u003e: Base 11\n\n### Convert to Binary\nString → String\n```js\nexpect(und2bin('46')).toBe('110010');\n```\n### Convert to Ternary\nString → String\n```js\nexpect(und2ter('46')).toBe('1212');\n```\n### Convert to Quaternary\nString → String\n```js\nexpect(und2qua('46')).toBe('302');\n```\n### Convert to Quinary\nString → String\n```js\nexpect(und2qui('46')).toBe('200');\n```\n### Convert to Senary\nString → String\n```js\nexpect(und2sen('46')).toBe('122');\n```\n### Convert to Septenary\nString → String\n```js\nexpect(und2sep('46')).toBe('101');\n```\n### Convert to Octal\nString → String\n```js\nexpect(und2oct('46')).toBe('62');\n```\n### Convert to Nonary\nString → String\n```js\nexpect(und2non('46')).toBe('55');\n```\n### Convert to Decimal\nString → String\n```js\nexpect(und2dec('46')).toBe('50');\n```\n### Convert to Duodecimal\nString → String\n```js\nexpect(und2duo('46')).toBe('42');\n```\n### Convert to Hexadecimal\nString → String\n```js\nexpect(und2hex('46')).toBe('32');\n```\n### Convert to Vigesimal\nString → String\n```js\nexpect(und2vig('46')).toBe('2a');\n```\n## \u003ca name=\"Duodecimal\"\u003eDuodecimal\u003c/a\u003e: Base 12\n\n### Convert to Binary\nString → String\n```js\nexpect(duo2bin('42')).toBe('110010');\n```\n### Convert to Ternary\nString → String\n```js\nexpect(duo2ter('42')).toBe('1212');\n```\n### Convert to Quaternary\nString → String\n```js\nexpect(duo2qua('42')).toBe('302');\n```\n### Convert to Quinary\nString → String\n```js\nexpect(duo2qui('42')).toBe('200');\n```\n### Convert to Senary\nString → String\n```js\nexpect(duo2sen('42')).toBe('122');\n```\n### Convert to Septenary\nString → String\n```js\nexpect(duo2sep('42')).toBe('101');\n```\n### Convert to Octal\nString → String\n```js\nexpect(duo2oct('42')).toBe('62');\n```\n### Convert to Nonary\nString → String\n```js\nexpect(duo2non('42')).toBe('55');\n```\n### Convert to Decimal\nString → String\n```js\nexpect(duo2dec('42')).toBe('50');\n```\n### Convert to Undenary\nString → String\n```js\nexpect(duo2und('42')).toBe('46');\n```\n### Convert to Hexadecimal\nString → String\n```js\nexpect(duo2hex('42')).toBe('32');\n```\n### Convert to Vigesimal\nString → String\n```js\nexpect(duo2vig('42')).toBe('2a');\n```\n## \u003ca name=\"Hexadecimal\"\u003eHexadecimal\u003c/a\u003e: Base 16\n\n### Convert to Binary\nString → String\n```js\nexpect(hex2bin('32')).toBe('110010');\n```\n### Convert to Ternary\nString → String\n```js\nexpect(hex2ter('32')).toBe('1212');\n```\n### Convert to Quaternary\nString → String\n```js\nexpect(hex2qua('32')).toBe('302');\n```\n### Convert to Quinary\nString → String\n```js\nexpect(hex2qui('32')).toBe('200');\n```\n### Convert to Senary\nString → String\n```js\nexpect(hex2sen('32')).toBe('122');\n```\n### Convert to Septenary\nString → String\n```js\nexpect(hex2sep('32')).toBe('101');\n```\n### Convert to Octal\nString → String\n```js\nexpect(hex2oct('32')).toBe('62');\n```\n### Convert to Nonary\nString → String\n```js\nexpect(hex2non('32')).toBe('55');\n```\n### Convert to Decimal\nString → String\n```js\nexpect(hex2dec('32')).toBe('50');\n```\n### Convert to Undenary\nString → String\n```js\nexpect(hex2und('32')).toBe('46');\n```\n### Convert to Duodecimal\nString → String\n```js\nexpect(hex2duo('32')).toBe('42');\n```\n### Convert to Vigesimal\nString → String\n```js\nexpect(hex2vig('32')).toBe('2a');\n```\n## \u003ca name=\"Vigesimal\"\u003eVigesimal\u003c/a\u003e: Base 20\n\n### Convert to Binary\nString → String\n```js\nexpect(vig2bin('2a')).toBe('110010');\n```\n### Convert to Ternary\nString → String\n```js\nexpect(vig2ter('2a')).toBe('1212');\n```\n### Convert to Quaternary\nString → String\n```js\nexpect(vig2qua('2a')).toBe('302');\n```\n### Convert to Quinary\nString → String\n```js\nexpect(vig2qui('2a')).toBe('200');\n```\n### Convert to Senary\nString → String\n```js\nexpect(vig2sen('2a')).toBe('122');\n```\n### Convert to Septenary\nString → String\n```js\nexpect(vig2sep('2a')).toBe('101');\n```\n### Convert to Octal\nString → String\n```js\nexpect(vig2oct('2a')).toBe('62');\n```\n### Convert to Nonary\nString → String\n```js\nexpect(vig2non('2a')).toBe('55');\n```\n### Convert to Decimal\nString → String\n```js\nexpect(vig2dec('2a')).toBe('50');\n```\n### Convert to Undenary\nString → String\n```js\nexpect(vig2und('2a')).toBe('46');\n```\n### Convert to Duodecimal\nString → String\n```js\nexpect(vig2duo('2a')).toBe('42');\n```\n### Convert to Hexadecimal\nString → String\n```js\nexpect(vig2hex('2a')).toBe('32');\n```\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fseancannon%2Faybabtu","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fseancannon%2Faybabtu","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fseancannon%2Faybabtu/lists"}