mirror of
https://github.com/Sendouc/sendou.ink.git
synced 2026-07-18 16:43:56 -05:00
markdown updates
This commit is contained in:
parent
61602a2390
commit
ce1ab08dd6
|
|
@ -1,15 +1,20 @@
|
|||
import React, { useContext } from "react"
|
||||
import React, { useContext, useState } from "react"
|
||||
import { RouteComponentProps } from "@reach/router"
|
||||
import PageHeader from "../common/PageHeader"
|
||||
import { Box, Link, Flex } from "@chakra-ui/core"
|
||||
import { Box, Link, Flex, Collapse } from "@chakra-ui/core"
|
||||
import MyThemeContext from "../../themeContext"
|
||||
import WeaponImage from "../common/WeaponImage"
|
||||
import Emoji from "../elements/Emoji"
|
||||
import Button from "../elements/Button"
|
||||
import { weaponCodes, abilitiesGameOrder, gearCodes } from "../../utils/lists"
|
||||
|
||||
interface MarkdownHelpPageProps {}
|
||||
|
||||
const MarkdownHelpPage: React.FC<RouteComponentProps> = () => {
|
||||
const { themeColorWithShade } = useContext(MyThemeContext)
|
||||
const [showWeapons, setShowWeapons] = useState(false)
|
||||
const [showAbilities, setShowAbilities] = useState(false)
|
||||
const [showGear, setShowGear] = useState(false)
|
||||
return (
|
||||
<>
|
||||
<PageHeader title="Markdown Help" />
|
||||
|
|
@ -33,22 +38,6 @@ const MarkdownHelpPage: React.FC<RouteComponentProps> = () => {
|
|||
We also support certain special emoji. Below listed are the groups and
|
||||
few representatives as example:
|
||||
</p>
|
||||
<p style={{ marginTop: "0.5em" }}>
|
||||
<b>Weapon emoji</b>
|
||||
<Flex flexDir="column">
|
||||
<Box>
|
||||
:luna_blaster: ->{" "}
|
||||
<WeaponImage size="SMALL" englishName="Luna Blaster" />
|
||||
</Box>
|
||||
<Box>
|
||||
:.96_gal: -> <WeaponImage size="SMALL" englishName=".96 Gal" />
|
||||
</Box>
|
||||
<Box>
|
||||
:custom_e-liter_4k_scope: ->{" "}
|
||||
<WeaponImage size="SMALL" englishName="Custom E-liter 4K Scope" />
|
||||
</Box>
|
||||
</Flex>
|
||||
</p>
|
||||
<p style={{ marginTop: "0.5em" }}>
|
||||
<b>Mode emoji</b>
|
||||
<Flex flexDir="column">
|
||||
|
|
@ -67,17 +56,31 @@ const MarkdownHelpPage: React.FC<RouteComponentProps> = () => {
|
|||
</Flex>
|
||||
</p>
|
||||
<p style={{ marginTop: "0.5em" }}>
|
||||
<b>Ability emoji</b>
|
||||
<b>Weapon emoji</b>
|
||||
<Flex flexDir="column">
|
||||
<Box>
|
||||
:ssu: -> <Emoji value=":ssu:" />
|
||||
:luna_blaster: ->{" "}
|
||||
<WeaponImage size="SMALL" englishName="Luna Blaster" />
|
||||
</Box>
|
||||
<Box>
|
||||
:t: -> <Emoji value=":t:" />
|
||||
:96_gal: -> <WeaponImage size="SMALL" englishName=".96 Gal" />
|
||||
</Box>
|
||||
<Box>
|
||||
:rp: -> <Emoji value=":rp:" />
|
||||
:custom_e-liter_4k_scope: ->{" "}
|
||||
<WeaponImage size="SMALL" englishName="Custom E-liter 4K Scope" />
|
||||
</Box>
|
||||
<Box w="250px" my="0.5em">
|
||||
<Button onClick={() => setShowWeapons(!showWeapons)}>
|
||||
{showWeapons ? "Hide" : "Show all"}
|
||||
</Button>
|
||||
</Box>
|
||||
<Collapse mt={4} isOpen={showWeapons}>
|
||||
<Flex flexDir="column">
|
||||
{Object.keys(weaponCodes).map((code) => (
|
||||
<Box>:{code}:</Box>
|
||||
))}
|
||||
</Flex>
|
||||
</Collapse>
|
||||
</Flex>
|
||||
</p>
|
||||
<p style={{ marginTop: "0.5em" }}>
|
||||
|
|
@ -92,6 +95,18 @@ const MarkdownHelpPage: React.FC<RouteComponentProps> = () => {
|
|||
<Box>
|
||||
:rp: -> <Emoji value=":rp:" />
|
||||
</Box>
|
||||
<Box w="250px" my="0.5em">
|
||||
<Button onClick={() => setShowAbilities(!showAbilities)}>
|
||||
{showAbilities ? "Hide" : "Show all"}
|
||||
</Button>
|
||||
</Box>
|
||||
<Collapse mt={4} isOpen={showAbilities}>
|
||||
<Flex flexDir="column">
|
||||
{abilitiesGameOrder.map((code) => (
|
||||
<Box>:{code.toLowerCase()}:</Box>
|
||||
))}
|
||||
</Flex>
|
||||
</Collapse>
|
||||
</Flex>
|
||||
</p>
|
||||
<p style={{ marginTop: "0.5em" }}>
|
||||
|
|
@ -106,6 +121,18 @@ const MarkdownHelpPage: React.FC<RouteComponentProps> = () => {
|
|||
<Box>
|
||||
:black_norimaki_750s: -> <Emoji value=":black_norimaki_750s:" />
|
||||
</Box>
|
||||
<Box w="250px" my="0.5em">
|
||||
<Button onClick={() => setShowGear(!showGear)}>
|
||||
{showGear ? "Hide" : "Show all"}
|
||||
</Button>
|
||||
</Box>
|
||||
<Collapse mt={4} isOpen={showGear}>
|
||||
<Flex flexDir="column">
|
||||
{Object.keys(gearCodes).map((code) => (
|
||||
<Box>:{code}:</Box>
|
||||
))}
|
||||
</Flex>
|
||||
</Collapse>
|
||||
</Flex>
|
||||
</p>
|
||||
</Box>
|
||||
|
|
|
|||
|
|
@ -18,6 +18,7 @@ const MapPlannerPage = lazy(() => import("../plans/MapPlannerPage"))
|
|||
const FreeAgentsPage = lazy(() => import("../freeagents/FreeAgentsPage"))
|
||||
const TeamPage = lazy(() => import("../team/TeamPage"))
|
||||
const XSearch = lazy(() => import("../xsearch/Top500BrowserPage"))
|
||||
const XTrends = lazy(() => import("../xtrends/XTrendsPage"))
|
||||
const PlusPage = lazy(() => import("../plus/PlusPage"))
|
||||
const DraftCupPage = lazy(() => import("../plusdraftcup/DraftCupPage"))
|
||||
const DraftCupDetails = lazy(() => import("../plusdraftcup/DraftCupDetails"))
|
||||
|
|
@ -45,6 +46,7 @@ const Routes: React.FC = () => {
|
|||
<TournamentsDetailsPage path="/tournaments/:id" />
|
||||
<FreeAgentsPage path="/freeagents" />
|
||||
<XSearch path="/xsearch" />
|
||||
<XTrends path="/xtrends" />
|
||||
<About path="/about" />
|
||||
<Links path="/links" />
|
||||
<Access path="/access" />
|
||||
|
|
|
|||
26
frontend-react/src/components/xtrends/XTrendsPage.tsx
Normal file
26
frontend-react/src/components/xtrends/XTrendsPage.tsx
Normal file
|
|
@ -0,0 +1,26 @@
|
|||
import React from "react"
|
||||
import { RouteComponentProps } from "@reach/router"
|
||||
import { useQuery } from "@apollo/react-hooks"
|
||||
import { XTrendsData, X_TRENDS } from "../../graphql/queries/xTrends"
|
||||
import Loading from "../common/Loading"
|
||||
import Error from "../common/Error"
|
||||
import PageHeader from "../common/PageHeader"
|
||||
|
||||
interface XTrendsPageProps {}
|
||||
|
||||
const XTrendsPage: React.FC<RouteComponentProps> = () => {
|
||||
const { data, error, loading } = useQuery<XTrendsData>(X_TRENDS)
|
||||
|
||||
if (error) return <Error errorMessage={error.message} />
|
||||
if (loading) return <Loading />
|
||||
|
||||
console.log("xtrends", data!.xTrends)
|
||||
return (
|
||||
<>
|
||||
<PageHeader title="X Trends" />
|
||||
{data!.xTrends.length}
|
||||
</>
|
||||
)
|
||||
}
|
||||
|
||||
export default XTrendsPage
|
||||
|
|
@ -1,16 +0,0 @@
|
|||
import { gql } from "apollo-boost"
|
||||
|
||||
export const searchForTrend = gql`
|
||||
query searchForTrend($weapon: String!) {
|
||||
searchForTrend(weapon: $weapon) {
|
||||
weapon
|
||||
counts {
|
||||
year
|
||||
SZ
|
||||
TC
|
||||
RM
|
||||
CB
|
||||
}
|
||||
}
|
||||
}
|
||||
`
|
||||
29
frontend-react/src/graphql/queries/xTrends.ts
Normal file
29
frontend-react/src/graphql/queries/xTrends.ts
Normal file
|
|
@ -0,0 +1,29 @@
|
|||
import { gql, DocumentNode } from "apollo-boost"
|
||||
|
||||
export interface XTrendsData {
|
||||
xTrends: {
|
||||
weapon: string
|
||||
counts: {
|
||||
year: number
|
||||
SZ: number[]
|
||||
TC: number[]
|
||||
RM: number[]
|
||||
CB: number[]
|
||||
}[]
|
||||
}[]
|
||||
}
|
||||
|
||||
export const X_TRENDS: DocumentNode = gql`
|
||||
query xTrends {
|
||||
xTrends {
|
||||
weapon
|
||||
counts {
|
||||
year
|
||||
SZ
|
||||
TC
|
||||
RM
|
||||
CB
|
||||
}
|
||||
}
|
||||
}
|
||||
`
|
||||
|
|
@ -1,123 +0,0 @@
|
|||
//https://github.com/mustaphaturhan/chakra-ui-markdown-renderer/blob/master/src/index.js
|
||||
|
||||
import React from "react"
|
||||
import {
|
||||
Text,
|
||||
Code,
|
||||
Divider,
|
||||
Link,
|
||||
List,
|
||||
Checkbox,
|
||||
ListItem,
|
||||
Heading,
|
||||
Image,
|
||||
} from "@chakra-ui/core"
|
||||
|
||||
function ChakraUIRenderer() {
|
||||
function getCoreProps(props) {
|
||||
return props["data-sourcepos"]
|
||||
? { "data-sourcepos": props["data-sourcepos"] }
|
||||
: {}
|
||||
}
|
||||
|
||||
return {
|
||||
paragraph: (props) => {
|
||||
const { children } = props
|
||||
return <Text mb={2}>{children}</Text>
|
||||
},
|
||||
emphasis: (props) => {
|
||||
const { children } = props
|
||||
return <Text as="em">{children}</Text>
|
||||
},
|
||||
blockquote: (props) => {
|
||||
const { children } = props
|
||||
return <Code p={2}>{children}</Code>
|
||||
},
|
||||
code: (props) => {
|
||||
const { language, value } = props
|
||||
const className = language && `language-${language}`
|
||||
return (
|
||||
<pre {...getCoreProps(props)}>
|
||||
<Code p={2} className={className || null}>
|
||||
{value}
|
||||
</Code>
|
||||
</pre>
|
||||
)
|
||||
},
|
||||
delete: (props) => {
|
||||
const { children } = props
|
||||
return <Text as="del">{children}</Text>
|
||||
},
|
||||
thematicBreak: Divider,
|
||||
link: Link,
|
||||
img: Image,
|
||||
linkReference: Link,
|
||||
imageReference: Image,
|
||||
text: (props) => {
|
||||
const { children } = props
|
||||
return <Text as="span">{children}</Text>
|
||||
},
|
||||
list: (props) => {
|
||||
const { start, ordered, children, depth } = props
|
||||
const attrs = getCoreProps(props)
|
||||
if (start !== null && start !== 1 && start !== undefined) {
|
||||
attrs.start = start.toString()
|
||||
}
|
||||
let styleType = "disc"
|
||||
if (ordered) styleType = "decimal"
|
||||
if (depth === 1) styleType = "circle"
|
||||
return (
|
||||
<List
|
||||
spacing={24}
|
||||
as={ordered ? "ol" : "ul"}
|
||||
styleType={styleType}
|
||||
pl={4}
|
||||
{...attrs}
|
||||
>
|
||||
{children}
|
||||
</List>
|
||||
)
|
||||
},
|
||||
listItem: (props) => {
|
||||
const { children, checked } = props
|
||||
let checkbox = null
|
||||
if (checked !== null && checked !== undefined) {
|
||||
checkbox = (
|
||||
<Checkbox isChecked={checked} isReadOnly>
|
||||
{children}
|
||||
</Checkbox>
|
||||
)
|
||||
}
|
||||
return (
|
||||
<ListItem
|
||||
{...getCoreProps(props)}
|
||||
listStyleType={checked !== null ? "none" : "inherit"}
|
||||
>
|
||||
{checkbox || children}
|
||||
</ListItem>
|
||||
)
|
||||
},
|
||||
definition: () => null,
|
||||
heading: (props) => {
|
||||
const { level, children } = props
|
||||
const sizes = ["2xl", "xl", "lg", "md", "sm", "xs"]
|
||||
return (
|
||||
<Heading
|
||||
my={4}
|
||||
as={`h${level}`}
|
||||
size={sizes[`${level - 1}`]}
|
||||
{...getCoreProps(props)}
|
||||
fontFamily="'Rubik', cursive"
|
||||
>
|
||||
{children}
|
||||
</Heading>
|
||||
)
|
||||
},
|
||||
inlineCode: (props) => {
|
||||
const { children } = props
|
||||
return <Code {...getCoreProps(props)}>{children}</Code>
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
export default ChakraUIRenderer
|
||||
|
|
@ -4,9 +4,9 @@ export const weaponCodes: Record<string, Weapon> = {
|
|||
"sploosh-o-matic": "Sploosh-o-matic",
|
||||
"neo_sploosh-o-matic": "Neo Sploosh-o-matic",
|
||||
"sploosh-o-matic_7": "Sploosh-o-matic 7",
|
||||
"splattershot_jr.": "Splattershot Jr.",
|
||||
"custom_splattershot_jr.": "Custom Splattershot Jr.",
|
||||
"kensa_splattershot_jr.": "Kensa Splattershot Jr.",
|
||||
splattershot_jr: "Splattershot Jr.",
|
||||
custom_splattershot_jr: "Custom Splattershot Jr.",
|
||||
kensa_splattershot_jr: "Kensa Splattershot Jr.",
|
||||
"splash-o-matic": "Splash-o-matic",
|
||||
"neo_splash-o-matic": "Neo Splash-o-matic",
|
||||
aerospray_mg: "Aerospray MG",
|
||||
|
|
@ -15,17 +15,17 @@ export const weaponCodes: Record<string, Weapon> = {
|
|||
splattershot: "Splattershot",
|
||||
tentatek_splattershot: "Tentatek Splattershot",
|
||||
kensa_splattershot: "Kensa Splattershot",
|
||||
".52_gal": ".52 Gal",
|
||||
".52_gal_deco": ".52 Gal Deco",
|
||||
"kensa_.52_gal": "Kensa .52 Gal",
|
||||
"n-zap_'85": "N-ZAP '85",
|
||||
"n-zap_'89": "N-ZAP '89",
|
||||
"n-zap_'83": "N-ZAP '83",
|
||||
"52_gal": ".52 Gal",
|
||||
"52_gal_deco": ".52 Gal Deco",
|
||||
kensa_52_gal: "Kensa .52 Gal",
|
||||
"n-zap_85": "N-ZAP '85",
|
||||
"n-zap_89": "N-ZAP '89",
|
||||
"n-zap_83": "N-ZAP '83",
|
||||
splattershot_pro: "Splattershot Pro",
|
||||
forge_splattershot_pro: "Forge Splattershot Pro",
|
||||
kensa_splattershot_pro: "Kensa Splattershot Pro",
|
||||
".96_gal": ".96 Gal",
|
||||
".96_gal_deco": ".96 Gal Deco",
|
||||
"96_gal": ".96 Gal",
|
||||
"96_gal_deco": ".96 Gal Deco",
|
||||
jet_squelcher: "Jet Squelcher",
|
||||
custom_jet_squelcher: "Custom Jet Squelcher",
|
||||
"l-3_nozzlenose": "L-3 Nozzlenose",
|
||||
|
|
@ -209,7 +209,7 @@ export const gearCodes: Record<string, HeadGear | ClothingGear | ShoesGear> = {
|
|||
hula_punk_shirt: "Hula Punk Shirt",
|
||||
prune_parashooter: "Prune Parashooter",
|
||||
red_hula_punk_with_tie: "Red Hula Punk with Tie",
|
||||
"rockin'_leather_jacket": "Rockin' Leather Jacket",
|
||||
rockin_leather_jacket: "Rockin' Leather Jacket",
|
||||
annaki_arachno_boots: "Annaki Arachno Boots",
|
||||
annaki_habaneros: "Annaki Habaneros",
|
||||
annaki_tigers: "Annaki Tigers",
|
||||
|
|
@ -345,8 +345,8 @@ export const gearCodes: Record<string, HeadGear | ClothingGear | ShoesGear> = {
|
|||
octoleet_goggles: "Octoleet Goggles",
|
||||
sailor_cap: "Sailor Cap",
|
||||
welding_mask: "Welding Mask",
|
||||
"worker's_cap": "Worker's Cap",
|
||||
"worker's_head_towel": "Worker's Head Towel",
|
||||
workers_cap: "Worker's Cap",
|
||||
workers_head_towel: "Worker's Head Towel",
|
||||
anchor_life_vest: "Anchor Life Vest",
|
||||
crustwear_xxl: "Crustwear XXL",
|
||||
dev_uniform: "Dev Uniform",
|
||||
|
|
@ -541,10 +541,10 @@ export const gearCodes: Record<string, HeadGear | ClothingGear | ShoesGear> = {
|
|||
hockey_mask: "Hockey Mask",
|
||||
koshien_bandana: "Koshien Bandana",
|
||||
kyonshi_hat: "Kyonshi Hat",
|
||||
"li'l_devil_horns": "Li'l Devil Horns",
|
||||
lil_devil_horns: "Li'l Devil Horns",
|
||||
"mecha_head_-_htr": "Mecha Head - HTR",
|
||||
"new_year's_glasses_dx": "New Year's Glasses DX",
|
||||
"painter's_mask": "Painter's Mask",
|
||||
new_years_glasses_dx: "New Year's Glasses DX",
|
||||
painters_mask: "Painter's Mask",
|
||||
squid_facemask: "Squid Facemask",
|
||||
twisty_headband: "Twisty Headband",
|
||||
white_headband: "White Headband",
|
||||
|
|
@ -669,7 +669,7 @@ export const gearCodes: Record<string, HeadGear | ClothingGear | ShoesGear> = {
|
|||
positive_longcuff_sweater: "Positive Longcuff Sweater",
|
||||
pullover_coat: "Pullover Coat",
|
||||
short_knit_layers: "Short Knit Layers",
|
||||
"toni_k._baseball_jersey": "Toni K. Baseball Jersey",
|
||||
toni_k_baseball_jersey: "Toni K. Baseball Jersey",
|
||||
"arrow_pull-ons": "Arrow Pull-Ons",
|
||||
"toni_kensa_black_hi-tops": "Toni Kensa Black Hi-Tops",
|
||||
toni_kensa_soccer_shoes: "Toni Kensa Soccer Shoes",
|
||||
|
|
|
|||
|
|
@ -1,278 +0,0 @@
|
|||
import { useReducer, useEffect } from "react"
|
||||
import { useQuery } from "@apollo/react-hooks"
|
||||
import { searchForTrend } from "../graphql/queries/seachForTrend"
|
||||
|
||||
const month = []
|
||||
month[0] = null
|
||||
month[1] = "Jan"
|
||||
month[2] = "Feb"
|
||||
month[3] = "Mar"
|
||||
month[4] = "Apr"
|
||||
month[5] = "May"
|
||||
month[6] = "Jun"
|
||||
month[7] = "Jul"
|
||||
month[8] = "Aug"
|
||||
month[9] = "Sep"
|
||||
month[10] = "Oct"
|
||||
month[11] = "Nov"
|
||||
month[12] = "Dec"
|
||||
|
||||
const patches = {
|
||||
5: {
|
||||
2018: {
|
||||
name: "3.0",
|
||||
link: "https://splatoonwiki.org/wiki/Version_3.0.0_(Splatoon_2)",
|
||||
},
|
||||
2019: {
|
||||
name: "4.8",
|
||||
link: "https://splatoonwiki.org/wiki/Version_4.8.0_(Splatoon_2)",
|
||||
},
|
||||
},
|
||||
6: {
|
||||
2018: {
|
||||
name: "3.1",
|
||||
link: "https://splatoonwiki.org/wiki/Version_3.1.0_(Splatoon_2)",
|
||||
},
|
||||
2019: {
|
||||
name: "4.9",
|
||||
link: "https://splatoonwiki.org/wiki/Version_4.9.0_(Splatoon_2)",
|
||||
},
|
||||
},
|
||||
7: {
|
||||
2018: {
|
||||
name: "3.2",
|
||||
link: "https://splatoonwiki.org/wiki/Version_3.2.0_(Splatoon_2)",
|
||||
},
|
||||
2019: {
|
||||
name: "5.0",
|
||||
link: "https://splatoonwiki.org/wiki/Version_5.0.0_(Splatoon_2)",
|
||||
},
|
||||
},
|
||||
9: {
|
||||
2018: {
|
||||
name: "4.0",
|
||||
link: "https://splatoonwiki.org/wiki/Version_4.0.0_(Splatoon_2)",
|
||||
},
|
||||
},
|
||||
10: {
|
||||
2018: {
|
||||
name: "4.1",
|
||||
link: "https://splatoonwiki.org/wiki/Version_4.1.0_(Splatoon_2)",
|
||||
},
|
||||
},
|
||||
11: {
|
||||
2018: {
|
||||
name: "4.2",
|
||||
link: "https://splatoonwiki.org/wiki/Version_4.2.0_(Splatoon_2)",
|
||||
},
|
||||
},
|
||||
12: {
|
||||
2018: {
|
||||
name: "4.3",
|
||||
link: "https://splatoonwiki.org/wiki/Version_4.3.0_(Splatoon_2)",
|
||||
},
|
||||
},
|
||||
1: {
|
||||
2019: {
|
||||
name: "4.4",
|
||||
link: "https://splatoonwiki.org/wiki/Version_4.4.0_(Splatoon_2)",
|
||||
},
|
||||
},
|
||||
3: {
|
||||
2019: {
|
||||
name: "4.5",
|
||||
link: "https://splatoonwiki.org/wiki/Version_4.5.0_(Splatoon_2)",
|
||||
},
|
||||
},
|
||||
4: {
|
||||
2019: {
|
||||
name: "4.6+4.7",
|
||||
link: "https://splatoonwiki.org/wiki/List_of_updates_in_Splatoon_2",
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
const presetColors = [
|
||||
"#FF00FF",
|
||||
"#008000",
|
||||
"#FF0000",
|
||||
"#0000FF",
|
||||
"#FFA500",
|
||||
"#800080",
|
||||
"#A52A2A",
|
||||
"#1BC5CD",
|
||||
"#000080",
|
||||
"#5BCCA0",
|
||||
]
|
||||
|
||||
const setPlotDataInitial = () => {
|
||||
const arr_to_return = []
|
||||
for (let i = 5; i < 13; i++) {
|
||||
if (patches.hasOwnProperty(i) && patches[i].hasOwnProperty(2018)) {
|
||||
arr_to_return.push({
|
||||
name: i,
|
||||
year: 2018,
|
||||
xLabel: month[i],
|
||||
patch: patches[i][2018].name,
|
||||
})
|
||||
} else {
|
||||
arr_to_return.push({ name: i, year: 2018, xLabel: month[i] })
|
||||
}
|
||||
}
|
||||
const d = new Date()
|
||||
const year = d.getFullYear()
|
||||
const currentMonth = d.getMonth() + 1
|
||||
for (let i = 2019; i < year + 1; i++) {
|
||||
for (let j = 1; j < 13; j++) {
|
||||
// break the loop when we reach the future
|
||||
if (i === year && j === currentMonth) break
|
||||
const xLabel = j === 1 ? `Jan (${year})` : month[j]
|
||||
if (patches.hasOwnProperty(j) && patches[j].hasOwnProperty(i)) {
|
||||
arr_to_return.push({
|
||||
name: j,
|
||||
year: i,
|
||||
xLabel,
|
||||
patch: patches[j][i].name,
|
||||
})
|
||||
} else {
|
||||
arr_to_return.push({ name: j, year: i, xLabel })
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return arr_to_return
|
||||
}
|
||||
|
||||
const mergeModeArrays = countObj => {
|
||||
const sz_arr = countObj["SZ"]
|
||||
const tc_arr = countObj["TC"]
|
||||
const rm_arr = countObj["RM"]
|
||||
const cb_arr = countObj["CB"]
|
||||
const arr_to_return = new Array(12).fill(0)
|
||||
for (let i = 1; i < 13; i++) {
|
||||
arr_to_return[i] = sz_arr[i] + tc_arr[i] + rm_arr[i] + cb_arr[i]
|
||||
}
|
||||
return arr_to_return
|
||||
}
|
||||
|
||||
// monthIndex is between 1 and 12 (inclusive)
|
||||
const resolveStartIndex = (monthIndex, year) => {
|
||||
// resolves start index for an array where index 0 is always May 2018
|
||||
if (year === 2018) {
|
||||
return monthIndex - 5
|
||||
} else if (year === 2019) {
|
||||
return 7 + monthIndex
|
||||
} else {
|
||||
return 7 + monthIndex + (year - 2019) * 12
|
||||
}
|
||||
}
|
||||
|
||||
const getColor = state => {
|
||||
if (state.keys.length < 9) {
|
||||
return presetColors[state.keys.length]
|
||||
}
|
||||
|
||||
return "#000000".replace(/0/g, function() {
|
||||
return (~~(Math.random() * 16)).toString(16)
|
||||
})
|
||||
}
|
||||
|
||||
const reducer = (state, action) => {
|
||||
switch (action.type) {
|
||||
case "add":
|
||||
const trend = action.trendDocument
|
||||
const mode = action.mode
|
||||
const modeLabel = mode === "ALL" ? "" : ` (${mode})`
|
||||
const weapon = `${action.trendDocument.weapon}${modeLabel}`
|
||||
// don't add duplicate plots
|
||||
if (state.keys.indexOf(weapon) !== -1) return state
|
||||
const toPlotData = [...state.data]
|
||||
for (let index = 0; index < trend.counts.length; index++) {
|
||||
let year = trend.counts[index].year
|
||||
let year_arr = null
|
||||
if (mode === "ALL") {
|
||||
year_arr = mergeModeArrays(trend.counts[index])
|
||||
} else {
|
||||
year_arr = trend.counts[index][mode]
|
||||
}
|
||||
|
||||
for (let i = 1; i < 13; i++) {
|
||||
// if year is 2018 skipping to the index where values are found
|
||||
if (year === 2018 && i < 5) {
|
||||
i = 4
|
||||
continue
|
||||
}
|
||||
const plotIndex = resolveStartIndex(i, year)
|
||||
if (plotIndex === toPlotData.length) break
|
||||
toPlotData[plotIndex][weapon] = year_arr[i]
|
||||
}
|
||||
}
|
||||
|
||||
const keyObj = {
|
||||
weapon,
|
||||
color: getColor(state),
|
||||
}
|
||||
return { data: toPlotData, keys: [...state.keys, keyObj] }
|
||||
case "delete":
|
||||
const weaponToDelete = action.weapon
|
||||
const newKeys = [...state.keys].filter(k => k.weapon !== weaponToDelete)
|
||||
return { data: state.data, keys: newKeys }
|
||||
case "combine":
|
||||
const weaponLeft = action.left
|
||||
const weaponRight = action.right
|
||||
const newKey = `${weaponLeft} + ${weaponRight}`
|
||||
const newKeysWithCombined = [
|
||||
...state.keys,
|
||||
{ weapon: newKey, color: getColor(state) },
|
||||
].filter(k => k.weapon !== weaponLeft && k.weapon !== weaponRight)
|
||||
const newDataWithCombined = [...state.data].map(d => {
|
||||
const dataObj = { ...d }
|
||||
let weaponLeftCount = 0
|
||||
let weaponRightCount = 0
|
||||
if (dataObj.hasOwnProperty(weaponLeft))
|
||||
weaponLeftCount = dataObj[weaponLeft]
|
||||
if (dataObj.hasOwnProperty(weaponRight))
|
||||
weaponRightCount = dataObj[weaponRight]
|
||||
dataObj[newKey] = weaponLeftCount + weaponRightCount
|
||||
delete dataObj[weaponLeft]
|
||||
delete dataObj[weaponRight]
|
||||
return dataObj
|
||||
})
|
||||
|
||||
return { data: newDataWithCombined, keys: newKeysWithCombined }
|
||||
case "randomizeColor":
|
||||
const keysWithNewColor = [...state.keys].map(k => {
|
||||
if (k.weapon !== action.weapon) {
|
||||
return k
|
||||
}
|
||||
return {
|
||||
...k,
|
||||
color: "#000000".replace(/0/g, function() {
|
||||
return (~~(Math.random() * 16)).toString(16)
|
||||
}),
|
||||
}
|
||||
})
|
||||
return { data: state.data, keys: keysWithNewColor }
|
||||
default:
|
||||
throw new Error()
|
||||
}
|
||||
}
|
||||
|
||||
export default function useTrends(weapon, mode) {
|
||||
const [plotData, dispatch] = useReducer(reducer, {
|
||||
data: setPlotDataInitial(),
|
||||
keys: [],
|
||||
})
|
||||
// Skip query if there is no weapon provided
|
||||
const { data, loading, error } = useQuery(searchForTrend, {
|
||||
skip: !weapon,
|
||||
variables: { weapon },
|
||||
})
|
||||
|
||||
useEffect(() => {
|
||||
if (loading || !data) return
|
||||
dispatch({ type: "add", trendDocument: data.searchForTrend, mode })
|
||||
}, [loading, data, mode])
|
||||
|
||||
return { loading, error, plotData, dispatch }
|
||||
}
|
||||
|
|
@ -1,9 +1,10 @@
|
|||
const { UserInputError, gql } = require("apollo-server-express")
|
||||
const Trend = require("../mongoose-models/trend")
|
||||
const weapons = require("../utils/weapons")
|
||||
|
||||
const typeDef = gql`
|
||||
extend type Query {
|
||||
searchForTrend(weapon: String!): Trend
|
||||
xTrends: [Trend!]!
|
||||
}
|
||||
type Year {
|
||||
year: Int!
|
||||
|
|
@ -24,12 +25,10 @@ const typeDef = gql`
|
|||
|
||||
const resolvers = {
|
||||
Query: {
|
||||
searchForTrend: (root, args) => {
|
||||
return Trend.findOne({ weapon: args.weapon }).catch(e => {
|
||||
throw new UserInputError(e.message, {
|
||||
invalidArgs: args,
|
||||
})
|
||||
})
|
||||
xTrends: async (root, args) => {
|
||||
const trends = await Trend.find({})
|
||||
|
||||
return trends.filter((trend) => weapons.includes(trend.weapon))
|
||||
},
|
||||
},
|
||||
}
|
||||
|
|
|
|||
269
package-lock.json
generated
269
package-lock.json
generated
|
|
@ -25,18 +25,18 @@
|
|||
},
|
||||
"dependencies": {
|
||||
"@types/node": {
|
||||
"version": "10.17.17",
|
||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-10.17.17.tgz",
|
||||
"integrity": "sha512-gpNnRnZP3VWzzj5k3qrpRC6Rk3H/uclhAVo1aIvwzK5p5cOrs9yEyQ8H/HBsBY0u5rrWxXEiVPQ0dEB6pkjE8Q=="
|
||||
"version": "10.17.18",
|
||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-10.17.18.tgz",
|
||||
"integrity": "sha512-DQ2hl/Jl3g33KuAUOcMrcAOtsbzb+y/ufakzAdeK9z/H/xsvkpbETZZbPNMIiQuk24f5ZRMCcZIViAwyFIiKmg=="
|
||||
}
|
||||
}
|
||||
},
|
||||
"@apollographql/apollo-tools": {
|
||||
"version": "0.4.3",
|
||||
"resolved": "https://registry.npmjs.org/@apollographql/apollo-tools/-/apollo-tools-0.4.3.tgz",
|
||||
"integrity": "sha512-CtC1bmohB1owdGMT2ZZKacI94LcPAZDN2WvCe+4ZXT5d7xO5PHOAb70EP/LcFbvnS8QI+pkYRSCGFQnUcv9efg==",
|
||||
"version": "0.4.5",
|
||||
"resolved": "https://registry.npmjs.org/@apollographql/apollo-tools/-/apollo-tools-0.4.5.tgz",
|
||||
"integrity": "sha512-KOZC4Y+JM4iQQ7P4CVC878Ee7ya0QoHApGHu4klwjwZkYyOdWIvbML7JfXOUb/AfCO4DFmJfHCjRdAX09Ga6sQ==",
|
||||
"requires": {
|
||||
"apollo-env": "^0.6.1"
|
||||
"apollo-env": "^0.6.2"
|
||||
}
|
||||
},
|
||||
"@apollographql/graphql-playground-html": {
|
||||
|
|
@ -123,6 +123,11 @@
|
|||
"@types/node": "*"
|
||||
}
|
||||
},
|
||||
"@types/content-disposition": {
|
||||
"version": "0.5.3",
|
||||
"resolved": "https://registry.npmjs.org/@types/content-disposition/-/content-disposition-0.5.3.tgz",
|
||||
"integrity": "sha512-P1bffQfhD3O4LW0ioENXUhZ9OIa0Zn+P7M+pWgkCKaT53wVLSq0mrKksCID/FGHpFhRSxRGhgrQmfhRuzwtKdg=="
|
||||
},
|
||||
"@types/cookies": {
|
||||
"version": "0.7.4",
|
||||
"resolved": "https://registry.npmjs.org/@types/cookies/-/cookies-0.7.4.tgz",
|
||||
|
|
@ -143,19 +148,20 @@
|
|||
}
|
||||
},
|
||||
"@types/express": {
|
||||
"version": "4.17.3",
|
||||
"resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.3.tgz",
|
||||
"integrity": "sha512-I8cGRJj3pyOLs/HndoP+25vOqhqWkAZsWMEmq1qXy/b/M3ppufecUwaK2/TVDVxcV61/iSdhykUjQQ2DLSrTdg==",
|
||||
"version": "4.17.4",
|
||||
"resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.4.tgz",
|
||||
"integrity": "sha512-DO1L53rGqIDUEvOjJKmbMEQ5Z+BM2cIEPy/eV3En+s166Gz+FeuzRerxcab757u/U4v4XF4RYrZPmqKa+aY/2w==",
|
||||
"requires": {
|
||||
"@types/body-parser": "*",
|
||||
"@types/express-serve-static-core": "*",
|
||||
"@types/qs": "*",
|
||||
"@types/serve-static": "*"
|
||||
}
|
||||
},
|
||||
"@types/express-serve-static-core": {
|
||||
"version": "4.17.2",
|
||||
"resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.2.tgz",
|
||||
"integrity": "sha512-El9yMpctM6tORDAiBwZVLMcxoTMcqqRO9dVyYcn7ycLWbvR8klrDn8CAOwRfZujZtWD7yS/mshTdz43jMOejbg==",
|
||||
"version": "4.17.3",
|
||||
"resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.3.tgz",
|
||||
"integrity": "sha512-sHEsvEzjqN+zLbqP+8OXTipc10yH1QLR+hnr5uw29gi9AhCAAAdri8ClNV7iMdrJrIzXIQtlkPvq8tJGhj3QJQ==",
|
||||
"requires": {
|
||||
"@types/node": "*",
|
||||
"@types/range-parser": "*"
|
||||
|
|
@ -201,11 +207,12 @@
|
|||
"integrity": "sha512-GJhpTepz2udxGexqos8wgaBx4I/zWIDPh/KOGEwAqtuGDkOUJu5eFvwmdBX4AmB8Odsr+9pHCQqiAqDL/yKMKw=="
|
||||
},
|
||||
"@types/koa": {
|
||||
"version": "2.11.2",
|
||||
"resolved": "https://registry.npmjs.org/@types/koa/-/koa-2.11.2.tgz",
|
||||
"integrity": "sha512-2UPelagNNW6bnc1I5kIzluCaheXRA9S+NyOdXEFFj9Az7jc15ek5V03kb8OTbb3tdZ5i2BIJObe86PhHvpMolg==",
|
||||
"version": "2.11.3",
|
||||
"resolved": "https://registry.npmjs.org/@types/koa/-/koa-2.11.3.tgz",
|
||||
"integrity": "sha512-ABxVkrNWa4O/Jp24EYI/hRNqEVRlhB9g09p48neQp4m3xL1TJtdWk2NyNQSMCU45ejeELMQZBYyfstyVvO2H3Q==",
|
||||
"requires": {
|
||||
"@types/accepts": "*",
|
||||
"@types/content-disposition": "*",
|
||||
"@types/cookies": "*",
|
||||
"@types/http-assert": "*",
|
||||
"@types/keygrip": "*",
|
||||
|
|
@ -232,18 +239,24 @@
|
|||
"integrity": "sha512-FwI9gX75FgVBJ7ywgnq/P7tw+/o1GUbtP0KzbtusLigAOgIgNISRK0ZPl4qertvXSIE8YbsVJueQ90cDt9YYyw=="
|
||||
},
|
||||
"@types/node": {
|
||||
"version": "13.7.7",
|
||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-13.7.7.tgz",
|
||||
"integrity": "sha512-Uo4chgKbnPNlxQwoFmYIwctkQVkMMmsAoGGU4JKwLuvBefF0pCq4FybNSnfkfRCpC7ZW7kttcC/TrRtAJsvGtg=="
|
||||
"version": "13.11.0",
|
||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-13.11.0.tgz",
|
||||
"integrity": "sha512-uM4mnmsIIPK/yeO+42F2RQhGUIs39K2RFmugcJANppXe6J1nvH87PvzPZYpza7Xhhs8Yn9yIAVdLZ84z61+0xQ=="
|
||||
},
|
||||
"@types/node-fetch": {
|
||||
"version": "2.5.4",
|
||||
"resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.5.4.tgz",
|
||||
"integrity": "sha512-Oz6id++2qAOFuOlE1j0ouk1dzl3mmI1+qINPNBhi9nt/gVOz0G+13Ao6qjhdF0Ys+eOkhu6JnFmt38bR3H0POQ==",
|
||||
"version": "2.5.5",
|
||||
"resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.5.5.tgz",
|
||||
"integrity": "sha512-IWwjsyYjGw+em3xTvWVQi5MgYKbRs0du57klfTaZkv/B24AEQ/p/IopNeqIYNy3EsfHOpg8ieQSDomPcsYMHpA==",
|
||||
"requires": {
|
||||
"@types/node": "*"
|
||||
"@types/node": "*",
|
||||
"form-data": "^3.0.0"
|
||||
}
|
||||
},
|
||||
"@types/qs": {
|
||||
"version": "6.9.1",
|
||||
"resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.1.tgz",
|
||||
"integrity": "sha512-lhbQXx9HKZAPgBkISrBcmAcMpZsmpe/Cd/hY7LGZS5OfkySUBItnPZHgQPssWYUET8elF+yCFBbP1Q0RZPTdaw=="
|
||||
},
|
||||
"@types/range-parser": {
|
||||
"version": "1.2.3",
|
||||
"resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.3.tgz",
|
||||
|
|
@ -267,9 +280,9 @@
|
|||
}
|
||||
},
|
||||
"@wry/equality": {
|
||||
"version": "0.1.9",
|
||||
"resolved": "https://registry.npmjs.org/@wry/equality/-/equality-0.1.9.tgz",
|
||||
"integrity": "sha512-mB6ceGjpMGz1ZTza8HYnrPGos2mC6So4NhS1PtZ8s4Qt0K7fBiIGhpSxUbQmhwcSWE3no+bYxmI2OL6KuXYmoQ==",
|
||||
"version": "0.1.11",
|
||||
"resolved": "https://registry.npmjs.org/@wry/equality/-/equality-0.1.11.tgz",
|
||||
"integrity": "sha512-mwEVBDUVODlsQQ5dfuLUS5/Tf7jqUKyhKYHmVi4fPB6bDMOfWvUPJmKgS1Z7Za/sOI3vzWt4+O7yCiL/70MogA==",
|
||||
"requires": {
|
||||
"tslib": "^1.9.3"
|
||||
}
|
||||
|
|
@ -324,12 +337,12 @@
|
|||
}
|
||||
},
|
||||
"apollo-cache-control": {
|
||||
"version": "0.9.0",
|
||||
"resolved": "https://registry.npmjs.org/apollo-cache-control/-/apollo-cache-control-0.9.0.tgz",
|
||||
"integrity": "sha512-iLT6IT4Ul5cMfBcJAvhpk3a7AD6fXqvFxNmJEPVapVJHbSKYIjra4PTis13sOyN5Y3WQS6a+NRFxAW8+hL3q3Q==",
|
||||
"version": "0.9.1",
|
||||
"resolved": "https://registry.npmjs.org/apollo-cache-control/-/apollo-cache-control-0.9.1.tgz",
|
||||
"integrity": "sha512-9t2EcRevUrANuGhF5XUbKJEfnc6Jy2Rn7Y8nOIKlsEEC+AX7Ko4svWYTyyTxj0h0RXfiegY2nbz4sVry/pS3rA==",
|
||||
"requires": {
|
||||
"apollo-server-env": "^2.4.3",
|
||||
"graphql-extensions": "^0.11.0"
|
||||
"graphql-extensions": "^0.11.1"
|
||||
}
|
||||
},
|
||||
"apollo-datasource": {
|
||||
|
|
@ -342,18 +355,18 @@
|
|||
}
|
||||
},
|
||||
"apollo-engine-reporting": {
|
||||
"version": "1.7.0",
|
||||
"resolved": "https://registry.npmjs.org/apollo-engine-reporting/-/apollo-engine-reporting-1.7.0.tgz",
|
||||
"integrity": "sha512-jsjSnoHrRmk4XXK4aFU17YSJILmWsilKRwIeN74QJsSxjn5SCVF4EI/ebf/MNrTHpft8EhShx+wdkAcOD9ivqA==",
|
||||
"version": "1.7.1",
|
||||
"resolved": "https://registry.npmjs.org/apollo-engine-reporting/-/apollo-engine-reporting-1.7.1.tgz",
|
||||
"integrity": "sha512-9ykddPxlC95R9CkkJaPaGriRbOGfzeKqqPXRAunyX1h4sG/8g+MJ/gGzmnNf63k6RvRUdRENCE83wPk2OeU+2A==",
|
||||
"requires": {
|
||||
"apollo-engine-reporting-protobuf": "^0.4.4",
|
||||
"apollo-graphql": "^0.4.0",
|
||||
"apollo-server-caching": "^0.5.1",
|
||||
"apollo-server-env": "^2.4.3",
|
||||
"apollo-server-errors": "^2.4.0",
|
||||
"apollo-server-types": "^0.3.0",
|
||||
"apollo-server-errors": "^2.4.1",
|
||||
"apollo-server-types": "^0.3.1",
|
||||
"async-retry": "^1.2.1",
|
||||
"graphql-extensions": "^0.11.0"
|
||||
"graphql-extensions": "^0.11.1"
|
||||
}
|
||||
},
|
||||
"apollo-engine-reporting-protobuf": {
|
||||
|
|
@ -365,22 +378,22 @@
|
|||
}
|
||||
},
|
||||
"apollo-env": {
|
||||
"version": "0.6.1",
|
||||
"resolved": "https://registry.npmjs.org/apollo-env/-/apollo-env-0.6.1.tgz",
|
||||
"integrity": "sha512-B9BgpQGR1ndeDtb4Gtor0J4CITQ+OPACZrVW6lgStnljKEe9ZB76DZ1dAd3OCeizAswW6Lo9uvfK8jhVS5nBhQ==",
|
||||
"version": "0.6.2",
|
||||
"resolved": "https://registry.npmjs.org/apollo-env/-/apollo-env-0.6.2.tgz",
|
||||
"integrity": "sha512-Vb/doL1ZbzkNDJCQ6kYGOrphRx63rMERYo3MT2pzm2pNEdm6AK60InMgJaeh3RLK3cjGllOXFAgP8IY+m+TaEg==",
|
||||
"requires": {
|
||||
"@types/node-fetch": "2.5.4",
|
||||
"@types/node-fetch": "2.5.5",
|
||||
"core-js": "^3.0.1",
|
||||
"node-fetch": "^2.2.0",
|
||||
"sha.js": "^2.4.11"
|
||||
}
|
||||
},
|
||||
"apollo-graphql": {
|
||||
"version": "0.4.0",
|
||||
"resolved": "https://registry.npmjs.org/apollo-graphql/-/apollo-graphql-0.4.0.tgz",
|
||||
"integrity": "sha512-abCHcKln1EGbzSItW087EjBI5wnluikyUqEn4VsdeWHCtdENWpHCn/MnM0+jJa1prNasxN7tCukp4nMpJYYVqg==",
|
||||
"version": "0.4.1",
|
||||
"resolved": "https://registry.npmjs.org/apollo-graphql/-/apollo-graphql-0.4.1.tgz",
|
||||
"integrity": "sha512-dz2wtGeCqUDAKAj4KXLKLZiFY791aoXduul3KcLo8/6SwqWlsuZiPe0oB8mENHZZc/EchCpTMTJZX2ZENsOt2A==",
|
||||
"requires": {
|
||||
"apollo-env": "^0.6.1",
|
||||
"apollo-env": "^0.6.2",
|
||||
"lodash.sortby": "^4.7.0"
|
||||
}
|
||||
},
|
||||
|
|
@ -396,12 +409,12 @@
|
|||
}
|
||||
},
|
||||
"apollo-server": {
|
||||
"version": "2.11.0",
|
||||
"resolved": "https://registry.npmjs.org/apollo-server/-/apollo-server-2.11.0.tgz",
|
||||
"integrity": "sha512-UhW6RHPBMWZy1v7KhzssUnxPBxpu9fGFajtqP68vtvvP3+xa2Y2GUg0594bHcUcLK+BjdMBQQSW27i0yQ/Fz9g==",
|
||||
"version": "2.12.0",
|
||||
"resolved": "https://registry.npmjs.org/apollo-server/-/apollo-server-2.12.0.tgz",
|
||||
"integrity": "sha512-ETL2+/m2KSxCnVoSjE2bOWh6HV4i1RRQMu+vBDgNzZGSVqzxyWiHhCMoSx22/ow2ZchiBMTKsRN5wZxbahyEkg==",
|
||||
"requires": {
|
||||
"apollo-server-core": "^2.11.0",
|
||||
"apollo-server-express": "^2.11.0",
|
||||
"apollo-server-core": "^2.12.0",
|
||||
"apollo-server-express": "^2.12.0",
|
||||
"express": "^4.0.0",
|
||||
"graphql-subscriptions": "^1.0.0",
|
||||
"graphql-tools": "^4.0.0"
|
||||
|
|
@ -416,28 +429,29 @@
|
|||
}
|
||||
},
|
||||
"apollo-server-core": {
|
||||
"version": "2.11.0",
|
||||
"resolved": "https://registry.npmjs.org/apollo-server-core/-/apollo-server-core-2.11.0.tgz",
|
||||
"integrity": "sha512-jHLOqwTRlyWzqWNRlwr2M/xfrt+lw2pHtKYyxUGRjWFo8EM5TX1gDcTKtbtvx9p5m+ZBDAhcWp/rpq0vSz4tqg==",
|
||||
"version": "2.12.0",
|
||||
"resolved": "https://registry.npmjs.org/apollo-server-core/-/apollo-server-core-2.12.0.tgz",
|
||||
"integrity": "sha512-BRVdOyZrRJ1ALlmis0vaOLIHHYu5K3UVKAQKIgHkRh/YY0Av4lpeEXr49ELK04LTeh0DG0pQ5YYYhaX1wFcDEw==",
|
||||
"requires": {
|
||||
"@apollographql/apollo-tools": "^0.4.3",
|
||||
"@apollographql/graphql-playground-html": "1.6.24",
|
||||
"@types/graphql-upload": "^8.0.0",
|
||||
"@types/ws": "^6.0.0",
|
||||
"apollo-cache-control": "^0.9.0",
|
||||
"apollo-cache-control": "^0.9.1",
|
||||
"apollo-datasource": "^0.7.0",
|
||||
"apollo-engine-reporting": "^1.7.0",
|
||||
"apollo-engine-reporting": "^1.7.1",
|
||||
"apollo-server-caching": "^0.5.1",
|
||||
"apollo-server-env": "^2.4.3",
|
||||
"apollo-server-errors": "^2.4.0",
|
||||
"apollo-server-plugin-base": "^0.7.0",
|
||||
"apollo-server-types": "^0.3.0",
|
||||
"apollo-tracing": "^0.9.0",
|
||||
"apollo-server-errors": "^2.4.1",
|
||||
"apollo-server-plugin-base": "^0.7.1",
|
||||
"apollo-server-types": "^0.3.1",
|
||||
"apollo-tracing": "^0.9.1",
|
||||
"fast-json-stable-stringify": "^2.0.0",
|
||||
"graphql-extensions": "^0.11.0",
|
||||
"graphql-extensions": "^0.11.1",
|
||||
"graphql-tag": "^2.9.2",
|
||||
"graphql-tools": "^4.0.0",
|
||||
"graphql-upload": "^8.0.2",
|
||||
"loglevel": "^1.6.7",
|
||||
"sha.js": "^2.4.11",
|
||||
"subscriptions-transport-ws": "^0.9.11",
|
||||
"ws": "^6.0.0"
|
||||
|
|
@ -453,23 +467,23 @@
|
|||
}
|
||||
},
|
||||
"apollo-server-errors": {
|
||||
"version": "2.4.0",
|
||||
"resolved": "https://registry.npmjs.org/apollo-server-errors/-/apollo-server-errors-2.4.0.tgz",
|
||||
"integrity": "sha512-ZouZfr2sGavvI18rgdRcyY2ausRAlVtWNOax9zca8ZG2io86dM59jXBmUVSNlVZSmBsIh45YxYC0eRvr2vmRdg=="
|
||||
"version": "2.4.1",
|
||||
"resolved": "https://registry.npmjs.org/apollo-server-errors/-/apollo-server-errors-2.4.1.tgz",
|
||||
"integrity": "sha512-7oEd6pUxqyWYUbQ9TA8tM0NU/3aGtXSEibo6+txUkuHe7QaxfZ2wHRp+pfT1LC1K3RXYjKj61/C2xEO19s3Kdg=="
|
||||
},
|
||||
"apollo-server-express": {
|
||||
"version": "2.11.0",
|
||||
"resolved": "https://registry.npmjs.org/apollo-server-express/-/apollo-server-express-2.11.0.tgz",
|
||||
"integrity": "sha512-9bbiD+zFAx+xyurc9lxYmNa9y79k/gsA1vEyPFVcv7jxzCFC5wc0tcbV7NPX2qi1Nn7K76fxo2fPNYbPFX/y0g==",
|
||||
"version": "2.12.0",
|
||||
"resolved": "https://registry.npmjs.org/apollo-server-express/-/apollo-server-express-2.12.0.tgz",
|
||||
"integrity": "sha512-oTBKM2SsziCoFW+ta+ubJ/ypvsc+EWrbJnyZhJ5FBYzSXPstt/jvgZHgMO+kOQgHEHrbJwugNDUuLMSm608L7A==",
|
||||
"requires": {
|
||||
"@apollographql/graphql-playground-html": "1.6.24",
|
||||
"@types/accepts": "^1.3.5",
|
||||
"@types/body-parser": "1.19.0",
|
||||
"@types/cors": "^2.8.4",
|
||||
"@types/express": "4.17.2",
|
||||
"@types/express": "4.17.3",
|
||||
"accepts": "^1.3.5",
|
||||
"apollo-server-core": "^2.11.0",
|
||||
"apollo-server-types": "^0.3.0",
|
||||
"apollo-server-core": "^2.12.0",
|
||||
"apollo-server-types": "^0.3.1",
|
||||
"body-parser": "^1.18.3",
|
||||
"cors": "^2.8.4",
|
||||
"express": "^4.17.1",
|
||||
|
|
@ -481,9 +495,9 @@
|
|||
},
|
||||
"dependencies": {
|
||||
"@types/express": {
|
||||
"version": "4.17.2",
|
||||
"resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.2.tgz",
|
||||
"integrity": "sha512-5mHFNyavtLoJmnusB8OKJ5bshSzw+qkMIBAobLrIM48HJvunFva9mOa6aBwh64lBFyNwBbs0xiEFuj4eU/NjCA==",
|
||||
"version": "4.17.3",
|
||||
"resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.3.tgz",
|
||||
"integrity": "sha512-I8cGRJj3pyOLs/HndoP+25vOqhqWkAZsWMEmq1qXy/b/M3ppufecUwaK2/TVDVxcV61/iSdhykUjQQ2DLSrTdg==",
|
||||
"requires": {
|
||||
"@types/body-parser": "*",
|
||||
"@types/express-serve-static-core": "*",
|
||||
|
|
@ -493,17 +507,17 @@
|
|||
}
|
||||
},
|
||||
"apollo-server-plugin-base": {
|
||||
"version": "0.7.0",
|
||||
"resolved": "https://registry.npmjs.org/apollo-server-plugin-base/-/apollo-server-plugin-base-0.7.0.tgz",
|
||||
"integrity": "sha512-//xgYrBYLQSr92W0z3mYsFGoVz3wxKNsv3KcOUBhbOCGTbjZgP7vHOE1vhHhRcpZKKXmjXTVONdrnNJ+XVGi6A==",
|
||||
"version": "0.7.1",
|
||||
"resolved": "https://registry.npmjs.org/apollo-server-plugin-base/-/apollo-server-plugin-base-0.7.1.tgz",
|
||||
"integrity": "sha512-PRavvoWq7/Xufqc+qkDQg3Aqueq4QrPBFfoCFIjhkJ4n2d2YoqE3gTGccb8YoWusfa62ASMn6R47OdNuVtEbXw==",
|
||||
"requires": {
|
||||
"apollo-server-types": "^0.3.0"
|
||||
"apollo-server-types": "^0.3.1"
|
||||
}
|
||||
},
|
||||
"apollo-server-types": {
|
||||
"version": "0.3.0",
|
||||
"resolved": "https://registry.npmjs.org/apollo-server-types/-/apollo-server-types-0.3.0.tgz",
|
||||
"integrity": "sha512-FMo7kbTkhph9dfIQ3xDbRLObqmdQH9mwSjxhGsX+JxGMRPPXgd3+GZvCeVKOi/udxh//w1otSeAqItjvbj0tfQ==",
|
||||
"version": "0.3.1",
|
||||
"resolved": "https://registry.npmjs.org/apollo-server-types/-/apollo-server-types-0.3.1.tgz",
|
||||
"integrity": "sha512-6nX5VC3icOGf1RZIs7/SYQZff+Cl16LQu1FHUOIk9gAMN2XjlRCyJgCeMj5YHJzQ8Mhg4BO0weWuydEg+JxLzg==",
|
||||
"requires": {
|
||||
"apollo-engine-reporting-protobuf": "^0.4.4",
|
||||
"apollo-server-caching": "^0.5.1",
|
||||
|
|
@ -511,12 +525,12 @@
|
|||
}
|
||||
},
|
||||
"apollo-tracing": {
|
||||
"version": "0.9.0",
|
||||
"resolved": "https://registry.npmjs.org/apollo-tracing/-/apollo-tracing-0.9.0.tgz",
|
||||
"integrity": "sha512-oqspTrf4BLGbKkIk1vF+I31C2v7PPJmF36TFpT/+zJxNvJw54ji4ZMhtytgVqbVldQEintJmdHQIidYBGKmu+g==",
|
||||
"version": "0.9.1",
|
||||
"resolved": "https://registry.npmjs.org/apollo-tracing/-/apollo-tracing-0.9.1.tgz",
|
||||
"integrity": "sha512-4wVNM6rc70XhwWxuDWrMBLaHA8NjB9pUS2sNpddQvP36ZtQfsa08XLSUxGAZT+bej+TzW26hKNtuO31RgqC9Hg==",
|
||||
"requires": {
|
||||
"apollo-server-env": "^2.4.3",
|
||||
"graphql-extensions": "^0.11.0"
|
||||
"graphql-extensions": "^0.11.1"
|
||||
}
|
||||
},
|
||||
"apollo-utilities": {
|
||||
|
|
@ -548,6 +562,11 @@
|
|||
"retry": "0.12.0"
|
||||
}
|
||||
},
|
||||
"asynckit": {
|
||||
"version": "0.4.0",
|
||||
"resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
|
||||
"integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k="
|
||||
},
|
||||
"axios": {
|
||||
"version": "0.19.2",
|
||||
"resolved": "https://registry.npmjs.org/axios/-/axios-0.19.2.tgz",
|
||||
|
|
@ -751,6 +770,14 @@
|
|||
"integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=",
|
||||
"dev": true
|
||||
},
|
||||
"combined-stream": {
|
||||
"version": "1.0.8",
|
||||
"resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
|
||||
"integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
|
||||
"requires": {
|
||||
"delayed-stream": "~1.0.0"
|
||||
}
|
||||
},
|
||||
"concat-map": {
|
||||
"version": "0.0.1",
|
||||
"resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
|
||||
|
|
@ -946,6 +973,11 @@
|
|||
"object-keys": "^1.0.12"
|
||||
}
|
||||
},
|
||||
"delayed-stream": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
|
||||
"integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk="
|
||||
},
|
||||
"denque": {
|
||||
"version": "1.4.1",
|
||||
"resolved": "https://registry.npmjs.org/denque/-/denque-1.4.1.tgz",
|
||||
|
|
@ -1005,9 +1037,9 @@
|
|||
"integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k="
|
||||
},
|
||||
"es-abstract": {
|
||||
"version": "1.17.4",
|
||||
"resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.4.tgz",
|
||||
"integrity": "sha512-Ae3um/gb8F0mui/jPL+QiqmglkUsaQf7FwBEHYIFkztkneosu9imhqHpBzQ3h1vit8t5iQ74t6PEVvphBZiuiQ==",
|
||||
"version": "1.17.5",
|
||||
"resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.5.tgz",
|
||||
"integrity": "sha512-BR9auzDbySxOcfog0tLECW8l28eRGpDpU3Dm3Hp4q/N+VtLTmyj4EUN088XZWQDW/hzj6sYRDXeOFsaAODKvpg==",
|
||||
"requires": {
|
||||
"es-to-primitive": "^1.2.1",
|
||||
"function-bind": "^1.1.1",
|
||||
|
|
@ -1180,6 +1212,16 @@
|
|||
}
|
||||
}
|
||||
},
|
||||
"form-data": {
|
||||
"version": "3.0.0",
|
||||
"resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.0.tgz",
|
||||
"integrity": "sha512-CKMFDglpbMi6PyN+brwB9Q/GOw0eAnsrEZDgcsH5Krhz5Od/haKHAX0NmQfha2zPPz0JpWzA7GJHGSnvCRLWsg==",
|
||||
"requires": {
|
||||
"asynckit": "^0.4.0",
|
||||
"combined-stream": "^1.0.8",
|
||||
"mime-types": "^2.1.12"
|
||||
}
|
||||
},
|
||||
"forwarded": {
|
||||
"version": "0.1.2",
|
||||
"resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz",
|
||||
|
|
@ -1262,13 +1304,13 @@
|
|||
"integrity": "sha512-ZyVO1xIF9F+4cxfkdhOJINM+51B06Friuv4M66W7HzUOeFd+vNzUn4vtswYINPi6sysjf1M2Ri/rwZALqgwbaQ=="
|
||||
},
|
||||
"graphql-extensions": {
|
||||
"version": "0.11.0",
|
||||
"resolved": "https://registry.npmjs.org/graphql-extensions/-/graphql-extensions-0.11.0.tgz",
|
||||
"integrity": "sha512-zd4qfUiJoYBx2MwJusM36SEJ+YmJ1ki8YF8nlm9mgaPDUzsnmFq4lxULxUfhLAXFwZw7MbEN2vV4V6WiNgSJLg==",
|
||||
"version": "0.11.1",
|
||||
"resolved": "https://registry.npmjs.org/graphql-extensions/-/graphql-extensions-0.11.1.tgz",
|
||||
"integrity": "sha512-1bstq6YKaC579PTw9gchw2VlXqjPo3vn8NjRMaUqF2SxyYTjVSgXaCAbaeNa0B7xlLVigxi3DV1zh4A+ss+Lwg==",
|
||||
"requires": {
|
||||
"@apollographql/apollo-tools": "^0.4.3",
|
||||
"apollo-server-env": "^2.4.3",
|
||||
"apollo-server-types": "^0.3.0"
|
||||
"apollo-server-types": "^0.3.1"
|
||||
}
|
||||
},
|
||||
"graphql-subscriptions": {
|
||||
|
|
@ -1512,9 +1554,9 @@
|
|||
"dev": true
|
||||
},
|
||||
"iterall": {
|
||||
"version": "1.2.2",
|
||||
"resolved": "https://registry.npmjs.org/iterall/-/iterall-1.2.2.tgz",
|
||||
"integrity": "sha512-yynBb1g+RFUPY64fTrFv7nsjRrENBQJaX2UL+2Szc9REFrSNm1rpSXHGzhmAy7a9uv3vlvgBlXnf9RqmPH1/DA=="
|
||||
"version": "1.3.0",
|
||||
"resolved": "https://registry.npmjs.org/iterall/-/iterall-1.3.0.tgz",
|
||||
"integrity": "sha512-QZ9qOMdF+QLHxy1QIpUHUU1D5pS2CG2P69LF6L6CPjPYA/XMOmKV3PZpawHoAjHNyB0swdVTRxdYT4tbBbxqwg=="
|
||||
},
|
||||
"kareem": {
|
||||
"version": "2.3.1",
|
||||
|
|
@ -1550,6 +1592,11 @@
|
|||
"resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz",
|
||||
"integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg="
|
||||
},
|
||||
"loglevel": {
|
||||
"version": "1.6.7",
|
||||
"resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.6.7.tgz",
|
||||
"integrity": "sha512-cY2eLFrQSAfVPhCgH1s7JI73tMbg9YC3v3+ZHVW67sBS7UxWzNEk/ZBbSfLykBWHp33dqqtOv82gjhKEi81T/A=="
|
||||
},
|
||||
"long": {
|
||||
"version": "4.0.0",
|
||||
"resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz",
|
||||
|
|
@ -2267,22 +2314,42 @@
|
|||
"strip-ansi": "^4.0.0"
|
||||
}
|
||||
},
|
||||
"string.prototype.trimleft": {
|
||||
"version": "2.1.1",
|
||||
"resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.1.tgz",
|
||||
"integrity": "sha512-iu2AGd3PuP5Rp7x2kEZCrB2Nf41ehzh+goo8TV7z8/XDBbsvc6HQIlUl9RjkZ4oyrW1XM5UwlGl1oVEaDjg6Ag==",
|
||||
"string.prototype.trimend": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.0.tgz",
|
||||
"integrity": "sha512-EEJnGqa/xNfIg05SxiPSqRS7S9qwDhYts1TSLR1BQfYUfPe1stofgGKvwERK9+9yf+PpfBMlpBaCHucXGPQfUA==",
|
||||
"requires": {
|
||||
"define-properties": "^1.1.3",
|
||||
"function-bind": "^1.1.1"
|
||||
"es-abstract": "^1.17.5"
|
||||
}
|
||||
},
|
||||
"string.prototype.trimleft": {
|
||||
"version": "2.1.2",
|
||||
"resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.2.tgz",
|
||||
"integrity": "sha512-gCA0tza1JBvqr3bfAIFJGqfdRTyPae82+KTnm3coDXkZN9wnuW3HjGgN386D7hfv5CHQYCI022/rJPVlqXyHSw==",
|
||||
"requires": {
|
||||
"define-properties": "^1.1.3",
|
||||
"es-abstract": "^1.17.5",
|
||||
"string.prototype.trimstart": "^1.0.0"
|
||||
}
|
||||
},
|
||||
"string.prototype.trimright": {
|
||||
"version": "2.1.1",
|
||||
"resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.1.tgz",
|
||||
"integrity": "sha512-qFvWL3/+QIgZXVmJBfpHmxLB7xsUXz6HsUmP8+5dRaC3Q7oKUv9Vo6aMCRZC1smrtyECFsIT30PqBJ1gTjAs+g==",
|
||||
"version": "2.1.2",
|
||||
"resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.2.tgz",
|
||||
"integrity": "sha512-ZNRQ7sY3KroTaYjRS6EbNiiHrOkjihL9aQE/8gfQ4DtAC/aEBRHFJa44OmoWxGGqXuJlfKkZW4WcXErGr+9ZFg==",
|
||||
"requires": {
|
||||
"define-properties": "^1.1.3",
|
||||
"function-bind": "^1.1.1"
|
||||
"es-abstract": "^1.17.5",
|
||||
"string.prototype.trimend": "^1.0.0"
|
||||
}
|
||||
},
|
||||
"string.prototype.trimstart": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.0.tgz",
|
||||
"integrity": "sha512-iCP8g01NFYiiBOnwG1Xc3WZLyoo+RuBymwIlWncShXDDJYWN6DbnM3odslBJdgCdRlq94B5s63NWAZlcn2CS4w==",
|
||||
"requires": {
|
||||
"define-properties": "^1.1.3",
|
||||
"es-abstract": "^1.17.5"
|
||||
}
|
||||
},
|
||||
"string_decoder": {
|
||||
|
|
|
|||
|
|
@ -15,8 +15,8 @@
|
|||
"author": "Sendou",
|
||||
"license": "ISC",
|
||||
"dependencies": {
|
||||
"apollo-server": "^2.11.0",
|
||||
"apollo-server-express": "^2.11.0",
|
||||
"apollo-server": "^2.12.0",
|
||||
"apollo-server-express": "^2.12.0",
|
||||
"axios": "^0.19.2",
|
||||
"btoa": "^1.2.1",
|
||||
"connect-mongo": "^3.2.0",
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user