Merge remote-tracking branch 'origin/develop' into ts-redux
BIN
.eslintrc.js
8
.gitignore
vendored
|
@ -24,7 +24,7 @@ yarn-error.log*
|
||||||
!/custom/**/.gitkeep
|
!/custom/**/.gitkeep
|
||||||
|
|
||||||
# surge.sh
|
# surge.sh
|
||||||
CNAME
|
/CNAME
|
||||||
AUTH
|
/AUTH
|
||||||
CORS
|
/CORS
|
||||||
ROUTER
|
/ROUTER
|
||||||
|
|
|
@ -2,10 +2,14 @@
|
||||||
|
|
||||||
![Soapbox FE Screenshot](soapbox-screenshot.png)
|
![Soapbox FE Screenshot](soapbox-screenshot.png)
|
||||||
|
|
||||||
**Soapbox FE** is a frontend for Pleroma with a focus on custom branding and ease of use.
|
**Soapbox FE** is a frontend for Mastodon and Pleroma with a focus on custom branding and ease of use.
|
||||||
It's part of the [Soapbox](https://soapbox.pub) project.
|
It's part of the [Soapbox](https://soapbox.pub) project.
|
||||||
|
|
||||||
# :rocket: Deploy on Pleroma
|
## Try it out
|
||||||
|
|
||||||
|
Visit https://fe.soapbox.pub/ and point it to your favorite instance.
|
||||||
|
|
||||||
|
## :rocket: Deploy on Pleroma
|
||||||
|
|
||||||
Installing Soapbox FE on an existing Pleroma server is extremely easy.
|
Installing Soapbox FE on an existing Pleroma server is extremely easy.
|
||||||
Just ssh into the server and download a .zip of the latest build:
|
Just ssh into the server and download a .zip of the latest build:
|
||||||
|
|
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 4 KiB |
|
@ -1,116 +1,30 @@
|
||||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
<svg
|
<svg
|
||||||
inkscape:export-ydpi="240"
|
height="100px"
|
||||||
inkscape:export-xdpi="240"
|
width="100px"
|
||||||
inkscape:export-filename="/home/alex/Projects/docker-tribe/avi.png"
|
fill="#000000"
|
||||||
sodipodi:docname="avatar.svg"
|
|
||||||
width="120"
|
|
||||||
height="120"
|
|
||||||
viewBox="0 0 31.75 31.750001"
|
|
||||||
version="1.1"
|
version="1.1"
|
||||||
id="svg8"
|
x="0px"
|
||||||
inkscape:version="1.1.1 (3bf5ae0d25, 2021-09-20)"
|
y="0px"
|
||||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
viewBox="0 0 95 95"
|
||||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
enable-background="new 0 0 95 95"
|
||||||
|
xml:space="preserve"
|
||||||
|
id="svg4"
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
xmlns:svg="http://www.w3.org/2000/svg"
|
xmlns:svg="http://www.w3.org/2000/svg"
|
||||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||||
xmlns:cc="http://creativecommons.org/ns#"
|
xmlns:cc="http://creativecommons.org/ns#"
|
||||||
xmlns:dc="http://purl.org/dc/elements/1.1/">
|
xmlns:dc="http://purl.org/dc/elements/1.1/"><metadata
|
||||||
<defs
|
id="metadata10"><rdf:RDF><cc:Work
|
||||||
id="defs2" />
|
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
|
||||||
<sodipodi:namedview
|
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /></cc:Work></rdf:RDF></metadata><defs
|
||||||
inkscape:window-maximized="1"
|
id="defs8" /><rect
|
||||||
inkscape:window-y="30"
|
style="opacity:1;vector-effect:none;fill:#f2f2f2;fill-opacity:1;stroke:none;stroke-width:3.79999995;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
||||||
inkscape:window-x="0"
|
id="rect819"
|
||||||
inkscape:window-height="1019"
|
width="95"
|
||||||
inkscape:window-width="1920"
|
height="95"
|
||||||
id="base"
|
x="0"
|
||||||
pagecolor="#ffffff"
|
y="0" /><path
|
||||||
bordercolor="#666666"
|
d="m 74.797528,31.305083 c 0,-6.160943 -4.994325,-11.155269 -11.155268,-11.155269 -6.130227,0 -11.101359,4.946683 -11.150255,11.064999 l -9.000067,1.203603 c -1.129004,-3.458478 -4.374972,-5.95909 -8.209576,-5.95909 -4.769905,0 -8.637734,3.867202 -8.637734,8.637734 0,3.824574 2.488074,7.063018 5.932134,8.198919 l -1.269425,9.24455 c -6.137749,0.02821 -11.103865,5.009371 -11.103865,11.152762 0,6.160942 4.994325,11.155895 11.155268,11.155895 6.147779,0 11.130822,-4.973638 11.152762,-11.115149 l 10.417436,-1.439935 c 1.139662,3.438419 4.374972,5.922103 8.195786,5.922103 4.769903,0 8.637732,-3.867202 8.637732,-8.637733 0,-3.967502 -2.678644,-7.301859 -6.323932,-8.314891 l 0.786104,-8.832065 c 5.889506,-0.305288 10.5729,-5.16233 10.5729,-11.126433 z M 52.506424,59.187928 42.075823,60.630371 c -1.05566,-3.697944 -3.965621,-6.6054 -7.66482,-7.657925 l 1.269425,-9.257087 c 4.440795,-0.203734 7.998945,-3.751856 8.216472,-8.18889 l 9.013859,-1.205483 c 1.090765,3.890396 4.23267,6.91445 8.19077,7.837838 l -0.786104,8.822035 c -4.26088,0.396186 -7.614044,3.888516 -7.809001,8.207069 z"
|
||||||
borderopacity="1.0"
|
id="path2"
|
||||||
inkscape:pageopacity="0.0"
|
style="fill:#0482d8;fill-opacity:1;stroke-width:0.62687665;opacity:0.3" /></svg>
|
||||||
inkscape:pageshadow="2"
|
|
||||||
inkscape:zoom="4.3194033"
|
|
||||||
inkscape:cx="79.987899"
|
|
||||||
inkscape:cy="64.129228"
|
|
||||||
inkscape:document-units="px"
|
|
||||||
inkscape:current-layer="layer1"
|
|
||||||
inkscape:document-rotation="0"
|
|
||||||
showgrid="false"
|
|
||||||
units="px"
|
|
||||||
fit-margin-top="0"
|
|
||||||
fit-margin-left="0"
|
|
||||||
fit-margin-right="0"
|
|
||||||
fit-margin-bottom="0"
|
|
||||||
inkscape:snap-bbox="true"
|
|
||||||
inkscape:object-paths="true"
|
|
||||||
inkscape:snap-intersection-paths="true"
|
|
||||||
inkscape:snap-smooth-nodes="true"
|
|
||||||
inkscape:snap-midpoints="true"
|
|
||||||
inkscape:snap-object-midpoints="true"
|
|
||||||
inkscape:snap-center="true"
|
|
||||||
inkscape:snap-global="false"
|
|
||||||
inkscape:pagecheckerboard="0" />
|
|
||||||
<metadata
|
|
||||||
id="metadata5">
|
|
||||||
<rdf:RDF>
|
|
||||||
<cc:Work
|
|
||||||
rdf:about="">
|
|
||||||
<dc:format>image/svg+xml</dc:format>
|
|
||||||
<dc:type
|
|
||||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
|
||||||
</cc:Work>
|
|
||||||
</rdf:RDF>
|
|
||||||
</metadata>
|
|
||||||
<g
|
|
||||||
inkscape:label="Layer 1"
|
|
||||||
inkscape:groupmode="layer"
|
|
||||||
id="layer1"
|
|
||||||
transform="translate(0.80272198,1.2346106)">
|
|
||||||
<rect
|
|
||||||
style="fill:#10b3d1;fill-opacity:1;stroke:none;stroke-width:1.53052;stroke-miterlimit:4;stroke-dasharray:none"
|
|
||||||
id="rect853"
|
|
||||||
width="31.75"
|
|
||||||
height="31.75"
|
|
||||||
x="-0.80272198"
|
|
||||||
y="-1.2346106" />
|
|
||||||
<path
|
|
||||||
id="path857"
|
|
||||||
style="fill:#f4962a;fill-opacity:1;stroke:#000000;stroke-width:1.48265;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
|
||||||
d="M 15.051525,3.9344041 A 10.434797,10.434797 0 0 0 4.6372555,14.368944 a 10.434797,10.434797 0 0 0 0,0.02075 v 0.03137 a 1.7839264,2.3625556 0 0 0 -0.9503056,-0.363423 1.7839264,2.3625556 0 0 0 -1.7838141,2.362493 1.7839264,2.3625556 0 0 0 1.7838141,2.362491 1.7839264,2.3625556 0 0 0 0.9503056,-0.363423 v 23.74268 H 25.507302 v -23.74268 a 1.7839264,2.3625556 0 0 0 0.950305,0.363423 1.7839264,2.3625556 0 0 0 1.783814,-2.362491 1.7839264,2.3625556 0 0 0 -1.783814,-2.362493 1.7839264,2.3625556 0 0 0 -0.950305,0.362941 v -0.05164 A 10.434797,10.434797 0 0 0 15.072278,3.9344041 a 10.434797,10.434797 0 0 0 -0.02075,0 z" />
|
|
||||||
<circle
|
|
||||||
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.900495;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
|
||||||
id="path881-6"
|
|
||||||
cx="11.218504"
|
|
||||||
cy="13.292331"
|
|
||||||
r="1.3086123" />
|
|
||||||
<circle
|
|
||||||
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.900495;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
|
||||||
id="path881-7"
|
|
||||||
cx="18.926052"
|
|
||||||
cy="13.292331"
|
|
||||||
r="1.3086123" />
|
|
||||||
<ellipse
|
|
||||||
style="fill:#f2f2f2;fill-opacity:1;stroke:#000000;stroke-width:0.88959;stroke-miterlimit:4;stroke-dasharray:none"
|
|
||||||
id="path917"
|
|
||||||
cx="15.072279"
|
|
||||||
cy="18.343904"
|
|
||||||
rx="7.1666903"
|
|
||||||
ry="4.0659413" />
|
|
||||||
<path
|
|
||||||
id="path957"
|
|
||||||
style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.88959;stroke-miterlimit:4;stroke-dasharray:none"
|
|
||||||
d="m 21.900069,17.108362 a 7.1666903,4.0659412 0 0 1 -6.82779,2.8304 7.1666903,4.0659412 0 0 1 -6.8277959,-2.830413" />
|
|
||||||
<path
|
|
||||||
id="path1003"
|
|
||||||
style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.88959;stroke-miterlimit:4;stroke-dasharray:none"
|
|
||||||
inkscape:transform-center-y="-0.79831289"
|
|
||||||
d="m 13.062455,16.997512 c 0.457808,-1.227486 1.336486,-2.475611 2.009822,-2.475611 0.673338,0 1.552013,1.248125 2.009824,2.475611" />
|
|
||||||
<path
|
|
||||||
style="fill:none;stroke:#000000;stroke-width:0.79375;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
|
||||||
d="m 24.842957,6.3249745 c -1.070225,-0.4344716 -2.309802,0.1182843 -2.464817,1.0590207 0,0 -1.627232,-1.9230616 1.219705,-3.5847621"
|
|
||||||
id="path1030"
|
|
||||||
sodipodi:nodetypes="ccc" />
|
|
||||||
</g>
|
|
||||||
</svg>
|
|
||||||
|
|
Before Width: | Height: | Size: 4.8 KiB After Width: | Height: | Size: 2.2 KiB |
BIN
app/images/header-missing.png
Normal file
After Width: | Height: | Size: 81 B |
23
app/soapbox/__fixtures__/mastodon-account.json
Normal file
|
@ -0,0 +1,23 @@
|
||||||
|
{
|
||||||
|
"id": "106801667066418367",
|
||||||
|
"username": "benis911",
|
||||||
|
"acct": "benis911",
|
||||||
|
"display_name": "",
|
||||||
|
"locked": false,
|
||||||
|
"bot": false,
|
||||||
|
"discoverable": null,
|
||||||
|
"group": false,
|
||||||
|
"created_at": "2021-08-22T00:00:00.000Z",
|
||||||
|
"note": "",
|
||||||
|
"url": "https://mastodon.social/@benis911",
|
||||||
|
"avatar": "https://mastodon.social/avatars/original/missing.png",
|
||||||
|
"avatar_static": "https://mastodon.social/avatars/original/missing.png",
|
||||||
|
"header": "https://mastodon.social/headers/original/missing.png",
|
||||||
|
"header_static": "https://mastodon.social/headers/original/missing.png",
|
||||||
|
"followers_count": 1,
|
||||||
|
"following_count": 0,
|
||||||
|
"statuses_count": 5,
|
||||||
|
"last_status_at": "2022-02-23",
|
||||||
|
"emojis": [],
|
||||||
|
"fields": []
|
||||||
|
}
|
123
app/soapbox/__fixtures__/mastodon-instance-rc.json
Normal file
|
@ -0,0 +1,123 @@
|
||||||
|
{
|
||||||
|
"uri": "mastodon.social",
|
||||||
|
"title": "Mastodon",
|
||||||
|
"short_description": "Server run by the main developers of the project <img draggable=\"false\" alt=\"🐘\" class=\"emojione\" src=\"https://mastodon.social/emoji/1f418.svg\" /> It is not focused on any particular niche interest - everyone is welcome as long as you follow our code of conduct!",
|
||||||
|
"description": "Server run by the main developers of the project <img draggable=\"false\" alt=\"🐘\" class=\"emojione\" src=\"https://mastodon.social/emoji/1f418.svg\" /> It is not focused on any particular niche interest - everyone is welcome as long as you follow our code of conduct!",
|
||||||
|
"email": "staff@mastodon.social",
|
||||||
|
"version": "3.5.0rc1",
|
||||||
|
"urls": {
|
||||||
|
"streaming_api": "wss://mastodon.social"
|
||||||
|
},
|
||||||
|
"stats": {
|
||||||
|
"user_count": 635078,
|
||||||
|
"status_count": 34700866,
|
||||||
|
"domain_count": 21989
|
||||||
|
},
|
||||||
|
"thumbnail": "https://files.mastodon.social/site_uploads/files/000/000/001/original/vlcsnap-2018-08-27-16h43m11s127.png",
|
||||||
|
"languages": [
|
||||||
|
"en"
|
||||||
|
],
|
||||||
|
"registrations": true,
|
||||||
|
"approval_required": false,
|
||||||
|
"invites_enabled": true,
|
||||||
|
"configuration": {
|
||||||
|
"statuses": {
|
||||||
|
"max_characters": 500,
|
||||||
|
"max_media_attachments": 4,
|
||||||
|
"characters_reserved_per_url": 23
|
||||||
|
},
|
||||||
|
"media_attachments": {
|
||||||
|
"supported_mime_types": [
|
||||||
|
"image/jpeg",
|
||||||
|
"image/png",
|
||||||
|
"image/gif",
|
||||||
|
"video/webm",
|
||||||
|
"video/mp4",
|
||||||
|
"video/quicktime",
|
||||||
|
"video/ogg",
|
||||||
|
"audio/wave",
|
||||||
|
"audio/wav",
|
||||||
|
"audio/x-wav",
|
||||||
|
"audio/x-pn-wave",
|
||||||
|
"audio/ogg",
|
||||||
|
"audio/vorbis",
|
||||||
|
"audio/mpeg",
|
||||||
|
"audio/mp3",
|
||||||
|
"audio/webm",
|
||||||
|
"audio/flac",
|
||||||
|
"audio/aac",
|
||||||
|
"audio/m4a",
|
||||||
|
"audio/x-m4a",
|
||||||
|
"audio/mp4",
|
||||||
|
"audio/3gpp",
|
||||||
|
"video/x-ms-asf"
|
||||||
|
],
|
||||||
|
"image_size_limit": 10485760,
|
||||||
|
"image_matrix_limit": 16777216,
|
||||||
|
"video_size_limit": 41943040,
|
||||||
|
"video_frame_rate_limit": 60,
|
||||||
|
"video_matrix_limit": 2304000
|
||||||
|
},
|
||||||
|
"polls": {
|
||||||
|
"max_options": 4,
|
||||||
|
"max_characters_per_option": 50,
|
||||||
|
"min_expiration": 300,
|
||||||
|
"max_expiration": 2629746
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"contact_account": {
|
||||||
|
"id": "1",
|
||||||
|
"username": "Gargron",
|
||||||
|
"acct": "Gargron",
|
||||||
|
"display_name": "Eugen",
|
||||||
|
"locked": false,
|
||||||
|
"bot": false,
|
||||||
|
"discoverable": true,
|
||||||
|
"group": false,
|
||||||
|
"created_at": "2016-03-16T00:00:00.000Z",
|
||||||
|
"note": "<p>Founder, CEO and lead developer <span class=\"h-card\"><a href=\"https://mastodon.social/@Mastodon\" class=\"u-url mention\">@<span>Mastodon</span></a></span>, Germany.</p>",
|
||||||
|
"url": "https://mastodon.social/@Gargron",
|
||||||
|
"avatar": "https://files.mastodon.social/accounts/avatars/000/000/001/original/ccb05a778962e171.png",
|
||||||
|
"avatar_static": "https://files.mastodon.social/accounts/avatars/000/000/001/original/ccb05a778962e171.png",
|
||||||
|
"header": "https://files.mastodon.social/accounts/headers/000/000/001/original/3b91c9965d00888b.jpeg",
|
||||||
|
"header_static": "https://files.mastodon.social/accounts/headers/000/000/001/original/3b91c9965d00888b.jpeg",
|
||||||
|
"followers_count": 99760,
|
||||||
|
"following_count": 274,
|
||||||
|
"statuses_count": 71657,
|
||||||
|
"last_status_at": "2022-03-17",
|
||||||
|
"emojis": [],
|
||||||
|
"fields": [
|
||||||
|
{
|
||||||
|
"name": "Patreon",
|
||||||
|
"value": "<a href=\"https://www.patreon.com/mastodon\" rel=\"me nofollow noopener noreferrer\" target=\"_blank\"><span class=\"invisible\">https://www.</span><span class=\"\">patreon.com/mastodon</span><span class=\"invisible\"></span></a>",
|
||||||
|
"verified_at": null
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"rules": [
|
||||||
|
{
|
||||||
|
"id": "1",
|
||||||
|
"text": "Sexually explicit or violent media must be marked as sensitive when posting"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "2",
|
||||||
|
"text": "No racism, sexism, homophobia, transphobia, xenophobia, or casteism"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "3",
|
||||||
|
"text": "No incitement of violence or promotion of violent ideologies"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "4",
|
||||||
|
"text": "No harassment, dogpiling or doxxing of other users"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "5",
|
||||||
|
"text": "No content illegal in Germany"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "7",
|
||||||
|
"text": "Do not share intentionally false or misleading information"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
119
app/soapbox/__fixtures__/pleroma-notification-move.json
Normal file
|
@ -0,0 +1,119 @@
|
||||||
|
{
|
||||||
|
"account": {
|
||||||
|
"acct": "alex@fedibird.com",
|
||||||
|
"avatar": "https://gleasonator.com/images/avi.png",
|
||||||
|
"avatar_static": "https://gleasonator.com/images/avi.png",
|
||||||
|
"bot": false,
|
||||||
|
"created_at": "2022-01-24T21:25:37.000Z",
|
||||||
|
"display_name": "alex@fedibird.com",
|
||||||
|
"emojis": [],
|
||||||
|
"fields": [],
|
||||||
|
"followers_count": 2,
|
||||||
|
"following_count": 1,
|
||||||
|
"fqn": "alex@fedibird.com",
|
||||||
|
"header": "https://gleasonator.com/images/banner.png",
|
||||||
|
"header_static": "https://gleasonator.com/images/banner.png",
|
||||||
|
"id": "AFmHQ18XZ7Lco68MW8",
|
||||||
|
"last_status_at": "2022-03-16T22:07:53",
|
||||||
|
"locked": false,
|
||||||
|
"note": "<p></p>",
|
||||||
|
"pleroma": {
|
||||||
|
"accepts_chat_messages": null,
|
||||||
|
"also_known_as": [],
|
||||||
|
"ap_id": "https://fedibird.com/users/alex",
|
||||||
|
"background_image": null,
|
||||||
|
"birthday": "1993-07-03",
|
||||||
|
"deactivated": false,
|
||||||
|
"favicon": "https://gleasonator.com/proxy/HzfsidHss3CuA7aM2zxXN-tAjF8/aHR0cHM6Ly9mZWRpYmlyZC5jb20vZmF2aWNvbi5pY28/favicon.ico",
|
||||||
|
"hide_favorites": true,
|
||||||
|
"hide_followers": false,
|
||||||
|
"hide_followers_count": false,
|
||||||
|
"hide_follows": false,
|
||||||
|
"hide_follows_count": false,
|
||||||
|
"is_admin": false,
|
||||||
|
"is_confirmed": true,
|
||||||
|
"is_moderator": false,
|
||||||
|
"is_suggested": false,
|
||||||
|
"location": "Texas, USA",
|
||||||
|
"relationship": {},
|
||||||
|
"skip_thread_containment": false,
|
||||||
|
"tags": []
|
||||||
|
},
|
||||||
|
"source": {
|
||||||
|
"fields": [],
|
||||||
|
"note": "",
|
||||||
|
"pleroma": {
|
||||||
|
"actor_type": "Person",
|
||||||
|
"discoverable": false
|
||||||
|
},
|
||||||
|
"sensitive": false
|
||||||
|
},
|
||||||
|
"statuses_count": 5,
|
||||||
|
"url": "https://fedibird.com/@alex",
|
||||||
|
"username": "alex"
|
||||||
|
},
|
||||||
|
"created_at": "2022-03-17T00:08:48.000Z",
|
||||||
|
"id": "406814",
|
||||||
|
"pleroma": {
|
||||||
|
"is_muted": false,
|
||||||
|
"is_seen": true
|
||||||
|
},
|
||||||
|
"target": {
|
||||||
|
"acct": "benis911",
|
||||||
|
"avatar": "https://gleasonator.com/images/avi.png",
|
||||||
|
"avatar_static": "https://gleasonator.com/images/avi.png",
|
||||||
|
"bot": false,
|
||||||
|
"created_at": "2021-03-26T20:42:11.000Z",
|
||||||
|
"display_name": "benis911",
|
||||||
|
"emojis": [],
|
||||||
|
"fields": [],
|
||||||
|
"followers_count": 0,
|
||||||
|
"following_count": 0,
|
||||||
|
"fqn": "benis911@gleasonator.com",
|
||||||
|
"header": "https://media.gleasonator.com/fc595bbbcf5aabefecd1c2adfe5b7f5457db59847992881668653a0338ba25bd.jpg",
|
||||||
|
"header_static": "https://media.gleasonator.com/fc595bbbcf5aabefecd1c2adfe5b7f5457db59847992881668653a0338ba25bd.jpg",
|
||||||
|
"id": "A5c5LK7EJTFR0u26Pg",
|
||||||
|
"last_status_at": "2022-03-16T22:01:57",
|
||||||
|
"locked": false,
|
||||||
|
"note": "hello world 2",
|
||||||
|
"pleroma": {
|
||||||
|
"accepts_chat_messages": true,
|
||||||
|
"also_known_as": [
|
||||||
|
"https://gleasonator.com/users/alex",
|
||||||
|
"https://poa.st/users/alex",
|
||||||
|
"https://fedibird.com/users/alex"
|
||||||
|
],
|
||||||
|
"ap_id": "https://gleasonator.com/users/benis911",
|
||||||
|
"background_image": null,
|
||||||
|
"birthday": "2000-01-25",
|
||||||
|
"deactivated": false,
|
||||||
|
"favicon": "https://gleasonator.com/favicon.png",
|
||||||
|
"hide_favorites": true,
|
||||||
|
"hide_followers": true,
|
||||||
|
"hide_followers_count": true,
|
||||||
|
"hide_follows": true,
|
||||||
|
"hide_follows_count": true,
|
||||||
|
"is_admin": false,
|
||||||
|
"is_confirmed": true,
|
||||||
|
"is_moderator": false,
|
||||||
|
"is_suggested": false,
|
||||||
|
"location": null,
|
||||||
|
"relationship": {},
|
||||||
|
"skip_thread_containment": false,
|
||||||
|
"tags": []
|
||||||
|
},
|
||||||
|
"source": {
|
||||||
|
"fields": [],
|
||||||
|
"note": "hello world 2",
|
||||||
|
"pleroma": {
|
||||||
|
"actor_type": "Person",
|
||||||
|
"discoverable": false
|
||||||
|
},
|
||||||
|
"sensitive": false
|
||||||
|
},
|
||||||
|
"statuses_count": 172,
|
||||||
|
"url": "https://gleasonator.com/users/benis911",
|
||||||
|
"username": "benis911"
|
||||||
|
},
|
||||||
|
"type": "move"
|
||||||
|
}
|
229
app/soapbox/__fixtures__/pleroma-status-deleted.json
Normal file
|
@ -0,0 +1,229 @@
|
||||||
|
{
|
||||||
|
"account": {
|
||||||
|
"acct": "alex",
|
||||||
|
"avatar": "https://media.gleasonator.com/6d64aecb17348b23aaff78db4687b9476cb0da1c07cc6a819c2e6ec7144c18b1.png",
|
||||||
|
"avatar_static": "https://media.gleasonator.com/6d64aecb17348b23aaff78db4687b9476cb0da1c07cc6a819c2e6ec7144c18b1.png",
|
||||||
|
"bot": false,
|
||||||
|
"created_at": "2020-01-08T01:25:43.000Z",
|
||||||
|
"display_name": "Alex Gleason",
|
||||||
|
"emojis": [],
|
||||||
|
"fields": [
|
||||||
|
{
|
||||||
|
"name": "Website",
|
||||||
|
"value": "<a href=\"https://alexgleason.me\" rel=\"ugc\">https://alexgleason.me</a>"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Soapbox",
|
||||||
|
"value": "<a href=\"https://soapbox.pub\" rel=\"ugc\">https://soapbox.pub</a>"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Email",
|
||||||
|
"value": "alex@alexgleason.me"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Gender identity",
|
||||||
|
"value": "Soyboy"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Donate (PayPal)",
|
||||||
|
"value": "<a href=\"https://paypal.me/gleasonator\" rel=\"ugc\">https://paypal.me/gleasonator</a>"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "$BTC",
|
||||||
|
"value": "bc1q9cx35adpm73aq2fw40ye6ts8hfxqzjr5unwg0n"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "$ETH",
|
||||||
|
"value": "0xAc9aB5Fc04Dc1cB1789Af75b523Bd23C70B2D717"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "$DOGE",
|
||||||
|
"value": "D5zVZs6jrRakaPVGiErkQiHt9sayzm6V5D"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "$XMR",
|
||||||
|
"value": "45JDCLrjJ4bgVUSbbs2yjy9m5Mf4VLPW8fG7jw9sq5u69rXZZopQogZNeyYkMBnXpkaip4p4QwaaJNhdTotPa9g44DBCzdK"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"follow_requests_count": 0,
|
||||||
|
"followers_count": 2489,
|
||||||
|
"following_count": 1586,
|
||||||
|
"fqn": "alex@gleasonator.com",
|
||||||
|
"header": "https://media.gleasonator.com/accounts/headers/000/000/001/original/9d0e4dbf1c9dbc8f.png",
|
||||||
|
"header_static": "https://media.gleasonator.com/accounts/headers/000/000/001/original/9d0e4dbf1c9dbc8f.png",
|
||||||
|
"id": "9v5bmRalQvjOy0ECcC",
|
||||||
|
"last_status_at": "2022-03-16T21:57:17",
|
||||||
|
"locked": false,
|
||||||
|
"note": "I create Fediverse software that empowers people online.<br/><br/>I'm vegan btw<br/><br/>Note: If you have a question for me, please tag me publicly. This gives the opportunity for others to chime in, and bystanders to learn.",
|
||||||
|
"pleroma": {
|
||||||
|
"accepts_chat_messages": true,
|
||||||
|
"accepts_email_list": true,
|
||||||
|
"allow_following_move": true,
|
||||||
|
"also_known_as": [
|
||||||
|
"https://mitra.social/users/alex"
|
||||||
|
],
|
||||||
|
"ap_id": "https://gleasonator.com/users/alex",
|
||||||
|
"background_image": null,
|
||||||
|
"birthday": "1993-07-03",
|
||||||
|
"deactivated": false,
|
||||||
|
"email": "alex@alexgleason.me",
|
||||||
|
"favicon": "https://gleasonator.com/favicon.png",
|
||||||
|
"hide_favorites": true,
|
||||||
|
"hide_followers": false,
|
||||||
|
"hide_followers_count": false,
|
||||||
|
"hide_follows": false,
|
||||||
|
"hide_follows_count": false,
|
||||||
|
"is_admin": true,
|
||||||
|
"is_confirmed": true,
|
||||||
|
"is_moderator": false,
|
||||||
|
"is_suggested": true,
|
||||||
|
"location": null,
|
||||||
|
"notification_settings": {
|
||||||
|
"block_from_strangers": false,
|
||||||
|
"hide_notification_contents": false
|
||||||
|
},
|
||||||
|
"relationship": {},
|
||||||
|
"skip_thread_containment": false,
|
||||||
|
"tags": [],
|
||||||
|
"unread_conversation_count": 392,
|
||||||
|
"unread_notifications_count": 2
|
||||||
|
},
|
||||||
|
"source": {
|
||||||
|
"fields": [
|
||||||
|
{
|
||||||
|
"name": "Website",
|
||||||
|
"value": "https://alexgleason.me"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Soapbox",
|
||||||
|
"value": "https://soapbox.pub"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Email",
|
||||||
|
"value": "alex@alexgleason.me"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Gender identity",
|
||||||
|
"value": "Soyboy"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Donate (PayPal)",
|
||||||
|
"value": "https://paypal.me/gleasonator"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "$BTC",
|
||||||
|
"value": "bc1q9cx35adpm73aq2fw40ye6ts8hfxqzjr5unwg0n"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "$ETH",
|
||||||
|
"value": "0xAc9aB5Fc04Dc1cB1789Af75b523Bd23C70B2D717"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "$DOGE",
|
||||||
|
"value": "D5zVZs6jrRakaPVGiErkQiHt9sayzm6V5D"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "$XMR",
|
||||||
|
"value": "45JDCLrjJ4bgVUSbbs2yjy9m5Mf4VLPW8fG7jw9sq5u69rXZZopQogZNeyYkMBnXpkaip4p4QwaaJNhdTotPa9g44DBCzdK"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"note": "I create Fediverse software that empowers people online.\r\n\r\nI'm vegan btw\r\n\r\nNote: If you have a question for me, please tag me publicly. This gives the opportunity for others to chime in, and bystanders to learn.",
|
||||||
|
"pleroma": {
|
||||||
|
"actor_type": "Person",
|
||||||
|
"discoverable": false,
|
||||||
|
"no_rich_text": false,
|
||||||
|
"show_birthday": true,
|
||||||
|
"show_role": true
|
||||||
|
},
|
||||||
|
"privacy": "public",
|
||||||
|
"sensitive": false
|
||||||
|
},
|
||||||
|
"statuses_count": 23695,
|
||||||
|
"url": "https://gleasonator.com/users/alex",
|
||||||
|
"username": "alex"
|
||||||
|
},
|
||||||
|
"application": {
|
||||||
|
"name": "Soapbox FE",
|
||||||
|
"website": "https://soapbox.pub/"
|
||||||
|
},
|
||||||
|
"bookmarked": false,
|
||||||
|
"card": null,
|
||||||
|
"content": "<p>I am going to delete this post for testing purposes</p>",
|
||||||
|
"created_at": "2022-03-16T21:57:16.000Z",
|
||||||
|
"emojis": [],
|
||||||
|
"favourited": false,
|
||||||
|
"favourites_count": 3,
|
||||||
|
"id": "AHU2RrX0wdcwzCYjFQ",
|
||||||
|
"in_reply_to_account_id": null,
|
||||||
|
"in_reply_to_id": null,
|
||||||
|
"language": null,
|
||||||
|
"media_attachments": [
|
||||||
|
{
|
||||||
|
"blurhash": "eWGlL@?b~q%MRj4nt7IUof%M%MIURjRjIUM{IUM{Rjayxut7j[j[xu",
|
||||||
|
"description": "",
|
||||||
|
"id": "508107650",
|
||||||
|
"meta": {
|
||||||
|
"original": {
|
||||||
|
"aspect": 1,
|
||||||
|
"height": 1024,
|
||||||
|
"width": 1024
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"pleroma": {
|
||||||
|
"mime_type": "image/png"
|
||||||
|
},
|
||||||
|
"preview_url": "https://media.gleasonator.com/2b9ddcd8b27cad786fd34bc2cfe02c1b63aa1b8e7b8d72379b5c9375fb61f199.png",
|
||||||
|
"remote_url": "https://media.gleasonator.com/2b9ddcd8b27cad786fd34bc2cfe02c1b63aa1b8e7b8d72379b5c9375fb61f199.png",
|
||||||
|
"text_url": "https://media.gleasonator.com/2b9ddcd8b27cad786fd34bc2cfe02c1b63aa1b8e7b8d72379b5c9375fb61f199.png",
|
||||||
|
"type": "image",
|
||||||
|
"url": "https://media.gleasonator.com/2b9ddcd8b27cad786fd34bc2cfe02c1b63aa1b8e7b8d72379b5c9375fb61f199.png"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"mentions": [],
|
||||||
|
"muted": false,
|
||||||
|
"pinned": false,
|
||||||
|
"pleroma": {
|
||||||
|
"content": {
|
||||||
|
"text/plain": "I am going to delete this post for testing purposes"
|
||||||
|
},
|
||||||
|
"content_type": "text/markdown",
|
||||||
|
"conversation_id": "AHU2RrUB7BMIqPESpM",
|
||||||
|
"direct_conversation_id": null,
|
||||||
|
"emoji_reactions": [
|
||||||
|
{
|
||||||
|
"count": 1,
|
||||||
|
"me": false,
|
||||||
|
"name": "😭"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"count": 1,
|
||||||
|
"me": false,
|
||||||
|
"name": "❔"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"expires_at": null,
|
||||||
|
"in_reply_to_account_acct": null,
|
||||||
|
"local": true,
|
||||||
|
"parent_visible": false,
|
||||||
|
"pinned_at": null,
|
||||||
|
"quote": null,
|
||||||
|
"quote_url": null,
|
||||||
|
"quote_visible": false,
|
||||||
|
"spoiler_text": {
|
||||||
|
"text/plain": ""
|
||||||
|
},
|
||||||
|
"thread_muted": false
|
||||||
|
},
|
||||||
|
"poll": null,
|
||||||
|
"reblog": null,
|
||||||
|
"reblogged": false,
|
||||||
|
"reblogs_count": 1,
|
||||||
|
"replies_count": 2,
|
||||||
|
"sensitive": false,
|
||||||
|
"spoiler_text": "",
|
||||||
|
"tags": [],
|
||||||
|
"text": "I am going to delete this post for testing purposes",
|
||||||
|
"uri": "https://gleasonator.com/objects/205ec868-d28d-4668-a56a-33321f7e285e",
|
||||||
|
"url": "https://gleasonator.com/notice/AHU2RrX0wdcwzCYjFQ",
|
||||||
|
"visibility": "public"
|
||||||
|
}
|
28
app/soapbox/__mocks__/api.ts
Normal file
|
@ -0,0 +1,28 @@
|
||||||
|
import { jest } from '@jest/globals';
|
||||||
|
import { AxiosInstance } from 'axios';
|
||||||
|
import MockAdapter from 'axios-mock-adapter';
|
||||||
|
|
||||||
|
const api = jest.requireActual('../api') as Record<string, Function>;
|
||||||
|
let mocks: Array<Function> = [];
|
||||||
|
|
||||||
|
export const __stub = (func: Function) => mocks.push(func);
|
||||||
|
export const __clear = (): Function[] => mocks = [];
|
||||||
|
|
||||||
|
const setupMock = (axios: AxiosInstance) => {
|
||||||
|
const mock = new MockAdapter(axios);
|
||||||
|
mocks.map(func => func(mock));
|
||||||
|
};
|
||||||
|
|
||||||
|
export const staticClient = api.staticClient;
|
||||||
|
|
||||||
|
export const baseClient = (...params: any[]) => {
|
||||||
|
const axios = api.baseClient(...params);
|
||||||
|
setupMock(axios);
|
||||||
|
return axios;
|
||||||
|
};
|
||||||
|
|
||||||
|
export default (...params: any[]) => {
|
||||||
|
const axios = api.default(...params);
|
||||||
|
setupMock(axios);
|
||||||
|
return axios;
|
||||||
|
};
|
BIN
app/soapbox/features/birthdays/date_picker.js
Normal file
|
@ -8,16 +8,18 @@ import {
|
||||||
Map as ImmutableMap,
|
Map as ImmutableMap,
|
||||||
List as ImmutableList,
|
List as ImmutableList,
|
||||||
Record as ImmutableRecord,
|
Record as ImmutableRecord,
|
||||||
|
fromJS,
|
||||||
} from 'immutable';
|
} from 'immutable';
|
||||||
|
|
||||||
import emojify from 'soapbox/features/emoji/emoji';
|
import emojify from 'soapbox/features/emoji/emoji';
|
||||||
import { normalizeEmoji } from 'soapbox/normalizers/emoji';
|
import { normalizeEmoji } from 'soapbox/normalizers/emoji';
|
||||||
import { IAccount } from 'soapbox/types';
|
import { IAccount } from 'soapbox/types';
|
||||||
|
import { acctFull } from 'soapbox/utils/accounts';
|
||||||
import { unescapeHTML } from 'soapbox/utils/html';
|
import { unescapeHTML } from 'soapbox/utils/html';
|
||||||
import { mergeDefined, makeEmojiMap } from 'soapbox/utils/normalizers';
|
import { mergeDefined, makeEmojiMap } from 'soapbox/utils/normalizers';
|
||||||
|
|
||||||
// https://docs.joinmastodon.org/entities/account/
|
// https://docs.joinmastodon.org/entities/account/
|
||||||
const AccountRecord = ImmutableRecord({
|
export const AccountRecord = ImmutableRecord({
|
||||||
acct: '',
|
acct: '',
|
||||||
avatar: '',
|
avatar: '',
|
||||||
avatar_static: '',
|
avatar_static: '',
|
||||||
|
@ -44,6 +46,7 @@ const AccountRecord = ImmutableRecord({
|
||||||
uri: '',
|
uri: '',
|
||||||
url: '',
|
url: '',
|
||||||
username: '',
|
username: '',
|
||||||
|
website: '',
|
||||||
verified: false,
|
verified: false,
|
||||||
|
|
||||||
// Internal fields
|
// Internal fields
|
||||||
|
@ -56,7 +59,7 @@ const AccountRecord = ImmutableRecord({
|
||||||
});
|
});
|
||||||
|
|
||||||
// https://docs.joinmastodon.org/entities/field/
|
// https://docs.joinmastodon.org/entities/field/
|
||||||
const FieldRecord = ImmutableRecord({
|
export const FieldRecord = ImmutableRecord({
|
||||||
name: '',
|
name: '',
|
||||||
value: '',
|
value: '',
|
||||||
verified_at: null,
|
verified_at: null,
|
||||||
|
@ -95,6 +98,18 @@ const normalizeAvatar = (account: ImmutableMap<string, any>) => {
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// Add header, if missing
|
||||||
|
const normalizeHeader = (account: ImmutableMap<string, any>) => {
|
||||||
|
const header = account.get('header');
|
||||||
|
const headerStatic = account.get('header_static');
|
||||||
|
const missing = require('images/header-missing.png');
|
||||||
|
|
||||||
|
return account.withMutations(account => {
|
||||||
|
account.set('header', header || headerStatic || missing);
|
||||||
|
account.set('header_static', headerStatic || header || missing);
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
// Normalize custom fields
|
// Normalize custom fields
|
||||||
const normalizeFields = (account: ImmutableMap<string, any>) => {
|
const normalizeFields = (account: ImmutableMap<string, any>) => {
|
||||||
return account.update('fields', ImmutableList(), fields => fields.map(FieldRecord));
|
return account.update('fields', ImmutableList(), fields => fields.map(FieldRecord));
|
||||||
|
@ -132,11 +147,12 @@ const normalizeVerified = (account: ImmutableMap<string, any>) => {
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
// Normalize Fedibird/Truth Social location
|
// Normalize Fedibird/Truth Social/Pleroma location
|
||||||
const normalizeLocation = (account: ImmutableMap<string, any>) => {
|
const normalizeLocation = (account: ImmutableMap<string, any>) => {
|
||||||
return account.update('location', location => {
|
return account.update('location', location => {
|
||||||
return [
|
return [
|
||||||
location,
|
location,
|
||||||
|
account.getIn(['pleroma', 'location']),
|
||||||
account.getIn(['other_settings', 'location']),
|
account.getIn(['other_settings', 'location']),
|
||||||
].find(Boolean);
|
].find(Boolean);
|
||||||
});
|
});
|
||||||
|
@ -180,16 +196,22 @@ const addInternalFields = (account: ImmutableMap<string, any>) => {
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
export const normalizeAccount = (account: ImmutableMap<string, any>): IAccount => {
|
const normalizeFqn = (account: ImmutableMap<string, any>) => {
|
||||||
|
return account.set('fqn', acctFull(account));
|
||||||
|
};
|
||||||
|
|
||||||
|
export const normalizeAccount = (account: Record<string, any>): IAccount => {
|
||||||
return AccountRecord(
|
return AccountRecord(
|
||||||
account.withMutations(account => {
|
ImmutableMap(fromJS(account)).withMutations(account => {
|
||||||
normalizePleromaLegacyFields(account);
|
normalizePleromaLegacyFields(account);
|
||||||
normalizeEmojis(account);
|
normalizeEmojis(account);
|
||||||
normalizeAvatar(account);
|
normalizeAvatar(account);
|
||||||
|
normalizeHeader(account);
|
||||||
normalizeFields(account);
|
normalizeFields(account);
|
||||||
normalizeVerified(account);
|
normalizeVerified(account);
|
||||||
normalizeBirthday(account);
|
normalizeBirthday(account);
|
||||||
normalizeLocation(account);
|
normalizeLocation(account);
|
||||||
|
normalizeFqn(account);
|
||||||
fixUsername(account);
|
fixUsername(account);
|
||||||
fixDisplayName(account);
|
fixDisplayName(account);
|
||||||
addInternalFields(account);
|
addInternalFields(account);
|
||||||
|
|
|
@ -6,12 +6,13 @@
|
||||||
import {
|
import {
|
||||||
Map as ImmutableMap,
|
Map as ImmutableMap,
|
||||||
Record as ImmutableRecord,
|
Record as ImmutableRecord,
|
||||||
|
fromJS,
|
||||||
} from 'immutable';
|
} from 'immutable';
|
||||||
|
|
||||||
import { mergeDefined } from 'soapbox/utils/normalizers';
|
import { mergeDefined } from 'soapbox/utils/normalizers';
|
||||||
|
|
||||||
// https://docs.joinmastodon.org/entities/attachment/
|
// https://docs.joinmastodon.org/entities/attachment/
|
||||||
const AttachmentRecord = ImmutableRecord({
|
export const AttachmentRecord = ImmutableRecord({
|
||||||
blurhash: undefined,
|
blurhash: undefined,
|
||||||
description: '',
|
description: '',
|
||||||
id: '',
|
id: '',
|
||||||
|
@ -29,7 +30,7 @@ const AttachmentRecord = ImmutableRecord({
|
||||||
});
|
});
|
||||||
|
|
||||||
// Ensure attachments have required fields
|
// Ensure attachments have required fields
|
||||||
export const normalizeAttachment = (attachment: ImmutableMap<string, any>) => {
|
const normalizeUrls = (attachment: ImmutableMap<string, any>) => {
|
||||||
const url = [
|
const url = [
|
||||||
attachment.get('url'),
|
attachment.get('url'),
|
||||||
attachment.get('preview_url'),
|
attachment.get('preview_url'),
|
||||||
|
@ -41,5 +42,11 @@ export const normalizeAttachment = (attachment: ImmutableMap<string, any>) => {
|
||||||
preview_url: url,
|
preview_url: url,
|
||||||
});
|
});
|
||||||
|
|
||||||
return AttachmentRecord(attachment.mergeWith(mergeDefined, base));
|
return attachment.mergeWith(mergeDefined, base);
|
||||||
|
};
|
||||||
|
|
||||||
|
export const normalizeAttachment = (attachment: Record<string, any>) => {
|
||||||
|
return AttachmentRecord(
|
||||||
|
normalizeUrls(ImmutableMap(fromJS(attachment))),
|
||||||
|
);
|
||||||
};
|
};
|
||||||
|
|
|
@ -3,10 +3,10 @@
|
||||||
* Converts API cards into our internal format.
|
* Converts API cards into our internal format.
|
||||||
* @see {@link https://docs.joinmastodon.org/entities/card/}
|
* @see {@link https://docs.joinmastodon.org/entities/card/}
|
||||||
*/
|
*/
|
||||||
import { Record as ImmutableRecord, Map as ImmutableMap } from 'immutable';
|
import { Record as ImmutableRecord, Map as ImmutableMap, fromJS } from 'immutable';
|
||||||
|
|
||||||
// https://docs.joinmastodon.org/entities/card/
|
// https://docs.joinmastodon.org/entities/card/
|
||||||
const CardRecord = ImmutableRecord({
|
export const CardRecord = ImmutableRecord({
|
||||||
author_name: '',
|
author_name: '',
|
||||||
author_url: '',
|
author_url: '',
|
||||||
blurhash: null,
|
blurhash: null,
|
||||||
|
@ -23,6 +23,8 @@ const CardRecord = ImmutableRecord({
|
||||||
width: 0,
|
width: 0,
|
||||||
});
|
});
|
||||||
|
|
||||||
export const normalizeCard = (card: ImmutableMap<string, any>) => {
|
export const normalizeCard = (card: Record<string, any>) => {
|
||||||
return CardRecord(card);
|
return CardRecord(
|
||||||
|
ImmutableMap(fromJS(card)),
|
||||||
|
);
|
||||||
};
|
};
|
||||||
|
|
|
@ -3,10 +3,10 @@
|
||||||
* Converts API emojis into our internal format.
|
* Converts API emojis into our internal format.
|
||||||
* @see {@link https://docs.joinmastodon.org/entities/emoji/}
|
* @see {@link https://docs.joinmastodon.org/entities/emoji/}
|
||||||
*/
|
*/
|
||||||
import { Record as ImmutableRecord, Map as ImmutableMap } from 'immutable';
|
import { Record as ImmutableRecord, Map as ImmutableMap, fromJS } from 'immutable';
|
||||||
|
|
||||||
// https://docs.joinmastodon.org/entities/emoji/
|
// https://docs.joinmastodon.org/entities/emoji/
|
||||||
const EmojiRecord = ImmutableRecord({
|
export const EmojiRecord = ImmutableRecord({
|
||||||
category: '',
|
category: '',
|
||||||
shortcode: '',
|
shortcode: '',
|
||||||
static_url: '',
|
static_url: '',
|
||||||
|
@ -14,6 +14,8 @@ const EmojiRecord = ImmutableRecord({
|
||||||
visible_in_picker: true,
|
visible_in_picker: true,
|
||||||
});
|
});
|
||||||
|
|
||||||
export const normalizeEmoji = (emoji: ImmutableMap<string, any>) => {
|
export const normalizeEmoji = (emoji: Record<string, any>) => {
|
||||||
return EmojiRecord(emoji);
|
return EmojiRecord(
|
||||||
|
ImmutableMap(fromJS(emoji)),
|
||||||
|
);
|
||||||
};
|
};
|
||||||
|
|
9
app/soapbox/normalizers/index.ts
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
export { AccountRecord, FieldRecord, normalizeAccount } from './account';
|
||||||
|
export { AttachmentRecord, normalizeAttachment } from './attachment';
|
||||||
|
export { CardRecord, normalizeCard } from './card';
|
||||||
|
export { EmojiRecord, normalizeEmoji } from './emoji';
|
||||||
|
export { InstanceRecord, normalizeInstance } from './instance';
|
||||||
|
export { MentionRecord, normalizeMention } from './mention';
|
||||||
|
export { NotificationRecord, normalizeNotification } from './notification';
|
||||||
|
export { PollRecord, PollOptionRecord, normalizePoll } from './poll';
|
||||||
|
export { StatusRecord, normalizeStatus } from './status';
|
|
@ -7,6 +7,7 @@ import {
|
||||||
Map as ImmutableMap,
|
Map as ImmutableMap,
|
||||||
List as ImmutableList,
|
List as ImmutableList,
|
||||||
Record as ImmutableRecord,
|
Record as ImmutableRecord,
|
||||||
|
fromJS,
|
||||||
} from 'immutable';
|
} from 'immutable';
|
||||||
|
|
||||||
import { parseVersion, PLEROMA } from 'soapbox/utils/features';
|
import { parseVersion, PLEROMA } from 'soapbox/utils/features';
|
||||||
|
@ -15,7 +16,7 @@ import { isNumber } from 'soapbox/utils/numbers';
|
||||||
|
|
||||||
// Use Mastodon defaults
|
// Use Mastodon defaults
|
||||||
// https://docs.joinmastodon.org/entities/instance/
|
// https://docs.joinmastodon.org/entities/instance/
|
||||||
const InstanceRecord = ImmutableRecord({
|
export const InstanceRecord = ImmutableRecord({
|
||||||
approval_required: false,
|
approval_required: false,
|
||||||
contact_account: ImmutableMap(),
|
contact_account: ImmutableMap(),
|
||||||
configuration: ImmutableMap({
|
configuration: ImmutableMap({
|
||||||
|
@ -83,13 +84,25 @@ const pleromaToMastodonConfig = (instance: ImmutableMap<string, any>) => {
|
||||||
// Get the software's default attachment limit
|
// Get the software's default attachment limit
|
||||||
const getAttachmentLimit = (software: string) => software === PLEROMA ? Infinity : 4;
|
const getAttachmentLimit = (software: string) => software === PLEROMA ? Infinity : 4;
|
||||||
|
|
||||||
// Normalize instance (Pleroma, Mastodon, etc.) to Mastodon's format
|
// Normalize version
|
||||||
export const normalizeInstance = (instance: ImmutableMap<string, any>) => {
|
const normalizeVersion = (instance: ImmutableMap<string, any>) => {
|
||||||
const { software } = parseVersion(instance.get('version'));
|
return instance.update('version', '0.0.0', version => {
|
||||||
const mastodonConfig = pleromaToMastodonConfig(instance);
|
// Handle Mastodon release candidates
|
||||||
|
if (new RegExp(/[0-9\.]+rc[0-9]+/g).test(version)) {
|
||||||
|
return version.split('rc').join('-rc');
|
||||||
|
} else {
|
||||||
|
return version;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
// Normalize instance (Pleroma, Mastodon, etc.) to Mastodon's format
|
||||||
|
export const normalizeInstance = (instance: Record<string, any>) => {
|
||||||
return InstanceRecord(
|
return InstanceRecord(
|
||||||
instance.withMutations(instance => {
|
ImmutableMap(fromJS(instance)).withMutations((instance: ImmutableMap<string, any>) => {
|
||||||
|
const { software } = parseVersion(instance.get('version'));
|
||||||
|
const mastodonConfig = pleromaToMastodonConfig(instance);
|
||||||
|
|
||||||
// Merge configuration
|
// Merge configuration
|
||||||
instance.update('configuration', ImmutableMap(), configuration => (
|
instance.update('configuration', ImmutableMap(), configuration => (
|
||||||
configuration.mergeDeepWith(mergeDefined, mastodonConfig)
|
configuration.mergeDeepWith(mergeDefined, mastodonConfig)
|
||||||
|
@ -100,6 +113,9 @@ export const normalizeInstance = (instance: ImmutableMap<string, any>) => {
|
||||||
return isNumber(value) ? value : getAttachmentLimit(software);
|
return isNumber(value) ? value : getAttachmentLimit(software);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// Normalize version
|
||||||
|
normalizeVersion(instance);
|
||||||
|
|
||||||
// Merge defaults
|
// Merge defaults
|
||||||
instance.mergeDeepWith(mergeDefined, InstanceRecord());
|
instance.mergeDeepWith(mergeDefined, InstanceRecord());
|
||||||
}),
|
}),
|
||||||
|
|
|
@ -3,22 +3,19 @@
|
||||||
* Converts API mentions into our internal format.
|
* Converts API mentions into our internal format.
|
||||||
* @see {@link https://docs.joinmastodon.org/entities/mention/}
|
* @see {@link https://docs.joinmastodon.org/entities/mention/}
|
||||||
*/
|
*/
|
||||||
import {
|
import { Record as ImmutableRecord } from 'immutable';
|
||||||
Map as ImmutableMap,
|
|
||||||
Record as ImmutableRecord,
|
|
||||||
} from 'immutable';
|
|
||||||
|
|
||||||
import { normalizeAccount } from 'soapbox/normalizers/account';
|
import { normalizeAccount } from 'soapbox/normalizers/account';
|
||||||
|
|
||||||
// https://docs.joinmastodon.org/entities/mention/
|
// https://docs.joinmastodon.org/entities/mention/
|
||||||
const MentionRecord = ImmutableRecord({
|
export const MentionRecord = ImmutableRecord({
|
||||||
id: '',
|
id: '',
|
||||||
acct: '',
|
acct: '',
|
||||||
username: '',
|
username: '',
|
||||||
url: '',
|
url: '',
|
||||||
});
|
});
|
||||||
|
|
||||||
export const normalizeMention = (mention: ImmutableMap<string, any>) => {
|
export const normalizeMention = (mention: Record<string, any>) => {
|
||||||
// Simply normalize it as an account then cast it as a mention ¯\_(ツ)_/¯
|
// Simply normalize it as an account then cast it as a mention ¯\_(ツ)_/¯
|
||||||
return MentionRecord(normalizeAccount(mention));
|
return MentionRecord(normalizeAccount(mention));
|
||||||
};
|
};
|
||||||
|
|
|
@ -6,10 +6,11 @@
|
||||||
import {
|
import {
|
||||||
Map as ImmutableMap,
|
Map as ImmutableMap,
|
||||||
Record as ImmutableRecord,
|
Record as ImmutableRecord,
|
||||||
|
fromJS,
|
||||||
} from 'immutable';
|
} from 'immutable';
|
||||||
|
|
||||||
// https://docs.joinmastodon.org/entities/notification/
|
// https://docs.joinmastodon.org/entities/notification/
|
||||||
const NotificationRecord = ImmutableRecord({
|
export const NotificationRecord = ImmutableRecord({
|
||||||
account: null,
|
account: null,
|
||||||
chat_message: null, // pleroma:chat_mention
|
chat_message: null, // pleroma:chat_mention
|
||||||
created_at: new Date(),
|
created_at: new Date(),
|
||||||
|
@ -20,6 +21,8 @@ const NotificationRecord = ImmutableRecord({
|
||||||
type: '',
|
type: '',
|
||||||
});
|
});
|
||||||
|
|
||||||
export const normalizeNotification = (notification: ImmutableMap<string, any>) => {
|
export const normalizeNotification = (notification: Record<string, any>) => {
|
||||||
return NotificationRecord(notification);
|
return NotificationRecord(
|
||||||
|
ImmutableMap(fromJS(notification)),
|
||||||
|
);
|
||||||
};
|
};
|
||||||
|
|
|
@ -8,6 +8,7 @@ import {
|
||||||
Map as ImmutableMap,
|
Map as ImmutableMap,
|
||||||
List as ImmutableList,
|
List as ImmutableList,
|
||||||
Record as ImmutableRecord,
|
Record as ImmutableRecord,
|
||||||
|
fromJS,
|
||||||
} from 'immutable';
|
} from 'immutable';
|
||||||
|
|
||||||
import emojify from 'soapbox/features/emoji/emoji';
|
import emojify from 'soapbox/features/emoji/emoji';
|
||||||
|
@ -15,7 +16,7 @@ import { normalizeEmoji } from 'soapbox/normalizers/emoji';
|
||||||
import { makeEmojiMap } from 'soapbox/utils/normalizers';
|
import { makeEmojiMap } from 'soapbox/utils/normalizers';
|
||||||
|
|
||||||
// https://docs.joinmastodon.org/entities/poll/
|
// https://docs.joinmastodon.org/entities/poll/
|
||||||
const PollRecord = ImmutableRecord({
|
export const PollRecord = ImmutableRecord({
|
||||||
emojis: ImmutableList(),
|
emojis: ImmutableList(),
|
||||||
expired: false,
|
expired: false,
|
||||||
expires_at: new Date(),
|
expires_at: new Date(),
|
||||||
|
@ -29,7 +30,7 @@ const PollRecord = ImmutableRecord({
|
||||||
});
|
});
|
||||||
|
|
||||||
// Sub-entity of Poll
|
// Sub-entity of Poll
|
||||||
const PollOptionRecord = ImmutableRecord({
|
export const PollOptionRecord = ImmutableRecord({
|
||||||
title: '',
|
title: '',
|
||||||
votes_count: 0,
|
votes_count: 0,
|
||||||
|
|
||||||
|
@ -76,9 +77,9 @@ const normalizePollVoted = (poll: ImmutableMap<string, any>) => {
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
export const normalizePoll = (poll: ImmutableMap<string, any>) => {
|
export const normalizePoll = (poll: Record<string, any>) => {
|
||||||
return PollRecord(
|
return PollRecord(
|
||||||
poll.withMutations((poll: ImmutableMap<string, any>) => {
|
ImmutableMap(fromJS(poll)).withMutations((poll: ImmutableMap<string, any>) => {
|
||||||
normalizeEmojis(poll);
|
normalizeEmojis(poll);
|
||||||
normalizePollOptions(poll);
|
normalizePollOptions(poll);
|
||||||
normalizePollOwnVotes(poll);
|
normalizePollOwnVotes(poll);
|
||||||
|
|
|
@ -7,6 +7,7 @@ import {
|
||||||
Map as ImmutableMap,
|
Map as ImmutableMap,
|
||||||
List as ImmutableList,
|
List as ImmutableList,
|
||||||
Record as ImmutableRecord,
|
Record as ImmutableRecord,
|
||||||
|
fromJS,
|
||||||
} from 'immutable';
|
} from 'immutable';
|
||||||
|
|
||||||
import { normalizeAttachment } from 'soapbox/normalizers/attachment';
|
import { normalizeAttachment } from 'soapbox/normalizers/attachment';
|
||||||
|
@ -17,7 +18,7 @@ import { normalizePoll } from 'soapbox/normalizers/poll';
|
||||||
import { IStatus } from 'soapbox/types';
|
import { IStatus } from 'soapbox/types';
|
||||||
|
|
||||||
// https://docs.joinmastodon.org/entities/status/
|
// https://docs.joinmastodon.org/entities/status/
|
||||||
const StatusRecord = ImmutableRecord({
|
export const StatusRecord = ImmutableRecord({
|
||||||
account: null,
|
account: null,
|
||||||
application: null,
|
application: null,
|
||||||
bookmarked: false,
|
bookmarked: false,
|
||||||
|
@ -135,9 +136,9 @@ const fixQuote = (status: ImmutableMap<string, any>) => {
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
export const normalizeStatus = (status: ImmutableMap<string, any>): IStatus => {
|
export const normalizeStatus = (status: Record<string, any>): IStatus => {
|
||||||
return StatusRecord(
|
return StatusRecord(
|
||||||
status.withMutations(status => {
|
ImmutableMap(fromJS(status)).withMutations(status => {
|
||||||
normalizeAttachments(status);
|
normalizeAttachments(status);
|
||||||
normalizeMentions(status);
|
normalizeMentions(status);
|
||||||
normalizeEmojis(status);
|
normalizeEmojis(status);
|
||||||
|
|
|
@ -116,7 +116,7 @@ const reducers = {
|
||||||
};
|
};
|
||||||
|
|
||||||
// Build a default state from all reducers: it has the key and `undefined`
|
// Build a default state from all reducers: it has the key and `undefined`
|
||||||
const StateRecord = ImmutableRecord(
|
export const StateRecord = ImmutableRecord(
|
||||||
Object.keys(reducers).reduce((params: Record<string, any>, reducer) => {
|
Object.keys(reducers).reduce((params: Record<string, any>, reducer) => {
|
||||||
params[reducer] = undefined;
|
params[reducer] = undefined;
|
||||||
return params;
|
return params;
|
||||||
|
|
BIN
app/soapbox/utils/__tests__/numbers-test.js
Normal file
BIN
app/soapbox/utils/__tests__/status-test.js
Normal file
|
@ -10,14 +10,14 @@ const getDomainFromURL = (account: ImmutableMap<string, any>): string => {
|
||||||
};
|
};
|
||||||
|
|
||||||
export const getDomain = (account: ImmutableMap<string, any>): string => {
|
export const getDomain = (account: ImmutableMap<string, any>): string => {
|
||||||
const domain = account.get('acct').split('@')[1];
|
const domain = account.get('acct', '').split('@')[1];
|
||||||
return domain ? domain : getDomainFromURL(account);
|
return domain ? domain : getDomainFromURL(account);
|
||||||
};
|
};
|
||||||
|
|
||||||
export const guessFqn = (account: ImmutableMap<string, any>): string => {
|
export const guessFqn = (account: ImmutableMap<string, any>): string => {
|
||||||
const [user, domain] = account.get('acct').split('@');
|
const [user, domain] = account.get('acct', '').split('@');
|
||||||
if (!domain) return [user, getDomainFromURL(account)].join('@');
|
if (!domain) return [user, getDomainFromURL(account)].join('@');
|
||||||
return account.get('acct');
|
return account.get('acct', '');
|
||||||
};
|
};
|
||||||
|
|
||||||
export const getBaseURL = (account: ImmutableMap<string, any>): string => {
|
export const getBaseURL = (account: ImmutableMap<string, any>): string => {
|
||||||
|
@ -31,7 +31,7 @@ export const getBaseURL = (account: ImmutableMap<string, any>): string => {
|
||||||
|
|
||||||
// user@domain even for local users
|
// user@domain even for local users
|
||||||
export const acctFull = (account: ImmutableMap<string, any>): string => (
|
export const acctFull = (account: ImmutableMap<string, any>): string => (
|
||||||
account.get('fqn') || guessFqn(account)
|
account.get('fqn') || guessFqn(account) || ''
|
||||||
);
|
);
|
||||||
|
|
||||||
export const getAcct = (account: ImmutableMap<string, any>, displayFqn: boolean): string => (
|
export const getAcct = (account: ImmutableMap<string, any>, displayFqn: boolean): string => (
|
||||||
|
|
|
@ -487,6 +487,7 @@
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
text-overflow: ellipsis;
|
text-overflow: ellipsis;
|
||||||
white-space: nowrap;
|
white-space: nowrap;
|
||||||
|
max-height: 19px;
|
||||||
|
|
||||||
a {
|
a {
|
||||||
color: var(--highlight-text-color);
|
color: var(--highlight-text-color);
|
||||||
|
|
|
@ -158,7 +158,6 @@
|
||||||
"substring-trie": "^1.0.2",
|
"substring-trie": "^1.0.2",
|
||||||
"terser-webpack-plugin": "^5.2.3",
|
"terser-webpack-plugin": "^5.2.3",
|
||||||
"tiny-queue": "^0.2.1",
|
"tiny-queue": "^0.2.1",
|
||||||
"ts-jest": "^27.0.5",
|
|
||||||
"ts-loader": "^9.2.6",
|
"ts-loader": "^9.2.6",
|
||||||
"tslib": "^2.3.1",
|
"tslib": "^2.3.1",
|
||||||
"twemoji": "https://github.com/twitter/twemoji#v13.0.2",
|
"twemoji": "https://github.com/twitter/twemoji#v13.0.2",
|
||||||
|
@ -173,6 +172,9 @@
|
||||||
"wicg-inert": "^3.1.1"
|
"wicg-inert": "^3.1.1"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
|
"@jest/globals": "^27.5.1",
|
||||||
|
"@typescript-eslint/eslint-plugin": "^5.15.0",
|
||||||
|
"@typescript-eslint/parser": "^5.15.0",
|
||||||
"axios-mock-adapter": "^1.18.1",
|
"axios-mock-adapter": "^1.18.1",
|
||||||
"babel-eslint": "^10.1.0",
|
"babel-eslint": "^10.1.0",
|
||||||
"babel-jest": "^27.1.0",
|
"babel-jest": "^27.1.0",
|
||||||
|
@ -194,6 +196,7 @@
|
||||||
"stylelint": "^13.7.2",
|
"stylelint": "^13.7.2",
|
||||||
"stylelint-config-standard": "^22.0.0",
|
"stylelint-config-standard": "^22.0.0",
|
||||||
"stylelint-scss": "^3.18.0",
|
"stylelint-scss": "^3.18.0",
|
||||||
|
"ts-jest": "^27.0.5",
|
||||||
"webpack-dev-server": "^4.1.0",
|
"webpack-dev-server": "^4.1.0",
|
||||||
"yargs": "^16.0.3"
|
"yargs": "^16.0.3"
|
||||||
}
|
}
|
||||||
|
|
Before Width: | Height: | Size: 116 KiB After Width: | Height: | Size: 160 KiB |
|
@ -12,5 +12,5 @@
|
||||||
"allowSyntheticDefaultImports": true,
|
"allowSyntheticDefaultImports": true,
|
||||||
"typeRoots": [ "./types", "./node_modules/@types"]
|
"typeRoots": [ "./types", "./node_modules/@types"]
|
||||||
},
|
},
|
||||||
"exclude": ["node_modules", "types"]
|
"exclude": ["node_modules", "types", "**/*.test.*", "**/__mocks__/*", "**/__tests__/*"]
|
||||||
}
|
}
|
||||||
|
|
296
yarn.lock
|
@ -1453,6 +1453,16 @@
|
||||||
"@types/node" "*"
|
"@types/node" "*"
|
||||||
jest-mock "^27.1.1"
|
jest-mock "^27.1.1"
|
||||||
|
|
||||||
|
"@jest/environment@^27.5.1":
|
||||||
|
version "27.5.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-27.5.1.tgz#d7425820511fe7158abbecc010140c3fd3be9c74"
|
||||||
|
integrity sha512-/WQjhPJe3/ghaol/4Bq480JKXV/Rfw8nQdN7f41fM8VDHLcxKXou6QyXAh3EFr9/bVG3x74z1NWDkP87EiY8gA==
|
||||||
|
dependencies:
|
||||||
|
"@jest/fake-timers" "^27.5.1"
|
||||||
|
"@jest/types" "^27.5.1"
|
||||||
|
"@types/node" "*"
|
||||||
|
jest-mock "^27.5.1"
|
||||||
|
|
||||||
"@jest/fake-timers@^27.2.0":
|
"@jest/fake-timers@^27.2.0":
|
||||||
version "27.2.0"
|
version "27.2.0"
|
||||||
resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-27.2.0.tgz#560841bc21ae7fbeff0cbff8de8f5cf43ad3561d"
|
resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-27.2.0.tgz#560841bc21ae7fbeff0cbff8de8f5cf43ad3561d"
|
||||||
|
@ -1465,6 +1475,18 @@
|
||||||
jest-mock "^27.1.1"
|
jest-mock "^27.1.1"
|
||||||
jest-util "^27.2.0"
|
jest-util "^27.2.0"
|
||||||
|
|
||||||
|
"@jest/fake-timers@^27.5.1":
|
||||||
|
version "27.5.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-27.5.1.tgz#76979745ce0579c8a94a4678af7a748eda8ada74"
|
||||||
|
integrity sha512-/aPowoolwa07k7/oM3aASneNeBGCmGQsc3ugN4u6s4C/+s5M64MFo/+djTdiwcbQlRfFElGuDXWzaWj6QgKObQ==
|
||||||
|
dependencies:
|
||||||
|
"@jest/types" "^27.5.1"
|
||||||
|
"@sinonjs/fake-timers" "^8.0.1"
|
||||||
|
"@types/node" "*"
|
||||||
|
jest-message-util "^27.5.1"
|
||||||
|
jest-mock "^27.5.1"
|
||||||
|
jest-util "^27.5.1"
|
||||||
|
|
||||||
"@jest/globals@^27.2.0":
|
"@jest/globals@^27.2.0":
|
||||||
version "27.2.0"
|
version "27.2.0"
|
||||||
resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-27.2.0.tgz#4d7085f51df5ac70c8240eb3501289676503933d"
|
resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-27.2.0.tgz#4d7085f51df5ac70c8240eb3501289676503933d"
|
||||||
|
@ -1474,6 +1496,15 @@
|
||||||
"@jest/types" "^27.1.1"
|
"@jest/types" "^27.1.1"
|
||||||
expect "^27.2.0"
|
expect "^27.2.0"
|
||||||
|
|
||||||
|
"@jest/globals@^27.5.1":
|
||||||
|
version "27.5.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-27.5.1.tgz#7ac06ce57ab966566c7963431cef458434601b2b"
|
||||||
|
integrity sha512-ZEJNB41OBQQgGzgyInAv0UUfDDj3upmHydjieSxFvTRuZElrx7tXg/uVQ5hYVEwiXs3+aMsAeEc9X7xiSKCm4Q==
|
||||||
|
dependencies:
|
||||||
|
"@jest/environment" "^27.5.1"
|
||||||
|
"@jest/types" "^27.5.1"
|
||||||
|
expect "^27.5.1"
|
||||||
|
|
||||||
"@jest/reporters@^27.2.0":
|
"@jest/reporters@^27.2.0":
|
||||||
version "27.2.0"
|
version "27.2.0"
|
||||||
resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-27.2.0.tgz#629886d9a42218e504a424889a293abb27919e25"
|
resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-27.2.0.tgz#629886d9a42218e504a424889a293abb27919e25"
|
||||||
|
@ -1565,6 +1596,17 @@
|
||||||
"@types/yargs" "^16.0.0"
|
"@types/yargs" "^16.0.0"
|
||||||
chalk "^4.0.0"
|
chalk "^4.0.0"
|
||||||
|
|
||||||
|
"@jest/types@^27.5.1":
|
||||||
|
version "27.5.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/@jest/types/-/types-27.5.1.tgz#3c79ec4a8ba61c170bf937bcf9e98a9df175ec80"
|
||||||
|
integrity sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==
|
||||||
|
dependencies:
|
||||||
|
"@types/istanbul-lib-coverage" "^2.0.0"
|
||||||
|
"@types/istanbul-reports" "^3.0.0"
|
||||||
|
"@types/node" "*"
|
||||||
|
"@types/yargs" "^16.0.0"
|
||||||
|
chalk "^4.0.0"
|
||||||
|
|
||||||
"@lcdp/offline-plugin@^5.1.0":
|
"@lcdp/offline-plugin@^5.1.0":
|
||||||
version "5.1.0"
|
version "5.1.0"
|
||||||
resolved "https://registry.yarnpkg.com/@lcdp/offline-plugin/-/offline-plugin-5.1.0.tgz#826f3e10d618711bd002afd674edb36dc1d9a792"
|
resolved "https://registry.yarnpkg.com/@lcdp/offline-plugin/-/offline-plugin-5.1.0.tgz#826f3e10d618711bd002afd674edb36dc1d9a792"
|
||||||
|
@ -1703,6 +1745,13 @@
|
||||||
dependencies:
|
dependencies:
|
||||||
"@sinonjs/commons" "^1.7.0"
|
"@sinonjs/commons" "^1.7.0"
|
||||||
|
|
||||||
|
"@sinonjs/fake-timers@^8.0.1":
|
||||||
|
version "8.1.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-8.1.0.tgz#3fdc2b6cb58935b21bfb8d1625eb1300484316e7"
|
||||||
|
integrity sha512-OAPJUAtgeINhh/TAlUID4QTs53Njm7xzddaVlEs/SXwgtiD1tW22zAB/W1wdqfrpmikgaWQ9Fw6Ws+hsiRm5Vg==
|
||||||
|
dependencies:
|
||||||
|
"@sinonjs/commons" "^1.7.0"
|
||||||
|
|
||||||
"@stylelint/postcss-css-in-js@^0.37.2":
|
"@stylelint/postcss-css-in-js@^0.37.2":
|
||||||
version "0.37.2"
|
version "0.37.2"
|
||||||
resolved "https://registry.yarnpkg.com/@stylelint/postcss-css-in-js/-/postcss-css-in-js-0.37.2.tgz#7e5a84ad181f4234a2480803422a47b8749af3d2"
|
resolved "https://registry.yarnpkg.com/@stylelint/postcss-css-in-js/-/postcss-css-in-js-0.37.2.tgz#7e5a84ad181f4234a2480803422a47b8749af3d2"
|
||||||
|
@ -1852,6 +1901,11 @@
|
||||||
resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.9.tgz#97edc9037ea0c38585320b28964dde3b39e4660d"
|
resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.9.tgz#97edc9037ea0c38585320b28964dde3b39e4660d"
|
||||||
integrity sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ==
|
integrity sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ==
|
||||||
|
|
||||||
|
"@types/json-schema@^7.0.9":
|
||||||
|
version "7.0.10"
|
||||||
|
resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.10.tgz#9b05b7896166cd00e9cbd59864853abf65d9ac23"
|
||||||
|
integrity sha512-BLO9bBq59vW3fxCpD4o0N4U+DXsvwvIcl+jofw0frQo/GrBFC+/jRZj1E7kgp6dvTyNmA4y6JCV5Id/r3mNP5A==
|
||||||
|
|
||||||
"@types/json5@^0.0.29":
|
"@types/json5@^0.0.29":
|
||||||
version "0.0.29"
|
version "0.0.29"
|
||||||
resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee"
|
resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee"
|
||||||
|
@ -1962,6 +2016,86 @@
|
||||||
dependencies:
|
dependencies:
|
||||||
"@types/yargs-parser" "*"
|
"@types/yargs-parser" "*"
|
||||||
|
|
||||||
|
"@typescript-eslint/eslint-plugin@^5.15.0":
|
||||||
|
version "5.15.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.15.0.tgz#c28ef7f2e688066db0b6a9d95fb74185c114fb9a"
|
||||||
|
integrity sha512-u6Db5JfF0Esn3tiAKELvoU5TpXVSkOpZ78cEGn/wXtT2RVqs2vkt4ge6N8cRCyw7YVKhmmLDbwI2pg92mlv7cA==
|
||||||
|
dependencies:
|
||||||
|
"@typescript-eslint/scope-manager" "5.15.0"
|
||||||
|
"@typescript-eslint/type-utils" "5.15.0"
|
||||||
|
"@typescript-eslint/utils" "5.15.0"
|
||||||
|
debug "^4.3.2"
|
||||||
|
functional-red-black-tree "^1.0.1"
|
||||||
|
ignore "^5.1.8"
|
||||||
|
regexpp "^3.2.0"
|
||||||
|
semver "^7.3.5"
|
||||||
|
tsutils "^3.21.0"
|
||||||
|
|
||||||
|
"@typescript-eslint/parser@^5.15.0":
|
||||||
|
version "5.15.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.15.0.tgz#95f603f8fe6eca7952a99bfeef9b85992972e728"
|
||||||
|
integrity sha512-NGAYP/+RDM2sVfmKiKOCgJYPstAO40vPAgACoWPO/+yoYKSgAXIFaBKsV8P0Cc7fwKgvj27SjRNX4L7f4/jCKQ==
|
||||||
|
dependencies:
|
||||||
|
"@typescript-eslint/scope-manager" "5.15.0"
|
||||||
|
"@typescript-eslint/types" "5.15.0"
|
||||||
|
"@typescript-eslint/typescript-estree" "5.15.0"
|
||||||
|
debug "^4.3.2"
|
||||||
|
|
||||||
|
"@typescript-eslint/scope-manager@5.15.0":
|
||||||
|
version "5.15.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.15.0.tgz#d97afab5e0abf4018d1289bd711be21676cdd0ee"
|
||||||
|
integrity sha512-EFiZcSKrHh4kWk0pZaa+YNJosvKE50EnmN4IfgjkA3bTHElPtYcd2U37QQkNTqwMCS7LXeDeZzEqnsOH8chjSg==
|
||||||
|
dependencies:
|
||||||
|
"@typescript-eslint/types" "5.15.0"
|
||||||
|
"@typescript-eslint/visitor-keys" "5.15.0"
|
||||||
|
|
||||||
|
"@typescript-eslint/type-utils@5.15.0":
|
||||||
|
version "5.15.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.15.0.tgz#d2c02eb2bdf54d0a645ba3a173ceda78346cf248"
|
||||||
|
integrity sha512-KGeDoEQ7gHieLydujGEFLyLofipe9PIzfvA/41urz4hv+xVxPEbmMQonKSynZ0Ks2xDhJQ4VYjB3DnRiywvKDA==
|
||||||
|
dependencies:
|
||||||
|
"@typescript-eslint/utils" "5.15.0"
|
||||||
|
debug "^4.3.2"
|
||||||
|
tsutils "^3.21.0"
|
||||||
|
|
||||||
|
"@typescript-eslint/types@5.15.0":
|
||||||
|
version "5.15.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.15.0.tgz#c7bdd103843b1abae97b5518219d3e2a0d79a501"
|
||||||
|
integrity sha512-yEiTN4MDy23vvsIksrShjNwQl2vl6kJeG9YkVJXjXZnkJElzVK8nfPsWKYxcsGWG8GhurYXP4/KGj3aZAxbeOA==
|
||||||
|
|
||||||
|
"@typescript-eslint/typescript-estree@5.15.0":
|
||||||
|
version "5.15.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.15.0.tgz#81513a742a9c657587ad1ddbca88e76c6efb0aac"
|
||||||
|
integrity sha512-Hb0e3dGc35b75xLzixM3cSbG1sSbrTBQDfIScqdyvrfJZVEi4XWAT+UL/HMxEdrJNB8Yk28SKxPLtAhfCbBInA==
|
||||||
|
dependencies:
|
||||||
|
"@typescript-eslint/types" "5.15.0"
|
||||||
|
"@typescript-eslint/visitor-keys" "5.15.0"
|
||||||
|
debug "^4.3.2"
|
||||||
|
globby "^11.0.4"
|
||||||
|
is-glob "^4.0.3"
|
||||||
|
semver "^7.3.5"
|
||||||
|
tsutils "^3.21.0"
|
||||||
|
|
||||||
|
"@typescript-eslint/utils@5.15.0":
|
||||||
|
version "5.15.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.15.0.tgz#468510a0974d3ced8342f37e6c662778c277f136"
|
||||||
|
integrity sha512-081rWu2IPKOgTOhHUk/QfxuFog8m4wxW43sXNOMSCdh578tGJ1PAaWPsj42LOa7pguh173tNlMigsbrHvh/mtA==
|
||||||
|
dependencies:
|
||||||
|
"@types/json-schema" "^7.0.9"
|
||||||
|
"@typescript-eslint/scope-manager" "5.15.0"
|
||||||
|
"@typescript-eslint/types" "5.15.0"
|
||||||
|
"@typescript-eslint/typescript-estree" "5.15.0"
|
||||||
|
eslint-scope "^5.1.1"
|
||||||
|
eslint-utils "^3.0.0"
|
||||||
|
|
||||||
|
"@typescript-eslint/visitor-keys@5.15.0":
|
||||||
|
version "5.15.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.15.0.tgz#5669739fbf516df060f978be6a6dce75855a8027"
|
||||||
|
integrity sha512-+vX5FKtgvyHbmIJdxMJ2jKm9z2BIlXJiuewI8dsDYMp5LzPUcuTT78Ya5iwvQg3VqSVdmxyM8Anj1Jeq7733ZQ==
|
||||||
|
dependencies:
|
||||||
|
"@typescript-eslint/types" "5.15.0"
|
||||||
|
eslint-visitor-keys "^3.0.0"
|
||||||
|
|
||||||
"@webassemblyjs/ast@1.11.1":
|
"@webassemblyjs/ast@1.11.1":
|
||||||
version "1.11.1"
|
version "1.11.1"
|
||||||
resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.11.1.tgz#2bfd767eae1a6996f432ff7e8d7fc75679c0b6a7"
|
resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.11.1.tgz#2bfd767eae1a6996f432ff7e8d7fc75679c0b6a7"
|
||||||
|
@ -2243,7 +2377,7 @@ ansi-regex@^2.0.0:
|
||||||
resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df"
|
resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df"
|
||||||
integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8=
|
integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8=
|
||||||
|
|
||||||
ansi-regex@^5.0.0:
|
ansi-regex@^5.0.0, ansi-regex@^5.0.1:
|
||||||
version "5.0.1"
|
version "5.0.1"
|
||||||
resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304"
|
resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304"
|
||||||
integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==
|
integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==
|
||||||
|
@ -2866,9 +3000,9 @@ caniuse-api@^3.0.0:
|
||||||
lodash.uniq "^4.5.0"
|
lodash.uniq "^4.5.0"
|
||||||
|
|
||||||
caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001109, caniuse-lite@^1.0.30001252, caniuse-lite@^1.0.30001254:
|
caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001109, caniuse-lite@^1.0.30001252, caniuse-lite@^1.0.30001254:
|
||||||
version "1.0.30001257"
|
version "1.0.30001317"
|
||||||
resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001257.tgz#150aaf649a48bee531104cfeda57f92ce587f6e5"
|
resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001317.tgz"
|
||||||
integrity sha512-JN49KplOgHSXpIsVSF+LUyhD8PUp6xPpAXeRrrcBh4KBeP7W864jHn6RvzJgDlrReyeVjMFJL3PLpPvKIxlIHA==
|
integrity sha512-xIZLh8gBm4dqNX0gkzrBeyI86J2eCjWzYAs40q88smG844YIrN4tVQl/RhquHvKEKImWWFIVh1Lxe5n1G/N+GQ==
|
||||||
|
|
||||||
catharsis@^0.9.0:
|
catharsis@^0.9.0:
|
||||||
version "0.9.0"
|
version "0.9.0"
|
||||||
|
@ -2989,6 +3123,11 @@ ci-info@^3.1.1:
|
||||||
resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.2.0.tgz#2876cb948a498797b5236f0095bc057d0dca38b6"
|
resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.2.0.tgz#2876cb948a498797b5236f0095bc057d0dca38b6"
|
||||||
integrity sha512-dVqRX7fLUm8J6FgHJ418XuIgDLZDkYcDFTeL6TA2gt5WlIZUQrrH6EZrNClwT/H0FateUsZkGIOPRrLbP+PR9A==
|
integrity sha512-dVqRX7fLUm8J6FgHJ418XuIgDLZDkYcDFTeL6TA2gt5WlIZUQrrH6EZrNClwT/H0FateUsZkGIOPRrLbP+PR9A==
|
||||||
|
|
||||||
|
ci-info@^3.2.0:
|
||||||
|
version "3.3.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.3.0.tgz#b4ed1fb6818dea4803a55c623041f9165d2066b2"
|
||||||
|
integrity sha512-riT/3vI5YpVH6/qomlDnJow6TBee2PBKSEpx3O32EGPYbWGIRsIlGRms3Sm74wYE1JMo8RnO04Hb12+v1J5ICw==
|
||||||
|
|
||||||
cjs-module-lexer@^1.0.0:
|
cjs-module-lexer@^1.0.0:
|
||||||
version "1.2.2"
|
version "1.2.2"
|
||||||
resolved "https://registry.yarnpkg.com/cjs-module-lexer/-/cjs-module-lexer-1.2.2.tgz#9f84ba3244a512f3a54e5277e8eef4c489864e40"
|
resolved "https://registry.yarnpkg.com/cjs-module-lexer/-/cjs-module-lexer-1.2.2.tgz#9f84ba3244a512f3a54e5277e8eef4c489864e40"
|
||||||
|
@ -3556,6 +3695,13 @@ debug@^3.1.1, debug@^3.2.7:
|
||||||
dependencies:
|
dependencies:
|
||||||
ms "^2.1.1"
|
ms "^2.1.1"
|
||||||
|
|
||||||
|
debug@^4.3.2:
|
||||||
|
version "4.3.4"
|
||||||
|
resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865"
|
||||||
|
integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==
|
||||||
|
dependencies:
|
||||||
|
ms "2.1.2"
|
||||||
|
|
||||||
decamelize-keys@^1.1.0:
|
decamelize-keys@^1.1.0:
|
||||||
version "1.1.0"
|
version "1.1.0"
|
||||||
resolved "https://registry.yarnpkg.com/decamelize-keys/-/decamelize-keys-1.1.0.tgz#d171a87933252807eb3cb61dc1c1445d078df2d9"
|
resolved "https://registry.yarnpkg.com/decamelize-keys/-/decamelize-keys-1.1.0.tgz#d171a87933252807eb3cb61dc1c1445d078df2d9"
|
||||||
|
@ -3681,6 +3827,11 @@ diff-sequences@^27.0.6:
|
||||||
resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-27.0.6.tgz#3305cb2e55a033924054695cc66019fd7f8e5723"
|
resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-27.0.6.tgz#3305cb2e55a033924054695cc66019fd7f8e5723"
|
||||||
integrity sha512-ag6wfpBFyNXZ0p8pcuIDS//D8H062ZQJ3fzYxjpmeKjnz8W4pekL3AI8VohmyZmsWW2PWaHgjsmqR6L13101VQ==
|
integrity sha512-ag6wfpBFyNXZ0p8pcuIDS//D8H062ZQJ3fzYxjpmeKjnz8W4pekL3AI8VohmyZmsWW2PWaHgjsmqR6L13101VQ==
|
||||||
|
|
||||||
|
diff-sequences@^27.5.1:
|
||||||
|
version "27.5.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-27.5.1.tgz#eaecc0d327fd68c8d9672a1e64ab8dccb2ef5327"
|
||||||
|
integrity sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ==
|
||||||
|
|
||||||
dir-glob@^3.0.1:
|
dir-glob@^3.0.1:
|
||||||
version "3.0.1"
|
version "3.0.1"
|
||||||
resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f"
|
resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f"
|
||||||
|
@ -4237,6 +4388,13 @@ eslint-utils@^2.1.0:
|
||||||
dependencies:
|
dependencies:
|
||||||
eslint-visitor-keys "^1.1.0"
|
eslint-visitor-keys "^1.1.0"
|
||||||
|
|
||||||
|
eslint-utils@^3.0.0:
|
||||||
|
version "3.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-3.0.0.tgz#8aebaface7345bb33559db0a1f13a1d2d48c3672"
|
||||||
|
integrity sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==
|
||||||
|
dependencies:
|
||||||
|
eslint-visitor-keys "^2.0.0"
|
||||||
|
|
||||||
eslint-visitor-keys@^1.0.0, eslint-visitor-keys@^1.1.0, eslint-visitor-keys@^1.3.0:
|
eslint-visitor-keys@^1.0.0, eslint-visitor-keys@^1.1.0, eslint-visitor-keys@^1.3.0:
|
||||||
version "1.3.0"
|
version "1.3.0"
|
||||||
resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e"
|
resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e"
|
||||||
|
@ -4247,6 +4405,11 @@ eslint-visitor-keys@^2.0.0:
|
||||||
resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303"
|
resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303"
|
||||||
integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==
|
integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==
|
||||||
|
|
||||||
|
eslint-visitor-keys@^3.0.0:
|
||||||
|
version "3.3.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz#f6480fa6b1f30efe2d1968aa8ac745b862469826"
|
||||||
|
integrity sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==
|
||||||
|
|
||||||
eslint@^7.0.0:
|
eslint@^7.0.0:
|
||||||
version "7.32.0"
|
version "7.32.0"
|
||||||
resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.32.0.tgz#c6d328a14be3fb08c8d1d21e12c02fdb7a2a812d"
|
resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.32.0.tgz#c6d328a14be3fb08c8d1d21e12c02fdb7a2a812d"
|
||||||
|
@ -4405,6 +4568,16 @@ expect@^27.2.0:
|
||||||
jest-message-util "^27.2.0"
|
jest-message-util "^27.2.0"
|
||||||
jest-regex-util "^27.0.6"
|
jest-regex-util "^27.0.6"
|
||||||
|
|
||||||
|
expect@^27.5.1:
|
||||||
|
version "27.5.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/expect/-/expect-27.5.1.tgz#83ce59f1e5bdf5f9d2b94b61d2050db48f3fef74"
|
||||||
|
integrity sha512-E1q5hSUG2AmYQwQJ041nvgpkODHQvB+RKlB4IYdru6uJsyFTRyZAP463M+1lINorwbqAmUggi6+WwkD8lCS/Dw==
|
||||||
|
dependencies:
|
||||||
|
"@jest/types" "^27.5.1"
|
||||||
|
jest-get-type "^27.5.1"
|
||||||
|
jest-matcher-utils "^27.5.1"
|
||||||
|
jest-message-util "^27.5.1"
|
||||||
|
|
||||||
express@^4.17.1:
|
express@^4.17.1:
|
||||||
version "4.17.1"
|
version "4.17.1"
|
||||||
resolved "https://registry.yarnpkg.com/express/-/express-4.17.1.tgz#4491fc38605cf51f8629d39c2b5d026f98a4c134"
|
resolved "https://registry.yarnpkg.com/express/-/express-4.17.1.tgz#4491fc38605cf51f8629d39c2b5d026f98a4c134"
|
||||||
|
@ -4469,6 +4642,17 @@ fast-glob@^3.1.1, fast-glob@^3.2.5:
|
||||||
merge2 "^1.3.0"
|
merge2 "^1.3.0"
|
||||||
micromatch "^4.0.4"
|
micromatch "^4.0.4"
|
||||||
|
|
||||||
|
fast-glob@^3.2.9:
|
||||||
|
version "3.2.11"
|
||||||
|
resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.11.tgz#a1172ad95ceb8a16e20caa5c5e56480e5129c1d9"
|
||||||
|
integrity sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==
|
||||||
|
dependencies:
|
||||||
|
"@nodelib/fs.stat" "^2.0.2"
|
||||||
|
"@nodelib/fs.walk" "^1.2.3"
|
||||||
|
glob-parent "^5.1.2"
|
||||||
|
merge2 "^1.3.0"
|
||||||
|
micromatch "^4.0.4"
|
||||||
|
|
||||||
fast-json-stable-stringify@2.x, fast-json-stable-stringify@^2.0.0:
|
fast-json-stable-stringify@2.x, fast-json-stable-stringify@^2.0.0:
|
||||||
version "2.1.0"
|
version "2.1.0"
|
||||||
resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633"
|
resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633"
|
||||||
|
@ -4819,6 +5003,18 @@ globby@^11.0.1, globby@^11.0.3:
|
||||||
merge2 "^1.3.0"
|
merge2 "^1.3.0"
|
||||||
slash "^3.0.0"
|
slash "^3.0.0"
|
||||||
|
|
||||||
|
globby@^11.0.4:
|
||||||
|
version "11.1.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b"
|
||||||
|
integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==
|
||||||
|
dependencies:
|
||||||
|
array-union "^2.1.0"
|
||||||
|
dir-glob "^3.0.1"
|
||||||
|
fast-glob "^3.2.9"
|
||||||
|
ignore "^5.2.0"
|
||||||
|
merge2 "^1.4.1"
|
||||||
|
slash "^3.0.0"
|
||||||
|
|
||||||
globjoin@^0.1.4:
|
globjoin@^0.1.4:
|
||||||
version "0.1.4"
|
version "0.1.4"
|
||||||
resolved "https://registry.yarnpkg.com/globjoin/-/globjoin-0.1.4.tgz#2f4494ac8919e3767c5cbb691e9f463324285d43"
|
resolved "https://registry.yarnpkg.com/globjoin/-/globjoin-0.1.4.tgz#2f4494ac8919e3767c5cbb691e9f463324285d43"
|
||||||
|
@ -4836,6 +5032,11 @@ graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.1.9, graceful-fs@^4.2.0,
|
||||||
resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.8.tgz#e412b8d33f5e006593cbd3cee6df9f2cebbe802a"
|
resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.8.tgz#e412b8d33f5e006593cbd3cee6df9f2cebbe802a"
|
||||||
integrity sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==
|
integrity sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==
|
||||||
|
|
||||||
|
graceful-fs@^4.2.9:
|
||||||
|
version "4.2.9"
|
||||||
|
resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.9.tgz#041b05df45755e587a24942279b9d113146e1c96"
|
||||||
|
integrity sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ==
|
||||||
|
|
||||||
gzip-size@^6.0.0:
|
gzip-size@^6.0.0:
|
||||||
version "6.0.0"
|
version "6.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/gzip-size/-/gzip-size-6.0.0.tgz#065367fd50c239c0671cbcbad5be3e2eeb10e462"
|
resolved "https://registry.yarnpkg.com/gzip-size/-/gzip-size-6.0.0.tgz#065367fd50c239c0671cbcbad5be3e2eeb10e462"
|
||||||
|
@ -5162,6 +5363,11 @@ ignore@^5.1.4, ignore@^5.1.8:
|
||||||
resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.1.8.tgz#f150a8b50a34289b33e22f5889abd4d8016f0e57"
|
resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.1.8.tgz#f150a8b50a34289b33e22f5889abd4d8016f0e57"
|
||||||
integrity sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==
|
integrity sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==
|
||||||
|
|
||||||
|
ignore@^5.2.0:
|
||||||
|
version "5.2.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.0.tgz#6d3bac8fa7fe0d45d9f9be7bac2fc279577e345a"
|
||||||
|
integrity sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==
|
||||||
|
|
||||||
immediate@~3.0.5:
|
immediate@~3.0.5:
|
||||||
version "3.0.6"
|
version "3.0.6"
|
||||||
resolved "https://registry.yarnpkg.com/immediate/-/immediate-3.0.6.tgz#9db1dbd0faf8de6fbe0f5dd5e56bb606280de69b"
|
resolved "https://registry.yarnpkg.com/immediate/-/immediate-3.0.6.tgz#9db1dbd0faf8de6fbe0f5dd5e56bb606280de69b"
|
||||||
|
@ -5832,6 +6038,16 @@ jest-diff@^27.2.0:
|
||||||
jest-get-type "^27.0.6"
|
jest-get-type "^27.0.6"
|
||||||
pretty-format "^27.2.0"
|
pretty-format "^27.2.0"
|
||||||
|
|
||||||
|
jest-diff@^27.5.1:
|
||||||
|
version "27.5.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-27.5.1.tgz#a07f5011ac9e6643cf8a95a462b7b1ecf6680def"
|
||||||
|
integrity sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw==
|
||||||
|
dependencies:
|
||||||
|
chalk "^4.0.0"
|
||||||
|
diff-sequences "^27.5.1"
|
||||||
|
jest-get-type "^27.5.1"
|
||||||
|
pretty-format "^27.5.1"
|
||||||
|
|
||||||
jest-docblock@^27.0.6:
|
jest-docblock@^27.0.6:
|
||||||
version "27.0.6"
|
version "27.0.6"
|
||||||
resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-27.0.6.tgz#cc78266acf7fe693ca462cbbda0ea4e639e4e5f3"
|
resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-27.0.6.tgz#cc78266acf7fe693ca462cbbda0ea4e639e4e5f3"
|
||||||
|
@ -5880,6 +6096,11 @@ jest-get-type@^27.0.6:
|
||||||
resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-27.0.6.tgz#0eb5c7f755854279ce9b68a9f1a4122f69047cfe"
|
resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-27.0.6.tgz#0eb5c7f755854279ce9b68a9f1a4122f69047cfe"
|
||||||
integrity sha512-XTkK5exIeUbbveehcSR8w0bhH+c0yloW/Wpl+9vZrjzztCPWrxhHwkIFpZzCt71oRBsgxmuUfxEqOYoZI2macg==
|
integrity sha512-XTkK5exIeUbbveehcSR8w0bhH+c0yloW/Wpl+9vZrjzztCPWrxhHwkIFpZzCt71oRBsgxmuUfxEqOYoZI2macg==
|
||||||
|
|
||||||
|
jest-get-type@^27.5.1:
|
||||||
|
version "27.5.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-27.5.1.tgz#3cd613c507b0f7ace013df407a1c1cd578bcb4f1"
|
||||||
|
integrity sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==
|
||||||
|
|
||||||
jest-haste-map@^27.2.0:
|
jest-haste-map@^27.2.0:
|
||||||
version "27.2.0"
|
version "27.2.0"
|
||||||
resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-27.2.0.tgz#703b3a473e3f2e27d75ab07864ffd7bbaad0d75e"
|
resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-27.2.0.tgz#703b3a473e3f2e27d75ab07864ffd7bbaad0d75e"
|
||||||
|
@ -5942,6 +6163,16 @@ jest-matcher-utils@^27.2.0:
|
||||||
jest-get-type "^27.0.6"
|
jest-get-type "^27.0.6"
|
||||||
pretty-format "^27.2.0"
|
pretty-format "^27.2.0"
|
||||||
|
|
||||||
|
jest-matcher-utils@^27.5.1:
|
||||||
|
version "27.5.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-27.5.1.tgz#9c0cdbda8245bc22d2331729d1091308b40cf8ab"
|
||||||
|
integrity sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw==
|
||||||
|
dependencies:
|
||||||
|
chalk "^4.0.0"
|
||||||
|
jest-diff "^27.5.1"
|
||||||
|
jest-get-type "^27.5.1"
|
||||||
|
pretty-format "^27.5.1"
|
||||||
|
|
||||||
jest-message-util@^27.2.0:
|
jest-message-util@^27.2.0:
|
||||||
version "27.2.0"
|
version "27.2.0"
|
||||||
resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-27.2.0.tgz#2f65c71df55267208686b1d7514e18106c91ceaf"
|
resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-27.2.0.tgz#2f65c71df55267208686b1d7514e18106c91ceaf"
|
||||||
|
@ -5957,6 +6188,21 @@ jest-message-util@^27.2.0:
|
||||||
slash "^3.0.0"
|
slash "^3.0.0"
|
||||||
stack-utils "^2.0.3"
|
stack-utils "^2.0.3"
|
||||||
|
|
||||||
|
jest-message-util@^27.5.1:
|
||||||
|
version "27.5.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-27.5.1.tgz#bdda72806da10d9ed6425e12afff38cd1458b6cf"
|
||||||
|
integrity sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g==
|
||||||
|
dependencies:
|
||||||
|
"@babel/code-frame" "^7.12.13"
|
||||||
|
"@jest/types" "^27.5.1"
|
||||||
|
"@types/stack-utils" "^2.0.0"
|
||||||
|
chalk "^4.0.0"
|
||||||
|
graceful-fs "^4.2.9"
|
||||||
|
micromatch "^4.0.4"
|
||||||
|
pretty-format "^27.5.1"
|
||||||
|
slash "^3.0.0"
|
||||||
|
stack-utils "^2.0.3"
|
||||||
|
|
||||||
jest-mock@^27.1.1:
|
jest-mock@^27.1.1:
|
||||||
version "27.1.1"
|
version "27.1.1"
|
||||||
resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-27.1.1.tgz#c7a2e81301fdcf3dab114931d23d89ec9d0c3a82"
|
resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-27.1.1.tgz#c7a2e81301fdcf3dab114931d23d89ec9d0c3a82"
|
||||||
|
@ -5965,6 +6211,14 @@ jest-mock@^27.1.1:
|
||||||
"@jest/types" "^27.1.1"
|
"@jest/types" "^27.1.1"
|
||||||
"@types/node" "*"
|
"@types/node" "*"
|
||||||
|
|
||||||
|
jest-mock@^27.5.1:
|
||||||
|
version "27.5.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-27.5.1.tgz#19948336d49ef4d9c52021d34ac7b5f36ff967d6"
|
||||||
|
integrity sha512-K4jKbY1d4ENhbrG2zuPWaQBvDly+iZ2yAW+T1fATN78hc0sInwn7wZB8XtlNnvHug5RMwV897Xm4LqmPM4e2Og==
|
||||||
|
dependencies:
|
||||||
|
"@jest/types" "^27.5.1"
|
||||||
|
"@types/node" "*"
|
||||||
|
|
||||||
jest-pnp-resolver@^1.2.2:
|
jest-pnp-resolver@^1.2.2:
|
||||||
version "1.2.2"
|
version "1.2.2"
|
||||||
resolved "https://registry.yarnpkg.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz#b704ac0ae028a89108a4d040b3f919dfddc8e33c"
|
resolved "https://registry.yarnpkg.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz#b704ac0ae028a89108a4d040b3f919dfddc8e33c"
|
||||||
|
@ -6116,6 +6370,18 @@ jest-util@^27.0.0, jest-util@^27.2.0:
|
||||||
is-ci "^3.0.0"
|
is-ci "^3.0.0"
|
||||||
picomatch "^2.2.3"
|
picomatch "^2.2.3"
|
||||||
|
|
||||||
|
jest-util@^27.5.1:
|
||||||
|
version "27.5.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-27.5.1.tgz#3ba9771e8e31a0b85da48fe0b0891fb86c01c2f9"
|
||||||
|
integrity sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==
|
||||||
|
dependencies:
|
||||||
|
"@jest/types" "^27.5.1"
|
||||||
|
"@types/node" "*"
|
||||||
|
chalk "^4.0.0"
|
||||||
|
ci-info "^3.2.0"
|
||||||
|
graceful-fs "^4.2.9"
|
||||||
|
picomatch "^2.2.3"
|
||||||
|
|
||||||
jest-validate@^27.2.0:
|
jest-validate@^27.2.0:
|
||||||
version "27.2.0"
|
version "27.2.0"
|
||||||
resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-27.2.0.tgz#b7535f12d95dd3b4382831f4047384ca098642ab"
|
resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-27.2.0.tgz#b7535f12d95dd3b4382831f4047384ca098642ab"
|
||||||
|
@ -6804,7 +7070,7 @@ merge-stream@^2.0.0:
|
||||||
resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60"
|
resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60"
|
||||||
integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==
|
integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==
|
||||||
|
|
||||||
merge2@^1.3.0:
|
merge2@^1.3.0, merge2@^1.4.1:
|
||||||
version "1.4.1"
|
version "1.4.1"
|
||||||
resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae"
|
resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae"
|
||||||
integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==
|
integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==
|
||||||
|
@ -7933,6 +8199,15 @@ pretty-format@^27.2.0:
|
||||||
ansi-styles "^5.0.0"
|
ansi-styles "^5.0.0"
|
||||||
react-is "^17.0.1"
|
react-is "^17.0.1"
|
||||||
|
|
||||||
|
pretty-format@^27.5.1:
|
||||||
|
version "27.5.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-27.5.1.tgz#2181879fdea51a7a5851fb39d920faa63f01d88e"
|
||||||
|
integrity sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==
|
||||||
|
dependencies:
|
||||||
|
ansi-regex "^5.0.1"
|
||||||
|
ansi-styles "^5.0.0"
|
||||||
|
react-is "^17.0.1"
|
||||||
|
|
||||||
process-nextick-args@~2.0.0:
|
process-nextick-args@~2.0.0:
|
||||||
version "2.0.1"
|
version "2.0.1"
|
||||||
resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2"
|
resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2"
|
||||||
|
@ -8553,7 +8828,7 @@ regexp.prototype.flags@^1.2.0, regexp.prototype.flags@^1.3.1:
|
||||||
call-bind "^1.0.2"
|
call-bind "^1.0.2"
|
||||||
define-properties "^1.1.3"
|
define-properties "^1.1.3"
|
||||||
|
|
||||||
regexpp@^3.1.0:
|
regexpp@^3.1.0, regexpp@^3.2.0:
|
||||||
version "3.2.0"
|
version "3.2.0"
|
||||||
resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.2.0.tgz#0425a2768d8f23bad70ca4b90461fa2f1213e1b2"
|
resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.2.0.tgz#0425a2768d8f23bad70ca4b90461fa2f1213e1b2"
|
||||||
integrity sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==
|
integrity sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==
|
||||||
|
@ -9714,7 +9989,7 @@ tsconfig-paths@^3.12.0:
|
||||||
minimist "^1.2.0"
|
minimist "^1.2.0"
|
||||||
strip-bom "^3.0.0"
|
strip-bom "^3.0.0"
|
||||||
|
|
||||||
tslib@^1.9.0, tslib@^1.9.3:
|
tslib@^1.8.1, tslib@^1.9.0, tslib@^1.9.3:
|
||||||
version "1.14.1"
|
version "1.14.1"
|
||||||
resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00"
|
resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00"
|
||||||
integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==
|
integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==
|
||||||
|
@ -9724,6 +9999,13 @@ tslib@^2.0.1, tslib@^2.0.3, tslib@^2.1.0, tslib@^2.2.0, tslib@^2.3.1:
|
||||||
resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.3.1.tgz#e8a335add5ceae51aa261d32a490158ef042ef01"
|
resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.3.1.tgz#e8a335add5ceae51aa261d32a490158ef042ef01"
|
||||||
integrity sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==
|
integrity sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==
|
||||||
|
|
||||||
|
tsutils@^3.21.0:
|
||||||
|
version "3.21.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623"
|
||||||
|
integrity sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==
|
||||||
|
dependencies:
|
||||||
|
tslib "^1.8.1"
|
||||||
|
|
||||||
twemoji-parser@13.0.0:
|
twemoji-parser@13.0.0:
|
||||||
version "13.0.0"
|
version "13.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/twemoji-parser/-/twemoji-parser-13.0.0.tgz#bd9d1b98474f1651dc174696b45cabefdfa405af"
|
resolved "https://registry.yarnpkg.com/twemoji-parser/-/twemoji-parser-13.0.0.tgz#bd9d1b98474f1651dc174696b45cabefdfa405af"
|
||||||
|
|