{"id":20045450,"url":"https://github.com/z0w0/jejune","last_synced_at":"2025-05-05T09:30:43.157Z","repository":{"id":6299628,"uuid":"7534272","full_name":"z0w0/jejune","owner":"z0w0","description":"Generating stereotypical usernames has never been easier","archived":false,"fork":false,"pushed_at":"2013-01-10T04:52:48.000Z","size":112,"stargazers_count":8,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-04-25T11:06:07.245Z","etag":null,"topics":[],"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/z0w0.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":"2013-01-10T04:12:57.000Z","updated_at":"2020-07-29T01:38:46.000Z","dependencies_parsed_at":"2022-08-29T18:51:30.317Z","dependency_job_id":null,"html_url":"https://github.com/z0w0/jejune","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/z0w0%2Fjejune","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/z0w0%2Fjejune/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/z0w0%2Fjejune/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/z0w0%2Fjejune/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/z0w0","download_url":"https://codeload.github.com/z0w0/jejune/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252471305,"owners_count":21753149,"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":[],"created_at":"2024-11-13T11:07:20.528Z","updated_at":"2025-05-05T09:30:42.880Z","avatar_url":"https://github.com/z0w0.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Jejune\n\nJejune is a tool that generates stereotypical usernames that can be used for\nprototypes or boilerplate. Or just for fun.\n\nIt works using Markov chains to construct usernames from random words that\n(usually) make sense in an order (e.g., `our` is used before `lord`, so it will\ntry and generate `ourlord`). It also comes with additional sugar to make the\nusernames more realistic, such as mispelling words, wings (`xXx\u003cname\u003exXx`) and\nnumbers before and after the username (biased towards birth dates).\n\n## Installation\n\n`npm install -g jejune`\n\n## Usage\n\nThe `jejune` executable is pretty straight-forward:\n\n```bash\n$ jejune --help\n\n  Usage: jejune [options] [generators..]\n\n  Options:\n\n    -h, --help     output usage information\n    -V, --version  output the version number\n\n  Examples:\n\n    $ jejune christian\n    $ jejune\n\n$ for i in {1..5}; do bin/jejune christian; done\nLover_Of_our_Father94\nThroughchurchLover981\nFotherOfhumanity132\nxOxSinnedxOx\nHeaven881\n```\n\n## Configuration\n\nJejune supports configuring general settings in a JSON file. It will be\nloaded from `/etc/jejune/conf.json` or `~/.jejune/conf.json` (`%USERPROFILE\\jejune\\conf.json` on Windows).\n\nAn example configuration file with default settings:\n\n```json\n{\n    \"numbers\": true,\n    \"wings\": true,\n    \"literacy\": 0.65\n}\n```\n\nThis enables numbers after and before the username (usually birth dates), wings (prefixes and suffixes)\nand the literacy level is `0.65`, so 65% of the userbase will not misspell words.\n\nJejune has a modular generator system that is configured by JSON, allowing you\nto declare your own method of generating usernames, usually related to a certain [sub-]culture.\n\nThe default generators are stored in the `generators` directory in Jejune's source directory.\nSystem-wide ones are stored in `/etc/jejune/generators` (none on Windows) and user-wide ones\nare in `~/.jejune/generators` (`%USERPROFILE%\\jejune\\generators` on Windows).\n\nThe simplest of generators `petlover` which could be placed in `/etc/jejune/generators/petlover.json`:\n\n```json\n{\n    \"parts\": {\n        \"cats\": [\"rule\"],\n        \"dogs\": [\"rule\"]\n        \"rule\": []\n    },\n    \"wings\": [\n        [\"xX\", \"Xx\"]\n    ],\n    \"numbers\": {\n        \"births\": [1980, 2005],\n        \"ranges\": [[0, 125]],\n        \"voodoo\": [1, 3, 10]\n    }\n}\n```\n\nThe `parts` section is where the magic is -- a random starting word is chosen from all the words\ndefined here. Each word has its own array of words that can logically come after it,\ne.g. the example shows that the word rule can come after both cats and dogs. This would generate\n`catsrule` or `dogsrule`. The `wings` section defines the prefix and suffix pairs that may be selected.\nThe `numbers` section will usually generate a number in the range of the `births` values,\nso it would generate a year between 1980 and 2005 and then get the last 2 characters in the year, e.g.\n`1994` would be `94`. There's also a chance that numbers will be randomly chosen from the `ranges` value though.\nIf the resulting number is inside of the `voodoo` array, a new number will be generated.\n\nTake a look at `christian.json` in the `generators` directory for a more solid example of a generator.\n\n## API\n..\n\n\n### jejune([generators..])\n\nIf `generators` is not provided, generate a username using a random generator in any of the configuration\ndirectories. If `generators` is an array, generate an array of usernames using the generators in the array\nin their exact order. Otherwise, assume generators is the name of a generator and generate a username\nusing that.\n\n#### Example\n\n```js\nvar jejune = require(\"jejune\");\nvar christian = jejune(\"christian\"); // generates just a christian username\nvar some = jejune([\"christian\", \"teenager\", \"gamer\", \"mlp\"]); // generates an array of usernames in that order\n\nconsole.log(jejune()); // username from random generator\n```\n\nN.B. Not all generators listed in the example are implemented yet.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fz0w0%2Fjejune","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fz0w0%2Fjejune","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fz0w0%2Fjejune/lists"}