mirror of
https://github.com/openfrontio/OpenFrontIO.git
synced 2026-06-21 08:11:54 +00:00
add map emojis to World & Europe. Leaderboard uses twemojies
This commit is contained in:
@@ -168,7 +168,7 @@
|
|||||||
* implement private game DONE 10/15/2024
|
* implement private game DONE 10/15/2024
|
||||||
* private game can select map DONE 10/16/2024
|
* private game can select map DONE 10/16/2024
|
||||||
* Test on android DONE 10/17/2024
|
* Test on android DONE 10/17/2024
|
||||||
* add troop max
|
* add troop max DONE 10/31/2024
|
||||||
* use twitter emojis
|
* use twitter emojis
|
||||||
* create build menu
|
* create build menu
|
||||||
* NPC has relations
|
* NPC has relations
|
||||||
|
|||||||
Generated
+100
-8
@@ -7,17 +7,20 @@
|
|||||||
"name": "warfront-client",
|
"name": "warfront-client",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@datastructures-js/priority-queue": "^6.3.1",
|
"@datastructures-js/priority-queue": "^6.3.1",
|
||||||
|
"@types/dompurify": "^3.0.5",
|
||||||
"@types/express": "^4.17.21",
|
"@types/express": "^4.17.21",
|
||||||
"@types/google-protobuf": "^3.15.12",
|
"@types/google-protobuf": "^3.15.12",
|
||||||
"@types/hammerjs": "^2.0.45",
|
"@types/hammerjs": "^2.0.45",
|
||||||
"@types/jimp": "^0.2.28",
|
"@types/jimp": "^0.2.28",
|
||||||
"@types/msgpack5": "^3.4.6",
|
"@types/msgpack5": "^3.4.6",
|
||||||
"@types/raphael": "^2.3.9",
|
"@types/raphael": "^2.3.9",
|
||||||
|
"@types/twemoji": "^13.1.1",
|
||||||
"binary-loader": "^0.0.1",
|
"binary-loader": "^0.0.1",
|
||||||
"colord": "^2.9.3",
|
"colord": "^2.9.3",
|
||||||
"crypto": "^1.0.1",
|
"crypto": "^1.0.1",
|
||||||
"d3": "^7.9.0",
|
"d3": "^7.9.0",
|
||||||
"express": "^4.19.2",
|
"dompurify": "^3.1.7",
|
||||||
|
"express": "^4.21.1",
|
||||||
"google-auth-library": "^9.14.0",
|
"google-auth-library": "^9.14.0",
|
||||||
"googleapis": "^143.0.0",
|
"googleapis": "^143.0.0",
|
||||||
"hammerjs": "^2.0.8",
|
"hammerjs": "^2.0.8",
|
||||||
@@ -30,6 +33,7 @@
|
|||||||
"protobufjs": "^7.3.2",
|
"protobufjs": "^7.3.2",
|
||||||
"pureimage": "^0.4.13",
|
"pureimage": "^0.4.13",
|
||||||
"raphael": "^2.3.0",
|
"raphael": "^2.3.0",
|
||||||
|
"twemoji": "^14.0.2",
|
||||||
"uuid": "^10.0.0",
|
"uuid": "^10.0.0",
|
||||||
"wheelnav": "^1.7.1",
|
"wheelnav": "^1.7.1",
|
||||||
"ws": "^8.18.0",
|
"ws": "^8.18.0",
|
||||||
@@ -4226,6 +4230,15 @@
|
|||||||
"@types/d3-selection": "*"
|
"@types/d3-selection": "*"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/@types/dompurify": {
|
||||||
|
"version": "3.0.5",
|
||||||
|
"resolved": "https://registry.npmjs.org/@types/dompurify/-/dompurify-3.0.5.tgz",
|
||||||
|
"integrity": "sha512-1Wg0g3BtQF7sSb27fJQAKck1HECM6zV1EB66j8JH9i3LCjYabJa0FSdiSgsD5K/RbrsR0SiraKacLB+T8ZVYAg==",
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"@types/trusted-types": "*"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/@types/estree": {
|
"node_modules/@types/estree": {
|
||||||
"version": "1.0.6",
|
"version": "1.0.6",
|
||||||
"resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz",
|
"resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz",
|
||||||
@@ -4237,6 +4250,7 @@
|
|||||||
"version": "4.17.21",
|
"version": "4.17.21",
|
||||||
"resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.21.tgz",
|
"resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.21.tgz",
|
||||||
"integrity": "sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==",
|
"integrity": "sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==",
|
||||||
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@types/body-parser": "*",
|
"@types/body-parser": "*",
|
||||||
"@types/express-serve-static-core": "^4.17.33",
|
"@types/express-serve-static-core": "^4.17.33",
|
||||||
@@ -4576,6 +4590,15 @@
|
|||||||
"integrity": "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==",
|
"integrity": "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==",
|
||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
},
|
},
|
||||||
|
"node_modules/@types/twemoji": {
|
||||||
|
"version": "13.1.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/@types/twemoji/-/twemoji-13.1.1.tgz",
|
||||||
|
"integrity": "sha512-0qnUqLhaSSGsvLXiwWnmcuOza9oGnGwXpxXauB6rEHsU30Dfmvizzwx2TzwUjlsY4ox+39tdG89CpJ/i3J/Cvw==",
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"twemoji": "*"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/@types/uuid": {
|
"node_modules/@types/uuid": {
|
||||||
"version": "10.0.0",
|
"version": "10.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-10.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-10.0.0.tgz",
|
||||||
@@ -6034,9 +6057,10 @@
|
|||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
},
|
},
|
||||||
"node_modules/cookie": {
|
"node_modules/cookie": {
|
||||||
"version": "0.6.0",
|
"version": "0.7.1",
|
||||||
"resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz",
|
"resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.1.tgz",
|
||||||
"integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==",
|
"integrity": "sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==",
|
||||||
|
"license": "MIT",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">= 0.6"
|
"node": ">= 0.6"
|
||||||
}
|
}
|
||||||
@@ -6881,6 +6905,12 @@
|
|||||||
"url": "https://github.com/fb55/domhandler?sponsor=1"
|
"url": "https://github.com/fb55/domhandler?sponsor=1"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/dompurify": {
|
||||||
|
"version": "3.1.7",
|
||||||
|
"resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.1.7.tgz",
|
||||||
|
"integrity": "sha512-VaTstWtsneJY8xzy7DekmYWEOZcmzIe3Qb3zPd4STve1OBTa+e+WmS1ITQec1fZYXI3HCsOZZiSMpG6oxoWMWQ==",
|
||||||
|
"license": "(MPL-2.0 OR Apache-2.0)"
|
||||||
|
},
|
||||||
"node_modules/domutils": {
|
"node_modules/domutils": {
|
||||||
"version": "2.8.0",
|
"version": "2.8.0",
|
||||||
"resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz",
|
"resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz",
|
||||||
@@ -7314,9 +7344,9 @@
|
|||||||
"integrity": "sha512-dX7e/LHVJ6W3DE1MHWi9S1EYzDESENfLrYohG2G++ovZrYOkm4Knwa0mc1cn84xJOR4KEU0WSchhLbd0UklbHw=="
|
"integrity": "sha512-dX7e/LHVJ6W3DE1MHWi9S1EYzDESENfLrYohG2G++ovZrYOkm4Knwa0mc1cn84xJOR4KEU0WSchhLbd0UklbHw=="
|
||||||
},
|
},
|
||||||
"node_modules/express": {
|
"node_modules/express": {
|
||||||
"version": "4.21.0",
|
"version": "4.21.1",
|
||||||
"resolved": "https://registry.npmjs.org/express/-/express-4.21.0.tgz",
|
"resolved": "https://registry.npmjs.org/express/-/express-4.21.1.tgz",
|
||||||
"integrity": "sha512-VqcNGcj/Id5ZT1LZ/cfihi3ttTn+NJmkli2eZADigjq29qTlWi/hAQ43t/VLPq8+UX06FCEx3ByOYet6ZFblng==",
|
"integrity": "sha512-YSFlK1Ee0/GC8QaO91tHcDxJiE/X4FbpAyQWkxAvG6AXCuR65YzK8ua6D9hvi/TzUfZMpc+BwuM1IPw8fmQBiQ==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"accepts": "~1.3.8",
|
"accepts": "~1.3.8",
|
||||||
@@ -7324,7 +7354,7 @@
|
|||||||
"body-parser": "1.20.3",
|
"body-parser": "1.20.3",
|
||||||
"content-disposition": "0.5.4",
|
"content-disposition": "0.5.4",
|
||||||
"content-type": "~1.0.4",
|
"content-type": "~1.0.4",
|
||||||
"cookie": "0.6.0",
|
"cookie": "0.7.1",
|
||||||
"cookie-signature": "1.0.6",
|
"cookie-signature": "1.0.6",
|
||||||
"debug": "2.6.9",
|
"debug": "2.6.9",
|
||||||
"depd": "2.0.0",
|
"depd": "2.0.0",
|
||||||
@@ -7584,6 +7614,29 @@
|
|||||||
"node": ">= 0.6"
|
"node": ">= 0.6"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/fs-extra": {
|
||||||
|
"version": "8.1.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz",
|
||||||
|
"integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==",
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"graceful-fs": "^4.2.0",
|
||||||
|
"jsonfile": "^4.0.0",
|
||||||
|
"universalify": "^0.1.0"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=6 <7 || >=8"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/fs-extra/node_modules/jsonfile": {
|
||||||
|
"version": "4.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz",
|
||||||
|
"integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==",
|
||||||
|
"license": "MIT",
|
||||||
|
"optionalDependencies": {
|
||||||
|
"graceful-fs": "^4.1.6"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/fs-minipass": {
|
"node_modules/fs-minipass": {
|
||||||
"version": "3.0.3",
|
"version": "3.0.3",
|
||||||
"resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-3.0.3.tgz",
|
"resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-3.0.3.tgz",
|
||||||
@@ -9785,6 +9838,18 @@
|
|||||||
"node": ">=6"
|
"node": ">=6"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/jsonfile": {
|
||||||
|
"version": "5.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-5.0.0.tgz",
|
||||||
|
"integrity": "sha512-NQRZ5CRo74MhMMC3/3r5g2k4fjodJ/wh8MxjFbCViWKFjxrnudWSY5vomh+23ZaXzAS7J3fBZIR2dV6WbmfM0w==",
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"universalify": "^0.1.2"
|
||||||
|
},
|
||||||
|
"optionalDependencies": {
|
||||||
|
"graceful-fs": "^4.1.6"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/just-extend": {
|
"node_modules/just-extend": {
|
||||||
"version": "6.2.0",
|
"version": "6.2.0",
|
||||||
"resolved": "https://registry.npmjs.org/just-extend/-/just-extend-6.2.0.tgz",
|
"resolved": "https://registry.npmjs.org/just-extend/-/just-extend-6.2.0.tgz",
|
||||||
@@ -13244,6 +13309,24 @@
|
|||||||
"fsevents": "~2.3.3"
|
"fsevents": "~2.3.3"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/twemoji": {
|
||||||
|
"version": "14.0.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/twemoji/-/twemoji-14.0.2.tgz",
|
||||||
|
"integrity": "sha512-BzOoXIe1QVdmsUmZ54xbEH+8AgtOKUiG53zO5vVP2iUu6h5u9lN15NcuS6te4OY96qx0H7JK9vjjl9WQbkTRuA==",
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"fs-extra": "^8.0.1",
|
||||||
|
"jsonfile": "^5.0.0",
|
||||||
|
"twemoji-parser": "14.0.0",
|
||||||
|
"universalify": "^0.1.2"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/twemoji-parser": {
|
||||||
|
"version": "14.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/twemoji-parser/-/twemoji-parser-14.0.0.tgz",
|
||||||
|
"integrity": "sha512-9DUOTGLOWs0pFWnh1p6NF+C3CkQ96PWmEFwhOVmT3WbecRC+68AIqpsnJXygfkFcp4aXbOp8Dwbhh/HQgvoRxA==",
|
||||||
|
"license": "MIT"
|
||||||
|
},
|
||||||
"node_modules/type-detect": {
|
"node_modules/type-detect": {
|
||||||
"version": "4.0.8",
|
"version": "4.0.8",
|
||||||
"resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz",
|
"resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz",
|
||||||
@@ -13364,6 +13447,15 @@
|
|||||||
"node": "^14.17.0 || ^16.13.0 || >=18.0.0"
|
"node": "^14.17.0 || ^16.13.0 || >=18.0.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/universalify": {
|
||||||
|
"version": "0.1.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz",
|
||||||
|
"integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==",
|
||||||
|
"license": "MIT",
|
||||||
|
"engines": {
|
||||||
|
"node": ">= 4.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/unpipe": {
|
"node_modules/unpipe": {
|
||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
|
||||||
|
|||||||
+5
-1
@@ -54,17 +54,20 @@
|
|||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@datastructures-js/priority-queue": "^6.3.1",
|
"@datastructures-js/priority-queue": "^6.3.1",
|
||||||
|
"@types/dompurify": "^3.0.5",
|
||||||
"@types/express": "^4.17.21",
|
"@types/express": "^4.17.21",
|
||||||
"@types/google-protobuf": "^3.15.12",
|
"@types/google-protobuf": "^3.15.12",
|
||||||
"@types/hammerjs": "^2.0.45",
|
"@types/hammerjs": "^2.0.45",
|
||||||
"@types/jimp": "^0.2.28",
|
"@types/jimp": "^0.2.28",
|
||||||
"@types/msgpack5": "^3.4.6",
|
"@types/msgpack5": "^3.4.6",
|
||||||
"@types/raphael": "^2.3.9",
|
"@types/raphael": "^2.3.9",
|
||||||
|
"@types/twemoji": "^13.1.1",
|
||||||
"binary-loader": "^0.0.1",
|
"binary-loader": "^0.0.1",
|
||||||
"colord": "^2.9.3",
|
"colord": "^2.9.3",
|
||||||
"crypto": "^1.0.1",
|
"crypto": "^1.0.1",
|
||||||
"d3": "^7.9.0",
|
"d3": "^7.9.0",
|
||||||
"express": "^4.19.2",
|
"dompurify": "^3.1.7",
|
||||||
|
"express": "^4.21.1",
|
||||||
"google-auth-library": "^9.14.0",
|
"google-auth-library": "^9.14.0",
|
||||||
"googleapis": "^143.0.0",
|
"googleapis": "^143.0.0",
|
||||||
"hammerjs": "^2.0.8",
|
"hammerjs": "^2.0.8",
|
||||||
@@ -77,6 +80,7 @@
|
|||||||
"protobufjs": "^7.3.2",
|
"protobufjs": "^7.3.2",
|
||||||
"pureimage": "^0.4.13",
|
"pureimage": "^0.4.13",
|
||||||
"raphael": "^2.3.0",
|
"raphael": "^2.3.0",
|
||||||
|
"twemoji": "^14.0.2",
|
||||||
"uuid": "^10.0.0",
|
"uuid": "^10.0.0",
|
||||||
"wheelnav": "^1.7.1",
|
"wheelnav": "^1.7.1",
|
||||||
"ws": "^8.18.0",
|
"ws": "^8.18.0",
|
||||||
|
|||||||
+22
-22
@@ -8,7 +8,7 @@
|
|||||||
171,
|
171,
|
||||||
171
|
171
|
||||||
],
|
],
|
||||||
"name": "Iceland",
|
"name": "Iceland 🇮🇸",
|
||||||
"strength": 1
|
"strength": 1
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -16,7 +16,7 @@
|
|||||||
477,
|
477,
|
||||||
473
|
473
|
||||||
],
|
],
|
||||||
"name": "Ireland",
|
"name": "Ireland 🇮🇪",
|
||||||
"strength": 1
|
"strength": 1
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -24,7 +24,7 @@
|
|||||||
650,
|
650,
|
||||||
500
|
500
|
||||||
],
|
],
|
||||||
"name": "England",
|
"name": "England 🏴",
|
||||||
"strength": 3
|
"strength": 3
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -32,7 +32,7 @@
|
|||||||
560,
|
560,
|
||||||
800
|
800
|
||||||
],
|
],
|
||||||
"name": "Spain",
|
"name": "Spain 🇪🇸",
|
||||||
"strength": 2
|
"strength": 2
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -40,7 +40,7 @@
|
|||||||
726,
|
726,
|
||||||
616
|
616
|
||||||
],
|
],
|
||||||
"name": "France",
|
"name": "France 🇫🇷",
|
||||||
"strength": 2
|
"strength": 2
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -48,7 +48,7 @@
|
|||||||
1050,
|
1050,
|
||||||
745
|
745
|
||||||
],
|
],
|
||||||
"name": "Italy",
|
"name": "Italy 🇮🇹",
|
||||||
"strength": 1
|
"strength": 1
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -56,7 +56,7 @@
|
|||||||
872,
|
872,
|
||||||
634
|
634
|
||||||
],
|
],
|
||||||
"name": "Switzerland",
|
"name": "Switzerland 🇨🇭",
|
||||||
"strength": 1
|
"strength": 1
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -64,7 +64,7 @@
|
|||||||
960,
|
960,
|
||||||
271
|
271
|
||||||
],
|
],
|
||||||
"name": "Norway",
|
"name": "Norway 🇳🇴",
|
||||||
"strength": 1
|
"strength": 1
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -72,7 +72,7 @@
|
|||||||
1095,
|
1095,
|
||||||
336
|
336
|
||||||
],
|
],
|
||||||
"name": "Sweden",
|
"name": "Sweden 🇸🇪",
|
||||||
"strength": 1
|
"strength": 1
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -80,7 +80,7 @@
|
|||||||
1403,
|
1403,
|
||||||
235
|
235
|
||||||
],
|
],
|
||||||
"name": "Finland",
|
"name": "Finland 🇫🇮",
|
||||||
"strength": 1
|
"strength": 1
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -88,7 +88,7 @@
|
|||||||
775,
|
775,
|
||||||
541
|
541
|
||||||
],
|
],
|
||||||
"name": "Belgium",
|
"name": "Belgium 🇧🇪",
|
||||||
"strength": 1
|
"strength": 1
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -96,7 +96,7 @@
|
|||||||
868,
|
868,
|
||||||
487
|
487
|
||||||
],
|
],
|
||||||
"name": "Netherlands",
|
"name": "Netherlands 🇳🇱",
|
||||||
"strength": 1
|
"strength": 1
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -104,7 +104,7 @@
|
|||||||
949,
|
949,
|
||||||
548
|
548
|
||||||
],
|
],
|
||||||
"name": "Germany",
|
"name": "Germany 🇩🇪",
|
||||||
"strength": 1
|
"strength": 1
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -112,7 +112,7 @@
|
|||||||
1017,
|
1017,
|
||||||
628
|
628
|
||||||
],
|
],
|
||||||
"name": "Austria",
|
"name": "Austria 🇦🇹",
|
||||||
"strength": 1
|
"strength": 1
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -120,7 +120,7 @@
|
|||||||
1120,
|
1120,
|
||||||
477
|
477
|
||||||
],
|
],
|
||||||
"name": "Poland",
|
"name": "Poland 🇵🇱",
|
||||||
"strength": 1
|
"strength": 1
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -128,7 +128,7 @@
|
|||||||
1030,
|
1030,
|
||||||
589
|
589
|
||||||
],
|
],
|
||||||
"name": "Czechia",
|
"name": "Czechia 🇨🇿",
|
||||||
"strength": 1
|
"strength": 1
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -136,7 +136,7 @@
|
|||||||
1540,
|
1540,
|
||||||
602
|
602
|
||||||
],
|
],
|
||||||
"name": "Ukraine",
|
"name": "Ukraine 🇺🇦",
|
||||||
"strength": 1
|
"strength": 1
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -144,7 +144,7 @@
|
|||||||
1500,
|
1500,
|
||||||
440
|
440
|
||||||
],
|
],
|
||||||
"name": "Belarus",
|
"name": "Belarus 🇧🇾",
|
||||||
"strength": 1
|
"strength": 1
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -152,7 +152,7 @@
|
|||||||
1424,
|
1424,
|
||||||
754
|
754
|
||||||
],
|
],
|
||||||
"name": "Romania",
|
"name": "Romania 🇷🇴",
|
||||||
"strength": 1
|
"strength": 1
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -160,7 +160,7 @@
|
|||||||
1580,
|
1580,
|
||||||
834
|
834
|
||||||
],
|
],
|
||||||
"name": "Turkiye",
|
"name": "Turkiye 🇹🇷",
|
||||||
"strength": 1
|
"strength": 1
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -168,7 +168,7 @@
|
|||||||
525,
|
525,
|
||||||
955
|
955
|
||||||
],
|
],
|
||||||
"name": "Morocco",
|
"name": "Morocco 🇲🇦",
|
||||||
"strength": 1
|
"strength": 1
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -176,7 +176,7 @@
|
|||||||
1674,
|
1674,
|
||||||
449
|
449
|
||||||
],
|
],
|
||||||
"name": "Russia",
|
"name": "Russia 🇷🇺",
|
||||||
"strength": 3
|
"strength": 3
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
375,
|
375,
|
||||||
272
|
272
|
||||||
],
|
],
|
||||||
"name": "USA",
|
"name": "USA 🇺🇸",
|
||||||
"strength": 3
|
"strength": 3
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -16,7 +16,7 @@
|
|||||||
372,
|
372,
|
||||||
136
|
136
|
||||||
],
|
],
|
||||||
"name": "Canada",
|
"name": "Canada 🇨🇦",
|
||||||
"strength": 2
|
"strength": 2
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -24,7 +24,7 @@
|
|||||||
375,
|
375,
|
||||||
374
|
374
|
||||||
],
|
],
|
||||||
"name": "Mexico",
|
"name": "Mexico 🇲🇽",
|
||||||
"strength": 1
|
"strength": 1
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -32,7 +32,7 @@
|
|||||||
500,
|
500,
|
||||||
378
|
378
|
||||||
],
|
],
|
||||||
"name": "Cuba",
|
"name": "Cuba 🇨🇺",
|
||||||
"strength": 1
|
"strength": 1
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -40,7 +40,7 @@
|
|||||||
524,
|
524,
|
||||||
474
|
474
|
||||||
],
|
],
|
||||||
"name": "Columbia",
|
"name": "Columbia 🇨🇴",
|
||||||
"strength": 1
|
"strength": 1
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -48,7 +48,7 @@
|
|||||||
593,
|
593,
|
||||||
473
|
473
|
||||||
],
|
],
|
||||||
"name": "Venezuala",
|
"name": "Venezuala 🇻🇪",
|
||||||
"strength": 1
|
"strength": 1
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -56,7 +56,7 @@
|
|||||||
596,
|
596,
|
||||||
705
|
705
|
||||||
],
|
],
|
||||||
"name": "Argentina",
|
"name": "Argentina 🇦🇷",
|
||||||
"strength": 1
|
"strength": 1
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -64,7 +64,7 @@
|
|||||||
637,
|
637,
|
||||||
567
|
567
|
||||||
],
|
],
|
||||||
"name": "Brazil",
|
"name": "Brazil 🇧🇷",
|
||||||
"strength": 1
|
"strength": 1
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -72,7 +72,7 @@
|
|||||||
1280,
|
1280,
|
||||||
975
|
975
|
||||||
],
|
],
|
||||||
"name": "Antartica",
|
"name": "Antartica 🇦🇶",
|
||||||
"strength": 3
|
"strength": 3
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -80,7 +80,7 @@
|
|||||||
709,
|
709,
|
||||||
57
|
57
|
||||||
],
|
],
|
||||||
"name": "Greenland",
|
"name": "Greenland 🇬🇱",
|
||||||
"strength": 2
|
"strength": 2
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -88,7 +88,7 @@
|
|||||||
831,
|
831,
|
||||||
112
|
112
|
||||||
],
|
],
|
||||||
"name": "Iceland",
|
"name": "Iceland 🇮🇸",
|
||||||
"strength": 1
|
"strength": 1
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -96,7 +96,7 @@
|
|||||||
925,
|
925,
|
||||||
186
|
186
|
||||||
],
|
],
|
||||||
"name": "England",
|
"name": "England 🏴",
|
||||||
"strength": 3
|
"strength": 3
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -104,7 +104,7 @@
|
|||||||
887,
|
887,
|
||||||
183
|
183
|
||||||
],
|
],
|
||||||
"name": "Ireland",
|
"name": "Ireland 🇮🇪",
|
||||||
"strength": 1
|
"strength": 1
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -112,7 +112,7 @@
|
|||||||
908,
|
908,
|
||||||
264
|
264
|
||||||
],
|
],
|
||||||
"name": "Spain",
|
"name": "Spain 🇪🇸",
|
||||||
"strength": 1
|
"strength": 1
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -120,7 +120,7 @@
|
|||||||
1004,
|
1004,
|
||||||
250
|
250
|
||||||
],
|
],
|
||||||
"name": "Italy",
|
"name": "Italy 🇮🇹",
|
||||||
"strength": 1
|
"strength": 1
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -128,7 +128,7 @@
|
|||||||
958,
|
958,
|
||||||
220
|
220
|
||||||
],
|
],
|
||||||
"name": "France",
|
"name": "France 🇫🇷",
|
||||||
"strength": 2
|
"strength": 2
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -136,7 +136,7 @@
|
|||||||
997,
|
997,
|
||||||
205
|
205
|
||||||
],
|
],
|
||||||
"name": "Germany",
|
"name": "Germany 🇩🇪",
|
||||||
"strength": 1
|
"strength": 1
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -144,7 +144,7 @@
|
|||||||
1064,
|
1064,
|
||||||
101
|
101
|
||||||
],
|
],
|
||||||
"name": "Sweden",
|
"name": "Sweden 🇸🇪",
|
||||||
"strength": 1
|
"strength": 1
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -152,7 +152,7 @@
|
|||||||
1046,
|
1046,
|
||||||
193
|
193
|
||||||
],
|
],
|
||||||
"name": "Poland",
|
"name": "Poland 🇵🇱",
|
||||||
"strength": 1
|
"strength": 1
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -160,7 +160,7 @@
|
|||||||
1061,
|
1061,
|
||||||
188
|
188
|
||||||
],
|
],
|
||||||
"name": "Belarus",
|
"name": "Belarus 🇧🇾",
|
||||||
"strength": 1
|
"strength": 1
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -168,7 +168,7 @@
|
|||||||
1073,
|
1073,
|
||||||
243
|
243
|
||||||
],
|
],
|
||||||
"name": "Romania",
|
"name": "Romania 🇷🇴",
|
||||||
"strength": 1
|
"strength": 1
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -176,7 +176,7 @@
|
|||||||
1161,
|
1161,
|
||||||
274
|
274
|
||||||
],
|
],
|
||||||
"name": "Turkiye",
|
"name": "Turkiye 🇹🇷",
|
||||||
"strength": 1
|
"strength": 1
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -184,7 +184,7 @@
|
|||||||
969,
|
969,
|
||||||
133
|
133
|
||||||
],
|
],
|
||||||
"name": "Norway",
|
"name": "Norway 🇳🇴",
|
||||||
"strength": 1
|
"strength": 1
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -192,7 +192,7 @@
|
|||||||
1062,
|
1062,
|
||||||
133
|
133
|
||||||
],
|
],
|
||||||
"name": "Finland",
|
"name": "Finland 🇫🇮",
|
||||||
"strength": 1
|
"strength": 1
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -200,7 +200,7 @@
|
|||||||
1099,
|
1099,
|
||||||
211
|
211
|
||||||
],
|
],
|
||||||
"name": "Ukraine",
|
"name": "Ukraine 🇺🇦",
|
||||||
"strength": 1
|
"strength": 1
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -208,7 +208,7 @@
|
|||||||
1344,
|
1344,
|
||||||
136
|
136
|
||||||
],
|
],
|
||||||
"name": "Russia",
|
"name": "Russia 🇷🇺",
|
||||||
"strength": 3
|
"strength": 3
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -216,7 +216,7 @@
|
|||||||
1537,
|
1537,
|
||||||
186
|
186
|
||||||
],
|
],
|
||||||
"name": "Mongolia",
|
"name": "Mongolia 🇲🇳",
|
||||||
"strength": 1
|
"strength": 1
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -224,7 +224,7 @@
|
|||||||
1524,
|
1524,
|
||||||
328
|
328
|
||||||
],
|
],
|
||||||
"name": "China",
|
"name": "China 🇨🇳",
|
||||||
"strength": 3
|
"strength": 3
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -232,7 +232,7 @@
|
|||||||
1368,
|
1368,
|
||||||
373
|
373
|
||||||
],
|
],
|
||||||
"name": "India",
|
"name": "India 🇮🇳",
|
||||||
"strength": 2
|
"strength": 2
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -240,7 +240,7 @@
|
|||||||
1276,
|
1276,
|
||||||
239
|
239
|
||||||
],
|
],
|
||||||
"name": "Kazakhstan",
|
"name": "Kazakhstan 🇰🇿",
|
||||||
"strength": 1
|
"strength": 1
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -248,7 +248,7 @@
|
|||||||
1238,
|
1238,
|
||||||
309
|
309
|
||||||
],
|
],
|
||||||
"name": "Iran",
|
"name": "Iran 🇮🇷",
|
||||||
"strength": 1
|
"strength": 1
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -256,7 +256,7 @@
|
|||||||
1178,
|
1178,
|
||||||
351
|
351
|
||||||
],
|
],
|
||||||
"name": "Saudi Arabia",
|
"name": "Saudi Arabia 🇸🇦",
|
||||||
"strength": 1
|
"strength": 1
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -264,7 +264,7 @@
|
|||||||
1679,
|
1679,
|
||||||
657
|
657
|
||||||
],
|
],
|
||||||
"name": "Australia",
|
"name": "Australia 🇦🇺",
|
||||||
"strength": 2
|
"strength": 2
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -272,7 +272,7 @@
|
|||||||
1890,
|
1890,
|
||||||
775
|
775
|
||||||
],
|
],
|
||||||
"name": "New Zealand",
|
"name": "New Zealand 🇳🇿",
|
||||||
"strength": 0.5
|
"strength": 0.5
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -280,7 +280,7 @@
|
|||||||
918,
|
918,
|
||||||
342
|
342
|
||||||
],
|
],
|
||||||
"name": "Algeria",
|
"name": "Algeria 🇩🇿",
|
||||||
"strength": 1
|
"strength": 1
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -288,7 +288,7 @@
|
|||||||
1030,
|
1030,
|
||||||
332
|
332
|
||||||
],
|
],
|
||||||
"name": "Libya",
|
"name": "Libya 🇱🇾",
|
||||||
"strength": 1
|
"strength": 1
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -296,7 +296,7 @@
|
|||||||
1092,
|
1092,
|
||||||
335
|
335
|
||||||
],
|
],
|
||||||
"name": "Egypt",
|
"name": "Egypt 🇪🇬",
|
||||||
"strength": 1
|
"strength": 1
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -304,7 +304,7 @@
|
|||||||
963,
|
963,
|
||||||
410
|
410
|
||||||
],
|
],
|
||||||
"name": "Niger",
|
"name": "Niger 🇳🇪",
|
||||||
"strength": 1
|
"strength": 1
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -312,7 +312,7 @@
|
|||||||
1112,
|
1112,
|
||||||
406
|
406
|
||||||
],
|
],
|
||||||
"name": "Sudan",
|
"name": "Sudan 🇸🇩",
|
||||||
"strength": 1
|
"strength": 1
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -320,7 +320,7 @@
|
|||||||
1074,
|
1074,
|
||||||
508
|
508
|
||||||
],
|
],
|
||||||
"name": "DRC",
|
"name": "DRC 🇨🇩",
|
||||||
"strength": 1
|
"strength": 1
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -328,7 +328,7 @@
|
|||||||
1154,
|
1154,
|
||||||
443
|
443
|
||||||
],
|
],
|
||||||
"name": "Ethiopia",
|
"name": "Ethiopia 🇪🇹",
|
||||||
"strength": 1
|
"strength": 1
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -336,7 +336,7 @@
|
|||||||
1075,
|
1075,
|
||||||
707
|
707
|
||||||
],
|
],
|
||||||
"name": "South Africa",
|
"name": "South Africa 🇿🇦",
|
||||||
"strength": 1
|
"strength": 1
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -344,7 +344,7 @@
|
|||||||
1194,
|
1194,
|
||||||
627
|
627
|
||||||
],
|
],
|
||||||
"name": "Madagascar",
|
"name": "Madagascar 🇲🇬",
|
||||||
"strength": 0.5
|
"strength": 0.5
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -352,7 +352,7 @@
|
|||||||
1052,
|
1052,
|
||||||
420
|
420
|
||||||
],
|
],
|
||||||
"name": "Chad",
|
"name": "Chad 🇹🇩",
|
||||||
"strength": 1
|
"strength": 1
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|||||||
@@ -1,3 +1,6 @@
|
|||||||
|
import twemoji from 'twemoji';
|
||||||
|
import DOMPurify from 'dompurify';
|
||||||
|
|
||||||
export function renderTroops(troops: number): string {
|
export function renderTroops(troops: number): string {
|
||||||
let troopsStr = ''
|
let troopsStr = ''
|
||||||
|
|
||||||
@@ -29,3 +32,21 @@ export function createCanvas(): HTMLCanvasElement {
|
|||||||
|
|
||||||
return canvas
|
return canvas
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export function processName(name: string): string {
|
||||||
|
const sanitized = Array.from(name).slice(0, 10).join('').replace(/[^\p{L}\p{N}\s\p{Emoji}\p{Emoji_Component}]/gu, '');
|
||||||
|
|
||||||
|
// First sanitize the raw input - strip everything except text and emojis
|
||||||
|
const withEmojis = twemoji.parse(sanitized, {
|
||||||
|
base: 'https://cdn.jsdelivr.net/gh/twitter/twemoji@14.0.2/assets/', // Use jsDelivr CDN
|
||||||
|
folder: 'svg', // or 'png' if you prefer
|
||||||
|
ext: '.svg' // or '.png' if you prefer
|
||||||
|
});
|
||||||
|
return DOMPurify.sanitize(withEmojis, {
|
||||||
|
ALLOWED_TAGS: ['img'],
|
||||||
|
ALLOWED_ATTR: ['src', 'alt', 'class'],
|
||||||
|
// Only allow twemoji CDN URLs
|
||||||
|
ALLOWED_URI_REGEXP: /^https:\/\/cdn\.jsdelivr\.net\/gh\/twitter\/twemoji/
|
||||||
|
});
|
||||||
|
|
||||||
|
}
|
||||||
@@ -1,8 +1,12 @@
|
|||||||
import {LitElement, html, css} from 'lit';
|
import { LitElement, html, css } from 'lit';
|
||||||
import {customElement, property, state} from 'lit/decorators.js';
|
import { customElement, property, state } from 'lit/decorators.js';
|
||||||
import {Layer} from './Layer';
|
import { Layer } from './Layer';
|
||||||
import {Game, Player} from '../../../core/game/Game';
|
import { Game, Player } from '../../../core/game/Game';
|
||||||
import {ClientID} from '../../../core/Schemas';
|
import { ClientID } from '../../../core/Schemas';
|
||||||
|
import { unsafeHTML } from 'lit/directives/unsafe-html.js';
|
||||||
|
import { processName } from '../Utils';
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
interface Entry {
|
interface Entry {
|
||||||
name: string
|
name: string
|
||||||
@@ -85,6 +89,10 @@ export class Leaderboard extends LitElement implements Layer {
|
|||||||
:host {
|
:host {
|
||||||
display: block;
|
display: block;
|
||||||
}
|
}
|
||||||
|
img.emoji {
|
||||||
|
height: 1em; // Match text height
|
||||||
|
width: auto; // Maintain aspect ratio
|
||||||
|
}
|
||||||
.leaderboard {
|
.leaderboard {
|
||||||
position: fixed;
|
position: fixed;
|
||||||
top: 10px;
|
top: 10px;
|
||||||
@@ -158,7 +166,7 @@ export class Leaderboard extends LitElement implements Layer {
|
|||||||
.map((player, index) => html`
|
.map((player, index) => html`
|
||||||
<tr class="${player.isMyPlayer ? 'myPlayer' : 'otherPlayer'}">
|
<tr class="${player.isMyPlayer ? 'myPlayer' : 'otherPlayer'}">
|
||||||
<td>${player.position}</td>
|
<td>${player.position}</td>
|
||||||
<td>${player.name.slice(0, 10)}</td>
|
<td>${unsafeHTML(processName(player.name))}</td>
|
||||||
<td>${player.score}</td>
|
<td>${player.score}</td>
|
||||||
</tr>
|
</tr>
|
||||||
`)}
|
`)}
|
||||||
|
|||||||
Reference in New Issue
Block a user