diff --git a/package.json b/package.json
index e2ae47e1c..bee8b07cb 100644
--- a/package.json
+++ b/package.json
@@ -5,7 +5,7 @@
"@emotion/styled": "^10.0.14",
"@material-ui/core": "^4.2.1",
"color": "^3.1.2",
- "luxon": "^1.17.1",
+ "luxon": "^1.17.2",
"next": "9.0.2",
"react": "^16.8.6",
"react-dom": "^16.8.6",
@@ -47,12 +47,12 @@
"@types/material-ui": "^0.21.6",
"@types/node": "^12.6.8",
"@types/nprogress": "^0.2.0",
- "@types/prettier": "^1.16.4",
+ "@types/prettier": "^1.18.0",
"@types/react": "^16.8.23",
- "@types/react-dom": "^16.8.4",
+ "@types/react-dom": "^16.8.5",
"@types/smoothscroll-polyfill": "^0.3.1",
- "@typescript-eslint/eslint-plugin": "^1.12.0",
- "@typescript-eslint/parser": "^1.12.0",
+ "@typescript-eslint/eslint-plugin": "^1.13.0",
+ "@typescript-eslint/parser": "^1.13.0",
"babel-eslint": "^10.0.1",
"babel-plugin-emotion": "^10.0.14",
"concurrently": "^4.1.1",
@@ -60,10 +60,10 @@
"eslint-config-prettier": "^6.0.0",
"eslint-config-react-app": "^4.0.1",
"eslint-plugin-flowtype": "^2.x",
- "eslint-plugin-import": "^2.18.0",
+ "eslint-plugin-import": "^2.18.2",
"eslint-plugin-jsx-a11y": "^6.2.3",
"eslint-plugin-prettier": "^3.1.0",
- "eslint-plugin-react": "^7.14.2",
+ "eslint-plugin-react": "^7.14.3",
"eslint-plugin-react-hooks": "^1.6.1",
"fs-extra": "^8.1.0",
"glob": "^7.1.4",
diff --git a/scripts/lib/stepExpressionContainer.ts b/scripts/lib/stepExpressionContainer.ts
index 96b093308..e4364296f 100644
--- a/scripts/lib/stepExpressionContainer.ts
+++ b/scripts/lib/stepExpressionContainer.ts
@@ -11,7 +11,8 @@ import {
isCall,
isExecutableCallRegular,
isVariableShorthandUnaryNumber,
- isExecutableCallMagical
+ isExecutableCallMagical,
+ isExecutableCallBinary
} from 'src/lib/expressionTypeGuards'
import replaceFuncParentKey from 'scripts/lib/replaceFuncParentKey'
import {
@@ -31,6 +32,7 @@ import {
stepToCaseProcessed,
stepToCaseOnly,
stepToMagicalExpanded,
+ stepToShorthandComputed,
stepToDefault,
stepToShowExecutableUnary,
stepToUnaryProcessed,
@@ -46,7 +48,8 @@ import {
ExecutableConditionalStatesDistributed,
ExecutableCall,
ExecutableCallMagical,
- ExecutableCallBinary
+ ExecutableCallBinary,
+ ExecutableCallShorthand
} from 'src/types/ExpressionTypes'
import prioritizeExpression from 'scripts/lib/prioritizeExpression'
@@ -178,6 +181,32 @@ const stepMagical = (
}
}
+const stepShorthand = (
+ e: ExecutableCallShorthand
+): {
+ nextExpression: ExecutableCall | StepChild<'default'>
+ matchExists?: boolean
+ previouslyChangedExpressionState: ExpressionContainer['previouslyChangedExpressionState']
+} => {
+ switch (e.state) {
+ case 'default': {
+ return {
+ nextExpression: stepToActive(e),
+ previouslyChangedExpressionState: 'active'
+ }
+ }
+ case 'active': {
+ return {
+ nextExpression: stepToShorthandComputed(e),
+ previouslyChangedExpressionState: 'default'
+ }
+ }
+ default: {
+ throw new Error()
+ }
+ }
+}
+
const stepRegular = (
e: ExecutableCallRegular,
{ showAllShowSteps, skipAlphaConvert }: StepOptions,
@@ -369,7 +398,9 @@ const runStep = (
? stepRegular(expression, stepOptions, e.matchExists)
: isExecutableCallMagical(expression)
? stepMagical(expression)
- : stepBinary(expression)
+ : isExecutableCallBinary(expression)
+ ? stepBinary(expression)
+ : stepShorthand(expression)
: stepConditional(expression)
if (!callParent && !callParentKey && !funcParent && !conditionalParent) {
diff --git a/scripts/lib/steps/index.ts b/scripts/lib/steps/index.ts
index 86965cf6b..70b9c83a3 100644
--- a/scripts/lib/steps/index.ts
+++ b/scripts/lib/steps/index.ts
@@ -51,3 +51,6 @@ export {
export {
default as stepToBinaryComputed
} from 'scripts/lib/steps/stepToBinaryComputed'
+export {
+ default as stepToShorthandComputed
+} from 'scripts/lib/steps/stepToShorthandComputed'
diff --git a/scripts/lib/steps/stepToActive.ts b/scripts/lib/steps/stepToActive.ts
index 60184dab1..8db873d30 100644
--- a/scripts/lib/steps/stepToActive.ts
+++ b/scripts/lib/steps/stepToActive.ts
@@ -4,7 +4,8 @@ import {
isExecutableCallRegular,
isCall,
isExecutableCallBinary,
- isConditional
+ isConditional,
+ isExecutableCallShorthand
} from 'src/lib/expressionTypeGuards'
import {
CallExpression,
@@ -27,13 +28,18 @@ import {
MagicalVariable,
StepMagicalVariable,
ExecutableStepCallMagical,
- ExecutableStepCallBinary
+ ExecutableStepCallBinary,
+ ExecutableCallShorthand,
+ ExecutableStepCallShorthand,
+ VariableShorthandFunc,
+ StepVariableShorthandFunc
} from 'src/types/ExpressionTypes'
function toActive(
e: VariableShorthandBinary
): StepVariableShorthandBinary<'active'>
function toActive(e: MagicalVariable): StepMagicalVariable<'active'>
+function toActive(e: VariableShorthandFunc): StepVariableShorthandFunc<'active'>
function toActive(e: VariableExpression): StepVariable<'active'>
function toActive(e: FunctionExpression): StepFunction<'active'>
function toActive(e: ConditionalExpression): StepConditional<'active'>
@@ -129,11 +135,19 @@ export default function stepToActive(
e: ExecutableCallBinary
): ExecutableStepCallBinary<'active'>
export default function stepToActive(
- e: ExecutableCallRegular | ExecutableCallMagical | ExecutableCallBinary
+ e: ExecutableCallShorthand
+): ExecutableStepCallShorthand<'active'>
+export default function stepToActive(
+ e:
+ | ExecutableCallRegular
+ | ExecutableCallMagical
+ | ExecutableCallBinary
+ | ExecutableCallShorthand
):
| ExecutableStepCallRegular<'active'>
| ExecutableStepCallMagical<'active'>
- | ExecutableStepCallBinary<'active'> {
+ | ExecutableStepCallBinary<'active'>
+ | ExecutableStepCallShorthand<'active'> {
if (isExecutableCallBinary(e)) {
return {
...e,
@@ -162,6 +176,25 @@ export default function stepToActive(
emphasizePriority: true
}
}
+ } else if (isExecutableCallShorthand(e)) {
+ return {
+ ...e,
+ state: 'active',
+ arg: {
+ ...e.arg,
+ topLeftBadgeType: 'none',
+ bottomRightBadgeType: 'none',
+ highlightType: 'active',
+ emphasizePriority: true
+ },
+ func: {
+ ...e.func,
+ topLeftBadgeType: 'none',
+ bottomRightBadgeType: 'none',
+ highlightType: 'active',
+ emphasizePriority: true
+ }
+ }
} else {
const arg = isFunction(e.arg)
? toExecutableActiveFunction(e.arg)
diff --git a/scripts/lib/steps/stepToShorthandComputed.ts b/scripts/lib/steps/stepToShorthandComputed.ts
new file mode 100644
index 000000000..0f47b743a
--- /dev/null
+++ b/scripts/lib/steps/stepToShorthandComputed.ts
@@ -0,0 +1,17 @@
+import {
+ ExecutableCallShorthand,
+ VariableShorthandNumber,
+ StepVariableShorthandNumber
+} from 'src/types/ExpressionTypes'
+import toDefault from 'scripts/lib/toDefault'
+
+export default function stepToShorthandComputed(
+ e: ExecutableCallShorthand
+): StepVariableShorthandNumber<'default'> {
+ const result: VariableShorthandNumber = {
+ ...e.arg,
+ shorthandNumber:
+ e.arg.shorthandNumber + (e.func.shorthandFunc === 'add' ? 1 : -1)
+ }
+ return toDefault(result)
+}
diff --git a/scripts/lib/toDefault.ts b/scripts/lib/toDefault.ts
index 8bc59c76d..4b9c3b429 100644
--- a/scripts/lib/toDefault.ts
+++ b/scripts/lib/toDefault.ts
@@ -12,9 +12,14 @@ import {
StepChild,
StepFunction,
StepVariable,
- VariableExpression
+ VariableExpression,
+ VariableShorthandNumber,
+ StepVariableShorthandNumber
} from 'src/types/ExpressionTypes'
+export default function toDefault(
+ e: VariableShorthandNumber
+): StepVariableShorthandNumber<'default'>
export default function toDefault(
e: VariableExpression
): StepVariable<'default'>
diff --git a/src/components/MinusOne.tsx b/src/components/MinusOne.tsx
new file mode 100644
index 000000000..bfd3949a3
--- /dev/null
+++ b/src/components/MinusOne.tsx
@@ -0,0 +1,11 @@
+import React from 'react'
+import MinusOneSvg from 'src/components/MinusOneSvg'
+import Emoji, { EmojiProps } from 'src/components/Emoji'
+
+const MinusOne = (emojiProps: EmojiProps) => (
+ } />
+)
+
+MinusOne.defaultProps = Emoji.defaultProps
+
+export default MinusOne
diff --git a/src/components/MinusOneSvg.tsx b/src/components/MinusOneSvg.tsx
new file mode 100644
index 000000000..545513560
--- /dev/null
+++ b/src/components/MinusOneSvg.tsx
@@ -0,0 +1,27 @@
+import * as React from 'react'
+
+const MinusOneSvg = (props: React.SVGProps) => (
+
+)
+
+export default MinusOneSvg
diff --git a/src/components/PlusOne.tsx b/src/components/PlusOne.tsx
new file mode 100644
index 000000000..2feb26390
--- /dev/null
+++ b/src/components/PlusOne.tsx
@@ -0,0 +1,11 @@
+import React from 'react'
+import PlusOneSvg from 'src/components/PlusOneSvg'
+import Emoji, { EmojiProps } from 'src/components/Emoji'
+
+const PlusOne = (emojiProps: EmojiProps) => (
+ } />
+)
+
+PlusOne.defaultProps = Emoji.defaultProps
+
+export default PlusOne
diff --git a/src/components/PlusOneSvg.tsx b/src/components/PlusOneSvg.tsx
new file mode 100644
index 000000000..5054f3125
--- /dev/null
+++ b/src/components/PlusOneSvg.tsx
@@ -0,0 +1,23 @@
+import * as React from 'react'
+
+const PlusOneSvg = (props: React.SVGProps) => (
+
+)
+
+export default PlusOneSvg
diff --git a/src/components/VariableExpressionBox.tsx b/src/components/VariableExpressionBox.tsx
index 1f17e9a32..134b5b9e4 100644
--- a/src/components/VariableExpressionBox.tsx
+++ b/src/components/VariableExpressionBox.tsx
@@ -16,6 +16,8 @@ import { VariableExpression } from 'src/types/ExpressionTypes'
import H from 'src/components/H'
import { ExpressionRunnerContextProps } from 'src/types/ExpressionRunnerTypes'
import BlankNumber from 'src/components/BlankNumber'
+import PlusOne from 'src/components/PlusOne'
+import MinusOne from 'src/components/MinusOne'
interface VariableExpressionBoxProps {
expression: VariableExpression
@@ -175,6 +177,18 @@ const VariableEmoji = ({ expression }: VariableExpressionBoxProps) => {
)
+ } else if (expression.shorthandFunc === 'add') {
+ return (
+
+ )
+ } else if (expression.shorthandFunc === 'pred') {
+ return (
+
+
+
+ )
} else {
return (
(
@@ -59,6 +61,12 @@ export function isVariableShorthandBinary<
return isVariable(expression) && expression.shorthandBinary !== undefined
}
+export function isVariableShorthandFunc<
+ V extends VariableShorthandFunc = VariableShorthandFunc
+>(expression: Expression): expression is V {
+ return isVariable(expression) && expression.shorthandFunc !== undefined
+}
+
export function isVariableShorthandUnaryNumber<
V extends VariableShorthandUnaryNumber = VariableShorthandUnaryNumber
>(expression: Expression): expression is V {
@@ -97,6 +105,15 @@ export function isExecutableCallBinary(
)
}
+export function isExecutableCallShorthand(
+ expression: CallExpression
+): expression is E {
+ return (
+ isVariableShorthandFunc(expression.func) &&
+ isVariableShorthandNumber(expression.arg)
+ )
+}
+
export function isExecutableCall(
expression: CallExpression
): expression is E {
diff --git a/src/types/ExpressionTypes.ts b/src/types/ExpressionTypes.ts
index e943a8034..5729fe2dd 100644
--- a/src/types/ExpressionTypes.ts
+++ b/src/types/ExpressionTypes.ts
@@ -13,6 +13,7 @@ export interface VariableExpression {
readonly shorthandBinary?: 'mult' | 'add' | 'remainder'
readonly shorthandNumber?: number
readonly shorthandUnary?: 'pred'
+ readonly shorthandFunc?: 'add' | 'pred'
readonly magical?: boolean
}
@@ -33,6 +34,10 @@ export interface VariableShorthandNonUnaryNumber extends VariableExpression {
readonly shorthandNumber: NonNullable
}
+export interface VariableShorthandFunc extends VariableExpression {
+ readonly shorthandFunc: NonNullable
+}
+
export interface MagicalVariable extends VariableExpression {
readonly magical: NonNullable
}
@@ -67,6 +72,10 @@ export type VariableWithEmphasizePriorityAndState<
readonly emphasizePriority: true
}
+export type VariableWithStateShorthandFunc<
+ S extends keyof VariableStates
+> = VariableShorthandFunc & VariableStates[S]
+
export type MagicalVariableWithState<
S extends keyof VariableStates
> = MagicalVariable & VariableStates[S]
@@ -385,6 +394,17 @@ type ExecutableMagical<
readonly func: F
})
+type ExecutableShorthand<
+ S extends CallStates,
+ F extends VariableShorthandFunc,
+ N extends VariableShorthandNumber
+> = CallExpression &
+ ({
+ readonly state: S
+ readonly arg: N
+ readonly func: F
+ })
+
type ExecutableBinary<
S extends CallStates,
B extends VariableShorthandBinary,
@@ -430,6 +450,9 @@ export type StepVariableShorthandNonUnaryNumber<
export type StepMagicalVariable<
C extends CallStates = 'default'
> = MagicalVariableWithState>
+export type StepVariableShorthandFunc<
+ C extends CallStates = 'default'
+> = VariableWithStateShorthandFunc>
export interface StepConditional
extends NonExecutableConditional, StepChild, StepChild> {}
export interface StepFunction
@@ -439,6 +462,12 @@ export interface NonExecutableStepCall
extends NonExecutable> {}
export interface ExecutableStepCallRegular
extends ExecutableRegular, StepChild> {}
+export interface ExecutableStepCallShorthand
+ extends ExecutableShorthand<
+ C,
+ StepVariableShorthandFunc,
+ StepVariableShorthandNumber
+ > {}
export interface ExecutableStepCallMagical
extends ExecutableMagical, StepChild> {}
export interface ExecutableStepCallBinary
@@ -481,10 +510,16 @@ type DistributeStepCallMagical = U extends CallStates
: never
export type ExecutableCallMagical = DistributeStepCallMagical
+type DistributeStepCallShorthand = U extends CallStates
+ ? ExecutableStepCallShorthand
+ : never
+export type ExecutableCallShorthand = DistributeStepCallShorthand
+
export type ExecutableCall =
| ExecutableCallRegular
| ExecutableCallMagical
| ExecutableCallBinary
+ | ExecutableCallShorthand
type DistributeStepConditional<
U,
diff --git a/yarn.lock b/yarn.lock
index e472d9348..fe2d4e6b2 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -1351,6 +1351,11 @@
dependencies:
"@types/jest-diff" "*"
+"@types/json-schema@^7.0.3":
+ version "7.0.3"
+ resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.3.tgz#bdfd69d61e464dcc81b25159c270d75a73c1a636"
+ integrity sha512-Il2DtDVRGDcqjDtE+rF8iqg1CArehSK84HZJCT7AMITlyXRBpuPhqGLDQMowraqqu1coEaimg4ZOqggt6L6L+A==
+
"@types/luxon@^1.15.2":
version "1.15.2"
resolved "https://registry.yarnpkg.com/@types/luxon/-/luxon-1.15.2.tgz#528f11f7d6dc08cec0445d4bea8065a5bb6989b2"
@@ -1379,10 +1384,10 @@
resolved "https://registry.yarnpkg.com/@types/nprogress/-/nprogress-0.2.0.tgz#86c593682d4199212a0509cc3c4d562bbbd6e45f"
integrity sha512-1cYJrqq9GezNFPsWTZpFut/d4CjpZqA0vhqDUPFWYKF1oIyBz5qnoYMzR+0C/T96t3ebLAC1SSnwrVOm5/j74A==
-"@types/prettier@^1.16.4":
- version "1.16.4"
- resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-1.16.4.tgz#5e5e97702cb68498aaba7349b941648daaf2385c"
- integrity sha512-MG7ExKBo7AQ5UrL1awyYLNinNM/kyXgE4iP4Ul9fB+T7n768Z5Xem8IZeP6Bna0xze8gkDly49Rgge2HOEw4xA==
+"@types/prettier@^1.18.0":
+ version "1.18.0"
+ resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-1.18.0.tgz#d2dbe4d5f76b455138f13a2d881278e2c06a733d"
+ integrity sha512-5N6WK/XXs9PLPpge2KOmOSaIym2vIo32GsrxM5YOFs7uZ8R9L/acg+hQzWsfwoHEpasqQkH0+3LzLTbiF1GFLQ==
"@types/prop-types@*":
version "15.7.1"
@@ -1401,10 +1406,10 @@
dependencies:
"@types/react" "*"
-"@types/react-dom@^16.8.4":
- version "16.8.4"
- resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-16.8.4.tgz#7fb7ba368857c7aa0f4e4511c4710ca2c5a12a88"
- integrity sha512-eIRpEW73DCzPIMaNBDP5pPIpK1KXyZwNgfxiVagb5iGiz6da+9A5hslSX6GAQKdO7SayVCS/Fr2kjqprgAvkfA==
+"@types/react-dom@^16.8.5":
+ version "16.8.5"
+ resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-16.8.5.tgz#3e3f4d99199391a7fb40aa3a155c8dd99b899cbd"
+ integrity sha512-idCEjROZ2cqh29+trmTmZhsBAUNQuYrF92JHKzZ5+aiFM1mlSk3bb23CK7HhYuOY75Apgap5y2jTyHzaM2AJGA==
dependencies:
"@types/react" "*"
@@ -1438,39 +1443,40 @@
resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-12.0.12.tgz#45dd1d0638e8c8f153e87d296907659296873916"
integrity sha512-SOhuU4wNBxhhTHxYaiG5NY4HBhDIDnJF60GU+2LqHAdKKer86//e4yg69aENCtQ04n0ovz+tq2YPME5t5yp4pw==
-"@typescript-eslint/eslint-plugin@^1.12.0":
- version "1.12.0"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-1.12.0.tgz#96b4e08b5f998a198b8414508b1a289f9e8c549a"
- integrity sha512-J/ZTZF+pLNqjXBGNfq5fahsoJ4vJOkYbitWPavA05IrZ7BXUaf4XWlhUB/ic1lpOGTRpLWF+PLAePjiHp6dz8g==
+"@typescript-eslint/eslint-plugin@^1.13.0":
+ version "1.13.0"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-1.13.0.tgz#22fed9b16ddfeb402fd7bcde56307820f6ebc49f"
+ integrity sha512-WQHCozMnuNADiqMtsNzp96FNox5sOVpU8Xt4meaT4em8lOG1SrOv92/mUbEHQVh90sldKSfcOc/I0FOb/14G1g==
dependencies:
- "@typescript-eslint/experimental-utils" "1.12.0"
+ "@typescript-eslint/experimental-utils" "1.13.0"
eslint-utils "^1.3.1"
functional-red-black-tree "^1.0.1"
regexpp "^2.0.1"
tsutils "^3.7.0"
-"@typescript-eslint/experimental-utils@1.12.0":
- version "1.12.0"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-1.12.0.tgz#98417ee2e0c6fe8d1e50d934a6535d9c0f4277b6"
- integrity sha512-s0soOTMJloytr9GbPteMLNiO2HvJ+qgQkRNplABXiVw6vq7uQRvidkby64Gqt/nA7pys74HksHwRULaB/QRVyw==
+"@typescript-eslint/experimental-utils@1.13.0":
+ version "1.13.0"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-1.13.0.tgz#b08c60d780c0067de2fb44b04b432f540138301e"
+ integrity sha512-zmpS6SyqG4ZF64ffaJ6uah6tWWWgZ8m+c54XXgwFtUv0jNz8aJAVx8chMCvnk7yl6xwn8d+d96+tWp7fXzTuDg==
dependencies:
- "@typescript-eslint/typescript-estree" "1.12.0"
+ "@types/json-schema" "^7.0.3"
+ "@typescript-eslint/typescript-estree" "1.13.0"
eslint-scope "^4.0.0"
-"@typescript-eslint/parser@^1.12.0":
- version "1.12.0"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-1.12.0.tgz#9965895ec4745578185965d63f21510f93a3f35a"
- integrity sha512-0uzbaa9ZLCA5yMWJywnJJ7YVENKGWVUhJDV5UrMoldC5HoI54W5kkdPhTfmtFKpPFp93MIwmJj0/61ztvmz5Dw==
+"@typescript-eslint/parser@^1.13.0":
+ version "1.13.0"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-1.13.0.tgz#61ac7811ea52791c47dc9fd4dd4a184fae9ac355"
+ integrity sha512-ITMBs52PCPgLb2nGPoeT4iU3HdQZHcPaZVw+7CsFagRJHUhyeTgorEwHXhFf3e7Evzi8oujKNpHc8TONth8AdQ==
dependencies:
"@types/eslint-visitor-keys" "^1.0.0"
- "@typescript-eslint/experimental-utils" "1.12.0"
- "@typescript-eslint/typescript-estree" "1.12.0"
+ "@typescript-eslint/experimental-utils" "1.13.0"
+ "@typescript-eslint/typescript-estree" "1.13.0"
eslint-visitor-keys "^1.0.0"
-"@typescript-eslint/typescript-estree@1.12.0":
- version "1.12.0"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-1.12.0.tgz#d8dd0a7cffb5e3c0c3e98714042d83e316dfc9a9"
- integrity sha512-nwN6yy//XcVhFs0ZyU+teJHB8tbCm7AIA8mu6E2r5hu6MajwYBY3Uwop7+rPZWUN/IUOHpL8C+iUPMDVYUU3og==
+"@typescript-eslint/typescript-estree@1.13.0":
+ version "1.13.0"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-1.13.0.tgz#8140f17d0f60c03619798f1d628b8434913dc32e"
+ integrity sha512-b5rCmd2e6DCC6tCTN9GSUAuxdYwCM/k/2wdjHGrIRGPSJotWMCe/dGpi66u42bhuh8q3QBzqM4TMA1GUUCJvdw==
dependencies:
lodash.unescape "4.0.1"
semver "5.5.0"
@@ -3294,10 +3300,10 @@ eslint-plugin-flowtype@^2.x:
dependencies:
lodash "^4.17.10"
-eslint-plugin-import@^2.18.0:
- version "2.18.1"
- resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.18.1.tgz#2e4f571d13839543992ad626a18c0edffde9626b"
- integrity sha512-YEESFKOcMIXJTosb5YaepqVhQHGMb8dxkgov560GqMDP/658U5vk6FeVSR7xXLeYkPc7xPYy+uAoiYE/bKMphA==
+eslint-plugin-import@^2.18.2:
+ version "2.18.2"
+ resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.18.2.tgz#02f1180b90b077b33d447a17a2326ceb400aceb6"
+ integrity sha512-5ohpsHAiUBRNaBWAF08izwUGlbrJoJJ+W9/TBwsGoR1MnlgfwMIKrFeSjWbt6moabiXW9xNvtFz+97KHRfI4HQ==
dependencies:
array-includes "^3.0.3"
contains-path "^0.1.0"
@@ -3338,10 +3344,10 @@ eslint-plugin-react-hooks@^1.6.1:
resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-1.6.1.tgz#3c66a5515ea3e0a221ffc5d4e75c971c217b1a4c"
integrity sha512-wHhmGJyVuijnYIJXZJHDUF2WM+rJYTjulUTqF9k61d3BTk8etydz+M4dXUVH7M76ZRS85rqBTCx0Es/lLsrjnA==
-eslint-plugin-react@^7.14.2:
- version "7.14.2"
- resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.14.2.tgz#94c193cc77a899ac0ecbb2766fbef88685b7ecc1"
- integrity sha512-jZdnKe3ip7FQOdjxks9XPN0pjUKZYq48OggNMd16Sk+8VXx6JOvXmlElxROCgp7tiUsTsze3jd78s/9AFJP2mA==
+eslint-plugin-react@^7.14.3:
+ version "7.14.3"
+ resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.14.3.tgz#911030dd7e98ba49e1b2208599571846a66bdf13"
+ integrity sha512-EzdyyBWC4Uz2hPYBiEJrKCUi2Fn+BJ9B/pJQcjw5X+x/H2Nm59S4MJIvL4O5NEE0+WbnQwEBxWY03oUk+Bc3FA==
dependencies:
array-includes "^3.0.3"
doctrine "^2.1.0"
@@ -5262,10 +5268,10 @@ lru-cache@^5.1.1:
dependencies:
yallist "^3.0.2"
-luxon@^1.17.1:
- version "1.17.1"
- resolved "https://registry.yarnpkg.com/luxon/-/luxon-1.17.1.tgz#7261aae6f7a2cc3cf83cbe24c62335cf3a48caad"
- integrity sha512-+xo7Pj54xwyEzlMdXzDqm60Ewqbn0QqACwfIo6so9M1idUtYQrD7/PHjEFQQmLCBu8wUe2IDC2jrcJJ3Buk4Pw==
+luxon@^1.17.2:
+ version "1.17.2"
+ resolved "https://registry.yarnpkg.com/luxon/-/luxon-1.17.2.tgz#95189c450341cfddf5f826ef8c32b5b022943fd5"
+ integrity sha512-qELKtIj3HD41N+MvgoxArk8DZGUb4Gpiijs91oi+ZmKJzRlxY6CoyTwNoUwnogCVs4p8HuxVJDik9JbnYgrCng==
make-dir@^1.0.0:
version "1.3.0"