From 60a5bf8d68e1fe8c460f41e384b185fb2ba0f50b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9e=20Kooi?= Date: Fri, 19 Jul 2019 13:08:39 +0200 Subject: [PATCH 01/29] Exclude .git from npm publish npm is supposed to ignore this by default, but in v2.0.2 the `.git` folder was included in the published hexo-filter-github-emojis module. This causes problems when doing `npm install` again, because it sees a git repo where it expects a bare npm package. ``` npm ERR! path ./node_modules/hexo-filter-github-emojis npm ERR! code EISGIT npm ERR! git ./node_modules/hexo-filter-github-emojis: Appears to be a git repo or submodule. npm ERR! git ./node_modules/hexo-filter-github-emojis npm ERR! git Refusing to remove it. Update manually, npm ERR! git or move it out of the way first. ``` If you publish again with this patch, all should be fine :v: Thanks for this package! --- .npmignore | 3 ++- package-lock.json | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/.npmignore b/.npmignore index 7c092c2..278e482 100644 --- a/.npmignore +++ b/.npmignore @@ -6,4 +6,5 @@ coverage/ .travis.yml gulpfile.js .idea/ -appveyor.yml \ No newline at end of file +appveyor.yml +.git/ diff --git a/package-lock.json b/package-lock.json index f7c8321..aa523f2 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "hexo-filter-github-emojis", - "version": "2.0.0", + "version": "2.0.2", "lockfileVersion": 1, "requires": true, "dependencies": { From 04a3fb15822ff481ac889a3fd4083af9e7018d58 Mon Sep 17 00:00:00 2001 From: CRIMX Date: Fri, 19 Jul 2019 19:24:00 +0800 Subject: [PATCH 02/29] bump version --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index a204259..0286566 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "hexo-filter-github-emojis", - "version": "2.0.2", + "version": "2.0.3", "description": "A Hexo plugin that adds emojis support, using Github Emojis API", "main": "index", "repository": "crimx/hexo-filter-github-emojis", From c95e6117801bd81ad2ed64e564087f0c63f82f50 Mon Sep 17 00:00:00 2001 From: crimx Date: Thu, 15 Aug 2019 01:42:50 +0800 Subject: [PATCH 03/29] replace cheerio with jsdom --- index.js | 39 ++-- package-lock.json | 480 +++++++++++++++++++++++++++++++++------------- package.json | 4 +- 3 files changed, 366 insertions(+), 157 deletions(-) diff --git a/index.js b/index.js index 08135e7..cbf098d 100644 --- a/index.js +++ b/index.js @@ -4,7 +4,7 @@ const _ = require('lodash') const path = require('path') const fs = require('fs') -const cheerio = require('cheerio') +const { JSDOM } = require('jsdom') var options = _.assign({ enable: true, @@ -29,11 +29,12 @@ if (options.enable !== false) { hexo.extend.filter.register('after_post_render', data => { if (!options.inject && data['no-emoji']) { return data } - const $ = cheerio.load(data.content, {decodeEntities: false}) - const excerpt = cheerio.load(data.excerpt, {decodeEntities: false}) + const $content = new JSDOM(data.content) + const $excerpt = new JSDOM(data.excerpt) if (options.inject) { - $('body').append(``) + ` + $content.window.document.body.appendChild($script) } if (!data['no-emoji']) { - replaceColons($('body')[0], $, emojis) - replaceColons(excerpt('body')[0], excerpt, emojis) + replaceColons($content.window.document.body, emojis) + replaceColons($excerpt.window.document.body, emojis) } - data.content = $('body').html() - data.excerpt = excerpt('body').html() + data.content = $content.window.document.body.innerHTML + data.excerpt = $excerpt.window.document.body.innerHTML return data }) @@ -68,22 +70,23 @@ if (options.enable !== false) { hexo.extend.tag.register('github_emoji', args => renderEmoji(emojis, args[0])) } -function replaceColons (node, $, emojis) { - node.children.forEach(child => { - if (child.type === 'text') { +function replaceColons (node, emojis) { + if (!node || !node.childNodes) { return } + for (let i = node.childNodes.length - 1; i >= 0; i--) { + const child = node.childNodes[i] + if (child.tagName === 'PRE' || child.tagName === 'CODE') { return } + if (child.nodeType === 3) { const content = child.data.replace( /:(\w+):/ig, (match, p1) => emojis[p1] ? renderEmoji(emojis, p1) : match, ) if (content !== child.data) { - $(child).replaceWith($.parseHTML(content)) - } - } else if (child.type === 'tag') { - if (child.name !== 'pre' && child.name !== 'code') { - replaceColons(child, $, emojis) + child.replaceWith(JSDOM.fragment(content)) } + } else { + replaceColons(child, emojis) } - }) + } } function loadCustomEmojis (customEmojis) { diff --git a/package-lock.json b/package-lock.json index aa523f2..41eb691 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,13 +1,32 @@ { "name": "hexo-filter-github-emojis", - "version": "2.0.2", + "version": "2.0.3", "lockfileVersion": 1, "requires": true, "dependencies": { - "@types/node": { - "version": "10.11.4", - "resolved": "https://registry.npmjs.org/@types/node/-/node-10.11.4.tgz", - "integrity": "sha512-ojnbBiKkZFYRfQpmtnnWTMw+rzGp/JiystjluW9jgN3VzRwilXddJ6aGQ9V/7iuDG06SBgn7ozW9k3zcAnYjYQ==" + "abab": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.0.tgz", + "integrity": "sha512-sY5AXXVZv4Y1VACTtR11UJCPHHudgY5i26Qj5TypE6DKlIApbwb5uqhXcJ5UUGbvZNRh7EeIoW+LrJumBsKp7w==" + }, + "acorn": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.3.0.tgz", + "integrity": "sha512-/czfa8BwS88b9gWQVhc8eknunSA2DoJpJyTQkhheIf5E48u1N0R4q/YxxsAeqRrmK9TQ/uYfgLDfZo91UlANIA==" + }, + "acorn-globals": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-4.3.3.tgz", + "integrity": "sha512-vkR40VwS2SYO98AIeFvzWWh+xyc2qi9s7OoXSFEGIP/rOJKzjnhykaZJNnHdoq4BL2gGxI5EZOU16z896EYnOQ==", + "requires": { + "acorn": "^6.0.1", + "acorn-walk": "^6.0.1" + } + }, + "acorn-walk": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-6.2.0.tgz", + "integrity": "sha512-7evsyfH1cLOCdAzZAd43Cic04yKydNx0cF+7tiA19p1XnLLPU4dpCQOqpjqwokFe//vS0QqfqqjCS2JkiIs0cA==" }, "ajv": { "version": "5.5.2", @@ -20,6 +39,11 @@ "json-schema-traverse": "^0.3.0" } }, + "array-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-equal/-/array-equal-1.0.0.tgz", + "integrity": "sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM=" + }, "asn1": { "version": "0.2.4", "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", @@ -33,6 +57,11 @@ "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" }, + "async-limiter": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz", + "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==" + }, "asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", @@ -57,29 +86,16 @@ "tweetnacl": "^0.14.3" } }, - "boolbase": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", - "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=" + "browser-process-hrtime": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-0.1.3.tgz", + "integrity": "sha512-bRFnI4NnjO6cnyLmOV/7PVoDEMJChlcfN0z4s1YMBY989/SvlfMI1lgCnkFUs53e9gQF+w7qu7XdllSTiSl8Aw==" }, "caseless": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" }, - "cheerio": { - "version": "1.0.0-rc.2", - "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.2.tgz", - "integrity": "sha1-S59TqBsn5NXawxwP/Qz6A8xoMNs=", - "requires": { - "css-select": "~1.2.0", - "dom-serializer": "~0.1.0", - "entities": "~1.1.1", - "htmlparser2": "^3.9.1", - "lodash": "^4.15.0", - "parse5": "^3.0.1" - } - }, "co": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", @@ -98,21 +114,18 @@ "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" }, - "css-select": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz", - "integrity": "sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg=", - "requires": { - "boolbase": "~1.0.0", - "css-what": "2.1", - "domutils": "1.5.1", - "nth-check": "~1.0.1" - } + "cssom": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", + "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==" }, - "css-what": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-2.1.0.tgz", - "integrity": "sha1-lGfQMsOM+u+58teVASUwYvh/ob0=" + "cssstyle": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-1.4.0.tgz", + "integrity": "sha512-GBrLZYZ4X4x6/QEoBnIrqb8B/f5l4+8me2dkom/j1Gtbxy0kBv6OGzKuAsGM75bkGwGAFkt56Iwg28S3XTZgSA==", + "requires": { + "cssom": "0.3.x" + } }, "dashdash": { "version": "1.14.1", @@ -122,47 +135,32 @@ "assert-plus": "^1.0.0" } }, + "data-urls": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-1.1.0.tgz", + "integrity": "sha512-YTWYI9se1P55u58gL5GkQHW4P6VJBJ5iBT+B5a7i2Tjadhv52paJG0qHX4A0OR6/t52odI64KP2YvFpkDOi3eQ==", + "requires": { + "abab": "^2.0.0", + "whatwg-mimetype": "^2.2.0", + "whatwg-url": "^7.0.0" + } + }, + "deep-is": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", + "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=" + }, "delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" }, - "dom-serializer": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.0.tgz", - "integrity": "sha1-BzxpdUbOB4DOI75KKOKT5AvDDII=", + "domexception": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/domexception/-/domexception-1.0.1.tgz", + "integrity": "sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug==", "requires": { - "domelementtype": "~1.1.1", - "entities": "~1.1.1" - }, - "dependencies": { - "domelementtype": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.1.3.tgz", - "integrity": "sha1-vSh3PiZCiBrsUVRJJCmcXNgiGFs=" - } - } - }, - "domelementtype": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.0.tgz", - "integrity": "sha1-sXrtguirWeUt2cGbF1bg/BhyBMI=" - }, - "domhandler": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz", - "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==", - "requires": { - "domelementtype": "1" - } - }, - "domutils": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz", - "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=", - "requires": { - "dom-serializer": "0", - "domelementtype": "1" + "webidl-conversions": "^4.0.2" } }, "ecc-jsbn": { @@ -175,10 +173,32 @@ "safer-buffer": "^2.1.0" } }, - "entities": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.1.tgz", - "integrity": "sha1-blwtClYhtdra7O+AuQ7ftc13cvA=" + "escodegen": { + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.12.0.tgz", + "integrity": "sha512-TuA+EhsanGcme5T3R0L80u4t8CpbXQjegRmf7+FPTJrtCTErXFeelblRgHQa1FofEzqYYJmJ/OqjTwREp9qgmg==", + "requires": { + "esprima": "^3.1.3", + "estraverse": "^4.2.0", + "esutils": "^2.0.2", + "optionator": "^0.8.1", + "source-map": "~0.6.1" + } + }, + "esprima": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", + "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=" + }, + "estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==" + }, + "esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==" }, "extend": { "version": "3.0.2", @@ -200,6 +220,11 @@ "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=" }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=" + }, "forever-agent": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", @@ -247,17 +272,12 @@ "har-schema": "^2.0.0" } }, - "htmlparser2": { - "version": "3.9.2", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.9.2.tgz", - "integrity": "sha1-G9+HrMoPP55T+k/M6w9LTLsAszg=", + "html-encoding-sniffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz", + "integrity": "sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw==", "requires": { - "domelementtype": "^1.3.0", - "domhandler": "^2.3.0", - "domutils": "^1.5.1", - "entities": "^1.1.1", - "inherits": "^2.0.1", - "readable-stream": "^2.0.2" + "whatwg-encoding": "^1.0.1" } }, "http-signature": { @@ -270,21 +290,24 @@ "sshpk": "^1.7.0" } }, - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "ip-regex": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-2.1.0.tgz", + "integrity": "sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk=" }, "is-typedarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" - }, "isstream": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", @@ -296,6 +319,61 @@ "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", "optional": true }, + "jsdom": { + "version": "15.1.1", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-15.1.1.tgz", + "integrity": "sha512-cQZRBB33arrDAeCrAEWn1U3SvrvC8XysBua9Oqg1yWrsY/gYcusloJC3RZJXuY5eehSCmws8f2YeliCqGSkrtQ==", + "requires": { + "abab": "^2.0.0", + "acorn": "^6.1.1", + "acorn-globals": "^4.3.2", + "array-equal": "^1.0.0", + "cssom": "^0.3.6", + "cssstyle": "^1.2.2", + "data-urls": "^1.1.0", + "domexception": "^1.0.1", + "escodegen": "^1.11.1", + "html-encoding-sniffer": "^1.0.2", + "nwsapi": "^2.1.4", + "parse5": "5.1.0", + "pn": "^1.1.0", + "request": "^2.88.0", + "request-promise-native": "^1.0.7", + "saxes": "^3.1.9", + "symbol-tree": "^3.2.2", + "tough-cookie": "^3.0.1", + "w3c-hr-time": "^1.0.1", + "w3c-xmlserializer": "^1.1.2", + "webidl-conversions": "^4.0.2", + "whatwg-encoding": "^1.0.5", + "whatwg-mimetype": "^2.3.0", + "whatwg-url": "^7.0.0", + "ws": "^7.0.0", + "xml-name-validator": "^3.0.0" + }, + "dependencies": { + "parse5": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.0.tgz", + "integrity": "sha512-fxNG2sQjHvlVAYmzBZS9YlDp6PTSSDwa98vkD4QgVDDCAo84z5X1t5XyJQ62ImdLXx5NdIIfihey6xpum9/gRQ==" + }, + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" + }, + "tough-cookie": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-3.0.1.tgz", + "integrity": "sha512-yQyJ0u4pZsv9D4clxO69OEjLWYw+jbgspjTue4lTQZLfV0c5l1VmK2y1JK8E9ahdpltPOaAThPcp5nKPUgSnsg==", + "requires": { + "ip-regex": "^2.1.0", + "psl": "^1.1.28", + "punycode": "^2.1.1" + } + } + } + }, "json-schema": { "version": "0.2.3", "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", @@ -322,10 +400,24 @@ "verror": "1.10.0" } }, + "levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "requires": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + } + }, "lodash": { - "version": "4.17.11", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", - "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==" + "version": "4.17.15", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", + "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==" + }, + "lodash.sortby": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", + "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=" }, "mime-db": { "version": "1.36.0", @@ -340,25 +432,27 @@ "mime-db": "~1.36.0" } }, - "nth-check": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.1.tgz", - "integrity": "sha1-mSms32KPwsQQmN6rgqxYDPFJquQ=", - "requires": { - "boolbase": "~1.0.0" - } + "nwsapi": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.1.4.tgz", + "integrity": "sha512-iGfd9Y6SFdTNldEy2L0GUhcarIutFmk+MPWIn9dmj8NMIup03G08uUF2KGbbmv/Ux4RT0VZJoP/sVbWA6d/VIw==" }, "oauth-sign": { "version": "0.9.0", "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==" }, - "parse5": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-3.0.3.tgz", - "integrity": "sha512-rgO9Zg5LLLkfJF9E6CCmXlSE4UVceloys8JrFqCcHloC3usd/kJCyPDwH2SOlzix2j3xaP9sUX3e8+kvkuleAA==", + "optionator": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz", + "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=", "requires": { - "@types/node": "*" + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.4", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "wordwrap": "~1.0.0" } }, "performance-now": { @@ -366,10 +460,15 @@ "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" }, - "process-nextick-args": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", - "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==" + "pn": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/pn/-/pn-1.1.0.tgz", + "integrity": "sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA==" + }, + "prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=" }, "psl": { "version": "1.1.29", @@ -391,20 +490,6 @@ "resolved": "https://registry.npmjs.org/random-ua/-/random-ua-0.0.6.tgz", "integrity": "sha1-63CQG3Kk/guNOrdSprJRIuQMCtc=" }, - "readable-stream": { - "version": "2.3.6", - "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", - "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, "request": { "version": "2.88.0", "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz", @@ -432,6 +517,24 @@ "uuid": "^3.3.2" } }, + "request-promise-core": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.2.tgz", + "integrity": "sha512-UHYyq1MO8GsefGEt7EprS8UrXsm1TxEvFUX1IMTuSLU2Rh7fTIdFtl8xD7JiEYiWU2dl+NYAjCTksTehQUxPag==", + "requires": { + "lodash": "^4.17.11" + } + }, + "request-promise-native": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.7.tgz", + "integrity": "sha512-rIMnbBdgNViL37nZ1b3L/VfPOpSi0TqVDQPAvO6U14lMzOLrt5nilxCQqtDKhZeDiW0/hkCXGoQjhgJd/tCh6w==", + "requires": { + "request-promise-core": "1.1.2", + "stealthy-require": "^1.1.1", + "tough-cookie": "^2.3.3" + } + }, "safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", @@ -442,6 +545,20 @@ "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, + "saxes": { + "version": "3.1.11", + "resolved": "https://registry.npmjs.org/saxes/-/saxes-3.1.11.tgz", + "integrity": "sha512-Ydydq3zC+WYDJK1+gRxRapLIED9PWeSuuS41wqyoRmzvhhh9nc+QQrVMKJYzJFULazeGhzSV0QleN2wD3boh2g==", + "requires": { + "xmlchars": "^2.1.1" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "optional": true + }, "sshpk": { "version": "1.14.2", "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.14.2.tgz", @@ -458,13 +575,15 @@ "tweetnacl": "~0.14.0" } }, - "string_decoder": { + "stealthy-require": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "requires": { - "safe-buffer": "~5.1.0" - } + "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", + "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=" + }, + "symbol-tree": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", + "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==" }, "tough-cookie": { "version": "2.4.3", @@ -475,6 +594,21 @@ "punycode": "^1.4.1" } }, + "tr46": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", + "integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=", + "requires": { + "punycode": "^2.1.0" + }, + "dependencies": { + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" + } + } + }, "tunnel-agent": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", @@ -489,10 +623,13 @@ "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", "optional": true }, - "util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + "type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", + "requires": { + "prelude-ls": "~1.1.2" + } }, "uuid": { "version": "3.3.2", @@ -508,6 +645,75 @@ "core-util-is": "1.0.2", "extsprintf": "^1.2.0" } + }, + "w3c-hr-time": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.1.tgz", + "integrity": "sha1-gqwr/2PZUOqeMYmlimViX+3xkEU=", + "requires": { + "browser-process-hrtime": "^0.1.2" + } + }, + "w3c-xmlserializer": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-1.1.2.tgz", + "integrity": "sha512-p10l/ayESzrBMYWRID6xbuCKh2Fp77+sA0doRuGn4tTIMrrZVeqfpKjXHY+oDh3K4nLdPgNwMTVP6Vp4pvqbNg==", + "requires": { + "domexception": "^1.0.1", + "webidl-conversions": "^4.0.2", + "xml-name-validator": "^3.0.0" + } + }, + "webidl-conversions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", + "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==" + }, + "whatwg-encoding": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz", + "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==", + "requires": { + "iconv-lite": "0.4.24" + } + }, + "whatwg-mimetype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", + "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==" + }, + "whatwg-url": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.0.0.tgz", + "integrity": "sha512-37GeVSIJ3kn1JgKyjiYNmSLP1yzbpb29jdmwBSgkD9h40/hyrR/OifpVUndji3tmwGgD8qpw7iQu3RSbCrBpsQ==", + "requires": { + "lodash.sortby": "^4.7.0", + "tr46": "^1.0.1", + "webidl-conversions": "^4.0.2" + } + }, + "wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=" + }, + "ws": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.1.2.tgz", + "integrity": "sha512-gftXq3XI81cJCgkUiAVixA0raD9IVmXqsylCrjRygw4+UOOGzPoxnQ6r/CnVL9i+mDncJo94tSkyrtuuQVBmrg==", + "requires": { + "async-limiter": "^1.0.0" + } + }, + "xml-name-validator": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", + "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==" + }, + "xmlchars": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.1.1.tgz", + "integrity": "sha512-7hew1RPJ1iIuje/Y01bGD/mXokXxegAgVS+e+E0wSi2ILHQkYAH1+JXARwTjZSM4Z4Z+c73aKspEcqj+zPPL/w==" } } } diff --git a/package.json b/package.json index 0286566..536ebd2 100644 --- a/package.json +++ b/package.json @@ -19,8 +19,8 @@ "author": "CRIMX (http://blog.crimx.com)", "license": "MIT", "dependencies": { - "cheerio": "^1.0.0-rc.2", - "lodash": "^4.17.4", + "jsdom": "^15.1.1", + "lodash": "^4.17.15", "random-ua": "0.0.6", "request": "^2.83.0" } From 73205070cfaf0a2e1eb226dfab730b9209b67354 Mon Sep 17 00:00:00 2001 From: crimx Date: Thu, 15 Aug 2019 01:42:57 +0800 Subject: [PATCH 04/29] update emoji --- emojis.json | 33 ++++++++++++++++++++------------- update-emojis.js | 6 ++---- 2 files changed, 22 insertions(+), 17 deletions(-) diff --git a/emojis.json b/emojis.json index 1915f5e..cf7ab15 100644 --- a/emojis.json +++ b/emojis.json @@ -427,6 +427,9 @@ "1f3e7" ] }, + "atom": { + "src": "https://github.githubassets.com/images/icons/emoji/atom.png?v8" + }, "atom_symbol": { "src": "https://github.githubassets.com/images/icons/emoji/unicode/269b.png?v8", "codepoints": [ @@ -2639,6 +2642,9 @@ "1f50c" ] }, + "electron": { + "src": "https://github.githubassets.com/images/icons/emoji/electron.png?v8" + }, "elephant": { "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f418.png?v8", "codepoints": [ @@ -7110,6 +7116,19 @@ "1f1f9" ] }, + "sassy_man": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f481-2642.png?v8", + "codepoints": [ + "1f481", + "2642" + ] + }, + "sassy_woman": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f481.png?v8", + "codepoints": [ + "1f481" + ] + }, "satellite": { "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f4e1.png?v8", "codepoints": [ @@ -9379,17 +9398,5 @@ "codepoints": [ "1f4a4" ] - }, - "atom": { - "src": "https://github.githubassets.com/images/icons/emoji/atom.png?v8" - }, - "electron": { - "src": "https://github.githubassets.com/images/icons/emoji/electron.png?v8" - }, - "message": { - "src": "API rate limit exceeded for 35.188.73.34. (But here's the good news: Authenticated requests get a higher rate limit. Check out the documentation for more details.)" - }, - "documentation_url": { - "src": "https://developer.github.com/v3/#rate-limiting" } -} +} \ No newline at end of file diff --git a/update-emojis.js b/update-emojis.js index cbee39d..cc5e8ea 100644 --- a/update-emojis.js +++ b/update-emojis.js @@ -30,18 +30,16 @@ request({ return emojis }, {}) - const emojis = _.assign({}, require('./emojis.json'), latestEmojis) - // update local backup fs.writeFile( path.join(__dirname, 'emojis.json'), - JSON.stringify(emojis, null, ' '), + JSON.stringify(latestEmojis, null, ' '), function (err) { if (err) { console.warn(err) process.exit(1) } else { - console.log(`Update ${Object.keys(emojis).length} emojis`) + console.log(`Update ${Object.keys(latestEmojis).length} emojis`) } }, ) From f31170f9f65dcadf819c7b4acfd371332d906a13 Mon Sep 17 00:00:00 2001 From: crimx Date: Thu, 15 Aug 2019 01:43:33 +0800 Subject: [PATCH 05/29] bump version --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 536ebd2..43f0a21 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "hexo-filter-github-emojis", - "version": "2.0.3", + "version": "2.1.0", "description": "A Hexo plugin that adds emojis support, using Github Emojis API", "main": "index", "repository": "crimx/hexo-filter-github-emojis", From 10e9ba2871b5a1ece2de071aced10666d40fcec0 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 16 Jul 2020 19:39:24 +0800 Subject: [PATCH 06/29] Bump lodash from 4.17.15 to 4.17.19 (#27) Bumps [lodash](https://github.com/lodash/lodash) from 4.17.15 to 4.17.19. - [Release notes](https://github.com/lodash/lodash/releases) - [Commits](https://github.com/lodash/lodash/compare/4.17.15...4.17.19) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package-lock.json | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/package-lock.json b/package-lock.json index 41eb691..d39e9ea 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "hexo-filter-github-emojis", - "version": "2.0.3", + "version": "2.1.0", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -242,7 +242,7 @@ "dependencies": { "combined-stream": { "version": "1.0.6", - "resolved": "http://registry.npmjs.org/combined-stream/-/combined-stream-1.0.6.tgz", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.6.tgz", "integrity": "sha1-cj599ugBrFYTETp+RFqbactjKBg=", "requires": { "delayed-stream": "~1.0.0" @@ -410,9 +410,9 @@ } }, "lodash": { - "version": "4.17.15", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", - "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==" + "version": "4.17.19", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.19.tgz", + "integrity": "sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ==" }, "lodash.sortby": { "version": "4.7.0", From 90d06a9b0b24f0c2c67f2d729e91f9c9c0aeeb20 Mon Sep 17 00:00:00 2001 From: crimx Date: Sat, 3 Oct 2020 11:10:05 +0800 Subject: [PATCH 07/29] refactor: update emoji list --- emojis.json | 2009 +++++++++++++++++++++++++++++++++++++++++++-- package-lock.json | 719 ---------------- package.json | 8 +- update-emojis.js | 78 +- yarn.lock | 661 +++++++++++++++ 5 files changed, 2644 insertions(+), 831 deletions(-) delete mode 100644 package-lock.json create mode 100644 yarn.lock diff --git a/emojis.json b/emojis.json index cf7ab15..2606d3f 100644 --- a/emojis.json +++ b/emojis.json @@ -59,6 +59,12 @@ "1f18e" ] }, + "abacus": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f9ee.png?v8", + "codepoints": [ + "1f9ee" + ] + }, "abc": { "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f524.png?v8", "codepoints": [ @@ -77,6 +83,18 @@ "1f251" ] }, + "adhesive_bandage": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1fa79.png?v8", + "codepoints": [ + "1fa79" + ] + }, + "adult": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f9d1.png?v8", + "codepoints": [ + "1f9d1" + ] + }, "aerial_tramway": { "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f6a1.png?v8", "codepoints": [ @@ -395,6 +413,13 @@ "1f6f0" ] }, + "artist": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f9d1-1f3a8.png?v8", + "codepoints": [ + "1f9d1", + "1f3a8" + ] + }, "aruba": { "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f1e6-1f1fc.png?v8", "codepoints": [ @@ -402,6 +427,13 @@ "1f1fc" ] }, + "ascension_island": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f1e6-1f1e8.png?v8", + "codepoints": [ + "1f1e6", + "1f1e8" + ] + }, "asterisk": { "src": "https://github.githubassets.com/images/icons/emoji/unicode/002a-20e3.png?v8", "codepoints": [ @@ -415,6 +447,13 @@ "1f632" ] }, + "astronaut": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f9d1-1f680.png?v8", + "codepoints": [ + "1f9d1", + "1f680" + ] + }, "athletic_shoe": { "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f45f.png?v8", "codepoints": [ @@ -450,12 +489,24 @@ "1f1f9" ] }, + "auto_rickshaw": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f6fa.png?v8", + "codepoints": [ + "1f6fa" + ] + }, "avocado": { "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f951.png?v8", "codepoints": [ "1f951" ] }, + "axe": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1fa93.png?v8", + "codepoints": [ + "1fa93" + ] + }, "azerbaijan": { "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f1e6-1f1ff.png?v8", "codepoints": [ @@ -505,12 +556,24 @@ "1f953" ] }, + "badger": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f9a1.png?v8", + "codepoints": [ + "1f9a1" + ] + }, "badminton": { "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f3f8.png?v8", "codepoints": [ "1f3f8" ] }, + "bagel": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f96f.png?v8", + "codepoints": [ + "1f96f" + ] + }, "baggage_claim": { "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f6c4.png?v8", "codepoints": [ @@ -543,6 +606,26 @@ "2696" ] }, + "bald_man": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f468-1f9b2.png?v8", + "codepoints": [ + "1f468", + "1f9b2" + ] + }, + "bald_woman": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f469-1f9b2.png?v8", + "codepoints": [ + "1f469", + "1f9b2" + ] + }, + "ballet_shoes": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1fa70.png?v8", + "codepoints": [ + "1fa70" + ] + }, "balloon": { "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f388.png?v8", "codepoints": [ @@ -586,6 +669,12 @@ "1f1e9" ] }, + "banjo": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1fa95.png?v8", + "codepoints": [ + "1fa95" + ] + }, "bank": { "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f3e6.png?v8", "codepoints": [ @@ -623,6 +712,12 @@ "basecampy": { "src": "https://github.githubassets.com/images/icons/emoji/basecampy.png?v8" }, + "basket": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f9fa.png?v8", + "codepoints": [ + "1f9fa" + ] + }, "basketball": { "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f3c0.png?v8", "codepoints": [ @@ -630,9 +725,10 @@ ] }, "basketball_man": { - "src": "https://github.githubassets.com/images/icons/emoji/unicode/26f9.png?v8", + "src": "https://github.githubassets.com/images/icons/emoji/unicode/26f9-2642.png?v8", "codepoints": [ - "26f9" + "26f9", + "2642" ] }, "basketball_woman": { @@ -678,6 +774,12 @@ "1f43b" ] }, + "bearded_person": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f9d4.png?v8", + "codepoints": [ + "1f9d4" + ] + }, "bed": { "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f6cf.png?v8", "codepoints": [ @@ -767,6 +869,12 @@ "1f1f2" ] }, + "beverage_box": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f9c3.png?v8", + "codepoints": [ + "1f9c3" + ] + }, "bhutan": { "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f1e7-1f1f9.png?v8", "codepoints": [ @@ -787,9 +895,10 @@ ] }, "biking_man": { - "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f6b4.png?v8", + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f6b4-2642.png?v8", "codepoints": [ - "1f6b4" + "1f6b4", + "2642" ] }, "biking_woman": { @@ -805,6 +914,12 @@ "1f459" ] }, + "billed_cap": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f9e2.png?v8", + "codepoints": [ + "1f9e2" + ] + }, "biohazard": { "src": "https://github.githubassets.com/images/icons/emoji/unicode/2623.png?v8", "codepoints": [ @@ -883,12 +998,26 @@ "1f532" ] }, - "blonde_man": { + "blond_haired_man": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f471-2642.png?v8", + "codepoints": [ + "1f471", + "2642" + ] + }, + "blond_haired_person": { "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f471.png?v8", "codepoints": [ "1f471" ] }, + "blond_haired_woman": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f471-2640.png?v8", + "codepoints": [ + "1f471", + "2640" + ] + }, "blonde_woman": { "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f471-2640.png?v8", "codepoints": [ @@ -926,6 +1055,12 @@ "1f499" ] }, + "blue_square": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f7e6.png?v8", + "codepoints": [ + "1f7e6" + ] + }, "blush": { "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f60a.png?v8", "codepoints": [ @@ -957,6 +1092,12 @@ "1f4a3" ] }, + "bone": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f9b4.png?v8", + "codepoints": [ + "1f9b4" + ] + }, "book": { "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f4d6.png?v8", "codepoints": [ @@ -1007,12 +1148,39 @@ "1f1fc" ] }, + "bouncing_ball_man": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/26f9-2642.png?v8", + "codepoints": [ + "26f9", + "2642" + ] + }, + "bouncing_ball_person": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/26f9.png?v8", + "codepoints": [ + "26f9" + ] + }, + "bouncing_ball_woman": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/26f9-2640.png?v8", + "codepoints": [ + "26f9", + "2640" + ] + }, "bouquet": { "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f490.png?v8", "codepoints": [ "1f490" ] }, + "bouvet_island": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f1e7-1f1fb.png?v8", + "codepoints": [ + "1f1e7", + "1f1fb" + ] + }, "bow": { "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f647.png?v8", "codepoints": [ @@ -1026,9 +1194,10 @@ ] }, "bowing_man": { - "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f647.png?v8", + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f647-2642.png?v8", "codepoints": [ - "1f647" + "1f647", + "2642" ] }, "bowing_woman": { @@ -1038,6 +1207,12 @@ "2640" ] }, + "bowl_with_spoon": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f963.png?v8", + "codepoints": [ + "1f963" + ] + }, "bowling": { "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f3b3.png?v8", "codepoints": [ @@ -1059,6 +1234,12 @@ "1f466" ] }, + "brain": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f9e0.png?v8", + "codepoints": [ + "1f9e0" + ] + }, "brazil": { "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f1e7-1f1f7.png?v8", "codepoints": [ @@ -1072,6 +1253,18 @@ "1f35e" ] }, + "breast_feeding": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f931.png?v8", + "codepoints": [ + "1f931" + ] + }, + "bricks": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f9f1.png?v8", + "codepoints": [ + "1f9f1" + ] + }, "bride_with_veil": { "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f470.png?v8", "codepoints": [ @@ -1104,12 +1297,42 @@ "1f1ec" ] }, + "broccoli": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f966.png?v8", + "codepoints": [ + "1f966" + ] + }, "broken_heart": { "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f494.png?v8", "codepoints": [ "1f494" ] }, + "broom": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f9f9.png?v8", + "codepoints": [ + "1f9f9" + ] + }, + "brown_circle": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f7e4.png?v8", + "codepoints": [ + "1f7e4" + ] + }, + "brown_heart": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f90e.png?v8", + "codepoints": [ + "1f90e" + ] + }, + "brown_square": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f7eb.png?v8", + "codepoints": [ + "1f7eb" + ] + }, "brunei": { "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f1e7-1f1f3.png?v8", "codepoints": [ @@ -1204,6 +1427,12 @@ "1f465" ] }, + "butter": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f9c8.png?v8", + "codepoints": [ + "1f9c8" + ] + }, "butterfly": { "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f98b.png?v8", "codepoints": [ @@ -1310,6 +1539,12 @@ "1f36c" ] }, + "canned_food": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f96b.png?v8", + "codepoints": [ + "1f96b" + ] + }, "canoe": { "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f6f6.png?v8", "codepoints": [ @@ -1378,6 +1613,12 @@ "1f955" ] }, + "cartwheeling": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f938.png?v8", + "codepoints": [ + "1f938" + ] + }, "cat": { "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f431.png?v8", "codepoints": [ @@ -1410,6 +1651,13 @@ "1f1eb" ] }, + "ceuta_melilla": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f1ea-1f1e6.png?v8", + "codepoints": [ + "1f1ea", + "1f1e6" + ] + }, "chad": { "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f1f9-1f1e9.png?v8", "codepoints": [ @@ -1423,6 +1671,12 @@ "26d3" ] }, + "chair": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1fa91.png?v8", + "codepoints": [ + "1fa91" + ] + }, "champagne": { "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f37e.png?v8", "codepoints": [ @@ -1471,6 +1725,12 @@ "1f338" ] }, + "chess_pawn": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/265f.png?v8", + "codepoints": [ + "265f" + ] + }, "chestnut": { "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f330.png?v8", "codepoints": [ @@ -1483,6 +1743,12 @@ "1f414" ] }, + "child": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f9d2.png?v8", + "codepoints": [ + "1f9d2" + ] + }, "children_crossing": { "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f6b8.png?v8", "codepoints": [ @@ -1508,6 +1774,12 @@ "1f36b" ] }, + "chopsticks": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f962.png?v8", + "codepoints": [ + "1f962" + ] + }, "christmas_island": { "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f1e8-1f1fd.png?v8", "codepoints": [ @@ -1587,6 +1859,26 @@ "1f3db" ] }, + "climbing": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f9d7.png?v8", + "codepoints": [ + "1f9d7" + ] + }, + "climbing_man": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f9d7-2642.png?v8", + "codepoints": [ + "1f9d7", + "2642" + ] + }, + "climbing_woman": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f9d7-2640.png?v8", + "codepoints": [ + "1f9d7", + "2640" + ] + }, "clinking_glasses": { "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f942.png?v8", "codepoints": [ @@ -1599,6 +1891,13 @@ "1f4cb" ] }, + "clipperton_island": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f1e8-1f1f5.png?v8", + "codepoints": [ + "1f1e8", + "1f1f5" + ] + }, "clock1": { "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f550.png?v8", "codepoints": [ @@ -1810,12 +2109,24 @@ "1f1f3" ] }, + "coat": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f9e5.png?v8", + "codepoints": [ + "1f9e5" + ] + }, "cocktail": { "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f378.png?v8", "codepoints": [ "1f378" ] }, + "coconut": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f965.png?v8", + "codepoints": [ + "1f965" + ] + }, "cocos_islands": { "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f1e8-1f1e8.png?v8", "codepoints": [ @@ -1835,6 +2146,12 @@ "26b0" ] }, + "cold_face": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f976.png?v8", + "codepoints": [ + "1f976" + ] + }, "cold_sweat": { "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f630.png?v8", "codepoints": [ @@ -1867,6 +2184,12 @@ "1f1f2" ] }, + "compass": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f9ed.png?v8", + "codepoints": [ + "1f9ed" + ] + }, "computer": { "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f4bb.png?v8", "codepoints": [ @@ -1930,9 +2253,10 @@ ] }, "construction_worker_man": { - "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f477.png?v8", + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f477-2642.png?v8", "codepoints": [ - "1f477" + "1f477", + "2642" ] }, "construction_worker_woman": { @@ -1954,6 +2278,13 @@ "1f3ea" ] }, + "cook": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f9d1-1f373.png?v8", + "codepoints": [ + "1f9d1", + "1f373" + ] + }, "cook_islands": { "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f1e8-1f1f0.png?v8", "codepoints": [ @@ -2032,9 +2363,11 @@ ] }, "couple_with_heart_woman_man": { - "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f491.png?v8", + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f469-2764-1f468.png?v8", "codepoints": [ - "1f491" + "1f469", + "2764", + "1f468" ] }, "couple_with_heart_woman_woman": { @@ -2045,6 +2378,12 @@ "1f469" ] }, + "couplekiss": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f48f.png?v8", + "codepoints": [ + "1f48f" + ] + }, "couplekiss_man_man": { "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f468-2764-1f48b-1f468.png?v8", "codepoints": [ @@ -2055,9 +2394,12 @@ ] }, "couplekiss_man_woman": { - "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f48f.png?v8", + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f469-2764-1f48b-1f468.png?v8", "codepoints": [ - "1f48f" + "1f469", + "2764", + "1f48b", + "1f468" ] }, "couplekiss_woman_woman": { @@ -2112,6 +2454,12 @@ ] }, "cricket": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f997.png?v8", + "codepoints": [ + "1f997" + ] + }, + "cricket_game": { "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f3cf.png?v8", "codepoints": [ "1f3cf" @@ -2191,6 +2539,18 @@ "1f952" ] }, + "cup_with_straw": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f964.png?v8", + "codepoints": [ + "1f964" + ] + }, + "cupcake": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f9c1.png?v8", + "codepoints": [ + "1f9c1" + ] + }, "cupid": { "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f498.png?v8", "codepoints": [ @@ -2204,6 +2564,26 @@ "1f1fc" ] }, + "curling_stone": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f94c.png?v8", + "codepoints": [ + "1f94c" + ] + }, + "curly_haired_man": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f468-1f9b1.png?v8", + "codepoints": [ + "1f468", + "1f9b1" + ] + }, + "curly_haired_woman": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f469-1f9b1.png?v8", + "codepoints": [ + "1f469", + "1f9b1" + ] + }, "curly_loop": { "src": "https://github.githubassets.com/images/icons/emoji/unicode/27b0.png?v8", "codepoints": [ @@ -2222,6 +2602,12 @@ "1f35b" ] }, + "cursing_face": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f92c.png?v8", + "codepoints": [ + "1f92c" + ] + }, "custard": { "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f36e.png?v8", "codepoints": [ @@ -2234,6 +2620,12 @@ "1f6c3" ] }, + "cut_of_meat": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f969.png?v8", + "codepoints": [ + "1f969" + ] + }, "cyclone": { "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f300.png?v8", "codepoints": [ @@ -2280,9 +2672,10 @@ ] }, "dancing_women": { - "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f46f.png?v8", + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f46f-2640.png?v8", "codepoints": [ - "1f46f" + "1f46f", + "2640" ] }, "dango": { @@ -2322,6 +2715,26 @@ "1f1ea" ] }, + "deaf_man": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f9cf-2642.png?v8", + "codepoints": [ + "1f9cf", + "2642" + ] + }, + "deaf_person": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f9cf.png?v8", + "codepoints": [ + "1f9cf" + ] + }, + "deaf_woman": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f9cf-2640.png?v8", + "codepoints": [ + "1f9cf", + "2640" + ] + }, "deciduous_tree": { "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f333.png?v8", "codepoints": [ @@ -2389,6 +2802,13 @@ "2666" ] }, + "diego_garcia": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f1e9-1f1ec.png?v8", + "codepoints": [ + "1f1e9", + "1f1ec" + ] + }, "disappointed": { "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f61e.png?v8", "codepoints": [ @@ -2401,6 +2821,18 @@ "1f625" ] }, + "diving_mask": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f93f.png?v8", + "codepoints": [ + "1f93f" + ] + }, + "diya_lamp": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1fa94.png?v8", + "codepoints": [ + "1fa94" + ] + }, "dizzy": { "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f4ab.png?v8", "codepoints": [ @@ -2420,6 +2852,12 @@ "1f1ef" ] }, + "dna": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f9ec.png?v8", + "codepoints": [ + "1f9ec" + ] + }, "do_not_litter": { "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f6af.png?v8", "codepoints": [ @@ -2518,6 +2956,12 @@ "1f924" ] }, + "drop_of_blood": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1fa78.png?v8", + "codepoints": [ + "1fa78" + ] + }, "droplet": { "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f4a7.png?v8", "codepoints": [ @@ -2536,6 +2980,12 @@ "1f986" ] }, + "dumpling": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f95f.png?v8", + "codepoints": [ + "1f95f" + ] + }, "dvd": { "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f4c0.png?v8", "codepoints": [ @@ -2566,6 +3016,12 @@ "1f33e" ] }, + "ear_with_hearing_aid": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f9bb.png?v8", + "codepoints": [ + "1f9bb" + ] + }, "earth_africa": { "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f30d.png?v8", "codepoints": [ @@ -2629,6 +3085,12 @@ "2733" ] }, + "eject_button": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/23cf.png?v8", + "codepoints": [ + "23cf" + ] + }, "el_salvador": { "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f1f8-1f1fb.png?v8", "codepoints": [ @@ -2651,6 +3113,26 @@ "1f418" ] }, + "elf": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f9dd.png?v8", + "codepoints": [ + "1f9dd" + ] + }, + "elf_man": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f9dd-2642.png?v8", + "codepoints": [ + "1f9dd", + "2642" + ] + }, + "elf_woman": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f9dd-2640.png?v8", + "codepoints": [ + "1f9dd", + "2640" + ] + }, "email": { "src": "https://github.githubassets.com/images/icons/emoji/unicode/2709.png?v8", "codepoints": [ @@ -2663,6 +3145,18 @@ "1f51a" ] }, + "england": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f3f4-e0067-e0062-e0065-e006e-e0067-e007f.png?v8", + "codepoints": [ + "1f3f4", + "e0067", + "e0062", + "e0065", + "e006e", + "e0067", + "e007f" + ] + }, "envelope": { "src": "https://github.githubassets.com/images/icons/emoji/unicode/2709.png?v8", "codepoints": [ @@ -2754,6 +3248,12 @@ "2757" ] }, + "exploding_head": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f92f.png?v8", + "codepoints": [ + "1f92f" + ] + }, "expressionless": { "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f611.png?v8", "codepoints": [ @@ -2797,6 +3297,12 @@ "1f912" ] }, + "facepalm": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f926.png?v8", + "codepoints": [ + "1f926" + ] + }, "facepunch": { "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f44a.png?v8", "codepoints": [ @@ -2809,6 +3315,39 @@ "1f3ed" ] }, + "factory_worker": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f9d1-1f3ed.png?v8", + "codepoints": [ + "1f9d1", + "1f3ed" + ] + }, + "fairy": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f9da.png?v8", + "codepoints": [ + "1f9da" + ] + }, + "fairy_man": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f9da-2642.png?v8", + "codepoints": [ + "1f9da", + "2642" + ] + }, + "fairy_woman": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f9da-2640.png?v8", + "codepoints": [ + "1f9da", + "2640" + ] + }, + "falafel": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f9c6.png?v8", + "codepoints": [ + "1f9c6" + ] + }, "falkland_islands": { "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f1eb-1f1f0.png?v8", "codepoints": [ @@ -2910,9 +3449,11 @@ ] }, "family_man_woman_boy": { - "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f46a.png?v8", + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f468-1f469-1f466.png?v8", "codepoints": [ - "1f46a" + "1f468", + "1f469", + "1f466" ] }, "family_man_woman_boy_boy": { @@ -3031,6 +3572,13 @@ "1f467" ] }, + "farmer": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f9d1-1f33e.png?v8", + "codepoints": [ + "1f9d1", + "1f33e" + ] + }, "faroe_islands": { "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f1eb-1f1f4.png?v8", "codepoints": [ @@ -3072,6 +3620,12 @@ "2640" ] }, + "female_sign": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/2640.png?v8", + "codepoints": [ + "2640" + ] + }, "ferris_wheel": { "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f3a1.png?v8", "codepoints": [ @@ -3143,6 +3697,25 @@ "1f692" ] }, + "fire_extinguisher": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f9ef.png?v8", + "codepoints": [ + "1f9ef" + ] + }, + "firecracker": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f9e8.png?v8", + "codepoints": [ + "1f9e8" + ] + }, + "firefighter": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f9d1-1f692.png?v8", + "codepoints": [ + "1f9d1", + "1f692" + ] + }, "fireworks": { "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f386.png?v8", "codepoints": [ @@ -3222,12 +3795,24 @@ "1f38f" ] }, + "flamingo": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f9a9.png?v8", + "codepoints": [ + "1f9a9" + ] + }, "flashlight": { "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f526.png?v8", "codepoints": [ "1f526" ] }, + "flat_shoe": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f97f.png?v8", + "codepoints": [ + "1f97f" + ] + }, "fleur_de_lis": { "src": "https://github.githubassets.com/images/icons/emoji/unicode/269c.png?v8", "codepoints": [ @@ -3270,6 +3855,18 @@ "1f633" ] }, + "flying_disc": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f94f.png?v8", + "codepoints": [ + "1f94f" + ] + }, + "flying_saucer": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f6f8.png?v8", + "codepoints": [ + "1f6f8" + ] + }, "fog": { "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f32b.png?v8", "codepoints": [ @@ -3282,6 +3879,12 @@ "1f301" ] }, + "foot": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f9b6.png?v8", + "codepoints": [ + "1f9b6" + ] + }, "football": { "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f3c8.png?v8", "codepoints": [ @@ -3300,6 +3903,12 @@ "1f374" ] }, + "fortune_cookie": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f960.png?v8", + "codepoints": [ + "1f960" + ] + }, "fountain": { "src": "https://github.githubassets.com/images/icons/emoji/unicode/26f2.png?v8", "codepoints": [ @@ -3414,12 +4023,19 @@ "2642" ] }, - "frowning_woman": { + "frowning_person": { "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f64d.png?v8", "codepoints": [ "1f64d" ] }, + "frowning_woman": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f64d-2640.png?v8", + "codepoints": [ + "1f64d", + "2640" + ] + }, "fu": { "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f595.png?v8", "codepoints": [ @@ -3470,6 +4086,12 @@ "1f3b2" ] }, + "garlic": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f9c4.png?v8", + "codepoints": [ + "1f9c4" + ] + }, "gb": { "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f1ec-1f1e7.png?v8", "codepoints": [ @@ -3495,6 +4117,26 @@ "264a" ] }, + "genie": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f9de.png?v8", + "codepoints": [ + "1f9de" + ] + }, + "genie_man": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f9de-2642.png?v8", + "codepoints": [ + "1f9de", + "2642" + ] + }, + "genie_woman": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f9de-2640.png?v8", + "codepoints": [ + "1f9de", + "2640" + ] + }, "georgia": { "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f1ec-1f1ea.png?v8", "codepoints": [ @@ -3534,6 +4176,12 @@ "1f49d" ] }, + "giraffe": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f992.png?v8", + "codepoints": [ + "1f992" + ] + }, "girl": { "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f467.png?v8", "codepoints": [ @@ -3546,6 +4194,12 @@ "1f310" ] }, + "gloves": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f9e4.png?v8", + "codepoints": [ + "1f9e4" + ] + }, "goal_net": { "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f945.png?v8", "codepoints": [ @@ -3564,18 +4218,31 @@ "godmode": { "src": "https://github.githubassets.com/images/icons/emoji/godmode.png?v8" }, + "goggles": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f97d.png?v8", + "codepoints": [ + "1f97d" + ] + }, "golf": { "src": "https://github.githubassets.com/images/icons/emoji/unicode/26f3.png?v8", "codepoints": [ "26f3" ] }, - "golfing_man": { + "golfing": { "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f3cc.png?v8", "codepoints": [ "1f3cc" ] }, + "golfing_man": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f3cc-2642.png?v8", + "codepoints": [ + "1f3cc", + "2642" + ] + }, "golfing_woman": { "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f3cc-2640.png?v8", "codepoints": [ @@ -3614,6 +4281,12 @@ "1f4d7" ] }, + "green_circle": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f7e2.png?v8", + "codepoints": [ + "1f7e2" + ] + }, "green_heart": { "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f49a.png?v8", "codepoints": [ @@ -3626,6 +4299,12 @@ "1f957" ] }, + "green_square": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f7e9.png?v8", + "codepoints": [ + "1f7e9" + ] + }, "greenland": { "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f1ec-1f1f1.png?v8", "codepoints": [ @@ -3684,12 +4363,19 @@ "1f1fa" ] }, - "guardsman": { + "guard": { "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f482.png?v8", "codepoints": [ "1f482" ] }, + "guardsman": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f482-2642.png?v8", + "codepoints": [ + "1f482", + "2642" + ] + }, "guardswoman": { "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f482-2640.png?v8", "codepoints": [ @@ -3711,6 +4397,12 @@ "1f1ec" ] }, + "guide_dog": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f9ae.png?v8", + "codepoints": [ + "1f9ae" + ] + }, "guinea": { "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f1ec-1f1f3.png?v8", "codepoints": [ @@ -3758,9 +4450,10 @@ ] }, "haircut_woman": { - "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f487.png?v8", + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f487-2640.png?v8", "codepoints": [ - "1f487" + "1f487", + "2640" ] }, "haiti": { @@ -3806,12 +4499,24 @@ "270b" ] }, + "hand_over_mouth": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f92d.png?v8", + "codepoints": [ + "1f92d" + ] + }, "handbag": { "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f45c.png?v8", "codepoints": [ "1f45c" ] }, + "handball_person": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f93e.png?v8", + "codepoints": [ + "1f93e" + ] + }, "handshake": { "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f91d.png?v8", "codepoints": [ @@ -3849,12 +4554,26 @@ "1f3a7" ] }, + "health_worker": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f9d1-2695.png?v8", + "codepoints": [ + "1f9d1", + "2695" + ] + }, "hear_no_evil": { "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f649.png?v8", "codepoints": [ "1f649" ] }, + "heard_mcdonald_islands": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f1ed-1f1f2.png?v8", + "codepoints": [ + "1f1ed", + "1f1f2" + ] + }, "heart": { "src": "https://github.githubassets.com/images/icons/emoji/unicode/2764.png?v8", "codepoints": [ @@ -3945,6 +4664,12 @@ "2795" ] }, + "hedgehog": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f994.png?v8", + "codepoints": [ + "1f994" + ] + }, "helicopter": { "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f681.png?v8", "codepoints": [ @@ -3975,6 +4700,24 @@ "1f460" ] }, + "hiking_boot": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f97e.png?v8", + "codepoints": [ + "1f97e" + ] + }, + "hindu_temple": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f6d5.png?v8", + "codepoints": [ + "1f6d5" + ] + }, + "hippopotamus": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f99b.png?v8", + "codepoints": [ + "1f99b" + ] + }, "hocho": { "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f52a.png?v8", "codepoints": [ @@ -4031,6 +4774,12 @@ "1f3e5" ] }, + "hot_face": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f975.png?v8", + "codepoints": [ + "1f975" + ] + }, "hot_pepper": { "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f336.png?v8", "codepoints": [ @@ -4113,6 +4862,12 @@ "1f368" ] }, + "ice_cube": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f9ca.png?v8", + "codepoints": [ + "1f9ca" + ] + }, "ice_hockey": { "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f3d2.png?v8", "codepoints": [ @@ -4182,6 +4937,12 @@ "1f1e9" ] }, + "infinity": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/267e.png?v8", + "codepoints": [ + "267e" + ] + }, "information_desk_person": { "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f481.png?v8", "codepoints": [ @@ -4310,6 +5071,12 @@ "1f1ea" ] }, + "jigsaw": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f9e9.png?v8", + "codepoints": [ + "1f9e9" + ] + }, "jordan": { "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f1ef-1f1f4.png?v8", "codepoints": [ @@ -4342,12 +5109,31 @@ "1f1f5" ] }, + "judge": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f9d1-2696.png?v8", + "codepoints": [ + "1f9d1", + "2696" + ] + }, + "juggling_person": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f939.png?v8", + "codepoints": [ + "1f939" + ] + }, "kaaba": { "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f54b.png?v8", "codepoints": [ "1f54b" ] }, + "kangaroo": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f998.png?v8", + "codepoints": [ + "1f998" + ] + }, "kazakhstan": { "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f1f0-1f1ff.png?v8", "codepoints": [ @@ -4435,12 +5221,38 @@ "1f619" ] }, + "kite": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1fa81.png?v8", + "codepoints": [ + "1fa81" + ] + }, "kiwi_fruit": { "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f95d.png?v8", "codepoints": [ "1f95d" ] }, + "kneeling_man": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f9ce-2642.png?v8", + "codepoints": [ + "1f9ce", + "2642" + ] + }, + "kneeling_person": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f9ce.png?v8", + "codepoints": [ + "1f9ce" + ] + }, + "kneeling_woman": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f9ce-2640.png?v8", + "codepoints": [ + "1f9ce", + "2640" + ] + }, "knife": { "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f52a.png?v8", "codepoints": [ @@ -4487,12 +5299,24 @@ "1f1ec" ] }, + "lab_coat": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f97c.png?v8", + "codepoints": [ + "1f97c" + ] + }, "label": { "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f3f7.png?v8", "codepoints": [ "1f3f7" ] }, + "lacrosse": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f94d.png?v8", + "codepoints": [ + "1f94d" + ] + }, "lantern": { "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f3ee.png?v8", "codepoints": [ @@ -4555,6 +5379,12 @@ "1f606" ] }, + "leafy_green": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f96c.png?v8", + "codepoints": [ + "1f96c" + ] + }, "leaves": { "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f343.png?v8", "codepoints": [ @@ -4586,12 +5416,24 @@ "2194" ] }, + "left_speech_bubble": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f5e8.png?v8", + "codepoints": [ + "1f5e8" + ] + }, "leftwards_arrow_with_hook": { "src": "https://github.githubassets.com/images/icons/emoji/unicode/21a9.png?v8", "codepoints": [ "21a9" ] }, + "leg": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f9b5.png?v8", + "codepoints": [ + "1f9b5" + ] + }, "lemon": { "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f34b.png?v8", "codepoints": [ @@ -4693,6 +5535,18 @@ "1f98e" ] }, + "llama": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f999.png?v8", + "codepoints": [ + "1f999" + ] + }, + "lobster": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f99e.png?v8", + "codepoints": [ + "1f99e" + ] + }, "lock": { "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f512.png?v8", "codepoints": [ @@ -4717,6 +5571,32 @@ "27bf" ] }, + "lotion_bottle": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f9f4.png?v8", + "codepoints": [ + "1f9f4" + ] + }, + "lotus_position": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f9d8.png?v8", + "codepoints": [ + "1f9d8" + ] + }, + "lotus_position_man": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f9d8-2642.png?v8", + "codepoints": [ + "1f9d8", + "2642" + ] + }, + "lotus_position_woman": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f9d8-2640.png?v8", + "codepoints": [ + "1f9d8", + "2640" + ] + }, "loud_sound": { "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f50a.png?v8", "codepoints": [ @@ -4741,12 +5621,24 @@ "1f48c" ] }, + "love_you_gesture": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f91f.png?v8", + "codepoints": [ + "1f91f" + ] + }, "low_brightness": { "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f505.png?v8", "codepoints": [ "1f505" ] }, + "luggage": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f9f3.png?v8", + "codepoints": [ + "1f9f3" + ] + }, "luxembourg": { "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f1f1-1f1fa.png?v8", "codepoints": [ @@ -4799,6 +5691,32 @@ "1f50e" ] }, + "mage": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f9d9.png?v8", + "codepoints": [ + "1f9d9" + ] + }, + "mage_man": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f9d9-2642.png?v8", + "codepoints": [ + "1f9d9", + "2642" + ] + }, + "mage_woman": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f9d9-2640.png?v8", + "codepoints": [ + "1f9d9", + "2640" + ] + }, + "magnet": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f9f2.png?v8", + "codepoints": [ + "1f9f2" + ] + }, "mahjong": { "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f004.png?v8", "codepoints": [ @@ -4851,9 +5769,16 @@ ] }, "male_detective": { - "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f575.png?v8", + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f575-2642.png?v8", "codepoints": [ - "1f575" + "1f575", + "2642" + ] + }, + "male_sign": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/2642.png?v8", + "codepoints": [ + "2642" ] }, "mali": { @@ -4945,6 +5870,20 @@ "2695" ] }, + "man_in_manual_wheelchair": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f468-1f9bd.png?v8", + "codepoints": [ + "1f468", + "1f9bd" + ] + }, + "man_in_motorized_wheelchair": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f468-1f9bc.png?v8", + "codepoints": [ + "1f468", + "1f9bc" + ] + }, "man_in_tuxedo": { "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f935.png?v8", "codepoints": [ @@ -5048,10 +5987,18 @@ "1f472" ] }, - "man_with_turban": { - "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f473.png?v8", + "man_with_probing_cane": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f468-1f9af.png?v8", "codepoints": [ - "1f473" + "1f468", + "1f9af" + ] + }, + "man_with_turban": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f473-2642.png?v8", + "codepoints": [ + "1f473", + "2642" ] }, "mandarin": { @@ -5060,6 +6007,12 @@ "1f34a" ] }, + "mango": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f96d.png?v8", + "codepoints": [ + "1f96d" + ] + }, "mans_shoe": { "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f45e.png?v8", "codepoints": [ @@ -5072,6 +6025,12 @@ "1f570" ] }, + "manual_wheelchair": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f9bd.png?v8", + "codepoints": [ + "1f9bd" + ] + }, "maple_leaf": { "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f341.png?v8", "codepoints": [ @@ -5118,9 +6077,16 @@ ] }, "massage_woman": { - "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f486.png?v8", + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f486-2640.png?v8", "codepoints": [ - "1f486" + "1f486", + "2640" + ] + }, + "mate": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f9c9.png?v8", + "codepoints": [ + "1f9c9" ] }, "mauritania": { @@ -5150,6 +6116,25 @@ "1f356" ] }, + "mechanic": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f9d1-1f527.png?v8", + "codepoints": [ + "1f9d1", + "1f527" + ] + }, + "mechanical_arm": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f9be.png?v8", + "codepoints": [ + "1f9be" + ] + }, + "mechanical_leg": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f9bf.png?v8", + "codepoints": [ + "1f9bf" + ] + }, "medal_military": { "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f396.png?v8", "codepoints": [ @@ -5162,6 +6147,12 @@ "1f3c5" ] }, + "medical_symbol": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/2695.png?v8", + "codepoints": [ + "2695" + ] + }, "mega": { "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f4e3.png?v8", "codepoints": [ @@ -5199,6 +6190,26 @@ "1f6b9" ] }, + "mermaid": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f9dc-2640.png?v8", + "codepoints": [ + "1f9dc", + "2640" + ] + }, + "merman": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f9dc-2642.png?v8", + "codepoints": [ + "1f9dc", + "2642" + ] + }, + "merperson": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f9dc.png?v8", + "codepoints": [ + "1f9dc" + ] + }, "metal": { "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f918.png?v8", "codepoints": [ @@ -5218,6 +6229,12 @@ "1f1fd" ] }, + "microbe": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f9a0.png?v8", + "codepoints": [ + "1f9a0" + ] + }, "micronesia": { "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f1eb-1f1f2.png?v8", "codepoints": [ @@ -5324,6 +6341,12 @@ "1f435" ] }, + "monocle_face": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f9d0.png?v8", + "codepoints": [ + "1f9d0" + ] + }, "monorail": { "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f69d.png?v8", "codepoints": [ @@ -5350,6 +6373,12 @@ "1f314" ] }, + "moon_cake": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f96e.png?v8", + "codepoints": [ + "1f96e" + ] + }, "morocco": { "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f1f2-1f1e6.png?v8", "codepoints": [ @@ -5369,6 +6398,12 @@ "1f54c" ] }, + "mosquito": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f99f.png?v8", + "codepoints": [ + "1f99f" + ] + }, "motor_boat": { "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f6e5.png?v8", "codepoints": [ @@ -5387,6 +6422,12 @@ "1f3cd" ] }, + "motorized_wheelchair": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f9bc.png?v8", + "codepoints": [ + "1f9bc" + ] + }, "motorway": { "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f6e3.png?v8", "codepoints": [ @@ -5412,9 +6453,10 @@ ] }, "mountain_biking_man": { - "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f6b5.png?v8", + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f6b5-2642.png?v8", "codepoints": [ - "1f6b5" + "1f6b5", + "2642" ] }, "mountain_biking_woman": { @@ -5560,6 +6602,12 @@ "1f922" ] }, + "nazar_amulet": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f9ff.png?v8", + "codepoints": [ + "1f9ff" + ] + }, "neckbeard": { "src": "https://github.githubassets.com/images/icons/emoji/neckbeard.png?v8" }, @@ -5665,9 +6713,10 @@ ] }, "ng_woman": { - "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f645.png?v8", + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f645-2640.png?v8", "codepoints": [ - "1f645" + "1f645", + "2640" ] }, "nicaragua": { @@ -5749,9 +6798,10 @@ ] }, "no_good_woman": { - "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f645.png?v8", + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f645-2640.png?v8", "codepoints": [ - "1f645" + "1f645", + "2640" ] }, "no_mobile_phones": { @@ -5881,6 +6931,13 @@ "1f3e2" ] }, + "office_worker": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f9d1-1f4bc.png?v8", + "codepoints": [ + "1f9d1", + "1f4bc" + ] + }, "oil_drum": { "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f6e2.png?v8", "codepoints": [ @@ -5906,18 +6963,31 @@ "2642" ] }, - "ok_woman": { + "ok_person": { "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f646.png?v8", "codepoints": [ "1f646" ] }, + "ok_woman": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f646-2640.png?v8", + "codepoints": [ + "1f646", + "2640" + ] + }, "old_key": { "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f5dd.png?v8", "codepoints": [ "1f5dd" ] }, + "older_adult": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f9d3.png?v8", + "codepoints": [ + "1f9d3" + ] + }, "older_man": { "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f474.png?v8", "codepoints": [ @@ -5980,6 +7050,18 @@ "20e3" ] }, + "one_piece_swimsuit": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1fa71.png?v8", + "codepoints": [ + "1fa71" + ] + }, + "onion": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f9c5.png?v8", + "codepoints": [ + "1f9c5" + ] + }, "open_book": { "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f4d6.png?v8", "codepoints": [ @@ -6028,12 +7110,42 @@ "1f4d9" ] }, + "orange_circle": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f7e0.png?v8", + "codepoints": [ + "1f7e0" + ] + }, + "orange_heart": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f9e1.png?v8", + "codepoints": [ + "1f9e1" + ] + }, + "orange_square": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f7e7.png?v8", + "codepoints": [ + "1f7e7" + ] + }, + "orangutan": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f9a7.png?v8", + "codepoints": [ + "1f9a7" + ] + }, "orthodox_cross": { "src": "https://github.githubassets.com/images/icons/emoji/unicode/2626.png?v8", "codepoints": [ "2626" ] }, + "otter": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f9a6.png?v8", + "codepoints": [ + "1f9a6" + ] + }, "outbox_tray": { "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f4e4.png?v8", "codepoints": [ @@ -6052,6 +7164,12 @@ "1f402" ] }, + "oyster": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f9aa.png?v8", + "codepoints": [ + "1f9aa" + ] + }, "package": { "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f4e6.png?v8", "codepoints": [ @@ -6109,6 +7227,12 @@ "1f334" ] }, + "palms_up_together": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f932.png?v8", + "codepoints": [ + "1f932" + ] + }, "panama": { "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f1f5-1f1e6.png?v8", "codepoints": [ @@ -6147,6 +7271,12 @@ "1f1ec" ] }, + "parachute": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1fa82.png?v8", + "codepoints": [ + "1fa82" + ] + }, "paraguay": { "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f1f5-1f1fe.png?v8", "codepoints": [ @@ -6166,6 +7296,12 @@ "1f17f" ] }, + "parrot": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f99c.png?v8", + "codepoints": [ + "1f99c" + ] + }, "part_alternation_mark": { "src": "https://github.githubassets.com/images/icons/emoji/unicode/303d.png?v8", "codepoints": [ @@ -6178,6 +7314,12 @@ "26c5" ] }, + "partying_face": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f973.png?v8", + "codepoints": [ + "1f973" + ] + }, "passenger_ship": { "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f6f3.png?v8", "codepoints": [ @@ -6214,6 +7356,12 @@ "1f351" ] }, + "peacock": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f99a.png?v8", + "codepoints": [ + "1f99a" + ] + }, "peanuts": { "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f95c.png?v8", "codepoints": [ @@ -6256,6 +7404,14 @@ "1f614" ] }, + "people_holding_hands": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f9d1-1f91d-1f9d1.png?v8", + "codepoints": [ + "1f9d1", + "1f91d", + "1f9d1" + ] + }, "performing_arts": { "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f3ad.png?v8", "codepoints": [ @@ -6268,28 +7424,65 @@ "1f623" ] }, + "person_bald": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f9d1-1f9b2.png?v8", + "codepoints": [ + "1f9d1", + "1f9b2" + ] + }, + "person_curly_hair": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f9d1-1f9b1.png?v8", + "codepoints": [ + "1f9d1", + "1f9b1" + ] + }, "person_fencing": { "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f93a.png?v8", "codepoints": [ "1f93a" ] }, - "person_frowning": { - "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f64d.png?v8", + "person_in_manual_wheelchair": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f9d1-1f9bd.png?v8", "codepoints": [ - "1f64d" + "1f9d1", + "1f9bd" ] }, - "person_with_blond_hair": { - "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f471.png?v8", + "person_in_motorized_wheelchair": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f9d1-1f9bc.png?v8", "codepoints": [ - "1f471" + "1f9d1", + "1f9bc" ] }, - "person_with_pouting_face": { - "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f64e.png?v8", + "person_red_hair": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f9d1-1f9b0.png?v8", "codepoints": [ - "1f64e" + "1f9d1", + "1f9b0" + ] + }, + "person_white_hair": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f9d1-1f9b3.png?v8", + "codepoints": [ + "1f9d1", + "1f9b3" + ] + }, + "person_with_probing_cane": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f9d1-1f9af.png?v8", + "codepoints": [ + "1f9d1", + "1f9af" + ] + }, + "person_with_turban": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f473.png?v8", + "codepoints": [ + "1f473" ] }, "peru": { @@ -6299,6 +7492,12 @@ "1f1ea" ] }, + "petri_dish": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f9eb.png?v8", + "codepoints": [ + "1f9eb" + ] + }, "philippines": { "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f1f5-1f1ed.png?v8", "codepoints": [ @@ -6318,6 +7517,12 @@ "26cf" ] }, + "pie": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f967.png?v8", + "codepoints": [ + "1f967" + ] + }, "pig": { "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f437.png?v8", "codepoints": [ @@ -6342,6 +7547,19 @@ "1f48a" ] }, + "pilot": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f9d1-2708.png?v8", + "codepoints": [ + "1f9d1", + "2708" + ] + }, + "pinching_hand": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f90f.png?v8", + "codepoints": [ + "1f90f" + ] + }, "pineapple": { "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f34d.png?v8", "codepoints": [ @@ -6354,6 +7572,13 @@ "1f3d3" ] }, + "pirate_flag": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f3f4-2620.png?v8", + "codepoints": [ + "1f3f4", + "2620" + ] + }, "pisces": { "src": "https://github.githubassets.com/images/icons/emoji/unicode/2653.png?v8", "codepoints": [ @@ -6391,6 +7616,12 @@ "23ef" ] }, + "pleading_face": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f97a.png?v8", + "codepoints": [ + "1f97a" + ] + }, "point_down": { "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f447.png?v8", "codepoints": [ @@ -6434,12 +7665,19 @@ "1f693" ] }, - "policeman": { + "police_officer": { "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f46e.png?v8", "codepoints": [ "1f46e" ] }, + "policeman": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f46e-2642.png?v8", + "codepoints": [ + "1f46e", + "2642" + ] + }, "policewoman": { "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f46e-2640.png?v8", "codepoints": [ @@ -6532,6 +7770,12 @@ "1f63e" ] }, + "pouting_face": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f64e.png?v8", + "codepoints": [ + "1f64e" + ] + }, "pouting_man": { "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f64e-2642.png?v8", "codepoints": [ @@ -6540,9 +7784,10 @@ ] }, "pouting_woman": { - "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f64e.png?v8", + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f64e-2640.png?v8", "codepoints": [ - "1f64e" + "1f64e", + "2640" ] }, "pray": { @@ -6563,6 +7808,12 @@ "1f930" ] }, + "pretzel": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f968.png?v8", + "codepoints": [ + "1f968" + ] + }, "previous_track_button": { "src": "https://github.githubassets.com/images/icons/emoji/unicode/23ee.png?v8", "codepoints": [ @@ -6587,6 +7838,12 @@ "1f5a8" ] }, + "probing_cane": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f9af.png?v8", + "codepoints": [ + "1f9af" + ] + }, "puerto_rico": { "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f1f5-1f1f7.png?v8", "codepoints": [ @@ -6600,12 +7857,24 @@ "1f44a" ] }, + "purple_circle": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f7e3.png?v8", + "codepoints": [ + "1f7e3" + ] + }, "purple_heart": { "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f49c.png?v8", "codepoints": [ "1f49c" ] }, + "purple_square": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f7ea.png?v8", + "codepoints": [ + "1f7ea" + ] + }, "purse": { "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f45b.png?v8", "codepoints": [ @@ -6649,6 +7918,12 @@ "1f407" ] }, + "raccoon": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f99d.png?v8", + "codepoints": [ + "1f99d" + ] + }, "racehorse": { "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f40e.png?v8", "codepoints": [ @@ -6728,6 +8003,12 @@ "1f91a" ] }, + "raised_eyebrow": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f928.png?v8", + "codepoints": [ + "1f928" + ] + }, "raised_hand": { "src": "https://github.githubassets.com/images/icons/emoji/unicode/270b.png?v8", "codepoints": [ @@ -6760,9 +8041,10 @@ ] }, "raising_hand_woman": { - "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f64b.png?v8", + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f64b-2640.png?v8", "codepoints": [ - "1f64b" + "1f64b", + "2640" ] }, "ram": { @@ -6783,6 +8065,18 @@ "1f400" ] }, + "razor": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1fa92.png?v8", + "codepoints": [ + "1fa92" + ] + }, + "receipt": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f9fe.png?v8", + "codepoints": [ + "1f9fe" + ] + }, "record_button": { "src": "https://github.githubassets.com/images/icons/emoji/unicode/23fa.png?v8", "codepoints": [ @@ -6807,6 +8101,32 @@ "1f534" ] }, + "red_envelope": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f9e7.png?v8", + "codepoints": [ + "1f9e7" + ] + }, + "red_haired_man": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f468-1f9b0.png?v8", + "codepoints": [ + "1f468", + "1f9b0" + ] + }, + "red_haired_woman": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f469-1f9b0.png?v8", + "codepoints": [ + "1f469", + "1f9b0" + ] + }, + "red_square": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f7e5.png?v8", + "codepoints": [ + "1f7e5" + ] + }, "registered": { "src": "https://github.githubassets.com/images/icons/emoji/unicode/00ae.png?v8", "codepoints": [ @@ -6922,6 +8242,12 @@ "1f48d" ] }, + "ringed_planet": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1fa90.png?v8", + "codepoints": [ + "1fa90" + ] + }, "robot": { "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f916.png?v8", "codepoints": [ @@ -6946,6 +8272,12 @@ "1f644" ] }, + "roll_of_paper": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f9fb.png?v8", + "codepoints": [ + "1f9fb" + ] + }, "roller_coaster": { "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f3a2.png?v8", "codepoints": [ @@ -6996,9 +8328,10 @@ ] }, "rowing_man": { - "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f6a3.png?v8", + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f6a3-2642.png?v8", "codepoints": [ - "1f6a3" + "1f6a3", + "2642" ] }, "rowing_woman": { @@ -7034,9 +8367,10 @@ ] }, "running_man": { - "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f3c3.png?v8", + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f3c3-2642.png?v8", "codepoints": [ - "1f3c3" + "1f3c3", + "2642" ] }, "running_shirt_with_sash": { @@ -7065,6 +8399,18 @@ "1f202" ] }, + "safety_pin": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f9f7.png?v8", + "codepoints": [ + "1f9f7" + ] + }, + "safety_vest": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f9ba.png?v8", + "codepoints": [ + "1f9ba" + ] + }, "sagittarius": { "src": "https://github.githubassets.com/images/icons/emoji/unicode/2650.png?v8", "codepoints": [ @@ -7083,6 +8429,12 @@ "1f376" ] }, + "salt": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f9c2.png?v8", + "codepoints": [ + "1f9c2" + ] + }, "samoa": { "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f1fc-1f1f8.png?v8", "codepoints": [ @@ -7103,6 +8455,12 @@ "1f461" ] }, + "sandwich": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f96a.png?v8", + "codepoints": [ + "1f96a" + ] + }, "santa": { "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f385.png?v8", "codepoints": [ @@ -7116,6 +8474,12 @@ "1f1f9" ] }, + "sari": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f97b.png?v8", + "codepoints": [ + "1f97b" + ] + }, "sassy_man": { "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f481-2642.png?v8", "codepoints": [ @@ -7124,9 +8488,10 @@ ] }, "sassy_woman": { - "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f481.png?v8", + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f481-2640.png?v8", "codepoints": [ - "1f481" + "1f481", + "2640" ] }, "satellite": { @@ -7148,12 +8513,44 @@ "1f1e6" ] }, + "sauna_man": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f9d6-2642.png?v8", + "codepoints": [ + "1f9d6", + "2642" + ] + }, + "sauna_person": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f9d6.png?v8", + "codepoints": [ + "1f9d6" + ] + }, + "sauna_woman": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f9d6-2640.png?v8", + "codepoints": [ + "1f9d6", + "2640" + ] + }, + "sauropod": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f995.png?v8", + "codepoints": [ + "1f995" + ] + }, "saxophone": { "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f3b7.png?v8", "codepoints": [ "1f3b7" ] }, + "scarf": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f9e3.png?v8", + "codepoints": [ + "1f9e3" + ] + }, "school": { "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f3eb.png?v8", "codepoints": [ @@ -7166,6 +8563,13 @@ "1f392" ] }, + "scientist": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f9d1-1f52c.png?v8", + "codepoints": [ + "1f9d1", + "1f52c" + ] + }, "scissors": { "src": "https://github.githubassets.com/images/icons/emoji/unicode/2702.png?v8", "codepoints": [ @@ -7184,6 +8588,18 @@ "264f" ] }, + "scotland": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f3f4-e0067-e0062-e0073-e0063-e0074-e007f.png?v8", + "codepoints": [ + "1f3f4", + "e0067", + "e0062", + "e0073", + "e0063", + "e0074", + "e007f" + ] + }, "scream": { "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f631.png?v8", "codepoints": [ @@ -7246,6 +8662,13 @@ "1f1f8" ] }, + "service_dog": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f415-1f9ba.png?v8", + "codepoints": [ + "1f415", + "1f9ba" + ] + }, "seven": { "src": "https://github.githubassets.com/images/icons/emoji/unicode/0037-20e3.png?v8", "codepoints": [ @@ -7347,6 +8770,12 @@ "1f6d2" ] }, + "shorts": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1fa73.png?v8", + "codepoints": [ + "1fa73" + ] + }, "shower": { "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f6bf.png?v8", "codepoints": [ @@ -7359,6 +8788,18 @@ "1f990" ] }, + "shrug": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f937.png?v8", + "codepoints": [ + "1f937" + ] + }, + "shushing_face": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f92b.png?v8", + "codepoints": [ + "1f92b" + ] + }, "sierra_leone": { "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f1f8-1f1f1.png?v8", "codepoints": [ @@ -7379,6 +8820,13 @@ "1f1ec" ] }, + "singer": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f9d1-1f3a4.png?v8", + "codepoints": [ + "1f9d1", + "1f3a4" + ] + }, "sint_maarten": { "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f1f8-1f1fd.png?v8", "codepoints": [ @@ -7399,6 +8847,12 @@ "1f52f" ] }, + "skateboard": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f6f9.png?v8", + "codepoints": [ + "1f6f9" + ] + }, "ski": { "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f3bf.png?v8", "codepoints": [ @@ -7423,6 +8877,18 @@ "2620" ] }, + "skunk": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f9a8.png?v8", + "codepoints": [ + "1f9a8" + ] + }, + "sled": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f6f7.png?v8", + "codepoints": [ + "1f6f7" + ] + }, "sleeping": { "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f634.png?v8", "codepoints": [ @@ -7459,6 +8925,12 @@ "1f3b0" ] }, + "sloth": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f9a5.png?v8", + "codepoints": [ + "1f9a5" + ] + }, "slovakia": { "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f1f8-1f1f0.png?v8", "codepoints": [ @@ -7527,6 +8999,12 @@ "1f63a" ] }, + "smiling_face_with_three_hearts": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f970.png?v8", + "codepoints": [ + "1f970" + ] + }, "smiling_imp": { "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f608.png?v8", "codepoints": [ @@ -7593,6 +9071,12 @@ "2603" ] }, + "soap": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f9fc.png?v8", + "codepoints": [ + "1f9fc" + ] + }, "sob": { "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f62d.png?v8", "codepoints": [ @@ -7605,6 +9089,18 @@ "26bd" ] }, + "socks": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f9e6.png?v8", + "codepoints": [ + "1f9e6" + ] + }, + "softball": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f94e.png?v8", + "codepoints": [ + "1f94e" + ] + }, "solomon_islands": { "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f1f8-1f1e7.png?v8", "codepoints": [ @@ -7754,6 +9250,12 @@ "1f5d2" ] }, + "sponge": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f9fd.png?v8", + "codepoints": [ + "1f9fd" + ] + }, "spoon": { "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f944.png?v8", "codepoints": [ @@ -7766,9 +9268,6 @@ "1f991" ] }, - "squirrel": { - "src": "https://github.githubassets.com/images/icons/emoji/shipit.png?v8" - }, "sri_lanka": { "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f1f1-1f1f0.png?v8", "codepoints": [ @@ -7804,6 +9303,13 @@ "1f1e8" ] }, + "st_martin": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f1f2-1f1eb.png?v8", + "codepoints": [ + "1f1f2", + "1f1eb" + ] + }, "st_pierre_miquelon": { "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f1f5-1f1f2.png?v8", "codepoints": [ @@ -7824,6 +9330,26 @@ "1f3df" ] }, + "standing_man": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f9cd-2642.png?v8", + "codepoints": [ + "1f9cd", + "2642" + ] + }, + "standing_person": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f9cd.png?v8", + "codepoints": [ + "1f9cd" + ] + }, + "standing_woman": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f9cd-2640.png?v8", + "codepoints": [ + "1f9cd", + "2640" + ] + }, "star": { "src": "https://github.githubassets.com/images/icons/emoji/unicode/2b50.png?v8", "codepoints": [ @@ -7848,6 +9374,12 @@ "2721" ] }, + "star_struck": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f929.png?v8", + "codepoints": [ + "1f929" + ] + }, "stars": { "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f320.png?v8", "codepoints": [ @@ -7872,6 +9404,12 @@ "1f682" ] }, + "stethoscope": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1fa7a.png?v8", + "codepoints": [ + "1fa7a" + ] + }, "stew": { "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f372.png?v8", "codepoints": [ @@ -7926,6 +9464,13 @@ "1f61c" ] }, + "student": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f9d1-1f393.png?v8", + "codepoints": [ + "1f9d1", + "1f393" + ] + }, "studio_microphone": { "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f399.png?v8", "codepoints": [ @@ -7999,6 +9544,46 @@ "1f304" ] }, + "superhero": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f9b8.png?v8", + "codepoints": [ + "1f9b8" + ] + }, + "superhero_man": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f9b8-2642.png?v8", + "codepoints": [ + "1f9b8", + "2642" + ] + }, + "superhero_woman": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f9b8-2640.png?v8", + "codepoints": [ + "1f9b8", + "2640" + ] + }, + "supervillain": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f9b9.png?v8", + "codepoints": [ + "1f9b9" + ] + }, + "supervillain_man": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f9b9-2642.png?v8", + "codepoints": [ + "1f9b9", + "2642" + ] + }, + "supervillain_woman": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f9b9-2640.png?v8", + "codepoints": [ + "1f9b9", + "2640" + ] + }, "surfer": { "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f3c4.png?v8", "codepoints": [ @@ -8006,9 +9591,10 @@ ] }, "surfing_man": { - "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f3c4.png?v8", + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f3c4-2642.png?v8", "codepoints": [ - "1f3c4" + "1f3c4", + "2642" ] }, "surfing_woman": { @@ -8040,6 +9626,19 @@ "1f69f" ] }, + "svalbard_jan_mayen": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f1f8-1f1ef.png?v8", + "codepoints": [ + "1f1f8", + "1f1ef" + ] + }, + "swan": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f9a2.png?v8", + "codepoints": [ + "1f9a2" + ] + }, "swaziland": { "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f1f8-1f1ff.png?v8", "codepoints": [ @@ -8078,6 +9677,12 @@ "1f360" ] }, + "swim_brief": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1fa72.png?v8", + "codepoints": [ + "1fa72" + ] + }, "swimmer": { "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f3ca.png?v8", "codepoints": [ @@ -8085,9 +9690,10 @@ ] }, "swimming_man": { - "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f3ca.png?v8", + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f3ca-2642.png?v8", "codepoints": [ - "1f3ca" + "1f3ca", + "2642" ] }, "swimming_woman": { @@ -8129,6 +9735,12 @@ "1f489" ] }, + "t-rex": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f996.png?v8", + "codepoints": [ + "1f996" + ] + }, "taco": { "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f32e.png?v8", "codepoints": [ @@ -8155,6 +9767,12 @@ "1f1ef" ] }, + "takeout_box": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f961.png?v8", + "codepoints": [ + "1f961" + ] + }, "tanabata_tree": { "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f38b.png?v8", "codepoints": [ @@ -8192,6 +9810,26 @@ "1f375" ] }, + "teacher": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f9d1-1f3eb.png?v8", + "codepoints": [ + "1f9d1", + "1f3eb" + ] + }, + "technologist": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f9d1-1f4bb.png?v8", + "codepoints": [ + "1f9d1", + "1f4bb" + ] + }, + "teddy_bear": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f9f8.png?v8", + "codepoints": [ + "1f9f8" + ] + }, "telephone": { "src": "https://github.githubassets.com/images/icons/emoji/unicode/260e.png?v8", "codepoints": [ @@ -8222,6 +9860,12 @@ "26fa" ] }, + "test_tube": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f9ea.png?v8", + "codepoints": [ + "1f9ea" + ] + }, "thailand": { "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f1f9-1f1ed.png?v8", "codepoints": [ @@ -8247,6 +9891,12 @@ "1f4ad" ] }, + "thread": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f9f5.png?v8", + "codepoints": [ + "1f9f5" + ] + }, "three": { "src": "https://github.githubassets.com/images/icons/emoji/unicode/0033-20e3.png?v8", "codepoints": [ @@ -8310,12 +9960,19 @@ "2642" ] }, - "tipping_hand_woman": { + "tipping_hand_person": { "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f481.png?v8", "codepoints": [ "1f481" ] }, + "tipping_hand_woman": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f481-2640.png?v8", + "codepoints": [ + "1f481", + "2640" + ] + }, "tired_face": { "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f62b.png?v8", "codepoints": [ @@ -8373,6 +10030,18 @@ "1f445" ] }, + "toolbox": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f9f0.png?v8", + "codepoints": [ + "1f9f0" + ] + }, + "tooth": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f9b7.png?v8", + "codepoints": [ + "1f9b7" + ] + }, "top": { "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f51d.png?v8", "codepoints": [ @@ -8459,6 +10128,13 @@ "1f1f9" ] }, + "tristan_da_cunha": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f1f9-1f1e6.png?v8", + "codepoints": [ + "1f1f9", + "1f1e6" + ] + }, "triumph": { "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f624.png?v8", "codepoints": [ @@ -8717,6 +10393,13 @@ "1f1ea" ] }, + "united_nations": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f1fa-1f1f3.png?v8", + "codepoints": [ + "1f1fa", + "1f1f3" + ] + }, "unlock": { "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f513.png?v8", "codepoints": [ @@ -8749,6 +10432,13 @@ "1f1f8" ] }, + "us_outlying_islands": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f1fa-1f1f2.png?v8", + "codepoints": [ + "1f1fa", + "1f1f2" + ] + }, "us_virgin_islands": { "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f1fb-1f1ee.png?v8", "codepoints": [ @@ -8769,6 +10459,26 @@ "270c" ] }, + "vampire": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f9db.png?v8", + "codepoints": [ + "1f9db" + ] + }, + "vampire_man": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f9db-2642.png?v8", + "codepoints": [ + "1f9db", + "2642" + ] + }, + "vampire_woman": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f9db-2640.png?v8", + "codepoints": [ + "1f9db", + "2640" + ] + }, "vanuatu": { "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f1fb-1f1fa.png?v8", "codepoints": [ @@ -8851,6 +10561,12 @@ "1f3d0" ] }, + "vomiting_face": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f92e.png?v8", + "codepoints": [ + "1f92e" + ] + }, "vs": { "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f19a.png?v8", "codepoints": [ @@ -8863,6 +10579,24 @@ "1f596" ] }, + "waffle": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f9c7.png?v8", + "codepoints": [ + "1f9c7" + ] + }, + "wales": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f3f4-e0067-e0062-e0077-e006c-e0073-e007f.png?v8", + "codepoints": [ + "1f3f4", + "e0067", + "e0062", + "e0077", + "e006c", + "e0073", + "e007f" + ] + }, "walking": { "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f6b6.png?v8", "codepoints": [ @@ -8870,9 +10604,10 @@ ] }, "walking_man": { - "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f6b6.png?v8", + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f6b6-2642.png?v8", "codepoints": [ - "1f6b6" + "1f6b6", + "2642" ] }, "walking_woman": { @@ -8925,6 +10660,12 @@ "1f403" ] }, + "water_polo": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f93d.png?v8", + "codepoints": [ + "1f93d" + ] + }, "watermelon": { "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f349.png?v8", "codepoints": [ @@ -8973,12 +10714,19 @@ "1f492" ] }, - "weight_lifting_man": { + "weight_lifting": { "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f3cb.png?v8", "codepoints": [ "1f3cb" ] }, + "weight_lifting_man": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f3cb-2642.png?v8", + "codepoints": [ + "1f3cb", + "2642" + ] + }, "weight_lifting_woman": { "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f3cb-2640.png?v8", "codepoints": [ @@ -9041,6 +10789,26 @@ "1f4ae" ] }, + "white_haired_man": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f468-1f9b3.png?v8", + "codepoints": [ + "1f468", + "1f9b3" + ] + }, + "white_haired_woman": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f469-1f9b3.png?v8", + "codepoints": [ + "1f469", + "1f9b3" + ] + }, + "white_heart": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f90d.png?v8", + "codepoints": [ + "1f90d" + ] + }, "white_large_square": { "src": "https://github.githubassets.com/images/icons/emoji/unicode/2b1c.png?v8", "codepoints": [ @@ -9141,6 +10909,12 @@ "1f373" ] }, + "woman_dancing": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f483.png?v8", + "codepoints": [ + "1f483" + ] + }, "woman_facepalming": { "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f926-2640.png?v8", "codepoints": [ @@ -9176,6 +10950,20 @@ "2695" ] }, + "woman_in_manual_wheelchair": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f469-1f9bd.png?v8", + "codepoints": [ + "1f469", + "1f9bd" + ] + }, + "woman_in_motorized_wheelchair": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f469-1f9bc.png?v8", + "codepoints": [ + "1f469", + "1f9bc" + ] + }, "woman_judge": { "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f469-2696.png?v8", "codepoints": [ @@ -9267,6 +11055,19 @@ "1f4bb" ] }, + "woman_with_headscarf": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f9d5.png?v8", + "codepoints": [ + "1f9d5" + ] + }, + "woman_with_probing_cane": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f469-1f9af.png?v8", + "codepoints": [ + "1f469", + "1f9af" + ] + }, "woman_with_turban": { "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f473-2640.png?v8", "codepoints": [ @@ -9299,6 +11100,12 @@ "1f6ba" ] }, + "woozy_face": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f974.png?v8", + "codepoints": [ + "1f974" + ] + }, "world_map": { "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f5fa.png?v8", "codepoints": [ @@ -9317,6 +11124,12 @@ "1f527" ] }, + "wrestling": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f93c.png?v8", + "codepoints": [ + "1f93c" + ] + }, "writing_hand": { "src": "https://github.githubassets.com/images/icons/emoji/unicode/270d.png?v8", "codepoints": [ @@ -9329,12 +11142,36 @@ "274c" ] }, + "yarn": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f9f6.png?v8", + "codepoints": [ + "1f9f6" + ] + }, + "yawning_face": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f971.png?v8", + "codepoints": [ + "1f971" + ] + }, + "yellow_circle": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f7e1.png?v8", + "codepoints": [ + "1f7e1" + ] + }, "yellow_heart": { "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f49b.png?v8", "codepoints": [ "1f49b" ] }, + "yellow_square": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f7e8.png?v8", + "codepoints": [ + "1f7e8" + ] + }, "yemen": { "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f1fe-1f1ea.png?v8", "codepoints": [ @@ -9354,6 +11191,12 @@ "262f" ] }, + "yo_yo": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1fa80.png?v8", + "codepoints": [ + "1fa80" + ] + }, "yum": { "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f60b.png?v8", "codepoints": [ @@ -9367,12 +11210,24 @@ "1f1f2" ] }, + "zany_face": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f92a.png?v8", + "codepoints": [ + "1f92a" + ] + }, "zap": { "src": "https://github.githubassets.com/images/icons/emoji/unicode/26a1.png?v8", "codepoints": [ "26a1" ] }, + "zebra": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f993.png?v8", + "codepoints": [ + "1f993" + ] + }, "zero": { "src": "https://github.githubassets.com/images/icons/emoji/unicode/0030-20e3.png?v8", "codepoints": [ @@ -9393,6 +11248,26 @@ "1f910" ] }, + "zombie": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f9df.png?v8", + "codepoints": [ + "1f9df" + ] + }, + "zombie_man": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f9df-2642.png?v8", + "codepoints": [ + "1f9df", + "2642" + ] + }, + "zombie_woman": { + "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f9df-2640.png?v8", + "codepoints": [ + "1f9df", + "2640" + ] + }, "zzz": { "src": "https://github.githubassets.com/images/icons/emoji/unicode/1f4a4.png?v8", "codepoints": [ diff --git a/package-lock.json b/package-lock.json deleted file mode 100644 index d39e9ea..0000000 --- a/package-lock.json +++ /dev/null @@ -1,719 +0,0 @@ -{ - "name": "hexo-filter-github-emojis", - "version": "2.1.0", - "lockfileVersion": 1, - "requires": true, - "dependencies": { - "abab": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.0.tgz", - "integrity": "sha512-sY5AXXVZv4Y1VACTtR11UJCPHHudgY5i26Qj5TypE6DKlIApbwb5uqhXcJ5UUGbvZNRh7EeIoW+LrJumBsKp7w==" - }, - "acorn": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.3.0.tgz", - "integrity": "sha512-/czfa8BwS88b9gWQVhc8eknunSA2DoJpJyTQkhheIf5E48u1N0R4q/YxxsAeqRrmK9TQ/uYfgLDfZo91UlANIA==" - }, - "acorn-globals": { - "version": "4.3.3", - "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-4.3.3.tgz", - "integrity": "sha512-vkR40VwS2SYO98AIeFvzWWh+xyc2qi9s7OoXSFEGIP/rOJKzjnhykaZJNnHdoq4BL2gGxI5EZOU16z896EYnOQ==", - "requires": { - "acorn": "^6.0.1", - "acorn-walk": "^6.0.1" - } - }, - "acorn-walk": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-6.2.0.tgz", - "integrity": "sha512-7evsyfH1cLOCdAzZAd43Cic04yKydNx0cF+7tiA19p1XnLLPU4dpCQOqpjqwokFe//vS0QqfqqjCS2JkiIs0cA==" - }, - "ajv": { - "version": "5.5.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", - "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", - "requires": { - "co": "^4.6.0", - "fast-deep-equal": "^1.0.0", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.3.0" - } - }, - "array-equal": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-equal/-/array-equal-1.0.0.tgz", - "integrity": "sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM=" - }, - "asn1": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", - "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", - "requires": { - "safer-buffer": "~2.1.0" - } - }, - "assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" - }, - "async-limiter": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz", - "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==" - }, - "asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" - }, - "aws-sign2": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", - "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=" - }, - "aws4": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz", - "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==" - }, - "bcrypt-pbkdf": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", - "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", - "optional": true, - "requires": { - "tweetnacl": "^0.14.3" - } - }, - "browser-process-hrtime": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-0.1.3.tgz", - "integrity": "sha512-bRFnI4NnjO6cnyLmOV/7PVoDEMJChlcfN0z4s1YMBY989/SvlfMI1lgCnkFUs53e9gQF+w7qu7XdllSTiSl8Aw==" - }, - "caseless": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" - }, - "co": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=" - }, - "combined-stream": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.7.tgz", - "integrity": "sha512-brWl9y6vOB1xYPZcpZde3N9zDByXTosAeMDo4p1wzo6UMOX4vumB+TP1RZ76sfE6Md68Q0NJSrE/gbezd4Ul+w==", - "requires": { - "delayed-stream": "~1.0.0" - } - }, - "core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" - }, - "cssom": { - "version": "0.3.8", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", - "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==" - }, - "cssstyle": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-1.4.0.tgz", - "integrity": "sha512-GBrLZYZ4X4x6/QEoBnIrqb8B/f5l4+8me2dkom/j1Gtbxy0kBv6OGzKuAsGM75bkGwGAFkt56Iwg28S3XTZgSA==", - "requires": { - "cssom": "0.3.x" - } - }, - "dashdash": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", - "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", - "requires": { - "assert-plus": "^1.0.0" - } - }, - "data-urls": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-1.1.0.tgz", - "integrity": "sha512-YTWYI9se1P55u58gL5GkQHW4P6VJBJ5iBT+B5a7i2Tjadhv52paJG0qHX4A0OR6/t52odI64KP2YvFpkDOi3eQ==", - "requires": { - "abab": "^2.0.0", - "whatwg-mimetype": "^2.2.0", - "whatwg-url": "^7.0.0" - } - }, - "deep-is": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", - "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=" - }, - "delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" - }, - "domexception": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/domexception/-/domexception-1.0.1.tgz", - "integrity": "sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug==", - "requires": { - "webidl-conversions": "^4.0.2" - } - }, - "ecc-jsbn": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", - "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", - "optional": true, - "requires": { - "jsbn": "~0.1.0", - "safer-buffer": "^2.1.0" - } - }, - "escodegen": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.12.0.tgz", - "integrity": "sha512-TuA+EhsanGcme5T3R0L80u4t8CpbXQjegRmf7+FPTJrtCTErXFeelblRgHQa1FofEzqYYJmJ/OqjTwREp9qgmg==", - "requires": { - "esprima": "^3.1.3", - "estraverse": "^4.2.0", - "esutils": "^2.0.2", - "optionator": "^0.8.1", - "source-map": "~0.6.1" - } - }, - "esprima": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", - "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=" - }, - "estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==" - }, - "esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==" - }, - "extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" - }, - "extsprintf": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=" - }, - "fast-deep-equal": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz", - "integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=" - }, - "fast-json-stable-stringify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", - "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=" - }, - "fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=" - }, - "forever-agent": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=" - }, - "form-data": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.2.tgz", - "integrity": "sha1-SXBJi+YEwgwAXU9cI67NIda0kJk=", - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "1.0.6", - "mime-types": "^2.1.12" - }, - "dependencies": { - "combined-stream": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.6.tgz", - "integrity": "sha1-cj599ugBrFYTETp+RFqbactjKBg=", - "requires": { - "delayed-stream": "~1.0.0" - } - } - } - }, - "getpass": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", - "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", - "requires": { - "assert-plus": "^1.0.0" - } - }, - "har-schema": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", - "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=" - }, - "har-validator": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.0.tgz", - "integrity": "sha512-+qnmNjI4OfH2ipQ9VQOw23bBd/ibtfbVdK2fYbY4acTDqKTW/YDp9McimZdDbG8iV9fZizUqQMD5xvriB146TA==", - "requires": { - "ajv": "^5.3.0", - "har-schema": "^2.0.0" - } - }, - "html-encoding-sniffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz", - "integrity": "sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw==", - "requires": { - "whatwg-encoding": "^1.0.1" - } - }, - "http-signature": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", - "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", - "requires": { - "assert-plus": "^1.0.0", - "jsprim": "^1.2.2", - "sshpk": "^1.7.0" - } - }, - "iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "requires": { - "safer-buffer": ">= 2.1.2 < 3" - } - }, - "ip-regex": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-2.1.0.tgz", - "integrity": "sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk=" - }, - "is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" - }, - "isstream": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" - }, - "jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", - "optional": true - }, - "jsdom": { - "version": "15.1.1", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-15.1.1.tgz", - "integrity": "sha512-cQZRBB33arrDAeCrAEWn1U3SvrvC8XysBua9Oqg1yWrsY/gYcusloJC3RZJXuY5eehSCmws8f2YeliCqGSkrtQ==", - "requires": { - "abab": "^2.0.0", - "acorn": "^6.1.1", - "acorn-globals": "^4.3.2", - "array-equal": "^1.0.0", - "cssom": "^0.3.6", - "cssstyle": "^1.2.2", - "data-urls": "^1.1.0", - "domexception": "^1.0.1", - "escodegen": "^1.11.1", - "html-encoding-sniffer": "^1.0.2", - "nwsapi": "^2.1.4", - "parse5": "5.1.0", - "pn": "^1.1.0", - "request": "^2.88.0", - "request-promise-native": "^1.0.7", - "saxes": "^3.1.9", - "symbol-tree": "^3.2.2", - "tough-cookie": "^3.0.1", - "w3c-hr-time": "^1.0.1", - "w3c-xmlserializer": "^1.1.2", - "webidl-conversions": "^4.0.2", - "whatwg-encoding": "^1.0.5", - "whatwg-mimetype": "^2.3.0", - "whatwg-url": "^7.0.0", - "ws": "^7.0.0", - "xml-name-validator": "^3.0.0" - }, - "dependencies": { - "parse5": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.0.tgz", - "integrity": "sha512-fxNG2sQjHvlVAYmzBZS9YlDp6PTSSDwa98vkD4QgVDDCAo84z5X1t5XyJQ62ImdLXx5NdIIfihey6xpum9/gRQ==" - }, - "punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" - }, - "tough-cookie": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-3.0.1.tgz", - "integrity": "sha512-yQyJ0u4pZsv9D4clxO69OEjLWYw+jbgspjTue4lTQZLfV0c5l1VmK2y1JK8E9ahdpltPOaAThPcp5nKPUgSnsg==", - "requires": { - "ip-regex": "^2.1.0", - "psl": "^1.1.28", - "punycode": "^2.1.1" - } - } - } - }, - "json-schema": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", - "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=" - }, - "json-schema-traverse": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz", - "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=" - }, - "json-stringify-safe": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" - }, - "jsprim": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", - "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", - "requires": { - "assert-plus": "1.0.0", - "extsprintf": "1.3.0", - "json-schema": "0.2.3", - "verror": "1.10.0" - } - }, - "levn": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", - "requires": { - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2" - } - }, - "lodash": { - "version": "4.17.19", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.19.tgz", - "integrity": "sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ==" - }, - "lodash.sortby": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", - "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=" - }, - "mime-db": { - "version": "1.36.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.36.0.tgz", - "integrity": "sha512-L+xvyD9MkoYMXb1jAmzI/lWYAxAMCPvIBSWur0PZ5nOf5euahRLVqH//FKW9mWp2lkqUgYiXPgkzfMUFi4zVDw==" - }, - "mime-types": { - "version": "2.1.20", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.20.tgz", - "integrity": "sha512-HrkrPaP9vGuWbLK1B1FfgAkbqNjIuy4eHlIYnFi7kamZyLLrGlo2mpcx0bBmNpKqBtYtAfGbodDddIgddSJC2A==", - "requires": { - "mime-db": "~1.36.0" - } - }, - "nwsapi": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.1.4.tgz", - "integrity": "sha512-iGfd9Y6SFdTNldEy2L0GUhcarIutFmk+MPWIn9dmj8NMIup03G08uUF2KGbbmv/Ux4RT0VZJoP/sVbWA6d/VIw==" - }, - "oauth-sign": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", - "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==" - }, - "optionator": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz", - "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=", - "requires": { - "deep-is": "~0.1.3", - "fast-levenshtein": "~2.0.4", - "levn": "~0.3.0", - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2", - "wordwrap": "~1.0.0" - } - }, - "performance-now": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" - }, - "pn": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/pn/-/pn-1.1.0.tgz", - "integrity": "sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA==" - }, - "prelude-ls": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=" - }, - "psl": { - "version": "1.1.29", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.1.29.tgz", - "integrity": "sha512-AeUmQ0oLN02flVHXWh9sSJF7mcdFq0ppid/JkErufc3hGIV/AMa8Fo9VgDo/cT2jFdOWoFvHp90qqBH54W+gjQ==" - }, - "punycode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" - }, - "qs": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", - "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==" - }, - "random-ua": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/random-ua/-/random-ua-0.0.6.tgz", - "integrity": "sha1-63CQG3Kk/guNOrdSprJRIuQMCtc=" - }, - "request": { - "version": "2.88.0", - "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz", - "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==", - "requires": { - "aws-sign2": "~0.7.0", - "aws4": "^1.8.0", - "caseless": "~0.12.0", - "combined-stream": "~1.0.6", - "extend": "~3.0.2", - "forever-agent": "~0.6.1", - "form-data": "~2.3.2", - "har-validator": "~5.1.0", - "http-signature": "~1.2.0", - "is-typedarray": "~1.0.0", - "isstream": "~0.1.2", - "json-stringify-safe": "~5.0.1", - "mime-types": "~2.1.19", - "oauth-sign": "~0.9.0", - "performance-now": "^2.1.0", - "qs": "~6.5.2", - "safe-buffer": "^5.1.2", - "tough-cookie": "~2.4.3", - "tunnel-agent": "^0.6.0", - "uuid": "^3.3.2" - } - }, - "request-promise-core": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.2.tgz", - "integrity": "sha512-UHYyq1MO8GsefGEt7EprS8UrXsm1TxEvFUX1IMTuSLU2Rh7fTIdFtl8xD7JiEYiWU2dl+NYAjCTksTehQUxPag==", - "requires": { - "lodash": "^4.17.11" - } - }, - "request-promise-native": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.7.tgz", - "integrity": "sha512-rIMnbBdgNViL37nZ1b3L/VfPOpSi0TqVDQPAvO6U14lMzOLrt5nilxCQqtDKhZeDiW0/hkCXGoQjhgJd/tCh6w==", - "requires": { - "request-promise-core": "1.1.2", - "stealthy-require": "^1.1.1", - "tough-cookie": "^2.3.3" - } - }, - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - }, - "safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" - }, - "saxes": { - "version": "3.1.11", - "resolved": "https://registry.npmjs.org/saxes/-/saxes-3.1.11.tgz", - "integrity": "sha512-Ydydq3zC+WYDJK1+gRxRapLIED9PWeSuuS41wqyoRmzvhhh9nc+QQrVMKJYzJFULazeGhzSV0QleN2wD3boh2g==", - "requires": { - "xmlchars": "^2.1.1" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "optional": true - }, - "sshpk": { - "version": "1.14.2", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.14.2.tgz", - "integrity": "sha1-xvxhZIo9nE52T9P8306hBeSSupg=", - "requires": { - "asn1": "~0.2.3", - "assert-plus": "^1.0.0", - "bcrypt-pbkdf": "^1.0.0", - "dashdash": "^1.12.0", - "ecc-jsbn": "~0.1.1", - "getpass": "^0.1.1", - "jsbn": "~0.1.0", - "safer-buffer": "^2.0.2", - "tweetnacl": "~0.14.0" - } - }, - "stealthy-require": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", - "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=" - }, - "symbol-tree": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", - "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==" - }, - "tough-cookie": { - "version": "2.4.3", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz", - "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==", - "requires": { - "psl": "^1.1.24", - "punycode": "^1.4.1" - } - }, - "tr46": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", - "integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=", - "requires": { - "punycode": "^2.1.0" - }, - "dependencies": { - "punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" - } - } - }, - "tunnel-agent": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", - "requires": { - "safe-buffer": "^5.0.1" - } - }, - "tweetnacl": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", - "optional": true - }, - "type-check": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", - "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", - "requires": { - "prelude-ls": "~1.1.2" - } - }, - "uuid": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", - "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==" - }, - "verror": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", - "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", - "requires": { - "assert-plus": "^1.0.0", - "core-util-is": "1.0.2", - "extsprintf": "^1.2.0" - } - }, - "w3c-hr-time": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.1.tgz", - "integrity": "sha1-gqwr/2PZUOqeMYmlimViX+3xkEU=", - "requires": { - "browser-process-hrtime": "^0.1.2" - } - }, - "w3c-xmlserializer": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-1.1.2.tgz", - "integrity": "sha512-p10l/ayESzrBMYWRID6xbuCKh2Fp77+sA0doRuGn4tTIMrrZVeqfpKjXHY+oDh3K4nLdPgNwMTVP6Vp4pvqbNg==", - "requires": { - "domexception": "^1.0.1", - "webidl-conversions": "^4.0.2", - "xml-name-validator": "^3.0.0" - } - }, - "webidl-conversions": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", - "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==" - }, - "whatwg-encoding": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz", - "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==", - "requires": { - "iconv-lite": "0.4.24" - } - }, - "whatwg-mimetype": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", - "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==" - }, - "whatwg-url": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.0.0.tgz", - "integrity": "sha512-37GeVSIJ3kn1JgKyjiYNmSLP1yzbpb29jdmwBSgkD9h40/hyrR/OifpVUndji3tmwGgD8qpw7iQu3RSbCrBpsQ==", - "requires": { - "lodash.sortby": "^4.7.0", - "tr46": "^1.0.1", - "webidl-conversions": "^4.0.2" - } - }, - "wordwrap": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", - "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=" - }, - "ws": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.1.2.tgz", - "integrity": "sha512-gftXq3XI81cJCgkUiAVixA0raD9IVmXqsylCrjRygw4+UOOGzPoxnQ6r/CnVL9i+mDncJo94tSkyrtuuQVBmrg==", - "requires": { - "async-limiter": "^1.0.0" - } - }, - "xml-name-validator": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", - "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==" - }, - "xmlchars": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.1.1.tgz", - "integrity": "sha512-7hew1RPJ1iIuje/Y01bGD/mXokXxegAgVS+e+E0wSi2ILHQkYAH1+JXARwTjZSM4Z4Z+c73aKspEcqj+zPPL/w==" - } - } -} diff --git a/package.json b/package.json index 43f0a21..d3f372f 100644 --- a/package.json +++ b/package.json @@ -19,9 +19,9 @@ "author": "CRIMX (http://blog.crimx.com)", "license": "MIT", "dependencies": { - "jsdom": "^15.1.1", - "lodash": "^4.17.15", - "random-ua": "0.0.6", - "request": "^2.83.0" + "jsdom": "^16.4.0", + "lodash": "^4.17.20", + "node-fetch": "^2.6.1", + "random-ua": "^0.0.6" } } diff --git a/update-emojis.js b/update-emojis.js index cc5e8ea..dca9718 100644 --- a/update-emojis.js +++ b/update-emojis.js @@ -1,46 +1,42 @@ -const _ = require('lodash') -const path = require('path') -const fs = require('fs') -const request = require('request') -const randomUa = require('random-ua') +const path = require("path"); +const fs = require("fs"); +const fetch = require("node-fetch"); +const randomUa = require("random-ua"); // get the latest github version -request({ - url: 'https://api.github.com/emojis', +fetch("https://api.github.com/emojis", { headers: { - 'User-Agent': randomUa.generate(), + "User-Agent": randomUa.generate(), + "Content-Type": "application/json", }, - json: true, -}, function (error, response, json) { - if (response.statusCode === 304) { return } - if (error || !_.isObject(json)) { - console.error('Failded to download Github emojis.') - console.log(error, response, json) - process.exit(1) - } - - const latestEmojis = Object.keys(json).reduce((emojis, name) => { - emojis[name] = { src: json[name] } - - const match = /\/unicode\/(\S+)\./.exec(json[name]) - if (match) { - emojis[name].codepoints = match[1].split('-') - } - - return emojis - }, {}) - - // update local backup - fs.writeFile( - path.join(__dirname, 'emojis.json'), - JSON.stringify(latestEmojis, null, ' '), - function (err) { - if (err) { - console.warn(err) - process.exit(1) - } else { - console.log(`Update ${Object.keys(latestEmojis).length} emojis`) - } - }, - ) }) + .then((t) => t.json()) + .then((json) => { + const latestEmojis = Object.keys(json).reduce((emojis, name) => { + emojis[name] = { src: json[name] }; + + const match = /\/unicode\/(\S+)\./.exec(json[name]); + if (match) { + emojis[name].codepoints = match[1].split("-"); + } + + return emojis; + }, {}); + + // update local backup + fs.writeFile( + path.join(__dirname, "emojis.json"), + JSON.stringify(latestEmojis, null, " "), + function (err) { + if (err) { + console.warn(err); + process.exit(1); + } else { + console.log(`Update ${Object.keys(latestEmojis).length} emojis`); + } + } + ); + }) + .catch((error) => { + console.error(error); + }); diff --git a/yarn.lock b/yarn.lock new file mode 100644 index 0000000..faa6aa4 --- /dev/null +++ b/yarn.lock @@ -0,0 +1,661 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +abab@^2.0.3: + version "2.0.5" + resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.5.tgz#c0b678fb32d60fc1219c784d6a826fe385aeb79a" + integrity sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q== + +acorn-globals@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-6.0.0.tgz#46cdd39f0f8ff08a876619b55f5ac8a6dc770b45" + integrity sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg== + dependencies: + acorn "^7.1.1" + acorn-walk "^7.1.1" + +acorn-walk@^7.1.1: + version "7.2.0" + resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-7.2.0.tgz#0de889a601203909b0fbe07b8938dc21d2e967bc" + integrity sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA== + +acorn@^7.1.1: + version "7.4.0" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.0.tgz#e1ad486e6c54501634c6c397c5c121daa383607c" + integrity sha512-+G7P8jJmCHr+S+cLfQxygbWhXy+8YTVGzAkpEbcLo2mLoL7tij/VG41QSHACSf5QgYRhMZYHuNc6drJaO0Da+w== + +ajv@^6.12.3: + version "6.12.5" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.5.tgz#19b0e8bae8f476e5ba666300387775fb1a00a4da" + integrity sha512-lRF8RORchjpKG50/WFf8xmg7sgCLFiYNNnqdKflk63whMQcWR5ngGjiSXkL9bjxy6B2npOK2HSMN49jEBMSkag== + dependencies: + fast-deep-equal "^3.1.1" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.4.1" + uri-js "^4.2.2" + +asn1@~0.2.3: + version "0.2.4" + resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.4.tgz#8d2475dfab553bb33e77b54e59e880bb8ce23136" + integrity sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg== + dependencies: + safer-buffer "~2.1.0" + +assert-plus@1.0.0, assert-plus@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" + integrity sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU= + +asynckit@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" + integrity sha1-x57Zf380y48robyXkLzDZkdLS3k= + +aws-sign2@~0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" + integrity sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg= + +aws4@^1.8.0: + version "1.10.1" + resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.10.1.tgz#e1e82e4f3e999e2cfd61b161280d16a111f86428" + integrity sha512-zg7Hz2k5lI8kb7U32998pRRFin7zJlkfezGJjUc2heaD4Pw2wObakCDVzkKztTm/Ln7eiVvYsjqak0Ed4LkMDA== + +bcrypt-pbkdf@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e" + integrity sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4= + dependencies: + tweetnacl "^0.14.3" + +browser-process-hrtime@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz#3c9b4b7d782c8121e56f10106d84c0d0ffc94626" + integrity sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow== + +caseless@~0.12.0: + version "0.12.0" + resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" + integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw= + +combined-stream@^1.0.6, combined-stream@~1.0.6: + version "1.0.8" + resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" + integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== + dependencies: + delayed-stream "~1.0.0" + +core-util-is@1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" + integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= + +cssom@^0.4.4: + version "0.4.4" + resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.4.4.tgz#5a66cf93d2d0b661d80bf6a44fb65f5c2e4e0a10" + integrity sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw== + +cssom@~0.3.6: + version "0.3.8" + resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.8.tgz#9f1276f5b2b463f2114d3f2c75250af8c1a36f4a" + integrity sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg== + +cssstyle@^2.2.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-2.3.0.tgz#ff665a0ddbdc31864b09647f34163443d90b0852" + integrity sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A== + dependencies: + cssom "~0.3.6" + +dashdash@^1.12.0: + version "1.14.1" + resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" + integrity sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA= + dependencies: + assert-plus "^1.0.0" + +data-urls@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-2.0.0.tgz#156485a72963a970f5d5821aaf642bef2bf2db9b" + integrity sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ== + dependencies: + abab "^2.0.3" + whatwg-mimetype "^2.3.0" + whatwg-url "^8.0.0" + +decimal.js@^10.2.0: + version "10.2.1" + resolved "https://registry.yarnpkg.com/decimal.js/-/decimal.js-10.2.1.tgz#238ae7b0f0c793d3e3cea410108b35a2c01426a3" + integrity sha512-KaL7+6Fw6i5A2XSnsbhm/6B+NuEA7TZ4vqxnd5tXz9sbKtrN9Srj8ab4vKVdK8YAqZO9P1kg45Y6YLoduPf+kw== + +deep-is@~0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" + integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ= + +delayed-stream@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" + integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk= + +domexception@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/domexception/-/domexception-2.0.1.tgz#fb44aefba793e1574b0af6aed2801d057529f304" + integrity sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg== + dependencies: + webidl-conversions "^5.0.0" + +ecc-jsbn@~0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" + integrity sha1-OoOpBOVDUyh4dMVkt1SThoSamMk= + dependencies: + jsbn "~0.1.0" + safer-buffer "^2.1.0" + +escodegen@^1.14.1: + version "1.14.3" + resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.14.3.tgz#4e7b81fba61581dc97582ed78cab7f0e8d63f503" + integrity sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw== + dependencies: + esprima "^4.0.1" + estraverse "^4.2.0" + esutils "^2.0.2" + optionator "^0.8.1" + optionalDependencies: + source-map "~0.6.1" + +esprima@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" + integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== + +estraverse@^4.2.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" + integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== + +esutils@^2.0.2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" + integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== + +extend@~3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" + integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== + +extsprintf@1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" + integrity sha1-lpGEQOMEGnpBT4xS48V06zw+HgU= + +extsprintf@^1.2.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f" + integrity sha1-4mifjzVvrWLMplo6kcXfX5VRaS8= + +fast-deep-equal@^3.1.1: + version "3.1.3" + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" + integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== + +fast-json-stable-stringify@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" + integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== + +fast-levenshtein@~2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" + integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= + +forever-agent@~0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" + integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE= + +form-data@~2.3.2: + version "2.3.3" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6" + integrity sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.6" + mime-types "^2.1.12" + +getpass@^0.1.1: + version "0.1.7" + resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" + integrity sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo= + dependencies: + assert-plus "^1.0.0" + +har-schema@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" + integrity sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI= + +har-validator@~5.1.3: + version "5.1.5" + resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.5.tgz#1f0803b9f8cb20c0fa13822df1ecddb36bde1efd" + integrity sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w== + dependencies: + ajv "^6.12.3" + har-schema "^2.0.0" + +html-encoding-sniffer@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz#42a6dc4fd33f00281176e8b23759ca4e4fa185f3" + integrity sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ== + dependencies: + whatwg-encoding "^1.0.5" + +http-signature@~1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" + integrity sha1-muzZJRFHcvPZW2WmCruPfBj7rOE= + dependencies: + assert-plus "^1.0.0" + jsprim "^1.2.2" + sshpk "^1.7.0" + +iconv-lite@0.4.24: + version "0.4.24" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" + integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== + dependencies: + safer-buffer ">= 2.1.2 < 3" + +ip-regex@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-2.1.0.tgz#fa78bf5d2e6913c911ce9f819ee5146bb6d844e9" + integrity sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk= + +is-potential-custom-element-name@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.0.tgz#0c52e54bcca391bb2c494b21e8626d7336c6e397" + integrity sha1-DFLlS8yjkbssSUsh6GJtczbG45c= + +is-typedarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" + integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= + +isstream@~0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" + integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo= + +jsbn@~0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" + integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM= + +jsdom@^16.4.0: + version "16.4.0" + resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-16.4.0.tgz#36005bde2d136f73eee1a830c6d45e55408edddb" + integrity sha512-lYMm3wYdgPhrl7pDcRmvzPhhrGVBeVhPIqeHjzeiHN3DFmD1RBpbExbi8vU7BJdH8VAZYovR8DMt0PNNDM7k8w== + dependencies: + abab "^2.0.3" + acorn "^7.1.1" + acorn-globals "^6.0.0" + cssom "^0.4.4" + cssstyle "^2.2.0" + data-urls "^2.0.0" + decimal.js "^10.2.0" + domexception "^2.0.1" + escodegen "^1.14.1" + html-encoding-sniffer "^2.0.1" + is-potential-custom-element-name "^1.0.0" + nwsapi "^2.2.0" + parse5 "5.1.1" + request "^2.88.2" + request-promise-native "^1.0.8" + saxes "^5.0.0" + symbol-tree "^3.2.4" + tough-cookie "^3.0.1" + w3c-hr-time "^1.0.2" + w3c-xmlserializer "^2.0.0" + webidl-conversions "^6.1.0" + whatwg-encoding "^1.0.5" + whatwg-mimetype "^2.3.0" + whatwg-url "^8.0.0" + ws "^7.2.3" + xml-name-validator "^3.0.0" + +json-schema-traverse@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" + integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== + +json-schema@0.2.3: + version "0.2.3" + resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" + integrity sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM= + +json-stringify-safe@~5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" + integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus= + +jsprim@^1.2.2: + version "1.4.1" + resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" + integrity sha1-MT5mvB5cwG5Di8G3SZwuXFastqI= + dependencies: + assert-plus "1.0.0" + extsprintf "1.3.0" + json-schema "0.2.3" + verror "1.10.0" + +levn@~0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" + integrity sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4= + dependencies: + prelude-ls "~1.1.2" + type-check "~0.3.2" + +lodash.sortby@^4.7.0: + version "4.7.0" + resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438" + integrity sha1-7dFMgk4sycHgsKG0K7UhBRakJDg= + +lodash@^4.17.19, lodash@^4.17.20: + version "4.17.20" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.20.tgz#b44a9b6297bcb698f1c51a3545a2b3b368d59c52" + integrity sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA== + +mime-db@1.44.0: + version "1.44.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.44.0.tgz#fa11c5eb0aca1334b4233cb4d52f10c5a6272f92" + integrity sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg== + +mime-types@^2.1.12, mime-types@~2.1.19: + version "2.1.27" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.27.tgz#47949f98e279ea53119f5722e0f34e529bec009f" + integrity sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w== + dependencies: + mime-db "1.44.0" + +node-fetch@^2.6.1: + version "2.6.1" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.1.tgz#045bd323631f76ed2e2b55573394416b639a0052" + integrity sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw== + +nwsapi@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.0.tgz#204879a9e3d068ff2a55139c2c772780681a38b7" + integrity sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ== + +oauth-sign@~0.9.0: + version "0.9.0" + resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" + integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== + +optionator@^0.8.1: + version "0.8.3" + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.3.tgz#84fa1d036fe9d3c7e21d99884b601167ec8fb495" + integrity sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA== + dependencies: + deep-is "~0.1.3" + fast-levenshtein "~2.0.6" + levn "~0.3.0" + prelude-ls "~1.1.2" + type-check "~0.3.2" + word-wrap "~1.2.3" + +parse5@5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/parse5/-/parse5-5.1.1.tgz#f68e4e5ba1852ac2cadc00f4555fff6c2abb6178" + integrity sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug== + +performance-now@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" + integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= + +prelude-ls@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" + integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ= + +psl@^1.1.28: + version "1.8.0" + resolved "https://registry.yarnpkg.com/psl/-/psl-1.8.0.tgz#9326f8bcfb013adcc005fdff056acce020e51c24" + integrity sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ== + +punycode@^2.1.0, punycode@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" + integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== + +qs@~6.5.2: + version "6.5.2" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" + integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA== + +random-ua@^0.0.6: + version "0.0.6" + resolved "https://registry.yarnpkg.com/random-ua/-/random-ua-0.0.6.tgz#eb70901b72a4fe0b8d3ab752a6b25122e40c0ad7" + integrity sha1-63CQG3Kk/guNOrdSprJRIuQMCtc= + +request-promise-core@1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/request-promise-core/-/request-promise-core-1.1.4.tgz#3eedd4223208d419867b78ce815167d10593a22f" + integrity sha512-TTbAfBBRdWD7aNNOoVOBH4pN/KigV6LyapYNNlAPA8JwbovRti1E88m3sYAwsLi5ryhPKsE9APwnjFTgdUjTpw== + dependencies: + lodash "^4.17.19" + +request-promise-native@^1.0.8: + version "1.0.9" + resolved "https://registry.yarnpkg.com/request-promise-native/-/request-promise-native-1.0.9.tgz#e407120526a5efdc9a39b28a5679bf47b9d9dc28" + integrity sha512-wcW+sIUiWnKgNY0dqCpOZkUbF/I+YPi+f09JZIDa39Ec+q82CpSYniDp+ISgTTbKmnpJWASeJBPZmoxH84wt3g== + dependencies: + request-promise-core "1.1.4" + stealthy-require "^1.1.1" + tough-cookie "^2.3.3" + +request@^2.88.2: + version "2.88.2" + resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3" + integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw== + dependencies: + aws-sign2 "~0.7.0" + aws4 "^1.8.0" + caseless "~0.12.0" + combined-stream "~1.0.6" + extend "~3.0.2" + forever-agent "~0.6.1" + form-data "~2.3.2" + har-validator "~5.1.3" + http-signature "~1.2.0" + is-typedarray "~1.0.0" + isstream "~0.1.2" + json-stringify-safe "~5.0.1" + mime-types "~2.1.19" + oauth-sign "~0.9.0" + performance-now "^2.1.0" + qs "~6.5.2" + safe-buffer "^5.1.2" + tough-cookie "~2.5.0" + tunnel-agent "^0.6.0" + uuid "^3.3.2" + +safe-buffer@^5.0.1, safe-buffer@^5.1.2: + version "5.2.1" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" + integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== + +"safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: + version "2.1.2" + resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" + integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== + +saxes@^5.0.0: + version "5.0.1" + resolved "https://registry.yarnpkg.com/saxes/-/saxes-5.0.1.tgz#eebab953fa3b7608dbe94e5dadb15c888fa6696d" + integrity sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw== + dependencies: + xmlchars "^2.2.0" + +source-map@~0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== + +sshpk@^1.7.0: + version "1.16.1" + resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.16.1.tgz#fb661c0bef29b39db40769ee39fa70093d6f6877" + integrity sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg== + dependencies: + asn1 "~0.2.3" + assert-plus "^1.0.0" + bcrypt-pbkdf "^1.0.0" + dashdash "^1.12.0" + ecc-jsbn "~0.1.1" + getpass "^0.1.1" + jsbn "~0.1.0" + safer-buffer "^2.0.2" + tweetnacl "~0.14.0" + +stealthy-require@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/stealthy-require/-/stealthy-require-1.1.1.tgz#35b09875b4ff49f26a777e509b3090a3226bf24b" + integrity sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks= + +symbol-tree@^3.2.4: + version "3.2.4" + resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2" + integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw== + +tough-cookie@^2.3.3, tough-cookie@~2.5.0: + version "2.5.0" + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" + integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g== + dependencies: + psl "^1.1.28" + punycode "^2.1.1" + +tough-cookie@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-3.0.1.tgz#9df4f57e739c26930a018184887f4adb7dca73b2" + integrity sha512-yQyJ0u4pZsv9D4clxO69OEjLWYw+jbgspjTue4lTQZLfV0c5l1VmK2y1JK8E9ahdpltPOaAThPcp5nKPUgSnsg== + dependencies: + ip-regex "^2.1.0" + psl "^1.1.28" + punycode "^2.1.1" + +tr46@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/tr46/-/tr46-2.0.2.tgz#03273586def1595ae08fedb38d7733cee91d2479" + integrity sha512-3n1qG+/5kg+jrbTzwAykB5yRYtQCTqOGKq5U5PE3b0a1/mzo6snDhjGS0zJVJunO0NrT3Dg1MLy5TjWP/UJppg== + dependencies: + punycode "^2.1.1" + +tunnel-agent@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" + integrity sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0= + dependencies: + safe-buffer "^5.0.1" + +tweetnacl@^0.14.3, tweetnacl@~0.14.0: + version "0.14.5" + resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" + integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q= + +type-check@~0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" + integrity sha1-WITKtRLPHTVeP7eE8wgEsrUg23I= + dependencies: + prelude-ls "~1.1.2" + +uri-js@^4.2.2: + version "4.4.0" + resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.0.tgz#aa714261de793e8a82347a7bcc9ce74e86f28602" + integrity sha512-B0yRTzYdUCCn9n+F4+Gh4yIDtMQcaJsmYBDsTSG8g/OejKBodLQ2IHfN3bM7jUsRXndopT7OIXWdYqc1fjmV6g== + dependencies: + punycode "^2.1.0" + +uuid@^3.3.2: + version "3.4.0" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" + integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== + +verror@1.10.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" + integrity sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA= + dependencies: + assert-plus "^1.0.0" + core-util-is "1.0.2" + extsprintf "^1.2.0" + +w3c-hr-time@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz#0a89cdf5cc15822df9c360543676963e0cc308cd" + integrity sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ== + dependencies: + browser-process-hrtime "^1.0.0" + +w3c-xmlserializer@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz#3e7104a05b75146cc60f564380b7f683acf1020a" + integrity sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA== + dependencies: + xml-name-validator "^3.0.0" + +webidl-conversions@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-5.0.0.tgz#ae59c8a00b121543a2acc65c0434f57b0fc11aff" + integrity sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA== + +webidl-conversions@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-6.1.0.tgz#9111b4d7ea80acd40f5270d666621afa78b69514" + integrity sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w== + +whatwg-encoding@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz#5abacf777c32166a51d085d6b4f3e7d27113ddb0" + integrity sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw== + dependencies: + iconv-lite "0.4.24" + +whatwg-mimetype@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz#3d4b1e0312d2079879f826aff18dbeeca5960fbf" + integrity sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g== + +whatwg-url@^8.0.0: + version "8.3.0" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-8.3.0.tgz#d1e11e565334486cdb280d3101b9c3fd1c867582" + integrity sha512-BQRf/ej5Rp3+n7k0grQXZj9a1cHtsp4lqj01p59xBWFKdezR8sO37XnpafwNqiFac/v2Il12EIMjX/Y4VZtT8Q== + dependencies: + lodash.sortby "^4.7.0" + tr46 "^2.0.2" + webidl-conversions "^6.1.0" + +word-wrap@~1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" + integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== + +ws@^7.2.3: + version "7.3.1" + resolved "https://registry.yarnpkg.com/ws/-/ws-7.3.1.tgz#d0547bf67f7ce4f12a72dfe31262c68d7dc551c8" + integrity sha512-D3RuNkynyHmEJIpD2qrgVkc9DQ23OrN/moAwZX4L8DfvszsJxpjQuUq3LMx6HoYji9fbIOBY18XWBsAux1ZZUA== + +xml-name-validator@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-3.0.0.tgz#6ae73e06de4d8c6e47f9fb181f78d648ad457c6a" + integrity sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw== + +xmlchars@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/xmlchars/-/xmlchars-2.2.0.tgz#060fe1bcb7f9c76fe2a17db86a9bc3ab894210cb" + integrity sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw== From 4a04a77f6483f4ce09d41ce4be843ea1dff985b2 Mon Sep 17 00:00:00 2001 From: crimx Date: Sat, 3 Oct 2020 11:10:42 +0800 Subject: [PATCH 08/29] refactor: simplify implementation --- README.md | 92 ++++++++++++-------- index.js | 245 ++++++++++++++++++++++++++++++++---------------------- 2 files changed, 203 insertions(+), 134 deletions(-) diff --git a/README.md b/README.md index 171352f..097603b 100644 --- a/README.md +++ b/README.md @@ -9,8 +9,6 @@ A Hexo plugin that adds emoji support, using [Github Emojis API][ghemojis]. Check out the [Emoji Cheat Sheet](http://www.webpagefx.com/tools/emoji-cheat-sheet/) for all the emojis it supports. -V2 is not compatible with [V1](https://github.com/crimx/hexo-filter-github-emojis/tree/e52ceb8b18a7b06916b6cb0a887b218d49a7ab92). V1 replaces codepoints with `` tags. While V2 makes the font transparent and displays emojis with `background-image`. - ## Installation ``` bash @@ -30,43 +28,71 @@ githubEmojis: customEmojis: ``` -- **className** - Image class name. For example :sparkles: `:sparkles:` the filter will generate something like this: +- **enable** `boolean=true` - Enable `::` emoji parsing. If off the [tag](#tag) and [helper](#helper) still work. + +- **className** `string="github-emoji"` - Emoji class name. + For example :sparkles: `:sparkles:` the filter will generate something like this: ```html - + ``` -- **inject** - If true, the filter will inject proper inline styles and a script to fallback when image loading fails. If you can modify script files and style files, you may turn this off and add them yourself. - - ```html - - ``` +- **inject** `boolean=true` - Inject emoji styles and fallback script. + If `true`, the filter will inject a ` ``` -- **styles** - inline styles. For example: +- **styles** `object={}` - inline styles. For example: ```yaml githubEmojis: @@ -78,10 +104,10 @@ githubEmojis: outputs: ```html - + ``` -- **customEmojis** - You can specify your own list. An object or JSON string is valid. The filter will first check the `customEmojis` then fallback to the [Github Emojis][ghemojis] list. +- **customEmojis** `object={}` - You can specify your own list. An object or JSON string is valid. The filter will first check the `customEmojis` then fallback to the [Github Emojis][ghemojis] list. For example: @@ -129,7 +155,7 @@ no-emoji: true You can also render a GitHub emoji from a template using the `github_emoji` helper: ```html -

<% github_emoji('octocat') %>

+

<%- github_emoji('octocat') %>

``` [ghemojis]: https://api.github.com/emojis diff --git a/index.js b/index.js index cbf098d..39a35f3 100644 --- a/index.js +++ b/index.js @@ -1,144 +1,187 @@ -'use strict' +"use strict"; /* global hexo */ -const _ = require('lodash') -const path = require('path') -const fs = require('fs') -const { JSDOM } = require('jsdom') +const _ = require("lodash"); +const { JSDOM } = require("jsdom"); -var options = _.assign({ - enable: true, - inject: true, - version: 'latest', - className: 'github-emoji', -}, hexo.config.githubEmojis) +const options = Object.assign( + { + enable: true, + inject: true, + version: "latest", + className: "github-emoji", + }, + hexo.theme.githubEmojis || {}, + hexo.config.githubEmojis || {} +); -if (options.enable !== false) { - const emojis = _.assign( - {}, - require('./emojis.json'), - loadCustomEmojis(options.customEmojis || options.localEmojis), - ) +const emojis = Object.assign( + {}, + require("./emojis.json"), + loadCustomEmojis(options.customEmojis || options.localEmojis) +); - fs.writeFile( - path.join(__dirname, 'emojis.json'), - JSON.stringify(emojis, null, ' '), - function (err) { err && console.warn(err) }, - ) +hexo.extend.helper.register("github_emoji", (name) => + renderEmoji(emojis, name) +); - hexo.extend.filter.register('after_post_render', data => { - if (!options.inject && data['no-emoji']) { return data } +hexo.extend.tag.register("github_emoji", (args) => + renderEmoji(emojis, args[0]) +); - const $content = new JSDOM(data.content) - const $excerpt = new JSDOM(data.excerpt) +hexo.extend.filter.register("after_post_render", (data) => { + if (data["no-emoji"]) { + if (options.inject !== false) { + data.content = `` + data.content; + } + } else { + const $content = new JSDOM(data.content); + const $excerpt = new JSDOM(data.excerpt); - if (options.inject) { - const $script = $content.window.document.createElement('script') - $script.innerHTML = ` - document.querySelectorAll('.${options.className}') - .forEach(el => { - if (!el.dataset.src) { return; } - const img = document.createElement('img'); - img.style = 'display:none !important;'; - img.src = el.dataset.src; - img.addEventListener('error', () => { - img.remove(); - el.style.color = 'inherit'; - el.style.backgroundImage = 'none'; - el.style.background = 'none'; - }); - img.addEventListener('load', () => { - img.remove(); - }); - document.body.appendChild(img); - }); - ` - $content.window.document.body.appendChild($script) + replaceColons($content.window.document.body, emojis); + replaceColons($excerpt.window.document.body, emojis); + + if (options.inject !== false) { + const style = $content.window.document.createElement("style"); + style.innerHTML = getEmojiStyles(); + $content.window.document.body.insertBefore( + style, + $content.window.document.body.firstElementChild + ); } - if (!data['no-emoji']) { - replaceColons($content.window.document.body, emojis) - replaceColons($excerpt.window.document.body, emojis) - } + data.content = $content.window.document.body.innerHTML; + data.excerpt = $excerpt.window.document.body.innerHTML; + } - data.content = $content.window.document.body.innerHTML - data.excerpt = $excerpt.window.document.body.innerHTML - return data - }) + return data; +}); - hexo.extend.helper.register('github_emoji', name => renderEmoji(emojis, name)) - hexo.extend.tag.register('github_emoji', args => renderEmoji(emojis, args[0])) -} - -function replaceColons (node, emojis) { - if (!node || !node.childNodes) { return } +function replaceColons(node, emojis) { + if (!node || !node.childNodes) { + return; + } for (let i = node.childNodes.length - 1; i >= 0; i--) { - const child = node.childNodes[i] - if (child.tagName === 'PRE' || child.tagName === 'CODE') { return } + const child = node.childNodes[i]; + if (child.tagName === "PRE" || child.tagName === "CODE") { + return; + } if (child.nodeType === 3) { - const content = child.data.replace( - /:(\w+):/ig, - (match, p1) => emojis[p1] ? renderEmoji(emojis, p1) : match, - ) + const content = child.data.replace(/:(\w+):/gi, (match, p1) => + emojis[p1] ? renderEmoji(emojis, p1) : match + ); if (content !== child.data) { - child.replaceWith(JSDOM.fragment(content)) + child.replaceWith(JSDOM.fragment(content)); } } else { - replaceColons(child, emojis) + replaceColons(child, emojis); } } } -function loadCustomEmojis (customEmojis) { +function loadCustomEmojis(customEmojis) { // JSON string if (_.isString(customEmojis)) { try { - customEmojis = JSON.parse(customEmojis) - Object.keys(customEmojis).forEach(name => { + customEmojis = JSON.parse(customEmojis); + Object.keys(customEmojis).forEach((name) => { if (_.isString(customEmojis[name])) { customEmojis[name] = { src: customEmojis[name], - } + }; } - }) + }); } catch (err) { - customEmojis = {} - console.warn('hexo-filter-github-emojis: Custom emojis not valid. Skipped.') + customEmojis = {}; + console.warn( + "hexo-filter-github-emojis: Custom emojis not valid. Skipped." + ); } } if (!_.isObject(customEmojis)) { - customEmojis = {} + customEmojis = {}; } - Object.values(customEmojis).forEach(emoji => { - if (emoji.codepoints && !_.isArray(emoji.codepoints)) { - emoji.codepoints = emoji.codepoints.split(' ') - } - }) + return Object.keys(customEmojis).reduce((emojis, name) => { + const emoji = customEmojis[name]; + emojis[name] = Object.assign( + {}, + emoji, + emoji.codepoints && !_.isArray(emoji.codepoints) + ? { codepoints: emoji.codepoints.split(" ") } + : {} + ); + return emojis; + }, {}); } -function renderEmoji (emojis, name) { - if (!emojis[name]) { return name } +function renderEmoji(emojis, name) { + if (!emojis[name]) return name; const styles = _.isObject(options.styles) - ? Object.keys(options.styles) - .filter(k => _.isString(options.styles[k])) - .map(k => k + ':' + options.styles[k]) - : [] - - if (options.inject) { - styles.push( - 'color: transparent', - `background:no-repeat url(${emojis[name].src}) center/contain`, - ) - } else { - styles.push(`background-image:url(${emojis[name].src})`) - } + ? ` style="${Object.keys(options.styles) + .map((k) => k + ":" + options.styles[k]) + .join(";")}"` + : ""; const codepoints = emojis[name].codepoints - ? emojis[name].codepoints.map(c => `&#x${c};`).join('') - : ' ' + ? emojis[name].codepoints.map((c) => `&#x${c};`).join("") + : " "; - return `${codepoints}` + return ( + `` + ); +} + +function getEmojiStyles() { + const rules = `.${options.className} { + position: relative; + display: inline-block; + width: 1.2em; + min-height: 1.2em; + overflow: hidden; + vertical-align: top; + color: transparent; + } + + .${options.className} > span { + position: relative; + z-index: 10; + } + + .${options.className} img, + .${options.className} .fancybox { + margin: 0 !important; + padding: 0 !important; + border: none !important; + outline: none !important; + text-decoration: none !important; + user-select: none !important; + cursor: auto !important; + } + + .${options.className} img { + height: 1.2em !important; + width: 1.2em !important; + position: absolute !important; + left: 50% !important; + top: 50% !important; + transform: translate(-50%, -50%) !important; + user-select: none !important; + cursor: auto !important; + } + + .${options.className}-fallback { + color: inherit; + } + + .${options.className}-fallback img { + opacity: 0 !important; + }`; + + return rules.replace(/^ +/gm, ' ').replace(/\n/g, '') } From 4abbb05751dfa91fa6c0f3393f9faf630f461117 Mon Sep 17 00:00:00 2001 From: crimx Date: Sat, 3 Oct 2020 11:21:03 +0800 Subject: [PATCH 09/29] docs: note about fancybox --- README.md | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/README.md b/README.md index 097603b..e12206b 100644 --- a/README.md +++ b/README.md @@ -158,4 +158,30 @@ You can also render a GitHub emoji from a template using the `github_emoji` help

<%- github_emoji('octocat') %>

``` +## Fancybox + +If you are using theme that enables fancybox(e.g. the default landscape theme) it is recommended to skip the github emoji imgs. + +Edit `themes/landscape/source/script.js` + +```diff + // Caption + $('.article-entry').each(function(i){ + $(this).find('img').each(function(){ + if ($(this).parent().hasClass('fancybox')) return; ++ if ($(this).parent().hasClass('github-emoji')) return; + + var alt = this.alt; + + if (alt) $(this).after('' + alt + ''); + + $(this).wrap(''); + }); + + $(this).find('.fancybox').each(function(){ + $(this).attr('rel', 'article' + i); + }); + }); +``` + [ghemojis]: https://api.github.com/emojis From 7c15687c2b3e3e467a92a706c83d9631d9a551c5 Mon Sep 17 00:00:00 2001 From: crimx Date: Sat, 3 Oct 2020 11:21:15 +0800 Subject: [PATCH 10/29] chore: bump version --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index d3f372f..02c2513 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "hexo-filter-github-emojis", - "version": "2.1.0", + "version": "3.0.0", "description": "A Hexo plugin that adds emojis support, using Github Emojis API", "main": "index", "repository": "crimx/hexo-filter-github-emojis", From 2e906df38468faa5a54f203a0f7bb0eff4dbfa42 Mon Sep 17 00:00:00 2001 From: crimx Date: Sat, 3 Oct 2020 11:34:27 +0800 Subject: [PATCH 11/29] fix: check options.enable --- README.md | 2 +- index.js | 43 +++++++++++++++++++++---------------------- 2 files changed, 22 insertions(+), 23 deletions(-) diff --git a/README.md b/README.md index e12206b..284c9e5 100644 --- a/README.md +++ b/README.md @@ -38,7 +38,7 @@ githubEmojis: ``` - **inject** `boolean=true` - Inject emoji styles and fallback script. - If `true`, the filter will inject a `` + data.content; - } - } else { - const $content = new JSDOM(data.content); - const $excerpt = new JSDOM(data.excerpt); - - replaceColons($content.window.document.body, emojis); - replaceColons($excerpt.window.document.body, emojis); - - if (options.inject !== false) { - const style = $content.window.document.createElement("style"); - style.innerHTML = getEmojiStyles(); - $content.window.document.body.insertBefore( - style, - $content.window.document.body.firstElementChild - ); - } - - data.content = $content.window.document.body.innerHTML; - data.excerpt = $excerpt.window.document.body.innerHTML; + if (options.inject !== false && (!options.enable || data["no-emoji"])) { + data.content = `` + data.content; + return data } + const $content = new JSDOM(data.content); + const $excerpt = new JSDOM(data.excerpt); + + replaceColons($content.window.document.body, emojis); + replaceColons($excerpt.window.document.body, emojis); + + if (options.inject !== false) { + const style = $content.window.document.createElement("style"); + style.innerHTML = getEmojiStyles(); + $content.window.document.body.insertBefore( + style, + $content.window.document.body.firstElementChild + ); + } + + data.content = $content.window.document.body.innerHTML; + data.excerpt = $excerpt.window.document.body.innerHTML; + return data; }); From 7f7f78cd6e535950db1d8056184a8085897e6185 Mon Sep 17 00:00:00 2001 From: crimx Date: Sat, 3 Oct 2020 11:41:24 +0800 Subject: [PATCH 12/29] fix: fix #28 --- index.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/index.js b/index.js index 247abba..15258b0 100644 --- a/index.js +++ b/index.js @@ -32,7 +32,7 @@ hexo.extend.tag.register("github_emoji", (args) => hexo.extend.filter.register("after_post_render", (data) => { if (options.inject !== false && (!options.enable || data["no-emoji"])) { data.content = `` + data.content; - return data + return data; } const $content = new JSDOM(data.content); @@ -63,7 +63,7 @@ function replaceColons(node, emojis) { for (let i = node.childNodes.length - 1; i >= 0; i--) { const child = node.childNodes[i]; if (child.tagName === "PRE" || child.tagName === "CODE") { - return; + continue; } if (child.nodeType === 3) { const content = child.data.replace(/:(\w+):/gi, (match, p1) => @@ -182,5 +182,5 @@ function getEmojiStyles() { opacity: 0 !important; }`; - return rules.replace(/^ +/gm, ' ').replace(/\n/g, '') + return rules.replace(/^ +/gm, " ").replace(/\n/g, ""); } From 51e92a6f16d8805b1a145916611ba6f5e8305ccf Mon Sep 17 00:00:00 2001 From: crimx Date: Sat, 3 Oct 2020 11:45:35 +0800 Subject: [PATCH 13/29] chore: bump version --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 02c2513..42f7321 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "hexo-filter-github-emojis", - "version": "3.0.0", + "version": "3.0.1", "description": "A Hexo plugin that adds emojis support, using Github Emojis API", "main": "index", "repository": "crimx/hexo-filter-github-emojis", From c95b1331c7d21b7dd34436b029a5cf09f24fd330 Mon Sep 17 00:00:00 2001 From: crimx Date: Sat, 3 Oct 2020 11:47:51 +0800 Subject: [PATCH 14/29] docs: remove the style tag --- README.md | 84 +++++++++++++++++++++++++++---------------------------- 1 file changed, 41 insertions(+), 43 deletions(-) diff --git a/README.md b/README.md index 284c9e5..235779e 100644 --- a/README.md +++ b/README.md @@ -41,55 +41,53 @@ githubEmojis: If `true`, the filter will inject a ` + .github-emoji-fallback img { + opacity: 0 !important; + } ``` - **styles** `object={}` - inline styles. For example: From a01582fdce62150c7dfbd9dac3aba01f6b998cf8 Mon Sep 17 00:00:00 2001 From: crimx Date: Sat, 3 Oct 2020 11:54:42 +0800 Subject: [PATCH 15/29] fix: check options.enable and no-emoji --- index.js | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/index.js b/index.js index 15258b0..bdaaaad 100644 --- a/index.js +++ b/index.js @@ -30,8 +30,10 @@ hexo.extend.tag.register("github_emoji", (args) => ); hexo.extend.filter.register("after_post_render", (data) => { - if (options.inject !== false && (!options.enable || data["no-emoji"])) { - data.content = `` + data.content; + if (!options.enable || data["no-emoji"]) { + if (options.inject !== false) { + data.content = `` + data.content; + } return data; } From 015d80b2e82d85c5dc62e0704b54780af6d7c46f Mon Sep 17 00:00:00 2001 From: crimx Date: Sat, 3 Oct 2020 11:54:59 +0800 Subject: [PATCH 16/29] chore: bump version --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 42f7321..c66b8a9 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "hexo-filter-github-emojis", - "version": "3.0.1", + "version": "3.0.2", "description": "A Hexo plugin that adds emojis support, using Github Emojis API", "main": "index", "repository": "crimx/hexo-filter-github-emojis", From 08fce7a27103e40541e06e3749a7d56ee938eaa4 Mon Sep 17 00:00:00 2001 From: crimx Date: Sat, 3 Oct 2020 13:28:34 +0800 Subject: [PATCH 17/29] refactor: inject style to head --- index.js | 61 +++++++++++++++++++++++--------------------------------- 1 file changed, 25 insertions(+), 36 deletions(-) diff --git a/index.js b/index.js index bdaaaad..e42ebe5 100644 --- a/index.js +++ b/index.js @@ -21,44 +21,33 @@ const emojis = Object.assign( loadCustomEmojis(options.customEmojis || options.localEmojis) ); -hexo.extend.helper.register("github_emoji", (name) => - renderEmoji(emojis, name) -); +hexo.extend.helper.register("github_emoji", (name) => renderEmoji(name)); +hexo.extend.tag.register("github_emoji", (args) => renderEmoji(args[0])); -hexo.extend.tag.register("github_emoji", (args) => - renderEmoji(emojis, args[0]) -); +if (options.inject !== false) { + hexo.extend.filter.register("after_render:html", (str) => + str.replace("", `\n\n`) + ); +} -hexo.extend.filter.register("after_post_render", (data) => { - if (!options.enable || data["no-emoji"]) { - if (options.inject !== false) { - data.content = `` + data.content; +if (options.enable) { + hexo.extend.filter.register("after_post_render", (data) => { + if (!data["no-emoji"]) { + const $content = new JSDOM(data.content); + const $excerpt = new JSDOM(data.excerpt); + + replaceColons($content.window.document.body); + replaceColons($excerpt.window.document.body); + + data.content = $content.window.document.body.innerHTML; + data.excerpt = $excerpt.window.document.body.innerHTML; } + return data; - } + }); +} - const $content = new JSDOM(data.content); - const $excerpt = new JSDOM(data.excerpt); - - replaceColons($content.window.document.body, emojis); - replaceColons($excerpt.window.document.body, emojis); - - if (options.inject !== false) { - const style = $content.window.document.createElement("style"); - style.innerHTML = getEmojiStyles(); - $content.window.document.body.insertBefore( - style, - $content.window.document.body.firstElementChild - ); - } - - data.content = $content.window.document.body.innerHTML; - data.excerpt = $excerpt.window.document.body.innerHTML; - - return data; -}); - -function replaceColons(node, emojis) { +function replaceColons(node) { if (!node || !node.childNodes) { return; } @@ -69,13 +58,13 @@ function replaceColons(node, emojis) { } if (child.nodeType === 3) { const content = child.data.replace(/:(\w+):/gi, (match, p1) => - emojis[p1] ? renderEmoji(emojis, p1) : match + emojis[p1] ? renderEmoji(p1) : match ); if (content !== child.data) { child.replaceWith(JSDOM.fragment(content)); } } else { - replaceColons(child, emojis); + replaceColons(child); } } } @@ -117,7 +106,7 @@ function loadCustomEmojis(customEmojis) { }, {}); } -function renderEmoji(emojis, name) { +function renderEmoji(name) { if (!emojis[name]) return name; const styles = _.isObject(options.styles) From d25bb3ae34e285905700694314fd8d3a78afe95b Mon Sep 17 00:00:00 2001 From: crimx Date: Sat, 3 Oct 2020 13:30:33 +0800 Subject: [PATCH 18/29] chore: bump version --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index c66b8a9..110e7f5 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "hexo-filter-github-emojis", - "version": "3.0.2", + "version": "3.0.3", "description": "A Hexo plugin that adds emojis support, using Github Emojis API", "main": "index", "repository": "crimx/hexo-filter-github-emojis", From 0df8258d29eecbf844394f08db76320c270bc0cc Mon Sep 17 00:00:00 2001 From: crimx Date: Sat, 3 Oct 2020 13:59:08 +0800 Subject: [PATCH 19/29] refactor: add aria-hidden --- index.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/index.js b/index.js index e42ebe5..25a86ab 100644 --- a/index.js +++ b/index.js @@ -120,9 +120,9 @@ function renderEmoji(name) { : " "; return ( - `