mirror of
https://github.com/cupcakearmy/canihazusername.git
synced 2024-11-16 10:00:56 +01:00
version 2
This commit is contained in:
parent
9cb4060617
commit
133447baa7
14
.gitignore
vendored
14
.gitignore
vendored
@ -1,6 +1,14 @@
|
|||||||
node_modules/
|
# Editors
|
||||||
package-lock.json
|
.vscode
|
||||||
.idea
|
.idea
|
||||||
|
|
||||||
test/bundle.js
|
# Node
|
||||||
|
node_modules/
|
||||||
|
package-lock.json
|
||||||
|
yarn.lock
|
||||||
|
|
||||||
|
# Build
|
||||||
lib
|
lib
|
||||||
|
dist
|
||||||
|
.cache
|
||||||
|
src/*.js
|
@ -1,3 +1,2 @@
|
|||||||
*
|
*
|
||||||
!lib/index.js
|
!lib/*
|
||||||
!lib/canihazusername.d.ts
|
|
1
generate/wordlist
Submodule
1
generate/wordlist
Submodule
@ -0,0 +1 @@
|
|||||||
|
Subproject commit 7cec9b716babec59b68075abf27fdfae90f51871
|
41
generate/wordlist.js
Normal file
41
generate/wordlist.js
Normal file
@ -0,0 +1,41 @@
|
|||||||
|
/* jshint esversion: 8, asi: true */
|
||||||
|
|
||||||
|
const fs = require('fs')
|
||||||
|
const path = require('path')
|
||||||
|
const util = require('util')
|
||||||
|
|
||||||
|
const endsWithTxt = /^.*\.txt$/
|
||||||
|
|
||||||
|
function walkDir(dir, callback) {
|
||||||
|
fs.readdirSync(dir).forEach(f => {
|
||||||
|
const dirPath = path.join(dir, f)
|
||||||
|
const isDirectory = fs.statSync(dirPath).isDirectory()
|
||||||
|
isDirectory
|
||||||
|
? walkDir(dirPath, callback)
|
||||||
|
: callback(path.join(dir, f))
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
function convertAndSaveWordlistAsJSON() {
|
||||||
|
const wordlist = {}
|
||||||
|
|
||||||
|
walkDir('./generate/wordlist', (filename) => {
|
||||||
|
// Not a txt file
|
||||||
|
if (!endsWithTxt.test(filename)) return
|
||||||
|
|
||||||
|
// Read the file
|
||||||
|
const file = fs.readFileSync(filename, 'utf-8')
|
||||||
|
|
||||||
|
// Each line of the file to an array removing the empty lines
|
||||||
|
const lines = file.split('\n').filter(entry => entry !== '').map(entry => entry.trim())
|
||||||
|
|
||||||
|
// Remove duplicates
|
||||||
|
const set = new Set(lines)
|
||||||
|
const name = path.basename(filename, 'utf-8').slice(0, -4)
|
||||||
|
wordlist[name] = [...set]
|
||||||
|
})
|
||||||
|
|
||||||
|
fs.writeFileSync('./src/wordlist.json', JSON.stringify(wordlist))
|
||||||
|
}
|
||||||
|
|
||||||
|
convertAndSaveWordlistAsJSON()
|
22
package.json
22
package.json
@ -1,21 +1,25 @@
|
|||||||
{
|
{
|
||||||
"name": "canihazusername",
|
"name": "canihazusername",
|
||||||
"version": "1.0.3",
|
"version": "1.0.3",
|
||||||
"description": "Username Generator",
|
"description": "username generator. typed, simple and customizable",
|
||||||
"main": "./lib/index.js",
|
"main": "./lib/index.js",
|
||||||
"types": "./lib/canihazusername.d.ts",
|
"types": "./lib/index.d.ts",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
|
"generate": "git -C ./generate/wordlist pull && node ./generate/wordlist.js",
|
||||||
"dev": "webpack -d -w",
|
"dev": "webpack -d -w",
|
||||||
"build": "webpack -p",
|
"build": "webpack -p",
|
||||||
"test": "mocha",
|
"test": "mocha",
|
||||||
"prepublish": "npm run build && npm run test"
|
"prepublishOnly": "npm run build && npm run test"
|
||||||
},
|
},
|
||||||
"repository": {
|
"repository": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "git+https://github.com/CupCakeArmy/canihazusername.git"
|
"url": "git+https://github.com/CupCakeArmy/canihazusername.git"
|
||||||
},
|
},
|
||||||
"keywords": [
|
"keywords": [
|
||||||
"UI"
|
"username",
|
||||||
|
"generator",
|
||||||
|
"types",
|
||||||
|
"customizable"
|
||||||
],
|
],
|
||||||
"author": "Niccolo Borgioli",
|
"author": "Niccolo Borgioli",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
@ -25,12 +29,8 @@
|
|||||||
"homepage": "https://github.com/CupCakeArmy/canihazusername#readme",
|
"homepage": "https://github.com/CupCakeArmy/canihazusername#readme",
|
||||||
"dependencies": {},
|
"dependencies": {},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"awesome-typescript-loader": "^5.2.1",
|
"parcel-bundler": "^1.12.4",
|
||||||
"dts-bundle": "^0.7.3",
|
"ts-node-dev": "^1.0.0-pre.44",
|
||||||
"dts-bundle-webpack": "^1.0.2",
|
"typescript": "3.7"
|
||||||
"mocha": "^5.2.0",
|
|
||||||
"typescript": "^3.2.4",
|
|
||||||
"webpack": "^4.29.0",
|
|
||||||
"webpack-cli": "^3.2.1"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
34
src/index.ts
34
src/index.ts
@ -1,12 +1,32 @@
|
|||||||
const animals: string[] = ['Aardvark', 'Abyssinian', 'Affenpinscher', 'Akbash', 'Akita', 'Albatross', 'Alligator', 'Alpaca', 'Angelfish', 'Ant', 'Anteater', 'Antelope', 'Ape', 'Armadillo', 'Ass', 'Avocet', 'Axolotl', 'Baboon', 'Badger', 'Balinese', 'Bandicoot', 'Barb', 'Barnacle', 'Barracuda', 'Bat', 'Beagle', 'Bear', 'Beaver', 'Bee', 'Beetle', 'Binturong', 'Bird', 'Birman', 'Bison', 'Bloodhound', 'Boar', 'Bobcat', 'Bombay', 'Bongo', 'Bonobo', 'Booby', 'Budgerigar', 'Buffalo', 'Bulldog', 'Bullfrog', 'Burmese', 'Butterfly', 'Caiman', 'Camel', 'Capybara', 'Caracal', 'Caribou', 'Cassowary', 'Cat', 'Caterpillar', 'Catfish', 'Cattle', 'Centipede', 'Chameleon', 'Chamois', 'Cheetah', 'Chicken', 'Chihuahua', 'Chimpanzee', 'Chinchilla', 'Chinook', 'Chipmunk', 'Chough', 'Cichlid', 'Clam', 'Coati', 'Cobra', 'Cockroach', 'Cod', 'Collie', 'Coral', 'Cormorant', 'Cougar', 'Cow', 'Coyote', 'Crab', 'Crane', 'Crocodile', 'Crow', 'Curlew', 'Cuscus', 'Cuttlefish', 'Dachshund', 'Dalmatian', 'Deer', 'Dhole', 'Dingo', 'Dinosaur', 'Discus', 'Dodo', 'Dog', 'Dogfish', 'Dolphin', 'Donkey', 'Dormouse', 'Dotterel', 'Dove', 'Dragonfly', 'Drever', 'Duck', 'Dugong', 'Dunker', 'Dunlin', 'Eagle', 'Earwig', 'Echidna', 'Eel', 'Eland', 'Elephant', 'Elephant seal', 'Elk', 'Emu', 'Falcon', 'Ferret', 'Finch', 'Fish', 'Flamingo', 'Flounder', 'Fly', 'Fossa', 'Fox', 'Frigatebird', 'Frog', 'Galago', 'Gar', 'Gaur', 'Gazelle', 'Gecko', 'Gerbil', 'Gharial', 'Giant Panda', 'Gibbon', 'Giraffe', 'Gnat', 'Gnu', 'Goat', 'Goldfinch', 'Goldfish', 'Goose', 'Gopher', 'Gorilla', 'Goshawk', 'Grasshopper', 'Greyhound', 'Grouse', 'Guanaco', 'Guinea fowl', 'Guinea pig', 'Gull', 'Guppy', 'Hamster', 'Hare', 'Harrier', 'Havanese', 'Hawk', 'Hedgehog', 'Heron', 'Herring', 'Himalayan', 'Hippopotamus', 'Hornet', 'Horse', 'Human', 'Hummingbird', 'Hyena', 'Ibis', 'Iguana', 'Impala', 'Indri', 'Insect', 'Jackal', 'Jaguar', 'Javanese', 'Jay', 'Jay, Blue', 'Jellyfish', 'Kakapo', 'Kangaroo', 'Kingfisher', 'Kiwi', 'Koala', 'Komodo dragon', 'Kouprey', 'Kudu', 'Labradoodle', 'Ladybird', 'Lapwing', 'Lark', 'Lemming', 'Lemur', 'Leopard', 'Liger', 'Lion', 'Lionfish', 'Lizard', 'Llama', 'Lobster', 'Locust', 'Loris', 'Louse', 'Lynx', 'Lyrebird', 'Macaw', 'Magpie', 'Mallard', 'Maltese', 'Manatee', 'Mandrill', 'Markhor', 'Marten', 'Mastiff', 'Mayfly', 'Meerkat', 'Millipede', 'Mink', 'Mole', 'Molly', 'Mongoose', 'Mongrel', 'Monkey', 'Moorhen', 'Moose', 'Mosquito', 'Moth', 'Mouse', 'Mule', 'Narwhal', 'Neanderthal', 'Newfoundland', 'Newt', 'Nightingale', 'Numbat', 'Ocelot', 'Octopus', 'Okapi', 'Olm', 'Opossum', 'Orang-utan', 'Oryx', 'Ostrich', 'Otter', 'Owl', 'Ox', 'Oyster', 'Pademelon', 'Panther', 'Parrot', 'Partridge', 'Peacock', 'Peafowl', 'Pekingese', 'Pelican', 'Penguin', 'Persian', 'Pheasant', 'Pig', 'Pigeon', 'Pika', 'Pike', 'Piranha', 'Platypus', 'Pointer', 'Pony', 'Poodle', 'Porcupine', 'Porpoise', 'Possum', 'Prairie Dog', 'Prawn', 'Puffin', 'Pug', 'Puma', 'Quail', 'Quelea', 'Quetzal', 'Quokka', 'Quoll', 'Rabbit', 'Raccoon', 'Ragdoll', 'Rail', 'Ram', 'Rat', 'Rattlesnake', 'Raven', 'Red deer', 'Red panda', 'Reindeer', 'Rhinoceros', 'Robin', 'Rook', 'Rottweiler', 'Ruff', 'Salamander', 'Salmon', 'Sand Dollar', 'Sandpiper', 'Saola', 'Sardine', 'Scorpion', 'Sea lion', 'Sea Urchin', 'Seahorse', 'Seal', 'Serval', 'Shark', 'Sheep', 'Shrew', 'Shrimp', 'Siamese', 'Siberian', 'Skunk', 'Sloth', 'Snail', 'Snake', 'Snowshoe', 'Somali', 'Sparrow', 'Spider', 'Sponge', 'Squid', 'Squirrel', 'Starfish', 'Starling', 'Stingray', 'Stinkbug', 'Stoat', 'Stork', 'Swallow', 'Swan', 'Tang', 'Tapir', 'Tarsier', 'Termite', 'Tetra', 'Tiffany', 'Tiger', 'Toad', 'Tortoise', 'Toucan', 'Tropicbird', 'Trout', 'Tuatara', 'Turkey', 'Turtle', 'Uakari', 'Uguisu', 'Umbrellabird', 'Vicuña', 'Viper', 'Vulture', 'Wallaby', 'Walrus', 'Warthog', 'Wasp', 'Water buffalo', 'Weasel', 'Whale', 'Whippet', 'Wildebeest', 'Wolf', 'Wolverine', 'Wombat', 'Woodcock', 'Woodlouse', 'Woodpecker', 'Worm', 'Wrasse', 'Wren', 'Yak', 'Zebra', 'Zebu', 'Zonkey', 'Zorse']
|
import wordlist from './wordlist.json'
|
||||||
// const colors = ['amber', 'ash', 'asphalt', 'auburn', 'avocado', 'aquamarine', 'azure', 'beige', 'bisque', 'black', 'blue', 'bone', 'bordeaux', 'brass', 'bronze', 'brown', 'burgundy', 'camel', 'caramel', 'canary', 'celeste', 'cerulean', 'champagne', 'charcoal', 'chartreuse', 'chestnut', 'chocolate', 'citron', 'claret', 'coal', 'cobalt', 'coffee', 'coral', 'corn', 'cream', 'crimson', 'cyan', 'denim', 'desert', 'ebony', 'ecru', 'emerald', 'feldspar', 'fuchsia', 'gold', 'gray', 'green', 'heather', 'indigo', 'ivory', 'jet', 'khaki', 'lime', 'magenta', 'maroon', 'mint', 'navy', 'olive', 'orange', 'pink', 'plum', 'purple', 'red', 'rust', 'salmon', 'sienna', 'silver', 'snow', 'steel', 'tan', 'teal', 'tomato', 'violet', 'white', 'yellow']
|
|
||||||
const characters: string[] = ['accepting', 'adventurous', 'affable', 'ambitious', 'amiable', 'amicable', 'annoying', 'bold', 'brave', 'bright', 'brutal', 'brute', 'callous', 'calm', 'careful', 'cautious', 'charitable', 'cheerful', 'clever', 'courtly', 'creative', 'cruel', 'curious', 'daring', 'devout', 'eager', 'elegant', 'energetic', 'excited', 'ferocious', 'forgiving', 'free', 'friendly', 'funny', 'generous', 'genteel', 'gentle', 'graceful', 'grim', 'grouchy', 'happy', 'heartless', 'helpful', 'honest', 'humane', 'humble', 'impulsive', 'independent', 'indulgent', 'intense', 'inventive', 'kind', 'lazy', 'lenient', 'loyal', 'meek', 'merciless', 'merry', 'messy', 'mild', 'neat', 'nervous', 'obliging', 'obnoxious', 'odious', 'patient', 'plain', 'pleasant', 'polite', 'proper', 'proud', 'quick', 'quiet', 'refined', 'relaxed', 'religious', 'respectful', 'rude', 'savage', 'selfish', 'sensitive', 'serious', 'shrewd', 'silly', 'simple', 'smart', 'soft', 'sophisticated', 'sophisticated', 'stern', 'strong', 'stubborn', 'tender', 'tense', 'timid', 'tough', 'trusting', 'urbane', 'vain', 'vicious', 'violent', 'warm', 'wise', 'witty']
|
|
||||||
|
|
||||||
const randomElementFromArray = <T>(arr: T[]): T => arr[Math.floor(Math.random() * arr.length)]
|
const randomElementFromArray = <T>(arr: T[]): T => arr[Math.floor(Math.random() * arr.length)]
|
||||||
const safeString = (s: string): string => s.toLowerCase().replace(/ /, '')
|
|
||||||
|
|
||||||
const canIHazUsername = (delimiter: string = '-'): string => {
|
export const showAvailableLists = () => {
|
||||||
return safeString(randomElementFromArray(characters) + delimiter + randomElementFromArray(animals))
|
const keys = Object.keys(wordlist)
|
||||||
|
console.log(keys)
|
||||||
|
return keys
|
||||||
}
|
}
|
||||||
|
|
||||||
export default canIHazUsername
|
export const generate = (format: string = '{character}_{english}', maxReformats = 16): string => {
|
||||||
|
for (let i = 0; i < maxReformats; i++) {
|
||||||
|
const match = /\{.*?\}/.exec(format)
|
||||||
|
if (match === null) break
|
||||||
|
|
||||||
|
const keys = match[0]
|
||||||
|
.slice(1, -1)
|
||||||
|
.split('|')
|
||||||
|
.map(key => key.trim())
|
||||||
|
.filter(key => key !== '') as [keyof typeof wordlist]
|
||||||
|
const lists = keys.map(key => Array.isArray(wordlist[key]) ? wordlist[key] : [])
|
||||||
|
const flatteded = lists.reduce((acc, val) => acc.concat(val), []);
|
||||||
|
const value: string = flatteded.length > 0
|
||||||
|
? randomElementFromArray(flatteded)
|
||||||
|
: ''
|
||||||
|
format = format.replace(match[0], value)
|
||||||
|
}
|
||||||
|
|
||||||
|
return format
|
||||||
|
}
|
||||||
|
|
||||||
|
export default generate
|
@ -1,34 +0,0 @@
|
|||||||
const webpack = require('webpack')
|
|
||||||
const path = require('path')
|
|
||||||
const DtsBundleWebpack = require('dts-bundle-webpack')
|
|
||||||
|
|
||||||
module.exports = {
|
|
||||||
context: `${__dirname}`,
|
|
||||||
target: 'node',
|
|
||||||
entry: [
|
|
||||||
`./index.ts`,
|
|
||||||
],
|
|
||||||
output: {
|
|
||||||
path: `${__dirname}/../lib`,
|
|
||||||
filename: 'index.js',
|
|
||||||
libraryTarget: 'umd',
|
|
||||||
},
|
|
||||||
resolve: {
|
|
||||||
extensions: ['.js', '.jsx', '.ts', '.tsx'],
|
|
||||||
},
|
|
||||||
optimization: {
|
|
||||||
minimize: true,
|
|
||||||
},
|
|
||||||
module: {
|
|
||||||
rules: [{
|
|
||||||
test: /\.tsx?$/,
|
|
||||||
loader: 'awesome-typescript-loader'
|
|
||||||
}, ],
|
|
||||||
},
|
|
||||||
plugins: [
|
|
||||||
new DtsBundleWebpack({
|
|
||||||
name: 'canihazusername',
|
|
||||||
main: `./lib/index.d.ts`
|
|
||||||
})
|
|
||||||
],
|
|
||||||
}
|
|
1
src/wordlist.json
Normal file
1
src/wordlist.json
Normal file
File diff suppressed because one or more lines are too long
@ -1,8 +0,0 @@
|
|||||||
const assert = require('assert')
|
|
||||||
const cihu = require('../lib/index').default
|
|
||||||
|
|
||||||
describe('Array', () => {
|
|
||||||
it('Should return a string', () => {
|
|
||||||
assert.equal(typeof cihu(), 'string')
|
|
||||||
})
|
|
||||||
})
|
|
@ -1,21 +1,30 @@
|
|||||||
{
|
{
|
||||||
"compilerOptions": {
|
"compilerOptions": {
|
||||||
"outDir": "./lib",
|
|
||||||
"target": "es6",
|
"target": "es6",
|
||||||
"module": "commonjs",
|
"module": "commonjs",
|
||||||
|
"declaration": true,
|
||||||
|
"declarationMap": false,
|
||||||
|
"sourceMap": false,
|
||||||
|
"outDir": "./lib",
|
||||||
|
"rootDir": "./src",
|
||||||
|
"removeComments": true,
|
||||||
|
"strict": true,
|
||||||
"noImplicitAny": true,
|
"noImplicitAny": true,
|
||||||
"strictNullChecks": true,
|
"strictNullChecks": true,
|
||||||
"removeComments": true,
|
"strictFunctionTypes": true,
|
||||||
"declaration": true,
|
"strictBindCallApply": true,
|
||||||
"sourceMap": true,
|
"strictPropertyInitialization": true,
|
||||||
"noEmit": true,
|
"noImplicitThis": true,
|
||||||
"jsx": "react"
|
"alwaysStrict": true,
|
||||||
|
// "noUnusedLocals": true,
|
||||||
|
// "noUnusedParameters": true,
|
||||||
|
"noImplicitReturns": true,
|
||||||
|
"noFallthroughCasesInSwitch": true,
|
||||||
|
"esModuleInterop": true,
|
||||||
|
"resolveJsonModule": true,
|
||||||
|
"forceConsistentCasingInFileNames": true
|
||||||
},
|
},
|
||||||
"include": [
|
"include": [
|
||||||
"./src/**/*.tsx",
|
"./src"
|
||||||
"./src/**/*.ts"
|
|
||||||
],
|
|
||||||
"exclude": [
|
|
||||||
"node_modules"
|
|
||||||
]
|
]
|
||||||
}
|
}
|
@ -1,17 +0,0 @@
|
|||||||
const common = {
|
|
||||||
stats: {
|
|
||||||
assets: true,
|
|
||||||
assetsSort: 'size',
|
|
||||||
all: false,
|
|
||||||
errors: true,
|
|
||||||
colors: true,
|
|
||||||
performance: true,
|
|
||||||
timings: true,
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
||||||
const src = require('./src/webpack.config.js')
|
|
||||||
|
|
||||||
module.exports = [
|
|
||||||
Object.assign({}, common, src),
|
|
||||||
]
|
|
8
website/index.html
Normal file
8
website/index.html
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
<script src="./main.ts"></script>
|
||||||
|
</body>
|
||||||
|
|
||||||
|
</html>
|
3
website/main.ts
Normal file
3
website/main.ts
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
import cihu from '../'
|
||||||
|
|
||||||
|
console.log(cihu())
|
Loading…
Reference in New Issue
Block a user