From 0df7427bcab03571cbe2bce428a6ca9b6282e02a Mon Sep 17 00:00:00 2001 From: Adam Miller Date: Mon, 16 Sep 2019 10:48:29 -0700 Subject: [PATCH] fix: Google Cloud Build --- package.json | 3 +- src/pages/index.tsx | 13 +-- src/pages/konami.js | 60 -------------- src/util/konami.ts | 45 +++++++++++ .../__snapshots__/authors-list.test.tsx.snap | 2 +- .../__snapshots__/edit-link.test.tsx.snap | 2 +- .../__snapshots__/header.test.tsx.snap | 81 +++++++++++++++++-- .../__snapshots__/pagination.test.tsx.snap | 10 +-- test/pages/__snapshots__/404.test.tsx.snap | 3 +- .../__snapshots__/learn.test.tsx.snap | 3 - yarn.lock | 8 +- 11 files changed, 133 insertions(+), 97 deletions(-) delete mode 100644 src/pages/konami.js create mode 100644 src/util/konami.ts diff --git a/package.json b/package.json index 0639f48280..8ad059edd6 100644 --- a/package.json +++ b/package.json @@ -31,8 +31,7 @@ "react": "^16.8.0", "react-dom": "^16.8.0", "react-emotion": "^10.0.0", - "react-helmet": "^5.2.0", - "typescript": "^3.1.1" + "react-helmet": "^5.2.0" }, "keywords": [ "gatsby", diff --git a/src/pages/index.tsx b/src/pages/index.tsx index 5e9fabac9f..264933372e 100644 --- a/src/pages/index.tsx +++ b/src/pages/index.tsx @@ -2,18 +2,7 @@ import React from 'react'; import Hero from '../components/hero'; import Layout from '../components/layout'; -import './konami.js'; - -let discoMode: NodeJS.Timeout | null = null; -document.addEventListener('konamiCode', (): void => { - if (discoMode) { - return clearInterval(discoMode); - } - discoMode = setInterval( - (): boolean => document.body.classList.toggle('dark-mode'), - 300 - ); -}); +import '../util/konami'; export default function HomePage(): JSX.Element { const title = 'Home Page'; diff --git a/src/pages/konami.js b/src/pages/konami.js deleted file mode 100644 index 0350b79538..0000000000 --- a/src/pages/konami.js +++ /dev/null @@ -1,60 +0,0 @@ -(function konami() { - // http://stackoverflow.com/a/9849276 - function contains(a, b) { - // eslint-disable-next-line no-bitwise - return !!~a.indexOf(b); - } - - const konamiCode = { - init() { - this.KEY_LEFT = 37; - this.KEY_UP = 38; - this.KEY_RIGHT = 39; - this.KEY_DOWN = 40; - this.KEY_A = 65; - this.KEY_B = 66; - this.CODE_SEQUENCE = '38384040373937396665'; // ⬆ ⬆ ⬇ ⬇ ⬅ ➡ ⬅ ➡ b a - this.maxDelay = 1500; - - this.bindListener(); - - return this; - }, - bindListener() { - let buffer = ''; - let lastDate = new Date(); - const konamiCodeEvent = new Event('konamiCode'); - const validKeys = [ - this.KEY_LEFT, - this.KEY_UP, - this.KEY_RIGHT, - this.KEY_DOWN, - this.KEY_A, - this.KEY_B, - ]; - - document.addEventListener( - 'keyup', - function enableKonami(ev) { - if ( - contains(validKeys, ev.keyCode) && - new Date() - lastDate <= this.maxDelay - ) { - lastDate = new Date(); - buffer += ev.keyCode; - - if (contains(buffer, this.CODE_SEQUENCE)) { - document.dispatchEvent(konamiCodeEvent); - buffer = ''; - } - } else { - lastDate = new Date(); - buffer = ''; - } - }.bind(this) - ); - }, - }; - - return konamiCode.init(); -})(); diff --git a/src/util/konami.ts b/src/util/konami.ts new file mode 100644 index 0000000000..6358e15671 --- /dev/null +++ b/src/util/konami.ts @@ -0,0 +1,45 @@ +// SSR Protection +if (typeof window !== `undefined`) { + // eslint-disable-next-line no-bitwise + const contains = (a: string, b: string): boolean => !!~a.indexOf(b); + + // Left, Up, Right, Down, A, B + const VALID_KEYS = new Set([37, 38, 39, 40, 65, 66]); + // ⬆ ⬆ ⬇ ⬇ ⬅ ➡ ⬅ ➡ b a + const CODE_SEQUENCE = '38384040373937396665'; + // 1.5s cooldown + const MAX_DELAY = 1500; + // Our Custom Event + const KONAMI_EVENT = new Event('konamiCode'); + + (function initKonami(): void { + let buffer = ''; + let lastDate = Date.now(); + + document.addEventListener('keyup', function triggerKonami({ + keyCode, + }): void { + if (!VALID_KEYS.has(keyCode)) { + return; + } + buffer = `${Date.now() - lastDate >= MAX_DELAY ? '' : buffer}${keyCode}`; + lastDate = Date.now(); + if (!contains(buffer, CODE_SEQUENCE)) { + return; + } + document.dispatchEvent(KONAMI_EVENT); + buffer = ''; + }); + })(); + + let discoMode: NodeJS.Timeout | null = null; + document.addEventListener('konamiCode', (): void => { + if (discoMode) { + return clearInterval(discoMode); + } + discoMode = setInterval( + (): boolean => document.body.classList.toggle('dark-mode'), + 300 + ); + }); +} diff --git a/test/components/__snapshots__/authors-list.test.tsx.snap b/test/components/__snapshots__/authors-list.test.tsx.snap index 0ed20f5614..1865acb5dd 100644 --- a/test/components/__snapshots__/authors-list.test.tsx.snap +++ b/test/components/__snapshots__/authors-list.test.tsx.snap @@ -5,7 +5,7 @@ exports[`AuthorsList component renders correctly 1`] = ` css={ Object { "map": undefined, - "name": "1bgkbt8", + "name": "ekkwel", "next": undefined, "styles": " display: flex; diff --git a/test/components/__snapshots__/edit-link.test.tsx.snap b/test/components/__snapshots__/edit-link.test.tsx.snap index a4cc25bae9..51e0e8f485 100644 --- a/test/components/__snapshots__/edit-link.test.tsx.snap +++ b/test/components/__snapshots__/edit-link.test.tsx.snap @@ -18,7 +18,7 @@ exports[`EditLink component renders correctly 1`] = ` css={ Object { "map": undefined, - "name": "1dmmrc2", + "name": "1fo9rdi", "next": undefined, "styles": " color: var(--black7) !important; diff --git a/test/components/__snapshots__/header.test.tsx.snap b/test/components/__snapshots__/header.test.tsx.snap index d1bc394a06..89542ee104 100644 --- a/test/components/__snapshots__/header.test.tsx.snap +++ b/test/components/__snapshots__/header.test.tsx.snap @@ -43,30 +43,97 @@ exports[`Tests for Header component renders correctly 1`] = ` className="nav__tabs" > - Download + Learn
  • + Docs + +
  • +
  • + + Community + +
  • +
  • + - API Docs + Download
  • +
  • +
  • + +
  • - GitHub + + GitHub + + + +
  • diff --git a/test/components/__snapshots__/pagination.test.tsx.snap b/test/components/__snapshots__/pagination.test.tsx.snap index 2dc1ac23c1..c4507383bf 100644 --- a/test/components/__snapshots__/pagination.test.tsx.snap +++ b/test/components/__snapshots__/pagination.test.tsx.snap @@ -22,7 +22,7 @@ exports[`Pagination component only renders links to pages that has a title 1`] = css={ Object { "map": undefined, - "name": "u0j7sy", + "name": "1guobqr", "next": undefined, "styles": " color: var(--black7) !important; @@ -71,7 +71,7 @@ exports[`Pagination component renders correctly when there is no next page 1`] = css={ Object { "map": undefined, - "name": "u0j7sy", + "name": "1guobqr", "next": undefined, "styles": " color: var(--black7) !important; @@ -121,7 +121,7 @@ exports[`Pagination component renders correctly when there is no previous page 1 css={ Object { "map": undefined, - "name": "u0j7sy", + "name": "1guobqr", "next": undefined, "styles": " color: var(--black7) !important; @@ -169,7 +169,7 @@ exports[`Pagination component renders links to the next and previous page 1`] = css={ Object { "map": undefined, - "name": "u0j7sy", + "name": "1guobqr", "next": undefined, "styles": " color: var(--black7) !important; @@ -197,7 +197,7 @@ exports[`Pagination component renders links to the next and previous page 1`] = css={ Object { "map": undefined, - "name": "u0j7sy", + "name": "1guobqr", "next": undefined, "styles": " color: var(--black7) !important; diff --git a/test/pages/__snapshots__/404.test.tsx.snap b/test/pages/__snapshots__/404.test.tsx.snap index 8b3aee13ec..8a5ee499b3 100644 --- a/test/pages/__snapshots__/404.test.tsx.snap +++ b/test/pages/__snapshots__/404.test.tsx.snap @@ -20,13 +20,12 @@ exports[`404 page renders correctly 1`] = ` The page you're trying to access does not exist. Go back to the Homepage or find what you're looking for in the menu.

    - Take me back to the + Take me back to the Homepage - →

    diff --git a/test/templates/__snapshots__/learn.test.tsx.snap b/test/templates/__snapshots__/learn.test.tsx.snap index d002e67f72..ae210445a8 100644 --- a/test/templates/__snapshots__/learn.test.tsx.snap +++ b/test/templates/__snapshots__/learn.test.tsx.snap @@ -5,9 +5,6 @@ exports[`Learn Template renders correctly 1`] = ` description="test-description" title="test-title" > -