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"
>
-