├── .editorconfig ├── .gitconfig ├── .gitignore ├── .glitch-assets ├── .travis.yml ├── CHANGELOG.md ├── LICENSE ├── README.md ├── package-lock.json ├── package.json ├── public ├── client.js ├── css │ ├── uikit-rtl.css │ ├── uikit-rtl.min.css │ ├── uikit.css │ └── uikit.min.css ├── js │ ├── uikit-icons.js │ ├── uikit-icons.min.js │ ├── uikit.js │ └── uikit.min.js └── style.css ├── server.js ├── services ├── coolifyService.js ├── coolifyService.spec.js ├── uncoolifyService.js └── uncoolifyService.spec.js ├── shrinkwrap.yaml └── views └── index.html /.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | end_of_line = lf 5 | insert_final_newline = true 6 | 7 | [*.js] 8 | indent_style = tab 9 | tab_width = 2 10 | trim_trailing_whitespace = true 11 | 12 | [*.html] 13 | indent_style = space 14 | indent_size = 4 15 | trim_trailing_whitespace = true 16 | -------------------------------------------------------------------------------- /.gitconfig: -------------------------------------------------------------------------------- 1 | [user] 2 | email = mohitkyadav@outlook.com 3 | name = Mohit 4 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | node_modules/ 3 | /dist/ 4 | npm-debug.log* 5 | yarn-debug.log* 6 | yarn-error.log* 7 | /test/unit/coverage/ 8 | /test/e2e/reports/ 9 | selenium-debug.log 10 | 11 | # Editor directories and files 12 | .idea 13 | .vscode 14 | *.suo 15 | *.ntvs* 16 | *.njsproj 17 | *.sln 18 | -------------------------------------------------------------------------------- /.glitch-assets: -------------------------------------------------------------------------------- 1 | {"name":"drag-in-files.svg","date":"2016-10-22T16:17:49.954Z","url":"https://cdn.hyperdev.com/drag-in-files.svg","type":"image/svg","size":7646,"imageWidth":276,"imageHeight":276,"thumbnail":"https://cdn.hyperdev.com/drag-in-files.svg","thumbnailWidth":276,"thumbnailHeight":276,"dominantColor":"rgb(102, 153, 205)","uuid":"adSBq97hhhpFNUna"} 2 | {"name":"click-me.svg","date":"2016-10-23T16:17:49.954Z","url":"https://cdn.hyperdev.com/click-me.svg","type":"image/svg","size":7116,"imageWidth":276,"imageHeight":276,"thumbnail":"https://cdn.hyperdev.com/click-me.svg","thumbnailWidth":276,"thumbnailHeight":276,"dominantColor":"rgb(243, 185, 186)","uuid":"adSBq97hhhpFNUnb"} 3 | {"name":"paste-me.svg","date":"2016-10-24T16:17:49.954Z","url":"https://cdn.hyperdev.com/paste-me.svg","type":"image/svg","size":7242,"imageWidth":276,"imageHeight":276,"thumbnail":"https://cdn.hyperdev.com/paste-me.svg","thumbnailWidth":276,"thumbnailHeight":276,"dominantColor":"rgb(42, 179, 185)","uuid":"adSBq97hhhpFNUnc"} 4 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | language: node_js 2 | 3 | node_js: 4 | - '8' 5 | 6 | cache: 7 | directories: 8 | - node_modules 9 | 10 | script: 11 | - npm test 12 | 13 | notifications: 14 | email: false 15 | webhooks: https://fathomless-fjord-24024.herokuapp.com/notify 16 | -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # Changelog 2 | All notable changes to this project will be documented in this file. 3 | 4 | ## [Unreleased] 5 | 6 | ## 0.0.3 - Oct 07, 2018 7 | ### Added 8 | - introduce uncoolify service by [@johncoleman83](https://github.com/johncoleman83) 9 | - reverse dictionaries [@johncoleman83](https://github.com/johncoleman83) 10 | - tests for uncoolify service [@johncoleman83](https://github.com/johncoleman83) 11 | 12 | ## 0.0.2 - Oct 03, 2018 13 | ### Added 14 | - tests for coolify service by [@morgsmccauley](https://github.com/morgsmccauley) 15 | - introduce name parameter to webpage by [@Kissaki](https://github.com/kissaki) 16 | - Make use of coolify JSON response to fill content [@Kissaki](https://github.com/kissaki) 17 | - Add upside down name as new result type [@Kissaki](https://github.com/kissaki) 18 | 19 | 20 | ## 0.0.1 - Aug 13, 2018 21 | ### Added 22 | - setup on glitch 23 | - coolify service 24 | - alphanumeric dictionary 25 | - square dictionary 26 | - circle dictionary 27 | - initial functionality 28 | 29 | ## 0.0.0 - Jul 15, 2018 30 | - initial commit -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2018 Mohit Kumar Yadav 4 | Copyright (c) 2018 Jan Klass 5 | 6 | Permission is hereby granted, free of charge, to any person obtaining a copy 7 | of this software and associated documentation files (the "Software"), to deal 8 | in the Software without restriction, including without limitation the rights 9 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | copies of the Software, and to permit persons to whom the Software is 11 | furnished to do so, subject to the following conditions: 12 | 13 | The above copyright notice and this permission notice shall be included in all 14 | copies or substantial portions of the Software. 15 | 16 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 22 | SOFTWARE. 23 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # cool-name-api 2 | [![Build Status](https://travis-ci.org/mohitkyadav/cool-name-api.svg?branch=master)](https://travis-ci.org/mohitkyadav/cool-name-api) 3 | 4 | 5 | This is a website and node.js project to transform text into a cool representation of that text. 6 | 7 | For example `wolverine` becomes: 8 | 9 | * `ⓦ0lv3r1nⓔ` 10 | * `wo|ver!ne` 11 | * `🅆🄾🄻🅅🄴🅁🄸🄽🄴` 12 | * `ⓦⓞⓛⓥⓔⓡⓘⓝⓔ` 13 | * `w01v3r1n3` 14 | * `🔱⚽👢✅🎗🌱🎐🎵🎗` 15 | * `w͓̽o͓̽l͓̽v͓̽e͓̽r͓̽i͓̽n͓̽e͓̽` 16 | * (backwards) `‮wolverine` 17 | 18 | ## Demo 19 | 20 | To see the API in action, you can visit the website at https://cool-name-api.glitch.me/ 21 | 22 | ## Usage 23 | 24 | ### coolify 25 | 26 | * request URL: https://cool-name-api.glitch.me/coolify 27 | * query params (required): `name` 28 | * example with 'wolverine': https://cool-name-api.glitch.me/coolify?name=wolverine 29 | ``` 30 | $ curl -X GET 'https://cool-name-api.glitch.me/coolify?name=wolverine' 31 | ``` 32 | 33 | ### uncoolify 34 | 35 | * request URL: https://cool-name-api.glitch.me/uncoolify 36 | * query params (required): `name` 37 | * example with '🌛🌱⛎〽️🅿️🎏': https://cool-name-api.glitch.me/uncoolify?name=%F0%9F%8C%9B%F0%9F%8C%B1%E2%9B%8E%E3%80%BD%EF%B8%8F%F0%9F%85%BF%EF%B8%8F%F0%9F%8E%8F 38 | ``` 39 | $ curl -X GET 'http://localhost:3000/uncoolify?name=%F0%9F%8C%9B%F0%9F%8C%B1%E2%9B%8E%E3%80%BD%EF%B8%8F%F0%9F%85%BF%EF%B8%8F%F0%9F%8E%8F' 40 | ``` 41 | 42 | ## Build Setup 43 | 44 | * **Step 1:** Fork the cool-name-api repository and clone it to your machine 45 | * **Step 2:** Cd into the cloned folder 46 | * **Step 3:** Install all the dependencies with:```$ npm install``` 47 | * **Step 4:** Run on http://localhost:3000 with:```$ npm start``` 48 | 49 | ## Contribute 50 | Found a bug, please [create an issue](https://github.com/mohitkyadav/cool-name-api/issues/new) 51 | 52 | ## License 53 | 54 | [![license](https://img.shields.io/github/license/mashape/apistatus.svg)](LICENSE) 55 | 56 | ## Live Website Hosting 57 | 58 | The live website is hosted on [Glitch](https://glitch.com/about). 59 | You can [remix it there](https://glitch.com/edit/#!/cool-name-api). 60 | -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "cool-name-api", 3 | "version": "0.0.1", 4 | "lockfileVersion": 1, 5 | "requires": true, 6 | "dependencies": { 7 | "accepts": { 8 | "version": "1.3.5", 9 | "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.5.tgz", 10 | "integrity": "sha1-63d99gEXI6OxTopywIBcjoZ0a9I=", 11 | "requires": { 12 | "mime-types": "~2.1.18", 13 | "negotiator": "0.6.1" 14 | } 15 | }, 16 | "array-flatten": { 17 | "version": "1.1.1", 18 | "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", 19 | "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" 20 | }, 21 | "assertion-error": { 22 | "version": "1.1.0", 23 | "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", 24 | "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==" 25 | }, 26 | "balanced-match": { 27 | "version": "1.0.0", 28 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", 29 | "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" 30 | }, 31 | "body-parser": { 32 | "version": "1.18.3", 33 | "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.18.3.tgz", 34 | "integrity": "sha1-WykhmP/dVTs6DyDe0FkrlWlVyLQ=", 35 | "requires": { 36 | "bytes": "3.0.0", 37 | "content-type": "~1.0.4", 38 | "debug": "2.6.9", 39 | "depd": "~1.1.2", 40 | "http-errors": "~1.6.3", 41 | "iconv-lite": "0.4.23", 42 | "on-finished": "~2.3.0", 43 | "qs": "6.5.2", 44 | "raw-body": "2.3.3", 45 | "type-is": "~1.6.16" 46 | } 47 | }, 48 | "brace-expansion": { 49 | "version": "1.1.11", 50 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 51 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 52 | "requires": { 53 | "balanced-match": "^1.0.0", 54 | "concat-map": "0.0.1" 55 | } 56 | }, 57 | "browser-stdout": { 58 | "version": "1.3.1", 59 | "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", 60 | "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==" 61 | }, 62 | "bytes": { 63 | "version": "3.0.0", 64 | "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", 65 | "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=" 66 | }, 67 | "chai": { 68 | "version": "4.2.0", 69 | "resolved": "https://registry.npmjs.org/chai/-/chai-4.2.0.tgz", 70 | "integrity": "sha512-XQU3bhBukrOsQCuwZndwGcCVQHyZi53fQ6Ys1Fym7E4olpIqqZZhhoFJoaKVvV17lWQoXYwgWN2nF5crA8J2jw==", 71 | "requires": { 72 | "assertion-error": "^1.1.0", 73 | "check-error": "^1.0.2", 74 | "deep-eql": "^3.0.1", 75 | "get-func-name": "^2.0.0", 76 | "pathval": "^1.1.0", 77 | "type-detect": "^4.0.5" 78 | } 79 | }, 80 | "check-error": { 81 | "version": "1.0.2", 82 | "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", 83 | "integrity": "sha1-V00xLt2Iu13YkS6Sht1sCu1KrII=" 84 | }, 85 | "commander": { 86 | "version": "2.15.1", 87 | "resolved": "https://registry.npmjs.org/commander/-/commander-2.15.1.tgz", 88 | "integrity": "sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag==" 89 | }, 90 | "concat-map": { 91 | "version": "0.0.1", 92 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 93 | "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" 94 | }, 95 | "content-disposition": { 96 | "version": "0.5.2", 97 | "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz", 98 | "integrity": "sha1-DPaLud318r55YcOoUXjLhdunjLQ=" 99 | }, 100 | "content-type": { 101 | "version": "1.0.4", 102 | "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", 103 | "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==" 104 | }, 105 | "cookie": { 106 | "version": "0.3.1", 107 | "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz", 108 | "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=" 109 | }, 110 | "cookie-signature": { 111 | "version": "1.0.6", 112 | "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", 113 | "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" 114 | }, 115 | "debug": { 116 | "version": "2.6.9", 117 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", 118 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", 119 | "requires": { 120 | "ms": "2.0.0" 121 | } 122 | }, 123 | "deep-eql": { 124 | "version": "3.0.1", 125 | "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-3.0.1.tgz", 126 | "integrity": "sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==", 127 | "requires": { 128 | "type-detect": "^4.0.0" 129 | } 130 | }, 131 | "depd": { 132 | "version": "1.1.2", 133 | "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", 134 | "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" 135 | }, 136 | "destroy": { 137 | "version": "1.0.4", 138 | "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", 139 | "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" 140 | }, 141 | "diff": { 142 | "version": "3.5.0", 143 | "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", 144 | "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==" 145 | }, 146 | "ee-first": { 147 | "version": "1.1.1", 148 | "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", 149 | "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" 150 | }, 151 | "encodeurl": { 152 | "version": "1.0.2", 153 | "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", 154 | "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=" 155 | }, 156 | "escape-html": { 157 | "version": "1.0.3", 158 | "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", 159 | "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" 160 | }, 161 | "escape-string-regexp": { 162 | "version": "1.0.5", 163 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", 164 | "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" 165 | }, 166 | "etag": { 167 | "version": "1.8.1", 168 | "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", 169 | "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" 170 | }, 171 | "express": { 172 | "version": "4.16.4", 173 | "resolved": "https://registry.npmjs.org/express/-/express-4.16.4.tgz", 174 | "integrity": "sha512-j12Uuyb4FMrd/qQAm6uCHAkPtO8FDTRJZBDd5D2KOL2eLaz1yUNdUB/NOIyq0iU4q4cFarsUCrnFDPBcnksuOg==", 175 | "requires": { 176 | "accepts": "~1.3.5", 177 | "array-flatten": "1.1.1", 178 | "body-parser": "1.18.3", 179 | "content-disposition": "0.5.2", 180 | "content-type": "~1.0.4", 181 | "cookie": "0.3.1", 182 | "cookie-signature": "1.0.6", 183 | "debug": "2.6.9", 184 | "depd": "~1.1.2", 185 | "encodeurl": "~1.0.2", 186 | "escape-html": "~1.0.3", 187 | "etag": "~1.8.1", 188 | "finalhandler": "1.1.1", 189 | "fresh": "0.5.2", 190 | "merge-descriptors": "1.0.1", 191 | "methods": "~1.1.2", 192 | "on-finished": "~2.3.0", 193 | "parseurl": "~1.3.2", 194 | "path-to-regexp": "0.1.7", 195 | "proxy-addr": "~2.0.4", 196 | "qs": "6.5.2", 197 | "range-parser": "~1.2.0", 198 | "safe-buffer": "5.1.2", 199 | "send": "0.16.2", 200 | "serve-static": "1.13.2", 201 | "setprototypeof": "1.1.0", 202 | "statuses": "~1.4.0", 203 | "type-is": "~1.6.16", 204 | "utils-merge": "1.0.1", 205 | "vary": "~1.1.2" 206 | } 207 | }, 208 | "finalhandler": { 209 | "version": "1.1.1", 210 | "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.1.tgz", 211 | "integrity": "sha512-Y1GUDo39ez4aHAw7MysnUD5JzYX+WaIj8I57kO3aEPT1fFRL4sr7mjei97FgnwhAyyzRYmQZaTHb2+9uZ1dPtg==", 212 | "requires": { 213 | "debug": "2.6.9", 214 | "encodeurl": "~1.0.2", 215 | "escape-html": "~1.0.3", 216 | "on-finished": "~2.3.0", 217 | "parseurl": "~1.3.2", 218 | "statuses": "~1.4.0", 219 | "unpipe": "~1.0.0" 220 | } 221 | }, 222 | "forwarded": { 223 | "version": "0.1.2", 224 | "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", 225 | "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=" 226 | }, 227 | "fresh": { 228 | "version": "0.5.2", 229 | "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", 230 | "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=" 231 | }, 232 | "fs.realpath": { 233 | "version": "1.0.0", 234 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", 235 | "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" 236 | }, 237 | "get-func-name": { 238 | "version": "2.0.0", 239 | "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", 240 | "integrity": "sha1-6td0q+5y4gQJQzoGY2YCPdaIekE=" 241 | }, 242 | "glob": { 243 | "version": "7.1.2", 244 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", 245 | "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", 246 | "requires": { 247 | "fs.realpath": "^1.0.0", 248 | "inflight": "^1.0.4", 249 | "inherits": "2", 250 | "minimatch": "^3.0.4", 251 | "once": "^1.3.0", 252 | "path-is-absolute": "^1.0.0" 253 | } 254 | }, 255 | "growl": { 256 | "version": "1.10.5", 257 | "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz", 258 | "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==" 259 | }, 260 | "has-flag": { 261 | "version": "3.0.0", 262 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", 263 | "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" 264 | }, 265 | "he": { 266 | "version": "1.1.1", 267 | "resolved": "https://registry.npmjs.org/he/-/he-1.1.1.tgz", 268 | "integrity": "sha1-k0EP0hsAlzUVH4howvJx80J+I/0=" 269 | }, 270 | "http-errors": { 271 | "version": "1.6.3", 272 | "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", 273 | "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", 274 | "requires": { 275 | "depd": "~1.1.2", 276 | "inherits": "2.0.3", 277 | "setprototypeof": "1.1.0", 278 | "statuses": ">= 1.4.0 < 2" 279 | } 280 | }, 281 | "iconv-lite": { 282 | "version": "0.4.23", 283 | "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.23.tgz", 284 | "integrity": "sha512-neyTUVFtahjf0mB3dZT77u+8O0QB89jFdnBkd5P1JgYPbPaia3gXXOVL2fq8VyU2gMMD7SaN7QukTB/pmXYvDA==", 285 | "requires": { 286 | "safer-buffer": ">= 2.1.2 < 3" 287 | } 288 | }, 289 | "inflight": { 290 | "version": "1.0.6", 291 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", 292 | "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", 293 | "requires": { 294 | "once": "^1.3.0", 295 | "wrappy": "1" 296 | } 297 | }, 298 | "inherits": { 299 | "version": "2.0.3", 300 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", 301 | "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" 302 | }, 303 | "ipaddr.js": { 304 | "version": "1.8.0", 305 | "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.8.0.tgz", 306 | "integrity": "sha1-6qM9bd16zo9/b+DJygRA5wZzix4=" 307 | }, 308 | "media-typer": { 309 | "version": "0.3.0", 310 | "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", 311 | "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=" 312 | }, 313 | "merge-descriptors": { 314 | "version": "1.0.1", 315 | "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", 316 | "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=" 317 | }, 318 | "methods": { 319 | "version": "1.1.2", 320 | "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", 321 | "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=" 322 | }, 323 | "mime": { 324 | "version": "1.4.1", 325 | "resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz", 326 | "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==" 327 | }, 328 | "mime-db": { 329 | "version": "1.37.0", 330 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.37.0.tgz", 331 | "integrity": "sha512-R3C4db6bgQhlIhPU48fUtdVmKnflq+hRdad7IyKhtFj06VPNVdk2RhiYL3UjQIlso8L+YxAtFkobT0VK+S/ybg==" 332 | }, 333 | "mime-types": { 334 | "version": "2.1.21", 335 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.21.tgz", 336 | "integrity": "sha512-3iL6DbwpyLzjR3xHSFNFeb9Nz/M8WDkX33t1GFQnFOllWk8pOrh/LSrB5OXlnlW5P9LH73X6loW/eogc+F5lJg==", 337 | "requires": { 338 | "mime-db": "~1.37.0" 339 | } 340 | }, 341 | "minimatch": { 342 | "version": "3.0.4", 343 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", 344 | "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", 345 | "requires": { 346 | "brace-expansion": "^1.1.7" 347 | } 348 | }, 349 | "minimist": { 350 | "version": "0.0.8", 351 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", 352 | "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" 353 | }, 354 | "mkdirp": { 355 | "version": "0.5.1", 356 | "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", 357 | "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", 358 | "requires": { 359 | "minimist": "0.0.8" 360 | } 361 | }, 362 | "mocha": { 363 | "version": "5.2.0", 364 | "resolved": "https://registry.npmjs.org/mocha/-/mocha-5.2.0.tgz", 365 | "integrity": "sha512-2IUgKDhc3J7Uug+FxMXuqIyYzH7gJjXECKe/w43IGgQHTSj3InJi+yAA7T24L9bQMRKiUEHxEX37G5JpVUGLcQ==", 366 | "requires": { 367 | "browser-stdout": "1.3.1", 368 | "commander": "2.15.1", 369 | "debug": "3.1.0", 370 | "diff": "3.5.0", 371 | "escape-string-regexp": "1.0.5", 372 | "glob": "7.1.2", 373 | "growl": "1.10.5", 374 | "he": "1.1.1", 375 | "minimatch": "3.0.4", 376 | "mkdirp": "0.5.1", 377 | "supports-color": "5.4.0" 378 | }, 379 | "dependencies": { 380 | "debug": { 381 | "version": "3.1.0", 382 | "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", 383 | "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", 384 | "requires": { 385 | "ms": "2.0.0" 386 | } 387 | } 388 | } 389 | }, 390 | "ms": { 391 | "version": "2.0.0", 392 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 393 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" 394 | }, 395 | "negotiator": { 396 | "version": "0.6.1", 397 | "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz", 398 | "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk=" 399 | }, 400 | "on-finished": { 401 | "version": "2.3.0", 402 | "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", 403 | "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", 404 | "requires": { 405 | "ee-first": "1.1.1" 406 | } 407 | }, 408 | "once": { 409 | "version": "1.4.0", 410 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 411 | "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", 412 | "requires": { 413 | "wrappy": "1" 414 | } 415 | }, 416 | "parseurl": { 417 | "version": "1.3.2", 418 | "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.2.tgz", 419 | "integrity": "sha1-/CidTtiZMRlGDBViUyYs3I3mW/M=" 420 | }, 421 | "path-is-absolute": { 422 | "version": "1.0.1", 423 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", 424 | "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" 425 | }, 426 | "path-to-regexp": { 427 | "version": "0.1.7", 428 | "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", 429 | "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" 430 | }, 431 | "pathval": { 432 | "version": "1.1.0", 433 | "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.0.tgz", 434 | "integrity": "sha1-uULm1L3mUwBe9rcTYd74cn0GReA=" 435 | }, 436 | "proxy-addr": { 437 | "version": "2.0.4", 438 | "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.4.tgz", 439 | "integrity": "sha512-5erio2h9jp5CHGwcybmxmVqHmnCBZeewlfJ0pex+UW7Qny7OOZXTtH56TGNyBizkgiOwhJtMKrVzDTeKcySZwA==", 440 | "requires": { 441 | "forwarded": "~0.1.2", 442 | "ipaddr.js": "1.8.0" 443 | } 444 | }, 445 | "qs": { 446 | "version": "6.5.2", 447 | "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", 448 | "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==" 449 | }, 450 | "range-parser": { 451 | "version": "1.2.0", 452 | "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz", 453 | "integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4=" 454 | }, 455 | "raw-body": { 456 | "version": "2.3.3", 457 | "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.3.3.tgz", 458 | "integrity": "sha512-9esiElv1BrZoI3rCDuOuKCBRbuApGGaDPQfjSflGxdy4oyzqghxu6klEkkVIvBje+FF0BX9coEv8KqW6X/7njw==", 459 | "requires": { 460 | "bytes": "3.0.0", 461 | "http-errors": "1.6.3", 462 | "iconv-lite": "0.4.23", 463 | "unpipe": "1.0.0" 464 | } 465 | }, 466 | "safe-buffer": { 467 | "version": "5.1.2", 468 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", 469 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" 470 | }, 471 | "safer-buffer": { 472 | "version": "2.1.2", 473 | "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", 474 | "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" 475 | }, 476 | "send": { 477 | "version": "0.16.2", 478 | "resolved": "https://registry.npmjs.org/send/-/send-0.16.2.tgz", 479 | "integrity": "sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw==", 480 | "requires": { 481 | "debug": "2.6.9", 482 | "depd": "~1.1.2", 483 | "destroy": "~1.0.4", 484 | "encodeurl": "~1.0.2", 485 | "escape-html": "~1.0.3", 486 | "etag": "~1.8.1", 487 | "fresh": "0.5.2", 488 | "http-errors": "~1.6.2", 489 | "mime": "1.4.1", 490 | "ms": "2.0.0", 491 | "on-finished": "~2.3.0", 492 | "range-parser": "~1.2.0", 493 | "statuses": "~1.4.0" 494 | } 495 | }, 496 | "serve-static": { 497 | "version": "1.13.2", 498 | "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.13.2.tgz", 499 | "integrity": "sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw==", 500 | "requires": { 501 | "encodeurl": "~1.0.2", 502 | "escape-html": "~1.0.3", 503 | "parseurl": "~1.3.2", 504 | "send": "0.16.2" 505 | } 506 | }, 507 | "setprototypeof": { 508 | "version": "1.1.0", 509 | "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", 510 | "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==" 511 | }, 512 | "statuses": { 513 | "version": "1.4.0", 514 | "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz", 515 | "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==" 516 | }, 517 | "supports-color": { 518 | "version": "5.4.0", 519 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz", 520 | "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==", 521 | "requires": { 522 | "has-flag": "^3.0.0" 523 | } 524 | }, 525 | "type-detect": { 526 | "version": "4.0.8", 527 | "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", 528 | "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==" 529 | }, 530 | "type-is": { 531 | "version": "1.6.16", 532 | "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.16.tgz", 533 | "integrity": "sha512-HRkVv/5qY2G6I8iab9cI7v1bOIdhm94dVjQCPFElW9W+3GeDOSHmy2EBYe4VTApuzolPcmgFTN3ftVJRKR2J9Q==", 534 | "requires": { 535 | "media-typer": "0.3.0", 536 | "mime-types": "~2.1.18" 537 | } 538 | }, 539 | "unpipe": { 540 | "version": "1.0.0", 541 | "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", 542 | "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" 543 | }, 544 | "utils-merge": { 545 | "version": "1.0.1", 546 | "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", 547 | "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=" 548 | }, 549 | "vary": { 550 | "version": "1.1.2", 551 | "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", 552 | "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" 553 | }, 554 | "wrappy": { 555 | "version": "1.0.2", 556 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 557 | "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" 558 | } 559 | } 560 | } 561 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "cool-name-api", 3 | "version": "0.0.1", 4 | "description": "Mohit ==> m0hit", 5 | "scripts": { 6 | "start": "node server.js", 7 | "test": "node node_modules/mocha/bin/_mocha ./**/*.spec.js" 8 | }, 9 | "dependencies": { 10 | "chai": "^4.2.0", 11 | "express": "^4.16.3", 12 | "mocha": "^5.2.0" 13 | }, 14 | "engines": { 15 | "node": "9.x" 16 | }, 17 | "repository": { 18 | "url": "https://glitch.com/edit/#!/cool-name-api" 19 | }, 20 | "license": "MIT", 21 | "keywords": [ 22 | "node", 23 | "glitch", 24 | "express" 25 | ] 26 | } 27 | -------------------------------------------------------------------------------- /public/client.js: -------------------------------------------------------------------------------- 1 | // client-side js 2 | // run by the browser each time your view template is loaded 3 | 4 | // by default, you've got jQuery, 5 | // add other scripts at the bottom of index.html 6 | 7 | $(function() { 8 | function getCool(name) { 9 | updateDemoUrl('/coolify?name=' + name); 10 | $.get('/coolify?' + $.param({name: name}), function(data) { 11 | $('ul#cool-names-list').empty() 12 | Object.keys(data).forEach(function(key) { 13 | var name = data[key] 14 | $('

').text(name).appendTo('ul#cool-names-list') 15 | }) 16 | $('input').focus() 17 | }) 18 | } 19 | 20 | function getUncool(name) { 21 | updateDemoUrl('/uncoolify?name=' + name); 22 | $.get('/uncoolify?' + $.param({name: name}), function(data) { 23 | $('ul#cool-names-list').empty() 24 | Object.keys(data).forEach(function(key) { 25 | var name = data[key] 26 | $('

').text(name).appendTo('ul#cool-names-list') 27 | }) 28 | $('input').focus() 29 | }) 30 | } 31 | 32 | if (typeof(URL) != 'undefined') { 33 | let url = (new URL(document.location)) 34 | let params = url.searchParams 35 | if (params != undefined) { 36 | var name = params.get('name') 37 | if (name != null) 38 | { 39 | $('input').val(name) 40 | getCool(name) 41 | } 42 | } 43 | } 44 | 45 | function updateDemoUrl(pathAndParams) { 46 | document.getElementById("demo-url").innerHTML = "$ curl -X GET " + 47 | window.location.origin + encodeURI(pathAndParams); 48 | } 49 | 50 | $('#coolify-submit').click(function(event) { 51 | event.preventDefault() 52 | var name = $('input').val() 53 | getCool(name) 54 | }) 55 | 56 | $('#uncoolify-submit').click(function(event) { 57 | event.preventDefault() 58 | var name = $('input').val() 59 | getUncool(name) 60 | }) 61 | }) 62 | -------------------------------------------------------------------------------- /public/js/uikit-icons.min.js: -------------------------------------------------------------------------------- 1 | /*! UIkit 3.0.0-rc.9 | http://www.getuikit.com | (c) 2014 - 2017 YOOtheme | MIT License */ 2 | 3 | !function(t,i){"object"==typeof exports&&"undefined"!=typeof module?module.exports=i():"function"==typeof define&&define.amd?define("uikiticons",i):t.UIkitIcons=i()}(this,function(){"use strict";function i(t){i.installed||t.icon.add({"500px":' ',album:' ',"arrow-down":' ',"arrow-left":' ',"arrow-right":' ',"arrow-up":' ',ban:' ',behance:' ',bell:' ',bold:' ',bolt:' ',bookmark:' ',calendar:' ',camera:' ',cart:' ',check:' ',"chevron-down":' ',"chevron-left":' ',"chevron-right":' ',"chevron-up":' ',clock:' ',close:' ',"cloud-download":' ',"cloud-upload":' ',code:' ',cog:' ',comment:' ',commenting:' ',comments:' ',copy:' ',"credit-card":' ',database:' ',desktop:' ',download:' ',dribbble:' ',expand:' ',facebook:' ',"file-edit":' ',file:' ',flickr:' ',folder:' ',forward:' ',foursquare:' ',future:' ',"git-branch":' ',"git-fork":' ',"github-alt":' ',github:' ',gitter:' ',"google-plus":' ',google:' ',grid:' ',happy:' ',hashtag:' ',heart:' ',history:' ',home:' ',image:' ',info:' ',instagram:' ',italic:' ',joomla:' ',laptop:' ',lifesaver:' ',link:' ',linkedin:' ',list:' ',location:' ',lock:' ',mail:' ',menu:' ',"minus-circle":' ',minus:' ',"more-vertical":' ',more:' ',move:' ',nut:' ',pagekit:' ',"paint-bucket":' ',pencil:' ',"phone-landscape":' ',phone:' ',pinterest:' ',"play-circle":' ',play:' ',"plus-circle":' ',plus:' ',pull:' ',push:' ',question:' ',"quote-right":' ',receiver:' ',refresh:' ',reply:' ',rss:' ',search:' ',server:' ',settings:' ',shrink:' ',"sign-in":' ',"sign-out":' ',social:' ',soundcloud:' ',star:' ',strikethrough:' ',table:' ',"tablet-landscape":' ',tablet:' ',tag:' ',thumbnails:' ',trash:' ',"triangle-down":' ',"triangle-left":' ',"triangle-right":' ',"triangle-up":' ',tripadvisor:' ',tumblr:' ',tv:' ',twitter:' ',uikit:' ',unlock:' ',upload:' ',user:' ',users:' ',"video-camera":' ',vimeo:' ',warning:' ',whatsapp:' ',wordpress:' ',world:' ',xing:' ',yelp:' ',youtube:' '})}return"undefined"!=typeof window&&window.UIkit&&window.UIkit.use(i),i}); -------------------------------------------------------------------------------- /public/style.css: -------------------------------------------------------------------------------- 1 | /* styles */ 2 | /* called by your view template */ 3 | 4 | /* You might want to try something fancier: */ 5 | /* less: http://lesscss.org/ */ 6 | 7 | * { 8 | box-sizing: border-box; 9 | font-family: 'Inconsolata', monospace !important; 10 | } 11 | 12 | body { 13 | width: 100%; 14 | color: white; 15 | background: black; 16 | } 17 | 18 | footer { 19 | background: #2a2a2a; 20 | } 21 | 22 | .content { 23 | max-width: 100%; 24 | margin: auto; 25 | } 26 | 27 | .header { 28 | padding: 10px 25px 10px 25px; 29 | width: 100%; 30 | } 31 | 32 | form { 33 | margin-bottom: 25px; 34 | padding: 15px; 35 | background-color: deeppink; 36 | display: inline-block; 37 | width: 100%; 38 | border: 1px solid black; 39 | border-radius: 3px; 40 | box-shadow: 4px 4px white; 41 | } 42 | .all-name-card, .ur-name-card, .json-card{ 43 | border-radius: 3px !important; 44 | box-shadow: 4px 4px white !important; 45 | } 46 | 47 | input { 48 | display: block; 49 | margin-bottom: 10px; 50 | padding: 5px; 51 | width: 100%; 52 | border: 1px solid lightgrey; 53 | border-radius: 3px; 54 | font-size: 16px; 55 | box-shadow: 3px 3px black; 56 | } 57 | 58 | button { 59 | font-size: 16px; 60 | border-radius: 3px; 61 | background-color: lightgrey; 62 | border: 1px solid black; 63 | box-shadow: 3px 3px black; 64 | cursor: pointer; 65 | } 66 | 67 | button:hover { 68 | background-color: rgb(47, 156, 219); 69 | } 70 | 71 | button:active { 72 | box-shadow: none; 73 | } 74 | 75 | .header h2 { 76 | color: white; 77 | } 78 | 79 | #cool-names-list h1::selection { 80 | background: deeppink; 81 | color: white; 82 | } 83 | 84 | /* scrollbar */ 85 | ::-webkit-scrollbar { 86 | width: 7px; 87 | } 88 | 89 | /* Track */ 90 | ::-webkit-scrollbar-track { 91 | border-radius: 5px; 92 | } 93 | 94 | /* Handle */ 95 | ::-webkit-scrollbar-thumb { 96 | background: #534d4d; 97 | border-radius: 5px; 98 | } 99 | 100 | /* Handle on hover */ 101 | ::-webkit-scrollbar-thumb:hover { 102 | background: deeppink; 103 | } 104 | /* scrollbar */ 105 | -------------------------------------------------------------------------------- /server.js: -------------------------------------------------------------------------------- 1 | // server.js 2 | // where your node app starts 3 | 4 | // init project 5 | const express = require('express') 6 | const coolify = require('./services/coolifyService') 7 | const uncoolify = require('./services/uncoolifyService') 8 | 9 | const app = express() 10 | 11 | // we've started you off with Express, 12 | // but feel free to use whatever libs or frameworks you'd like through `package.json`. 13 | 14 | // http://expressjs.com/en/starter/static-files.html 15 | app.use(express.static('public')) 16 | 17 | app.use(function(req, res, next) { 18 | res.header("Access-Control-Allow-Origin", "*") 19 | res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept") 20 | next() 21 | }) 22 | 23 | // http://expressjs.com/en/starter/basic-routing.html 24 | app.get("/", (request, response) => { 25 | response.sendFile(__dirname + '/views/index.html') 26 | }) 27 | 28 | // could also use the POST body instead of query string: http://expressjs.com/en/api.html#req.body 29 | app.get("/coolify", (request, response) => { 30 | let cool_names = coolify.alphaNumericName(request.query.name) 31 | response.setHeader('Content-Type', 'application/json') 32 | response.json({ 33 | cool_name_alphanum: cool_names[0], 34 | cool_name_rounded: cool_names[1], 35 | cool_name_square: cool_names[2], 36 | cool_name_round_alphanum: cool_names[3], 37 | cool_name_symbolic: cool_names[4], 38 | cool_name_mirrored: cool_names[5], 39 | cool_name_emoji: cool_names[6], 40 | cool_name_xabovebelow: cool_names[7], 41 | cool_name_upsidedown: cool_names[8], 42 | cool_name_wavy: cool_names[9], 43 | cool_name_curr: cool_names[10], 44 | cool_name_fairy: cool_names[11], 45 | cool_name_dot: cool_names[12], 46 | cool_name_doublestruck: cool_names[13], 47 | cool_name_unicodemix: cool_names[14], 48 | cool_name_newemoji: cool_names[15], 49 | cool_name_mathematicalfraktur:cool_names[16], 50 | }) 51 | }) 52 | 53 | app.get("/uncoolify", (request, response) => { 54 | let uncoolified_name = uncoolify.alphaNumericName(request.query.name) 55 | response.setHeader('Content-Type', 'application/json') 56 | response.json({ 57 | uncool_name: uncoolified_name 58 | }) 59 | }) 60 | 61 | // listen for requests :) 62 | const listener = app.listen(3000, () => { 63 | console.log(`Your app is listening on port 3000`) 64 | }) 65 | -------------------------------------------------------------------------------- /services/coolifyService.js: -------------------------------------------------------------------------------- 1 | coolify = {}; 2 | coolifyDicts = {}; 3 | 4 | coolifyDicts.alphaNum = { 5 | 'a' : '4', 6 | 'b' : '6', 7 | 'e' : '3', 8 | 'g' : '9', 9 | 'i' : '¡', 10 | 'l' : '1', 11 | 'o' : '0', 12 | 's' : '5', 13 | 't' : '7', 14 | 'z' : '2', 15 | ' ' : '_' 16 | }; 17 | 18 | coolifyDicts.xabovebelow = { 19 | 'a':'a͓̽', 20 | 'b':'b͓̽', 21 | 'c':'c͓̽', 22 | 'd':'d͓̽', 23 | 'e':'e͓̽', 24 | 'f':'f͓̽', 25 | 'g':'g͓̽', 26 | 'h':'h͓̽', 27 | 'i':'i͓̽', 28 | 'j':'j͓̽', 29 | 'k':'k͓̽', 30 | 'l':'l͓̽', 31 | 'm':'m͓̽', 32 | 'n':'n͓̽', 33 | 'o':'o͓̽', 34 | 'p':'p͓̽', 35 | 'q':'q͓̽', 36 | 'r':'r͓̽', 37 | 's':'s͓̽', 38 | 't':'t͓̽', 39 | 'u':'u͓̽', 40 | 'v':'v͓̽', 41 | 'w':'w͓̽', 42 | 'x':'x͓̽', 43 | 'y':'y͓̽', 44 | 'z':'z͓̽', 45 | } 46 | 47 | coolifyDicts.bracket = { 48 | 'alphaBracket' : '【', 49 | 'betaBacket' : '】', 50 | }; 51 | coolifyDicts.square = { 52 | ' ' : '_', 53 | 'a' : '🄰', 54 | 'b' : '🄱', 55 | 'c' : '🄲', 56 | 'd' : '🄳', 57 | 'e' : '🄴', 58 | 'f' : '🄵', 59 | 'g' : '🄶', 60 | 'h' : '🄷', 61 | 'i' : '🄸', 62 | 'j' : '🄹', 63 | 'k' : '🄺', 64 | 'l' : '🄻', 65 | 'm' : '🄼', 66 | 'n' : '🄽', 67 | 'o' : '🄾', 68 | 'p' : '🄿', 69 | 'q' : '🅀', 70 | 'r' : '🅁', 71 | 's' : '🅂', 72 | 't' : '🅃', 73 | 'u' : '🅄', 74 | 'v' : '🅅', 75 | 'w' : '🅆', 76 | 'x' : '🅇', 77 | 'y' : '🅈', 78 | 'z' : '🅉' 79 | }; 80 | coolifyDicts.rounded = { 81 | ' ' : '_', 82 | 'a' : 'ⓐ', 83 | 'b' : 'ⓑ', 84 | 'c' : 'ⓒ', 85 | 'd' : 'ⓓ', 86 | 'e' : 'ⓔ', 87 | 'f' : 'ⓕ', 88 | 'g' : 'ⓖ', 89 | 'h' : 'ⓗ', 90 | 'i' : 'ⓘ', 91 | 'j' : 'ⓙ', 92 | 'k' : 'ⓚ', 93 | 'l' : 'ⓛ', 94 | 'm' : 'ⓜ', 95 | 'n' : 'ⓝ', 96 | 'o' : 'ⓞ', 97 | 'p' : 'ⓟ', 98 | 'q' : 'ⓠ', 99 | 'r' : 'ⓡ', 100 | 's' : 'ⓢ', 101 | 't' : 'ⓣ', 102 | 'u' : 'ⓤ', 103 | 'v' : 'ⓥ', 104 | 'w' : 'ⓦ', 105 | 'x' : 'ⓧ', 106 | 'y' : 'ⓨ', 107 | 'z' : 'ⓩ' 108 | }; 109 | 110 | coolifyDicts.symbolic = { 111 | 'a': '@', 112 | 'c': '(', 113 | 'i': '!', 114 | 'l': '|', 115 | 't': '7' 116 | } 117 | coolifyDicts.emoji = { 118 | ' ' : '_', 119 | 'a' : '🅰', 120 | 'b' : '🅱', 121 | 'c' : '🌜', 122 | 'd' : '🌛', 123 | 'e' : '🎗', 124 | 'f' : '🎏', 125 | 'g' : '🌀', 126 | 'h' : '♓', 127 | 'i' : '🎐', 128 | 'j' : '🎷', 129 | 'k' : '🎋', 130 | 'l' : '👢', 131 | 'm' : '〽️', 132 | 'n' : '🎵', 133 | 'o' : '⚽', 134 | 'p' : '🅿️', 135 | 'q' : '🍳', 136 | 'r' : '🌱', 137 | 's' : '💲', 138 | 't' : '🌴', 139 | 'u' : '⛎', 140 | 'v' : '✅', 141 | 'w' : '🔱', 142 | 'x' : '❎', 143 | 'y' : '🍸', 144 | 'z' : '💤' 145 | }; 146 | 147 | coolifyDicts.upsidedown = { 148 | 'a' : 'ɐ', 149 | 'b' : 'q', 150 | 'c' : 'ɔ', 151 | 'd' : 'p', 152 | 'e' : 'ǝ', 153 | 'f' : 'ɟ', 154 | 'g' : 'ƃ', 155 | 'h' : 'ɥ', 156 | 'i' : 'ᴉ', 157 | 'j' : 'ɾ', 158 | 'k' : 'ʞ', 159 | 'l' : 'ʃ', 160 | 'm' : 'ɯ', 161 | 'n' : 'u', 162 | 'p' : 'd', 163 | 'q' : 'b', 164 | 'r' : 'ɹ', 165 | 's' : 's', 166 | 't' : 'ʇ', 167 | 'u' : 'n', 168 | 'v' : 'ʌ', 169 | 'w' : 'ʍ', 170 | 'x' : 'x', 171 | 'y' : 'ʎ', 172 | '!' : '¡', 173 | '"' : '„', 174 | '&' : '⅋', 175 | '\'' : ',', 176 | '\\.' : '˙', 177 | '3' : 'Ɛ', 178 | '4' : 'ᔭ', 179 | '6' : '9', 180 | '7' : 'Ɫ', 181 | '9' : '6', 182 | ';' : '؛', 183 | '\\?' : '¿', 184 | '_' : '‾', 185 | '‿' : '⁀', 186 | '⁅' : '⁆', 187 | '∴' : '∵', 188 | } 189 | 190 | coolifyDicts.wavy = { 191 | 'a':'ᗩ', 192 | 'b':'ᕊ', 193 | 'c':'ᑕ', 194 | 'd':'ᖙ', 195 | 'e':'ᗴ', 196 | 'f':'ℱ', 197 | 'g':'ᘐ', 198 | 'h':'ᖺ', 199 | 'i':'ᓮ', 200 | 'j':'ᒎ', 201 | 'k':'Ḱ', 202 | 'l':'ᒪ', 203 | 'm':'ᙢ', 204 | 'n':'ﬡ', 205 | 'o':'ᗢ', 206 | 'p':'ᕈ', 207 | 'q':'ᕋ', 208 | 'r':'ᖇ', 209 | 's':'ᔕ', 210 | 't':'☂', 211 | 'u':'ᘮ', 212 | 'v':'ᐯ', 213 | 'w':'ᗯ', 214 | 'x':'ჯ', 215 | 'y':'૪', 216 | 'z':'ᔓ', 217 | } 218 | 219 | coolifyDicts.curr = { 220 | 221 | 'a':'₳', 222 | 'b':'฿', 223 | 'c':'₵', 224 | 'd':'Đ', 225 | 'e':'Ɇ', 226 | 'f':'₣', 227 | 'g':'₲', 228 | 'h':'Ⱨ', 229 | 'i':'ł', 230 | 'j':'J', 231 | 'k':'₭', 232 | 'l':'Ⱡ', 233 | 'm':'₥', 234 | 'n':'₦', 235 | 'o':'Ø', 236 | 'p':'₱', 237 | 'q':'Q', 238 | 'r':'Ɽ', 239 | 's':'₴', 240 | 't':'₮', 241 | 'u':'Ʉ', 242 | 'v':'V', 243 | 'w':'₩', 244 | 'x':'Ӿ', 245 | 'y':'Ɏ', 246 | 'z':'Ⱬ', 247 | } 248 | 249 | coolifyDicts.doublestruck={ 250 | 'a':'𝕒', 251 | 'b':'𝕓', 252 | 'c':'𝕔', 253 | 'd':'𝕕', 254 | 'e':'𝕖', 255 | 'f':'𝕗', 256 | 'g':'𝕘', 257 | 'h':'𝕙', 258 | 'i':'𝕚', 259 | 'j':'𝕛', 260 | 'k':'𝕜', 261 | 'l':'𝕝', 262 | 'm':'𝕞', 263 | 'n':'𝕟', 264 | 'o':'𝕠', 265 | 'p':'𝕡', 266 | 'q':'𝕢', 267 | 'r':'𝕣', 268 | 's':'𝕤', 269 | 't':'𝕥', 270 | 'u':'𝕦', 271 | 'v':'𝕧', 272 | 'w':'𝕨', 273 | 'x':'𝕩', 274 | 'y':'𝕪', 275 | 'z':'𝕫', 276 | } 277 | 278 | coolifyDicts.fairy = { 279 | 'a':'Ꮧ', 280 | 'b':'Ᏸ', 281 | 'c':'ፈ', 282 | 'd':'Ꮄ', 283 | 'e':'Ꮛ', 284 | 'f':'Ꭶ', 285 | 'g':'Ꮆ', 286 | 'h':'Ꮒ', 287 | 'i':'Ꭵ', 288 | 'j':'Ꮰ', 289 | 'k':'Ꮶ', 290 | 'l':'Ꮭ', 291 | 'm':'Ꮇ', 292 | 'n':'Ꮑ', 293 | 'o':'Ꭷ', 294 | 'p':'Ꭾ', 295 | 'q':'Ꭴ', 296 | 'r':'Ꮢ', 297 | 's':'Ꮥ', 298 | 't':'Ꮦ', 299 | 'u':'Ꮼ', 300 | 'v':'Ꮙ', 301 | 'w':'Ꮗ', 302 | 'x':'ጀ', 303 | 'y':'Ꭹ', 304 | 'z':'ፚ', 305 | } 306 | 307 | coolifyDicts.dot = { 308 | 'a':'å', 309 | 'b':'β', 310 | 'c':'ç', 311 | 'd':'ď', 312 | 'e':'£', 313 | 'f':'ƒ', 314 | 'g':'ğ', 315 | 'h':'ȟ', 316 | 'i':'ȋ', 317 | 'j':'j', 318 | 'k':'ķ', 319 | 'l':'Ƚ', 320 | 'm':'ɱ', 321 | 'n':'ñ', 322 | 'o':'¤', 323 | 'p':'ק', 324 | 'q':'ǭ', 325 | 'r':'ȑ', 326 | 's':'§', 327 | 't':'ț', 328 | 'u':'ɥ', 329 | 'v':'√', 330 | 'w':'Ψ', 331 | 'x':'×', 332 | 'y':'ÿ', 333 | 'z':'ž', 334 | } 335 | 336 | coolifyDicts.unicodemix = { 337 | 'a':'ą', 338 | 'b':'β', 339 | 'c':'¢', 340 | 'd':'δ', 341 | 'e':'Σ', 342 | 'f':'ϝ', 343 | 'g':'§', 344 | 'h':'ℌ', 345 | 'i':'ℹ', 346 | 'j':'ℐ', 347 | 'k':'κ', 348 | 'l':'↳', 349 | 'm':'ϻ', 350 | 'n':'ͷ', 351 | 'o':'Φ', 352 | 'p':'¶', 353 | 'q':'ℚ', 354 | 'r':'ϒ', 355 | 's':'ᔓ', 356 | 't':'ͳ', 357 | 'u':'℧', 358 | 'v':'∨', 359 | 'w':'ω', 360 | 'x':'ϰ', 361 | 'y':'¥', 362 | 'z':'ℨ', 363 | } 364 | 365 | coolifyDicts.newemoji= { 366 | 'a':'🥨', 367 | 'b':'🅱', 368 | 'c':'↪️', 369 | 'd':'↩️', 370 | 'e':'📚', 371 | 'f':'🏳️', 372 | 'g':'📿', 373 | 'h':'🍽', 374 | 'i':'🔩', 375 | 'j':'🃏', 376 | 'k':'🔀', 377 | 'l':'🛴', 378 | 'm':'Ⓜ️', 379 | 'n':'♑️', 380 | 'o':'🌍', 381 | 'p':'🅿️', 382 | 'q':'🍭', 383 | 'r':'➰', 384 | 's':'💰', 385 | 't':'☂️', 386 | 'u':'🤘🏼', 387 | 'v':'🖖', 388 | 'w':'🐍', 389 | 'x':'⚔️', 390 | 'y':'✌️', 391 | 'z':'😴', 392 | } 393 | 394 | coolifyDicts.mathematicalfraktur = { 395 | 'a':'𝔄', 396 | 'b':'𝔅', 397 | 'c':'ℭ', 398 | 'd':'𝔇', 399 | 'e':'𝔈', 400 | 'f':'𝔉', 401 | 'g':'𝔊', 402 | 'h':'ℌ', 403 | 'i':'ℑ', 404 | 'j':'𝔍', 405 | 'k':'𝔎', 406 | 'l':'𝔏', 407 | 'm':'𝔐', 408 | 'n':'𝔑', 409 | 'o':'𝔒', 410 | 'p':'𝔓', 411 | 'q':'𝔔', 412 | 'r':'ℜ', 413 | 's':'𝔖', 414 | 't':'𝔗', 415 | 'u':'𝔘', 416 | 'v':'𝔙', 417 | 'w':'𝔚', 418 | 'x':'𝔛', 419 | 'y':'𝔜', 420 | 'z':'ℨ', 421 | } 422 | 423 | String.prototype.allReplace = function(obj) { 424 | var retStr = this; 425 | for (var x in obj) { 426 | retStr = retStr.replace(new RegExp(x, 'g'), obj[x]); 427 | } 428 | return retStr; 429 | }; 430 | 431 | String.prototype.replaceAt=function(index, replacement) { 432 | return this.substr(0, index) + replacement + this.substr(index + replacement.length); 433 | }; 434 | 435 | coolify.alphaNumericName = function(name) { 436 | if(typeof(name) == 'string') { 437 | name = name.toLocaleLowerCase(); 438 | let cool_name_alphanum = name.allReplace(coolifyDicts.alphaNum); 439 | let cool_name_rounded = name.allReplace(coolifyDicts.rounded); 440 | let cool_name_square = name.allReplace(coolifyDicts.square); 441 | let cool_name_emoji = name.allReplace(coolifyDicts.emoji); 442 | let cool_name_round_alphanum = cool_name_rounded.slice(0, 1) + cool_name_alphanum.slice(1, name.length - 1) 443 | + cool_name_rounded.slice(name.length - 1, name.length); 444 | let cool_name_symbolic = name.allReplace(coolifyDicts.symbolic); 445 | let cool_name_mirrored = name.split("").reverse().join(""); 446 | let cool_name_xabovebelow = name.allReplace(coolifyDicts.xabovebelow); 447 | let cool_name_upsidedown = name.allReplace(coolifyDicts.upsidedown); 448 | let cool_name_wavy = name.allReplace(coolifyDicts.wavy); 449 | let cool_name_curr = name.allReplace(coolifyDicts.curr); 450 | let cool_name_fairy = name.allReplace(coolifyDicts.fairy); 451 | let cool_name_dot = name.allReplace(coolifyDicts.dot); 452 | let cool_name_doublestruck = name.allReplace(coolifyDicts.doublestruck); 453 | let cool_name_unicodemix = name.allReplace(coolifyDicts.unicodemix); 454 | let cool_name_newemoji = name.allReplace(coolifyDicts.newemoji); 455 | let cool_name_mathematicalfraktur = name.allReplace(coolifyDicts.mathematicalfraktur); 456 | //Upside-down 457 | for(let i = 0; i { 6 | it('should return false if a non-string value is provided', () => { 7 | expect(alphaNumericeName(1)).to.be.false; 8 | expect(alphaNumericeName({})).to.be.false; 9 | expect(alphaNumericeName([])).to.be.false; 10 | }); 11 | 12 | it('should replace letters with the specified number equivalent', () => { 13 | expect(alphaNumericeName('hello isaiah')[0]).to.equal('h3110_¡54¡4h'); 14 | }); 15 | 16 | it('should round each letter', () => { 17 | expect(alphaNumericeName('hello')[1]).to.equal('ⓗⓔⓛⓛⓞ'); 18 | }); 19 | 20 | it('should square each letter', () => { 21 | expect(alphaNumericeName('hello')[2]).to.equal('🄷🄴🄻🄻🄾'); 22 | }); 23 | 24 | it('should round the first and last and replace all else the specified number eqv.', () => { 25 | expect(alphaNumericeName('hello')[3]).to.equal('ⓗ311ⓞ'); 26 | }) 27 | 28 | it('should replace letters with the symbolic equivalent', () => { 29 | expect(alphaNumericeName('hello')[4]).to.equal('he||o'); 30 | }) 31 | 32 | it('should mirror each letter', () => { 33 | expect(alphaNumericeName('hello')[5]).to.equal('olleh'); 34 | }); 35 | 36 | it('should replace letters with the emoji equivalent', () => { 37 | expect(alphaNumericeName('hello')[6]).to.equal('♓🎗👢👢⚽'); 38 | }); 39 | 40 | it('should add x above and below each letter', () => { 41 | expect(alphaNumericeName('hello')[7]).to.equal('h͓̽e͓̽l͓̽l͓̽o͓̽'); 42 | }); 43 | 44 | it('should flip each letter upsidedown', () => { 45 | expect(alphaNumericeName('hello')[8]).to.equal('ɥǝʃʃo'); 46 | }); 47 | 48 | it('should replace with wavy letter', () => { 49 | expect(alphaNumericeName('hello')[9]).to.equal('ᖺᗴᒪᒪᗢ'); 50 | }); 51 | 52 | it('should replace with Curr letter', () => { 53 | expect(alphaNumericeName('hello')[10]).to.equal('ⱧɆⱠⱠØ'); 54 | }); 55 | 56 | it('should replace with fairy letter', () => { 57 | expect(alphaNumericeName('hello')[11]).to.equal('ᏂᏋᏝᏝᎧ'); 58 | }); 59 | 60 | it('should replace with dot letter', () => { 61 | expect(alphaNumericeName('hello')[12]).to.equal('ȟ£ȽȽ¤'); 62 | }); 63 | 64 | it('should replace with doublestruck letter', () => { 65 | expect(alphaNumericeName('hello')[13]).to.equal('𝕙𝕖𝕝𝕝𝕠'); 66 | }); 67 | 68 | it('should replace with unicodemix letter', () => { 69 | expect(alphaNumericeName('hello')[14]).to.equal('ℌΣ↳↳Φ'); 70 | }); 71 | 72 | it('should replace with emoji letter', () => { 73 | expect(alphaNumericeName('hello')[15]).to.equal('🍽📚🛴🛴🌍'); 74 | }); 75 | 76 | it('should replace with mathematicalfraktur letters', () => { 77 | expect(alphaNumericeName('hello')[16]).to.equal('ℌ𝔈𝔏𝔏𝔒'); 78 | }); 79 | }) 80 | -------------------------------------------------------------------------------- /services/uncoolifyService.js: -------------------------------------------------------------------------------- 1 | uncoolify = {} 2 | uncoolifyDicts = {} 3 | 4 | uncoolifyDicts.alphaNum = { 5 | '0': 'o', 6 | '1': 'l', 7 | '2': 'z', 8 | '3': 'e', 9 | '4': 'a', 10 | '5': 's', 11 | '6': 'b', 12 | '7': 't', 13 | '9': 'g', 14 | '¡': 'i', 15 | '_': ' ', 16 | 'ⓐ': 'a', 17 | 'ⓑ': 'b', 18 | 'ⓒ': 'c', 19 | 'ⓓ': 'd', 20 | 'ⓔ': 'e', 21 | 'ⓕ': 'f', 22 | 'ⓖ': 'g', 23 | 'ⓗ': 'h', 24 | 'ⓘ': 'i', 25 | 'ⓙ': 'j', 26 | 'ⓚ': 'k', 27 | 'ⓛ': 'l', 28 | 'ⓜ': 'm', 29 | 'ⓝ': 'n', 30 | 'ⓞ': 'o', 31 | 'ⓟ': 'p', 32 | 'ⓠ': 'q', 33 | 'ⓡ': 'r', 34 | 'ⓢ': 's', 35 | 'ⓣ': 't', 36 | 'ⓤ': 'u', 37 | 'ⓥ': 'v', 38 | 'ⓦ': 'w', 39 | 'ⓧ': 'x', 40 | 'ⓨ': 'y', 41 | 'ⓩ': 'z' 42 | }; 43 | 44 | uncoolifyDicts.xabovebelow = { 45 | 'a͓̽': 'a', 46 | 'b͓̽': 'b', 47 | 'c͓̽': 'c', 48 | 'd͓̽': 'd', 49 | 'e͓̽': 'e', 50 | 'f͓̽': 'f', 51 | 'g͓̽': 'g', 52 | 'h͓̽': 'h', 53 | 'i͓̽': 'i', 54 | 'j͓̽': 'j', 55 | 'k͓̽': 'k', 56 | 'l͓̽': 'l', 57 | 'm͓̽': 'm', 58 | 'n͓̽': 'n', 59 | 'o͓̽': 'o', 60 | 'p͓̽': 'p', 61 | 'q͓̽': 'q', 62 | 'r͓̽': 'r', 63 | 's͓̽': 's', 64 | 't͓̽': 't', 65 | 'u͓̽': 'u', 66 | 'v͓̽': 'v', 67 | 'w͓̽': 'w', 68 | 'x͓̽': 'x', 69 | 'y͓̽': 'y', 70 | 'z͓̽': 'z' 71 | } 72 | 73 | uncoolifyDicts.bracket = { 74 | '【': 'alphaBracket', 75 | '】': 'betaBacket' 76 | }; 77 | uncoolifyDicts.square = { 78 | '_' : ' ', 79 | '🄰': 'a', 80 | '🄱': 'b', 81 | '🄲': 'c', 82 | '🄳': 'd', 83 | '🄴': 'e', 84 | '🄵': 'f', 85 | '🄶': 'g', 86 | '🄷': 'h', 87 | '🄸': 'i', 88 | '🄹': 'j', 89 | '🄺': 'k', 90 | '🄻': 'l', 91 | '🄼': 'm', 92 | '🄽': 'n', 93 | '🄾': 'o', 94 | '🄿': 'p', 95 | '🅀': 'q', 96 | '🅁': 'r', 97 | '🅂': 's', 98 | '🅃': 't', 99 | '🅄': 'u', 100 | '🅅': 'v', 101 | '🅆': 'w', 102 | '🅇': 'x', 103 | '🅈': 'y', 104 | '🅉': 'z' 105 | }; 106 | 107 | uncoolifyDicts.symbolic = { 108 | '7': 't', 109 | '@': 'a', 110 | '(': 'c', 111 | '!': 'i', 112 | '|': 'l' 113 | } 114 | 115 | symbolicRegex = { 116 | '7': 't', 117 | '@': 'a', 118 | '\\(': 'c', 119 | '!': 'i', 120 | '\\|': 'l' 121 | } 122 | 123 | uncoolifyDicts.emoji = { 124 | '_' : ' ', 125 | '🅰': 'a', 126 | '🅱': 'b', 127 | '🌜': 'c', 128 | '🌛': 'd', 129 | '🎗': 'e', 130 | '🎏': 'f', 131 | '🌀': 'g', 132 | '♓': 'h', 133 | '🎐': 'i', 134 | '🎷': 'j', 135 | '🎋': 'k', 136 | '👢': 'l', 137 | '〽️': 'm', 138 | '🎵': 'n', 139 | '⚽': 'o', 140 | '🅿️': 'p', 141 | '🍳': 'q', 142 | '🌱': 'r', 143 | '💲': 's', 144 | '🌴': 't', 145 | '⛎': 'u', 146 | '✅': 'v', 147 | '🔱': 'w', 148 | '❎': 'x', 149 | '🍸': 'y', 150 | '💤': 'z' 151 | }; 152 | 153 | uncoolifyDicts.upsidedown = { 154 | '6': '9', 155 | '9': '6', 156 | 'Ɛ': '3', 157 | 'ᔭ': '4', 158 | 'Ɫ': '7', 159 | 'ɐ': 'a', 160 | 'q': 'b', 161 | 'ɔ': 'c', 162 | 'p': 'd', 163 | 'ǝ': 'e', 164 | 'ɟ': 'f', 165 | 'ƃ': 'g', 166 | 'ɥ': 'h', 167 | 'ᴉ': 'i', 168 | 'ɾ': 'j', 169 | 'ʞ': 'k', 170 | 'ʃ': 'l', 171 | 'ɯ': 'm', 172 | 'u': 'n', 173 | 'd': 'p', 174 | 'b': 'q', 175 | 'ɹ': 'r', 176 | 's': 's', 177 | 'ʇ': 't', 178 | 'n': 'u', 179 | 'ʌ': 'v', 180 | 'ʍ': 'w', 181 | 'x': 'x', 182 | 'ʎ': 'y', 183 | '¡': '!', 184 | '„': '"', 185 | '⅋': '&', 186 | ',': '\'', 187 | '˙': '\\.', 188 | '؛': ';', 189 | '¿': '\\?', 190 | '‾': '_', 191 | '⁀': '‿', 192 | '⁆': '⁅', 193 | '∵': '∴' 194 | } 195 | 196 | uncoolifyDicts.wavy = { 197 | 'ᗩ': 'a', 198 | 'ᕊ': 'b', 199 | 'ᑕ': 'c', 200 | 'ᖙ': 'd', 201 | 'ᗴ': 'e', 202 | 'ℱ': 'f', 203 | 'ᘐ': 'g', 204 | 'ᖺ': 'h', 205 | 'ᓮ': 'i', 206 | 'ᒎ': 'j', 207 | 'Ḱ': 'k', 208 | 'ᒪ': 'l', 209 | 'ᙢ': 'm', 210 | 'ﬡ': 'n', 211 | 'ᗢ': 'o', 212 | 'ᕈ': 'p', 213 | 'ᕋ': 'q', 214 | 'ᖇ': 'r', 215 | 'ᔕ': 's', 216 | '☂': 't', 217 | 'ᘮ': 'u', 218 | 'ᐯ': 'v', 219 | 'ᗯ': 'w', 220 | 'ჯ': 'x', 221 | '૪': 'y', 222 | 'ᔓ': 'z' 223 | }; 224 | 225 | uncoolifyDicts.curr = { 226 | '₳': 'a', 227 | '฿': 'b', 228 | '₵': 'c', 229 | 'Đ': 'd', 230 | 'Ɇ': 'e', 231 | '₣': 'f', 232 | '₲': 'g', 233 | 'Ⱨ': 'h', 234 | 'ł': 'i', 235 | 'J': 'j', 236 | '₭': 'k', 237 | 'Ⱡ': 'l', 238 | '₥': 'm', 239 | '₦': 'n', 240 | 'Ø': 'o', 241 | '₱': 'p', 242 | 'Q': 'q', 243 | 'Ɽ': 'r', 244 | '₴': 's', 245 | '₮': 't', 246 | 'Ʉ': 'u', 247 | 'V': 'v', 248 | '₩': 'w', 249 | 'Ӿ': 'x', 250 | 'Ɏ': 'y', 251 | 'Ⱬ': 'z' 252 | }; 253 | 254 | uncoolifyDicts.doublestruck = { 255 | '𝕒':'a', 256 | '𝕓':'b', 257 | '𝕔':'c', 258 | '𝕕':'d', 259 | '𝕖':'e', 260 | '𝕗':'f', 261 | '𝕘':'g', 262 | '𝕙':'h', 263 | '𝕚':'i', 264 | '𝕛':'j', 265 | '𝕜':'k', 266 | '𝕝':'l', 267 | '𝕞':'m', 268 | '𝕟':'n', 269 | '𝕠':'o', 270 | '𝕡':'p', 271 | '𝕢':'q', 272 | '𝕣':'r', 273 | '𝕤':'s', 274 | '𝕥':'t', 275 | '𝕦':'u', 276 | '𝕧':'v', 277 | '𝕨':'w', 278 | '𝕩':'x', 279 | '𝕪':'y', 280 | '𝕫':'z', 281 | } 282 | 283 | uncoolifyDicts.fairy = { 284 | 'Ꮧ': 'a', 285 | 'Ᏸ': 'b', 286 | 'ፈ': 'c', 287 | 'Ꮄ': 'd', 288 | 'Ꮛ': 'e', 289 | 'Ꭶ': 'f', 290 | 'Ꮆ': 'g', 291 | 'Ꮒ': 'h', 292 | 'Ꭵ': 'i', 293 | 'Ꮰ': 'j', 294 | 'Ꮶ': 'k', 295 | 'Ꮭ': 'l', 296 | 'Ꮇ': 'm', 297 | 'Ꮑ': 'n', 298 | 'Ꭷ': 'o', 299 | 'Ꭾ': 'p', 300 | 'Ꭴ': 'q', 301 | 'Ꮢ': 'r', 302 | 'Ꮥ': 's', 303 | 'Ꮦ': 't', 304 | 'Ꮼ': 'u', 305 | 'Ꮙ': 'v', 306 | 'Ꮗ': 'w', 307 | 'ጀ': 'x', 308 | 'Ꭹ': 'y', 309 | 'ፚ': 'z' 310 | }; 311 | 312 | uncoolifyDicts.dot = { 313 | 'å': 'a', 314 | 'β': 'b', 315 | 'ç': 'c', 316 | 'ď': 'd', 317 | '£': 'e', 318 | 'ƒ': 'f', 319 | 'ğ': 'g', 320 | 'ȟ': 'h', 321 | 'ȋ': 'i', 322 | 'j': 'j', 323 | 'ķ': 'k', 324 | 'Ƚ': 'l', 325 | 'ɱ': 'm', 326 | 'ñ': 'n', 327 | '¤': 'o', 328 | 'ק': 'p', 329 | 'ǭ': 'q', 330 | 'ȑ': 'r', 331 | '§': 's', 332 | 'ț': 't', 333 | 'ɥ': 'u', 334 | '√': 'v', 335 | 'Ψ': 'w', 336 | '×': 'x', 337 | 'ÿ': 'y', 338 | 'ž': 'z' 339 | }; 340 | 341 | uncoolifyDicts.unicodemix = { 342 | 'ą':'a', 343 | 'β':'b', 344 | '¢':'c', 345 | 'δ':'d', 346 | 'Σ':'e', 347 | 'ϝ':'f', 348 | '§':'g', 349 | 'ℌ':'h', 350 | 'ℹ':'i', 351 | 'ℐ':'j', 352 | 'κ':'k', 353 | '↳':'l', 354 | 'ϻ':'m', 355 | 'ͷ':'n', 356 | 'Φ':'o', 357 | '¶':'p', 358 | 'ℚ':'q', 359 | 'ϒ':'r', 360 | 'ᔓ':'s', 361 | 'ͳ':'t', 362 | '℧':'u', 363 | '∨':'v', 364 | 'ω':'w', 365 | 'ϰ':'x', 366 | '¥':'y', 367 | 'ℨ':'z', 368 | } 369 | 370 | uncoolifyDicts.newemoji= { 371 | '🥨':'a', 372 | '🅱':'b', 373 | '↪️':'c', 374 | '↩️':'d', 375 | '📚':'e', 376 | '🏳️':'f', 377 | '📿':'g', 378 | '🍽':'h', 379 | '🔩':'i', 380 | '🃏':'j', 381 | '🔀':'k', 382 | '🛴':'l', 383 | 'Ⓜ️':'m', 384 | '♑️':'n', 385 | '🌍':'o', 386 | '🅿️':'p', 387 | '🍭':'q', 388 | '➰':'r', 389 | '💰':'s', 390 | '☂️':'t', 391 | '🤘🏼':'u', 392 | '🖖':'v', 393 | '🐍':'w', 394 | '⚔️':'x', 395 | '✌️':'y', 396 | '😴':'z', 397 | } 398 | 399 | uncoolifyDicts.mathematicalfraktur = { 400 | '𝔄':'a', 401 | '𝔅':'b', 402 | 'ℭ':'c', 403 | '𝔇':'d', 404 | '𝔈':'e', 405 | '𝔉':'f', 406 | '𝔊':'g', 407 | 'ℌ':'h', 408 | 'ℑ':'i', 409 | '𝔍':'j', 410 | '𝔎':'k', 411 | '𝔏':'l', 412 | '𝔐':'m', 413 | '𝔑':'n', 414 | '𝔒':'o', 415 | '𝔓':'p', 416 | '𝔔':'q', 417 | 'ℜ':'r', 418 | '𝔖':'s', 419 | '𝔗':'t', 420 | '𝔘':'u', 421 | '𝔙':'v', 422 | '𝔚':'w', 423 | '𝔛':'x', 424 | '𝔜':'y', 425 | 'ℨ':'z', 426 | } 427 | 428 | uncoolifyDicts.mirrored = { 429 | 'a': 'a', 430 | 'b': 'b', 431 | 'c': 'c', 432 | 'd': 'd', 433 | 'e': 'e', 434 | 'f': 'f', 435 | 'g': 'g', 436 | 'h': 'h', 437 | 'i': 'i', 438 | 'j': 'j', 439 | 'k': 'k', 440 | 'l': 'l', 441 | 'm': 'm', 442 | 'n': 'n', 443 | 'o': 'o', 444 | 'p': 'p', 445 | 'q': 'q', 446 | 'r': 'r', 447 | 's': 's', 448 | 't': 't', 449 | 'u': 'u', 450 | 'v': 'v', 451 | 'w': 'w', 452 | 'x': 'x', 453 | 'y': 'y', 454 | 'z': 'z', 455 | ' ': ' ' 456 | }; 457 | 458 | uncoolify.findMatchingTheme = function(name) { 459 | let maxMatches = 0; 460 | let themeMatch = null; 461 | for (let [theme, pairs] of Object.entries(uncoolifyDicts)) { 462 | let tempMatches = 0; 463 | for (let letter in pairs) { 464 | if (name.indexOf(letter) > -1) { 465 | if (letter != '_') { 466 | tempMatches += 1; 467 | } 468 | } 469 | } 470 | if (tempMatches > maxMatches) { 471 | maxMatches = tempMatches; 472 | themeMatch = pairs; 473 | if (name.length == tempMatches) { 474 | return themeMatch; 475 | } 476 | } 477 | } 478 | return themeMatch; 479 | }; 480 | 481 | 482 | uncoolify.alphaNumericName = function(name) { 483 | if (typeof(name) != 'string') { 484 | return false; 485 | } 486 | /* mirrored */ 487 | if (name == '‮' + name) { 488 | return '‮' + name; 489 | } 490 | let theme = uncoolify.findMatchingTheme(name); 491 | if (theme == null) { 492 | return ['Are you sure this is a cool name?']; 493 | } else if (theme == uncoolifyDicts.symbolic) { 494 | theme = symbolicRegex; 495 | } else if (theme == uncoolifyDicts.mirrored) { 496 | return [name]; 497 | } 498 | let uncoolName = name.allReplace(theme); 499 | // For uncoolify upside down 500 | if (theme == uncoolifyDicts.upsidedown){ 501 | for(let i = 0; i { 6 | it('should return false if a non-string value is provided', () => { 7 | expect(alphaNumericeName(1)).to.be.false; 8 | expect(alphaNumericeName({})).to.be.false; 9 | expect(alphaNumericeName([])).to.be.false; 10 | }); 11 | 12 | it('should return error message if the name is already uncool', () => { 13 | expect(alphaNumericeName('___')[0]).to.equal('Are you sure this is a cool name?'); 14 | }); 15 | 16 | it('should uncoolify leet', () => { 17 | expect(alphaNumericeName('h3110_b¡g_bo¡')[0]).to.equal('hello big boi'); 18 | }); 19 | 20 | it('should uncoolify round letters', () => { 21 | expect(alphaNumericeName('ⓗⓔⓛⓛⓞ')[0]).to.equal('hello'); 22 | }); 23 | 24 | it('should uncoolify box letters', () => { 25 | expect(alphaNumericeName('🄷🄴🄻🄻🄾')[0]).to.equal('hello'); 26 | }); 27 | 28 | it('should round the first and last and replace all else the specified number eqv.', () => { 29 | expect(alphaNumericeName('ⓗ311ⓞ')[0]).to.equal('hello'); 30 | }); 31 | 32 | it('should uncoolify the symbolic equivalent', () => { 33 | expect(alphaNumericeName('he||o(@!')[0]).to.equal('hellocai'); 34 | }); 35 | 36 | it('should uncoolify emojis', () => { 37 | expect(alphaNumericeName('♓🎗👢👢⚽')[0]).to.equal('hello'); 38 | }); 39 | 40 | it('should uncoolify letters with x above and below', () => { 41 | expect(alphaNumericeName('h͓̽e͓̽l͓̽l͓̽o͓̽')[0]).to.equal('hello'); 42 | }); 43 | 44 | it('should uncoolify flipped letters', () => { 45 | expect(alphaNumericeName('ɥǝʃʃo')[0]).to.equal('hello'); 46 | }); 47 | 48 | it('should uncoolify wavy letters', () => { 49 | expect(alphaNumericeName('ᖺᗴᒪᒪᗢ')[0]).to.equal('hello'); 50 | }); 51 | 52 | it('should uncoolify curr letters', () => { 53 | expect(alphaNumericeName('ⱧɆⱠⱠØ')[0]).to.equal('hello'); 54 | }); 55 | 56 | it('should uncoolify fairy letters', () => { 57 | expect(alphaNumericeName('ᏂᏋᏝᏝᎧ')[0]).to.equal('hello'); 58 | }); 59 | 60 | it('should uncoolify dot letters', () => { 61 | expect(alphaNumericeName('ȟ£ȽȽ¤')[0]).to.equal('hello'); 62 | }); 63 | 64 | it('should uncoolify doublestruck letters', () => { 65 | expect(alphaNumericeName('𝕙𝕖𝕝𝕝𝕠')[0]).to.equal('hello'); 66 | }); 67 | 68 | it('should uncoolify unicodemix letters', () => { 69 | expect(alphaNumericeName('ℌΣ↳↳Φ')[0]).to.equal('hello'); 70 | }); 71 | 72 | it('should uncoolify emoji letters', () => { 73 | expect(alphaNumericeName('🍽📚🛴🛴🌍')[0]).to.equal('hello'); 74 | }); 75 | 76 | it('should uncoolify mathematicalfraktur letters', () => { 77 | expect(alphaNumericeName('ℌ𝔈𝔏𝔏𝔒')[0]).to.equal('hello'); 78 | }); 79 | }) 80 | -------------------------------------------------------------------------------- /shrinkwrap.yaml: -------------------------------------------------------------------------------- 1 | dependencies: 2 | chai: 4.2.0 3 | express: 4.16.3 4 | mocha: 5.2.0 5 | packages: 6 | /accepts/1.3.5: 7 | dependencies: 8 | mime-types: 2.1.18 9 | negotiator: 0.6.1 10 | dev: false 11 | engines: 12 | node: '>= 0.6' 13 | resolution: 14 | integrity: sha1-63d99gEXI6OxTopywIBcjoZ0a9I= 15 | /array-flatten/1.1.1: 16 | dev: false 17 | resolution: 18 | integrity: sha1-ml9pkFGx5wczKPKgCJaLZOopVdI= 19 | /assertion-error/1.1.0: 20 | dev: false 21 | resolution: 22 | integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw== 23 | /balanced-match/1.0.0: 24 | dev: false 25 | resolution: 26 | integrity: sha1-ibTRmasr7kneFk6gK4nORi1xt2c= 27 | /body-parser/1.18.2: 28 | dependencies: 29 | bytes: 3.0.0 30 | content-type: 1.0.4 31 | debug: 2.6.9 32 | depd: 1.1.2 33 | http-errors: 1.6.3 34 | iconv-lite: 0.4.19 35 | on-finished: 2.3.0 36 | qs: 6.5.1 37 | raw-body: 2.3.2 38 | type-is: 1.6.16 39 | dev: false 40 | engines: 41 | node: '>= 0.8' 42 | resolution: 43 | integrity: sha1-h2eKGdhLR9hZuDGZvVm84iKxBFQ= 44 | /brace-expansion/1.1.11: 45 | dependencies: 46 | balanced-match: 1.0.0 47 | concat-map: 0.0.1 48 | dev: false 49 | resolution: 50 | integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== 51 | /browser-stdout/1.3.1: 52 | dev: false 53 | resolution: 54 | integrity: sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw== 55 | /bytes/3.0.0: 56 | dev: false 57 | engines: 58 | node: '>= 0.8' 59 | resolution: 60 | integrity: sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg= 61 | /chai/4.2.0: 62 | dependencies: 63 | assertion-error: 1.1.0 64 | check-error: 1.0.2 65 | deep-eql: 3.0.1 66 | get-func-name: 2.0.0 67 | pathval: 1.1.0 68 | type-detect: 4.0.8 69 | dev: false 70 | engines: 71 | node: '>=4' 72 | resolution: 73 | integrity: sha512-XQU3bhBukrOsQCuwZndwGcCVQHyZi53fQ6Ys1Fym7E4olpIqqZZhhoFJoaKVvV17lWQoXYwgWN2nF5crA8J2jw== 74 | /check-error/1.0.2: 75 | dev: false 76 | resolution: 77 | integrity: sha1-V00xLt2Iu13YkS6Sht1sCu1KrII= 78 | /commander/2.15.1: 79 | dev: false 80 | resolution: 81 | integrity: sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag== 82 | /concat-map/0.0.1: 83 | dev: false 84 | resolution: 85 | integrity: sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= 86 | /content-disposition/0.5.2: 87 | dev: false 88 | engines: 89 | node: '>= 0.6' 90 | resolution: 91 | integrity: sha1-DPaLud318r55YcOoUXjLhdunjLQ= 92 | /content-type/1.0.4: 93 | dev: false 94 | engines: 95 | node: '>= 0.6' 96 | resolution: 97 | integrity: sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA== 98 | /cookie-signature/1.0.6: 99 | dev: false 100 | resolution: 101 | integrity: sha1-4wOogrNCzD7oylE6eZmXNNqzriw= 102 | /cookie/0.3.1: 103 | dev: false 104 | engines: 105 | node: '>= 0.6' 106 | resolution: 107 | integrity: sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s= 108 | /debug/2.6.9: 109 | dependencies: 110 | ms: 2.0.0 111 | dev: false 112 | resolution: 113 | integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== 114 | /debug/3.1.0: 115 | dependencies: 116 | ms: 2.0.0 117 | dev: false 118 | resolution: 119 | integrity: sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g== 120 | /deep-eql/3.0.1: 121 | dependencies: 122 | type-detect: 4.0.8 123 | dev: false 124 | engines: 125 | node: '>=0.12' 126 | resolution: 127 | integrity: sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw== 128 | /depd/1.1.1: 129 | dev: false 130 | engines: 131 | node: '>= 0.6' 132 | resolution: 133 | integrity: sha1-V4O04cRZ8G+lyif5kfPQbnoxA1k= 134 | /depd/1.1.2: 135 | dev: false 136 | engines: 137 | node: '>= 0.6' 138 | resolution: 139 | integrity: sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak= 140 | /destroy/1.0.4: 141 | dev: false 142 | resolution: 143 | integrity: sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA= 144 | /diff/3.5.0: 145 | dev: false 146 | engines: 147 | node: '>=0.3.1' 148 | resolution: 149 | integrity: sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA== 150 | /ee-first/1.1.1: 151 | dev: false 152 | resolution: 153 | integrity: sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= 154 | /encodeurl/1.0.2: 155 | dev: false 156 | engines: 157 | node: '>= 0.8' 158 | resolution: 159 | integrity: sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k= 160 | /escape-html/1.0.3: 161 | dev: false 162 | resolution: 163 | integrity: sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg= 164 | /escape-string-regexp/1.0.5: 165 | dev: false 166 | engines: 167 | node: '>=0.8.0' 168 | resolution: 169 | integrity: sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= 170 | /etag/1.8.1: 171 | dev: false 172 | engines: 173 | node: '>= 0.6' 174 | resolution: 175 | integrity: sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc= 176 | /express/4.16.3: 177 | dependencies: 178 | accepts: 1.3.5 179 | array-flatten: 1.1.1 180 | body-parser: 1.18.2 181 | content-disposition: 0.5.2 182 | content-type: 1.0.4 183 | cookie: 0.3.1 184 | cookie-signature: 1.0.6 185 | debug: 2.6.9 186 | depd: 1.1.2 187 | encodeurl: 1.0.2 188 | escape-html: 1.0.3 189 | etag: 1.8.1 190 | finalhandler: 1.1.1 191 | fresh: 0.5.2 192 | merge-descriptors: 1.0.1 193 | methods: 1.1.2 194 | on-finished: 2.3.0 195 | parseurl: 1.3.2 196 | path-to-regexp: 0.1.7 197 | proxy-addr: 2.0.3 198 | qs: 6.5.1 199 | range-parser: 1.2.0 200 | safe-buffer: 5.1.1 201 | send: 0.16.2 202 | serve-static: 1.13.2 203 | setprototypeof: 1.1.0 204 | statuses: 1.4.0 205 | type-is: 1.6.16 206 | utils-merge: 1.0.1 207 | vary: 1.1.2 208 | dev: false 209 | engines: 210 | node: '>= 0.10.0' 211 | resolution: 212 | integrity: sha1-avilAjUNsyRuzEvs9rWjTSL37VM= 213 | /finalhandler/1.1.1: 214 | dependencies: 215 | debug: 2.6.9 216 | encodeurl: 1.0.2 217 | escape-html: 1.0.3 218 | on-finished: 2.3.0 219 | parseurl: 1.3.2 220 | statuses: 1.4.0 221 | unpipe: 1.0.0 222 | dev: false 223 | engines: 224 | node: '>= 0.8' 225 | resolution: 226 | integrity: sha512-Y1GUDo39ez4aHAw7MysnUD5JzYX+WaIj8I57kO3aEPT1fFRL4sr7mjei97FgnwhAyyzRYmQZaTHb2+9uZ1dPtg== 227 | /forwarded/0.1.2: 228 | dev: false 229 | engines: 230 | node: '>= 0.6' 231 | resolution: 232 | integrity: sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ= 233 | /fresh/0.5.2: 234 | dev: false 235 | engines: 236 | node: '>= 0.6' 237 | resolution: 238 | integrity: sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac= 239 | /fs.realpath/1.0.0: 240 | dev: false 241 | resolution: 242 | integrity: sha1-FQStJSMVjKpA20onh8sBQRmU6k8= 243 | /get-func-name/2.0.0: 244 | dev: false 245 | resolution: 246 | integrity: sha1-6td0q+5y4gQJQzoGY2YCPdaIekE= 247 | /glob/7.1.2: 248 | dependencies: 249 | fs.realpath: 1.0.0 250 | inflight: 1.0.6 251 | inherits: 2.0.3 252 | minimatch: 3.0.4 253 | once: 1.4.0 254 | path-is-absolute: 1.0.1 255 | dev: false 256 | resolution: 257 | integrity: sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ== 258 | /growl/1.10.5: 259 | dev: false 260 | engines: 261 | node: '>=4.x' 262 | resolution: 263 | integrity: sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA== 264 | /has-flag/3.0.0: 265 | dev: false 266 | engines: 267 | node: '>=4' 268 | resolution: 269 | integrity: sha1-tdRU3CGZriJWmfNGfloH87lVuv0= 270 | /he/1.1.1: 271 | dev: false 272 | hasBin: true 273 | resolution: 274 | integrity: sha1-k0EP0hsAlzUVH4howvJx80J+I/0= 275 | /http-errors/1.6.2: 276 | dependencies: 277 | depd: 1.1.1 278 | inherits: 2.0.3 279 | setprototypeof: 1.0.3 280 | statuses: 1.5.0 281 | dev: false 282 | engines: 283 | node: '>= 0.6' 284 | resolution: 285 | integrity: sha1-CgAsyFcHGSp+eUbO7cERVfYOxzY= 286 | /http-errors/1.6.3: 287 | dependencies: 288 | depd: 1.1.2 289 | inherits: 2.0.3 290 | setprototypeof: 1.1.0 291 | statuses: 1.5.0 292 | dev: false 293 | engines: 294 | node: '>= 0.6' 295 | resolution: 296 | integrity: sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0= 297 | /iconv-lite/0.4.19: 298 | dev: false 299 | engines: 300 | node: '>=0.10.0' 301 | resolution: 302 | integrity: sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ== 303 | /inflight/1.0.6: 304 | dependencies: 305 | once: 1.4.0 306 | wrappy: 1.0.2 307 | dev: false 308 | resolution: 309 | integrity: sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= 310 | /inherits/2.0.3: 311 | dev: false 312 | resolution: 313 | integrity: sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= 314 | /ipaddr.js/1.6.0: 315 | dev: false 316 | engines: 317 | node: '>= 0.10' 318 | resolution: 319 | integrity: sha1-4/o1e3c9phnybpXwSdBVxyeW+Gs= 320 | /media-typer/0.3.0: 321 | dev: false 322 | engines: 323 | node: '>= 0.6' 324 | resolution: 325 | integrity: sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g= 326 | /merge-descriptors/1.0.1: 327 | dev: false 328 | resolution: 329 | integrity: sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E= 330 | /methods/1.1.2: 331 | dev: false 332 | engines: 333 | node: '>= 0.6' 334 | resolution: 335 | integrity: sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4= 336 | /mime-db/1.33.0: 337 | dev: false 338 | engines: 339 | node: '>= 0.6' 340 | resolution: 341 | integrity: sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ== 342 | /mime-types/2.1.18: 343 | dependencies: 344 | mime-db: 1.33.0 345 | dev: false 346 | engines: 347 | node: '>= 0.6' 348 | resolution: 349 | integrity: sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ== 350 | /mime/1.4.1: 351 | dev: false 352 | hasBin: true 353 | resolution: 354 | integrity: sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ== 355 | /minimatch/3.0.4: 356 | dependencies: 357 | brace-expansion: 1.1.11 358 | dev: false 359 | resolution: 360 | integrity: sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== 361 | /minimist/0.0.8: 362 | dev: false 363 | resolution: 364 | integrity: sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0= 365 | /mkdirp/0.5.1: 366 | dependencies: 367 | minimist: 0.0.8 368 | dev: false 369 | hasBin: true 370 | resolution: 371 | integrity: sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM= 372 | /mocha/5.2.0: 373 | dependencies: 374 | browser-stdout: 1.3.1 375 | commander: 2.15.1 376 | debug: 3.1.0 377 | diff: 3.5.0 378 | escape-string-regexp: 1.0.5 379 | glob: 7.1.2 380 | growl: 1.10.5 381 | he: 1.1.1 382 | minimatch: 3.0.4 383 | mkdirp: 0.5.1 384 | supports-color: 5.4.0 385 | dev: false 386 | engines: 387 | node: '>= 4.0.0' 388 | hasBin: true 389 | resolution: 390 | integrity: sha512-2IUgKDhc3J7Uug+FxMXuqIyYzH7gJjXECKe/w43IGgQHTSj3InJi+yAA7T24L9bQMRKiUEHxEX37G5JpVUGLcQ== 391 | /ms/2.0.0: 392 | dev: false 393 | resolution: 394 | integrity: sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= 395 | /negotiator/0.6.1: 396 | dev: false 397 | engines: 398 | node: '>= 0.6' 399 | resolution: 400 | integrity: sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk= 401 | /on-finished/2.3.0: 402 | dependencies: 403 | ee-first: 1.1.1 404 | dev: false 405 | engines: 406 | node: '>= 0.8' 407 | resolution: 408 | integrity: sha1-IPEzZIGwg811M3mSoWlxqi2QaUc= 409 | /once/1.4.0: 410 | dependencies: 411 | wrappy: 1.0.2 412 | dev: false 413 | resolution: 414 | integrity: sha1-WDsap3WWHUsROsF9nFC6753Xa9E= 415 | /parseurl/1.3.2: 416 | dev: false 417 | engines: 418 | node: '>= 0.8' 419 | resolution: 420 | integrity: sha1-/CidTtiZMRlGDBViUyYs3I3mW/M= 421 | /path-is-absolute/1.0.1: 422 | dev: false 423 | engines: 424 | node: '>=0.10.0' 425 | resolution: 426 | integrity: sha1-F0uSaHNVNP+8es5r9TpanhtcX18= 427 | /path-to-regexp/0.1.7: 428 | dev: false 429 | resolution: 430 | integrity: sha1-32BBeABfUi8V60SQ5yR6G/qmf4w= 431 | /pathval/1.1.0: 432 | dev: false 433 | resolution: 434 | integrity: sha1-uULm1L3mUwBe9rcTYd74cn0GReA= 435 | /proxy-addr/2.0.3: 436 | dependencies: 437 | forwarded: 0.1.2 438 | ipaddr.js: 1.6.0 439 | dev: false 440 | engines: 441 | node: '>= 0.10' 442 | resolution: 443 | integrity: sha512-jQTChiCJteusULxjBp8+jftSQE5Obdl3k4cnmLA6WXtK6XFuWRnvVL7aCiBqaLPM8c4ph0S4tKna8XvmIwEnXQ== 444 | /qs/6.5.1: 445 | dev: false 446 | engines: 447 | node: '>=0.6' 448 | resolution: 449 | integrity: sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A== 450 | /range-parser/1.2.0: 451 | dev: false 452 | engines: 453 | node: '>= 0.6' 454 | resolution: 455 | integrity: sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4= 456 | /raw-body/2.3.2: 457 | dependencies: 458 | bytes: 3.0.0 459 | http-errors: 1.6.2 460 | iconv-lite: 0.4.19 461 | unpipe: 1.0.0 462 | dev: false 463 | engines: 464 | node: '>= 0.8' 465 | resolution: 466 | integrity: sha1-vNYMd9Prk83gBQKVw/N5OJvIj4k= 467 | /safe-buffer/5.1.1: 468 | dev: false 469 | resolution: 470 | integrity: sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg== 471 | /send/0.16.2: 472 | dependencies: 473 | debug: 2.6.9 474 | depd: 1.1.2 475 | destroy: 1.0.4 476 | encodeurl: 1.0.2 477 | escape-html: 1.0.3 478 | etag: 1.8.1 479 | fresh: 0.5.2 480 | http-errors: 1.6.3 481 | mime: 1.4.1 482 | ms: 2.0.0 483 | on-finished: 2.3.0 484 | range-parser: 1.2.0 485 | statuses: 1.4.0 486 | dev: false 487 | engines: 488 | node: '>= 0.8.0' 489 | resolution: 490 | integrity: sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw== 491 | /serve-static/1.13.2: 492 | dependencies: 493 | encodeurl: 1.0.2 494 | escape-html: 1.0.3 495 | parseurl: 1.3.2 496 | send: 0.16.2 497 | dev: false 498 | engines: 499 | node: '>= 0.8.0' 500 | resolution: 501 | integrity: sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw== 502 | /setprototypeof/1.0.3: 503 | dev: false 504 | resolution: 505 | integrity: sha1-ZlZ+NwQ+608E2RvWWMDL77VbjgQ= 506 | /setprototypeof/1.1.0: 507 | dev: false 508 | resolution: 509 | integrity: sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ== 510 | /statuses/1.4.0: 511 | dev: false 512 | engines: 513 | node: '>= 0.6' 514 | resolution: 515 | integrity: sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew== 516 | /statuses/1.5.0: 517 | dev: false 518 | engines: 519 | node: '>= 0.6' 520 | resolution: 521 | integrity: sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow= 522 | /supports-color/5.4.0: 523 | dependencies: 524 | has-flag: 3.0.0 525 | dev: false 526 | engines: 527 | node: '>=4' 528 | resolution: 529 | integrity: sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w== 530 | /type-detect/4.0.8: 531 | dev: false 532 | engines: 533 | node: '>=4' 534 | resolution: 535 | integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== 536 | /type-is/1.6.16: 537 | dependencies: 538 | media-typer: 0.3.0 539 | mime-types: 2.1.18 540 | dev: false 541 | engines: 542 | node: '>= 0.6' 543 | resolution: 544 | integrity: sha512-HRkVv/5qY2G6I8iab9cI7v1bOIdhm94dVjQCPFElW9W+3GeDOSHmy2EBYe4VTApuzolPcmgFTN3ftVJRKR2J9Q== 545 | /unpipe/1.0.0: 546 | dev: false 547 | engines: 548 | node: '>= 0.8' 549 | resolution: 550 | integrity: sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw= 551 | /utils-merge/1.0.1: 552 | dev: false 553 | engines: 554 | node: '>= 0.4.0' 555 | resolution: 556 | integrity: sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM= 557 | /vary/1.1.2: 558 | dev: false 559 | engines: 560 | node: '>= 0.8' 561 | resolution: 562 | integrity: sha1-IpnwLG3tMNSllhsLn3RSShj2NPw= 563 | /wrappy/1.0.2: 564 | dev: false 565 | resolution: 566 | integrity: sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= 567 | registry: 'https://registry.npmjs.org/' 568 | shrinkwrapMinorVersion: 9 569 | shrinkwrapVersion: 3 570 | specifiers: 571 | chai: ^4.2.0 572 | express: ^4.16.3 573 | mocha: ^5.2.0 574 | -------------------------------------------------------------------------------- /views/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Rem1x y0ur name 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 |
19 |

20 | 🄴nt3ⓡ 🅈0ⓤⓡ nam3 1n th3 b0x 21 |

22 |
23 | 24 | 25 | 26 |
27 |
28 |
29 |
30 |
31 |
32 | 33 | submit input for demo 34 | 35 |
36 |
37 |
38 |
39 |
40 |

Your cool names

41 |
42 |
43 |
    44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 | 53 | 56 | 57 | 58 | 61 | 62 | 63 | 64 | --------------------------------------------------------------------------------