Add eslint formatting

This commit is contained in:
Bill 2022-04-01 13:33:08 -04:00
parent 95621e95eb
commit d7b00756bf
192 changed files with 2494 additions and 2323 deletions

View File

@ -1,86 +0,0 @@
module.exports = {
'extends': [
'react-app',
'react-app/jest'
],
'rules': {
'linebreak-style': [
'off'
],
'quotes': [
'error',
'single'
],
'brace-style': [
'error',
'allman',
{
'allowSingleLine': true
}
],
'object-curly-spacing': [
'error',
'always'
],
'keyword-spacing': [
'error',
{
'overrides': {
'if': {
'after': false
},
'for': {
'after': false
},
'while': {
'after': false
},
'switch': {
'after': false
}
}
}
],
'@typescript-eslint/no-explicit-any': [
'off'
],
'@typescript-eslint/ban-ts-comment': [
'off'
],
'@typescript-eslint/no-empty-function': [
'error',
{
'allow': [
'functions',
'arrowFunctions',
'generatorFunctions',
'methods',
'generatorMethods',
'constructors'
]
}
],
'@typescript-eslint/no-unused-vars': [
'off'
],
'@typescript-eslint/ban-types': [
'error',
{
'types': {
'String': true,
'Boolean': true,
'Number': true,
'Symbol': true,
'{}': false,
'Object': false,
'object': false,
'Function': false
},
'extendDefaults': true
}
],
'no-switch-case-fall-through': [
'off'
]
}
}

34
.eslintrc.json Normal file
View File

@ -0,0 +1,34 @@
{
"settings": {
"react": {
"pragma": "React",
"version": "17.0.2"
}
},
"env": {
"browser": true,
"es2021": true
},
"extends": [
"plugin:react/recommended",
"plugin:react/jsx-runtime"
],
"parser": "@typescript-eslint/parser",
"parserOptions": {
"ecmaFeatures": {
"jsx": true
},
"ecmaVersion": "latest",
"sourceType": "module"
},
"plugins": [
"react",
"@typescript-eslint"
],
"rules": {
"indent": ["error", 4, {"SwitchCase": 1}],
"array-bracket-spacing": ["error", "always"],
"brace-style": ["error", "allman"],
"react/prop-types": ["off"]
}
}

View File

@ -1 +0,0 @@
*.scss

View File

@ -14,5 +14,7 @@
"files.insertFinalNewline": true, "files.insertFinalNewline": true,
"files.trimFinalNewlines": true, "files.trimFinalNewlines": true,
"editor.wordWrap": "on", "editor.wordWrap": "on",
"emmet.showExpandedAbbreviation": "never" "emmet.showExpandedAbbreviation": "never",
"eslint.validate": [ "javascript", "javascriptreact", "html", "typescriptreact" ],
"eslint.workingDirectories": [ "./src" ]
} }

View File

@ -7,7 +7,8 @@
"build": "cross-env GENERATE_SOURCEMAP=false IMAGE_INLINE_SIZE_LIMIT=100000 craco build", "build": "cross-env GENERATE_SOURCEMAP=false IMAGE_INLINE_SIZE_LIMIT=100000 craco build",
"build:prod": "npx browserslist@latest --update-db && yarn build", "build:prod": "npx browserslist@latest --update-db && yarn build",
"test": "craco test", "test": "craco test",
"eject": "react-scripts eject" "eject": "react-scripts eject",
"eslint": "eslint src --ext .ts,.tsx"
}, },
"dependencies": { "dependencies": {
"@craco/craco": "^6.3.0", "@craco/craco": "^6.3.0",
@ -41,7 +42,13 @@
"@types/react-slider": "^1.3.1", "@types/react-slider": "^1.3.1",
"@types/react-transition-group": "^4.4.2", "@types/react-transition-group": "^4.4.2",
"@types/react-virtualized": "^9.21.13", "@types/react-virtualized": "^9.21.13",
"@typescript-eslint/eslint-plugin": "^4.29.1", "@typescript-eslint/eslint-plugin": "^5.17.0",
"@typescript-eslint/parser": "^5.17.0",
"eslint": "^8.12.0",
"eslint-plugin-import": "^2.25.4",
"eslint-plugin-jsx-a11y": "^6.5.1",
"eslint-plugin-react": "^7.29.4",
"eslint-plugin-react-hooks": "^4.4.0",
"react-error-overlay": "6.0.9" "react-error-overlay": "6.0.9"
} }
} }

View File

@ -14,8 +14,8 @@ export const App: FC<{}> = props =>
{ {
const [ isReady, setIsReady ] = useState(false); const [ isReady, setIsReady ] = useState(false);
const [ isError, setIsError ] = useState(false); const [ isError, setIsError ] = useState(false);
const [message, setMessage] = useState('Getting Ready'); const [ message, setMessage ] = useState('Getting Ready');
const [percent, setPercent] = useState(0); const [ percent, setPercent ] = useState(0);
//@ts-ignore //@ts-ignore
if(!NitroConfig) throw new Error('NitroConfig is not defined!'); if(!NitroConfig) throw new Error('NitroConfig is not defined!');

View File

@ -10,5 +10,6 @@ export class TradeUserData
public itemCount: number = 0, public itemCount: number = 0,
public creditsCount: number = 0, public creditsCount: number = 0,
public accepts: boolean = false, public accepts: boolean = false,
public canTrade: boolean = false) {} public canTrade: boolean = false)
{}
} }

View File

@ -43,7 +43,7 @@ export class FurnitureInternalLinkHandler extends RoomWidgetHandler
public get eventTypes(): string[] public get eventTypes(): string[]
{ {
return [RoomEngineTriggerWidgetEvent.REQUEST_INTERNAL_LINK]; return [ RoomEngineTriggerWidgetEvent.REQUEST_INTERNAL_LINK ];
} }
public get messageTypes(): string[] public get messageTypes(): string[]

View File

@ -49,7 +49,7 @@ export class FurnitureRoomLinkHandler extends RoomWidgetHandler
public get eventTypes(): string[] public get eventTypes(): string[]
{ {
return [RoomEngineTriggerWidgetEvent.REQUEST_ROOM_LINK]; return [ RoomEngineTriggerWidgetEvent.REQUEST_ROOM_LINK ];
} }
public get messageTypes(): string[] public get messageTypes(): string[]

View File

@ -63,11 +63,11 @@ export class PollWidgetHandler extends RoomWidgetHandler
public get eventTypes(): string[] public get eventTypes(): string[]
{ {
return [RoomSessionPollEvent.OFFER, RoomSessionPollEvent.ERROR, RoomSessionPollEvent.CONTENT]; return [ RoomSessionPollEvent.OFFER, RoomSessionPollEvent.ERROR, RoomSessionPollEvent.CONTENT ];
} }
public get messageTypes(): string[] public get messageTypes(): string[]
{ {
return [RoomWidgetPollMessage.ANSWER, RoomWidgetPollMessage.REJECT, RoomWidgetPollMessage.START]; return [ RoomWidgetPollMessage.ANSWER, RoomWidgetPollMessage.REJECT, RoomWidgetPollMessage.START ];
} }
} }

View File

@ -101,7 +101,7 @@ export class RoomWidgetChatHandler extends RoomWidgetHandler implements IAvatarI
text = LocalizeText('widget.chatbubble.pettreat', [ 'petname' ], [ username ]); text = LocalizeText('widget.chatbubble.pettreat', [ 'petname' ], [ username ]);
break; break;
case RoomSessionChatEvent.CHAT_TYPE_HAND_ITEM_RECEIVED: case RoomSessionChatEvent.CHAT_TYPE_HAND_ITEM_RECEIVED:
text = LocalizeText('widget.chatbubble.handitem', [ 'username', 'handitem' ], [ username, LocalizeText(('handitem' + chatEvent.extraParam))]); text = LocalizeText('widget.chatbubble.handitem', [ 'username', 'handitem' ], [ username, LocalizeText(('handitem' + chatEvent.extraParam)) ]);
break; break;
case RoomSessionChatEvent.CHAT_TYPE_MUTE_REMAINING: { case RoomSessionChatEvent.CHAT_TYPE_MUTE_REMAINING: {
const hours = ((chatEvent.extraParam > 0) ? Math.floor((chatEvent.extraParam / 3600)) : 0).toString(); const hours = ((chatEvent.extraParam > 0) ? Math.floor((chatEvent.extraParam / 3600)) : 0).toString();

View File

@ -64,7 +64,7 @@ export class WordQuizWidgetHandler extends RoomWidgetHandler
public get eventTypes(): string[] public get eventTypes(): string[]
{ {
return [RoomSessionWordQuizEvent.ANSWERED, RoomSessionWordQuizEvent.FINISHED, RoomSessionWordQuizEvent.QUESTION]; return [ RoomSessionWordQuizEvent.ANSWERED, RoomSessionWordQuizEvent.FINISHED, RoomSessionWordQuizEvent.QUESTION ];
} }
public get messageTypes(): string[] public get messageTypes(): string[]

View File

@ -4,7 +4,7 @@ export class RoomWidgetDanceMessage extends RoomWidgetMessage
{ {
public static DANCE: string = 'RWDM_MESSAGE_DANCE'; public static DANCE: string = 'RWDM_MESSAGE_DANCE';
public static NORMAL_STYLE: number = 0; public static NORMAL_STYLE: number = 0;
public static CLUB_STYLE: number[] = [2, 3, 4]; public static CLUB_STYLE: number[] = [ 2, 3, 4 ];
private _style: number = 0; private _style: number = 0;

View File

@ -157,7 +157,7 @@ export class NotificationUtilities
public static handleHotelClosedMessage(open: number, minute: number, thrownOut: boolean): void public static handleHotelClosedMessage(open: number, minute: number, thrownOut: boolean): void
{ {
this.simpleAlert( LocalizeText(('opening.hours.' + (thrownOut ? 'disconnected' : 'closed')), [ 'h', 'm'], [ this.getTimeZeroPadded(open), this.getTimeZeroPadded(minute) ]), NotificationAlertType.DEFAULT, null, null, LocalizeText('opening.hours.title')); this.simpleAlert( LocalizeText(('opening.hours.' + (thrownOut ? 'disconnected' : 'closed')), [ 'h', 'm' ], [ this.getTimeZeroPadded(open), this.getTimeZeroPadded(minute) ]), NotificationAlertType.DEFAULT, null, null, LocalizeText('opening.hours.title'));
} }
public static handleHotelMaintenanceMessage(minutesUntilMaintenance: number, duration: number): void public static handleHotelMaintenanceMessage(minutesUntilMaintenance: number, duration: number): void

View File

@ -26,9 +26,9 @@ allowedColours.set('pink', 'pink');
function encodeHTML(str: string) function encodeHTML(str: string)
{ {
return str.replace(/([\u00A0-\u9999<>&])(.|$)/g, function(full, char, next) return str.replace(/([\u00A0-\u9999<>&])(.|$)/g, function(full, char, next)
{ {
if(char !== '&' || next !== '#') if(char !== '&' || next !== '#')
{ {
if(/[\u00A0-\u9999<>&]/.test(next)) if(/[\u00A0-\u9999<>&]/.test(next))
next = '&#' + next.charCodeAt(0) + ';'; next = '&#' + next.charCodeAt(0) + ';';

View File

@ -67,7 +67,8 @@ export const LayoutAvatarImageView: FC<LayoutAvatarImageViewProps> = props =>
setRandomValue(Math.random()); setRandomValue(Math.random());
}, },
dispose: () => {}, dispose: () =>
{},
disposed: false disposed: false
}, null); }, null);

View File

@ -31,7 +31,7 @@ export const LayoutGiftTagView: FC<LayoutGiftTagViewProps> = props =>
{ editable && (onChange !== null) && { editable && (onChange !== null) &&
<textarea className="gift-message h-100" maxLength={ 140 } value={ message } onChange={ (e) => onChange(e.target.value) } placeholder={ LocalizeText('catalog.gift_wrapping_new.message_hint') }></textarea> } <textarea className="gift-message h-100" maxLength={ 140 } value={ message } onChange={ (e) => onChange(e.target.value) } placeholder={ LocalizeText('catalog.gift_wrapping_new.message_hint') }></textarea> }
{ userName && { userName &&
<Text italics textEnd className="pe-1">{ LocalizeText('catalog.gift_wrapping_new.message_from', ['name'], [userName]) }</Text> } <Text italics textEnd className="pe-1">{ LocalizeText('catalog.gift_wrapping_new.message_from', [ 'name' ], [ userName ]) }</Text> }
</Column> </Column>
</Flex> </Flex>
</Flex> </Flex>

View File

@ -15,7 +15,7 @@ export const LayoutNotificationAlertView: FC<LayoutNotificationAlertViewProps> =
const getClassNames = useMemo(() => const getClassNames = useMemo(() =>
{ {
const newClassNames: string[] = ['nitro-alert']; const newClassNames: string[] = [ 'nitro-alert' ];
newClassNames.push('nitro-alert-' + type); newClassNames.push('nitro-alert-' + type);

View File

@ -8,15 +8,11 @@ interface LayoutLimitedEditionStyledNumberViewProps
export const LayoutLimitedEditionStyledNumberView: FC<LayoutLimitedEditionStyledNumberViewProps> = props => export const LayoutLimitedEditionStyledNumberView: FC<LayoutLimitedEditionStyledNumberViewProps> = props =>
{ {
const { value = 0 } = props; const { value = 0 } = props;
const numbers = value.toString().split(''); const numbers = value.toString().split('');
return ( return (
<> <>
{ numbers.map((number, index) => { numbers.map((number, index) => <i key={ index } className={ 'limited-edition-number n-' + number } />) }
{
return <i key={ index } className={ 'limited-edition-number n-' + number } />;
})}
</> </>
); );
} }

View File

@ -5,7 +5,7 @@ import { FigureData } from './FigureData';
export class AvatarEditorGridPartItem implements IAvatarImageListener export class AvatarEditorGridPartItem implements IAvatarImageListener
{ {
private static ALPHA_FILTER: NitroAlphaFilter = new NitroAlphaFilter(0.2); private static ALPHA_FILTER: NitroAlphaFilter = new NitroAlphaFilter(0.2);
private static THUMB_DIRECTIONS: number[] = [2, 6, 0, 4, 3, 1]; private static THUMB_DIRECTIONS: number[] = [ 2, 6, 0, 4, 3, 1 ];
private static DRAW_ORDER: string[] = [ private static DRAW_ORDER: string[] = [
AvatarFigurePartType.LEFT_HAND_ITEM, AvatarFigurePartType.LEFT_HAND_ITEM,
AvatarFigurePartType.LEFT_HAND, AvatarFigurePartType.LEFT_HAND,

View File

@ -4,5 +4,6 @@ export class CameraPicture
{ {
constructor( constructor(
public texture: NitroTexture, public texture: NitroTexture,
public imageUrl: string) {} public imageUrl: string)
{}
} }

View File

@ -2,5 +2,6 @@ export class CameraPictureThumbnail
{ {
constructor( constructor(
public effectName: string, public effectName: string,
public thumbnailUrl: string) {} public thumbnailUrl: string)
{}
} }

View File

@ -104,7 +104,7 @@ export const CalendarView: FC<CalendarViewProps> = props =>
<Column size={ 10 }> <Column size={ 10 }>
<Flex justifyContent="between" alignItems="center" gap={ 1 }> <Flex justifyContent="between" alignItems="center" gap={ 1 }>
<Column gap={ 1 }> <Column gap={ 1 }>
<Text fontSize={ 3 }>{ LocalizeText('campaign.calendar.heading.day', ['number'], [(selectedDay + 1).toString()]) }</Text> <Text fontSize={ 3 }>{ LocalizeText('campaign.calendar.heading.day', [ 'number' ], [ (selectedDay + 1).toString() ]) }</Text>
<Text>{ dayMessage(selectedDay) }</Text> <Text>{ dayMessage(selectedDay) }</Text>
</Column> </Column>
<div> <div>
@ -121,7 +121,7 @@ export const CalendarView: FC<CalendarViewProps> = props =>
</Flex> </Flex>
<Column center fullWidth> <Column center fullWidth>
<Grid fit columnCount={ TOTAL_SHOWN_ITEMS } gap={ 1 }> <Grid fit columnCount={ TOTAL_SHOWN_ITEMS } gap={ 1 }>
{ [...Array(TOTAL_SHOWN_ITEMS)].map((e, i) => { [ ...Array(TOTAL_SHOWN_ITEMS) ].map((e, i) =>
{ {
const day = (index + i); const day = (index + i);

View File

@ -52,7 +52,7 @@ export const CampaignView: FC<{}> = props =>
} }
setLastOpenAttempt(-1); setLastOpenAttempt(-1);
}, [lastOpenAttempt]); }, [ lastOpenAttempt ]);
UseMessageEventHook(CampaignCalendarDoorOpenedMessageEvent, onCampaignCalendarDoorOpenedMessageEvent); UseMessageEventHook(CampaignCalendarDoorOpenedMessageEvent, onCampaignCalendarDoorOpenedMessageEvent);
@ -71,7 +71,7 @@ export const CampaignView: FC<{}> = props =>
{ {
SendMessageComposer(new OpenCampaignCalendarDoorComposer(calendarData.campaignName, id)); SendMessageComposer(new OpenCampaignCalendarDoorComposer(calendarData.campaignName, id));
} }
}, [calendarData]); }, [ calendarData ]);
const onCalendarClose = useCallback(() => const onCalendarClose = useCallback(() =>
{ {
@ -101,7 +101,7 @@ export const CampaignView: FC<{}> = props =>
{ {
RemoveLinkEventTracker(linkTracker); RemoveLinkEventTracker(linkTracker);
} }
}, [onLinkReceived]); }, [ onLinkReceived ]);
return ( return (
<> <>

View File

@ -415,7 +415,10 @@ export const CatalogView: FC<{}> = props =>
<CatalogMessageHandler /> <CatalogMessageHandler />
{ isVisible && { isVisible &&
<NitroCardView uniqueKey="catalog" className="nitro-catalog"> <NitroCardView uniqueKey="catalog" className="nitro-catalog">
<NitroCardHeaderView headerText={ LocalizeText('catalog.title') } onCloseClick={ event => { setIsVisible(false); } } /> <NitroCardHeaderView headerText={ LocalizeText('catalog.title') } onCloseClick={ event =>
{
setIsVisible(false);
} } />
<NitroCardTabsView> <NitroCardTabsView>
{ rootNode && (rootNode.children.length > 0) && rootNode.children.map(child => { rootNode && (rootNode.children.length > 0) && rootNode.children.map(child =>
{ {

View File

@ -5,5 +5,6 @@ export class CatalogPetPalette
constructor( constructor(
public readonly breed: string, public readonly breed: string,
public readonly palettes: SellablePetPaletteData[] public readonly palettes: SellablePetPaletteData[]
) {} )
{}
} }

View File

@ -85,21 +85,21 @@ export function GetPetAvailableColors(petIndex: number, palettes: SellablePetPal
switch(petIndex) switch(petIndex)
{ {
case 0: case 0:
return [[16743226], [16750435], [16764339], [0xF59500], [16498012], [16704690], [0xEDD400], [16115545], [16513201], [8694111], [11585939], [14413767], [6664599], [9553845], [12971486], [8358322], [10002885], [13292268], [10780600], [12623573], [14403561], [12418717], [14327229], [15517403], [14515069], [15764368], [16366271], [0xABABAB], [0xD4D4D4], [0xFFFFFF], [14256481], [14656129], [15848130], [14005087], [14337152], [15918540], [15118118], [15531929], [9764857], [11258085]]; return [ [ 16743226 ], [ 16750435 ], [ 16764339 ], [ 0xF59500 ], [ 16498012 ], [ 16704690 ], [ 0xEDD400 ], [ 16115545 ], [ 16513201 ], [ 8694111 ], [ 11585939 ], [ 14413767 ], [ 6664599 ], [ 9553845 ], [ 12971486 ], [ 8358322 ], [ 10002885 ], [ 13292268 ], [ 10780600 ], [ 12623573 ], [ 14403561 ], [ 12418717 ], [ 14327229 ], [ 15517403 ], [ 14515069 ], [ 15764368 ], [ 16366271 ], [ 0xABABAB ], [ 0xD4D4D4 ], [ 0xFFFFFF ], [ 14256481 ], [ 14656129 ], [ 15848130 ], [ 14005087 ], [ 14337152 ], [ 15918540 ], [ 15118118 ], [ 15531929 ], [ 9764857 ], [ 11258085 ] ];
case 1: case 1:
return [[16743226], [16750435], [16764339], [0xF59500], [16498012], [16704690], [0xEDD400], [16115545], [16513201], [8694111], [11585939], [14413767], [6664599], [9553845], [12971486], [8358322], [10002885], [13292268], [10780600], [12623573], [14403561], [12418717], [14327229], [15517403], [14515069], [15764368], [16366271], [0xABABAB], [0xD4D4D4], [0xFFFFFF], [14256481], [14656129], [15848130], [14005087], [14337152], [15918540], [15118118], [15531929], [9764857], [11258085]]; return [ [ 16743226 ], [ 16750435 ], [ 16764339 ], [ 0xF59500 ], [ 16498012 ], [ 16704690 ], [ 0xEDD400 ], [ 16115545 ], [ 16513201 ], [ 8694111 ], [ 11585939 ], [ 14413767 ], [ 6664599 ], [ 9553845 ], [ 12971486 ], [ 8358322 ], [ 10002885 ], [ 13292268 ], [ 10780600 ], [ 12623573 ], [ 14403561 ], [ 12418717 ], [ 14327229 ], [ 15517403 ], [ 14515069 ], [ 15764368 ], [ 16366271 ], [ 0xABABAB ], [ 0xD4D4D4 ], [ 0xFFFFFF ], [ 14256481 ], [ 14656129 ], [ 15848130 ], [ 14005087 ], [ 14337152 ], [ 15918540 ], [ 15118118 ], [ 15531929 ], [ 9764857 ], [ 11258085 ] ];
case 2: case 2:
return [[16579283], [15378351], [8830016], [15257125], [9340985], [8949607], [6198292], [8703620], [9889626], [8972045], [12161285], [13162269], [8620113], [12616503], [8628101], [0xD2FF00], [9764857]]; return [ [ 16579283 ], [ 15378351 ], [ 8830016 ], [ 15257125 ], [ 9340985 ], [ 8949607 ], [ 6198292 ], [ 8703620 ], [ 9889626 ], [ 8972045 ], [ 12161285 ], [ 13162269 ], [ 8620113 ], [ 12616503 ], [ 8628101 ], [ 0xD2FF00 ], [ 9764857 ] ];
case 3: case 3:
return [[0xFFFFFF], [0xEEEEEE], [0xDDDDDD]]; return [ [ 0xFFFFFF ], [ 0xEEEEEE ], [ 0xDDDDDD ] ];
case 4: case 4:
return [[0xFFFFFF], [16053490], [15464440], [16248792], [15396319], [15007487]]; return [ [ 0xFFFFFF ], [ 16053490 ], [ 15464440 ], [ 16248792 ], [ 15396319 ], [ 15007487 ] ];
case 5: case 5:
return [[0xFFFFFF], [0xEEEEEE], [0xDDDDDD]]; return [ [ 0xFFFFFF ], [ 0xEEEEEE ], [ 0xDDDDDD ] ];
case 6: case 6:
return [[0xFFFFFF], [0xEEEEEE], [0xDDDDDD], [16767177], [16770205], [16751331]]; return [ [ 0xFFFFFF ], [ 0xEEEEEE ], [ 0xDDDDDD ], [ 16767177 ], [ 16770205 ], [ 16751331 ] ];
case 7: case 7:
return [[0xCCCCCC], [0xAEAEAE], [16751331], [10149119], [16763290], [16743786]]; return [ [ 0xCCCCCC ], [ 0xAEAEAE ], [ 16751331 ], [ 10149119 ], [ 16763290 ], [ 16743786 ] ];
default: { default: {
const colors: number[][] = []; const colors: number[][] = [];

View File

@ -6,6 +6,6 @@ export class SearchResult
constructor( constructor(
public readonly searchValue: string, public readonly searchValue: string,
public readonly offers: IPurchasableOffer[], public readonly offers: IPurchasableOffer[],
public readonly filteredNodes: ICatalogNode[] public readonly filteredNodes: ICatalogNode[])
) {} {}
} }

View File

@ -8,7 +8,8 @@ export class SubscriptionInfo
public readonly clubPeriods: number = 0, public readonly clubPeriods: number = 0,
public readonly isVip: boolean = false, public readonly isVip: boolean = false,
public readonly pastDays: number = 0, public readonly pastDays: number = 0,
public readonly pastVipDays: number = 0) {} public readonly pastVipDays: number = 0)
{}
public get lastUpdated(): number public get lastUpdated(): number
{ {

View File

@ -196,7 +196,7 @@ export const CatalogGiftView: FC<{}> = props =>
<Column gap={ 1 }> <Column gap={ 1 }>
<Text fontWeight="bold">{ LocalizeText(boxName) }</Text> <Text fontWeight="bold">{ LocalizeText(boxName) }</Text>
<Flex alignItems="center" gap={ 1 }> <Flex alignItems="center" gap={ 1 }>
{ LocalizeText(priceText, ['price'], [giftConfiguration.price.toString()]) } { LocalizeText(priceText, [ 'price' ], [ giftConfiguration.price.toString() ]) }
<LayoutCurrencyIcon type={ -1 } /> <LayoutCurrencyIcon type={ -1 } />
</Flex> </Flex>
</Column> </Column>

View File

@ -44,8 +44,8 @@ export const CatalogLayoutMarketplaceItemView: FC<MarketplaceItemViewProps> = pr
text = hours + ' ' + LocalizeText('catalog.marketplace.offer.hours') + ' ' + text; text = hours + ' ' + LocalizeText('catalog.marketplace.offer.hours') + ' ' + text;
} }
return LocalizeText('catalog.marketplace.offer.time_left', ['time'], [text] ); return LocalizeText('catalog.marketplace.offer.time_left', [ 'time' ], [ text ] );
}, [offerData]); }, [ offerData ]);
return ( return (
<LayoutGridItem shrink center={ false } column={ false } alignItems="center" className="p-1"> <LayoutGridItem shrink center={ false } column={ false } alignItems="center" className="p-1">
@ -59,8 +59,8 @@ export const CatalogLayoutMarketplaceItemView: FC<MarketplaceItemViewProps> = pr
</> } </> }
{ (type === PUBLIC_OFFER) && { (type === PUBLIC_OFFER) &&
<> <>
<Text>{ LocalizeText('catalog.marketplace.offer.price_public_item', ['price', 'average'], [offerData.price.toString(), offerData.averagePrice.toString() ]) }</Text> <Text>{ LocalizeText('catalog.marketplace.offer.price_public_item', [ 'price', 'average' ], [ offerData.price.toString(), offerData.averagePrice.toString() ]) }</Text>
<Text>{ LocalizeText('catalog.marketplace.offer_count', ['count'], [offerData.offerCount.toString()]) }</Text> <Text>{ LocalizeText('catalog.marketplace.offer_count', [ 'count' ], [ offerData.offerCount.toString() ]) }</Text>
</> } </> }
</Column> </Column>
<Column gap={ 1 }> <Column gap={ 1 }>

View File

@ -91,7 +91,7 @@ export const CatalogLayoutMarketplaceOwnItemsView: FC<CatalogLayoutProps> = prop
{ (creditsWaiting > 0) && { (creditsWaiting > 0) &&
<Column center gap={ 1 } className="bg-muted rounded p-2"> <Column center gap={ 1 } className="bg-muted rounded p-2">
<Text> <Text>
{ LocalizeText('catalog.marketplace.redeem.get_credits', ['count', 'credits'], [ soldOffers.length.toString(), creditsWaiting.toString() ]) } { LocalizeText('catalog.marketplace.redeem.get_credits', [ 'count', 'credits' ], [ soldOffers.length.toString(), creditsWaiting.toString() ]) }
</Text> </Text>
<Button className="mt-1" onClick={ redeemSoldOffers }> <Button className="mt-1" onClick={ redeemSoldOffers }>
{ LocalizeText('catalog.marketplace.offer.redeem') } { LocalizeText('catalog.marketplace.offer.redeem') }

View File

@ -11,9 +11,9 @@ import { IMarketplaceSearchOptions } from './common/IMarketplaceSearchOptions';
import { MarketplaceOfferData } from './common/MarketplaceOfferData'; import { MarketplaceOfferData } from './common/MarketplaceOfferData';
import { MarketplaceSearchType } from './common/MarketplaceSearchType'; import { MarketplaceSearchType } from './common/MarketplaceSearchType';
const SORT_TYPES_VALUE = [1, 2]; const SORT_TYPES_VALUE = [ 1, 2 ];
const SORT_TYPES_ACTIVITY = [3, 4, 5, 6]; const SORT_TYPES_ACTIVITY = [ 3, 4, 5, 6 ];
const SORT_TYPES_ADVANCED = [1, 2, 3, 4, 5, 6]; const SORT_TYPES_ADVANCED = [ 1, 2, 3, 4, 5, 6 ];
export interface CatalogLayoutMarketplacePublicItemsViewProps extends CatalogLayoutProps export interface CatalogLayoutMarketplacePublicItemsViewProps extends CatalogLayoutProps
{ {
@ -44,7 +44,7 @@ export const CatalogLayoutMarketplacePublicItemsView: FC<CatalogLayoutMarketplac
return SORT_TYPES_ADVANCED; return SORT_TYPES_ADVANCED;
} }
return []; return [];
}, [searchType]); }, [ searchType ]);
const purchaseItem = useCallback((offerData: MarketplaceOfferData) => const purchaseItem = useCallback((offerData: MarketplaceOfferData) =>
{ {
@ -124,7 +124,7 @@ export const CatalogLayoutMarketplacePublicItemsView: FC<CatalogLayoutMarketplac
}); });
NotificationUtilities.confirm(LocalizeText('catalog.marketplace.confirm_higher_header') + NotificationUtilities.confirm(LocalizeText('catalog.marketplace.confirm_higher_header') +
'\n' + LocalizeText('catalog.marketplace.confirm_price', ['price'], [parser.newPrice.toString()]), () => '\n' + LocalizeText('catalog.marketplace.confirm_price', [ 'price' ], [ parser.newPrice.toString() ]), () =>
{ {
SendMessageComposer(new BuyMarketplaceOfferMessageComposer(parser.offerId)); SendMessageComposer(new BuyMarketplaceOfferMessageComposer(parser.offerId));
}, },
@ -134,7 +134,7 @@ export const CatalogLayoutMarketplacePublicItemsView: FC<CatalogLayoutMarketplac
NotificationUtilities.simpleAlert(LocalizeText('catalog.alert.notenough.credits.description'), NotificationAlertType.DEFAULT, null, null, LocalizeText('catalog.alert.notenough.title')); NotificationUtilities.simpleAlert(LocalizeText('catalog.alert.notenough.credits.description'), NotificationAlertType.DEFAULT, null, null, LocalizeText('catalog.alert.notenough.title'));
break; break;
} }
}, [lastSearch, requestOffers]); }, [ lastSearch, requestOffers ]);
UseMessageEventHook(MarketPlaceOffersEvent, onMarketPlaceOffersEvent); UseMessageEventHook(MarketPlaceOffersEvent, onMarketPlaceOffersEvent);
UseMessageEventHook(MarketplaceBuyOfferResultEvent, onMarketplaceBuyOfferResultEvent); UseMessageEventHook(MarketplaceBuyOfferResultEvent, onMarketplaceBuyOfferResultEvent);

View File

@ -46,7 +46,7 @@ export const SearchFormView: FC<SearchFormViewProps> = props =>
setSortType(sortType); setSortType(sortType);
if(searchType === MarketplaceSearchType.BY_ACTIVITY || MarketplaceSearchType.BY_VALUE === searchType) onSearch({ minPrice: -1, maxPrice: -1, query: '', type: sortType }); if(searchType === MarketplaceSearchType.BY_ACTIVITY || MarketplaceSearchType.BY_VALUE === searchType) onSearch({ minPrice: -1, maxPrice: -1, query: '', type: sortType });
}, [onSearch, searchType, sortTypes]); }, [ onSearch, searchType, sortTypes ]);
return ( return (
<Column gap={ 1 }> <Column gap={ 1 }>

View File

@ -64,7 +64,10 @@ export const MarketplacePostOfferView : FC<{}> = props =>
SendMessageComposer(new MakeOfferMessageComposer(askingPrice, item.isWallItem ? 2 : 1, item.id)); SendMessageComposer(new MakeOfferMessageComposer(askingPrice, item.isWallItem ? 2 : 1, item.id));
setItem(null); setItem(null);
}, },
() => { setItem(null) }, null, null, LocalizeText('inventory.marketplace.confirm_offer.title')); () =>
{
setItem(null)
}, null, null, LocalizeText('inventory.marketplace.confirm_offer.title'));
} }
return ( return (
@ -82,7 +85,7 @@ export const MarketplacePostOfferView : FC<{}> = props =>
</Column> </Column>
<Column overflow="auto"> <Column overflow="auto">
<Text italics> <Text italics>
{ LocalizeText('inventory.marketplace.make_offer.expiration_info', ['time'], [marketplaceConfiguration.offerTime.toString()]) } { LocalizeText('inventory.marketplace.make_offer.expiration_info', [ 'time' ], [ marketplaceConfiguration.offerTime.toString() ]) }
</Text> </Text>
<div className="input-group has-validation"> <div className="input-group has-validation">
<input className="form-control form-control-sm" type="number" min={ 0 } value={ askingPrice } onChange={ event => setAskingPrice(parseInt(event.target.value)) } placeholder={ LocalizeText('inventory.marketplace.make_offer.price_request') } /> <input className="form-control form-control-sm" type="number" min={ 0 } value={ askingPrice } onChange={ event => setAskingPrice(parseInt(event.target.value)) } placeholder={ LocalizeText('inventory.marketplace.make_offer.price_request') } />

View File

@ -21,7 +21,7 @@ export const VipGiftItem : FC<VipGiftItemViewProps> = props =>
const productData = offer.products[0]; const productData = offer.products[0];
return ProductImageUtility.getProductImageUrl(productData.productType, productData.furniClassId, productData.extraParam); return ProductImageUtility.getProductImageUrl(productData.productType, productData.furniClassId, productData.extraParam);
}, [offer]); }, [ offer ]);
const getItemTitle = useCallback(() => const getItemTitle = useCallback(() =>
{ {
@ -32,7 +32,7 @@ export const VipGiftItem : FC<VipGiftItemViewProps> = props =>
const localizationKey = ProductImageUtility.getProductCategory(productData.productType, productData.furniClassId) === 2 ? 'wallItem.name.' + productData.furniClassId : 'roomItem.name.' + productData.furniClassId; const localizationKey = ProductImageUtility.getProductCategory(productData.productType, productData.furniClassId) === 2 ? 'wallItem.name.' + productData.furniClassId : 'roomItem.name.' + productData.furniClassId;
return LocalizeText(localizationKey); return LocalizeText(localizationKey);
}, [offer]); }, [ offer ]);
const getItemDesc = useCallback( () => const getItemDesc = useCallback( () =>
{ {
@ -43,7 +43,7 @@ export const VipGiftItem : FC<VipGiftItemViewProps> = props =>
const localizationKey = ProductImageUtility.getProductCategory(productData.productType, productData.furniClassId) === 2 ? 'wallItem.desc.' + productData.furniClassId : 'roomItem.desc.' + productData.furniClassId ; const localizationKey = ProductImageUtility.getProductCategory(productData.productType, productData.furniClassId) === 2 ? 'wallItem.desc.' + productData.furniClassId : 'roomItem.desc.' + productData.furniClassId ;
return LocalizeText(localizationKey); return LocalizeText(localizationKey);
}, [offer]); }, [ offer ]);
return ( return (
<LayoutGridItem center={ false } column={ false } alignItems="center" className="p-1"> <LayoutGridItem center={ false } column={ false } alignItems="center" className="p-1">

View File

@ -15,7 +15,7 @@ export const ChatHistoryMessageHandler: FC<{}> = props =>
{ {
const { chatHistoryState = null, roomHistoryState = null } = useChatHistoryContext(); const { chatHistoryState = null, roomHistoryState = null } = useChatHistoryContext();
const [needsRoomInsert, setNeedsRoomInsert ] = useState(false); const [ needsRoomInsert, setNeedsRoomInsert ] = useState(false);
const addChatEntry = useCallback((entry: IChatEntry) => const addChatEntry = useCallback((entry: IChatEntry) =>
{ {
@ -32,7 +32,7 @@ export const ChatHistoryMessageHandler: FC<{}> = props =>
//dispatchUiEvent(new ChatHistoryEvent(ChatHistoryEvent.CHAT_HISTORY_CHANGED)); //dispatchUiEvent(new ChatHistoryEvent(ChatHistoryEvent.CHAT_HISTORY_CHANGED));
}, [chatHistoryState]); }, [ chatHistoryState ]);
const addRoomHistoryEntry = useCallback((entry: IRoomHistoryEntry) => const addRoomHistoryEntry = useCallback((entry: IRoomHistoryEntry) =>
{ {
@ -45,7 +45,7 @@ export const ChatHistoryMessageHandler: FC<{}> = props =>
} }
roomHistoryState.notify(); roomHistoryState.notify();
}, [roomHistoryState]); }, [ roomHistoryState ]);
const onChatEvent = useCallback((event: RoomSessionChatEvent) => const onChatEvent = useCallback((event: RoomSessionChatEvent) =>
{ {
@ -62,7 +62,7 @@ export const ChatHistoryMessageHandler: FC<{}> = props =>
const entry: IChatEntry = { id: -1, entityId: userData.webID, name: userData.name, look: userData.figure, entityType: userData.type, message: event.message, timestamp: timeString, type: ChatEntryType.TYPE_CHAT, roomId: roomSession.roomId }; const entry: IChatEntry = { id: -1, entityId: userData.webID, name: userData.name, look: userData.figure, entityType: userData.type, message: event.message, timestamp: timeString, type: ChatEntryType.TYPE_CHAT, roomId: roomSession.roomId };
addChatEntry(entry); addChatEntry(entry);
}, [addChatEntry]); }, [ addChatEntry ]);
UseRoomSessionManagerEvent(RoomSessionChatEvent.CHAT_EVENT, onChatEvent); UseRoomSessionManagerEvent(RoomSessionChatEvent.CHAT_EVENT, onChatEvent);
@ -104,7 +104,7 @@ export const ChatHistoryMessageHandler: FC<{}> = props =>
setNeedsRoomInsert(false); setNeedsRoomInsert(false);
} }
}, [addChatEntry, addRoomHistoryEntry, needsRoomInsert]); }, [ addChatEntry, addRoomHistoryEntry, needsRoomInsert ]);
UseMessageEventHook(GetGuestRoomResultEvent, onGetGuestRoomResultEvent); UseMessageEventHook(GetGuestRoomResultEvent, onGetGuestRoomResultEvent);

View File

@ -20,7 +20,7 @@ export const FloorplanEditorView: FC<{}> = props =>
const [ originalFloorplanSettings, setOriginalFloorplanSettings ] = useState<IFloorplanSettings>({ const [ originalFloorplanSettings, setOriginalFloorplanSettings ] = useState<IFloorplanSettings>({
tilemap: '', tilemap: '',
reservedTiles: [], reservedTiles: [],
entryPoint: [0, 0], entryPoint: [ 0, 0 ],
entryPointDir: 2, entryPointDir: 2,
wallHeight: -1, wallHeight: -1,
thicknessWall: 1, thicknessWall: 1,

View File

@ -151,7 +151,7 @@ export class FloorplanEditor extends PixiApplicationProxy
{ {
if(this._isHolding) if(this._isHolding)
{ {
const [realX, realY] = getTileFromScreenPosition(tileStartX, tileStartY); const [ realX, realY ] = getTileFromScreenPosition(tileStartX, tileStartY);
if(isClick) if(isClick)
{ {
@ -246,7 +246,7 @@ export class FloorplanEditor extends PixiApplicationProxy
if(tile.isBlocked) assetName = FloorplanEditor.TILE_BLOCKED; if(tile.isBlocked) assetName = FloorplanEditor.TILE_BLOCKED;
//if((tile.height === 'x') || tile.height === 'X') continue; //if((tile.height === 'x') || tile.height === 'X') continue;
const [positionX, positionY] = getScreenPositionForTile(x, y); const [ positionX, positionY ] = getScreenPositionForTile(x, y);
this._tilemapRenderer.tile(this._assetCollection.getTexture(`floor_editor_${ assetName }`), positionX, positionY); this._tilemapRenderer.tile(this._assetCollection.getTexture(`floor_editor_${ assetName }`), positionX, positionY);
} }

View File

@ -7,7 +7,7 @@ export const getScreenPositionForTile = (x: number, y: number): [number , number
positionX = positionX + 1024; // center the map in the canvas positionX = positionX + 1024; // center the map in the canvas
return [positionX, positionY]; return [ positionX, positionY ];
} }
export const getTileFromScreenPosition = (x: number, y: number): [number, number] => export const getTileFromScreenPosition = (x: number, y: number): [number, number] =>
@ -17,7 +17,7 @@ export const getTileFromScreenPosition = (x: number, y: number): [number, number
const realX = ((translatedX /(TILE_SIZE / 2)) + (y / (TILE_SIZE / 4))) / 2; const realX = ((translatedX /(TILE_SIZE / 2)) + (y / (TILE_SIZE / 4))) / 2;
const realY = ((y /(TILE_SIZE / 4)) - (translatedX / (TILE_SIZE / 2))) / 2; const realY = ((y /(TILE_SIZE / 4)) - (translatedX / (TILE_SIZE / 2))) / 2;
return [realX, realY]; return [ realX, realY ];
} }
export const convertNumbersForSaving = (value: number): number => export const convertNumbersForSaving = (value: number): number =>

View File

@ -6,5 +6,6 @@ export class MessengerSettings
public userFriendLimit: number = 0, public userFriendLimit: number = 0,
public normalFriendLimit: number = 0, public normalFriendLimit: number = 0,
public extendedFriendLimit: number = 0, public extendedFriendLimit: number = 0,
public categories: FriendCategoryData[] = []) {} public categories: FriendCategoryData[] = [])
{}
} }

View File

@ -43,7 +43,7 @@ export const FriendsListView: FC<FriendsListViewProps> = props =>
} }
return LocalizeText('friendlist.removefriendconfirm.userlist', [ 'user_names' ], [ userNames.join(', ') ]); return LocalizeText('friendlist.removefriendconfirm.userlist', [ 'user_names' ], [ userNames.join(', ') ]);
}, [offlineFriends, onlineFriends, selectedFriendsIds]); }, [ offlineFriends, onlineFriends, selectedFriendsIds ]);
const selectFriend = useCallback((userId: number) => const selectFriend = useCallback((userId: number) =>
{ {

View File

@ -26,7 +26,7 @@ export const FriendsMessengerThreadGroup: FC<FriendsMessengerThreadGroupProps> =
if( (group.type === GroupType.GROUP_CHAT) && (group.chats.length && getGroupChatData(group.chats[0].extraData).userId === GetSessionDataManager().userId)) return true; if( (group.type === GroupType.GROUP_CHAT) && (group.chats.length && getGroupChatData(group.chats[0].extraData).userId === GetSessionDataManager().userId)) return true;
return false; return false;
}, [group, thread]); }, [ group, thread ]);
if(!thread || !group) return null; if(!thread || !group) return null;
@ -37,8 +37,8 @@ export const FriendsMessengerThreadGroup: FC<FriendsMessengerThreadGroupProps> =
{ group.chats.map((chat, index) => { group.chats.map((chat, index) =>
{ {
return ( return (
<div className="d-flex gap-2 w-100 justify-content-start"> <div key={ index } className="d-flex gap-2 w-100 justify-content-start">
<Base key={ index } className="w-100 text-break"> <Base className="w-100 text-break">
{ chat.type === MessengerThreadChat.SECURITY_NOTIFICATION && { chat.type === MessengerThreadChat.SECURITY_NOTIFICATION &&
<Base className="bg-light rounded mb-2 d-flex gap-2 px-2 py-1 small text-muted align-items-center"> <Base className="bg-light rounded mb-2 d-flex gap-2 px-2 py-1 small text-muted align-items-center">
<Base className="nitro-friends-spritesheet icon-warning flex-shrink-0" /> <Base className="nitro-friends-spritesheet icon-warning flex-shrink-0" />

View File

@ -12,29 +12,29 @@ import { FriendsMessengerThreadView } from './FriendsMessengerThreadView';
export const FriendsMessengerView: FC<{}> = props => export const FriendsMessengerView: FC<{}> = props =>
{ {
const [isVisible, setIsVisible] = useState(false); const [ isVisible, setIsVisible ] = useState(false);
const [messageThreads, setMessageThreads] = useState<MessengerThread[]>([]); const [ messageThreads, setMessageThreads ] = useState<MessengerThread[]>([]);
const [activeThreadIndex, setActiveThreadIndex] = useState(-1); const [ activeThreadIndex, setActiveThreadIndex ] = useState(-1);
const [hiddenThreadIndexes, setHiddenThreadIndexes] = useState<number[]>([]); const [ hiddenThreadIndexes, setHiddenThreadIndexes ] = useState<number[]>([]);
const [messageText, setMessageText] = useState(''); const [ messageText, setMessageText ] = useState('');
const [updateValue, setUpdateValue] = useState({}); const [ updateValue, setUpdateValue ] = useState({});
const { friends = [] } = useFriendsContext(); const { friends = [] } = useFriendsContext();
const messagesBox = useRef<HTMLDivElement>(); const messagesBox = useRef<HTMLDivElement>();
const followFriend = useCallback(() => const followFriend = useCallback(() =>
{ {
SendMessageComposer(new FollowFriendMessageComposer(messageThreads[activeThreadIndex].participant.id)); SendMessageComposer(new FollowFriendMessageComposer(messageThreads[activeThreadIndex].participant.id));
}, [messageThreads, activeThreadIndex]); }, [ messageThreads, activeThreadIndex ]);
const openProfile = useCallback(() => const openProfile = useCallback(() =>
{ {
GetUserProfile(messageThreads[activeThreadIndex].participant.id); GetUserProfile(messageThreads[activeThreadIndex].participant.id);
}, [messageThreads, activeThreadIndex]); }, [ messageThreads, activeThreadIndex ]);
const getFriend = useCallback((userId: number) => const getFriend = useCallback((userId: number) =>
{ {
return ((friends.find(friend => (friend.id === userId))) || null); return ((friends.find(friend => (friend.id === userId))) || null);
}, [friends]); }, [ friends ]);
const visibleThreads = useMemo(() => const visibleThreads = useMemo(() =>
{ {
@ -44,7 +44,7 @@ export const FriendsMessengerView: FC<{}> = props =>
return true; return true;
}); });
}, [messageThreads, hiddenThreadIndexes]); }, [ messageThreads, hiddenThreadIndexes ]);
const getMessageThreadWithIndex = useCallback<(userId: number) => [number, MessengerThread]>((userId: number) => const getMessageThreadWithIndex = useCallback<(userId: number) => [number, MessengerThread]>((userId: number) =>
{ {
@ -62,7 +62,7 @@ export const FriendsMessengerView: FC<{}> = props =>
{ {
setHiddenThreadIndexes(prevValue => setHiddenThreadIndexes(prevValue =>
{ {
const newIndexes = [...prevValue]; const newIndexes = [ ...prevValue ];
newIndexes.splice(hiddenIndex, 1); newIndexes.splice(hiddenIndex, 1);
@ -70,34 +70,34 @@ export const FriendsMessengerView: FC<{}> = props =>
}); });
} }
return [i, thread]; return [ i, thread ];
} }
} }
} }
const friend = getFriend(userId); const friend = getFriend(userId);
if(!friend) return [-1, null]; if(!friend) return [ -1, null ];
const thread = new MessengerThread(friend); const thread = new MessengerThread(friend);
const newThreads = [...messageThreads, thread]; const newThreads = [ ...messageThreads, thread ];
setMessageThreads(newThreads); setMessageThreads(newThreads);
return [(newThreads.length - 1), thread]; return [ (newThreads.length - 1), thread ];
}, [messageThreads, hiddenThreadIndexes, getFriend]); }, [ messageThreads, hiddenThreadIndexes, getFriend ]);
const onNewConsoleMessageEvent = useCallback((event: NewConsoleMessageEvent) => const onNewConsoleMessageEvent = useCallback((event: NewConsoleMessageEvent) =>
{ {
const parser = event.getParser(); const parser = event.getParser();
const [threadIndex, thread] = getMessageThreadWithIndex(parser.senderId); const [ threadIndex, thread ] = getMessageThreadWithIndex(parser.senderId);
if((threadIndex === -1) || !thread) return; if((threadIndex === -1) || !thread) return;
thread.addMessage(parser.senderId, parser.messageText, parser.secondsSinceSent, parser.extraData); thread.addMessage(parser.senderId, parser.messageText, parser.secondsSinceSent, parser.extraData);
setMessageThreads(prevValue => [...prevValue]); setMessageThreads(prevValue => [ ...prevValue ]);
}, [getMessageThreadWithIndex]); }, [ getMessageThreadWithIndex ]);
UseMessageEventHook(NewConsoleMessageEvent, onNewConsoleMessageEvent); UseMessageEventHook(NewConsoleMessageEvent, onNewConsoleMessageEvent);
@ -105,14 +105,14 @@ export const FriendsMessengerView: FC<{}> = props =>
{ {
const parser = event.getParser(); const parser = event.getParser();
const [threadIndex, thread] = getMessageThreadWithIndex(parser.senderId); const [ threadIndex, thread ] = getMessageThreadWithIndex(parser.senderId);
if((threadIndex === -1) || !thread) return; if((threadIndex === -1) || !thread) return;
thread.addMessage(null, parser.messageText, 0, null, MessengerThreadChat.ROOM_INVITE); thread.addMessage(null, parser.messageText, 0, null, MessengerThreadChat.ROOM_INVITE);
setMessageThreads(prevValue => [...prevValue]); setMessageThreads(prevValue => [ ...prevValue ]);
}, [getMessageThreadWithIndex]); }, [ getMessageThreadWithIndex ]);
UseMessageEventHook(RoomInviteEvent, onRoomInviteEvent); UseMessageEventHook(RoomInviteEvent, onRoomInviteEvent);
@ -144,17 +144,17 @@ export const FriendsMessengerView: FC<{}> = props =>
BatchUpdates(() => BatchUpdates(() =>
{ {
setMessageThreads(prevValue => [...prevValue]); setMessageThreads(prevValue => [ ...prevValue ]);
setMessageText(''); setMessageText('');
}); });
}, [messageThreads, activeThreadIndex, messageText]); }, [ messageThreads, activeThreadIndex, messageText ]);
const onKeyDown = useCallback((event: KeyboardEvent<HTMLInputElement>) => const onKeyDown = useCallback((event: KeyboardEvent<HTMLInputElement>) =>
{ {
if(event.key !== 'Enter') return; if(event.key !== 'Enter') return;
sendMessage(); sendMessage();
}, [sendMessage]); }, [ sendMessage ]);
const linkReceived = useCallback((url: string) => const linkReceived = useCallback((url: string) =>
{ {
@ -169,7 +169,7 @@ export const FriendsMessengerView: FC<{}> = props =>
return; return;
} }
const [threadIndex] = getMessageThreadWithIndex(parseInt(parts[2])); const [ threadIndex ] = getMessageThreadWithIndex(parseInt(parts[2]));
if(threadIndex === -1) return; if(threadIndex === -1) return;
@ -178,13 +178,13 @@ export const FriendsMessengerView: FC<{}> = props =>
setActiveThreadIndex(threadIndex); setActiveThreadIndex(threadIndex);
setIsVisible(true); setIsVisible(true);
}); });
}, [getMessageThreadWithIndex]); }, [ getMessageThreadWithIndex ]);
const closeThread = useCallback((threadIndex: number) => const closeThread = useCallback((threadIndex: number) =>
{ {
setHiddenThreadIndexes(prevValue => setHiddenThreadIndexes(prevValue =>
{ {
const values = [...prevValue]; const values = [ ...prevValue ];
if(values.indexOf(threadIndex) === -1) values.push(threadIndex); if(values.indexOf(threadIndex) === -1) values.push(threadIndex);
@ -202,19 +202,19 @@ export const FriendsMessengerView: FC<{}> = props =>
AddEventLinkTracker(linkTracker); AddEventLinkTracker(linkTracker);
return () => RemoveLinkEventTracker(linkTracker); return () => RemoveLinkEventTracker(linkTracker);
}, [linkReceived]); }, [ linkReceived ]);
useEffect(() => useEffect(() =>
{ {
if(!isVisible) return; if(!isVisible) return;
if(activeThreadIndex === -1) setActiveThreadIndex(0); if(activeThreadIndex === -1) setActiveThreadIndex(0);
}, [isVisible, activeThreadIndex]); }, [ isVisible, activeThreadIndex ]);
useEffect(() => useEffect(() =>
{ {
if(hiddenThreadIndexes.indexOf(activeThreadIndex) >= 0) setActiveThreadIndex(0); if(hiddenThreadIndexes.indexOf(activeThreadIndex) >= 0) setActiveThreadIndex(0);
}, [activeThreadIndex, hiddenThreadIndexes]); }, [ activeThreadIndex, hiddenThreadIndexes ]);
useEffect(() => useEffect(() =>
{ {
@ -230,7 +230,7 @@ export const FriendsMessengerView: FC<{}> = props =>
activeThread.setRead(); activeThread.setRead();
setUpdateValue({}); setUpdateValue({});
} }
}, [isVisible, messageThreads, activeThreadIndex]); }, [ isVisible, messageThreads, activeThreadIndex ]);
useEffect(() => useEffect(() =>
{ {
@ -258,13 +258,13 @@ export const FriendsMessengerView: FC<{}> = props =>
if(isUnread) PlaySound(SoundNames.MESSENGER_MESSAGE_RECEIVED); if(isUnread) PlaySound(SoundNames.MESSENGER_MESSAGE_RECEIVED);
DispatchUiEvent(new FriendsMessengerIconEvent(FriendsMessengerIconEvent.UPDATE_ICON, isUnread ? FriendsMessengerIconEvent.UNREAD_ICON : FriendsMessengerIconEvent.SHOW_ICON)); DispatchUiEvent(new FriendsMessengerIconEvent(FriendsMessengerIconEvent.UPDATE_ICON, isUnread ? FriendsMessengerIconEvent.UNREAD_ICON : FriendsMessengerIconEvent.SHOW_ICON));
}, [visibleThreads, updateValue]); }, [ visibleThreads, updateValue ]);
if(!isVisible) return null; if(!isVisible) return null;
return ( return (
<NitroCardView className="nitro-friends-messenger" uniqueKey="nitro-friends-messenger" theme="primary-slim"> <NitroCardView className="nitro-friends-messenger" uniqueKey="nitro-friends-messenger" theme="primary-slim">
<NitroCardHeaderView headerText={LocalizeText('messenger.window.title', ['OPEN_CHAT_COUNT'], [visibleThreads.length.toString()])} onCloseClick={event => setIsVisible(false)} /> <NitroCardHeaderView headerText={LocalizeText('messenger.window.title', [ 'OPEN_CHAT_COUNT' ], [ visibleThreads.length.toString() ])} onCloseClick={event => setIsVisible(false)} />
<NitroCardContentView> <NitroCardContentView>
<Grid overflow="hidden"> <Grid overflow="hidden">
<Column size={ 4 }> <Column size={ 4 }>

View File

@ -126,7 +126,7 @@ export const GroupInformationView: FC<GroupInformationViewProps> = props =>
<i className="icon icon-group-decorate" title={ LocalizeText('group.memberscandecorate') } /> } <i className="icon icon-group-decorate" title={ LocalizeText('group.memberscandecorate') } /> }
</Flex> </Flex>
</Flex> </Flex>
<Text small>{ LocalizeText('group.created', ['date', 'owner'], [groupInformation.createdAt, groupInformation.ownerName]) }</Text> <Text small>{ LocalizeText('group.created', [ 'date', 'owner' ], [ groupInformation.createdAt, groupInformation.ownerName ]) }</Text>
</Column> </Column>
<Text small overflow="auto" className="group-description">{ groupInformation.description }</Text> <Text small overflow="auto" className="group-description">{ groupInformation.description }</Text>
</Column> </Column>

View File

@ -160,7 +160,7 @@ export const GroupMembersView: FC<{}> = props =>
return ( return (
<NitroCardView className="nitro-group-members" theme="primary-slim"> <NitroCardView className="nitro-group-members" theme="primary-slim">
<NitroCardHeaderView headerText={ LocalizeText('group.members.title', ['groupName'], [ membersData ? membersData.groupTitle : '' ]) } onCloseClick={ event => setGroupId(-1) } /> <NitroCardHeaderView headerText={ LocalizeText('group.members.title', [ 'groupName' ], [ membersData ? membersData.groupTitle : '' ]) } onCloseClick={ event => setGroupId(-1) } />
<NitroCardContentView overflow="hidden"> <NitroCardContentView overflow="hidden">
<Flex gap={ 2 }> <Flex gap={ 2 }>
<Flex center className="group-badge"> <Flex center className="group-badge">
@ -211,7 +211,7 @@ export const GroupMembersView: FC<{}> = props =>
<FontAwesomeIcon icon="chevron-left" /> <FontAwesomeIcon icon="chevron-left" />
</Button> </Button>
<Text small> <Text small>
{ LocalizeText('group.members.pageinfo', ['amount', 'page', 'totalPages'], [membersData.totalMembersCount.toString(), (membersData.pageIndex + 1).toString(), totalPages.toString()]) } { LocalizeText('group.members.pageinfo', [ 'amount', 'page', 'totalPages' ], [ membersData.totalMembersCount.toString(), (membersData.pageIndex + 1).toString(), totalPages.toString() ]) }
</Text> </Text>
<Button disabled={ (membersData.pageIndex === (totalPages - 1)) } onClick={ event => setPageId(prevValue => (prevValue + 1)) }> <Button disabled={ (membersData.pageIndex === (totalPages - 1)) } onClick={ event => setPageId(prevValue => (prevValue + 1)) }>
<FontAwesomeIcon icon="chevron-right" /> <FontAwesomeIcon icon="chevron-right" />

View File

@ -55,7 +55,7 @@ export const GuideToolView: FC<{}> = props =>
setNoCloseButton(true); setNoCloseButton(true);
break; break;
case GuideSessionState.GUIDE_ONGOING: case GuideSessionState.GUIDE_ONGOING:
setHeaderText(LocalizeText('guide.help.request.guide.ongoing.title', ['name'], [replacement])); setHeaderText(LocalizeText('guide.help.request.guide.ongoing.title', [ 'name' ], [ replacement ]));
setNoCloseButton(true); setNoCloseButton(true);
break; break;
case GuideSessionState.USER_CREATE: case GuideSessionState.USER_CREATE:
@ -67,7 +67,7 @@ export const GuideToolView: FC<{}> = props =>
setNoCloseButton(true); setNoCloseButton(true);
break; break;
case GuideSessionState.USER_ONGOING: case GuideSessionState.USER_ONGOING:
setHeaderText(LocalizeText('guide.help.request.user.ongoing.title', ['name'], [replacement])); setHeaderText(LocalizeText('guide.help.request.user.ongoing.title', [ 'name' ], [ replacement ]));
setNoCloseButton(true); setNoCloseButton(true);
break; break;
case GuideSessionState.USER_FEEDBACK: case GuideSessionState.USER_FEEDBACK:
@ -183,7 +183,7 @@ export const GuideToolView: FC<{}> = props =>
{ {
const parser = event.getParser(); const parser = event.getParser();
const messageGroups = [...ongoingMessageGroups]; const messageGroups = [ ...ongoingMessageGroups ];
let lastGroup = messageGroups[messageGroups.length - 1]; let lastGroup = messageGroups[messageGroups.length - 1];
@ -203,7 +203,7 @@ export const GuideToolView: FC<{}> = props =>
{ {
const parser = event.getParser(); const parser = event.getParser();
const messageGroups = [...ongoingMessageGroups]; const messageGroups = [ ...ongoingMessageGroups ];
let lastGroup = messageGroups[messageGroups.length - 1]; let lastGroup = messageGroups[messageGroups.length - 1];
@ -217,7 +217,7 @@ export const GuideToolView: FC<{}> = props =>
lastGroup.addChat(new GuideToolMessage(parser.roomName, parser.roomId)); lastGroup.addChat(new GuideToolMessage(parser.roomName, parser.roomId));
setOngoingMessageGroups(messageGroups); setOngoingMessageGroups(messageGroups);
}, [isOnDuty, ongoingMessageGroups, ongoingUserId]); }, [ isOnDuty, ongoingMessageGroups, ongoingUserId ]);
UseMessageEventHook(GuideSessionInvitedToGuideRoomMessageEvent, onGuideSessionInvitedToGuideRoomMessageEvent); UseMessageEventHook(GuideSessionInvitedToGuideRoomMessageEvent, onGuideSessionInvitedToGuideRoomMessageEvent);
@ -299,7 +299,7 @@ export const GuideToolView: FC<{}> = props =>
case 'toggle_duty': case 'toggle_duty':
if(!isHandlingBullyReports && !isHandlingGuideRequests && !isHandlingHelpRequests) if(!isHandlingBullyReports && !isHandlingGuideRequests && !isHandlingHelpRequests)
{ {
DispatchUiEvent(new NotificationAlertEvent([LocalizeText('guide.help.guide.tool.noqueueselected.message')], null, null, null, LocalizeText('guide.help.guide.tool.noqueueselected.caption'), null)); DispatchUiEvent(new NotificationAlertEvent([ LocalizeText('guide.help.guide.tool.noqueueselected.message') ], null, null, null, LocalizeText('guide.help.guide.tool.noqueueselected.caption'), null));
return; return;
} }
@ -315,7 +315,7 @@ export const GuideToolView: FC<{}> = props =>
window.open(url); window.open(url);
return; return;
} }
}, [isHandlingBullyReports, isHandlingGuideRequests, isHandlingHelpRequests]); }, [ isHandlingBullyReports, isHandlingGuideRequests, isHandlingHelpRequests ]);
if(!isVisible) return null; if(!isVisible) return null;

View File

@ -85,7 +85,7 @@ export const GuideToolOngoingView: FC<GuideToolOngoingViewProps> = props =>
{ messageGroups.map((group, index) => { messageGroups.map((group, index) =>
{ {
return ( return (
<Flex fullWidth justifyContent={ isOwnChat(group.userId) ? 'end' : 'start' } gap={ 2 }> <Flex key={ index } fullWidth justifyContent={ isOwnChat(group.userId) ? 'end' : 'start' } gap={ 2 }>
<Base shrink className="message-avatar"> <Base shrink className="message-avatar">
{ (!isOwnChat(group.userId)) && { (!isOwnChat(group.userId)) &&
<LayoutAvatarImageView figure={ userFigure } direction={ 2 } /> } <LayoutAvatarImageView figure={ userFigure } direction={ 2 } /> }

View File

@ -90,7 +90,7 @@ export const HcCenterView: FC<{}> = props =>
setIsVisible(!isVisible); setIsVisible(!isVisible);
break; break;
} }
}, [isVisible]); }, [ isVisible ]);
UseUiEvent(HcCenterEvent.TOGGLE_HC_CENTER, onHcCenterEvent); UseUiEvent(HcCenterEvent.TOGGLE_HC_CENTER, onHcCenterEvent);
@ -169,7 +169,7 @@ export const HcCenterView: FC<{}> = props =>
AddEventLinkTracker(linkTracker); AddEventLinkTracker(linkTracker);
return () => RemoveLinkEventTracker(linkTracker); return () => RemoveLinkEventTracker(linkTracker);
}, [ linkReceived]); }, [ linkReceived ]);
useEffect(() => useEffect(() =>
{ {
@ -201,13 +201,16 @@ export const HcCenterView: FC<{}> = props =>
<Popover id="popover-basic"> <Popover id="popover-basic">
<Popover.Body className="text-black py-2 px-3"> <Popover.Body className="text-black py-2 px-3">
<h5>{LocalizeText('hccenter.breakdown.title')}</h5> <h5>{LocalizeText('hccenter.breakdown.title')}</h5>
<div>{LocalizeText('hccenter.breakdown.creditsspent', ['credits'], [kickbackData.totalCreditsSpent.toString()])}</div> <div>{LocalizeText('hccenter.breakdown.creditsspent', [ 'credits' ], [ kickbackData.totalCreditsSpent.toString() ])}</div>
<div>{LocalizeText('hccenter.breakdown.paydayfactor.percent', ['percent'], [(kickbackData.kickbackPercentage * 100).toString()])}</div> <div>{LocalizeText('hccenter.breakdown.paydayfactor.percent', [ 'percent' ], [ (kickbackData.kickbackPercentage * 100).toString() ])}</div>
<div>{LocalizeText('hccenter.breakdown.streakbonus', ['credits'], [kickbackData.creditRewardForStreakBonus.toString()])}</div> <div>{LocalizeText('hccenter.breakdown.streakbonus', [ 'credits' ], [ kickbackData.creditRewardForStreakBonus.toString() ])}</div>
<hr className="w-100 text-black my-1" /> <hr className="w-100 text-black my-1" />
<div>{LocalizeText('hccenter.breakdown.total', ['credits', 'actual'], [getHcPaydayAmount(), <div>{LocalizeText('hccenter.breakdown.total', [ 'credits', 'actual' ], [ getHcPaydayAmount(),
((((kickbackData.kickbackPercentage * kickbackData.totalCreditsSpent) + kickbackData.creditRewardForStreakBonus) * 100) / 100).toString()])}</div> ((((kickbackData.kickbackPercentage * kickbackData.totalCreditsSpent) + kickbackData.creditRewardForStreakBonus) * 100) / 100).toString() ])}</div>
<div className="btn btn-link text-primary p-0" onClick={() => { CreateLinkEvent('habbopages/' + GetConfiguration('hc.center')['payday.habbopage']) }}>{ <div className="btn btn-link text-primary p-0" onClick={() =>
{
CreateLinkEvent('habbopages/' + GetConfiguration('hc.center')['payday.habbopage'])
}}>{
LocalizeText('hccenter.special.infolink')} LocalizeText('hccenter.special.infolink')}
</div> </div>
</Popover.Body> </Popover.Body>
@ -221,7 +224,10 @@ export const HcCenterView: FC<{}> = props =>
<Column gap={ 1 }> <Column gap={ 1 }>
<div className="hc-logo" /> <div className="hc-logo" />
<Flex> <Flex>
<Button variant="success" onClick={ event => { CreateLinkEvent('catalog/open/' + GetConfiguration('catalog.links')['hc.buy_hc']) } }> <Button variant="success" onClick={ event =>
{
CreateLinkEvent('catalog/open/' + GetConfiguration('catalog.links')['hc.buy_hc'])
} }>
{ LocalizeText((clubStatus === ClubStatus.ACTIVE) ? 'hccenter.btn.extend' : 'hccenter.btn.buy') } { LocalizeText((clubStatus === ClubStatus.ACTIVE) ? 'hccenter.btn.extend' : 'hccenter.btn.buy') }
</Button> </Button>
</Flex> </Flex>
@ -243,7 +249,10 @@ export const HcCenterView: FC<{}> = props =>
<Column className="rounded-start bg-primary p-2 payday-special mb-1"> <Column className="rounded-start bg-primary p-2 payday-special mb-1">
<h4 className="mb-1">{LocalizeText('hccenter.special.title')}</h4> <h4 className="mb-1">{LocalizeText('hccenter.special.title')}</h4>
<div>{LocalizeText('hccenter.special.info')}</div> <div>{LocalizeText('hccenter.special.info')}</div>
<div className="btn btn-link text-white p-0 mt-auto align-self-baseline" onClick={() => { CreateLinkEvent('habbopages/' + GetConfiguration('hc.center')['payday.habbopage']) }}>{LocalizeText('hccenter.special.infolink')}</div> <div className="btn btn-link text-white p-0 mt-auto align-self-baseline" onClick={() =>
{
CreateLinkEvent('habbopages/' + GetConfiguration('hc.center')['payday.habbopage'])
}}>{LocalizeText('hccenter.special.infolink')}</div>
</Column> </Column>
<div className="payday flex-shrink-0 p-2"> <div className="payday flex-shrink-0 p-2">
<h5 className="mb-2 ms-2">{LocalizeText('hccenter.special.time.title')}</h5> <h5 className="mb-2 ms-2">{LocalizeText('hccenter.special.time.title')}</h5>
@ -271,16 +280,22 @@ export const HcCenterView: FC<{}> = props =>
<div className="rounded bg-success p-2 d-flex flex-row mb-0"> <div className="rounded bg-success p-2 d-flex flex-row mb-0">
<div> <div>
<h4 className="mb-1">{LocalizeText('hccenter.gift.title')}</h4> <h4 className="mb-1">{LocalizeText('hccenter.gift.title')}</h4>
<div dangerouslySetInnerHTML={{ __html: unclaimedGifts > 0 ? LocalizeText('hccenter.unclaimedgifts', ['unclaimedgifts'], [unclaimedGifts.toString()]) : LocalizeText('hccenter.gift.info') }}></div> <div dangerouslySetInnerHTML={{ __html: unclaimedGifts > 0 ? LocalizeText('hccenter.unclaimedgifts', [ 'unclaimedgifts' ], [ unclaimedGifts.toString() ]) : LocalizeText('hccenter.gift.info') }}></div>
</div> </div>
<button className="btn btn-primary btn-lg align-self-center ms-auto" onClick={() => { CreateLinkEvent('catalog/open/' + GetConfiguration('catalog.links')['hc.hc_gifts']) }}>{LocalizeText(clubStatus === ClubStatus.ACTIVE ? 'hccenter.btn.gifts.redeem' : 'hccenter.btn.gifts.view')}</button> <button className="btn btn-primary btn-lg align-self-center ms-auto" onClick={() =>
{
CreateLinkEvent('catalog/open/' + GetConfiguration('catalog.links')['hc.hc_gifts'])
}}>{LocalizeText(clubStatus === ClubStatus.ACTIVE ? 'hccenter.btn.gifts.redeem' : 'hccenter.btn.gifts.view')}</button>
</div> </div>
} }
{GetConfiguration('hc.center')['benefits.info'] && {GetConfiguration('hc.center')['benefits.info'] &&
<div className="benefits text-black py-2"> <div className="benefits text-black py-2">
<h5 className="mb-1 text-primary">{LocalizeText('hccenter.general.title')}</h5> <h5 className="mb-1 text-primary">{LocalizeText('hccenter.general.title')}</h5>
<div className="mb-2" dangerouslySetInnerHTML={{ __html: LocalizeText('hccenter.general.info') }} /> <div className="mb-2" dangerouslySetInnerHTML={{ __html: LocalizeText('hccenter.general.info') }} />
<button className="btn btn-link p-0 text-primary" onClick={() => { CreateLinkEvent('habbopages/' + GetConfiguration('hc.center')['benefits.habbopage']) }}>{LocalizeText('hccenter.general.infolink')}</button> <button className="btn btn-link p-0 text-primary" onClick={() =>
{
CreateLinkEvent('habbopages/' + GetConfiguration('hc.center')['benefits.habbopage'])
}}>{LocalizeText('hccenter.general.infolink')}</button>
</div> </div>
} }
</NitroCardContentView> </NitroCardContentView>

View File

@ -2,7 +2,7 @@
export class BadgeResolver export class BadgeResolver
{ {
public static default_badge: string = 'HC1'; public static default_badge: string = 'HC1';
public static badges: string[] = ['ACH_VipHC1', 'ACH_VipHC2', 'ACH_VipHC3', 'ACH_VipHC4', 'ACH_VipHC5', 'HC1', 'HC2', 'HC3', 'HC4', 'HC5']; public static badges: string[] = [ 'ACH_VipHC1', 'ACH_VipHC2', 'ACH_VipHC3', 'ACH_VipHC4', 'ACH_VipHC5', 'HC1', 'HC2', 'HC3', 'HC4', 'HC5' ];
public static getClubBadge(k: string[]): string public static getClubBadge(k: string[]): string

View File

@ -104,7 +104,7 @@ export const HelpView: FC<{}> = props =>
} }
return null; return null;
}, [helpReportState.currentStep]); }, [ helpReportState.currentStep ]);
return ( return (
<HelpContextProvider value={ { helpReportState, setHelpReportState } }> <HelpContextProvider value={ { helpReportState, setHelpReportState } }>

View File

@ -15,7 +15,7 @@ export const HelpIndexView: FC<{}> = props =>
const reportState = Object.assign({}, helpReportState ); const reportState = Object.assign({}, helpReportState );
reportState.currentStep = 1; reportState.currentStep = 1;
setHelpReportState(reportState); setHelpReportState(reportState);
},[helpReportState, setHelpReportState]); },[ helpReportState, setHelpReportState ]);
const onRequestMySanctionStatusClick = useCallback(() => const onRequestMySanctionStatusClick = useCallback(() =>
{ {

View File

@ -39,11 +39,11 @@ export const SanctionSatusView:FC<{}> = props =>
if(length > 24) if(length > 24)
{ {
localizationName = (localizationName + '.days'); localizationName = (localizationName + '.days');
return LocalizeText(localizationName, ['days'], [(length / 24).toString()]); return LocalizeText(localizationName, [ 'days' ], [ (length / 24).toString() ]);
} }
} }
return LocalizeText(localizationName, ['hours'], [length.toString()]); return LocalizeText(localizationName, [ 'hours' ], [ length.toString() ]);
}, []); }, []);
if(!sanctionInfo) return null; if(!sanctionInfo) return null;

View File

@ -9,7 +9,7 @@ export const NameChangeInitView:FC<NameChangeLayoutViewProps> = props =>
return ( return (
<div className="d-flex flex-column gap-4 h-100"> <div className="d-flex flex-column gap-4 h-100">
<div className="bg-muted rounded p-2 text-center">{ LocalizeText('tutorial.name_change.info.main') }</div> <div className="bg-muted rounded p-2 text-center">{ LocalizeText('tutorial.name_change.info.main') }</div>
<div className="fw-bold d-flex align-items-center justify-content-center h-100 w-100">{ LocalizeText('tutorial.name_change.current', ['name'], [GetSessionDataManager().userName]) }</div> <div className="fw-bold d-flex align-items-center justify-content-center h-100 w-100">{ LocalizeText('tutorial.name_change.current', [ 'name' ], [ GetSessionDataManager().userName ]) }</div>
<div className="d-flex gap-2"> <div className="d-flex gap-2">
<button className="btn btn-success w-100" onClick={ () => onAction('start') }>{ LocalizeText('tutorial.name_change.change') }</button> <button className="btn btn-success w-100" onClick={ () => onAction('start') }>{ LocalizeText('tutorial.name_change.change') }</button>
<button className="btn btn-primary w-100" onClick={ () => onAction('confirmation', GetSessionDataManager().userName) }>{ LocalizeText('tutorial.name_change.keep') }</button> <button className="btn btn-primary w-100" onClick={ () => onAction('confirmation', GetSessionDataManager().userName) }>{ LocalizeText('tutorial.name_change.keep') }</button>

View File

@ -83,8 +83,8 @@ export const NameChangeInputView:FC<NameChangeLayoutViewProps> = props =>
<button className="btn btn-primary" disabled={ newUsername === '' || isChecking } onClick={ check }>{ LocalizeText('tutorial.name_change.check') }</button> <button className="btn btn-primary" disabled={ newUsername === '' || isChecking } onClick={ check }>{ LocalizeText('tutorial.name_change.check') }</button>
</div> </div>
{ !errorCode && !canProceed && <div className="bg-muted rounded p-2 text-center">{ LocalizeText('help.tutorial.name.info') }</div> } { !errorCode && !canProceed && <div className="bg-muted rounded p-2 text-center">{ LocalizeText('help.tutorial.name.info') }</div> }
{ errorCode && <div className="bg-danger rounded p-2 text-center text-white">{ LocalizeText(`help.tutorial.name.${errorCode}`, ['name'], [newUsername]) }</div> } { errorCode && <div className="bg-danger rounded p-2 text-center text-white">{ LocalizeText(`help.tutorial.name.${errorCode}`, [ 'name' ], [ newUsername ]) }</div> }
{ canProceed && <div className="bg-success rounded p-2 text-center text-white">{ LocalizeText('help.tutorial.name.available', ['name'], [newUsername]) }</div> } { canProceed && <div className="bg-success rounded p-2 text-center text-white">{ LocalizeText('help.tutorial.name.available', [ 'name' ], [ newUsername ]) }</div> }
{ suggestions && <div className="d-flex flex-column gap-2"> { suggestions && <div className="d-flex flex-column gap-2">
{ {
suggestions.map((suggestion, i) => suggestions.map((suggestion, i) =>

View File

@ -51,7 +51,7 @@ export const NameChangeView:FC<{}> = props =>
case INPUT: return 'tutorial.name_change.title.select'; case INPUT: return 'tutorial.name_change.title.select';
case CONFIRMATION: return 'tutorial.name_change.title.confirm'; case CONFIRMATION: return 'tutorial.name_change.title.confirm';
} }
}, [layout]); }, [ layout ]);
if(!isVisible) return null; if(!isVisible) return null;

View File

@ -6,7 +6,7 @@ import { BatchUpdates, UseMessageEventHook, UseRoomSessionManagerEvent } from '.
import { WidgetSlotView } from './views/widgets/WidgetSlotView'; import { WidgetSlotView } from './views/widgets/WidgetSlotView';
export const HotelView: FC<{}> = props => export const HotelView: FC<{}> = props =>
{ {
const [isVisible, setIsVisible] = useState(true); const [ isVisible, setIsVisible ] = useState(true);
const widgetSlotCount = 7; const widgetSlotCount = 7;
const [ userFigure, setUserFigure ] = useState<string>(null); const [ userFigure, setUserFigure ] = useState<string>(null);
const [ userInfo, setUserInfo ] = useState<UserInfoDataParser>(null); const [ userInfo, setUserInfo ] = useState<UserInfoDataParser>(null);

View File

@ -8,8 +8,8 @@ export interface PromoArticleWidgetViewProps
export const PromoArticleWidgetView: FC<PromoArticleWidgetViewProps> = props => export const PromoArticleWidgetView: FC<PromoArticleWidgetViewProps> = props =>
{ {
const [articles, setArticles] = useState<PromoArticleData[]>(null); const [ articles, setArticles ] = useState<PromoArticleData[]>(null);
const [index, setIndex] = useState(0); const [ index, setIndex ] = useState(0);
const handleSelect = (selectedIndex) => const handleSelect = (selectedIndex) =>
{ {

View File

@ -90,7 +90,7 @@ export const MainView: FC<{}> = props =>
{ {
RemoveLinkEventTracker(linkTracker); RemoveLinkEventTracker(linkTracker);
} }
}, [onLinkReceived]); }, [ onLinkReceived ]);
return ( return (
<Base fit> <Base fit>

View File

@ -34,7 +34,7 @@ export const ModToolsMessageHandler: FC<{}> = props =>
} }
}); });
}, [dispatchModToolsState]); }, [ dispatchModToolsState ]);
const onIssueInfoMessageEvent = useCallback((event: IssueInfoMessageEvent) => const onIssueInfoMessageEvent = useCallback((event: IssueInfoMessageEvent) =>
{ {
@ -62,7 +62,7 @@ export const ModToolsMessageHandler: FC<{}> = props =>
} }
}); });
}, [dispatchModToolsState, tickets]); }, [ dispatchModToolsState, tickets ]);
const onModeratorToolPreferencesEvent = useCallback((event: ModeratorToolPreferencesEvent) => const onModeratorToolPreferencesEvent = useCallback((event: ModeratorToolPreferencesEvent) =>
{ {
@ -100,7 +100,7 @@ export const ModToolsMessageHandler: FC<{}> = props =>
tickets: newTickets tickets: newTickets
} }
}); });
}, [dispatchModToolsState, tickets]); }, [ dispatchModToolsState, tickets ]);
const onModeratorActionResultMessageEvent = useCallback((event: ModeratorActionResultMessageEvent) => const onModeratorActionResultMessageEvent = useCallback((event: ModeratorActionResultMessageEvent) =>
{ {
@ -135,7 +135,7 @@ export const ModToolsMessageHandler: FC<{}> = props =>
SetCfhCategories(categories); SetCfhCategories(categories);
}, [dispatchModToolsState]); }, [ dispatchModToolsState ]);
const onCfhSanctionMessageEvent = useCallback((event: CfhSanctionMessageEvent) => const onCfhSanctionMessageEvent = useCallback((event: CfhSanctionMessageEvent) =>
{ {
@ -195,7 +195,7 @@ export const ModToolsMessageHandler: FC<{}> = props =>
dispatchModToolsState({ dispatchModToolsState({
type: ModToolsActions.SET_OPEN_ROOMS, type: ModToolsActions.SET_OPEN_ROOMS,
payload: { payload: {
openRooms: [...rooms, castedEvent.roomId] openRooms: [ ...rooms, castedEvent.roomId ]
} }
}); });
return; return;
@ -210,7 +210,7 @@ export const ModToolsMessageHandler: FC<{}> = props =>
dispatchModToolsState({ dispatchModToolsState({
type: ModToolsActions.SET_OPEN_ROOM_CHATLOGS, type: ModToolsActions.SET_OPEN_ROOM_CHATLOGS,
payload: { payload: {
openRoomChatlogs: [...chatlogs, castedEvent.roomId] openRoomChatlogs: [ ...chatlogs, castedEvent.roomId ]
} }
}); });
return; return;
@ -225,7 +225,7 @@ export const ModToolsMessageHandler: FC<{}> = props =>
dispatchModToolsState({ dispatchModToolsState({
type: ModToolsActions.SET_OPEN_USERINFO, type: ModToolsActions.SET_OPEN_USERINFO,
payload: { payload: {
openUserInfo: [...userInfo, castedEvent.userId] openUserInfo: [ ...userInfo, castedEvent.userId ]
} }
}); });
return; return;
@ -240,13 +240,13 @@ export const ModToolsMessageHandler: FC<{}> = props =>
dispatchModToolsState({ dispatchModToolsState({
type: ModToolsActions.SET_OPEN_USER_CHATLOGS, type: ModToolsActions.SET_OPEN_USER_CHATLOGS,
payload: { payload: {
openUserChatlogs: [...userChatlog, castedEvent.userId] openUserChatlogs: [ ...userChatlog, castedEvent.userId ]
} }
}); });
return; return;
} }
} }
}, [openRooms, dispatchModToolsState, openRoomChatlogs, openUserInfo, openUserChatlogs]); }, [ openRooms, dispatchModToolsState, openRoomChatlogs, openUserInfo, openUserChatlogs ]);
UseUiEvent(ModToolsEvent.OPEN_ROOM_INFO, onModToolsEvent); UseUiEvent(ModToolsEvent.OPEN_ROOM_INFO, onModToolsEvent);
UseUiEvent(ModToolsEvent.OPEN_ROOM_CHATLOG, onModToolsEvent); UseUiEvent(ModToolsEvent.OPEN_ROOM_CHATLOG, onModToolsEvent);

View File

@ -17,7 +17,7 @@ import { ModToolsUserView } from './views/user/ModToolsUserView';
export const ModToolsView: FC<{}> = props => export const ModToolsView: FC<{}> = props =>
{ {
const [ isVisible, setIsVisible ] = useState(false); const [ isVisible, setIsVisible ] = useState(false);
const [ selectedUser, setSelectedUser] = useState<ISelectedUser>(null); const [ selectedUser, setSelectedUser ] = useState<ISelectedUser>(null);
const [ isTicketsVisible, setIsTicketsVisible ] = useState(false); const [ isTicketsVisible, setIsTicketsVisible ] = useState(false);
const [ modToolsState, dispatchModToolsState ] = useReducer(ModToolsReducer, initialModTools); const [ modToolsState, dispatchModToolsState ] = useReducer(ModToolsReducer, initialModTools);
const { currentRoomId = null, openRooms = null, openRoomChatlogs = null, openUserChatlogs = null, openUserInfo = null } = modToolsState; const { currentRoomId = null, openRooms = null, openRoomChatlogs = null, openUserChatlogs = null, openUserInfo = null } = modToolsState;
@ -179,7 +179,7 @@ export const ModToolsView: FC<{}> = props =>
return; return;
} }
} }
}, [openRooms, currentRoomId, openRoomChatlogs, selectedUser, openUserInfo, openUserChatlogs]); }, [ openRooms, currentRoomId, openRoomChatlogs, selectedUser, openUserInfo, openUserChatlogs ]);
return ( return (
<ModToolsContextProvider value={ { modToolsState, dispatchModToolsState } }> <ModToolsContextProvider value={ { modToolsState, dispatchModToolsState } }>

View File

@ -98,7 +98,7 @@ export const ChatlogView: FC<ChatlogViewProps> = props =>
} }
return count; return count;
}, [records]); }, [ records ]);
const RoomInfo = (props: { roomId: number, roomName: string, uniqueKey: Key, style: CSSProperties }) => const RoomInfo = (props: { roomId: number, roomName: string, uniqueKey: Key, style: CSSProperties }) =>
{ {

View File

@ -19,7 +19,7 @@ export const CfhChatlogView: FC<CfhChatlogViewProps> = props =>
useEffect(() => useEffect(() =>
{ {
SendMessageComposer(new GetCfhChatlogMessageComposer(issueId)); SendMessageComposer(new GetCfhChatlogMessageComposer(issueId));
}, [issueId]); }, [ issueId ]);
const onCfhChatlogEvent = useCallback((event: CfhChatlogEvent) => const onCfhChatlogEvent = useCallback((event: CfhChatlogEvent) =>
{ {
@ -28,7 +28,7 @@ export const CfhChatlogView: FC<CfhChatlogViewProps> = props =>
if(!parser || parser.data.issueId !== issueId) return; if(!parser || parser.data.issueId !== issueId) return;
setChatlogData(parser.data); setChatlogData(parser.data);
}, [issueId]); }, [ issueId ]);
UseMessageEventHook(CfhChatlogEvent, onCfhChatlogEvent); UseMessageEventHook(CfhChatlogEvent, onCfhChatlogEvent);
@ -36,7 +36,7 @@ export const CfhChatlogView: FC<CfhChatlogViewProps> = props =>
<NitroCardView className="nitro-mod-tools-chatlog" theme="primary-slim"> <NitroCardView className="nitro-mod-tools-chatlog" theme="primary-slim">
<NitroCardHeaderView headerText={'Issue Chatlog'} onCloseClick={onCloseClick} /> <NitroCardHeaderView headerText={'Issue Chatlog'} onCloseClick={onCloseClick} />
<NitroCardContentView className="text-black"> <NitroCardContentView className="text-black">
{ chatlogData && <ChatlogView records={[chatlogData.chatRecord]} />} { chatlogData && <ChatlogView records={[ chatlogData.chatRecord ]} />}
</NitroCardContentView> </NitroCardContentView>
</NitroCardView> </NitroCardView>
); );

View File

@ -13,7 +13,7 @@ export const ModToolsMyIssuesTabView: FC<ModToolsMyIssuesTabViewProps> = props =
{ {
const { myIssues = null, onIssueHandleClick = null } = props; const { myIssues = null, onIssueHandleClick = null } = props;
const onReleaseIssue = (issueId: number) => SendMessageComposer(new ReleaseIssuesMessageComposer([issueId])); const onReleaseIssue = (issueId: number) => SendMessageComposer(new ReleaseIssuesMessageComposer([ issueId ]));
return ( return (
<Column gap={ 0 } overflow="hidden"> <Column gap={ 0 } overflow="hidden">

View File

@ -12,7 +12,7 @@ export const ModToolsOpenIssuesTabView: FC<ModToolsOpenIssuesTabViewProps> = pro
{ {
const { openIssues = null } = props; const { openIssues = null } = props;
const onPickIssue = (issueId: number) => SendMessageComposer(new PickIssuesMessageComposer([issueId], false, 0, 'pick issue button')); const onPickIssue = (issueId: number) => SendMessageComposer(new PickIssuesMessageComposer([ issueId ], false, 0, 'pick issue button'));
return ( return (
<Column gap={ 0 } overflow="hidden"> <Column gap={ 0 } overflow="hidden">

View File

@ -32,21 +32,21 @@ export const ModToolsTicketsView: FC<ModToolsTicketsViewProps> = props =>
if(!tickets) return []; if(!tickets) return [];
return tickets.filter(issue => issue.state === IssueMessageData.STATE_OPEN); return tickets.filter(issue => issue.state === IssueMessageData.STATE_OPEN);
}, [tickets]); }, [ tickets ]);
const myIssues = useMemo(() => const myIssues = useMemo(() =>
{ {
if(!tickets) return []; if(!tickets) return [];
return tickets.filter(issue => (issue.state === IssueMessageData.STATE_PICKED) && (issue.pickerUserId === GetSessionDataManager().userId)); return tickets.filter(issue => (issue.state === IssueMessageData.STATE_PICKED) && (issue.pickerUserId === GetSessionDataManager().userId));
}, [tickets]); }, [ tickets ]);
const pickedIssues = useMemo(() => const pickedIssues = useMemo(() =>
{ {
if(!tickets) return []; if(!tickets) return [];
return tickets.filter(issue => issue.state === IssueMessageData.STATE_PICKED); return tickets.filter(issue => issue.state === IssueMessageData.STATE_PICKED);
}, [tickets]); }, [ tickets ]);
const onIssueInfoClosed = useCallback((issueId: number) => const onIssueInfoClosed = useCallback((issueId: number) =>
{ {
@ -57,7 +57,7 @@ export const ModToolsTicketsView: FC<ModToolsTicketsViewProps> = props =>
const newValues = Array.from(issueInfoWindows); const newValues = Array.from(issueInfoWindows);
newValues.splice(indexOfValue, 1); newValues.splice(indexOfValue, 1);
setIssueInfoWindows(newValues); setIssueInfoWindows(newValues);
}, [issueInfoWindows]); }, [ issueInfoWindows ]);
const onIssueHandleClicked = useCallback((issueId: number) => const onIssueHandleClicked = useCallback((issueId: number) =>
{ {
@ -71,7 +71,7 @@ export const ModToolsTicketsView: FC<ModToolsTicketsViewProps> = props =>
{ {
onIssueInfoClosed(issueId); onIssueInfoClosed(issueId);
} }
}, [issueInfoWindows, onIssueInfoClosed]); }, [ issueInfoWindows, onIssueInfoClosed ]);
const CurrentTabComponent = useCallback(() => const CurrentTabComponent = useCallback(() =>
{ {
@ -82,7 +82,7 @@ export const ModToolsTicketsView: FC<ModToolsTicketsViewProps> = props =>
case 2: return <ModToolsPickedIssuesTabView pickedIssues={pickedIssues}/>; case 2: return <ModToolsPickedIssuesTabView pickedIssues={pickedIssues}/>;
default: return null; default: return null;
} }
}, [currentTab, myIssues, onIssueHandleClicked, openIssues, pickedIssues]); }, [ currentTab, myIssues, onIssueHandleClicked, openIssues, pickedIssues ]);
return ( return (
<> <>

View File

@ -43,7 +43,7 @@ export const ModToolsUserRoomVisitsView: FC<ModToolsUserRoomVisitsViewProps> = p
useEffect(() => useEffect(() =>
{ {
SendMessageComposer(new GetRoomVisitsMessageComposer(userId)); SendMessageComposer(new GetRoomVisitsMessageComposer(userId));
}, [userId]); }, [ userId ]);
if(!userId) return null; if(!userId) return null;

View File

@ -142,7 +142,7 @@ export const NavigatorRoomInfoView: FC<NavigatorRoomInfoViewProps> = props =>
<Flex pointer alignItems="center" gap={ 1 } onClick={ () => processAction('open_group_info') }> <Flex pointer alignItems="center" gap={ 1 } onClick={ () => processAction('open_group_info') }>
<LayoutBadgeImageView className="flex-none" badgeCode={ navigatorData.enteredGuestRoom.groupBadgeCode } isGroup={ true } /> <LayoutBadgeImageView className="flex-none" badgeCode={ navigatorData.enteredGuestRoom.groupBadgeCode } isGroup={ true } />
<Text underline> <Text underline>
{ LocalizeText('navigator.guildbase', ['groupName'], [navigatorData.enteredGuestRoom.groupName]) } { LocalizeText('navigator.guildbase', [ 'groupName' ], [ navigatorData.enteredGuestRoom.groupName ]) }
</Text> </Text>
</Flex> } </Flex> }
</Column> </Column>

View File

@ -9,7 +9,7 @@ const NEW_LINE_REGEX = /\n\r|\n|\r/mg;
export const NitropediaView: FC<{}> = props => export const NitropediaView: FC<{}> = props =>
{ {
const [ content, setContent ] = useState<string>(null); const [ content, setContent ] = useState<string>(null);
const [ header, setHeader] = useState<string>(''); const [ header, setHeader ] = useState<string>('');
const [ dimensions, setDimensions ] = useState<{ width: number, height: number}>(null); const [ dimensions, setDimensions ] = useState<{ width: number, height: number}>(null);
const elementRef = useRef<HTMLDivElement>(null); const elementRef = useRef<HTMLDivElement>(null);

View File

@ -11,14 +11,14 @@ export const NotificationDefaultAlertView: FC<NotificationDefaultAlertViewProps>
{ {
const { item = null, title = ((props.item && props.item.title) || ''), close = null, ...rest } = props; const { item = null, title = ((props.item && props.item.title) || ''), close = null, ...rest } = props;
const [imageFailed, setImageFailed] = useState<boolean>(false) const [ imageFailed, setImageFailed ] = useState<boolean>(false)
const visitUrl = useCallback(() => const visitUrl = useCallback(() =>
{ {
NotificationUtilities.openUrl(item.clickUrl); NotificationUtilities.openUrl(item.clickUrl);
close(); close();
}, [item, close]); }, [ item, close ]);
const hasFrank = item.alertType === NotificationAlertType.DEFAULT; const hasFrank = item.alertType === NotificationAlertType.DEFAULT;
@ -26,8 +26,11 @@ export const NotificationDefaultAlertView: FC<NotificationDefaultAlertViewProps>
<LayoutNotificationAlertView title={title} close={close} {...rest} type={ hasFrank ? NotificationAlertType.DEFAULT : item.alertType }> <LayoutNotificationAlertView title={title} close={close} {...rest} type={ hasFrank ? NotificationAlertType.DEFAULT : item.alertType }>
<Flex fullHeight overflow="auto" gap={ hasFrank || (item.imageUrl && !imageFailed) ? 2 : 0 }> <Flex fullHeight overflow="auto" gap={ hasFrank || (item.imageUrl && !imageFailed) ? 2 : 0 }>
{hasFrank && !item.imageUrl && <Base className="notification-frank flex-shrink-0" /> } {hasFrank && !item.imageUrl && <Base className="notification-frank flex-shrink-0" /> }
{item.imageUrl && !imageFailed && <img src={item.imageUrl} alt={item.title} onError={() => { setImageFailed(true) }} className="align-self-baseline" />} {item.imageUrl && !imageFailed && <img src={item.imageUrl} alt={item.title} onError={() =>
<Base classNames={['notification-text overflow-y-auto d-flex flex-column w-100', (item.clickUrl && !hasFrank) ? 'justify-content-center' : '']}> {
setImageFailed(true)
}} className="align-self-baseline" />}
<Base classNames={[ 'notification-text overflow-y-auto d-flex flex-column w-100', (item.clickUrl && !hasFrank) ? 'justify-content-center' : '' ]}>
{ (item.messages.length > 0) && item.messages.map((message, index) => { (item.messages.length > 0) && item.messages.map((message, index) =>
{ {
const htmlText = message.replace(/\r\n|\r|\n/g, '<br />'); const htmlText = message.replace(/\r\n|\r|\n/g, '<br />');

View File

@ -12,26 +12,26 @@ export const NotificationSeachAlertView: FC<NotificationDefaultAlertViewProps> =
const { item = null, title = ((props.item && props.item.title) || ''), close = null, ...rest } = props; const { item = null, title = ((props.item && props.item.title) || ''), close = null, ...rest } = props;
const [ searchValue, setSearchValue ] = useState(''); const [ searchValue, setSearchValue ] = useState('');
const [ results, setResults] = useState<string[]>([]); const [ results, setResults ] = useState<string[]>([]);
const visitUrl = useCallback(() => const visitUrl = useCallback(() =>
{ {
NotificationUtilities.openUrl(item.clickUrl); NotificationUtilities.openUrl(item.clickUrl);
close(); close();
}, [item, close]); }, [ item, close ]);
useEffect(() => useEffect(() =>
{ {
setResults(JSON.parse(item.messages[0])); setResults(JSON.parse(item.messages[0]));
}, [item]) }, [ item ])
const updateSearchValue = useCallback((value: string) => const updateSearchValue = useCallback((value: string) =>
{ {
let res = JSON.parse(item.messages[0]); let res = JSON.parse(item.messages[0]);
setResults(res.filter((val: string) => val.includes(value))); setResults(res.filter((val: string) => val.includes(value)));
setSearchValue(value); setSearchValue(value);
},[item]) },[ item ])
const isAction = (item.clickUrl && item.clickUrl.startsWith('event:')); const isAction = (item.clickUrl && item.clickUrl.startsWith('event:'));

View File

@ -36,7 +36,7 @@ export const ChooserWidgetView: FC<ChooserWidgetViewProps> = props =>
setSelectedItem(item); setSelectedItem(item);
widgetHandler.processWidgetMessage(new RoomWidgetRoomObjectMessage(RoomWidgetRoomObjectMessage.SELECT_OBJECT, item.id, item.category)); widgetHandler.processWidgetMessage(new RoomWidgetRoomObjectMessage(RoomWidgetRoomObjectMessage.SELECT_OBJECT, item.id, item.category));
}, [ widgetHandler, setSelectedItem]); }, [ widgetHandler, setSelectedItem ]);
const rowRenderer: ListRowRenderer = (props: ListRowProps) => const rowRenderer: ListRowRenderer = (props: ListRowProps) =>
{ {

View File

@ -4,5 +4,6 @@ export class DimmerFurnitureWidgetPresetItem
public id: number = 0, public id: number = 0,
public type: number = 0, public type: number = 0,
public color: number = 0, public color: number = 0,
public light: number = 0) {} public light: number = 0)
{}
} }

View File

@ -8,8 +8,8 @@ import { BatchUpdates, UseEventDispatcherHook } from '../../../../../hooks';
import { useRoomContext } from '../../../RoomContext'; import { useRoomContext } from '../../../RoomContext';
import { DimmerFurnitureWidgetPresetItem } from './DimmerFurnitureWidgetPresetItem'; import { DimmerFurnitureWidgetPresetItem } from './DimmerFurnitureWidgetPresetItem';
const AVAILABLE_COLORS: number[] = [7665141, 21495, 15161822, 15353138, 15923281, 8581961, 0]; const AVAILABLE_COLORS: number[] = [ 7665141, 21495, 15161822, 15353138, 15923281, 8581961, 0 ];
const HTML_COLORS: string[] = ['#74F5F5', '#0053F7', '#E759DE', '#EA4532', '#F2F851', '#82F349', '#000000']; const HTML_COLORS: string[] = [ '#74F5F5', '#0053F7', '#E759DE', '#EA4532', '#F2F851', '#82F349', '#000000' ];
const MIN_BRIGHTNESS: number = 76; const MIN_BRIGHTNESS: number = 76;
const MAX_BRIGHTNESS: number = 255; const MAX_BRIGHTNESS: number = 255;

View File

@ -6,5 +6,6 @@ export class FurnitureEngravingLockData
public type: number = 0, public type: number = 0,
public usernames: string[] = [], public usernames: string[] = [],
public figures: string[] = [], public figures: string[] = [],
public date: string = null) {} public date: string = null)
{}
} }

View File

@ -8,8 +8,8 @@ import { ContextMenuHeaderView } from '../../context-menu/ContextMenuHeaderView'
import { ContextMenuListView } from '../../context-menu/ContextMenuListView'; import { ContextMenuListView } from '../../context-menu/ContextMenuListView';
import { ObjectLocationView } from '../../object-location/ObjectLocationView'; import { ObjectLocationView } from '../../object-location/ObjectLocationView';
const SCORE_TYPES = ['perteam', 'mostwins', 'classic']; const SCORE_TYPES = [ 'perteam', 'mostwins', 'classic' ];
const CLEAR_TYPES = ['alltime', 'daily', 'weekly', 'monthly']; const CLEAR_TYPES = [ 'alltime', 'daily', 'weekly', 'monthly' ];
export const FurnitureHighScoreView: FC<{}> = props => export const FurnitureHighScoreView: FC<{}> = props =>
{ {
@ -68,7 +68,7 @@ export const FurnitureHighScoreView: FC<{}> = props =>
<ObjectLocationView key={ index } objectId={ objectId } category={ RoomObjectCategory.FLOOR }> <ObjectLocationView key={ index } objectId={ objectId } category={ RoomObjectCategory.FLOOR }>
<Column className="nitro-widget-high-score nitro-context-menu" gap={ 0 }> <Column className="nitro-widget-high-score nitro-context-menu" gap={ 0 }>
<ContextMenuHeaderView> <ContextMenuHeaderView>
{ LocalizeText('high.score.display.caption', [ 'scoretype', 'cleartype' ], [ LocalizeText(`high.score.display.scoretype.${ SCORE_TYPES[stuffData.scoreType] }`), LocalizeText(`high.score.display.cleartype.${ CLEAR_TYPES[stuffData.clearType] }`)]) } { LocalizeText('high.score.display.caption', [ 'scoretype', 'cleartype' ], [ LocalizeText(`high.score.display.scoretype.${ SCORE_TYPES[stuffData.scoreType] }`), LocalizeText(`high.score.display.cleartype.${ CLEAR_TYPES[stuffData.clearType] }`) ]) }
</ContextMenuHeaderView> </ContextMenuHeaderView>
<ContextMenuListView overflow="hidden" gap={ 1 } className="h-100"> <ContextMenuListView overflow="hidden" gap={ 1 } className="h-100">
<Column gap={ 1 }> <Column gap={ 1 }>

View File

@ -7,5 +7,6 @@ export class FurnitureMannequinData
public figure: string, public figure: string,
public gender: string, public gender: string,
public clubLevel: number, public clubLevel: number,
public renderedFigure: string = null) {} public renderedFigure: string = null)
{}
} }

View File

@ -16,7 +16,7 @@ const ACTION_SET_NAME: number = 1;
const ACTION_WEAR: number = 2; const ACTION_WEAR: number = 2;
const ACTION_SAVE: number = 3; const ACTION_SAVE: number = 3;
const MANNEQUIN_FIGURE = ['hd', 99999, [ 99998 ]]; const MANNEQUIN_FIGURE = [ 'hd', 99999, [ 99998 ] ];
const MANNEQUIN_CLOTHING_PART_TYPES = [ const MANNEQUIN_CLOTHING_PART_TYPES = [
AvatarFigurePartType.CHEST_ACCESSORY, AvatarFigurePartType.CHEST_ACCESSORY,
AvatarFigurePartType.COAT_CHEST, AvatarFigurePartType.COAT_CHEST,

View File

@ -6,5 +6,6 @@ export class FurnitureStickieData
public color: string, public color: string,
public text: string, public text: string,
public canModify: boolean = false, public canModify: boolean = false,
public isEditing: boolean = false) {} public isEditing: boolean = false)
{}
} }

View File

@ -1,4 +1,4 @@
export const STICKIE_COLORS = ['9CCEFF','FF9CFF', '9CFF9C','FFFF33']; export const STICKIE_COLORS = [ '9CCEFF','FF9CFF', '9CFF9C','FFFF33' ];
export const STICKIE_COLOR_NAMES = [ 'blue', 'pink', 'green', 'yellow' ]; export const STICKIE_COLOR_NAMES = [ 'blue', 'pink', 'green', 'yellow' ];
export function getStickieColorName(color: string): string export function getStickieColorName(color: string): string

View File

@ -7,5 +7,6 @@ export class FurnitureTrophyData
public ownerName: string, public ownerName: string,
public date: string, public date: string,
public message: string, public message: string,
public customTitle?: string) {} public customTitle?: string)
{}
} }

View File

@ -9,15 +9,15 @@ import { YoutubeVideoPlaybackStateEnum } from './utils/YoutubeVideoPlaybackState
export const FurnitureYoutubeDisplayView: FC<{}> = props => export const FurnitureYoutubeDisplayView: FC<{}> = props =>
{ {
const [objectId, setObjectId] = useState(-1); const [ objectId, setObjectId ] = useState(-1);
const [videoId, setVideoId] = useState<string>(null); const [ videoId, setVideoId ] = useState<string>(null);
const [videoStart, setVideoStart] = useState<number>(null); const [ videoStart, setVideoStart ] = useState<number>(null);
const [videoEnd, setVideoEnd] = useState<number>(null); const [ videoEnd, setVideoEnd ] = useState<number>(null);
const [currentVideoState, setCurrentVideoState] = useState(-1); const [ currentVideoState, setCurrentVideoState ] = useState(-1);
const [selectedItem, setSelectedItem] = useState<string>(null); const [ selectedItem, setSelectedItem ] = useState<string>(null);
const [playlists, setPlaylists] = useState<YoutubeDisplayPlaylist[]>(null); const [ playlists, setPlaylists ] = useState<YoutubeDisplayPlaylist[]>(null);
const [hasControl, setHasControl] = useState(false); const [ hasControl, setHasControl ] = useState(false);
const [player, setPlayer] = useState<any>(null); const [ player, setPlayer ] = useState<any>(null);
const { eventDispatcher = null } = useRoomContext(); const { eventDispatcher = null } = useRoomContext();
const onRoomWidgetUpdateYoutubeDisplayEvent = useCallback((event: RoomWidgetUpdateYoutubeDisplayEvent) => const onRoomWidgetUpdateYoutubeDisplayEvent = useCallback((event: RoomWidgetUpdateYoutubeDisplayEvent) =>
@ -60,7 +60,7 @@ export const FurnitureYoutubeDisplayView: FC<{}> = props =>
setVideoEnd(parser.endAtSeconds); setVideoEnd(parser.endAtSeconds);
setCurrentVideoState(parser.state); setCurrentVideoState(parser.state);
}); });
}, [objectId]); }, [ objectId ]);
const onPlaylists = useCallback((event: YoutubeDisplayPlaylistsEvent) => const onPlaylists = useCallback((event: YoutubeDisplayPlaylistsEvent) =>
{ {
@ -79,7 +79,7 @@ export const FurnitureYoutubeDisplayView: FC<{}> = props =>
setVideoEnd(null); setVideoEnd(null);
setVideoStart(null); setVideoStart(null);
}); });
}, [objectId]); }, [ objectId ]);
const onControlVideo = useCallback((event: YoutubeControlVideoMessageEvent) => const onControlVideo = useCallback((event: YoutubeControlVideoMessageEvent) =>
{ {
@ -102,7 +102,7 @@ export const FurnitureYoutubeDisplayView: FC<{}> = props =>
player.pauseVideo(); player.pauseVideo();
break; break;
} }
}, [objectId, player]); }, [ objectId, player ]);
UseMessageEventHook(YoutubeDisplayVideoMessageEvent, onVideo); UseMessageEventHook(YoutubeDisplayVideoMessageEvent, onVideo);
UseMessageEventHook(YoutubeDisplayPlaylistsEvent, onPlaylists); UseMessageEventHook(YoutubeDisplayPlaylistsEvent, onPlaylists);
@ -140,7 +140,7 @@ export const FurnitureYoutubeDisplayView: FC<{}> = props =>
SendMessageComposer(new SetYoutubeDisplayPlaylistMessageComposer(objectId, action)); SendMessageComposer(new SetYoutubeDisplayPlaylistMessageComposer(objectId, action));
setSelectedItem(action); setSelectedItem(action);
} }
}, [hasControl, objectId, selectedItem, videoId]); }, [ hasControl, objectId, selectedItem, videoId ]);
const onReady = useCallback((event: any) => const onReady = useCallback((event: any) =>
{ {
@ -172,7 +172,7 @@ export const FurnitureYoutubeDisplayView: FC<{}> = props =>
} }
} }
} }
}, [currentVideoState, objectId, processAction]); }, [ currentVideoState, objectId, processAction ]);
const getYoutubeOpts = useMemo( () => const getYoutubeOpts = useMemo( () =>
{ {
@ -204,7 +204,7 @@ export const FurnitureYoutubeDisplayView: FC<{}> = props =>
end: videoEnd end: videoEnd
} }
} }
}, [videoEnd, videoStart]); }, [ videoEnd, videoStart ]);
if((objectId === -1)) return null; if((objectId === -1)) return null;

View File

@ -112,7 +112,7 @@ export const WordQuizWidgetView: FC<{}> = props =>
const updateMessage = new RoomWidgetPollMessage(RoomWidgetPollMessage.ANSWER, pollId); const updateMessage = new RoomWidgetPollMessage(RoomWidgetPollMessage.ANSWER, pollId);
updateMessage.questionId = question.id; updateMessage.questionId = question.id;
updateMessage.answers = [vote]; updateMessage.answers = [ vote ];
widgetHandler.processWidgetMessage(updateMessage); widgetHandler.processWidgetMessage(updateMessage);
@ -167,7 +167,7 @@ export const WordQuizWidgetView: FC<{}> = props =>
{ question && { question &&
<WordQuizQuestionView question={question.content} canVote={!answerSent} vote={vote} noVotes={answerCounts.get(VALUE_KEY_DISLIKE) || 0} yesVotes={answerCounts.get(VALUE_KEY_LIKE) || 0} /> } <WordQuizQuestionView question={question.content} canVote={!answerSent} vote={vote} noVotes={answerCounts.get(VALUE_KEY_DISLIKE) || 0} yesVotes={answerCounts.get(VALUE_KEY_LIKE) || 0} /> }
{ userAnswers && { userAnswers &&
Array.from(userAnswers.entries()).map(([key, value], index) => <WordQuizVoteView key={index} userIndex={key} vote={value.value} />) } Array.from(userAnswers.entries()).map(([ key, value ], index) => <WordQuizVoteView key={index} userIndex={key} vote={value.value} />) }
</> </>
); );
} }

View File

@ -43,7 +43,7 @@ export const WiredFurniSelectorView: FC<{}> = props =>
return ( return (
<Column gap={ 1 }> <Column gap={ 1 }>
<Text bold>{ LocalizeText('wiredfurni.pickfurnis.caption', ['count', 'limit'], [ furniIds.length.toString(), trigger.maximumItemSelectionCount.toString() ]) }</Text> <Text bold>{ LocalizeText('wiredfurni.pickfurnis.caption', [ 'count', 'limit' ], [ furniIds.length.toString(), trigger.maximumItemSelectionCount.toString() ]) }</Text>
<Text small>{ LocalizeText('wiredfurni.pickfurnis.desc') }</Text> <Text small>{ LocalizeText('wiredfurni.pickfurnis.desc') }</Text>
</Column> </Column>
); );

View File

@ -22,7 +22,7 @@ export const WiredActionGiveRewardView: FC<{}> = props =>
const addReward = useCallback(() => const addReward = useCallback(() =>
{ {
setRewards(rewards => [...rewards, { isBadge: false, itemCode: '', probability: null }]); setRewards(rewards => [ ...rewards, { isBadge: false, itemCode: '', probability: null } ]);
}, [ setRewards ]); }, [ setRewards ]);
const removeReward = useCallback((index: number) => const removeReward = useCallback((index: number) =>
@ -59,7 +59,7 @@ export const WiredActionGiveRewardView: FC<{}> = props =>
{ {
if(!reward.itemCode) continue; if(!reward.itemCode) continue;
const rewardsString = [reward.isBadge ? '0' : '1', reward.itemCode, reward.probability.toString()]; const rewardsString = [ reward.isBadge ? '0' : '1', reward.itemCode, reward.probability.toString() ];
stringRewards.push(rewardsString.join(',')); stringRewards.push(rewardsString.join(','));
} }
@ -68,7 +68,7 @@ export const WiredActionGiveRewardView: FC<{}> = props =>
BatchUpdates(() => BatchUpdates(() =>
{ {
setStringParam(stringRewards.join(';')); setStringParam(stringRewards.join(';'));
setIntParams([rewardTime, uniqueRewards ? 1 : 0, rewardsLimit, limitationInterval]); setIntParams([ rewardTime, uniqueRewards ? 1 : 0, rewardsLimit, limitationInterval ]);
}); });
} }
}, [ rewardTime, uniqueRewards, rewardsLimit, limitationInterval, rewards, setIntParams, setStringParam ]); }, [ rewardTime, uniqueRewards, rewardsLimit, limitationInterval, rewards, setIntParams, setStringParam ]);
@ -108,7 +108,7 @@ export const WiredActionGiveRewardView: FC<{}> = props =>
<WiredActionBaseView requiresFurni={ WiredFurniType.STUFF_SELECTION_OPTION_NONE } hasSpecialInput={ true } save={ save }> <WiredActionBaseView requiresFurni={ WiredFurniType.STUFF_SELECTION_OPTION_NONE } hasSpecialInput={ true } save={ save }>
<Flex alignItems="center" gap={ 1 }> <Flex alignItems="center" gap={ 1 }>
<input className="form-check-input" type="checkbox" id="limitEnabled" onChange={ event => setLimitEnabled(event.target.checked)} /> <input className="form-check-input" type="checkbox" id="limitEnabled" onChange={ event => setLimitEnabled(event.target.checked)} />
<Text>{ LocalizeText('wiredfurni.params.prizelimit', ['amount'], [limitEnabled ? rewardsLimit.toString() : '']) }</Text> <Text>{ LocalizeText('wiredfurni.params.prizelimit', [ 'amount' ], [ limitEnabled ? rewardsLimit.toString() : '' ]) }</Text>
</Flex> </Flex>
{ !limitEnabled && { !limitEnabled &&
<Text center small className="bg-muted rounded p-1"> <Text center small className="bg-muted rounded p-1">

View File

@ -56,7 +56,7 @@ export const WiredActionGiveScoreToPredefinedTeamView: FC<{}> = props =>
</Column> </Column>
<Column gap={ 1 }> <Column gap={ 1 }>
<Text bold>{ LocalizeText('wiredfurni.params.team') }</Text> <Text bold>{ LocalizeText('wiredfurni.params.team') }</Text>
{ [1, 2, 3, 4].map(value => { [ 1, 2, 3, 4 ].map(value =>
{ {
return ( return (
<Flex key={ value } gap={ 1 }> <Flex key={ value } gap={ 1 }>

View File

@ -20,7 +20,7 @@ export const WiredActionJoinTeamView: FC<{}> = props =>
<WiredActionBaseView requiresFurni={ WiredFurniType.STUFF_SELECTION_OPTION_NONE } hasSpecialInput={ true } save={ save }> <WiredActionBaseView requiresFurni={ WiredFurniType.STUFF_SELECTION_OPTION_NONE } hasSpecialInput={ true } save={ save }>
<Column gap={ 1 }> <Column gap={ 1 }>
<Text bold>{ LocalizeText('wiredfurni.params.team') }</Text> <Text bold>{ LocalizeText('wiredfurni.params.team') }</Text>
{ [1, 2, 3, 4].map(team => { [ 1, 2, 3, 4 ].map(team =>
{ {
return ( return (
<Flex key={ team } gap={ 1 }> <Flex key={ team } gap={ 1 }>

View File

@ -24,7 +24,7 @@ const directionOptions: { value: number, icon: string }[] = [
} }
]; ];
const rotationOptions: number[] = [0, 1, 2, 3, 4, 5, 6]; const rotationOptions: number[] = [ 0, 1, 2, 3, 4, 5, 6 ];
export const WiredActionMoveAndRotateFurniView: FC<{}> = props => export const WiredActionMoveAndRotateFurniView: FC<{}> = props =>
{ {
@ -59,7 +59,7 @@ export const WiredActionMoveAndRotateFurniView: FC<{}> = props =>
{ directionOptions.map(option => { directionOptions.map(option =>
{ {
return ( return (
<Flex alignItems="center" gap={ 1 }> <Flex key={ option.value } alignItems="center" gap={ 1 }>
<input className="form-check-input" type="radio" name="movement" id={ `movement${ option.value }` } checked={ (movement === option.value) } onChange={ event => setMovement(option.value) } /> <input className="form-check-input" type="radio" name="movement" id={ `movement${ option.value }` } checked={ (movement === option.value) } onChange={ event => setMovement(option.value) } />
<Text> <Text>
<i className={ `icon icon-${ option.icon }` } /> <i className={ `icon icon-${ option.icon }` } />
@ -74,7 +74,7 @@ export const WiredActionMoveAndRotateFurniView: FC<{}> = props =>
{ rotationOptions.map(option => { rotationOptions.map(option =>
{ {
return ( return (
<Flex alignItems="center" gap={ 1 }> <Flex key={ option } alignItems="center" gap={ 1 }>
<input className="form-check-input" type="radio" name="rotation" id={ `rotation${ option }` } checked={ (rotation === option) } onChange={ event => setRotation(option) } /> <input className="form-check-input" type="radio" name="rotation" id={ `rotation${ option }` } checked={ (rotation === option) } onChange={ event => setRotation(option) } />
<Text>{ LocalizeText(`wiredfurni.params.turn.${ option }`) }</Text> <Text>{ LocalizeText(`wiredfurni.params.turn.${ option }`) }</Text>
</Flex> </Flex>

View File

@ -36,7 +36,7 @@ const directionOptions: { value: number, icon: string }[] = [
} }
]; ];
const rotationOptions: number[] = [0, 1, 2, 3]; const rotationOptions: number[] = [ 0, 1, 2, 3 ];
export const WiredActionMoveFurniView: FC<{}> = props => export const WiredActionMoveFurniView: FC<{}> = props =>
{ {
@ -92,7 +92,7 @@ export const WiredActionMoveFurniView: FC<{}> = props =>
<Flex alignItems="center" key={ option } gap={ 1 }> <Flex alignItems="center" key={ option } gap={ 1 }>
<input className="form-check-input" type="radio" name="rotation" id={ `rotation${ option }` } checked={ (rotation === option) } onChange={ event => setRotation(option) } /> <input className="form-check-input" type="radio" name="rotation" id={ `rotation${ option }` } checked={ (rotation === option) } onChange={ event => setRotation(option) } />
<Text> <Text>
{ [1, 2].includes(option) && <i className={ `icon icon-rot-${ option }` } /> } { [ 1, 2 ].includes(option) && <i className={ `icon icon-rot-${ option }` } /> }
{ LocalizeText(`wiredfurni.params.rotatefurni.${ option }`) } { LocalizeText(`wiredfurni.params.rotatefurni.${ option }`) }
</Text> </Text>
</Flex> </Flex>

View File

@ -33,7 +33,7 @@ export const WiredActionMuteUserView: FC<{}> = props =>
return ( return (
<WiredActionBaseView requiresFurni={ WiredFurniType.STUFF_SELECTION_OPTION_NONE } hasSpecialInput={ true } save={ save }> <WiredActionBaseView requiresFurni={ WiredFurniType.STUFF_SELECTION_OPTION_NONE } hasSpecialInput={ true } save={ save }>
<Column gap={ 1 }> <Column gap={ 1 }>
<Text bold>{ LocalizeText('wiredfurni.params.length.minutes', ['minutes'], [ time.toString() ]) }</Text> <Text bold>{ LocalizeText('wiredfurni.params.length.minutes', [ 'minutes' ], [ time.toString() ]) }</Text>
<ReactSlider <ReactSlider
className={ 'nitro-slider' } className={ 'nitro-slider' }
min={ 1 } min={ 1 }

View File

@ -25,7 +25,7 @@ export const WiredConditionDateRangeView: FC<{}> = props =>
endDateMili = endDateInstance.getTime() / 1000; endDateMili = endDateInstance.getTime() / 1000;
} }
setIntParams([startDateMili, endDateMili]); setIntParams([ startDateMili, endDateMili ]);
} }
useEffect(() => useEffect(() =>

View File

@ -20,7 +20,7 @@ export const WiredConditionFurniHasFurniOnView: FC<{}> = props =>
<WiredConditionBaseView requiresFurni={ WiredFurniType.STUFF_SELECTION_OPTION_BY_ID } hasSpecialInput={ true } save={ save }> <WiredConditionBaseView requiresFurni={ WiredFurniType.STUFF_SELECTION_OPTION_BY_ID } hasSpecialInput={ true } save={ save }>
<Column gap={ 1 }> <Column gap={ 1 }>
<Text bold>{ LocalizeText('wiredfurni.params.requireall') }</Text> <Text bold>{ LocalizeText('wiredfurni.params.requireall') }</Text>
{ [0, 1].map(value => { [ 0, 1 ].map(value =>
{ {
return ( return (
<Flex alignItems="center" gap={ 1 } key={ value }> <Flex alignItems="center" gap={ 1 } key={ value }>

View File

@ -20,7 +20,7 @@ export const WiredConditionFurniHasNotFurniOnView: FC<{}> = props =>
<WiredConditionBaseView requiresFurni={ WiredFurniType.STUFF_SELECTION_OPTION_BY_ID } hasSpecialInput={ true } save={ save }> <WiredConditionBaseView requiresFurni={ WiredFurniType.STUFF_SELECTION_OPTION_BY_ID } hasSpecialInput={ true } save={ save }>
<Column gap={ 1 }> <Column gap={ 1 }>
<Text bold>{ LocalizeText('wiredfurni.params.not_requireall') }</Text> <Text bold>{ LocalizeText('wiredfurni.params.not_requireall') }</Text>
{ [0, 1].map(value => { [ 0, 1 ].map(value =>
{ {
return ( return (
<Flex alignItems="center" gap={ 1 } key={ value }> <Flex alignItems="center" gap={ 1 } key={ value }>

View File

@ -1,4 +1,3 @@
// eslint-disable-next-line import/no-anonymous-default-export
export default () => export default () =>
{ {
const intervals: { const intervals: {

View File

@ -3,7 +3,7 @@ export class WorkerBuilder extends Worker
constructor(worker) constructor(worker)
{ {
const code = worker.toString(); const code = worker.toString();
const blob = new Blob([`(${code})()`]); const blob = new Blob([ `(${code})()` ]);
super(URL.createObjectURL(blob)); super(URL.createObjectURL(blob));
} }

506
yarn.lock
View File

@ -58,17 +58,17 @@
source-map "^0.5.0" source-map "^0.5.0"
"@babel/core@^7.1.0", "@babel/core@^7.12.3", "@babel/core@^7.16.0", "@babel/core@^7.7.5", "@babel/core@^7.8.4": "@babel/core@^7.1.0", "@babel/core@^7.12.3", "@babel/core@^7.16.0", "@babel/core@^7.7.5", "@babel/core@^7.8.4":
version "7.17.7" version "7.17.8"
resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.17.7.tgz#f7c28228c83cdf2dbd1b9baa06eaf9df07f0c2f9" resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.17.8.tgz#3dac27c190ebc3a4381110d46c80e77efe172e1a"
integrity sha512-djHlEfFHnSnTAcPb7dATbiM5HxGOP98+3JLBZtjRb5I7RXrw7kFRoG2dXM8cm3H+o11A8IFH/uprmJpwFynRNQ== integrity sha512-OdQDV/7cRBtJHLSOBqqbYNkOcydOgnX59TZx4puf41fzcVtN3e/4yqY8lMQsK+5X2lJtAdmA+6OHqsj1hBJ4IQ==
dependencies: dependencies:
"@ampproject/remapping" "^2.1.0" "@ampproject/remapping" "^2.1.0"
"@babel/code-frame" "^7.16.7" "@babel/code-frame" "^7.16.7"
"@babel/generator" "^7.17.7" "@babel/generator" "^7.17.7"
"@babel/helper-compilation-targets" "^7.17.7" "@babel/helper-compilation-targets" "^7.17.7"
"@babel/helper-module-transforms" "^7.17.7" "@babel/helper-module-transforms" "^7.17.7"
"@babel/helpers" "^7.17.7" "@babel/helpers" "^7.17.8"
"@babel/parser" "^7.17.7" "@babel/parser" "^7.17.8"
"@babel/template" "^7.16.7" "@babel/template" "^7.16.7"
"@babel/traverse" "^7.17.3" "@babel/traverse" "^7.17.3"
"@babel/types" "^7.17.0" "@babel/types" "^7.17.0"
@ -112,7 +112,7 @@
browserslist "^4.17.5" browserslist "^4.17.5"
semver "^6.3.0" semver "^6.3.0"
"@babel/helper-create-class-features-plugin@^7.16.10", "@babel/helper-create-class-features-plugin@^7.16.7", "@babel/helper-create-class-features-plugin@^7.17.1", "@babel/helper-create-class-features-plugin@^7.17.6": "@babel/helper-create-class-features-plugin@^7.16.10", "@babel/helper-create-class-features-plugin@^7.16.7", "@babel/helper-create-class-features-plugin@^7.17.6":
version "7.17.6" version "7.17.6"
resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.17.6.tgz#3778c1ed09a7f3e65e6d6e0f6fbfcc53809d92c9" resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.17.6.tgz#3778c1ed09a7f3e65e6d6e0f6fbfcc53809d92c9"
integrity sha512-SogLLSxXm2OkBbSsHZMM4tUi8fUzjs63AT/d0YQIzr6GSd8Hxsbk2KYDX0k0DweAzGMj/YWeiCsorIdtdcW8Eg== integrity sha512-SogLLSxXm2OkBbSsHZMM4tUi8fUzjs63AT/d0YQIzr6GSd8Hxsbk2KYDX0k0DweAzGMj/YWeiCsorIdtdcW8Eg==
@ -285,10 +285,10 @@
"@babel/traverse" "^7.16.8" "@babel/traverse" "^7.16.8"
"@babel/types" "^7.16.8" "@babel/types" "^7.16.8"
"@babel/helpers@^7.12.1", "@babel/helpers@^7.17.7": "@babel/helpers@^7.12.1", "@babel/helpers@^7.17.8":
version "7.17.7" version "7.17.8"
resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.17.7.tgz#6fc0a24280fd00026e85424bbfed4650e76d7127" resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.17.8.tgz#288450be8c6ac7e4e44df37bcc53d345e07bc106"
integrity sha512-TKsj9NkjJfTBxM7Phfy7kv6yYc4ZcOo+AaWGqQOKTPDOmcGkIFb5xNA746eKisQkm4yavUYh4InYM9S+VnO01w== integrity sha512-QcL86FGxpfSJwGtAvv4iG93UL6bmqBdmoVY0CMCU2g+oD2ezQse3PT5Pa+jiD6LJndBQi0EDlpzOWNlLuhz5gw==
dependencies: dependencies:
"@babel/template" "^7.16.7" "@babel/template" "^7.16.7"
"@babel/traverse" "^7.17.3" "@babel/traverse" "^7.17.3"
@ -303,10 +303,10 @@
chalk "^2.0.0" chalk "^2.0.0"
js-tokens "^4.0.0" js-tokens "^4.0.0"
"@babel/parser@^7.1.0", "@babel/parser@^7.12.3", "@babel/parser@^7.14.7", "@babel/parser@^7.16.7", "@babel/parser@^7.17.3", "@babel/parser@^7.17.7", "@babel/parser@^7.7.0": "@babel/parser@^7.1.0", "@babel/parser@^7.12.3", "@babel/parser@^7.14.7", "@babel/parser@^7.16.7", "@babel/parser@^7.17.3", "@babel/parser@^7.17.8", "@babel/parser@^7.7.0":
version "7.17.7" version "7.17.8"
resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.17.7.tgz#fc19b645a5456c8d6fdb6cecd3c66c0173902800" resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.17.8.tgz#2817fb9d885dd8132ea0f8eb615a6388cca1c240"
integrity sha512-bm3AQf45vR4gKggRfvJdYJ0gFLoCbsPxiFLSH6hTVYABptNHY6l9NrhnucVjQ/X+SPtLANT9lc0fFhikj+VBRA== integrity sha512-BoHhDJrJXqcg+ZL16Xv39H9n+AqJ4pcDrQBGZN+wHxIysrLZ3/ECwCBUch/1zUNhnsXULcONU3Ei5Hmkfk6kiQ==
"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.16.7": "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.16.7":
version "7.16.7" version "7.16.7"
@ -351,11 +351,11 @@
"@babel/plugin-syntax-class-static-block" "^7.14.5" "@babel/plugin-syntax-class-static-block" "^7.14.5"
"@babel/plugin-proposal-decorators@^7.16.4": "@babel/plugin-proposal-decorators@^7.16.4":
version "7.17.2" version "7.17.8"
resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.17.2.tgz#c36372ddfe0360cac1ee331a238310bddca11493" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.17.8.tgz#4f0444e896bee85d35cf714a006fc5418f87ff00"
integrity sha512-WH8Z95CwTq/W8rFbMqb9p3hicpt4RX4f0K659ax2VHxgOyT6qQmUaEVEjIh4WR9Eh9NymkVn5vwsrE68fAQNUw== integrity sha512-U69odN4Umyyx1xO1rTII0IDkAEC+RNlcKXtqOblfpzqy1C+aOplb76BQNq0+XdpVkOaPlpEDwd++joY8FNFJKA==
dependencies: dependencies:
"@babel/helper-create-class-features-plugin" "^7.17.1" "@babel/helper-create-class-features-plugin" "^7.17.6"
"@babel/helper-plugin-utils" "^7.16.7" "@babel/helper-plugin-utils" "^7.16.7"
"@babel/helper-replace-supers" "^7.16.7" "@babel/helper-replace-supers" "^7.16.7"
"@babel/plugin-syntax-decorators" "^7.17.0" "@babel/plugin-syntax-decorators" "^7.17.0"
@ -742,12 +742,12 @@
babel-plugin-dynamic-import-node "^2.3.3" babel-plugin-dynamic-import-node "^2.3.3"
"@babel/plugin-transform-modules-systemjs@^7.16.7": "@babel/plugin-transform-modules-systemjs@^7.16.7":
version "7.16.7" version "7.17.8"
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.16.7.tgz#887cefaef88e684d29558c2b13ee0563e287c2d7" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.17.8.tgz#81fd834024fae14ea78fbe34168b042f38703859"
integrity sha512-DuK5E3k+QQmnOqBR9UkusByy5WZWGRxfzV529s9nPra1GE7olmxfqO2FHobEOYSPIjPBTr4p66YDcjQnt8cBmw== integrity sha512-39reIkMTUVagzgA5x88zDYXPCMT6lcaRKs1+S9K6NKBPErbgO/w/kP8GlNQTC87b412ZTlmNgr3k2JrWgHH+Bw==
dependencies: dependencies:
"@babel/helper-hoist-variables" "^7.16.7" "@babel/helper-hoist-variables" "^7.16.7"
"@babel/helper-module-transforms" "^7.16.7" "@babel/helper-module-transforms" "^7.17.7"
"@babel/helper-plugin-utils" "^7.16.7" "@babel/helper-plugin-utils" "^7.16.7"
"@babel/helper-validator-identifier" "^7.16.7" "@babel/helper-validator-identifier" "^7.16.7"
babel-plugin-dynamic-import-node "^2.3.3" babel-plugin-dynamic-import-node "^2.3.3"
@ -1035,17 +1035,17 @@
"@babel/plugin-transform-typescript" "^7.16.7" "@babel/plugin-transform-typescript" "^7.16.7"
"@babel/runtime-corejs3@^7.10.2": "@babel/runtime-corejs3@^7.10.2":
version "7.17.7" version "7.17.8"
resolved "https://registry.yarnpkg.com/@babel/runtime-corejs3/-/runtime-corejs3-7.17.7.tgz#cf914f474c490ef1aa8661d47adaa0a993636e7e" resolved "https://registry.yarnpkg.com/@babel/runtime-corejs3/-/runtime-corejs3-7.17.8.tgz#d7dd49fb812f29c61c59126da3792d8740d4e284"
integrity sha512-TvliGJjhxis5m7xIMvlXH/xG8Oa/LK0SCUCyfKD6nLi42n5fB4WibDJ0g9trmmBB6hwpMNx+Lzbxy9/4gpMaVw== integrity sha512-ZbYSUvoSF6dXZmMl/CYTMOvzIFnbGfv4W3SEHYgMvNsFTeLaF2gkGAF4K2ddmtSK4Emej+0aYcnSC6N5dPCXUQ==
dependencies: dependencies:
core-js-pure "^3.20.2" core-js-pure "^3.20.2"
regenerator-runtime "^0.13.4" regenerator-runtime "^0.13.4"
"@babel/runtime@^7.10.2", "@babel/runtime@^7.12.5", "@babel/runtime@^7.13.16", "@babel/runtime@^7.16.3", "@babel/runtime@^7.17.2", "@babel/runtime@^7.5.5", "@babel/runtime@^7.6.2", "@babel/runtime@^7.6.3", "@babel/runtime@^7.7.2", "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7": "@babel/runtime@^7.10.2", "@babel/runtime@^7.12.5", "@babel/runtime@^7.13.16", "@babel/runtime@^7.16.3", "@babel/runtime@^7.17.2", "@babel/runtime@^7.5.5", "@babel/runtime@^7.6.2", "@babel/runtime@^7.6.3", "@babel/runtime@^7.7.2", "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7":
version "7.17.7" version "7.17.8"
resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.17.7.tgz#a5f3328dc41ff39d803f311cfe17703418cf9825" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.17.8.tgz#3e56e4aff81befa55ac3ac6a0967349fd1c5bca2"
integrity sha512-L6rvG9GDxaLgFjg41K+5Yv9OMrU98sWe+Ykmc6FDJW/+vYZMhdOMKkISgzptMaERHvS2Y2lw9MDRm2gHhlQQoA== integrity sha512-dQpEpK0O9o6lj6oPu0gRDbbnk+4LeHlNcBpspf6Olzt3GIX4P1lWF1gS+pHLDFlaJvbR6q7jCfQ08zA4QJBnmA==
dependencies: dependencies:
regenerator-runtime "^0.13.4" regenerator-runtime "^0.13.4"
@ -1144,29 +1144,44 @@
minimatch "^3.0.4" minimatch "^3.0.4"
strip-json-comments "^3.1.1" strip-json-comments "^3.1.1"
"@fortawesome/fontawesome-common-types@6.1.0": "@eslint/eslintrc@^1.2.1":
version "6.1.0" version "1.2.1"
resolved "https://registry.yarnpkg.com/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-6.1.0.tgz#5a9468da0e5c2a3ccc161882ef5ffafbd3d4882f" resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-1.2.1.tgz#8b5e1c49f4077235516bc9ec7d41378c0f69b8c6"
integrity sha512-lFIJ5opxOKG9q88xOsuJJAdRZ+2WRldsZwUR/7MJoOMUMhF/LkHUjwWACIEPTa5Wo6uTDHvGRIX+XutdN7zYxA== integrity sha512-bxvbYnBPN1Gibwyp6NrpnFzA3YtRL3BBAyEAFVIpNTm2Rn4Vy87GA5M4aSn3InRrlsbX5N0GW7XIx+U4SAEKdQ==
dependencies:
ajv "^6.12.4"
debug "^4.3.2"
espree "^9.3.1"
globals "^13.9.0"
ignore "^5.2.0"
import-fresh "^3.2.1"
js-yaml "^4.1.0"
minimatch "^3.0.4"
strip-json-comments "^3.1.1"
"@fortawesome/fontawesome-common-types@6.1.1":
version "6.1.1"
resolved "https://registry.yarnpkg.com/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-6.1.1.tgz#7dc996042d21fc1ae850e3173b5c67b0549f9105"
integrity sha512-wVn5WJPirFTnzN6tR95abCx+ocH+3IFLXAgyavnf9hUmN0CfWoDjPT/BAWsUVwSlYYVBeCLJxaqi7ZGe4uSjBA==
"@fortawesome/fontawesome-svg-core@^6.1.0": "@fortawesome/fontawesome-svg-core@^6.1.0":
version "6.1.0" version "6.1.1"
resolved "https://registry.yarnpkg.com/@fortawesome/fontawesome-svg-core/-/fontawesome-svg-core-6.1.0.tgz#b78a43df315a6b1568d803ee48a9f1edea0714aa" resolved "https://registry.yarnpkg.com/@fortawesome/fontawesome-svg-core/-/fontawesome-svg-core-6.1.1.tgz#3424ec6182515951816be9b11665d67efdce5b5f"
integrity sha512-racj+/EDnMZN0jcuHePOa+9kdHHOCpCAbBvVRnEi4G4DA5SWQiT/uXJ8WcfVEbLN51vPJjhukP4o+zH0cfYplg== integrity sha512-NCg0w2YIp81f4V6cMGD9iomfsIj7GWrqmsa0ZsPh59G7PKiGN1KymZNxmF00ssuAlo/VZmpK6xazsGOwzKYUMg==
dependencies: dependencies:
"@fortawesome/fontawesome-common-types" "6.1.0" "@fortawesome/fontawesome-common-types" "6.1.1"
"@fortawesome/free-solid-svg-icons@^6.1.0": "@fortawesome/free-solid-svg-icons@^6.1.0":
version "6.1.0" version "6.1.1"
resolved "https://registry.yarnpkg.com/@fortawesome/free-solid-svg-icons/-/free-solid-svg-icons-6.1.0.tgz#1bdc3ce6ddd2336348ba324ac4a72161725b0d95" resolved "https://registry.yarnpkg.com/@fortawesome/free-solid-svg-icons/-/free-solid-svg-icons-6.1.1.tgz#3369e673f8fe8be2fba30b1ec274d47490a830a6"
integrity sha512-OOr0jRHl5d41RzBS3sZh5Z3HmdPjMr43PxxKlYeLtQxFSixPf4sJFVM12/rTepB2m0rVShI0vtjHQmzOTlBaXg== integrity sha512-0/5exxavOhI/D4Ovm2r3vxNojGZioPwmFrKg0ZUH69Q68uFhFPs6+dhAToh6VEQBntxPRYPuT5Cg1tpNa9JUPg==
dependencies: dependencies:
"@fortawesome/fontawesome-common-types" "6.1.0" "@fortawesome/fontawesome-common-types" "6.1.1"
"@fortawesome/react-fontawesome@^0.1.17": "@fortawesome/react-fontawesome@^0.1.17":
version "0.1.17" version "0.1.18"
resolved "https://registry.yarnpkg.com/@fortawesome/react-fontawesome/-/react-fontawesome-0.1.17.tgz#06fc06cb1a721e38e5b50b4a1cb851e9b9c77d7a" resolved "https://registry.yarnpkg.com/@fortawesome/react-fontawesome/-/react-fontawesome-0.1.18.tgz#dae37f718a24e14d7a99a5496c873d69af3fbd73"
integrity sha512-dX43Z5IvMaW7fwzU8farosYjKNGfRb2HB/DgjVBHeJZ/NSnuuaujPPx0YOdcAq+n3mqn70tyCde2HM1mqbhiuw== integrity sha512-RwLIB4TZw0M9gvy5u+TusAA0afbwM4JQIimNH/j3ygd6aIvYPQLqXMhC9ErY26J23rDPyDZldIfPq/HpTTJ/tQ==
dependencies: dependencies:
prop-types "^15.8.1" prop-types "^15.8.1"
@ -1216,7 +1231,16 @@
debug "^4.1.1" debug "^4.1.1"
minimatch "^3.0.4" minimatch "^3.0.4"
"@humanwhocodes/object-schema@^1.2.0": "@humanwhocodes/config-array@^0.9.2":
version "0.9.5"
resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.9.5.tgz#2cbaf9a89460da24b5ca6531b8bbfc23e1df50c7"
integrity sha512-ObyMyWxZiCu/yTisA7uzx81s40xR2fD5Cg/2Kq7G02ajkNubJf6BopgDTmDyc3U7sXpNKM8cYOw7s7Tyr+DnCw==
dependencies:
"@humanwhocodes/object-schema" "^1.2.1"
debug "^4.1.1"
minimatch "^3.0.4"
"@humanwhocodes/object-schema@^1.2.0", "@humanwhocodes/object-schema@^1.2.1":
version "1.2.1" version "1.2.1"
resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45" resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45"
integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA== integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==
@ -1702,9 +1726,9 @@
"@babel/runtime" "^7.6.2" "@babel/runtime" "^7.6.2"
"@restart/hooks@^0.4.0", "@restart/hooks@^0.4.5": "@restart/hooks@^0.4.0", "@restart/hooks@^0.4.5":
version "0.4.5" version "0.4.6"
resolved "https://registry.yarnpkg.com/@restart/hooks/-/hooks-0.4.5.tgz#e7acbea237bfc9e479970500cf87538b41a1ed02" resolved "https://registry.yarnpkg.com/@restart/hooks/-/hooks-0.4.6.tgz#15dcf34631a618c513efc924705c7cbe349a4a0c"
integrity sha512-tLGtY0aHeIfT7aPwUkvQuhIy3+q3w4iqmUzFLPlOAf/vNUacLaBt1j/S//jv/dQhenRh8jvswyMojCwmLvJw8A== integrity sha512-FzpEzy6QeLB3OpUrC9OQD/lWCluQmilLfRGa/DqbB6OmV05AEt/0Lgn3Jf6l27UIJMK0qFmNcps6p8DNLXa6Pw==
dependencies: dependencies:
dequal "^2.0.2" dequal "^2.0.2"
@ -1902,9 +1926,9 @@
integrity sha512-eZxlbI8GZscaGS7kkc/trHTT5xgrjH3/1n2JDwusC9iahPKWMRvRjJSAN5mCXviuTGQ/lHnhvv8Q1YTpnfz9gA== integrity sha512-eZxlbI8GZscaGS7kkc/trHTT5xgrjH3/1n2JDwusC9iahPKWMRvRjJSAN5mCXviuTGQ/lHnhvv8Q1YTpnfz9gA==
"@types/babel__core@^7.0.0", "@types/babel__core@^7.1.7": "@types/babel__core@^7.0.0", "@types/babel__core@^7.1.7":
version "7.1.18" version "7.1.19"
resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.18.tgz#1a29abcc411a9c05e2094c98f9a1b7da6cdf49f8" resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.19.tgz#7b497495b7d1b4812bdb9d02804d0576f43ee460"
integrity sha512-S7unDjm/C7z2A2R9NzfKCK1I+BAALDtxEmsJBwlB3EzNfb929ykjL++1CK9LO++EIp2fQrC8O+BwjKvz6UeDyQ== integrity sha512-WEOTgRsbYkvA/KCsDwVEGkd7WAr1e3g31VHQ8zy5gul/V1qKullU/BU5I68X5v7V3GnB9eotmom4v5a5gjxorw==
dependencies: dependencies:
"@babel/parser" "^7.1.0" "@babel/parser" "^7.1.0"
"@babel/types" "^7.0.0" "@babel/types" "^7.0.0"
@ -2001,10 +2025,10 @@
dependencies: dependencies:
"@types/istanbul-lib-report" "*" "@types/istanbul-lib-report" "*"
"@types/json-schema@*", "@types/json-schema@^7.0.3", "@types/json-schema@^7.0.5", "@types/json-schema@^7.0.7", "@types/json-schema@^7.0.8": "@types/json-schema@*", "@types/json-schema@^7.0.3", "@types/json-schema@^7.0.5", "@types/json-schema@^7.0.7", "@types/json-schema@^7.0.8", "@types/json-schema@^7.0.9":
version "7.0.9" version "7.0.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.11.tgz#d421b6c527a3037f7c84433fd2c4229e016863d3"
integrity sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ== integrity sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==
"@types/json5@^0.0.29": "@types/json5@^0.0.29":
version "0.0.29" version "0.0.29"
@ -2022,9 +2046,9 @@
integrity sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ== integrity sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==
"@types/node@*": "@types/node@*":
version "17.0.21" version "17.0.23"
resolved "https://registry.yarnpkg.com/@types/node/-/node-17.0.21.tgz#864b987c0c68d07b4345845c3e63b75edd143644" resolved "https://registry.yarnpkg.com/@types/node/-/node-17.0.23.tgz#3b41a6e643589ac6442bdbd7a4a3ded62f33f7da"
integrity sha512-DBZCJbhII3r90XbQxI8Y9IjjiiOGlZ0Hr32omXIZvwwZ7p4DMMXGrKXVyPfuoBOri9XNtL0UK69jYIBIsRX3QQ== integrity sha512-UxDxWn7dl97rKVeVS61vErvw086aCYhDLyvRQZ5Rk65rZKepaFdm53GeqXaKBuOhED4e9uWq34IC3TdSdJJ2Gw==
"@types/node@^12.20.19": "@types/node@^12.20.19":
version "12.20.47" version "12.20.47"
@ -2062,9 +2086,9 @@
integrity sha512-L28j2FcJfSZOnL1WBjDYp2vUHCeIFlyYI/53EwD/rKUBQ7MtUUfbQWiyKJGpcnv4/WgrhWsFKrcPstcAt/J0tQ== integrity sha512-L28j2FcJfSZOnL1WBjDYp2vUHCeIFlyYI/53EwD/rKUBQ7MtUUfbQWiyKJGpcnv4/WgrhWsFKrcPstcAt/J0tQ==
"@types/react-dom@^17.0.9": "@types/react-dom@^17.0.9":
version "17.0.13" version "17.0.14"
resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-17.0.13.tgz#a3323b974ee4280070982b3112351bb1952a7809" resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-17.0.14.tgz#c8f917156b652ddf807711f5becbd2ab018dea9f"
integrity sha512-wEP+B8hzvy6ORDv1QBhcQia4j6ea4SFIBttHYpXKPFZRviBvknq0FRh3VrIxeXUmsPkwuXVZrVGG7KUVONmXCQ== integrity sha512-H03xwEP1oXmSfl3iobtmQ/2dHF5aBHr8aUMwyGZya6OW45G+xtdzmq6HkncefiBt5JU8DVyaWl/nWZbjZCnzAQ==
dependencies: dependencies:
"@types/react" "*" "@types/react" "*"
@ -2091,9 +2115,9 @@
"@types/react" "*" "@types/react" "*"
"@types/react@*", "@types/react@>=16.14.8", "@types/react@>=16.9.11", "@types/react@^17.0.15": "@types/react@*", "@types/react@>=16.14.8", "@types/react@>=16.9.11", "@types/react@^17.0.15":
version "17.0.40" version "17.0.43"
resolved "https://registry.yarnpkg.com/@types/react/-/react-17.0.40.tgz#dc010cee6254d5239a138083f3799a16638e6bad" resolved "https://registry.yarnpkg.com/@types/react/-/react-17.0.43.tgz#4adc142887dd4a2601ce730bc56c3436fdb07a55"
integrity sha512-UrXhD/JyLH+W70nNSufXqMZNuUD2cXHu6UjCllC6pmOQgBX4SGXOH8fjRka0O0Ee0HrFxapDD8Bwn81Kmiz6jQ== integrity sha512-8Q+LNpdxf057brvPu1lMtC5Vn7J119xrP1aq4qiaefNioQUYANF/CYeK4NsKorSZyUGJ66g0IM+4bbjwx45o2A==
dependencies: dependencies:
"@types/prop-types" "*" "@types/prop-types" "*"
"@types/scheduler" "*" "@types/scheduler" "*"
@ -2171,7 +2195,7 @@
dependencies: dependencies:
"@types/yargs-parser" "*" "@types/yargs-parser" "*"
"@typescript-eslint/eslint-plugin@^4.29.1", "@typescript-eslint/eslint-plugin@^4.5.0": "@typescript-eslint/eslint-plugin@^4.5.0":
version "4.33.0" version "4.33.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.33.0.tgz#c24dc7c8069c7706bc40d99f6fa87edcb2005276" resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.33.0.tgz#c24dc7c8069c7706bc40d99f6fa87edcb2005276"
integrity sha512-aINiAxGVdOl1eJyVjaWn/YcVAq4Gi/Yo35qHGCnqbWVz61g39D0h23veY/MA0rFFGfxK7TySg2uwDeNv+JgVpg== integrity sha512-aINiAxGVdOl1eJyVjaWn/YcVAq4Gi/Yo35qHGCnqbWVz61g39D0h23veY/MA0rFFGfxK7TySg2uwDeNv+JgVpg==
@ -2185,6 +2209,21 @@
semver "^7.3.5" semver "^7.3.5"
tsutils "^3.21.0" tsutils "^3.21.0"
"@typescript-eslint/eslint-plugin@^5.17.0":
version "5.17.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.17.0.tgz#704eb4e75039000531255672bf1c85ee85cf1d67"
integrity sha512-qVstvQilEd89HJk3qcbKt/zZrfBZ+9h2ynpAGlWjWiizA7m/MtLT9RoX6gjtpE500vfIg8jogAkDzdCxbsFASQ==
dependencies:
"@typescript-eslint/scope-manager" "5.17.0"
"@typescript-eslint/type-utils" "5.17.0"
"@typescript-eslint/utils" "5.17.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/experimental-utils@4.33.0", "@typescript-eslint/experimental-utils@^4.0.1": "@typescript-eslint/experimental-utils@4.33.0", "@typescript-eslint/experimental-utils@^4.0.1":
version "4.33.0" version "4.33.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-4.33.0.tgz#6f2a786a4209fa2222989e9380b5331b2810f7fd" resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-4.33.0.tgz#6f2a786a4209fa2222989e9380b5331b2810f7fd"
@ -2218,6 +2257,16 @@
"@typescript-eslint/typescript-estree" "4.33.0" "@typescript-eslint/typescript-estree" "4.33.0"
debug "^4.3.1" debug "^4.3.1"
"@typescript-eslint/parser@^5.17.0":
version "5.17.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.17.0.tgz#7def77d5bcd8458d12d52909118cf3f0a45f89d5"
integrity sha512-aRzW9Jg5Rlj2t2/crzhA2f23SIYFlF9mchGudyP0uiD6SenIxzKoLjwzHbafgHn39dNV/TV7xwQkLfFTZlJ4ig==
dependencies:
"@typescript-eslint/scope-manager" "5.17.0"
"@typescript-eslint/types" "5.17.0"
"@typescript-eslint/typescript-estree" "5.17.0"
debug "^4.3.2"
"@typescript-eslint/scope-manager@4.33.0": "@typescript-eslint/scope-manager@4.33.0":
version "4.33.0" version "4.33.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-4.33.0.tgz#d38e49280d983e8772e29121cf8c6e9221f280a3" resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-4.33.0.tgz#d38e49280d983e8772e29121cf8c6e9221f280a3"
@ -2226,6 +2275,23 @@
"@typescript-eslint/types" "4.33.0" "@typescript-eslint/types" "4.33.0"
"@typescript-eslint/visitor-keys" "4.33.0" "@typescript-eslint/visitor-keys" "4.33.0"
"@typescript-eslint/scope-manager@5.17.0":
version "5.17.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.17.0.tgz#4cea7d0e0bc0e79eb60cad431c89120987c3f952"
integrity sha512-062iCYQF/doQ9T2WWfJohQKKN1zmmXVfAcS3xaiialiw8ZUGy05Em6QVNYJGO34/sU1a7a+90U3dUNfqUDHr3w==
dependencies:
"@typescript-eslint/types" "5.17.0"
"@typescript-eslint/visitor-keys" "5.17.0"
"@typescript-eslint/type-utils@5.17.0":
version "5.17.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.17.0.tgz#1c4549d68c89877662224aabb29fbbebf5fc9672"
integrity sha512-3hU0RynUIlEuqMJA7dragb0/75gZmwNwFf/QJokWzPehTZousP/MNifVSgjxNcDCkM5HI2K22TjQWUmmHUINSg==
dependencies:
"@typescript-eslint/utils" "5.17.0"
debug "^4.3.2"
tsutils "^3.21.0"
"@typescript-eslint/types@3.10.1": "@typescript-eslint/types@3.10.1":
version "3.10.1" version "3.10.1"
resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-3.10.1.tgz#1d7463fa7c32d8a23ab508a803ca2fe26e758727" resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-3.10.1.tgz#1d7463fa7c32d8a23ab508a803ca2fe26e758727"
@ -2236,6 +2302,11 @@
resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-4.33.0.tgz#a1e59036a3b53ae8430ceebf2a919dc7f9af6d72" resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-4.33.0.tgz#a1e59036a3b53ae8430ceebf2a919dc7f9af6d72"
integrity sha512-zKp7CjQzLQImXEpLt2BUw1tvOMPfNoTAfb8l51evhYbOEEzdWyQNmHWWGPR6hwKJDAi+1VXSBmnhL9kyVTTOuQ== integrity sha512-zKp7CjQzLQImXEpLt2BUw1tvOMPfNoTAfb8l51evhYbOEEzdWyQNmHWWGPR6hwKJDAi+1VXSBmnhL9kyVTTOuQ==
"@typescript-eslint/types@5.17.0":
version "5.17.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.17.0.tgz#861ec9e669ffa2aa9b873dd4d28d9b1ce26d216f"
integrity sha512-AgQ4rWzmCxOZLioFEjlzOI3Ch8giDWx8aUDxyNw9iOeCvD3GEYAB7dxWGQy4T/rPVe8iPmu73jPHuaSqcjKvxw==
"@typescript-eslint/typescript-estree@3.10.1": "@typescript-eslint/typescript-estree@3.10.1":
version "3.10.1" version "3.10.1"
resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-3.10.1.tgz#fd0061cc38add4fad45136d654408569f365b853" resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-3.10.1.tgz#fd0061cc38add4fad45136d654408569f365b853"
@ -2263,6 +2334,31 @@
semver "^7.3.5" semver "^7.3.5"
tsutils "^3.21.0" tsutils "^3.21.0"
"@typescript-eslint/typescript-estree@5.17.0":
version "5.17.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.17.0.tgz#a7cba7dfc8f9cc2ac78c18584e684507df4f2488"
integrity sha512-X1gtjEcmM7Je+qJRhq7ZAAaNXYhTgqMkR10euC4Si6PIjb+kwEQHSxGazXUQXFyqfEXdkGf6JijUu5R0uceQzg==
dependencies:
"@typescript-eslint/types" "5.17.0"
"@typescript-eslint/visitor-keys" "5.17.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.17.0":
version "5.17.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.17.0.tgz#549a9e1d491c6ccd3624bc3c1b098f5cfb45f306"
integrity sha512-DVvndq1QoxQH+hFv+MUQHrrWZ7gQ5KcJzyjhzcqB1Y2Xes1UQQkTRPUfRpqhS8mhTWsSb2+iyvDW1Lef5DD7vA==
dependencies:
"@types/json-schema" "^7.0.9"
"@typescript-eslint/scope-manager" "5.17.0"
"@typescript-eslint/types" "5.17.0"
"@typescript-eslint/typescript-estree" "5.17.0"
eslint-scope "^5.1.1"
eslint-utils "^3.0.0"
"@typescript-eslint/visitor-keys@3.10.1": "@typescript-eslint/visitor-keys@3.10.1":
version "3.10.1" version "3.10.1"
resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-3.10.1.tgz#cd4274773e3eb63b2e870ac602274487ecd1e931" resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-3.10.1.tgz#cd4274773e3eb63b2e870ac602274487ecd1e931"
@ -2278,6 +2374,14 @@
"@typescript-eslint/types" "4.33.0" "@typescript-eslint/types" "4.33.0"
eslint-visitor-keys "^2.0.0" eslint-visitor-keys "^2.0.0"
"@typescript-eslint/visitor-keys@5.17.0":
version "5.17.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.17.0.tgz#52daae45c61b0211b4c81b53a71841911e479128"
integrity sha512-6K/zlc4OfCagUu7Am/BD5k8PSWQOgh34Nrv9Rxe2tBzlJ7uOeJ/h7ugCGDCeEZHT6k2CJBhbk9IsbkPI0uvUkA==
dependencies:
"@typescript-eslint/types" "5.17.0"
eslint-visitor-keys "^3.0.0"
"@webassemblyjs/ast@1.9.0": "@webassemblyjs/ast@1.9.0":
version "1.9.0" version "1.9.0"
resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.9.0.tgz#bd850604b4042459a5a41cd7d338cbed695ed964" resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.9.0.tgz#bd850604b4042459a5a41cd7d338cbed695ed964"
@ -2484,7 +2588,7 @@ acorn@^7.1.0, acorn@^7.1.1, acorn@^7.4.0:
resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa"
integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==
acorn@^8.2.4, acorn@^8.4.1, acorn@^8.5.0: acorn@^8.2.4, acorn@^8.4.1, acorn@^8.5.0, acorn@^8.7.0:
version "8.7.0" version "8.7.0"
resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.7.0.tgz#90951fde0f8f09df93549481e5fc141445b791cf" resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.7.0.tgz#90951fde0f8f09df93549481e5fc141445b791cf"
integrity sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ== integrity sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ==
@ -2538,9 +2642,9 @@ ajv@^6.1.0, ajv@^6.10.0, ajv@^6.10.2, ajv@^6.12.3, ajv@^6.12.4, ajv@^6.12.5:
uri-js "^4.2.2" uri-js "^4.2.2"
ajv@^8.0.1: ajv@^8.0.1:
version "8.10.0" version "8.11.0"
resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.10.0.tgz#e573f719bd3af069017e3b66538ab968d040e54d" resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.11.0.tgz#977e91dd96ca669f54a11e23e378e33b884a565f"
integrity sha512-bzqAEZOjkrUMl2afH8dknrq5KEk2SrwdBROR+vH1EKVQTqaUbJVPdc/gEdggTMM0Se+s+Ja4ju4TlNcStKl2Hw== integrity sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==
dependencies: dependencies:
fast-deep-equal "^3.1.1" fast-deep-equal "^3.1.1"
json-schema-traverse "^1.0.0" json-schema-traverse "^1.0.0"
@ -2659,6 +2763,11 @@ argparse@^1.0.7:
dependencies: dependencies:
sprintf-js "~1.0.2" sprintf-js "~1.0.2"
argparse@^2.0.1:
version "2.0.1"
resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38"
integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==
aria-query@^4.2.2: aria-query@^4.2.2:
version "4.2.2" version "4.2.2"
resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-4.2.2.tgz#0d2ca6c9aceb56b8977e9fed6aed7e15bbd2f83b" resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-4.2.2.tgz#0d2ca6c9aceb56b8977e9fed6aed7e15bbd2f83b"
@ -2697,7 +2806,7 @@ array-flatten@^2.1.0:
resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-2.1.2.tgz#24ef80a28c1a893617e2149b0c6d0d788293b099" resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-2.1.2.tgz#24ef80a28c1a893617e2149b0c6d0d788293b099"
integrity sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ== integrity sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==
array-includes@^3.1.3, array-includes@^3.1.4: array-includes@^3.1.4:
version "3.1.4" version "3.1.4"
resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.4.tgz#f5b493162c760f3539631f005ba2bb46acb45ba9" resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.4.tgz#f5b493162c760f3539631f005ba2bb46acb45ba9"
integrity sha512-ZTNSQkmWumEbiHO2GF4GmWxYVTiQyJy2XOTa15sdQSrvKn7l+180egQMqlrMOUMCyLMD7pmyQe4mMDUT6Behrw== integrity sha512-ZTNSQkmWumEbiHO2GF4GmWxYVTiQyJy2XOTa15sdQSrvKn7l+180egQMqlrMOUMCyLMD7pmyQe4mMDUT6Behrw==
@ -3206,7 +3315,7 @@ braces@^2.3.1, braces@^2.3.2:
split-string "^3.0.2" split-string "^3.0.2"
to-regex "^3.0.1" to-regex "^3.0.1"
braces@^3.0.1, braces@~3.0.2: braces@^3.0.2, braces@~3.0.2:
version "3.0.2" version "3.0.2"
resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107"
integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==
@ -3486,9 +3595,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.30000981, caniuse-lite@^1.0.30001109, caniuse-lite@^1.0.30001125, caniuse-lite@^1.0.30001317: caniuse-lite@^1.0.0, caniuse-lite@^1.0.30000981, caniuse-lite@^1.0.30001109, caniuse-lite@^1.0.30001125, caniuse-lite@^1.0.30001317:
version "1.0.30001317" version "1.0.30001323"
resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001317.tgz#0548fb28fd5bc259a70b8c1ffdbe598037666a1b" resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001323.tgz#a451ff80dec7033016843f532efda18f02eec011"
integrity sha512-xIZLh8gBm4dqNX0gkzrBeyI86J2eCjWzYAs40q88smG844YIrN4tVQl/RhquHvKEKImWWFIVh1Lxe5n1G/N+GQ== integrity sha512-e4BF2RlCVELKx8+RmklSEIVub1TWrmdhvA5kEUueummz1XyySW0DVk+3x9HyhU9MuWTa2BhqLgEuEmUwASAdCA==
capture-exit@^2.0.0: capture-exit@^2.0.0:
version "2.0.0" version "2.0.0"
@ -4112,13 +4221,13 @@ css-select@^2.0.0:
nth-check "^1.0.2" nth-check "^1.0.2"
css-select@^4.1.3: css-select@^4.1.3:
version "4.2.1" version "4.3.0"
resolved "https://registry.yarnpkg.com/css-select/-/css-select-4.2.1.tgz#9e665d6ae4c7f9d65dbe69d0316e3221fb274cdd" resolved "https://registry.yarnpkg.com/css-select/-/css-select-4.3.0.tgz#db7129b2846662fd8628cfc496abb2b59e41529b"
integrity sha512-/aUslKhzkTNCQUB2qTX84lVmfia9NyjP3WpDGtj/WxhwBzWBYUV3DgUpurHTme8UTPcPlAD1DJ+b0nN/t50zDQ== integrity sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==
dependencies: dependencies:
boolbase "^1.0.0" boolbase "^1.0.0"
css-what "^5.1.0" css-what "^6.0.1"
domhandler "^4.3.0" domhandler "^4.3.1"
domutils "^2.8.0" domutils "^2.8.0"
nth-check "^2.0.1" nth-check "^2.0.1"
@ -4143,10 +4252,10 @@ css-what@^3.2.1:
resolved "https://registry.yarnpkg.com/css-what/-/css-what-3.4.2.tgz#ea7026fcb01777edbde52124e21f327e7ae950e4" resolved "https://registry.yarnpkg.com/css-what/-/css-what-3.4.2.tgz#ea7026fcb01777edbde52124e21f327e7ae950e4"
integrity sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ== integrity sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ==
css-what@^5.1.0: css-what@^6.0.1:
version "5.1.0" version "6.1.0"
resolved "https://registry.yarnpkg.com/css-what/-/css-what-5.1.0.tgz#3f7b707aadf633baf62c2ceb8579b545bb40f7fe" resolved "https://registry.yarnpkg.com/css-what/-/css-what-6.1.0.tgz#fb5effcf76f1ddea2c81bdfaa4de44e79bac70f4"
integrity sha512-arSMRWIIFY0hV8pIxZMEfmMI47Wj3R/aWpZDDxWYCPEiOMv6tfOrnpDtgxBYPEQD4V0Y/958+1TdC3iWTFcUPw== integrity sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==
css@^2.0.0: css@^2.0.0:
version "2.2.4" version "2.2.4"
@ -4311,10 +4420,10 @@ debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.0, debug@^2.6.6, debug@^2.6.
dependencies: dependencies:
ms "2.0.0" ms "2.0.0"
debug@4, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1: debug@4, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2:
version "4.3.3" version "4.3.4"
resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.3.tgz#04266e0b70a98d4462e6e288e38259213332b664" resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865"
integrity sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q== integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==
dependencies: dependencies:
ms "2.1.2" ms "2.1.2"
@ -4590,10 +4699,10 @@ domexception@^2.0.1:
dependencies: dependencies:
webidl-conversions "^5.0.0" webidl-conversions "^5.0.0"
domhandler@^4.0.0, domhandler@^4.2.0, domhandler@^4.3.0: domhandler@^4.0.0, domhandler@^4.2.0, domhandler@^4.3.1:
version "4.3.0" version "4.3.1"
resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-4.3.0.tgz#16c658c626cf966967e306f966b431f77d4a5626" resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-4.3.1.tgz#8d792033416f59d68bc03a5aa7b018c1ca89279c"
integrity sha512-fC0aXNQXqKSFTr2wDNZDhsEYjCiYsDWl3D01kwt25hm1YIPyDGHvvi3rw+PLqHAl/m71MaiF7d5zvBr0p5UB2g== integrity sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==
dependencies: dependencies:
domelementtype "^2.2.0" domelementtype "^2.2.0"
@ -4678,9 +4787,9 @@ ejs@^2.6.1:
integrity sha512-7vmuyh5+kuUyJKePhQfRQBhXV5Ce+RnaeeQArKu1EAMpL3WbgMt5WG6uQZpEVvYSSsxMXRKOewtDk9RaTKXRlA== integrity sha512-7vmuyh5+kuUyJKePhQfRQBhXV5Ce+RnaeeQArKu1EAMpL3WbgMt5WG6uQZpEVvYSSsxMXRKOewtDk9RaTKXRlA==
electron-to-chromium@^1.3.564, electron-to-chromium@^1.4.84: electron-to-chromium@^1.3.564, electron-to-chromium@^1.4.84:
version "1.4.85" version "1.4.103"
resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.85.tgz#a3666ba42147026b9f34d4d8d4caf0740e80f751" resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.103.tgz#abfe376a4d70fa1e1b4b353b95df5d6dfd05da3a"
integrity sha512-K9AsQ41WS2bjZUFpRWfvaS4RjEcRCamEkBJN1Z1TQILBfP1H8QnJ9ti0wiLiMv0sRjX3EHKzgs9jDnmGFx2jXg== integrity sha512-c/uKWR1Z/W30Wy/sx3dkZoj4BijbXX85QKWu9jJfjho3LBAXNEGAEW3oWiGb+dotA6C6BzCTxL2/aLes7jlUeg==
elliptic@^6.5.3: elliptic@^6.5.3:
version "6.5.4" version "6.5.4"
@ -4790,9 +4899,9 @@ error-stack-parser@^2.0.6:
stackframe "^1.1.1" stackframe "^1.1.1"
es-abstract@^1.17.2, es-abstract@^1.19.0, es-abstract@^1.19.1: es-abstract@^1.17.2, es-abstract@^1.19.0, es-abstract@^1.19.1:
version "1.19.1" version "1.19.2"
resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.19.1.tgz#d4885796876916959de78edaa0df456627115ec3" resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.19.2.tgz#8f7b696d8f15b167ae3640b4060670f3d054143f"
integrity sha512-2vJ6tjA/UfqLm2MPs7jxVybLoB8i1t1Jd9R3kISld20sIxPcTbLuggQOUxeWeAvIUkduv/CfMjuh4WmiXr2v9w== integrity sha512-gfSBJoZdlL2xRiOCy0g8gLMryhoe1TlimjzU99L/31Z8QEGIhVQI+EWwt5lT+AuU9SnorVupXFqqOGqGfsyO6w==
dependencies: dependencies:
call-bind "^1.0.2" call-bind "^1.0.2"
es-to-primitive "^1.2.1" es-to-primitive "^1.2.1"
@ -4800,15 +4909,15 @@ es-abstract@^1.17.2, es-abstract@^1.19.0, es-abstract@^1.19.1:
get-intrinsic "^1.1.1" get-intrinsic "^1.1.1"
get-symbol-description "^1.0.0" get-symbol-description "^1.0.0"
has "^1.0.3" has "^1.0.3"
has-symbols "^1.0.2" has-symbols "^1.0.3"
internal-slot "^1.0.3" internal-slot "^1.0.3"
is-callable "^1.2.4" is-callable "^1.2.4"
is-negative-zero "^2.0.1" is-negative-zero "^2.0.2"
is-regex "^1.1.4" is-regex "^1.1.4"
is-shared-array-buffer "^1.0.1" is-shared-array-buffer "^1.0.1"
is-string "^1.0.7" is-string "^1.0.7"
is-weakref "^1.0.1" is-weakref "^1.0.2"
object-inspect "^1.11.0" object-inspect "^1.12.0"
object-keys "^1.1.1" object-keys "^1.1.1"
object.assign "^4.1.2" object.assign "^4.1.2"
string.prototype.trimend "^1.0.4" string.prototype.trimend "^1.0.4"
@ -4825,9 +4934,9 @@ es-to-primitive@^1.2.1:
is-symbol "^1.0.2" is-symbol "^1.0.2"
es5-ext@^0.10.35, es5-ext@^0.10.50: es5-ext@^0.10.35, es5-ext@^0.10.50:
version "0.10.58" version "0.10.59"
resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.58.tgz#5b97d94236285fb87c8ffc782cf42eb0a25d2ae0" resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.59.tgz#71038939730eb6f4f165f1421308fb60be363bc6"
integrity sha512-LHO+KBBaHGwjy32ibSaMY+ZzjpC4K4I5bPoijICMBL7gXEXfrEUrzssmNP+KigbQEp1dRUnGkry/vUnxOqptLQ== integrity sha512-cOgyhW0tIJyQY1Kfw6Kr0viu9ZlUctVchRMZ7R0HiH3dxTSp5zJDLecwxUqPUrGKMsgBI1wd1FL+d9Jxfi4cLw==
dependencies: dependencies:
es6-iterator "^2.0.3" es6-iterator "^2.0.3"
es6-symbol "^3.1.3" es6-symbol "^3.1.3"
@ -4918,7 +5027,7 @@ eslint-plugin-flowtype@^5.2.0:
lodash "^4.17.15" lodash "^4.17.15"
string-natural-compare "^3.0.1" string-natural-compare "^3.0.1"
eslint-plugin-import@^2.22.1: eslint-plugin-import@^2.22.1, eslint-plugin-import@^2.25.4:
version "2.25.4" version "2.25.4"
resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.25.4.tgz#322f3f916a4e9e991ac7af32032c25ce313209f1" resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.25.4.tgz#322f3f916a4e9e991ac7af32032c25ce313209f1"
integrity sha512-/KJBASVFxpu0xg1kIBn9AUa8hQVnszpwgE7Ld0lKAlx7Ie87yzEzCgSkekt+le/YVhiaosO4Y14GDAOc41nfxA== integrity sha512-/KJBASVFxpu0xg1kIBn9AUa8hQVnszpwgE7Ld0lKAlx7Ie87yzEzCgSkekt+le/YVhiaosO4Y14GDAOc41nfxA==
@ -4944,7 +5053,7 @@ eslint-plugin-jest@^24.1.0:
dependencies: dependencies:
"@typescript-eslint/experimental-utils" "^4.0.1" "@typescript-eslint/experimental-utils" "^4.0.1"
eslint-plugin-jsx-a11y@^6.3.1: eslint-plugin-jsx-a11y@^6.3.1, eslint-plugin-jsx-a11y@^6.5.1:
version "6.5.1" version "6.5.1"
resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.5.1.tgz#cdbf2df901040ca140b6ec14715c988889c2a6d8" resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.5.1.tgz#cdbf2df901040ca140b6ec14715c988889c2a6d8"
integrity sha512-sVCFKX9fllURnXT2JwLN5Qgo24Ug5NF6dxhkmxsMEUZhXRcGg+X3e1JbJ84YePQKBl5E0ZjAH5Q4rkdcGY99+g== integrity sha512-sVCFKX9fllURnXT2JwLN5Qgo24Ug5NF6dxhkmxsMEUZhXRcGg+X3e1JbJ84YePQKBl5E0ZjAH5Q4rkdcGY99+g==
@ -4962,12 +5071,12 @@ eslint-plugin-jsx-a11y@^6.3.1:
language-tags "^1.0.5" language-tags "^1.0.5"
minimatch "^3.0.4" minimatch "^3.0.4"
eslint-plugin-react-hooks@^4.2.0: eslint-plugin-react-hooks@^4.2.0, eslint-plugin-react-hooks@^4.4.0:
version "4.3.0" version "4.4.0"
resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.3.0.tgz#318dbf312e06fab1c835a4abef00121751ac1172" resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.4.0.tgz#71c39e528764c848d8253e1aa2c7024ed505f6c4"
integrity sha512-XslZy0LnMn+84NEG9jSGR6eGqaZB3133L8xewQo3fQagbQuGt7a63gf+P1NGKZavEYEC3UXaWEAA/AqDkuN6xA== integrity sha512-U3RVIfdzJaeKDQKEJbz5p3NW8/L80PCATJAfuojwbaEL+gBjfGdhUcGde+WGUW46Q5sr/NgxevsIiDtNXrvZaQ==
eslint-plugin-react@^7.21.5: eslint-plugin-react@^7.21.5, eslint-plugin-react@^7.29.4:
version "7.29.4" version "7.29.4"
resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.29.4.tgz#4717de5227f55f3801a5fd51a16a4fa22b5914d2" resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.29.4.tgz#4717de5227f55f3801a5fd51a16a4fa22b5914d2"
integrity sha512-CVCXajliVh509PcZYRFyu/BoUEz452+jtQJq2b3Bae4v3xBUWPLCmtmBM+ZinG4MzwmxJgJ2M5rMqhqLVn7MtQ== integrity sha512-CVCXajliVh509PcZYRFyu/BoUEz452+jtQJq2b3Bae4v3xBUWPLCmtmBM+ZinG4MzwmxJgJ2M5rMqhqLVn7MtQ==
@ -5010,6 +5119,14 @@ eslint-scope@^5.0.0, eslint-scope@^5.1.1:
esrecurse "^4.3.0" esrecurse "^4.3.0"
estraverse "^4.1.1" estraverse "^4.1.1"
eslint-scope@^7.1.1:
version "7.1.1"
resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.1.1.tgz#fff34894c2f65e5226d3041ac480b4513a163642"
integrity sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==
dependencies:
esrecurse "^4.3.0"
estraverse "^5.2.0"
eslint-utils@^2.0.0, eslint-utils@^2.1.0: eslint-utils@^2.0.0, eslint-utils@^2.1.0:
version "2.1.0" version "2.1.0"
resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-2.1.0.tgz#d2de5e03424e707dc10c74068ddedae708741b27" resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-2.1.0.tgz#d2de5e03424e707dc10c74068ddedae708741b27"
@ -5034,6 +5151,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, eslint-visitor-keys@^3.3.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-webpack-plugin@^2.5.2: eslint-webpack-plugin@^2.5.2:
version "2.6.0" version "2.6.0"
resolved "https://registry.yarnpkg.com/eslint-webpack-plugin/-/eslint-webpack-plugin-2.6.0.tgz#3bd4ada4e539cb1f6687d2f619073dbb509361cd" resolved "https://registry.yarnpkg.com/eslint-webpack-plugin/-/eslint-webpack-plugin-2.6.0.tgz#3bd4ada4e539cb1f6687d2f619073dbb509361cd"
@ -5092,6 +5214,47 @@ eslint@^7.11.0:
text-table "^0.2.0" text-table "^0.2.0"
v8-compile-cache "^2.0.3" v8-compile-cache "^2.0.3"
eslint@^8.12.0:
version "8.12.0"
resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.12.0.tgz#c7a5bd1cfa09079aae64c9076c07eada66a46e8e"
integrity sha512-it1oBL9alZg1S8UycLm5YDMAkIhtH6FtAzuZs6YvoGVldWjbS08BkAdb/ymP9LlAyq8koANu32U7Ib/w+UNh8Q==
dependencies:
"@eslint/eslintrc" "^1.2.1"
"@humanwhocodes/config-array" "^0.9.2"
ajv "^6.10.0"
chalk "^4.0.0"
cross-spawn "^7.0.2"
debug "^4.3.2"
doctrine "^3.0.0"
escape-string-regexp "^4.0.0"
eslint-scope "^7.1.1"
eslint-utils "^3.0.0"
eslint-visitor-keys "^3.3.0"
espree "^9.3.1"
esquery "^1.4.0"
esutils "^2.0.2"
fast-deep-equal "^3.1.3"
file-entry-cache "^6.0.1"
functional-red-black-tree "^1.0.1"
glob-parent "^6.0.1"
globals "^13.6.0"
ignore "^5.2.0"
import-fresh "^3.0.0"
imurmurhash "^0.1.4"
is-glob "^4.0.0"
js-yaml "^4.1.0"
json-stable-stringify-without-jsonify "^1.0.1"
levn "^0.4.1"
lodash.merge "^4.6.2"
minimatch "^3.0.4"
natural-compare "^1.4.0"
optionator "^0.9.1"
regexpp "^3.2.0"
strip-ansi "^6.0.1"
strip-json-comments "^3.1.0"
text-table "^0.2.0"
v8-compile-cache "^2.0.3"
espree@^7.3.0, espree@^7.3.1: espree@^7.3.0, espree@^7.3.1:
version "7.3.1" version "7.3.1"
resolved "https://registry.yarnpkg.com/espree/-/espree-7.3.1.tgz#f2df330b752c6f55019f8bd89b7660039c1bbbb6" resolved "https://registry.yarnpkg.com/espree/-/espree-7.3.1.tgz#f2df330b752c6f55019f8bd89b7660039c1bbbb6"
@ -5101,6 +5264,15 @@ espree@^7.3.0, espree@^7.3.1:
acorn-jsx "^5.3.1" acorn-jsx "^5.3.1"
eslint-visitor-keys "^1.3.0" eslint-visitor-keys "^1.3.0"
espree@^9.3.1:
version "9.3.1"
resolved "https://registry.yarnpkg.com/espree/-/espree-9.3.1.tgz#8793b4bc27ea4c778c19908e0719e7b8f4115bcd"
integrity sha512-bvdyLmJMfwkV3NCRl5ZhJf22zBFo1y8bYh3VYb+bfzqNB4Je68P2sSuXyuFquzWLebHpNd2/d5uv7yoP9ISnGQ==
dependencies:
acorn "^8.7.0"
acorn-jsx "^5.3.1"
eslint-visitor-keys "^3.3.0"
esprima@^4.0.0, esprima@^4.0.1: esprima@^4.0.0, esprima@^4.0.1:
version "4.0.1" version "4.0.1"
resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71"
@ -5751,6 +5923,13 @@ glob-parent@^5.1.2, glob-parent@~5.1.2:
dependencies: dependencies:
is-glob "^4.0.1" is-glob "^4.0.1"
glob-parent@^6.0.1:
version "6.0.2"
resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3"
integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==
dependencies:
is-glob "^4.0.3"
glob@^7.0.0, glob@^7.0.3, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: glob@^7.0.0, glob@^7.0.3, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6:
version "7.2.0" version "7.2.0"
resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.0.tgz#d15535af7732e02e948f4c41628bd910293f6023" resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.0.tgz#d15535af7732e02e948f4c41628bd910293f6023"
@ -5815,7 +5994,7 @@ globby@11.0.1:
merge2 "^1.3.0" merge2 "^1.3.0"
slash "^3.0.0" slash "^3.0.0"
globby@^11.0.3: globby@^11.0.3, globby@^11.0.4:
version "11.1.0" version "11.1.0"
resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b"
integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==
@ -5915,7 +6094,7 @@ has-flag@^4.0.0:
resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b"
integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==
has-symbols@^1.0.1, has-symbols@^1.0.2: has-symbols@^1.0.1, has-symbols@^1.0.2, has-symbols@^1.0.3:
version "1.0.3" version "1.0.3"
resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8"
integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==
@ -6577,7 +6756,7 @@ is-module@^1.0.0:
resolved "https://registry.yarnpkg.com/is-module/-/is-module-1.0.0.tgz#3258fb69f78c14d5b815d664336b4cffb6441591" resolved "https://registry.yarnpkg.com/is-module/-/is-module-1.0.0.tgz#3258fb69f78c14d5b815d664336b4cffb6441591"
integrity sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE= integrity sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=
is-negative-zero@^2.0.1: is-negative-zero@^2.0.2:
version "2.0.2" version "2.0.2"
resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.2.tgz#7bf6f03a28003b8b3965de3ac26f664d765f3150" resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.2.tgz#7bf6f03a28003b8b3965de3ac26f664d765f3150"
integrity sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA== integrity sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==
@ -6704,7 +6883,7 @@ is-typedarray@^1.0.0, is-typedarray@~1.0.0:
resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a"
integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=
is-weakref@^1.0.1: is-weakref@^1.0.2:
version "1.0.2" version "1.0.2"
resolved "https://registry.yarnpkg.com/is-weakref/-/is-weakref-1.0.2.tgz#9529f383a9338205e89765e0392efc2f100f06f2" resolved "https://registry.yarnpkg.com/is-weakref/-/is-weakref-1.0.2.tgz#9529f383a9338205e89765e0392efc2f100f06f2"
integrity sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ== integrity sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==
@ -7274,6 +7453,13 @@ js-yaml@^3.13.1:
argparse "^1.0.7" argparse "^1.0.7"
esprima "^4.0.0" esprima "^4.0.0"
js-yaml@^4.1.0:
version "4.1.0"
resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602"
integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==
dependencies:
argparse "^2.0.1"
jsbn@~0.1.0: jsbn@~0.1.0:
version "0.1.1" version "0.1.1"
resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513"
@ -7365,11 +7551,9 @@ json5@^1.0.1:
minimist "^1.2.0" minimist "^1.2.0"
json5@^2.1.2: json5@^2.1.2:
version "2.2.0" version "2.2.1"
resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.0.tgz#2dfefe720c6ba525d9ebd909950f0515316c89a3" resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.1.tgz#655d50ed1e6f95ad1a3caababd2b0efda10b395c"
integrity sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA== integrity sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==
dependencies:
minimist "^1.2.5"
jsonfile@^4.0.0: jsonfile@^4.0.0:
version "4.0.0" version "4.0.0"
@ -7398,11 +7582,11 @@ jsprim@^1.2.2:
verror "1.10.0" verror "1.10.0"
"jsx-ast-utils@^2.4.1 || ^3.0.0", jsx-ast-utils@^3.2.1: "jsx-ast-utils@^2.4.1 || ^3.0.0", jsx-ast-utils@^3.2.1:
version "3.2.1" version "3.2.2"
resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-3.2.1.tgz#720b97bfe7d901b927d87c3773637ae8ea48781b" resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-3.2.2.tgz#6ab1e52c71dfc0c0707008a91729a9491fe9f76c"
integrity sha512-uP5vu8xfy2F9A6LGC22KO7e2/vGTS1MhP+18f++ZNlf0Ohaxbc9nIEwHAsejlJKyzfZzU5UIhe5ItYkitcZnZA== integrity sha512-HDAyJ4MNQBboGpUnHAVUNJs6X0lh058s6FuixsFGP7MgJYpD6Vasd6nzSG5iIfXu1zAYlHJ/zsOKNlrenTUBnw==
dependencies: dependencies:
array-includes "^3.1.3" array-includes "^3.1.4"
object.assign "^4.1.2" object.assign "^4.1.2"
killable@^1.0.1: killable@^1.0.1:
@ -7801,12 +7985,12 @@ micromatch@^3.1.10, micromatch@^3.1.4:
to-regex "^3.0.2" to-regex "^3.0.2"
micromatch@^4.0.2, micromatch@^4.0.4: micromatch@^4.0.2, micromatch@^4.0.4:
version "4.0.4" version "4.0.5"
resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.4.tgz#896d519dfe9db25fce94ceb7a500919bf881ebf9" resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6"
integrity sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg== integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==
dependencies: dependencies:
braces "^3.0.1" braces "^3.0.2"
picomatch "^2.2.3" picomatch "^2.3.1"
miller-rabin@^4.0.0: miller-rabin@^4.0.0:
version "4.0.1" version "4.0.1"
@ -7898,10 +8082,10 @@ minimist-options@4.1.0:
is-plain-obj "^1.1.0" is-plain-obj "^1.1.0"
kind-of "^6.0.3" kind-of "^6.0.3"
minimist@^1.1.1, minimist@^1.2.0, minimist@^1.2.5: minimist@^1.1.1, minimist@^1.2.0, minimist@^1.2.6:
version "1.2.5" version "1.2.6"
resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.6.tgz#8637a5b759ea0d6e98702cfb3a9283323c93af44"
integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== integrity sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==
minipass-collect@^1.0.2: minipass-collect@^1.0.2:
version "1.0.2" version "1.0.2"
@ -7964,11 +8148,11 @@ mixin-deep@^1.2.0:
is-extendable "^1.0.1" is-extendable "^1.0.1"
mkdirp@^0.5.1, mkdirp@^0.5.3, mkdirp@^0.5.5, mkdirp@~0.5.1: mkdirp@^0.5.1, mkdirp@^0.5.3, mkdirp@^0.5.5, mkdirp@~0.5.1:
version "0.5.5" version "0.5.6"
resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.6.tgz#7def03d2432dcae4ba1d611445c48396062255f6"
integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ== integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==
dependencies: dependencies:
minimist "^1.2.5" minimist "^1.2.6"
mkdirp@^1.0.3, mkdirp@^1.0.4: mkdirp@^1.0.3, mkdirp@^1.0.4:
version "1.0.4" version "1.0.4"
@ -8021,9 +8205,9 @@ nan@^2.12.1, nan@^2.13.2:
integrity sha512-8ZtvEnA2c5aYCZYd1cvgdnU6cqwixRoYg70xPLWUws5ORTa/lnw+u4amixRS/Ac5U5mQVgp9pnlSUnbNWFaWZQ== integrity sha512-8ZtvEnA2c5aYCZYd1cvgdnU6cqwixRoYg70xPLWUws5ORTa/lnw+u4amixRS/Ac5U5mQVgp9pnlSUnbNWFaWZQ==
nanoid@^3.3.1: nanoid@^3.3.1:
version "3.3.1" version "3.3.2"
resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.1.tgz#6347a18cac88af88f58af0b3594b723d5e99bb35" resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.2.tgz#c89622fafb4381cd221421c69ec58547a1eec557"
integrity sha512-n6Vs/3KGyxPQd6uO0eH4Bv0ojGSUvuLlIHtC3Y0kEO23YRge8H9x1GCzLn28YX0H66pMkxuaeESFq4tKISKwdw== integrity sha512-CuHBogktKwpm5g2sRgv83jEy2ijFzBwMoYA60orPDR7ynsLijJDqgsi4RDGj3OJpy3Ieb+LYwiRmIOGyytgITA==
nanomatch@^1.2.9: nanomatch@^1.2.9:
version "1.2.13" version "1.2.13"
@ -8311,7 +8495,7 @@ object-copy@^0.1.0:
define-property "^0.2.5" define-property "^0.2.5"
kind-of "^3.0.3" kind-of "^3.0.3"
object-inspect@^1.11.0, object-inspect@^1.9.0: object-inspect@^1.12.0, object-inspect@^1.9.0:
version "1.12.0" version "1.12.0"
resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.0.tgz#6e2c120e868fd1fd18cb4f18c31741d0d6e776f0" resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.0.tgz#6e2c120e868fd1fd18cb4f18c31741d0d6e776f0"
integrity sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g== integrity sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g==
@ -8735,7 +8919,7 @@ picocolors@^1.0.0:
resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c"
integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==
picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.2, picomatch@^2.2.3: picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.2, picomatch@^2.3.1:
version "2.3.1" version "2.3.1"
resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42"
integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==
@ -9446,9 +9630,9 @@ postcss-selector-parser@^5.0.0-rc.3, postcss-selector-parser@^5.0.0-rc.4:
uniq "^1.0.1" uniq "^1.0.1"
postcss-selector-parser@^6.0.0, postcss-selector-parser@^6.0.2: postcss-selector-parser@^6.0.0, postcss-selector-parser@^6.0.2:
version "6.0.9" version "6.0.10"
resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.9.tgz#ee71c3b9ff63d9cd130838876c13a2ec1a992b2f" resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz#79b61e2c0d1bfc2602d549e11d0876256f8df88d"
integrity sha512-UO3SgnZOVTwu4kyLR22UQ1xZh086RyNZppb7lLAKBFK8a32ttG5i87Y/P3+2bRSjZNyJ1B7hfFNo273tKe9YxQ== integrity sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==
dependencies: dependencies:
cssesc "^3.0.0" cssesc "^3.0.0"
util-deprecate "^1.0.2" util-deprecate "^1.0.2"
@ -9508,9 +9692,9 @@ postcss@^7, postcss@^7.0.0, postcss@^7.0.1, postcss@^7.0.14, postcss@^7.0.17, po
source-map "^0.6.1" source-map "^0.6.1"
postcss@^8.1.0: postcss@^8.1.0:
version "8.4.11" version "8.4.12"
resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.11.tgz#a06229f23820b4ddd46500a3e38dbca1598a8e8d" resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.12.tgz#1e7de78733b28970fa4743f7da6f3763648b1905"
integrity sha512-D+jFLnT0ilGfy4CVBGbC+XE68HkVpT8+CUkDrcSpgxmo4RKco2uaZ4kIoyVGEm+m8KN/+Vwgs8MtpNbQ3/ma9w== integrity sha512-lg6eITwYe9v6Hr5CncVbK70SoioNQIq81nsaG86ev5hAidQvmOeETBqs7jm43K2F5/Ley3ytDtriImV6TpNiSg==
dependencies: dependencies:
nanoid "^3.3.1" nanoid "^3.3.1"
picocolors "^1.0.0" picocolors "^1.0.0"
@ -10110,7 +10294,7 @@ regex-parser@^2.2.11:
resolved "https://registry.yarnpkg.com/regex-parser/-/regex-parser-2.2.11.tgz#3b37ec9049e19479806e878cabe7c1ca83ccfe58" resolved "https://registry.yarnpkg.com/regex-parser/-/regex-parser-2.2.11.tgz#3b37ec9049e19479806e878cabe7c1ca83ccfe58"
integrity sha512-jbD/FT0+9MBU2XAZluI7w2OBs1RBi6p9M83nkoZayQXXU9e8Robt69FcZc7wU4eJD/YFTjn1JdCk3rbMJajz8Q== integrity sha512-jbD/FT0+9MBU2XAZluI7w2OBs1RBi6p9M83nkoZayQXXU9e8Robt69FcZc7wU4eJD/YFTjn1JdCk3rbMJajz8Q==
regexp.prototype.flags@^1.2.0, regexp.prototype.flags@^1.3.1: regexp.prototype.flags@^1.2.0, regexp.prototype.flags@^1.4.1:
version "1.4.1" version "1.4.1"
resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.4.1.tgz#b3f4c0059af9e47eca9f3f660e51d81307e72307" resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.4.1.tgz#b3f4c0059af9e47eca9f3f660e51d81307e72307"
integrity sha512-pMR7hBVUUGI7PMA37m2ofIdQCsomVnas+Jn5UPGAHQ+/LlwKm/aTLJHdasmHRzlfeZwHiAOaRSo2rbBDm3nNUQ== integrity sha512-pMR7hBVUUGI7PMA37m2ofIdQCsomVnas+Jn5UPGAHQ+/LlwKm/aTLJHdasmHRzlfeZwHiAOaRSo2rbBDm3nNUQ==
@ -10118,7 +10302,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==
@ -11066,17 +11250,17 @@ string-width@^3.0.0, string-width@^3.1.0:
strip-ansi "^5.1.0" strip-ansi "^5.1.0"
string.prototype.matchall@^4.0.6: string.prototype.matchall@^4.0.6:
version "4.0.6" version "4.0.7"
resolved "https://registry.yarnpkg.com/string.prototype.matchall/-/string.prototype.matchall-4.0.6.tgz#5abb5dabc94c7b0ea2380f65ba610b3a544b15fa" resolved "https://registry.yarnpkg.com/string.prototype.matchall/-/string.prototype.matchall-4.0.7.tgz#8e6ecb0d8a1fb1fda470d81acecb2dba057a481d"
integrity sha512-6WgDX8HmQqvEd7J+G6VtAahhsQIssiZ8zl7zKh1VDMFyL3hRTJP4FTNA3RbIp2TOQ9AYNDcc7e3fH0Qbup+DBg== integrity sha512-f48okCX7JiwVi1NXCVWcFnZgADDC/n2vePlQ/KUCNqCikLLilQvwjMO8+BHVKvgzH0JB0J9LEPgxOGT02RoETg==
dependencies: dependencies:
call-bind "^1.0.2" call-bind "^1.0.2"
define-properties "^1.1.3" define-properties "^1.1.3"
es-abstract "^1.19.1" es-abstract "^1.19.1"
get-intrinsic "^1.1.1" get-intrinsic "^1.1.1"
has-symbols "^1.0.2" has-symbols "^1.0.3"
internal-slot "^1.0.3" internal-slot "^1.0.3"
regexp.prototype.flags "^1.3.1" regexp.prototype.flags "^1.4.1"
side-channel "^1.0.4" side-channel "^1.0.4"
string.prototype.trimend@^1.0.4: string.prototype.trimend@^1.0.4:
@ -11539,13 +11723,13 @@ ts-pnp@1.2.0, ts-pnp@^1.1.6:
integrity sha512-csd+vJOb/gkzvcCHgTGSChYpy5f1/XKNsmvBGO4JXS+z1v2HobugDz4s1IeFXM3wZB44uczs+eazB5Q/ccdhQw== integrity sha512-csd+vJOb/gkzvcCHgTGSChYpy5f1/XKNsmvBGO4JXS+z1v2HobugDz4s1IeFXM3wZB44uczs+eazB5Q/ccdhQw==
tsconfig-paths@^3.12.0: tsconfig-paths@^3.12.0:
version "3.14.0" version "3.14.1"
resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.14.0.tgz#4fcc48f9ccea8826c41b9ca093479de7f5018976" resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz#ba0734599e8ea36c862798e920bcf163277b137a"
integrity sha512-cg/1jAZoL57R39+wiw4u/SCC6Ic9Q5NqjBOb+9xISedOYurfog9ZNmKJSxAnb2m/5Bq4lE9lhUcau33Ml8DM0g== integrity sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ==
dependencies: dependencies:
"@types/json5" "^0.0.29" "@types/json5" "^0.0.29"
json5 "^1.0.1" json5 "^1.0.1"
minimist "^1.2.0" minimist "^1.2.6"
strip-bom "^3.0.0" strip-bom "^3.0.0"
tslib@^1.8.1: tslib@^1.8.1:
@ -11662,9 +11846,9 @@ typedarray@^0.0.6:
integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=
typescript@^4.3.5: typescript@^4.3.5:
version "4.6.2" version "4.6.3"
resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.6.2.tgz#fe12d2727b708f4eef40f51598b3398baa9611d4" resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.6.3.tgz#eefeafa6afdd31d725584c67a0eaba80f6fc6c6c"
integrity sha512-HM/hFigTBHZhLXshn9sN37H085+hQGeJHJ/X7LpBWLID/fbc2acUMfU+lGD98X81sKP+pFa9f0DZmCwB9GnbAg== integrity sha512-yNIatDa5iaofVozS/uQJEl3JRWLKKGJKh6Yaiv0GLGSuhpFJe7P3SbHZ8/yjAHRQwKRoA6YZqlfjXWmVzoVSMw==
unbox-primitive@^1.0.1: unbox-primitive@^1.0.1:
version "1.0.1" version "1.0.1"