From 5ef10ba34359a0bee8f5a38ef304b9a983352493 Mon Sep 17 00:00:00 2001 From: Aarni Halinen Date: Thu, 5 Mar 2020 19:39:51 +0200 Subject: [PATCH 01/56] Remove static.sika.sik.party cookie --- src/auth.ts | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/auth.ts b/src/auth.ts index a78e3e2..a392067 100644 --- a/src/auth.ts +++ b/src/auth.ts @@ -19,7 +19,6 @@ export async function generateToken(username: string, password: string): Promise export function setTokenCookie(token: string) { Cookies.set("jwt", token); - Cookies.set("jwt", token, { domain: "static.sika.sik.party" }); Cookies.set("jwt", token, { domain: ".sika.sik.party" }); } @@ -28,7 +27,6 @@ export function getTokenCookie(): string { } export function deleteTokenCookie(): void { - Cookies.remove("jwt", { domain: "static.sika.sik.party" }); Cookies.remove("jwt", { domain: ".sika.sik.party" }); Cookies.remove("jwt"); } From 03061a4bc230f197068d20a4322ee124d078c29f Mon Sep 17 00:00:00 2001 From: Aarni Halinen Date: Tue, 16 Jun 2020 21:30:17 +0300 Subject: [PATCH 02/56] Fix data handling --- src/models/Signup.ts | 2 - src/models/SignupForm.ts | 5 +-- src/pages/SignUpPage/SignUpPage.tsx | 45 ++++++++----------- .../SignupCreatePage/SignupCreatePage.tsx | 39 +++++++++------- 4 files changed, 45 insertions(+), 46 deletions(-) diff --git a/src/models/Signup.ts b/src/models/Signup.ts index e06a900..0bf8917 100644 --- a/src/models/Signup.ts +++ b/src/models/Signup.ts @@ -1,8 +1,6 @@ import axios from "axios"; import { getAuthHeader } from "../auth"; -import * as qs from "query-string"; const url = `${process.env.API_URL}/signup/`; -import { Question } from "../components/SignupQuestionsWidget"; export interface Signup { id?: number; diff --git a/src/models/SignupForm.ts b/src/models/SignupForm.ts index 7f8eb3b..266b75d 100644 --- a/src/models/SignupForm.ts +++ b/src/models/SignupForm.ts @@ -1,15 +1,14 @@ import axios from "axios"; import { getAuthHeader } from "../auth"; -import * as qs from "query-string"; const url = `${process.env.API_URL}/signupForm/`; import { Question } from "../components/SignupQuestionsWidget"; export interface SignupForm { - id: number; + id?: number; title: string; start_time: string; end_time: string; - questions: string; + questions: Question[]; } export async function getForms(): Promise { diff --git a/src/pages/SignUpPage/SignUpPage.tsx b/src/pages/SignUpPage/SignUpPage.tsx index aa26a35..930de5f 100644 --- a/src/pages/SignUpPage/SignUpPage.tsx +++ b/src/pages/SignUpPage/SignUpPage.tsx @@ -6,7 +6,7 @@ import { getForm, SignupForm } from "../../models/SignupForm"; import { createSignup, Signup } from "../../models/Signup"; import PageSection from "../../components/PageSection"; import { ColorEnum } from "../../components/ColorDiv/ColorDiv"; -import { Question, optionTypes } from "../../components/SignupQuestionsWidget"; +import { Question } from "../../components/SignupQuestionsWidget"; export interface SignUpPageProps { match: { @@ -17,20 +17,20 @@ export interface SignUpPageProps { } export interface SignUpPageState { - signUpForm: SignupForm | null; + signUpForm?: SignupForm; formData: any; - statusMessage: string; - error: string; + statusMessage?: string; + error?: string; } class SignUpPage extends React.Component { - constructor(props) { + constructor(props: SignUpPageProps) { super(props); this.state = { signUpForm: null, formData: {}, - statusMessage: "", - error: "", + statusMessage: null, + error: null, }; this.fetchSignUp(); @@ -49,7 +49,7 @@ class SignUpPage extends React.Component { } questionToSchemaProp = (question: Question): {} => { - let obj; + let obj: any; if (question.type === "text") { obj = { type: "string", @@ -106,7 +106,7 @@ class SignUpPage extends React.Component { buildSchema = () => { const { error, formData, signUpForm } = this.state; - const questions: Question[] = JSON.parse(signUpForm.questions); + const {questions} = signUpForm; const schemaPropsArray = questions.map(this.questionToSchemaProp); let schemaProps = {}; schemaPropsArray.forEach((schemaProp) => { @@ -128,7 +128,7 @@ class SignUpPage extends React.Component { buildUISchema = () => { const { error, formData, signUpForm } = this.state; - const questions: Question[] = JSON.parse(signUpForm.questions); + const {questions} = signUpForm; const uiSchemaPropsArray = questions.map(this.questionToUISchemaProp); let uiSchemaProps = {}; uiSchemaPropsArray.forEach((uiSchemaProp) => { @@ -146,20 +146,16 @@ class SignUpPage extends React.Component { onSubmit = async (data) => { const { signUpForm } = this.state; - console.log("submitted, data:"); - console.log(data); - try { const payload: Signup = { + id: undefined, signupForm_id: signUpForm.id, - answer: JSON.stringify(data.formData), + answer: data.formData, }; - // payload.questions = JSON.stringify(payload.questions); - if (payload.id === undefined) { const resp = await createSignup(payload); this.setState({ - formData: resp, + error: null, statusMessage: "Sign-up submitted successfully", }); } @@ -170,9 +166,11 @@ class SignUpPage extends React.Component { // statusMessage: "Sign-up submission updated successfully.", // }); } - } catch (err) { + } catch (error) { + console.error(error); this.setState({ - error: String(err), + error, + statusMessage: "Bad request" }); } } @@ -183,18 +181,12 @@ class SignUpPage extends React.Component { renderForm() { const { signUpForm, formData } = this.state; - // const questions: Question[] = JSON.parse(signUpForm.questions); - // const content = questions.map(this.renderQuestion); const schema = this.buildSchema(); const uiSchema = this.buildUISchema(); return (

Title: {signUpForm.title}

- {/*
- {content} - -
*/}
{ render() { const { match } = this.props; const { id } = match.params; - const { signUpForm } = this.state; + const { signUpForm, statusMessage } = this.state; const content = signUpForm !== null ? this.renderForm() @@ -222,6 +214,7 @@ class SignUpPage extends React.Component { + {statusMessage} {content}
diff --git a/src/pages/SignupCreatePage/SignupCreatePage.tsx b/src/pages/SignupCreatePage/SignupCreatePage.tsx index 5a56db6..433a776 100644 --- a/src/pages/SignupCreatePage/SignupCreatePage.tsx +++ b/src/pages/SignupCreatePage/SignupCreatePage.tsx @@ -3,7 +3,7 @@ import Helmet from "react-helmet"; import { Link } from "react-router-dom"; import "./SignupCreatePage.scss"; import Form from "react-jsonschema-form"; -import { createForm, getForm, updateForm } from "../../models/SignupForm"; +import { createForm, getForm, updateForm, SignupForm } from "../../models/SignupForm"; import DatetimeWidget from "../../components/DatetimeWidget"; import SignupQuestionsWidget from "../../components/SignupQuestionsWidget"; @@ -29,23 +29,26 @@ export interface SignupCreatePageState { } class SignupCreatePage extends React.Component { - constructor(props) { + constructor(props: SignupCreatePageProps) { super(props); this.state = { formData: {}, }; - const id = props.match.params.id; + const {id} = props.match.params; if (id !== undefined) { this.fetchInitialFormData(id); } } - fetchInitialFormData = async (id) => { + fetchInitialFormData = async (id: number) => { try { const data = await getForm(id); this.setState({ - formData: data, + formData: { + ...data, + questions: JSON.stringify(data.questions) + }, }); } catch (err) { this.setState({ @@ -54,30 +57,36 @@ class SignupCreatePage extends React.Component { - console.log("submitted, data:"); - console.log(data); - + onSubmit = async (data: any) => { try { - const payload = data.formData; - // payload.questions = JSON.stringify(payload.questions); + const payload: SignupForm = { + ...data.formData, + questions: JSON.parse(data.formData.questions) + } if (payload.id === undefined) { const resp = await createForm(payload); this.setState({ - formData: resp, + formData: { + ...resp, + questions: JSON.stringify(resp.questions) + }, statusMessage: "Sign-up created successfully", }); } else { const resp = await updateForm(payload); this.setState({ - formData: resp, + formData: { + ...resp, + questions: JSON.stringify(resp.questions) + }, statusMessage: "Sign-up updated successfully.", }); } - } catch (err) { + } catch (error) { this.setState({ - error: String(err), + error: error, + statusMessage: error.message }); } } From 42d9b88010f06d184c3103edffe21287ada845e8 Mon Sep 17 00:00:00 2001 From: Aarni Halinen Date: Tue, 16 Jun 2020 22:30:13 +0300 Subject: [PATCH 03/56] Post identifying strings to Signup --- src/models/Signup.ts | 17 ++++++++++++----- src/pages/SignUpPage/SignUpPage.tsx | 1 + 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/src/models/Signup.ts b/src/models/Signup.ts index 0bf8917..03eef2f 100644 --- a/src/models/Signup.ts +++ b/src/models/Signup.ts @@ -6,18 +6,25 @@ export interface Signup { id?: number; signupForm_id: number; answer: string; + list_name: string; } export async function createSignup(data: Signup): Promise { try { - const resp = await axios.post(url, data, { - headers: { - "Authorization": getAuthHeader(), - }, - }); + const resp = await axios.post(url, data); return resp.data; } catch (err) { console.error(err); throw err; } } + +// export async function updateSignup(data: Signup): Promise { +// try { +// const resp = await axios.post(url, data); +// return resp.data; +// } catch (err) { +// console.error(err); +// throw err; +// } +// } diff --git a/src/pages/SignUpPage/SignUpPage.tsx b/src/pages/SignUpPage/SignUpPage.tsx index 930de5f..9b704b2 100644 --- a/src/pages/SignUpPage/SignUpPage.tsx +++ b/src/pages/SignUpPage/SignUpPage.tsx @@ -151,6 +151,7 @@ class SignUpPage extends React.Component { id: undefined, signupForm_id: signUpForm.id, answer: data.formData, + list_name: data.formData[signUpForm.questions[0].id] }; if (payload.id === undefined) { const resp = await createSignup(payload); From 1911687a53561f78c41ad1409825024cbcf5b216 Mon Sep 17 00:00:00 2001 From: Aarni Halinen Date: Tue, 16 Jun 2020 23:40:32 +0300 Subject: [PATCH 04/56] Type fixes --- package-lock.json | 25 ++++++++++++++++--- package.json | 4 ++- plop-templates/page.tsx | 2 +- src/pages/ActualPage/ActualPage.tsx | 2 +- src/pages/AdminEventPage/AdminEventPage.tsx | 2 +- src/pages/AdminFeedPage/AdminFeedPage.tsx | 2 +- src/pages/AdminFrontPage/AdminFrontPage.tsx | 2 +- src/pages/AdminLoginPage/AdminLoginPage.tsx | 2 +- src/pages/AdminSignupPage/AdminSignupPage.tsx | 2 +- src/pages/ContactsPage/ContactsPage.tsx | 2 +- src/pages/CorporatePage/CorporatePage.tsx | 2 +- src/pages/EventCreatePage/EventCreatePage.tsx | 2 +- src/pages/EventPage/EventPage.tsx | 2 +- src/pages/FeedCreatePage/FeedCreatePage.tsx | 2 +- src/pages/FreshmenPage/FreshmenPage.tsx | 2 +- src/pages/GuildPage/GuildPage.tsx | 2 +- src/pages/InEnglishPage/InEnglishPage.tsx | 2 +- src/pages/NotFoundPage/NotFoundPage.tsx | 2 +- src/pages/SignUpPage/SignUpPage.tsx | 2 +- .../SignupCreatePage/SignupCreatePage.tsx | 2 +- src/pages/StudiesPage/StudiesPage.tsx | 2 +- src/routes.tsx | 2 +- src/server/index.ts | 2 +- 23 files changed, 46 insertions(+), 25 deletions(-) diff --git a/package-lock.json b/package-lock.json index 32e409f..733782a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -786,6 +786,25 @@ "@types/react": "*" } }, + "@types/react-helmet": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@types/react-helmet/-/react-helmet-6.0.0.tgz", + "integrity": "sha512-NBMPAxgjpaMooXa51cU1BTgrX6T+hQbMiLm77JhBbfOzPQea3RB5rNpPOD5xGWHIVpGXHd59cltEzIq0qglGcQ==", + "dev": true, + "requires": { + "@types/react": "*" + } + }, + "@types/react-jsonschema-form": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/@types/react-jsonschema-form/-/react-jsonschema-form-1.7.3.tgz", + "integrity": "sha512-YiUCSnTA84e8g3zQobA+Iheh3+i3pb7TiIIXT4oEHwenhyrHVB5vPSIi/QeURy6PwVP1LfSCGOAHFRDpE/hAtQ==", + "dev": true, + "requires": { + "@types/json-schema": "*", + "@types/react": "*" + } + }, "@types/unist": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.3.tgz", @@ -19217,9 +19236,9 @@ "dev": true }, "typescript": { - "version": "3.7.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.7.2.tgz", - "integrity": "sha512-ml7V7JfiN2Xwvcer+XAf2csGO1bPBdRbFCkYBczNZggrBZ9c7G3riSUeJmqEU5uOtXNPMhE3n+R4FA/3YOAWOQ==", + "version": "3.9.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.9.5.tgz", + "integrity": "sha512-hSAifV3k+i6lEoCJ2k6R2Z/rp/H3+8sdmcn5NrS3/3kE7+RyZXm9aqvxWqjEXHAd8b0pShatpcdMTvEdvAJltQ==", "dev": true }, "uglify-js": { diff --git a/package.json b/package.json index 22c9ebd..8d505db 100644 --- a/package.json +++ b/package.json @@ -50,6 +50,8 @@ "@types/node": "10.14.7", "@types/react": "16.8.18", "@types/react-dom": "16.8.4", + "@types/react-helmet": "6.0.0", + "@types/react-jsonschema-form": "1.7.3", "@typescript-eslint/eslint-plugin": "2.6.1", "@typescript-eslint/parser": "2.6.1", "awesome-typescript-loader": "5.2.1", @@ -101,7 +103,7 @@ "stylelint-webpack-plugin": "1.0.3", "testcafe": "1.6.1", "testcafe-react-selectors": "2.1.0", - "typescript": "3.7.2", + "typescript": "3.9.5", "uglifyjs-webpack-plugin": "1.3.0", "webpack": "4.41.2", "webpack-cdn-plugin": "3.2.0", diff --git a/plop-templates/page.tsx b/plop-templates/page.tsx index 5411e82..24736dd 100644 --- a/plop-templates/page.tsx +++ b/plop-templates/page.tsx @@ -1,5 +1,5 @@ import * as React from "react"; -import Helmet from "react-helmet"; +import { Helmet } from "react-helmet"; import "./{{ properCase name}}.scss"; export interface {{ properCase name }}Props {} diff --git a/src/pages/ActualPage/ActualPage.tsx b/src/pages/ActualPage/ActualPage.tsx index 26a4ca3..63e003f 100644 --- a/src/pages/ActualPage/ActualPage.tsx +++ b/src/pages/ActualPage/ActualPage.tsx @@ -1,5 +1,5 @@ import * as React from "react"; -import Helmet from "react-helmet"; +import { Helmet } from "react-helmet"; import "./ActualPage.scss"; export interface ActualPageProps {} diff --git a/src/pages/AdminEventPage/AdminEventPage.tsx b/src/pages/AdminEventPage/AdminEventPage.tsx index fb7a23f..d697b84 100644 --- a/src/pages/AdminEventPage/AdminEventPage.tsx +++ b/src/pages/AdminEventPage/AdminEventPage.tsx @@ -1,5 +1,5 @@ import * as React from "react"; -import Helmet from "react-helmet"; +import { Helmet } from "react-helmet"; import Anchor from "../../components/Anchor"; import { formatRelative } from "date-fns"; diff --git a/src/pages/AdminFeedPage/AdminFeedPage.tsx b/src/pages/AdminFeedPage/AdminFeedPage.tsx index a0b6d09..2b91e24 100644 --- a/src/pages/AdminFeedPage/AdminFeedPage.tsx +++ b/src/pages/AdminFeedPage/AdminFeedPage.tsx @@ -1,5 +1,5 @@ import * as React from "react"; -import Helmet from "react-helmet"; +import { Helmet } from "react-helmet"; import Anchor from "../../components/Anchor"; import "./AdminFeedPage.scss"; import { StaticContext } from "../../server/StaticContext"; diff --git a/src/pages/AdminFrontPage/AdminFrontPage.tsx b/src/pages/AdminFrontPage/AdminFrontPage.tsx index 0d3aac1..1739689 100644 --- a/src/pages/AdminFrontPage/AdminFrontPage.tsx +++ b/src/pages/AdminFrontPage/AdminFrontPage.tsx @@ -1,5 +1,5 @@ import * as React from "react"; -import Helmet from "react-helmet"; +import { Helmet } from "react-helmet"; import Anchor from "../../components/Anchor"; import "./AdminFrontPage.scss"; diff --git a/src/pages/AdminLoginPage/AdminLoginPage.tsx b/src/pages/AdminLoginPage/AdminLoginPage.tsx index bacd343..1de4efc 100644 --- a/src/pages/AdminLoginPage/AdminLoginPage.tsx +++ b/src/pages/AdminLoginPage/AdminLoginPage.tsx @@ -1,5 +1,5 @@ import * as React from "react"; -import Helmet from "react-helmet"; +import { Helmet } from "react-helmet"; import { Redirect } from "react-router-dom"; import * as qs from "query-string"; import { generateToken, setTokenCookie, isAuthenticated } from "../../auth"; diff --git a/src/pages/AdminSignupPage/AdminSignupPage.tsx b/src/pages/AdminSignupPage/AdminSignupPage.tsx index 0494e55..8bd5c04 100644 --- a/src/pages/AdminSignupPage/AdminSignupPage.tsx +++ b/src/pages/AdminSignupPage/AdminSignupPage.tsx @@ -1,5 +1,5 @@ import * as React from "react"; -import Helmet from "react-helmet"; +import { Helmet } from "react-helmet"; import { formatRelative } from "date-fns"; import Anchor from "../../components/Anchor"; diff --git a/src/pages/ContactsPage/ContactsPage.tsx b/src/pages/ContactsPage/ContactsPage.tsx index 673504e..349b587 100644 --- a/src/pages/ContactsPage/ContactsPage.tsx +++ b/src/pages/ContactsPage/ContactsPage.tsx @@ -1,5 +1,5 @@ import * as React from "react"; -import Helmet from "react-helmet"; +import { Helmet } from "react-helmet"; import "./ContactsPage.scss"; import { ColorEnum, getColor, getHoverColor } from "../../components/ColorDiv/ColorDiv"; import { StaticContext } from "../../server/StaticContext"; diff --git a/src/pages/CorporatePage/CorporatePage.tsx b/src/pages/CorporatePage/CorporatePage.tsx index af2a243..b4af626 100644 --- a/src/pages/CorporatePage/CorporatePage.tsx +++ b/src/pages/CorporatePage/CorporatePage.tsx @@ -1,5 +1,5 @@ import * as React from "react"; -import Helmet from "react-helmet"; +import { Helmet } from "react-helmet"; import "./CorporatePage.scss"; export interface CorporatePageProps {} diff --git a/src/pages/EventCreatePage/EventCreatePage.tsx b/src/pages/EventCreatePage/EventCreatePage.tsx index 5a714a2..0604b08 100644 --- a/src/pages/EventCreatePage/EventCreatePage.tsx +++ b/src/pages/EventCreatePage/EventCreatePage.tsx @@ -1,5 +1,5 @@ import * as React from "react"; -import Helmet from "react-helmet"; +import { Helmet } from "react-helmet"; import "./EventCreatePage.scss"; import { isAuthenticated } from "../../auth"; import Form from "react-jsonschema-form"; diff --git a/src/pages/EventPage/EventPage.tsx b/src/pages/EventPage/EventPage.tsx index 16b6c8b..6cd3797 100644 --- a/src/pages/EventPage/EventPage.tsx +++ b/src/pages/EventPage/EventPage.tsx @@ -1,5 +1,5 @@ import * as React from "react"; -import Helmet from "react-helmet"; +import { Helmet } from "react-helmet"; import "./EventPage.scss"; import { Event, getEvent } from "../../models/Event"; import { RouteComponentProps } from "react-router-dom"; diff --git a/src/pages/FeedCreatePage/FeedCreatePage.tsx b/src/pages/FeedCreatePage/FeedCreatePage.tsx index 3fd29a3..6d6bcb4 100644 --- a/src/pages/FeedCreatePage/FeedCreatePage.tsx +++ b/src/pages/FeedCreatePage/FeedCreatePage.tsx @@ -1,5 +1,5 @@ import * as React from "react"; -import Helmet from "react-helmet"; +import { Helmet } from "react-helmet"; import "./FeedCreatePage.scss"; import { isAuthenticated } from "../../auth"; import Form from "react-jsonschema-form"; diff --git a/src/pages/FreshmenPage/FreshmenPage.tsx b/src/pages/FreshmenPage/FreshmenPage.tsx index 55cbd38..6c32014 100644 --- a/src/pages/FreshmenPage/FreshmenPage.tsx +++ b/src/pages/FreshmenPage/FreshmenPage.tsx @@ -1,5 +1,5 @@ import * as React from "react"; -import Helmet from "react-helmet"; +import { Helmet } from "react-helmet"; import "./FreshmenPage.scss"; export interface FreshmenPageProps {} diff --git a/src/pages/GuildPage/GuildPage.tsx b/src/pages/GuildPage/GuildPage.tsx index fd54614..c100411 100644 --- a/src/pages/GuildPage/GuildPage.tsx +++ b/src/pages/GuildPage/GuildPage.tsx @@ -1,5 +1,5 @@ import * as React from "react"; -import Helmet from "react-helmet"; +import { Helmet } from "react-helmet"; import "./GuildPage.scss"; import PageSection from "../../components/PageSection"; import MainSection from "../../components/MainSection"; diff --git a/src/pages/InEnglishPage/InEnglishPage.tsx b/src/pages/InEnglishPage/InEnglishPage.tsx index 80a7c1a..c2dff29 100644 --- a/src/pages/InEnglishPage/InEnglishPage.tsx +++ b/src/pages/InEnglishPage/InEnglishPage.tsx @@ -1,5 +1,5 @@ import * as React from "react"; -import Helmet from "react-helmet"; +import { Helmet } from "react-helmet"; import "./InEnglishPage.scss"; export interface InEnglishPageProps {} diff --git a/src/pages/NotFoundPage/NotFoundPage.tsx b/src/pages/NotFoundPage/NotFoundPage.tsx index 0108242..036ffed 100644 --- a/src/pages/NotFoundPage/NotFoundPage.tsx +++ b/src/pages/NotFoundPage/NotFoundPage.tsx @@ -1,5 +1,5 @@ import * as React from "react"; -import Helmet from "react-helmet"; +import { Helmet } from "react-helmet"; import "./NotFoundPage.scss"; export interface NotFoundPageProps { } diff --git a/src/pages/SignUpPage/SignUpPage.tsx b/src/pages/SignUpPage/SignUpPage.tsx index 9b704b2..cc10ad0 100644 --- a/src/pages/SignUpPage/SignUpPage.tsx +++ b/src/pages/SignUpPage/SignUpPage.tsx @@ -1,5 +1,5 @@ import * as React from "react"; -import Helmet from "react-helmet"; +import { Helmet } from "react-helmet"; import Form from "react-jsonschema-form"; import "./SignUpPage.scss"; import { getForm, SignupForm } from "../../models/SignupForm"; diff --git a/src/pages/SignupCreatePage/SignupCreatePage.tsx b/src/pages/SignupCreatePage/SignupCreatePage.tsx index 433a776..69036fe 100644 --- a/src/pages/SignupCreatePage/SignupCreatePage.tsx +++ b/src/pages/SignupCreatePage/SignupCreatePage.tsx @@ -1,5 +1,5 @@ import * as React from "react"; -import Helmet from "react-helmet"; +import { Helmet } from "react-helmet"; import { Link } from "react-router-dom"; import "./SignupCreatePage.scss"; import Form from "react-jsonschema-form"; diff --git a/src/pages/StudiesPage/StudiesPage.tsx b/src/pages/StudiesPage/StudiesPage.tsx index 402aa5f..7069942 100644 --- a/src/pages/StudiesPage/StudiesPage.tsx +++ b/src/pages/StudiesPage/StudiesPage.tsx @@ -1,5 +1,5 @@ import * as React from "react"; -import Helmet from "react-helmet"; +import { Helmet } from "react-helmet"; import "./StudiesPage.scss"; export interface StudiesPageProps {} diff --git a/src/routes.tsx b/src/routes.tsx index 3e36dcf..24e7778 100644 --- a/src/routes.tsx +++ b/src/routes.tsx @@ -1,6 +1,6 @@ import * as React from "react"; import { Switch, Route, Redirect } from "react-router-dom"; -import Helmet from "react-helmet"; +import { Helmet } from "react-helmet"; import FrontPage from "./pages/FrontPage"; import GuildPage from "./pages/GuildPage"; import NotFoundPage from "./pages/NotFoundPage"; diff --git a/src/server/index.ts b/src/server/index.ts index 399059e..125534f 100644 --- a/src/server/index.ts +++ b/src/server/index.ts @@ -1,5 +1,5 @@ import * as React from "react"; -import Helmet from "react-helmet"; +import { Helmet } from "react-helmet"; import * as express from "express"; import { renderToString } from "react-dom/server"; import * as morgan from "morgan"; From 8a10c6679ef8f639abe7161dd04357e048f9b04d Mon Sep 17 00:00:00 2001 From: Aarni Halinen Date: Tue, 16 Jun 2020 23:40:47 +0300 Subject: [PATCH 05/56] List signupees --- src/models/SignupForm.ts | 1 + src/pages/SignUpPage/SignUpPage.tsx | 21 ++++++++++++++++++--- 2 files changed, 19 insertions(+), 3 deletions(-) diff --git a/src/models/SignupForm.ts b/src/models/SignupForm.ts index 266b75d..1ff02a9 100644 --- a/src/models/SignupForm.ts +++ b/src/models/SignupForm.ts @@ -9,6 +9,7 @@ export interface SignupForm { start_time: string; end_time: string; questions: Question[]; + signups: string[]; } export async function getForms(): Promise { diff --git a/src/pages/SignUpPage/SignUpPage.tsx b/src/pages/SignUpPage/SignUpPage.tsx index cc10ad0..a902b1c 100644 --- a/src/pages/SignUpPage/SignUpPage.tsx +++ b/src/pages/SignUpPage/SignUpPage.tsx @@ -155,6 +155,7 @@ class SignUpPage extends React.Component { }; if (payload.id === undefined) { const resp = await createSignup(payload); + this.fetchSignUp(); this.setState({ error: null, statusMessage: "Sign-up submitted successfully", @@ -200,23 +201,37 @@ class SignUpPage extends React.Component { ); } + renderList() { + const { signUpForm } = this.state; + return ( +
+ {signUpForm.signups.map(s => ( +

{s}

+ ))} +
+ ) + } + render() { const { match } = this.props; const { id } = match.params; const { signUpForm, statusMessage } = this.state; - const content = signUpForm !== null + const form = signUpForm !== null ? this.renderForm() :
Loading...
; + const signups = signUpForm && signUpForm.signups ? this.renderList() : null; + return (
+ {statusMessage} - {statusMessage} - {content} + {form} + {signups}
); From 42eee4fffcb47a74216e81fa28355a5274c080eb Mon Sep 17 00:00:00 2001 From: Aarni Halinen Date: Wed, 17 Jun 2020 00:24:19 +0300 Subject: [PATCH 06/56] Admin event select signup form --- src/models/Signup.ts | 34 +++++++++---- src/pages/EventCreatePage/EventCreatePage.tsx | 49 ++++++++++++++++--- 2 files changed, 66 insertions(+), 17 deletions(-) diff --git a/src/models/Signup.ts b/src/models/Signup.ts index 03eef2f..100af16 100644 --- a/src/models/Signup.ts +++ b/src/models/Signup.ts @@ -9,6 +9,20 @@ export interface Signup { list_name: string; } +export async function getSignup(id: number): Promise { + try { + const resp = await axios.get(`${url}${id}`, { + headers: { + "Authorization": getAuthHeader() + }, + }); + return resp.data; + } catch (err) { + console.error(err); + throw err; + } +} + export async function createSignup(data: Signup): Promise { try { const resp = await axios.post(url, data); @@ -19,12 +33,14 @@ export async function createSignup(data: Signup): Promise { } } -// export async function updateSignup(data: Signup): Promise { -// try { -// const resp = await axios.post(url, data); -// return resp.data; -// } catch (err) { -// console.error(err); -// throw err; -// } -// } +export async function updateSignup(data: Signup): Promise { + try { + const { id } = data; + if (!id) throw new Error("SignupId required!"); + const resp = await axios.put(`${url}${id}`, data); + return resp.data; + } catch (err) { + console.error(err); + throw err; + } +} diff --git a/src/pages/EventCreatePage/EventCreatePage.tsx b/src/pages/EventCreatePage/EventCreatePage.tsx index 0604b08..d944cb8 100644 --- a/src/pages/EventCreatePage/EventCreatePage.tsx +++ b/src/pages/EventCreatePage/EventCreatePage.tsx @@ -4,6 +4,7 @@ import "./EventCreatePage.scss"; import { isAuthenticated } from "../../auth"; import Form from "react-jsonschema-form"; import { Tag, getTags } from "../../models/Tag"; +import { SignupForm, getForms } from "../../models/SignupForm"; import { createEvent, getEvent, updateEvent, Event } from "../../models/Event"; import DatetimeWidget from "../../components/DatetimeWidget"; import SectionDividerWidget from "../../components/SectionDividerWidget"; @@ -27,6 +28,7 @@ export interface EventCreatePageProps { } export interface EventCreatePageState { tags: Tag[]; + signupForm: SignupForm[]; error?: string; statusMessage?: string; formData: any; @@ -37,10 +39,12 @@ class EventCreatePage extends React.Component { - const getTagsPromise = getTags(); try { - const tags = await getTagsPromise; + const tags = await getTags(); this.setState({ tags, }); - return getTagsPromise; + return tags; } catch (err) { this.setState({ error: String(err), }); + throw err; + } + } + + fetchSignupForms = async () => { + try { + const signupForm = await getForms(); + this.setState({ + signupForm + }) + return signupForm; + } catch (err) { + this.setState({ + error: String(err), + }); + throw err; } } onSubmit = async (data) => { console.log("submitted, data:"); - console.log(data); + console.log(data.formData); const { history } = this.props; try { const payload = data.formData; - payload.signup_id = []; + payload.signup_id = payload.signupForm; payload.tag_id = payload.tags; if (payload.id === undefined) { const resp = await createEvent(payload); resp.tags = resp.tag_id as any; + resp.signupForm = resp.signup_id as any; this.setState({ formData: resp, statusMessage: "Event created successfully", @@ -97,6 +118,7 @@ class EventCreatePage extends React.Component { - const { tags, error } = this.state; + const { tags, signupForm, error } = this.state; const formData = this.state.formData as Event; @@ -173,6 +195,17 @@ class EventCreatePage extends React.Component form.id), + enumNames: signupForm.map(form => form.title), + }, + uniqueItems: true, + default: [], + }, finnish_section_divider: { title: "Finnish", type: "string", @@ -263,11 +296,11 @@ class EventCreatePage extends React.Component

{title}

{statusMessage &&
{statusMessage}
} - Date: Wed, 17 Jun 2020 00:27:06 +0300 Subject: [PATCH 07/56] Update ATL --- package-lock.json | 156 ++++++++++++++++++++++++++++++---------------- package.json | 4 +- 2 files changed, 105 insertions(+), 55 deletions(-) diff --git a/package-lock.json b/package-lock.json index 733782a..a3dcbb4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5219,12 +5219,13 @@ "dev": true }, "d": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/d/-/d-1.0.0.tgz", - "integrity": "sha1-dUu1v+VUUdpppYuU1F9MWwRi1Y8=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", + "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==", "dev": true, "requires": { - "es5-ext": "^0.10.9" + "es5-ext": "^0.10.50", + "type": "^1.0.1" } }, "damerau-levenshtein": { @@ -5957,14 +5958,26 @@ } }, "enhanced-resolve": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.0.0.tgz", - "integrity": "sha512-jox/62b2GofV1qTUQTMPEJSDIGycS43evqYzD/KVtEb9OCoki9cnacUPxCrZa7JfPzZSYOCZhu9O9luaMxAX8g==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.2.0.tgz", + "integrity": "sha512-S7eiFb/erugyd1rLb6mQ3Vuq+EXHv5cpCkNqqIkYkBgN2QdFnyCZzFBleqwGEx4lgNGYij81BWnCrFNK7vxvjQ==", "dev": true, "requires": { "graceful-fs": "^4.1.2", - "memory-fs": "^0.4.0", + "memory-fs": "^0.5.0", "tapable": "^1.0.0" + }, + "dependencies": { + "memory-fs": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.5.0.tgz", + "integrity": "sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==", + "dev": true, + "requires": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + } + } } }, "entities": { @@ -6035,14 +6048,14 @@ } }, "es5-ext": { - "version": "0.10.45", - "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.45.tgz", - "integrity": "sha512-FkfM6Vxxfmztilbxxz5UKSD4ICMf5tSpRFtDNtkAhOxZ0EKtX6qwmXNyH/sFyIbX2P/nU5AMiA9jilWsUGJzCQ==", + "version": "0.10.53", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.53.tgz", + "integrity": "sha512-Xs2Stw6NiNHWypzRTY1MtaG/uJlwCk8kH81920ma8mvN8Xq1gsfhZvpkImLQArw8AHnv8MT2I45J3c0R8slE+Q==", "dev": true, "requires": { "es6-iterator": "~2.0.3", - "es6-symbol": "~3.1.1", - "next-tick": "1" + "es6-symbol": "~3.1.3", + "next-tick": "~1.0.0" } }, "es6-iterator": { @@ -6063,13 +6076,13 @@ "dev": true }, "es6-symbol": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.1.tgz", - "integrity": "sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc=", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz", + "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==", "dev": true, "requires": { - "d": "1", - "es5-ext": "~0.10.14" + "d": "^1.0.1", + "ext": "^1.1.2" } }, "escape-html": { @@ -7358,6 +7371,23 @@ } } }, + "ext": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/ext/-/ext-1.4.0.tgz", + "integrity": "sha512-Key5NIsUxdqKg3vIsdw9dSuXpPCQ297y6wBjL30edxwPgt2E44WcWBZey/ZvUc6sERLTxKdyCu4gZFmUbk1Q7A==", + "dev": true, + "requires": { + "type": "^2.0.0" + }, + "dependencies": { + "type": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/type/-/type-2.0.0.tgz", + "integrity": "sha512-KBt58xCHry4Cejnc2ISQAF7QY+ORngsWfxezO68+12hKV6lQY8P/psIkcbjeHWn7MqcgciWJyCCevFMJdIXpow==", + "dev": true + } + } + }, "ext-list": { "version": "2.2.2", "resolved": "https://registry.npmjs.org/ext-list/-/ext-list-2.2.2.tgz", @@ -7502,7 +7532,8 @@ "fast-deep-equal": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", - "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=" + "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", + "dev": true }, "fast-glob": { "version": "2.2.6", @@ -14717,9 +14748,9 @@ "integrity": "sha512-PVadd+WaUDOAciICm/J1waJaSvgq+4rHE/K70j0PFqKhkTBsPv/82UGQJNXAngz1fOQLLxI6z1sEDmJDQhCTAA==" }, "react-jsonschema-form": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/react-jsonschema-form/-/react-jsonschema-form-1.8.0.tgz", - "integrity": "sha512-3rZZ1tCG+vtXRXEdX751t5L1c1TUGk1pvSY/4LzBrUo5FlwulnwJpkosE4BqwSRxvfMckP8YoHFQV4KjzaHGgQ==", + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/react-jsonschema-form/-/react-jsonschema-form-1.8.1.tgz", + "integrity": "sha512-aaDloxNAcGXOOOcdKOxxqEEn5oDlPUZgWcs8unXXB9vjBRgCF8rCm/wVSv1u2G5ih0j/BX6Ewd/WjI2g00lPdg==", "requires": { "@babel/runtime-corejs2": "^7.4.5", "ajv": "^6.7.0", @@ -14732,36 +14763,41 @@ }, "dependencies": { "@babel/runtime-corejs2": { - "version": "7.7.2", - "resolved": "https://registry.npmjs.org/@babel/runtime-corejs2/-/runtime-corejs2-7.7.2.tgz", - "integrity": "sha512-GfVnHchOBvIMsweQ13l4jd9lT4brkevnavnVOej5g2y7PpTRY+R4pcQlCjWMZoUla5rMLFzaS/Ll2s59cB1TqQ==", + "version": "7.10.2", + "resolved": "https://registry.npmjs.org/@babel/runtime-corejs2/-/runtime-corejs2-7.10.2.tgz", + "integrity": "sha512-ZLwsFnNm3WpIARU1aLFtufjMHsmEnc8TjtrfAjmbgMbeoyR+LuQoyESoNdTfeDhL6IdY12SpeycXMgSgl8XGXA==", "requires": { "core-js": "^2.6.5", - "regenerator-runtime": "^0.13.2" + "regenerator-runtime": "^0.13.4" }, "dependencies": { "core-js": { - "version": "2.6.10", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.10.tgz", - "integrity": "sha512-I39t74+4t+zau64EN1fE5v2W31Adtc/REhzWN+gWRRXg6WH5qAsZm62DHpQ1+Yhe4047T55jvzz7MUqF/dBBlA==" + "version": "2.6.11", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.11.tgz", + "integrity": "sha512-5wjnpaT/3dV+XB4borEsnAYQchn00XSgTAWKDkEqv+K8KevjbzmofK6hfJ9TZIlpj2N0xQpazy7PiRQiWHqzWg==" } } }, "ajv": { - "version": "6.10.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.2.tgz", - "integrity": "sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw==", + "version": "6.12.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.2.tgz", + "integrity": "sha512-k+V+hzjm5q/Mr8ef/1Y9goCmlsK4I6Sm74teeyGvFk1XrOsbsKLjEdrvny42CZ+a8sXbk8KWpY/bDwS+FLL2UQ==", "requires": { - "fast-deep-equal": "^2.0.1", + "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", "json-schema-traverse": "^0.4.1", "uri-js": "^4.2.2" } }, + "fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" + }, "regenerator-runtime": { - "version": "0.13.3", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.3.tgz", - "integrity": "sha512-naKIZz2GQ8JWh///G7L3X6LaQUAMp2lvb1rvwwsURe/VXwD6VMfr+/1NuNw3ag8v2kY1aQ/go5SNn79O9JU7yw==" + "version": "0.13.5", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.5.tgz", + "integrity": "sha512-ZS5w8CpKFinUzOwW3c83oPeVXoNsrLsaCoLtJvAClH135j/R77RuymhiSErhm2lKcwSCIpmvIWSbDkIfAqKQlA==" } } }, @@ -15609,9 +15645,9 @@ } }, "sass": { - "version": "1.25.0", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.25.0.tgz", - "integrity": "sha512-uQMjye0Y70SEDGO56n0j91tauqS9E1BmpKHtiYNQScXDHeaE9uHwNEqQNFf4Bes/3DHMNinB6u79JsG10XWNyw==", + "version": "1.26.8", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.26.8.tgz", + "integrity": "sha512-yvtzyrKLGiXQu7H12ekXqsfoGT/aTKeMDyVzCB675k1HYuaj0py63i8Uf4SI9CHXj6apDhpfwbUr3gGOjdpu2Q==", "dev": true, "requires": { "chokidar": ">=2.0.0 <4.0.0" @@ -15643,9 +15679,9 @@ } }, "chokidar": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.3.1.tgz", - "integrity": "sha512-4QYCEWOcK3OJrxwvyyAOxFuhpvOVCYkr33LPfFNBjAD/w3sEzWsp2BUOkI4l9bHvWioAd0rc6NlHUOEaWkTeqg==", + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.4.0.tgz", + "integrity": "sha512-aXAaho2VJtisB/1fg1+3nlLJqGOuewTzQpd/Tz0yTg2R0e4IGtshYvtjowyEumcBv2z+y4+kc75Mz7j5xJskcQ==", "dev": true, "requires": { "anymatch": "~3.1.1", @@ -15655,7 +15691,7 @@ "is-binary-path": "~2.1.0", "is-glob": "~4.0.1", "normalize-path": "~3.0.0", - "readdirp": "~3.3.0" + "readdirp": "~3.4.0" } }, "fill-range": { @@ -15668,16 +15704,16 @@ } }, "fsevents": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.2.tgz", - "integrity": "sha512-R4wDiBwZ0KzpgOWetKDug1FZcYhqYnUYKtfZYt4mD5SBz76q0KR4Q9o7GIPamsVPGmW3EYPPJ0dOOjvx32ldZA==", + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz", + "integrity": "sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==", "dev": true, "optional": true }, "glob-parent": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.0.tgz", - "integrity": "sha512-qjtRgnIVmOfnKUE3NJAQEdk+lKrxfw8t5ke7SXtfMTHcjsBfOfWXCQfdb30zfDoZQ2IRSIiidmjtbHZPZ++Ihw==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz", + "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==", "dev": true, "requires": { "is-glob": "^4.0.1" @@ -15720,12 +15756,20 @@ "dev": true }, "readdirp": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.3.0.tgz", - "integrity": "sha512-zz0pAkSPOXXm1viEwygWIPSPkcBYjW1xU5j/JBh5t9bGCJwa6f9+BJa6VaB2g+b55yVrmXzqkyLf4xaWYM0IkQ==", + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.4.0.tgz", + "integrity": "sha512-0xe001vZBnJEK+uKcj8qOhyAKPzIT+gStxWr3LCB0DwcXR5NZJ3IaC+yGnHCYzB/S7ov3m3EEbZI2zeNvX+hGQ==", "dev": true, "requires": { - "picomatch": "^2.0.7" + "picomatch": "^2.2.1" + }, + "dependencies": { + "picomatch": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", + "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", + "dev": true + } } }, "to-regex-range": { @@ -19198,6 +19242,12 @@ "dev": true, "optional": true }, + "type": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", + "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==", + "dev": true + }, "type-check": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", diff --git a/package.json b/package.json index 8d505db..5983d08 100644 --- a/package.json +++ b/package.json @@ -92,7 +92,7 @@ "react-addons-test-utils": "15.6.2", "react-dom": "16.8.6", "react-hot-loader": "4.8.8", - "sass": "^1.25.0", + "sass": "^1.26.8", "sass-loader": "7.1.0", "serve": "11.2.0", "style-loader": "0.21.0", @@ -123,7 +123,7 @@ "query-string": "6.5.0", "react-beautiful-dnd": "10.1.1", "react-helmet": "5.2.1", - "react-jsonschema-form": "^1.8.0", + "react-jsonschema-form": "^1.8.1", "react-router": "4.3.1", "react-router-dom": "4.3.1", "react-router-hash-link": "1.2.1", From 4aa6f93b579ad3f4a25707d7e0fbfe4789610ff6 Mon Sep 17 00:00:00 2001 From: Aarni Halinen Date: Wed, 17 Jun 2020 00:32:58 +0300 Subject: [PATCH 08/56] npm audit and type fixes --- package-lock.json | 2914 ++++++++++++----- package.json | 6 +- src/pages/FeedCreatePage/FeedCreatePage.tsx | 4 +- src/pages/SignUpPage/SignUpPage.tsx | 2 +- .../SignupCreatePage/SignupCreatePage.tsx | 4 +- 5 files changed, 2066 insertions(+), 864 deletions(-) diff --git a/package-lock.json b/package-lock.json index a3dcbb4..20e9d1a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -72,9 +72,9 @@ } }, "minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", "dev": true }, "ms": { @@ -344,6 +344,15 @@ "resolved": "https://registry.npmjs.org/file-type/-/file-type-9.0.0.tgz", "integrity": "sha512-Qe/5NJrgIOlwijpq3B7BEpzPFcgzggOTagZmkXQY4LA6bsXKTUstK7Wp12lEJ/mLKTpvIZxmIuRcLYWT6ov9lw==", "dev": true + }, + "mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "dev": true, + "requires": { + "minimist": "0.0.8" + } } } }, @@ -674,6 +683,21 @@ "dev": true, "optional": true }, + "@szmarczak/http-timer": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz", + "integrity": "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==", + "dev": true, + "requires": { + "defer-to-connect": "^1.0.1" + } + }, + "@types/color-name": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.1.tgz", + "integrity": "sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ==", + "dev": true + }, "@types/error-stack-parser": { "version": "1.3.18", "resolved": "https://registry.npmjs.org/@types/error-stack-parser/-/error-stack-parser-1.3.18.tgz", @@ -1306,12 +1330,40 @@ "dev": true }, "ansi-align": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-2.0.0.tgz", - "integrity": "sha1-w2rsy6VjuJzrVW82kPCx2eNUf38=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.0.tgz", + "integrity": "sha512-ZpClVKqXN3RGBmKibdfWzqCY4lnjEuoNzU5T0oEFpfd/z5qJHVarukridD4juLO2FXMiwUQxr9WqQtaYa8XRYw==", "dev": true, "requires": { - "string-width": "^2.0.0" + "string-width": "^3.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dev": true, + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + } } }, "ansi-colors": { @@ -1617,11 +1669,12 @@ "dev": true }, "asar": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/asar/-/asar-2.0.1.tgz", - "integrity": "sha512-Vo9yTuUtyFahkVMFaI6uMuX6N7k5DWa6a/8+7ov0/f8Lq9TVR0tUjzSzxQSxT1Y+RJIZgnP7BVb6Uhi+9cjxqA==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/asar/-/asar-2.1.0.tgz", + "integrity": "sha512-d2Ovma+bfqNpvBzY/KU8oPY67ZworixTpkjSx0PCXnQi67c2cXmssaTxpFDUM0ttopXoGx/KRxNg/GDThYbXQA==", "dev": true, "requires": { + "@types/glob": "^7.1.1", "chromium-pickle-js": "^0.2.0", "commander": "^2.20.0", "cuint": "^0.2.2", @@ -3636,24 +3689,119 @@ "dev": true }, "boxen": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/boxen/-/boxen-1.3.0.tgz", - "integrity": "sha512-TNPjfTr432qx7yOjQyaXm3dSR0MH9vXp7eT1BFSl/C51g+EFnOR9hTg1IreahGBmDNCehscshe45f+C1TBZbLw==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/boxen/-/boxen-4.2.0.tgz", + "integrity": "sha512-eB4uT9RGzg2odpER62bBwSLvUeGC+WbRjjyyFhGsKnc8wp/m0+hQsMUvUe3H2V0D5vw0nBdO1hCJoZo5mKeuIQ==", "dev": true, "requires": { - "ansi-align": "^2.0.0", - "camelcase": "^4.0.0", - "chalk": "^2.0.1", - "cli-boxes": "^1.0.0", - "string-width": "^2.0.0", - "term-size": "^1.2.0", - "widest-line": "^2.0.0" + "ansi-align": "^3.0.0", + "camelcase": "^5.3.1", + "chalk": "^3.0.0", + "cli-boxes": "^2.2.0", + "string-width": "^4.1.0", + "term-size": "^2.1.0", + "type-fest": "^0.8.1", + "widest-line": "^3.1.0" }, "dependencies": { + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true + }, + "ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "dev": true, + "requires": { + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" + } + }, "camelcase": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", - "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true + }, + "chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + }, + "string-width": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", + "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + } + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.0" + } + }, + "supports-color": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", + "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", "dev": true } } @@ -4187,12 +4335,6 @@ "integrity": "sha512-x3mYcApHMQemyaHuH/RyqtKCGIYTgEA63fdi+VBvDz8xUSmRiVWTLeyKcoGQCGG6UPR9/+4qG4OKrTa6aSQRKg==", "dev": true }, - "capture-stack-trace": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/capture-stack-trace/-/capture-stack-trace-1.0.1.tgz", - "integrity": "sha512-mYQLZnx5Qt1JgB1WEiMCf2647plpGeQ2NMR/5L0HNZzGQo4fuSPnK+wjfPnKZV0aiJDgzmWqqkV/g7JD+DW0qw==", - "dev": true - }, "caseless": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", @@ -4423,9 +4565,9 @@ "dev": true }, "cli-boxes": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-1.0.0.tgz", - "integrity": "sha1-T6kXw+WclKAEzWH47lCdplFocUM=", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-2.2.0.tgz", + "integrity": "sha512-gpaBrMAizVEANOpfZp/EEUixTXDyGt7DFzdK5hU+UbWt/J0lB0w20ncZj59Z9a93xHb9u12zF5BS6i9RKbtg4w==", "dev": true }, "cli-cursor": { @@ -4477,29 +4619,88 @@ } }, "cliui": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", - "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", "dev": true, "requires": { - "string-width": "^2.1.1", - "strip-ansi": "^4.0.0", - "wrap-ansi": "^2.0.0" + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" }, "dependencies": { "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", "dev": true }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", "dev": true, "requires": { - "ansi-regex": "^3.0.0" + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + }, + "string-width": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", + "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + } + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.0" + } + }, + "wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" } } } @@ -4553,7 +4754,6 @@ "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz", "integrity": "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=", "dev": true, - "optional": true, "requires": { "mimic-response": "^1.0.0" } @@ -4768,17 +4968,49 @@ } }, "configstore": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/configstore/-/configstore-3.1.2.tgz", - "integrity": "sha512-vtv5HtGjcYUgFrXc6Kx747B83MRRVS5R1VTEQoXvuP+kMI+if6uywV0nDGoiydJRy4yk7h9od5Og0kxx4zUXmw==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/configstore/-/configstore-5.0.1.tgz", + "integrity": "sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA==", "dev": true, "requires": { - "dot-prop": "^4.1.0", + "dot-prop": "^5.2.0", "graceful-fs": "^4.1.2", - "make-dir": "^1.0.0", - "unique-string": "^1.0.0", - "write-file-atomic": "^2.0.0", - "xdg-basedir": "^3.0.0" + "make-dir": "^3.0.0", + "unique-string": "^2.0.0", + "write-file-atomic": "^3.0.0", + "xdg-basedir": "^4.0.0" + }, + "dependencies": { + "dot-prop": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.2.0.tgz", + "integrity": "sha512-uEUyaDKoSQ1M4Oq8l45hSE26SnTxL6snNnqvK/VWx5wJhmff5z0FUVJDKDanor/6w3kzE3i7XZOk+7wC0EXr1A==", + "dev": true, + "requires": { + "is-obj": "^2.0.0" + } + }, + "is-obj": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", + "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", + "dev": true + }, + "make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "requires": { + "semver": "^6.0.0" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } } }, "connect-history-api-fallback": { @@ -4859,9 +5091,9 @@ "dev": true }, "cookie": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz", - "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=", + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz", + "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==", "dev": true }, "cookie-signature": { @@ -4933,15 +5165,6 @@ "elliptic": "^6.0.0" } }, - "create-error-class": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/create-error-class/-/create-error-class-3.0.2.tgz", - "integrity": "sha1-Br56vvlHo/FKMP1hBnHUAbyot7Y=", - "dev": true, - "requires": { - "capture-stack-trace": "^1.0.0" - } - }, "create-hash": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", @@ -5006,9 +5229,9 @@ "dev": true }, "crypto-random-string": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-1.0.0.tgz", - "integrity": "sha1-ojD2T1aDEOFJgAmUB5DsmVRbyn4=", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz", + "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==", "dev": true }, "css": { @@ -5284,9 +5507,9 @@ "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=" }, "decompress": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/decompress/-/decompress-4.2.0.tgz", - "integrity": "sha1-eu3YVCflqS2s/lVnSnxQXpbQH50=", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/decompress/-/decompress-4.2.1.tgz", + "integrity": "sha512-e48kc2IjU+2Zw8cTb6VZcJQ3lgVbS4uuB1TfCHbiZIP/haNXm+SVyhu+87jts5/3ROpd82GSVCoNs/z8l4ZOaQ==", "dev": true, "optional": true, "requires": { @@ -5314,7 +5537,6 @@ "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=", "dev": true, - "optional": true, "requires": { "mimic-response": "^1.0.0" } @@ -5440,9 +5662,9 @@ } }, "deep-equal": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.0.tgz", - "integrity": "sha512-ZbfWJq/wN1Z273o7mUSjILYqehAktR2NVoSrOukDkU9kg2v/Uv89yU4Cvz8seJeAmtN5oqiefKq8FPuXOboqLw==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.1.tgz", + "integrity": "sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g==", "dev": true, "requires": { "is-arguments": "^1.0.4", @@ -5500,6 +5722,12 @@ "clone": "^1.0.2" } }, + "defer-to-connect": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz", + "integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==", + "dev": true + }, "define-properties": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.2.tgz", @@ -6014,13 +6242,46 @@ } }, "errorhandler": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/errorhandler/-/errorhandler-1.5.0.tgz", - "integrity": "sha1-6rpkyl1UKjEayUX1gt78M2Fl2fQ=", + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/errorhandler/-/errorhandler-1.5.1.tgz", + "integrity": "sha512-rcOwbfvP1WTViVoUjcfZicVzjhjTuhSMntHh6mW3IrEiyE6mJyXvsToJUJGlGlw/2xU9P5whlWNGlIDVeCiT4A==", "dev": true, "requires": { - "accepts": "~1.3.3", + "accepts": "~1.3.7", "escape-html": "~1.0.3" + }, + "dependencies": { + "accepts": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", + "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", + "dev": true, + "requires": { + "mime-types": "~2.1.24", + "negotiator": "0.6.2" + } + }, + "mime-db": { + "version": "1.44.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.44.0.tgz", + "integrity": "sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg==", + "dev": true + }, + "mime-types": { + "version": "2.1.27", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.27.tgz", + "integrity": "sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w==", + "dev": true, + "requires": { + "mime-db": "1.44.0" + } + }, + "negotiator": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", + "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==", + "dev": true + } } }, "es-abstract": { @@ -6085,6 +6346,12 @@ "ext": "^1.1.2" } }, + "escape-goat": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/escape-goat/-/escape-goat-2.1.1.tgz", + "integrity": "sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q==", + "dev": true + }, "escape-html": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", @@ -6795,9 +7062,9 @@ }, "dependencies": { "acorn": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.1.0.tgz", - "integrity": "sha512-kL5CuoXA/dgxlBbVrflsflzQ3PAas7RYZB52NOm/6839iVYJgKMJ3cQJD+t2i5+qFa8h3MDpEOJiS64E8JLnSQ==", + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.3.1.tgz", + "integrity": "sha512-tLc0wSnatxAQHVHUapaHdz72pi9KUyHjq5KyHjGg9Y8Ifdc79pTh2XvI6I1/chZbnM7QtNKzh66ooDogPZSleA==", "dev": true }, "eslint-visitor-keys": { @@ -6851,9 +7118,9 @@ "dev": true }, "eventemitter3": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.0.tgz", - "integrity": "sha512-qerSRB0p+UDEssxTtm6EDKcE7W4OaoisfIMl4CngyEhjpYglocpNg6UEqCvemdGhosAsg4sO2dXJOdyBifPGCg==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.4.tgz", + "integrity": "sha512-rlaVLnVxtxvoyLsQQFBx53YmXHDxRIzzTLbdfxqi4yocpSjAxXwkU0cScM5JgSKMqEhrZpnvQ2D9gjylR0AimQ==", "dev": true }, "events": { @@ -7345,9 +7612,9 @@ } }, "express-urlrewrite": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/express-urlrewrite/-/express-urlrewrite-1.2.0.tgz", - "integrity": "sha1-jmZ7d2H/HH/9sO+gXWQDU4fII+s=", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/express-urlrewrite/-/express-urlrewrite-1.3.0.tgz", + "integrity": "sha512-xy3WZqA9EIfb51FkL1R0EqW91Z8lMi9ohp/WrNxKukvQulybqvh7+OsGiw9JOD51NrGsSuWi2hqOv7GW+DGz1w==", "dev": true, "requires": { "debug": "*", @@ -7361,9 +7628,9 @@ "dev": true }, "path-to-regexp": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.7.0.tgz", - "integrity": "sha1-Wf3g9DW62suhA6hOnTvGTpa5k30=", + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.8.0.tgz", + "integrity": "sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA==", "dev": true, "requires": { "isarray": "0.0.1" @@ -7989,17 +8256,17 @@ } }, "finalhandler": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.1.tgz", - "integrity": "sha512-Y1GUDo39ez4aHAw7MysnUD5JzYX+WaIj8I57kO3aEPT1fFRL4sr7mjei97FgnwhAyyzRYmQZaTHb2+9uZ1dPtg==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", + "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", "dev": true, "requires": { "debug": "2.6.9", "encodeurl": "~1.0.2", "escape-html": "~1.0.3", "on-finished": "~2.3.0", - "parseurl": "~1.3.2", - "statuses": "~1.4.0", + "parseurl": "~1.3.3", + "statuses": "~1.5.0", "unpipe": "~1.0.0" }, "dependencies": { @@ -8161,13 +8428,10 @@ } }, "follow-redirects": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.9.0.tgz", - "integrity": "sha512-CRcPzsSIbXyVDl0QI01muNDu69S8trU4jArW9LpOt2WtC6LyUJetcIrmfHsRBx7/Jb6GHJUiuqyYxPooFfNt6A==", - "dev": true, - "requires": { - "debug": "^3.0.0" - } + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.12.0.tgz", + "integrity": "sha512-JgawlbfBQKjbKegPn8vUsvJqplE7KHJuhGO4yPcb+ZOIYKSr+xobMVlfRBToZwZUUxy7lFiKBdFNloz9ui368Q==", + "dev": true }, "for-each": { "version": "0.3.3", @@ -8916,9 +9180,9 @@ } }, "get-caller-file": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.2.tgz", - "integrity": "sha1-9wLmMSfn4jHBYKgMFVSstw1QR+U=", + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", "dev": true }, "get-func-name": { @@ -9035,12 +9299,12 @@ } }, "global-dirs": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-0.1.1.tgz", - "integrity": "sha1-sxnA3UYH81PzvpzKTHL8FIxJ9EU=", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-2.0.1.tgz", + "integrity": "sha512-5HqUqdhkEovj2Of/ms3IeS/EekcO54ytHRLV4PEY2rhRwrHXLQjeVEES0Lhka0xwNDtGYn58wyC4s5+MHsOO6A==", "dev": true, "requires": { - "ini": "^1.3.4" + "ini": "^1.3.5" } }, "global-modules": { @@ -9100,23 +9364,6 @@ "integrity": "sha1-L0SUrIkZ43Z8XLtpHp9GMyQoXUM=", "dev": true }, - "gonzales-pe": { - "version": "4.2.4", - "resolved": "https://registry.npmjs.org/gonzales-pe/-/gonzales-pe-4.2.4.tgz", - "integrity": "sha512-v0Ts/8IsSbh9n1OJRnSfa7Nlxi4AkXIsWB6vPept8FDbL4bXn3FNuxjYtO/nmBGu7GDkL9MFeGebeSu6l55EPQ==", - "dev": true, - "requires": { - "minimist": "1.1.x" - }, - "dependencies": { - "minimist": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.1.3.tgz", - "integrity": "sha1-O+39kaktOQFvz6ocaB6Pqhoe/ag=", - "dev": true - } - } - }, "got": { "version": "7.1.0", "resolved": "https://registry.npmjs.org/got/-/got-7.1.0.tgz", @@ -9163,28 +9410,41 @@ } }, "handle-thing": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.0.tgz", - "integrity": "sha512-d4sze1JNC454Wdo2fkuyzCr6aHcbL6PGGuFAz0Li/NcOm1tCHGnWDRmJP85dh9IhQErTc2svWFEX5xHIOo//kQ==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", + "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==", "dev": true }, "handlebars": { - "version": "4.5.1", - "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.5.1.tgz", - "integrity": "sha512-C29UoFzHe9yM61lOsIlCE5/mQVGrnIOrOq7maQl76L7tYPCgC1og0Ajt6uWnX4ZTxBPnjw+CUvawphwCfJgUnA==", + "version": "4.7.6", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.6.tgz", + "integrity": "sha512-1f2BACcBfiwAfStCKZNrUCgqNZkGsAT7UM3kkYtXuLo0KnaVfjKOyf7PRzB6++aK9STyT1Pd2ZCPe3EGOXleXA==", "dev": true, "requires": { + "minimist": "^1.2.5", "neo-async": "^2.6.0", - "optimist": "^0.6.1", "source-map": "^0.6.1", - "uglify-js": "^3.1.4" + "uglify-js": "^3.1.4", + "wordwrap": "^1.0.0" }, "dependencies": { + "minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "dev": true + }, "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true + }, + "wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", + "dev": true } } }, @@ -9321,6 +9581,12 @@ } } }, + "has-yarn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/has-yarn/-/has-yarn-2.1.0.tgz", + "integrity": "sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw==", + "dev": true + }, "hash-base": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz", @@ -9537,9 +9803,9 @@ "optional": true }, "html-entities": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-1.2.1.tgz", - "integrity": "sha1-DfKTUfByEWNRXfueVUPl9u7VFi8=", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-1.3.1.tgz", + "integrity": "sha512-rhE/4Z3hIhzHAUKbW8jVcCyuT5oJCXXqhN/6mXXVCpzTmvJnoH2HL/bt3EZ6p55jbFJBeAe1ZNpL5BugLujxNA==", "dev": true }, "html-minifier": { @@ -9653,27 +9919,30 @@ "dev": true }, "http-errors": { - "version": "1.6.3", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", - "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.3.tgz", + "integrity": "sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw==", "dev": true, "requires": { "depd": "~1.1.2", - "inherits": "2.0.3", - "setprototypeof": "1.1.0", - "statuses": ">= 1.4.0 < 2" + "inherits": "2.0.4", + "setprototypeof": "1.1.1", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.0" + }, + "dependencies": { + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + } } }, - "http-parser-js": { - "version": "0.4.10", - "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.4.10.tgz", - "integrity": "sha1-ksnBN0w1CF912zWexWzCV8u5P6Q=", - "dev": true - }, "http-proxy": { - "version": "1.18.0", - "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.0.tgz", - "integrity": "sha512-84I2iJM/n1d4Hdgc6y2+qY5mDaz2PUVjlg9znE9byl+q0uC3DeByqBGReQu5tpLK0TAqTIXScRUV+dg7+bUPpQ==", + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", + "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", "dev": true, "requires": { "eventemitter3": "^4.0.0", @@ -10463,14 +10732,6 @@ "requires": { "default-gateway": "^4.2.0", "ipaddr.js": "^1.9.0" - }, - "dependencies": { - "ipaddr.js": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", - "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", - "dev": true - } } }, "interpret": { @@ -10511,9 +10772,9 @@ "dev": true }, "ipaddr.js": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.8.0.tgz", - "integrity": "sha1-6qM9bd16zo9/b+DJygRA5wZzix4=", + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", "dev": true }, "is-absolute": { @@ -10798,13 +11059,21 @@ "dev": true }, "is-installed-globally": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.1.0.tgz", - "integrity": "sha1-Df2Y9akRFxbdU13aZJL2e/PSWoA=", + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.3.2.tgz", + "integrity": "sha512-wZ8x1js7Ia0kecP/CHM/3ABkAmujX7WPvQk6uu3Fly/Mk44pySulQpnHG46OMjHGXApINnV4QhY3SWnECO2z5g==", "dev": true, "requires": { - "global-dirs": "^0.1.0", - "is-path-inside": "^1.0.0" + "global-dirs": "^2.0.1", + "is-path-inside": "^3.0.1" + }, + "dependencies": { + "is-path-inside": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.2.tgz", + "integrity": "sha512-/2UGPSgmtqwo1ktx8NDHjuPwZWmHhO+gj0f93EkhLB5RgW9RZevWYYlIkS6zePc6U2WpOdQYIwHe9YC4DWEBVg==", + "dev": true + } } }, "is-jpg": { @@ -10837,9 +11106,9 @@ "optional": true }, "is-npm": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-1.0.0.tgz", - "integrity": "sha1-8vtjpl5JBbQGyGBydloaTceTufQ=", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-4.0.0.tgz", + "integrity": "sha512-96ECIfh9xtDDlPylNPXhzjsykHsMJZ18ASpaWzQyBr4YRTcVjUvzaHayDAES2oU/3KpljhHUjtSRNiDwi0F0ig==", "dev": true }, "is-number": { @@ -10958,12 +11227,6 @@ "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=", "dev": true }, - "is-redirect": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-redirect/-/is-redirect-1.0.0.tgz", - "integrity": "sha1-HQPd7VO9jbDzDCbk+V02/HyH3CQ=", - "dev": true - }, "is-regex": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz", @@ -10992,7 +11255,8 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz", "integrity": "sha1-EaBgVotnM5REAz0BJaYaINVk+zQ=", - "dev": true + "dev": true, + "optional": true }, "is-stream": { "version": "1.1.0", @@ -11070,6 +11334,12 @@ "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", "dev": true }, + "is-yarn-global": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/is-yarn-global/-/is-yarn-global-0.3.0.tgz", + "integrity": "sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw==", + "dev": true + }, "isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", @@ -11176,8 +11446,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", "integrity": "sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=", - "dev": true, - "optional": true + "dev": true }, "json-parse-better-errors": { "version": "1.0.2", @@ -11206,69 +11475,104 @@ "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" }, "json-server": { - "version": "0.14.2", - "resolved": "https://registry.npmjs.org/json-server/-/json-server-0.14.2.tgz", - "integrity": "sha512-MfU7069e/kLp1e33n3JQ2DAH9UJrs/UYlXbzWgegBTXoGEmVkIzkO3T8ZyIkCTDBWzUeGTCBZV7brdyTcm6LWg==", + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/json-server/-/json-server-0.16.1.tgz", + "integrity": "sha512-aVUTdpt+X27iIuWuxBChJywykPSP4opEiFrH044pG+34Gde3eHZRTzeMyx8ts5/kY2gK1Ru2YBmF2k/vI0lQug==", "dev": true, "requires": { - "body-parser": "^1.18.3", - "chalk": "^2.4.1", - "compression": "^1.7.3", + "body-parser": "^1.19.0", + "chalk": "^3.0.0", + "compression": "^1.7.4", "connect-pause": "^0.1.1", "cors": "^2.8.5", - "errorhandler": "^1.2.0", - "express": "^4.16.4", + "errorhandler": "^1.5.1", + "express": "^4.17.1", "express-urlrewrite": "^1.2.0", "json-parse-helpfulerror": "^1.0.3", - "lodash": "^4.17.11", + "lodash": "^4.17.15", "lodash-id": "^0.14.0", "lowdb": "^1.0.0", "method-override": "^3.0.0", "morgan": "^1.9.1", - "nanoid": "^2.0.0", - "object-assign": "^4.0.1", - "please-upgrade-node": "^3.1.1", - "pluralize": "^7.0.0", - "request": "^2.88.0", + "nanoid": "^2.1.11", + "please-upgrade-node": "^3.2.0", + "pluralize": "^8.0.0", + "request": "^2.88.2", "server-destroy": "^1.0.1", - "update-notifier": "^2.5.0", - "yargs": "^12.0.2" + "update-notifier": "^4.0.0", + "yargs": "^15.1.0" }, "dependencies": { - "ajv": { - "version": "6.10.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.0.tgz", - "integrity": "sha512-nffhOpkymDECQyR0mnsUtoCE8RlX38G0rYP+wgLWFyZuUyuuojSSvi/+euOiQBIn63whYwYVIIH1TvE3tu4OEg==", + "accepts": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", + "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", "dev": true, "requires": { - "fast-deep-equal": "^2.0.1", + "mime-types": "~2.1.24", + "negotiator": "0.6.2" + } + }, + "ajv": { + "version": "6.12.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.2.tgz", + "integrity": "sha512-k+V+hzjm5q/Mr8ef/1Y9goCmlsK4I6Sm74teeyGvFk1XrOsbsKLjEdrvny42CZ+a8sXbk8KWpY/bDwS+FLL2UQ==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", "json-schema-traverse": "^0.4.1", "uri-js": "^4.2.2" } }, - "aws4": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz", - "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==", - "dev": true - }, - "body-parser": { - "version": "1.18.3", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.18.3.tgz", - "integrity": "sha1-WykhmP/dVTs6DyDe0FkrlWlVyLQ=", + "ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", "dev": true, "requires": { - "bytes": "3.0.0", - "content-type": "~1.0.4", - "debug": "2.6.9", - "depd": "~1.1.2", - "http-errors": "~1.6.3", - "iconv-lite": "0.4.23", - "on-finished": "~2.3.0", - "qs": "6.5.2", - "raw-body": "2.3.3", - "type-is": "~1.6.16" + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" + } + }, + "aws4": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.10.0.tgz", + "integrity": "sha512-3YDiu347mtVtjpyV3u5kVqQLP242c06zwDOgpeRnybmXlYYsLbtTrUBUm8i8srONt+FWobl5aibnU1030PeeuA==", + "dev": true + }, + "chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "content-disposition": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", + "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==", + "dev": true, + "requires": { + "safe-buffer": "5.1.2" } }, "debug": { @@ -11281,47 +11585,47 @@ } }, "express": { - "version": "4.16.4", - "resolved": "https://registry.npmjs.org/express/-/express-4.16.4.tgz", - "integrity": "sha512-j12Uuyb4FMrd/qQAm6uCHAkPtO8FDTRJZBDd5D2KOL2eLaz1yUNdUB/NOIyq0iU4q4cFarsUCrnFDPBcnksuOg==", + "version": "4.17.1", + "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz", + "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==", "dev": true, "requires": { - "accepts": "~1.3.5", + "accepts": "~1.3.7", "array-flatten": "1.1.1", - "body-parser": "1.18.3", - "content-disposition": "0.5.2", + "body-parser": "1.19.0", + "content-disposition": "0.5.3", "content-type": "~1.0.4", - "cookie": "0.3.1", + "cookie": "0.4.0", "cookie-signature": "1.0.6", "debug": "2.6.9", "depd": "~1.1.2", "encodeurl": "~1.0.2", "escape-html": "~1.0.3", "etag": "~1.8.1", - "finalhandler": "1.1.1", + "finalhandler": "~1.1.2", "fresh": "0.5.2", "merge-descriptors": "1.0.1", "methods": "~1.1.2", "on-finished": "~2.3.0", - "parseurl": "~1.3.2", + "parseurl": "~1.3.3", "path-to-regexp": "0.1.7", - "proxy-addr": "~2.0.4", - "qs": "6.5.2", - "range-parser": "~1.2.0", + "proxy-addr": "~2.0.5", + "qs": "6.7.0", + "range-parser": "~1.2.1", "safe-buffer": "5.1.2", - "send": "0.16.2", - "serve-static": "1.13.2", - "setprototypeof": "1.1.0", - "statuses": "~1.4.0", - "type-is": "~1.6.16", + "send": "0.17.1", + "serve-static": "1.14.1", + "setprototypeof": "1.1.1", + "statuses": "~1.5.0", + "type-is": "~1.6.18", "utils-merge": "1.0.1", "vary": "~1.1.2" } }, - "extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", "dev": true }, "har-validator": { @@ -11334,34 +11638,37 @@ "har-schema": "^2.0.0" } }, - "iconv-lite": { - "version": "0.4.23", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.23.tgz", - "integrity": "sha512-neyTUVFtahjf0mB3dZT77u+8O0QB89jFdnBkd5P1JgYPbPaia3gXXOVL2fq8VyU2gMMD7SaN7QukTB/pmXYvDA==", - "dev": true, - "requires": { - "safer-buffer": ">= 2.1.2 < 3" - } + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true }, "mime-db": { - "version": "1.38.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.38.0.tgz", - "integrity": "sha512-bqVioMFFzc2awcdJZIzR3HjZFX20QhilVS7hytkKrv7xFAn8bM1gzc/FOX2awLISvWe0PV8ptFKcon+wZ5qYkg==", + "version": "1.44.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.44.0.tgz", + "integrity": "sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg==", "dev": true }, "mime-types": { - "version": "2.1.22", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.22.tgz", - "integrity": "sha512-aGl6TZGnhm/li6F7yx82bJiBZwgiEa4Hf6CNr8YO+r5UHr53tSTYZb102zyU50DOWWKeOv0uQLRL0/9EiKWCog==", + "version": "2.1.27", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.27.tgz", + "integrity": "sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w==", "dev": true, "requires": { - "mime-db": "~1.38.0" + "mime-db": "1.44.0" } }, "nanoid": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-2.0.1.tgz", - "integrity": "sha512-k1u2uemjIGsn25zmujKnotgniC/gxQ9sdegdezeDiKdkDW56THUMqlz3urndKCXJxA6yPzSZbXx/QCMe/pxqsA==", + "version": "2.1.11", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-2.1.11.tgz", + "integrity": "sha512-s/snB+WGm6uwi0WjsZdaVcuf3KJXlfGl2LcxgwkEwJF0D/BWzVWAZW/XY4bFaiR7s0Jk3FPvlnepg1H1b1UwlA==", + "dev": true + }, + "negotiator": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", + "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==", "dev": true }, "oauth-sign": { @@ -11370,34 +11677,25 @@ "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", "dev": true }, - "punycode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", - "dev": true - }, - "qs": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", - "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", - "dev": true - }, - "raw-body": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.3.3.tgz", - "integrity": "sha512-9esiElv1BrZoI3rCDuOuKCBRbuApGGaDPQfjSflGxdy4oyzqghxu6klEkkVIvBje+FF0BX9coEv8KqW6X/7njw==", + "please-upgrade-node": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/please-upgrade-node/-/please-upgrade-node-3.2.0.tgz", + "integrity": "sha512-gQR3WpIgNIKwBMVLkpMUeR3e1/E1y42bqDQZfql+kDeXd8COYfM8PQA4X6y7a8u9Ua9FHmsrrmirW2vHs45hWg==", "dev": true, "requires": { - "bytes": "3.0.0", - "http-errors": "1.6.3", - "iconv-lite": "0.4.23", - "unpipe": "1.0.0" + "semver-compare": "^1.0.0" } }, + "qs": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", + "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==", + "dev": true + }, "request": { - "version": "2.88.0", - "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz", - "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==", + "version": "2.88.2", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", + "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", "dev": true, "requires": { "aws-sign2": "~0.7.0", @@ -11407,7 +11705,7 @@ "extend": "~3.0.2", "forever-agent": "~0.6.1", "form-data": "~2.3.2", - "har-validator": "~5.1.0", + "har-validator": "~5.1.3", "http-signature": "~1.2.0", "is-typedarray": "~1.0.0", "isstream": "~0.1.2", @@ -11417,25 +11715,42 @@ "performance-now": "^2.1.0", "qs": "~6.5.2", "safe-buffer": "^5.1.2", - "tough-cookie": "~2.4.3", + "tough-cookie": "~2.5.0", "tunnel-agent": "^0.6.0", "uuid": "^3.3.2" + }, + "dependencies": { + "qs": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", + "dev": true + } + } + }, + "supports-color": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", + "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" } }, "tough-cookie": { - "version": "2.4.3", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz", - "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==", + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", "dev": true, "requires": { - "psl": "^1.1.24", - "punycode": "^1.4.1" + "psl": "^1.1.28", + "punycode": "^2.1.1" } }, "uuid": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", - "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==", + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", "dev": true } } @@ -11518,7 +11833,6 @@ "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.0.0.tgz", "integrity": "sha512-eguHnq22OE3uVoSYG0LVWNP+4ppamWr9+zWBe1bsNcovIMy6huUJFPgy4mGwCd/rnl3vOLGW1MTlu4c57CT1xA==", "dev": true, - "optional": true, "requires": { "json-buffer": "3.0.0" } @@ -11530,9 +11844,9 @@ "dev": true }, "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", "dev": true }, "known-css-properties": { @@ -11542,12 +11856,12 @@ "dev": true }, "latest-version": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-3.1.0.tgz", - "integrity": "sha1-ogU4P+oyKzO1rjsYq+4NwvNW7hU=", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-5.1.0.tgz", + "integrity": "sha512-weT+r0kTkRQdCdYCNtkMwWXQTMEswKrFBkm4ckQOMVhhqhIMI1UT2hMj+1iigIhgSZm5gTmrRXBNoGUgaTY1xA==", "dev": true, "requires": { - "package-json": "^4.0.0" + "package-json": "^6.3.0" } }, "leven": { @@ -11734,9 +12048,9 @@ } }, "loglevel": { - "version": "1.6.6", - "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.6.6.tgz", - "integrity": "sha512-Sgr5lbboAUBo3eXCSPL4/KoVz3ROKquOjcctxmHIt+vol2DrqTQe3SwkKKuYhEiWB5kYa13YyopJ69deJ1irzQ==", + "version": "1.6.8", + "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.6.8.tgz", + "integrity": "sha512-bsU7+gc9AJ2SqpzxwU3+1fedl8zAntbtC5XYlt3s2j1hJcn2PsXSmgN8TaLG/J1/2mod4+cE/3vNL70/c1RNCA==", "dev": true }, "loglevelnext": { @@ -12039,9 +12353,9 @@ }, "dependencies": { "minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", "dev": true, "optional": true } @@ -12148,8 +12462,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", - "dev": true, - "optional": true + "dev": true }, "min-document": { "version": "2.19.0", @@ -12318,12 +12631,20 @@ } }, "mkdirp": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", "dev": true, "requires": { - "minimist": "0.0.8" + "minimist": "^1.2.5" + }, + "dependencies": { + "minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "dev": true + } } }, "mobx": { @@ -12911,10 +13232,99 @@ "dev": true }, "object-is": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.0.1.tgz", - "integrity": "sha1-CqYOyZiaCz7Xlc9NBvYs8a1lObY=", - "dev": true + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.2.tgz", + "integrity": "sha512-5lHCz+0uufF6wZ7CRFWJN3hp8Jqblpgve06U5CMQ3f//6iDjPr2PEo9MWCjEssDsa+UZEL4PkFpr+BMop6aKzQ==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5" + }, + "dependencies": { + "define-properties": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "dev": true, + "requires": { + "object-keys": "^1.0.12" + } + }, + "es-abstract": { + "version": "1.17.6", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.6.tgz", + "integrity": "sha512-Fr89bON3WFyUi5EvAeI48QTWX0AyekGgLA8H+c+7fbfCkJwRWRMLd8CQedNEyJuoYYhmtEqY92pgte1FAhBlhw==", + "dev": true, + "requires": { + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.2.0", + "is-regex": "^1.1.0", + "object-inspect": "^1.7.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.0", + "string.prototype.trimend": "^1.0.1", + "string.prototype.trimstart": "^1.0.1" + }, + "dependencies": { + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true + } + } + }, + "es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, + "requires": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + } + }, + "has-symbols": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", + "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", + "dev": true + }, + "is-callable": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.0.tgz", + "integrity": "sha512-pyVD9AaGLxtg6srb2Ng6ynWJqkHU9bEM087AKck0w8QwDarTfNcpIYoU8x8Hv2Icm8u6kFJM18Dag8lyqGkviw==", + "dev": true + }, + "is-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.0.tgz", + "integrity": "sha512-iI97M8KTWID2la5uYXlkbSDQIg4F6o1sYboZKKTDpnDQMLtUL86zxhgDet3Q2SriaYsyGqZ6Mn2SjbRKeLHdqw==", + "dev": true, + "requires": { + "has-symbols": "^1.0.1" + } + }, + "is-symbol": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", + "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==", + "dev": true, + "requires": { + "has-symbols": "^1.0.1" + } + }, + "object-inspect": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.7.0.tgz", + "integrity": "sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw==", + "dev": true + } + } }, "object-keys": { "version": "1.0.12", @@ -13192,16 +13602,6 @@ "is-wsl": "^1.1.0" } }, - "optimist": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", - "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", - "dev": true, - "requires": { - "minimist": "~0.0.1", - "wordwrap": "~0.0.2" - } - }, "optionator": { "version": "0.8.3", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", @@ -13443,34 +13843,120 @@ "dev": true }, "package-json": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/package-json/-/package-json-4.0.1.tgz", - "integrity": "sha1-iGmgQBJTZhxMTKPabCEh7VVfXu0=", + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/package-json/-/package-json-6.5.0.tgz", + "integrity": "sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ==", "dev": true, "requires": { - "got": "^6.7.1", - "registry-auth-token": "^3.0.1", - "registry-url": "^3.0.3", - "semver": "^5.1.0" + "got": "^9.6.0", + "registry-auth-token": "^4.0.0", + "registry-url": "^5.0.0", + "semver": "^6.2.0" }, "dependencies": { - "got": { - "version": "6.7.1", - "resolved": "https://registry.npmjs.org/got/-/got-6.7.1.tgz", - "integrity": "sha1-JAzQV4WpoY5WHcG0S0HHY+8ejbA=", + "@sindresorhus/is": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz", + "integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==", + "dev": true + }, + "cacheable-request": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz", + "integrity": "sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==", "dev": true, "requires": { - "create-error-class": "^3.0.0", + "clone-response": "^1.0.2", + "get-stream": "^5.1.0", + "http-cache-semantics": "^4.0.0", + "keyv": "^3.0.0", + "lowercase-keys": "^2.0.0", + "normalize-url": "^4.1.0", + "responselike": "^1.0.2" + }, + "dependencies": { + "get-stream": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.1.0.tgz", + "integrity": "sha512-EXr1FOzrzTfGeL0gQdeFEvOMm2mzMOglyiOXSTpPC+iAjAKftbr3jpCMWynogwYnM+eSj9sHGc6wjIcDvYiygw==", + "dev": true, + "requires": { + "pump": "^3.0.0" + } + }, + "lowercase-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", + "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", + "dev": true + } + } + }, + "get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dev": true, + "requires": { + "pump": "^3.0.0" + } + }, + "got": { + "version": "9.6.0", + "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz", + "integrity": "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==", + "dev": true, + "requires": { + "@sindresorhus/is": "^0.14.0", + "@szmarczak/http-timer": "^1.1.2", + "cacheable-request": "^6.0.0", + "decompress-response": "^3.3.0", "duplexer3": "^0.1.4", - "get-stream": "^3.0.0", - "is-redirect": "^1.0.0", - "is-retry-allowed": "^1.0.0", - "is-stream": "^1.0.0", - "lowercase-keys": "^1.0.0", - "safe-buffer": "^5.0.1", - "timed-out": "^4.0.0", - "unzip-response": "^2.0.1", - "url-parse-lax": "^1.0.0" + "get-stream": "^4.1.0", + "lowercase-keys": "^1.0.1", + "mimic-response": "^1.0.1", + "p-cancelable": "^1.0.0", + "to-readable-stream": "^1.0.0", + "url-parse-lax": "^3.0.0" + } + }, + "http-cache-semantics": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz", + "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==", + "dev": true + }, + "normalize-url": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.0.tgz", + "integrity": "sha512-2s47yzUxdexf1OhyRi4Em83iQk0aPvwTddtFz4hnSSw9dCEsLEGf6SwIO8ss/19S9iBb5sJaOuTvTGDeZI00BQ==", + "dev": true + }, + "p-cancelable": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz", + "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==", + "dev": true + }, + "prepend-http": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", + "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=", + "dev": true + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + }, + "url-parse-lax": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", + "integrity": "sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=", + "dev": true, + "requires": { + "prepend-http": "^2.0.0" } } } @@ -13643,9 +14129,9 @@ "dev": true }, "parseurl": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.2.tgz", - "integrity": "sha1-/CidTtiZMRlGDBViUyYs3I3mW/M=", + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", "dev": true }, "pascal-case": { @@ -13878,9 +14364,9 @@ } }, "minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", "dev": true }, "supports-color": { @@ -13892,9 +14378,9 @@ } }, "pluralize": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-7.0.0.tgz", - "integrity": "sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-8.0.0.tgz", + "integrity": "sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==", "dev": true }, "pngjs": { @@ -13949,9 +14435,9 @@ } }, "portfinder": { - "version": "1.0.25", - "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.25.tgz", - "integrity": "sha512-6ElJnHBbxVA1XSLgBp7G1FiCkQdlqGzuF7DswL5tcea+E8UpuvPU7beVAjjRwCioTS9ZluNbu+ZyRvgTsmqEBg==", + "version": "1.0.26", + "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.26.tgz", + "integrity": "sha512-Xi7mKxJHHMI3rIUrnm/jjUgwhbYMkp/XKEcZX3aG4BrumLpq3nmoQMX+ClYnDZnZ/New7IatC1no5RX0zo1vXQ==", "dev": true, "requires": { "async": "^2.6.2", @@ -14248,13 +14734,78 @@ } }, "postcss-sass": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/postcss-sass/-/postcss-sass-0.4.1.tgz", - "integrity": "sha512-YDdykeDHylqiD2CdXuP7K1aDz7hCflGVB6H6lqabWVab5mVOWhguUuWZYpFU22/E12AEGiMlOfZnLqr343zhVA==", + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/postcss-sass/-/postcss-sass-0.4.4.tgz", + "integrity": "sha512-BYxnVYx4mQooOhr+zer0qWbSPYnarAy8ZT7hAQtbxtgVf8gy+LSLT/hHGe35h14/pZDTw1DsxdbrwxBN++H+fg==", "dev": true, "requires": { - "gonzales-pe": "^4.2.4", - "postcss": "^7.0.14" + "gonzales-pe": "^4.3.0", + "postcss": "^7.0.21" + }, + "dependencies": { + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "dependencies": { + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "gonzales-pe": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/gonzales-pe/-/gonzales-pe-4.3.0.tgz", + "integrity": "sha512-otgSPpUmdWJ43VXyiNgEYE4luzHCL2pz4wQ0OnDluC6Eg4Ko3Vexy/SrSynglw/eR+OhkzmqFCZa/OFa/RgAOQ==", + "dev": true, + "requires": { + "minimist": "^1.2.5" + } + }, + "minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "dev": true + }, + "postcss": { + "version": "7.0.32", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.32.tgz", + "integrity": "sha512-03eXong5NLnNCD05xscnGKGDZ98CyzoqPSMjOe6SuoQY7Z2hIj0Ld1g/O/UQRuOle2aRtiIRDg9tDcTGAkLfKw==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } } }, "postcss-scss": { @@ -14290,15 +14841,15 @@ "dev": true }, "prebuild-install": { - "version": "5.3.3", - "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-5.3.3.tgz", - "integrity": "sha512-GV+nsUXuPW2p8Zy7SarF/2W/oiK8bFQgJcncoJ0d7kRpekEA0ftChjfEaF9/Y+QJEc/wFR7RAEa8lYByuUIe2g==", + "version": "5.3.4", + "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-5.3.4.tgz", + "integrity": "sha512-AkKN+pf4fSEihjapLEEj8n85YIw/tN6BQqkhzbDc0RvEZGdkpJBGMUYx66AAMcPG2KzmPQS7Cm16an4HVBRRMA==", "dev": true, "requires": { "detect-libc": "^1.0.3", "expand-template": "^2.0.3", "github-from-package": "0.0.0", - "minimist": "^1.2.0", + "minimist": "^1.2.3", "mkdirp": "^0.5.1", "napi-build-utils": "^1.0.1", "node-abi": "^2.7.0", @@ -14313,9 +14864,9 @@ }, "dependencies": { "minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", "dev": true } } @@ -14330,7 +14881,8 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=", - "dev": true + "dev": true, + "optional": true }, "preserve": { "version": "0.2.0", @@ -14399,13 +14951,13 @@ "optional": true }, "proxy-addr": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.4.tgz", - "integrity": "sha512-5erio2h9jp5CHGwcybmxmVqHmnCBZeewlfJ0pex+UW7Qny7OOZXTtH56TGNyBizkgiOwhJtMKrVzDTeKcySZwA==", + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.6.tgz", + "integrity": "sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw==", "dev": true, "requires": { "forwarded": "~0.1.2", - "ipaddr.js": "1.8.0" + "ipaddr.js": "1.9.1" } }, "prr": { @@ -14421,9 +14973,9 @@ "dev": true }, "psl": { - "version": "1.1.31", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.1.31.tgz", - "integrity": "sha512-/6pt4+C+T+wZUieKR620OpzN/LlnNKuWjy1iFLQ/UG35JqHlR/89MP1d96dUfkf6Dne3TuLQzOYEYshJ+Hx8mw==", + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", + "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==", "dev": true }, "public-encrypt": { @@ -14478,6 +15030,15 @@ "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" }, + "pupa": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pupa/-/pupa-2.0.1.tgz", + "integrity": "sha512-hEJH0s8PXLY/cdXh66tNEQGndDrIKNqNC5xmrysZy3i5C3oEoLna7YAOad+7u125+zH1HNXUmGEkrhb3c2VriA==", + "dev": true, + "requires": { + "escape-goat": "^2.0.0" + } + }, "q": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", @@ -14577,9 +15138,9 @@ } }, "range-parser": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz", - "integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4=", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", "dev": true }, "raw-body": { @@ -14640,9 +15201,9 @@ }, "dependencies": { "minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", "dev": true } } @@ -15131,12 +15692,98 @@ } }, "regexp.prototype.flags": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.2.0.tgz", - "integrity": "sha512-ztaw4M1VqgMwl9HlPpOuiYgItcHlunW0He2fE6eNfT6E/CF2FtYi9ofOYe4mKntstYk0Fyh/rDRBdS3AnxjlrA==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.3.0.tgz", + "integrity": "sha512-2+Q0C5g951OlYlJz6yu5/M33IcsESLlLfsyIaLJaG4FA2r4yP8MvVMJUUP/fVBkSpbbbZlS5gynbEWLipiiXiQ==", "dev": true, "requires": { - "define-properties": "^1.1.2" + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1" + }, + "dependencies": { + "define-properties": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "dev": true, + "requires": { + "object-keys": "^1.0.12" + } + }, + "es-abstract": { + "version": "1.17.6", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.6.tgz", + "integrity": "sha512-Fr89bON3WFyUi5EvAeI48QTWX0AyekGgLA8H+c+7fbfCkJwRWRMLd8CQedNEyJuoYYhmtEqY92pgte1FAhBlhw==", + "dev": true, + "requires": { + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.2.0", + "is-regex": "^1.1.0", + "object-inspect": "^1.7.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.0", + "string.prototype.trimend": "^1.0.1", + "string.prototype.trimstart": "^1.0.1" + }, + "dependencies": { + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true + } + } + }, + "es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, + "requires": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + } + }, + "has-symbols": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", + "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", + "dev": true + }, + "is-callable": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.0.tgz", + "integrity": "sha512-pyVD9AaGLxtg6srb2Ng6ynWJqkHU9bEM087AKck0w8QwDarTfNcpIYoU8x8Hv2Icm8u6kFJM18Dag8lyqGkviw==", + "dev": true + }, + "is-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.0.tgz", + "integrity": "sha512-iI97M8KTWID2la5uYXlkbSDQIg4F6o1sYboZKKTDpnDQMLtUL86zxhgDet3Q2SriaYsyGqZ6Mn2SjbRKeLHdqw==", + "dev": true, + "requires": { + "has-symbols": "^1.0.1" + } + }, + "is-symbol": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", + "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==", + "dev": true, + "requires": { + "has-symbols": "^1.0.1" + } + }, + "object-inspect": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.7.0.tgz", + "integrity": "sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw==", + "dev": true + } } }, "regexpp": { @@ -15157,22 +15804,21 @@ } }, "registry-auth-token": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-3.3.2.tgz", - "integrity": "sha512-JL39c60XlzCVgNrO+qq68FoNb56w/m7JYvGR2jT5iR1xBrUA3Mfx5Twk5rqTThPmQKMWydGmq8oFtDlxfrmxnQ==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-4.1.1.tgz", + "integrity": "sha512-9bKS7nTl9+/A1s7tnPeGrUpRcVY+LUh7bfFgzpndALdPfXQBfQV77rQVtqgUV3ti4vc/Ik81Ex8UJDWDQ12zQA==", "dev": true, "requires": { - "rc": "^1.1.6", - "safe-buffer": "^5.0.1" + "rc": "^1.2.8" } }, "registry-url": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-3.1.0.tgz", - "integrity": "sha1-PU74cPc93h138M+aOBQyRE4XSUI=", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-5.1.0.tgz", + "integrity": "sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw==", "dev": true, "requires": { - "rc": "^1.0.1" + "rc": "^1.2.8" } }, "regjsgen": { @@ -15372,9 +16018,9 @@ "dev": true }, "require-main-filename": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", - "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", "dev": true }, "requires-port": { @@ -15462,6 +16108,15 @@ "resolved": "https://registry.npmjs.org/jpeg-js/-/jpeg-js-0.1.2.tgz", "integrity": "sha1-E1uZLAV1yYXPoPSUoyJ+0jhYPs4=", "dev": true + }, + "mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "dev": true, + "requires": { + "minimist": "0.0.8" + } } } }, @@ -15523,7 +16178,6 @@ "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", "integrity": "sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec=", "dev": true, - "optional": true, "requires": { "lowercase-keys": "^1.0.0" } @@ -15873,12 +16527,20 @@ "dev": true }, "semver-diff": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-2.1.0.tgz", - "integrity": "sha1-S7uEN8jTfksM8aaP1ybsbWRdbTY=", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-3.1.1.tgz", + "integrity": "sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg==", "dev": true, "requires": { - "semver": "^5.0.3" + "semver": "^6.3.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } } }, "semver-regex": { @@ -15899,9 +16561,9 @@ } }, "send": { - "version": "0.16.2", - "resolved": "https://registry.npmjs.org/send/-/send-0.16.2.tgz", - "integrity": "sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw==", + "version": "0.17.1", + "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", + "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==", "dev": true, "requires": { "debug": "2.6.9", @@ -15911,12 +16573,12 @@ "escape-html": "~1.0.3", "etag": "~1.8.1", "fresh": "0.5.2", - "http-errors": "~1.6.2", - "mime": "1.4.1", - "ms": "2.0.0", + "http-errors": "~1.7.2", + "mime": "1.6.0", + "ms": "2.1.1", "on-finished": "~2.3.0", - "range-parser": "~1.2.0", - "statuses": "~1.4.0" + "range-parser": "~1.2.1", + "statuses": "~1.5.0" }, "dependencies": { "debug": { @@ -15926,7 +16588,27 @@ "dev": true, "requires": { "ms": "2.0.0" + }, + "dependencies": { + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } } + }, + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "dev": true + }, + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "dev": true } } }, @@ -15947,9 +16629,9 @@ "dev": true }, "serve": { - "version": "11.2.0", - "resolved": "https://registry.npmjs.org/serve/-/serve-11.2.0.tgz", - "integrity": "sha512-THZcLzDGk3vJqjhAbLkLag43tiE3V0B7wVe98Xtl+1KyAsr+4iShg+9hke4pLZmrCJu0pUg0TrbhJmdqn/MKoA==", + "version": "11.3.2", + "resolved": "https://registry.npmjs.org/serve/-/serve-11.3.2.tgz", + "integrity": "sha512-yKWQfI3xbj/f7X1lTBg91fXBP0FqjJ4TEi+ilES5yzH0iKJpN5LjNb1YzIfQg9Rqn4ECUS2SOf2+Kmepogoa5w==", "dev": true, "requires": { "@zeit/schemas": "2.6.0", @@ -15959,7 +16641,7 @@ "chalk": "2.4.1", "clipboardy": "1.2.3", "compression": "1.7.3", - "serve-handler": "6.1.2", + "serve-handler": "6.1.3", "update-check": "1.5.2" }, "dependencies": { @@ -15975,6 +16657,42 @@ "uri-js": "^4.2.2" } }, + "ansi-align": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-2.0.0.tgz", + "integrity": "sha1-w2rsy6VjuJzrVW82kPCx2eNUf38=", + "dev": true, + "requires": { + "string-width": "^2.0.0" + } + }, + "boxen": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/boxen/-/boxen-1.3.0.tgz", + "integrity": "sha512-TNPjfTr432qx7yOjQyaXm3dSR0MH9vXp7eT1BFSl/C51g+EFnOR9hTg1IreahGBmDNCehscshe45f+C1TBZbLw==", + "dev": true, + "requires": { + "ansi-align": "^2.0.0", + "camelcase": "^4.0.0", + "chalk": "^2.0.1", + "cli-boxes": "^1.0.0", + "string-width": "^2.0.0", + "term-size": "^1.2.0", + "widest-line": "^2.0.0" + } + }, + "camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", + "dev": true + }, + "cli-boxes": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-1.0.0.tgz", + "integrity": "sha1-T6kXw+WclKAEzWH47lCdplFocUM=", + "dev": true + }, "compression": { "version": "1.7.3", "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.3.tgz", @@ -15998,13 +16716,46 @@ "requires": { "ms": "2.0.0" } + }, + "execa": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", + "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", + "dev": true, + "requires": { + "cross-spawn": "^5.0.1", + "get-stream": "^3.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + } + }, + "term-size": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/term-size/-/term-size-1.2.0.tgz", + "integrity": "sha1-RYuDiH8oj8Vtb/+/rSYuJmOO+mk=", + "dev": true, + "requires": { + "execa": "^0.7.0" + } + }, + "widest-line": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-2.0.1.tgz", + "integrity": "sha512-Ba5m9/Fa4Xt9eb2ELXt77JxVDV8w7qQrH0zS/TWSJdLyAwQjWoOzpzj5lwVftDz6n/EOu3tNACS84v509qwnJA==", + "dev": true, + "requires": { + "string-width": "^2.1.1" + } } } }, "serve-handler": { - "version": "6.1.2", - "resolved": "https://registry.npmjs.org/serve-handler/-/serve-handler-6.1.2.tgz", - "integrity": "sha512-RFh49wX7zJmmOVDcIjiDSJnMH+ItQEvyuYLYuDBVoA/xmQSCuj+uRmk1cmBB5QQlI3qOiWKp6p4DUGY+Z5AB2A==", + "version": "6.1.3", + "resolved": "https://registry.npmjs.org/serve-handler/-/serve-handler-6.1.3.tgz", + "integrity": "sha512-FosMqFBNrLyeiIDvP1zgO6YoTzFYHxLDEIavhlmQ+knB2Z7l1t+kGLHkZIDN7UVWqQAmKI3D20A6F6jo3nDd4w==", "dev": true, "requires": { "bytes": "3.0.0", @@ -16022,6 +16773,12 @@ "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-2.2.1.tgz", "integrity": "sha512-gu9bD6Ta5bwGrrU8muHzVOBFFREpp2iRkVfhBJahwJ6p6Xw20SjT0MxLnwkjOibQmGSYhiUnf2FLe7k+jcFmGQ==", "dev": true + }, + "range-parser": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz", + "integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4=", + "dev": true } } }, @@ -16048,19 +16805,37 @@ "requires": { "ms": "2.0.0" } + }, + "http-errors": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", + "dev": true, + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + } + }, + "setprototypeof": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", + "dev": true } } }, "serve-static": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.13.2.tgz", - "integrity": "sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw==", + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz", + "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==", "dev": true, "requires": { "encodeurl": "~1.0.2", "escape-html": "~1.0.3", - "parseurl": "~1.3.2", - "send": "0.16.2" + "parseurl": "~1.3.3", + "send": "0.17.1" } }, "server-destroy": { @@ -16112,9 +16887,9 @@ "dev": true }, "setprototypeof": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", - "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", + "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==", "dev": true }, "sha.js": { @@ -16440,13 +17215,22 @@ } }, "sockjs": { - "version": "0.3.19", - "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.19.tgz", - "integrity": "sha512-V48klKZl8T6MzatbLlzzRNhMepEys9Y4oGFpypBFFn1gLI/QQ9HtLLyWJNbPlwGLelOVOEijUbTTJeLLI59jLw==", + "version": "0.3.20", + "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.20.tgz", + "integrity": "sha512-SpmVOVpdq0DJc0qArhF3E5xsxvaiqGNb73XfgBpK1y3UD5gs8DSo8aCTsuT5pX8rssdc2NDIzANwP9eCAiSdTA==", "dev": true, "requires": { "faye-websocket": "^0.10.0", - "uuid": "^3.0.1" + "uuid": "^3.4.0", + "websocket-driver": "0.6.5" + }, + "dependencies": { + "uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "dev": true + } } }, "sockjs-client": { @@ -16591,9 +17375,9 @@ "dev": true }, "spdy": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.1.tgz", - "integrity": "sha512-HeZS3PBdMA+sZSu0qwpCxl3DeALD5ASx8pAX0jZdKXSpPWbQ6SYGnlg3BBmYLx5LtiZrmkAZfErCm2oECBcioA==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz", + "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==", "dev": true, "requires": { "debug": "^4.1.0", @@ -16650,9 +17434,9 @@ "dev": true }, "readable-stream": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.4.0.tgz", - "integrity": "sha512-jItXPLmrSR8jmTRmRWJXCnGJsfy85mB3Wd/uINMXA65yrnFo0cPClFIUWzo2najVNSl+mx7/4W8ttlLWJe99pQ==", + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", "dev": true, "requires": { "inherits": "^2.0.3", @@ -16813,9 +17597,9 @@ } }, "statuses": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz", - "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", "dev": true }, "steno": { @@ -16998,6 +17782,101 @@ } } }, + "string.prototype.trimend": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.1.tgz", + "integrity": "sha512-LRPxFUaTtpqYsTeNKaFOw3R4bxIzWOnbQ837QfBylo8jIxtcbK/A/sMV7Q+OAV/vWo+7s25pOE10KYSjaSO06g==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5" + }, + "dependencies": { + "define-properties": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "dev": true, + "requires": { + "object-keys": "^1.0.12" + } + }, + "es-abstract": { + "version": "1.17.6", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.6.tgz", + "integrity": "sha512-Fr89bON3WFyUi5EvAeI48QTWX0AyekGgLA8H+c+7fbfCkJwRWRMLd8CQedNEyJuoYYhmtEqY92pgte1FAhBlhw==", + "dev": true, + "requires": { + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.2.0", + "is-regex": "^1.1.0", + "object-inspect": "^1.7.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.0", + "string.prototype.trimend": "^1.0.1", + "string.prototype.trimstart": "^1.0.1" + }, + "dependencies": { + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true + } + } + }, + "es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, + "requires": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + } + }, + "has-symbols": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", + "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", + "dev": true + }, + "is-callable": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.0.tgz", + "integrity": "sha512-pyVD9AaGLxtg6srb2Ng6ynWJqkHU9bEM087AKck0w8QwDarTfNcpIYoU8x8Hv2Icm8u6kFJM18Dag8lyqGkviw==", + "dev": true + }, + "is-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.0.tgz", + "integrity": "sha512-iI97M8KTWID2la5uYXlkbSDQIg4F6o1sYboZKKTDpnDQMLtUL86zxhgDet3Q2SriaYsyGqZ6Mn2SjbRKeLHdqw==", + "dev": true, + "requires": { + "has-symbols": "^1.0.1" + } + }, + "is-symbol": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", + "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==", + "dev": true, + "requires": { + "has-symbols": "^1.0.1" + } + }, + "object-inspect": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.7.0.tgz", + "integrity": "sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw==", + "dev": true + } + } + }, "string.prototype.trimleft": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.0.tgz", @@ -17040,6 +17919,101 @@ } } }, + "string.prototype.trimstart": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.1.tgz", + "integrity": "sha512-XxZn+QpvrBI1FOcg6dIpxUPgWCPuNXvMD72aaRaUQv1eD4e/Qy8i/hFTe0BUmD60p/QA6bh1avmuPTfNjqVWRw==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5" + }, + "dependencies": { + "define-properties": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "dev": true, + "requires": { + "object-keys": "^1.0.12" + } + }, + "es-abstract": { + "version": "1.17.6", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.6.tgz", + "integrity": "sha512-Fr89bON3WFyUi5EvAeI48QTWX0AyekGgLA8H+c+7fbfCkJwRWRMLd8CQedNEyJuoYYhmtEqY92pgte1FAhBlhw==", + "dev": true, + "requires": { + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.2.0", + "is-regex": "^1.1.0", + "object-inspect": "^1.7.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.0", + "string.prototype.trimend": "^1.0.1", + "string.prototype.trimstart": "^1.0.1" + }, + "dependencies": { + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true + } + } + }, + "es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, + "requires": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + } + }, + "has-symbols": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", + "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", + "dev": true + }, + "is-callable": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.0.tgz", + "integrity": "sha512-pyVD9AaGLxtg6srb2Ng6ynWJqkHU9bEM087AKck0w8QwDarTfNcpIYoU8x8Hv2Icm8u6kFJM18Dag8lyqGkviw==", + "dev": true + }, + "is-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.0.tgz", + "integrity": "sha512-iI97M8KTWID2la5uYXlkbSDQIg4F6o1sYboZKKTDpnDQMLtUL86zxhgDet3Q2SriaYsyGqZ6Mn2SjbRKeLHdqw==", + "dev": true, + "requires": { + "has-symbols": "^1.0.1" + } + }, + "is-symbol": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", + "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==", + "dev": true, + "requires": { + "has-symbols": "^1.0.1" + } + }, + "object-inspect": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.7.0.tgz", + "integrity": "sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw==", + "dev": true + } + } + }, "string_decoder": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", @@ -17923,30 +18897,10 @@ } }, "term-size": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/term-size/-/term-size-1.2.0.tgz", - "integrity": "sha1-RYuDiH8oj8Vtb/+/rSYuJmOO+mk=", - "dev": true, - "requires": { - "execa": "^0.7.0" - }, - "dependencies": { - "execa": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", - "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", - "dev": true, - "requires": { - "cross-spawn": "^5.0.1", - "get-stream": "^3.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" - } - } - } + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/term-size/-/term-size-2.2.0.tgz", + "integrity": "sha512-a6sumDlzyHVJWb8+YofY4TW112G6p2FCPEAFk+59gIYHv3XHRhm9ltVQ9kli4hNWeQBwSpe8cRN25x0ROunMOw==", + "dev": true }, "terser": { "version": "4.3.9", @@ -17984,16 +18938,16 @@ } }, "terser-webpack-plugin": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.4.1.tgz", - "integrity": "sha512-ZXmmfiwtCLfz8WKZyYUuuHf3dMYEjg8NrjHMb0JqHVHVOSkzp3cW2/XG1fP3tRhqEqSzMwzzRQGtAPbs4Cncxg==", + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.4.4.tgz", + "integrity": "sha512-U4mACBHIegmfoEe5fdongHESNJWqsGU+W0S/9+BmYGVQDw1+c2Ow05TpMhxjPK1sRb7cuYq1BPl1e5YHJMTCqA==", "dev": true, "requires": { "cacache": "^12.0.2", "find-cache-dir": "^2.1.0", "is-wsl": "^1.1.0", "schema-utils": "^1.0.0", - "serialize-javascript": "^1.7.0", + "serialize-javascript": "^3.1.0", "source-map": "^0.6.1", "terser": "^4.1.2", "webpack-sources": "^1.4.0", @@ -18001,15 +18955,15 @@ }, "dependencies": { "bluebird": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.1.tgz", - "integrity": "sha512-DdmyoGCleJnkbp3nkbxTLJ18rjDsE4yCggEwKNXkeV123sPNfOCYeDoeuOY+F2FrSjO1YXcTU+dsy96KMy+gcg==", + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", "dev": true }, "cacache": { - "version": "12.0.3", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.3.tgz", - "integrity": "sha512-kqdmfXEGFepesTuROHMs3MpFLWrPkSSpRqOw80RCflZXy/khxaArvFrQ7uJxSUduzAufc6G0g1VUCOZXxWavPw==", + "version": "12.0.4", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.4.tgz", + "integrity": "sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ==", "dev": true, "requires": { "bluebird": "^3.5.5", @@ -18064,9 +19018,9 @@ } }, "graceful-fs": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz", - "integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==", + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", + "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==", "dev": true }, "locate-path": { @@ -18117,9 +19071,9 @@ } }, "p-limit": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.1.tgz", - "integrity": "sha512-85Tk+90UCVWvbDavCLKPOLC9vvY8OwEX/RtKF+/1OADJMVlFfEHOiMTPVyxg7mk/dKa+ipdHm0OUkTvCpMTuwg==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "dev": true, "requires": { "p-try": "^2.0.0" @@ -18181,6 +19135,15 @@ "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", "dev": true }, + "serialize-javascript": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-3.1.0.tgz", + "integrity": "sha512-JIJT1DGiWmIKhzRsG91aS6Ze4sFUrYbltlkg2onR5OrnNM02Kl/hnY/T4FN2omvyeBbQmMJv+K4cPOpGzOTFBg==", + "dev": true, + "requires": { + "randombytes": "^2.1.0" + } + }, "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", @@ -18206,12 +19169,6 @@ "source-map": "~0.6.1" } }, - "y18n": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", - "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==", - "dev": true - }, "yallist": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", @@ -18411,9 +19368,9 @@ "dev": true }, "minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", "dev": true }, "pify": { @@ -18947,7 +19904,8 @@ "version": "4.0.1", "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-4.0.1.tgz", "integrity": "sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8=", - "dev": true + "dev": true, + "optional": true }, "timers-browserify": { "version": "2.0.11", @@ -19098,6 +20056,12 @@ } } }, + "to-readable-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz", + "integrity": "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==", + "dev": true + }, "to-regex": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", @@ -19150,9 +20114,9 @@ } }, "tree-kill": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.1.tgz", - "integrity": "sha512-4hjqbObwlh2dLyW4tcz0Ymw0ggoaVDMveUB9w8kFSQScdRLo0gxO9J7WFcUBo+W3C1TLdFIEwNOWebgZZ0RH9Q==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", + "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", "dev": true }, "trim": { @@ -19270,13 +20234,30 @@ "dev": true }, "type-is": { - "version": "1.6.16", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.16.tgz", - "integrity": "sha512-HRkVv/5qY2G6I8iab9cI7v1bOIdhm94dVjQCPFElW9W+3GeDOSHmy2EBYe4VTApuzolPcmgFTN3ftVJRKR2J9Q==", + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", "dev": true, "requires": { "media-typer": "0.3.0", - "mime-types": "~2.1.18" + "mime-types": "~2.1.24" + }, + "dependencies": { + "mime-db": { + "version": "1.44.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.44.0.tgz", + "integrity": "sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg==", + "dev": true + }, + "mime-types": { + "version": "2.1.27", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.27.tgz", + "integrity": "sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w==", + "dev": true, + "requires": { + "mime-db": "1.44.0" + } + } } }, "typedarray": { @@ -19285,6 +20266,15 @@ "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", "dev": true }, + "typedarray-to-buffer": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", + "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", + "dev": true, + "requires": { + "is-typedarray": "^1.0.0" + } + }, "typescript": { "version": "3.9.5", "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.9.5.tgz", @@ -19435,12 +20425,12 @@ } }, "unique-string": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-1.0.0.tgz", - "integrity": "sha1-nhBXzKhRq7kzmPizOuGHuZyuwRo=", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz", + "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==", "dev": true, "requires": { - "crypto-random-string": "^1.0.0" + "crypto-random-string": "^2.0.0" } }, "unist-util-find-all-after": { @@ -19553,12 +20543,6 @@ } } }, - "unzip-response": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/unzip-response/-/unzip-response-2.0.1.tgz", - "integrity": "sha1-0vD3N9FrBhXnKmk17QQhRXLVb5c=", - "dev": true - }, "upath": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/upath/-/upath-1.1.2.tgz", @@ -19573,24 +20557,115 @@ "requires": { "registry-auth-token": "3.3.2", "registry-url": "3.1.0" + }, + "dependencies": { + "registry-auth-token": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-3.3.2.tgz", + "integrity": "sha512-JL39c60XlzCVgNrO+qq68FoNb56w/m7JYvGR2jT5iR1xBrUA3Mfx5Twk5rqTThPmQKMWydGmq8oFtDlxfrmxnQ==", + "dev": true, + "requires": { + "rc": "^1.1.6", + "safe-buffer": "^5.0.1" + } + }, + "registry-url": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-3.1.0.tgz", + "integrity": "sha1-PU74cPc93h138M+aOBQyRE4XSUI=", + "dev": true, + "requires": { + "rc": "^1.0.1" + } + } } }, "update-notifier": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-2.5.0.tgz", - "integrity": "sha512-gwMdhgJHGuj/+wHJJs9e6PcCszpxR1b236igrOkUofGhqJuG+amlIKwApH1IW1WWl7ovZxsX49lMBWLxSdm5Dw==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-4.1.0.tgz", + "integrity": "sha512-w3doE1qtI0/ZmgeoDoARmI5fjDoT93IfKgEGqm26dGUOh8oNpaSTsGNdYRN/SjOuo10jcJGwkEL3mroKzktkew==", "dev": true, "requires": { - "boxen": "^1.2.1", - "chalk": "^2.0.1", - "configstore": "^3.0.0", + "boxen": "^4.2.0", + "chalk": "^3.0.0", + "configstore": "^5.0.1", + "has-yarn": "^2.1.0", "import-lazy": "^2.1.0", - "is-ci": "^1.0.10", - "is-installed-globally": "^0.1.0", - "is-npm": "^1.0.0", - "latest-version": "^3.0.0", - "semver-diff": "^2.0.0", - "xdg-basedir": "^3.0.0" + "is-ci": "^2.0.0", + "is-installed-globally": "^0.3.1", + "is-npm": "^4.0.0", + "is-yarn-global": "^0.3.0", + "latest-version": "^5.0.0", + "pupa": "^2.0.1", + "semver-diff": "^3.1.1", + "xdg-basedir": "^4.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "dev": true, + "requires": { + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", + "dev": true + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "is-ci": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", + "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", + "dev": true, + "requires": { + "ci-info": "^2.0.0" + } + }, + "supports-color": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", + "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } } }, "upper-case": { @@ -19655,6 +20730,7 @@ "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-1.0.0.tgz", "integrity": "sha1-evjzA2Rem9eaJy56FKxovAYJ2nM=", "dev": true, + "optional": true, "requires": { "prepend-http": "^1.0.1" } @@ -19893,14 +20969,169 @@ } }, "watchpack": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.6.0.tgz", - "integrity": "sha512-i6dHe3EyLjMmDlU1/bGQpEw25XSjkJULPuAVKCbNRefQVq48yXKUpwg538F7AZTf9kyr57zj++pQFltUa5H7yA==", + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.7.2.tgz", + "integrity": "sha512-ymVbbQP40MFTp+cNMvpyBpBtygHnPzPkHqoIwRRj/0B8KhqQwV8LaKjtbaxF2lK4vl8zN9wCxS46IFCU5K4W0g==", "dev": true, "requires": { - "chokidar": "^2.0.2", + "chokidar": "^3.4.0", "graceful-fs": "^4.1.2", - "neo-async": "^2.5.0" + "neo-async": "^2.5.0", + "watchpack-chokidar2": "^2.0.0" + }, + "dependencies": { + "anymatch": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", + "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==", + "dev": true, + "optional": true, + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "binary-extensions": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.0.0.tgz", + "integrity": "sha512-Phlt0plgpIIBOGTT/ehfFnbNlfsDEiqmzE2KRXoX1bLIlir4X/MR+zSyBEkL05ffWgnRSf/DXv+WrUAVr93/ow==", + "dev": true, + "optional": true + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "optional": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "chokidar": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.4.0.tgz", + "integrity": "sha512-aXAaho2VJtisB/1fg1+3nlLJqGOuewTzQpd/Tz0yTg2R0e4IGtshYvtjowyEumcBv2z+y4+kc75Mz7j5xJskcQ==", + "dev": true, + "optional": true, + "requires": { + "anymatch": "~3.1.1", + "braces": "~3.0.2", + "fsevents": "~2.1.2", + "glob-parent": "~5.1.0", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.4.0" + } + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "optional": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "fsevents": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz", + "integrity": "sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==", + "dev": true, + "optional": true + }, + "glob-parent": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz", + "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==", + "dev": true, + "optional": true, + "requires": { + "is-glob": "^4.0.1" + } + }, + "is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "optional": true, + "requires": { + "binary-extensions": "^2.0.0" + } + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true, + "optional": true + }, + "is-glob": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", + "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "dev": true, + "optional": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "optional": true + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "optional": true + }, + "readdirp": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.4.0.tgz", + "integrity": "sha512-0xe001vZBnJEK+uKcj8qOhyAKPzIT+gStxWr3LCB0DwcXR5NZJ3IaC+yGnHCYzB/S7ov3m3EEbZI2zeNvX+hGQ==", + "dev": true, + "optional": true, + "requires": { + "picomatch": "^2.2.1" + }, + "dependencies": { + "picomatch": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", + "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", + "dev": true, + "optional": true + } + } + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "optional": true, + "requires": { + "is-number": "^7.0.0" + } + } + } + }, + "watchpack-chokidar2": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/watchpack-chokidar2/-/watchpack-chokidar2-2.0.0.tgz", + "integrity": "sha512-9TyfOyN/zLUbA288wZ8IsMZ+6cbzvsNyEzSBp6e/zkifi6xxbl8SmQ/CxQq32k8NNqrdVEVUVSEf56L4rQ/ZxA==", + "dev": true, + "optional": true, + "requires": { + "chokidar": "^2.1.8" }, "dependencies": { "anymatch": { @@ -19908,6 +21139,7 @@ "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", "dev": true, + "optional": true, "requires": { "micromatch": "^3.1.4", "normalize-path": "^2.1.1" @@ -19918,6 +21150,7 @@ "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", "dev": true, + "optional": true, "requires": { "remove-trailing-separator": "^1.0.1" } @@ -19929,6 +21162,7 @@ "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", "dev": true, + "optional": true, "requires": { "anymatch": "^2.0.0", "async-each": "^1.0.1", @@ -19949,6 +21183,7 @@ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", "dev": true, + "optional": true, "requires": { "is-glob": "^3.1.0", "path-dirname": "^1.0.0" @@ -19959,6 +21194,7 @@ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", "dev": true, + "optional": true, "requires": { "is-extglob": "^2.1.0" } @@ -19969,13 +21205,15 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", - "dev": true + "dev": true, + "optional": true }, "is-glob": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", "dev": true, + "optional": true, "requires": { "is-extglob": "^2.1.1" } @@ -19984,13 +21222,15 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true + "dev": true, + "optional": true }, "readdirp": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", "dev": true, + "optional": true, "requires": { "graceful-fs": "^4.1.11", "micromatch": "^3.1.10", @@ -20485,9 +21725,9 @@ } }, "yargs-parser": { - "version": "13.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.1.tgz", - "integrity": "sha512-oVAVsHz6uFrg3XQheFII8ESO2ssAf9luWuAd6Wexsu4F3OtIW0o8IribPXYrD4WC24LWtPrJlGy87y5udK+dxQ==", + "version": "13.1.2", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", + "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", "dev": true, "requires": { "camelcase": "^5.0.0", @@ -20540,9 +21780,9 @@ } }, "webpack-dev-server": { - "version": "3.9.0", - "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-3.9.0.tgz", - "integrity": "sha512-E6uQ4kRrTX9URN9s/lIbqTAztwEPdvzVrcmHE8EQ9YnuT9J8Es5Wrd8n9BKg1a0oZ5EgEke/EQFgUsp18dSTBw==", + "version": "3.11.0", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-3.11.0.tgz", + "integrity": "sha512-PUxZ+oSTxogFQgkTtFndEtJIPNmml7ExwufBZ9L2/Xyyd5PnOL5UreWe5ZT7IU25DSdykL9p1MLQzmLh2ljSeg==", "dev": true, "requires": { "ansi-html": "0.0.7", @@ -20553,31 +21793,31 @@ "debug": "^4.1.1", "del": "^4.1.1", "express": "^4.17.1", - "html-entities": "^1.2.1", + "html-entities": "^1.3.1", "http-proxy-middleware": "0.19.1", "import-local": "^2.0.0", "internal-ip": "^4.3.0", "ip": "^1.1.5", "is-absolute-url": "^3.0.3", "killable": "^1.0.1", - "loglevel": "^1.6.4", + "loglevel": "^1.6.8", "opn": "^5.5.0", "p-retry": "^3.0.1", - "portfinder": "^1.0.25", + "portfinder": "^1.0.26", "schema-utils": "^1.0.0", "selfsigned": "^1.10.7", "semver": "^6.3.0", "serve-index": "^1.9.1", - "sockjs": "0.3.19", + "sockjs": "0.3.20", "sockjs-client": "1.4.0", - "spdy": "^4.0.1", + "spdy": "^4.0.2", "strip-ansi": "^3.0.1", "supports-color": "^6.1.0", "url": "^0.11.0", "webpack-dev-middleware": "^3.7.2", "webpack-log": "^2.0.0", "ws": "^6.2.1", - "yargs": "12.0.5" + "yargs": "^13.3.2" }, "dependencies": { "accepts": { @@ -20590,6 +21830,12 @@ "negotiator": "0.6.2" } }, + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true + }, "anymatch": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", @@ -20611,6 +21857,12 @@ } } }, + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true + }, "chokidar": { "version": "2.1.8", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", @@ -20631,6 +21883,28 @@ "upath": "^1.1.1" } }, + "cliui": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", + "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", + "dev": true, + "requires": { + "string-width": "^3.1.0", + "strip-ansi": "^5.2.0", + "wrap-ansi": "^5.1.0" + }, + "dependencies": { + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + } + } + }, "content-disposition": { "version": "0.5.3", "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", @@ -20640,12 +21914,6 @@ "safe-buffer": "5.1.2" } }, - "cookie": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz", - "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==", - "dev": true - }, "debug": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", @@ -20725,36 +21993,13 @@ } } }, - "finalhandler": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", - "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", "dev": true, "requires": { - "debug": "2.6.9", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "on-finished": "~2.3.0", - "parseurl": "~1.3.3", - "statuses": "~1.5.0", - "unpipe": "~1.0.0" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - } + "locate-path": "^3.0.0" } }, "glob": { @@ -20792,33 +22037,6 @@ } } }, - "http-errors": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.3.tgz", - "integrity": "sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw==", - "dev": true, - "requires": { - "depd": "~1.1.2", - "inherits": "2.0.4", - "setprototypeof": "1.1.1", - "statuses": ">= 1.5.0 < 2", - "toidentifier": "1.0.0" - }, - "dependencies": { - "inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true - } - } - }, - "ipaddr.js": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.0.tgz", - "integrity": "sha512-M4Sjn6N/+O6/IXSJseKqHoFc+5FdGJ22sXqnjTpdZweHK64MzEPAyQZyEU3R/KRv2GLoa7nNtg/C2Ev6m7z+eA==", - "dev": true - }, "is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", @@ -20858,25 +22076,29 @@ "path-is-inside": "^1.0.2" } }, - "mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", - "dev": true + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } }, "mime-db": { - "version": "1.40.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.40.0.tgz", - "integrity": "sha512-jYdeOMPy9vnxEqFRRo6ZvTZ8d9oPb+k18PKoYNYUe2stVEBPPwsln/qWzdbmaIvnhZ9v2P+CuecK+fpUfsV2mA==", + "version": "1.44.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.44.0.tgz", + "integrity": "sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg==", "dev": true }, "mime-types": { - "version": "2.1.24", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.24.tgz", - "integrity": "sha512-WaFHS3MCl5fapm3oLxU4eYDw77IQM2ACcxQ9RIxfaC3ooc6PFuBMGZZsYpvoXS5D5QTWPieo1jjLdAm3TBP3cQ==", + "version": "2.1.27", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.27.tgz", + "integrity": "sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w==", "dev": true, "requires": { - "mime-db": "1.40.0" + "mime-db": "1.44.0" } }, "ms": { @@ -20897,16 +22119,34 @@ "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", "dev": true }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, "p-map": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz", "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==", "dev": true }, - "parseurl": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", "dev": true }, "pify": { @@ -20915,28 +22155,12 @@ "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", "dev": true }, - "proxy-addr": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.5.tgz", - "integrity": "sha512-t/7RxHXPH6cJtP0pRG6smSr9QJidhB+3kXu0KgXnbGYMgzEnUxRQ4/LDdfOwZEMyIh3/xHb8PX3t+lfL9z+YVQ==", - "dev": true, - "requires": { - "forwarded": "~0.1.2", - "ipaddr.js": "1.9.0" - } - }, "qs": { "version": "6.7.0", "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==", "dev": true }, - "range-parser": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", - "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", - "dev": true - }, "readdirp": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", @@ -20974,76 +22198,28 @@ "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", "dev": true }, - "send": { - "version": "0.17.1", - "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", - "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==", + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", "dev": true, "requires": { - "debug": "2.6.9", - "depd": "~1.1.2", - "destroy": "~1.0.4", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "~1.7.2", - "mime": "1.6.0", - "ms": "2.1.1", - "on-finished": "~2.3.0", - "range-parser": "~1.2.1", - "statuses": "~1.5.0" + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" }, "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", "dev": true, "requires": { - "ms": "2.0.0" - }, - "dependencies": { - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - } + "ansi-regex": "^4.1.0" } - }, - "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", - "dev": true } } }, - "serve-static": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz", - "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==", - "dev": true, - "requires": { - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "parseurl": "~1.3.3", - "send": "0.17.1" - } - }, - "setprototypeof": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", - "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==", - "dev": true - }, - "statuses": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", - "dev": true - }, "supports-color": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", @@ -21053,20 +22229,10 @@ "has-flag": "^3.0.0" } }, - "type-is": { - "version": "1.6.18", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", - "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", - "dev": true, - "requires": { - "media-typer": "0.3.0", - "mime-types": "~2.1.24" - } - }, "uuid": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.3.tgz", - "integrity": "sha512-pW0No1RGHgzlpHJO1nsVrHKpOEIxkGg1xB+v0ZmdNH5OAeAwzAVrCnI2/6Mtx+Uys6iaylxa+D3g4j63IKKjSQ==", + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", "dev": true }, "webpack-log": { @@ -21079,6 +22245,28 @@ "uuid": "^3.3.2" } }, + "wrap-ansi": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", + "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.0", + "string-width": "^3.0.0", + "strip-ansi": "^5.0.0" + }, + "dependencies": { + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + } + } + }, "ws": { "version": "6.2.1", "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.1.tgz", @@ -21087,6 +22275,34 @@ "requires": { "async-limiter": "~1.0.0" } + }, + "yargs": { + "version": "13.3.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", + "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", + "dev": true, + "requires": { + "cliui": "^5.0.0", + "find-up": "^3.0.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^3.0.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^13.1.2" + } + }, + "yargs-parser": { + "version": "13.1.2", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", + "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", + "dev": true, + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } } } }, @@ -21136,20 +22352,18 @@ } }, "websocket-driver": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.3.tgz", - "integrity": "sha512-bpxWlvbbB459Mlipc5GBzzZwhoZgGEZLuqPaR0INBGnPAY1vdBX6hPnoFXiw+3yWxDuHyQjO2oXTMyS8A5haFg==", + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.6.5.tgz", + "integrity": "sha1-XLJVbOuF9Dc8bYI4qmkchFThOjY=", "dev": true, "requires": { - "http-parser-js": ">=0.4.0 <0.4.11", - "safe-buffer": ">=5.1.0", "websocket-extensions": ">=0.1.1" } }, "websocket-extensions": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.3.tgz", - "integrity": "sha512-nqHUnMXmBzT0w570r2JpJxfiSD1IzoI+HGVdd3aZ0yNi3ngvQ4jv1dtHt5VGxfI2yj5yqImPhOK4vmIh2xMbGg==", + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", + "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", "dev": true }, "which": { @@ -21217,12 +22431,52 @@ } }, "widest-line": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-2.0.0.tgz", - "integrity": "sha1-AUKk6KJD+IgsAjOqDgKBqnYVInM=", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz", + "integrity": "sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==", "dev": true, "requires": { - "string-width": "^2.1.1" + "string-width": "^4.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + }, + "string-width": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", + "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + } + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.0" + } + } } }, "word-wrap": { @@ -21231,12 +22485,6 @@ "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", "dev": true }, - "wordwrap": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", - "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=", - "dev": true - }, "worker-farm": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.7.0.tgz", @@ -21294,14 +22542,15 @@ } }, "write-file-atomic": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.2.tgz", - "integrity": "sha512-s0b6vB3xIVRLWywa6X9TOMA7k9zio0TMOsl9ZnDkliA/cfJlpHXAscj0gbHVJiTdIuAYpIyqS5GW91fqm6gG5g==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", + "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", "dev": true, "requires": { - "graceful-fs": "^4.1.11", "imurmurhash": "^0.1.4", - "signal-exit": "^3.0.2" + "is-typedarray": "^1.0.0", + "signal-exit": "^3.0.2", + "typedarray-to-buffer": "^3.1.5" } }, "ws": { @@ -21328,9 +22577,9 @@ "dev": true }, "xdg-basedir": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-3.0.0.tgz", - "integrity": "sha1-SWsswQnsqNus/i3HK2A8F8WHCtQ=", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-4.0.0.tgz", + "integrity": "sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==", "dev": true }, "xhr": { @@ -21375,9 +22624,9 @@ "dev": true }, "y18n": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", - "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", + "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==", "dev": true }, "yallist": { @@ -21387,164 +22636,117 @@ "dev": true }, "yargs": { - "version": "12.0.5", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.5.tgz", - "integrity": "sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw==", + "version": "15.3.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.3.1.tgz", + "integrity": "sha512-92O1HWEjw27sBfgmXiixJWT5hRBp2eobqXicLtPBIDBhYB+1HpwZlXmbW2luivBJHBzki+7VyCLRtAkScbTBQA==", "dev": true, "requires": { - "cliui": "^4.0.0", + "cliui": "^6.0.0", "decamelize": "^1.2.0", - "find-up": "^3.0.0", - "get-caller-file": "^1.0.1", - "os-locale": "^3.0.0", + "find-up": "^4.1.0", + "get-caller-file": "^2.0.1", "require-directory": "^2.1.1", - "require-main-filename": "^1.0.1", + "require-main-filename": "^2.0.0", "set-blocking": "^2.0.0", - "string-width": "^2.0.0", + "string-width": "^4.2.0", "which-module": "^2.0.0", - "y18n": "^3.2.1 || ^4.0.0", - "yargs-parser": "^11.1.1" + "y18n": "^4.0.0", + "yargs-parser": "^18.1.1" }, "dependencies": { - "cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", - "dev": true, - "requires": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true }, - "execa": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", - "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", - "dev": true, - "requires": { - "cross-spawn": "^6.0.0", - "get-stream": "^4.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" - } + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true }, "find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dev": true, - "requires": { - "locate-path": "^3.0.0" - } - }, - "get-stream": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", "dev": true, "requires": { - "pump": "^3.0.0" + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" } }, - "invert-kv": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz", - "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==", + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "dev": true }, - "lcid": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz", - "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==", - "dev": true, - "requires": { - "invert-kv": "^2.0.0" - } - }, "locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", "dev": true, "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" + "p-locate": "^4.1.0" } }, - "mem": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/mem/-/mem-4.1.0.tgz", - "integrity": "sha512-I5u6Q1x7wxO0kdOpYBB28xueHADYps5uty/zg936CiG8NTe5sJL8EjrCuLneuDW3PlMdZBGDIn8BirEVdovZvg==", - "dev": true, - "requires": { - "map-age-cleaner": "^0.1.1", - "mimic-fn": "^1.0.0", - "p-is-promise": "^2.0.0" - } - }, - "os-locale": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz", - "integrity": "sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==", - "dev": true, - "requires": { - "execa": "^1.0.0", - "lcid": "^2.0.0", - "mem": "^4.0.0" - } - }, - "p-is-promise": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.0.0.tgz", - "integrity": "sha512-pzQPhYMCAgLAKPWD2jC3Se9fEfrD9npNos0y150EeqZll7akhEgGhTW/slB6lHku8AvYGiJ+YJ5hfHKePPgFWg==", - "dev": true - }, "p-limit": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.0.tgz", - "integrity": "sha512-pZbTJpoUsCzV48Mc9Nh51VbwO0X9cuPFE8gYwx9BTCt9SF8/b7Zljd2fVgOxhIF/HDTKgpVzs+GPhyKfjLLFRQ==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "dev": true, "requires": { "p-try": "^2.0.0" } }, "p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", "dev": true, "requires": { - "p-limit": "^2.0.0" + "p-limit": "^2.2.0" } }, "p-try": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.0.0.tgz", - "integrity": "sha512-hMp0onDKIajHfIkdRk3P4CdCmErkYAxxDtP3Wx/4nZ3aGlau2VKh3mZpcuFkH27WQkL/3WBCPOktzA9ZOAnMQQ==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", "dev": true }, - "pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true + }, + "string-width": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", + "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", "dev": true, "requires": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + } + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.0" } } } }, "yargs-parser": { - "version": "11.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-11.1.1.tgz", - "integrity": "sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ==", + "version": "18.1.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", "dev": true, "requires": { "camelcase": "^5.0.0", @@ -21552,9 +22754,9 @@ }, "dependencies": { "camelcase": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.2.0.tgz", - "integrity": "sha512-IXFsBS2pC+X0j0N/GE7Dm7j3bsEBp+oTpb7F50dwEVX7rf3IgwO9XatnegTsDtniKCUtEJH4fSU6Asw7uoVLfQ==", + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", "dev": true } } diff --git a/package.json b/package.json index 5983d08..e40bda0 100644 --- a/package.json +++ b/package.json @@ -81,7 +81,7 @@ "html-webpack-plugin": "3.2.0", "husky": "1.3.1", "image-webpack-loader": "6.0.0", - "json-server": "0.14.2", + "json-server": "0.16.1", "mini-css-extract-plugin": "0.4.5", "module-to-cdn": "3.1.2", "morgan": "1.9.1", @@ -94,7 +94,7 @@ "react-hot-loader": "4.8.8", "sass": "^1.26.8", "sass-loader": "7.1.0", - "serve": "11.2.0", + "serve": "11.3.2", "style-loader": "0.21.0", "stylelint": "11.1.1", "stylelint-config-recommended-scss": "4.0.0", @@ -109,7 +109,7 @@ "webpack-cdn-plugin": "3.2.0", "webpack-cli": "3.3.10", "webpack-dev-middleware": "3.7.2", - "webpack-dev-server": "3.9.0", + "webpack-dev-server": "3.11.0", "webpack-merge": "4.2.2", "webpack-node-externals": "1.7.2" }, diff --git a/src/pages/FeedCreatePage/FeedCreatePage.tsx b/src/pages/FeedCreatePage/FeedCreatePage.tsx index 6d6bcb4..f269601 100644 --- a/src/pages/FeedCreatePage/FeedCreatePage.tsx +++ b/src/pages/FeedCreatePage/FeedCreatePage.tsx @@ -216,11 +216,11 @@ class FeedCreatePage extends React.Component

{title}

{statusMessage &&
{statusMessage}
} - {

Title: {signUpForm.title}

Check out the signup form here: {formData.title}

} - Date: Mon, 22 Jun 2020 23:01:56 +0300 Subject: [PATCH 09/56] Remove list_name from API calls, use
    for listing signupees --- .../SignupQuestionsWidget/OptionsWidget.tsx | 2 +- src/components/SignupQuestionsWidget/index.ts | 1 + src/models/Signup.ts | 1 - src/pages/SignUpPage/SignUpPage.tsx | 17 ++++++++++++----- 4 files changed, 14 insertions(+), 7 deletions(-) diff --git a/src/components/SignupQuestionsWidget/OptionsWidget.tsx b/src/components/SignupQuestionsWidget/OptionsWidget.tsx index e90e17a..ef12d2e 100644 --- a/src/components/SignupQuestionsWidget/OptionsWidget.tsx +++ b/src/components/SignupQuestionsWidget/OptionsWidget.tsx @@ -32,7 +32,7 @@ class OptionsWidget extends React.Component { diff --git a/src/pages/SignUpPage/SignUpPage.tsx b/src/pages/SignUpPage/SignUpPage.tsx index 5c82604..e8668a8 100644 --- a/src/pages/SignUpPage/SignUpPage.tsx +++ b/src/pages/SignUpPage/SignUpPage.tsx @@ -75,6 +75,14 @@ class SignUpPage extends React.Component { uniqueItems: true, }; } + else if (question.type === "email") { + obj = { + type: "string", + title: question.name, + format: "email", + default: "" + } + } else { throw new Error(`No mapping to schema prop for question type ${question.type}`); } @@ -151,7 +159,6 @@ class SignUpPage extends React.Component { id: undefined, signupForm_id: signUpForm.id, answer: data.formData, - list_name: data.formData[signUpForm.questions[0].id] }; if (payload.id === undefined) { const resp = await createSignup(payload); @@ -204,11 +211,11 @@ class SignUpPage extends React.Component { renderList() { const { signUpForm } = this.state; return ( -
    - {signUpForm.signups.map(s => ( -

    {s}

    +
      + {signUpForm.signups.map((s, idx) => ( +
    1. {s}
    2. ))} -
    +
) } From 2b9355c64502e0122df976d7667bf53340af9d77 Mon Sep 17 00:00:00 2001 From: Aarni Halinen Date: Fri, 3 Jul 2020 15:12:34 +0300 Subject: [PATCH 10/56] Sticky header with scroll hiding --- package-lock.json | 243 +++++++++++++++++++++++++----- package.json | 7 +- src/components/Header/Header.scss | 11 +- src/components/Header/Header.tsx | 152 ++++++++++--------- src/index.scss | 2 - tsconfig.json | 2 +- 6 files changed, 299 insertions(+), 118 deletions(-) diff --git a/package-lock.json b/package-lock.json index 20e9d1a..aa4de8a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,7 +8,6 @@ "version": "7.0.0", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0.tgz", "integrity": "sha512-OfC2uemaknXr87bdLUkWog7nYuliM9Ij5HUcajsVcMCpQrcLmtxRbVFTIqmcSkSeYRBFBRxs2FiUqFJDLdiebA==", - "dev": true, "requires": { "@babel/highlight": "^7.0.0" } @@ -89,7 +88,6 @@ "version": "7.7.2", "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.7.2.tgz", "integrity": "sha512-WthSArvAjYLz4TcbKOi88me+KmDJdKSlfwwN8CnUYn9jBkzhq0ZEPuBfkAWIvjJ3AdEV1Cf/+eSQTnp3IDJKlQ==", - "dev": true, "requires": { "@babel/types": "^7.7.2", "jsesc": "^2.5.1", @@ -100,8 +98,32 @@ "jsesc": { "version": "2.5.2", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "dev": true + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==" + } + } + }, + "@babel/helper-annotate-as-pure": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.10.4.tgz", + "integrity": "sha512-XQlqKQP4vXFB7BN8fEEerrmYvHp3fK/rBkRFz9jaJbzK0B1DSfej9Kc7ZzE8Z/OnId1jpJdNAZ3BFQjWG68rcA==", + "requires": { + "@babel/types": "^7.10.4" + }, + "dependencies": { + "@babel/types": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.10.4.tgz", + "integrity": "sha512-UTCFOxC3FsFHb7lkRMVvgLzaRVamXuAs2Tz4wajva4WxtVY82eZeaUBtC2Zt95FU9TiznuC0Zk35tsim8jeVpg==", + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + }, + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=" } } }, @@ -109,7 +131,6 @@ "version": "7.7.0", "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.7.0.tgz", "integrity": "sha512-tDsJgMUAP00Ugv8O2aGEua5I2apkaQO7lBGUq1ocwN3G23JE5Dcq0uh3GvFTChPa4b40AWiAsLvCZOA2rdnQ7Q==", - "dev": true, "requires": { "@babel/helper-get-function-arity": "^7.7.0", "@babel/template": "^7.7.0", @@ -120,20 +141,48 @@ "version": "7.7.0", "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.7.0.tgz", "integrity": "sha512-tLdojOTz4vWcEnHWHCuPN5P85JLZWbm5Fx5ZsMEMPhF3Uoe3O7awrbM2nQ04bDOUToH/2tH/ezKEOR8zEYzqyw==", - "dev": true, "requires": { "@babel/types": "^7.7.0" } }, + "@babel/helper-module-imports": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.10.4.tgz", + "integrity": "sha512-nEQJHqYavI217oD9+s5MUBzk6x1IlvoS9WTPfgG43CbMEeStE0v+r+TucWdx8KFGowPGvyOkDT9+7DHedIDnVw==", + "requires": { + "@babel/types": "^7.10.4" + }, + "dependencies": { + "@babel/types": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.10.4.tgz", + "integrity": "sha512-UTCFOxC3FsFHb7lkRMVvgLzaRVamXuAs2Tz4wajva4WxtVY82eZeaUBtC2Zt95FU9TiznuC0Zk35tsim8jeVpg==", + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + }, + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=" + } + } + }, "@babel/helper-split-export-declaration": { "version": "7.7.0", "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.7.0.tgz", "integrity": "sha512-HgYSI8rH08neWlAH3CcdkFg9qX9YsZysZI5GD8LjhQib/mM0jGOZOVkoUiiV2Hu978fRtjtsGsW6w0pKHUWtqA==", - "dev": true, "requires": { "@babel/types": "^7.7.0" } }, + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==" + }, "@babel/helpers": { "version": "7.7.0", "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.7.0.tgz", @@ -149,7 +198,6 @@ "version": "7.0.0", "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0.tgz", "integrity": "sha512-UFMC4ZeFC48Tpvj7C8UgLvtkaUuovQX+5xNWrsIoMG8o2z+XFKjKaN9iVmS84dPwVN00W4wPmqvYoZF3EGAsfw==", - "dev": true, "requires": { "chalk": "^2.0.0", "esutils": "^2.0.2", @@ -159,16 +207,14 @@ "js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" } } }, "@babel/parser": { "version": "7.7.3", "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.7.3.tgz", - "integrity": "sha512-bqv+iCo9i+uLVbI0ILzKkvMorqxouI+GbV13ivcARXn9NNEabi2IEz912IgNpT/60BNXac5dgcfjb94NjsF33A==", - "dev": true + "integrity": "sha512-bqv+iCo9i+uLVbI0ILzKkvMorqxouI+GbV13ivcARXn9NNEabi2IEz912IgNpT/60BNXac5dgcfjb94NjsF33A==" }, "@babel/polyfill": { "version": "7.7.0", @@ -234,7 +280,6 @@ "version": "7.7.0", "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.7.0.tgz", "integrity": "sha512-OKcwSYOW1mhWbnTBgQY5lvg1Fxg+VyfQGjcBduZFljfc044J5iDlnDSfhQ867O17XHiSCxYHUxHg2b7ryitbUQ==", - "dev": true, "requires": { "@babel/code-frame": "^7.0.0", "@babel/parser": "^7.7.0", @@ -245,7 +290,6 @@ "version": "7.7.2", "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.7.2.tgz", "integrity": "sha512-TM01cXib2+rgIZrGJOLaHV/iZUAxf4A0dt5auY6KNZ+cm6aschuJGqKJM3ROTt3raPUdIDk9siAufIFEleRwtw==", - "dev": true, "requires": { "@babel/code-frame": "^7.5.5", "@babel/generator": "^7.7.2", @@ -262,7 +306,6 @@ "version": "7.5.5", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.5.5.tgz", "integrity": "sha512-27d4lZoomVyo51VegxI20xZPuSHusqbQag/ztrBC7wegWoQ1nLREPVSKSW8byhTlzTKyNE4ifaTA6lCp7JjpFw==", - "dev": true, "requires": { "@babel/highlight": "^7.0.0" } @@ -271,7 +314,6 @@ "version": "4.1.1", "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", - "dev": true, "requires": { "ms": "^2.1.1" } @@ -279,14 +321,12 @@ "globals": { "version": "11.12.0", "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "dev": true + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==" }, "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" } } }, @@ -294,7 +334,6 @@ "version": "7.7.2", "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.7.2.tgz", "integrity": "sha512-YTf6PXoh3+eZgRCBzzP25Bugd2ngmpQVrk7kXX0i5N9BO7TFBtIgZYs7WtxtOGs8e6A4ZI7ECkbBCEHeXocvOA==", - "dev": true, "requires": { "esutils": "^2.0.2", "lodash": "^4.17.13", @@ -304,11 +343,33 @@ "to-fast-properties": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", - "dev": true + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=" } } }, + "@emotion/is-prop-valid": { + "version": "0.8.8", + "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-0.8.8.tgz", + "integrity": "sha512-u5WtneEAr5IDG2Wv65yhunPSMLIpuKsbuOktRojfrEiEvRyC85LgPMZI63cr7NUqT8ZIGdSVg8ZKGxIug4lXcA==", + "requires": { + "@emotion/memoize": "0.7.4" + } + }, + "@emotion/memoize": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.7.4.tgz", + "integrity": "sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw==" + }, + "@emotion/stylis": { + "version": "0.8.5", + "resolved": "https://registry.npmjs.org/@emotion/stylis/-/stylis-0.8.5.tgz", + "integrity": "sha512-h6KtPihKFn3T9fuIrwvXXUOwlx3rfUvfZIcP5a6rh8Y7zjE3O06hT5Ss4S/YI1AYhuZ1kjaE/5EaOOI2NqSylQ==" + }, + "@emotion/unitless": { + "version": "0.7.5", + "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.7.5.tgz", + "integrity": "sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg==" + }, "@jimp/bmp": { "version": "0.5.4", "resolved": "https://registry.npmjs.org/@jimp/bmp/-/bmp-0.5.4.tgz", @@ -692,6 +753,12 @@ "defer-to-connect": "^1.0.1" } }, + "@types/classnames": { + "version": "2.2.10", + "resolved": "https://registry.npmjs.org/@types/classnames/-/classnames-2.2.10.tgz", + "integrity": "sha512-1UzDldn9GfYYEsWWnn/P4wkTlkZDH7lDb0wBMGbtIQc9zXEQq7FlKBdZUn6OBqD8sKZZ2RQO2mAjGpXiDGoRmQ==", + "dev": true + }, "@types/color-name": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.1.tgz", @@ -733,6 +800,12 @@ "@types/node": "*" } }, + "@types/history": { + "version": "4.7.6", + "resolved": "https://registry.npmjs.org/@types/history/-/history-4.7.6.tgz", + "integrity": "sha512-GRTZLeLJ8ia00ZH8mxMO8t0aC9M1N9bN461Z2eaRurJo6Fpa+utgCwLzI4jQHcrdzuzp5WPN9jRwpsCQ1VhJ5w==", + "dev": true + }, "@types/jest": { "version": "24.0.22", "resolved": "https://registry.npmjs.org/@types/jest/-/jest-24.0.22.tgz", @@ -829,6 +902,27 @@ "@types/react": "*" } }, + "@types/react-router": { + "version": "5.1.8", + "resolved": "https://registry.npmjs.org/@types/react-router/-/react-router-5.1.8.tgz", + "integrity": "sha512-HzOyJb+wFmyEhyfp4D4NYrumi+LQgQL/68HvJO+q6XtuHSDvw6Aqov7sCAhjbNq3bUPgPqbdvjXC5HeB2oEAPg==", + "dev": true, + "requires": { + "@types/history": "*", + "@types/react": "*" + } + }, + "@types/react-router-dom": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/@types/react-router-dom/-/react-router-dom-5.1.5.tgz", + "integrity": "sha512-ArBM4B1g3BWLGbaGvwBGO75GNFbLDUthrDojV2vHLih/Tq8M+tgvY1DSwkuNrPSwdp/GUL93WSEpTZs8nVyJLw==", + "dev": true, + "requires": { + "@types/history": "*", + "@types/react": "*", + "@types/react-router": "*" + } + }, "@types/unist": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.3.tgz", @@ -1394,7 +1488,6 @@ "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, "requires": { "color-convert": "^1.9.0" } @@ -2423,6 +2516,17 @@ "babel-helper-is-void-0": "^0.4.3" } }, + "babel-plugin-styled-components": { + "version": "1.10.7", + "resolved": "https://registry.npmjs.org/babel-plugin-styled-components/-/babel-plugin-styled-components-1.10.7.tgz", + "integrity": "sha512-MBMHGcIA22996n9hZRf/UJLVVgkEOITuR2SvjHLb5dSTUyR4ZRGn+ngITapes36FI3WLxZHfRhkA1ffHxihOrg==", + "requires": { + "@babel/helper-annotate-as-pure": "^7.0.0", + "@babel/helper-module-imports": "^7.0.0", + "babel-plugin-syntax-jsx": "^6.18.0", + "lodash": "^4.17.11" + } + }, "babel-plugin-syntax-async-functions": { "version": "6.13.0", "resolved": "https://registry.npmjs.org/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz", @@ -2468,8 +2572,7 @@ "babel-plugin-syntax-jsx": { "version": "6.18.0", "resolved": "https://registry.npmjs.org/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz", - "integrity": "sha1-CvMqmm4Tyno/1QaeYtew9Y0NiUY=", - "dev": true + "integrity": "sha1-CvMqmm4Tyno/1QaeYtew9Y0NiUY=" }, "babel-plugin-syntax-object-rest-spread": { "version": "6.13.0", @@ -4326,8 +4429,7 @@ "camelize": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/camelize/-/camelize-1.0.0.tgz", - "integrity": "sha1-FkpUg+Yw+kMh5a8HAg5TGDGyYJs=", - "dev": true + "integrity": "sha1-FkpUg+Yw+kMh5a8HAg5TGDGyYJs=" }, "caniuse-lite": { "version": "1.0.30000856", @@ -4378,7 +4480,6 @@ "version": "2.4.1", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", - "dev": true, "requires": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", @@ -4549,6 +4650,11 @@ } } }, + "classnames": { + "version": "2.2.6", + "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.2.6.tgz", + "integrity": "sha512-JR/iSQOSt+LQIWwrwEzJ9uk0xfN3mTVYMwt1Ir5mUcSN6pU+V4zQFFaJsclJbPuAUQH+yfWef6tm7l1quW3C8Q==" + }, "clean-css": { "version": "4.1.11", "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.1.11.tgz", @@ -4835,7 +4941,6 @@ "version": "1.9.2", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.2.tgz", "integrity": "sha512-3NUJZdhMhcdPn8vJ9v2UQJoH0qqoGUkYTgFEPZaPjEtwmmKUfNV46zZmgB2M5M4DCEQHMaCfWHCxiBflLm04Tg==", - "dev": true, "requires": { "color-name": "1.1.1" } @@ -4843,8 +4948,7 @@ "color-name": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.1.tgz", - "integrity": "sha1-SxQVMEz1ACjqgWQ2Q72C6gWANok=", - "dev": true + "integrity": "sha1-SxQVMEz1ACjqgWQ2Q72C6gWANok=" }, "color-string": { "version": "1.5.3", @@ -5265,6 +5369,11 @@ "tiny-invariant": "^1.0.4" } }, + "css-color-keywords": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/css-color-keywords/-/css-color-keywords-1.0.0.tgz", + "integrity": "sha1-/qJhbcZ2spYmhrOvjb2+GAskTgU=" + }, "css-loader": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-2.1.1.tgz", @@ -5360,6 +5469,23 @@ "dev": true, "optional": true }, + "css-to-react-native": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/css-to-react-native/-/css-to-react-native-3.0.0.tgz", + "integrity": "sha512-Ro1yETZA813eoyUp2GDBhG2j+YggidUmzO1/v9eYBKR2EHVEniE2MI/NqpTQ954BMpTPZFsGNPm46qFB9dpaPQ==", + "requires": { + "camelize": "^1.0.0", + "css-color-keywords": "^1.0.0", + "postcss-value-parser": "^4.0.2" + }, + "dependencies": { + "postcss-value-parser": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz", + "integrity": "sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ==" + } + } + }, "css-tree": { "version": "1.0.0-alpha.37", "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.37.tgz", @@ -6361,8 +6487,7 @@ "escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" }, "eslint": { "version": "6.6.0", @@ -7108,8 +7233,7 @@ "esutils": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", - "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", - "dev": true + "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=" }, "etag": { "version": "1.8.1", @@ -9517,8 +9641,7 @@ "has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" }, "has-symbol-support-x": { "version": "1.4.2", @@ -17302,8 +17425,7 @@ "source-map": { "version": "0.5.7", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" }, "source-map-resolve": { "version": "0.5.2", @@ -18117,6 +18239,46 @@ "integrity": "sha1-eVjHk+R+MuB9K1yv5cC/jhLneQI=", "dev": true }, + "styled-components": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/styled-components/-/styled-components-5.1.1.tgz", + "integrity": "sha512-1ps8ZAYu2Husx+Vz8D+MvXwEwvMwFv+hqqUwhNlDN5ybg6A+3xyW1ECrAgywhvXapNfXiz79jJyU0x22z0FFTg==", + "requires": { + "@babel/helper-module-imports": "^7.0.0", + "@babel/traverse": "^7.4.5", + "@emotion/is-prop-valid": "^0.8.8", + "@emotion/stylis": "^0.8.4", + "@emotion/unitless": "^0.7.4", + "babel-plugin-styled-components": ">= 1", + "css-to-react-native": "^3.0.0", + "hoist-non-react-statics": "^3.0.0", + "shallowequal": "^1.1.0", + "supports-color": "^5.5.0" + }, + "dependencies": { + "hoist-non-react-statics": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", + "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", + "requires": { + "react-is": "^16.7.0" + } + }, + "shallowequal": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/shallowequal/-/shallowequal-1.1.0.tgz", + "integrity": "sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==" + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, "stylelint": { "version": "11.1.1", "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-11.1.1.tgz", @@ -18666,7 +18828,6 @@ "version": "5.4.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz", "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==", - "dev": true, "requires": { "has-flag": "^3.0.0" } diff --git a/package.json b/package.json index e40bda0..e75acd6 100644 --- a/package.json +++ b/package.json @@ -45,6 +45,7 @@ } }, "devDependencies": { + "@types/classnames": "2.2.10", "@types/jest": "24.0.22", "@types/js-cookie": "2.2.4", "@types/node": "10.14.7", @@ -52,6 +53,7 @@ "@types/react-dom": "16.8.4", "@types/react-helmet": "6.0.0", "@types/react-jsonschema-form": "1.7.3", + "@types/react-router-dom": "5.1.5", "@typescript-eslint/eslint-plugin": "2.6.1", "@typescript-eslint/parser": "2.6.1", "awesome-typescript-loader": "5.2.1", @@ -115,8 +117,10 @@ }, "dependencies": { "axios": "0.19.0", + "classnames": "2.2.6", "date-fns": "2.0.0-alpha.27", "js-cookie": "2.2.0", + "lodash": "4.17.15", "mobx": "5.9.4", "mobx-react": "5.4.4", "normalize.css": "8.0.1", @@ -127,7 +131,8 @@ "react-router": "4.3.1", "react-router-dom": "4.3.1", "react-router-hash-link": "1.2.1", - "shortid": "2.2.14" + "shortid": "2.2.14", + "styled-components": "5.1.1" }, "postcss": {} } diff --git a/src/components/Header/Header.scss b/src/components/Header/Header.scss index 03a4c1d..527c5bd 100644 --- a/src/components/Header/Header.scss +++ b/src/components/Header/Header.scss @@ -2,16 +2,19 @@ .header { + position: sticky; + top: 0; + z-index: 10; display: flex; flex-flow: row nowrap; align-items: center; padding: 0 1rem; background-color: color(dark-blue); + transition: all 200ms ease-out; - @media screen and (min-width: 600px) { - position: sticky; - top: 0; - z-index: 10; + &.hidden { + transition: all 200ms ease-in; + transform: translateY(-100%); } @media screen and (max-width: 600px - 1px) { diff --git a/src/components/Header/Header.tsx b/src/components/Header/Header.tsx index 8c065db..df42484 100644 --- a/src/components/Header/Header.tsx +++ b/src/components/Header/Header.tsx @@ -1,88 +1,102 @@ -import * as React from "react"; +import React, { FC, useState, useEffect, useRef } from "react"; import { Link } from "react-router-dom"; import "./Header.scss"; import NavbarDropdownLink from "../NavbarDropdownLink/NavbarDropdownLink"; import NavbarChildLink from "../NavbarChildLink/NavbarChildLink"; import Navigation from "../Navigation"; -import * as TitleImage from "../../assets/img/SIK_RGB_W_side.png"; +import TitleImage from "../../assets/img/SIK_RGB_W_side.png"; +import classNames from "classnames"; +import throttle from "lodash/throttle"; export interface HeaderProps { } export interface HeaderState { mobileMenuOpen: boolean; } -class Header extends React.Component { - constructor(props) { - super(props); - this.state = { - mobileMenuOpen: false, - }; - } +const renderNavigationDesktopItems = () => { + return ( + <> + + Toiminta + Fuksi + Arkisto + + + + + {/* Simo Höglund */} + + + + ); +} - renderNavigationDesktopItems = () => { - return ( - - - Toiminta - Fuksi - Arkisto - - - - - {/* Simo Höglund */} - - - - ); - } +const renderNavigationMobileItems = () => { + return ( + <> + + Toiminta + Fuksi + Arkisto + + + + + {/* Simo Höglund */} + + + + ); +} - renderNavigationMobileItems = () => { - return ( - - - Toiminta - Fuksi - Arkisto - - - - - {/* Simo Höglund */} - - - - ); - } +const Header: FC = () => { + const [mobileMenuOpen, setMobileMenuOpen] = useState(false); + const [isHidden, setHidden] = useState(false); - handleMobileMenuClick = (): void => { - this.setState(prevState => ({ - mobileMenuOpen: !prevState.mobileMenuOpen, - })); - } + const yCoord = useRef(0); + const preventIsHiddenWhenYBelow = 150; - render() { - const desktopItems = this.renderNavigationDesktopItems(); - const mobileItems = this.renderNavigationMobileItems(); - const { mobileMenuOpen } = this.state; + const handleScroll = () => { + const newCoord = window.pageYOffset; + if (newCoord > yCoord.current && newCoord > preventIsHiddenWhenYBelow) { + yCoord.current = newCoord; + setHidden(true); + } else if (newCoord < yCoord.current) { + yCoord.current = newCoord; + setHidden(false); + } + }; - return ( - -
- - - - -
- -
- ); - } + useEffect(() => { + const func = throttle(handleScroll, 200); + window.addEventListener("scroll", func); + return () => window.removeEventListener("scroll", func); + }, []); + + const handleMobileMenuClick = () => setMobileMenuOpen(!mobileMenuOpen); + + const desktopItems = renderNavigationDesktopItems(); + const mobileItems = renderNavigationMobileItems(); + + const classes = classNames( + "header", + { "hidden": isHidden } + ) + + return ( +
+ + + + + +
+ ) } export default Header; diff --git a/src/index.scss b/src/index.scss index 3843cb3..0820280 100644 --- a/src/index.scss +++ b/src/index.scss @@ -12,7 +12,6 @@ body { height: 100%; font-family: $font; color: color(white1); - overflow: auto; } #root { @@ -25,7 +24,6 @@ body { body { padding: 0; margin: auto !important; - overflow-x: hidden; } h1 { diff --git a/tsconfig.json b/tsconfig.json index 80c2af9..4df75b7 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -3,7 +3,7 @@ "outDir": "./dist/", "sourceMap": true, "noImplicitAny": false, - // "esModuleInterop": true, + "esModuleInterop": true, "experimentalDecorators": true, // "emitDecoratorMetadata": true, // "allowSyntheticDefaultImports": true, From 5d26ec9e787169b0d2e9a85fc1cc4f9310a2386e Mon Sep 17 00:00:00 2001 From: Aarni Halinen Date: Fri, 3 Jul 2020 15:15:56 +0300 Subject: [PATCH 11/56] Use esModuleInterop imports --- plop-templates/component.tsx | 2 +- plop-templates/page.tsx | 2 +- src/auth.ts | 2 +- src/client/App.tsx | 2 +- src/client/index.ts | 2 +- src/components/Accordion/Accordion.tsx | 2 +- src/components/AccordionIcon/AccordionIcon.tsx | 2 +- src/components/AdminHeader/AdminHeader.tsx | 4 ++-- src/components/AdminSidebar/AdminSidebar.tsx | 2 +- .../AdminSidebarLink/AdminSidebarLink.tsx | 2 +- src/components/Anchor/Anchor.tsx | 2 +- src/components/AsideSection/AsideSection.tsx | 2 +- src/components/Button/Button.tsx | 2 +- src/components/Card/Card.tsx | 2 +- src/components/ColorDiv/ColorDiv.tsx | 2 +- .../CommitteeContainer/CommitteeContainer.tsx | 2 +- src/components/ContactCard/ContactCard.tsx | 4 ++-- src/components/DatetimeWidget/DatetimeWidget.tsx | 2 +- src/components/DropDownBox/DropDownBox.tsx | 2 +- src/components/Footer/Footer.tsx | 2 +- src/components/FooterMap/FooterMap.tsx | 2 +- src/components/HeroAsideItem/HeroAsideItem.tsx | 2 +- .../HeroAsideSection/HeroAsideSection.tsx | 2 +- .../HeroMainSection/HeroMainSection.tsx | 2 +- src/components/Icon/Icon.tsx | 2 +- src/components/InfoBox/InfoBox.tsx | 2 +- src/components/JsonLD/JsonLD.tsx | 2 +- src/components/MainSection/MainSection.tsx | 2 +- .../NavbarChildLink/NavbarChildLink.tsx | 2 +- .../NavbarDropdownLink/NavbarDropdownLink.tsx | 2 +- src/components/Navigation/Navigation.tsx | 2 +- src/components/PageLink/PageLink.tsx | 2 +- src/components/PageSection/PageSection.tsx | 2 +- src/components/Ribbon/Ribbon.tsx | 2 +- .../SectionDividerWidget.tsx | 2 +- .../SignupQuestionsWidget/OptionsWidget.tsx | 4 ++-- .../SignupQuestionsWidget/Question.tsx | 2 +- .../SignupQuestionsWidget/QuestionList.tsx | 4 ++-- .../SignupQuestionsWidget.tsx | 6 +++--- .../SignupQuestionsWidget/TypeWidget.tsx | 4 ++-- src/components/SponsorReel/SponsorReel.tsx | 2 +- src/components/TextAnchor/TextAnchor.tsx | 2 +- src/index.tsx | 2 +- src/models/Event.ts | 2 +- src/pages/ActualPage/ActualPage.tsx | 2 +- src/pages/AdminCommonPage/AdminCommonPage.tsx | 2 +- src/pages/AdminEventPage/AdminEventPage.tsx | 4 ++-- src/pages/AdminFeedPage/AdminFeedPage.tsx | 4 ++-- src/pages/AdminFrontPage/AdminFrontPage.tsx | 2 +- src/pages/AdminLoginPage/AdminLoginPage.tsx | 4 ++-- src/pages/AdminLogoutPage/AdminLogoutPage.tsx | 2 +- src/pages/AdminSignupPage/AdminSignupPage.tsx | 4 ++-- src/pages/CommonPage/CommonPage.tsx | 2 +- src/pages/ContactsPage/ContactsPage.tsx | 2 +- src/pages/CorporatePage/CorporatePage.tsx | 2 +- src/pages/EventCreatePage/EventCreatePage.tsx | 2 +- src/pages/EventPage/EventPage.tsx | 2 +- src/pages/FeedCreatePage/FeedCreatePage.tsx | 2 +- src/pages/FreshmenPage/FreshmenPage.tsx | 2 +- src/pages/FrontPage/FrontPage.tsx | 2 +- src/pages/GuildPage/GuildPage.tsx | 2 +- src/pages/InEnglishPage/InEnglishPage.tsx | 2 +- src/pages/NotFoundPage/NotFoundPage.tsx | 2 +- src/pages/SignUpPage/SignUpPage.tsx | 2 +- src/pages/SignupCreatePage/SignupCreatePage.tsx | 2 +- src/pages/StudiesPage/StudiesPage.tsx | 2 +- src/routes.tsx | 2 +- src/server/App.tsx | 2 +- src/server/index.ts | 16 ++++++++-------- 69 files changed, 87 insertions(+), 87 deletions(-) diff --git a/plop-templates/component.tsx b/plop-templates/component.tsx index 61f3bdf..42b9f35 100644 --- a/plop-templates/component.tsx +++ b/plop-templates/component.tsx @@ -1,4 +1,4 @@ -import * as React from "react"; +import React from "react"; {{#if observer}} import { observer } from "mobx-react"; import {{ camelCase store_name }} from "../../stores/{{ properCase store_name }}"; diff --git a/plop-templates/page.tsx b/plop-templates/page.tsx index 24736dd..5f82725 100644 --- a/plop-templates/page.tsx +++ b/plop-templates/page.tsx @@ -1,4 +1,4 @@ -import * as React from "react"; +import React from "react"; import { Helmet } from "react-helmet"; import "./{{ properCase name}}.scss"; diff --git a/src/auth.ts b/src/auth.ts index a392067..679218b 100644 --- a/src/auth.ts +++ b/src/auth.ts @@ -1,5 +1,5 @@ import axios from "axios"; -import * as Cookies from "js-cookie"; +import Cookies from "js-cookie"; const tokenUrl = `${process.env.API_URL}/api-token-auth/`; const checkUrl = `${process.env.API_URL}/api-token-verify/`; diff --git a/src/client/App.tsx b/src/client/App.tsx index 237bca9..ef98499 100644 --- a/src/client/App.tsx +++ b/src/client/App.tsx @@ -1,4 +1,4 @@ -import * as React from "react"; +import React from "react"; import { BrowserRouter } from "react-router-dom"; import Routes from "../routes"; diff --git a/src/client/index.ts b/src/client/index.ts index a985923..9fb5b97 100644 --- a/src/client/index.ts +++ b/src/client/index.ts @@ -1,4 +1,4 @@ -import * as React from "react"; +import React from "react"; import { hydrate } from "react-dom"; import App from "./App"; diff --git a/src/components/Accordion/Accordion.tsx b/src/components/Accordion/Accordion.tsx index 41db92c..15fc857 100644 --- a/src/components/Accordion/Accordion.tsx +++ b/src/components/Accordion/Accordion.tsx @@ -1,4 +1,4 @@ -import * as React from "react"; +import React from "react"; import "./Accordion.scss"; import AccordionIcon from "../AccordionIcon"; diff --git a/src/components/AccordionIcon/AccordionIcon.tsx b/src/components/AccordionIcon/AccordionIcon.tsx index 157696a..753a7ad 100644 --- a/src/components/AccordionIcon/AccordionIcon.tsx +++ b/src/components/AccordionIcon/AccordionIcon.tsx @@ -1,4 +1,4 @@ -import * as React from "react"; +import React from "react"; import "./AccordionIcon.scss"; export interface AccordionIconProps { diff --git a/src/components/AdminHeader/AdminHeader.tsx b/src/components/AdminHeader/AdminHeader.tsx index 379e210..3308b92 100644 --- a/src/components/AdminHeader/AdminHeader.tsx +++ b/src/components/AdminHeader/AdminHeader.tsx @@ -1,6 +1,6 @@ -import * as React from "react"; +import React from "react"; import { Link } from "react-router-dom"; -import * as TitleImage from "../../assets/img/SIK_RGB_W_side.png"; +import TitleImage from "../../assets/img/SIK_RGB_W_side.png"; import "./AdminHeader.scss"; export interface AdminHeaderProps { } diff --git a/src/components/AdminSidebar/AdminSidebar.tsx b/src/components/AdminSidebar/AdminSidebar.tsx index 658af6f..ef84fe7 100644 --- a/src/components/AdminSidebar/AdminSidebar.tsx +++ b/src/components/AdminSidebar/AdminSidebar.tsx @@ -1,4 +1,4 @@ -import * as React from "react"; +import React from "react"; import "./AdminSidebar.scss"; import AdminSidebarLink from "../AdminSidebarLink"; diff --git a/src/components/AdminSidebarLink/AdminSidebarLink.tsx b/src/components/AdminSidebarLink/AdminSidebarLink.tsx index cc64fe0..e77888b 100644 --- a/src/components/AdminSidebarLink/AdminSidebarLink.tsx +++ b/src/components/AdminSidebarLink/AdminSidebarLink.tsx @@ -1,4 +1,4 @@ -import * as React from "react"; +import React from "react"; import Anchor from "../Anchor"; import "./AdminSidebarLink.scss"; diff --git a/src/components/Anchor/Anchor.tsx b/src/components/Anchor/Anchor.tsx index 0eea2b0..8e86b53 100644 --- a/src/components/Anchor/Anchor.tsx +++ b/src/components/Anchor/Anchor.tsx @@ -1,4 +1,4 @@ -import * as React from "react"; +import React from "react"; import { Link } from "react-router-dom"; import { HashLink } from "react-router-hash-link"; diff --git a/src/components/AsideSection/AsideSection.tsx b/src/components/AsideSection/AsideSection.tsx index 0ed377b..9dce772 100644 --- a/src/components/AsideSection/AsideSection.tsx +++ b/src/components/AsideSection/AsideSection.tsx @@ -1,4 +1,4 @@ -import * as React from "react"; +import React from "react"; import "./AsideSection.scss"; import ColorDiv, { ColorDivProps } from "../ColorDiv/ColorDiv"; diff --git a/src/components/Button/Button.tsx b/src/components/Button/Button.tsx index 353523d..003974c 100644 --- a/src/components/Button/Button.tsx +++ b/src/components/Button/Button.tsx @@ -1,4 +1,4 @@ -import * as React from "react"; +import React from "react"; import "./Button.scss"; export enum ButtonType { diff --git a/src/components/Card/Card.tsx b/src/components/Card/Card.tsx index fa33154..9f2e377 100644 --- a/src/components/Card/Card.tsx +++ b/src/components/Card/Card.tsx @@ -1,4 +1,4 @@ -import * as React from "react"; +import React from "react"; import "./Card.scss"; import Anchor from "../Anchor"; diff --git a/src/components/ColorDiv/ColorDiv.tsx b/src/components/ColorDiv/ColorDiv.tsx index f519935..90403d3 100644 --- a/src/components/ColorDiv/ColorDiv.tsx +++ b/src/components/ColorDiv/ColorDiv.tsx @@ -1,4 +1,4 @@ -import * as React from "react"; +import React from "react"; import "./ColorDiv.scss"; export enum ColorEnum { diff --git a/src/components/CommitteeContainer/CommitteeContainer.tsx b/src/components/CommitteeContainer/CommitteeContainer.tsx index 0dac08b..d37d0d6 100644 --- a/src/components/CommitteeContainer/CommitteeContainer.tsx +++ b/src/components/CommitteeContainer/CommitteeContainer.tsx @@ -1,4 +1,4 @@ -import * as React from "react"; +import React from "react"; import "./CommitteeContainer.scss"; import { Occupation } from "../../models/Contacts"; import ContactCard from "../ContactCard/ContactCard"; diff --git a/src/components/ContactCard/ContactCard.tsx b/src/components/ContactCard/ContactCard.tsx index 10ff8b9..89e8183 100644 --- a/src/components/ContactCard/ContactCard.tsx +++ b/src/components/ContactCard/ContactCard.tsx @@ -1,6 +1,6 @@ -import * as React from "react"; +import React from "react"; import "./ContactCard.scss"; -import * as blank_profile from "../../assets/img/blank_profile.png"; +import blank_profile from "../../assets/img/blank_profile.png"; import { Role } from "../../models/Contacts"; export interface ContactCardProps { diff --git a/src/components/DatetimeWidget/DatetimeWidget.tsx b/src/components/DatetimeWidget/DatetimeWidget.tsx index 3bd0c3f..9ace004 100644 --- a/src/components/DatetimeWidget/DatetimeWidget.tsx +++ b/src/components/DatetimeWidget/DatetimeWidget.tsx @@ -1,4 +1,4 @@ -import * as React from "react"; +import React from "react"; import "./DatetimeWidget.scss"; export interface DatetimeWidgetProps { diff --git a/src/components/DropDownBox/DropDownBox.tsx b/src/components/DropDownBox/DropDownBox.tsx index d2a825b..572b1f3 100644 --- a/src/components/DropDownBox/DropDownBox.tsx +++ b/src/components/DropDownBox/DropDownBox.tsx @@ -1,4 +1,4 @@ -import * as React from "react"; +import React from "react"; import "./DropDownBox.scss"; export interface DropDownBoxProps { diff --git a/src/components/Footer/Footer.tsx b/src/components/Footer/Footer.tsx index 4968e0d..dd641a5 100644 --- a/src/components/Footer/Footer.tsx +++ b/src/components/Footer/Footer.tsx @@ -1,4 +1,4 @@ -import * as React from "react"; +import React from "react"; import FooterMap from "../FooterMap"; import Anchor from "../Anchor"; import "./Footer.scss"; diff --git a/src/components/FooterMap/FooterMap.tsx b/src/components/FooterMap/FooterMap.tsx index e781bcb..bddca1a 100644 --- a/src/components/FooterMap/FooterMap.tsx +++ b/src/components/FooterMap/FooterMap.tsx @@ -1,4 +1,4 @@ -import * as React from "react"; +import React from "react"; import "./FooterMap.scss"; const AnyReactComponent = ({ text }) =>
{text}
; diff --git a/src/components/HeroAsideItem/HeroAsideItem.tsx b/src/components/HeroAsideItem/HeroAsideItem.tsx index a3d2f8a..7468609 100644 --- a/src/components/HeroAsideItem/HeroAsideItem.tsx +++ b/src/components/HeroAsideItem/HeroAsideItem.tsx @@ -1,4 +1,4 @@ -import * as React from "react"; +import React from "react"; import "./HeroAsideItem.scss"; import Anchor from "../Anchor"; diff --git a/src/components/HeroAsideSection/HeroAsideSection.tsx b/src/components/HeroAsideSection/HeroAsideSection.tsx index d47f6ed..332ea56 100644 --- a/src/components/HeroAsideSection/HeroAsideSection.tsx +++ b/src/components/HeroAsideSection/HeroAsideSection.tsx @@ -1,4 +1,4 @@ -import * as React from "react"; +import React from "react"; import "./HeroAsideSection.scss"; import ColorDiv, { ColorDivProps } from "../ColorDiv/ColorDiv"; diff --git a/src/components/HeroMainSection/HeroMainSection.tsx b/src/components/HeroMainSection/HeroMainSection.tsx index 6280d86..89ff6bd 100644 --- a/src/components/HeroMainSection/HeroMainSection.tsx +++ b/src/components/HeroMainSection/HeroMainSection.tsx @@ -1,4 +1,4 @@ -import * as React from "react"; +import React from "react"; import "./HeroMainSection.scss"; export interface HeroMainSectionProps {} diff --git a/src/components/Icon/Icon.tsx b/src/components/Icon/Icon.tsx index cce105f..46f1bcc 100644 --- a/src/components/Icon/Icon.tsx +++ b/src/components/Icon/Icon.tsx @@ -1,4 +1,4 @@ -import * as React from "react"; +import React from "react"; import "./Icon.scss"; export enum IconType { diff --git a/src/components/InfoBox/InfoBox.tsx b/src/components/InfoBox/InfoBox.tsx index c395043..7f9f844 100644 --- a/src/components/InfoBox/InfoBox.tsx +++ b/src/components/InfoBox/InfoBox.tsx @@ -1,4 +1,4 @@ -import * as React from "react"; +import React from "react"; import "./InfoBox.scss"; export interface InfoBoxProps {} diff --git a/src/components/JsonLD/JsonLD.tsx b/src/components/JsonLD/JsonLD.tsx index 4d6896e..cb73cb8 100644 --- a/src/components/JsonLD/JsonLD.tsx +++ b/src/components/JsonLD/JsonLD.tsx @@ -1,4 +1,4 @@ -import * as React from "react"; +import React from "react"; export interface JsonLDProps { data: object; diff --git a/src/components/MainSection/MainSection.tsx b/src/components/MainSection/MainSection.tsx index 48fb711..9afe731 100644 --- a/src/components/MainSection/MainSection.tsx +++ b/src/components/MainSection/MainSection.tsx @@ -1,4 +1,4 @@ -import * as React from "react"; +import React from "react"; import "./MainSection.scss"; import ColorDiv, { ColorDivProps } from "../ColorDiv/ColorDiv"; diff --git a/src/components/NavbarChildLink/NavbarChildLink.tsx b/src/components/NavbarChildLink/NavbarChildLink.tsx index dfa1120..a3a24cc 100644 --- a/src/components/NavbarChildLink/NavbarChildLink.tsx +++ b/src/components/NavbarChildLink/NavbarChildLink.tsx @@ -1,4 +1,4 @@ -import * as React from "react"; +import React from "react"; import "./NavbarChildLink.scss"; import Anchor from "../Anchor"; diff --git a/src/components/NavbarDropdownLink/NavbarDropdownLink.tsx b/src/components/NavbarDropdownLink/NavbarDropdownLink.tsx index 2844e7b..c29df71 100644 --- a/src/components/NavbarDropdownLink/NavbarDropdownLink.tsx +++ b/src/components/NavbarDropdownLink/NavbarDropdownLink.tsx @@ -1,4 +1,4 @@ -import * as React from "react"; +import React from "react"; import "./NavbarDropdownLink.scss"; import DropDownBox from "../DropDownBox/DropDownBox"; import Anchor from "../Anchor"; diff --git a/src/components/Navigation/Navigation.tsx b/src/components/Navigation/Navigation.tsx index 0498e80..a584cd1 100644 --- a/src/components/Navigation/Navigation.tsx +++ b/src/components/Navigation/Navigation.tsx @@ -1,4 +1,4 @@ -import * as React from "react"; +import React from "react"; import "./Navigation.scss"; import NavbarDropdownLink from "../NavbarDropdownLink/NavbarDropdownLink"; import NavbarChildLink from "../NavbarChildLink/NavbarChildLink"; diff --git a/src/components/PageLink/PageLink.tsx b/src/components/PageLink/PageLink.tsx index 2f36d76..cece70f 100644 --- a/src/components/PageLink/PageLink.tsx +++ b/src/components/PageLink/PageLink.tsx @@ -1,4 +1,4 @@ -import * as React from "react"; +import React from "react"; import "./PageLink.scss"; import TextAnchor from "../TextAnchor"; import { TextSize } from "../TextAnchor/TextAnchor"; diff --git a/src/components/PageSection/PageSection.tsx b/src/components/PageSection/PageSection.tsx index 32714eb..e6e7c0b 100644 --- a/src/components/PageSection/PageSection.tsx +++ b/src/components/PageSection/PageSection.tsx @@ -1,4 +1,4 @@ -import * as React from "react"; +import React from "react"; import "./PageSection.scss"; import ColorDiv, { ColorDivProps } from "../ColorDiv/ColorDiv"; diff --git a/src/components/Ribbon/Ribbon.tsx b/src/components/Ribbon/Ribbon.tsx index 5c66e5c..240bb27 100644 --- a/src/components/Ribbon/Ribbon.tsx +++ b/src/components/Ribbon/Ribbon.tsx @@ -1,4 +1,4 @@ -import * as React from "react"; +import React from "react"; import "./Ribbon.scss"; export interface RibbonProps {} diff --git a/src/components/SectionDividerWidget/SectionDividerWidget.tsx b/src/components/SectionDividerWidget/SectionDividerWidget.tsx index 2780b45..46e9c3e 100644 --- a/src/components/SectionDividerWidget/SectionDividerWidget.tsx +++ b/src/components/SectionDividerWidget/SectionDividerWidget.tsx @@ -1,4 +1,4 @@ -import * as React from "react"; +import React from "react"; import "./SectionDividerWidget.scss"; import Icon from "../Icon"; import { IconType } from "../Icon/Icon"; diff --git a/src/components/SignupQuestionsWidget/OptionsWidget.tsx b/src/components/SignupQuestionsWidget/OptionsWidget.tsx index ef12d2e..fe39775 100644 --- a/src/components/SignupQuestionsWidget/OptionsWidget.tsx +++ b/src/components/SignupQuestionsWidget/OptionsWidget.tsx @@ -1,5 +1,5 @@ -import * as React from "react"; -import * as shortid from "shortid"; +import React from "react"; +import shortid from "shortid"; import { Question, InputProps, optionTypes, SignupQuestionError } from "./index"; export interface OptionsWidgetProps { diff --git a/src/components/SignupQuestionsWidget/Question.tsx b/src/components/SignupQuestionsWidget/Question.tsx index 5aaa5db..9c80c2a 100644 --- a/src/components/SignupQuestionsWidget/Question.tsx +++ b/src/components/SignupQuestionsWidget/Question.tsx @@ -1,4 +1,4 @@ -import * as React from "react"; +import React from "react"; export interface QuestionProps { children: any; diff --git a/src/components/SignupQuestionsWidget/QuestionList.tsx b/src/components/SignupQuestionsWidget/QuestionList.tsx index 9ae47f3..1f31a59 100644 --- a/src/components/SignupQuestionsWidget/QuestionList.tsx +++ b/src/components/SignupQuestionsWidget/QuestionList.tsx @@ -1,5 +1,5 @@ -import * as React from "react"; -import * as shortid from "shortid"; +import React from "react"; +import shortid from "shortid"; import { Draggable } from "react-beautiful-dnd"; import { Question, InputProps, optionTypes, SignupQuestionError } from "./index"; import OptionsWidget from "./OptionsWidget"; diff --git a/src/components/SignupQuestionsWidget/SignupQuestionsWidget.tsx b/src/components/SignupQuestionsWidget/SignupQuestionsWidget.tsx index 0889425..62454d0 100644 --- a/src/components/SignupQuestionsWidget/SignupQuestionsWidget.tsx +++ b/src/components/SignupQuestionsWidget/SignupQuestionsWidget.tsx @@ -1,9 +1,9 @@ -import * as React from "react"; -import * as shortid from "shortid"; +import React from "react"; +import shortid from "shortid"; import OptionsWidget from "./OptionsWidget"; import { DragDropContext, Droppable } from "react-beautiful-dnd"; import { Question, InputProps, optionTypes } from "." -import * as AddIcon from "../../assets/img/add-icon.png"; +import AddIcon from "../../assets/img/add-icon.png"; import "./SignupQuestionsWidget.scss"; import TypeWidget from "./TypeWidget"; import QuestionList from "./QuestionList"; diff --git a/src/components/SignupQuestionsWidget/TypeWidget.tsx b/src/components/SignupQuestionsWidget/TypeWidget.tsx index ec2bbbb..389ffdd 100644 --- a/src/components/SignupQuestionsWidget/TypeWidget.tsx +++ b/src/components/SignupQuestionsWidget/TypeWidget.tsx @@ -1,5 +1,5 @@ -import * as React from "react"; -import * as shortid from "shortid"; +import React from "react"; +import shortid from "shortid"; import { Question, InputProps, optionTypes, SignupQuestionError } from "./index"; export interface TypeWidgetProps { diff --git a/src/components/SponsorReel/SponsorReel.tsx b/src/components/SponsorReel/SponsorReel.tsx index bf9d45f..c7799bc 100644 --- a/src/components/SponsorReel/SponsorReel.tsx +++ b/src/components/SponsorReel/SponsorReel.tsx @@ -1,4 +1,4 @@ -import * as React from "react"; +import React from "react"; import "./SponsorReel.scss"; import TextAnchor from "../TextAnchor"; import Anchor from "../Anchor"; diff --git a/src/components/TextAnchor/TextAnchor.tsx b/src/components/TextAnchor/TextAnchor.tsx index cf4cb4a..b870f6e 100644 --- a/src/components/TextAnchor/TextAnchor.tsx +++ b/src/components/TextAnchor/TextAnchor.tsx @@ -1,4 +1,4 @@ -import * as React from "react"; +import React from "react"; import "./TextAnchor.scss"; import { ColorEnum, getColor, getHoverColor } from "../ColorDiv/ColorDiv"; import Anchor from "../Anchor"; diff --git a/src/index.tsx b/src/index.tsx index 5ce0b6b..33bec6e 100644 --- a/src/index.tsx +++ b/src/index.tsx @@ -1,4 +1,4 @@ -import * as React from "react"; +import React from "react"; import { render } from "react-dom"; import { BrowserRouter } from "react-router-dom"; import { AppContainer } from "react-hot-loader"; diff --git a/src/models/Event.ts b/src/models/Event.ts index 63579e2..80b3632 100644 --- a/src/models/Event.ts +++ b/src/models/Event.ts @@ -1,7 +1,7 @@ import axios from "axios"; import { getAuthHeader } from "../auth"; import { Tag } from "./Tag"; -import * as qs from "query-string"; +import qs from "query-string"; import { SignupForm } from "./SignupForm"; const url = `${process.env.API_URL}/events/`; diff --git a/src/pages/ActualPage/ActualPage.tsx b/src/pages/ActualPage/ActualPage.tsx index 63e003f..5967204 100644 --- a/src/pages/ActualPage/ActualPage.tsx +++ b/src/pages/ActualPage/ActualPage.tsx @@ -1,4 +1,4 @@ -import * as React from "react"; +import React from "react"; import { Helmet } from "react-helmet"; import "./ActualPage.scss"; diff --git a/src/pages/AdminCommonPage/AdminCommonPage.tsx b/src/pages/AdminCommonPage/AdminCommonPage.tsx index cb4e856..b9a2f88 100644 --- a/src/pages/AdminCommonPage/AdminCommonPage.tsx +++ b/src/pages/AdminCommonPage/AdminCommonPage.tsx @@ -1,4 +1,4 @@ -import * as React from "react"; +import React from "react"; import { Redirect } from "react-router-dom"; import AdminHeader from "../../components/AdminHeader"; import AdminSidebar from "../../components/AdminSidebar"; diff --git a/src/pages/AdminEventPage/AdminEventPage.tsx b/src/pages/AdminEventPage/AdminEventPage.tsx index d697b84..79bf37b 100644 --- a/src/pages/AdminEventPage/AdminEventPage.tsx +++ b/src/pages/AdminEventPage/AdminEventPage.tsx @@ -1,4 +1,4 @@ -import * as React from "react"; +import React from "react"; import { Helmet } from "react-helmet"; import Anchor from "../../components/Anchor"; import { formatRelative } from "date-fns"; @@ -6,7 +6,7 @@ import { formatRelative } from "date-fns"; import "./AdminEventPage.scss"; import { Event, getEvents } from "../../models/Event"; import { StaticContext } from "../../server/StaticContext"; -import * as AddIcon from "../../assets/img/add-icon.png"; +import AddIcon from "../../assets/img/add-icon.png"; export interface AdminEventPageProps { diff --git a/src/pages/AdminFeedPage/AdminFeedPage.tsx b/src/pages/AdminFeedPage/AdminFeedPage.tsx index 2b91e24..1a7b819 100644 --- a/src/pages/AdminFeedPage/AdminFeedPage.tsx +++ b/src/pages/AdminFeedPage/AdminFeedPage.tsx @@ -1,4 +1,4 @@ -import * as React from "react"; +import React from "react"; import { Helmet } from "react-helmet"; import Anchor from "../../components/Anchor"; import "./AdminFeedPage.scss"; @@ -7,7 +7,7 @@ import { Post, getFeed } from "../../models/Feed"; import { getEvents } from "../../models/Event"; import { formatRelative } from "date-fns"; import { th } from "date-fns/esm/locale"; -import * as AddIcon from "../../assets/img/add-icon.png"; +import AddIcon from "../../assets/img/add-icon.png"; export interface AdminFeedPageProps { staticContext: StaticContext; diff --git a/src/pages/AdminFrontPage/AdminFrontPage.tsx b/src/pages/AdminFrontPage/AdminFrontPage.tsx index 1739689..1a164a1 100644 --- a/src/pages/AdminFrontPage/AdminFrontPage.tsx +++ b/src/pages/AdminFrontPage/AdminFrontPage.tsx @@ -1,4 +1,4 @@ -import * as React from "react"; +import React from "react"; import { Helmet } from "react-helmet"; import Anchor from "../../components/Anchor"; import "./AdminFrontPage.scss"; diff --git a/src/pages/AdminLoginPage/AdminLoginPage.tsx b/src/pages/AdminLoginPage/AdminLoginPage.tsx index 1de4efc..d31c011 100644 --- a/src/pages/AdminLoginPage/AdminLoginPage.tsx +++ b/src/pages/AdminLoginPage/AdminLoginPage.tsx @@ -1,7 +1,7 @@ -import * as React from "react"; +import React from "react"; import { Helmet } from "react-helmet"; import { Redirect } from "react-router-dom"; -import * as qs from "query-string"; +import qs from "query-string"; import { generateToken, setTokenCookie, isAuthenticated } from "../../auth"; import "./AdminLoginPage.scss"; diff --git a/src/pages/AdminLogoutPage/AdminLogoutPage.tsx b/src/pages/AdminLogoutPage/AdminLogoutPage.tsx index 06d102a..38e7181 100644 --- a/src/pages/AdminLogoutPage/AdminLogoutPage.tsx +++ b/src/pages/AdminLogoutPage/AdminLogoutPage.tsx @@ -1,4 +1,4 @@ -import * as React from "react"; +import React from "react"; import { Redirect } from "react-router-dom"; import { deleteTokenCookie } from "../../auth"; diff --git a/src/pages/AdminSignupPage/AdminSignupPage.tsx b/src/pages/AdminSignupPage/AdminSignupPage.tsx index 8bd5c04..9b582e4 100644 --- a/src/pages/AdminSignupPage/AdminSignupPage.tsx +++ b/src/pages/AdminSignupPage/AdminSignupPage.tsx @@ -1,4 +1,4 @@ -import * as React from "react"; +import React from "react"; import { Helmet } from "react-helmet"; import { formatRelative } from "date-fns"; import Anchor from "../../components/Anchor"; @@ -6,7 +6,7 @@ import Anchor from "../../components/Anchor"; import "./AdminSignupPage.scss"; import { SignupForm, getForms } from "../../models/SignupForm"; import { StaticContext } from "../../server/StaticContext"; -import * as AddIcon from "../../assets/img/add-icon.png"; +import AddIcon from "../../assets/img/add-icon.png"; export interface AdminSignupPageProps { staticContext: StaticContext; diff --git a/src/pages/CommonPage/CommonPage.tsx b/src/pages/CommonPage/CommonPage.tsx index f9c6f4a..5b4ae48 100644 --- a/src/pages/CommonPage/CommonPage.tsx +++ b/src/pages/CommonPage/CommonPage.tsx @@ -1,4 +1,4 @@ -import * as React from "react"; +import React from "react"; import Header from "../../components/Header"; import Footer from "../../components/Footer"; diff --git a/src/pages/ContactsPage/ContactsPage.tsx b/src/pages/ContactsPage/ContactsPage.tsx index 349b587..298a866 100644 --- a/src/pages/ContactsPage/ContactsPage.tsx +++ b/src/pages/ContactsPage/ContactsPage.tsx @@ -1,4 +1,4 @@ -import * as React from "react"; +import React from "react"; import { Helmet } from "react-helmet"; import "./ContactsPage.scss"; import { ColorEnum, getColor, getHoverColor } from "../../components/ColorDiv/ColorDiv"; diff --git a/src/pages/CorporatePage/CorporatePage.tsx b/src/pages/CorporatePage/CorporatePage.tsx index b4af626..222843a 100644 --- a/src/pages/CorporatePage/CorporatePage.tsx +++ b/src/pages/CorporatePage/CorporatePage.tsx @@ -1,4 +1,4 @@ -import * as React from "react"; +import React from "react"; import { Helmet } from "react-helmet"; import "./CorporatePage.scss"; diff --git a/src/pages/EventCreatePage/EventCreatePage.tsx b/src/pages/EventCreatePage/EventCreatePage.tsx index d944cb8..03b59d2 100644 --- a/src/pages/EventCreatePage/EventCreatePage.tsx +++ b/src/pages/EventCreatePage/EventCreatePage.tsx @@ -1,4 +1,4 @@ -import * as React from "react"; +import React from "react"; import { Helmet } from "react-helmet"; import "./EventCreatePage.scss"; import { isAuthenticated } from "../../auth"; diff --git a/src/pages/EventPage/EventPage.tsx b/src/pages/EventPage/EventPage.tsx index 6cd3797..06ff827 100644 --- a/src/pages/EventPage/EventPage.tsx +++ b/src/pages/EventPage/EventPage.tsx @@ -1,4 +1,4 @@ -import * as React from "react"; +import React from "react"; import { Helmet } from "react-helmet"; import "./EventPage.scss"; import { Event, getEvent } from "../../models/Event"; diff --git a/src/pages/FeedCreatePage/FeedCreatePage.tsx b/src/pages/FeedCreatePage/FeedCreatePage.tsx index f269601..922b40e 100644 --- a/src/pages/FeedCreatePage/FeedCreatePage.tsx +++ b/src/pages/FeedCreatePage/FeedCreatePage.tsx @@ -1,4 +1,4 @@ -import * as React from "react"; +import React from "react"; import { Helmet } from "react-helmet"; import "./FeedCreatePage.scss"; import { isAuthenticated } from "../../auth"; diff --git a/src/pages/FreshmenPage/FreshmenPage.tsx b/src/pages/FreshmenPage/FreshmenPage.tsx index 6c32014..b64d549 100644 --- a/src/pages/FreshmenPage/FreshmenPage.tsx +++ b/src/pages/FreshmenPage/FreshmenPage.tsx @@ -1,4 +1,4 @@ -import * as React from "react"; +import React from "react"; import { Helmet } from "react-helmet"; import "./FreshmenPage.scss"; diff --git a/src/pages/FrontPage/FrontPage.tsx b/src/pages/FrontPage/FrontPage.tsx index 3e58329..7a36986 100644 --- a/src/pages/FrontPage/FrontPage.tsx +++ b/src/pages/FrontPage/FrontPage.tsx @@ -1,4 +1,4 @@ -import * as React from "react"; +import React from "react"; import "./FrontPage.scss"; import appStore from "../../stores/AppStore"; import Card from "../../components/Card"; diff --git a/src/pages/GuildPage/GuildPage.tsx b/src/pages/GuildPage/GuildPage.tsx index c100411..85b6b50 100644 --- a/src/pages/GuildPage/GuildPage.tsx +++ b/src/pages/GuildPage/GuildPage.tsx @@ -1,4 +1,4 @@ -import * as React from "react"; +import React from "react"; import { Helmet } from "react-helmet"; import "./GuildPage.scss"; import PageSection from "../../components/PageSection"; diff --git a/src/pages/InEnglishPage/InEnglishPage.tsx b/src/pages/InEnglishPage/InEnglishPage.tsx index c2dff29..7c15fb4 100644 --- a/src/pages/InEnglishPage/InEnglishPage.tsx +++ b/src/pages/InEnglishPage/InEnglishPage.tsx @@ -1,4 +1,4 @@ -import * as React from "react"; +import React from "react"; import { Helmet } from "react-helmet"; import "./InEnglishPage.scss"; diff --git a/src/pages/NotFoundPage/NotFoundPage.tsx b/src/pages/NotFoundPage/NotFoundPage.tsx index 036ffed..6f80494 100644 --- a/src/pages/NotFoundPage/NotFoundPage.tsx +++ b/src/pages/NotFoundPage/NotFoundPage.tsx @@ -1,4 +1,4 @@ -import * as React from "react"; +import React from "react"; import { Helmet } from "react-helmet"; import "./NotFoundPage.scss"; diff --git a/src/pages/SignUpPage/SignUpPage.tsx b/src/pages/SignUpPage/SignUpPage.tsx index e8668a8..47ede05 100644 --- a/src/pages/SignUpPage/SignUpPage.tsx +++ b/src/pages/SignUpPage/SignUpPage.tsx @@ -1,4 +1,4 @@ -import * as React from "react"; +import React from "react"; import { Helmet } from "react-helmet"; import Form from "react-jsonschema-form"; import "./SignUpPage.scss"; diff --git a/src/pages/SignupCreatePage/SignupCreatePage.tsx b/src/pages/SignupCreatePage/SignupCreatePage.tsx index 4e67ba0..99dac3a 100644 --- a/src/pages/SignupCreatePage/SignupCreatePage.tsx +++ b/src/pages/SignupCreatePage/SignupCreatePage.tsx @@ -1,4 +1,4 @@ -import * as React from "react"; +import React from "react"; import { Helmet } from "react-helmet"; import { Link } from "react-router-dom"; import "./SignupCreatePage.scss"; diff --git a/src/pages/StudiesPage/StudiesPage.tsx b/src/pages/StudiesPage/StudiesPage.tsx index 7069942..a413550 100644 --- a/src/pages/StudiesPage/StudiesPage.tsx +++ b/src/pages/StudiesPage/StudiesPage.tsx @@ -1,4 +1,4 @@ -import * as React from "react"; +import React from "react"; import { Helmet } from "react-helmet"; import "./StudiesPage.scss"; diff --git a/src/routes.tsx b/src/routes.tsx index 24e7778..1059deb 100644 --- a/src/routes.tsx +++ b/src/routes.tsx @@ -1,4 +1,4 @@ -import * as React from "react"; +import React from "react"; import { Switch, Route, Redirect } from "react-router-dom"; import { Helmet } from "react-helmet"; import FrontPage from "./pages/FrontPage"; diff --git a/src/server/App.tsx b/src/server/App.tsx index 0f39eca..1d26c4c 100644 --- a/src/server/App.tsx +++ b/src/server/App.tsx @@ -1,4 +1,4 @@ -import * as React from "react"; +import React from "react"; import { StaticRouter } from "react-router-dom"; import Routes from "../routes"; diff --git a/src/server/index.ts b/src/server/index.ts index 125534f..4fa57ab 100644 --- a/src/server/index.ts +++ b/src/server/index.ts @@ -1,20 +1,20 @@ -import * as React from "react"; +import React from "react"; import { Helmet } from "react-helmet"; -import * as express from "express"; +import express from "express"; import { renderToString } from "react-dom/server"; -import * as morgan from "morgan"; -import * as helmet from "helmet"; -import * as compression from "compression"; +import morgan from "morgan"; +import helmet from "helmet"; +import compression from "compression"; -import * as dotenv from "dotenv"; +import dotenv from "dotenv"; dotenv.config(); console.log(`API_URL: ${process.env.API_URL}`); import App from "./App"; -import * as fs from "fs"; -import * as path from "path"; +import fs from "fs"; +import path from "path"; import { StaticContext } from "./StaticContext"; const port = 3000; From 51e27a45103fe4d09835f8cf2f6c2dc90b6b7f1d Mon Sep 17 00:00:00 2001 From: Aarni Halinen Date: Fri, 3 Jul 2020 15:21:30 +0300 Subject: [PATCH 12/56] Fix type error --- package.json | 1 - src/pages/AdminLoginPage/AdminLoginPage.tsx | 3 ++- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index e75acd6..7810842 100644 --- a/package.json +++ b/package.json @@ -128,7 +128,6 @@ "react-beautiful-dnd": "10.1.1", "react-helmet": "5.2.1", "react-jsonschema-form": "^1.8.1", - "react-router": "4.3.1", "react-router-dom": "4.3.1", "react-router-hash-link": "1.2.1", "shortid": "2.2.14", diff --git a/src/pages/AdminLoginPage/AdminLoginPage.tsx b/src/pages/AdminLoginPage/AdminLoginPage.tsx index d31c011..c5d830f 100644 --- a/src/pages/AdminLoginPage/AdminLoginPage.tsx +++ b/src/pages/AdminLoginPage/AdminLoginPage.tsx @@ -91,7 +91,8 @@ class AdminLoginPage extends React.Component Date: Fri, 3 Jul 2020 16:04:28 +0300 Subject: [PATCH 13/56] Placeholder CorporatePage --- src/pages/CorporatePage/CorporatePage.tsx | 82 ++++++++++++++++++++++- 1 file changed, 81 insertions(+), 1 deletion(-) diff --git a/src/pages/CorporatePage/CorporatePage.tsx b/src/pages/CorporatePage/CorporatePage.tsx index 222843a..5ec8790 100644 --- a/src/pages/CorporatePage/CorporatePage.tsx +++ b/src/pages/CorporatePage/CorporatePage.tsx @@ -1,6 +1,17 @@ import React from "react"; import { Helmet } from "react-helmet"; import "./CorporatePage.scss"; +import PageSection from "../../components/PageSection"; +import { ColorEnum } from "../../components/ColorDiv/ColorDiv"; +import HeroMainSection from "../../components/HeroMainSection"; +import HeroAsideSection from "../../components/HeroAsideSection"; +import HeroAsideItem from "../../components/HeroAsideItem"; +import AsideSection from "../../components/AsideSection"; +import MainSection from "../../components/MainSection/index"; +import PageLink from "../../components/PageLink/index"; +import Ribbon from "../../components/Ribbon/index"; +import TextAnchor from "../../components/TextAnchor/index"; +import { TextSize } from "../../components/TextAnchor/TextAnchor"; export interface CorporatePageProps {} export interface CorporatePageState {} @@ -12,7 +23,76 @@ class CorporatePage extends React.Component - Corporate Page + + +

Tee yhteistyötä tulevaisuuden huippuosaajien kanssa!

+

+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed vehicula aliquam enim, in lacinia nunc rutrum fringilla. Phasellus dui dolor, pellentesque vitae feugiat non, maximus in felis. Praesent feugiat vehicula mi, sed tincidunt enim venenatis quis. In euismod gravida ullamcorper. Phasellus a sagittis nisi, vitae blandit ipsum. Nunc rhoncus ultrices ante, id commodo dolor convallis id. Morbi ullamcorper vulputate risus id sodales. +

+
+ + + + + +
+ + + +

Yhteistyömahdollisuudet

+ +

TODO: Tähän nostoja yhteistyöstä! Yhteistyömahdollisuuksista voi tiedustella lisää killan yrityssuhdemestarilta.

+ +
Yritysbrunssi
+

Yritysbrunssi on Sähköinsinöörikillan ja bioinformaatioteknologian ainejärjestö Inkubion syksyllä järjestämä yritystapahtuma. Tapahtumassa luodaan yrityksille mahdollisuus tavata tulevaisuuden ammattilaisia maukkaan brunssin lomassa.

+ +
Haalarimainonta
+

Sähköinsinöörikillan ensimmäisen vuoden opiskelijat saavat opiskelijahaalarinsa heti syksyn ensimmäisenä päivänä. Yrityksien on mahdollista ostaa mainostilaa haalareista ja samalla lunastaa esiintymispaikka haalareiden luovutustilaisuuteen, "Haalarigaalaan". Tilaisuus on erinomainen paikka jäädä heti uusien opiskelijoiden mieleen.

+ +
Excursiot
+

Excursioiden tarkoituksena on tarjota opiskelijoille mahdollisuus tutustua yritysmaailmaan. Pidemmillä excursiolla hauskanpito ja teekkariperinteiden vaaliminen on tärkeä osa excursiota.

+ +
Potentiaalin Tasaus
+

Kiltamme viettää vuosijuhliaan helmikuun kolmantena lauantaina. Potentiaalin Tasaus on kiltamme juhlavin tapahtuma. Yrityksillä on mahdollisuus osallistua vuosijuhliin niin pienellä kuin suurellakin panoksella.

+
+ +
+ + Excursiosäännöt + + + Liity jäseneksi + +
+
+
+ + +

Mainos Sössöön?

+ +

Killan lehden mediakortin löydät täältä›

+
+
+
+ + + +

Työpaikkaulmoitukset

+

TODO: Miten listataan yritykset?

+ {/* TODO: Fix links */} +

Voit saada yrityksesi työpaikkailmoituksen listalle lähettämällä sen osoitteeseen sik-yritys@list.ayy.fi

+
+ +
); } From a90bd66995278010a26bc7ea8eb3c93a6f06eb9c Mon Sep 17 00:00:00 2001 From: Aarni Halinen Date: Fri, 3 Jul 2020 17:21:52 +0300 Subject: [PATCH 14/56] Fix Header --- src/components/Header/Header.scss | 12 ++++++++--- src/components/Header/Header.tsx | 36 +++++++++++++++++-------------- 2 files changed, 29 insertions(+), 19 deletions(-) diff --git a/src/components/Header/Header.scss b/src/components/Header/Header.scss index 527c5bd..fd5611b 100644 --- a/src/components/Header/Header.scss +++ b/src/components/Header/Header.scss @@ -6,9 +6,7 @@ top: 0; z-index: 10; display: flex; - flex-flow: row nowrap; - align-items: center; - padding: 0 1rem; + flex-flow: column nowrap; background-color: color(dark-blue); transition: all 200ms ease-out; @@ -16,6 +14,14 @@ transition: all 200ms ease-in; transform: translateY(-100%); } +} + +.nav-container { + display: flex; + flex-flow: row nowrap; + align-items: center; + width: 100%; + padding: 0 1rem; @media screen and (max-width: 600px - 1px) { flex-flow: column nowrap; diff --git a/src/components/Header/Header.tsx b/src/components/Header/Header.tsx index df42484..e1f25c8 100644 --- a/src/components/Header/Header.tsx +++ b/src/components/Header/Header.tsx @@ -7,6 +7,7 @@ import Navigation from "../Navigation"; import TitleImage from "../../assets/img/SIK_RGB_W_side.png"; import classNames from "classnames"; import throttle from "lodash/throttle"; +import { tr } from "date-fns/locale"; export interface HeaderProps { } export interface HeaderState { @@ -49,31 +50,32 @@ const renderNavigationMobileItems = () => { ); } +const PREVENT_IS_HIDDEN_Y = 150; + const Header: FC = () => { const [mobileMenuOpen, setMobileMenuOpen] = useState(false); const [isHidden, setHidden] = useState(false); - const yCoord = useRef(0); - const preventIsHiddenWhenYBelow = 150; const handleScroll = () => { const newCoord = window.pageYOffset; - if (newCoord > yCoord.current && newCoord > preventIsHiddenWhenYBelow) { - yCoord.current = newCoord; + if (!mobileMenuOpen && newCoord > yCoord.current && newCoord > PREVENT_IS_HIDDEN_Y) { setHidden(true); - } else if (newCoord < yCoord.current) { - yCoord.current = newCoord; + } else { setHidden(false); } + yCoord.current = newCoord; }; + const handleMobileMenuClick = () => setMobileMenuOpen(!mobileMenuOpen); + useEffect(() => { const func = throttle(handleScroll, 200); + // Prevents hide when clicking mobileMenuOpen + handleScroll(); window.addEventListener("scroll", func); return () => window.removeEventListener("scroll", func); - }, []); - - const handleMobileMenuClick = () => setMobileMenuOpen(!mobileMenuOpen); + }, [isHidden, mobileMenuOpen]); const desktopItems = renderNavigationDesktopItems(); const mobileItems = renderNavigationMobileItems(); @@ -85,13 +87,15 @@ const Header: FC = () => { return (
- - - - +
+ + + + +
From 7bae47d5e03c17ac58bfe1bda7d60e1eb8de9e7a Mon Sep 17 00:00:00 2001 From: Aarni Halinen Date: Fri, 3 Jul 2020 18:07:56 +0300 Subject: [PATCH 15/56] Studies page placeholders --- src/pages/StudiesPage/StudiesPage.tsx | 78 ++++++++++++++++++++++++++- 1 file changed, 77 insertions(+), 1 deletion(-) diff --git a/src/pages/StudiesPage/StudiesPage.tsx b/src/pages/StudiesPage/StudiesPage.tsx index a413550..ebf4a73 100644 --- a/src/pages/StudiesPage/StudiesPage.tsx +++ b/src/pages/StudiesPage/StudiesPage.tsx @@ -1,6 +1,17 @@ import React from "react"; import { Helmet } from "react-helmet"; import "./StudiesPage.scss"; +import PageSection from "../../components/PageSection/index"; +import HeroMainSection from "../../components/HeroMainSection/index"; +import HeroAsideSection from "../../components/HeroAsideSection/index"; +import HeroAsideItem from "../../components/HeroAsideItem/index"; +import AsideSection from "../../components/AsideSection/index"; +import MainSection from "../../components/MainSection/index"; +import { ColorEnum } from "../../components/ColorDiv/ColorDiv"; +import PageLink from "../../components/PageLink/index"; +import Ribbon from "../../components/Ribbon/index"; +import TextAnchor from "../../components/TextAnchor/index"; +import { TextSize } from "../../components/TextAnchor/TextAnchor"; export interface StudiesPageProps {} export interface StudiesPageState {} @@ -12,7 +23,72 @@ class StudiesPage extends React.Component { - Studies Page + + +

Suomen parasta elektroniikan opetusta

+

+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed vehicula aliquam enim, in lacinia nunc rutrum fringilla. Phasellus dui dolor, pellentesque vitae feugiat non, maximus in felis. Praesent feugiat vehicula mi, sed tincidunt enim venenatis quis. In euismod gravida ullamcorper. Phasellus a sagittis nisi, vitae blandit ipsum. Nunc rhoncus ultrices ante, id commodo dolor convallis id. Morbi ullamcorper vulputate risus id sodales. +

+
+ + + + + +
+ + + +

Abeille

+ +

TODO: Tähän nostoja yhteistyöstä! Yhteistyömahdollisuuksista voi tiedustella lisää killan yrityssuhdemestarilta.

+ +
Lorem
+

Yritysbrunssi on Sähköinsinöörikillan ja bioinformaatioteknologian ainejärjestö Inkubion syksyllä järjestämä yritystapahtuma. Tapahtumassa luodaan yrityksille mahdollisuus tavata tulevaisuuden ammattilaisia maukkaan brunssin lomassa.

+ +
Ipsum
+

Sähköinsinöörikillan ensimmäisen vuoden opiskelijat saavat opiskelijahaalarinsa heti syksyn ensimmäisenä päivänä. Yrityksien on mahdollista ostaa mainostilaa haalareista ja samalla lunastaa esiintymispaikka haalareiden luovutustilaisuuteen, "Haalarigaalaan". Tilaisuus on erinomainen paikka jäädä heti uusien opiskelijoiden mieleen.

+ +
Raketteja ja mikropiirejä
+

Excursioiden tarkoituksena on tarjota opiskelijoille mahdollisuus tutustua yritysmaailmaan. Pidemmillä excursiolla hauskanpito ja teekkariperinteiden vaaliminen on tärkeä osa excursiota.

+
+ +
+ + Kurssitarjonta + + + Liity jäseneksi + +
+
+
+ + +

Hae opiskelemaan!

+ +

Lue lisää Aallon sivuilta

+
+
+
+ + + +

Yliopiston järjestelmiä

+

TODO: Tänne varmaan mielummin Akateemiset komiteat etc.

+

Valmistuvalle juttuja, oodi, tenttiarkisto etc.

+
+ +
); } From 804b0e736812cd7e92cf7c5b0707c8cece23e94e Mon Sep 17 00:00:00 2001 From: Aarni Halinen Date: Fri, 3 Jul 2020 20:36:20 +0300 Subject: [PATCH 16/56] Freshmen placeholder page --- src/pages/FreshmenPage/FreshmenPage.tsx | 103 +++++++++++++++++++++++- 1 file changed, 102 insertions(+), 1 deletion(-) diff --git a/src/pages/FreshmenPage/FreshmenPage.tsx b/src/pages/FreshmenPage/FreshmenPage.tsx index b64d549..56b679c 100644 --- a/src/pages/FreshmenPage/FreshmenPage.tsx +++ b/src/pages/FreshmenPage/FreshmenPage.tsx @@ -1,6 +1,18 @@ import React from "react"; import { Helmet } from "react-helmet"; import "./FreshmenPage.scss"; +import PageSection from "../../components/PageSection/index"; +import HeroMainSection from "../../components/HeroMainSection/index"; +import HeroAsideSection from "../../components/HeroAsideSection/index"; +import HeroAsideItem from "../../components/HeroAsideItem/index"; +import AsideSection from "../../components/AsideSection/index"; +import MainSection from "../../components/MainSection/index"; +import { ColorEnum } from "../../components/ColorDiv/ColorDiv"; +import PageLink from "../../components/PageLink/index"; +import Ribbon from "../../components/Ribbon/index"; +import TextAnchor from "../../components/TextAnchor/index"; +import { TextSize } from "../../components/TextAnchor/TextAnchor"; +import InfoBox from "../../components/InfoBox/index"; export interface FreshmenPageProps {} export interface FreshmenPageState {} @@ -12,7 +24,96 @@ class FreshmenPage extends React.Component - Freshmen Page + + +

Tervetuloa opiskelemaan Otaniemeen!

+

+ Me olemme Emmaleena ja Jonna, sinun Fuksikapteenisi. Päätehtävämme on huolehtia fuksivuodestasi Aalto-yliopiston Sähköinsinöörikillassa. +

+

Tämä on fuksien oma etusivu ja olemmekin keränneet tänne kaikki tärkeimmät tiedot, joita fuksivuotenasi tarvitset. Tietysti kannattaa katsoa myös yleisiä sivuja, sillä tänne ei mahdu kaikki, mitä killassa tapahtuu. +

+
+ + + + + + +
+ + + +

Onnittelut hyvästä opiskeluvalinnasta

+ +
Lorem
+

+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed vehicula aliquam enim, in lacinia nunc rutrum fringilla. Phasellus dui dolor, pellentesque vitae feugiat non, maximus in felis. Praesent feugiat vehicula mi, sed tincidunt enim venenatis quis. In euismod gravida ullamcorper. Phasellus a sagittis nisi, vitae blandit ipsum. Nunc rhoncus ultrices ante, id commodo dolor convallis id. Morbi ullamcorper vulputate risus id sodales. +

+
Ipsum
+

+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed vehicula aliquam enim, in lacinia nunc rutrum fringilla. Phasellus dui dolor, pellentesque vitae feugiat non, maximus in felis. Praesent feugiat vehicula mi, sed tincidunt enim venenatis quis. In euismod gravida ullamcorper. Phasellus a sagittis nisi, vitae blandit ipsum. Nunc rhoncus ultrices ante, id commodo dolor convallis id. Morbi ullamcorper vulputate risus id sodales. +

+
Raketteja ja mikropiirejä
+

+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed vehicula aliquam enim, in lacinia nunc rutrum fringilla. Phasellus dui dolor, pellentesque vitae feugiat non, maximus in felis. Praesent feugiat vehicula mi, sed tincidunt enim venenatis quis. In euismod gravida ullamcorper. Phasellus a sagittis nisi, vitae blandit ipsum. Nunc rhoncus ultrices ante, id commodo dolor convallis id. Morbi ullamcorper vulputate risus id sodales. +

+
+ +
+ + Fuksikipparit tavoitat + + + Liity jäseneksi + + + Fuksipisteohje + +
+
+ +
Telegram?
+

+ Telegram on pikaviestinpalvelu, jota käytetään otaniemessä paljon. Hieman samanlainen kuin Whatsapp, mutta ominaisuuksiltaan paremmaksi todettu. Lisätietoja: https://telegram.org/faq +

+

+ SIK:n fukseilla on oma Telegram-ryhmä, jonne pääset liitymään tästä. +

+ +
+
+
+
+ + +

Killassa tapahtuu kaikenlaista!

+ +

Seuraa killan tapahtumia

+
+
+
+ + + +

Isoryhmät

+

Lorem jotain ISOryhmiä X kpl

+

Mikä ihmeen ISO...

+

TODO: Kuvia

+
+ +
); } From 34f65bd1be2959bd2b9726e7e50bf3dd7983cac3 Mon Sep 17 00:00:00 2001 From: Aarni Halinen Date: Fri, 3 Jul 2020 20:40:59 +0300 Subject: [PATCH 17/56] Remove /arkisto page --- src/components/AdminSidebar/AdminSidebar.tsx | 2 +- src/components/Footer/Footer.tsx | 4 ++-- src/components/Header/Header.tsx | 4 ++-- src/pages/AdminFrontPage/AdminFrontPage.tsx | 2 +- src/pages/CorporatePage/CorporatePage.tsx | 2 +- src/pages/GuildPage/GuildPage.tsx | 2 +- src/pages/StudiesPage/StudiesPage.tsx | 2 +- src/routes.tsx | 1 - 8 files changed, 9 insertions(+), 10 deletions(-) diff --git a/src/components/AdminSidebar/AdminSidebar.tsx b/src/components/AdminSidebar/AdminSidebar.tsx index ef84fe7..04fcd75 100644 --- a/src/components/AdminSidebar/AdminSidebar.tsx +++ b/src/components/AdminSidebar/AdminSidebar.tsx @@ -16,7 +16,7 @@ class AdminSidebar extends React.Component Events Feed Signup forms - Files + Files Logout ); diff --git a/src/components/Footer/Footer.tsx b/src/components/Footer/Footer.tsx index dd641a5..c816204 100644 --- a/src/components/Footer/Footer.tsx +++ b/src/components/Footer/Footer.tsx @@ -28,8 +28,8 @@ class Footer extends React.Component {
Jäseneksi Palaute - Arkisto - Materiaalipankki + Arkisto + Materiaalipankki
diff --git a/src/components/Header/Header.tsx b/src/components/Header/Header.tsx index e1f25c8..76b8dad 100644 --- a/src/components/Header/Header.tsx +++ b/src/components/Header/Header.tsx @@ -20,7 +20,7 @@ const renderNavigationDesktopItems = () => { Toiminta Fuksi - Arkisto + Arkisto @@ -38,7 +38,7 @@ const renderNavigationMobileItems = () => { Toiminta Fuksi - Arkisto + Arkisto diff --git a/src/pages/AdminFrontPage/AdminFrontPage.tsx b/src/pages/AdminFrontPage/AdminFrontPage.tsx index 1a164a1..a6a5474 100644 --- a/src/pages/AdminFrontPage/AdminFrontPage.tsx +++ b/src/pages/AdminFrontPage/AdminFrontPage.tsx @@ -16,7 +16,7 @@ class AdminFrontPage extends React.ComponentSIK Admin Events Feed - Files + Files ); } diff --git a/src/pages/CorporatePage/CorporatePage.tsx b/src/pages/CorporatePage/CorporatePage.tsx index 5ec8790..7f8c9e6 100644 --- a/src/pages/CorporatePage/CorporatePage.tsx +++ b/src/pages/CorporatePage/CorporatePage.tsx @@ -66,7 +66,7 @@ class CorporatePage extends React.Component
- + Excursiosäännöt diff --git a/src/pages/GuildPage/GuildPage.tsx b/src/pages/GuildPage/GuildPage.tsx index 85b6b50..624cc42 100644 --- a/src/pages/GuildPage/GuildPage.tsx +++ b/src/pages/GuildPage/GuildPage.tsx @@ -124,7 +124,7 @@ class GuildPage extends React.Component {
Valtuuston toimintaa
-

Killan valtuusto valitaan marraskuussa pidettävillä vaaleilla yhdeksi vuodeksi kerrallaan. Vaaleissa ovat vaalikelpoisia ja äänioikeutettuja kaikki SIK:n varsinaiset jäsenet. Uuden valtuuston toiminta alkaa varsin pian valitsemisen jälkeen vaalikokouksessa, jossa todetaan uusi kokoonpano, valitaan puhemiehistö, killan hallituksen puheenjohtaja ja muut hallituksen jäsenet, toimihenkilöt, toimikuntien puheenjohtajat sekä tilintarkastajat. Toinen sääntömääräinen valtuuston kokous on helmikuinen vuosikokous, jossa käsitellään mm. edellisen vuoden toimintakertomus ja tilinpäätös, sekä kuluvan vuoden toimintasuunnitelma ja budjetti. Lisäksi valtuusto pitää tarpeelliseksi katsomanssa määrän kokouksia pitkin vuotta. Pöytäkirjat ja muut dokumentit lorem ipsum.

+

Killan valtuusto valitaan marraskuussa pidettävillä vaaleilla yhdeksi vuodeksi kerrallaan. Vaaleissa ovat vaalikelpoisia ja äänioikeutettuja kaikki SIK:n varsinaiset jäsenet. Uuden valtuuston toiminta alkaa varsin pian valitsemisen jälkeen vaalikokouksessa, jossa todetaan uusi kokoonpano, valitaan puhemiehistö, killan hallituksen puheenjohtaja ja muut hallituksen jäsenet, toimihenkilöt, toimikuntien puheenjohtajat sekä tilintarkastajat. Toinen sääntömääräinen valtuuston kokous on helmikuinen vuosikokous, jossa käsitellään mm. edellisen vuoden toimintakertomus ja tilinpäätös, sekä kuluvan vuoden toimintasuunnitelma ja budjetti. Lisäksi valtuusto pitää tarpeelliseksi katsomanssa määrän kokouksia pitkin vuotta. Pöytäkirjat ja muut dokumentit lorem ipsum.

Hallituksen toimintaa

Jokaisella hallituksen jäsenellä on oma vastuualueensa, jota hän hoitaa yhdessä mahdollisen toimikuntansa kanssa. Puheenjohtajan tehtävä on pitää langat käsissään, ja olla perillä kaikesta, mitä killassa tapahtuu. Hallitus tekee päätökset ja sopii menettelytavat viikottaisessa kokouksessaan. Hallitus on vastuussa kaikesta killan näkyvästä ja näkymättömästä toiminnasta, ja se on myös oikea osoite, jos joku asia vaivaa mieltä, tai mielessä on parannusehdotus mihin tahansa asiaan.

diff --git a/src/pages/StudiesPage/StudiesPage.tsx b/src/pages/StudiesPage/StudiesPage.tsx index ebf4a73..db12448 100644 --- a/src/pages/StudiesPage/StudiesPage.tsx +++ b/src/pages/StudiesPage/StudiesPage.tsx @@ -63,7 +63,7 @@ class StudiesPage extends React.Component {
- + Kurssitarjonta diff --git a/src/routes.tsx b/src/routes.tsx index 1059deb..440b449 100644 --- a/src/routes.tsx +++ b/src/routes.tsx @@ -45,7 +45,6 @@ const commonRoutes = [ { path: "/kilta", page: GuildPage }, { path: "/kilta/toiminta", page: ActualPage }, { path: "/kilta/fuksi", page: FreshmenPage }, - // { path: "/kilta/arkisto", page: ActualPage }, { path: "/opinnot_ja_ura", page: StudiesPage }, { path: "/yritysyhteistyo", page: CorporatePage }, { path: "/yhteystiedot", page: ContactsPage }, From 623a9e5cd2c63353be04e26625b209fd469d82d7 Mon Sep 17 00:00:00 2001 From: Aarni Halinen Date: Mon, 6 Jul 2020 16:03:01 +0300 Subject: [PATCH 18/56] Some ActualPage layout --- src/components/Accordion/Accordion.tsx | 6 +- .../HeroMainSection/HeroMainSection.scss | 4 + src/pages/ActualPage/ActualPage.tsx | 119 +++++++++++++++++- 3 files changed, 125 insertions(+), 4 deletions(-) diff --git a/src/components/Accordion/Accordion.tsx b/src/components/Accordion/Accordion.tsx index 15fc857..49dcbda 100644 --- a/src/components/Accordion/Accordion.tsx +++ b/src/components/Accordion/Accordion.tsx @@ -26,9 +26,9 @@ class Accordion extends React.Component { } handleClick() { - this.setState({ - isOpen: !this.state.isOpen, - }); + this.setState((prevState) => ({ + isOpen: !prevState.isOpen, + })); } render() { diff --git a/src/components/HeroMainSection/HeroMainSection.scss b/src/components/HeroMainSection/HeroMainSection.scss index f753026..38c3198 100644 --- a/src/components/HeroMainSection/HeroMainSection.scss +++ b/src/components/HeroMainSection/HeroMainSection.scss @@ -30,4 +30,8 @@ display: flex; flex-direction: column; min-width: 20%; + + &-row { + flex-direction: row; + } } diff --git a/src/pages/ActualPage/ActualPage.tsx b/src/pages/ActualPage/ActualPage.tsx index 5967204..d9ae78a 100644 --- a/src/pages/ActualPage/ActualPage.tsx +++ b/src/pages/ActualPage/ActualPage.tsx @@ -1,6 +1,19 @@ import React from "react"; import { Helmet } from "react-helmet"; import "./ActualPage.scss"; +import PageSection from "../../components/PageSection"; +import { ColorEnum } from "../../components/ColorDiv/ColorDiv"; +import HeroMainSection from "../../components/HeroMainSection"; +import HeroAsideSection from "../../components/HeroAsideSection"; +import HeroAsideItem from "../../components/HeroAsideItem"; +import AsideSection from "../../components/AsideSection"; +import MainSection from "../../components/MainSection/index"; +import PageLink from "../../components/PageLink/index"; +import Ribbon from "../../components/Ribbon/index"; +import TextAnchor from "../../components/TextAnchor/index"; +import { TextSize } from "../../components/TextAnchor/TextAnchor"; +import Button, { ButtonType } from "../../components/Button/index"; +import Accordion from "../../components/Accordion"; export interface ActualPageProps {} export interface ActualPageState {} @@ -12,7 +25,111 @@ class ActualPage extends React.Component { - Actual Page + + +
+

Yritystapahtumia ja vastapainoa opiskelulle

+

+ Teekkarielämä ei ole pelkkää saunomista, juhlimista ja muita huvituksia—tai no, on se sitäkin. +

+
+ + +
+
+
+

Kiltahuone sijaitsee Tuas-talossa (Maarintie 8)

+

Killan hallitus päivystää kiltahuoneella maanantaisin klo 12.15–13.15. Tuolloin voit ostaa kiltatuotteita, kuten esim. haalarimerkkejä tai laulukirjoja.

+

Kiltapäiväkerho Kiltis kokoontuu torstaisin klo XX.XX kiltahuoneella. Lorem ipsum dolor sit amet. Lämpimästi tervetuloa kaikki SIKkiläiset ja SIK-mieliset!

+
+
+ +

+ Kilta järjestää jäsenilleen jos jonkinlaista projektia ja toimintaa, muun muassa: +

+ + + + + + + + + + +
+
+ + +

Tapahtumat

+
+
+ + +

Uutiset

+
+
+ + +

Kuvia tapahtumista.

+ +
Kuvagalleria ›
+
+
+
+ Kuva-galleriasta hyviä kuvia 3kpl. (Esim. wireframen kuvat) + + +

Sinustako kilta-aktiivi?

+ +
Tule mukaan kiltatoimintaan ›
+
+
+
+ + + +

Yritystapahtumia ja vastapainoa opiskelulle

+

+ Toimintaa ylläpitää ja järjestää jaokset ja toimikunnat. +

+ + Jotain elepajasta + + + Jotain elepajasta + + + Jotain elepajasta + + + Jotain elepajasta + + + Jotain elepajasta + +
+ +
); } From 284864316b50f98cbc8d551201b0d3534f2e0361 Mon Sep 17 00:00:00 2001 From: Aarni Halinen Date: Mon, 6 Jul 2020 16:46:44 +0300 Subject: [PATCH 19/56] Refactor style enums to string literals --- src/components/ColorDiv/ColorDiv.tsx | 66 +++++---------------- src/components/Header/Header.tsx | 1 - src/components/PageLink/PageLink.tsx | 1 - src/components/SponsorReel/SponsorReel.tsx | 3 +- src/components/TextAnchor/TextAnchor.tsx | 45 +++++++------- src/pages/ActualPage/ActualPage.tsx | 21 +++---- src/pages/ContactsPage/ContactsPage.tsx | 17 +++--- src/pages/CorporatePage/CorporatePage.tsx | 26 ++++---- src/pages/EventPage/EventPage.tsx | 9 ++- src/pages/FreshmenPage/FreshmenPage.tsx | 26 ++++---- src/pages/FrontPage/FrontPage.tsx | 16 +++-- src/pages/GuildPage/GuildPage.tsx | 69 +++++++++++----------- src/pages/SignUpPage/SignUpPage.tsx | 3 +- src/pages/StudiesPage/StudiesPage.tsx | 26 ++++---- src/theme/colors.ts | 21 +++++++ src/theme/fontSizes.ts | 0 16 files changed, 161 insertions(+), 189 deletions(-) create mode 100644 src/theme/colors.ts create mode 100644 src/theme/fontSizes.ts diff --git a/src/components/ColorDiv/ColorDiv.tsx b/src/components/ColorDiv/ColorDiv.tsx index 90403d3..0dba70c 100644 --- a/src/components/ColorDiv/ColorDiv.tsx +++ b/src/components/ColorDiv/ColorDiv.tsx @@ -1,51 +1,13 @@ import React from "react"; import "./ColorDiv.scss"; - -export enum ColorEnum { - DarkBlue, - LightBlue, - White, - Black, - Grey1, - Grey2, - Orange1, - Orange2, - Blue, - LightTurquoise, - Green, - Sand, - Transparent, - Inherit, -} - -const colors = new Map([ - [ColorEnum.DarkBlue, "dark-blue"], - [ColorEnum.LightBlue, "light-blue"], - [ColorEnum.White, "white1"], - [ColorEnum.Black, "black1"], - [ColorEnum.Grey1, "grey1"], - [ColorEnum.Grey2, "grey2"], - [ColorEnum.Orange1, "orange1"], - [ColorEnum.Orange2, "orange2"], - [ColorEnum.Blue, "blue1"], - [ColorEnum.LightTurquoise, "light-turquoise"], - [ColorEnum.Green, "green1"], - [ColorEnum.Sand, "sand"], - [ColorEnum.Transparent, "transparent"], - [ColorEnum.Inherit, "inherit"] -]); - -export const getColor = (color: ColorEnum): string => `color-div__${colors.get(color)}`; -export const getBgColor = (color: ColorEnum): string => `color-div__background_${colors.get(color)}`; -export const getHoverColor = (color: ColorEnum): string => `color-div__${colors.get(color)}Hoverable`; -export const getBgHoverColor = (color: ColorEnum): string => `color-div__background_${colors.get(color)}Hoverable`; - +import { Colors, colorToClass, bgColorToClass, hoverColorToClass, bgHoverColorToClass } from "../../theme/colors"; +import classNames from "classnames"; export interface ColorDivProps extends React.HTMLAttributes { - textColor?: ColorEnum; - backgroundColor?: ColorEnum; - hoverColor?: ColorEnum; - backgroundHoverColor?: ColorEnum; + textColor?: Colors; + backgroundColor?: Colors; + hoverColor?: Colors; + backgroundHoverColor?: Colors; } export interface ColorDivState { } @@ -53,14 +15,16 @@ export interface ColorDivState { } class ColorDiv extends React.Component { render() { const { children, className, textColor, backgroundColor, hoverColor, backgroundHoverColor, ...props } = this.props; - const classNames = []; - if (className) classNames.push(className); - if (textColor !== undefined) classNames.push(getColor(textColor)); - if (backgroundColor !== undefined) classNames.push(getBgColor(backgroundColor)); - if (hoverColor !== undefined) classNames.push(getHoverColor(hoverColor)); - if (backgroundHoverColor !== undefined) classNames.push(getBgHoverColor(backgroundHoverColor)); + const classes = classNames( + className, + colorToClass(textColor), + bgColorToClass(backgroundColor), + hoverColorToClass(hoverColor), + bgHoverColorToClass(backgroundHoverColor) + ); + return ( -
+
{children}
); diff --git a/src/components/Header/Header.tsx b/src/components/Header/Header.tsx index 76b8dad..5a1ba3f 100644 --- a/src/components/Header/Header.tsx +++ b/src/components/Header/Header.tsx @@ -7,7 +7,6 @@ import Navigation from "../Navigation"; import TitleImage from "../../assets/img/SIK_RGB_W_side.png"; import classNames from "classnames"; import throttle from "lodash/throttle"; -import { tr } from "date-fns/locale"; export interface HeaderProps { } export interface HeaderState { diff --git a/src/components/PageLink/PageLink.tsx b/src/components/PageLink/PageLink.tsx index cece70f..5562210 100644 --- a/src/components/PageLink/PageLink.tsx +++ b/src/components/PageLink/PageLink.tsx @@ -1,7 +1,6 @@ import React from "react"; import "./PageLink.scss"; import TextAnchor from "../TextAnchor"; -import { TextSize } from "../TextAnchor/TextAnchor"; export interface PageLinkProps { to: string; diff --git a/src/components/SponsorReel/SponsorReel.tsx b/src/components/SponsorReel/SponsorReel.tsx index c7799bc..694cc3d 100644 --- a/src/components/SponsorReel/SponsorReel.tsx +++ b/src/components/SponsorReel/SponsorReel.tsx @@ -2,7 +2,6 @@ import React from "react"; import "./SponsorReel.scss"; import TextAnchor from "../TextAnchor"; import Anchor from "../Anchor"; -import { ColorEnum } from "../ColorDiv/ColorDiv"; export interface SponsorReelProps { } export interface SponsorReelState { } @@ -19,7 +18,7 @@ class SponsorReel extends React.Component {
- Haluatko kuulla lisää yhteistyöstä kanssamme? + Haluatko kuulla lisää yhteistyöstä kanssamme?
); } diff --git a/src/components/TextAnchor/TextAnchor.tsx b/src/components/TextAnchor/TextAnchor.tsx index b870f6e..d44877c 100644 --- a/src/components/TextAnchor/TextAnchor.tsx +++ b/src/components/TextAnchor/TextAnchor.tsx @@ -1,42 +1,45 @@ import React from "react"; import "./TextAnchor.scss"; -import { ColorEnum, getColor, getHoverColor } from "../ColorDiv/ColorDiv"; +import { Colors, colorToClass, hoverColorToClass } from "../../theme/colors"; import Anchor from "../Anchor"; +import classNames from "classnames"; -export enum TextSize { - Normal, - Small, - Large, - Ribbon, - SmallRibbon, -} +export type TextSize = + "normal" | + "small" | + "large" | + "ribbon" | + "small-ribbon"; -const sizes = new Map([ - [TextSize.Normal, ""], - [TextSize.Small, "text-anchor__small"], - [TextSize.Large, "text-anchor__large"], - [TextSize.SmallRibbon, "text-anchor__no-weight text-anchor__small"], - [TextSize.Ribbon, "text-anchor__no-weight"], + +const textSizeToClassName = new Map([ + ["normal", ""], + ["small", "text-anchor__small"], + ["large", "text-anchor__large"], + ["small-ribbon", "text-anchor__no-weight text-anchor__small"], + ["ribbon", "text-anchor__no-weight"], ]); export interface TextAnchorProps { size?: TextSize; to: string; - textColor?: ColorEnum; - hoverColor?: ColorEnum; + textColor?: Colors; + hoverColor?: Colors; } export interface TextAnchorState { } class TextAnchor extends React.Component { render() { const { children, size, to, textColor, hoverColor } = this.props; - const classColor = textColor !== undefined ? getColor(textColor) : getColor(ColorEnum.DarkBlue); - const classHoverColor = hoverColor !== undefined ? getHoverColor(hoverColor) : getHoverColor(ColorEnum.Blue); - const classSize = size !== undefined ? sizes.get(size) : sizes.get(TextSize.Normal); - const className = `text-anchor ${classSize} ${classColor} ${classHoverColor}`; + const classes = classNames( + "text-anchor", + colorToClass(textColor), + hoverColorToClass(hoverColor), + textSizeToClassName.get(size) + ) return ( - + {children} ); diff --git a/src/pages/ActualPage/ActualPage.tsx b/src/pages/ActualPage/ActualPage.tsx index d9ae78a..5cc799b 100644 --- a/src/pages/ActualPage/ActualPage.tsx +++ b/src/pages/ActualPage/ActualPage.tsx @@ -2,16 +2,13 @@ import React from "react"; import { Helmet } from "react-helmet"; import "./ActualPage.scss"; import PageSection from "../../components/PageSection"; -import { ColorEnum } from "../../components/ColorDiv/ColorDiv"; import HeroMainSection from "../../components/HeroMainSection"; import HeroAsideSection from "../../components/HeroAsideSection"; import HeroAsideItem from "../../components/HeroAsideItem"; import AsideSection from "../../components/AsideSection"; import MainSection from "../../components/MainSection/index"; -import PageLink from "../../components/PageLink/index"; import Ribbon from "../../components/Ribbon/index"; import TextAnchor from "../../components/TextAnchor/index"; -import { TextSize } from "../../components/TextAnchor/TextAnchor"; import Button, { ButtonType } from "../../components/Button/index"; import Accordion from "../../components/Accordion"; @@ -25,7 +22,7 @@ class ActualPage extends React.Component { - +

Yritystapahtumia ja vastapainoa opiskelulle

@@ -47,7 +44,7 @@ class ActualPage extends React.Component {

Kiltapäiväkerho Kiltis kokoontuu torstaisin klo XX.XX kiltahuoneella. Lorem ipsum dolor sit amet. Lämpimästi tervetuloa kaikki SIKkiläiset ja SIK-mieliset!

- +

Kilta järjestää jäsenilleen jos jonkinlaista projektia ja toimintaa, muun muassa:

@@ -78,34 +75,34 @@ class ActualPage extends React.Component {
- +

Tapahtumat

- +

Uutiset

- +

Kuvia tapahtumista.

- +
Kuvagalleria ›
Kuva-galleriasta hyviä kuvia 3kpl. (Esim. wireframen kuvat) - +

Sinustako kilta-aktiivi?

- +
Tule mukaan kiltatoimintaan ›
- +

Yritystapahtumia ja vastapainoa opiskelulle

diff --git a/src/pages/ContactsPage/ContactsPage.tsx b/src/pages/ContactsPage/ContactsPage.tsx index 298a866..797d503 100644 --- a/src/pages/ContactsPage/ContactsPage.tsx +++ b/src/pages/ContactsPage/ContactsPage.tsx @@ -1,12 +1,11 @@ import React from "react"; import { Helmet } from "react-helmet"; import "./ContactsPage.scss"; -import { ColorEnum, getColor, getHoverColor } from "../../components/ColorDiv/ColorDiv"; import { StaticContext } from "../../server/StaticContext"; import PageSection from "../../components/PageSection"; import { getContacts, Occupation, Committee, getCommittees } from "../../models/Contacts"; import CommitteeContainer from "../../components/CommitteeContainer"; -import Anchor from "../../components/Anchor/index"; +import TextAnchor from "../../components/TextAnchor/index"; interface ContactsPageProps { staticContext: StaticContext; @@ -82,28 +81,30 @@ class ContactsPage extends React.Component - +

Asiaa olisi, mutta kehen ottaa yhteyttä?
Tämä sivu yrittää valottaa sen oikean ihmisen puhelinnumeroa ja sähköpostiosoitetta.

- +

- Hallitukseen saa yhteyden lähettämällä sähköpostia sik-hallitus@list.ayy.fi - +

{committees.map((committee, index) => { const order = committee.name_fi === "Toimikunnattomat" ? 1 : 0; return ( - + x.role.committee.name_fi === committee.name_fi)} /> ) diff --git a/src/pages/CorporatePage/CorporatePage.tsx b/src/pages/CorporatePage/CorporatePage.tsx index 7f8c9e6..d7e66e4 100644 --- a/src/pages/CorporatePage/CorporatePage.tsx +++ b/src/pages/CorporatePage/CorporatePage.tsx @@ -2,7 +2,6 @@ import React from "react"; import { Helmet } from "react-helmet"; import "./CorporatePage.scss"; import PageSection from "../../components/PageSection"; -import { ColorEnum } from "../../components/ColorDiv/ColorDiv"; import HeroMainSection from "../../components/HeroMainSection"; import HeroAsideSection from "../../components/HeroAsideSection"; import HeroAsideItem from "../../components/HeroAsideItem"; @@ -11,7 +10,6 @@ import MainSection from "../../components/MainSection/index"; import PageLink from "../../components/PageLink/index"; import Ribbon from "../../components/Ribbon/index"; import TextAnchor from "../../components/TextAnchor/index"; -import { TextSize } from "../../components/TextAnchor/TextAnchor"; export interface CorporatePageProps {} export interface CorporatePageState {} @@ -23,14 +21,14 @@ class CorporatePage extends React.Component - +

Tee yhteistyötä tulevaisuuden huippuosaajien kanssa!

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed vehicula aliquam enim, in lacinia nunc rutrum fringilla. Phasellus dui dolor, pellentesque vitae feugiat non, maximus in felis. Praesent feugiat vehicula mi, sed tincidunt enim venenatis quis. In euismod gravida ullamcorper. Phasellus a sagittis nisi, vitae blandit ipsum. Nunc rhoncus ultrices ante, id commodo dolor convallis id. Morbi ullamcorper vulputate risus id sodales.

- +
- - - + + +

Yhteistyömahdollisuudet

TODO: Tähän nostoja yhteistyöstä! Yhteistyömahdollisuuksista voi tiedustella lisää killan yrityssuhdemestarilta.

@@ -64,7 +62,7 @@ class CorporatePage extends React.ComponentPotentiaalin Tasaus

Kiltamme viettää vuosijuhliaan helmikuun kolmantena lauantaina. Potentiaalin Tasaus on kiltamme juhlavin tapahtuma. Yrityksillä on mahdollisuus osallistua vuosijuhliin niin pienellä kuin suurellakin panoksella.

- +
Excursiosäännöt @@ -75,23 +73,23 @@ class CorporatePage extends React.Component - +

Mainos Sössöön?

- +

Killan lehden mediakortin löydät täältä›

- - - + + +

Työpaikkaulmoitukset

TODO: Miten listataan yritykset?

{/* TODO: Fix links */}

Voit saada yrityksesi työpaikkailmoituksen listalle lähettämällä sen osoitteeseen sik-yritys@list.ayy.fi

- +
); diff --git a/src/pages/EventPage/EventPage.tsx b/src/pages/EventPage/EventPage.tsx index 06ff827..c3e2904 100644 --- a/src/pages/EventPage/EventPage.tsx +++ b/src/pages/EventPage/EventPage.tsx @@ -6,7 +6,6 @@ import { RouteComponentProps } from "react-router-dom"; import Button, { ButtonType } from "../../components/Button"; import Anchor from "../../components/Anchor"; import PageSection from "../../components/PageSection"; -import { ColorEnum } from "../../components/ColorDiv/ColorDiv"; import MainSection from "../../components/MainSection"; import AsideSection from "../../components/AsideSection/AsideSection"; @@ -52,9 +51,9 @@ class EventPage extends React.Component { - - - + + + {event.title_fi}

{event.title_fi}

@@ -75,7 +74,7 @@ class EventPage extends React.Component { )} - + ); diff --git a/src/pages/FreshmenPage/FreshmenPage.tsx b/src/pages/FreshmenPage/FreshmenPage.tsx index 56b679c..d961a82 100644 --- a/src/pages/FreshmenPage/FreshmenPage.tsx +++ b/src/pages/FreshmenPage/FreshmenPage.tsx @@ -7,11 +7,9 @@ import HeroAsideSection from "../../components/HeroAsideSection/index"; import HeroAsideItem from "../../components/HeroAsideItem/index"; import AsideSection from "../../components/AsideSection/index"; import MainSection from "../../components/MainSection/index"; -import { ColorEnum } from "../../components/ColorDiv/ColorDiv"; import PageLink from "../../components/PageLink/index"; import Ribbon from "../../components/Ribbon/index"; import TextAnchor from "../../components/TextAnchor/index"; -import { TextSize } from "../../components/TextAnchor/TextAnchor"; import InfoBox from "../../components/InfoBox/index"; export interface FreshmenPageProps {} @@ -24,7 +22,7 @@ class FreshmenPage extends React.Component - +

Tervetuloa opiskelemaan Otaniemeen!

@@ -33,7 +31,7 @@ class FreshmenPage extends React.Component

Tämä on fuksien oma etusivu ja olemmekin keränneet tänne kaikki tärkeimmät tiedot, joita fuksivuotenasi tarvitset. Tietysti kannattaa katsoa myös yleisiä sivuja, sillä tänne ei mahdu kaikki, mitä killassa tapahtuu.

- + linkText="Tsekkaa ISO-henkilöiden tiedot" />
- - - + + +

Onnittelut hyvästä opiskeluvalinnasta

Lorem
@@ -70,7 +68,7 @@ class FreshmenPage extends React.Component Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed vehicula aliquam enim, in lacinia nunc rutrum fringilla. Phasellus dui dolor, pellentesque vitae feugiat non, maximus in felis. Praesent feugiat vehicula mi, sed tincidunt enim venenatis quis. In euismod gravida ullamcorper. Phasellus a sagittis nisi, vitae blandit ipsum. Nunc rhoncus ultrices ante, id commodo dolor convallis id. Morbi ullamcorper vulputate risus id sodales.

- +
Fuksikipparit tavoitat @@ -96,23 +94,23 @@ class FreshmenPage extends React.Component
- +

Killassa tapahtuu kaikenlaista!

- +

Seuraa killan tapahtumia

- - - + + +

Isoryhmät

Lorem jotain ISOryhmiä X kpl

Mikä ihmeen ISO...

TODO: Kuvia

- +
); diff --git a/src/pages/FrontPage/FrontPage.tsx b/src/pages/FrontPage/FrontPage.tsx index 7a36986..83c6222 100644 --- a/src/pages/FrontPage/FrontPage.tsx +++ b/src/pages/FrontPage/FrontPage.tsx @@ -7,7 +7,6 @@ import { Post, getFeed } from "../../models/Feed"; import { StaticContext } from "../../server/StaticContext"; import PageSection from "../../components/PageSection"; -import { ColorEnum } from "../../components/ColorDiv/ColorDiv"; import PageLink from "../../components/PageLink/PageLink"; import HeroMainSection from "../../components/HeroMainSection"; @@ -17,7 +16,6 @@ import Ribbon from "../../components/Ribbon"; import SponsorReel from "../../components/SponsorReel"; import HeroAsideItem from "../../components/HeroAsideItem"; import TextAnchor from "../../components/TextAnchor"; -import { TextSize } from "../../components/TextAnchor/TextAnchor"; interface FrontPageProps { staticContext: StaticContext; @@ -92,7 +90,7 @@ class FrontPage extends React.Component { const { events, feed } = this.state; return (
- +

Aalto-yliopiston Sähköinsinöörikilta

@@ -109,7 +107,7 @@ class FrontPage extends React.Component {

- + {
- + {events.map(event => ( { - +

Sössöä vuodesta 1969.

- +

Lue opiskelijalehden viimeisin numero ›

@@ -192,7 +190,7 @@ class FrontPage extends React.Component { - + diff --git a/src/pages/GuildPage/GuildPage.tsx b/src/pages/GuildPage/GuildPage.tsx index 624cc42..988a1d1 100644 --- a/src/pages/GuildPage/GuildPage.tsx +++ b/src/pages/GuildPage/GuildPage.tsx @@ -10,7 +10,6 @@ import HeroAsideSection from "../../components/HeroAsideSection"; import HeroAsideItem from "../../components/HeroAsideItem"; import Ribbon from "../../components/Ribbon"; import InfoBox from "../../components/InfoBox"; -import { ColorEnum } from "../../components/ColorDiv/ColorDiv"; import Accordion from "../../components/Accordion"; import TextAnchor from "../../components/TextAnchor"; import { TextSize } from "../../components/TextAnchor/TextAnchor"; @@ -26,13 +25,13 @@ class GuildPage extends React.Component {
- +

Kilta koostuu sähkötekniikan ja elektroniikan (ELEC) tutkinto-ohjelmissa opiskelevista opiskelijoista

-

Vapaa-ajan jäsenpalvelujen lisäksi killan tehtävänä on edistää jäsentensä opintoja, tarjota uraohjausta ja fuksikasvatusta. Jokaiselle jäsenelle löytyy varmasti jotakin—kaukomaita, opiskelijalehti Sössöä, ja kiltaaktiivina pääset kartuttamaan kokemusta, josta on hyötyä myös työelämässä.

+

Vapaa-ajan jäsenpalvelujen lisäksi killan tehtävänä on edistää jäsentensä opintoja, tarjota uraohjausta ja fuksikasvatusta. Jokaiselle jäsenelle löytyy varmasti jotakin—kaukomaita, opiskelijalehti Sössöä, ja kiltaaktiivina pääset kartuttamaan kokemusta, josta on hyötyä myös työelämässä.

Arvot estrumquias doluptatur aut quam fugiti cus debit landisciis eatemperes eumquibus di blat que sim etus idis dolut labor ad magnat.

- + {
- - - + + +

Killan tehtävät ja tarina

-

Kilta tukee jäsentensä hyvinvointia ja tarjoaa vastapainoa opiskelulle. Kilta järjestää esimerkiksi urheilutapahtumia, kulttuurielämyksiä ja näiden lisäksi sitsejä ja saunailtoja. Valinnanvaraa on, joten tapahtumakalenterin aktiivisella seuraamisella saattaa olla hyvinkin miellyttäviä seuraamuksia. Voit myös itse järjestää mieleisesi tapahtuman killan tukemana, tai ehdottaa sitä killan toimitsijoille.

+

Kilta tukee jäsentensä hyvinvointia ja tarjoaa vastapainoa opiskelulle. Kilta järjestää esimerkiksi urheilutapahtumia, kulttuurielämyksiä ja näiden lisäksi sitsejä ja saunailtoja. Valinnanvaraa on, joten tapahtumakalenterin aktiivisella seuraamisella saattaa olla hyvinkin miellyttäviä seuraamuksia. Voit myös itse järjestää mieleisesi tapahtuman killan tukemana, tai ehdottaa sitä killan toimitsijoille.

-

Yhteistyössä korkeakoulun kanssa, kilta kehittää opetusta. Kilta on mukana kurssien kehittämisessä, valvoo kiltalaisten etua korkeakoulussa ja tuo korkeakoulun henkilöstöä lähemmäs kiltalaisia. Kilta avaa oven yritysmaailmaan järjestämällä yritysten kanssa excursioita, saunailtoja ja yritystapahtumia. Lisäksi killan kautta kuulee ensimmäisten joukossa uusista avoimista työpaikoista. Killalla on Otaniemen mukavin kiltahuone, jossa voi käydä hengähtämässä luentojen välillä, hakea apua vaikeisiin tehtäviin tai järjestää vaikka leffailtoja. Tämän lisäksi killalla on myös haastavampaan elektroniikkaharrasteluun sopivat tilat.

+

Yhteistyössä korkeakoulun kanssa, kilta kehittää opetusta. Kilta on mukana kurssien kehittämisessä, valvoo kiltalaisten etua korkeakoulussa ja tuo korkeakoulun henkilöstöä lähemmäs kiltalaisia. Kilta avaa oven yritysmaailmaan järjestämällä yritysten kanssa excursioita, saunailtoja ja yritystapahtumia. Lisäksi killan kautta kuulee ensimmäisten joukossa uusista avoimista työpaikoista. Killalla on Otaniemen mukavin kiltahuone, jossa voi käydä hengähtämässä luentojen välillä, hakea apua vaikeisiin tehtäviin tai järjestää vaikka leffailtoja. Tämän lisäksi killalla on myös haastavampaan elektroniikkaharrasteluun sopivat tilat.

Takana lähes satavuotinen historia
@@ -85,7 +84,7 @@ class GuildPage extends React.Component { määritelmä kuuluukin: “teekkarius on kaikkea sitä, mitä teekkarit tekevät”. Yksi asia meitä kaikkia kuitenkin yhdistää. Opiskelemme jotain tekniikkaan liittyvää täällä Aalto-yliopistossa. - Teekkariutta on vaikkapa toimiminen killoissa tai jossain AYY:n lukuisista + Teekkariutta on vaikkapa toimiminen killoissa tai jossain AYY:n lukuisista yhdistyksistä. Teekkariutta on yhtä lailla SIK:n tapahtumien järjestäminen tai niihin osallistuminen kuin vaikkapa laulaminen Polyteknikkojen Kuorossa tai sukeltaminen Polyteknikkojen sukelluskerho Kuplassa. Kaikille varmasti löytyy jotain itseä kiinnostavaa.

Teekkareilla, varsinkin otaniemeläisillä, on pitkä ja vahva historia. Siihen kannattaa @@ -94,7 +93,7 @@ class GuildPage extends React.Component { Teekkariuteen kuuluu olennaisena osana mukautuminen ajan vaatimuksiin. Jos asiat tehtäisiin aina vanhaa toistaen, ei voitaisi enää edes puhua teekkariudesta.

- +
Yliopiston jäsenedut @@ -110,27 +109,27 @@ class GuildPage extends React.Component {
- +

Killan hallinto koostuu XXX henkilöstä.

- - - + + +

Organisaatio

-

Sähköinsinöörikillassa toimeenpanovaltaa käyttää 3–13 kiltalaisen muodostama hallitus apunaan lukuisa määrä toimihenkilöitä. Hallituksen ja toimihenkilöt valitsee killan valtuusto, joka myös valvoo näiden toimintaa. Käytännössä valtuusto valitsee vaalikokouksessaan ensin uuden puheenjohtajan ja jää 1–2 viikon mittaiselle kokoustauolle. Tauon jälkeen puheenjohtaja esittelee valtuustolle ehdotuksensa hallitukseksi ja toimihenkilöiksi, ja valtuusto joko hyväksyy tai hylkää ehdotuksen noin tunnin kestävän kysely- ja esittelytuokion jälkeen. Hallituksen kuulumiset lorem.

+

Sähköinsinöörikillassa toimeenpanovaltaa käyttää 3–13 kiltalaisen muodostama hallitus apunaan lukuisa määrä toimihenkilöitä. Hallituksen ja toimihenkilöt valitsee killan valtuusto, joka myös valvoo näiden toimintaa. Käytännössä valtuusto valitsee vaalikokouksessaan ensin uuden puheenjohtajan ja jää 1–2 viikon mittaiselle kokoustauolle. Tauon jälkeen puheenjohtaja esittelee valtuustolle ehdotuksensa hallitukseksi ja toimihenkilöiksi, ja valtuusto joko hyväksyy tai hylkää ehdotuksen noin tunnin kestävän kysely- ja esittelytuokion jälkeen. Hallituksen kuulumiset lorem.

Valtuuston toimintaa
-

Killan valtuusto valitaan marraskuussa pidettävillä vaaleilla yhdeksi vuodeksi kerrallaan. Vaaleissa ovat vaalikelpoisia ja äänioikeutettuja kaikki SIK:n varsinaiset jäsenet. Uuden valtuuston toiminta alkaa varsin pian valitsemisen jälkeen vaalikokouksessa, jossa todetaan uusi kokoonpano, valitaan puhemiehistö, killan hallituksen puheenjohtaja ja muut hallituksen jäsenet, toimihenkilöt, toimikuntien puheenjohtajat sekä tilintarkastajat. Toinen sääntömääräinen valtuuston kokous on helmikuinen vuosikokous, jossa käsitellään mm. edellisen vuoden toimintakertomus ja tilinpäätös, sekä kuluvan vuoden toimintasuunnitelma ja budjetti. Lisäksi valtuusto pitää tarpeelliseksi katsomanssa määrän kokouksia pitkin vuotta. Pöytäkirjat ja muut dokumentit lorem ipsum.

+

Killan valtuusto valitaan marraskuussa pidettävillä vaaleilla yhdeksi vuodeksi kerrallaan. Vaaleissa ovat vaalikelpoisia ja äänioikeutettuja kaikki SIK:n varsinaiset jäsenet. Uuden valtuuston toiminta alkaa varsin pian valitsemisen jälkeen vaalikokouksessa, jossa todetaan uusi kokoonpano, valitaan puhemiehistö, killan hallituksen puheenjohtaja ja muut hallituksen jäsenet, toimihenkilöt, toimikuntien puheenjohtajat sekä tilintarkastajat. Toinen sääntömääräinen valtuuston kokous on helmikuinen vuosikokous, jossa käsitellään mm. edellisen vuoden toimintakertomus ja tilinpäätös, sekä kuluvan vuoden toimintasuunnitelma ja budjetti. Lisäksi valtuusto pitää tarpeelliseksi katsomanssa määrän kokouksia pitkin vuotta. Pöytäkirjat ja muut dokumentit lorem ipsum.

Hallituksen toimintaa
-

Jokaisella hallituksen jäsenellä on oma vastuualueensa, jota hän hoitaa yhdessä mahdollisen toimikuntansa kanssa. Puheenjohtajan tehtävä on pitää langat käsissään, ja olla perillä kaikesta, mitä killassa tapahtuu. Hallitus tekee päätökset ja sopii menettelytavat viikottaisessa kokouksessaan. Hallitus on vastuussa kaikesta killan näkyvästä ja näkymättömästä toiminnasta, ja se on myös oikea osoite, jos joku asia vaivaa mieltä, tai mielessä on parannusehdotus mihin tahansa asiaan.

+

Jokaisella hallituksen jäsenellä on oma vastuualueensa, jota hän hoitaa yhdessä mahdollisen toimikuntansa kanssa. Puheenjohtajan tehtävä on pitää langat käsissään, ja olla perillä kaikesta, mitä killassa tapahtuu. Hallitus tekee päätökset ja sopii menettelytavat viikottaisessa kokouksessaan. Hallitus on vastuussa kaikesta killan näkyvästä ja näkymättömästä toiminnasta, ja se on myös oikea osoite, jos joku asia vaivaa mieltä, tai mielessä on parannusehdotus mihin tahansa asiaan.

- +
Vuoden 2019 hallinto @@ -141,13 +140,13 @@ class GuildPage extends React.Component {
- + -

Kiltatoimintaa järjestää ja ylläpitää kilta-aktiivit, toimikunnat ja jaokset.

+

Kiltatoimintaa järjestää ja ylläpitää kilta-aktiivit, toimikunnat ja jaokset.

- +
Miksi alkaa kilta-aktiiviksi?

Näitä töitä tehdessä saa väkisinkin paljon uusia kavereita ja oppii monia palkallisessa työelämässä tarpeellisia taitoja. Eikä laajasta tuttavapiiristä ja monista kontakteista varmasti haittaa ole tulevaa työuraakaan ajatellen. Rahallista tai materiaalista hyötyä kiltatoiminnasta ei saa, eikä kukaan killan toimintaan mukaan tuleva sitä pyrikään tavoittelemaan. Mikä tärkeintä, kiltatoiminta on kivaa! @@ -162,16 +161,16 @@ class GuildPage extends React.Component { » Voit kokeilla ja oppia jotain sellaista, mitä et ikinä aikaisemmin ole tehnyt

- +
Runsaasti erilaisia tehtäviä

- Killassa on todella monenlaisia tehtäviä. Olitpa koodaaja, urheilija tai ammattimainen juhlija, killasta löytyy tekemistä juuri sinulle. Toimikunnissa sitoudut toimintaan vuodeksi kerrallaan. Jaostoiminta mahdollistaa kiltatoiminnan kokeilun pienemmässä mittakaavassa. Tehtäväkuvaukset lorem ipsum dolor sit amet alla. Jos ei löydy sopivaa lorem ipsum dolor sit amet, voit perustaa myös oman. + Killassa on todella monenlaisia tehtäviä. Olitpa koodaaja, urheilija tai ammattimainen juhlija, killasta löytyy tekemistä juuri sinulle. Toimikunnissa sitoudut toimintaan vuodeksi kerrallaan. Jaostoiminta mahdollistaa kiltatoiminnan kokeilun pienemmässä mittakaavassa. Tehtäväkuvaukset lorem ipsum dolor sit amet alla. Jos ei löydy sopivaa lorem ipsum dolor sit amet, voit perustaa myös oman.

- » Haluatko valtuustoon, hallitukseen tai toimariksi? + » Haluatko valtuustoon, hallitukseen tai toimariksi?

- » Toimihenkilönä pääset edistämään opintoja + » Toimihenkilönä pääset edistämään opintoja

» Lorem ipsum @@ -179,8 +178,8 @@ class GuildPage extends React.Component {

- - + +

Sähkötekniikan korkeakoulun toimikunnat

@@ -202,7 +201,7 @@ class GuildPage extends React.Component {

- +

Jaokset—kokeile kiltatoimintaa vapaammin

@@ -211,23 +210,23 @@ class GuildPage extends React.Component {

- +

Jäsenedut vuonna 2019

- - - + + +

Aalto-yliopiston tarjoamat monenlaiset edut

Sen lisäksi että kilta tarjoaa jäsenilleen palveluja ja aktiviteetteja, Aalto-yliopisto tarjoaa lorem ipsum dolor sit amet.

- » Download.aalto.fi Täältä voit ladata yliopiston tarjoamia ohjelmia ilmaiseksi. + » Download.aalto.fi Täältä voit ladata yliopiston tarjoamia ohjelmia ilmaiseksi.

- + Jäseneksi liittyminen on helppoa, hauskaa ja hyödyllistä 8 € jäsenmaksulla pääset nauttimaan kaikista jäseneduista. diff --git a/src/pages/SignUpPage/SignUpPage.tsx b/src/pages/SignUpPage/SignUpPage.tsx index 47ede05..5c88e63 100644 --- a/src/pages/SignUpPage/SignUpPage.tsx +++ b/src/pages/SignUpPage/SignUpPage.tsx @@ -5,7 +5,6 @@ import "./SignUpPage.scss"; import { getForm, SignupForm } from "../../models/SignupForm"; import { createSignup, Signup } from "../../models/Signup"; import PageSection from "../../components/PageSection"; -import { ColorEnum } from "../../components/ColorDiv/ColorDiv"; import { Question } from "../../components/SignupQuestionsWidget"; export interface SignUpPageProps { @@ -236,7 +235,7 @@ class SignUpPage extends React.Component { {statusMessage} - + {form} {signups} diff --git a/src/pages/StudiesPage/StudiesPage.tsx b/src/pages/StudiesPage/StudiesPage.tsx index db12448..0200ba8 100644 --- a/src/pages/StudiesPage/StudiesPage.tsx +++ b/src/pages/StudiesPage/StudiesPage.tsx @@ -7,11 +7,9 @@ import HeroAsideSection from "../../components/HeroAsideSection/index"; import HeroAsideItem from "../../components/HeroAsideItem/index"; import AsideSection from "../../components/AsideSection/index"; import MainSection from "../../components/MainSection/index"; -import { ColorEnum } from "../../components/ColorDiv/ColorDiv"; import PageLink from "../../components/PageLink/index"; import Ribbon from "../../components/Ribbon/index"; import TextAnchor from "../../components/TextAnchor/index"; -import { TextSize } from "../../components/TextAnchor/TextAnchor"; export interface StudiesPageProps {} export interface StudiesPageState {} @@ -23,14 +21,14 @@ class StudiesPage extends React.Component { - +

Suomen parasta elektroniikan opetusta

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed vehicula aliquam enim, in lacinia nunc rutrum fringilla. Phasellus dui dolor, pellentesque vitae feugiat non, maximus in felis. Praesent feugiat vehicula mi, sed tincidunt enim venenatis quis. In euismod gravida ullamcorper. Phasellus a sagittis nisi, vitae blandit ipsum. Nunc rhoncus ultrices ante, id commodo dolor convallis id. Morbi ullamcorper vulputate risus id sodales.

- + { linkText="Tietopaketti fukseille" />
- - - + + +

Abeille

TODO: Tähän nostoja yhteistyöstä! Yhteistyömahdollisuuksista voi tiedustella lisää killan yrityssuhdemestarilta.

@@ -61,7 +59,7 @@ class StudiesPage extends React.Component {
Raketteja ja mikropiirejä

Excursioiden tarkoituksena on tarjota opiskelijoille mahdollisuus tutustua yritysmaailmaan. Pidemmillä excursiolla hauskanpito ja teekkariperinteiden vaaliminen on tärkeä osa excursiota.

- +
Kurssitarjonta @@ -72,22 +70,22 @@ class StudiesPage extends React.Component {
- +

Hae opiskelemaan!

- +

Lue lisää Aallon sivuilta

- - - + + +

Yliopiston järjestelmiä

TODO: Tänne varmaan mielummin Akateemiset komiteat etc.

Valmistuvalle juttuja, oodi, tenttiarkisto etc.

- +
); diff --git a/src/theme/colors.ts b/src/theme/colors.ts new file mode 100644 index 0000000..8a3e0bc --- /dev/null +++ b/src/theme/colors.ts @@ -0,0 +1,21 @@ +export type Colors = + "dark-blue" | + "light-blue" | + "white1" | + "black1" | + "grey1" | + "grey2" | + "orange1" | + "orange2" | + "blue1" | + "light-turquoise" | + "green1" | + "sand" | + "transparent" | + "inherit"; + + +export const colorToClass = (color: Colors): string => `color-div__${color}`; +export const bgColorToClass = (color: Colors): string => `color-div__background_${color}`; +export const hoverColorToClass = (color: Colors): string => `color-div__${color}Hoverable`; +export const bgHoverColorToClass = (color: Colors): string => `color-div__background_${color}Hoverable`; diff --git a/src/theme/fontSizes.ts b/src/theme/fontSizes.ts new file mode 100644 index 0000000..e69de29 From 692247afe33a078a853e148b87e93beaf1f44b6f Mon Sep 17 00:00:00 2001 From: Aarni Halinen Date: Mon, 6 Jul 2020 17:00:07 +0300 Subject: [PATCH 20/56] Placeholder images --- src/pages/ActualPage/ActualPage.scss | 10 ++++++++++ src/pages/ActualPage/ActualPage.tsx | 6 +++++- 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/src/pages/ActualPage/ActualPage.scss b/src/pages/ActualPage/ActualPage.scss index 4ecd67d..c45ad94 100644 --- a/src/pages/ActualPage/ActualPage.scss +++ b/src/pages/ActualPage/ActualPage.scss @@ -2,4 +2,14 @@ display: flex; flex-flow: column wrap; justify-content: flex-start; + + .actual-page-images { + display: flex; + flex-flow: row nowrap; + + & > img { + flex: 1 0; + object-fit: cover; + } + } } diff --git a/src/pages/ActualPage/ActualPage.tsx b/src/pages/ActualPage/ActualPage.tsx index 5cc799b..dbf7d04 100644 --- a/src/pages/ActualPage/ActualPage.tsx +++ b/src/pages/ActualPage/ActualPage.tsx @@ -93,7 +93,11 @@ class ActualPage extends React.Component {
- Kuva-galleriasta hyviä kuvia 3kpl. (Esim. wireframen kuvat) +
+ + + +

Sinustako kilta-aktiivi?

From b0a5d682a8a76dae353e4c9146fc1af0fb7b9ce4 Mon Sep 17 00:00:00 2001 From: Aarni Halinen Date: Mon, 6 Jul 2020 17:38:12 +0300 Subject: [PATCH 21/56] SecondaryHeroSection --- .../HeroMainSection/HeroMainSection.scss | 5 +- .../HeroSecondarySection.tsx | 66 +++++++++++++++++++ src/pages/ActualPage/ActualPage.tsx | 14 ++-- src/theme/colors.ts | 8 +-- 4 files changed, 83 insertions(+), 10 deletions(-) create mode 100644 src/components/HeroSecondarySection/HeroSecondarySection.tsx diff --git a/src/components/HeroMainSection/HeroMainSection.scss b/src/components/HeroMainSection/HeroMainSection.scss index 38c3198..524db83 100644 --- a/src/components/HeroMainSection/HeroMainSection.scss +++ b/src/components/HeroMainSection/HeroMainSection.scss @@ -8,9 +8,12 @@ flex: 6; text-align: center; font-weight: 100; - padding: 2rem 1rem 2rem; line-height: 24px; + & > div { + padding: 2rem 1rem 2rem; + } + h1 { max-width: 600px; line-height: 40px; diff --git a/src/components/HeroSecondarySection/HeroSecondarySection.tsx b/src/components/HeroSecondarySection/HeroSecondarySection.tsx new file mode 100644 index 0000000..6fc4537 --- /dev/null +++ b/src/components/HeroSecondarySection/HeroSecondarySection.tsx @@ -0,0 +1,66 @@ +import React from "react"; +import styled from "styled-components"; +import ColorDiv from "../ColorDiv/index"; + +interface HeroSecondarySectionItemProps { + note?: string; +} + +const Note = styled.span` + color: white; + transform-origin: right; + transform: rotate(-90deg); + height: fit-content; + text-transform: uppercase; + font-size: 2.5rem; + font-weight: bold; + margin-right: 2rem; + margin-top: -0.5rem; +`; + +const Item = styled.div` + display: flex; + text-align: left; + flex: 1 0; + margin: 1rem 2rem 1rem; +`; + +export const HeroSecondarySectionItem: React.FC = ({note, children}) => ( + + + {note} + + {children} + +) + +const Container = styled(ColorDiv)` + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + + h1 { + padding: 1em 0; + } +`; + +const Items = styled.div` + display: flex; + flex-direction: row; +`; + +interface HeroSecondarySectionProps { + title: string; +} + +const HeroSecondarySection: React.FC = ({title, children}) => ( + +

{title}

+ + {children} + +
+) + +export default HeroSecondarySection; diff --git a/src/pages/ActualPage/ActualPage.tsx b/src/pages/ActualPage/ActualPage.tsx index dbf7d04..94b793f 100644 --- a/src/pages/ActualPage/ActualPage.tsx +++ b/src/pages/ActualPage/ActualPage.tsx @@ -11,6 +11,7 @@ import Ribbon from "../../components/Ribbon/index"; import TextAnchor from "../../components/TextAnchor/index"; import Button, { ButtonType } from "../../components/Button/index"; import Accordion from "../../components/Accordion"; +import HeroSecondarySection, { HeroSecondarySectionItem } from "../../components/HeroSecondarySection/HeroSecondarySection"; export interface ActualPageProps {} export interface ActualPageState {} @@ -38,11 +39,14 @@ class ActualPage extends React.Component { -
-

Kiltahuone sijaitsee Tuas-talossa (Maarintie 8)

-

Killan hallitus päivystää kiltahuoneella maanantaisin klo 12.15–13.15. Tuolloin voit ostaa kiltatuotteita, kuten esim. haalarimerkkejä tai laulukirjoja.

-

Kiltapäiväkerho Kiltis kokoontuu torstaisin klo XX.XX kiltahuoneella. Lorem ipsum dolor sit amet. Lämpimästi tervetuloa kaikki SIKkiläiset ja SIK-mieliset!

-
+ + + Killan hallitus päivystää kiltahuoneella maanantaisin klo 12.15–13.15. Tuolloin voit ostaa kiltatuotteita, kuten esim. haalarimerkkejä tai laulukirjoja. + + + Kiltapäiväkerho Kiltis kokoontuu torstaisin klo XX.XX kiltahuoneella. Lorem ipsum dolor sit amet. Lämpimästi tervetuloa kaikki SIKkiläiset ja SIK-mieliset! + +

diff --git a/src/theme/colors.ts b/src/theme/colors.ts index 8a3e0bc..a949fe9 100644 --- a/src/theme/colors.ts +++ b/src/theme/colors.ts @@ -15,7 +15,7 @@ export type Colors = "inherit"; -export const colorToClass = (color: Colors): string => `color-div__${color}`; -export const bgColorToClass = (color: Colors): string => `color-div__background_${color}`; -export const hoverColorToClass = (color: Colors): string => `color-div__${color}Hoverable`; -export const bgHoverColorToClass = (color: Colors): string => `color-div__background_${color}Hoverable`; +export const colorToClass = (color: Colors): string => color ? `color-div__${color}` : undefined; +export const bgColorToClass = (color: Colors): string => color ? `color-div__background_${color}` : undefined; +export const hoverColorToClass = (color: Colors): string => color ? `color-div__${color}Hoverable` : undefined; +export const bgHoverColorToClass = (color: Colors): string => color ? `color-div__background_${color}Hoverable` : undefined; From f31b5e42062e33e8d8bb5eaae5c63fd094164e2e Mon Sep 17 00:00:00 2001 From: Aarni Halinen Date: Mon, 6 Jul 2020 17:41:04 +0300 Subject: [PATCH 22/56] Fix link hover color --- src/pages/ActualPage/ActualPage.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pages/ActualPage/ActualPage.tsx b/src/pages/ActualPage/ActualPage.tsx index 94b793f..25e0260 100644 --- a/src/pages/ActualPage/ActualPage.tsx +++ b/src/pages/ActualPage/ActualPage.tsx @@ -105,7 +105,7 @@ class ActualPage extends React.Component {

Sinustako kilta-aktiivi?

- +
Tule mukaan kiltatoimintaan ›
From 3f5dbfb674764e0f8d682a05f09bf2856315cc1f Mon Sep 17 00:00:00 2001 From: Aarni Halinen Date: Wed, 8 Jul 2020 14:05:36 +0300 Subject: [PATCH 23/56] Refactor Hero --- src/components/ColorDiv/index.ts | 2 -- .../HeroAsideItem/HeroAsideItem.scss | 2 +- .../Hero/HeroAsideItem/HeroAsideItem.tsx | 21 +++++++++++++ .../HeroAsideSection/HeroAsideSection.scss | 2 +- .../HeroAsideSection/HeroAsideSection.tsx | 2 +- .../HeroMainSection/HeroMainSection.tsx} | 29 ++++++++++++------ .../HeroSecondarySection.tsx | 2 +- .../HeroAsideItem/HeroAsideItem.tsx | 30 ------------------- src/components/HeroAsideItem/index.ts | 2 -- src/components/HeroAsideSection/index.ts | 2 -- .../HeroMainSection/HeroMainSection.tsx | 17 ----------- src/components/HeroMainSection/index.ts | 2 -- src/pages/ActualPage/ActualPage.tsx | 30 +++++++++---------- src/pages/CorporatePage/CorporatePage.tsx | 6 ++-- src/pages/FreshmenPage/FreshmenPage.tsx | 6 ++-- src/pages/FrontPage/FrontPage.tsx | 6 ++-- src/pages/GuildPage/GuildPage.tsx | 7 ++--- src/pages/StudiesPage/StudiesPage.tsx | 6 ++-- 18 files changed, 74 insertions(+), 100 deletions(-) delete mode 100644 src/components/ColorDiv/index.ts rename src/components/{ => Hero}/HeroAsideItem/HeroAsideItem.scss (92%) create mode 100644 src/components/Hero/HeroAsideItem/HeroAsideItem.tsx rename src/components/{ => Hero}/HeroAsideSection/HeroAsideSection.scss (94%) rename src/components/{ => Hero}/HeroAsideSection/HeroAsideSection.tsx (89%) rename src/components/{HeroMainSection/HeroMainSection.scss => Hero/HeroMainSection/HeroMainSection.tsx} (50%) rename src/components/{ => Hero}/HeroSecondarySection/HeroSecondarySection.tsx (96%) delete mode 100644 src/components/HeroAsideItem/HeroAsideItem.tsx delete mode 100644 src/components/HeroAsideItem/index.ts delete mode 100644 src/components/HeroAsideSection/index.ts delete mode 100644 src/components/HeroMainSection/HeroMainSection.tsx delete mode 100644 src/components/HeroMainSection/index.ts diff --git a/src/components/ColorDiv/index.ts b/src/components/ColorDiv/index.ts deleted file mode 100644 index 5eb8589..0000000 --- a/src/components/ColorDiv/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -import ColorDiv from "./ColorDiv"; -export default ColorDiv; diff --git a/src/components/HeroAsideItem/HeroAsideItem.scss b/src/components/Hero/HeroAsideItem/HeroAsideItem.scss similarity index 92% rename from src/components/HeroAsideItem/HeroAsideItem.scss rename to src/components/Hero/HeroAsideItem/HeroAsideItem.scss index 2024f6a..4b4b047 100644 --- a/src/components/HeroAsideItem/HeroAsideItem.scss +++ b/src/components/Hero/HeroAsideItem/HeroAsideItem.scss @@ -1,4 +1,4 @@ -@import "../../assets/scss/globals"; +@import "../../../assets/scss/globals"; .hero-aside-item { diff --git a/src/components/Hero/HeroAsideItem/HeroAsideItem.tsx b/src/components/Hero/HeroAsideItem/HeroAsideItem.tsx new file mode 100644 index 0000000..a1143a9 --- /dev/null +++ b/src/components/Hero/HeroAsideItem/HeroAsideItem.tsx @@ -0,0 +1,21 @@ +import React from "react"; +import "./HeroAsideItem.scss"; +import Anchor from "../../Anchor"; + +interface HeroAsideItemProps { + title: string; + linkText: string; + linkHref: string; +} + +const HeroAsideItem: React.FC = ({ title, linkText, linkHref, children }) => ( +
+

{title}

+

{children}

+ +
{linkText} ›
+
+
+) + +export default HeroAsideItem; diff --git a/src/components/HeroAsideSection/HeroAsideSection.scss b/src/components/Hero/HeroAsideSection/HeroAsideSection.scss similarity index 94% rename from src/components/HeroAsideSection/HeroAsideSection.scss rename to src/components/Hero/HeroAsideSection/HeroAsideSection.scss index 4679ba4..c632179 100644 --- a/src/components/HeroAsideSection/HeroAsideSection.scss +++ b/src/components/Hero/HeroAsideSection/HeroAsideSection.scss @@ -1,4 +1,4 @@ -@import "../../assets/scss/globals"; +@import "../../../assets/scss/globals"; .hero-aside-section { diff --git a/src/components/HeroAsideSection/HeroAsideSection.tsx b/src/components/Hero/HeroAsideSection/HeroAsideSection.tsx similarity index 89% rename from src/components/HeroAsideSection/HeroAsideSection.tsx rename to src/components/Hero/HeroAsideSection/HeroAsideSection.tsx index 332ea56..505a0db 100644 --- a/src/components/HeroAsideSection/HeroAsideSection.tsx +++ b/src/components/Hero/HeroAsideSection/HeroAsideSection.tsx @@ -1,6 +1,6 @@ import React from "react"; import "./HeroAsideSection.scss"; -import ColorDiv, { ColorDivProps } from "../ColorDiv/ColorDiv"; +import ColorDiv, { ColorDivProps } from "../../ColorDiv/ColorDiv"; export interface HeroAsideSectionProps { } diff --git a/src/components/HeroMainSection/HeroMainSection.scss b/src/components/Hero/HeroMainSection/HeroMainSection.tsx similarity index 50% rename from src/components/HeroMainSection/HeroMainSection.scss rename to src/components/Hero/HeroMainSection/HeroMainSection.tsx index 524db83..2d413a3 100644 --- a/src/components/HeroMainSection/HeroMainSection.scss +++ b/src/components/Hero/HeroMainSection/HeroMainSection.tsx @@ -1,6 +1,7 @@ -@import "../../assets/scss/globals"; +import React from "react"; +import styled from "styled-components"; -.hero-main-section { +const Container = styled.div` display: flex; flex-flow: column nowrap; align-items: center; @@ -27,14 +28,24 @@ max-width: 400px; font-weight: 100; } -} -.hero-button-container { - display: flex; - flex-direction: column; - min-width: 20%; + .hero-button-container { + display: flex; + flex-direction: column; + min-width: 20%; - &-row { - flex-direction: row; + &-row { + flex-direction: row; + } } +`; + +const HeroMainSection: React.FC = ({children}) => { + return ( + + {children} + + ); } + +export default HeroMainSection; diff --git a/src/components/HeroSecondarySection/HeroSecondarySection.tsx b/src/components/Hero/HeroSecondarySection/HeroSecondarySection.tsx similarity index 96% rename from src/components/HeroSecondarySection/HeroSecondarySection.tsx rename to src/components/Hero/HeroSecondarySection/HeroSecondarySection.tsx index 6fc4537..a7234ee 100644 --- a/src/components/HeroSecondarySection/HeroSecondarySection.tsx +++ b/src/components/Hero/HeroSecondarySection/HeroSecondarySection.tsx @@ -1,6 +1,6 @@ import React from "react"; import styled from "styled-components"; -import ColorDiv from "../ColorDiv/index"; +import ColorDiv from "../../ColorDiv/ColorDiv"; interface HeroSecondarySectionItemProps { note?: string; diff --git a/src/components/HeroAsideItem/HeroAsideItem.tsx b/src/components/HeroAsideItem/HeroAsideItem.tsx deleted file mode 100644 index 7468609..0000000 --- a/src/components/HeroAsideItem/HeroAsideItem.tsx +++ /dev/null @@ -1,30 +0,0 @@ -import React from "react"; -import "./HeroAsideItem.scss"; -import Anchor from "../Anchor"; - -export interface HeroAsideItemProps { - title: string; - linkText: string; - linkHref: string; -} -export interface HeroAsideItemState { } - -class HeroAsideItem extends React.Component< - HeroAsideItemProps, - HeroAsideItemState - > { - render() { - const { title, linkText, linkHref, children } = this.props; - return ( -
-

{title}

-

{children}

- -
{linkText} ›
-
-
- ); - } -} - -export default HeroAsideItem; diff --git a/src/components/HeroAsideItem/index.ts b/src/components/HeroAsideItem/index.ts deleted file mode 100644 index b98e5a0..0000000 --- a/src/components/HeroAsideItem/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -import HeroAsideItem from "./HeroAsideItem"; -export default HeroAsideItem; diff --git a/src/components/HeroAsideSection/index.ts b/src/components/HeroAsideSection/index.ts deleted file mode 100644 index a97d191..0000000 --- a/src/components/HeroAsideSection/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -import HeroAsideSection from "./HeroAsideSection"; -export default HeroAsideSection; diff --git a/src/components/HeroMainSection/HeroMainSection.tsx b/src/components/HeroMainSection/HeroMainSection.tsx deleted file mode 100644 index 89ff6bd..0000000 --- a/src/components/HeroMainSection/HeroMainSection.tsx +++ /dev/null @@ -1,17 +0,0 @@ -import React from "react"; -import "./HeroMainSection.scss"; - -export interface HeroMainSectionProps {} -export interface HeroMainSectionState {} - -class HeroMainSection extends React.Component { - render() { - return ( -
- {this.props.children} -
- ); - } -} - -export default HeroMainSection; diff --git a/src/components/HeroMainSection/index.ts b/src/components/HeroMainSection/index.ts deleted file mode 100644 index 4311a6e..0000000 --- a/src/components/HeroMainSection/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -import HeroMainSection from "./HeroMainSection"; -export default HeroMainSection; diff --git a/src/pages/ActualPage/ActualPage.tsx b/src/pages/ActualPage/ActualPage.tsx index 25e0260..b4aff27 100644 --- a/src/pages/ActualPage/ActualPage.tsx +++ b/src/pages/ActualPage/ActualPage.tsx @@ -2,16 +2,16 @@ import React from "react"; import { Helmet } from "react-helmet"; import "./ActualPage.scss"; import PageSection from "../../components/PageSection"; -import HeroMainSection from "../../components/HeroMainSection"; -import HeroAsideSection from "../../components/HeroAsideSection"; -import HeroAsideItem from "../../components/HeroAsideItem"; +import HeroMainSection from "../../components/Hero/HeroMainSection/HeroMainSection"; +import HeroAsideSection from "../../components/Hero/HeroAsideSection/HeroAsideSection"; +import HeroAsideItem from "../../components/Hero/HeroAsideItem/HeroAsideItem"; import AsideSection from "../../components/AsideSection"; import MainSection from "../../components/MainSection/index"; import Ribbon from "../../components/Ribbon/index"; import TextAnchor from "../../components/TextAnchor/index"; import Button, { ButtonType } from "../../components/Button/index"; import Accordion from "../../components/Accordion"; -import HeroSecondarySection, { HeroSecondarySectionItem } from "../../components/HeroSecondarySection/HeroSecondarySection"; +import HeroSecondarySection, { HeroSecondarySectionItem } from "../../components/Hero/HeroSecondarySection/HeroSecondarySection"; export interface ActualPageProps {} export interface ActualPageState {} @@ -25,19 +25,17 @@ class ActualPage extends React.Component { -
-

Yritystapahtumia ja vastapainoa opiskelulle

-

+

Yritystapahtumia ja vastapainoa opiskelulle

+

Teekkarielämä ei ole pelkkää saunomista, juhlimista ja muita huvituksia—tai no, on se sitäkin. -

-
- - -
+

+
+ +
diff --git a/src/pages/CorporatePage/CorporatePage.tsx b/src/pages/CorporatePage/CorporatePage.tsx index d7e66e4..6337517 100644 --- a/src/pages/CorporatePage/CorporatePage.tsx +++ b/src/pages/CorporatePage/CorporatePage.tsx @@ -2,9 +2,9 @@ import React from "react"; import { Helmet } from "react-helmet"; import "./CorporatePage.scss"; import PageSection from "../../components/PageSection"; -import HeroMainSection from "../../components/HeroMainSection"; -import HeroAsideSection from "../../components/HeroAsideSection"; -import HeroAsideItem from "../../components/HeroAsideItem"; +import HeroMainSection from "../../components/Hero/HeroMainSection/HeroMainSection"; +import HeroAsideSection from "../../components/Hero/HeroAsideSection/HeroAsideSection"; +import HeroAsideItem from "../../components/Hero/HeroAsideItem/HeroAsideItem"; import AsideSection from "../../components/AsideSection"; import MainSection from "../../components/MainSection/index"; import PageLink from "../../components/PageLink/index"; diff --git a/src/pages/FreshmenPage/FreshmenPage.tsx b/src/pages/FreshmenPage/FreshmenPage.tsx index d961a82..a7c59b3 100644 --- a/src/pages/FreshmenPage/FreshmenPage.tsx +++ b/src/pages/FreshmenPage/FreshmenPage.tsx @@ -2,9 +2,9 @@ import React from "react"; import { Helmet } from "react-helmet"; import "./FreshmenPage.scss"; import PageSection from "../../components/PageSection/index"; -import HeroMainSection from "../../components/HeroMainSection/index"; -import HeroAsideSection from "../../components/HeroAsideSection/index"; -import HeroAsideItem from "../../components/HeroAsideItem/index"; +import HeroMainSection from "../../components/Hero/HeroMainSection/HeroMainSection"; +import HeroAsideSection from "../../components/Hero/HeroAsideSection/HeroAsideSection"; +import HeroAsideItem from "../../components/Hero/HeroAsideItem/HeroAsideItem"; import AsideSection from "../../components/AsideSection/index"; import MainSection from "../../components/MainSection/index"; import PageLink from "../../components/PageLink/index"; diff --git a/src/pages/FrontPage/FrontPage.tsx b/src/pages/FrontPage/FrontPage.tsx index 83c6222..135efe2 100644 --- a/src/pages/FrontPage/FrontPage.tsx +++ b/src/pages/FrontPage/FrontPage.tsx @@ -9,12 +9,12 @@ import { StaticContext } from "../../server/StaticContext"; import PageSection from "../../components/PageSection"; import PageLink from "../../components/PageLink/PageLink"; -import HeroMainSection from "../../components/HeroMainSection"; -import HeroAsideSection from "../../components/HeroAsideSection"; +import HeroMainSection from "../../components/Hero/HeroMainSection/HeroMainSection"; +import HeroAsideSection from "../../components/Hero/HeroAsideSection/HeroAsideSection"; import Button, { ButtonType } from "../../components/Button"; import Ribbon from "../../components/Ribbon"; import SponsorReel from "../../components/SponsorReel"; -import HeroAsideItem from "../../components/HeroAsideItem"; +import HeroAsideItem from "../../components/Hero/HeroAsideItem/HeroAsideItem"; import TextAnchor from "../../components/TextAnchor"; interface FrontPageProps { diff --git a/src/pages/GuildPage/GuildPage.tsx b/src/pages/GuildPage/GuildPage.tsx index 988a1d1..1843385 100644 --- a/src/pages/GuildPage/GuildPage.tsx +++ b/src/pages/GuildPage/GuildPage.tsx @@ -5,14 +5,13 @@ import PageSection from "../../components/PageSection"; import MainSection from "../../components/MainSection"; import AsideSection from "../../components/AsideSection"; import PageLink from "../../components/PageLink"; -import HeroMainSection from "../../components/HeroMainSection"; -import HeroAsideSection from "../../components/HeroAsideSection"; -import HeroAsideItem from "../../components/HeroAsideItem"; +import HeroMainSection from "../../components/Hero/HeroMainSection/HeroMainSection"; +import HeroAsideSection from "../../components/Hero/HeroAsideSection/HeroAsideSection"; +import HeroAsideItem from "../../components/Hero/HeroAsideItem/HeroAsideItem"; import Ribbon from "../../components/Ribbon"; import InfoBox from "../../components/InfoBox"; import Accordion from "../../components/Accordion"; import TextAnchor from "../../components/TextAnchor"; -import { TextSize } from "../../components/TextAnchor/TextAnchor"; export interface GuildPageProps { } export interface GuildPageState { } diff --git a/src/pages/StudiesPage/StudiesPage.tsx b/src/pages/StudiesPage/StudiesPage.tsx index 0200ba8..360376a 100644 --- a/src/pages/StudiesPage/StudiesPage.tsx +++ b/src/pages/StudiesPage/StudiesPage.tsx @@ -2,9 +2,9 @@ import React from "react"; import { Helmet } from "react-helmet"; import "./StudiesPage.scss"; import PageSection from "../../components/PageSection/index"; -import HeroMainSection from "../../components/HeroMainSection/index"; -import HeroAsideSection from "../../components/HeroAsideSection/index"; -import HeroAsideItem from "../../components/HeroAsideItem/index"; +import HeroMainSection from "../../components/Hero/HeroMainSection/HeroMainSection"; +import HeroAsideSection from "../../components/Hero/HeroAsideSection/HeroAsideSection"; +import HeroAsideItem from "../../components/Hero/HeroAsideItem/HeroAsideItem"; import AsideSection from "../../components/AsideSection/index"; import MainSection from "../../components/MainSection/index"; import PageLink from "../../components/PageLink/index"; From 6af5969734cd6abc7df27bc8667c70a542236442 Mon Sep 17 00:00:00 2001 From: Aarni Halinen Date: Wed, 8 Jul 2020 14:16:44 +0300 Subject: [PATCH 24/56] Support @-paths --- configs/webpack/common.js | 4 ++- package-lock.json | 46 +++++++++++++++++++++++++++++++ package.json | 1 + src/pages/FrontPage/FrontPage.tsx | 28 +++++++++---------- tsconfig.json | 32 ++++++++++++++++++++- 5 files changed, 95 insertions(+), 16 deletions(-) diff --git a/configs/webpack/common.js b/configs/webpack/common.js index f40ba5b..4431478 100644 --- a/configs/webpack/common.js +++ b/configs/webpack/common.js @@ -1,5 +1,6 @@ // Shared config (dev and prod) const {resolve} = require("path"); +const TsconfigPathsPlugin = require("tsconfig-paths-webpack-plugin"); const {CheckerPlugin} = require("awesome-typescript-loader"); const StyleLintPlugin = require("stylelint-webpack-plugin"); const webpack = require('webpack'); @@ -12,7 +13,8 @@ module.exports = function (env, argv) { }; config.resolve = { - extensions: [".ts", ".tsx", ".js", ".jsx"] + extensions: [".ts", ".tsx", ".js", ".jsx"], + plugins: [new TsconfigPathsPlugin()] }; config.context = resolve(__dirname, "../../src"); config.module = { diff --git a/package-lock.json b/package-lock.json index aa4de8a..7147029 100644 --- a/package-lock.json +++ b/package-lock.json @@ -833,6 +833,12 @@ "integrity": "sha512-Il2DtDVRGDcqjDtE+rF8iqg1CArehSK84HZJCT7AMITlyXRBpuPhqGLDQMowraqqu1coEaimg4ZOqggt6L6L+A==", "dev": true }, + "@types/json5": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha1-7ihweulOEdK4J7y+UnC86n8+ce4=", + "dev": true + }, "@types/lodash": { "version": "4.14.146", "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.146.tgz", @@ -20330,6 +20336,46 @@ "utf8-byte-length": "^1.0.1" } }, + "tsconfig-paths": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.9.0.tgz", + "integrity": "sha512-dRcuzokWhajtZWkQsDVKbWyY+jgcLC5sqJhg2PSgf4ZkH2aHPvaOY8YWGhmjb68b5qqTfasSsDO9k7RUiEmZAw==", + "dev": true, + "requires": { + "@types/json5": "^0.0.29", + "json5": "^1.0.1", + "minimist": "^1.2.0", + "strip-bom": "^3.0.0" + }, + "dependencies": { + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "dev": true + } + } + }, + "tsconfig-paths-webpack-plugin": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths-webpack-plugin/-/tsconfig-paths-webpack-plugin-3.2.0.tgz", + "integrity": "sha512-S/gOOPOkV8rIL4LurZ1vUdYCVgo15iX9ZMJ6wx6w2OgcpT/G4wMyHB6WM+xheSqGMrWKuxFul+aXpCju3wmj/g==", + "dev": true, + "requires": { + "chalk": "^2.3.0", + "enhanced-resolve": "^4.0.0", + "tsconfig-paths": "^3.4.0" + } + }, "tslib": { "version": "1.9.3", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.3.tgz", diff --git a/package.json b/package.json index 7810842..344aaff 100644 --- a/package.json +++ b/package.json @@ -105,6 +105,7 @@ "stylelint-webpack-plugin": "1.0.3", "testcafe": "1.6.1", "testcafe-react-selectors": "2.1.0", + "tsconfig-paths-webpack-plugin": "3.2.0", "typescript": "3.9.5", "uglifyjs-webpack-plugin": "1.3.0", "webpack": "4.41.2", diff --git a/src/pages/FrontPage/FrontPage.tsx b/src/pages/FrontPage/FrontPage.tsx index 135efe2..2dbdc25 100644 --- a/src/pages/FrontPage/FrontPage.tsx +++ b/src/pages/FrontPage/FrontPage.tsx @@ -1,21 +1,21 @@ import React from "react"; import "./FrontPage.scss"; -import appStore from "../../stores/AppStore"; -import Card from "../../components/Card"; -import { Event, getEvents } from "../../models/Event"; -import { Post, getFeed } from "../../models/Feed"; -import { StaticContext } from "../../server/StaticContext"; +import appStore from "@stores/AppStore"; +import Card from "@components/Card"; +import { Event, getEvents } from "@models/Event"; +import { Post, getFeed } from "@models/Feed"; +import { StaticContext } from "@server/StaticContext"; -import PageSection from "../../components/PageSection"; +import PageSection from "@components/PageSection"; -import PageLink from "../../components/PageLink/PageLink"; -import HeroMainSection from "../../components/Hero/HeroMainSection/HeroMainSection"; -import HeroAsideSection from "../../components/Hero/HeroAsideSection/HeroAsideSection"; -import Button, { ButtonType } from "../../components/Button"; -import Ribbon from "../../components/Ribbon"; -import SponsorReel from "../../components/SponsorReel"; -import HeroAsideItem from "../../components/Hero/HeroAsideItem/HeroAsideItem"; -import TextAnchor from "../../components/TextAnchor"; +import PageLink from "@components/PageLink/PageLink"; +import HeroMainSection from "@components/Hero/HeroMainSection/HeroMainSection"; +import HeroAsideSection from "@components/Hero/HeroAsideSection/HeroAsideSection"; +import Button, { ButtonType } from "@components/Button"; +import Ribbon from "@components/Ribbon"; +import SponsorReel from "@components/SponsorReel"; +import HeroAsideItem from "@components/Hero/HeroAsideItem/HeroAsideItem"; +import TextAnchor from "@components/TextAnchor"; interface FrontPageProps { staticContext: StaticContext; diff --git a/tsconfig.json b/tsconfig.json index 4df75b7..1a531bf 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -18,7 +18,37 @@ "types": [ "node", "jest" - ] + ], + "baseUrl": "./", + "paths": { + "@assets/*": [ + "src/assets/*" + ], + "@client/*": [ + "src/client/*" + ], + "@components/*": [ + "src/components/*" + ], + "@models/*": [ + "src/models/*" + ], + "@pages/*": [ + "src/pages/*" + ], + "@server/*": [ + "src/server/*" + ], + "@stores/*": [ + "src/stores/*" + ], + "@theme/*": [ + "src/theme/*" + ], + "@views/*": [ + "src/views/*" + ], + }, }, "include": [ "./src/**/*", From 6a3cd4bb7aacdf88dcc7492721d9fdfb71417dd3 Mon Sep 17 00:00:00 2001 From: Aarni Halinen Date: Wed, 8 Jul 2020 14:37:11 +0300 Subject: [PATCH 25/56] Import with @components --- src/models/SignupForm.ts | 2 +- src/pages/ActualPage/ActualPage.tsx | 22 +++++++++---------- src/pages/AdminCommonPage/AdminCommonPage.tsx | 4 ++-- src/pages/AdminEventPage/AdminEventPage.tsx | 2 +- src/pages/AdminFeedPage/AdminFeedPage.tsx | 2 +- src/pages/AdminFrontPage/AdminFrontPage.tsx | 2 +- src/pages/AdminSignupPage/AdminSignupPage.tsx | 2 +- src/pages/CommonPage/CommonPage.tsx | 4 ++-- src/pages/ContactsPage/ContactsPage.tsx | 6 ++--- src/pages/CorporatePage/CorporatePage.tsx | 18 +++++++-------- src/pages/EventCreatePage/EventCreatePage.tsx | 8 +++---- src/pages/EventPage/EventPage.tsx | 10 ++++----- src/pages/FeedCreatePage/FeedCreatePage.tsx | 2 +- src/pages/FreshmenPage/FreshmenPage.tsx | 20 ++++++++--------- src/pages/GuildPage/GuildPage.tsx | 22 +++++++++---------- src/pages/SignUpPage/SignUpPage.tsx | 4 ++-- .../SignupCreatePage/SignupCreatePage.tsx | 4 ++-- src/pages/StudiesPage/StudiesPage.tsx | 18 +++++++-------- src/routes.tsx | 2 +- 19 files changed, 77 insertions(+), 77 deletions(-) diff --git a/src/models/SignupForm.ts b/src/models/SignupForm.ts index 1ff02a9..507a389 100644 --- a/src/models/SignupForm.ts +++ b/src/models/SignupForm.ts @@ -1,7 +1,7 @@ import axios from "axios"; import { getAuthHeader } from "../auth"; const url = `${process.env.API_URL}/signupForm/`; -import { Question } from "../components/SignupQuestionsWidget"; +import { Question } from "@components/SignupQuestionsWidget"; export interface SignupForm { id?: number; diff --git a/src/pages/ActualPage/ActualPage.tsx b/src/pages/ActualPage/ActualPage.tsx index b4aff27..80df124 100644 --- a/src/pages/ActualPage/ActualPage.tsx +++ b/src/pages/ActualPage/ActualPage.tsx @@ -1,17 +1,17 @@ import React from "react"; import { Helmet } from "react-helmet"; import "./ActualPage.scss"; -import PageSection from "../../components/PageSection"; -import HeroMainSection from "../../components/Hero/HeroMainSection/HeroMainSection"; -import HeroAsideSection from "../../components/Hero/HeroAsideSection/HeroAsideSection"; -import HeroAsideItem from "../../components/Hero/HeroAsideItem/HeroAsideItem"; -import AsideSection from "../../components/AsideSection"; -import MainSection from "../../components/MainSection/index"; -import Ribbon from "../../components/Ribbon/index"; -import TextAnchor from "../../components/TextAnchor/index"; -import Button, { ButtonType } from "../../components/Button/index"; -import Accordion from "../../components/Accordion"; -import HeroSecondarySection, { HeroSecondarySectionItem } from "../../components/Hero/HeroSecondarySection/HeroSecondarySection"; +import PageSection from "@components/PageSection"; +import HeroMainSection from "@components/Hero/HeroMainSection/HeroMainSection"; +import HeroAsideSection from "@components/Hero/HeroAsideSection/HeroAsideSection"; +import HeroAsideItem from "@components/Hero/HeroAsideItem/HeroAsideItem"; +import AsideSection from "@components/AsideSection"; +import MainSection from "@components/MainSection/index"; +import Ribbon from "@components/Ribbon/index"; +import TextAnchor from "@components/TextAnchor/index"; +import Button, { ButtonType } from "@components/Button/index"; +import Accordion from "@components/Accordion"; +import HeroSecondarySection, { HeroSecondarySectionItem } from "@components/Hero/HeroSecondarySection/HeroSecondarySection"; export interface ActualPageProps {} export interface ActualPageState {} diff --git a/src/pages/AdminCommonPage/AdminCommonPage.tsx b/src/pages/AdminCommonPage/AdminCommonPage.tsx index b9a2f88..172eaad 100644 --- a/src/pages/AdminCommonPage/AdminCommonPage.tsx +++ b/src/pages/AdminCommonPage/AdminCommonPage.tsx @@ -1,7 +1,7 @@ import React from "react"; import { Redirect } from "react-router-dom"; -import AdminHeader from "../../components/AdminHeader"; -import AdminSidebar from "../../components/AdminSidebar"; +import AdminHeader from "@components/AdminHeader"; +import AdminSidebar from "@components/AdminSidebar"; import { isAuthenticated } from "../../auth"; import "./AdminCommonPage.scss"; diff --git a/src/pages/AdminEventPage/AdminEventPage.tsx b/src/pages/AdminEventPage/AdminEventPage.tsx index 79bf37b..304cce7 100644 --- a/src/pages/AdminEventPage/AdminEventPage.tsx +++ b/src/pages/AdminEventPage/AdminEventPage.tsx @@ -1,6 +1,6 @@ import React from "react"; import { Helmet } from "react-helmet"; -import Anchor from "../../components/Anchor"; +import Anchor from "@components/Anchor"; import { formatRelative } from "date-fns"; import "./AdminEventPage.scss"; diff --git a/src/pages/AdminFeedPage/AdminFeedPage.tsx b/src/pages/AdminFeedPage/AdminFeedPage.tsx index 1a7b819..f88acd1 100644 --- a/src/pages/AdminFeedPage/AdminFeedPage.tsx +++ b/src/pages/AdminFeedPage/AdminFeedPage.tsx @@ -1,6 +1,6 @@ import React from "react"; import { Helmet } from "react-helmet"; -import Anchor from "../../components/Anchor"; +import Anchor from "@components/Anchor"; import "./AdminFeedPage.scss"; import { StaticContext } from "../../server/StaticContext"; import { Post, getFeed } from "../../models/Feed"; diff --git a/src/pages/AdminFrontPage/AdminFrontPage.tsx b/src/pages/AdminFrontPage/AdminFrontPage.tsx index a6a5474..a111b10 100644 --- a/src/pages/AdminFrontPage/AdminFrontPage.tsx +++ b/src/pages/AdminFrontPage/AdminFrontPage.tsx @@ -1,6 +1,6 @@ import React from "react"; import { Helmet } from "react-helmet"; -import Anchor from "../../components/Anchor"; +import Anchor from "@components/Anchor"; import "./AdminFrontPage.scss"; export interface AdminFrontPageProps { } diff --git a/src/pages/AdminSignupPage/AdminSignupPage.tsx b/src/pages/AdminSignupPage/AdminSignupPage.tsx index 9b582e4..2702ab0 100644 --- a/src/pages/AdminSignupPage/AdminSignupPage.tsx +++ b/src/pages/AdminSignupPage/AdminSignupPage.tsx @@ -1,7 +1,7 @@ import React from "react"; import { Helmet } from "react-helmet"; import { formatRelative } from "date-fns"; -import Anchor from "../../components/Anchor"; +import Anchor from "@components/Anchor"; import "./AdminSignupPage.scss"; import { SignupForm, getForms } from "../../models/SignupForm"; diff --git a/src/pages/CommonPage/CommonPage.tsx b/src/pages/CommonPage/CommonPage.tsx index 5b4ae48..fe83558 100644 --- a/src/pages/CommonPage/CommonPage.tsx +++ b/src/pages/CommonPage/CommonPage.tsx @@ -1,6 +1,6 @@ import React from "react"; -import Header from "../../components/Header"; -import Footer from "../../components/Footer"; +import Header from "@components/Header"; +import Footer from "@components/Footer"; export interface CommonPageProps { page: any; diff --git a/src/pages/ContactsPage/ContactsPage.tsx b/src/pages/ContactsPage/ContactsPage.tsx index 797d503..eff4eae 100644 --- a/src/pages/ContactsPage/ContactsPage.tsx +++ b/src/pages/ContactsPage/ContactsPage.tsx @@ -2,10 +2,10 @@ import React from "react"; import { Helmet } from "react-helmet"; import "./ContactsPage.scss"; import { StaticContext } from "../../server/StaticContext"; -import PageSection from "../../components/PageSection"; +import PageSection from "@components/PageSection"; import { getContacts, Occupation, Committee, getCommittees } from "../../models/Contacts"; -import CommitteeContainer from "../../components/CommitteeContainer"; -import TextAnchor from "../../components/TextAnchor/index"; +import CommitteeContainer from "@components/CommitteeContainer"; +import TextAnchor from "@components/TextAnchor/index"; interface ContactsPageProps { staticContext: StaticContext; diff --git a/src/pages/CorporatePage/CorporatePage.tsx b/src/pages/CorporatePage/CorporatePage.tsx index 6337517..c7117b3 100644 --- a/src/pages/CorporatePage/CorporatePage.tsx +++ b/src/pages/CorporatePage/CorporatePage.tsx @@ -1,15 +1,15 @@ import React from "react"; import { Helmet } from "react-helmet"; import "./CorporatePage.scss"; -import PageSection from "../../components/PageSection"; -import HeroMainSection from "../../components/Hero/HeroMainSection/HeroMainSection"; -import HeroAsideSection from "../../components/Hero/HeroAsideSection/HeroAsideSection"; -import HeroAsideItem from "../../components/Hero/HeroAsideItem/HeroAsideItem"; -import AsideSection from "../../components/AsideSection"; -import MainSection from "../../components/MainSection/index"; -import PageLink from "../../components/PageLink/index"; -import Ribbon from "../../components/Ribbon/index"; -import TextAnchor from "../../components/TextAnchor/index"; +import PageSection from "@components/PageSection"; +import HeroMainSection from "@components/Hero/HeroMainSection/HeroMainSection"; +import HeroAsideSection from "@components/Hero/HeroAsideSection/HeroAsideSection"; +import HeroAsideItem from "@components/Hero/HeroAsideItem/HeroAsideItem"; +import AsideSection from "@components/AsideSection"; +import MainSection from "@components/MainSection/index"; +import PageLink from "@components/PageLink/index"; +import Ribbon from "@components/Ribbon/index"; +import TextAnchor from "@components/TextAnchor/index"; export interface CorporatePageProps {} export interface CorporatePageState {} diff --git a/src/pages/EventCreatePage/EventCreatePage.tsx b/src/pages/EventCreatePage/EventCreatePage.tsx index 03b59d2..cd551e2 100644 --- a/src/pages/EventCreatePage/EventCreatePage.tsx +++ b/src/pages/EventCreatePage/EventCreatePage.tsx @@ -6,10 +6,10 @@ import Form from "react-jsonschema-form"; import { Tag, getTags } from "../../models/Tag"; import { SignupForm, getForms } from "../../models/SignupForm"; import { createEvent, getEvent, updateEvent, Event } from "../../models/Event"; -import DatetimeWidget from "../../components/DatetimeWidget"; -import SectionDividerWidget from "../../components/SectionDividerWidget"; -import Icon from "../../components/Icon"; -import { IconType } from "../../components/Icon/Icon"; +import DatetimeWidget from "@components/DatetimeWidget"; +import SectionDividerWidget from "@components/SectionDividerWidget"; +import Icon from "@components/Icon"; +import { IconType } from "@components/Icon/Icon"; const widgets = { datetime: DatetimeWidget, diff --git a/src/pages/EventPage/EventPage.tsx b/src/pages/EventPage/EventPage.tsx index c3e2904..d3463e1 100644 --- a/src/pages/EventPage/EventPage.tsx +++ b/src/pages/EventPage/EventPage.tsx @@ -3,11 +3,11 @@ import { Helmet } from "react-helmet"; import "./EventPage.scss"; import { Event, getEvent } from "../../models/Event"; import { RouteComponentProps } from "react-router-dom"; -import Button, { ButtonType } from "../../components/Button"; -import Anchor from "../../components/Anchor"; -import PageSection from "../../components/PageSection"; -import MainSection from "../../components/MainSection"; -import AsideSection from "../../components/AsideSection/AsideSection"; +import Button, { ButtonType } from "@components/Button"; +import Anchor from "@components/Anchor"; +import PageSection from "@components/PageSection"; +import MainSection from "@components/MainSection"; +import AsideSection from "@components/AsideSection/AsideSection"; interface MatchParams { id: string; diff --git a/src/pages/FeedCreatePage/FeedCreatePage.tsx b/src/pages/FeedCreatePage/FeedCreatePage.tsx index 922b40e..28baa07 100644 --- a/src/pages/FeedCreatePage/FeedCreatePage.tsx +++ b/src/pages/FeedCreatePage/FeedCreatePage.tsx @@ -5,7 +5,7 @@ import { isAuthenticated } from "../../auth"; import Form from "react-jsonschema-form"; import { Tag, getTags } from "../../models/Tag"; import { createPost, getPost, updatePost } from "../../models/Feed"; -import DatetimeWidget from "../../components/DatetimeWidget"; +import DatetimeWidget from "@components/DatetimeWidget"; const widgets = { datetime: DatetimeWidget, diff --git a/src/pages/FreshmenPage/FreshmenPage.tsx b/src/pages/FreshmenPage/FreshmenPage.tsx index a7c59b3..e232f3a 100644 --- a/src/pages/FreshmenPage/FreshmenPage.tsx +++ b/src/pages/FreshmenPage/FreshmenPage.tsx @@ -1,16 +1,16 @@ import React from "react"; import { Helmet } from "react-helmet"; import "./FreshmenPage.scss"; -import PageSection from "../../components/PageSection/index"; -import HeroMainSection from "../../components/Hero/HeroMainSection/HeroMainSection"; -import HeroAsideSection from "../../components/Hero/HeroAsideSection/HeroAsideSection"; -import HeroAsideItem from "../../components/Hero/HeroAsideItem/HeroAsideItem"; -import AsideSection from "../../components/AsideSection/index"; -import MainSection from "../../components/MainSection/index"; -import PageLink from "../../components/PageLink/index"; -import Ribbon from "../../components/Ribbon/index"; -import TextAnchor from "../../components/TextAnchor/index"; -import InfoBox from "../../components/InfoBox/index"; +import PageSection from "@components/PageSection/index"; +import HeroMainSection from "@components/Hero/HeroMainSection/HeroMainSection"; +import HeroAsideSection from "@components/Hero/HeroAsideSection/HeroAsideSection"; +import HeroAsideItem from "@components/Hero/HeroAsideItem/HeroAsideItem"; +import AsideSection from "@components/AsideSection/index"; +import MainSection from "@components/MainSection/index"; +import PageLink from "@components/PageLink/index"; +import Ribbon from "@components/Ribbon/index"; +import TextAnchor from "@components/TextAnchor/index"; +import InfoBox from "@components/InfoBox/index"; export interface FreshmenPageProps {} export interface FreshmenPageState {} diff --git a/src/pages/GuildPage/GuildPage.tsx b/src/pages/GuildPage/GuildPage.tsx index 1843385..74a2ddf 100644 --- a/src/pages/GuildPage/GuildPage.tsx +++ b/src/pages/GuildPage/GuildPage.tsx @@ -1,17 +1,17 @@ import React from "react"; import { Helmet } from "react-helmet"; import "./GuildPage.scss"; -import PageSection from "../../components/PageSection"; -import MainSection from "../../components/MainSection"; -import AsideSection from "../../components/AsideSection"; -import PageLink from "../../components/PageLink"; -import HeroMainSection from "../../components/Hero/HeroMainSection/HeroMainSection"; -import HeroAsideSection from "../../components/Hero/HeroAsideSection/HeroAsideSection"; -import HeroAsideItem from "../../components/Hero/HeroAsideItem/HeroAsideItem"; -import Ribbon from "../../components/Ribbon"; -import InfoBox from "../../components/InfoBox"; -import Accordion from "../../components/Accordion"; -import TextAnchor from "../../components/TextAnchor"; +import PageSection from "@components/PageSection"; +import MainSection from "@components/MainSection"; +import AsideSection from "@components/AsideSection"; +import PageLink from "@components/PageLink"; +import HeroMainSection from "@components/Hero/HeroMainSection/HeroMainSection"; +import HeroAsideSection from "@components/Hero/HeroAsideSection/HeroAsideSection"; +import HeroAsideItem from "@components/Hero/HeroAsideItem/HeroAsideItem"; +import Ribbon from "@components/Ribbon"; +import InfoBox from "@components/InfoBox"; +import Accordion from "@components/Accordion"; +import TextAnchor from "@components/TextAnchor"; export interface GuildPageProps { } export interface GuildPageState { } diff --git a/src/pages/SignUpPage/SignUpPage.tsx b/src/pages/SignUpPage/SignUpPage.tsx index 5c88e63..da23f71 100644 --- a/src/pages/SignUpPage/SignUpPage.tsx +++ b/src/pages/SignUpPage/SignUpPage.tsx @@ -4,8 +4,8 @@ import Form from "react-jsonschema-form"; import "./SignUpPage.scss"; import { getForm, SignupForm } from "../../models/SignupForm"; import { createSignup, Signup } from "../../models/Signup"; -import PageSection from "../../components/PageSection"; -import { Question } from "../../components/SignupQuestionsWidget"; +import PageSection from "@components/PageSection"; +import { Question } from "@components/SignupQuestionsWidget"; export interface SignUpPageProps { match: { diff --git a/src/pages/SignupCreatePage/SignupCreatePage.tsx b/src/pages/SignupCreatePage/SignupCreatePage.tsx index 99dac3a..0c90659 100644 --- a/src/pages/SignupCreatePage/SignupCreatePage.tsx +++ b/src/pages/SignupCreatePage/SignupCreatePage.tsx @@ -4,8 +4,8 @@ import { Link } from "react-router-dom"; import "./SignupCreatePage.scss"; import Form from "react-jsonschema-form"; import { createForm, getForm, updateForm, SignupForm } from "../../models/SignupForm"; -import DatetimeWidget from "../../components/DatetimeWidget"; -import SignupQuestionsWidget from "../../components/SignupQuestionsWidget"; +import DatetimeWidget from "@components/DatetimeWidget"; +import SignupQuestionsWidget from "@components/SignupQuestionsWidget"; const widgets = { datetime: DatetimeWidget, diff --git a/src/pages/StudiesPage/StudiesPage.tsx b/src/pages/StudiesPage/StudiesPage.tsx index 360376a..df8ff7b 100644 --- a/src/pages/StudiesPage/StudiesPage.tsx +++ b/src/pages/StudiesPage/StudiesPage.tsx @@ -1,15 +1,15 @@ import React from "react"; import { Helmet } from "react-helmet"; import "./StudiesPage.scss"; -import PageSection from "../../components/PageSection/index"; -import HeroMainSection from "../../components/Hero/HeroMainSection/HeroMainSection"; -import HeroAsideSection from "../../components/Hero/HeroAsideSection/HeroAsideSection"; -import HeroAsideItem from "../../components/Hero/HeroAsideItem/HeroAsideItem"; -import AsideSection from "../../components/AsideSection/index"; -import MainSection from "../../components/MainSection/index"; -import PageLink from "../../components/PageLink/index"; -import Ribbon from "../../components/Ribbon/index"; -import TextAnchor from "../../components/TextAnchor/index"; +import PageSection from "@components/PageSection/index"; +import HeroMainSection from "@components/Hero/HeroMainSection/HeroMainSection"; +import HeroAsideSection from "@components/Hero/HeroAsideSection/HeroAsideSection"; +import HeroAsideItem from "@components/Hero/HeroAsideItem/HeroAsideItem"; +import AsideSection from "@components/AsideSection/index"; +import MainSection from "@components/MainSection/index"; +import PageLink from "@components/PageLink/index"; +import Ribbon from "@components/Ribbon/index"; +import TextAnchor from "@components/TextAnchor/index"; export interface StudiesPageProps {} export interface StudiesPageState {} diff --git a/src/routes.tsx b/src/routes.tsx index 440b449..5f497bc 100644 --- a/src/routes.tsx +++ b/src/routes.tsx @@ -5,7 +5,7 @@ import FrontPage from "./pages/FrontPage"; import GuildPage from "./pages/GuildPage"; import NotFoundPage from "./pages/NotFoundPage"; import CommonPage from "./pages/CommonPage"; -import JsonLD from "./components/JsonLD"; +import JsonLD from "@components/JsonLD"; import "./index.scss"; import AdminFrontPage from "./pages/AdminFrontPage"; import AdminEventPage from "./pages/AdminEventPage"; From 8fbe0ca5e257d18b9cbcd5a8efeb663518d83000 Mon Sep 17 00:00:00 2001 From: Aarni Halinen Date: Wed, 8 Jul 2020 15:16:51 +0300 Subject: [PATCH 26/56] Test splitting page into view and context layers with FrontPage --- src/models/Event.ts | 2 +- src/models/Feed.ts | 2 +- src/models/Signup.ts | 2 +- src/models/SignupForm.ts | 2 +- src/pages/{ActualPage => }/ActualPage.scss | 0 src/pages/{ActualPage => }/ActualPage.tsx | 0 src/pages/ActualPage/index.ts | 2 - src/pages/AdminCommonPage/index.ts | 2 - src/pages/AdminEventPage/index.ts | 2 - src/pages/AdminFeedPage/index.ts | 2 - src/pages/AdminFrontPage/index.ts | 2 - src/pages/AdminLoginPage/index.ts | 2 - src/pages/AdminLogoutPage/index.ts | 2 - src/pages/AdminSignupPage/index.ts | 2 - src/pages/{CommonPage => }/CommonPage.tsx | 0 src/pages/CommonPage/index.ts | 2 - .../{ContactsPage => }/ContactsPage.scss | 2 +- src/pages/{ContactsPage => }/ContactsPage.tsx | 4 +- src/pages/ContactsPage/index.ts | 2 - .../{CorporatePage => }/CorporatePage.scss | 0 .../{CorporatePage => }/CorporatePage.tsx | 0 src/pages/CorporatePage/index.ts | 2 - .../EventCreatePage.scss | 2 +- .../{EventCreatePage => }/EventCreatePage.tsx | 8 +- src/pages/EventCreatePage/index.ts | 2 - src/pages/{EventPage => }/EventPage.scss | 0 src/pages/{EventPage => }/EventPage.tsx | 2 +- src/pages/EventPage/index.ts | 2 - .../{FeedCreatePage => }/FeedCreatePage.scss | 2 +- .../{FeedCreatePage => }/FeedCreatePage.tsx | 6 +- src/pages/FeedCreatePage/index.ts | 2 - .../{FreshmenPage => }/FreshmenPage.scss | 0 src/pages/{FreshmenPage => }/FreshmenPage.tsx | 0 src/pages/FreshmenPage/index.ts | 2 - src/pages/FrontPage.tsx | 83 +++++++++++++++++++ src/pages/FrontPage/index.ts | 2 - src/pages/{GuildPage => }/GuildPage.scss | 0 src/pages/{GuildPage => }/GuildPage.tsx | 0 src/pages/GuildPage/index.ts | 2 - .../{InEnglishPage => }/InEnglishPage.scss | 0 .../{InEnglishPage => }/InEnglishPage.tsx | 0 src/pages/InEnglishPage/index.ts | 3 - .../{NotFoundPage => }/NotFoundPage.scss | 0 src/pages/{NotFoundPage => }/NotFoundPage.tsx | 0 src/pages/NotFoundPage/index.ts | 2 - src/pages/{SignUpPage => }/SignUpPage.scss | 0 src/pages/{SignUpPage => }/SignUpPage.tsx | 4 +- src/pages/SignUpPage/index.ts | 2 - .../SignupCreatePage.scss | 2 +- .../SignupCreatePage.tsx | 2 +- src/pages/SignupCreatePage/index.ts | 2 - src/pages/{StudiesPage => }/StudiesPage.scss | 0 src/pages/{StudiesPage => }/StudiesPage.tsx | 0 src/pages/StudiesPage/index.ts | 2 - .../AdminCommonPage.scss | 0 .../AdminCommonPage.tsx | 2 +- .../AdminEventPage.scss | 0 .../AdminEventPage.tsx | 6 +- .../AdminFeedPage.scss | 0 .../AdminFeedPage.tsx | 8 +- .../AdminFrontPage.scss | 0 .../AdminFrontPage.tsx | 0 .../AdminLoginPage.scss | 0 .../AdminLoginPage.tsx | 2 +- .../AdminLogoutPage.tsx | 2 +- .../AdminSignupPage.scss | 0 .../AdminSignupPage.tsx | 6 +- src/routes.tsx | 14 ++-- src/{ => utils}/auth.ts | 0 src/{pages => views}/FrontPage/FrontPage.scss | 0 .../FrontPage/FrontPageView.tsx} | 0 tsconfig.json | 3 + 72 files changed, 127 insertions(+), 86 deletions(-) rename src/pages/{ActualPage => }/ActualPage.scss (100%) rename src/pages/{ActualPage => }/ActualPage.tsx (100%) delete mode 100644 src/pages/ActualPage/index.ts delete mode 100644 src/pages/AdminCommonPage/index.ts delete mode 100644 src/pages/AdminEventPage/index.ts delete mode 100644 src/pages/AdminFeedPage/index.ts delete mode 100644 src/pages/AdminFrontPage/index.ts delete mode 100644 src/pages/AdminLoginPage/index.ts delete mode 100644 src/pages/AdminLogoutPage/index.ts delete mode 100644 src/pages/AdminSignupPage/index.ts rename src/pages/{CommonPage => }/CommonPage.tsx (100%) delete mode 100644 src/pages/CommonPage/index.ts rename src/pages/{ContactsPage => }/ContactsPage.scss (71%) rename src/pages/{ContactsPage => }/ContactsPage.tsx (97%) delete mode 100644 src/pages/ContactsPage/index.ts rename src/pages/{CorporatePage => }/CorporatePage.scss (100%) rename src/pages/{CorporatePage => }/CorporatePage.tsx (100%) delete mode 100644 src/pages/CorporatePage/index.ts rename src/pages/{EventCreatePage => }/EventCreatePage.scss (95%) rename src/pages/{EventCreatePage => }/EventCreatePage.tsx (96%) delete mode 100644 src/pages/EventCreatePage/index.ts rename src/pages/{EventPage => }/EventPage.scss (100%) rename src/pages/{EventPage => }/EventPage.tsx (97%) delete mode 100644 src/pages/EventPage/index.ts rename src/pages/{FeedCreatePage => }/FeedCreatePage.scss (95%) rename src/pages/{FeedCreatePage => }/FeedCreatePage.tsx (96%) delete mode 100644 src/pages/FeedCreatePage/index.ts rename src/pages/{FreshmenPage => }/FreshmenPage.scss (100%) rename src/pages/{FreshmenPage => }/FreshmenPage.tsx (100%) delete mode 100644 src/pages/FreshmenPage/index.ts create mode 100644 src/pages/FrontPage.tsx delete mode 100644 src/pages/FrontPage/index.ts rename src/pages/{GuildPage => }/GuildPage.scss (100%) rename src/pages/{GuildPage => }/GuildPage.tsx (100%) delete mode 100644 src/pages/GuildPage/index.ts rename src/pages/{InEnglishPage => }/InEnglishPage.scss (100%) rename src/pages/{InEnglishPage => }/InEnglishPage.tsx (100%) delete mode 100644 src/pages/InEnglishPage/index.ts rename src/pages/{NotFoundPage => }/NotFoundPage.scss (100%) rename src/pages/{NotFoundPage => }/NotFoundPage.tsx (100%) delete mode 100644 src/pages/NotFoundPage/index.ts rename src/pages/{SignUpPage => }/SignUpPage.scss (100%) rename src/pages/{SignUpPage => }/SignUpPage.tsx (97%) delete mode 100644 src/pages/SignUpPage/index.ts rename src/pages/{SignupCreatePage => }/SignupCreatePage.scss (95%) rename src/pages/{SignupCreatePage => }/SignupCreatePage.tsx (99%) delete mode 100644 src/pages/SignupCreatePage/index.ts rename src/pages/{StudiesPage => }/StudiesPage.scss (100%) rename src/pages/{StudiesPage => }/StudiesPage.tsx (100%) delete mode 100644 src/pages/StudiesPage/index.ts rename src/pages/{AdminCommonPage => admin}/AdminCommonPage.scss (100%) rename src/pages/{AdminCommonPage => admin}/AdminCommonPage.tsx (96%) rename src/pages/{AdminEventPage => admin}/AdminEventPage.scss (100%) rename src/pages/{AdminEventPage => admin}/AdminEventPage.tsx (94%) rename src/pages/{AdminFeedPage => admin}/AdminFeedPage.scss (100%) rename src/pages/{AdminFeedPage => admin}/AdminFeedPage.tsx (92%) rename src/pages/{AdminFrontPage => admin}/AdminFrontPage.scss (100%) rename src/pages/{AdminFrontPage => admin}/AdminFrontPage.tsx (100%) rename src/pages/{AdminLoginPage => admin}/AdminLoginPage.scss (100%) rename src/pages/{AdminLoginPage => admin}/AdminLoginPage.tsx (99%) rename src/pages/{AdminLogoutPage => admin}/AdminLogoutPage.tsx (89%) rename src/pages/{AdminSignupPage => admin}/AdminSignupPage.scss (100%) rename src/pages/{AdminSignupPage => admin}/AdminSignupPage.tsx (94%) rename src/{ => utils}/auth.ts (100%) rename src/{pages => views}/FrontPage/FrontPage.scss (100%) rename src/{pages/FrontPage/FrontPage.tsx => views/FrontPage/FrontPageView.tsx} (100%) diff --git a/src/models/Event.ts b/src/models/Event.ts index 80b3632..1e52069 100644 --- a/src/models/Event.ts +++ b/src/models/Event.ts @@ -1,5 +1,5 @@ import axios from "axios"; -import { getAuthHeader } from "../auth"; +import { getAuthHeader } from "@utils/auth"; import { Tag } from "./Tag"; import qs from "query-string"; import { SignupForm } from "./SignupForm"; diff --git a/src/models/Feed.ts b/src/models/Feed.ts index 1d51829..dc291d3 100644 --- a/src/models/Feed.ts +++ b/src/models/Feed.ts @@ -1,5 +1,5 @@ import axios from "axios"; -import { getAuthHeader } from "../auth"; +import { getAuthHeader } from "@utils/auth"; const url = `${process.env.API_URL}/feed/`; diff --git a/src/models/Signup.ts b/src/models/Signup.ts index dfb2510..4ab5c39 100644 --- a/src/models/Signup.ts +++ b/src/models/Signup.ts @@ -1,5 +1,5 @@ import axios from "axios"; -import { getAuthHeader } from "../auth"; +import { getAuthHeader } from "@utils/auth"; const url = `${process.env.API_URL}/signup/`; export interface Signup { diff --git a/src/models/SignupForm.ts b/src/models/SignupForm.ts index 507a389..4e1c9a9 100644 --- a/src/models/SignupForm.ts +++ b/src/models/SignupForm.ts @@ -1,5 +1,5 @@ import axios from "axios"; -import { getAuthHeader } from "../auth"; +import { getAuthHeader } from "@utils/auth"; const url = `${process.env.API_URL}/signupForm/`; import { Question } from "@components/SignupQuestionsWidget"; diff --git a/src/pages/ActualPage/ActualPage.scss b/src/pages/ActualPage.scss similarity index 100% rename from src/pages/ActualPage/ActualPage.scss rename to src/pages/ActualPage.scss diff --git a/src/pages/ActualPage/ActualPage.tsx b/src/pages/ActualPage.tsx similarity index 100% rename from src/pages/ActualPage/ActualPage.tsx rename to src/pages/ActualPage.tsx diff --git a/src/pages/ActualPage/index.ts b/src/pages/ActualPage/index.ts deleted file mode 100644 index b0c4179..0000000 --- a/src/pages/ActualPage/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -import ActualPage from "./ActualPage"; -export default ActualPage; diff --git a/src/pages/AdminCommonPage/index.ts b/src/pages/AdminCommonPage/index.ts deleted file mode 100644 index b46f3f8..0000000 --- a/src/pages/AdminCommonPage/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -import AdminCommonPage from "./AdminCommonPage"; -export default AdminCommonPage; diff --git a/src/pages/AdminEventPage/index.ts b/src/pages/AdminEventPage/index.ts deleted file mode 100644 index ee74a94..0000000 --- a/src/pages/AdminEventPage/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -import AdminEventPage from "./AdminEventPage"; -export default AdminEventPage; diff --git a/src/pages/AdminFeedPage/index.ts b/src/pages/AdminFeedPage/index.ts deleted file mode 100644 index a29bb81..0000000 --- a/src/pages/AdminFeedPage/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -import AdminFeedPage from "./AdminFeedPage"; -export default AdminFeedPage; diff --git a/src/pages/AdminFrontPage/index.ts b/src/pages/AdminFrontPage/index.ts deleted file mode 100644 index 1872125..0000000 --- a/src/pages/AdminFrontPage/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -import AdminFrontPage from "./AdminFrontPage"; -export default AdminFrontPage; diff --git a/src/pages/AdminLoginPage/index.ts b/src/pages/AdminLoginPage/index.ts deleted file mode 100644 index b1c9000..0000000 --- a/src/pages/AdminLoginPage/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -import AdminLoginPage from "./AdminLoginPage"; -export default AdminLoginPage; diff --git a/src/pages/AdminLogoutPage/index.ts b/src/pages/AdminLogoutPage/index.ts deleted file mode 100644 index e9858a7..0000000 --- a/src/pages/AdminLogoutPage/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -import AdminLogoutPage from "./AdminLogoutPage"; -export default AdminLogoutPage; diff --git a/src/pages/AdminSignupPage/index.ts b/src/pages/AdminSignupPage/index.ts deleted file mode 100644 index c356fc4..0000000 --- a/src/pages/AdminSignupPage/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -import AdminSignupPage from "./AdminSignupPage"; -export default AdminSignupPage; diff --git a/src/pages/CommonPage/CommonPage.tsx b/src/pages/CommonPage.tsx similarity index 100% rename from src/pages/CommonPage/CommonPage.tsx rename to src/pages/CommonPage.tsx diff --git a/src/pages/CommonPage/index.ts b/src/pages/CommonPage/index.ts deleted file mode 100644 index 73c6795..0000000 --- a/src/pages/CommonPage/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -import CommonPage from "./CommonPage"; -export default CommonPage; diff --git a/src/pages/ContactsPage/ContactsPage.scss b/src/pages/ContactsPage.scss similarity index 71% rename from src/pages/ContactsPage/ContactsPage.scss rename to src/pages/ContactsPage.scss index 3c8525d..61018dc 100644 --- a/src/pages/ContactsPage/ContactsPage.scss +++ b/src/pages/ContactsPage.scss @@ -1,4 +1,4 @@ -@import "../../assets/scss/globals"; +@import "../assets/scss/globals"; .contacts-page { display: flex; diff --git a/src/pages/ContactsPage/ContactsPage.tsx b/src/pages/ContactsPage.tsx similarity index 97% rename from src/pages/ContactsPage/ContactsPage.tsx rename to src/pages/ContactsPage.tsx index eff4eae..5b8a33c 100644 --- a/src/pages/ContactsPage/ContactsPage.tsx +++ b/src/pages/ContactsPage.tsx @@ -1,9 +1,9 @@ import React from "react"; import { Helmet } from "react-helmet"; import "./ContactsPage.scss"; -import { StaticContext } from "../../server/StaticContext"; +import { StaticContext } from "../server/StaticContext"; import PageSection from "@components/PageSection"; -import { getContacts, Occupation, Committee, getCommittees } from "../../models/Contacts"; +import { getContacts, Occupation, Committee, getCommittees } from "../models/Contacts"; import CommitteeContainer from "@components/CommitteeContainer"; import TextAnchor from "@components/TextAnchor/index"; diff --git a/src/pages/ContactsPage/index.ts b/src/pages/ContactsPage/index.ts deleted file mode 100644 index 4c674dc..0000000 --- a/src/pages/ContactsPage/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -import ContactsPage from "./ContactsPage"; -export default ContactsPage; diff --git a/src/pages/CorporatePage/CorporatePage.scss b/src/pages/CorporatePage.scss similarity index 100% rename from src/pages/CorporatePage/CorporatePage.scss rename to src/pages/CorporatePage.scss diff --git a/src/pages/CorporatePage/CorporatePage.tsx b/src/pages/CorporatePage.tsx similarity index 100% rename from src/pages/CorporatePage/CorporatePage.tsx rename to src/pages/CorporatePage.tsx diff --git a/src/pages/CorporatePage/index.ts b/src/pages/CorporatePage/index.ts deleted file mode 100644 index 1284574..0000000 --- a/src/pages/CorporatePage/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -import CorporatePage from "./CorporatePage"; -export default CorporatePage; diff --git a/src/pages/EventCreatePage/EventCreatePage.scss b/src/pages/EventCreatePage.scss similarity index 95% rename from src/pages/EventCreatePage/EventCreatePage.scss rename to src/pages/EventCreatePage.scss index 6766a0c..b664980 100644 --- a/src/pages/EventCreatePage/EventCreatePage.scss +++ b/src/pages/EventCreatePage.scss @@ -1,4 +1,4 @@ -@import "../../assets/scss/globals"; +@import "../assets/scss/globals"; .event-create-page { diff --git a/src/pages/EventCreatePage/EventCreatePage.tsx b/src/pages/EventCreatePage.tsx similarity index 96% rename from src/pages/EventCreatePage/EventCreatePage.tsx rename to src/pages/EventCreatePage.tsx index cd551e2..005553b 100644 --- a/src/pages/EventCreatePage/EventCreatePage.tsx +++ b/src/pages/EventCreatePage.tsx @@ -1,11 +1,11 @@ import React from "react"; import { Helmet } from "react-helmet"; import "./EventCreatePage.scss"; -import { isAuthenticated } from "../../auth"; +import { isAuthenticated } from "@utils/auth"; import Form from "react-jsonschema-form"; -import { Tag, getTags } from "../../models/Tag"; -import { SignupForm, getForms } from "../../models/SignupForm"; -import { createEvent, getEvent, updateEvent, Event } from "../../models/Event"; +import { Tag, getTags } from "@models/Tag"; +import { SignupForm, getForms } from "@models/SignupForm"; +import { createEvent, getEvent, updateEvent, Event } from "@models/Event"; import DatetimeWidget from "@components/DatetimeWidget"; import SectionDividerWidget from "@components/SectionDividerWidget"; import Icon from "@components/Icon"; diff --git a/src/pages/EventCreatePage/index.ts b/src/pages/EventCreatePage/index.ts deleted file mode 100644 index 4f19e34..0000000 --- a/src/pages/EventCreatePage/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -import EventCreatePage from "./EventCreatePage"; -export default EventCreatePage; diff --git a/src/pages/EventPage/EventPage.scss b/src/pages/EventPage.scss similarity index 100% rename from src/pages/EventPage/EventPage.scss rename to src/pages/EventPage.scss diff --git a/src/pages/EventPage/EventPage.tsx b/src/pages/EventPage.tsx similarity index 97% rename from src/pages/EventPage/EventPage.tsx rename to src/pages/EventPage.tsx index d3463e1..4d18f6c 100644 --- a/src/pages/EventPage/EventPage.tsx +++ b/src/pages/EventPage.tsx @@ -1,7 +1,7 @@ import React from "react"; import { Helmet } from "react-helmet"; import "./EventPage.scss"; -import { Event, getEvent } from "../../models/Event"; +import { Event, getEvent } from "../models/Event"; import { RouteComponentProps } from "react-router-dom"; import Button, { ButtonType } from "@components/Button"; import Anchor from "@components/Anchor"; diff --git a/src/pages/EventPage/index.ts b/src/pages/EventPage/index.ts deleted file mode 100644 index effa600..0000000 --- a/src/pages/EventPage/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -import EventPage from "./EventPage"; -export default EventPage; diff --git a/src/pages/FeedCreatePage/FeedCreatePage.scss b/src/pages/FeedCreatePage.scss similarity index 95% rename from src/pages/FeedCreatePage/FeedCreatePage.scss rename to src/pages/FeedCreatePage.scss index cfd6b3b..5043653 100644 --- a/src/pages/FeedCreatePage/FeedCreatePage.scss +++ b/src/pages/FeedCreatePage.scss @@ -1,4 +1,4 @@ -@import "../../assets/scss/globals"; +@import "../assets/scss/globals"; .post-create-page { diff --git a/src/pages/FeedCreatePage/FeedCreatePage.tsx b/src/pages/FeedCreatePage.tsx similarity index 96% rename from src/pages/FeedCreatePage/FeedCreatePage.tsx rename to src/pages/FeedCreatePage.tsx index 28baa07..070c2b8 100644 --- a/src/pages/FeedCreatePage/FeedCreatePage.tsx +++ b/src/pages/FeedCreatePage.tsx @@ -1,10 +1,10 @@ import React from "react"; import { Helmet } from "react-helmet"; import "./FeedCreatePage.scss"; -import { isAuthenticated } from "../../auth"; +import { isAuthenticated } from "@utils/auth"; import Form from "react-jsonschema-form"; -import { Tag, getTags } from "../../models/Tag"; -import { createPost, getPost, updatePost } from "../../models/Feed"; +import { Tag, getTags } from "@models/Tag"; +import { createPost, getPost, updatePost } from "@models/Feed"; import DatetimeWidget from "@components/DatetimeWidget"; const widgets = { diff --git a/src/pages/FeedCreatePage/index.ts b/src/pages/FeedCreatePage/index.ts deleted file mode 100644 index 162b402..0000000 --- a/src/pages/FeedCreatePage/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -import FeedCreatePage from "./FeedCreatePage"; -export default FeedCreatePage; diff --git a/src/pages/FreshmenPage/FreshmenPage.scss b/src/pages/FreshmenPage.scss similarity index 100% rename from src/pages/FreshmenPage/FreshmenPage.scss rename to src/pages/FreshmenPage.scss diff --git a/src/pages/FreshmenPage/FreshmenPage.tsx b/src/pages/FreshmenPage.tsx similarity index 100% rename from src/pages/FreshmenPage/FreshmenPage.tsx rename to src/pages/FreshmenPage.tsx diff --git a/src/pages/FreshmenPage/index.ts b/src/pages/FreshmenPage/index.ts deleted file mode 100644 index 74fb55e..0000000 --- a/src/pages/FreshmenPage/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -import FreshmenPage from "./FreshmenPage"; -export default FreshmenPage; diff --git a/src/pages/FrontPage.tsx b/src/pages/FrontPage.tsx new file mode 100644 index 0000000..5e6dbe1 --- /dev/null +++ b/src/pages/FrontPage.tsx @@ -0,0 +1,83 @@ +import React from "react"; +import appStore from "@stores/AppStore"; +import { Event, getEvents } from "@models/Event"; +import { Post, getFeed } from "@models/Feed"; +import { StaticContext } from "@server/StaticContext"; +import FrontPageView from "@views/FrontPage/FrontPageView"; + +interface FrontPageProps { + staticContext: StaticContext; +} + +interface FrontPageState { + events: Event[]; + feed: Post[]; +} + +class FrontPage extends React.Component { + constructor(props: FrontPageProps) { + super(props); + const { staticContext } = props; + + if (staticContext) { + /* The static context is an object that manages promises when + rendering on the server. If staticContext exists, that means + we have to store all promises in it. Otherwise, operate + normally. See server/index.ts. */ + if (staticContext.resolutions.getEvents) { + const events = staticContext.resolutions.getEvents as Event[]; + const feed = staticContext.resolutions.getFeed as Post[]; + this.state = { + events, + feed, + }; + } else { + this.state = { + events: [], + feed: [], + }; + const promiseEvents = this.fetchEvents(); + const promiseFeed = this.fetchFeed(); + staticContext.promises.getEvents = promiseEvents; + staticContext.promises.getFeed = promiseFeed; + } + } else { + this.state = { + events: [], + feed: [], + }; + this.fetchEvents(); + this.fetchFeed(); + } + } + + fetchEvents = () => { + const getEventsPromise = getEvents({ + onlyNonPast: true, + limit: 4, + }); + getEventsPromise.then(events => { + this.setState({ + events, + }); + }); + return getEventsPromise; + } + + fetchFeed = () => { + const getFeedPromise = getFeed(); + getFeedPromise.then(feed => { + this.setState({ + feed, + }); + }); + return getFeedPromise; + } + + render() { + const { events, feed } = this.state; + return + } +} + +export default props => ; diff --git a/src/pages/FrontPage/index.ts b/src/pages/FrontPage/index.ts deleted file mode 100644 index 23d37ad..0000000 --- a/src/pages/FrontPage/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -import FrontPage from "./FrontPage"; -export default FrontPage; diff --git a/src/pages/GuildPage/GuildPage.scss b/src/pages/GuildPage.scss similarity index 100% rename from src/pages/GuildPage/GuildPage.scss rename to src/pages/GuildPage.scss diff --git a/src/pages/GuildPage/GuildPage.tsx b/src/pages/GuildPage.tsx similarity index 100% rename from src/pages/GuildPage/GuildPage.tsx rename to src/pages/GuildPage.tsx diff --git a/src/pages/GuildPage/index.ts b/src/pages/GuildPage/index.ts deleted file mode 100644 index 7dac43e..0000000 --- a/src/pages/GuildPage/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -import GuildPage from "./GuildPage"; -export default GuildPage; diff --git a/src/pages/InEnglishPage/InEnglishPage.scss b/src/pages/InEnglishPage.scss similarity index 100% rename from src/pages/InEnglishPage/InEnglishPage.scss rename to src/pages/InEnglishPage.scss diff --git a/src/pages/InEnglishPage/InEnglishPage.tsx b/src/pages/InEnglishPage.tsx similarity index 100% rename from src/pages/InEnglishPage/InEnglishPage.tsx rename to src/pages/InEnglishPage.tsx diff --git a/src/pages/InEnglishPage/index.ts b/src/pages/InEnglishPage/index.ts deleted file mode 100644 index 8238ed1..0000000 --- a/src/pages/InEnglishPage/index.ts +++ /dev/null @@ -1,3 +0,0 @@ -import InEnglishPage from "./InEnglishPage"; - -export default InEnglishPage; diff --git a/src/pages/NotFoundPage/NotFoundPage.scss b/src/pages/NotFoundPage.scss similarity index 100% rename from src/pages/NotFoundPage/NotFoundPage.scss rename to src/pages/NotFoundPage.scss diff --git a/src/pages/NotFoundPage/NotFoundPage.tsx b/src/pages/NotFoundPage.tsx similarity index 100% rename from src/pages/NotFoundPage/NotFoundPage.tsx rename to src/pages/NotFoundPage.tsx diff --git a/src/pages/NotFoundPage/index.ts b/src/pages/NotFoundPage/index.ts deleted file mode 100644 index 4be9bb0..0000000 --- a/src/pages/NotFoundPage/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -import NotFoundPage from "./NotFoundPage"; -export default NotFoundPage; diff --git a/src/pages/SignUpPage/SignUpPage.scss b/src/pages/SignUpPage.scss similarity index 100% rename from src/pages/SignUpPage/SignUpPage.scss rename to src/pages/SignUpPage.scss diff --git a/src/pages/SignUpPage/SignUpPage.tsx b/src/pages/SignUpPage.tsx similarity index 97% rename from src/pages/SignUpPage/SignUpPage.tsx rename to src/pages/SignUpPage.tsx index da23f71..d04bbad 100644 --- a/src/pages/SignUpPage/SignUpPage.tsx +++ b/src/pages/SignUpPage.tsx @@ -2,8 +2,8 @@ import React from "react"; import { Helmet } from "react-helmet"; import Form from "react-jsonschema-form"; import "./SignUpPage.scss"; -import { getForm, SignupForm } from "../../models/SignupForm"; -import { createSignup, Signup } from "../../models/Signup"; +import { getForm, SignupForm } from "../models/SignupForm"; +import { createSignup, Signup } from "../models/Signup"; import PageSection from "@components/PageSection"; import { Question } from "@components/SignupQuestionsWidget"; diff --git a/src/pages/SignUpPage/index.ts b/src/pages/SignUpPage/index.ts deleted file mode 100644 index ebe4972..0000000 --- a/src/pages/SignUpPage/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -import SignUpPage from "./SignUpPage"; -export default SignUpPage; diff --git a/src/pages/SignupCreatePage/SignupCreatePage.scss b/src/pages/SignupCreatePage.scss similarity index 95% rename from src/pages/SignupCreatePage/SignupCreatePage.scss rename to src/pages/SignupCreatePage.scss index e22bd08..895e4db 100644 --- a/src/pages/SignupCreatePage/SignupCreatePage.scss +++ b/src/pages/SignupCreatePage.scss @@ -1,4 +1,4 @@ -@import "../../assets/scss/globals"; +@import "../assets/scss/globals"; .signup-create-page { diff --git a/src/pages/SignupCreatePage/SignupCreatePage.tsx b/src/pages/SignupCreatePage.tsx similarity index 99% rename from src/pages/SignupCreatePage/SignupCreatePage.tsx rename to src/pages/SignupCreatePage.tsx index 0c90659..1ba1403 100644 --- a/src/pages/SignupCreatePage/SignupCreatePage.tsx +++ b/src/pages/SignupCreatePage.tsx @@ -3,7 +3,7 @@ import { Helmet } from "react-helmet"; import { Link } from "react-router-dom"; import "./SignupCreatePage.scss"; import Form from "react-jsonschema-form"; -import { createForm, getForm, updateForm, SignupForm } from "../../models/SignupForm"; +import { createForm, getForm, updateForm, SignupForm } from "../models/SignupForm"; import DatetimeWidget from "@components/DatetimeWidget"; import SignupQuestionsWidget from "@components/SignupQuestionsWidget"; diff --git a/src/pages/SignupCreatePage/index.ts b/src/pages/SignupCreatePage/index.ts deleted file mode 100644 index 753e7a8..0000000 --- a/src/pages/SignupCreatePage/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -import SignupCreatePage from "./SignupCreatePage"; -export default SignupCreatePage; diff --git a/src/pages/StudiesPage/StudiesPage.scss b/src/pages/StudiesPage.scss similarity index 100% rename from src/pages/StudiesPage/StudiesPage.scss rename to src/pages/StudiesPage.scss diff --git a/src/pages/StudiesPage/StudiesPage.tsx b/src/pages/StudiesPage.tsx similarity index 100% rename from src/pages/StudiesPage/StudiesPage.tsx rename to src/pages/StudiesPage.tsx diff --git a/src/pages/StudiesPage/index.ts b/src/pages/StudiesPage/index.ts deleted file mode 100644 index dead812..0000000 --- a/src/pages/StudiesPage/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -import StudiesPage from "./StudiesPage"; -export default StudiesPage; diff --git a/src/pages/AdminCommonPage/AdminCommonPage.scss b/src/pages/admin/AdminCommonPage.scss similarity index 100% rename from src/pages/AdminCommonPage/AdminCommonPage.scss rename to src/pages/admin/AdminCommonPage.scss diff --git a/src/pages/AdminCommonPage/AdminCommonPage.tsx b/src/pages/admin/AdminCommonPage.tsx similarity index 96% rename from src/pages/AdminCommonPage/AdminCommonPage.tsx rename to src/pages/admin/AdminCommonPage.tsx index 172eaad..cadfa76 100644 --- a/src/pages/AdminCommonPage/AdminCommonPage.tsx +++ b/src/pages/admin/AdminCommonPage.tsx @@ -2,7 +2,7 @@ import React from "react"; import { Redirect } from "react-router-dom"; import AdminHeader from "@components/AdminHeader"; import AdminSidebar from "@components/AdminSidebar"; -import { isAuthenticated } from "../../auth"; +import { isAuthenticated } from "@utils/auth"; import "./AdminCommonPage.scss"; export interface AdminCommonPageProps { diff --git a/src/pages/AdminEventPage/AdminEventPage.scss b/src/pages/admin/AdminEventPage.scss similarity index 100% rename from src/pages/AdminEventPage/AdminEventPage.scss rename to src/pages/admin/AdminEventPage.scss diff --git a/src/pages/AdminEventPage/AdminEventPage.tsx b/src/pages/admin/AdminEventPage.tsx similarity index 94% rename from src/pages/AdminEventPage/AdminEventPage.tsx rename to src/pages/admin/AdminEventPage.tsx index 304cce7..71d772a 100644 --- a/src/pages/AdminEventPage/AdminEventPage.tsx +++ b/src/pages/admin/AdminEventPage.tsx @@ -4,9 +4,9 @@ import Anchor from "@components/Anchor"; import { formatRelative } from "date-fns"; import "./AdminEventPage.scss"; -import { Event, getEvents } from "../../models/Event"; -import { StaticContext } from "../../server/StaticContext"; -import AddIcon from "../../assets/img/add-icon.png"; +import { Event, getEvents } from "@models/Event"; +import { StaticContext } from "@server/StaticContext"; +import AddIcon from "@assets/img/add-icon.png"; export interface AdminEventPageProps { diff --git a/src/pages/AdminFeedPage/AdminFeedPage.scss b/src/pages/admin/AdminFeedPage.scss similarity index 100% rename from src/pages/AdminFeedPage/AdminFeedPage.scss rename to src/pages/admin/AdminFeedPage.scss diff --git a/src/pages/AdminFeedPage/AdminFeedPage.tsx b/src/pages/admin/AdminFeedPage.tsx similarity index 92% rename from src/pages/AdminFeedPage/AdminFeedPage.tsx rename to src/pages/admin/AdminFeedPage.tsx index f88acd1..a72ac1e 100644 --- a/src/pages/AdminFeedPage/AdminFeedPage.tsx +++ b/src/pages/admin/AdminFeedPage.tsx @@ -2,12 +2,12 @@ import React from "react"; import { Helmet } from "react-helmet"; import Anchor from "@components/Anchor"; import "./AdminFeedPage.scss"; -import { StaticContext } from "../../server/StaticContext"; -import { Post, getFeed } from "../../models/Feed"; -import { getEvents } from "../../models/Event"; +import { StaticContext } from "@server/StaticContext"; +import { Post, getFeed } from "@models/Feed"; +import { getEvents } from "@models/Event"; import { formatRelative } from "date-fns"; import { th } from "date-fns/esm/locale"; -import AddIcon from "../../assets/img/add-icon.png"; +import AddIcon from "@assets/img/add-icon.png"; export interface AdminFeedPageProps { staticContext: StaticContext; diff --git a/src/pages/AdminFrontPage/AdminFrontPage.scss b/src/pages/admin/AdminFrontPage.scss similarity index 100% rename from src/pages/AdminFrontPage/AdminFrontPage.scss rename to src/pages/admin/AdminFrontPage.scss diff --git a/src/pages/AdminFrontPage/AdminFrontPage.tsx b/src/pages/admin/AdminFrontPage.tsx similarity index 100% rename from src/pages/AdminFrontPage/AdminFrontPage.tsx rename to src/pages/admin/AdminFrontPage.tsx diff --git a/src/pages/AdminLoginPage/AdminLoginPage.scss b/src/pages/admin/AdminLoginPage.scss similarity index 100% rename from src/pages/AdminLoginPage/AdminLoginPage.scss rename to src/pages/admin/AdminLoginPage.scss diff --git a/src/pages/AdminLoginPage/AdminLoginPage.tsx b/src/pages/admin/AdminLoginPage.tsx similarity index 99% rename from src/pages/AdminLoginPage/AdminLoginPage.tsx rename to src/pages/admin/AdminLoginPage.tsx index c5d830f..e4edc32 100644 --- a/src/pages/AdminLoginPage/AdminLoginPage.tsx +++ b/src/pages/admin/AdminLoginPage.tsx @@ -2,7 +2,7 @@ import React from "react"; import { Helmet } from "react-helmet"; import { Redirect } from "react-router-dom"; import qs from "query-string"; -import { generateToken, setTokenCookie, isAuthenticated } from "../../auth"; +import { generateToken, setTokenCookie, isAuthenticated } from "@utils/auth"; import "./AdminLoginPage.scss"; export interface AdminLoginPageProps { diff --git a/src/pages/AdminLogoutPage/AdminLogoutPage.tsx b/src/pages/admin/AdminLogoutPage.tsx similarity index 89% rename from src/pages/AdminLogoutPage/AdminLogoutPage.tsx rename to src/pages/admin/AdminLogoutPage.tsx index 38e7181..4a4d72c 100644 --- a/src/pages/AdminLogoutPage/AdminLogoutPage.tsx +++ b/src/pages/admin/AdminLogoutPage.tsx @@ -1,6 +1,6 @@ import React from "react"; import { Redirect } from "react-router-dom"; -import { deleteTokenCookie } from "../../auth"; +import { deleteTokenCookie } from "@utils/auth"; export interface AdminLogoutPageProps {} export interface AdminLogoutPageState {} diff --git a/src/pages/AdminSignupPage/AdminSignupPage.scss b/src/pages/admin/AdminSignupPage.scss similarity index 100% rename from src/pages/AdminSignupPage/AdminSignupPage.scss rename to src/pages/admin/AdminSignupPage.scss diff --git a/src/pages/AdminSignupPage/AdminSignupPage.tsx b/src/pages/admin/AdminSignupPage.tsx similarity index 94% rename from src/pages/AdminSignupPage/AdminSignupPage.tsx rename to src/pages/admin/AdminSignupPage.tsx index 2702ab0..b6846f9 100644 --- a/src/pages/AdminSignupPage/AdminSignupPage.tsx +++ b/src/pages/admin/AdminSignupPage.tsx @@ -4,9 +4,9 @@ import { formatRelative } from "date-fns"; import Anchor from "@components/Anchor"; import "./AdminSignupPage.scss"; -import { SignupForm, getForms } from "../../models/SignupForm"; -import { StaticContext } from "../../server/StaticContext"; -import AddIcon from "../../assets/img/add-icon.png"; +import { SignupForm, getForms } from "@models/SignupForm"; +import { StaticContext } from "@server/StaticContext"; +import AddIcon from "@assets/img/add-icon.png"; export interface AdminSignupPageProps { staticContext: StaticContext; diff --git a/src/routes.tsx b/src/routes.tsx index 5f497bc..3be67aa 100644 --- a/src/routes.tsx +++ b/src/routes.tsx @@ -7,16 +7,16 @@ import NotFoundPage from "./pages/NotFoundPage"; import CommonPage from "./pages/CommonPage"; import JsonLD from "@components/JsonLD"; import "./index.scss"; -import AdminFrontPage from "./pages/AdminFrontPage"; -import AdminEventPage from "./pages/AdminEventPage"; -import AdminFeedPage from "./pages/AdminFeedPage"; -import AdminCommonPage from "./pages/AdminCommonPage"; -import AdminLoginPage from "./pages/AdminLoginPage"; -import AdminLogoutPage from "./pages/AdminLogoutPage"; +import AdminFrontPage from "./pages/admin/AdminFrontPage"; +import AdminEventPage from "./pages/admin/AdminEventPage"; +import AdminFeedPage from "./pages/admin/AdminFeedPage"; +import AdminCommonPage from "./pages/admin/AdminCommonPage"; +import AdminSignupPage from "./pages/admin/AdminSignupPage"; +import AdminLoginPage from "./pages/admin/AdminLoginPage"; +import AdminLogoutPage from "./pages/admin/AdminLogoutPage"; import EventCreatePage from "./pages/EventCreatePage"; import FeedCreatePage from "./pages/FeedCreatePage"; import ContactsPage from "./pages/ContactsPage"; -import AdminSignupPage from "./pages/AdminSignupPage"; import SignupCreatePage from "./pages/SignupCreatePage"; import SignUpPage from "./pages/SignUpPage"; import ActualPage from "./pages/ActualPage"; diff --git a/src/auth.ts b/src/utils/auth.ts similarity index 100% rename from src/auth.ts rename to src/utils/auth.ts diff --git a/src/pages/FrontPage/FrontPage.scss b/src/views/FrontPage/FrontPage.scss similarity index 100% rename from src/pages/FrontPage/FrontPage.scss rename to src/views/FrontPage/FrontPage.scss diff --git a/src/pages/FrontPage/FrontPage.tsx b/src/views/FrontPage/FrontPageView.tsx similarity index 100% rename from src/pages/FrontPage/FrontPage.tsx rename to src/views/FrontPage/FrontPageView.tsx diff --git a/tsconfig.json b/tsconfig.json index 1a531bf..2739d2b 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -48,6 +48,9 @@ "@views/*": [ "src/views/*" ], + "@utils/*": [ + "src/utils/*" + ] }, }, "include": [ From b35fe1456d6c37bd8e901807b2cf6222fa5041d8 Mon Sep 17 00:00:00 2001 From: Aarni Halinen Date: Wed, 8 Jul 2020 15:22:15 +0300 Subject: [PATCH 27/56] Finalize @-path imports --- src/components/AdminHeader/AdminHeader.tsx | 2 +- src/components/ColorDiv/ColorDiv.tsx | 2 +- src/components/CommitteeContainer/CommitteeContainer.tsx | 2 +- src/components/ContactCard/ContactCard.tsx | 4 ++-- src/components/Header/Header.tsx | 2 +- .../SignupQuestionsWidget/SignupQuestionsWidget.tsx | 2 +- src/components/TextAnchor/TextAnchor.tsx | 2 +- src/pages/ContactsPage.tsx | 4 ++-- src/pages/EventPage.tsx | 2 +- src/pages/SignUpPage.tsx | 4 ++-- src/pages/SignupCreatePage.tsx | 2 +- 11 files changed, 14 insertions(+), 14 deletions(-) diff --git a/src/components/AdminHeader/AdminHeader.tsx b/src/components/AdminHeader/AdminHeader.tsx index 3308b92..c299094 100644 --- a/src/components/AdminHeader/AdminHeader.tsx +++ b/src/components/AdminHeader/AdminHeader.tsx @@ -1,6 +1,6 @@ import React from "react"; import { Link } from "react-router-dom"; -import TitleImage from "../../assets/img/SIK_RGB_W_side.png"; +import TitleImage from "@assets/img/SIK_RGB_W_side.png"; import "./AdminHeader.scss"; export interface AdminHeaderProps { } diff --git a/src/components/ColorDiv/ColorDiv.tsx b/src/components/ColorDiv/ColorDiv.tsx index 0dba70c..05a9b1c 100644 --- a/src/components/ColorDiv/ColorDiv.tsx +++ b/src/components/ColorDiv/ColorDiv.tsx @@ -1,6 +1,6 @@ import React from "react"; import "./ColorDiv.scss"; -import { Colors, colorToClass, bgColorToClass, hoverColorToClass, bgHoverColorToClass } from "../../theme/colors"; +import { Colors, colorToClass, bgColorToClass, hoverColorToClass, bgHoverColorToClass } from "@theme/colors"; import classNames from "classnames"; export interface ColorDivProps extends React.HTMLAttributes { diff --git a/src/components/CommitteeContainer/CommitteeContainer.tsx b/src/components/CommitteeContainer/CommitteeContainer.tsx index d37d0d6..03bc91a 100644 --- a/src/components/CommitteeContainer/CommitteeContainer.tsx +++ b/src/components/CommitteeContainer/CommitteeContainer.tsx @@ -1,6 +1,6 @@ import React from "react"; import "./CommitteeContainer.scss"; -import { Occupation } from "../../models/Contacts"; +import { Occupation } from "@models/Contacts"; import ContactCard from "../ContactCard/ContactCard"; export interface CommitteeContainerProps { diff --git a/src/components/ContactCard/ContactCard.tsx b/src/components/ContactCard/ContactCard.tsx index 89e8183..34187bd 100644 --- a/src/components/ContactCard/ContactCard.tsx +++ b/src/components/ContactCard/ContactCard.tsx @@ -1,7 +1,7 @@ import React from "react"; import "./ContactCard.scss"; -import blank_profile from "../../assets/img/blank_profile.png"; -import { Role } from "../../models/Contacts"; +import blank_profile from "@assets/img/blank_profile.png"; +import { Role } from "@models/Contacts"; export interface ContactCardProps { first_name: string; diff --git a/src/components/Header/Header.tsx b/src/components/Header/Header.tsx index 5a1ba3f..7978d32 100644 --- a/src/components/Header/Header.tsx +++ b/src/components/Header/Header.tsx @@ -4,7 +4,7 @@ import "./Header.scss"; import NavbarDropdownLink from "../NavbarDropdownLink/NavbarDropdownLink"; import NavbarChildLink from "../NavbarChildLink/NavbarChildLink"; import Navigation from "../Navigation"; -import TitleImage from "../../assets/img/SIK_RGB_W_side.png"; +import TitleImage from "@assets/img/SIK_RGB_W_side.png"; import classNames from "classnames"; import throttle from "lodash/throttle"; diff --git a/src/components/SignupQuestionsWidget/SignupQuestionsWidget.tsx b/src/components/SignupQuestionsWidget/SignupQuestionsWidget.tsx index 62454d0..e5a8994 100644 --- a/src/components/SignupQuestionsWidget/SignupQuestionsWidget.tsx +++ b/src/components/SignupQuestionsWidget/SignupQuestionsWidget.tsx @@ -3,7 +3,7 @@ import shortid from "shortid"; import OptionsWidget from "./OptionsWidget"; import { DragDropContext, Droppable } from "react-beautiful-dnd"; import { Question, InputProps, optionTypes } from "." -import AddIcon from "../../assets/img/add-icon.png"; +import AddIcon from "@assets/img/add-icon.png"; import "./SignupQuestionsWidget.scss"; import TypeWidget from "./TypeWidget"; import QuestionList from "./QuestionList"; diff --git a/src/components/TextAnchor/TextAnchor.tsx b/src/components/TextAnchor/TextAnchor.tsx index d44877c..193fab5 100644 --- a/src/components/TextAnchor/TextAnchor.tsx +++ b/src/components/TextAnchor/TextAnchor.tsx @@ -1,6 +1,6 @@ import React from "react"; import "./TextAnchor.scss"; -import { Colors, colorToClass, hoverColorToClass } from "../../theme/colors"; +import { Colors, colorToClass, hoverColorToClass } from "@theme/colors"; import Anchor from "../Anchor"; import classNames from "classnames"; diff --git a/src/pages/ContactsPage.tsx b/src/pages/ContactsPage.tsx index 5b8a33c..d4af859 100644 --- a/src/pages/ContactsPage.tsx +++ b/src/pages/ContactsPage.tsx @@ -1,9 +1,9 @@ import React from "react"; import { Helmet } from "react-helmet"; import "./ContactsPage.scss"; -import { StaticContext } from "../server/StaticContext"; +import { StaticContext } from "@server/StaticContext"; import PageSection from "@components/PageSection"; -import { getContacts, Occupation, Committee, getCommittees } from "../models/Contacts"; +import { getContacts, Occupation, Committee, getCommittees } from "@models/Contacts"; import CommitteeContainer from "@components/CommitteeContainer"; import TextAnchor from "@components/TextAnchor/index"; diff --git a/src/pages/EventPage.tsx b/src/pages/EventPage.tsx index 4d18f6c..957bb61 100644 --- a/src/pages/EventPage.tsx +++ b/src/pages/EventPage.tsx @@ -1,7 +1,7 @@ import React from "react"; import { Helmet } from "react-helmet"; import "./EventPage.scss"; -import { Event, getEvent } from "../models/Event"; +import { Event, getEvent } from "@models/Event"; import { RouteComponentProps } from "react-router-dom"; import Button, { ButtonType } from "@components/Button"; import Anchor from "@components/Anchor"; diff --git a/src/pages/SignUpPage.tsx b/src/pages/SignUpPage.tsx index d04bbad..30be232 100644 --- a/src/pages/SignUpPage.tsx +++ b/src/pages/SignUpPage.tsx @@ -2,8 +2,8 @@ import React from "react"; import { Helmet } from "react-helmet"; import Form from "react-jsonschema-form"; import "./SignUpPage.scss"; -import { getForm, SignupForm } from "../models/SignupForm"; -import { createSignup, Signup } from "../models/Signup"; +import { getForm, SignupForm } from "@models/SignupForm"; +import { createSignup, Signup } from "@models/Signup"; import PageSection from "@components/PageSection"; import { Question } from "@components/SignupQuestionsWidget"; diff --git a/src/pages/SignupCreatePage.tsx b/src/pages/SignupCreatePage.tsx index 1ba1403..dc89580 100644 --- a/src/pages/SignupCreatePage.tsx +++ b/src/pages/SignupCreatePage.tsx @@ -3,7 +3,7 @@ import { Helmet } from "react-helmet"; import { Link } from "react-router-dom"; import "./SignupCreatePage.scss"; import Form from "react-jsonschema-form"; -import { createForm, getForm, updateForm, SignupForm } from "../models/SignupForm"; +import { createForm, getForm, updateForm, SignupForm } from "@models/SignupForm"; import DatetimeWidget from "@components/DatetimeWidget"; import SignupQuestionsWidget from "@components/SignupQuestionsWidget"; From acba0cb46649c456251ee5a2dab677a7cd058976 Mon Sep 17 00:00:00 2001 From: Aarni Halinen Date: Wed, 8 Jul 2020 16:11:42 +0300 Subject: [PATCH 28/56] Continue page/view splitting --- src/pages/ActualPage.tsx | 144 +-------- src/pages/ContactsPage.tsx | 39 +-- src/pages/CorporatePage.tsx | 86 +----- src/pages/EventPage.tsx | 45 +-- src/pages/FreshmenPage.tsx | 121 +------- src/pages/FrontPage.tsx | 12 +- src/pages/GuildPage.tsx | 244 +--------------- src/pages/InEnglishPage.tsx | 25 +- src/pages/NotFoundPage.scss | 9 - src/pages/NotFoundPage.tsx | 38 ++- src/pages/SignUpPage.tsx | 12 +- src/pages/StudiesPage.tsx | 99 +------ src/pages/{ => admin}/EventCreatePage.scss | 2 +- src/pages/{ => admin}/EventCreatePage.tsx | 0 src/pages/{ => admin}/FeedCreatePage.scss | 2 +- src/pages/{ => admin}/FeedCreatePage.tsx | 0 src/pages/{ => admin}/SignupCreatePage.scss | 2 +- src/pages/{ => admin}/SignupCreatePage.tsx | 0 src/routes.tsx | 6 +- .../ActualPage}/ActualPage.scss | 0 src/views/ActualPage/ActualPageView.tsx | 137 +++++++++ .../ContactsPage}/ContactsPage.scss | 2 +- src/views/ContactsPage/ContactsPageView.tsx | 52 ++++ .../CorporatePage}/CorporatePage.scss | 0 src/views/CorporatePage/CorporatePageView.tsx | 88 ++++++ src/{pages => views/EventPage}/EventPage.scss | 0 src/views/EventPage/EventPageView.tsx | 52 ++++ .../FreshmenPage}/FreshmenPage.scss | 0 src/views/FreshmenPage/FreshmenPageView.tsx | 109 +++++++ src/views/FrontPage/FrontPageView.tsx | 274 +++++++----------- src/{pages => views/GuildPage}/GuildPage.scss | 0 src/views/GuildPage/GuildPageView.tsx | 229 +++++++++++++++ .../InEnglishPage}/InEnglishPage.scss | 0 src/views/InEnglishPage/InEnglishPageView.tsx | 10 + .../SignUpPage}/SignUpPage.scss | 0 src/views/SignUpPage/SignUpPageView.tsx | 21 ++ .../StudiesPage}/StudiesPage.scss | 0 src/views/StudiesPage/StudiesPageView.tsx | 84 ++++++ 38 files changed, 986 insertions(+), 958 deletions(-) delete mode 100644 src/pages/NotFoundPage.scss rename src/pages/{ => admin}/EventCreatePage.scss (95%) rename src/pages/{ => admin}/EventCreatePage.tsx (100%) rename src/pages/{ => admin}/FeedCreatePage.scss (95%) rename src/pages/{ => admin}/FeedCreatePage.tsx (100%) rename src/pages/{ => admin}/SignupCreatePage.scss (95%) rename src/pages/{ => admin}/SignupCreatePage.tsx (100%) rename src/{pages => views/ActualPage}/ActualPage.scss (100%) create mode 100644 src/views/ActualPage/ActualPageView.tsx rename src/{pages => views/ContactsPage}/ContactsPage.scss (71%) create mode 100644 src/views/ContactsPage/ContactsPageView.tsx rename src/{pages => views/CorporatePage}/CorporatePage.scss (100%) create mode 100644 src/views/CorporatePage/CorporatePageView.tsx rename src/{pages => views/EventPage}/EventPage.scss (100%) create mode 100644 src/views/EventPage/EventPageView.tsx rename src/{pages => views/FreshmenPage}/FreshmenPage.scss (100%) create mode 100644 src/views/FreshmenPage/FreshmenPageView.tsx rename src/{pages => views/GuildPage}/GuildPage.scss (100%) create mode 100644 src/views/GuildPage/GuildPageView.tsx rename src/{pages => views/InEnglishPage}/InEnglishPage.scss (100%) create mode 100644 src/views/InEnglishPage/InEnglishPageView.tsx rename src/{pages => views/SignUpPage}/SignUpPage.scss (100%) create mode 100644 src/views/SignUpPage/SignUpPageView.tsx rename src/{pages => views/StudiesPage}/StudiesPage.scss (100%) create mode 100644 src/views/StudiesPage/StudiesPageView.tsx diff --git a/src/pages/ActualPage.tsx b/src/pages/ActualPage.tsx index 80df124..1062427 100644 --- a/src/pages/ActualPage.tsx +++ b/src/pages/ActualPage.tsx @@ -1,141 +1,15 @@ import React from "react"; import { Helmet } from "react-helmet"; -import "./ActualPage.scss"; -import PageSection from "@components/PageSection"; -import HeroMainSection from "@components/Hero/HeroMainSection/HeroMainSection"; -import HeroAsideSection from "@components/Hero/HeroAsideSection/HeroAsideSection"; -import HeroAsideItem from "@components/Hero/HeroAsideItem/HeroAsideItem"; -import AsideSection from "@components/AsideSection"; -import MainSection from "@components/MainSection/index"; -import Ribbon from "@components/Ribbon/index"; -import TextAnchor from "@components/TextAnchor/index"; -import Button, { ButtonType } from "@components/Button/index"; -import Accordion from "@components/Accordion"; -import HeroSecondarySection, { HeroSecondarySectionItem } from "@components/Hero/HeroSecondarySection/HeroSecondarySection"; +import ActualPageView from "@views/ActualPage/ActualPageView"; -export interface ActualPageProps {} -export interface ActualPageState {} +const ActualPage = () => ( + <> + + + + + +) -class ActualPage extends React.Component { - render() { - return ( -
- - - - - -

Yritystapahtumia ja vastapainoa opiskelulle

-

- Teekkarielämä ei ole pelkkää saunomista, juhlimista ja muita huvituksia—tai no, on se sitäkin. -

-
- - -
- - - Killan hallitus päivystää kiltahuoneella maanantaisin klo 12.15–13.15. Tuolloin voit ostaa kiltatuotteita, kuten esim. haalarimerkkejä tai laulukirjoja. - - - Kiltapäiväkerho Kiltis kokoontuu torstaisin klo XX.XX kiltahuoneella. Lorem ipsum dolor sit amet. Lämpimästi tervetuloa kaikki SIKkiläiset ja SIK-mieliset! - - -
- -

- Kilta järjestää jäsenilleen jos jonkinlaista projektia ja toimintaa, muun muassa: -

- - - - - - - - - - -
-
- - -

Tapahtumat

-
-
- - -

Uutiset

-
-
- - -

Kuvia tapahtumista.

- -
Kuvagalleria ›
-
-
-
-
- - - -
- - -

Sinustako kilta-aktiivi?

- -
Tule mukaan kiltatoimintaan ›
-
-
-
- - - -

Yritystapahtumia ja vastapainoa opiskelulle

-

- Toimintaa ylläpitää ja järjestää jaokset ja toimikunnat. -

- - Jotain elepajasta - - - Jotain elepajasta - - - Jotain elepajasta - - - Jotain elepajasta - - - Jotain elepajasta - -
- -
-
- ); - } -} export default ActualPage; diff --git a/src/pages/ContactsPage.tsx b/src/pages/ContactsPage.tsx index d4af859..50f7ee5 100644 --- a/src/pages/ContactsPage.tsx +++ b/src/pages/ContactsPage.tsx @@ -1,11 +1,8 @@ import React from "react"; import { Helmet } from "react-helmet"; -import "./ContactsPage.scss"; import { StaticContext } from "@server/StaticContext"; -import PageSection from "@components/PageSection"; import { getContacts, Occupation, Committee, getCommittees } from "@models/Contacts"; -import CommitteeContainer from "@components/CommitteeContainer"; -import TextAnchor from "@components/TextAnchor/index"; +import ContactsPageView from "@views/ContactsPage/ContactsPageView"; interface ContactsPageProps { staticContext: StaticContext; @@ -75,41 +72,13 @@ class ContactsPage extends React.Component render() { const { contacts, committees } = this.state; - const board = contacts.filter(x => x.role.is_board); return ( -
+ <> - -

- Asiaa olisi, mutta kehen ottaa yhteyttä?
- Tämä sivu yrittää valottaa sen oikean ihmisen puhelinnumeroa ja sähköpostiosoitetta. -

-
- -
- -

- {"Hallitukseen saa yhteyden lähettämällä sähköpostia "} - - sik-hallitus@list.ayy.fi - -

-
-
- {committees.map((committee, index) => { - const order = committee.name_fi === "Toimikunnattomat" ? 1 : 0; - return ( - - x.role.committee.name_fi === committee.name_fi)} /> - - ) - })} -
+ + ); } } diff --git a/src/pages/CorporatePage.tsx b/src/pages/CorporatePage.tsx index c7117b3..80c9035 100644 --- a/src/pages/CorporatePage.tsx +++ b/src/pages/CorporatePage.tsx @@ -1,15 +1,6 @@ import React from "react"; import { Helmet } from "react-helmet"; -import "./CorporatePage.scss"; -import PageSection from "@components/PageSection"; -import HeroMainSection from "@components/Hero/HeroMainSection/HeroMainSection"; -import HeroAsideSection from "@components/Hero/HeroAsideSection/HeroAsideSection"; -import HeroAsideItem from "@components/Hero/HeroAsideItem/HeroAsideItem"; -import AsideSection from "@components/AsideSection"; -import MainSection from "@components/MainSection/index"; -import PageLink from "@components/PageLink/index"; -import Ribbon from "@components/Ribbon/index"; -import TextAnchor from "@components/TextAnchor/index"; +import CorporatePageView from "@views/CorporatePage/CorporatePageView"; export interface CorporatePageProps {} export interface CorporatePageState {} @@ -17,81 +8,12 @@ export interface CorporatePageState {} class CorporatePage extends React.Component { render() { return ( -
+ <> - - -

Tee yhteistyötä tulevaisuuden huippuosaajien kanssa!

-

- Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed vehicula aliquam enim, in lacinia nunc rutrum fringilla. Phasellus dui dolor, pellentesque vitae feugiat non, maximus in felis. Praesent feugiat vehicula mi, sed tincidunt enim venenatis quis. In euismod gravida ullamcorper. Phasellus a sagittis nisi, vitae blandit ipsum. Nunc rhoncus ultrices ante, id commodo dolor convallis id. Morbi ullamcorper vulputate risus id sodales. -

-
- - - - - -
- - - -

Yhteistyömahdollisuudet

- -

TODO: Tähän nostoja yhteistyöstä! Yhteistyömahdollisuuksista voi tiedustella lisää killan yrityssuhdemestarilta.

- -
Yritysbrunssi
-

Yritysbrunssi on Sähköinsinöörikillan ja bioinformaatioteknologian ainejärjestö Inkubion syksyllä järjestämä yritystapahtuma. Tapahtumassa luodaan yrityksille mahdollisuus tavata tulevaisuuden ammattilaisia maukkaan brunssin lomassa.

- -
Haalarimainonta
-

Sähköinsinöörikillan ensimmäisen vuoden opiskelijat saavat opiskelijahaalarinsa heti syksyn ensimmäisenä päivänä. Yrityksien on mahdollista ostaa mainostilaa haalareista ja samalla lunastaa esiintymispaikka haalareiden luovutustilaisuuteen, "Haalarigaalaan". Tilaisuus on erinomainen paikka jäädä heti uusien opiskelijoiden mieleen.

- -
Excursiot
-

Excursioiden tarkoituksena on tarjota opiskelijoille mahdollisuus tutustua yritysmaailmaan. Pidemmillä excursiolla hauskanpito ja teekkariperinteiden vaaliminen on tärkeä osa excursiota.

- -
Potentiaalin Tasaus
-

Kiltamme viettää vuosijuhliaan helmikuun kolmantena lauantaina. Potentiaalin Tasaus on kiltamme juhlavin tapahtuma. Yrityksillä on mahdollisuus osallistua vuosijuhliin niin pienellä kuin suurellakin panoksella.

-
- -
- - Excursiosäännöt - - - Liity jäseneksi - -
-
-
- - -

Mainos Sössöön?

- -

Killan lehden mediakortin löydät täältä›

-
-
-
- - - -

Työpaikkaulmoitukset

-

TODO: Miten listataan yritykset?

- {/* TODO: Fix links */} -

Voit saada yrityksesi työpaikkailmoituksen listalle lähettämällä sen osoitteeseen sik-yritys@list.ayy.fi

-
- -
-
+ + ); } } diff --git a/src/pages/EventPage.tsx b/src/pages/EventPage.tsx index 957bb61..c79d368 100644 --- a/src/pages/EventPage.tsx +++ b/src/pages/EventPage.tsx @@ -1,25 +1,18 @@ import React from "react"; import { Helmet } from "react-helmet"; -import "./EventPage.scss"; -import { Event, getEvent } from "@models/Event"; import { RouteComponentProps } from "react-router-dom"; -import Button, { ButtonType } from "@components/Button"; -import Anchor from "@components/Anchor"; -import PageSection from "@components/PageSection"; -import MainSection from "@components/MainSection"; -import AsideSection from "@components/AsideSection/AsideSection"; +import { Event, getEvent } from "@models/Event"; +import EventPageView from "@views/EventPage/EventPageView"; interface MatchParams { id: string; } -export interface EventPageOwnProps {} - -export interface EventPageState { +interface EventPageState { event?: Event; } -type EventPageProps = EventPageOwnProps & RouteComponentProps +type EventPageProps = RouteComponentProps class EventPage extends React.Component { constructor(props: EventPageProps) { @@ -47,36 +40,12 @@ class EventPage extends React.Component { if (!event) return
Loading
return ( -
+ <> - - - - {event.title_fi} -

{event.title_fi}

-

- {event.description_fi} -

-

- {event.content_fi} -

- {/* We may have multiple signup forms. Generate own Button for each one */} -
- {event.signupForm.map(sf => ( - - - - ) - )} -
-
- -
-
+ + ); } } diff --git a/src/pages/FreshmenPage.tsx b/src/pages/FreshmenPage.tsx index e232f3a..9f3d742 100644 --- a/src/pages/FreshmenPage.tsx +++ b/src/pages/FreshmenPage.tsx @@ -1,120 +1,17 @@ import React from "react"; import { Helmet } from "react-helmet"; -import "./FreshmenPage.scss"; -import PageSection from "@components/PageSection/index"; -import HeroMainSection from "@components/Hero/HeroMainSection/HeroMainSection"; -import HeroAsideSection from "@components/Hero/HeroAsideSection/HeroAsideSection"; -import HeroAsideItem from "@components/Hero/HeroAsideItem/HeroAsideItem"; -import AsideSection from "@components/AsideSection/index"; -import MainSection from "@components/MainSection/index"; -import PageLink from "@components/PageLink/index"; -import Ribbon from "@components/Ribbon/index"; -import TextAnchor from "@components/TextAnchor/index"; -import InfoBox from "@components/InfoBox/index"; +import FreshmenPageView from "@views/FreshmenPage/FreshmenPageView"; export interface FreshmenPageProps {} export interface FreshmenPageState {} -class FreshmenPage extends React.Component { - render() { - return ( -
- - - - - -

Tervetuloa opiskelemaan Otaniemeen!

-

- Me olemme Emmaleena ja Jonna, sinun Fuksikapteenisi. Päätehtävämme on huolehtia fuksivuodestasi Aalto-yliopiston Sähköinsinöörikillassa. -

-

Tämä on fuksien oma etusivu ja olemmekin keränneet tänne kaikki tärkeimmät tiedot, joita fuksivuotenasi tarvitset. Tietysti kannattaa katsoa myös yleisiä sivuja, sillä tänne ei mahdu kaikki, mitä killassa tapahtuu. -

-
- - - - - - -
- - - -

Onnittelut hyvästä opiskeluvalinnasta

- -
Lorem
-

- Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed vehicula aliquam enim, in lacinia nunc rutrum fringilla. Phasellus dui dolor, pellentesque vitae feugiat non, maximus in felis. Praesent feugiat vehicula mi, sed tincidunt enim venenatis quis. In euismod gravida ullamcorper. Phasellus a sagittis nisi, vitae blandit ipsum. Nunc rhoncus ultrices ante, id commodo dolor convallis id. Morbi ullamcorper vulputate risus id sodales. -

-
Ipsum
-

- Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed vehicula aliquam enim, in lacinia nunc rutrum fringilla. Phasellus dui dolor, pellentesque vitae feugiat non, maximus in felis. Praesent feugiat vehicula mi, sed tincidunt enim venenatis quis. In euismod gravida ullamcorper. Phasellus a sagittis nisi, vitae blandit ipsum. Nunc rhoncus ultrices ante, id commodo dolor convallis id. Morbi ullamcorper vulputate risus id sodales. -

-
Raketteja ja mikropiirejä
-

- Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed vehicula aliquam enim, in lacinia nunc rutrum fringilla. Phasellus dui dolor, pellentesque vitae feugiat non, maximus in felis. Praesent feugiat vehicula mi, sed tincidunt enim venenatis quis. In euismod gravida ullamcorper. Phasellus a sagittis nisi, vitae blandit ipsum. Nunc rhoncus ultrices ante, id commodo dolor convallis id. Morbi ullamcorper vulputate risus id sodales. -

-
- -
- - Fuksikipparit tavoitat - - - Liity jäseneksi - - - Fuksipisteohje - -
-
- -
Telegram?
-

- Telegram on pikaviestinpalvelu, jota käytetään otaniemessä paljon. Hieman samanlainen kuin Whatsapp, mutta ominaisuuksiltaan paremmaksi todettu. Lisätietoja: https://telegram.org/faq -

-

- SIK:n fukseilla on oma Telegram-ryhmä, jonne pääset liitymään tästä. -

- -
-
-
-
- - -

Killassa tapahtuu kaikenlaista!

- -

Seuraa killan tapahtumia

-
-
-
- - - -

Isoryhmät

-

Lorem jotain ISOryhmiä X kpl

-

Mikä ihmeen ISO...

-

TODO: Kuvia

-
- -
-
- ); - } -} +const FreshmenPage: React.FC = () => ( + <> + + + + + +) export default FreshmenPage; diff --git a/src/pages/FrontPage.tsx b/src/pages/FrontPage.tsx index 5e6dbe1..9f1917b 100644 --- a/src/pages/FrontPage.tsx +++ b/src/pages/FrontPage.tsx @@ -1,5 +1,5 @@ import React from "react"; -import appStore from "@stores/AppStore"; +import { Helmet } from "react-helmet"; import { Event, getEvents } from "@models/Event"; import { Post, getFeed } from "@models/Feed"; import { StaticContext } from "@server/StaticContext"; @@ -76,8 +76,14 @@ class FrontPage extends React.Component { render() { const { events, feed } = this.state; - return + return ( + <> + + + + + ) } } -export default props => ; +export default FrontPage; diff --git a/src/pages/GuildPage.tsx b/src/pages/GuildPage.tsx index 74a2ddf..db0883e 100644 --- a/src/pages/GuildPage.tsx +++ b/src/pages/GuildPage.tsx @@ -1,240 +1,14 @@ import React from "react"; import { Helmet } from "react-helmet"; -import "./GuildPage.scss"; -import PageSection from "@components/PageSection"; -import MainSection from "@components/MainSection"; -import AsideSection from "@components/AsideSection"; -import PageLink from "@components/PageLink"; -import HeroMainSection from "@components/Hero/HeroMainSection/HeroMainSection"; -import HeroAsideSection from "@components/Hero/HeroAsideSection/HeroAsideSection"; -import HeroAsideItem from "@components/Hero/HeroAsideItem/HeroAsideItem"; -import Ribbon from "@components/Ribbon"; -import InfoBox from "@components/InfoBox"; -import Accordion from "@components/Accordion"; -import TextAnchor from "@components/TextAnchor"; +import GuildPageView from "@views/GuildPage/GuildPageView"; -export interface GuildPageProps { } -export interface GuildPageState { } - -class GuildPage extends React.Component { - render() { - return ( -
- - - -
- - -

Kilta koostuu sähkötekniikan ja elektroniikan (ELEC) tutkinto-ohjelmissa opiskelevista opiskelijoista

-

Vapaa-ajan jäsenpalvelujen lisäksi killan tehtävänä on edistää jäsentensä opintoja, tarjota uraohjausta ja fuksikasvatusta. Jokaiselle jäsenelle löytyy varmasti jotakin—kaukomaita, opiskelijalehti Sössöä, ja kiltaaktiivina pääset kartuttamaan kokemusta, josta on hyötyä myös työelämässä.

-

Arvot estrumquias doluptatur aut quam fugiti cus debit landisciis eatemperes eumquibus di blat que sim etus idis dolut labor ad magnat.

-
- - - - - - - - - - -
- - - -

Killan tehtävät ja tarina

-

Kilta tukee jäsentensä hyvinvointia ja tarjoaa vastapainoa opiskelulle. Kilta järjestää esimerkiksi urheilutapahtumia, kulttuurielämyksiä ja näiden lisäksi sitsejä ja saunailtoja. Valinnanvaraa on, joten tapahtumakalenterin aktiivisella seuraamisella saattaa olla hyvinkin miellyttäviä seuraamuksia. Voit myös itse järjestää mieleisesi tapahtuman killan tukemana, tai ehdottaa sitä killan toimitsijoille.

- -

Yhteistyössä korkeakoulun kanssa, kilta kehittää opetusta. Kilta on mukana kurssien kehittämisessä, valvoo kiltalaisten etua korkeakoulussa ja tuo korkeakoulun henkilöstöä lähemmäs kiltalaisia. Kilta avaa oven yritysmaailmaan järjestämällä yritysten kanssa excursioita, saunailtoja ja yritystapahtumia. Lisäksi killan kautta kuulee ensimmäisten joukossa uusista avoimista työpaikoista. Killalla on Otaniemen mukavin kiltahuone, jossa voi käydä hengähtämässä luentojen välillä, hakea apua vaikeisiin tehtäviin tai järjestää vaikka leffailtoja. Tämän lisäksi killalla on myös haastavampaan elektroniikkaharrasteluun sopivat tilat.

- -
Takana lähes satavuotinen historia
- -

Vaikka kilta onkin ajan hermolla, on sillä takana lähes satavuotinen historia. - Sähköinsinööriklubin tuore puheenjohtaja lausahti klubin ensimmäisessä - varsinaisessa kokouksessa 16. helmikuuta 1921: “Koska klubi nyt ensi kerran - kokoontuu, niin pyydän lausua toivomuksena, että klubin jäsenillä aina tulisi - olemaan hauskaa, että toverielämä kukoistaisi ja että myös sähkötekniikkaa - klubissa harrastettaisiin.”.

- -

Vaikka ajat ovat muuttuneet, klubi on muuttunut killaksi ja jäsenmäärä kasvanut - alkuajoista valtavasti, ohjaavat nämä kolme asiaa edelleen killan toimintaa. Vaikka - pitkästä historiasta kannattaa olla ylpeä, ei sitä tarvitse kokea taakkana. Uutta - historiaa luodaan koko ajan ja tässä on meillä kaikilla mahdollista olla mukana. Ole - aktiivinen, ota asioista selvää ja osallistu kaikkeen mahdolliseen. Tulet varmasti - yllättymään kaikesta siitä mitä täältä keskuudestamme löytyy.

- -
Meitä teekkareita on todella moneen lähtöön
- -

Minkäänlaista perus- tai ihanneteekkaria ei ole olemassa, vaan paras teekkariuden - määritelmä kuuluukin: “teekkarius on kaikkea sitä, mitä teekkarit tekevät”. Yksi asia - meitä kaikkia kuitenkin yhdistää. Opiskelemme jotain tekniikkaan liittyvää täällä - Aalto-yliopistossa. - Teekkariutta on vaikkapa toimiminen killoissa tai jossain AYY:n lukuisista - yhdistyksistä. Teekkariutta on yhtä lailla SIK:n tapahtumien järjestäminen tai niihin osallistuminen kuin vaikkapa laulaminen Polyteknikkojen Kuorossa tai sukeltaminen Polyteknikkojen sukelluskerho Kuplassa. Kaikille varmasti löytyy jotain itseä kiinnostavaa.

- -

Teekkareilla, varsinkin otaniemeläisillä, on pitkä ja vahva historia. Siihen kannattaa - tutustua, jotta saa jonkinlaisen kuvan siitä vahvasta teekkarihengestä, joka - meillä täällä opinahjossamme vallitsee ja on vallinnut koko sen historian ajan. - Teekkariuteen kuuluu olennaisena osana mukautuminen ajan vaatimuksiin. Jos asiat - tehtäisiin aina vanhaa toistaen, ei voitaisi enää edes puhua teekkariudesta.

-
- -
- - Yliopiston jäsenedut - - - Liity jäseneksi - -
-
- - Herrasmies- tai herrasnaisuus kuuluu olennaisena osana teekkariuteen. Hyvät käytöstavat on syytä aina pitää mielessä, liikuttiin sitten puku päällä excuilla tai sitseillä tai haalarit päällä Tukholman illassa. - -
-
-
- - -

Killan hallinto koostuu XXX henkilöstä.

-
-
- - - -

Organisaatio

- -

Sähköinsinöörikillassa toimeenpanovaltaa käyttää 3–13 kiltalaisen muodostama hallitus apunaan lukuisa määrä toimihenkilöitä. Hallituksen ja toimihenkilöt valitsee killan valtuusto, joka myös valvoo näiden toimintaa. Käytännössä valtuusto valitsee vaalikokouksessaan ensin uuden puheenjohtajan ja jää 1–2 viikon mittaiselle kokoustauolle. Tauon jälkeen puheenjohtaja esittelee valtuustolle ehdotuksensa hallitukseksi ja toimihenkilöiksi, ja valtuusto joko hyväksyy tai hylkää ehdotuksen noin tunnin kestävän kysely- ja esittelytuokion jälkeen. Hallituksen kuulumiset lorem.

- -
Valtuuston toimintaa
- -

Killan valtuusto valitaan marraskuussa pidettävillä vaaleilla yhdeksi vuodeksi kerrallaan. Vaaleissa ovat vaalikelpoisia ja äänioikeutettuja kaikki SIK:n varsinaiset jäsenet. Uuden valtuuston toiminta alkaa varsin pian valitsemisen jälkeen vaalikokouksessa, jossa todetaan uusi kokoonpano, valitaan puhemiehistö, killan hallituksen puheenjohtaja ja muut hallituksen jäsenet, toimihenkilöt, toimikuntien puheenjohtajat sekä tilintarkastajat. Toinen sääntömääräinen valtuuston kokous on helmikuinen vuosikokous, jossa käsitellään mm. edellisen vuoden toimintakertomus ja tilinpäätös, sekä kuluvan vuoden toimintasuunnitelma ja budjetti. Lisäksi valtuusto pitää tarpeelliseksi katsomanssa määrän kokouksia pitkin vuotta. Pöytäkirjat ja muut dokumentit lorem ipsum.

- -
Hallituksen toimintaa
-

Jokaisella hallituksen jäsenellä on oma vastuualueensa, jota hän hoitaa yhdessä mahdollisen toimikuntansa kanssa. Puheenjohtajan tehtävä on pitää langat käsissään, ja olla perillä kaikesta, mitä killassa tapahtuu. Hallitus tekee päätökset ja sopii menettelytavat viikottaisessa kokouksessaan. Hallitus on vastuussa kaikesta killan näkyvästä ja näkymättömästä toiminnasta, ja se on myös oikea osoite, jos joku asia vaivaa mieltä, tai mielessä on parannusehdotus mihin tahansa asiaan.

- -
- -
- - Vuoden 2019 hallinto - - - Dolor sit amet - -
-
-
- - -

Kiltatoimintaa järjestää ja ylläpitää kilta-aktiivit, toimikunnat ja jaokset.

-
-
-
- -
Miksi alkaa kilta-aktiiviksi?
-

- Näitä töitä tehdessä saa väkisinkin paljon uusia kavereita ja oppii monia palkallisessa työelämässä tarpeellisia taitoja. Eikä laajasta tuttavapiiristä ja monista kontakteista varmasti haittaa ole tulevaa työuraakaan ajatellen. Rahallista tai materiaalista hyötyä kiltatoiminnasta ei saa, eikä kukaan killan toimintaan mukaan tuleva sitä pyrikään tavoittelemaan. Mikä tärkeintä, kiltatoiminta on kivaa! -

-

- » Uusia ystäviä, samanhenkistä seuraa -

-

- » Loistava mahdollisuus kokeilla omia kykyjään -

-

- » Voit kokeilla ja oppia jotain sellaista, mitä et ikinä aikaisemmin ole tehnyt -

-
- -
Runsaasti erilaisia tehtäviä
-

- Killassa on todella monenlaisia tehtäviä. Olitpa koodaaja, urheilija tai ammattimainen juhlija, killasta löytyy tekemistä juuri sinulle. Toimikunnissa sitoudut toimintaan vuodeksi kerrallaan. Jaostoiminta mahdollistaa kiltatoiminnan kokeilun pienemmässä mittakaavassa. Tehtäväkuvaukset lorem ipsum dolor sit amet alla. Jos ei löydy sopivaa lorem ipsum dolor sit amet, voit perustaa myös oman. -

-

- » Haluatko valtuustoon, hallitukseen tai toimariksi? -

-

- » Toimihenkilönä pääset edistämään opintoja -

-

- » Lorem ipsum -

-
-
- - - -
-

Sähkötekniikan korkeakoulun toimikunnat

-

- Ylioppilaskunnalla on edustus suuressa osassa Aalto-yliopiston tiedekuntia. Elektroniikan, tietoliikenteen ja automaation tiedekunnan toimikuntiin eli hallopedeihin opiskelijavalinna EST- ja TLT-tutkinto-ohjelmien osalta tehdään osin ylioppilaskunnan edustajistossa Sähköinsinöörikillan esityksestä ja osin Sähköinsinöörikillassa. -

-
-
- - Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed rhoncus feugiat ante. Nam eget venenatis dui. Morbi purus dui, cursus at velit id, placerat scelerisque turpis. Nulla a mauris odio. Nulla at tempor mi. Maecenas et sapien eu lorem interdum luctus. Proin interdum, tortor eget tempor tristique, massa arcu suscipit ipsum, sit amet lacinia erat lorem sit amet ipsum. Praesent dictum odio auctor odio sodales pharetra. Quisque accumsan iaculis diam, a laoreet odio aliquet eu. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. In hac habitasse platea dictumst. Pellentesque at hendrerit mi. Morbi at lacus finibus, pharetra urna sed, molestie tellus. Duis fermentum sodales leo. Nullam varius, massa in convallis sagittis, mi felis lacinia ipsum, viverra rhoncus nibh ipsum vel mi. Pellentesque ornare hendrerit malesuada. - Suspendisse porta diam in massa suscipit congue. Nulla facilisi. Nulla egestas tempus arcu, vitae ultrices risus rhoncus ac. Ut porta orci neque, vel fermentum turpis fermentum in. Curabitur condimentum, mi in tristique pulvinar, mauris nibh bibendum neque, quis tincidunt purus eros quis dolor. Aliquam imperdiet nibh ac quam iaculis, at ullamcorper diam ultricies. Vestibulum egestas consequat justo non vehicula. Nam non egestas tellus. - Praesent vel auctor ligula. Phasellus faucibus vulputate erat, non fringilla sem ultrices non. In vitae elit sit amet nisl interdum ultrices nec in ligula. Ut et turpis risus. Sed mattis varius nisl, in euismod diam fringilla ac. Nunc sed eros augue. Donec sit amet quam ex. Integer luctus nulla at est rutrum, a commodo est dapibus. Maecenas sagittis scelerisque blandit. Morbi congue tortor eros, sit amet vestibulum dolor tempor vitae. In pretium tellus at velit porttitor, vitae rutrum lacus suscipit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam bibendum ultricies metus, nec placerat urna efficitur auctor. Morbi non purus magna. Ut at ex nec nunc dictum ultricies. - Mauris volutpat nec sem sed malesuada. Sed eu scelerisque libero. Phasellus at mauris in ligula congue interdum et sit amet ante. Sed vestibulum, sem non congue molestie, quam massa euismod sem, non porta sem mauris vitae justo. Donec et fringilla tortor. Cras sed purus eget ante elementum mattis. Nunc elit nunc, volutpat sed congue ac, varius a ligula. Aenean sit amet laoreet dolor. Aenean finibus iaculis diam, quis lacinia nisi semper id. Phasellus eu nulla sed risus accumsan finibus. Nulla vel ante id mi vulputate ultrices. Cras finibus elementum tortor, at fringilla arcu facilisis ut. Cras vitae lectus pretium, posuere risus venenatis, congue metus. Phasellus vel dapibus felis. - Maecenas tincidunt orci nulla. Sed maximus tellus nec lorem dignissim aliquet. Maecenas tincidunt dolor sed est laoreet, nec suscipit augue dictum. Vivamus venenatis rutrum molestie. Vestibulum in maximus leo. Duis a euismod nulla. Aenean luctus sodales quam, ut fringilla elit bibendum in. Ut in purus sit amet libero hendrerit hendrerit ac eget nisl. In ac mauris at felis suscipit scelerisque eu eget erat. Fusce accumsan tempus mauris, porta sagittis odio venenatis ac. Integer mollis nulla in velit dignissim imperdiet. Nunc ac magna ullamcorper, pretium mauris et, semper enim. Morbi aliquet accumsan turpis id rutrum. Donec purus tellus, pellentesque non nunc ac, ornare scelerisque ex. - - - - - -
-
- -
-

Jaokset—kokeile kiltatoimintaa vapaammin

-

- Kiinnostaako kiltatoiminta, mutta vuoden kestävä sitoutuminen pelottaa? Jaokset mahdollistavat kiltatoiminnan kokeilemisen pienemmässä mittakaavassa. Jaokset toimivat varsin vapaamuotoisesti, mutta siltikin hyvässä hengessä. Mikäli Sinulla olisi hyvä idea, mitä kilta voisi jaosmaisesti toteuttaa, voit myös perustaa oman jaoksen. -

-
-
-
- - -

Jäsenedut vuonna 2019

-
-
- - - -

Aalto-yliopiston tarjoamat monenlaiset edut

-

- Sen lisäksi että kilta tarjoaa jäsenilleen palveluja ja aktiviteetteja, Aalto-yliopisto tarjoaa lorem ipsum dolor sit amet. -

-

- » Download.aalto.fi Täältä voit ladata yliopiston tarjoamia ohjelmia ilmaiseksi. -

-
- - - Jäseneksi liittyminen on helppoa, hauskaa ja hyödyllistä 8 € jäsenmaksulla pääset nauttimaan kaikista jäseneduista. - - -
-
-
- ); - } -} +const GuildPage: React.FC = () => ( + <> + + + + + +); export default GuildPage; diff --git a/src/pages/InEnglishPage.tsx b/src/pages/InEnglishPage.tsx index 7c15fb4..d5bb080 100644 --- a/src/pages/InEnglishPage.tsx +++ b/src/pages/InEnglishPage.tsx @@ -1,21 +1,14 @@ import React from "react"; import { Helmet } from "react-helmet"; -import "./InEnglishPage.scss"; +import InEnglishPageView from "@views/InEnglishPage/InEnglishPageView"; -export interface InEnglishPageProps {} -export interface InEnglishPageState {} - -class InEnglishPage extends React.Component { - render() { - return ( -
- - - - In English Page -
- ); - } -} +const InEnglishPage: React.FC = () => ( +
+ + + + +
+); export default InEnglishPage; diff --git a/src/pages/NotFoundPage.scss b/src/pages/NotFoundPage.scss deleted file mode 100644 index d2ce8de..0000000 --- a/src/pages/NotFoundPage.scss +++ /dev/null @@ -1,9 +0,0 @@ -.not-found-page { - text-align: center; - font-size: 4rem; - font-weight: 200; - position: absolute; - height: 10rem; - top: calc(50vh - 5rem); - width: 100%; -} diff --git a/src/pages/NotFoundPage.tsx b/src/pages/NotFoundPage.tsx index 6f80494..8720f6b 100644 --- a/src/pages/NotFoundPage.tsx +++ b/src/pages/NotFoundPage.tsx @@ -1,22 +1,28 @@ import React from "react"; import { Helmet } from "react-helmet"; -import "./NotFoundPage.scss"; +import styled from "styled-components"; -export interface NotFoundPageProps { } +const NotFound = styled.div` + text-align: center; + font-size: 4rem; + font-weight: 200; + position: absolute; + height: 10rem; + top: calc(50vh - 5rem); + width: 100%; +`; -class NotFoundPage extends React.Component { - render() { - return ( -
- - - 404 | Ei vaan löydy - - - 404 | Ei vaan löydy -
- ); - } -} +const NotFoundPage: React.FC = () => ( + <> + + + 404 | Ei vaan löydy + + + + 404 | Ei vaan löydy + + +); export default NotFoundPage; diff --git a/src/pages/SignUpPage.tsx b/src/pages/SignUpPage.tsx index 30be232..3881dc2 100644 --- a/src/pages/SignUpPage.tsx +++ b/src/pages/SignUpPage.tsx @@ -1,11 +1,11 @@ import React from "react"; import { Helmet } from "react-helmet"; import Form from "react-jsonschema-form"; -import "./SignUpPage.scss"; import { getForm, SignupForm } from "@models/SignupForm"; import { createSignup, Signup } from "@models/Signup"; import PageSection from "@components/PageSection"; import { Question } from "@components/SignupQuestionsWidget"; +import SignUpPageView from "@views/SignUpPage/SignUpPageView"; export interface SignUpPageProps { match: { @@ -230,16 +230,12 @@ class SignUpPage extends React.Component { const signups = signUpForm && signUpForm.signups ? this.renderList() : null; return ( -
+ <> - {statusMessage} - - {form} - {signups} - -
+ + ); } } diff --git a/src/pages/StudiesPage.tsx b/src/pages/StudiesPage.tsx index df8ff7b..d75acd1 100644 --- a/src/pages/StudiesPage.tsx +++ b/src/pages/StudiesPage.tsx @@ -1,95 +1,14 @@ import React from "react"; import { Helmet } from "react-helmet"; -import "./StudiesPage.scss"; -import PageSection from "@components/PageSection/index"; -import HeroMainSection from "@components/Hero/HeroMainSection/HeroMainSection"; -import HeroAsideSection from "@components/Hero/HeroAsideSection/HeroAsideSection"; -import HeroAsideItem from "@components/Hero/HeroAsideItem/HeroAsideItem"; -import AsideSection from "@components/AsideSection/index"; -import MainSection from "@components/MainSection/index"; -import PageLink from "@components/PageLink/index"; -import Ribbon from "@components/Ribbon/index"; -import TextAnchor from "@components/TextAnchor/index"; +import StudiesPageView from "@views/StudiesPage/StudiesPageView"; -export interface StudiesPageProps {} -export interface StudiesPageState {} - -class StudiesPage extends React.Component { - render() { - return ( -
- - - - - -

Suomen parasta elektroniikan opetusta

-

- Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed vehicula aliquam enim, in lacinia nunc rutrum fringilla. Phasellus dui dolor, pellentesque vitae feugiat non, maximus in felis. Praesent feugiat vehicula mi, sed tincidunt enim venenatis quis. In euismod gravida ullamcorper. Phasellus a sagittis nisi, vitae blandit ipsum. Nunc rhoncus ultrices ante, id commodo dolor convallis id. Morbi ullamcorper vulputate risus id sodales. -

-
- - - - - -
- - - -

Abeille

- -

TODO: Tähän nostoja yhteistyöstä! Yhteistyömahdollisuuksista voi tiedustella lisää killan yrityssuhdemestarilta.

- -
Lorem
-

Yritysbrunssi on Sähköinsinöörikillan ja bioinformaatioteknologian ainejärjestö Inkubion syksyllä järjestämä yritystapahtuma. Tapahtumassa luodaan yrityksille mahdollisuus tavata tulevaisuuden ammattilaisia maukkaan brunssin lomassa.

- -
Ipsum
-

Sähköinsinöörikillan ensimmäisen vuoden opiskelijat saavat opiskelijahaalarinsa heti syksyn ensimmäisenä päivänä. Yrityksien on mahdollista ostaa mainostilaa haalareista ja samalla lunastaa esiintymispaikka haalareiden luovutustilaisuuteen, "Haalarigaalaan". Tilaisuus on erinomainen paikka jäädä heti uusien opiskelijoiden mieleen.

- -
Raketteja ja mikropiirejä
-

Excursioiden tarkoituksena on tarjota opiskelijoille mahdollisuus tutustua yritysmaailmaan. Pidemmillä excursiolla hauskanpito ja teekkariperinteiden vaaliminen on tärkeä osa excursiota.

-
- -
- - Kurssitarjonta - - - Liity jäseneksi - -
-
-
- - -

Hae opiskelemaan!

- -

Lue lisää Aallon sivuilta

-
-
-
- - - -

Yliopiston järjestelmiä

-

TODO: Tänne varmaan mielummin Akateemiset komiteat etc.

-

Valmistuvalle juttuja, oodi, tenttiarkisto etc.

-
- -
-
- ); - } -} +const StudiesPage: React.FC = () => ( + <> + + + + + +); export default StudiesPage; diff --git a/src/pages/EventCreatePage.scss b/src/pages/admin/EventCreatePage.scss similarity index 95% rename from src/pages/EventCreatePage.scss rename to src/pages/admin/EventCreatePage.scss index b664980..6766a0c 100644 --- a/src/pages/EventCreatePage.scss +++ b/src/pages/admin/EventCreatePage.scss @@ -1,4 +1,4 @@ -@import "../assets/scss/globals"; +@import "../../assets/scss/globals"; .event-create-page { diff --git a/src/pages/EventCreatePage.tsx b/src/pages/admin/EventCreatePage.tsx similarity index 100% rename from src/pages/EventCreatePage.tsx rename to src/pages/admin/EventCreatePage.tsx diff --git a/src/pages/FeedCreatePage.scss b/src/pages/admin/FeedCreatePage.scss similarity index 95% rename from src/pages/FeedCreatePage.scss rename to src/pages/admin/FeedCreatePage.scss index 5043653..cfd6b3b 100644 --- a/src/pages/FeedCreatePage.scss +++ b/src/pages/admin/FeedCreatePage.scss @@ -1,4 +1,4 @@ -@import "../assets/scss/globals"; +@import "../../assets/scss/globals"; .post-create-page { diff --git a/src/pages/FeedCreatePage.tsx b/src/pages/admin/FeedCreatePage.tsx similarity index 100% rename from src/pages/FeedCreatePage.tsx rename to src/pages/admin/FeedCreatePage.tsx diff --git a/src/pages/SignupCreatePage.scss b/src/pages/admin/SignupCreatePage.scss similarity index 95% rename from src/pages/SignupCreatePage.scss rename to src/pages/admin/SignupCreatePage.scss index 895e4db..e22bd08 100644 --- a/src/pages/SignupCreatePage.scss +++ b/src/pages/admin/SignupCreatePage.scss @@ -1,4 +1,4 @@ -@import "../assets/scss/globals"; +@import "../../assets/scss/globals"; .signup-create-page { diff --git a/src/pages/SignupCreatePage.tsx b/src/pages/admin/SignupCreatePage.tsx similarity index 100% rename from src/pages/SignupCreatePage.tsx rename to src/pages/admin/SignupCreatePage.tsx diff --git a/src/routes.tsx b/src/routes.tsx index 3be67aa..b21962d 100644 --- a/src/routes.tsx +++ b/src/routes.tsx @@ -14,10 +14,10 @@ import AdminCommonPage from "./pages/admin/AdminCommonPage"; import AdminSignupPage from "./pages/admin/AdminSignupPage"; import AdminLoginPage from "./pages/admin/AdminLoginPage"; import AdminLogoutPage from "./pages/admin/AdminLogoutPage"; -import EventCreatePage from "./pages/EventCreatePage"; -import FeedCreatePage from "./pages/FeedCreatePage"; +import EventCreatePage from "./pages/admin/EventCreatePage"; +import FeedCreatePage from "./pages/admin/FeedCreatePage"; import ContactsPage from "./pages/ContactsPage"; -import SignupCreatePage from "./pages/SignupCreatePage"; +import SignupCreatePage from "./pages/admin/SignupCreatePage"; import SignUpPage from "./pages/SignUpPage"; import ActualPage from "./pages/ActualPage"; import FreshmenPage from "./pages/FreshmenPage"; diff --git a/src/pages/ActualPage.scss b/src/views/ActualPage/ActualPage.scss similarity index 100% rename from src/pages/ActualPage.scss rename to src/views/ActualPage/ActualPage.scss diff --git a/src/views/ActualPage/ActualPageView.tsx b/src/views/ActualPage/ActualPageView.tsx new file mode 100644 index 0000000..6d0b360 --- /dev/null +++ b/src/views/ActualPage/ActualPageView.tsx @@ -0,0 +1,137 @@ +import React from "react"; +import "./ActualPage.scss"; +import PageSection from "@components/PageSection"; +import HeroMainSection from "@components/Hero/HeroMainSection/HeroMainSection"; +import HeroAsideSection from "@components/Hero/HeroAsideSection/HeroAsideSection"; +import HeroAsideItem from "@components/Hero/HeroAsideItem/HeroAsideItem"; +import AsideSection from "@components/AsideSection"; +import MainSection from "@components/MainSection/index"; +import Ribbon from "@components/Ribbon/index"; +import TextAnchor from "@components/TextAnchor/index"; +import Button, { ButtonType } from "@components/Button/index"; +import Accordion from "@components/Accordion"; +import HeroSecondarySection, { HeroSecondarySectionItem } from "@components/Hero/HeroSecondarySection/HeroSecondarySection"; + +export interface ActualPageProps {} +export interface ActualPageState {} + +class ActualPage extends React.Component { + render() { + return ( +
+ + +

Yritystapahtumia ja vastapainoa opiskelulle

+

+ Teekkarielämä ei ole pelkkää saunomista, juhlimista ja muita huvituksia—tai no, on se sitäkin. +

+
+ + +
+ + + Killan hallitus päivystää kiltahuoneella maanantaisin klo 12.15–13.15. Tuolloin voit ostaa kiltatuotteita, kuten esim. haalarimerkkejä tai laulukirjoja. + + + Kiltapäiväkerho Kiltis kokoontuu torstaisin klo XX.XX kiltahuoneella. Lorem ipsum dolor sit amet. Lämpimästi tervetuloa kaikki SIKkiläiset ja SIK-mieliset! + + +
+ +

+ Kilta järjestää jäsenilleen jos jonkinlaista projektia ja toimintaa, muun muassa: +

+ + + + + + + + + + +
+
+ + +

Tapahtumat

+
+
+ + +

Uutiset

+
+
+ + +

Kuvia tapahtumista.

+ +
Kuvagalleria ›
+
+
+
+
+ + + +
+ + +

Sinustako kilta-aktiivi?

+ +
Tule mukaan kiltatoimintaan ›
+
+
+
+ + + +

Yritystapahtumia ja vastapainoa opiskelulle

+

+ Toimintaa ylläpitää ja järjestää jaokset ja toimikunnat. +

+ + Jotain elepajasta + + + Jotain elepajasta + + + Jotain elepajasta + + + Jotain elepajasta + + + Jotain elepajasta + +
+ +
+
+ ); + } +} + +export default ActualPage; diff --git a/src/pages/ContactsPage.scss b/src/views/ContactsPage/ContactsPage.scss similarity index 71% rename from src/pages/ContactsPage.scss rename to src/views/ContactsPage/ContactsPage.scss index 61018dc..3c8525d 100644 --- a/src/pages/ContactsPage.scss +++ b/src/views/ContactsPage/ContactsPage.scss @@ -1,4 +1,4 @@ -@import "../assets/scss/globals"; +@import "../../assets/scss/globals"; .contacts-page { display: flex; diff --git a/src/views/ContactsPage/ContactsPageView.tsx b/src/views/ContactsPage/ContactsPageView.tsx new file mode 100644 index 0000000..daf1e3d --- /dev/null +++ b/src/views/ContactsPage/ContactsPageView.tsx @@ -0,0 +1,52 @@ +import React from "react"; +import "./ContactsPage.scss"; +import PageSection from "@components/PageSection"; +import { Occupation, Committee } from "@models/Contacts"; +import CommitteeContainer from "@components/CommitteeContainer"; +import TextAnchor from "@components/TextAnchor/index"; + +interface ContactsPageViewProps { + contacts: Occupation[]; + committees: Committee[]; +} + +class ContactsPageView extends React.Component { + render() { + const { contacts, committees } = this.props; + const board = contacts.filter(x => x.role.is_board); + return ( +
+ +

+ Asiaa olisi, mutta kehen ottaa yhteyttä?
+ Tämä sivu yrittää valottaa sen oikean ihmisen puhelinnumeroa ja sähköpostiosoitetta. +

+
+ +
+ +

+ {"Hallitukseen saa yhteyden lähettämällä sähköpostia "} + + sik-hallitus@list.ayy.fi + +

+
+
+ {committees.map((committee, index) => { + const order = committee.name_fi === "Toimikunnattomat" ? 1 : 0; + return ( + + x.role.committee.name_fi === committee.name_fi)} /> + + ) + })} +
+ ); + } +} + +export default ContactsPageView; diff --git a/src/pages/CorporatePage.scss b/src/views/CorporatePage/CorporatePage.scss similarity index 100% rename from src/pages/CorporatePage.scss rename to src/views/CorporatePage/CorporatePage.scss diff --git a/src/views/CorporatePage/CorporatePageView.tsx b/src/views/CorporatePage/CorporatePageView.tsx new file mode 100644 index 0000000..68ad537 --- /dev/null +++ b/src/views/CorporatePage/CorporatePageView.tsx @@ -0,0 +1,88 @@ +import React from "react"; +import "./CorporatePage.scss"; +import PageSection from "@components/PageSection"; +import HeroMainSection from "@components/Hero/HeroMainSection/HeroMainSection"; +import HeroAsideSection from "@components/Hero/HeroAsideSection/HeroAsideSection"; +import HeroAsideItem from "@components/Hero/HeroAsideItem/HeroAsideItem"; +import AsideSection from "@components/AsideSection"; +import MainSection from "@components/MainSection/index"; +import PageLink from "@components/PageLink/index"; +import Ribbon from "@components/Ribbon/index"; +import TextAnchor from "@components/TextAnchor/index"; + +const CorporatePageView: React.FC = () => ( +
+ + +

Tee yhteistyötä tulevaisuuden huippuosaajien kanssa!

+

+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed vehicula aliquam enim, in lacinia nunc rutrum fringilla. Phasellus dui dolor, pellentesque vitae feugiat non, maximus in felis. Praesent feugiat vehicula mi, sed tincidunt enim venenatis quis. In euismod gravida ullamcorper. Phasellus a sagittis nisi, vitae blandit ipsum. Nunc rhoncus ultrices ante, id commodo dolor convallis id. Morbi ullamcorper vulputate risus id sodales. +

+
+ + + + + +
+ + + +

Yhteistyömahdollisuudet

+ +

TODO: Tähän nostoja yhteistyöstä! Yhteistyömahdollisuuksista voi tiedustella lisää killan yrityssuhdemestarilta.

+ +
Yritysbrunssi
+

Yritysbrunssi on Sähköinsinöörikillan ja bioinformaatioteknologian ainejärjestö Inkubion syksyllä järjestämä yritystapahtuma. Tapahtumassa luodaan yrityksille mahdollisuus tavata tulevaisuuden ammattilaisia maukkaan brunssin lomassa.

+ +
Haalarimainonta
+

Sähköinsinöörikillan ensimmäisen vuoden opiskelijat saavat opiskelijahaalarinsa heti syksyn ensimmäisenä päivänä. Yrityksien on mahdollista ostaa mainostilaa haalareista ja samalla lunastaa esiintymispaikka haalareiden luovutustilaisuuteen, "Haalarigaalaan". Tilaisuus on erinomainen paikka jäädä heti uusien opiskelijoiden mieleen.

+ +
Excursiot
+

Excursioiden tarkoituksena on tarjota opiskelijoille mahdollisuus tutustua yritysmaailmaan. Pidemmillä excursiolla hauskanpito ja teekkariperinteiden vaaliminen on tärkeä osa excursiota.

+ +
Potentiaalin Tasaus
+

Kiltamme viettää vuosijuhliaan helmikuun kolmantena lauantaina. Potentiaalin Tasaus on kiltamme juhlavin tapahtuma. Yrityksillä on mahdollisuus osallistua vuosijuhliin niin pienellä kuin suurellakin panoksella.

+
+ +
+ + Excursiosäännöt + + + Liity jäseneksi + +
+
+
+ + +

Mainos Sössöön?

+ +

Killan lehden mediakortin löydät täältä›

+
+
+
+ + + +

Työpaikkaulmoitukset

+

TODO: Miten listataan yritykset?

+ {/* TODO: Fix links */} +

Voit saada yrityksesi työpaikkailmoituksen listalle lähettämällä sen osoitteeseen sik-yritys@list.ayy.fi

+
+ +
+
+); + +export default CorporatePageView; diff --git a/src/pages/EventPage.scss b/src/views/EventPage/EventPage.scss similarity index 100% rename from src/pages/EventPage.scss rename to src/views/EventPage/EventPage.scss diff --git a/src/views/EventPage/EventPageView.tsx b/src/views/EventPage/EventPageView.tsx new file mode 100644 index 0000000..3fab051 --- /dev/null +++ b/src/views/EventPage/EventPageView.tsx @@ -0,0 +1,52 @@ +import React from "react"; +import "./EventPage.scss"; +import { Event } from "@models/Event"; +import Button, { ButtonType } from "@components/Button"; +import Anchor from "@components/Anchor"; +import PageSection from "@components/PageSection"; +import MainSection from "@components/MainSection"; +import AsideSection from "@components/AsideSection/AsideSection"; + +interface EventPageViewProps { + event?: Event; +} + + +class EventPageView extends React.Component { + render() { + const { event } = this.props; + if (!event) return
Loading
+ + return ( +
+ + + + {event.title_fi} +

{event.title_fi}

+

+ {event.description_fi} +

+

+ {event.content_fi} +

+ {/* We may have multiple signup forms. Generate own Button for each one */} +
+ {event.signupForm.map(sf => ( + + + + ) + )} +
+
+ +
+
+ ); + } +} + +export default EventPageView; diff --git a/src/pages/FreshmenPage.scss b/src/views/FreshmenPage/FreshmenPage.scss similarity index 100% rename from src/pages/FreshmenPage.scss rename to src/views/FreshmenPage/FreshmenPage.scss diff --git a/src/views/FreshmenPage/FreshmenPageView.tsx b/src/views/FreshmenPage/FreshmenPageView.tsx new file mode 100644 index 0000000..9e45ef2 --- /dev/null +++ b/src/views/FreshmenPage/FreshmenPageView.tsx @@ -0,0 +1,109 @@ +import React from "react"; +import "./FreshmenPage.scss"; +import PageSection from "@components/PageSection/index"; +import HeroMainSection from "@components/Hero/HeroMainSection/HeroMainSection"; +import HeroAsideSection from "@components/Hero/HeroAsideSection/HeroAsideSection"; +import HeroAsideItem from "@components/Hero/HeroAsideItem/HeroAsideItem"; +import AsideSection from "@components/AsideSection/index"; +import MainSection from "@components/MainSection/index"; +import PageLink from "@components/PageLink/index"; +import Ribbon from "@components/Ribbon/index"; +import TextAnchor from "@components/TextAnchor/index"; +import InfoBox from "@components/InfoBox/index"; + +const FreshmenPageView: React.FC = () => ( +
+ + +

Tervetuloa opiskelemaan Otaniemeen!

+

+ Me olemme Emmaleena ja Jonna, sinun Fuksikapteenisi. Päätehtävämme on huolehtia fuksivuodestasi Aalto-yliopiston Sähköinsinöörikillassa. +

+

Tämä on fuksien oma etusivu ja olemmekin keränneet tänne kaikki tärkeimmät tiedot, joita fuksivuotenasi tarvitset. Tietysti kannattaa katsoa myös yleisiä sivuja, sillä tänne ei mahdu kaikki, mitä killassa tapahtuu. +

+
+ + + + + + +
+ + + +

Onnittelut hyvästä opiskeluvalinnasta

+ +
Lorem
+

+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed vehicula aliquam enim, in lacinia nunc rutrum fringilla. Phasellus dui dolor, pellentesque vitae feugiat non, maximus in felis. Praesent feugiat vehicula mi, sed tincidunt enim venenatis quis. In euismod gravida ullamcorper. Phasellus a sagittis nisi, vitae blandit ipsum. Nunc rhoncus ultrices ante, id commodo dolor convallis id. Morbi ullamcorper vulputate risus id sodales. +

+
Ipsum
+

+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed vehicula aliquam enim, in lacinia nunc rutrum fringilla. Phasellus dui dolor, pellentesque vitae feugiat non, maximus in felis. Praesent feugiat vehicula mi, sed tincidunt enim venenatis quis. In euismod gravida ullamcorper. Phasellus a sagittis nisi, vitae blandit ipsum. Nunc rhoncus ultrices ante, id commodo dolor convallis id. Morbi ullamcorper vulputate risus id sodales. +

+
Raketteja ja mikropiirejä
+

+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed vehicula aliquam enim, in lacinia nunc rutrum fringilla. Phasellus dui dolor, pellentesque vitae feugiat non, maximus in felis. Praesent feugiat vehicula mi, sed tincidunt enim venenatis quis. In euismod gravida ullamcorper. Phasellus a sagittis nisi, vitae blandit ipsum. Nunc rhoncus ultrices ante, id commodo dolor convallis id. Morbi ullamcorper vulputate risus id sodales. +

+
+ +
+ + Fuksikipparit tavoitat + + + Liity jäseneksi + + + Fuksipisteohje + +
+
+ +
Telegram?
+

+ Telegram on pikaviestinpalvelu, jota käytetään otaniemessä paljon. Hieman samanlainen kuin Whatsapp, mutta ominaisuuksiltaan paremmaksi todettu. Lisätietoja: https://telegram.org/faq +

+

+ SIK:n fukseilla on oma Telegram-ryhmä, jonne pääset liitymään tästä. +

+ +
+
+
+
+ + +

Killassa tapahtuu kaikenlaista!

+ +

Seuraa killan tapahtumia

+
+
+
+ + + +

Isoryhmät

+

Lorem jotain ISOryhmiä X kpl

+

Mikä ihmeen ISO...

+

TODO: Kuvia

+
+ +
+
+); + +export default FreshmenPageView; diff --git a/src/views/FrontPage/FrontPageView.tsx b/src/views/FrontPage/FrontPageView.tsx index 2dbdc25..665221a 100644 --- a/src/views/FrontPage/FrontPageView.tsx +++ b/src/views/FrontPage/FrontPageView.tsx @@ -1,10 +1,8 @@ import React from "react"; import "./FrontPage.scss"; -import appStore from "@stores/AppStore"; import Card from "@components/Card"; -import { Event, getEvents } from "@models/Event"; -import { Post, getFeed } from "@models/Feed"; -import { StaticContext } from "@server/StaticContext"; +import { Event } from "@models/Event"; +import { Post } from "@models/Feed"; import PageSection from "@components/PageSection"; @@ -17,185 +15,117 @@ import SponsorReel from "@components/SponsorReel"; import HeroAsideItem from "@components/Hero/HeroAsideItem/HeroAsideItem"; import TextAnchor from "@components/TextAnchor"; -interface FrontPageProps { - staticContext: StaticContext; -} - -interface FrontPageState { +interface FrontPageViewProps { events: Event[]; feed: Post[]; } -class FrontPage extends React.Component { - constructor(props: FrontPageProps) { - super(props); - const { staticContext } = props; - - if (staticContext) { - /* The static context is an object that manages promises when - rendering on the server. If staticContext exists, that means - we have to store all promises in it. Otherwise, operate - normally. See server/index.ts. */ - if (staticContext.resolutions.getEvents) { - const events = staticContext.resolutions.getEvents as Event[]; - const feed = staticContext.resolutions.getFeed as Post[]; - this.state = { - events, - feed, - }; - } else { - this.state = { - events: [], - feed: [], - }; - const promiseEvents = this.fetchEvents(); - const promiseFeed = this.fetchFeed(); - staticContext.promises.getEvents = promiseEvents; - staticContext.promises.getFeed = promiseFeed; - } - } else { - this.state = { - events: [], - feed: [], - }; - this.fetchEvents(); - this.fetchFeed(); - } - } - - fetchEvents = () => { - const getEventsPromise = getEvents({ - onlyNonPast: true, - limit: 4, - }); - getEventsPromise.then(events => { - this.setState({ - events, - }); - }); - return getEventsPromise; - } - - fetchFeed = () => { - const getFeedPromise = getFeed(); - getFeedPromise.then(feed => { - this.setState({ - feed, - }); - }); - return getFeedPromise; - } - - render() { - const { events, feed } = this.state; - return ( -
- - -

Aalto-yliopiston Sähköinsinöörikilta

-

+const FrontPageView: React.FC = ({ events, feed }) => ( +

+ + +

Aalto-yliopiston Sähköinsinöörikilta

+

on elektroniikan ja sähkötekniikan opiskelijoiden järjestö. Kilta kasaa yhteen yli 600 alansa huippua, jotka ovat avainasemassa vauhdilla sähköistyvän maailmamme kehityksessä. -

-
- - -
-
- - +

+
+ + +
+ + + Fuksikasvatusta, ISO-toimintaa, lorem ipsum dolor sit ja amet. - - + + Oletko abi, vaihtamassa uraa tai valmistumassa? - - + + Avoimet työpaikat ja excursiot. Infoa yritysten edustajille ja sponsseille. - - -
- - {events.map(event => ( - { }}> -
Lue lisää ›
- - } - /> - ))} -
- + + + + + {events.map(event => ( + { }}> +
Lue lisää ›
+ + } + /> + ))} +
+ Kaikki tapahtumat - -
-
- - -

Sössöä vuodesta 1969.

- -

Lue opiskelijalehden viimeisin numero ›

-
-
-
- - {feed.map(inst => ( - { }}> -
Lue lisää ›
- - } - /> - ))} -
- - Lue tuoreimmat uutiset - - - Kuvia tapahtumista - -
-
- - - +
- ); - } -} +
+ + +

Sössöä vuodesta 1969.

+ +

Lue opiskelijalehden viimeisin numero ›

+
+
+
+ + {feed.map(inst => ( + { }}> +
Lue lisää ›
+ + } + /> + ))} +
+ + Lue tuoreimmat uutiset + + + Kuvia tapahtumista + +
+
+ + + +
+) -export default props => ; +export default FrontPageView; diff --git a/src/pages/GuildPage.scss b/src/views/GuildPage/GuildPage.scss similarity index 100% rename from src/pages/GuildPage.scss rename to src/views/GuildPage/GuildPage.scss diff --git a/src/views/GuildPage/GuildPageView.tsx b/src/views/GuildPage/GuildPageView.tsx new file mode 100644 index 0000000..bc64479 --- /dev/null +++ b/src/views/GuildPage/GuildPageView.tsx @@ -0,0 +1,229 @@ +import React from "react"; +import "./GuildPage.scss"; +import PageSection from "@components/PageSection"; +import MainSection from "@components/MainSection"; +import AsideSection from "@components/AsideSection"; +import PageLink from "@components/PageLink"; +import HeroMainSection from "@components/Hero/HeroMainSection/HeroMainSection"; +import HeroAsideSection from "@components/Hero/HeroAsideSection/HeroAsideSection"; +import HeroAsideItem from "@components/Hero/HeroAsideItem/HeroAsideItem"; +import Ribbon from "@components/Ribbon"; +import InfoBox from "@components/InfoBox"; +import Accordion from "@components/Accordion"; +import TextAnchor from "@components/TextAnchor"; + +const GuildPageView: React.FC = () => ( +
+
+ + +

Kilta koostuu sähkötekniikan ja elektroniikan (ELEC) tutkinto-ohjelmissa opiskelevista opiskelijoista

+

Vapaa-ajan jäsenpalvelujen lisäksi killan tehtävänä on edistää jäsentensä opintoja, tarjota uraohjausta ja fuksikasvatusta. Jokaiselle jäsenelle löytyy varmasti jotakin—kaukomaita, opiskelijalehti Sössöä, ja kiltaaktiivina pääset kartuttamaan kokemusta, josta on hyötyä myös työelämässä.

+

Arvot estrumquias doluptatur aut quam fugiti cus debit landisciis eatemperes eumquibus di blat que sim etus idis dolut labor ad magnat.

+
+ + + + + + + + + + +
+ + + +

Killan tehtävät ja tarina

+

Kilta tukee jäsentensä hyvinvointia ja tarjoaa vastapainoa opiskelulle. Kilta järjestää esimerkiksi urheilutapahtumia, kulttuurielämyksiä ja näiden lisäksi sitsejä ja saunailtoja. Valinnanvaraa on, joten tapahtumakalenterin aktiivisella seuraamisella saattaa olla hyvinkin miellyttäviä seuraamuksia. Voit myös itse järjestää mieleisesi tapahtuman killan tukemana, tai ehdottaa sitä killan toimitsijoille.

+ +

Yhteistyössä korkeakoulun kanssa, kilta kehittää opetusta. Kilta on mukana kurssien kehittämisessä, valvoo kiltalaisten etua korkeakoulussa ja tuo korkeakoulun henkilöstöä lähemmäs kiltalaisia. Kilta avaa oven yritysmaailmaan järjestämällä yritysten kanssa excursioita, saunailtoja ja yritystapahtumia. Lisäksi killan kautta kuulee ensimmäisten joukossa uusista avoimista työpaikoista. Killalla on Otaniemen mukavin kiltahuone, jossa voi käydä hengähtämässä luentojen välillä, hakea apua vaikeisiin tehtäviin tai järjestää vaikka leffailtoja. Tämän lisäksi killalla on myös haastavampaan elektroniikkaharrasteluun sopivat tilat.

+ +
Takana lähes satavuotinen historia
+ +

Vaikka kilta onkin ajan hermolla, on sillä takana lähes satavuotinen historia. + Sähköinsinööriklubin tuore puheenjohtaja lausahti klubin ensimmäisessä + varsinaisessa kokouksessa 16. helmikuuta 1921: “Koska klubi nyt ensi kerran + kokoontuu, niin pyydän lausua toivomuksena, että klubin jäsenillä aina tulisi + olemaan hauskaa, että toverielämä kukoistaisi ja että myös sähkötekniikkaa + klubissa harrastettaisiin.”.

+ +

Vaikka ajat ovat muuttuneet, klubi on muuttunut killaksi ja jäsenmäärä kasvanut + alkuajoista valtavasti, ohjaavat nämä kolme asiaa edelleen killan toimintaa. Vaikka + pitkästä historiasta kannattaa olla ylpeä, ei sitä tarvitse kokea taakkana. Uutta + historiaa luodaan koko ajan ja tässä on meillä kaikilla mahdollista olla mukana. Ole + aktiivinen, ota asioista selvää ja osallistu kaikkeen mahdolliseen. Tulet varmasti + yllättymään kaikesta siitä mitä täältä keskuudestamme löytyy.

+ +
Meitä teekkareita on todella moneen lähtöön
+ +

Minkäänlaista perus- tai ihanneteekkaria ei ole olemassa, vaan paras teekkariuden + määritelmä kuuluukin: “teekkarius on kaikkea sitä, mitä teekkarit tekevät”. Yksi asia + meitä kaikkia kuitenkin yhdistää. Opiskelemme jotain tekniikkaan liittyvää täällä + Aalto-yliopistossa. + Teekkariutta on vaikkapa toimiminen killoissa tai jossain AYY:n lukuisista + yhdistyksistä. Teekkariutta on yhtä lailla SIK:n tapahtumien järjestäminen tai niihin osallistuminen kuin vaikkapa laulaminen Polyteknikkojen Kuorossa tai sukeltaminen Polyteknikkojen sukelluskerho Kuplassa. Kaikille varmasti löytyy jotain itseä kiinnostavaa.

+ +

Teekkareilla, varsinkin otaniemeläisillä, on pitkä ja vahva historia. Siihen kannattaa + tutustua, jotta saa jonkinlaisen kuvan siitä vahvasta teekkarihengestä, joka + meillä täällä opinahjossamme vallitsee ja on vallinnut koko sen historian ajan. + Teekkariuteen kuuluu olennaisena osana mukautuminen ajan vaatimuksiin. Jos asiat + tehtäisiin aina vanhaa toistaen, ei voitaisi enää edes puhua teekkariudesta.

+
+ +
+ + Yliopiston jäsenedut + + + Liity jäseneksi + +
+
+ + Herrasmies- tai herrasnaisuus kuuluu olennaisena osana teekkariuteen. Hyvät käytöstavat on syytä aina pitää mielessä, liikuttiin sitten puku päällä excuilla tai sitseillä tai haalarit päällä Tukholman illassa. + +
+
+
+ + +

Killan hallinto koostuu XXX henkilöstä.

+
+
+ + + +

Organisaatio

+ +

Sähköinsinöörikillassa toimeenpanovaltaa käyttää 3–13 kiltalaisen muodostama hallitus apunaan lukuisa määrä toimihenkilöitä. Hallituksen ja toimihenkilöt valitsee killan valtuusto, joka myös valvoo näiden toimintaa. Käytännössä valtuusto valitsee vaalikokouksessaan ensin uuden puheenjohtajan ja jää 1–2 viikon mittaiselle kokoustauolle. Tauon jälkeen puheenjohtaja esittelee valtuustolle ehdotuksensa hallitukseksi ja toimihenkilöiksi, ja valtuusto joko hyväksyy tai hylkää ehdotuksen noin tunnin kestävän kysely- ja esittelytuokion jälkeen. Hallituksen kuulumiset lorem.

+ +
Valtuuston toimintaa
+ +

Killan valtuusto valitaan marraskuussa pidettävillä vaaleilla yhdeksi vuodeksi kerrallaan. Vaaleissa ovat vaalikelpoisia ja äänioikeutettuja kaikki SIK:n varsinaiset jäsenet. Uuden valtuuston toiminta alkaa varsin pian valitsemisen jälkeen vaalikokouksessa, jossa todetaan uusi kokoonpano, valitaan puhemiehistö, killan hallituksen puheenjohtaja ja muut hallituksen jäsenet, toimihenkilöt, toimikuntien puheenjohtajat sekä tilintarkastajat. Toinen sääntömääräinen valtuuston kokous on helmikuinen vuosikokous, jossa käsitellään mm. edellisen vuoden toimintakertomus ja tilinpäätös, sekä kuluvan vuoden toimintasuunnitelma ja budjetti. Lisäksi valtuusto pitää tarpeelliseksi katsomanssa määrän kokouksia pitkin vuotta. Pöytäkirjat ja muut dokumentit lorem ipsum.

+ +
Hallituksen toimintaa
+

Jokaisella hallituksen jäsenellä on oma vastuualueensa, jota hän hoitaa yhdessä mahdollisen toimikuntansa kanssa. Puheenjohtajan tehtävä on pitää langat käsissään, ja olla perillä kaikesta, mitä killassa tapahtuu. Hallitus tekee päätökset ja sopii menettelytavat viikottaisessa kokouksessaan. Hallitus on vastuussa kaikesta killan näkyvästä ja näkymättömästä toiminnasta, ja se on myös oikea osoite, jos joku asia vaivaa mieltä, tai mielessä on parannusehdotus mihin tahansa asiaan.

+ +
+ +
+ + Vuoden 2019 hallinto + + + Dolor sit amet + +
+
+
+ + +

Kiltatoimintaa järjestää ja ylläpitää kilta-aktiivit, toimikunnat ja jaokset.

+
+
+
+ +
Miksi alkaa kilta-aktiiviksi?
+

+ Näitä töitä tehdessä saa väkisinkin paljon uusia kavereita ja oppii monia palkallisessa työelämässä tarpeellisia taitoja. Eikä laajasta tuttavapiiristä ja monista kontakteista varmasti haittaa ole tulevaa työuraakaan ajatellen. Rahallista tai materiaalista hyötyä kiltatoiminnasta ei saa, eikä kukaan killan toimintaan mukaan tuleva sitä pyrikään tavoittelemaan. Mikä tärkeintä, kiltatoiminta on kivaa! +

+

+ » Uusia ystäviä, samanhenkistä seuraa +

+

+ » Loistava mahdollisuus kokeilla omia kykyjään +

+

+ » Voit kokeilla ja oppia jotain sellaista, mitä et ikinä aikaisemmin ole tehnyt +

+
+ +
Runsaasti erilaisia tehtäviä
+

+ Killassa on todella monenlaisia tehtäviä. Olitpa koodaaja, urheilija tai ammattimainen juhlija, killasta löytyy tekemistä juuri sinulle. Toimikunnissa sitoudut toimintaan vuodeksi kerrallaan. Jaostoiminta mahdollistaa kiltatoiminnan kokeilun pienemmässä mittakaavassa. Tehtäväkuvaukset lorem ipsum dolor sit amet alla. Jos ei löydy sopivaa lorem ipsum dolor sit amet, voit perustaa myös oman. +

+

+ » Haluatko valtuustoon, hallitukseen tai toimariksi? +

+

+ » Toimihenkilönä pääset edistämään opintoja +

+

+ » Lorem ipsum +

+
+
+ + + +
+

Sähkötekniikan korkeakoulun toimikunnat

+

+ Ylioppilaskunnalla on edustus suuressa osassa Aalto-yliopiston tiedekuntia. Elektroniikan, tietoliikenteen ja automaation tiedekunnan toimikuntiin eli hallopedeihin opiskelijavalinna EST- ja TLT-tutkinto-ohjelmien osalta tehdään osin ylioppilaskunnan edustajistossa Sähköinsinöörikillan esityksestä ja osin Sähköinsinöörikillassa. +

+
+
+ + Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed rhoncus feugiat ante. Nam eget venenatis dui. Morbi purus dui, cursus at velit id, placerat scelerisque turpis. Nulla a mauris odio. Nulla at tempor mi. Maecenas et sapien eu lorem interdum luctus. Proin interdum, tortor eget tempor tristique, massa arcu suscipit ipsum, sit amet lacinia erat lorem sit amet ipsum. Praesent dictum odio auctor odio sodales pharetra. Quisque accumsan iaculis diam, a laoreet odio aliquet eu. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. In hac habitasse platea dictumst. Pellentesque at hendrerit mi. Morbi at lacus finibus, pharetra urna sed, molestie tellus. Duis fermentum sodales leo. Nullam varius, massa in convallis sagittis, mi felis lacinia ipsum, viverra rhoncus nibh ipsum vel mi. Pellentesque ornare hendrerit malesuada. + Suspendisse porta diam in massa suscipit congue. Nulla facilisi. Nulla egestas tempus arcu, vitae ultrices risus rhoncus ac. Ut porta orci neque, vel fermentum turpis fermentum in. Curabitur condimentum, mi in tristique pulvinar, mauris nibh bibendum neque, quis tincidunt purus eros quis dolor. Aliquam imperdiet nibh ac quam iaculis, at ullamcorper diam ultricies. Vestibulum egestas consequat justo non vehicula. Nam non egestas tellus. + Praesent vel auctor ligula. Phasellus faucibus vulputate erat, non fringilla sem ultrices non. In vitae elit sit amet nisl interdum ultrices nec in ligula. Ut et turpis risus. Sed mattis varius nisl, in euismod diam fringilla ac. Nunc sed eros augue. Donec sit amet quam ex. Integer luctus nulla at est rutrum, a commodo est dapibus. Maecenas sagittis scelerisque blandit. Morbi congue tortor eros, sit amet vestibulum dolor tempor vitae. In pretium tellus at velit porttitor, vitae rutrum lacus suscipit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam bibendum ultricies metus, nec placerat urna efficitur auctor. Morbi non purus magna. Ut at ex nec nunc dictum ultricies. + Mauris volutpat nec sem sed malesuada. Sed eu scelerisque libero. Phasellus at mauris in ligula congue interdum et sit amet ante. Sed vestibulum, sem non congue molestie, quam massa euismod sem, non porta sem mauris vitae justo. Donec et fringilla tortor. Cras sed purus eget ante elementum mattis. Nunc elit nunc, volutpat sed congue ac, varius a ligula. Aenean sit amet laoreet dolor. Aenean finibus iaculis diam, quis lacinia nisi semper id. Phasellus eu nulla sed risus accumsan finibus. Nulla vel ante id mi vulputate ultrices. Cras finibus elementum tortor, at fringilla arcu facilisis ut. Cras vitae lectus pretium, posuere risus venenatis, congue metus. Phasellus vel dapibus felis. + Maecenas tincidunt orci nulla. Sed maximus tellus nec lorem dignissim aliquet. Maecenas tincidunt dolor sed est laoreet, nec suscipit augue dictum. Vivamus venenatis rutrum molestie. Vestibulum in maximus leo. Duis a euismod nulla. Aenean luctus sodales quam, ut fringilla elit bibendum in. Ut in purus sit amet libero hendrerit hendrerit ac eget nisl. In ac mauris at felis suscipit scelerisque eu eget erat. Fusce accumsan tempus mauris, porta sagittis odio venenatis ac. Integer mollis nulla in velit dignissim imperdiet. Nunc ac magna ullamcorper, pretium mauris et, semper enim. Morbi aliquet accumsan turpis id rutrum. Donec purus tellus, pellentesque non nunc ac, ornare scelerisque ex. + + + + + +
+
+ +
+

Jaokset—kokeile kiltatoimintaa vapaammin

+

+ Kiinnostaako kiltatoiminta, mutta vuoden kestävä sitoutuminen pelottaa? Jaokset mahdollistavat kiltatoiminnan kokeilemisen pienemmässä mittakaavassa. Jaokset toimivat varsin vapaamuotoisesti, mutta siltikin hyvässä hengessä. Mikäli Sinulla olisi hyvä idea, mitä kilta voisi jaosmaisesti toteuttaa, voit myös perustaa oman jaoksen. +

+
+
+
+ + +

Jäsenedut vuonna 2019

+
+
+ + + +

Aalto-yliopiston tarjoamat monenlaiset edut

+

+ Sen lisäksi että kilta tarjoaa jäsenilleen palveluja ja aktiviteetteja, Aalto-yliopisto tarjoaa lorem ipsum dolor sit amet. +

+

+ » Download.aalto.fi Täältä voit ladata yliopiston tarjoamia ohjelmia ilmaiseksi. +

+
+ + + Jäseneksi liittyminen on helppoa, hauskaa ja hyödyllistä 8 € jäsenmaksulla pääset nauttimaan kaikista jäseneduista. + + +
+
+
+); + +export default GuildPageView; diff --git a/src/pages/InEnglishPage.scss b/src/views/InEnglishPage/InEnglishPage.scss similarity index 100% rename from src/pages/InEnglishPage.scss rename to src/views/InEnglishPage/InEnglishPage.scss diff --git a/src/views/InEnglishPage/InEnglishPageView.tsx b/src/views/InEnglishPage/InEnglishPageView.tsx new file mode 100644 index 0000000..66a93a3 --- /dev/null +++ b/src/views/InEnglishPage/InEnglishPageView.tsx @@ -0,0 +1,10 @@ +import React from "react"; +import "./InEnglishPage.scss"; + +const InEnglishPageView: React.FC = () => ( +
+ In English Page +
+); + +export default InEnglishPageView; diff --git a/src/pages/SignUpPage.scss b/src/views/SignUpPage/SignUpPage.scss similarity index 100% rename from src/pages/SignUpPage.scss rename to src/views/SignUpPage/SignUpPage.scss diff --git a/src/views/SignUpPage/SignUpPageView.tsx b/src/views/SignUpPage/SignUpPageView.tsx new file mode 100644 index 0000000..72527b4 --- /dev/null +++ b/src/views/SignUpPage/SignUpPageView.tsx @@ -0,0 +1,21 @@ +import React from "react"; +import "./SignUpPage.scss"; +import PageSection from "@components/PageSection"; + +interface SignUpPageViewProps { + form: React.ReactNode; + signups: React.ReactNode; + statusMessage: string; +} + +const SignUpPageView: React.FC = ({form, signups, statusMessage}) => ( +
+ {statusMessage} + + {form} + {signups} + +
+); + +export default SignUpPageView; diff --git a/src/pages/StudiesPage.scss b/src/views/StudiesPage/StudiesPage.scss similarity index 100% rename from src/pages/StudiesPage.scss rename to src/views/StudiesPage/StudiesPage.scss diff --git a/src/views/StudiesPage/StudiesPageView.tsx b/src/views/StudiesPage/StudiesPageView.tsx new file mode 100644 index 0000000..7585a8f --- /dev/null +++ b/src/views/StudiesPage/StudiesPageView.tsx @@ -0,0 +1,84 @@ +import React from "react"; +import "./StudiesPage.scss"; +import PageSection from "@components/PageSection/index"; +import HeroMainSection from "@components/Hero/HeroMainSection/HeroMainSection"; +import HeroAsideSection from "@components/Hero/HeroAsideSection/HeroAsideSection"; +import HeroAsideItem from "@components/Hero/HeroAsideItem/HeroAsideItem"; +import AsideSection from "@components/AsideSection/index"; +import MainSection from "@components/MainSection/index"; +import PageLink from "@components/PageLink/index"; +import Ribbon from "@components/Ribbon/index"; +import TextAnchor from "@components/TextAnchor/index"; + +const StudiesPageView: React.FC = () => ( +
+ + +

Suomen parasta elektroniikan opetusta

+

+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed vehicula aliquam enim, in lacinia nunc rutrum fringilla. Phasellus dui dolor, pellentesque vitae feugiat non, maximus in felis. Praesent feugiat vehicula mi, sed tincidunt enim venenatis quis. In euismod gravida ullamcorper. Phasellus a sagittis nisi, vitae blandit ipsum. Nunc rhoncus ultrices ante, id commodo dolor convallis id. Morbi ullamcorper vulputate risus id sodales. +

+
+ + + + + +
+ + + +

Abeille

+ +

TODO: Tähän nostoja yhteistyöstä! Yhteistyömahdollisuuksista voi tiedustella lisää killan yrityssuhdemestarilta.

+ +
Lorem
+

Yritysbrunssi on Sähköinsinöörikillan ja bioinformaatioteknologian ainejärjestö Inkubion syksyllä järjestämä yritystapahtuma. Tapahtumassa luodaan yrityksille mahdollisuus tavata tulevaisuuden ammattilaisia maukkaan brunssin lomassa.

+ +
Ipsum
+

Sähköinsinöörikillan ensimmäisen vuoden opiskelijat saavat opiskelijahaalarinsa heti syksyn ensimmäisenä päivänä. Yrityksien on mahdollista ostaa mainostilaa haalareista ja samalla lunastaa esiintymispaikka haalareiden luovutustilaisuuteen, "Haalarigaalaan". Tilaisuus on erinomainen paikka jäädä heti uusien opiskelijoiden mieleen.

+ +
Raketteja ja mikropiirejä
+

Excursioiden tarkoituksena on tarjota opiskelijoille mahdollisuus tutustua yritysmaailmaan. Pidemmillä excursiolla hauskanpito ja teekkariperinteiden vaaliminen on tärkeä osa excursiota.

+
+ +
+ + Kurssitarjonta + + + Liity jäseneksi + +
+
+
+ + +

Hae opiskelemaan!

+ +

Lue lisää Aallon sivuilta

+
+
+
+ + + +

Yliopiston järjestelmiä

+

TODO: Tänne varmaan mielummin Akateemiset komiteat etc.

+

Valmistuvalle juttuja, oodi, tenttiarkisto etc.

+
+ +
+
+); + +export default StudiesPageView; From 92b927faa990e1d0883c3a821197093cc845bce8 Mon Sep 17 00:00:00 2001 From: Aarni Halinen Date: Wed, 8 Jul 2020 16:22:53 +0300 Subject: [PATCH 29/56] Authenticated calls to Event API from Admin --- src/models/Event.ts | 14 ++++++++++---- src/pages/admin/AdminEventPage.tsx | 2 +- src/pages/admin/EventCreatePage.tsx | 2 +- 3 files changed, 12 insertions(+), 6 deletions(-) diff --git a/src/models/Event.ts b/src/models/Event.ts index 1e52069..11e4689 100644 --- a/src/models/Event.ts +++ b/src/models/Event.ts @@ -23,14 +23,17 @@ export interface Event { } export async function getEvents(options: any = {}): Promise { - const { onlyNonPast, limit } = options; + const { onlyNonPast, limit, auth } = options; try { const params = { since: onlyNonPast ? (new Date()).toISOString() : undefined, limit, }; const search = qs.stringify(params); - const resp = await axios.get(`${url}?${search}`); + const headers = auth ? { "Authorization": getAuthHeader() } : null; + const resp = await axios.get(`${url}?${search}`, { + headers + }); return resp.data["results"]; } catch (err) { console.error(err); @@ -38,9 +41,12 @@ export async function getEvents(options: any = {}): Promise { } } -export async function getEvent(id: number): Promise { +export async function getEvent(id: number, auth = false): Promise { try { - const resp = await axios.get(`${url}${id}/`); + const headers = auth ? { "Authorization": getAuthHeader() } : null; + const resp = await axios.get(`${url}${id}/`, { + headers + }); return resp.data; } catch (err) { console.error(err); diff --git a/src/pages/admin/AdminEventPage.tsx b/src/pages/admin/AdminEventPage.tsx index 71d772a..e21ff2b 100644 --- a/src/pages/admin/AdminEventPage.tsx +++ b/src/pages/admin/AdminEventPage.tsx @@ -48,7 +48,7 @@ class AdminEventPage extends React.Component { - const getEventsPromise = getEvents(); + const getEventsPromise = getEvents({ auth: true }); try { const events = await getEventsPromise; this.setState({ diff --git a/src/pages/admin/EventCreatePage.tsx b/src/pages/admin/EventCreatePage.tsx index 005553b..b18ca86 100644 --- a/src/pages/admin/EventCreatePage.tsx +++ b/src/pages/admin/EventCreatePage.tsx @@ -54,7 +54,7 @@ class EventCreatePage extends React.Component { try { - const data = await getEvent(id); + const data = await getEvent(id, true); data.tags = data.tag_id as any; data.signupForm = data.signup_id as any; this.setState({ From 45f9634946d33cfe439c83b980f7e7b77ee6ac4a Mon Sep 17 00:00:00 2001 From: Aarni Halinen Date: Wed, 8 Jul 2020 16:43:47 +0300 Subject: [PATCH 30/56] Page-View modifications on SignupPage --- src/pages/SignUpPage.tsx | 169 +++--------------------- src/views/SignUpPage/FormUtils.tsx | 105 +++++++++++++++ src/views/SignUpPage/SignUpPageView.tsx | 70 ++++++++-- 3 files changed, 179 insertions(+), 165 deletions(-) create mode 100644 src/views/SignUpPage/FormUtils.tsx diff --git a/src/pages/SignUpPage.tsx b/src/pages/SignUpPage.tsx index 3881dc2..791b3cc 100644 --- a/src/pages/SignUpPage.tsx +++ b/src/pages/SignUpPage.tsx @@ -1,21 +1,17 @@ import React from "react"; import { Helmet } from "react-helmet"; -import Form from "react-jsonschema-form"; import { getForm, SignupForm } from "@models/SignupForm"; import { createSignup, Signup } from "@models/Signup"; -import PageSection from "@components/PageSection"; -import { Question } from "@components/SignupQuestionsWidget"; import SignUpPageView from "@views/SignUpPage/SignUpPageView"; +import { RouteComponentProps } from "react-router-dom"; -export interface SignUpPageProps { - match: { - params: { - id: number; - }; - }; +interface MatchParams { + id: string; } -export interface SignUpPageState { +type SignUpPageProps = RouteComponentProps; + +interface SignUpPageState { signUpForm?: SignupForm; formData: any; statusMessage?: string; @@ -38,7 +34,7 @@ class SignUpPage extends React.Component { fetchSignUp = (): Promise => { const { match } = this.props; const { id } = match.params; - const formPromise = getForm(id); + const formPromise = getForm(Number(id)); formPromise.then(signUpForm => { this.setState({ signUpForm, @@ -47,110 +43,6 @@ class SignUpPage extends React.Component { return formPromise; } - questionToSchemaProp = (question: Question): {} => { - let obj: any; - if (question.type === "text") { - obj = { - type: "string", - title: question.name, - default: "", - }; - } - else if (question.type === "radiobutton") { - obj = { - type: "string", - title: question.name, - enum: question.options, - }; - } - else if (question.type === "checkbox") { - obj = { - type: "array", - title: question.name, - items: { - type: "string", - enum: question.options, - }, - uniqueItems: true, - }; - } - else if (question.type === "email") { - obj = { - type: "string", - title: question.name, - format: "email", - default: "" - } - } - else { - throw new Error(`No mapping to schema prop for question type ${question.type}`); - } - - return { - [question.id]: obj, - } - } - - questionToUISchemaProp = (question: Question): {} => { - let obj = {}; - if (question.type == "checkbox") { - obj = { - "ui:widget": "checkboxes", - }; - } - else if (question.type == "radiobutton") { - obj = { - "ui:widget": "radio", - } - } - // else { - // throw new Error(`No mapping to UI schema prop for question type ${question.type}`); - // } - return { - [question.id]: obj, - }; - } - - buildSchema = () => { - const { error, formData, signUpForm } = this.state; - const {questions} = signUpForm; - const schemaPropsArray = questions.map(this.questionToSchemaProp); - let schemaProps = {}; - schemaPropsArray.forEach((schemaProp) => { - schemaProps = { - ...schemaProps, - ...schemaProp, - }; - }); - - const schema = { - title: signUpForm.id ? signUpForm.title : "Loading...", - type: "object", - required: [], - properties: schemaProps, - }; - - return schema; - } - - buildUISchema = () => { - const { error, formData, signUpForm } = this.state; - const {questions} = signUpForm; - const uiSchemaPropsArray = questions.map(this.questionToUISchemaProp); - let uiSchemaProps = {}; - uiSchemaPropsArray.forEach((uiSchemaProp) => { - uiSchemaProps = { - ...uiSchemaProps, - ...uiSchemaProp, - }; - }); - - const uiSchema = { - ...uiSchemaProps, - }; - return uiSchema; - } - onSubmit = async (data) => { const { signUpForm } = this.state; try { @@ -187,54 +79,23 @@ class SignUpPage extends React.Component { console.log(data); } - renderForm() { - const { signUpForm, formData } = this.state; - const schema = this.buildSchema(); - const uiSchema = this.buildUISchema(); - - return ( -
-

Title: {signUpForm.title}

- -
- ); - } - - renderList() { - const { signUpForm } = this.state; - return ( -
    - {signUpForm.signups.map((s, idx) => ( -
  1. {s}
  2. - ))} -
- ) - } - render() { const { match } = this.props; const { id } = match.params; - const { signUpForm, statusMessage } = this.state; - - const form = signUpForm !== null - ? this.renderForm() - :
Loading...
; - - const signups = signUpForm && signUpForm.signups ? this.renderList() : null; + const { signUpForm, formData, statusMessage } = this.state; return ( <> - + ); } diff --git a/src/views/SignUpPage/FormUtils.tsx b/src/views/SignUpPage/FormUtils.tsx new file mode 100644 index 0000000..ee95fa2 --- /dev/null +++ b/src/views/SignUpPage/FormUtils.tsx @@ -0,0 +1,105 @@ + +import { Question } from "@components/SignupQuestionsWidget"; +import { SignupForm } from "@models/SignupForm"; + +const questionToSchemaProp = (question: Question): {} => { + let obj: any; + if (question.type === "text") { + obj = { + type: "string", + title: question.name, + default: "", + }; + } + else if (question.type === "radiobutton") { + obj = { + type: "string", + title: question.name, + enum: question.options, + }; + } + else if (question.type === "checkbox") { + obj = { + type: "array", + title: question.name, + items: { + type: "string", + enum: question.options, + }, + uniqueItems: true, + }; + } + else if (question.type === "email") { + obj = { + type: "string", + title: question.name, + format: "email", + default: "" + } + } + else { + throw new Error(`No mapping to schema prop for question type ${question.type}`); + } + + return { + [question.id]: obj, + } +} + +const questionToUISchemaProp = (question: Question): {} => { + let obj = {}; + if (question.type == "checkbox") { + obj = { + "ui:widget": "checkboxes", + }; + } + else if (question.type == "radiobutton") { + obj = { + "ui:widget": "radio", + } + } + // else { + // throw new Error(`No mapping to UI schema prop for question type ${question.type}`); + // } + return { + [question.id]: obj, + }; +} + +export const buildSchema = (signUpForm: SignupForm) => { + const {questions} = signUpForm; + const schemaPropsArray = questions.map(questionToSchemaProp); + let schemaProps = {}; + schemaPropsArray.forEach((schemaProp) => { + schemaProps = { + ...schemaProps, + ...schemaProp, + }; + }); + + const schema = { + title: signUpForm.id ? signUpForm.title : "Loading...", + type: "object", + required: [], + properties: schemaProps, + }; + + return schema; +} + +export const buildUISchema = (signUpForm: SignupForm) => { + const {questions} = signUpForm; + const uiSchemaPropsArray = questions.map(questionToUISchemaProp); + let uiSchemaProps = {}; + uiSchemaPropsArray.forEach((uiSchemaProp) => { + uiSchemaProps = { + ...uiSchemaProps, + ...uiSchemaProp, + }; + }); + + const uiSchema = { + ...uiSchemaProps, + }; + return uiSchema; +} diff --git a/src/views/SignUpPage/SignUpPageView.tsx b/src/views/SignUpPage/SignUpPageView.tsx index 72527b4..4b573be 100644 --- a/src/views/SignUpPage/SignUpPageView.tsx +++ b/src/views/SignUpPage/SignUpPageView.tsx @@ -1,21 +1,69 @@ import React from "react"; +import Form, { IChangeEvent, ISubmitEvent, ErrorSchema } from "react-jsonschema-form"; import "./SignUpPage.scss"; import PageSection from "@components/PageSection"; +import { SignupForm } from "@models/SignupForm"; +import { buildSchema, buildUISchema } from "./FormUtils"; interface SignUpPageViewProps { - form: React.ReactNode; - signups: React.ReactNode; + signUpForm: SignupForm; + formData: any; statusMessage: string; + onChange: (e: IChangeEvent, es?: ErrorSchema) => any; + onSubmit: (e: ISubmitEvent) => any; } -const SignUpPageView: React.FC = ({form, signups, statusMessage}) => ( -
- {statusMessage} - - {form} - {signups} - -
-); +const renderList = (signUpForm: SignupForm) => { + return ( +
    + {signUpForm.signups.map((s, idx) => ( +
  1. {s}
  2. + ))} +
+ ) +} + +const SignUpPageView: React.FC = ({ + signUpForm, + formData, + statusMessage, + onChange, + onSubmit +}) => { + + const renderForm = () => { + const schema = buildSchema(signUpForm); + const uiSchema = buildUISchema(signUpForm); + + return ( +
+

Title: {signUpForm.title}

+ +
+ ); + } + + const form = signUpForm !== null + ? renderForm() + :
Loading...
; + + const signups = signUpForm && signUpForm.signups ? renderList(signUpForm) : null; + return ( +
+ {statusMessage} + + {form} + {signups} + +
+ ) +} export default SignUpPageView; From 83a6c6dda622afc7b74656ebd7ee1662e6b06748 Mon Sep 17 00:00:00 2001 From: Aarni Halinen Date: Wed, 8 Jul 2020 18:33:13 +0300 Subject: [PATCH 31/56] Fix Styled-components SSR --- package-lock.json | 48 +++++++++++++++++++++++++++++++++++++++++++++ package.json | 3 +++ src/server/index.ts | 20 +++++++++++++++---- 3 files changed, 67 insertions(+), 4 deletions(-) diff --git a/package-lock.json b/package-lock.json index 7147029..2f3c467 100644 --- a/package-lock.json +++ b/package-lock.json @@ -806,6 +806,27 @@ "integrity": "sha512-GRTZLeLJ8ia00ZH8mxMO8t0aC9M1N9bN461Z2eaRurJo6Fpa+utgCwLzI4jQHcrdzuzp5WPN9jRwpsCQ1VhJ5w==", "dev": true }, + "@types/hoist-non-react-statics": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.1.tgz", + "integrity": "sha512-iMIqiko6ooLrTh1joXodJK5X9xeEALT1kM5G3ZLhD3hszxBdIEd5C75U834D9mLcINgD4OyZf5uQXjkuYydWvA==", + "dev": true, + "requires": { + "@types/react": "*", + "hoist-non-react-statics": "^3.3.0" + }, + "dependencies": { + "hoist-non-react-statics": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", + "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", + "dev": true, + "requires": { + "react-is": "^16.7.0" + } + } + } + }, "@types/jest": { "version": "24.0.22", "resolved": "https://registry.npmjs.org/@types/jest/-/jest-24.0.22.tgz", @@ -908,6 +929,15 @@ "@types/react": "*" } }, + "@types/react-native": { + "version": "0.62.17", + "resolved": "https://registry.npmjs.org/@types/react-native/-/react-native-0.62.17.tgz", + "integrity": "sha512-nkWG9oYS0wNiobzY11GOAjG/spV4vCPIbW+u1QIXx+wnQQ4EhkFz6lqqvncO3puXMzwkRhEGawq/bImMReA/vQ==", + "dev": true, + "requires": { + "@types/react": "*" + } + }, "@types/react-router": { "version": "5.1.8", "resolved": "https://registry.npmjs.org/@types/react-router/-/react-router-5.1.8.tgz", @@ -929,6 +959,18 @@ "@types/react-router": "*" } }, + "@types/styled-components": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/@types/styled-components/-/styled-components-5.1.1.tgz", + "integrity": "sha512-fIjKvDU1LJExBZWEQilHqzfpOK4KUwBsj5zC79lxa94ekz8oDQSBNcayMACBImxIuevF+NbBGL9O/2CQ67Zhig==", + "dev": true, + "requires": { + "@types/hoist-non-react-statics": "*", + "@types/react": "*", + "@types/react-native": "*", + "csstype": "^2.2.0" + } + }, "@types/unist": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.3.tgz", @@ -20488,6 +20530,12 @@ "integrity": "sha512-hSAifV3k+i6lEoCJ2k6R2Z/rp/H3+8sdmcn5NrS3/3kE7+RyZXm9aqvxWqjEXHAd8b0pShatpcdMTvEdvAJltQ==", "dev": true }, + "typescript-plugin-styled-components": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/typescript-plugin-styled-components/-/typescript-plugin-styled-components-1.4.4.tgz", + "integrity": "sha512-w5S5lSpzRFM+61KNNpGtlF46DuTJTyzfWM4g6ic9m189ILEoU3sgoTNHNS2MxQhXsGtQZwAlINKG+Dwy0euwUg==", + "dev": true + }, "uglify-js": { "version": "3.3.28", "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.3.28.tgz", diff --git a/package.json b/package.json index 344aaff..ca5c765 100644 --- a/package.json +++ b/package.json @@ -54,12 +54,14 @@ "@types/react-helmet": "6.0.0", "@types/react-jsonschema-form": "1.7.3", "@types/react-router-dom": "5.1.5", + "@types/styled-components": "5.1.1", "@typescript-eslint/eslint-plugin": "2.6.1", "@typescript-eslint/parser": "2.6.1", "awesome-typescript-loader": "5.2.1", "babel-cli": "6.26.0", "babel-core": "6.26.3", "babel-loader": "7.1.5", + "babel-plugin-styled-components": "1.10.7", "babel-preset-env": "1.7.0", "babel-preset-minify": "0.4.3", "babel-preset-react": "6.24.1", @@ -107,6 +109,7 @@ "testcafe-react-selectors": "2.1.0", "tsconfig-paths-webpack-plugin": "3.2.0", "typescript": "3.9.5", + "typescript-plugin-styled-components": "1.4.4", "uglifyjs-webpack-plugin": "1.3.0", "webpack": "4.41.2", "webpack-cdn-plugin": "3.2.0", diff --git a/src/server/index.ts b/src/server/index.ts index 4fa57ab..30a22ea 100644 --- a/src/server/index.ts +++ b/src/server/index.ts @@ -16,14 +16,15 @@ import App from "./App"; import fs from "fs"; import path from "path"; import { StaticContext } from "./StaticContext"; +import { ServerStyleSheet } from "styled-components"; const port = 3000; const server = express(); const indexHtml = fs.readFileSync(path.resolve("./dist/index.html"), "utf-8"); -const html = (body, title, meta) => { +const html = (body, styles, title, meta) => { const withBody = indexHtml.replace("
", `
${body}
`); - const withHead = withBody.replace("", `${title}${meta}`); + const withHead = withBody.replace("", `${title}${meta}${styles}`); return withHead; }; @@ -41,6 +42,9 @@ server.get("*", async (req, res) => { const firstPassRenderResult = renderToString(React.createElement(App, { url: req.url, context })); + // Styled-components Step 1: Create an instance of ServerStyleSheet + const sheet = new ServerStyleSheet(); + const promiseKeys = Object.keys(context.promises); let result: string; if (promiseKeys.length === 0) { @@ -62,13 +66,21 @@ server.get("*", async (req, res) => { }); /* Render a second time with all resolved data. */ - const secondPassRenderResult = renderToString(React.createElement(App, { url: req.url, context })); + // Styled-components Step 2: Retrieve styles from components in the page + const secondPassRenderResult = renderToString( + sheet.collectStyles( + React.createElement(App, { url: req.url, context }) + ) + ); result = secondPassRenderResult; } + // Styled-components Step 3: Extract the styles as