Selaa lähdekoodia

Get rid of Twemoji as a dependency

Fixes #2126
JC Brand 5 vuotta sitten
vanhempi
commit
d7bc129ce3
4 muutettua tiedostoa jossa 136 lisäystä ja 170 poistoa
  1. 75 140
      package-lock.json
  2. 58 28
      src/headless/converse-emoji.js
  3. 2 0
      src/headless/emoji_regexes.js
  4. 1 2
      src/headless/package.json

+ 75 - 140
package-lock.json

@@ -3234,8 +3234,7 @@
 			"dependencies": {
 				"filesize": {
 					"version": "6.1.0",
-					"resolved": "https://registry.npmjs.org/filesize/-/filesize-6.1.0.tgz",
-					"integrity": "sha512-LpCHtPQ3sFx67z+uh2HnSyWSLLu5Jxo21795uRDuar/EOuYWXib5EmPaGIBuSnRqH2IODiKA2k5re/K9OnN/Yg=="
+					"resolved": false
 				},
 				"fs-extra": {
 					"version": "8.1.0",
@@ -3269,8 +3268,7 @@
 				},
 				"jed": {
 					"version": "1.1.1",
-					"resolved": "https://registry.npmjs.org/jed/-/jed-1.1.1.tgz",
-					"integrity": "sha1-elSbvZ/+FYWwzQoZHiAwVb7ldLQ="
+					"resolved": false
 				},
 				"jsonfile": {
 					"version": "5.0.0",
@@ -3291,8 +3289,7 @@
 				},
 				"localforage": {
 					"version": "1.7.3",
-					"resolved": "https://registry.npmjs.org/localforage/-/localforage-1.7.3.tgz",
-					"integrity": "sha512-1TulyYfc4udS7ECSBT2vwJksWbkwwTX8BzeUIiq8Y07Riy7bDAAnxDaPU/tWyOVmQAcWJIEIFP9lPfBGqVoPgQ==",
+					"resolved": false,
 					"requires": {
 						"lie": "3.1.1"
 					}
@@ -3304,14 +3301,13 @@
 				},
 				"pluggable.js": {
 					"version": "2.0.1",
-					"resolved": "https://registry.npmjs.org/pluggable.js/-/pluggable.js-2.0.1.tgz",
-					"integrity": "sha512-SBt6v6Tbp20Jf8hU0cpcc/+HBHGMY8/Q+yA6Ih0tBQE8tfdZ6U4PRG0iNvUUjLx/hVyOP53n0UfGBymlfaaXCg==",
+					"resolved": false,
 					"requires": {
 						"lodash": "^4.17.11"
 					}
 				},
 				"skeletor.js": {
-					"version": "github:skeletorjs/skeletor#bf6d9c86f9fcf224fa9d9af5a25380b77aa4b561",
+					"version": "0.0.1",
 					"from": "github:skeletorjs/skeletor#bf6d9c86f9fcf224fa9d9af5a25380b77aa4b561",
 					"requires": {
 						"lodash": "^4.17.14"
@@ -3319,8 +3315,7 @@
 				},
 				"strophe.js": {
 					"version": "1.3.4",
-					"resolved": "https://registry.npmjs.org/strophe.js/-/strophe.js-1.3.4.tgz",
-					"integrity": "sha512-jSLDG8jolhAwGOSgiJ7DTMSYK3wVoEJHKtpVRyEacQZ6CWA6z2WRPJpcFMjsIweq5aP9/XIvKUQqHBu/ZhvESA=="
+					"resolved": false
 				},
 				"twemoji": {
 					"version": "12.1.5",
@@ -3759,18 +3754,6 @@
 					"integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
 					"dev": true
 				},
-				"get-caller-file": {
-					"version": "2.0.5",
-					"resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
-					"integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
-					"dev": true
-				},
-				"require-main-filename": {
-					"version": "2.0.0",
-					"resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz",
-					"integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==",
-					"dev": true
-				},
 				"string-width": {
 					"version": "3.1.0",
 					"resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz",
@@ -4959,18 +4942,9 @@
 			},
 			"dependencies": {
 				"is-plain-object": {
-					"version": "3.0.0",
-					"resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-3.0.0.tgz",
-					"integrity": "sha512-tZIpofR+P05k8Aocp7UI/2UTa9lTJSebCXpFFoR9aibpokDj/uXBsJ8luUu0tTVYKkMU6URDUuOfJZ7koewXvg==",
-					"dev": true,
-					"requires": {
-						"isobject": "^4.0.0"
-					}
-				},
-				"isobject": {
-					"version": "4.0.0",
-					"resolved": "https://registry.npmjs.org/isobject/-/isobject-4.0.0.tgz",
-					"integrity": "sha512-S/2fF5wH8SJA/kmwr6HYhK/RI/OkhD84k8ntalo0iJjZikgq1XFvR5M8NPT1x5F7fBwCG3qHfnzeP/Vh/ZxCUA==",
+					"version": "3.0.1",
+					"resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-3.0.1.tgz",
+					"integrity": "sha512-Xnpx182SBMrr/aBik8y+GuR4U1L9FqMSojwDQwPMmxyC6bvEqly9UBCxhauBF5vNh2gwWJNX6oDV7O+OM4z34g==",
 					"dev": true
 				},
 				"universal-user-agent": {
@@ -5054,40 +5028,20 @@
 			},
 			"dependencies": {
 				"@octokit/request-error": {
-					"version": "2.0.1",
-					"resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-2.0.1.tgz",
-					"integrity": "sha512-5lqBDJ9/TOehK82VvomQ6zFiZjPeSom8fLkFVLuYL3sKiIb5RB8iN/lenLkY7oBmyQcGP7FBMGiIZTO8jufaRQ==",
+					"version": "2.0.2",
+					"resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-2.0.2.tgz",
+					"integrity": "sha512-2BrmnvVSV1MXQvEkrb9zwzP0wXFNbPJij922kYBTLIlIafukrGOb+ABBT2+c6wZiuyWDH1K1zmjGQ0toN/wMWw==",
 					"dev": true,
 					"requires": {
-						"@octokit/types": "^4.0.1",
+						"@octokit/types": "^5.0.1",
 						"deprecation": "^2.0.0",
 						"once": "^1.4.0"
-					},
-					"dependencies": {
-						"@octokit/types": {
-							"version": "4.1.10",
-							"resolved": "https://registry.npmjs.org/@octokit/types/-/types-4.1.10.tgz",
-							"integrity": "sha512-/wbFy1cUIE5eICcg0wTKGXMlKSbaAxEr00qaBXzscLXpqhcwgXeS6P8O0pkysBhRfyjkKjJaYrvR1ExMO5eOXQ==",
-							"dev": true,
-							"requires": {
-								"@types/node": ">= 8"
-							}
-						}
 					}
 				},
 				"is-plain-object": {
-					"version": "3.0.0",
-					"resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-3.0.0.tgz",
-					"integrity": "sha512-tZIpofR+P05k8Aocp7UI/2UTa9lTJSebCXpFFoR9aibpokDj/uXBsJ8luUu0tTVYKkMU6URDUuOfJZ7koewXvg==",
-					"dev": true,
-					"requires": {
-						"isobject": "^4.0.0"
-					}
-				},
-				"isobject": {
-					"version": "4.0.0",
-					"resolved": "https://registry.npmjs.org/isobject/-/isobject-4.0.0.tgz",
-					"integrity": "sha512-S/2fF5wH8SJA/kmwr6HYhK/RI/OkhD84k8ntalo0iJjZikgq1XFvR5M8NPT1x5F7fBwCG3qHfnzeP/Vh/ZxCUA==",
+					"version": "3.0.1",
+					"resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-3.0.1.tgz",
+					"integrity": "sha512-Xnpx182SBMrr/aBik8y+GuR4U1L9FqMSojwDQwPMmxyC6bvEqly9UBCxhauBF5vNh2gwWJNX6oDV7O+OM4z34g==",
 					"dev": true
 				},
 				"universal-user-agent": {
@@ -5124,9 +5078,9 @@
 			}
 		},
 		"@octokit/rest": {
-			"version": "16.43.1",
-			"resolved": "https://registry.npmjs.org/@octokit/rest/-/rest-16.43.1.tgz",
-			"integrity": "sha512-gfFKwRT/wFxq5qlNjnW2dh+qh74XgTQ2B179UX5K1HYCluioWj8Ndbgqw2PVqa1NnVJkGHp2ovMpVn/DImlmkw==",
+			"version": "16.43.2",
+			"resolved": "https://registry.npmjs.org/@octokit/rest/-/rest-16.43.2.tgz",
+			"integrity": "sha512-ngDBevLbBTFfrHZeiS7SAMAZ6ssuVmXuya+F/7RaVvlysgGa1JKJkKWY+jV6TCJYcW0OALfJ7nTIGXcBXzycfQ==",
 			"dev": true,
 			"requires": {
 				"@octokit/auth-token": "^2.4.0",
@@ -5148,9 +5102,9 @@
 			}
 		},
 		"@octokit/types": {
-			"version": "5.0.0",
-			"resolved": "https://registry.npmjs.org/@octokit/types/-/types-5.0.0.tgz",
-			"integrity": "sha512-3LVS+MbeqwSd5G4KS8123cZz+hWomsiGeMnQ/QJIBFDwL/YHX8kkr0FZXrgWEMO7Fgi2/VOrhbiFnk9sZ+s4qA==",
+			"version": "5.0.1",
+			"resolved": "https://registry.npmjs.org/@octokit/types/-/types-5.0.1.tgz",
+			"integrity": "sha512-GorvORVwp244fGKEt3cgt/P+M0MGy4xEDbckw+K5ojEezxyMDgCaYPKVct+/eWQfZXOT7uq0xRpmrl/+hliabA==",
 			"dev": true,
 			"requires": {
 				"@types/node": ">= 8"
@@ -7197,9 +7151,9 @@
 			}
 		},
 		"cli-width": {
-			"version": "2.2.0",
-			"resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz",
-			"integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=",
+			"version": "2.2.1",
+			"resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.1.tgz",
+			"integrity": "sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw==",
 			"dev": true
 		},
 		"cliui": {
@@ -7574,12 +7528,19 @@
 				"through2": "^3.0.0"
 			},
 			"dependencies": {
+				"inherits": {
+					"version": "2.0.4",
+					"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
+					"integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
+					"dev": true
+				},
 				"through2": {
-					"version": "3.0.1",
-					"resolved": "https://registry.npmjs.org/through2/-/through2-3.0.1.tgz",
-					"integrity": "sha512-M96dvTalPT3YbYLaKaCuwu+j06D/8Jfib0o/PxbVt6Amhv3dUAtW6rTV1jPgJSBG83I/e04Y6xkVdVhSRhi0ww==",
+					"version": "3.0.2",
+					"resolved": "https://registry.npmjs.org/through2/-/through2-3.0.2.tgz",
+					"integrity": "sha512-enaDQ4MUyP2W6ZyT6EsMzqBPZaM/avg8iuo+l2d3QCs0J+6RaqkHV/2/lOwDTueBHeJ/2LG9lrLW3d5rWPucuQ==",
 					"dev": true,
 					"requires": {
+						"inherits": "^2.0.4",
 						"readable-stream": "2 || 3"
 					}
 				}
@@ -7622,6 +7583,12 @@
 						"wordwrap": "^1.0.0"
 					}
 				},
+				"inherits": {
+					"version": "2.0.4",
+					"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
+					"integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
+					"dev": true
+				},
 				"semver": {
 					"version": "6.3.0",
 					"resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
@@ -7635,11 +7602,12 @@
 					"dev": true
 				},
 				"through2": {
-					"version": "3.0.1",
-					"resolved": "https://registry.npmjs.org/through2/-/through2-3.0.1.tgz",
-					"integrity": "sha512-M96dvTalPT3YbYLaKaCuwu+j06D/8Jfib0o/PxbVt6Amhv3dUAtW6rTV1jPgJSBG83I/e04Y6xkVdVhSRhi0ww==",
+					"version": "3.0.2",
+					"resolved": "https://registry.npmjs.org/through2/-/through2-3.0.2.tgz",
+					"integrity": "sha512-enaDQ4MUyP2W6ZyT6EsMzqBPZaM/avg8iuo+l2d3QCs0J+6RaqkHV/2/lOwDTueBHeJ/2LG9lrLW3d5rWPucuQ==",
 					"dev": true,
 					"requires": {
+						"inherits": "^2.0.4",
 						"readable-stream": "2 || 3"
 					}
 				}
@@ -7670,12 +7638,19 @@
 				"trim-off-newlines": "^1.0.0"
 			},
 			"dependencies": {
+				"inherits": {
+					"version": "2.0.4",
+					"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
+					"integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
+					"dev": true
+				},
 				"through2": {
-					"version": "3.0.1",
-					"resolved": "https://registry.npmjs.org/through2/-/through2-3.0.1.tgz",
-					"integrity": "sha512-M96dvTalPT3YbYLaKaCuwu+j06D/8Jfib0o/PxbVt6Amhv3dUAtW6rTV1jPgJSBG83I/e04Y6xkVdVhSRhi0ww==",
+					"version": "3.0.2",
+					"resolved": "https://registry.npmjs.org/through2/-/through2-3.0.2.tgz",
+					"integrity": "sha512-enaDQ4MUyP2W6ZyT6EsMzqBPZaM/avg8iuo+l2d3QCs0J+6RaqkHV/2/lOwDTueBHeJ/2LG9lrLW3d5rWPucuQ==",
 					"dev": true,
 					"requires": {
+						"inherits": "^2.0.4",
 						"readable-stream": "2 || 3"
 					}
 				}
@@ -9902,9 +9877,9 @@
 			}
 		},
 		"external-editor": {
-			"version": "3.0.3",
-			"resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.0.3.tgz",
-			"integrity": "sha512-bn71H9+qWoOQKyZDo25mOMVpSmXROAsTJVVVYzrrtol3d4y+AsKjf4Iwl2Q+IuT0kFSQ1qo166UuIwqYq7mGnA==",
+			"version": "3.1.0",
+			"resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz",
+			"integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==",
 			"dev": true,
 			"requires": {
 				"chardet": "^0.7.0",
@@ -10550,6 +10525,7 @@
 			"version": "8.1.0",
 			"resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz",
 			"integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==",
+			"dev": true,
 			"requires": {
 				"graceful-fs": "^4.2.0",
 				"jsonfile": "^4.0.0",
@@ -10559,7 +10535,8 @@
 				"graceful-fs": {
 					"version": "4.2.4",
 					"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz",
-					"integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw=="
+					"integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==",
+					"dev": true
 				}
 			}
 		},
@@ -11910,7 +11887,8 @@
 		"graceful-fs": {
 			"version": "4.1.11",
 			"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz",
-			"integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg="
+			"integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=",
+			"dev": true
 		},
 		"graphql": {
 			"version": "14.6.0",
@@ -13307,6 +13285,7 @@
 			"version": "4.0.0",
 			"resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz",
 			"integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=",
+			"dev": true,
 			"requires": {
 				"graceful-fs": "^4.1.6"
 			}
@@ -14063,9 +14042,9 @@
 			}
 		},
 		"macos-release": {
-			"version": "2.3.0",
-			"resolved": "https://registry.npmjs.org/macos-release/-/macos-release-2.3.0.tgz",
-			"integrity": "sha512-OHhSbtcviqMPt7yfw5ef5aghS2jzFVKEFyCJndQt2YpSQ9qRVSEv2axSJI1paVThEu+FFGs584h/1YhxjVqajA==",
+			"version": "2.4.0",
+			"resolved": "https://registry.npmjs.org/macos-release/-/macos-release-2.4.0.tgz",
+			"integrity": "sha512-ko6deozZYiAkqa/0gmcsz+p4jSy3gY7/ZsCEokPaYd8k+6/aXGkiTgr61+Owup7Sf+xjqW8u2ElhoM9SEcEfuA==",
 			"dev": true
 		},
 		"make-dir": {
@@ -14373,24 +14352,6 @@
 					"resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.13.1.tgz",
 					"integrity": "sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==",
 					"dev": true
-				},
-				"yargs-parser": {
-					"version": "18.1.3",
-					"resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz",
-					"integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==",
-					"dev": true,
-					"requires": {
-						"camelcase": "^5.0.0",
-						"decamelize": "^1.2.0"
-					},
-					"dependencies": {
-						"camelcase": {
-							"version": "5.3.1",
-							"resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz",
-							"integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==",
-							"dev": true
-						}
-					}
 				}
 			}
 		},
@@ -21454,9 +21415,9 @@
 			}
 		},
 		"rxjs": {
-			"version": "6.5.5",
-			"resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.5.tgz",
-			"integrity": "sha512-WfQI+1gohdf0Dai/Bbmk5L5ItH5tYqm3ki2c5GdWhKjalzjg93N3avFjVStyZZz+A2Em+ZxKH5bNghw9UeylGQ==",
+			"version": "6.6.0",
+			"resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.0.tgz",
+			"integrity": "sha512-3HMA8z/Oz61DUHe+SdOiQyzIf4tOx5oQHmMir7IZEu6TMqCLHT4LRcmNaUS0NwOz8VLvmmBduMsoaUvMaIiqzg==",
 			"dev": true,
 			"requires": {
 				"tslib": "^1.9.0"
@@ -23035,9 +22996,9 @@
 			},
 			"dependencies": {
 				"ws": {
-					"version": "7.3.0",
-					"resolved": "https://registry.npmjs.org/ws/-/ws-7.3.0.tgz",
-					"integrity": "sha512-iFtXzngZVXPGgpTlP1rBqsUK82p9tKqsWRPg5L56egiljujJT3vGAYnHANvFxBieXrTFavhzhxW52jnaWV+w2w==",
+					"version": "7.3.1",
+					"resolved": "https://registry.npmjs.org/ws/-/ws-7.3.1.tgz",
+					"integrity": "sha512-D3RuNkynyHmEJIpD2qrgVkc9DQ23OrN/moAwZX4L8DfvszsJxpjQuUq3LMx6HoYji9fbIOBY18XWBsAux1ZZUA==",
 					"optional": true
 				}
 			}
@@ -23489,33 +23450,6 @@
 			"integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=",
 			"dev": true
 		},
-		"twemoji": {
-			"version": "12.1.6",
-			"resolved": "https://registry.npmjs.org/twemoji/-/twemoji-12.1.6.tgz",
-			"integrity": "sha512-FIKi9Jne5IiDGDWekoANJ1a8ltUKVbJLEIR8XUpbFRDMqIPgLWnYgjeWZ1KOrdiTztRCAa9x4v+5w5OuiJOGVw==",
-			"requires": {
-				"fs-extra": "^8.0.1",
-				"jsonfile": "^5.0.0",
-				"twemoji-parser": "12.1.3",
-				"universalify": "^0.1.2"
-			},
-			"dependencies": {
-				"jsonfile": {
-					"version": "5.0.0",
-					"resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-5.0.0.tgz",
-					"integrity": "sha512-NQRZ5CRo74MhMMC3/3r5g2k4fjodJ/wh8MxjFbCViWKFjxrnudWSY5vomh+23ZaXzAS7J3fBZIR2dV6WbmfM0w==",
-					"requires": {
-						"graceful-fs": "^4.1.6",
-						"universalify": "^0.1.2"
-					}
-				}
-			}
-		},
-		"twemoji-parser": {
-			"version": "12.1.3",
-			"resolved": "https://registry.npmjs.org/twemoji-parser/-/twemoji-parser-12.1.3.tgz",
-			"integrity": "sha512-ND4LZXF4X92/PFrzSgGkq6KPPg8swy/U0yRw1k/+izWRVmq1HYi3khPwV3XIB6FRudgVICAaBhJfW8e8G3HC7Q=="
-		},
 		"type-check": {
 			"version": "0.4.0",
 			"resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz",
@@ -23792,7 +23726,8 @@
 		"universalify": {
 			"version": "0.1.2",
 			"resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz",
-			"integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg=="
+			"integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==",
+			"dev": true
 		},
 		"unpipe": {
 			"version": "1.0.0",

+ 58 - 28
src/headless/converse-emoji.js

@@ -3,7 +3,7 @@
  * @copyright 2020, the Converse.js contributors
  * @license Mozilla Public License (MPLv2)
  */
-import * as twemoji from "twemoji";
+import { ASCII_REPLACE_REGEX, CODEPOINTS_REGEX } from './emoji_regexes.js';
 import { Model } from '@converse/skeletor/src/model.js';
 import { _converse, api, converse } from "./converse-core";
 import { find, isString, uniq } from "lodash-es";
@@ -32,10 +32,39 @@ const ASCII_LIST = {
     '=#':'1f636', ':)':'1f642', '=]':'1f642', '=)':'1f642', ':]':'1f642'
 };
 
-
 let shortnames_regex;
-const ASCII_REGEX = '(\\*\\\\0\\/\\*|\\*\\\\O\\/\\*|\\-___\\-|\\:\'\\-\\)|\'\\:\\-\\)|\'\\:\\-D|\\>\\:\\-\\)|>\\:\\-\\)|\'\\:\\-\\(|\\>\\:\\-\\(|>\\:\\-\\(|\\:\'\\-\\(|O\\:\\-\\)|0\\:\\-3|0\\:\\-\\)|0;\\^\\)|O;\\-\\)|0;\\-\\)|O\\:\\-3|\\-__\\-|\\:\\-Þ|\\:\\-Þ|\\<\\/3|<\\/3|\\:\'\\)|\\:\\-D|\'\\:\\)|\'\\=\\)|\'\\:D|\'\\=D|\\>\\:\\)|>\\:\\)|\\>;\\)|>;\\)|\\>\\=\\)|>\\=\\)|;\\-\\)|\\*\\-\\)|;\\-\\]|;\\^\\)|\'\\:\\(|\'\\=\\(|\\:\\-\\*|\\:\\^\\*|\\>\\:P|>\\:P|X\\-P|\\>\\:\\[|>\\:\\[|\\:\\-\\(|\\:\\-\\[|\\>\\:\\(|>\\:\\(|\\:\'\\(|;\\-\\(|\\>\\.\\<|>\\.<|#\\-\\)|%\\-\\)|X\\-\\)|\\\\0\\/|\\\\O\\/|0\\:3|0\\:\\)|O\\:\\)|O\\=\\)|O\\:3|B\\-\\)|8\\-\\)|B\\-D|8\\-D|\\-_\\-|\\>\\:\\\\|>\\:\\\\|\\>\\:\\/|>\\:\\/|\\:\\-\\/|\\:\\-\\.|\\:\\-P|\\:Þ|\\:Þ|\\:\\-b|\\:\\-O|O_O|\\>\\:O|>\\:O|\\:\\-X|\\:\\-#|\\:\\-\\)|\\(y\\)|\\<3|<3|\\:D|\\=D|;\\)|\\*\\)|;\\]|;D|\\:\\*|\\=\\*|\\:\\(|\\:\\[|\\=\\(|\\:@|;\\(|D\\:|\\:\\$|\\=\\$|#\\)|%\\)|X\\)|B\\)|8\\)|\\:\\/|\\:\\\\|\\=\\/|\\=\\\\|\\:L|\\=L|\\:P|\\=P|\\:b|\\:O|\\:X|\\:#|\\=X|\\=#|\\:\\)|\\=\\]|\\=\\)|\\:\\])';
-const ASCII_REPLACE_REGEX = new RegExp("<object[^>]*>.*?<\/object>|<span[^>]*>.*?<\/span>|<(?:object|embed|svg|img|div|span|p|a)[^>]*>|((\\s|^)"+ASCII_REGEX+"(?=\\s|$|[!,.?]))", "gi");
+
+
+function toCodePoint(unicode_surrogates) {
+    const r = [];
+    let  p = 0;
+    let  i = 0;
+    while (i < unicode_surrogates.length) {
+        const c = unicode_surrogates.charCodeAt(i++);
+        if (p) {
+            r.push((0x10000 + ((p - 0xD800) << 10) + (c - 0xDC00)).toString(16));
+            p = 0;
+        } else if (0xD800 <= c && c <= 0xDBFF) {
+            p = c;
+        } else {
+            r.push(c.toString(16));
+        }
+    }
+    return r.join('-');
+}
+
+
+function fromCodePoint (codepoint) {
+    let code = typeof codepoint === 'string' ? parseInt(codepoint, 16) : codepoint;
+    if (code < 0x10000) {
+        return String.fromCharCode(code);
+    }
+    code -= 0x10000;
+    return String.fromCharCode(
+        0xD800 + (code >> 10),
+        0xDC00 + (code & 0x3FF)
+    );
+}
 
 
 function convert (unicode) {
@@ -56,7 +85,7 @@ function convert (unicode) {
         }
         return parts.join('');
     }
-    return twemoji.default.convert.fromCodePoint(unicode);
+    return fromCodePoint(unicode);
 }
 
 
@@ -126,23 +155,27 @@ export function getShortnameReferences (text) {
 }
 
 
+function parseStringForEmojis(str, callback) {
+    const UFE0Fg = /\uFE0F/g;
+    const U200D = String.fromCharCode(0x200D);
+    return String(str).replace(CODEPOINTS_REGEX, (emoji, _, offset) => {
+        const icon_id = toCodePoint(emoji.indexOf(U200D) < 0 ? emoji.replace(UFE0Fg, '') : emoji);
+        if (icon_id) callback(icon_id, emoji, offset);
+    });
+}
+
+
 export function getCodePointReferences (text) {
     const references = [];
-    const how = {
-        callback: (icon_id) => {
-            const emoji = convert(icon_id);
-            const begin = text.indexOf(emoji);
-            references.push({
-                'emoji': emoji,
-                'end': begin + emoji.length,
-                'shortname': u.getEmojisByAtrribute('cp')[icon_id]['sn'],
-                begin,
-                cp: icon_id
-            });
-            return false;
-        }
-    };
-    twemoji.default.parse(text, how);
+    parseStringForEmojis(text, (icon_id, emoji, offset) => {
+        references.push({
+            'begin': offset,
+            'cp': icon_id,
+            'emoji': emoji,
+            'end': offset + emoji.length,
+            'shortname': u.getEmojisByAtrribute('cp')[icon_id]['sn'],
+        });
+    });
     return references;
 }
 
@@ -173,7 +206,7 @@ converse.plugins.add('converse-emoji', {
         const { ___ } = _converse;
 
         api.settings.extend({
-            'emoji_image_path': twemoji.default.base,
+            'emoji_image_path': 'https://twemoji.maxcdn.com/v/12.1.6/',
             'emoji_categories': {
                 "smileys": ":grinning:",
                 "people": ":thumbsup:",
@@ -206,8 +239,6 @@ converse.plugins.add('converse-emoji', {
             }
         });
 
-        twemoji.default.base = api.settings.get('emoji_image_path');
-
 
         /**
          * Model for storing data related to the Emoji picker widget
@@ -281,12 +312,11 @@ converse.plugins.add('converse-emoji', {
                 if (words.length === 0 || words.length > 3) {
                     return false;
                 }
-                const rejects = words.filter(text => {
-                    const result = twemoji.default.parse(u.shortnamesToUnicode(text));
-                    const match = result.match(/<img class="emoji" draggable="false" alt=".*?" src=".*?\.png"\/>/);
-                    return !match || match.length !== 1;
+                const emojis = words.filter(text => {
+                    const refs = getCodePointReferences(u.shortnamesToUnicode(text));
+                    return refs.length === 1 && (text === refs[0]['shortname'] || text === refs[0]['emoji']);
                 });
-                return rejects.length === 0;
+                return emojis.length === words.length;
             },
 
             /**

Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 2 - 0
src/headless/emoji_regexes.js


+ 1 - 2
src/headless/package.json

@@ -42,7 +42,6 @@
     "localforage": "^1.7.3",
     "lodash-es": "^4.17.15",
     "pluggable.js": "2.0.1",
-    "strophe.js": "1.3.6",
-    "twemoji": "^12.1.2"
+    "strophe.js": "1.3.6"
   }
 }

Kaikkia tiedostoja ei voida näyttää, sillä liian monta tiedostoa muuttui tässä diffissä