From cb87e2a00c9e8bf76aa230092fd2f7ad1432fd9b Mon Sep 17 00:00:00 2001 From: Matt McKnett Date: Sun, 5 Jun 2022 01:49:19 -0700 Subject: [PATCH 01/75] Basic Ink app with a Main Menu --- .nvmrc | 1 + babel.config.js | 1 + package.json | 10 +- src/demo-react/cli.js | 9 + src/demo-react/components/button.js | 25 + src/demo-react/components/menu.js | 68 +++ src/demo-react/screens/main-menu.js | 26 + src/demo-react/ui.js | 27 + test/demo-react/__snapshots__/ui.test.js.snap | 25 + .../__snapshots__/button.test.js.snap | 13 + test/demo-react/components/button.test.js | 13 + test/demo-react/expect-render.js | 6 + test/demo-react/ui.test.js | 18 + yarn.lock | 521 ++++++++++++++++-- 14 files changed, 725 insertions(+), 38 deletions(-) create mode 100644 .nvmrc create mode 100644 src/demo-react/cli.js create mode 100644 src/demo-react/components/button.js create mode 100644 src/demo-react/components/menu.js create mode 100644 src/demo-react/screens/main-menu.js create mode 100644 src/demo-react/ui.js create mode 100644 test/demo-react/__snapshots__/ui.test.js.snap create mode 100644 test/demo-react/components/__snapshots__/button.test.js.snap create mode 100644 test/demo-react/components/button.test.js create mode 100644 test/demo-react/expect-render.js create mode 100644 test/demo-react/ui.test.js diff --git a/.nvmrc b/.nvmrc new file mode 100644 index 00000000..7b16f790 --- /dev/null +++ b/.nvmrc @@ -0,0 +1 @@ +v14.19.0 diff --git a/babel.config.js b/babel.config.js index 1bc60240..921d102c 100644 --- a/babel.config.js +++ b/babel.config.js @@ -12,6 +12,7 @@ const presets = [ corejs: "3.8.0", }, ], + "@babel/preset-react" ]; const plugins = [ diff --git a/package.json b/package.json index 35b7d9f6..93619db4 100644 --- a/package.json +++ b/package.json @@ -6,7 +6,8 @@ "scripts": { "test": "jest", "coverage": "open coverage/lcov-report/index.html", - "demo-game": "babel-node src/demo.js" + "demo-game": "babel-node src/demo.js", + "demo-game-react": "node ./src/demo-react/cli.js" }, "repository": { "type": "git", @@ -24,14 +25,21 @@ "@babel/node": "^7.2.2", "@babel/plugin-proposal-class-properties": "^7.4.4", "@babel/preset-env": "^7.4.4", + "@babel/preset-react": "^7.17.12", "babel-core": "^7.0.0-bridge.0", "babel-jest": "^24.8.0", "babel-plugin-module-resolver": "^3.2.0", + "ink-testing-library": "^2.1.0", "jest": "^24.8.0", "regenerator-runtime": "^0.12.1" }, "dependencies": { "core-js": "^3.8.0", + "import-jsx": "^4.0.1", + "ink": "^3.2.0", + "ink-text-input": "^4.0.3", + "prop-types": "^15.8.1", + "react": "^18.1.0", "vorpal": "^1.12.0" } } diff --git a/src/demo-react/cli.js b/src/demo-react/cli.js new file mode 100644 index 00000000..6bdbb9c2 --- /dev/null +++ b/src/demo-react/cli.js @@ -0,0 +1,9 @@ +#!/usr/bin/env node + +const React = require('react'); +const importJsx = require('import-jsx'); +const { render } = require('ink'); + +const ui = importJsx('./ui'); + +render(React.createElement(ui)); diff --git a/src/demo-react/components/button.js b/src/demo-react/components/button.js new file mode 100644 index 00000000..36be38a8 --- /dev/null +++ b/src/demo-react/components/button.js @@ -0,0 +1,25 @@ +const React = require('react'); +const PropTypes = require('prop-types'); + +const { Box, Text } = require('ink'); + +function Button(props) { + const bgColor = props.isSelected ? 'white' : ''; + const color = props.isSelected ? 'black' : ''; + return ( + + { props.children } + + ); +} + +Button.propTypes = { + children: PropTypes.node, + isSelected: PropTypes.bool.isRequired +}; + +Button.defaultProps = { + isSelected: false +} + +module.exports = Button; diff --git a/src/demo-react/components/menu.js b/src/demo-react/components/menu.js new file mode 100644 index 00000000..a3ab0acd --- /dev/null +++ b/src/demo-react/components/menu.js @@ -0,0 +1,68 @@ +const React = require('react'); +const { useState } = require('react'); +const PropTypes = require('prop-types'); + +const { Box, useInput } = require('ink'); + +const importJsx = require('import-jsx'); +const Button = importJsx('./button'); + +const MenuEntry = (title, selectionId) => ({ + title, + selectionId +}); + +MenuEntry.propTypes = PropTypes.shape({ + title: PropTypes.string, + selecitonId: PropTypes.string +}); + +const Menu = ({ items, onItemSelected }) => { + const menu = items; + const [selectedIdx, setSelectedIdx] = useState(0); + + const inputHandler = (input, key) => { + if (key.upArrow || key.leftArrow) { + setSelectedIdx(Math.max(0, selectedIdx - 1)); + } else if (key.downArrow || key.rightArrow) { + setSelectedIdx(Math.min(menu.length - 1, selectedIdx + 1)); + } else if (key.return) { + const selectedItemId = menu[selectedIdx].selectionId; + onItemSelected(selectedItemId); + } + + }; + useInput(inputHandler); + + + return ( + + { + menu.map((menuEntry, idx) => + + ) + } + + ); +} + +Menu.propTypes = { + onItemSelected: PropTypes.func.isRequired, + items: PropTypes.arrayOf(MenuEntry.propTypes).isRequired +}; + +module.exports = { + Menu, + MenuEntry +}; diff --git a/src/demo-react/screens/main-menu.js b/src/demo-react/screens/main-menu.js new file mode 100644 index 00000000..cd2faa14 --- /dev/null +++ b/src/demo-react/screens/main-menu.js @@ -0,0 +1,26 @@ +const React = require('react'); + +const { useApp } = require('ink'); + +const importJsx = require('import-jsx'); +const { Menu, MenuEntry } = importJsx('../components/menu'); + +const MainMenu = ({ log }) => { + const { exit } = useApp(); + const mainMenu = [ + MenuEntry('Start New Game', 'start'), + MenuEntry('How to Play', 'help'), + MenuEntry('Quit', 'quit') + ]; + + const handleSelection = (selectionId) => { + log(`MainMenu: Received '${selectionId}'.`); + if (selectionId === 'quit') { + exit(); + } + } + + return ; +} + +module.exports = MainMenu; diff --git a/src/demo-react/ui.js b/src/demo-react/ui.js new file mode 100644 index 00000000..2e17a380 --- /dev/null +++ b/src/demo-react/ui.js @@ -0,0 +1,27 @@ +const React = require('react'); +const { useState } = require('react'); + +const { Text } = require('ink'); + +const importJsx = require('import-jsx'); +const MainMenu = importJsx('./screens/main-menu'); + + + +const App = () => { + const [message, setMessage] = useState(); + + const log = (msg) => { + setMessage(msg); + }; + return ( + <> + + { message } + + ); +}; + +App.propTypes = {}; + +module.exports = App; diff --git a/test/demo-react/__snapshots__/ui.test.js.snap b/test/demo-react/__snapshots__/ui.test.js.snap new file mode 100644 index 00000000..e04235d8 --- /dev/null +++ b/test/demo-react/__snapshots__/ui.test.js.snap @@ -0,0 +1,25 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`Button rendering Highlights the next item on right-arrow press 1`] = ` +"┌──────────────────────────────────────────────────────────────────────────────────────────────────┐ +│ │ +│ │ +│ ╭────────────────╮ ╭─────────────╮ ╭──────╮ │ +│ │ Start New Game │ │ How to Play │ │ Quit │ │ +│ ╰────────────────╯ ╰─────────────╯ ╰──────╯ │ +│ │ +│ │ +└──────────────────────────────────────────────────────────────────────────────────────────────────┘" +`; + +exports[`Button rendering Renders correctly in the default state 1`] = ` +"┌──────────────────────────────────────────────────────────────────────────────────────────────────┐ +│ │ +│ │ +│ ╭────────────────╮ ╭─────────────╮ ╭──────╮ │ +│ │ Start New Game │ │ How to Play │ │ Quit │ │ +│ ╰────────────────╯ ╰─────────────╯ ╰──────╯ │ +│ │ +│ │ +└──────────────────────────────────────────────────────────────────────────────────────────────────┘" +`; diff --git a/test/demo-react/components/__snapshots__/button.test.js.snap b/test/demo-react/components/__snapshots__/button.test.js.snap new file mode 100644 index 00000000..bf9f1dfa --- /dev/null +++ b/test/demo-react/components/__snapshots__/button.test.js.snap @@ -0,0 +1,13 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`Button rendering Renders correctly when not selected 1`] = ` +" ╭──────────────────────────────────────────────────────────────────────────────────────────────╮ + │ Not Selected │ + ╰──────────────────────────────────────────────────────────────────────────────────────────────╯" +`; + +exports[`Button rendering Renders correctly when selected 1`] = ` +" ╭──────────────────────────────────────────────────────────────────────────────────────────────╮ + │ Selected │ + ╰──────────────────────────────────────────────────────────────────────────────────────────────╯" +`; diff --git a/test/demo-react/components/button.test.js b/test/demo-react/components/button.test.js new file mode 100644 index 00000000..20f9b02d --- /dev/null +++ b/test/demo-react/components/button.test.js @@ -0,0 +1,13 @@ +import React from 'react'; +import Button from 'demo-react/components/button'; +import { expectRenderToMatchSnapshot } from '../expect-render'; + +describe('Button rendering', () => { + it('Renders correctly when not selected', () => { + expectRenderToMatchSnapshot(); + }); + + it('Renders correctly when selected', () => { + expectRenderToMatchSnapshot(); + }); +}); \ No newline at end of file diff --git a/test/demo-react/expect-render.js b/test/demo-react/expect-render.js new file mode 100644 index 00000000..1f426b3c --- /dev/null +++ b/test/demo-react/expect-render.js @@ -0,0 +1,6 @@ +import { render } from 'ink-testing-library'; + +export function expectRenderToMatchSnapshot(jsx) { + const { lastFrame } = render(jsx); + expect(lastFrame()).toMatchSnapshot(); +} diff --git a/test/demo-react/ui.test.js b/test/demo-react/ui.test.js new file mode 100644 index 00000000..67d580ba --- /dev/null +++ b/test/demo-react/ui.test.js @@ -0,0 +1,18 @@ +import React from 'react'; +import App from 'demo-react/ui'; +import { render } from 'ink-testing-library'; +import { expectRenderToMatchSnapshot } from './expect-render'; + +describe('Button rendering', () => { + it('Renders correctly in the default state', () => { + expectRenderToMatchSnapshot(); + }); + + it.skip('Highlights the next item on right-arrow press', () => { + const { stdin, lastFrame } = render(); + + stdin.write(String.fromCharCode(13) + String.fromCharCode(10)); // Try to send [Enter] + + expect(lastFrame()).toMatchSnapshot(); + }); +}); diff --git a/yarn.lock b/yarn.lock index 01caa24c..03f325ac 100644 --- a/yarn.lock +++ b/yarn.lock @@ -38,7 +38,7 @@ resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.17.10.tgz#711dc726a492dfc8be8220028b1b92482362baab" integrity sha512-GZt/TCsG70Ms19gfZO1tM4CVnXsPgEPBCpJu+Qz3L0LUDsY5nZqFZglIoPC1kIYOtNBZlrnFT+klg12vFGZXrw== -"@babel/core@^7.1.0", "@babel/core@^7.4.4": +"@babel/core@^7.1.0", "@babel/core@^7.4.4", "@babel/core@^7.5.5": version "7.18.2" resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.18.2.tgz#87b2fcd7cce9becaa7f5acebdc4f09f3dd19d876" integrity sha512-A8pri1YJiC5UnkdrWcmfZTJTV85b4UXTAfImGmCfYmax4TR9Cw8sDS0MOk++Gp2mE/BefVJ5nwy5yzqNJbP/DQ== @@ -381,7 +381,7 @@ "@babel/helper-plugin-utils" "^7.16.7" "@babel/plugin-syntax-numeric-separator" "^7.10.4" -"@babel/plugin-proposal-object-rest-spread@^7.18.0": +"@babel/plugin-proposal-object-rest-spread@^7.18.0", "@babel/plugin-proposal-object-rest-spread@^7.5.5": version "7.18.0" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.18.0.tgz#79f2390c892ba2a68ec112eb0d895cfbd11155e8" integrity sha512-nbTv371eTrFabDfHLElkn9oyf9VG+VKK6WMzhY2o4eHKaG19BToD9947zzGMO6I/Irstx9d8CwX6njPNIAR/yw== @@ -484,6 +484,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.0" +"@babel/plugin-syntax-jsx@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.17.12.tgz#834035b45061983a491f60096f61a2e7c5674a47" + integrity sha512-spyY3E3AURfxh/RHtjx5j6hs8am5NbUBGfcZ2vB3uShSpZdQyXSf5rR5Mk76vbtlAZOelyVQ71Fg0x9SG4fsog== + dependencies: + "@babel/helper-plugin-utils" "^7.17.12" + "@babel/plugin-syntax-logical-assignment-operators@^7.10.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz#ca91ef46303530448b906652bac2e9fe9941f699" @@ -591,7 +598,7 @@ dependencies: "@babel/helper-plugin-utils" "^7.17.12" -"@babel/plugin-transform-destructuring@^7.18.0": +"@babel/plugin-transform-destructuring@^7.18.0", "@babel/plugin-transform-destructuring@^7.5.0": version "7.18.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.18.0.tgz#dc4f92587e291b4daa78aa20cc2d7a63aa11e858" integrity sha512-Mo69klS79z6KEfrLg/1WkmVnB8javh75HX4pi2btjvlIoasuxilEyjtsQW6XPrubNd7AQy0MMaNIaQE4e7+PQw== @@ -726,6 +733,39 @@ dependencies: "@babel/helper-plugin-utils" "^7.16.7" +"@babel/plugin-transform-react-display-name@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.16.7.tgz#7b6d40d232f4c0f550ea348593db3b21e2404340" + integrity sha512-qgIg8BcZgd0G/Cz916D5+9kqX0c7nPZyXaP8R2tLNN5tkyIZdG5fEwBrxwplzSnjC1jvQmyMNVwUCZPcbGY7Pg== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-transform-react-jsx-development@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.16.7.tgz#43a00724a3ed2557ed3f276a01a929e6686ac7b8" + integrity sha512-RMvQWvpla+xy6MlBpPlrKZCMRs2AGiHOGHY3xRwl0pEeim348dDyxeH4xBsMPbIMhujeq7ihE702eM2Ew0Wo+A== + dependencies: + "@babel/plugin-transform-react-jsx" "^7.16.7" + +"@babel/plugin-transform-react-jsx@^7.16.7", "@babel/plugin-transform-react-jsx@^7.17.12", "@babel/plugin-transform-react-jsx@^7.3.0": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.17.12.tgz#2aa20022709cd6a3f40b45d60603d5f269586dba" + integrity sha512-Lcaw8bxd1DKht3thfD4A12dqo1X16he1Lm8rIv8sTwjAYNInRS1qHa9aJoqvzpscItXvftKDCfaEQzwoVyXpEQ== + dependencies: + "@babel/helper-annotate-as-pure" "^7.16.7" + "@babel/helper-module-imports" "^7.16.7" + "@babel/helper-plugin-utils" "^7.17.12" + "@babel/plugin-syntax-jsx" "^7.17.12" + "@babel/types" "^7.17.12" + +"@babel/plugin-transform-react-pure-annotations@^7.16.7": + version "7.18.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.18.0.tgz#ef82c8e310913f3522462c9ac967d395092f1954" + integrity sha512-6+0IK6ouvqDn9bmEG7mEyF/pwlJXVj5lwydybpyyH3D0A7Hftk+NCTdYjnLNZksn261xaOV5ksmp20pQEmc2RQ== + dependencies: + "@babel/helper-annotate-as-pure" "^7.16.7" + "@babel/helper-plugin-utils" "^7.17.12" + "@babel/plugin-transform-regenerator@^7.18.0": version "7.18.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.18.0.tgz#44274d655eb3f1af3f3a574ba819d3f48caf99d5" @@ -884,6 +924,18 @@ "@babel/types" "^7.4.4" esutils "^2.0.2" +"@babel/preset-react@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.17.12.tgz#62adbd2d1870c0de3893095757ed5b00b492ab3d" + integrity sha512-h5U+rwreXtZaRBEQhW1hOJLMq8XNJBQ/9oymXiCXTuT/0uOwpbT0gUt+sXeOqoXBgNuUKI7TaObVwoEyWkpFgA== + dependencies: + "@babel/helper-plugin-utils" "^7.17.12" + "@babel/helper-validator-option" "^7.16.7" + "@babel/plugin-transform-react-display-name" "^7.16.7" + "@babel/plugin-transform-react-jsx" "^7.17.12" + "@babel/plugin-transform-react-jsx-development" "^7.16.7" + "@babel/plugin-transform-react-pure-annotations" "^7.16.7" + "@babel/register@^7.17.7": version "7.17.7" resolved "https://registry.yarnpkg.com/@babel/register/-/register-7.17.7.tgz#5eef3e0f4afc07e25e847720e7b987ae33f08d0b" @@ -935,6 +987,14 @@ "@babel/helper-validator-identifier" "^7.16.7" to-fast-properties "^2.0.0" +"@babel/types@^7.17.12": + version "7.18.4" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.18.4.tgz#27eae9b9fd18e9dccc3f9d6ad051336f307be354" + integrity sha512-ThN1mBcMq5pG/Vm2IcBmPPfyPXbd8S02rS+OBIDENdufvqC7Z/jHPCv9IcP01277aKtDI8g/2XysBN4hA8niiw== + dependencies: + "@babel/helper-validator-identifier" "^7.16.7" + to-fast-properties "^2.0.0" + "@cnakazawa/watch@^1.0.3": version "1.0.4" resolved "https://registry.yarnpkg.com/@cnakazawa/watch/-/watch-1.0.4.tgz#f864ae85004d0fcab6f50be9141c4da368d1656a" @@ -1206,6 +1266,11 @@ dependencies: "@types/yargs-parser" "*" +"@types/yoga-layout@1.9.2": + version "1.9.2" + resolved "https://registry.yarnpkg.com/@types/yoga-layout/-/yoga-layout-1.9.2.tgz#efaf9e991a7390dc081a0b679185979a83a9639a" + integrity sha512-S9q47ByT2pPvD65IvrWp7qppVMpk9WGMbVq9wbWZOHg6tnXSD4vyhao6nOSBwwfDdV2p3Kx9evA9vI+XWTfDvw== + abab@^2.0.0: version "2.0.6" resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.6.tgz#41b80f2c871d19686216b82309231cfd3cb3d291" @@ -1254,6 +1319,13 @@ ansi-escapes@^3.0.0: resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b" integrity sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ== +ansi-escapes@^4.2.1: + version "4.3.2" + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6b2291d1db7d98b6521d5f1efa42d0f3a9feb65e" + integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ== + dependencies: + type-fest "^0.21.3" + ansi-regex@^2.0.0: version "2.1.1" resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" @@ -1269,6 +1341,11 @@ ansi-regex@^4.0.0, ansi-regex@^4.1.0: resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.1.tgz#164daac87ab2d6f6db3a29875e2d1766582dabed" integrity sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g== +ansi-regex@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" + integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== + ansi-styles@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" @@ -1281,6 +1358,13 @@ ansi-styles@^3.2.0, ansi-styles@^3.2.1: dependencies: color-convert "^1.9.0" +ansi-styles@^4.0.0, ansi-styles@^4.1.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" + integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== + dependencies: + color-convert "^2.0.1" + anymatch@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb" @@ -1355,6 +1439,11 @@ astral-regex@^1.0.0: resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9" integrity sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg== +astral-regex@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31" + integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ== + async-limiter@~1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.1.tgz#dd379e94f0db8310b08291f9d64c3209766617fd" @@ -1370,6 +1459,11 @@ atob@^2.1.2: resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== +auto-bind@4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/auto-bind/-/auto-bind-4.0.0.tgz#e3589fc6c2da8f7ca43ba9f84fa52a744fc997fb" + integrity sha512-Hdw8qdNiqdJ8LqT0iK0sVzkFbzg6fhnQqqfWhBDxcHZvU75+B+ayzTy8x+k5Ix0Y92XOhOUlx74ps+bA6BeYMQ== + aws-sign2@~0.7.0: version "0.7.0" resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" @@ -1608,7 +1702,21 @@ call-bind@^1.0.0, call-bind@^1.0.2: function-bind "^1.1.1" get-intrinsic "^1.0.2" -callsites@^3.0.0: +caller-callsite@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/caller-callsite/-/caller-callsite-4.1.0.tgz#3e33cb1d910e7b09332d59a3503b9af7462f7295" + integrity sha512-99nnnGlJexTc41xwQTr+mWl15OI5PPczUJzM4YRE7QjkefMKCXGa5gfQjCOuVrD+1TjI/fevIDHg2nz3iYN5Ig== + dependencies: + callsites "^3.1.0" + +caller-path@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-3.0.1.tgz#bc932ecec3f943e10c2f8922146e23b132f932e4" + integrity sha512-fhmztL4wURO/BzwJUJ4aVRdnKEFskPBbrJ8fNgl7XdUiD1ygzzlt+nhPgUBSRq2ciEVubo6x+W8vJQzm55QLLQ== + dependencies: + caller-callsite "^4.1.0" + +callsites@^3.0.0, callsites@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== @@ -1655,6 +1763,14 @@ chalk@^2.0.0, chalk@^2.0.1, chalk@^2.4.2: escape-string-regexp "^1.0.5" supports-color "^5.3.0" +chalk@^4.1.0: + version "4.1.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" + integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + chokidar@^3.4.0: version "3.5.3" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd" @@ -1685,6 +1801,11 @@ class-utils@^0.3.5: isobject "^3.0.0" static-extend "^0.1.1" +cli-boxes@^2.2.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-2.2.1.tgz#ddd5035d25094fce220e9cab40a45840a440318f" + integrity sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw== + cli-cursor@^1.0.1, cli-cursor@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-1.0.2.tgz#64da3f7d56a54412e59794bd62dc35295e8f2987" @@ -1692,6 +1813,21 @@ cli-cursor@^1.0.1, cli-cursor@^1.0.2: dependencies: restore-cursor "^1.0.1" +cli-cursor@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307" + integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw== + dependencies: + restore-cursor "^3.1.0" + +cli-truncate@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/cli-truncate/-/cli-truncate-2.1.0.tgz#c39e28bf05edcde5be3b98992a22deed5a2b93c7" + integrity sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg== + dependencies: + slice-ansi "^3.0.0" + string-width "^4.2.0" + cli-width@^1.0.1: version "1.1.1" resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-1.1.1.tgz#a4d293ef67ebb7b88d4a4d42c0ccf00c4d1e366d" @@ -1720,6 +1856,13 @@ co@^4.6.0: resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" integrity sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ== +code-excerpt@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/code-excerpt/-/code-excerpt-3.0.0.tgz#fcfb6748c03dba8431c19f5474747fad3f250f10" + integrity sha512-VHNTVhd7KsLGOqfX3SyeO8RyYPMp1GJOg194VITk04WMYCv4plV68YWe6TJZxd9MhobjtpMRnVky01gqZsalaw== + dependencies: + convert-to-spaces "^1.0.1" + code-point-at@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" @@ -1740,11 +1883,23 @@ color-convert@^1.9.0: dependencies: color-name "1.1.3" +color-convert@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" + integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== + dependencies: + color-name "~1.1.4" + color-name@1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== +color-name@~1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== + combined-stream@^1.0.6, combined-stream@~1.0.6: version "1.0.8" resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" @@ -1779,6 +1934,11 @@ convert-source-map@^1.1.0, convert-source-map@^1.4.0, convert-source-map@^1.7.0: dependencies: safe-buffer "~5.1.1" +convert-to-spaces@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/convert-to-spaces/-/convert-to-spaces-1.0.2.tgz#7e3e48bbe6d997b1417ddca2868204b4d3d85715" + integrity sha512-cj09EBuObp9gZNQCzc7hByQyrs6jVGE+o9kSJmeUoj+GiPiJvi5LYqEH/Hmme4+MTLHM+Ejtq+FChpjjEnsPdQ== + copy-descriptor@^0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" @@ -1805,7 +1965,7 @@ core-js@^3.22.1, core-js@^3.8.0: core-util-is@1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" - integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= + integrity sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ== cross-spawn@^6.0.0: version "6.0.5" @@ -1833,7 +1993,7 @@ cssstyle@^1.0.0: dashdash@^1.12.0: version "1.14.1" resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" - integrity sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA= + integrity sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g== dependencies: assert-plus "^1.0.0" @@ -1863,7 +2023,7 @@ debug@^4.1.0, debug@^4.1.1: decamelize@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" - integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= + integrity sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA== decode-uri-component@^0.2.0: version "0.2.0" @@ -1908,12 +2068,12 @@ define-property@^2.0.2: delayed-stream@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" - integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk= + integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== detect-newline@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-2.1.0.tgz#f41f1c10be4b00e87b5f13da680759f2c5bfd3e2" - integrity sha1-9B8cEL5LAOh7XxPaaAdZ8sW/0+I= + integrity sha512-CwffZFvlJffUg9zZA0uqrjQayUTC8ob94pnr5sFwaVv3IOmkfUHcWH+jXaQK3askE51Cqe8/9Ql/0uXNwqZ8Zg== diff-sequences@^24.9.0: version "24.9.0" @@ -1930,7 +2090,7 @@ domexception@^1.0.1: ecc-jsbn@~0.1.1: version "0.1.2" resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" - integrity sha1-OoOpBOVDUyh4dMVkt1SThoSamMk= + integrity sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw== dependencies: jsbn "~0.1.0" safer-buffer "^2.1.0" @@ -1945,6 +2105,11 @@ emoji-regex@^7.0.1: resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA== +emoji-regex@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" + integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== + end-of-stream@^1.1.0: version "1.4.4" resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" @@ -2070,7 +2235,7 @@ exit-hook@^1.0.0: exit@^0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" - integrity sha1-BjJjj42HfMghB9MKD/8aF8uhzQw= + integrity sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ== expand-brackets@^2.1.4: version "2.1.4" @@ -2134,7 +2299,7 @@ extglob@^2.0.4: extsprintf@1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" - integrity sha1-lpGEQOMEGnpBT4xS48V06zw+HgU= + integrity sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g== extsprintf@^1.2.0: version "1.4.1" @@ -2154,7 +2319,7 @@ fast-json-stable-stringify@^2.0.0: fast-levenshtein@~2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" - integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= + integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== fb-watchman@^2.0.0: version "2.0.1" @@ -2210,6 +2375,15 @@ find-cache-dir@^2.0.0: make-dir "^2.0.0" pkg-dir "^3.0.0" +find-cache-dir@^3.2.0: + version "3.3.2" + resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-3.3.2.tgz#b30c5b6eff0730731aea9bbd9dbecbd80256d64b" + integrity sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig== + dependencies: + commondir "^1.0.1" + make-dir "^3.0.2" + pkg-dir "^4.1.0" + find-up@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" @@ -2224,6 +2398,14 @@ find-up@^3.0.0: dependencies: locate-path "^3.0.0" +find-up@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" + integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== + dependencies: + locate-path "^5.0.0" + path-exists "^4.0.0" + for-each@^0.3.3: version "0.3.3" resolved "https://registry.yarnpkg.com/for-each/-/for-each-0.3.3.tgz#69b447e88a0a5d32c3e7084f3f1710034b21376e" @@ -2239,7 +2421,7 @@ for-in@^1.0.2: forever-agent@~0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" - integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE= + integrity sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw== form-data@~2.3.2: version "2.3.3" @@ -2342,7 +2524,7 @@ get-value@^2.0.3, get-value@^2.0.6: getpass@^0.1.1: version "0.1.7" resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" - integrity sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo= + integrity sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng== dependencies: assert-plus "^1.0.0" @@ -2378,12 +2560,12 @@ graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2: growly@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/growly/-/growly-1.3.0.tgz#f10748cbe76af964b7c96c93c6bcc28af120c081" - integrity sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE= + integrity sha512-+xGQY0YyAWCnqy7Cd++hc2JqMYzlm0dG30Jd0beaA64sROr8C4nt8Yc9V5Ro3avlSUDTN0ulqP/VBKi1/lLygw== har-schema@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" - integrity sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI= + integrity sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q== har-validator@~5.1.3: version "5.1.5" @@ -2410,6 +2592,11 @@ has-flag@^3.0.0: resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= +has-flag@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" + integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== + has-property-descriptors@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz#610708600606d36961ed04c196193b6a607fa861" @@ -2494,7 +2681,7 @@ html-escaper@^2.0.0: http-signature@~1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" - integrity sha1-muzZJRFHcvPZW2WmCruPfBj7rOE= + integrity sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ== dependencies: assert-plus "^1.0.0" jsprim "^1.2.2" @@ -2507,6 +2694,21 @@ iconv-lite@0.4.24: dependencies: safer-buffer ">= 2.1.2 < 3" +import-jsx@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/import-jsx/-/import-jsx-4.0.1.tgz#30d5d336f3f52ed32b62690997f26e23c252a258" + integrity sha512-2Cj4nWRuAmvokFRU6UNo3xgzXKh+4nq/LBtD6mTp3V9c9nYV7O+dRvPChPOM34Qcj1+Ijz3oK6HqkixG0GP9Rg== + dependencies: + "@babel/core" "^7.5.5" + "@babel/plugin-proposal-object-rest-spread" "^7.5.5" + "@babel/plugin-transform-destructuring" "^7.5.0" + "@babel/plugin-transform-react-jsx" "^7.3.0" + caller-path "^3.0.1" + find-cache-dir "^3.2.0" + make-dir "^3.0.2" + resolve-from "^3.0.0" + rimraf "^3.0.0" + import-local@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/import-local/-/import-local-2.0.0.tgz#55070be38a5993cf18ef6db7e961f5bee5c5a09d" @@ -2525,6 +2727,11 @@ in-publish@^2.0.0: resolved "https://registry.yarnpkg.com/in-publish/-/in-publish-2.0.1.tgz#948b1a535c8030561cea522f73f78f4be357e00c" integrity sha512-oDM0kUSNFC31ShNxHKUyfZKy8ZeXZBWMjMdZHKLOk13uvT27VTL/QzRGfRUcevJhpkZAvlhPYuXkF7eNWrtyxQ== +indent-string@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" + integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== + inflight@^1.0.4: version "1.0.6" resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" @@ -2538,6 +2745,48 @@ inherits@2: resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== +ink-testing-library@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/ink-testing-library/-/ink-testing-library-2.1.0.tgz#b5ffd1ef1049550ae4d2f008b8770e7ece6e0313" + integrity sha512-7TNlOjJlJXB33vG7yVa+MMO7hCjaC1bCn+zdpSjknWoLbOWMaFdKc7LJvqVkZ0rZv2+akhjXPrcR/dbxissjUw== + +ink-text-input@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/ink-text-input/-/ink-text-input-4.0.3.tgz#6348fef942e74b06a465f98851706516a1e2be8d" + integrity sha512-eQD01ik9ltmNoHmkeQ2t8LszYkv2XwuPSUz3ie/85qer6Ll/j0QSlSaLNl6ENHZakBHdCBVZY04iOXcLLXA0PQ== + dependencies: + chalk "^4.1.0" + type-fest "^0.15.1" + +ink@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/ink/-/ink-3.2.0.tgz#434793630dc57d611c8fe8fffa1db6b56f1a16bb" + integrity sha512-firNp1q3xxTzoItj/eOOSZQnYSlyrWks5llCTVX37nJ59K3eXbQ8PtzCguqo8YI19EELo5QxaKnJd4VxzhU8tg== + dependencies: + ansi-escapes "^4.2.1" + auto-bind "4.0.0" + chalk "^4.1.0" + cli-boxes "^2.2.0" + cli-cursor "^3.1.0" + cli-truncate "^2.1.0" + code-excerpt "^3.0.0" + indent-string "^4.0.0" + is-ci "^2.0.0" + lodash "^4.17.20" + patch-console "^1.0.0" + react-devtools-core "^4.19.1" + react-reconciler "^0.26.2" + scheduler "^0.20.2" + signal-exit "^3.0.2" + slice-ansi "^3.0.0" + stack-utils "^2.0.2" + string-width "^4.2.2" + type-fest "^0.12.0" + widest-line "^3.1.0" + wrap-ansi "^6.2.0" + ws "^7.5.5" + yoga-layout-prebuilt "^1.9.6" + inquirer@0.11.0: version "0.11.0" resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-0.11.0.tgz#7448bfa924092af311d47173bbab990cae2bb027" @@ -2703,7 +2952,12 @@ is-fullwidth-code-point@^1.0.0: is-fullwidth-code-point@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" - integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= + integrity sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w== + +is-fullwidth-code-point@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" + integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== is-generator-fn@^2.0.0: version "2.1.0" @@ -2785,7 +3039,7 @@ is-symbol@^1.0.2, is-symbol@^1.0.3: is-typedarray@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" - integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= + integrity sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA== is-weakref@^1.0.2: version "1.0.2" @@ -2802,7 +3056,7 @@ is-windows@^1.0.2: is-wsl@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d" - integrity sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0= + integrity sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw== isarray@1.0.0: version "1.0.0" @@ -2829,7 +3083,7 @@ isobject@^3.0.0, isobject@^3.0.1: isstream@~0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" - integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo= + integrity sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g== istanbul-lib-coverage@^2.0.2, istanbul-lib-coverage@^2.0.5: version "2.0.5" @@ -3238,7 +3492,7 @@ jest@^24.8.0: jsbn@~0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" - integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM= + integrity sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg== jsdom@^11.5.1: version "11.12.0" @@ -3300,7 +3554,7 @@ json-schema@0.4.0: json-stringify-safe@~5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" - integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus= + integrity sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA== json5@^0.5.1: version "0.5.1" @@ -3364,7 +3618,7 @@ leven@^3.1.0: levn@~0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" - integrity sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4= + integrity sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA== dependencies: prelude-ls "~1.1.2" type-check "~0.3.2" @@ -3395,6 +3649,13 @@ locate-path@^3.0.0: p-locate "^3.0.0" path-exists "^3.0.0" +locate-path@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" + integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== + dependencies: + p-locate "^4.1.0" + lodash.debounce@^4.0.8: version "4.0.8" resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" @@ -3403,14 +3664,14 @@ lodash.debounce@^4.0.8: lodash.sortby@^4.7.0: version "4.7.0" resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438" - integrity sha1-7dFMgk4sycHgsKG0K7UhBRakJDg= + integrity sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA== lodash@^3.3.1: version "3.10.1" resolved "https://registry.yarnpkg.com/lodash/-/lodash-3.10.1.tgz#5bf45e8e49ba4189e17d482789dfd15bd140b7b6" integrity sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y= -lodash@^4.17.19, lodash@^4.5.1: +lodash@^4.17.19, lodash@^4.17.20, lodash@^4.5.1: version "4.17.21" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== @@ -3423,7 +3684,7 @@ log-update@^1.0.2: ansi-escapes "^1.0.0" cli-cursor "^1.0.2" -loose-envify@^1.0.0: +loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== @@ -3438,6 +3699,13 @@ make-dir@^2.0.0, make-dir@^2.1.0: pify "^4.0.1" semver "^5.6.0" +make-dir@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" + integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== + dependencies: + semver "^6.0.0" + makeerror@1.0.12: version "1.0.12" resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.12.tgz#3e5dd2079a82e812e983cc6610c4a2cb0eaa801a" @@ -3493,6 +3761,11 @@ mime-types@^2.1.12, mime-types@~2.1.19: dependencies: mime-db "1.52.0" +mimic-fn@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" + integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== + minimatch@^3.0.4, minimatch@^3.1.1: version "3.1.2" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" @@ -3560,7 +3833,7 @@ nanomatch@^1.2.9: natural-compare@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" - integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= + integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== nice-try@^1.0.4: version "1.0.5" @@ -3645,10 +3918,10 @@ oauth-sign@~0.9.0: resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== -object-assign@^4.1.0: +object-assign@^4.1.0, object-assign@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" - integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= + integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== object-copy@^0.1.0: version "0.1.0" @@ -3715,6 +3988,13 @@ onetime@^1.0.0: resolved "https://registry.yarnpkg.com/onetime/-/onetime-1.1.0.tgz#a1f7838f8314c516f05ecefcbc4ccfe04b4ed789" integrity sha1-ofeDj4MUxRbwXs78vEzP4EtO14k= +onetime@^5.1.0: + version "5.1.2" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" + integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== + dependencies: + mimic-fn "^2.1.0" + optionator@^0.8.1: version "0.8.3" resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.3.tgz#84fa1d036fe9d3c7e21d99884b601167ec8fb495" @@ -3730,7 +4010,7 @@ optionator@^0.8.1: p-each-series@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/p-each-series/-/p-each-series-1.0.0.tgz#930f3d12dd1f50e7434457a22cd6f04ac6ad7f71" - integrity sha1-kw89Et0fUOdDRFeiLNbwSsatf3E= + integrity sha512-J/e9xiZZQNrt+958FFzJ+auItsBGq+UrQ7nE89AUP7UOTtjHnkISANXLdayhVzh538UnLMCSlf13lFfRIAKQOA== dependencies: p-reduce "^1.0.0" @@ -3746,7 +4026,7 @@ p-limit@^1.1.0: dependencies: p-try "^1.0.0" -p-limit@^2.0.0: +p-limit@^2.0.0, p-limit@^2.2.0: version "2.3.0" resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== @@ -3767,10 +4047,17 @@ p-locate@^3.0.0: dependencies: p-limit "^2.0.0" +p-locate@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" + integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== + dependencies: + p-limit "^2.2.0" + p-reduce@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/p-reduce/-/p-reduce-1.0.0.tgz#18c2b0dd936a4690a529f8231f58a0fdb6a47dfa" - integrity sha1-GMKw3ZNqRpClKfgjH1ig/bakffo= + integrity sha512-3Tx1T3oM1xO/Y8Gj0sWyE78EIJZ+t+aEmXUdvQgvGmSMri7aPTHoovbXEreWKkL5j21Er60XAWLTzKbAKYOujQ== p-try@^1.0.0: version "1.0.0" @@ -3805,11 +4092,21 @@ pascalcase@^0.1.1: resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ= +patch-console@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/patch-console/-/patch-console-1.0.0.tgz#19b9f028713feb8a3c023702a8cc8cb9f7466f9d" + integrity sha512-nxl9nrnLQmh64iTzMfyylSlRozL7kAXIaxw1fVcLYdyhNkJCRUzirRZTikXGJsg+hc4fqpneTK6iU2H1Q8THSA== + path-exists@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU= +path-exists@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" + integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== + path-is-absolute@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" @@ -3835,7 +4132,7 @@ path-type@^3.0.0: performance-now@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" - integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= + integrity sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow== picocolors@^1.0.0: version "1.0.0" @@ -3869,6 +4166,13 @@ pkg-dir@^3.0.0: dependencies: find-up "^3.0.0" +pkg-dir@^4.1.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" + integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== + dependencies: + find-up "^4.0.0" + pkg-up@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/pkg-up/-/pkg-up-2.0.0.tgz#c819ac728059a461cab1c3889a2be3c49a004d7f" @@ -3889,7 +4193,7 @@ posix-character-classes@^0.1.0: prelude-ls@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" - integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ= + integrity sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w== pretty-format@^24.9.0: version "24.9.0" @@ -3909,6 +4213,15 @@ prompts@^2.0.1: kleur "^3.0.3" sisteransi "^1.0.5" +prop-types@^15.8.1: + version "15.8.1" + resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.8.1.tgz#67d87bf1a694f48435cf332c24af10214a3140b5" + integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg== + dependencies: + loose-envify "^1.4.0" + object-assign "^4.1.1" + react-is "^16.13.1" + psl@^1.1.28: version "1.8.0" resolved "https://registry.yarnpkg.com/psl/-/psl-1.8.0.tgz#9326f8bcfb013adcc005fdff056acce020e51c24" @@ -3932,11 +4245,35 @@ qs@~6.5.2: resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.3.tgz#3aeeffc91967ef6e35c0e488ef46fb296ab76aad" integrity sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA== -react-is@^16.8.4: +react-devtools-core@^4.19.1: + version "4.24.7" + resolved "https://registry.yarnpkg.com/react-devtools-core/-/react-devtools-core-4.24.7.tgz#43df22e6d244ed8286fd3ff16a80813998fe82a0" + integrity sha512-OFB1cp8bsh5Kc6oOJ3ZzH++zMBtydwD53yBYa50FKEGyOOdgdbJ4VsCsZhN/6F5T4gJfrZraU6EKda8P+tMLtg== + dependencies: + shell-quote "^1.6.1" + ws "^7" + +react-is@^16.13.1, react-is@^16.8.4: version "16.13.1" resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== +react-reconciler@^0.26.2: + version "0.26.2" + resolved "https://registry.yarnpkg.com/react-reconciler/-/react-reconciler-0.26.2.tgz#bbad0e2d1309423f76cf3c3309ac6c96e05e9d91" + integrity sha512-nK6kgY28HwrMNwDnMui3dvm3rCFjZrcGiuwLc5COUipBK5hWHLOxMJhSnSomirqWwjPBJKV1QcbkI0VJr7Gl1Q== + dependencies: + loose-envify "^1.1.0" + object-assign "^4.1.1" + scheduler "^0.20.2" + +react@^18.1.0: + version "18.1.0" + resolved "https://registry.yarnpkg.com/react/-/react-18.1.0.tgz#6f8620382decb17fdc5cc223a115e2adbf104890" + integrity sha512-4oL8ivCz5ZEPyclFQXaNksK3adutVS8l2xzZU0cqEFrE9Sb7fC0EFK5uEk74wIreL1DERyjvsU915j1pcT2uEQ== + dependencies: + loose-envify "^1.1.0" + read-pkg-up@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-4.0.0.tgz#1b221c6088ba7799601c808f91161c66e58f8978" @@ -4168,6 +4505,14 @@ restore-cursor@^1.0.1: exit-hook "^1.0.0" onetime "^1.0.0" +restore-cursor@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e" + integrity sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA== + dependencies: + onetime "^5.1.0" + signal-exit "^3.0.2" + ret@~0.1.10: version "0.1.15" resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" @@ -4180,6 +4525,13 @@ rimraf@^2.5.4, rimraf@^2.6.3: dependencies: glob "^7.1.3" +rimraf@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" + integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== + dependencies: + glob "^7.1.3" + rsvp@^4.8.4: version "4.8.5" resolved "https://registry.yarnpkg.com/rsvp/-/rsvp-4.8.5.tgz#c8f155311d167f68f21e168df71ec5b083113734" @@ -4239,6 +4591,14 @@ sax@^1.2.4: resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== +scheduler@^0.20.2: + version "0.20.2" + resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.20.2.tgz#4baee39436e34aa93b4874bddcbf0fe8b8b50e91" + integrity sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ== + dependencies: + loose-envify "^1.1.0" + object-assign "^4.1.1" + "semver@2 || 3 || 4 || 5", semver@^5.5.0, semver@^5.6.0, semver@^5.7.0: version "5.7.1" resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" @@ -4288,6 +4648,11 @@ shebang-regex@^1.0.0: resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM= +shell-quote@^1.6.1: + version "1.7.3" + resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.7.3.tgz#aa40edac170445b9a431e17bb62c0b881b9c4123" + integrity sha512-Vpfqwm4EnqGdlsBFNmHhxhElJYrdfcxPThu+ryKS5J8L/fhAwLazFZtq+S+TWZ9ANj2piSQLGj6NQg+lKPmxrw== + shellwords@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/shellwords/-/shellwords-0.1.1.tgz#d6b9181c1a48d397324c84871efbcfc73fc0654b" @@ -4317,6 +4682,15 @@ slash@^2.0.0: resolved "https://registry.yarnpkg.com/slash/-/slash-2.0.0.tgz#de552851a1759df3a8f206535442f5ec4ddeab44" integrity sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A== +slice-ansi@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-3.0.0.tgz#31ddc10930a1b7e0b67b08c96c2f49b77a789787" + integrity sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ== + dependencies: + ansi-styles "^4.0.0" + astral-regex "^2.0.0" + is-fullwidth-code-point "^3.0.0" + snapdragon-node@^2.0.1: version "2.1.1" resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" @@ -4436,6 +4810,13 @@ stack-utils@^1.0.1: dependencies: escape-string-regexp "^2.0.0" +stack-utils@^2.0.2: + version "2.0.5" + resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-2.0.5.tgz#d25265fca995154659dbbfba3b49254778d2fdd5" + integrity sha512-xrQcmYhOsn/1kX+Vraq+7j4oE2j/6BFscZ0etmYg81xuM8Gq0022Pxb8+IqgOFUIaxHs0KaSb7T1+OegiNrNFA== + dependencies: + escape-string-regexp "^2.0.0" + static-extend@^0.1.1: version "0.1.2" resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" @@ -4475,6 +4856,15 @@ string-width@^3.0.0, string-width@^3.1.0: is-fullwidth-code-point "^2.0.0" strip-ansi "^5.1.0" +string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.2: + version "4.2.3" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" + string.prototype.trimend@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.5.tgz#914a65baaab25fbdd4ee291ca7dde57e869cb8d0" @@ -4514,6 +4904,13 @@ strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0: dependencies: ansi-regex "^4.1.0" +strip-ansi@^6.0.0, strip-ansi@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" + strip-bom@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" @@ -4543,6 +4940,13 @@ supports-color@^6.1.0: dependencies: has-flag "^3.0.0" +supports-color@^7.1.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" + integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== + dependencies: + has-flag "^4.0.0" + supports-preserve-symlinks-flag@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" @@ -4649,6 +5053,21 @@ type-check@~0.3.2: dependencies: prelude-ls "~1.1.2" +type-fest@^0.12.0: + version "0.12.0" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.12.0.tgz#f57a27ab81c68d136a51fd71467eff94157fa1ee" + integrity sha512-53RyidyjvkGpnWPMF9bQgFtWp+Sl8O2Rp13VavmJgfAP9WWG6q6TkrKU8iyJdnwnfgHI6k2hTlgqH4aSdjoTbg== + +type-fest@^0.15.1: + version "0.15.1" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.15.1.tgz#d2c4e73d3e4a53cf1a906396dd460a1c5178ca00" + integrity sha512-n+UXrN8i5ioo7kqT/nF8xsEzLaqFra7k32SEsSPwvXVGyAcRgV/FUQN/sgfptJTR1oRmmq7z4IXMFSM7im7C9A== + +type-fest@^0.21.3: + version "0.21.3" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37" + integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== + unbox-primitive@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.2.tgz#29032021057d5e6cdbd08c5129c226dff8ed6f9e" @@ -4845,6 +5264,13 @@ which@^1.2.9, which@^1.3.0: dependencies: isexe "^2.0.0" +widest-line@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/widest-line/-/widest-line-3.1.0.tgz#8292333bbf66cb45ff0de1603b136b7ae1496eca" + integrity sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg== + dependencies: + string-width "^4.0.0" + word-wrap@~1.2.3: version "1.2.3" resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" @@ -4867,6 +5293,15 @@ wrap-ansi@^5.1.0: string-width "^3.0.0" strip-ansi "^5.0.0" +wrap-ansi@^6.2.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53" + integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + wrappy@1: version "1.0.2" resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" @@ -4888,6 +5323,11 @@ ws@^5.2.0: dependencies: async-limiter "~1.0.0" +ws@^7, ws@^7.5.5: + version "7.5.8" + resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.8.tgz#ac2729881ab9e7cbaf8787fe3469a48c5c7f636a" + integrity sha512-ri1Id1WinAX5Jqn9HejiGb8crfRio0Qgu8+MtL36rlTA6RLsMdWt1Az/19A2Qij6uSHUMphEFaTKa4WG+UNHNw== + xml-name-validator@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-3.0.0.tgz#6ae73e06de4d8c6e47f9fb181f78d648ad457c6a" @@ -4921,3 +5361,10 @@ yargs@^13.3.0: which-module "^2.0.0" y18n "^4.0.0" yargs-parser "^13.1.2" + +yoga-layout-prebuilt@^1.9.6: + version "1.10.0" + resolved "https://registry.yarnpkg.com/yoga-layout-prebuilt/-/yoga-layout-prebuilt-1.10.0.tgz#2936fbaf4b3628ee0b3e3b1df44936d6c146faa6" + integrity sha512-YnOmtSbv4MTf7RGJMK0FvZ+KD8OEe/J5BNnR0GHhD8J/XcG/Qvxgszm0Un6FTHWW4uHlTgP0IztiXQnGyIR45g== + dependencies: + "@types/yoga-layout" "1.9.2" From 9d9e83ca3eea2d883b4e8f8ce2c45a02388a8a07 Mon Sep 17 00:00:00 2001 From: Matt McKnett Date: Sun, 5 Jun 2022 02:06:31 -0700 Subject: [PATCH 02/75] Add a help screen --- src/demo-react/screens/how-to.js | 33 +++++++++++++++++++++++++++++ src/demo-react/screens/main-menu.js | 11 +++++++++- src/demo-react/ui.js | 19 ++++++++++++++--- 3 files changed, 59 insertions(+), 4 deletions(-) create mode 100644 src/demo-react/screens/how-to.js diff --git a/src/demo-react/screens/how-to.js b/src/demo-react/screens/how-to.js new file mode 100644 index 00000000..d6c33441 --- /dev/null +++ b/src/demo-react/screens/how-to.js @@ -0,0 +1,33 @@ +const React = require('react'); + +const { Text, Box, Newline } = require('ink'); + +const HowTo = () => { + return ( + + + Select "Start New Game" to play. + + Choose the number of players, rounds, and seconds each person has available for guessing. + Then, enter the name of each player. + + + Each round, a new set of 10 letters will be chosen. Each player has limited time to + form words out of the available letters. + + Whoever has the highest scoring words across all rounds wins the game! + + + ) +}; + +module.exports = HowTo; diff --git a/src/demo-react/screens/main-menu.js b/src/demo-react/screens/main-menu.js index cd2faa14..848e3b1e 100644 --- a/src/demo-react/screens/main-menu.js +++ b/src/demo-react/screens/main-menu.js @@ -1,11 +1,12 @@ const React = require('react'); +const PropTypes = require('prop-types'); const { useApp } = require('ink'); const importJsx = require('import-jsx'); const { Menu, MenuEntry } = importJsx('../components/menu'); -const MainMenu = ({ log }) => { +const MainMenu = ({ log, onHelpSelected }) => { const { exit } = useApp(); const mainMenu = [ MenuEntry('Start New Game', 'start'), @@ -18,9 +19,17 @@ const MainMenu = ({ log }) => { if (selectionId === 'quit') { exit(); } + if (selectionId === 'help') { + onHelpSelected(); + } } return ; } +MainMenu.propTypes = { + log: PropTypes.func, + onHelpSelected: PropTypes.func.isRequired +} + module.exports = MainMenu; diff --git a/src/demo-react/ui.js b/src/demo-react/ui.js index 2e17a380..f1cb6587 100644 --- a/src/demo-react/ui.js +++ b/src/demo-react/ui.js @@ -4,19 +4,32 @@ const { useState } = require('react'); const { Text } = require('ink'); const importJsx = require('import-jsx'); +const HowTo = importJsx('./screens/how-to'); const MainMenu = importJsx('./screens/main-menu'); - - const App = () => { const [message, setMessage] = useState(); + const [screen, setScreen] = useState('mainmenu'); const log = (msg) => { setMessage(msg); }; + + const showHelp = () => { + setScreen('help'); + } + + if (screen === 'help') { + return ( + <> + + + ); + } + return ( <> - + { message } ); From 925a34f0b95e347f06e7502629b0c3a06308372c Mon Sep 17 00:00:00 2001 From: Matt McKnett Date: Sun, 5 Jun 2022 17:08:58 -0700 Subject: [PATCH 03/75] Create a reducer for game state Also move some existing state to it. --- src/demo-react/gamestate/action-types.js | 8 +++++ src/demo-react/gamestate/errors.js | 33 ++++++++++++++++++++ src/demo-react/gamestate/reducer.js | 38 ++++++++++++++++++++++++ src/demo-react/gamestate/screens.js | 23 ++++++++++++++ src/demo-react/ui.js | 25 +++++++--------- 5 files changed, 112 insertions(+), 15 deletions(-) create mode 100644 src/demo-react/gamestate/action-types.js create mode 100644 src/demo-react/gamestate/errors.js create mode 100644 src/demo-react/gamestate/reducer.js create mode 100644 src/demo-react/gamestate/screens.js diff --git a/src/demo-react/gamestate/action-types.js b/src/demo-react/gamestate/action-types.js new file mode 100644 index 00000000..4ce62f2e --- /dev/null +++ b/src/demo-react/gamestate/action-types.js @@ -0,0 +1,8 @@ +module.exports = { + GUESS: 'guess', + ADD_PLAYER: 'add-player', + SET_GAME_TIMER: 'timer', + SET_ERROR: 'set-error', + CLEAR_ERROR: 'clear-error', + SWITCH_SCREEN: 'switch-screen' +}; diff --git a/src/demo-react/gamestate/errors.js b/src/demo-react/gamestate/errors.js new file mode 100644 index 00000000..3c144c91 --- /dev/null +++ b/src/demo-react/gamestate/errors.js @@ -0,0 +1,33 @@ +const { SET_ERROR } = require('./action-types'); + +class SetErrorAction { + constructor(message) { + this.type = SET_ERROR; + this.payload = message; + } +} + +function getLastError(state) { + return state.lastError +} + +function errorInterceptor(wrappedReducer) { + // Intercept any error actions and forward the rest to the wrapped reducer. + return (state, action) => { + switch(action.type) { + case SET_ERROR: + return { + ...state, + lastError: action.payload + }; + default: + return wrappedReducer(state, action); + } + } +} + +module.exports = { + SetErrorAction, + getLastError, + errorInterceptor +}; diff --git a/src/demo-react/gamestate/reducer.js b/src/demo-react/gamestate/reducer.js new file mode 100644 index 00000000..0a02bc43 --- /dev/null +++ b/src/demo-react/gamestate/reducer.js @@ -0,0 +1,38 @@ +const { useReducer } = require('react'); +const Actions = require('./action-types'); +const { errorInterceptor } = require('./errors'); +const { ScreenId } = require('./screens.js'); + +const initialState = { + currentScreen: ScreenId.MAIN_MENU, + gameTimer: 15, // seconds + desiredPlayers: 2, + roundsPerGame: 3, + currentPlayer: null, // No players initially. + players: {}, // No players known initially. + lastError: "", // The error set by the last action +}; + +function gameStateReducer(state, action) { + switch (action.type) { + case Actions.SWITCH_SCREEN: + return { + ...state, + currentScreen: action.payload + }; + default: + return { ...state }; + } +} + +const reducer = errorInterceptor(gameStateReducer); + +function useGameReducer() { + return useReducer(reducer, initialState); +} + +module.exports = { + useGameReducer, + reducer, + initialState +}; diff --git a/src/demo-react/gamestate/screens.js b/src/demo-react/gamestate/screens.js new file mode 100644 index 00000000..10ec0e5c --- /dev/null +++ b/src/demo-react/gamestate/screens.js @@ -0,0 +1,23 @@ +const { SWITCH_SCREEN } = require('./action-types'); + +const ScreenId = { + MAIN_MENU: 'mainmenu', + HELP: 'help' +}; + +class SwitchScreenAction { + constructor(screenId) { + this.type = SWITCH_SCREEN; + this.payload = screenId; + } +} + +function onHelpScreen(state) { + return state.currentScreen === ScreenId.HELP +} + +module.exports = { + SwitchScreenAction, + ScreenId, + onHelpScreen +}; diff --git a/src/demo-react/ui.js b/src/demo-react/ui.js index f1cb6587..ef9c3a77 100644 --- a/src/demo-react/ui.js +++ b/src/demo-react/ui.js @@ -3,38 +3,33 @@ const { useState } = require('react'); const { Text } = require('ink'); +const { useGameReducer } = require('./gamestate/reducer'); +const { SetErrorAction, getLastError } = require('./gamestate/errors'); +const { SwitchScreenAction, ScreenId, onHelpScreen } = require('./gamestate/screens'); + const importJsx = require('import-jsx'); const HowTo = importJsx('./screens/how-to'); const MainMenu = importJsx('./screens/main-menu'); const App = () => { - const [message, setMessage] = useState(); - const [screen, setScreen] = useState('mainmenu'); + const [state, dispatch] = useGameReducer(); const log = (msg) => { - setMessage(msg); + dispatch(new SetErrorAction(msg)); }; - const showHelp = () => { - setScreen('help'); - } - - if (screen === 'help') { + if (onHelpScreen(state)) { return ( - <> - - + dispatch(new SwitchScreenAction(ScreenId.MAIN_MENU)) } /> ); } return ( <> - - { message } + dispatch(new SwitchScreenAction(ScreenId.HELP)) } /> + { getLastError(state) } ); }; -App.propTypes = {}; - module.exports = App; From d4987a6e45faf05b3af32853cf5cfb42ed3aad93 Mon Sep 17 00:00:00 2001 From: Matt McKnett Date: Sun, 5 Jun 2022 17:09:12 -0700 Subject: [PATCH 04/75] Add a Go Back button to the help screen --- src/demo-react/components/menu.js | 2 -- src/demo-react/screens/how-to.js | 15 ++++++++++++++- src/demo-react/screens/main-menu.js | 14 ++++++++++++-- 3 files changed, 26 insertions(+), 5 deletions(-) diff --git a/src/demo-react/components/menu.js b/src/demo-react/components/menu.js index a3ab0acd..72901b7a 100644 --- a/src/demo-react/components/menu.js +++ b/src/demo-react/components/menu.js @@ -40,8 +40,6 @@ const Menu = ({ items, onItemSelected }) => { flexDirection='row' alignItems='center' justifyContent='center' - borderStyle='single' - paddingY='2' > { menu.map((menuEntry, idx) => diff --git a/src/demo-react/screens/how-to.js b/src/demo-react/screens/how-to.js index d6c33441..eaebbf0e 100644 --- a/src/demo-react/screens/how-to.js +++ b/src/demo-react/screens/how-to.js @@ -1,8 +1,15 @@ const React = require('react'); +const PropTypes = require('prop-types'); + +const importJsx = require('import-jsx'); +const { Menu, MenuEntry } = importJsx('../components/menu'); const { Text, Box, Newline } = require('ink'); -const HowTo = () => { +const HowTo = (props) => { + const { showMainMenu } = props; + const oneButtonMenu = [ MenuEntry('Go Back', 'goback') ]; + return ( { form words out of the available letters. Whoever has the highest scoring words across all rounds wins the game! + + ) }; +HowTo.propTypes = { + showMainMenu: PropTypes.func.isRequired +} + module.exports = HowTo; diff --git a/src/demo-react/screens/main-menu.js b/src/demo-react/screens/main-menu.js index 848e3b1e..ce575cf7 100644 --- a/src/demo-react/screens/main-menu.js +++ b/src/demo-react/screens/main-menu.js @@ -1,7 +1,7 @@ const React = require('react'); const PropTypes = require('prop-types'); -const { useApp } = require('ink'); +const { Box, useApp } = require('ink'); const importJsx = require('import-jsx'); const { Menu, MenuEntry } = importJsx('../components/menu'); @@ -24,7 +24,17 @@ const MainMenu = ({ log, onHelpSelected }) => { } } - return ; + return ( + + + + ); } MainMenu.propTypes = { From dfb4f7acc166140ef844179fd24109276a97632f Mon Sep 17 00:00:00 2001 From: Matt McKnett Date: Sun, 5 Jun 2022 20:19:56 -0700 Subject: [PATCH 05/75] Make 'How To' full screen and center the button --- src/demo-react/components/menu.js | 6 +++-- src/demo-react/screens/how-to.js | 38 ++++++++++++++----------------- 2 files changed, 21 insertions(+), 23 deletions(-) diff --git a/src/demo-react/components/menu.js b/src/demo-react/components/menu.js index 72901b7a..27eb6bc1 100644 --- a/src/demo-react/components/menu.js +++ b/src/demo-react/components/menu.js @@ -17,7 +17,7 @@ MenuEntry.propTypes = PropTypes.shape({ selecitonId: PropTypes.string }); -const Menu = ({ items, onItemSelected }) => { +const Menu = ({ items, onItemSelected, width }) => { const menu = items; const [selectedIdx, setSelectedIdx] = useState(0); @@ -40,6 +40,7 @@ const Menu = ({ items, onItemSelected }) => { flexDirection='row' alignItems='center' justifyContent='center' + width={ width } > { menu.map((menuEntry, idx) => @@ -57,7 +58,8 @@ const Menu = ({ items, onItemSelected }) => { Menu.propTypes = { onItemSelected: PropTypes.func.isRequired, - items: PropTypes.arrayOf(MenuEntry.propTypes).isRequired + items: PropTypes.arrayOf(MenuEntry.propTypes).isRequired, + width: PropTypes.string }; module.exports = { diff --git a/src/demo-react/screens/how-to.js b/src/demo-react/screens/how-to.js index eaebbf0e..9c057854 100644 --- a/src/demo-react/screens/how-to.js +++ b/src/demo-react/screens/how-to.js @@ -12,29 +12,25 @@ const HowTo = (props) => { return ( - - Select "Start New Game" to play. - - Choose the number of players, rounds, and seconds each person has available for guessing. - Then, enter the name of each player. - - - Each round, a new set of 10 letters will be chosen. Each player has limited time to - form words out of the available letters. - - Whoever has the highest scoring words across all rounds wins the game! - - - + Select "Start New Game" to play. + + Choose the number of players, rounds, and seconds each person has available for guessing. + Then, enter the name of each player. + + + Each round, a new set of 10 letters will be chosen. Each player has limited time to + form words out of the available letters. + + Whoever has the highest scoring words across all rounds wins the game! + + ) }; From d523607b49a4b3fbed01d7c529e7b1104fe9639a Mon Sep 17 00:00:00 2001 From: Matt McKnett Date: Sun, 5 Jun 2022 20:23:47 -0700 Subject: [PATCH 06/75] help -> how-to --- src/demo-react/gamestate/screens.js | 7 ++++--- src/demo-react/ui.js | 2 +- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/demo-react/gamestate/screens.js b/src/demo-react/gamestate/screens.js index 10ec0e5c..ce28583a 100644 --- a/src/demo-react/gamestate/screens.js +++ b/src/demo-react/gamestate/screens.js @@ -1,8 +1,9 @@ const { SWITCH_SCREEN } = require('./action-types'); const ScreenId = { - MAIN_MENU: 'mainmenu', - HELP: 'help' + MAIN_MENU: 'main-menu', + HOW_TO: 'how-to', + SETUP: 'game-setup' }; class SwitchScreenAction { @@ -13,7 +14,7 @@ class SwitchScreenAction { } function onHelpScreen(state) { - return state.currentScreen === ScreenId.HELP + return state.currentScreen === ScreenId.HOW_TO } module.exports = { diff --git a/src/demo-react/ui.js b/src/demo-react/ui.js index ef9c3a77..860f7e50 100644 --- a/src/demo-react/ui.js +++ b/src/demo-react/ui.js @@ -26,7 +26,7 @@ const App = () => { return ( <> - dispatch(new SwitchScreenAction(ScreenId.HELP)) } /> + dispatch(new SwitchScreenAction(ScreenId.HOW_TO)) } /> { getLastError(state) } ); From 1d8f10635813106bb6765645eb518670b9150030 Mon Sep 17 00:00:00 2001 From: Matt McKnett Date: Sun, 5 Jun 2022 23:04:50 -0700 Subject: [PATCH 07/75] Add the game setup screen The menu to accept configuration and move on is not yet present, but there is state for the three options and the ability to update them. --- src/demo-react/components/button.js | 1 + src/demo-react/gamestate/action-types.js | 5 +- src/demo-react/gamestate/generic-action.js | 5 + src/demo-react/gamestate/reducer.js | 12 ++- src/demo-react/gamestate/screens.js | 9 +- src/demo-react/screens/game-setup.js | 113 +++++++++++++++++++++ src/demo-react/screens/main-menu.js | 8 +- src/demo-react/ui.js | 32 ++++-- 8 files changed, 167 insertions(+), 18 deletions(-) create mode 100644 src/demo-react/gamestate/generic-action.js create mode 100644 src/demo-react/screens/game-setup.js diff --git a/src/demo-react/components/button.js b/src/demo-react/components/button.js index 36be38a8..66a3ea93 100644 --- a/src/demo-react/components/button.js +++ b/src/demo-react/components/button.js @@ -4,6 +4,7 @@ const PropTypes = require('prop-types'); const { Box, Text } = require('ink'); function Button(props) { + // TODO: Try using `inverse` for selected, instead. const bgColor = props.isSelected ? 'white' : ''; const color = props.isSelected ? 'black' : ''; return ( diff --git a/src/demo-react/gamestate/action-types.js b/src/demo-react/gamestate/action-types.js index 4ce62f2e..18444d09 100644 --- a/src/demo-react/gamestate/action-types.js +++ b/src/demo-react/gamestate/action-types.js @@ -1,7 +1,10 @@ module.exports = { GUESS: 'guess', ADD_PLAYER: 'add-player', - SET_GAME_TIMER: 'timer', + SET_GAME_TIMER: 'set-game-timer', + SET_DESIRED_PLAYERS: 'set-desired-players', + SET_NUMBER_ROUNDS: 'set-number-rounds', + SET_TURN_SECONDS: 'set-turn-seconds', SET_ERROR: 'set-error', CLEAR_ERROR: 'clear-error', SWITCH_SCREEN: 'switch-screen' diff --git a/src/demo-react/gamestate/generic-action.js b/src/demo-react/gamestate/generic-action.js new file mode 100644 index 00000000..3c321751 --- /dev/null +++ b/src/demo-react/gamestate/generic-action.js @@ -0,0 +1,5 @@ +function action(type, value) { + return { type, payload: value }; +} + +module.exports = action; \ No newline at end of file diff --git a/src/demo-react/gamestate/reducer.js b/src/demo-react/gamestate/reducer.js index 0a02bc43..33823770 100644 --- a/src/demo-react/gamestate/reducer.js +++ b/src/demo-react/gamestate/reducer.js @@ -6,6 +6,7 @@ const { ScreenId } = require('./screens.js'); const initialState = { currentScreen: ScreenId.MAIN_MENU, gameTimer: 15, // seconds + secondsPerTurn: 15, desiredPlayers: 2, roundsPerGame: 3, currentPlayer: null, // No players initially. @@ -16,10 +17,13 @@ const initialState = { function gameStateReducer(state, action) { switch (action.type) { case Actions.SWITCH_SCREEN: - return { - ...state, - currentScreen: action.payload - }; + return { ...state, currentScreen: action.payload }; + case Actions.SET_NUMBER_ROUNDS: + return { ...state, roundsPerGame: action.payload }; + case Actions.SET_DESIRED_PLAYERS: + return { ...state, desiredPlayers: action.payload }; + case Actions.SET_TURN_SECONDS: + return { ...state, secondsPerTurn: action.payload }; default: return { ...state }; } diff --git a/src/demo-react/gamestate/screens.js b/src/demo-react/gamestate/screens.js index ce28583a..707e59e7 100644 --- a/src/demo-react/gamestate/screens.js +++ b/src/demo-react/gamestate/screens.js @@ -14,11 +14,16 @@ class SwitchScreenAction { } function onHelpScreen(state) { - return state.currentScreen === ScreenId.HOW_TO + return state.currentScreen === ScreenId.HOW_TO; +} + +function onSetupScreen(state) { + return state.currentScreen === ScreenId.SETUP; } module.exports = { SwitchScreenAction, ScreenId, - onHelpScreen + onHelpScreen, + onSetupScreen }; diff --git a/src/demo-react/screens/game-setup.js b/src/demo-react/screens/game-setup.js new file mode 100644 index 00000000..2cd5a947 --- /dev/null +++ b/src/demo-react/screens/game-setup.js @@ -0,0 +1,113 @@ +const React = require('react'); +const { useState } = React; +const PropTypes = require('prop-types'); +const { Box, Text, useInput } = require('ink'); + +const action = require('../gamestate/generic-action'); +const { + SET_DESIRED_PLAYERS, + SET_NUMBER_ROUNDS, + SET_TURN_SECONDS +} = require('../gamestate/action-types'); + +const importJsx = require('import-jsx'); +const { Menu, MenuEntry } = importJsx('../components/menu'); + +function valueOfField(actionType, state) { + switch(actionType) { + case SET_DESIRED_PLAYERS: return state.desiredPlayers; + case SET_NUMBER_ROUNDS: return state.roundsPerGame; + case SET_TURN_SECONDS: return state.secondsPerTurn; + default: return null; + } +} + +function SetupGame({ state, dispatch }) { + const fields = [ SET_DESIRED_PLAYERS, SET_NUMBER_ROUNDS, SET_TURN_SECONDS, 'menu' ]; + const [selectedField, setSelectedField] = useState(SET_DESIRED_PLAYERS); + + useInput((input, key) => { + const idxSelected = fields.indexOf(selectedField); + if (key.return || (!key.shift && key.tab) || key.downArrow || key.rightArrow) { + setSelectedField(fields[idxSelected + 1]); + } else if ((key.shift && key.tab) || key.upArrow || key.leftArrow) { + setSelectedField(fields[Math.max(0, idxSelected - 1)]); + } + + + }, { isActive: selectedField !== 'menu' }); + + return ( + + + + Number of players (1-4) + + + Number of rounds (1-5) + + + Seconds per player per round (10-60) + + + + ) +} + +SetupGame.propTypes = { + state: PropTypes.object.isRequired, + dispatch: PropTypes.func.isRequired +} + +function NumberField({ actionType, state, dispatch, children, isActive }) { + const currentValue = String(valueOfField(actionType, state)); + const [tempInput, setTempInput] = useState(''); + + useInput((input, key) => { + // Allow a string that is all digits. + if (/^[1-9]+$/.test(input)) { + setTempInput(tempInput + input); + } + + if (key.return) { + dispatch(action(actionType, tempInput)); + setTempInput(''); + } + }, { isActive }); + + return ( + + + { tempInput || currentValue } + + { children } + + ) +} + +module.exports = SetupGame; diff --git a/src/demo-react/screens/main-menu.js b/src/demo-react/screens/main-menu.js index ce575cf7..ce6dfa07 100644 --- a/src/demo-react/screens/main-menu.js +++ b/src/demo-react/screens/main-menu.js @@ -6,7 +6,7 @@ const { Box, useApp } = require('ink'); const importJsx = require('import-jsx'); const { Menu, MenuEntry } = importJsx('../components/menu'); -const MainMenu = ({ log, onHelpSelected }) => { +const MainMenu = ({ log, onHelpSelected, onStartSelected }) => { const { exit } = useApp(); const mainMenu = [ MenuEntry('Start New Game', 'start'), @@ -22,6 +22,9 @@ const MainMenu = ({ log, onHelpSelected }) => { if (selectionId === 'help') { onHelpSelected(); } + if (selectionId === 'start') { + onStartSelected(); + } } return ( @@ -39,7 +42,8 @@ const MainMenu = ({ log, onHelpSelected }) => { MainMenu.propTypes = { log: PropTypes.func, - onHelpSelected: PropTypes.func.isRequired + onHelpSelected: PropTypes.func.isRequired, + onStartSelected: PropTypes.func.isRequired } module.exports = MainMenu; diff --git a/src/demo-react/ui.js b/src/demo-react/ui.js index 860f7e50..1271f898 100644 --- a/src/demo-react/ui.js +++ b/src/demo-react/ui.js @@ -1,32 +1,46 @@ const React = require('react'); -const { useState } = require('react'); const { Text } = require('ink'); const { useGameReducer } = require('./gamestate/reducer'); const { SetErrorAction, getLastError } = require('./gamestate/errors'); -const { SwitchScreenAction, ScreenId, onHelpScreen } = require('./gamestate/screens'); +const { + SwitchScreenAction, + ScreenId, + onHelpScreen, + onSetupScreen +} = require('./gamestate/screens'); const importJsx = require('import-jsx'); const HowTo = importJsx('./screens/how-to'); const MainMenu = importJsx('./screens/main-menu'); +const SetupGame = importJsx('./screens/game-setup'); const App = () => { const [state, dispatch] = useGameReducer(); - const log = (msg) => { - dispatch(new SetErrorAction(msg)); - }; - if (onHelpScreen(state)) { - return ( - dispatch(new SwitchScreenAction(ScreenId.MAIN_MENU)) } /> + const showMainMenu = () => dispatch( + new SwitchScreenAction(ScreenId.MAIN_MENU) ); + + return ; + } + + if (onSetupScreen(state)) { + return ; } + const showHowTo = () => dispatch(new SwitchScreenAction(ScreenId.HOW_TO)); + const showSetupGame = () => dispatch(new SwitchScreenAction(ScreenId.SETUP)); + const log = (msg) => dispatch(new SetErrorAction(msg)); return ( <> - dispatch(new SwitchScreenAction(ScreenId.HOW_TO)) } /> + { getLastError(state) } ); From 9b75b1a39a733cd2dcf88f340d6b9aa768474f64 Mon Sep 17 00:00:00 2001 From: Matt McKnett Date: Mon, 6 Jun 2022 20:39:04 -0700 Subject: [PATCH 08/75] Add input validation for the number of players --- src/demo-react/gamestate/errors.js | 7 ++++++- src/demo-react/gamestate/options.js | 27 +++++++++++++++++++++++++++ src/demo-react/gamestate/reducer.js | 3 ++- src/demo-react/screens/game-setup.js | 15 +++++++++++---- 4 files changed, 46 insertions(+), 6 deletions(-) create mode 100644 src/demo-react/gamestate/options.js diff --git a/src/demo-react/gamestate/errors.js b/src/demo-react/gamestate/errors.js index 3c144c91..b30a1763 100644 --- a/src/demo-react/gamestate/errors.js +++ b/src/demo-react/gamestate/errors.js @@ -21,7 +21,12 @@ function errorInterceptor(wrappedReducer) { lastError: action.payload }; default: - return wrappedReducer(state, action); + // If no error, any new action clears the last error state. + const errorRemovedState = { + ...state, + lastError: '' + }; + return wrappedReducer(errorRemovedState, action); } } } diff --git a/src/demo-react/gamestate/options.js b/src/demo-react/gamestate/options.js new file mode 100644 index 00000000..f4018399 --- /dev/null +++ b/src/demo-react/gamestate/options.js @@ -0,0 +1,27 @@ +const basicAction = require('./generic-action'); +const Actions = require('./action-types'); +const { SetErrorAction } = require('./errors'); + +function validateOptionsInput(wrappedReducer) { + return (state, action) => { + // If any of the payload input is invalid, throw the current action + // away and instead send an error action. + switch (action.type) { + case Actions.SET_DESIRED_PLAYERS: { + const numPlayers = action.payload; + if (numPlayers < 1 || numPlayers > 4) { + const numPlayersError = new SetErrorAction( + `${numPlayers} is not a valid number of players.` + ); + return wrappedReducer(state, numPlayersError); + } + } + } + + return wrappedReducer(state, action); + }; +} + +module.exports = { + validateOptionsInput +}; diff --git a/src/demo-react/gamestate/reducer.js b/src/demo-react/gamestate/reducer.js index 33823770..02ae7082 100644 --- a/src/demo-react/gamestate/reducer.js +++ b/src/demo-react/gamestate/reducer.js @@ -1,6 +1,7 @@ const { useReducer } = require('react'); const Actions = require('./action-types'); const { errorInterceptor } = require('./errors'); +const { validateOptionsInput } = require('./options'); const { ScreenId } = require('./screens.js'); const initialState = { @@ -29,7 +30,7 @@ function gameStateReducer(state, action) { } } -const reducer = errorInterceptor(gameStateReducer); +const reducer = validateOptionsInput(errorInterceptor(gameStateReducer)); function useGameReducer() { return useReducer(reducer, initialState); diff --git a/src/demo-react/screens/game-setup.js b/src/demo-react/screens/game-setup.js index 2cd5a947..98f56337 100644 --- a/src/demo-react/screens/game-setup.js +++ b/src/demo-react/screens/game-setup.js @@ -37,7 +37,10 @@ function SetupGame({ state, dispatch }) { }, { isActive: selectedField !== 'menu' }); + const { lastError } = state; + return ( + <> + { lastError } + ) } @@ -89,20 +94,22 @@ function NumberField({ actionType, state, dispatch, children, isActive }) { const [tempInput, setTempInput] = useState(''); useInput((input, key) => { - // Allow a string that is all digits. - if (/^[1-9]+$/.test(input)) { + // Allow input that is all digits. + if (/^[0-9]+$/.test(input)) { setTempInput(tempInput + input); } if (key.return) { - dispatch(action(actionType, tempInput)); + if (tempInput !== '') { + dispatch(action(actionType, Number(tempInput))); + } setTempInput(''); } }, { isActive }); return ( - + { tempInput || currentValue } { children } From 9e255c0ca3315c851e08fc7ec77eec6c977db38d Mon Sep 17 00:00:00 2001 From: Matt McKnett Date: Mon, 6 Jun 2022 20:44:11 -0700 Subject: [PATCH 09/75] Validate number of rounds and seconds per turn --- src/demo-react/gamestate/options.js | 24 +++++++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/src/demo-react/gamestate/options.js b/src/demo-react/gamestate/options.js index f4018399..d28970f7 100644 --- a/src/demo-react/gamestate/options.js +++ b/src/demo-react/gamestate/options.js @@ -10,11 +10,29 @@ function validateOptionsInput(wrappedReducer) { case Actions.SET_DESIRED_PLAYERS: { const numPlayers = action.payload; if (numPlayers < 1 || numPlayers > 4) { - const numPlayersError = new SetErrorAction( + return wrappedReducer(state, new SetErrorAction( `${numPlayers} is not a valid number of players.` - ); - return wrappedReducer(state, numPlayersError); + )); } + break; + } + case Actions.SET_NUMBER_ROUNDS: { + const numRounds = action.payload; + if (numRounds < 1 || numRounds > 5) { + return wrappedReducer(state, new SetErrorAction( + `${numRounds} is not a valid number of rounds.` + )); + } + break; + } + case Actions.SET_TURN_SECONDS: { + const seconds = action.payload; + if (seconds < 10 || seconds > 60) { + return wrappedReducer(state, new SetErrorAction( + `${seconds} is not a valid number of seconds for each player's turn.` + )); + } + break; } } From 3dacd083779794f2dea94605258f5d9802c75922 Mon Sep 17 00:00:00 2001 From: Matt McKnett Date: Mon, 6 Jun 2022 21:22:20 -0700 Subject: [PATCH 10/75] Add a menu to the Game Setup screen --- src/demo-react/components/menu.js | 22 ++++++++++++++++------ src/demo-react/gamestate/screens.js | 5 +++-- src/demo-react/screens/game-setup.js | 28 +++++++++++++++++++++++++++- src/demo-react/ui.js | 4 ++++ 4 files changed, 50 insertions(+), 9 deletions(-) diff --git a/src/demo-react/components/menu.js b/src/demo-react/components/menu.js index 27eb6bc1..9cd618ea 100644 --- a/src/demo-react/components/menu.js +++ b/src/demo-react/components/menu.js @@ -17,14 +17,17 @@ MenuEntry.propTypes = PropTypes.shape({ selecitonId: PropTypes.string }); -const Menu = ({ items, onItemSelected, width }) => { +const Menu = ({ isActive, items, onFocusPrevious, onItemSelected, width }) => { const menu = items; const [selectedIdx, setSelectedIdx] = useState(0); const inputHandler = (input, key) => { - if (key.upArrow || key.leftArrow) { + if (key.upArrow || key.leftArrow || (key.shift && key.tab)) { setSelectedIdx(Math.max(0, selectedIdx - 1)); - } else if (key.downArrow || key.rightArrow) { + if (selectedIdx - 1 < 0) { + onFocusPrevious(); + } + } else if (key.downArrow || key.rightArrow || (key.tab)) { setSelectedIdx(Math.min(menu.length - 1, selectedIdx + 1)); } else if (key.return) { const selectedItemId = menu[selectedIdx].selectionId; @@ -32,7 +35,7 @@ const Menu = ({ items, onItemSelected, width }) => { } }; - useInput(inputHandler); + useInput(inputHandler, { isActive }); return ( @@ -46,7 +49,7 @@ const Menu = ({ items, onItemSelected, width }) => { menu.map((menuEntry, idx) => @@ -57,11 +60,18 @@ const Menu = ({ items, onItemSelected, width }) => { } Menu.propTypes = { - onItemSelected: PropTypes.func.isRequired, + isActive: PropTypes.bool, items: PropTypes.arrayOf(MenuEntry.propTypes).isRequired, + onItemSelected: PropTypes.func.isRequired, + onFocusPrevious: PropTypes.func, width: PropTypes.string }; +Menu.defaultProps = { + isActive: true, + onFocusPrevious: () => {} +} + module.exports = { Menu, MenuEntry diff --git a/src/demo-react/gamestate/screens.js b/src/demo-react/gamestate/screens.js index 707e59e7..44fce882 100644 --- a/src/demo-react/gamestate/screens.js +++ b/src/demo-react/gamestate/screens.js @@ -1,9 +1,10 @@ const { SWITCH_SCREEN } = require('./action-types'); const ScreenId = { - MAIN_MENU: 'main-menu', + ENTER_PLAYERS: 'enter-players', HOW_TO: 'how-to', - SETUP: 'game-setup' + MAIN_MENU: 'main-menu', + SETUP: 'game-setup', }; class SwitchScreenAction { diff --git a/src/demo-react/screens/game-setup.js b/src/demo-react/screens/game-setup.js index 98f56337..feb2c1a2 100644 --- a/src/demo-react/screens/game-setup.js +++ b/src/demo-react/screens/game-setup.js @@ -9,6 +9,7 @@ const { SET_NUMBER_ROUNDS, SET_TURN_SECONDS } = require('../gamestate/action-types'); +const { ScreenId, SwitchScreenAction } = require('../gamestate/screens'); const importJsx = require('import-jsx'); const { Menu, MenuEntry } = importJsx('../components/menu'); @@ -33,9 +34,28 @@ function SetupGame({ state, dispatch }) { } else if ((key.shift && key.tab) || key.upArrow || key.leftArrow) { setSelectedField(fields[Math.max(0, idxSelected - 1)]); } + }, { isActive: selectedField !== 'menu' }); + const selectFieldBeforeMenu = () => { + const idxMenu = fields.indexOf('menu'); + setSelectedField(fields[idxMenu - 1]); + } - }, { isActive: selectedField !== 'menu' }); + // TODO: MenuEntry could use a callback instead of this selection ID concept. + const menu = [ + MenuEntry('Enter Names', 'names'), + MenuEntry('Go Back', 'go-back') + ] + const handleSelection = (selectionId) => { + switch(selectionId) { + case 'names': + dispatch(new SwitchScreenAction(ScreenId.ENTER_PLAYERS)); + break; + case 'go-back': + dispatch(new SwitchScreenAction(ScreenId.MAIN_MENU)); + break; + } + } const { lastError } = state; @@ -77,6 +97,12 @@ function SetupGame({ state, dispatch }) { > Seconds per player per round (10-60) + { lastError } diff --git a/src/demo-react/ui.js b/src/demo-react/ui.js index 1271f898..b1871581 100644 --- a/src/demo-react/ui.js +++ b/src/demo-react/ui.js @@ -31,6 +31,10 @@ const App = () => { return ; } + if (state.currentScreen === ScreenId.ENTER_PLAYERS) { + return TODO: allow player entry + } + const showHowTo = () => dispatch(new SwitchScreenAction(ScreenId.HOW_TO)); const showSetupGame = () => dispatch(new SwitchScreenAction(ScreenId.SETUP)); const log = (msg) => dispatch(new SetErrorAction(msg)); From 367cba59ef87a090a00b05ea96a8129cd41741ab Mon Sep 17 00:00:00 2001 From: Matt McKnett Date: Mon, 6 Jun 2022 21:40:22 -0700 Subject: [PATCH 11/75] Add TODO for context API --- src/demo-react/ui.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/demo-react/ui.js b/src/demo-react/ui.js index b1871581..77a3558f 100644 --- a/src/demo-react/ui.js +++ b/src/demo-react/ui.js @@ -17,6 +17,9 @@ const MainMenu = importJsx('./screens/main-menu'); const SetupGame = importJsx('./screens/game-setup'); const App = () => { + // TODO: Instead of sending state & dispatch to all the screens, switch to + // the context API. + // See: https://hswolff.com/blog/how-to-usecontext-with-usereducer/#performance-concerns const [state, dispatch] = useGameReducer(); if (onHelpScreen(state)) { From df3bc4607172164b4a8915c64ce38780af650606 Mon Sep 17 00:00:00 2001 From: Matt McKnett Date: Tue, 7 Jun 2022 00:15:41 -0700 Subject: [PATCH 12/75] Create the player entry screen --- src/demo-react/gamestate/reducer.js | 8 +++- src/demo-react/gamestate/screens.js | 2 + src/demo-react/screens/enter-players.js | 52 +++++++++++++++++++++++++ src/demo-react/ui.js | 14 ++++++- 4 files changed, 73 insertions(+), 3 deletions(-) create mode 100644 src/demo-react/screens/enter-players.js diff --git a/src/demo-react/gamestate/reducer.js b/src/demo-react/gamestate/reducer.js index 02ae7082..cc58e145 100644 --- a/src/demo-react/gamestate/reducer.js +++ b/src/demo-react/gamestate/reducer.js @@ -11,7 +11,7 @@ const initialState = { desiredPlayers: 2, roundsPerGame: 3, currentPlayer: null, // No players initially. - players: {}, // No players known initially. + players: [], // No players known initially. lastError: "", // The error set by the last action }; @@ -25,6 +25,12 @@ function gameStateReducer(state, action) { return { ...state, desiredPlayers: action.payload }; case Actions.SET_TURN_SECONDS: return { ...state, secondsPerTurn: action.payload }; + case Actions.ADD_PLAYER: + const newPlayer = { + name: action.payload, + words: [[]] // a list of word for each round, starting with an empty round 1 list + }; + return { ...state, players: [ ...state.players, newPlayer ] } default: return { ...state }; } diff --git a/src/demo-react/gamestate/screens.js b/src/demo-react/gamestate/screens.js index 44fce882..5670df49 100644 --- a/src/demo-react/gamestate/screens.js +++ b/src/demo-react/gamestate/screens.js @@ -5,6 +5,8 @@ const ScreenId = { HOW_TO: 'how-to', MAIN_MENU: 'main-menu', SETUP: 'game-setup', + GAME: 'game', + WIN: 'win' }; class SwitchScreenAction { diff --git a/src/demo-react/screens/enter-players.js b/src/demo-react/screens/enter-players.js new file mode 100644 index 00000000..deb9ff5e --- /dev/null +++ b/src/demo-react/screens/enter-players.js @@ -0,0 +1,52 @@ +const React = require('react'); +const { useState, useCallback } = React; +const PropTypes = require('prop-types'); + +const { Box, Text } = require('ink'); +const TextInput = require('ink-text-input').default; + +const { ScreenId, SwitchScreenAction } = require('../gamestate/screens'); +const basicAction = require("../gamestate/generic-action"); +const Actions = require('../gamestate/action-types'); + +function EnterPlayers({ state, dispatch }) { + const [inputText, setInputText] = useState(''); + + const nextPlayerIdx = state.players.length + 1; + + const handleChange = useCallback((text) => { + setInputText(text); + }, [setInputText]); + + const handleSubmit = useCallback((text) => { + dispatch(basicAction(Actions.ADD_PLAYER, text)); + setInputText(''); + + if (nextPlayerIdx === state.desiredPlayers) { + dispatch(new SwitchScreenAction(ScreenId.GAME)); + } + }, [dispatch, nextPlayerIdx, state.desiredPlayers, setInputText]); + + return ( + + + Enter name for Player { nextPlayerIdx }: + + > + + + + + ); +} + +module.exports = EnterPlayers; \ No newline at end of file diff --git a/src/demo-react/ui.js b/src/demo-react/ui.js index 77a3558f..c1e4afda 100644 --- a/src/demo-react/ui.js +++ b/src/demo-react/ui.js @@ -1,6 +1,6 @@ const React = require('react'); -const { Text } = require('ink'); +const { Box, Text } = require('ink'); const { useGameReducer } = require('./gamestate/reducer'); const { SetErrorAction, getLastError } = require('./gamestate/errors'); @@ -15,6 +15,7 @@ const importJsx = require('import-jsx'); const HowTo = importJsx('./screens/how-to'); const MainMenu = importJsx('./screens/main-menu'); const SetupGame = importJsx('./screens/game-setup'); +const EnterPlayers = importJsx('./screens/enter-players'); const App = () => { // TODO: Instead of sending state & dispatch to all the screens, switch to @@ -35,7 +36,16 @@ const App = () => { } if (state.currentScreen === ScreenId.ENTER_PLAYERS) { - return TODO: allow player entry + return + } + + if (state.currentScreen === ScreenId.GAME) { + return ( + + TODO: Add game screen! + { state.players.map((player, idx) => {idx+1}: {player.name})} + + ); } const showHowTo = () => dispatch(new SwitchScreenAction(ScreenId.HOW_TO)); From 3550d8c161ce35e7ef16f0078c700cda41b31d66 Mon Sep 17 00:00:00 2001 From: Matt McKnett Date: Tue, 7 Jun 2022 00:20:58 -0700 Subject: [PATCH 13/75] fix: Player entry flash Player entry was briefly flashing 1 + the number of players after entering the last player's name. --- src/demo-react/screens/enter-players.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/demo-react/screens/enter-players.js b/src/demo-react/screens/enter-players.js index deb9ff5e..651713e9 100644 --- a/src/demo-react/screens/enter-players.js +++ b/src/demo-react/screens/enter-players.js @@ -19,12 +19,12 @@ function EnterPlayers({ state, dispatch }) { }, [setInputText]); const handleSubmit = useCallback((text) => { - dispatch(basicAction(Actions.ADD_PLAYER, text)); - setInputText(''); - if (nextPlayerIdx === state.desiredPlayers) { dispatch(new SwitchScreenAction(ScreenId.GAME)); } + + setInputText(''); + dispatch(basicAction(Actions.ADD_PLAYER, text)); }, [dispatch, nextPlayerIdx, state.desiredPlayers, setInputText]); return ( From 02405b00b447263dd260101d3db9b1699517c21e Mon Sep 17 00:00:00 2001 From: Matt McKnett Date: Tue, 7 Jun 2022 00:22:48 -0700 Subject: [PATCH 14/75] Add reset & rematch action types --- src/demo-react/gamestate/action-types.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/demo-react/gamestate/action-types.js b/src/demo-react/gamestate/action-types.js index 18444d09..fd57e5e6 100644 --- a/src/demo-react/gamestate/action-types.js +++ b/src/demo-react/gamestate/action-types.js @@ -7,5 +7,7 @@ module.exports = { SET_TURN_SECONDS: 'set-turn-seconds', SET_ERROR: 'set-error', CLEAR_ERROR: 'clear-error', - SWITCH_SCREEN: 'switch-screen' + SWITCH_SCREEN: 'switch-screen', + RESET: 'reset', + REMATCH: 'rematch' }; From 1f2b503a1431f22606a1ef036b9ede87ebaedba3 Mon Sep 17 00:00:00 2001 From: Matt McKnett Date: Tue, 7 Jun 2022 00:43:22 -0700 Subject: [PATCH 15/75] fix: memory leak warning Ink complains the app has a memory leak if you change state after dispatching an action that unmounts the component. --- src/demo-react/screens/enter-players.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/demo-react/screens/enter-players.js b/src/demo-react/screens/enter-players.js index 651713e9..6fed0b4e 100644 --- a/src/demo-react/screens/enter-players.js +++ b/src/demo-react/screens/enter-players.js @@ -19,11 +19,12 @@ function EnterPlayers({ state, dispatch }) { }, [setInputText]); const handleSubmit = useCallback((text) => { + setInputText(''); + if (nextPlayerIdx === state.desiredPlayers) { dispatch(new SwitchScreenAction(ScreenId.GAME)); } - setInputText(''); dispatch(basicAction(Actions.ADD_PLAYER, text)); }, [dispatch, nextPlayerIdx, state.desiredPlayers, setInputText]); From 22a4c6f3e89c2404b078fff92b761b8c3592e5ec Mon Sep 17 00:00:00 2001 From: Matt McKnett Date: Tue, 7 Jun 2022 00:43:51 -0700 Subject: [PATCH 16/75] Interceptor -> Middleware This is a more common name for this type of function. --- src/demo-react/gamestate/errors.js | 4 ++-- src/demo-react/gamestate/reducer.js | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/demo-react/gamestate/errors.js b/src/demo-react/gamestate/errors.js index b30a1763..70af67cb 100644 --- a/src/demo-react/gamestate/errors.js +++ b/src/demo-react/gamestate/errors.js @@ -11,7 +11,7 @@ function getLastError(state) { return state.lastError } -function errorInterceptor(wrappedReducer) { +function errorMiddleware(wrappedReducer) { // Intercept any error actions and forward the rest to the wrapped reducer. return (state, action) => { switch(action.type) { @@ -34,5 +34,5 @@ function errorInterceptor(wrappedReducer) { module.exports = { SetErrorAction, getLastError, - errorInterceptor + errorMiddleware }; diff --git a/src/demo-react/gamestate/reducer.js b/src/demo-react/gamestate/reducer.js index cc58e145..41e7179d 100644 --- a/src/demo-react/gamestate/reducer.js +++ b/src/demo-react/gamestate/reducer.js @@ -1,6 +1,6 @@ const { useReducer } = require('react'); const Actions = require('./action-types'); -const { errorInterceptor } = require('./errors'); +const { errorMiddleware } = require('./errors'); const { validateOptionsInput } = require('./options'); const { ScreenId } = require('./screens.js'); @@ -36,7 +36,7 @@ function gameStateReducer(state, action) { } } -const reducer = validateOptionsInput(errorInterceptor(gameStateReducer)); +const reducer = validateOptionsInput(errorMiddleware(gameStateReducer)); function useGameReducer() { return useReducer(reducer, initialState); From 4c0863001a1f8f2aeefa4aac4102815b8963b152 Mon Sep 17 00:00:00 2001 From: Matt McKnett Date: Tue, 7 Jun 2022 00:59:56 -0700 Subject: [PATCH 17/75] Extract the NumberField component --- src/demo-react/components/number-field.js | 44 ++++++++++++++++++++++ src/demo-react/screens/game-setup.js | 45 ++--------------------- 2 files changed, 48 insertions(+), 41 deletions(-) create mode 100644 src/demo-react/components/number-field.js diff --git a/src/demo-react/components/number-field.js b/src/demo-react/components/number-field.js new file mode 100644 index 00000000..2e9e0a82 --- /dev/null +++ b/src/demo-react/components/number-field.js @@ -0,0 +1,44 @@ +const React = require('react'); +const { useState } = React; +const PropTypes = require('prop-types'); + +const { Box, Text, useInput } = require('ink'); + +const action = require('../gamestate/generic-action'); + +function NumberField({ actionType, dispatch, children, currentValue, isActive }) { + const [tempInput, setTempInput] = useState(''); + + useInput((input, key) => { + // Allow input that is all digits. + if (/^[0-9]+$/.test(input)) { + setTempInput(tempInput + input); + } + + if (key.return) { + if (tempInput !== '') { + dispatch(action(actionType, Number(tempInput))); + } + setTempInput(''); + } + }, { isActive }); + + return ( + + + { tempInput || currentValue } + + { children } + + ) +} + +NumberField.propTypes = { + actionType: PropTypes.string, + children: PropTypes.node, + dispatch: PropTypes.func, + isActive: PropTypes.bool, + currentValue: PropTypes.number +}; + +module.exports = NumberField; diff --git a/src/demo-react/screens/game-setup.js b/src/demo-react/screens/game-setup.js index feb2c1a2..e0f2887f 100644 --- a/src/demo-react/screens/game-setup.js +++ b/src/demo-react/screens/game-setup.js @@ -3,7 +3,6 @@ const { useState } = React; const PropTypes = require('prop-types'); const { Box, Text, useInput } = require('ink'); -const action = require('../gamestate/generic-action'); const { SET_DESIRED_PLAYERS, SET_NUMBER_ROUNDS, @@ -13,15 +12,7 @@ const { ScreenId, SwitchScreenAction } = require('../gamestate/screens'); const importJsx = require('import-jsx'); const { Menu, MenuEntry } = importJsx('../components/menu'); - -function valueOfField(actionType, state) { - switch(actionType) { - case SET_DESIRED_PLAYERS: return state.desiredPlayers; - case SET_NUMBER_ROUNDS: return state.roundsPerGame; - case SET_TURN_SECONDS: return state.secondsPerTurn; - default: return null; - } -} +const NumberField = importJsx('../components/number-field'); function SetupGame({ state, dispatch }) { const fields = [ SET_DESIRED_PLAYERS, SET_NUMBER_ROUNDS, SET_TURN_SECONDS, 'menu' ]; @@ -75,25 +66,25 @@ function SetupGame({ state, dispatch }) { > Number of players (1-4) Number of rounds (1-5) Seconds per player per round (10-60) @@ -115,32 +106,4 @@ SetupGame.propTypes = { dispatch: PropTypes.func.isRequired } -function NumberField({ actionType, state, dispatch, children, isActive }) { - const currentValue = String(valueOfField(actionType, state)); - const [tempInput, setTempInput] = useState(''); - - useInput((input, key) => { - // Allow input that is all digits. - if (/^[0-9]+$/.test(input)) { - setTempInput(tempInput + input); - } - - if (key.return) { - if (tempInput !== '') { - dispatch(action(actionType, Number(tempInput))); - } - setTempInput(''); - } - }, { isActive }); - - return ( - - - { tempInput || currentValue } - - { children } - - ) -} - module.exports = SetupGame; From 9ceeff021effbb77c64b1b3cc4151eaa574cbfef Mon Sep 17 00:00:00 2001 From: Matt McKnett Date: Tue, 7 Jun 2022 01:06:11 -0700 Subject: [PATCH 18/75] Use inverse for button selected --- src/demo-react/components/button.js | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/src/demo-react/components/button.js b/src/demo-react/components/button.js index 66a3ea93..91d1b903 100644 --- a/src/demo-react/components/button.js +++ b/src/demo-react/components/button.js @@ -3,13 +3,10 @@ const PropTypes = require('prop-types'); const { Box, Text } = require('ink'); -function Button(props) { - // TODO: Try using `inverse` for selected, instead. - const bgColor = props.isSelected ? 'white' : ''; - const color = props.isSelected ? 'black' : ''; +function Button({ children, isSelected }) { return ( - { props.children } + { children } ); } From 440bb89e6ab990b102bf7a9021fc4295ac6b1edb Mon Sep 17 00:00:00 2001 From: Matt McKnett Date: Tue, 7 Jun 2022 01:11:03 -0700 Subject: [PATCH 19/75] Buttons can have color --- src/demo-react/components/button.js | 7 ++++--- src/demo-react/components/menu.js | 7 +++++-- src/demo-react/screens/main-menu.js | 2 +- 3 files changed, 10 insertions(+), 6 deletions(-) diff --git a/src/demo-react/components/button.js b/src/demo-react/components/button.js index 91d1b903..f2dca236 100644 --- a/src/demo-react/components/button.js +++ b/src/demo-react/components/button.js @@ -3,16 +3,17 @@ const PropTypes = require('prop-types'); const { Box, Text } = require('ink'); -function Button({ children, isSelected }) { +function Button({ children, color, isSelected }) { return ( - - { children } + + { children } ); } Button.propTypes = { children: PropTypes.node, + color: PropTypes.string, isSelected: PropTypes.bool.isRequired }; diff --git a/src/demo-react/components/menu.js b/src/demo-react/components/menu.js index 9cd618ea..0bb6c46e 100644 --- a/src/demo-react/components/menu.js +++ b/src/demo-react/components/menu.js @@ -7,14 +7,16 @@ const { Box, useInput } = require('ink'); const importJsx = require('import-jsx'); const Button = importJsx('./button'); -const MenuEntry = (title, selectionId) => ({ +const MenuEntry = (title, selectionId, color) => ({ + color, title, selectionId }); MenuEntry.propTypes = PropTypes.shape({ title: PropTypes.string, - selecitonId: PropTypes.string + selecitonId: PropTypes.string, + color: PropTypes.string }); const Menu = ({ isActive, items, onFocusPrevious, onItemSelected, width }) => { @@ -50,6 +52,7 @@ const Menu = ({ isActive, items, onFocusPrevious, onItemSelected, width }) => { diff --git a/src/demo-react/screens/main-menu.js b/src/demo-react/screens/main-menu.js index ce6dfa07..713c5dd3 100644 --- a/src/demo-react/screens/main-menu.js +++ b/src/demo-react/screens/main-menu.js @@ -11,7 +11,7 @@ const MainMenu = ({ log, onHelpSelected, onStartSelected }) => { const mainMenu = [ MenuEntry('Start New Game', 'start'), MenuEntry('How to Play', 'help'), - MenuEntry('Quit', 'quit') + MenuEntry('Quit', 'quit', 'red') ]; const handleSelection = (selectionId) => { From 0f3862ae048dbd624bf35b379b0f8b2b989b6891 Mon Sep 17 00:00:00 2001 From: Matt McKnett Date: Tue, 7 Jun 2022 01:12:52 -0700 Subject: [PATCH 20/75] refactor: if chain -> switch --- src/demo-react/screens/main-menu.js | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/src/demo-react/screens/main-menu.js b/src/demo-react/screens/main-menu.js index 713c5dd3..0c31f017 100644 --- a/src/demo-react/screens/main-menu.js +++ b/src/demo-react/screens/main-menu.js @@ -16,14 +16,10 @@ const MainMenu = ({ log, onHelpSelected, onStartSelected }) => { const handleSelection = (selectionId) => { log(`MainMenu: Received '${selectionId}'.`); - if (selectionId === 'quit') { - exit(); - } - if (selectionId === 'help') { - onHelpSelected(); - } - if (selectionId === 'start') { - onStartSelected(); + switch(selectionId) { + case 'quit': exit(); break; + case 'help': onHelpSelected(); break; + case 'start': onStartSelected(); break; } } From 54e673102e8a93178db44051b7b928e314513841 Mon Sep 17 00:00:00 2001 From: Matt McKnett Date: Tue, 7 Jun 2022 14:04:05 -0700 Subject: [PATCH 21/75] Create a screen for the main Game --- src/demo-react/screens/game.js | 22 ++++++++++++++++++++++ src/demo-react/ui.js | 6 ++---- 2 files changed, 24 insertions(+), 4 deletions(-) create mode 100644 src/demo-react/screens/game.js diff --git a/src/demo-react/screens/game.js b/src/demo-react/screens/game.js new file mode 100644 index 00000000..98867e89 --- /dev/null +++ b/src/demo-react/screens/game.js @@ -0,0 +1,22 @@ +const React = require('react'); +const PropTypes = require('prop-types'); + +const { Box, Text } = require('ink'); + +const importJsx = require('import-jsx'); + +function Game({ state, dispatch }) { + return ( + + TODO: Add game screen! + { state.players.map((player, idx) => {idx+1}: {player.name})} + + ) +} + +Game.propTypes = { + state: PropTypes.object.isRequired, + dispatch: PropTypes.func.isRequired +}; + +module.exports = Game; diff --git a/src/demo-react/ui.js b/src/demo-react/ui.js index c1e4afda..7ef7d4cd 100644 --- a/src/demo-react/ui.js +++ b/src/demo-react/ui.js @@ -16,6 +16,7 @@ const HowTo = importJsx('./screens/how-to'); const MainMenu = importJsx('./screens/main-menu'); const SetupGame = importJsx('./screens/game-setup'); const EnterPlayers = importJsx('./screens/enter-players'); +const Game = importJsx('./screens/game'); const App = () => { // TODO: Instead of sending state & dispatch to all the screens, switch to @@ -41,10 +42,7 @@ const App = () => { if (state.currentScreen === ScreenId.GAME) { return ( - - TODO: Add game screen! - { state.players.map((player, idx) => {idx+1}: {player.name})} - + ); } From 375db307596fc5d92432eeb428b371fdf2e54ede Mon Sep 17 00:00:00 2001 From: Matt McKnett Date: Tue, 7 Jun 2022 14:04:14 -0700 Subject: [PATCH 22/75] EnterPlayers was missing propTypes --- src/demo-react/screens/enter-players.js | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/demo-react/screens/enter-players.js b/src/demo-react/screens/enter-players.js index 6fed0b4e..72c3fd4d 100644 --- a/src/demo-react/screens/enter-players.js +++ b/src/demo-react/screens/enter-players.js @@ -50,4 +50,9 @@ function EnterPlayers({ state, dispatch }) { ); } +EnterPlayers.propTypes = { + state: PropTypes.object.isRequired, + dispatch: PropTypes.func.isRequired +}; + module.exports = EnterPlayers; \ No newline at end of file From 1c4fbf29dfede84eee6db270a4f98a132754e39a Mon Sep 17 00:00:00 2001 From: Matt McKnett Date: Tue, 7 Jun 2022 15:17:43 -0700 Subject: [PATCH 23/75] Create context for game state and share error view --- src/demo-react/components/error-viewer.js | 12 ++++ .../components/gamestate-context.js | 29 +++++++++ src/demo-react/screens/enter-players.js | 22 +++---- src/demo-react/screens/game-setup.js | 15 ++--- src/demo-react/screens/game.js | 11 ++-- src/demo-react/ui.js | 65 ++++++++++--------- 6 files changed, 93 insertions(+), 61 deletions(-) create mode 100644 src/demo-react/components/error-viewer.js create mode 100644 src/demo-react/components/gamestate-context.js diff --git a/src/demo-react/components/error-viewer.js b/src/demo-react/components/error-viewer.js new file mode 100644 index 00000000..518513fa --- /dev/null +++ b/src/demo-react/components/error-viewer.js @@ -0,0 +1,12 @@ +const React = require('react'); + +const { Text } = require('ink'); + +const { useGameStateContext } = require('./gamestate-context'); + +function ErrorViewer() { + const { state } = useGameStateContext(); + return { state.lastError } +} + +module.exports = ErrorViewer; diff --git a/src/demo-react/components/gamestate-context.js b/src/demo-react/components/gamestate-context.js new file mode 100644 index 00000000..903be4dd --- /dev/null +++ b/src/demo-react/components/gamestate-context.js @@ -0,0 +1,29 @@ +const React = require('react'); +const { useContext, useMemo } = React; + +const { useGameReducer } = require('../gamestate/reducer'); + +const GameStateContext = React.createContext(); + +function useGameStateContext() { + return useContext(GameStateContext); +} + +function GameStateStore({ children }) { + const [state, dispatch] = useGameReducer(); + const contextValue = useMemo(() => { + return { state, dispatch }; + }, [state, dispatch]); + + return ( + + { children } + + ); +} + +module.exports = { + GameStateStore, + GameStateContext, + useGameStateContext +}; diff --git a/src/demo-react/screens/enter-players.js b/src/demo-react/screens/enter-players.js index 72c3fd4d..cfe6a4b0 100644 --- a/src/demo-react/screens/enter-players.js +++ b/src/demo-react/screens/enter-players.js @@ -1,6 +1,5 @@ const React = require('react'); -const { useState, useCallback } = React; -const PropTypes = require('prop-types'); +const { useState, useCallback, useEffect } = React; const { Box, Text } = require('ink'); const TextInput = require('ink-text-input').default; @@ -8,12 +7,20 @@ const TextInput = require('ink-text-input').default; const { ScreenId, SwitchScreenAction } = require('../gamestate/screens'); const basicAction = require("../gamestate/generic-action"); const Actions = require('../gamestate/action-types'); +const { useGameStateContext } = require('../components/gamestate-context'); -function EnterPlayers({ state, dispatch }) { +function EnterPlayers() { + const { state, dispatch } = useGameStateContext(); const [inputText, setInputText] = useState(''); const nextPlayerIdx = state.players.length + 1; + useEffect(() => { + if (nextPlayerIdx > state.desiredPlayers) { + dispatch(new SwitchScreenAction(ScreenId.GAME)); + } + }, [dispatch, nextPlayerIdx]); + const handleChange = useCallback((text) => { setInputText(text); }, [setInputText]); @@ -21,10 +28,6 @@ function EnterPlayers({ state, dispatch }) { const handleSubmit = useCallback((text) => { setInputText(''); - if (nextPlayerIdx === state.desiredPlayers) { - dispatch(new SwitchScreenAction(ScreenId.GAME)); - } - dispatch(basicAction(Actions.ADD_PLAYER, text)); }, [dispatch, nextPlayerIdx, state.desiredPlayers, setInputText]); @@ -50,9 +53,4 @@ function EnterPlayers({ state, dispatch }) { ); } -EnterPlayers.propTypes = { - state: PropTypes.object.isRequired, - dispatch: PropTypes.func.isRequired -}; - module.exports = EnterPlayers; \ No newline at end of file diff --git a/src/demo-react/screens/game-setup.js b/src/demo-react/screens/game-setup.js index e0f2887f..ee3a8f81 100644 --- a/src/demo-react/screens/game-setup.js +++ b/src/demo-react/screens/game-setup.js @@ -13,8 +13,11 @@ const { ScreenId, SwitchScreenAction } = require('../gamestate/screens'); const importJsx = require('import-jsx'); const { Menu, MenuEntry } = importJsx('../components/menu'); const NumberField = importJsx('../components/number-field'); +const { useGameStateContext } = importJsx('../components/gamestate-context'); + +function SetupGame() { + const { state, dispatch } = useGameStateContext(); -function SetupGame({ state, dispatch }) { const fields = [ SET_DESIRED_PLAYERS, SET_NUMBER_ROUNDS, SET_TURN_SECONDS, 'menu' ]; const [selectedField, setSelectedField] = useState(SET_DESIRED_PLAYERS); @@ -48,10 +51,7 @@ function SetupGame({ state, dispatch }) { } } - const { lastError } = state; - return ( - <> - { lastError } - ) } -SetupGame.propTypes = { - state: PropTypes.object.isRequired, - dispatch: PropTypes.func.isRequired -} - module.exports = SetupGame; diff --git a/src/demo-react/screens/game.js b/src/demo-react/screens/game.js index 98867e89..6b0a3919 100644 --- a/src/demo-react/screens/game.js +++ b/src/demo-react/screens/game.js @@ -1,11 +1,13 @@ const React = require('react'); -const PropTypes = require('prop-types'); const { Box, Text } = require('ink'); const importJsx = require('import-jsx'); +const { useGameStateContext } = importJsx('../components/gamestate-context'); + +function Game() { + const { state, dispatch } = useGameStateContext(); -function Game({ state, dispatch }) { return ( TODO: Add game screen! @@ -14,9 +16,4 @@ function Game({ state, dispatch }) { ) } -Game.propTypes = { - state: PropTypes.object.isRequired, - dispatch: PropTypes.func.isRequired -}; - module.exports = Game; diff --git a/src/demo-react/ui.js b/src/demo-react/ui.js index 7ef7d4cd..99288e40 100644 --- a/src/demo-react/ui.js +++ b/src/demo-react/ui.js @@ -2,8 +2,7 @@ const React = require('react'); const { Box, Text } = require('ink'); -const { useGameReducer } = require('./gamestate/reducer'); -const { SetErrorAction, getLastError } = require('./gamestate/errors'); +const { SetErrorAction } = require('./gamestate/errors'); const { SwitchScreenAction, ScreenId, @@ -17,48 +16,52 @@ const MainMenu = importJsx('./screens/main-menu'); const SetupGame = importJsx('./screens/game-setup'); const EnterPlayers = importJsx('./screens/enter-players'); const Game = importJsx('./screens/game'); +const { GameStateStore, useGameStateContext } = importJsx('./components/gamestate-context'); +const ErrorViewer = importJsx('./components/error-viewer'); -const App = () => { - // TODO: Instead of sending state & dispatch to all the screens, switch to - // the context API. - // See: https://hswolff.com/blog/how-to-usecontext-with-usereducer/#performance-concerns - const [state, dispatch] = useGameReducer(); +function ScreenDisplayer() { + const { state, dispatch } = useGameStateContext(); + + const showHowTo = () => dispatch(new SwitchScreenAction(ScreenId.HOW_TO)); + const showSetupGame = () => dispatch(new SwitchScreenAction(ScreenId.SETUP)); + const log = (msg) => dispatch(new SetErrorAction(msg)); + + let screen = ( + + ); if (onHelpScreen(state)) { const showMainMenu = () => dispatch( new SwitchScreenAction(ScreenId.MAIN_MENU) ); - return ; - } - - if (onSetupScreen(state)) { - return ; - } - - if (state.currentScreen === ScreenId.ENTER_PLAYERS) { - return + screen = ; + } else if (onSetupScreen(state)) { + screen = ; + } else if (state.currentScreen === ScreenId.ENTER_PLAYERS) { + screen = ; + } else if (state.currentScreen === ScreenId.GAME) { + screen = ; } - if (state.currentScreen === ScreenId.GAME) { - return ( - - ); - } - - const showHowTo = () => dispatch(new SwitchScreenAction(ScreenId.HOW_TO)); - const showSetupGame = () => dispatch(new SwitchScreenAction(ScreenId.SETUP)); - const log = (msg) => dispatch(new SetErrorAction(msg)); return ( <> - - { getLastError(state) } + { screen } + ); +} + +const App = () => { + return ( + + + + ) }; module.exports = App; From 54190fd67cd745553b66fe35f63763052c8739b9 Mon Sep 17 00:00:00 2001 From: Matt McKnett Date: Tue, 7 Jun 2022 15:18:17 -0700 Subject: [PATCH 24/75] Force player names to be unique --- src/demo-react/gamestate/options.js | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/demo-react/gamestate/options.js b/src/demo-react/gamestate/options.js index d28970f7..7d610bb0 100644 --- a/src/demo-react/gamestate/options.js +++ b/src/demo-react/gamestate/options.js @@ -34,6 +34,14 @@ function validateOptionsInput(wrappedReducer) { } break; } + case Actions.ADD_PLAYER: { + const name = action.payload; + if (state.players.find(p => p.name === name)) { + return wrappedReducer(state, new SetErrorAction( + `A player named ${name} already exists!` + )) + } + } } return wrappedReducer(state, action); From e1e2f5f24f2b34358fe99a37d230ffd57b83c5af Mon Sep 17 00:00:00 2001 From: Matt McKnett Date: Tue, 7 Jun 2022 17:10:56 -0700 Subject: [PATCH 25/75] Add a timer and turn/round counter This includes a flag in the reducer that lets you start the game without setup. --- src/demo-react/components/timer.js | 39 ++++++++++++ src/demo-react/gamestate/action-types.js | 4 +- src/demo-react/gamestate/reducer.js | 75 ++++++++++++++++++++++-- src/demo-react/gamestate/timer.js | 37 ++++++++++++ src/demo-react/screens/game.js | 37 +++++++++++- 5 files changed, 184 insertions(+), 8 deletions(-) create mode 100644 src/demo-react/components/timer.js create mode 100644 src/demo-react/gamestate/timer.js diff --git a/src/demo-react/components/timer.js b/src/demo-react/components/timer.js new file mode 100644 index 00000000..2203f6d1 --- /dev/null +++ b/src/demo-react/components/timer.js @@ -0,0 +1,39 @@ +const React = require('react'); +const { useEffect } = React; +const PropTypes = require('prop-types'); + +const { Box, Text } = require('ink'); + +const Actions = require('../gamestate/action-types'); + +const importJsx = require('import-jsx'); +const { useGameStateContext } = importJsx('../components/gamestate-context'); + +function GameTimer() { + const { state, dispatch } = useGameStateContext(); + + useEffect(() => { + const tick = () => { + dispatch({ type: Actions.TICK }); + }; + + const timer = setInterval(tick, 1000); + return () => { + clearInterval(timer); + }; + }, [dispatch]); + + let color = 'green'; + + if (state.gameTimer <= 10 && state.gameTimer > 5) { + color = 'yellow'; + } else if (state.gameTimer <= 5) { + color = 'red'; + } + + return ( + Time: { state.gameTimer } + ) +} + +module.exports = GameTimer; diff --git a/src/demo-react/gamestate/action-types.js b/src/demo-react/gamestate/action-types.js index fd57e5e6..c16f4616 100644 --- a/src/demo-react/gamestate/action-types.js +++ b/src/demo-react/gamestate/action-types.js @@ -1,7 +1,9 @@ module.exports = { GUESS: 'guess', ADD_PLAYER: 'add-player', - SET_GAME_TIMER: 'set-game-timer', + TICK: 'tick', + ADVANCE_TURN: 'advance-turn', + ADVANCE_ROUND: 'advance-round', SET_DESIRED_PLAYERS: 'set-desired-players', SET_NUMBER_ROUNDS: 'set-number-rounds', SET_TURN_SECONDS: 'set-turn-seconds', diff --git a/src/demo-react/gamestate/reducer.js b/src/demo-react/gamestate/reducer.js index 41e7179d..a82e8ab0 100644 --- a/src/demo-react/gamestate/reducer.js +++ b/src/demo-react/gamestate/reducer.js @@ -1,20 +1,50 @@ const { useReducer } = require('react'); const Actions = require('./action-types'); const { errorMiddleware } = require('./errors'); +const { timerMiddleware } = require('./timer'); const { validateOptionsInput } = require('./options'); const { ScreenId } = require('./screens.js'); -const initialState = { +const GO_STRAIGHT_TO_GAME = true; + +const initialState_real = { currentScreen: ScreenId.MAIN_MENU, + lastError: "", // The error set by the last action + // in-game props gameTimer: 15, // seconds + currentHand: [], // A result of adagrams.drawLetters() + currentRound: 0, // Starts on first round + currentPlayer: 0, // First player starts as current. + // settings secondsPerTurn: 15, desiredPlayers: 2, roundsPerGame: 3, - currentPlayer: null, // No players initially. players: [], // No players known initially. +}; + +// For debugging, this goes straight to the game screen: +const initialState_straighttoGame = { + currentScreen: ScreenId.GAME, lastError: "", // The error set by the last action + // in-game props + gameTimer: 1, // seconds + currentHand: ['A', 'B', 'D'], // A result of adagrams.drawLetters() + currentRound: 0, // Starts on first round + currentPlayer: 0, // First player starts as current. + // settings + secondsPerTurn: 1, // Invalid value to set, but I can still set it by default. You can't cage me! + desiredPlayers: 4, + roundsPerGame: 1, + players: [ + { name: 'First Player', words: [[]]}, + { name: 'Second Player', words: [[]]}, + { name: 'Third Player', words: [[]]}, + { name: 'Fourth Player', words: [[]]} + ], }; +const initialState = GO_STRAIGHT_TO_GAME ? initialState_straighttoGame : initialState_real; + function gameStateReducer(state, action) { switch (action.type) { case Actions.SWITCH_SCREEN: @@ -30,13 +60,50 @@ function gameStateReducer(state, action) { name: action.payload, words: [[]] // a list of word for each round, starting with an empty round 1 list }; - return { ...state, players: [ ...state.players, newPlayer ] } + return { ...state, players: [ ...state.players, newPlayer ] }; + case Actions.ADVANCE_TURN: + return advanceTurn(state); default: return { ...state }; } } -const reducer = validateOptionsInput(errorMiddleware(gameStateReducer)); +function advanceTurn(state) { + const { players, currentPlayer, currentRound } = state; + if (players.length === 0) { + return state; + } + + const nextPlayer = (currentPlayer + 1) % players.length; + const nextRound = currentRound + 1; + + // If nextPlayer is the first player... + // and this is the last round, go to the win screen. + // Otherwise advance the round. + // and if nextPlayer isn't the first player, just advance player. + if (nextPlayer === 0) { + if (nextRound >= state.roundsPerGame) { + return { + ...state, + currentScreen: ScreenId.WIN + }; + } else { + // TODO: Update hand here. + return { + ...state, + currentPlayer: 0, + currentRound: nextRound + } + } + } + + return { + ...state, + currentPlayer: nextPlayer + } +} + +const reducer = timerMiddleware(validateOptionsInput(errorMiddleware(gameStateReducer))); function useGameReducer() { return useReducer(reducer, initialState); diff --git a/src/demo-react/gamestate/timer.js b/src/demo-react/gamestate/timer.js new file mode 100644 index 00000000..5845ff5b --- /dev/null +++ b/src/demo-react/gamestate/timer.js @@ -0,0 +1,37 @@ +const basicAction = require('./generic-action'); +const Actions = require('./action-types'); + +// For debugging +const { SetErrorAction } = require('./errors'); + +function timerMiddleware(wrappedReducer) { + return (state, action) => { + if (action.type !== Actions.TICK) { + return wrappedReducer(state, action); + } + + // On a tick, do the following: + // 1. If time is left on the clock, decrement the timer. + // 2. If the timer is at 0, advance the turn. + + let newStateForDebug = state; + + if (state.gameTimer > 1) { + return { + ...state, + gameTimer: state.gameTimer - 1 + }; + } else { + const advanceTurnAction = basicAction(Actions.ADVANCE_TURN); + const turnAdvancedState = wrappedReducer(state, advanceTurnAction); + return { + ...turnAdvancedState, + gameTimer: state.secondsPerTurn + } + } + } +} + +module.exports = { + timerMiddleware +}; diff --git a/src/demo-react/screens/game.js b/src/demo-react/screens/game.js index 6b0a3919..62b782ea 100644 --- a/src/demo-react/screens/game.js +++ b/src/demo-react/screens/game.js @@ -3,15 +3,46 @@ const React = require('react'); const { Box, Text } = require('ink'); const importJsx = require('import-jsx'); +const GameTimer = importJsx('../components/timer'); const { useGameStateContext } = importJsx('../components/gamestate-context'); function Game() { const { state, dispatch } = useGameStateContext(); return ( - - TODO: Add game screen! - { state.players.map((player, idx) => {idx+1}: {player.name})} + + + Current hand: + { state.currentHand && state.currentHand.map((letter, idx) => ( + + { letter } + + ))} + + + Round: { state.currentRound + 1 } + + + + { + state.players.map((player, idx) => + + {player.name} + + ) + } + ) } From 383694c67b40287a0cdfe937280c69c528f458bf Mon Sep 17 00:00:00 2001 From: Matt McKnett Date: Tue, 7 Jun 2022 17:12:46 -0700 Subject: [PATCH 26/75] Add an empty win screen. The menu was cumbersome without callbacks, so I made the MenuEntry's second parameter optionally be a callback instead of a string. --- src/demo-react/components/menu.js | 12 ++++++---- src/demo-react/gamestate/reducer.js | 16 ++++++++++++++ src/demo-react/screens/win.js | 34 +++++++++++++++++++++++++++++ src/demo-react/ui.js | 3 +++ 4 files changed, 61 insertions(+), 4 deletions(-) create mode 100644 src/demo-react/screens/win.js diff --git a/src/demo-react/components/menu.js b/src/demo-react/components/menu.js index 0bb6c46e..943529bf 100644 --- a/src/demo-react/components/menu.js +++ b/src/demo-react/components/menu.js @@ -33,7 +33,11 @@ const Menu = ({ isActive, items, onFocusPrevious, onItemSelected, width }) => { setSelectedIdx(Math.min(menu.length - 1, selectedIdx + 1)); } else if (key.return) { const selectedItemId = menu[selectedIdx].selectionId; - onItemSelected(selectedItemId); + if (typeof selectedItemId === 'function') { + selectedItemId(); + } else { + onItemSelected(selectedItemId); + } } }; @@ -50,7 +54,7 @@ const Menu = ({ isActive, items, onFocusPrevious, onItemSelected, width }) => { { menu.map((menuEntry, idx) => ); }); + + it('Renders correctly when given a color', () => { + expectRenderToMatchSnapshot(); + }); + + it('Renders correctly when selected and given a color', () => { + expectRenderToMatchSnapshot(); + }); }); \ No newline at end of file From df33a10be164e9d39a1bfda5590cfc1032a64859 Mon Sep 17 00:00:00 2001 From: Matt McKnett Date: Sat, 11 Jun 2022 22:32:09 -0700 Subject: [PATCH 41/75] test: Update menu snapshot with new colors --- test/demo-react/__snapshots__/ui.test.js.snap | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/test/demo-react/__snapshots__/ui.test.js.snap b/test/demo-react/__snapshots__/ui.test.js.snap index e04235d8..bbeaeb4f 100644 --- a/test/demo-react/__snapshots__/ui.test.js.snap +++ b/test/demo-react/__snapshots__/ui.test.js.snap @@ -16,9 +16,9 @@ exports[`Button rendering Renders correctly in the default state 1`] = ` "┌──────────────────────────────────────────────────────────────────────────────────────────────────┐ │ │ │ │ -│ ╭────────────────╮ ╭─────────────╮ ╭──────╮ │ -│ │ Start New Game │ │ How to Play │ │ Quit │ │ -│ ╰────────────────╯ ╰─────────────╯ ╰──────╯ │ +│ ╭────────────────╮ ╭─────────────╮ ╭──────╮ │ +│ │ Start New Game │ │ How to Play │ │ Quit │ │ +│ ╰────────────────╯ ╰─────────────╯ ╰──────╯ │ │ │ │ │ └──────────────────────────────────────────────────────────────────────────────────────────────────┘" From fb7aef6264dd6cefc5b04570d95fa959b26cebfe Mon Sep 17 00:00:00 2001 From: Matt McKnett Date: Sat, 11 Jun 2022 23:05:53 -0700 Subject: [PATCH 42/75] Start adding tests for the game state. --- test/demo-react/gamestate/reducer.test.js | 78 +++++++++++++++++++++++ 1 file changed, 78 insertions(+) create mode 100644 test/demo-react/gamestate/reducer.test.js diff --git a/test/demo-react/gamestate/reducer.test.js b/test/demo-react/gamestate/reducer.test.js new file mode 100644 index 00000000..d68b7816 --- /dev/null +++ b/test/demo-react/gamestate/reducer.test.js @@ -0,0 +1,78 @@ +import { initialState, reducer } from 'demo-react/gamestate/reducer'; +import * as Actions from 'demo-react/gamestate/action-types'; +import makeAction from 'demo-react/gamestate/generic-action'; +import { ScreenId } from 'demo-react/gamestate/screens'; + +// Some actions merely replace the value of a specific state key with the +// action payload. This is a generic function to test those states. +function assertSimpleActionUpdatesKey(actionType, keyName, value = 'any-value') { + const action = makeAction(actionType, value); + const expected = { + ...initialState, + [keyName]: value + } + + const actual = reducer(initialState, action); + + expect(actual).toEqual(expected); +} + +describe('Game state reducer', () => { + describe('Simple actions', () => { + test('Switch screen', () => { + assertSimpleActionUpdatesKey( + Actions.SWITCH_SCREEN, 'currentScreen'); + }); + + test('Set number of rounds', () => { + assertSimpleActionUpdatesKey( + Actions.SET_NUMBER_ROUNDS, 'roundsPerGame', 1); + }); + + test('Set desired number of players', () => { + assertSimpleActionUpdatesKey( + Actions.SET_DESIRED_PLAYERS, 'desiredPlayers', 4); + }); + + test('Set number of seconds per turn', () => { + const action = makeAction(Actions.SET_TURN_SECONDS, 60); + const expected = { + ...initialState, + gameTimer: 60, + secondsPerTurn: 60 + } + + const actual = reducer(initialState, action); + + expect(actual).toEqual(expected); + }); + + test('Reset returns to the initial state', () => { + const action = makeAction(Actions.RESET); + const currentState = { + ...initialState, + currentScreen: ScreenId.WIN + }; + + const actual = reducer(currentState, action); + + expect(actual).toEqual(initialState); + }) + }); + + describe('Add Player', () => { + // TODO... + // Test: Add a new player, succeeds + // Test: Add a player with a blank name, sets error + // Test: Add a player with the same name as another, sets error + }) + + describe('Error handling', () => { + test('Set last error', () => { + assertSimpleActionUpdatesKey(Actions.SET_ERROR, 'lastError'); + }); + + // TODO... + // Test: Error is cleared after any other action. + }); +}); \ No newline at end of file From 9b8aaa1537f5897f55ce464afa79d7ac82407450 Mon Sep 17 00:00:00 2001 From: Matt McKnett Date: Mon, 13 Jun 2022 21:50:43 -0700 Subject: [PATCH 43/75] test: Add tests for error state and bounds checks --- test/demo-react/gamestate/reducer.test.js | 179 +++++++++++++++++++--- 1 file changed, 161 insertions(+), 18 deletions(-) diff --git a/test/demo-react/gamestate/reducer.test.js b/test/demo-react/gamestate/reducer.test.js index d68b7816..bfb53935 100644 --- a/test/demo-react/gamestate/reducer.test.js +++ b/test/demo-react/gamestate/reducer.test.js @@ -17,6 +17,14 @@ function assertSimpleActionUpdatesKey(actionType, keyName, value = 'any-value') expect(actual).toEqual(expected); } +const mockPlayerList = [ + { name: 'Max', words: [['HELO', 'LOW'], ['WORLD']]}, + { name: 'Min Soo', words: [[], ['OLE']]}, + { name: 'Rupa', words: [['HELLO'], ['DROLL', 'ROLE']]}, + { name: 'Elliot', words: [['DROOL'], ['WHORL']]} +] + + describe('Game state reducer', () => { describe('Simple actions', () => { test('Switch screen', () => { @@ -24,17 +32,97 @@ describe('Game state reducer', () => { Actions.SWITCH_SCREEN, 'currentScreen'); }); - test('Set number of rounds', () => { + test('Reset returns to the initial state', () => { + const action = makeAction(Actions.RESET); + const currentState = { + ...initialState, + currentScreen: ScreenId.WIN, + currentRound: 3, + currentPlayer: 3, + players: mockPlayerList + }; + + const actual = reducer(currentState, action); + + expect(actual).toEqual(initialState); + }) + }); + + describe('Set number of rounds', () => { + test('Set 1 round, succeeds', () => { assertSimpleActionUpdatesKey( Actions.SET_NUMBER_ROUNDS, 'roundsPerGame', 1); }); - test('Set desired number of players', () => { + test('Set 5 rounds, succeeds', () => { + assertSimpleActionUpdatesKey( + Actions.SET_NUMBER_ROUNDS, 'roundsPerGame', 5); + }); + + test('Set 0 rounds, sets error', () => { + const action = makeAction(Actions.SET_NUMBER_ROUNDS, 0); + const actual = reducer(initialState, action); + expect(actual).toEqual({ + ...initialState, + lastError: '0 is not a valid number of rounds.' + }); + }); + + test('Set 6 rounds, sets error', () => { + const action = makeAction(Actions.SET_NUMBER_ROUNDS, 6); + const actual = reducer(initialState, action); + expect(actual).toEqual({ + ...initialState, + lastError: '6 is not a valid number of rounds.' + }); + }); + }); + + describe('Set desired number of players', () => { + test('Set desired number of players to 1, succeeds', () => { + assertSimpleActionUpdatesKey( + Actions.SET_DESIRED_PLAYERS, 'desiredPlayers', 1); + }); + + test('Set desired number of players to 4, succeeds', () => { assertSimpleActionUpdatesKey( Actions.SET_DESIRED_PLAYERS, 'desiredPlayers', 4); }); - test('Set number of seconds per turn', () => { + test('Set desired number of players to 0, sets error', () => { + const action = makeAction(Actions.SET_DESIRED_PLAYERS, 0); + const actual = reducer(initialState, action); + expect(actual).toEqual({ + ...initialState, + lastError: '0 is not a valid number of players.' + }); + }); + + test('Set desired number of players to 5, sets error', () => { + const action = makeAction(Actions.SET_DESIRED_PLAYERS, 5); + const actual = reducer(initialState, action); + expect(actual).toEqual({ + ...initialState, + lastError: '5 is not a valid number of players.' + }); + }); + }); + + describe('Set number of seconds per turn', () => { + test('Set 10 seconds per turn, succeeds', () => { + const action = makeAction(Actions.SET_TURN_SECONDS, 10); + const expected = { + ...initialState, + gameTimer: 10, + secondsPerTurn: 10 + } + + const actual = reducer(initialState, action); + + expect(actual).toEqual(expected); + }); + + test('Set 60 seconds per turn, succeeds', () => { const action = makeAction(Actions.SET_TURN_SECONDS, 60); const expected = { ...initialState, @@ -47,32 +135,87 @@ describe('Game state reducer', () => { expect(actual).toEqual(expected); }); - test('Reset returns to the initial state', () => { - const action = makeAction(Actions.RESET); - const currentState = { + test('Set 9 seconds per turn, sets error', () => { + const action = makeAction(Actions.SET_TURN_SECONDS, 9); + const expected = { ...initialState, - currentScreen: ScreenId.WIN - }; + lastError: "9 is not a valid number of seconds for each player's turn." + } - const actual = reducer(currentState, action); + const actual = reducer(initialState, action); - expect(actual).toEqual(initialState); - }) + expect(actual).toEqual(expected); + }); + + test('Set 61 seconds per turn, sets error', () => { + const action = makeAction(Actions.SET_TURN_SECONDS, 61); + const expected = { + ...initialState, + lastError: "61 is not a valid number of seconds for each player's turn." + } + + const actual = reducer(initialState, action); + + expect(actual).toEqual(expected); + }); }); describe('Add Player', () => { - // TODO... - // Test: Add a new player, succeeds - // Test: Add a player with a blank name, sets error - // Test: Add a player with the same name as another, sets error - }) + test('Add player adds the player and a guess list for the first round', () => { + const expectedState = { + ...initialState, + players: [{ name: 'Player One', words: [[]] }] + }; + const addPlayerOne = makeAction(Actions.ADD_PLAYER, 'Player One'); + + const actual = reducer(initialState, addPlayerOne); + + expect(actual).toEqual(expectedState) + }); + + test('Add player with no name, sets error', () => { + const expectedState = { + ...initialState, + lastError: 'Enter a name!' + }; + const addPlayerOne = makeAction(Actions.ADD_PLAYER, ''); + + const actual = reducer(initialState, addPlayerOne); + + expect(actual).toEqual(expectedState) + }); + + test('Add player with existing player\'s name, sets error', () => { + const expectedState = { + ...initialState, + players: [{ name: 'Player One', words: [[]] }], + lastError: 'A player named Player One already exists!' + }; + const addPlayerOne = makeAction(Actions.ADD_PLAYER, 'Player One'); + + let actual = reducer(initialState, addPlayerOne); + actual = reducer(actual, addPlayerOne); + + expect(actual).toEqual(expectedState) + }); + }); describe('Error handling', () => { test('Set last error', () => { assertSimpleActionUpdatesKey(Actions.SET_ERROR, 'lastError'); }); - // TODO... - // Test: Error is cleared after any other action. + test('Any action clears last error', () => { + const currentState = { ...initialState, lastError: 'Some error' }; + const expected = { ...currentState, lastError: '' }; + const action = makeAction( + 'literally-anything-besides-set-error', + 'the-payload' + ); + + const actual = reducer(currentState, action); + + expect(actual).toEqual(expected); + }); }); }); \ No newline at end of file From 71512e8f20cff82a0e17a3050918682b3ba145c5 Mon Sep 17 00:00:00 2001 From: Matt McKnett Date: Tue, 14 Jun 2022 10:41:00 -0700 Subject: [PATCH 44/75] test: add tests for TICK action timer.js is now at 100% coverage. --- test/demo-react/gamestate/reducer.test.js | 71 ++++++++++++++++++++++- 1 file changed, 70 insertions(+), 1 deletion(-) diff --git a/test/demo-react/gamestate/reducer.test.js b/test/demo-react/gamestate/reducer.test.js index bfb53935..92642ef3 100644 --- a/test/demo-react/gamestate/reducer.test.js +++ b/test/demo-react/gamestate/reducer.test.js @@ -22,7 +22,22 @@ const mockPlayerList = [ { name: 'Min Soo', words: [[], ['OLE']]}, { name: 'Rupa', words: [['HELLO'], ['DROLL', 'ROLE']]}, { name: 'Elliot', words: [['DROOL'], ['WHORL']]} -] +]; + +const inGameState = { + currentScreen: ScreenId.GAME, + lastError: "", // The error set by the last action + // in-game props + gameTimer: 5, // seconds + currentHand: ["H", "E", "L", "O", "L", "W", "O", "R", "L", "D"], + currentRound: 0, // Starts on first round + currentPlayer: 0, // First player starts as current. + // settings + secondsPerTurn: 5, // Invalid value to set, but I can still set it by default. You can't cage me! + desiredPlayers: mockPlayerList.length, + roundsPerGame: 2, + players: mockPlayerList +}; describe('Game state reducer', () => { @@ -218,4 +233,58 @@ describe('Game state reducer', () => { expect(actual).toEqual(expected); }); }); + + describe('Timer ticks', () => { + test('Ticks at 2 or more, gameTimer decrements', () => { + const tickAction = makeAction(Actions.TICK); + + const actual = reducer(inGameState, tickAction); + + expect(actual).toEqual({ + ...inGameState, + gameTimer: 4 + }); + }); + + test('Ticks at 1 or fewer, turn advances and gameTimer resets', () => { + const beforeNextTurnState = { + ...inGameState, + gameTimer: 1 + }; + const tickAction = makeAction(Actions.TICK); + + const actual = reducer(beforeNextTurnState, tickAction); + + expect(actual).toEqual({ + ...inGameState, + currentPlayer: 1, + gameTimer: 5 + }); + }); + + test('Ticks at 1 or fewer, current player is last, round advances and gameTimer resets', () => { + const beforeNextTurnState = { + ...inGameState, + currentPlayer: inGameState.players.length - 1, + gameTimer: 1 + }; + const tickAction = makeAction(Actions.TICK); + + const actual = reducer(beforeNextTurnState, tickAction); + + // The reducer will automatically draw a new hand. + // For testing, just make sure the round, player, and timer are what is + // expected.) + expect(actual).toMatchObject({ + currentPlayer: 0, + currentRound: 1, + gameTimer: 5 + }); + + // Also check that the hand is different. The test mock is distinct from + // the stub, and it should be nearly impossible to randomly draw the + // previous hand. + expect(actual.currentHand).not.toEqual(beforeNextTurnState.currentHand); + }); + }); }); \ No newline at end of file From 4dd1b103914de1f4b446b3a05945072f164fee19 Mon Sep 17 00:00:00 2001 From: Matt McKnett Date: Wed, 15 Jun 2022 21:18:54 -0700 Subject: [PATCH 45/75] Add docs folder and create ADR --- src/demo-react/docs/adr.md | 71 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 71 insertions(+) create mode 100644 src/demo-react/docs/adr.md diff --git a/src/demo-react/docs/adr.md b/src/demo-react/docs/adr.md new file mode 100644 index 00000000..f7518dff --- /dev/null +++ b/src/demo-react/docs/adr.md @@ -0,0 +1,71 @@ +_This document is an Architecture Decision Record (ADR). It is based on the [MADR template](https://adr.github.io/madr/). Learn more about ADRs: https://adr.github.io/_ + +# Rewrite Demo Game for maintainability and to facilitate React understanding + +## Context and Problem Statement + +The demo game for Adagrams has presented some challenges for TAs +in the past few years: + +1. Fixes and featues are difficult to apply. +1. The demo game fundamentally depends on [Vorpal](https://github.com/dthree/vorpal), which is no longer being maintained. +1. Students try to understand the demo game architecture and get discouraged. The architecture suffers from a few issues that make it difficult for even seasoned developers to understand, including: + - There is tight coupling among the Controller and View classes in the game. + - The classes violate the Single Responsibility Principle. + - Most of the interesting functionality is in difficult-to-follow callbacks. + +It would be preferable for this demo game to be architected and written in a way that is less cumbersome for students to detangle and also more desirable for them to emulate. + + +## Decision Drivers + +* Students need to be able to use the demo game to manually test their Adagrams solution. +* Ada staff need to be able to keep the demo game up to date and maintain its tests and functionality. +* The demo game's architecture should match Ada pedagogy and ought to serve as a model for application development that students might reasonably choose to emulate. +* Students should be able to follow the demo game's flow of control with guidance from instructional staff or TAs. +* The volunteer who wrote this thinks it would be fun to write a command line utility that depends on React. + +## Considered Options + +* Refactor the existing Vorpal demo game. +* Rewrite the demo game using [Ink](https://github.com/vadimdemedes/ink). + +## Decision Outcome + +Chosen option: Rewrite the demo game using Ink, because: +- Modifying and refactoring the existing Vorpal-based demo game proved difficult. +- Ink is being actively maintained and relies on React, which is a core part of the Ada curriculum. Vorpal requires effort to learn, and in the context of the Ada curriculum is only useful in this application. + + +### Positive Consequences + +* Students now have an example game written in a framework that they are more likely to be able to emulate and be productive with. Ink has obvious adoption, e.g. it is used by Jest. +* Students who try to understand the programming model, which is React-based, will have an easier time connecting the architecture to concepts they are about to learn, or else coming back to review the architecture of this app once they've learned some React. +* Staff will not be required to learn Vorpal in order to fix or extend the app. + + + +### Negative Consequences + +* Time spent coding the rewrite +* Fewer examples of non-React JavaScript in the curriculum + + +## More Information + +Here is a deeper discussion of the problem context and challenges presented to maintaining the existing demo game: + +1. Fixes and featues are difficult to apply. The architecture of the app makes these bugs hard to investigate. For example, the game offers a round timer in its arguments, but it does not implement this round timer. One of the volunteer TAs [created a one-line fix](https://github.com/mmcknett/js-adagrams/commit/5a4535f7b5212b704fa6a478ba98b75ae67d9ee7) for this behavior, but it is not obvious from inspecting the code (not even to that TA, upon reviewing the commit) why this fix works. Additionally, the tests for the demo game have sporadically led to student submissions failing even though the tests pass locally. It would be nice to apply "if it ain't broke, don't fix it," but it is difficult to tell if the demo game is broke, and if it were determined to be broke, how one might fix it. + +1. The demo game fundamentally depends on [Vorpal](https://github.com/dthree/vorpal), which is no longer being maintained. Some forks of Vorpal had been created with the intention of keeping the library maintained, including [moleculerjs/vorpal](https://github.com/moleculerjs/vorpal) and [vorpaljs-reforged](https://github.com/vorpaljs-reforged/vorpal), but these forks also appear to have fallen into inactivity. Keeping Vorpal updated has been necessary to suppress `npm audit` security notices that have scared students in the past. There is no known drop-in replacement for Vorpal. + +1. Each cohort, students look to the demo game as a model for how they oght to write JavaScript. Most, understandably, get discrouaged and give up trying to unravel it. As a student, it is easy to blame yourself for an inability to understand code, especially when it follows a "simple" pattern like Model View Controller (MVC) is purported to be. The demo game even has classes named Model, View, and Controller! TAs, tutors, or instructors are forced to provide the context that this app's architecture is difficult to understand even for seasoned developers. The difficulty arises from: + 1. Tight coupling among the Controller and View classes in the game. For example, the entrypoint to the game is `Controller.start`, which is called from `demo.js`. All that function does is call `View.start`. All *that* function does is log, then call `show` on the `Vorpal` singleton in the `view.js` module. + + The flow of control is passed back and forth between `Controller`, which invokes `View` after manipulating the model, and `View` which invokes `Controller` but, unexpectedly, does so via `callbacks` objects. This likely surprises anyone who looks at [the MVC Wikipedia page](https://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller) for an illustration of the pattern, but does sensibly arise from the constaints of Vorpal and the need to keep the code relatively simple. + + 1. The classes violate the Single Responsibility Principle. `View` handles all view-related functions; `Controller` handles all functionality that links the model and the view. The `Model` object is probably doing the best job having a single responsibility, though that single responsibility is "manage all of the game state". + + 1. Most of the interesting functionality driving the game is relegated to difficult-to-follow callbacks. Part of this difficulty is expected: one must become familiar with how Vorpal works, as a framework, in order to modify an application that depends on it. Part of this difficulty arises from the tight coupling of the large classes, and the abstractness of these classes being named Model, View, and Controller. Part of it arises from the fact that callbacks, in asynchronous programming, are generally just difficult to follow. + + From 6f245084419e0ab87f118a3e854d4f803dcf48ae Mon Sep 17 00:00:00 2001 From: Matt McKnett Date: Wed, 22 Jun 2022 16:12:04 -0700 Subject: [PATCH 46/75] Play testing with Amy results I play-tested the game with my partner, Amy. Some suggestions came out of that: - There's a bug where backspace is not accepted by the number fields - We thought it would be more fun if there was time between turns and if the first player to go had more time to think. - Logging main menu item selections isn't necessary --- src/demo-react/components/number-field.js | 1 + src/demo-react/gamestate/reducer.js | 4 +++- src/demo-react/screens/main-menu.js | 2 +- 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/demo-react/components/number-field.js b/src/demo-react/components/number-field.js index 42f9d029..7c45b260 100644 --- a/src/demo-react/components/number-field.js +++ b/src/demo-react/components/number-field.js @@ -10,6 +10,7 @@ export default function NumberField({ }) { const [tempInput, setTempInput] = useState(''); + // BUG: Backspace not support useInput((input, key) => { // Allow input that is all digits. if (/^[0-9]+$/.test(input)) { diff --git a/src/demo-react/gamestate/reducer.js b/src/demo-react/gamestate/reducer.js index 682e5187..07854b56 100644 --- a/src/demo-react/gamestate/reducer.js +++ b/src/demo-react/gamestate/reducer.js @@ -20,7 +20,7 @@ const initialState_real = { currentRound: 0, // Starts on first round currentPlayer: 0, // First player starts as current. // settings - secondsPerTurn: 15, + secondsPerTurn: 25, desiredPlayers: 2, roundsPerGame: 3, players: [], // No players known initially. @@ -49,6 +49,8 @@ const initialState_straighttoGame = { export const initialState = GO_STRAIGHT_TO_GAME ? initialState_straighttoGame : initialState_real; +// TODO: We need a break in between turns! +// TODO: How could we deal with the first player getting more time to think? function gameStateReducer(state, action) { switch (action.type) { case Actions.SWITCH_SCREEN: diff --git a/src/demo-react/screens/main-menu.js b/src/demo-react/screens/main-menu.js index fd2571f5..fed93b9b 100644 --- a/src/demo-react/screens/main-menu.js +++ b/src/demo-react/screens/main-menu.js @@ -14,7 +14,7 @@ export default function MainMenu({ log, onHelpSelected, onStartSelected }) { ]; const handleSelection = (selectionId) => { - log(`MainMenu: Received '${selectionId}'.`); + log(`MainMenu: Received '${selectionId}'.`); // TODO: Remove error log; it's unnecessary switch(selectionId) { case 'quit': exit(); break; case 'help': onHelpSelected(); break; From 8c2e92f92507b645c74c973a000a7f7344fd1a52 Mon Sep 17 00:00:00 2001 From: Matt McKnett Date: Wed, 22 Jun 2022 16:12:50 -0700 Subject: [PATCH 47/75] refactor: Timer middleware refactor --- src/demo-react/gamestate/timer.js | 19 ++++++++----------- 1 file changed, 8 insertions(+), 11 deletions(-) diff --git a/src/demo-react/gamestate/timer.js b/src/demo-react/gamestate/timer.js index a7223713..5cdb1966 100644 --- a/src/demo-react/gamestate/timer.js +++ b/src/demo-react/gamestate/timer.js @@ -1,10 +1,10 @@ -import basicAction from './generic-action'; -import * as Actions from './action-types'; +import makeAction from './generic-action'; +import { ADVANCE_TURN, TICK } from './action-types'; -export function timerMiddleware(wrappedReducer) { +export function timerMiddleware(reducer) { return (state, action) => { - if (action.type !== Actions.TICK) { - return wrappedReducer(state, action); + if (action.type !== TICK) { + return reducer(state, action); } // On a tick, do the following: @@ -16,12 +16,9 @@ export function timerMiddleware(wrappedReducer) { gameTimer: state.gameTimer - 1 }; } else { - const advanceTurnAction = basicAction(Actions.ADVANCE_TURN); - const turnAdvancedState = wrappedReducer(state, advanceTurnAction); - return { - ...turnAdvancedState, - gameTimer: state.secondsPerTurn - } + // Advance the turn and reset the game timer. + const turnAdvancedState = reducer(state, makeAction(ADVANCE_TURN)); + return { ...turnAdvancedState, gameTimer: state.secondsPerTurn } } } } From a7662524b110c1c304c00846fba75d2f19aafe14 Mon Sep 17 00:00:00 2001 From: Matt McKnett Date: Wed, 22 Jun 2022 16:45:11 -0700 Subject: [PATCH 48/75] docs: Copy-edit the ADR --- src/demo-react/docs/adr.md | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/src/demo-react/docs/adr.md b/src/demo-react/docs/adr.md index f7518dff..21b41833 100644 --- a/src/demo-react/docs/adr.md +++ b/src/demo-react/docs/adr.md @@ -40,7 +40,7 @@ Chosen option: Rewrite the demo game using Ink, because: ### Positive Consequences * Students now have an example game written in a framework that they are more likely to be able to emulate and be productive with. Ink has obvious adoption, e.g. it is used by Jest. -* Students who try to understand the programming model, which is React-based, will have an easier time connecting the architecture to concepts they are about to learn, or else coming back to review the architecture of this app once they've learned some React. +* Students who try to understand the programming model, which is React-based, will have an easier time connecting the architecture to concepts they are about to learn. Students who don't find the concepts accessible at this point in the curriculum, but decide to put some effort into exploring this code, may benefit from revisiting the architecture of this app once they've learned some React. * Staff will not be required to learn Vorpal in order to fix or extend the app. @@ -55,17 +55,15 @@ Chosen option: Rewrite the demo game using Ink, because: Here is a deeper discussion of the problem context and challenges presented to maintaining the existing demo game: -1. Fixes and featues are difficult to apply. The architecture of the app makes these bugs hard to investigate. For example, the game offers a round timer in its arguments, but it does not implement this round timer. One of the volunteer TAs [created a one-line fix](https://github.com/mmcknett/js-adagrams/commit/5a4535f7b5212b704fa6a478ba98b75ae67d9ee7) for this behavior, but it is not obvious from inspecting the code (not even to that TA, upon reviewing the commit) why this fix works. Additionally, the tests for the demo game have sporadically led to student submissions failing even though the tests pass locally. It would be nice to apply "if it ain't broke, don't fix it," but it is difficult to tell if the demo game is broke, and if it were determined to be broke, how one might fix it. +1. Fixes and featues are difficult to apply. The architecture of the app makes bugs hard to investigate. For example, the game offers a round timer in its arguments, but it does not implement this round timer. One of the volunteer TAs (this document's author) [created a one-line fix](https://github.com/mmcknett/js-adagrams/commit/5a4535f7b5212b704fa6a478ba98b75ae67d9ee7) for this behavior, yet it is not obvious from inspecting the code--not even to that TA, upon reviewing the commit--why this fix works. Additionally, the tests for the demo game have sporadically led to student submissions failing even though the tests pass locally. It would be nice to apply the principle of "if it ain't broke, don't fix it." However, it is difficult to tell if the demo game is broke and, should it be determined to **be** broke, how one might fix it. -1. The demo game fundamentally depends on [Vorpal](https://github.com/dthree/vorpal), which is no longer being maintained. Some forks of Vorpal had been created with the intention of keeping the library maintained, including [moleculerjs/vorpal](https://github.com/moleculerjs/vorpal) and [vorpaljs-reforged](https://github.com/vorpaljs-reforged/vorpal), but these forks also appear to have fallen into inactivity. Keeping Vorpal updated has been necessary to suppress `npm audit` security notices that have scared students in the past. There is no known drop-in replacement for Vorpal. +1. The demo game fundamentally depends on [Vorpal](https://github.com/dthree/vorpal), which is no longer being maintained. Some forks of Vorpal had been created with the intention of keeping the library maintained, including [moleculerjs/vorpal](https://github.com/moleculerjs/vorpal) and [vorpaljs-reforged](https://github.com/vorpaljs-reforged/vorpal), but these forks also appear to have fallen into inactivity. Keeping Vorpal updated has been necessary in the past to suppress `npm audit` security notices, which have scared and distracted students. At this point, there is no known drop-in replacement for Vorpal. -1. Each cohort, students look to the demo game as a model for how they oght to write JavaScript. Most, understandably, get discrouaged and give up trying to unravel it. As a student, it is easy to blame yourself for an inability to understand code, especially when it follows a "simple" pattern like Model View Controller (MVC) is purported to be. The demo game even has classes named Model, View, and Controller! TAs, tutors, or instructors are forced to provide the context that this app's architecture is difficult to understand even for seasoned developers. The difficulty arises from: - 1. Tight coupling among the Controller and View classes in the game. For example, the entrypoint to the game is `Controller.start`, which is called from `demo.js`. All that function does is call `View.start`. All *that* function does is log, then call `show` on the `Vorpal` singleton in the `view.js` module. +1. Each cohort, students look to the demo game as a model for how they oght to write JavaScript. Most, understandably, get discrouaged and give up trying to unravel it. As a student, it is easy to blame yourself for an inability to understand code, especially when it follows a "simple" pattern, as Model View Controller (MVC) is purported to be. The demo game even has classes named Model, View, and Controller! Simple, right? TAs, tutors, or instructors are forced to provide the context that this app's architecture is not simple, and is actually difficult for even seasoned developers to approach with intuition. The difficulty arises from a few issues, including: + 1. Tight coupling among the Controller and View classes in the game. For example, the entrypoint to the game is `Controller.start`, which is called from `demo.js`. All that this function does is call `View.start`. All that *that* function does is log a message, then call `show` on the `Vorpal` singleton in the `view.js` module. Two function calls into the demo game, and a trip to the Vorpal docs is necessary to make any informed inferences on the game's behavior. - The flow of control is passed back and forth between `Controller`, which invokes `View` after manipulating the model, and `View` which invokes `Controller` but, unexpectedly, does so via `callbacks` objects. This likely surprises anyone who looks at [the MVC Wikipedia page](https://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller) for an illustration of the pattern, but does sensibly arise from the constaints of Vorpal and the need to keep the code relatively simple. - - 1. The classes violate the Single Responsibility Principle. `View` handles all view-related functions; `Controller` handles all functionality that links the model and the view. The `Model` object is probably doing the best job having a single responsibility, though that single responsibility is "manage all of the game state". - - 1. Most of the interesting functionality driving the game is relegated to difficult-to-follow callbacks. Part of this difficulty is expected: one must become familiar with how Vorpal works, as a framework, in order to modify an application that depends on it. Part of this difficulty arises from the tight coupling of the large classes, and the abstractness of these classes being named Model, View, and Controller. Part of it arises from the fact that callbacks, in asynchronous programming, are generally just difficult to follow. + The tight coupling among classes seems to have come from an attempt to strictly adhere to the MVC "pattern." During the game's execution, from the very beginning, the flow of control passes back and forth between `Controller`, which invokes `View` after manipulating the model, and `View` which invokes `Controller`-- though it unexpectedly does so via `callbacks` objects. This flow of control likely surprises anyone who looks at [the MVC Wikipedia page](https://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller) for an illustration of the pattern. View and Controller are entirely separate in that illustration. Nonetheless, the connection between the two classes does sensibly arise from the constaints of Vorpal and the need to keep the code relatively simple. Attempting to satisfy the conflicting needs of satisfying Vorpal and satisfying MVC has resulted in classes that are named in a way that defies their true relationship. + 1. The classes violate the Single Responsibility Principle. `View` handles all responsibilities that seem view-related; `Controller` handles all responsibilities that link the model and the view. The `Model` object is probably doing the best job having a single responsibility. That single responsibility is "manage all of the game state", but because the game state is small and interconnected it is arguably singular. + 1. Most of the interesting functionality driving the game is relegated to difficult-to-follow callbacks. This is a result of Vorpal's interface, and not necessarily unexpected. One must become familiar with the expectations of a framework in order to modify an application that depends on that framework. Wrapping your mind around Vorpal's asynchronous model is simply a tax you as a developer must pay to reap the framework's benefits. That said, the tightly-coupled, large classes that are named after abstract concepts do nothing to reduce the complexity of following the asynchronous callbacks. They make it harder, adding an extra layer to the abstraction-detangling. From f5ef6bb412003d1ec71fa3d6acb32c6f778409e8 Mon Sep 17 00:00:00 2001 From: Matt McKnett Date: Wed, 22 Jun 2022 17:49:38 -0700 Subject: [PATCH 49/75] test: Add tests to get full coverage of reducer.js --- test/demo-react/gamestate/reducer.test.js | 141 +++++++++++++++++++++- 1 file changed, 136 insertions(+), 5 deletions(-) diff --git a/test/demo-react/gamestate/reducer.test.js b/test/demo-react/gamestate/reducer.test.js index 92642ef3..7240a8c0 100644 --- a/test/demo-react/gamestate/reducer.test.js +++ b/test/demo-react/gamestate/reducer.test.js @@ -30,10 +30,10 @@ const inGameState = { // in-game props gameTimer: 5, // seconds currentHand: ["H", "E", "L", "O", "L", "W", "O", "R", "L", "D"], - currentRound: 0, // Starts on first round - currentPlayer: 0, // First player starts as current. + currentRound: 1, // We're on the second round + currentPlayer: 3, // The last player is guessing. // settings - secondsPerTurn: 5, // Invalid value to set, but I can still set it by default. You can't cage me! + secondsPerTurn: 60, desiredPlayers: mockPlayerList.length, roundsPerGame: 2, players: mockPlayerList @@ -249,6 +249,7 @@ describe('Game state reducer', () => { test('Ticks at 1 or fewer, turn advances and gameTimer resets', () => { const beforeNextTurnState = { ...inGameState, + currentPlayer: 0, gameTimer: 1 }; const tickAction = makeAction(Actions.TICK); @@ -258,14 +259,33 @@ describe('Game state reducer', () => { expect(actual).toEqual({ ...inGameState, currentPlayer: 1, - gameTimer: 5 + gameTimer: inGameState.secondsPerTurn }); }); + test('Ticks at 1 or fewer, no players, only game timer resets', () => { + const beforeNextTurnState = { + ...inGameState, + currentPlayer: 0, + gameTimer: 1, + players: [] + }; + const tickAction = makeAction(Actions.TICK); + const expectedState = { + ...beforeNextTurnState, + gameTimer: inGameState.secondsPerTurn + }; + + const actual = reducer(beforeNextTurnState, tickAction); + + expect(actual).toEqual(expectedState); + }); + test('Ticks at 1 or fewer, current player is last, round advances and gameTimer resets', () => { const beforeNextTurnState = { ...inGameState, currentPlayer: inGameState.players.length - 1, + currentRound: 0, gameTimer: 1 }; const tickAction = makeAction(Actions.TICK); @@ -278,7 +298,7 @@ describe('Game state reducer', () => { expect(actual).toMatchObject({ currentPlayer: 0, currentRound: 1, - gameTimer: 5 + gameTimer: inGameState.secondsPerTurn }); // Also check that the hand is different. The test mock is distinct from @@ -286,5 +306,116 @@ describe('Game state reducer', () => { // previous hand. expect(actual.currentHand).not.toEqual(beforeNextTurnState.currentHand); }); + + test('Ticks at 1 or fewer, last round, last player, game moves to WIN screen', () => { + const beforeNextTurnState = { + ...inGameState, + currentPlayer: 3, + currentRound: inGameState.roundsPerGame, + gameTimer: 1 + }; + const tickAction = makeAction(Actions.TICK); + const expectedState = { + ...beforeNextTurnState, + currentScreen: ScreenId.WIN, + gameTimer: 60 + }; + + const actual = reducer(beforeNextTurnState, tickAction); + + expect(actual).toEqual(expectedState); + }); }); + + describe('Word guessing', () => { + const deepCopyPlayerList = () => { + return mockPlayerList.map(player => ({ ...player, words: player.words.map(roundList => [ ...roundList ]) })); + } + + test('Guessing a word guesses the word for the current player', () => { + const guessWhole = makeAction(Actions.GUESS, 'WHOLE'); + const playerListCopy = deepCopyPlayerList(); + playerListCopy[inGameState.currentPlayer].words[inGameState.currentRound].push('WHOLE'); + const expectedState = { ...inGameState, players: playerListCopy }; + + const actualState = reducer(inGameState, guessWhole); + + expect(expectedState).toEqual(actualState); + }); + + test('Guessing a lower-case word guesses the uppercase word', () => { + const guessWhole = makeAction(Actions.GUESS, 'whole'); + const playerListCopy = deepCopyPlayerList(); + playerListCopy[inGameState.currentPlayer].words[inGameState.currentRound].push('WHOLE'); + const expectedState = { ...inGameState, players: playerListCopy }; + + const actualState = reducer(inGameState, guessWhole); + + expect(expectedState).toEqual(actualState); + }); + + test('Guessing an invalid word sets an error about the word being invalid', () => { + const guessHippo = makeAction(Actions.GUESS, 'HIPPO'); + const expectedState = { ...inGameState, + lastError: "HIPPO isn't valid!" + }; + + const actualState = reducer(inGameState, guessHippo); + + expect(expectedState).toEqual(actualState); + }); + + test('Guessing a word used this round sets an error about duplicate guesses', () => { + const guessWorld = makeAction(Actions.GUESS, 'WORLD'); + const expectedState = { ...inGameState, + lastError: "WORLD was already guessed!" + }; + + const actualState = reducer(inGameState, guessWorld); + + expect(expectedState).toEqual(actualState); + }); + + test('Guessing a word used in a previous round does NOT set an error about duplicate guesses', () => { + const guessHello = makeAction(Actions.GUESS, 'HELLO'); + const playerListCopy = deepCopyPlayerList(); + playerListCopy[inGameState.currentPlayer].words[inGameState.currentRound].push('HELLO'); + const expectedState = { ...inGameState, players: playerListCopy }; + + const actualState = reducer(inGameState, guessHello); + + expect(expectedState).toEqual(actualState); + }); + + test('Guessing an empty word sets an error about a guess being required', () => { + const guessEmptyWord = makeAction(Actions.GUESS, ''); + const expectedState = { ...inGameState, + lastError: "Enter a word!" + }; + + const actualState = reducer(inGameState, guessEmptyWord); + + expect(expectedState).toEqual(actualState); + }); + }); + + describe('Rematch', () => { + test('Invoking a rematch resets the game with the same parameters', () => { + const guessWhole = makeAction(Actions.REMATCH); + const resetPlayerList = mockPlayerList.map(player => ({ ...player, words: [[]] })); + const expectedState = { ...inGameState, + players: resetPlayerList, + currentPlayer: 0, + currentRound: 0 + }; + + const actualState = reducer(inGameState, guessWhole); + + // Ignore currentHand. + delete expectedState.currentHand; + delete actualState.currentHand; + + expect(expectedState).toMatchObject(actualState); + }) + }) }); \ No newline at end of file From 5ebe4d13278291d93eed4365d117438c91e943f4 Mon Sep 17 00:00:00 2001 From: Matt McKnett Date: Tue, 12 Jul 2022 11:12:34 -0700 Subject: [PATCH 50/75] Add NumberField unit tests --- src/demo-react/components/number-field.js | 4 ++ .../__snapshots__/number-field.test.js.snap | 13 ++++++ .../components/number-field.test.js | 40 +++++++++++++++++++ 3 files changed, 57 insertions(+) create mode 100644 test/demo-react/components/__snapshots__/number-field.test.js.snap create mode 100644 test/demo-react/components/number-field.test.js diff --git a/src/demo-react/components/number-field.js b/src/demo-react/components/number-field.js index 7c45b260..b72d7f47 100644 --- a/src/demo-react/components/number-field.js +++ b/src/demo-react/components/number-field.js @@ -35,6 +35,10 @@ export default function NumberField({ ) } +NumberField.defaultProps = { + isActive: false +}; + NumberField.propTypes = { actionType: PropTypes.string, children: PropTypes.node, diff --git a/test/demo-react/components/__snapshots__/number-field.test.js.snap b/test/demo-react/components/__snapshots__/number-field.test.js.snap new file mode 100644 index 00000000..3192d5ec --- /dev/null +++ b/test/demo-react/components/__snapshots__/number-field.test.js.snap @@ -0,0 +1,13 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`NumberField renders correctly 1`] = ` +" + 5 Description of Field +" +`; + +exports[`NumberField renders correctly when active 1`] = ` +" + 5 Description of Field +" +`; diff --git a/test/demo-react/components/number-field.test.js b/test/demo-react/components/number-field.test.js new file mode 100644 index 00000000..f5c650b8 --- /dev/null +++ b/test/demo-react/components/number-field.test.js @@ -0,0 +1,40 @@ +import React from 'react'; +import NumberField from 'demo-react/components/number-field'; +import { expectRenderToMatchSnapshot } from '../expect-render'; +import { render } from 'ink-testing-library'; + +describe('NumberField', () => { + it('renders correctly', () => { + const jsx = Description of Field; + const { lastFrame } = render(jsx); + + expect(lastFrame()).toMatchSnapshot(); + }); + + it('renders correctly when active', () => { + const jsx = Description of Field; + const { lastFrame } = render(jsx); + + expect(lastFrame()).toMatchSnapshot(); + }); + + it('accepts input', () => { + const jsx = Description of Field; + const { stdin, rerender, lastFrame } = render(jsx); + rerender(jsx); // Hack: Force React/Ink to run useEffect handlers so the useInput callback gets registered. + + stdin.write('6'); + + expect(lastFrame()).toContain('6'); + }); + + it('ignores input when inactive', () => { + const jsx = Description of Field; + const { stdin, rerender, lastFrame } = render(jsx); + rerender(jsx); // Hack: Force React/Ink to run useEffect handlers so the useInput callback gets registered. + + stdin.write('6'); + + expect(lastFrame()).toContain('5'); + }) +}); \ No newline at end of file From 4ccd2808bd01dad033b5209391def27e8ce238a8 Mon Sep 17 00:00:00 2001 From: Matt McKnett Date: Tue, 12 Jul 2022 12:11:21 -0700 Subject: [PATCH 51/75] Extract win information The win screen had a bunch of logic for calculating scores using Adagrams and the game state. This is similar to what redux calls "selectors". Extract those "selectors" into a class so that additional logic can be added. The extraction was done under test, but the tests rely on Adagrams working correctly, so I'm not merging them as-is. --- src/demo-react/gamestate/win-selectors.js | 28 +++++++++++++++++++++++ src/demo-react/screens/win.js | 21 ++++------------- 2 files changed, 33 insertions(+), 16 deletions(-) create mode 100644 src/demo-react/gamestate/win-selectors.js diff --git a/src/demo-react/gamestate/win-selectors.js b/src/demo-react/gamestate/win-selectors.js new file mode 100644 index 00000000..14942576 --- /dev/null +++ b/src/demo-react/gamestate/win-selectors.js @@ -0,0 +1,28 @@ +import Adagrams from 'demo/adagrams'; + +export class WinScreenInfo { + constructor(state) { + this.playerScores = state.players.map( + player => { + const flattenedWords = [].concat(...player.words); + const scores = flattenedWords.map(word => ({ word, score: Adagrams.scoreWord(word)})); + scores.sort((a, b) => b.score - a.score); // Sort by highest scoring word. + const totalScore = scores.reduce((sum, scoreAndWord) => sum + scoreAndWord.score, 0); + return { + name: player.name, + score: totalScore, + bestWord: scores.length > 0 && `${scores[0].word} (${scores[0].score})` || '' + }; + } + ); + this.playerScores.sort((a, b) => b.score - a.score); + } + + getWinningScore() { + return this.playerScores[0].score; + } + + getWinner() { + return this.playerScores[0].name; + } +} diff --git a/src/demo-react/screens/win.js b/src/demo-react/screens/win.js index 94cf1314..3edd928f 100644 --- a/src/demo-react/screens/win.js +++ b/src/demo-react/screens/win.js @@ -3,6 +3,7 @@ import React from 'react'; import { Box, Newline, Text, useApp } from 'ink'; import * as Actions from '../gamestate/action-types'; +import { WinScreenInfo } from '../gamestate/win-selectors'; import { Menu, MenuEntry } from '../components/menu'; import { useGameStateContext } from '../components/gamestate-context'; import Adagrams from 'demo/adagrams'; @@ -16,22 +17,10 @@ export default function Win() { MenuEntry('Quit', exit, 'red') ]; - const playerScores = state.players.map( - player => { - const flattenedWords = [].concat(...player.words); - const scores = flattenedWords.map(word => ({ word, score: Adagrams.scoreWord(word)})); - scores.sort((a, b) => b.score - a.score); // Sort by highest scoring word. - const totalScore = scores.reduce((sum, scoreAndWord) => sum + scoreAndWord.score, 0); - return { - name: player.name, - score: totalScore, - bestWord: scores.length > 0 && `${scores[0].word} (${scores[0].score})` || '' - }; - } - ); - playerScores.sort((a, b) => b.score - a.score); - const winningScore = playerScores[0].score; - const winner = playerScores[0].name; + const scores = new WinScreenInfo(state); + const playerScores = scores.playerScores; + const winningScore = scores.getWinningScore(); + const winner = scores.getWinner(); return ( Date: Tue, 12 Jul 2022 12:47:44 -0700 Subject: [PATCH 52/75] feat: Add the round high scores --- src/demo-react/gamestate/win-selectors.js | 14 ++++++++++++++ src/demo-react/screens/win.js | 6 +++++- 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/src/demo-react/gamestate/win-selectors.js b/src/demo-react/gamestate/win-selectors.js index 14942576..c4881cd6 100644 --- a/src/demo-react/gamestate/win-selectors.js +++ b/src/demo-react/gamestate/win-selectors.js @@ -16,6 +16,20 @@ export class WinScreenInfo { } ); this.playerScores.sort((a, b) => b.score - a.score); + + this.roundWinners = new Array(state.players[0].words.length); + for (let i = 0; i < this.roundWinners.length; ++i) { + const playerScoresThisRound = state.players.map(player => { + const scores = player.words[i].map(word => Adagrams.scoreWord(word)); + const roundScore = scores.reduce((sum, score) => sum + score, 0); + return { + score: roundScore, + name: player.name + }; + }); + playerScoresThisRound.sort((a, b) => b.score - a.score); + this.roundWinners[i] = playerScoresThisRound[0]; + } } getWinningScore() { diff --git a/src/demo-react/screens/win.js b/src/demo-react/screens/win.js index 3edd928f..fc03b8b6 100644 --- a/src/demo-react/screens/win.js +++ b/src/demo-react/screens/win.js @@ -19,6 +19,7 @@ export default function Win() { const scores = new WinScreenInfo(state); const playerScores = scores.playerScores; + const roundWinners = scores.roundWinners; const winningScore = scores.getWinningScore(); const winner = scores.getWinner(); @@ -67,7 +68,10 @@ export default function Win() { - TODO: Round scores go here + Round Winners: + { + roundWinners.map((p, i) => Round { i + 1 }: { p.name } ({ p.score })) + } From 21c53b1fc200ee50145904e5c925c70164195f51 Mon Sep 17 00:00:00 2001 From: Matt McKnett Date: Tue, 12 Jul 2022 14:30:27 -0700 Subject: [PATCH 53/75] fix: support backspace in number field --- src/demo-react/components/number-field.js | 28 ++++++--- .../components/number-field.test.js | 59 ++++++++++++++++++- 2 files changed, 77 insertions(+), 10 deletions(-) diff --git a/src/demo-react/components/number-field.js b/src/demo-react/components/number-field.js index b72d7f47..21e0011a 100644 --- a/src/demo-react/components/number-field.js +++ b/src/demo-react/components/number-field.js @@ -1,4 +1,4 @@ -import React, { useState } from 'react'; +import React, { useState, useCallback } from 'react'; import PropTypes from 'prop-types'; import { Box, Text, useInput } from 'ink'; @@ -10,20 +10,30 @@ export default function NumberField({ }) { const [tempInput, setTempInput] = useState(''); - // BUG: Backspace not support - useInput((input, key) => { + const inputHandler = useCallback((input, key) => { // Allow input that is all digits. if (/^[0-9]+$/.test(input)) { - setTempInput(tempInput + input); + setTempInput(curr => curr + input); + } + + if ((key.delete && !key.meta) || key.backspace) { + setTempInput(curr => curr.slice(0, -1)); } if (key.return) { - if (tempInput !== '') { - dispatch(action(actionType, Number(tempInput))); - } - setTempInput(''); + setTempInput(curr => { + if (curr !== '') { + // It's a little sketchy to dispatch this action as a side effect + // of resetting the temp input, but it does let us memoize this + // useInput handler. + dispatch(action(actionType, Number(curr))); + } + return ''; + }); } - }, { isActive }); + }, [setTempInput, dispatch, actionType]); + + useInput(inputHandler, { isActive }); return ( diff --git a/test/demo-react/components/number-field.test.js b/test/demo-react/components/number-field.test.js index f5c650b8..3bd54157 100644 --- a/test/demo-react/components/number-field.test.js +++ b/test/demo-react/components/number-field.test.js @@ -36,5 +36,62 @@ describe('NumberField', () => { stdin.write('6'); expect(lastFrame()).toContain('5'); - }) + }); + + it('supports backspace (mac delete)', () => { + const jsx = Description of Field; + const { stdin, rerender, lastFrame } = render(jsx); + rerender(jsx); // Hack: Force React/Ink to run useEffect handlers so the useInput callback gets registered. + + stdin.write('6'); + stdin.write('\u007F'); + stdin.write('8'); + + expect(lastFrame()).not.toContain('6'); + expect(lastFrame()).toContain('8'); + }); + + it('supports backspace', () => { + const jsx = Description of Field; + const { stdin, rerender, lastFrame } = render(jsx); + rerender(jsx); // Hack: Force React/Ink to run useEffect handlers so the useInput callback gets registered. + + stdin.write('6'); + stdin.write('\u0008'); + stdin.write('8'); + + expect(lastFrame()).not.toContain('6'); + expect(lastFrame()).toContain('8'); + }); + + it('commits the string on return', () => { + const dispatch = jest.fn(); + const jsx = ( + + Description of Field + + ); + const { stdin, rerender, lastFrame } = render(jsx); + rerender(jsx); // Hack: Force React/Ink to run useEffect handlers so the useInput callback gets registered. + + stdin.write('6'); + stdin.write('\r'); + + expect(dispatch).toHaveBeenCalledWith({ type: 'any-action', payload: 6 }); + }); + + it('supports multiple characters at once (paste)', () => { + const jsx = Description of Field; + const { stdin, rerender, lastFrame } = render(jsx); + rerender(jsx); // Hack: Force React/Ink to run useEffect handlers so the useInput callback gets registered. + + stdin.write('700'); + + expect(lastFrame()).toContain('700'); + }); }); \ No newline at end of file From 16a423c136093af5ae5edbb8a3acce94385c3674 Mon Sep 17 00:00:00 2001 From: Matt McKnett Date: Tue, 12 Jul 2022 14:31:58 -0700 Subject: [PATCH 54/75] test: update basic ui tests --- test/demo-react/__snapshots__/ui.test.js.snap | 57 +++++++++++++++++-- test/demo-react/ui.test.js | 53 +++++++++++++++-- 2 files changed, 100 insertions(+), 10 deletions(-) diff --git a/test/demo-react/__snapshots__/ui.test.js.snap b/test/demo-react/__snapshots__/ui.test.js.snap index bbeaeb4f..b7390110 100644 --- a/test/demo-react/__snapshots__/ui.test.js.snap +++ b/test/demo-react/__snapshots__/ui.test.js.snap @@ -1,18 +1,43 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -exports[`Button rendering Highlights the next item on right-arrow press 1`] = ` +exports[`Adagrams App Highlights quit on two right-arrow presses 1`] = ` "┌──────────────────────────────────────────────────────────────────────────────────────────────────┐ │ │ │ │ -│ ╭────────────────╮ ╭─────────────╮ ╭──────╮ │ -│ │ Start New Game │ │ How to Play │ │ Quit │ │ -│ ╰────────────────╯ ╰─────────────╯ ╰──────╯ │ +│ ╭────────────────╮ ╭─────────────╮ ╭──────╮ │ +│ │ Start New Game │ │ How to Play │ │ Quit │ │ +│ ╰────────────────╯ ╰─────────────╯ ╰──────╯ │ +│ │ +│ │ +└──────────────────────────────────────────────────────────────────────────────────────────────────┘" +`; + +exports[`Adagrams App Highlights the next item on right-arrow press 1`] = ` +"┌──────────────────────────────────────────────────────────────────────────────────────────────────┐ +│ │ +│ │ +│ ╭────────────────╮ ╭─────────────╮ ╭──────╮ │ +│ │ Start New Game │ │ How to Play │ │ Quit │ │ +│ ╰────────────────╯ ╰─────────────╯ ╰──────╯ │ │ │ │ │ └──────────────────────────────────────────────────────────────────────────────────────────────────┘" `; -exports[`Button rendering Renders correctly in the default state 1`] = ` +exports[`Adagrams App Quits if quit is selected 1`] = ` +"┌──────────────────────────────────────────────────────────────────────────────────────────────────┐ +│ │ +│ │ +│ ╭────────────────╮ ╭─────────────╮ ╭──────╮ │ +│ │ Start New Game │ │ How to Play │ │ Quit │ │ +│ ╰────────────────╯ ╰─────────────╯ ╰──────╯ │ +│ │ +│ │ +└──────────────────────────────────────────────────────────────────────────────────────────────────┘ +MainMenu: Received 'quit'." +`; + +exports[`Adagrams App Renders correctly in the default state 1`] = ` "┌──────────────────────────────────────────────────────────────────────────────────────────────────┐ │ │ │ │ @@ -23,3 +48,25 @@ exports[`Button rendering Renders correctly in the default state 1`] = ` │ │ └──────────────────────────────────────────────────────────────────────────────────────────────────┘" `; + +exports[`Adagrams App Shows the help screen 1`] = ` +"╭──────────────────────────────────────────────────────────────────────────────────────────────────╮ +│ │ +│ Select \\"Start New Game\\" to play. │ +│ │ +│ │ +│ Choose the number of players, rounds, and seconds each person has available for guessing. │ +│ Then, enter the name of each player. │ +│ │ +│ │ +│ Each round, a new set of 10 letters will be chosen. Each player has limited time to form words │ +│ out of the available letters. │ +│ Whoever has the highest scoring words across all rounds wins the game! │ +│ │ +│ │ +│ ╭─────────╮ │ +│ │ Go Back │ │ +│ ╰─────────╯ │ +│ │ +╰──────────────────────────────────────────────────────────────────────────────────────────────────╯" +`; diff --git a/test/demo-react/ui.test.js b/test/demo-react/ui.test.js index 67d580ba..da67de77 100644 --- a/test/demo-react/ui.test.js +++ b/test/demo-react/ui.test.js @@ -3,16 +3,59 @@ import App from 'demo-react/ui'; import { render } from 'ink-testing-library'; import { expectRenderToMatchSnapshot } from './expect-render'; -describe('Button rendering', () => { +const rightArrow = (renderResult, jsx) => { + const { stdin, rerender } = renderResult; + stdin.write('\u001B[C'); + rerender(jsx); // Hack: Force React/Ink to run useEffect handlers so the useInput callback gets registered. +} +const enter = stdin => stdin.write('\r'); + +describe('Adagrams App', () => { it('Renders correctly in the default state', () => { expectRenderToMatchSnapshot(); }); - it.skip('Highlights the next item on right-arrow press', () => { - const { stdin, lastFrame } = render(); + it('Highlights the next item on right-arrow press', () => { + const jsx = ; + const rr = render(jsx); + rr.rerender(jsx); // Hack: Force React/Ink to run useEffect handlers so the useInput callback gets registered. + + rightArrow(rr, jsx); + + expect(rr.lastFrame()).toMatchSnapshot(); + }); + + it('Highlights quit on two right-arrow presses', () => { + const jsx = ; + const rr = render(jsx); + rr.rerender(jsx); // Hack: Force React/Ink to run useEffect handlers so the useInput callback gets registered. + + rightArrow(rr, jsx); + rightArrow(rr, jsx); + + expect(rr.lastFrame()).toMatchSnapshot(); + }); + + it('Quits if quit is selected', () => { + const jsx = ; + const rr = render(jsx); + rr.rerender(jsx); // Hack: Force React/Ink to run useEffect handlers so the useInput callback gets registered. + + rightArrow(rr, jsx); + rightArrow(rr, jsx); + enter(rr.stdin); + + expect(rr.lastFrame()).toMatchSnapshot(); + }); + + it('Shows the help screen', () => { + const jsx = ; + const rr = render(jsx); + rr.rerender(jsx); // Hack: Force React/Ink to run useEffect handlers so the useInput callback gets registered. - stdin.write(String.fromCharCode(13) + String.fromCharCode(10)); // Try to send [Enter] + rightArrow(rr, jsx); + enter(rr.stdin); - expect(lastFrame()).toMatchSnapshot(); + expect(rr.lastFrame()).toMatchSnapshot(); }); }); From cce3b8250337bf3e9f102cd3030c94266d68501e Mon Sep 17 00:00:00 2001 From: Matt McKnett Date: Tue, 12 Jul 2022 14:40:22 -0700 Subject: [PATCH 55/75] fix: Remove unneeded error logging --- src/demo-react/screens/index.js | 3 --- src/demo-react/screens/main-menu.js | 4 +--- test/demo-react/__snapshots__/ui.test.js.snap | 3 +-- 3 files changed, 2 insertions(+), 8 deletions(-) diff --git a/src/demo-react/screens/index.js b/src/demo-react/screens/index.js index c2b20442..5203a3b9 100644 --- a/src/demo-react/screens/index.js +++ b/src/demo-react/screens/index.js @@ -1,6 +1,5 @@ import React from 'react'; -import { SetErrorAction } from '../gamestate/errors'; import { SwitchScreenAction, ScreenId, @@ -22,11 +21,9 @@ export default function ScreenDisplayer() { const showHowTo = () => dispatch(new SwitchScreenAction(ScreenId.HOW_TO)); const showSetupGame = () => dispatch(new SwitchScreenAction(ScreenId.SETUP)); - const log = (msg) => dispatch(new SetErrorAction(msg)); let screen = ( diff --git a/src/demo-react/screens/main-menu.js b/src/demo-react/screens/main-menu.js index fed93b9b..a73373c0 100644 --- a/src/demo-react/screens/main-menu.js +++ b/src/demo-react/screens/main-menu.js @@ -5,7 +5,7 @@ import { Box, useApp } from 'ink'; import { Menu, MenuEntry } from '../components/menu'; -export default function MainMenu({ log, onHelpSelected, onStartSelected }) { +export default function MainMenu({ onHelpSelected, onStartSelected }) { const { exit } = useApp(); const mainMenu = [ MenuEntry('Start New Game', 'start'), @@ -14,7 +14,6 @@ export default function MainMenu({ log, onHelpSelected, onStartSelected }) { ]; const handleSelection = (selectionId) => { - log(`MainMenu: Received '${selectionId}'.`); // TODO: Remove error log; it's unnecessary switch(selectionId) { case 'quit': exit(); break; case 'help': onHelpSelected(); break; @@ -36,7 +35,6 @@ export default function MainMenu({ log, onHelpSelected, onStartSelected }) { } MainMenu.propTypes = { - log: PropTypes.func, onHelpSelected: PropTypes.func.isRequired, onStartSelected: PropTypes.func.isRequired } diff --git a/test/demo-react/__snapshots__/ui.test.js.snap b/test/demo-react/__snapshots__/ui.test.js.snap index b7390110..8474d558 100644 --- a/test/demo-react/__snapshots__/ui.test.js.snap +++ b/test/demo-react/__snapshots__/ui.test.js.snap @@ -33,8 +33,7 @@ exports[`Adagrams App Quits if quit is selected 1`] = ` │ ╰────────────────╯ ╰─────────────╯ ╰──────╯ │ │ │ │ │ -└──────────────────────────────────────────────────────────────────────────────────────────────────┘ -MainMenu: Received 'quit'." +└──────────────────────────────────────────────────────────────────────────────────────────────────┘" `; exports[`Adagrams App Renders correctly in the default state 1`] = ` From fe4634898479c88c1ca8516e17af2ae57fc119ed Mon Sep 17 00:00:00 2001 From: Matt McKnett Date: Tue, 12 Jul 2022 15:11:08 -0700 Subject: [PATCH 56/75] fix: Don't dispatch as a setState side effect Not only was it sketchy, React doesn't allow it and throws an error. --- src/demo-react/components/number-field.js | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/demo-react/components/number-field.js b/src/demo-react/components/number-field.js index 21e0011a..9ab8e0fa 100644 --- a/src/demo-react/components/number-field.js +++ b/src/demo-react/components/number-field.js @@ -21,15 +21,16 @@ export default function NumberField({ } if (key.return) { + let stateToCommit = ''; + setTempInput(curr => { - if (curr !== '') { - // It's a little sketchy to dispatch this action as a side effect - // of resetting the temp input, but it does let us memoize this - // useInput handler. - dispatch(action(actionType, Number(curr))); - } + stateToCommit = curr; return ''; }); + + if (stateToCommit) { + dispatch(action(actionType, Number(stateToCommit))); + } } }, [setTempInput, dispatch, actionType]); From d92d9bf3007895b32bcc096d73122033d493835f Mon Sep 17 00:00:00 2001 From: Matt McKnett Date: Tue, 12 Jul 2022 15:30:52 -0700 Subject: [PATCH 57/75] fix: Update all menus to use callbacks instead of ids --- src/demo-react/components/menu.js | 21 ++++++++------------ src/demo-react/screens/game-setup.js | 18 +++-------------- src/demo-react/screens/how-to.js | 21 +++++++++++++------- src/demo-react/screens/index.js | 29 ++++++---------------------- src/demo-react/screens/main-menu.js | 27 +++++++++----------------- 5 files changed, 40 insertions(+), 76 deletions(-) diff --git a/src/demo-react/components/menu.js b/src/demo-react/components/menu.js index c2e77547..1c04c150 100644 --- a/src/demo-react/components/menu.js +++ b/src/demo-react/components/menu.js @@ -6,23 +6,23 @@ import { Box, useInput } from 'ink'; import Button from './button'; -export const MenuEntry = (title, selectionId, color) => ({ +export const MenuEntry = (title, onItemSelected, color) => ({ color, title, - selectionId + onItemSelected }); MenuEntry.propTypes = PropTypes.shape({ title: PropTypes.string, - selecitonId: PropTypes.string, + onItemSelected: PropTypes.func, color: PropTypes.string }); -export const Menu = ({ isActive, items, onFocusPrevious, onItemSelected, width }) => { +export const Menu = ({ isActive, items, onFocusPrevious, width }) => { const menu = items; const [selectedIdx, setSelectedIdx] = useState(0); - const inputHandler = (input, key) => { + const inputHandler = (_, key) => { if (key.upArrow || key.leftArrow || (key.shift && key.tab)) { setSelectedIdx(Math.max(0, selectedIdx - 1)); if (selectedIdx - 1 < 0) { @@ -31,12 +31,8 @@ export const Menu = ({ isActive, items, onFocusPrevious, onItemSelected, width } } else if (key.downArrow || key.rightArrow || (key.tab)) { setSelectedIdx(Math.min(menu.length - 1, selectedIdx + 1)); } else if (key.return) { - const selectedItemId = menu[selectedIdx].selectionId; - if (typeof selectedItemId === 'function') { - selectedItemId(); - } else { - onItemSelected(selectedItemId); - } + const onItemSelected = menu[selectedIdx].onItemSelected; + onItemSelected(); } }; @@ -74,6 +70,5 @@ Menu.propTypes = { Menu.defaultProps = { isActive: true, - onFocusPrevious: () => {}, - onItemSelected: () => {} + onFocusPrevious: () => {} } diff --git a/src/demo-react/screens/game-setup.js b/src/demo-react/screens/game-setup.js index 607294ee..cf902b89 100644 --- a/src/demo-react/screens/game-setup.js +++ b/src/demo-react/screens/game-setup.js @@ -32,21 +32,10 @@ export default function SetupGame() { setSelectedField(fields[idxMenu - 1]); } - // TODO: MenuEntry could use a callback instead of this selection ID concept. const menu = [ - MenuEntry('Enter Names', 'names'), - MenuEntry('Go Back', 'go-back') - ] - const handleSelection = (selectionId) => { - switch(selectionId) { - case 'names': - dispatch(new SwitchScreenAction(ScreenId.ENTER_PLAYERS)); - break; - case 'go-back': - dispatch(new SwitchScreenAction(ScreenId.MAIN_MENU)); - break; - } - } + MenuEntry('Enter Names', () => dispatch(new SwitchScreenAction(ScreenId.ENTER_PLAYERS))), + MenuEntry('Go Back', () => dispatch(new SwitchScreenAction(ScreenId.MAIN_MENU))) + ]; return ( dispatch( + new SwitchScreenAction(ScreenId.MAIN_MENU) + ) + ) + ]; return ( Whoever has the highest scoring words across all rounds wins the game! - + ) }; - -HowTo.propTypes = { - showMainMenu: PropTypes.func.isRequired -} diff --git a/src/demo-react/screens/index.js b/src/demo-react/screens/index.js index 5203a3b9..46618d49 100644 --- a/src/demo-react/screens/index.js +++ b/src/demo-react/screens/index.js @@ -1,11 +1,6 @@ import React from 'react'; -import { - SwitchScreenAction, - ScreenId, - onHelpScreen, - onSetupScreen -} from '../gamestate/screens'; +import { ScreenId } from '../gamestate/screens'; import HowTo from './how-to'; import MainMenu from './main-menu'; @@ -17,25 +12,13 @@ import { useGameStateContext } from '../components/gamestate-context'; import ErrorViewer from '../components/error-viewer'; export default function ScreenDisplayer() { - const { state, dispatch } = useGameStateContext(); + const { state } = useGameStateContext(); - const showHowTo = () => dispatch(new SwitchScreenAction(ScreenId.HOW_TO)); - const showSetupGame = () => dispatch(new SwitchScreenAction(ScreenId.SETUP)); + let screen = ; - let screen = ( - - ); - - if (onHelpScreen(state)) { - const showMainMenu = () => dispatch( - new SwitchScreenAction(ScreenId.MAIN_MENU) - ); - - screen = ; - } else if (onSetupScreen(state)) { + if (state.currentScreen === ScreenId.HOW_TO) { + screen = ; + } else if (state.currentScreen === ScreenId.SETUP) { screen = ; } else if (state.currentScreen === ScreenId.ENTER_PLAYERS) { screen = ; diff --git a/src/demo-react/screens/main-menu.js b/src/demo-react/screens/main-menu.js index a73373c0..573f0707 100644 --- a/src/demo-react/screens/main-menu.js +++ b/src/demo-react/screens/main-menu.js @@ -3,24 +3,20 @@ import PropTypes from 'prop-types'; import { Box, useApp } from 'ink'; +import { useGameStateContext } from '../components/gamestate-context'; import { Menu, MenuEntry } from '../components/menu'; +import { SwitchScreenAction, ScreenId } from '../gamestate/screens'; -export default function MainMenu({ onHelpSelected, onStartSelected }) { +export default function MainMenu() { const { exit } = useApp(); + const { dispatch } = useGameStateContext(); + const mainMenu = [ - MenuEntry('Start New Game', 'start'), - MenuEntry('How to Play', 'help'), - MenuEntry('Quit', 'quit', 'red') + MenuEntry('Start New Game', () => dispatch(new SwitchScreenAction(ScreenId.SETUP))), + MenuEntry('How to Play', () => dispatch(new SwitchScreenAction(ScreenId.HOW_TO))), + MenuEntry('Quit', exit, 'red') ]; - const handleSelection = (selectionId) => { - switch(selectionId) { - case 'quit': exit(); break; - case 'help': onHelpSelected(); break; - case 'start': onStartSelected(); break; - } - } - return ( - + ); } - -MainMenu.propTypes = { - onHelpSelected: PropTypes.func.isRequired, - onStartSelected: PropTypes.func.isRequired -} From 81bb4e8b2e3258d8b712543c55dc04b3e5a6de3d Mon Sep 17 00:00:00 2001 From: Matt McKnett Date: Tue, 12 Jul 2022 15:37:05 -0700 Subject: [PATCH 58/75] tiny: Update the debugging data --- src/demo-react/gamestate/reducer.js | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/src/demo-react/gamestate/reducer.js b/src/demo-react/gamestate/reducer.js index 07854b56..6afe9fa3 100644 --- a/src/demo-react/gamestate/reducer.js +++ b/src/demo-react/gamestate/reducer.js @@ -9,7 +9,7 @@ import { timerMiddleware } from './timer'; import Adagrams from 'demo/adagrams'; -const GO_STRAIGHT_TO_GAME = false; +const GO_STRAIGHT_TO_WIN = false; const initialState_real = { currentScreen: ScreenId.MAIN_MENU, @@ -26,9 +26,9 @@ const initialState_real = { players: [], // No players known initially. }; -// For debugging, this goes straight to the game screen: -const initialState_straighttoGame = { - currentScreen: ScreenId.GAME, +// For debugging, this goes straight to the win screen: +const initialState_straighttoWin = { + currentScreen: ScreenId.WIN, lastError: "", // The error set by the last action // in-game props gameTimer: 5, // seconds @@ -40,14 +40,14 @@ const initialState_straighttoGame = { desiredPlayers: 4, roundsPerGame: 2, players: [ - { name: 'First Player', words: [[]]}, - { name: 'Second Player', words: [[]]}, - { name: 'Third Player', words: [[]]}, - { name: 'Fourth Player', words: [[]]} + { name: 'Max', words: [['HELL', 'LOW'], ['WORLD']]}, + { name: 'Min Soo Jung', words: [[], ['OLE']]}, + { name: 'Alexandria', words: [['HELLO'], ['DROLE', 'ROLE']]}, + { name: 'Jacqueline', words: [['DROOL'], ['ROWL']]} ], }; -export const initialState = GO_STRAIGHT_TO_GAME ? initialState_straighttoGame : initialState_real; +export const initialState = GO_STRAIGHT_TO_WIN ? initialState_straighttoWin : initialState_real; // TODO: We need a break in between turns! // TODO: How could we deal with the first player getting more time to think? From ebeefb0350e2435cdccc60606995499866c5ac39 Mon Sep 17 00:00:00 2001 From: Matt McKnett Date: Tue, 12 Jul 2022 16:16:21 -0700 Subject: [PATCH 59/75] Mock Adagrams for reducer tests --- test/demo-react/gamestate/reducer.test.js | 26 +++++++++++++++++------ 1 file changed, 19 insertions(+), 7 deletions(-) diff --git a/test/demo-react/gamestate/reducer.test.js b/test/demo-react/gamestate/reducer.test.js index 7240a8c0..dc6b1523 100644 --- a/test/demo-react/gamestate/reducer.test.js +++ b/test/demo-react/gamestate/reducer.test.js @@ -3,6 +3,17 @@ import * as Actions from 'demo-react/gamestate/action-types'; import makeAction from 'demo-react/gamestate/generic-action'; import { ScreenId } from 'demo-react/gamestate/screens'; +import Adagrams from 'demo/adagrams'; + +jest.mock('demo/adagrams', () => { + return { + drawLetters: jest.fn(() => ["H", "E", "L", "L", "O", "W", "O", "R", "L", "D"]), + usesAvailableLetters: jest.fn(() => true), + scoreWord: jest.fn(), + highestScoreFrom: jest.fn(), + }; +}); + // Some actions merely replace the value of a specific state key with the // action payload. This is a generic function to test those states. function assertSimpleActionUpdatesKey(actionType, keyName, value = 'any-value') { @@ -340,7 +351,7 @@ describe('Game state reducer', () => { const actualState = reducer(inGameState, guessWhole); - expect(expectedState).toEqual(actualState); + expect(actualState).toEqual(expectedState); }); test('Guessing a lower-case word guesses the uppercase word', () => { @@ -351,10 +362,11 @@ describe('Game state reducer', () => { const actualState = reducer(inGameState, guessWhole); - expect(expectedState).toEqual(actualState); + expect(actualState).toEqual(expectedState); }); test('Guessing an invalid word sets an error about the word being invalid', () => { + Adagrams.usesAvailableLetters.mockReturnValueOnce(false); const guessHippo = makeAction(Actions.GUESS, 'HIPPO'); const expectedState = { ...inGameState, lastError: "HIPPO isn't valid!" @@ -362,7 +374,7 @@ describe('Game state reducer', () => { const actualState = reducer(inGameState, guessHippo); - expect(expectedState).toEqual(actualState); + expect(actualState).toEqual(expectedState); }); test('Guessing a word used this round sets an error about duplicate guesses', () => { @@ -373,7 +385,7 @@ describe('Game state reducer', () => { const actualState = reducer(inGameState, guessWorld); - expect(expectedState).toEqual(actualState); + expect(actualState).toEqual(expectedState); }); test('Guessing a word used in a previous round does NOT set an error about duplicate guesses', () => { @@ -384,7 +396,7 @@ describe('Game state reducer', () => { const actualState = reducer(inGameState, guessHello); - expect(expectedState).toEqual(actualState); + expect(actualState).toEqual(expectedState); }); test('Guessing an empty word sets an error about a guess being required', () => { @@ -395,7 +407,7 @@ describe('Game state reducer', () => { const actualState = reducer(inGameState, guessEmptyWord); - expect(expectedState).toEqual(actualState); + expect(actualState).toEqual(expectedState); }); }); @@ -415,7 +427,7 @@ describe('Game state reducer', () => { delete expectedState.currentHand; delete actualState.currentHand; - expect(expectedState).toMatchObject(actualState); + expect(actualState).toMatchObject(expectedState); }) }) }); \ No newline at end of file From 8be461493454e65af27947e4431fc6fdb94c54e5 Mon Sep 17 00:00:00 2001 From: Matt McKnett Date: Tue, 12 Jul 2022 16:59:44 -0700 Subject: [PATCH 60/75] fix: Eliminate unique key error --- src/demo-react/screens/win.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/demo-react/screens/win.js b/src/demo-react/screens/win.js index fc03b8b6..d2d19fe2 100644 --- a/src/demo-react/screens/win.js +++ b/src/demo-react/screens/win.js @@ -70,7 +70,7 @@ export default function Win() { > Round Winners: { - roundWinners.map((p, i) => Round { i + 1 }: { p.name } ({ p.score })) + roundWinners.map((p, i) => Round { i + 1 }: { p.name } ({ p.score })) } From f658baa9c53f88104d42a7391f36e80acbd71f83 Mon Sep 17 00:00:00 2001 From: Matt McKnett Date: Tue, 12 Jul 2022 17:11:17 -0700 Subject: [PATCH 61/75] Remove vorpal demo game --- package.json | 6 +- src/demo.js | 7 - src/demo/adagrams.js | 2 +- src/demo/controller.js | 61 -------- src/demo/messages.js | 11 -- src/demo/model.js | 140 ----------------- src/demo/view.js | 126 --------------- test/demo/model.test.js | 338 ---------------------------------------- yarn.lock | 252 +----------------------------- 9 files changed, 11 insertions(+), 932 deletions(-) delete mode 100644 src/demo.js delete mode 100644 src/demo/controller.js delete mode 100644 src/demo/messages.js delete mode 100644 src/demo/model.js delete mode 100644 src/demo/view.js delete mode 100644 test/demo/model.test.js diff --git a/package.json b/package.json index b8954c39..5549f974 100644 --- a/package.json +++ b/package.json @@ -6,8 +6,7 @@ "scripts": { "test": "jest", "coverage": "open coverage/lcov-report/index.html", - "demo-game": "babel-node src/demo.js", - "demo-game-react": "babel-node src/demo-react/cli.js" + "demo-game": "babel-node src/demo-react/cli.js" }, "repository": { "type": "git", @@ -38,7 +37,6 @@ "ink": "^3.2.0", "ink-text-input": "^4.0.3", "prop-types": "^15.8.1", - "react": "^18.1.0", - "vorpal": "^1.12.0" + "react": "17.0.2" } } diff --git a/src/demo.js b/src/demo.js deleted file mode 100644 index 3f8a67f2..00000000 --- a/src/demo.js +++ /dev/null @@ -1,7 +0,0 @@ -import Model from 'demo/model'; -import View from 'demo/view'; -import Controller from 'demo/controller'; - -// Initialize the controller I guess -const game = new Controller(Model, View); -game.start(); diff --git a/src/demo/adagrams.js b/src/demo/adagrams.js index 135abd7f..0a0cdd1c 100644 --- a/src/demo/adagrams.js +++ b/src/demo/adagrams.js @@ -36,7 +36,7 @@ const Stub = { return Real.scoreWord(word); } - return -1; + return 1; }, highestScoreFrom(words) { diff --git a/src/demo/controller.js b/src/demo/controller.js deleted file mode 100644 index 4360699a..00000000 --- a/src/demo/controller.js +++ /dev/null @@ -1,61 +0,0 @@ -class Controller { - constructor(model, view) { - this.model = model; - this.view = view; - - this.view.init({ - play: this.play.bind(this), - exit: this.exit.bind(this), - }); - } - - start() { - this.view.start(); - } - - play(players, rounds = 3, time = 60) { - // Create a new game instance - this.game = new this.model({ - players, rounds, time - }); - - this.view.newGame(this.game); - - // Advance to the first round - this.advanceRound(); - } - - advanceRound() { - const gameState = this.game.nextRound(); - if(gameState.gameOver) { - this.view.gameOver(gameState); - } else { - this.view.newRound(this.game); - this.startTurn(); - } - } - - startTurn() { - this.view.playerTurn(this.game, { - playWord: this.game.playWord.bind(this.game), - endTurn: this.endTurn.bind(this), - }); - } - - endTurn() { - // Advance to next player - const roundState = this.game.nextTurn(); - const callback = (roundState.roundOver - ? this.advanceRound - : this.startTurn).bind(this); - - return { roundState, callback }; - } - - exit() { - this.view.exit(); - process.exit(); - } -} - -export default Controller; diff --git a/src/demo/messages.js b/src/demo/messages.js deleted file mode 100644 index 6c1d24e5..00000000 --- a/src/demo/messages.js +++ /dev/null @@ -1,11 +0,0 @@ -export default { - intro: 'Welcome to Adagrams!', - exit: 'Thank you for playing Adagrams!', - - newGame: 'Starting a new game of Adagrams...', - newRound: (curr, total) => `Round ${curr} of ${total}:`, - playWordSuccess: (word, score) => `Played ${word} for ${score} points.`, - playWordFailure: (word) => `Invalid word: ${word}.`, - roundOver: (winner) => `Round over! The winner of this round is ${winner.player} who got ${winner.word} for ${winner.score} points!`, - gameOver: (winner) => `Game over! Our winner is.... ${winner.player} with a total score of ${winner.score}!`, -}; diff --git a/src/demo/model.js b/src/demo/model.js deleted file mode 100644 index 1a0ba47b..00000000 --- a/src/demo/model.js +++ /dev/null @@ -1,140 +0,0 @@ -import Adagrams from 'demo/adagrams'; - -class Model { - constructor(config) { - if(!config) { - throw new Error('Model requires a config parameter.'); - } - - this.config = config; - - // Initialize game state - this.round = 0; - this.currentPlayer = null; - this.letterBank = null; - - /* Plays history structure is: - { - playerOne: [ - ["APPLE", "PAPA", "LEAP"], // round 1 - ["WALK", "WALKER", "RAKE"], // round 2 - ], - - playerTwo: [ - ["PALE", "PELT"], // round 1 - ["REAL", "WALTER", "TALKER"], // round 2 - ], - } - */ - this.plays = this.config.players.reduce((plays, player) => { - plays[player] = []; - return plays; - }, {}); - } - - currentPlayerName() { - if(this.currentPlayer === null) return null; - - return this._playerName(this.currentPlayer); - } - - // Start the next round of the game - nextRound() { - this.round++; - this.currentPlayer = 0; - - const gameOver = this.round > this.config.rounds; - if(gameOver) { - return { gameOver, winner: this._gameWinner() }; - } - - // Draw the letter bank - this.letterBank = Adagrams.drawLetters(); - - // Initialize player history for this round - this.config.players.forEach((player) => { - this.plays[player][this.round - 1] = []; - }); - - return { gameOver, winner: null }; - } - - nextTurn() { - this.currentPlayer++; - - const roundOver = this.currentPlayer >= this.config.players.length; - const winner = !roundOver ? null : this._roundWinner(this.round); - - return { roundOver, winner }; - } - - playWord(word) { - word = word.toUpperCase(); - - if(!this._valid(word)) return null; - - this._recordPlay(word); - - return Adagrams.scoreWord(word); - } - - _valid(word, letterBank = this.letterBank) { - if(word.length < 1) return false; - return Adagrams.usesAvailableLetters(word, letterBank); - } - - _playerName(player) { - return this.config.players[player]; - } - - _recordPlay(word, player = this.currentPlayer, round = this.round) { - this.plays[this._playerName(player)][round - 1].push(word); - } - - _bestPlay(round, player) { - const plays = this.plays[player][round - 1]; - if(plays.length < 1) { - return null; - } - - return Adagrams.highestScoreFrom(plays); - } - - _roundWinner(round) { - const bestPlays = this.config.players - .map((player) => ({ player, ...this._bestPlay(round, player) })) - .filter(({ player, word, score }) => word !== undefined); - - if(bestPlays.length < 1) { - return { player: '', word: '', score: 0 }; - } - - const { word: winningWord } = Adagrams.highestScoreFrom(bestPlays.map(({ word }) => word)); - return bestPlays.find(({ word }) => word === winningWord); - } - - _gameWinner() { - // Add up the scores for each player, counting only the rounds where they won - const roundWinners = []; - for(let round = 1; round <= this.config.rounds; round++) { - const winner = this._roundWinner(round); - const existing = roundWinners.find(({ player }) => player === winner.player); - - if(existing) { - existing.score += winner.score; - } else { - roundWinners.push(winner); - } - } - - return roundWinners.reduce((gameWinner, roundWinner) => { - if(roundWinner.score > gameWinner.score) { - gameWinner = roundWinner; - } - - return gameWinner; - }, { player: '', score: 0 }); - } -} - -export default Model; diff --git a/src/demo/view.js b/src/demo/view.js deleted file mode 100644 index 4fdc2096..00000000 --- a/src/demo/view.js +++ /dev/null @@ -1,126 +0,0 @@ -import Vorpal from 'vorpal'; -import MESSAGES from 'demo/messages.js'; - -const menu = new Vorpal(); - -const View = { - start(play, exit) { - menu.log(MESSAGES.intro); - - menu.show(); - }, - - newGame(model) { - menu.log(MESSAGES.newGame); - }, - - newRound(model) { - menu.log(MESSAGES.newRound(model.round, model.config.rounds)); - }, - - playerTurn(model, callbacks) { - const game = new Vorpal(); - game - .delimiter('') - .show(); - - game.log(model.letterBank.join(' ')); - - game - .mode('playerTurn') - .delimiter(`Now playing: ${model.currentPlayerName()}>`) - .action((word, done) => { - const result = callbacks.playWord(word); - - if(Number.isInteger(result)) { - game.log(MESSAGES.playWordSuccess(word, result)); - } else { - game.log(MESSAGES.playWordFailure(word)); - } - - done(); - }); - - game.exec('playerTurn'); - - // Player's turn is over when the mode exits - game.on('mode_exit', () => { - const {roundState, callback} = callbacks.endTurn(); - if(roundState.roundOver) { - menu.log(MESSAGES.roundOver(roundState.winner)); - game.hide(); - } - - // In order to let this turn finish and the Vorpal object to get GC'd - // we should enqueue the callback rather than run it now - setTimeout(callback, 0); - }); - }, - - gameOver(gameState) { - menu.log(MESSAGES.gameOver(gameState.winner)); - menu.show(); - }, - - exit() { - menu.log(MESSAGES.exit); - }, - - init(callbacks) { - menu.delimiter('Adagrams>'); - - menu - .command('start [players]') - .description('Play a game of Adagrams. ') - .alias('play', 's', 'p') - .option('-r, --rounds ', 'Number of rounds') - .option('-t, --time ', 'Time for each round in seconds') - .action((args, done) => { - const numPlayers = args.players; - const rounds = args.options.rounds; - const time = args.options.time; - - // Player name selection - const validName = (name) => /\w/.test(name.trim()); - - let questions; - if(!Number.isInteger(numPlayers) || numPlayers < 2) { - // Default to a solo game - questions = [{ - name: 'player0', - message: 'Player Name: ', - validate: validName - }]; - } else { - questions = [...Array(numPlayers).keys()].map((n) => ({ - name: `player${n}`, - message: `Player ${n + 1} Name: `, - validate: validName - })); - } - - menu.activeCommand.prompt(questions, (answers) => { - const PROP_REGEX = /^player(\d+)$/; - - let playerNames = - Object.entries(answers) - .map(([prop, val]) => [PROP_REGEX.exec(prop), val.trim()]) - .filter(([match, val]) => !!match) - .sort(([[_, leftNum]], [[__, rightNum]]) => Number(leftNum) - Number(rightNum)) - .map(([_, name]) => name); - - callbacks.play(playerNames, rounds, time); - done(); - }); - }); - - menu - .find('exit') - .action((_, done) => { - callbacks.exit(); - done(); - }); - }, -}; - -export default View; diff --git a/test/demo/model.test.js b/test/demo/model.test.js deleted file mode 100644 index 49bf9599..00000000 --- a/test/demo/model.test.js +++ /dev/null @@ -1,338 +0,0 @@ -import Model from 'demo/model'; -import Adagrams from 'demo/adagrams'; - -describe.skip('Game Model', () => { - const config = { - players: [ - 'Player A', - 'Player B', - ], - rounds: 3, - time: 60, // Seconds - }; - - describe('constructor', () => { - it('creates a new Model instance', () => { - const model = new Model(config); - - expect(model).toBeInstanceOf(Model); - }); - - it('requires a config parameter', () => { - expect(() => { - const model = new Model(); - }).toThrow(/config/); - }); - - it('initializes the round number to zero', () => { - const model = new Model(config); - - expect(model.round).toBe(0); - }); - - it('initializes the current player to null', () => { - const model = new Model(config); - - expect(model.currentPlayer).toBe(null); - }); - - it('initializes the letter bank to null', () => { - const model = new Model(config); - - expect(model.letterBank).toBe(null); - }); - - it('initializes the plays history', () => { - const model = new Model(config); - - expect(model.plays).toBeInstanceOf(Object); - config.players.forEach((player) => { - expect(model.plays).toHaveProperty(player); - expect(model.plays[player]).toBeInstanceOf(Array); - expect(model.plays[player]).toHaveLength(0); - }); - }); - }); - - describe('.currentPlayerName()', () => { - it('is defined', () => { - const model = new Model(config); - - expect(model.currentPlayerName).toBeDefined(); - }); - - it('returns the name of the current player when game is on-going', () => { - const model = new Model(config); - - model.nextRound(); - - expect(model.currentPlayerName()).toEqual(model.config.players[0]); - }); - - it('returns null when the game is not on-going', () => { - const model = new Model(config); - - expect(model.currentPlayerName()).toBe(null); - }); - }); - - describe('.nextRound', () => { - it('is defined', () => { - const model = new Model(config); - - expect(model.nextRound).toBeDefined(); - }); - - it('increments the round number', () => { - const model = new Model(config); - const roundBefore = model.round; - - model.nextRound(); - - expect(model.round).toBe(roundBefore + 1); - }); - - it('initializes the current player number to first player', () => { - const model = new Model(config); - - model.nextRound(); - - expect(model.currentPlayer).toBe(0); - }); - - it('initializes the round play history for first player', () => { - const model = new Model(config); - - model.nextRound(); - - config.players.forEach((player) => { - const roundPlays = model.plays[player][model.round - 1]; - - expect(roundPlays).toBeInstanceOf(Array); - expect(roundPlays).toHaveLength(0); - }); - }); - - it('draws a new hand of letters', () => { - const model = new Model(config); - - model.nextRound(); - - expect(model.letterBank).toBeInstanceOf(Array); - expect(model.letterBank).toHaveLength(10); - model.letterBank.forEach((letter) => { - expect(letter).toMatch(/^[A-Z]$/); - }); - }); - - describe('returns game state', () => { - it('gameOver', () => { - const model = new Model({ ...config, rounds: 1 }); - - const gameState = model.nextRound(); - - expect(gameState).toBeInstanceOf(Object); - expect(gameState.gameOver).toBe(false); - - const gameOverState = model.nextRound(); - expect(gameOverState.gameOver).toBe(true); - }); - - it('winner', () => { - const model = new Model({ ...config, rounds : 2 }); - - // Start game, no one has won yet - let gameState = model.nextRound(); - expect(gameState.winner).toBe(null); - - // First player plays a word - let p1Score = 0; - let word = model.letterBank.slice(0, 5).join(''); - p1Score += model.playWord(word); - - // Second player does not play - model.nextTurn(); - gameState = model.nextRound(); - // Game is not over, so no winner yet - expect(gameState.winner).toBe(null); - - // First player plays another word - word = model.letterBank.slice(0, 5).join(''); - p1Score += model.playWord(word); - - // Second player does not play again - model.nextTurn(); - gameState = model.nextRound(); - - // Game is over now, first player has won - expect(gameState.winner).toMatchObject({ - player: config.players[0], - score: p1Score, - }); - }); - }); - }); - - describe('.nextTurn', () => { - const getModel = () => { - const model = new Model(config); - model.nextRound(); - - return model; - }; - - it('is defined', () => { - const model = getModel(); - - expect(model.nextTurn).toBeDefined(); - }); - - it('increments the current player index', () => { - const model = getModel(); - const origPlayer = model.currentPlayer; - - model.nextTurn(); - expect(model.currentPlayer).toBe(origPlayer + 1); - - model.nextTurn(); - expect(model.currentPlayer).toBe(origPlayer + 2); - }); - - describe('returns round state', () => { - it('roundOver', () => { - const model = getModel(); - - const roundState = model.nextTurn(); - - // Expect that we have at least two players, or round is over immediately - expect(config.players.length).toBeGreaterThan(1); - - expect(roundState).toBeInstanceOf(Object); - expect(roundState).toHaveProperty('roundOver'); - expect(roundState.roundOver).toBe(false); - - // Advance to the final turn - config.players.slice(2).forEach(() => { - model.nextTurn(); - }); - - // Complete the final turn, round should be over - const roundOverState = model.nextTurn(); - expect(roundOverState.roundOver).toBe(true); - }); - - it('winner', () => { - const model = getModel(); - - const roundState = model.nextTurn(); - - // winner should be null if round is not over - expect(roundState.roundOver).toBe(false); - expect(roundState.winner).toBe(null); - - // Advance to the final turn - config.players.slice(2).forEach(() => { - model.nextTurn(); - }); - - // Play a word as the last player - const word = model.letterBank.slice(0, 5).join(''); - const score = model.playWord(word); - - // Complete the final turn, round is over and winner should be set - const roundOverState = model.nextTurn(); - expect(roundOverState.roundOver).toBe(true); - - expect(roundOverState.winner).toBeInstanceOf(Object); - expect(roundOverState.winner).toMatchObject({ - word, - score, - player: config.players[config.players.length - 1], - }); - }); - }); - }); - - describe('.playWord', () => { - const getModel = () => { - const model = new Model(config); - model.nextRound(); - - return model; - }; - - const getPlays = (model, player, round) => { - return [...(model.plays[player][round - 1] || [])]; - }; - - it('is defined', () => { - const model = getModel(); - - expect(model.playWord).toBeDefined(); - }); - - describe('for valid words', () => { - const getWord = (model) => { - return model.letterBank.slice(0, 5).join(''); - }; - - it('it returns the word score', () => { - const model = getModel(); - const word = getWord(model); - const score = Adagrams.scoreWord(word); - - expect(model.playWord(word)).toBe(score); - }); - - it('adds word to plays history for current player', () => { - const model = getModel(); - const player = model.currentPlayerName(); - const origPlays = getPlays(model, player, model.round); - - const word1 = getWord(model); - model.playWord(word1); - expect(getPlays(model, player, model.round)).toEqual([...origPlays, word1]); - - const word2 = getWord(model); - model.playWord(word2); - expect(getPlays(model, player, model.round)).toEqual([...origPlays, word1, word2]); - }); - - it('validates word case-insensitively', () => { - const model = getModel(); - const word = getWord(model); - const score = Adagrams.scoreWord(word); - - expect(model.playWord(word.toLowerCase())).toBe(score); - }); - }); - - describe('for invalid words', () => { - const getWord = (model) => { - const letter = model.letterBank[0]; - return letter.repeat(model.letterBank.filter((l) => { - return l === letter; - }).length + 1); - }; - - it('it returns null', () => { - const model = getModel(); - const word = getWord(model); - - expect(model.playWord(word)).toBe(null); - expect(model.playWord('123')).toBe(null); - expect(model.playWord('')).toBe(null); - }); - - it('does not add word to history', () => { - const model = getModel(); - const word = getWord(model); - const origPlays = {...model.plays}; - - model.playWord(word); - - expect(model.plays).toEqual(origPlays); - }); - }); - }); -}); diff --git a/yarn.lock b/yarn.lock index 94846dde..7257b970 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1309,11 +1309,6 @@ ajv@^6.12.3: json-schema-traverse "^0.4.1" uri-js "^4.2.2" -ansi-escapes@^1.0.0, ansi-escapes@^1.1.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-1.4.0.tgz#d3a8a83b319aa67793662b13e761c7911422306e" - integrity sha512-wiXutNjDUlNEDWHcYH3jtZUhd3c4/VojassD8zHdHCY13xbZy2XbW+NKQwA0tWGBVzDA9qEzYwfoSsWmviidhw== - ansi-escapes@^3.0.0: version "3.2.0" resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b" @@ -1326,11 +1321,6 @@ ansi-escapes@^4.2.1: dependencies: type-fest "^0.21.3" -ansi-regex@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" - integrity sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA== - ansi-regex@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.1.tgz#123d6479e92ad45ad897d4054e3c7ca7db4944e1" @@ -1346,11 +1336,6 @@ ansi-regex@^5.0.1: resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== -ansi-styles@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" - integrity sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA== - ansi-styles@^3.2.0, ansi-styles@^3.2.1: version "3.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" @@ -1551,15 +1536,6 @@ babel-plugin-polyfill-regenerator@^0.3.0: dependencies: "@babel/helper-define-polyfill-provider" "^0.3.1" -babel-polyfill@^6.3.14: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-polyfill/-/babel-polyfill-6.26.0.tgz#379937abc67d7895970adc621f284cd966cf2153" - integrity sha512-F2rZGQnAdaHWQ8YAoeRbukc7HS9QgdgeyJ0rQDd485v9opwuPvjpPFcOOT/WmkKTdgy9ESgSPXDcTNpzrGr6iQ== - dependencies: - babel-runtime "^6.26.0" - core-js "^2.5.0" - regenerator-runtime "^0.10.5" - babel-preset-jest@^24.9.0: version "24.9.0" resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-24.9.0.tgz#192b521e2217fb1d1f67cf73f70c336650ad3cdc" @@ -1568,14 +1544,6 @@ babel-preset-jest@^24.9.0: "@babel/plugin-syntax-object-rest-spread" "^7.0.0" babel-plugin-jest-hoist "^24.9.0" -babel-runtime@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe" - integrity sha512-ITKNuq2wKlW1fJg9sSW52eepoYgZBggvOAHC0u/CYu/qxQ9EVzThCgR69BnSXLHjy2f7SY5zaQ4yt7H9ZVxY2g== - dependencies: - core-js "^2.4.0" - regenerator-runtime "^0.11.0" - balanced-match@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" @@ -1729,17 +1697,6 @@ caseless@~0.12.0: resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" integrity sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw== -chalk@^1.0.0, chalk@^1.1.0: - version "1.1.3" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" - integrity sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A== - dependencies: - ansi-styles "^2.2.1" - escape-string-regexp "^1.0.2" - has-ansi "^2.0.0" - strip-ansi "^3.0.0" - supports-color "^2.0.0" - chalk@^2.0.0, chalk@^2.0.1, chalk@^2.4.2: version "2.4.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" @@ -1792,13 +1749,6 @@ cli-boxes@^2.2.0: resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-2.2.1.tgz#ddd5035d25094fce220e9cab40a45840a440318f" integrity sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw== -cli-cursor@^1.0.1, cli-cursor@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-1.0.2.tgz#64da3f7d56a54412e59794bd62dc35295e8f2987" - integrity sha512-25tABq090YNKkF6JH7lcwO0zFJTRke4Jcq9iX2nr/Sz0Cjjv4gckmwlW6Ty/aoyFd6z3ysR2hMGC2GFugmBo6A== - dependencies: - restore-cursor "^1.0.1" - cli-cursor@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307" @@ -1814,11 +1764,6 @@ cli-truncate@^2.1.0: slice-ansi "^3.0.0" string-width "^4.2.0" -cli-width@^1.0.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-1.1.1.tgz#a4d293ef67ebb7b88d4a4d42c0ccf00c4d1e366d" - integrity sha512-eMU2akIeEIkCxGXUNmDnJq1KzOIiPnJ+rKqRe6hcxE3vIOPvpMrBYOn/Bl7zNlYJj/zQxXquAnozHUCf9Whnsg== - cliui@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/cliui/-/cliui-5.0.0.tgz#deefcfdb2e800784aa34f46fa08e06851c7bbbc5" @@ -1849,11 +1794,6 @@ code-excerpt@^3.0.0: dependencies: convert-to-spaces "^1.0.1" -code-point-at@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" - integrity sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA== - collection-visit@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" @@ -1938,11 +1878,6 @@ core-js-compat@^3.21.0, core-js-compat@^3.22.1: browserslist "^4.20.3" semver "7.0.0" -core-js@^2.4.0, core-js@^2.5.0: - version "2.6.12" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.12.tgz#d9333dfa7b065e347cc5682219d6f690859cc2ec" - integrity sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ== - core-js@^3.22.1, core-js@^3.8.0: version "3.22.7" resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.22.7.tgz#8d6c37f630f6139b8732d10f2c114c3f1d00024f" @@ -2158,7 +2093,7 @@ escalade@^3.1.1: resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== -escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: +escape-string-regexp@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= @@ -2213,11 +2148,6 @@ execa@^1.0.0: signal-exit "^3.0.0" strip-eof "^1.0.0" -exit-hook@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/exit-hook/-/exit-hook-1.1.1.tgz#f05ca233b48c05d54fff07765df8507e95c02ff8" - integrity sha1-8FyiM7SMBdVP/wd2XfhQfpXAL/g= - exit@^0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" @@ -2314,14 +2244,6 @@ fb-watchman@^2.0.0: dependencies: bser "2.1.1" -figures@^1.3.5: - version "1.7.0" - resolved "https://registry.yarnpkg.com/figures/-/figures-1.7.0.tgz#cbe1e3affcf1cd44b80cadfed28dc793a9701d2e" - integrity sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4= - dependencies: - escape-string-regexp "^1.0.5" - object-assign "^4.1.0" - file-uri-to-path@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" @@ -2544,13 +2466,6 @@ har-validator@~5.1.3: ajv "^6.12.3" har-schema "^2.0.0" -has-ansi@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" - integrity sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE= - dependencies: - ansi-regex "^2.0.0" - has-bigints@^1.0.1, has-bigints@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.2.tgz#0871bd3e3d51626f6ca0966668ba35d5602d6eaa" @@ -2676,11 +2591,6 @@ imurmurhash@^0.1.4: resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= -in-publish@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/in-publish/-/in-publish-2.0.1.tgz#948b1a535c8030561cea522f73f78f4be357e00c" - integrity sha512-oDM0kUSNFC31ShNxHKUyfZKy8ZeXZBWMjMdZHKLOk13uvT27VTL/QzRGfRUcevJhpkZAvlhPYuXkF7eNWrtyxQ== - indent-string@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" @@ -2741,24 +2651,6 @@ ink@^3.2.0: ws "^7.5.5" yoga-layout-prebuilt "^1.9.6" -inquirer@0.11.0: - version "0.11.0" - resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-0.11.0.tgz#7448bfa924092af311d47173bbab990cae2bb027" - integrity sha1-dEi/qSQJKvMR1HFzu6uZDK4rsCc= - dependencies: - ansi-escapes "^1.1.0" - ansi-regex "^2.0.0" - chalk "^1.0.0" - cli-cursor "^1.0.1" - cli-width "^1.0.1" - figures "^1.3.5" - lodash "^3.3.1" - readline2 "^1.0.1" - run-async "^0.1.0" - rx-lite "^3.1.2" - strip-ansi "^3.0.0" - through "^2.3.6" - internal-slot@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.3.tgz#7347e307deeea2faac2ac6205d4bc7d34967f59c" @@ -2896,13 +2788,6 @@ is-extglob@^2.1.1: resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= -is-fullwidth-code-point@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" - integrity sha1-754xOG8DGn8NZDr4L95QxFfvAMs= - dependencies: - number-is-nan "^1.0.0" - is-fullwidth-code-point@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" @@ -3613,24 +3498,11 @@ lodash.sortby@^4.7.0: resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438" integrity sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA== -lodash@^3.3.1: - version "3.10.1" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-3.10.1.tgz#5bf45e8e49ba4189e17d482789dfd15bd140b7b6" - integrity sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y= - -lodash@^4.17.19, lodash@^4.17.20, lodash@^4.5.1: +lodash@^4.17.19, lodash@^4.17.20: version "4.17.21" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== -log-update@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/log-update/-/log-update-1.0.2.tgz#19929f64c4093d2d2e7075a1dad8af59c296b8d1" - integrity sha1-GZKfZMQJPS0ucHWh2tivWcKWuNE= - dependencies: - ansi-escapes "^1.0.0" - cli-cursor "^1.0.2" - loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" @@ -3743,11 +3615,6 @@ ms@2.1.2: resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== -mute-stream@0.0.5: - version "0.0.5" - resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.5.tgz#8fbfabb0a98a253d3184331f9e8deb7372fac6c0" - integrity sha1-j7+rsKmKJT0xhDMfno3rc3L6xsA= - nan@^2.12.1: version "2.16.0" resolved "https://registry.yarnpkg.com/nan/-/nan-2.16.0.tgz#664f43e45460fb98faf00edca0bb0d7b8dce7916" @@ -3793,11 +3660,6 @@ node-int64@^0.4.0: resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" integrity sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs= -node-localstorage@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/node-localstorage/-/node-localstorage-0.6.0.tgz#45a0601c6932dfde6644a23361f1be173c75d3af" - integrity sha1-RaBgHGky395mRKIzYfG+Fzx1068= - node-notifier@^5.4.2: version "5.4.5" resolved "https://registry.yarnpkg.com/node-notifier/-/node-notifier-5.4.5.tgz#0cbc1a2b0f658493b4025775a13ad938e96091ef" @@ -3843,11 +3705,6 @@ npm-run-path@^2.0.0: dependencies: path-key "^2.0.0" -number-is-nan@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" - integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0= - nwsapi@^2.0.7: version "2.2.0" resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.0.tgz#204879a9e3d068ff2a55139c2c772780681a38b7" @@ -3858,7 +3715,7 @@ oauth-sign@~0.9.0: resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== -object-assign@^4.1.0, object-assign@^4.1.1: +object-assign@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== @@ -3923,11 +3780,6 @@ once@^1.3.0, once@^1.3.1, once@^1.4.0: dependencies: wrappy "1" -onetime@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/onetime/-/onetime-1.1.0.tgz#a1f7838f8314c516f05ecefcbc4ccfe04b4ed789" - integrity sha1-ofeDj4MUxRbwXs78vEzP4EtO14k= - onetime@^5.1.0: version "5.1.2" resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" @@ -4188,12 +4040,13 @@ react-reconciler@^0.26.2: object-assign "^4.1.1" scheduler "^0.20.2" -react@^18.1.0: - version "18.1.0" - resolved "https://registry.yarnpkg.com/react/-/react-18.1.0.tgz#6f8620382decb17fdc5cc223a115e2adbf104890" - integrity sha512-4oL8ivCz5ZEPyclFQXaNksK3adutVS8l2xzZU0cqEFrE9Sb7fC0EFK5uEk74wIreL1DERyjvsU915j1pcT2uEQ== +react@17.0.2: + version "17.0.2" + resolved "https://registry.yarnpkg.com/react/-/react-17.0.2.tgz#d0b5cc516d29eb3eee383f75b62864cfb6800037" + integrity sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA== dependencies: loose-envify "^1.1.0" + object-assign "^4.1.1" read-pkg-up@^4.0.0: version "4.0.0" @@ -4219,15 +4072,6 @@ readdirp@~3.6.0: dependencies: picomatch "^2.2.1" -readline2@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/readline2/-/readline2-1.0.1.tgz#41059608ffc154757b715d9989d199ffbf372e35" - integrity sha1-QQWWCP/BVHV7cV2ZidGZ/783LjU= - dependencies: - code-point-at "^1.0.0" - is-fullwidth-code-point "^1.0.0" - mute-stream "0.0.5" - realpath-native@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/realpath-native/-/realpath-native-1.1.0.tgz#2003294fea23fb0672f2476ebe22fcf498a2d65c" @@ -4247,16 +4091,6 @@ regenerate@^1.4.2: resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.2.tgz#b9346d8827e8f5a32f7ba29637d398b69014848a" integrity sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A== -regenerator-runtime@^0.10.5: - version "0.10.5" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz#336c3efc1220adcedda2c9fab67b5a7955a33658" - integrity sha1-M2w+/BIgrc7dosn6tntaeVWjNlg= - -regenerator-runtime@^0.11.0: - version "0.11.1" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9" - integrity sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg== - regenerator-runtime@^0.12.1: version "0.12.1" resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.12.1.tgz#fa1a71544764c036f8c49b13a08b2594c9f8a0de" @@ -4418,14 +4252,6 @@ resolve@^1.10.0, resolve@^1.14.2, resolve@^1.4.0: path-parse "^1.0.7" supports-preserve-symlinks-flag "^1.0.0" -restore-cursor@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-1.0.1.tgz#34661f46886327fed2991479152252df92daa541" - integrity sha1-NGYfRohjJ/7SmRR5FSJS35LapUE= - dependencies: - exit-hook "^1.0.0" - onetime "^1.0.0" - restore-cursor@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e" @@ -4451,18 +4277,6 @@ rsvp@^4.8.4: resolved "https://registry.yarnpkg.com/rsvp/-/rsvp-4.8.5.tgz#c8f155311d167f68f21e168df71ec5b083113734" integrity sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA== -run-async@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/run-async/-/run-async-0.1.0.tgz#c8ad4a5e110661e402a7d21b530e009f25f8e389" - integrity sha1-yK1KXhEGYeQCp9IbUw4AnyX444k= - dependencies: - once "^1.3.0" - -rx-lite@^3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/rx-lite/-/rx-lite-3.1.2.tgz#19ce502ca572665f3b647b10939f97fd1615f102" - integrity sha1-Gc5QLKVyZl87ZHsQk5+X/RYV8QI= - safe-buffer@^5.0.1, safe-buffer@^5.1.2: version "5.2.1" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" @@ -4752,15 +4566,6 @@ string-length@^2.0.0: astral-regex "^1.0.0" strip-ansi "^4.0.0" -string-width@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" - integrity sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M= - dependencies: - code-point-at "^1.0.0" - is-fullwidth-code-point "^1.0.0" - strip-ansi "^3.0.0" - string-width@^3.0.0, string-width@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" @@ -4797,13 +4602,6 @@ string.prototype.trimstart@^1.0.5: define-properties "^1.1.4" es-abstract "^1.19.5" -strip-ansi@^3.0.0, strip-ansi@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" - integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8= - dependencies: - ansi-regex "^2.0.0" - strip-ansi@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" @@ -4835,11 +4633,6 @@ strip-eof@^1.0.0: resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" integrity sha1-u0P/VZim6wXYm1n80SnJgzE2Br8= -supports-color@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" - integrity sha1-U10EXOa2Nj+kARcIRimZXp3zJMc= - supports-color@^5.3.0: version "5.5.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" @@ -4886,11 +4679,6 @@ throat@^4.0.0: resolved "https://registry.yarnpkg.com/throat/-/throat-4.1.0.tgz#89037cbc92c56ab18926e6ba4cbb200e15672a6a" integrity sha1-iQN8vJLFarGJJua6TLsgDhVnKmo= -through@^2.3.6: - version "2.3.8" - resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" - integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= - tmpl@1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.5.tgz#8683e0b902bb9c20c4f726e3c0b69f36518c07cc" @@ -5090,22 +4878,6 @@ verror@1.10.0: core-util-is "1.0.2" extsprintf "^1.2.0" -vorpal@^1.12.0: - version "1.12.0" - resolved "https://registry.yarnpkg.com/vorpal/-/vorpal-1.12.0.tgz#4be7b2a4e48f8fcfc9cf3648c419d311c522159d" - integrity sha1-S+eypOSPj8/JzzZIxBnTEcUiFZ0= - dependencies: - babel-polyfill "^6.3.14" - chalk "^1.1.0" - in-publish "^2.0.0" - inquirer "0.11.0" - lodash "^4.5.1" - log-update "^1.0.2" - minimist "^1.2.0" - node-localstorage "^0.6.0" - strip-ansi "^3.0.0" - wrap-ansi "^2.0.0" - w3c-hr-time@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz#0a89cdf5cc15822df9c360543676963e0cc308cd" @@ -5190,14 +4962,6 @@ word-wrap@~1.2.3: resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== -wrap-ansi@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" - integrity sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU= - dependencies: - string-width "^1.0.1" - strip-ansi "^3.0.1" - wrap-ansi@^5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-5.1.0.tgz#1fd1f67235d5b6d0fee781056001bfb694c03b09" From 1b16d4a4128ed06cb3310fdcf48cd223ddba1102 Mon Sep 17 00:00:00 2001 From: Matt McKnett Date: Tue, 12 Jul 2022 17:53:07 -0700 Subject: [PATCH 62/75] fix: Use highestScoreFrom in WinScreenInfo --- src/demo-react/gamestate/win-selectors.js | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/demo-react/gamestate/win-selectors.js b/src/demo-react/gamestate/win-selectors.js index c4881cd6..f71dba30 100644 --- a/src/demo-react/gamestate/win-selectors.js +++ b/src/demo-react/gamestate/win-selectors.js @@ -5,13 +5,13 @@ export class WinScreenInfo { this.playerScores = state.players.map( player => { const flattenedWords = [].concat(...player.words); - const scores = flattenedWords.map(word => ({ word, score: Adagrams.scoreWord(word)})); - scores.sort((a, b) => b.score - a.score); // Sort by highest scoring word. - const totalScore = scores.reduce((sum, scoreAndWord) => sum + scoreAndWord.score, 0); + const scores = flattenedWords.map(Adagrams.scoreWord); + const totalScore = scores.reduce((sum, score) => sum + score, 0); + const bestWord = Adagrams.highestScoreFrom(flattenedWords); return { name: player.name, score: totalScore, - bestWord: scores.length > 0 && `${scores[0].word} (${scores[0].score})` || '' + bestWord: bestWord && `${bestWord.word} (${bestWord.score})` || '' }; } ); @@ -20,7 +20,7 @@ export class WinScreenInfo { this.roundWinners = new Array(state.players[0].words.length); for (let i = 0; i < this.roundWinners.length; ++i) { const playerScoresThisRound = state.players.map(player => { - const scores = player.words[i].map(word => Adagrams.scoreWord(word)); + const scores = player.words[i].map(Adagrams.scoreWord); const roundScore = scores.reduce((sum, score) => sum + score, 0); return { score: roundScore, From 5516676841b3e31a1dc9a9a4f2c1505b42f96ffb Mon Sep 17 00:00:00 2001 From: Matt McKnett Date: Tue, 12 Jul 2022 17:58:53 -0700 Subject: [PATCH 63/75] refactor: Move adagrams adapter --- src/{demo => demo-react}/adagrams.js | 0 src/demo-react/gamestate/reducer.js | 2 +- src/demo-react/gamestate/rules.js | 2 +- src/demo-react/gamestate/win-selectors.js | 2 +- src/demo-react/screens/game.js | 2 +- src/demo-react/screens/win.js | 1 - test/demo-react/gamestate/reducer.test.js | 4 ++-- 7 files changed, 6 insertions(+), 7 deletions(-) rename src/{demo => demo-react}/adagrams.js (100%) diff --git a/src/demo/adagrams.js b/src/demo-react/adagrams.js similarity index 100% rename from src/demo/adagrams.js rename to src/demo-react/adagrams.js diff --git a/src/demo-react/gamestate/reducer.js b/src/demo-react/gamestate/reducer.js index 6afe9fa3..2fc2abcd 100644 --- a/src/demo-react/gamestate/reducer.js +++ b/src/demo-react/gamestate/reducer.js @@ -7,7 +7,7 @@ import { validateGuessInput } from './rules'; import { ScreenId } from './screens'; import { timerMiddleware } from './timer'; -import Adagrams from 'demo/adagrams'; +import Adagrams from 'demo-react/adagrams'; const GO_STRAIGHT_TO_WIN = false; diff --git a/src/demo-react/gamestate/rules.js b/src/demo-react/gamestate/rules.js index ace426a3..443651b7 100644 --- a/src/demo-react/gamestate/rules.js +++ b/src/demo-react/gamestate/rules.js @@ -1,7 +1,7 @@ import * as Actions from './action-types'; import { SetErrorAction } from './errors'; -import Adagrams from 'demo/adagrams'; +import Adagrams from 'demo-react/adagrams'; export function validateGuessInput(wrappedReducer) { return (state, action) => { diff --git a/src/demo-react/gamestate/win-selectors.js b/src/demo-react/gamestate/win-selectors.js index f71dba30..115165de 100644 --- a/src/demo-react/gamestate/win-selectors.js +++ b/src/demo-react/gamestate/win-selectors.js @@ -1,4 +1,4 @@ -import Adagrams from 'demo/adagrams'; +import Adagrams from 'demo-react/adagrams'; export class WinScreenInfo { constructor(state) { diff --git a/src/demo-react/screens/game.js b/src/demo-react/screens/game.js index 8f2b31ed..d3522a78 100644 --- a/src/demo-react/screens/game.js +++ b/src/demo-react/screens/game.js @@ -9,7 +9,7 @@ import { GUESS } from '../gamestate/action-types'; import GameTimer from '../components/timer'; import { useGameStateContext } from '../components/gamestate-context'; -import Adagrams from 'demo/adagrams'; +import Adagrams from 'demo-react/adagrams'; export default function Game() { const { state } = useGameStateContext(); diff --git a/src/demo-react/screens/win.js b/src/demo-react/screens/win.js index d2d19fe2..f2466d56 100644 --- a/src/demo-react/screens/win.js +++ b/src/demo-react/screens/win.js @@ -6,7 +6,6 @@ import * as Actions from '../gamestate/action-types'; import { WinScreenInfo } from '../gamestate/win-selectors'; import { Menu, MenuEntry } from '../components/menu'; import { useGameStateContext } from '../components/gamestate-context'; -import Adagrams from 'demo/adagrams'; export default function Win() { const { state, dispatch } = useGameStateContext(); diff --git a/test/demo-react/gamestate/reducer.test.js b/test/demo-react/gamestate/reducer.test.js index dc6b1523..88d529ba 100644 --- a/test/demo-react/gamestate/reducer.test.js +++ b/test/demo-react/gamestate/reducer.test.js @@ -3,9 +3,9 @@ import * as Actions from 'demo-react/gamestate/action-types'; import makeAction from 'demo-react/gamestate/generic-action'; import { ScreenId } from 'demo-react/gamestate/screens'; -import Adagrams from 'demo/adagrams'; +import Adagrams from 'demo-react/adagrams'; -jest.mock('demo/adagrams', () => { +jest.mock('demo-react/adagrams', () => { return { drawLetters: jest.fn(() => ["H", "E", "L", "L", "O", "W", "O", "R", "L", "D"]), usesAvailableLetters: jest.fn(() => true), From 0b0afa4249ad20ff6c162745d69f99e3a764b83f Mon Sep 17 00:00:00 2001 From: Matt McKnett Date: Tue, 12 Jul 2022 19:20:09 -0700 Subject: [PATCH 64/75] refactor: Rename app -> ui for clarity --- src/demo-react/{ui.js => app.js} | 0 src/demo-react/cli.js | 4 ++-- .../__snapshots__/{ui.test.js.snap => app.test.js.snap} | 0 test/demo-react/{ui.test.js => app.test.js} | 2 +- 4 files changed, 3 insertions(+), 3 deletions(-) rename src/demo-react/{ui.js => app.js} (100%) rename test/demo-react/__snapshots__/{ui.test.js.snap => app.test.js.snap} (100%) rename test/demo-react/{ui.test.js => app.test.js} (98%) diff --git a/src/demo-react/ui.js b/src/demo-react/app.js similarity index 100% rename from src/demo-react/ui.js rename to src/demo-react/app.js diff --git a/src/demo-react/cli.js b/src/demo-react/cli.js index 7ac5defb..c32bc447 100644 --- a/src/demo-react/cli.js +++ b/src/demo-react/cli.js @@ -3,6 +3,6 @@ import React from 'react'; import { render } from 'ink'; -import ui from './ui'; +import App from './app'; -render(React.createElement(ui)); +render(React.createElement(App)); diff --git a/test/demo-react/__snapshots__/ui.test.js.snap b/test/demo-react/__snapshots__/app.test.js.snap similarity index 100% rename from test/demo-react/__snapshots__/ui.test.js.snap rename to test/demo-react/__snapshots__/app.test.js.snap diff --git a/test/demo-react/ui.test.js b/test/demo-react/app.test.js similarity index 98% rename from test/demo-react/ui.test.js rename to test/demo-react/app.test.js index da67de77..86fda44e 100644 --- a/test/demo-react/ui.test.js +++ b/test/demo-react/app.test.js @@ -1,5 +1,5 @@ import React from 'react'; -import App from 'demo-react/ui'; +import App from 'demo-react/app'; import { render } from 'ink-testing-library'; import { expectRenderToMatchSnapshot } from './expect-render'; From 3ccf198d6060f38968fabfe7905032d965360fc6 Mon Sep 17 00:00:00 2001 From: Matt McKnett Date: Tue, 12 Jul 2022 21:31:19 -0700 Subject: [PATCH 65/75] refactor: Clarify that the Proxy pattern is used --- src/demo-react/{adagrams.js => adagrams-proxy.js} | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) rename src/demo-react/{adagrams.js => adagrams-proxy.js} (92%) diff --git a/src/demo-react/adagrams.js b/src/demo-react/adagrams-proxy.js similarity index 92% rename from src/demo-react/adagrams.js rename to src/demo-react/adagrams-proxy.js index 0a0cdd1c..e54bccb2 100644 --- a/src/demo-react/adagrams.js +++ b/src/demo-react/adagrams-proxy.js @@ -12,7 +12,7 @@ const Real = { highestScoreFrom, }; -const Stub = { +const Proxy = { drawLetters() { const defaultLetters = ["H", "E", "L", "L", "O", "W", "O", "R", "L", "D"]; @@ -48,9 +48,9 @@ const Stub = { return { word: words[0], - score: Stub.scoreWord(words[0]), + score: Proxy.scoreWord(words[0]), }; }, }; -export default Stub; +export default Proxy; From c5c2105f7e9959e5415fa79d7f811ed1ef7923b7 Mon Sep 17 00:00:00 2001 From: Matt McKnett Date: Wed, 13 Jul 2022 00:42:54 -0700 Subject: [PATCH 66/75] fix: Proxy Proxy default values were not all working. The Real functions themselves were defined, they were just returning `undefined`. --- src/demo-react/adagrams-proxy.js | 42 +++++++++++++---------- src/demo-react/gamestate/reducer.js | 2 +- src/demo-react/gamestate/rules.js | 2 +- src/demo-react/gamestate/screens.js | 8 ----- src/demo-react/gamestate/win-selectors.js | 5 ++- src/demo-react/screens/game.js | 2 +- test/demo-react/gamestate/reducer.test.js | 4 +-- 7 files changed, 32 insertions(+), 33 deletions(-) diff --git a/src/demo-react/adagrams-proxy.js b/src/demo-react/adagrams-proxy.js index e54bccb2..f25b3d77 100644 --- a/src/demo-react/adagrams-proxy.js +++ b/src/demo-react/adagrams-proxy.js @@ -14,42 +14,46 @@ const Real = { const Proxy = { drawLetters() { - const defaultLetters = ["H", "E", "L", "L", "O", "W", "O", "R", "L", "D"]; - - if (typeof Real.drawLetters === "function") { - return Real.drawLetters() || defaultLetters; + const real = Real.drawLetters(); + if (typeof real === 'undefined') { + return ["H", "E", "L", "L", "O", "W", "O", "R", "L", "D"]; } - return defaultLetters; + return real; }, usesAvailableLetters(input, lettersInHand) { - if (typeof Real.usesAvailableLetters === "function") { - return Real.usesAvailableLetters(input, lettersInHand); + const real = Real.usesAvailableLetters(input, lettersInHand); + if (typeof real === 'undefined') { + return true; } - return true; + return real; }, scoreWord(word) { - if (typeof Real.scoreWord === "function") { - return Real.scoreWord(word); + const real = Real.scoreWord(word); + if (typeof real === 'undefined') { + return 1; } - return 1; + return real; }, highestScoreFrom(words) { - if (typeof Real.highestScoreFrom === "function") { - return Real.highestScoreFrom(words); + const real = Real.highestScoreFrom(words); + if (typeof real === 'undefined') { + if (words.length < 1) { + return {}; + } + + return { + word: words[0], + score: Proxy.scoreWord(words[0]), + }; } - if (words.length < 1) return null; - - return { - word: words[0], - score: Proxy.scoreWord(words[0]), - }; + return real; }, }; diff --git a/src/demo-react/gamestate/reducer.js b/src/demo-react/gamestate/reducer.js index 2fc2abcd..a90187b8 100644 --- a/src/demo-react/gamestate/reducer.js +++ b/src/demo-react/gamestate/reducer.js @@ -7,7 +7,7 @@ import { validateGuessInput } from './rules'; import { ScreenId } from './screens'; import { timerMiddleware } from './timer'; -import Adagrams from 'demo-react/adagrams'; +import Adagrams from 'demo-react/adagrams-proxy'; const GO_STRAIGHT_TO_WIN = false; diff --git a/src/demo-react/gamestate/rules.js b/src/demo-react/gamestate/rules.js index 443651b7..63abb696 100644 --- a/src/demo-react/gamestate/rules.js +++ b/src/demo-react/gamestate/rules.js @@ -1,7 +1,7 @@ import * as Actions from './action-types'; import { SetErrorAction } from './errors'; -import Adagrams from 'demo-react/adagrams'; +import Adagrams from 'demo-react/adagrams-proxy'; export function validateGuessInput(wrappedReducer) { return (state, action) => { diff --git a/src/demo-react/gamestate/screens.js b/src/demo-react/gamestate/screens.js index ab4cd2b2..9a18b0da 100644 --- a/src/demo-react/gamestate/screens.js +++ b/src/demo-react/gamestate/screens.js @@ -15,11 +15,3 @@ export class SwitchScreenAction { this.payload = screenId; } } - -export function onHelpScreen(state) { - return state.currentScreen === ScreenId.HOW_TO; -} - -export function onSetupScreen(state) { - return state.currentScreen === ScreenId.SETUP; -} diff --git a/src/demo-react/gamestate/win-selectors.js b/src/demo-react/gamestate/win-selectors.js index 115165de..f19d9951 100644 --- a/src/demo-react/gamestate/win-selectors.js +++ b/src/demo-react/gamestate/win-selectors.js @@ -1,6 +1,9 @@ -import Adagrams from 'demo-react/adagrams'; +import Adagrams from 'demo-react/adagrams-proxy'; export class WinScreenInfo { + playerScores; + roundWinners; + constructor(state) { this.playerScores = state.players.map( player => { diff --git a/src/demo-react/screens/game.js b/src/demo-react/screens/game.js index d3522a78..e22ac885 100644 --- a/src/demo-react/screens/game.js +++ b/src/demo-react/screens/game.js @@ -9,7 +9,7 @@ import { GUESS } from '../gamestate/action-types'; import GameTimer from '../components/timer'; import { useGameStateContext } from '../components/gamestate-context'; -import Adagrams from 'demo-react/adagrams'; +import Adagrams from 'demo-react/adagrams-proxy'; export default function Game() { const { state } = useGameStateContext(); diff --git a/test/demo-react/gamestate/reducer.test.js b/test/demo-react/gamestate/reducer.test.js index 88d529ba..0ccb30ea 100644 --- a/test/demo-react/gamestate/reducer.test.js +++ b/test/demo-react/gamestate/reducer.test.js @@ -3,9 +3,9 @@ import * as Actions from 'demo-react/gamestate/action-types'; import makeAction from 'demo-react/gamestate/generic-action'; import { ScreenId } from 'demo-react/gamestate/screens'; -import Adagrams from 'demo-react/adagrams'; +import Adagrams from 'demo-react/adagrams-proxy'; -jest.mock('demo-react/adagrams', () => { +jest.mock('demo-react/adagrams-proxy', () => { return { drawLetters: jest.fn(() => ["H", "E", "L", "L", "O", "W", "O", "R", "L", "D"]), usesAvailableLetters: jest.fn(() => true), From 4e8ed0f4beacffcbe0c812b90c0ac4426d79d804 Mon Sep 17 00:00:00 2001 From: Matt McKnett Date: Wed, 13 Jul 2022 00:43:57 -0700 Subject: [PATCH 67/75] doc: Add readmes for the demo game and state --- src/demo-react/README.md | 21 +++++++++++++++++++++ src/demo-react/gamestate/README.md | 18 ++++++++++++++++++ 2 files changed, 39 insertions(+) create mode 100644 src/demo-react/README.md create mode 100644 src/demo-react/gamestate/README.md diff --git a/src/demo-react/README.md b/src/demo-react/README.md new file mode 100644 index 00000000..e6031b93 --- /dev/null +++ b/src/demo-react/README.md @@ -0,0 +1,21 @@ +# React Demo Game + +The demo game is present to help you test your [Adagrams implementation](../adagrams.js). At its core, the demo game is a bunch of UI that is built around the Adagrams API, which consists of the four methods `drawLetters`, `usesAvailableLetters`, `scoreWord`, and `highestScoreFrom`. + +As a result, when you first start the demo game, before you've implemented any of the Waves, the demo game won't function correctly! Specifically, it starts off thinking that every hand of letters is `["H", "E", "L", "L", "O", "W", "O", "R", "L", "D"]`, that any word at all "uses" those letters, and that everything is worth 0 points. As you implement the Adagrams functions (and pass its tests), you make it so the demo game functions correctly. + +## The Proxy Pattern + +The way the demo game functions without your implementation is by applying the [Proxy Pattern](https://en.wikipedia.org/wiki/Proxy_pattern) to the methods of your [adagrams.js](../adagrams.js). The Proxy in this case is an object defined in [adagrams-proxy.js](./adagrams-proxy.js). This proxy object implements the same "interface" as your real Adagrams -- that is, it defines the same four functions, with the same names, parameters, and return types -- and provides default behavior for any cases where the real Adagrams returns `undefined` -- that's the default return value for any JavaScript function. When you start implementing your Adagrams, and the functions stop returning `undefined`, the Proxy automatically switches to using your implementation for the function instead of its default behavior. + +The traditional definition of the Proxy Pattern explains that two "concrete" classes will inherit from an "interface". In other languages besides JavaScript, an interface is a way to explicitly specify the names, parameters, and return values of a class's methods without providing any implementation for them. An interface is usually described as a "contract" that code in a function expects an instance object of a class that implements the interface to fulfill. JavaScript doesn't have a way to explicitly define an interface in code; you call a method, and deal with whatever the result is. (A return value of `undefined` or a runtime error might be that result!) So when we implement the Proxy Pattern in JavaScript, our Proxy object fulfills the "implicit" interface for our real object. In this case, we know what the interface is because there are tests, other functions outside the module, and documents describing it. The Proxy and Real Adagrams objects implement the same "implicit" interface because they satisfy the expectations of the code that uses them. If the idea of an implicit interface makes you feel uncomfortable, then you might like TypeScript. + +## How is the game structured? +The demo game is built with a framework called [Ink](https://github.com/vadimdemedes/ink#readme), which makes it so you can develop terminal applications using [React](https://reactjs.org/). This means you will find React concepts -- props, state, jsx, etc. -- used throughout the demo game code. + +- [components/](./components/): React components that can be reused. This includes simple display-only components like [Button](./components/button.js), complex input-handling components like [NumberField](./components/number-field.js), and more-esoteric components such as the context-providing [GameStateStore](./components/gamestate-context.js). +- [gamestate/](./gamestate/): Reducers, actions, and "middleware", following patterns that are like redux but implemented with [useReducer](https://reactjs.org/docs/hooks-reference.html#usereducer). +- [screens/](./screens/): React components that represent the various "screens" that players move through during the game. The [ScreenDisplayer](./screens/index.js) chooses the screen based on the current state. + +## History +This is not the first incarnation of the JS Adagrams demo game! An [Architectural Decision Record](./docs/adr.md) describes the latest iteration as well as reasoning behind its development. \ No newline at end of file diff --git a/src/demo-react/gamestate/README.md b/src/demo-react/gamestate/README.md new file mode 100644 index 00000000..383a53b3 --- /dev/null +++ b/src/demo-react/gamestate/README.md @@ -0,0 +1,18 @@ +# gamestate +This is where you find functions controlling the game's underlying state, which includes things like what screen the game is displaying, how many rounds have been requested, what players have guessed, etc. There are a few types of things here that you will commonly find in code following a [state reducer](https://redux.js.org/tutorials/fundamentals/part-3-state-actions-reducers) pattern: +- Actions +- Reducers +- Middleware +- Selectors + +## Actions +An action is just an object. It's expected to have a `type` field with a string value that tells you what type of action it is. Beyond that, it's completely up to you what's in the action object, but most people put the data it contains in a field called `payload`. The point of an action is to indicate, via its type, which part of the reducer should run and provide whatever data is needed to calculate the next state. + +## Reducers +The `reducer` at the bottom of [reducer.js](./reducer.js) looks complicated. Fundamentally, it's a function that is just like the callback you pass to [Array.reduce](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/reduce). In fact, you can imagine React, under the covers, taking an array of action objects that it has been given via `dispatch`, and literally calling `reduce` on that array using your reducer function. The `reduce` function will use your reducer to calculate the new `state`, starting with `initialState`, for every action that it was provided. (You do have to imagine this, though. React doesn't actually use `reduce`. It needs to prioritize, defer, and occasionally discard work it has done to update state, so the mechanism it uses to loop over actions is more complicated.) Once the actions are applied, you end up with a brand new state object that is the result of previous state and action running through your reducer function. + +## Middleware +So why is the `reducer` surrounded by a bunch of other function calls? These are "middleware". They apply the [Decorator Pattern](https://blog.logrocket.com/understanding-javascript-decorators/) to modify the core behavior of `gameStateReducer`. For example, while `gameStateReducer` will happily set `desiredPlayers` to whatever the action payload's value is, it is wrapped in [validateOptionsInput](./options.js), which will swap the action out for an error action if the payload isn't in a valid range. You could achieve the same result with a big, monolithic reducer function, but using the decorator pattern gives you more flexibility to change the reducer without modifying its existing implementation. (That's the O in [SOLID](https://www.geeksforgeeks.org/solid-principle-in-programming-understand-with-real-life-examples/), open/closed: the reducer is open for extension, but closed for modification.) The separation of middleware also presents opportunity to test the middleware independently, though the current suite of tests simply tests the reducer with all the middleware wrapping it. + +## Selectors +There aren't many selectors; the purpose of selectors is to take the `state` object and retrieve information from it. Most places in the application just read what they need directly from `state`, but the win screen has some more complicated calculations to do. Those have gone in [WinScreenInfo](./win-selectors.js). From 0b7135f023e4c9f654ebc3a5b4a179b2deadf4eb Mon Sep 17 00:00:00 2001 From: Matt McKnett Date: Wed, 13 Jul 2022 13:00:42 -0700 Subject: [PATCH 68/75] refactor: App can be jsx --- src/demo-react/cli.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/demo-react/cli.js b/src/demo-react/cli.js index c32bc447..edc4c846 100644 --- a/src/demo-react/cli.js +++ b/src/demo-react/cli.js @@ -5,4 +5,4 @@ import { render } from 'ink'; import App from './app'; -render(React.createElement(App)); +render(); From eaf73bea778d4c5f20d36f56f839df2ea33f55b8 Mon Sep 17 00:00:00 2001 From: Matt McKnett Date: Wed, 13 Jul 2022 13:43:33 -0700 Subject: [PATCH 69/75] docs: More documentation - Explain Ink a little more - Document Screens, with initial wireframes and an MVC exploration - Document Timer - Copyediting --- src/demo-react/README.md | 13 ++++++--- src/demo-react/components/README.md | 9 ++++++ src/demo-react/docs/screens-wireframe-1.png | Bin 0 -> 484748 bytes src/demo-react/docs/screens-wireframe-2.png | Bin 0 -> 325473 bytes src/demo-react/screens/README.md | 29 ++++++++++++++++++++ 5 files changed, 47 insertions(+), 4 deletions(-) create mode 100644 src/demo-react/components/README.md create mode 100644 src/demo-react/docs/screens-wireframe-1.png create mode 100644 src/demo-react/docs/screens-wireframe-2.png create mode 100644 src/demo-react/screens/README.md diff --git a/src/demo-react/README.md b/src/demo-react/README.md index e6031b93..a7944604 100644 --- a/src/demo-react/README.md +++ b/src/demo-react/README.md @@ -4,18 +4,23 @@ The demo game is present to help you test your [Adagrams implementation](../adag As a result, when you first start the demo game, before you've implemented any of the Waves, the demo game won't function correctly! Specifically, it starts off thinking that every hand of letters is `["H", "E", "L", "L", "O", "W", "O", "R", "L", "D"]`, that any word at all "uses" those letters, and that everything is worth 0 points. As you implement the Adagrams functions (and pass its tests), you make it so the demo game functions correctly. -## The Proxy Pattern +## Adagrams Proxy -- The Proxy Pattern -The way the demo game functions without your implementation is by applying the [Proxy Pattern](https://en.wikipedia.org/wiki/Proxy_pattern) to the methods of your [adagrams.js](../adagrams.js). The Proxy in this case is an object defined in [adagrams-proxy.js](./adagrams-proxy.js). This proxy object implements the same "interface" as your real Adagrams -- that is, it defines the same four functions, with the same names, parameters, and return types -- and provides default behavior for any cases where the real Adagrams returns `undefined` -- that's the default return value for any JavaScript function. When you start implementing your Adagrams, and the functions stop returning `undefined`, the Proxy automatically switches to using your implementation for the function instead of its default behavior. +The way the demo game functions *without* your implementation is by applying the [Proxy Pattern](https://en.wikipedia.org/wiki/Proxy_pattern) to the methods of your [adagrams.js](../adagrams.js). The Proxy in this case is an object defined in [adagrams-proxy.js](./adagrams-proxy.js). This proxy object implements the same "interface" as your real Adagrams -- that is, it defines the same four functions, with the same names, parameters, and return types -- and provides default behavior for any cases where the real Adagrams returns `undefined` -- that's the default return value for any JavaScript function. When you start implementing your Adagrams, and the functions stop returning `undefined`, the Proxy automatically switches to using your implementation for the function instead of its default behavior. The traditional definition of the Proxy Pattern explains that two "concrete" classes will inherit from an "interface". In other languages besides JavaScript, an interface is a way to explicitly specify the names, parameters, and return values of a class's methods without providing any implementation for them. An interface is usually described as a "contract" that code in a function expects an instance object of a class that implements the interface to fulfill. JavaScript doesn't have a way to explicitly define an interface in code; you call a method, and deal with whatever the result is. (A return value of `undefined` or a runtime error might be that result!) So when we implement the Proxy Pattern in JavaScript, our Proxy object fulfills the "implicit" interface for our real object. In this case, we know what the interface is because there are tests, other functions outside the module, and documents describing it. The Proxy and Real Adagrams objects implement the same "implicit" interface because they satisfy the expectations of the code that uses them. If the idea of an implicit interface makes you feel uncomfortable, then you might like TypeScript. ## How is the game structured? -The demo game is built with a framework called [Ink](https://github.com/vadimdemedes/ink#readme), which makes it so you can develop terminal applications using [React](https://reactjs.org/). This means you will find React concepts -- props, state, jsx, etc. -- used throughout the demo game code. +### Ink +The demo game is built with a framework called [Ink](https://github.com/vadimdemedes/ink#readme), which makes it so you can develop terminal applications using [React](https://reactjs.org/). This means you will find React concepts -- props, state, jsx, etc. -- used throughout the demo game code. Ink provides the services that reconcile React's render tree with the standard output of the terminal shell (for you, probably `zsh` or `bash`). You might guess that the visual output of HTML is much richer than that of the terminal, and it really shows when you look at the render functions of React components that use Ink primitives, considering there are only a few -- `Box` and `Spacer` for layout, `Text`, `Transform`, and `Newline` for writing text with colors and styles, and `Static` to make the output stay instead of being refreshed. The game gives you some idea of how these pieces can be combined to create an interactive terminal app, but incidentally so do the tests. Jest also uses Ink for its text rendering. Run the tests in watch mode (`yarn test --watch`) and play with the Watch Usage options to see a different Ink app in action. +### App structure and folder Layout +The app itself starts at [cli.js](./cli.js), which is where we call Ink's `render` method on the App component. The [App](./app.js) component looks simple -- it is a `ScreenDisplayer` inside a `GameStateStore` -- but that simple definition hides all of the complexity of the whole app. Putting the `ScreenDisplayer` in the `GameStateStore` is the connection point between all of the state management code inside `gamestate` and all of the components inside of `screens`. (The rest of the custom components, which the screen components depend, are in the `components` folder.) In this sense, then, the `gameState` is "global" -- everything in the app has access to the game state via React Context. You can read the consequence of that decision in code: most of the `screen` components expect game state to be available to them via `useGameStateContext`, and even some of the reusable components (e.g. [timer](./components/timer.js)) expect it, too. + +Folder summary: - [components/](./components/): React components that can be reused. This includes simple display-only components like [Button](./components/button.js), complex input-handling components like [NumberField](./components/number-field.js), and more-esoteric components such as the context-providing [GameStateStore](./components/gamestate-context.js). - [gamestate/](./gamestate/): Reducers, actions, and "middleware", following patterns that are like redux but implemented with [useReducer](https://reactjs.org/docs/hooks-reference.html#usereducer). - [screens/](./screens/): React components that represent the various "screens" that players move through during the game. The [ScreenDisplayer](./screens/index.js) chooses the screen based on the current state. ## History -This is not the first incarnation of the JS Adagrams demo game! An [Architectural Decision Record](./docs/adr.md) describes the latest iteration as well as reasoning behind its development. \ No newline at end of file +This is not the first incarnation of the JS Adagrams demo game. An [Architectural Decision Record](./docs/adr.md) describes the latest iteration as well as reasoning behind its development. \ No newline at end of file diff --git a/src/demo-react/components/README.md b/src/demo-react/components/README.md new file mode 100644 index 00000000..7a82e3d8 --- /dev/null +++ b/src/demo-react/components/README.md @@ -0,0 +1,9 @@ +# components +Ink-based React components that can be reused by [screens](../screens/). + +## Timer +The timer warrants a deeper discussion. Its `useEffect` callback actually plays an integral role for the [in-game screen](../screens/game.js). Not only does the timer *display* the remaining time in the round that is stored in gamestate, but it also sends `TICK` actions to the state. The `TICK` actions are hooked up to a one-second timer by registering a callback with the `setInterval` JavaScript API. That API also provides a mechanism for deregistering the callback (`clearInterval`), so that the ticking can stop when the timer is removed from the screen. + +Handling callback registration and deregistration is what `useEffect` is really for in React (see: [Synchronizing with Effects](https://beta.reactjs.org/learn/synchronizing-with-effects)), even though you will probably most commonly encounter `useEffect` being used for fetching data to update a component's state. React 18 strict mode will introduce surprising behavior for developers who are used to that pattern, and the docs have been updated explaining [how to use useEffect for fetching](https://beta.reactjs.org/learn/synchronizing-with-effects#fetching-data) without running into the problems that are inherent to following this pattern. + +There's an interesting consequence of registering the timer here in the React component: nothing in `gamestate` knows that ticks are 1 second. This component can choose to tick faster or slower, by simply changing the constant passed into `setInterval`, and the game logic will respond the same irrespective of the "wall clock time" that has actually passed. That means unit tests for the gamestate do not depend on time, won't run faster or slower if you decrease or increase the time between ticks, and don't require any timer mocks to work around slow tests. It also means that the game's ticking behavior can be controlled entirely from `Timer`. Want to implement the features mentioned in TODO in the [reducer](src/demo-react/gamestate/reducer.js#L52-L53)? Pausing the timer between turns means updating the interval registration here in `Timer`. In fact, pausing the timer might not even be a feature of `reducer` at all, depending on the chosen implementation. As long as a `TICK` isn't dispatched, the `gamestate` will not change. diff --git a/src/demo-react/docs/screens-wireframe-1.png b/src/demo-react/docs/screens-wireframe-1.png new file mode 100644 index 0000000000000000000000000000000000000000..2788c0bf7d5b1cdc5da82e2891f24931821c334d GIT binary patch literal 484748 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

JWdM`7}2jR_k})0F>84XGl#p(X2ych$=^Zm+Aes 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⪼LcS{erqeWesQ^I(LBW9vR29Qh<4|_IY@9}DA^ds zTywt27yB{b8a5cYlG|Ur`9TAj8VDB(J?~U#zebk)CEB4^HAtHLHsmFi3_xF7Z5l--zZerQ%eAmZIjAHHZ$y^#*fO9rK>wT2n$^(4kq%Q}agQ-e#3 zh)16635h5t@hQL7bIE+T1_BK(#4);>Kh|eK4^nj_3)Kue(qj{UYh`0V4@x;yh~T}| z4&@(IS|68^#pXt|Bgz z2T?fcD}uY)sMrPPN`|<>D5~sODMhS!9$~<^RU8~@fJq6uNFg(~G!iL{3SmB@8S~WQ z(&kcr+#~YoKt*5C^7(NlY>+vpr!}GN%pHhWc{m<_xpH1y@CfdYAa!pc--h;Oz4|sF zI}~Lw$y=K1f7OaU4my8<-&p&>>aXKcT0=S#idw@0@S{zeOhSy8rJosDG6N~?82{=7 z)JCL?o5Sf0CQfW(w(K#@80RZk5g(Ku#S?8ZWxOr$)rMl-b}@@1EzseC z@Xw5@gRYsauM8O5Dy;kE(=A?)t*qLXyE3U7nlcD!SvNqx{NQcBz)$6R|78$-Cc+lS z$T}K;$OGk-c%0Y%x9Hdqn^4D9xH0wyF-AvHdbn=kEQHGbIW^88^fEQ@a9xEhpp36_ z(+<*l?#f7Wl4bi$FRV<%BZHTYfxSyDqF5^X{_NJ@^^Vq8ahy@~U~>W+Zpu8)-1T}P zi3f9Bv6NLV<{d06xIFzFQ!kpPdr|dy3>7YKcVCn@Ozv*uj^UPNH{LA+2lPSMwDI~o zoTVr$TaMn=(F+HiE3}JL9+Vjz7m53#yf65Olml32EH0$-QkDm2Bc-?JM*&zBP~sSa z4+OoAXDB_8d^(2fX(m5#|tX(ET%I z+k>L>i^g5uHi=hCO<%2pYiAUNhRqOrlYRuD3spQJU9K&l>M&vIQ_CzP)8q81Bqh_J z<4^j(B5kDj?`yr+#5EWt{9}>^+nw1n^KkX#&;e9AW`>2kA|CguGBi$I!WxlVZGlR!pkm|z}XxL`D zeVF1^ZP)cHT2al01w?3ZoCPs8`HbmBl7};&>*lI zRd4|PKRNz(YOEv}E#}Vu`2zv{ljk_i4-=kCcygJcyTp^QlKeN2fLnX$&nW$zp75T; zo`MKpFfHj7r9r86NNGV;crHOzPi0TszG3%2Z+NS?dBwoyS+*{+xyQuYEC_>k-xpQv z@MU7V8P?*n0t<uP2l(E!mZvF8bXvdo_ZIa0Gs>{9&8}jc!-ZqTl_IsK3_+p zU6$?BJQj#vmB5F)_6mG-msayTD>(mlVM|^qom*%FA9kGAUWd6$+#+ikjZ+n`BJa2a zm2rfDFrQJj;!Lo%v@0%vUC~QP48|_rZP4RGPR@G^ogEI5`4GwtRcCXI|)JgQy7YRGQ_gmTSX18mV#c|3V@l}IEMWPt8A|f4W1(A7@VqN<6 zZt7ES4OU{;iX&mIDFaW8OZ5|lq5@R;fDD$ApoI>q&FG+d94FRORgK+B{sUl`ok8lQ z9K`(keq_CC{|#Zh3wlxePtgeIblIy_!ZY{Y_vg!-uS0BQ>?_r!3vv}7LnyQ9Pq-0W zB?+TPCn{-6O+q9g^1))@7B$J2T9hA>y831NZ@AX-;Oy~yr5vSUC@+=S-`oGJo}>{} z6cD}_v5QNr_$Sd6H)KfwY-s8{Uy^8?>*Bt;b_Qd3^GAS=!3g|F`6%6yT+-^(m`bqJK%e`kZmCKb~k zhJoELWS>~n`OzdMu*XuDhpiZA6Y@G09z)iUFHtJO{GqD^GDIOIyQOPEb)L_p=$Fx+ z=PJ;W-LRU6R^q+e0eT?q`7m&3+BzO}!LXUs*)OD6*)!Z{Aw2@-EL*qrSBZN47iUbyBA?vLhLiUcGo8d4 z8mUxX+#?+hMco^hrFr2H^PZ1#d95KMRVJwrov!bPc*qfSZs{^QeAWk2L6BbYo%zv3 zfQB7}(%Y+AE;%u&4nKu*F_Sp+{r(Pjf!V^IV+V=n?o_6}%~NjQ{XAgAj;o6x3wYtL za&=-2AC1aQP&j%>UHli*zz5P4aN}yG#9Kv59I$?r6ur4NvF`rUu-1shH>4NtKC<+G zxK$(ue(5;44irDH7kx7Kt|cYBsONdW^g?J&GI3>U3HVM_nx1*iX(j~HKQj1qwq(ho zGIj|a-eWYpV#c}pg3a)bOnb%$LVE|Jyvv*V01f5>JB|~r;^*x;Nwy);704GGBP)xt zWf>E#)q}clvW_s94v2l(F_sy>F8^XBCC~D!_hRG$jwM7(=c^$o3(+UG&=~02PU;Qd zRTB|qOzuf<$+77z1#pO|B}2kS8eWdw^@qJ3p~brFG#e@_;gz?o;(z8<5&p2-lx!vb zRiRg%1e%_}CNOwW^0i~%P*wC5ufIN7s$~~oP>6k=4b;hNRMR>A)6Yd)I--nIRD#XSaaw`cF(ru0 zT0>+x3@!WLt?iCbWs0R1&jzFGdZ2 zM+7dB#B)(`;hv^~u3*7-=wLwEpyYAM`YpCq>f_>iL(ti@O-edp80i&D-UWAPkMS5- zaX31R!aZSK^IRMk2_o?LQxxC594^r7I7e#ZapEmTx6}IRj3M9m!MS-bxkKZ-+ zg1<*lPt?$^^Gr!3u>P-}5Qx1slB!HwYd|V&<3l49@5c%7Mm+%snc7R1TX)#-y8;~i zV8)c0ld4o3H$}@`{!TS+GDodT?CvZrtB;DQ1i?L=CEnruQ8r+l<<-)tjlj4_Mu;8M z;oh=2G%~nC+SA04LRAXKIqP*;7J%bBevk77YPS+CX_Oa=B?;gyd6D0rf4VEZV5g9~ zty@qz<$64g2bI=?eu4aq7T$9NWy3v&&5g6g0R=@EQem)zMm(FH-04=E55P0HJ z^cFEDVcII}2TJAjF65P3ULG8H(A;pvzg7>g77Eo^2v`wHyxxdB35CPAC0esFgI2WX zTpWy#7ON(u4_}=N;4v13sWY!2q^FT(# zA1WM~Y`#C^o<620*S}U7F1Y6t9LnDmOPr?tk=(ulcK!w`=@&Q=XCdNG+29@%v`bve z-pz}oqHFPFm|1fwrsGdGe8bji%wLrrK$*M2oxi>e&zyFHo}su;@R$Or^LOofx6XFk zPCq;JxM$wDU^dTX1_V0m#n}wHlp9U~uib-8XVbytyhXeCeyINcv}sck0!SaFq7*N( zYR&G9^!9-CTZKssm#tHM4^sX^cpf_#tPQSp6$0z6Z#Q$tCor1sD!9~pcRC~>EzMOA zkicDzKE0nK_p7`_XF|U1>F*Q^oXzoa{mgMV(93f5^K>T4Oq%sYVwB5wU{y8Mk(|-m z(i`=cLRA9B&5OVnm4ez_>5a>Xde>9S7at(+Gc!nBt^PO--B`y4Q@C|2WYr=2?2#H) zt0Ie4TMe;e&gXY*Lf#TlvIp_{AyY@3{Ee95bSV|{#i*ht@4tO+tdeEjgh8OQ!` zIb<;^rSZ877~~Vi?MWr~lLXAkk)8QiQ@!vJmmU#0(!(^BkwA?GL>(9?e;@MeZ~FTF z&hVRt>4~DkV;3ocs8i8lC;DBr+v2Wp@AaNrpa-TEv3ICYy9&4}Hf#_xmZiz&*xPbtfS8_iUhEXNNcBD8@c7BTe zn$@s9GR=!f62+AF#M`N&C^(%TSc9iccysQB8T zhe%iVglz(%7!mo@A%zot(SvT%^GbWrMZ;5X5u05`@zkIz{@m)rFzWZE7d6ScdOFgF zJDf_oBVRs>ylYMwjf9FAGCe>r6u2_FbqS={JT4R_1-9gj3YR+lWk;za-DO3->p`tY z9+Z*0OTt1|@t{o~{$|o696cLjPo$t=sAfH*(p!OZK9O_>akld(Q>g(@rWTrjsHIy= z$NFuR7yWO&7gIN;p}3R?8Li4YA3*HLU?e>BLuiXdl*K;3J!<$oQTV2-Idv_jyPGVs zMUh00LOvZS*zq33&d!O1f3Vo!9j;6CSUmLoC3>FezTa>j=pH?2=U3h`SvR%NeqAcc zw%VmUe16(vrr7v6Iw(8gXUs+SE$nBM%ud&-g17|?#L--D9sT)=ho*$1eXuIiA)+Gb zmqh33{=xoRH>CN%uyL#=reME3_l%|Gp?j7e$=$g)#A6{nSbpoP|A(;m4y5|+|HnB| z$3BN+i-YVDSw}|49@%?lW z!713r8d0PV3Yc5^!in4qESN2=V+u($__{+0J1JsE%zQkiA)22JtaEAVytVEuyeo@Pvt|*V8NRNPE)L1710~7*DZ0R?Gw3+tka)=XnP_9^62p zU$Hu(B4BzR!<)|QY%Zb0QTN&Q`;VEu;_GNk;vXmv&Iu|CFRCJ1G{Lz&5^Q9m*3X%6 z-;@X`>n+RQwWu`D=@YIG|f2$0agB$EjP z_b662T&d&!UAo!`NqtlauVefc;sM_6OE%qRt7F=aZohpna|!j6ljZgT-k%^&P2FTP?XOrS064XsL=LEyI(|z;eyiwDd(9N z_bg=X5+$8CV+{_z3FvuWeKa$xJ2=%(e`uPN=teX=WDhSKq1L3n$VFZHMQvArYstua zeuRCHsx#roCgt$=oo1s<<}@nqz5>Dd0LA&TB@2t`5uS($aib1SYbSbnseB9Mpap+a ze|b>OmKMI%GSN*u^l-m2TMfPgL?W3^?qC|+V->mZ29$SOf-2(OqPa<*zHg|fC)2aJ za;Vs2;eS(CyU_Eje)*|w@mPfJ(agC+?zdmVh`H3qHFdjfI@(e=ty<@Ao2r!{N8_2N z(qCabnm~I27bij7hj?mX+H^<|&VbieeIw?=AXKyyUeGCZF&q^tV~*N1q8o}3NBbUt z0dGl2=_HY}IgNvCa$p#klc2mm!mE?Ox)kMXJ&`jb`Rit+hLM~yK!UxGFWt@sZzJ4_ zHw>2+?{(E9UN(hI_Ti_q3?9sOW+mr^#NIQX(7*Rp&mi^Y=v&M~Z~v(};TX)#QTvZ& z{3N*BwMOhc*WyzhqfZO@d5?_TkzZ2_e}iSY=(hy|52Qxqw(5h3{#(i!ROxO+E1`ME zFtue~k;bgtv=nXApj#^0ont3ino-0Gb;-hfj`scuD9XIndnNbgB$0zsX+#W`6$LQ6qQYXMvWM1b$`~vGrS-1m}25G z5xlxuvbD5C?+r`K+`W!xoOmRE_l1Ml()A;Nu&1N|ob=Rz^!C1Wh<$SyyClXqn^ zEbhRr3}5Cvl#)i4h}#DB2>$C}>%zzxA8UQ^(E@g;G>XXm6z+2BnW${hN|TqP0Y+MH zZX8^JVSI;|&ga;gJ}7=bCTV6>GR{z0^+0IeUUzpze3Y(W0HJs0>irpfH_meg-le7M z#rxm}o&6VSy&G%=n2-3d-Yr?3I#ccRc5zIcW!uMRK|d`j@1m~OC2%wKh&#T!C16a@ zjF3>gPf8R|PP$$20?W7S@2d8gMq4@%%dzrcX zG&59HIjsX`tR(Kl?V}y?vD(#=Cfb$75XrDO|)ktvH>PsM!;v zlKVZbPbt+g4R+K$Os)}zzYS)@h!$T~sqC^SRnlb|uB6}nY##l!Q3Tq;UkCOxoZn{T ziI7Vu4?6s~7Lf*{nvGV7lAdplxRnDL+A8%ek6+m*YcOXrBqO6lm8o*heUB7a}J)M0qm?R5daBHApGS%SCt zhb$O12D6SIn96F^_MX#=@1CaTq@RkQUx_}$*4PnCld{g>Dw^y{pe;RSXeTo2GWlJD zz-(_$cS0b|aP||>FI6UOR~AoHgF{l0;@Qa&u;d^TQ;%RuHjJ3Mbt*3zuP2-h?oiYP zhFYgPzB=I%fC$kS5 z2O+h4Je#%8Th4^)fw>DzN-<0cuX5#NY`}nM!_I2=z6ZMlU5DrY-Z(Z`^d5(i_pWON zw2>^N#5t6+^P;08lvGn(lbKooc%P?O9BXxt^MN~URy`JBX-_1p#eD~T;m9$gwu@2Z z1YsQPF8NH!yDV3xWR=dgC9~F}jfJMYnCXX=ttH=!rW{6b_0(QwM|76qwZnG<`M^}h zD~>^!v0BSVF45Lz_ZO8YU!e57B})dQr@P{JfH<_&fOXEG{8v0VS0DH21U|RCBsBGh zz~_k_F;3WhMb`Bgex$S!r$cb;48|*1eN`#=+v|HOm9IM16WyrhWJCG5#%noo;&&QP zVDiq26q%RnBhOB#L^q`@txxcqeSQLjiEv;nifWn+*@J#$6gDsD-(H7b5?DTEy2lET zEet?tQdi1nufEoXujVi7Oc4wQsLVKMy}~0?-6+hg8PDp6@TmOw%7tw8*6<}YWPmv6 zHc5#MnoW#Xucvzy8?2XTs+6X?SmwU!yKID-+Tc^5sGNIs*Sv1xM>G>ZwY5>$)arZ_ z_&}np2Zp_J^bRhS(ENz^uAL&PqMcRo1RsPbIS(&-fUAH#U^cB5Coi;^^#q!BsWTN( zXmu%*q@0$~Wian#zAXwB}!YLhBo29B5(6hAjqGBn;0Cm!^GxUx#tw;0sICVMD z)8-_;a_Tbjn{ttw+F*V6`M$J&PJ$*dOVLH{)_+~7ha`O(HmJTeokRa0;ZCzQJyV6F zcCe!7t!=SxL-)_$!61yvQ|EI{w<}HF3i7swU{9u+oR2a6HhZVX8`5mcs62*BBM&Ec z%8;FQ5*@H2AHKN~r`+40>s&;1DwjzhPB39Wt1QHy{maz>U+N3qTxZN>Ww-<@=ER2= z3_P zoZN4-#COn^&{WW@>pB>v-|*LQfY*5BMHHgkisy)uuMgWJE{3B`vz)RTRm(H{-dge% zTWeKh?U;QlOuE}A>_u-!yksXC+#oyluInDm`J$)-w zcmDK|cK#dnQ*`ZUz0giMLaJt(DzW*e^watLiOLL$qM!4#ZxnwXfuomT+!=2uPB*6- z`@pR$F)MFM^yR5bzHcnPnOQGrT42ira|cX^;&hzVtGderjBM7}xNJ?c&uxcHMfQbYp8m}}e{cHCMX5lr;h!UNvr)HY9^v1J&8C<^snxFMnegNA< zio%wKZuXDNv%IY~_G$v|$+%&Jco;(MlYdSN>isLpoR11YTa;cO>ZwpJC8Z*)`OxG8 z{=nDA7hm}6TD!1Hh2+b+B2RAT?8L*{Zj;1qWHs82b{|@JR0kiO8GL!A|END{FTR$W z2tC;fuc|wboH9a*FrAooD%X#sOP(GTd)akc#F_z`o*SKfQm(tBG#9%z;q_t zb61-hzQ?d$W+G)YviSz))Ld+55@_4L{KIMoau@2Z8lWvPHPOrz{xDJk|ADfO55oS+lz{`R0Xn}UE1 z?_fWXvgHJWGgR*Kk;j>6-FL(5Lo?+UCK`Q~*n1#|ROM~i10otsyw%!NrtkONJ~sI!R<$;EBhls*NVYJ zW>7;pS5Mc%b!o3NgLq12NjC!~d4F8umJ+U`ff{A3&PI?vF~kAc`S5JoN!b9*vNja&!yoZ@i_hc$!>#B zOdJH#mbE@trc_6Y+G2uJ-xI^q!9=pPI1@X}=*?7ByJ7#a*q?aQqB`YZoo?-EAit|P z0VcvPR^0Sg%UO8)z?unzv)6Ix4ys~2ekDFsKU-3OoPmNtxYTrxhqzY{O0M|CoO@F< z*#*_C`tQn|X1LBFb2(=)GvZCX(%+}0oEz-ONzTw;79#w(5}Kalq8OYJLxhyLDz(Iv zsvJIk9OLQjXuN7tagL;Z%rOB6+B#z$I%2xA`QX%W252IKnb1lcZ|jh)x!GL;);3A} z&N`PiTD=m8>#Wt7xIJx>M&vPoaK8!&y<`rTo0!p-EFhO27z9P{WJmGjSr*l0W4s-8 z$kdJksNEqa^@FEXVt&GBkjnbXGe1vq?~Qn&D)>xK%HR|Cl)p_G7AD07md@?Te(JB6 znS|AzQc2#{m41J!5-6Ta#osJI%Lo%ow@Ja~_svRCF!?^pH%4*wj0ne17k< zK=vh2D~lg29XUzRKxp#mWFm@nvS@(_N76=m^{>_Q)_^`W^`VGfQA)!NpwDJf*L$~; z>X&;0b~u#=1R}u;0hPZFS)QA9u7i2CmQl8<383k%F14gqR4^W(b)CxpA^_NlvZk;dgexA1Vn$KMNZQ`DeK-V7Y{Qj~)J6t`zL$Z4rvu2K{!mH^sUY zent{87oG)1&!n7FoO{(Hpx`l5D(2LkXvCU#P!>Z}@fL~FOi=Rns|U97V3uDs&QpYp zshP{MX3Eng&s#ByVqmB31V^Xo1_h&N;$wRL)mK-tNf078j`lvs0+$-Ivp%m8ZYl_! zS&vBU=jS0EV3sO_zS=8}!;r|=Re$?Lbhr^3+%$6YHpRa}tOp46v}0F1y#we?hL2RV zdM9NXW*GMFMbYWuAB&G&neL360^{)FE0!zH4t&;5A?g}A0#LIWXFRM3noj%6sSxfx z0qQkY%f5lHTu3s$y%aPfS9N8H{)m)7i11S$fZN}dv584Qbk=pBp9CTf)SkbN<~SEt zw}4Y6rZbd+vjIp4a-siXRT^bSa{Wkts zdkWUG4(S&q%ni#XKLgbmAJHY-jqreoN;sNY9`L?~WFLXS>FQGv0X5w$mpUCkE@o)v z#0$rvnu~v;%;qrCIoRf#H$A|B+a&ig{0g?Spo*OJyDZ;_$+k!*!?`l!k{GRY-mdB4 zw`WT6&7XhmBlaE{f>X2aJmF~jCslj&;v%{3`>nqbvEJBLj|#I~mwXz|e2IS<2F(Hz zcuv4v))eSzk56_bH#q!qI<%~Yh(~V@OokUyx2|&=;%Wws<5OVj{-p-c#xFF{LK5S` zxP-?RZ@MPP*s^Pd=R`=N*x7dsk(fMfBsX^_A!>3D@q3@3Tzr z{T17D&Ku;4@Go;qTiQcnfjozsY+cYP zF8u*;hZ{zcS))Jr@`JBp);j4rtS&vER|M||2TYXeQ2Q;#O`y`%_%+Kf{reo#=^tGW1Ag5NeCRtw(k_@W zrmgZ9FaW~YTWsL=+pFKCYMiA1 z1k}35vZ$oT&}_i$-2({BnncB?D?oO@;$8drF+ZPYEI%xfFZr1Ur7ur3)ByHH^p}@+ zPIOA?{_}``JB`nh%_CVgf9Up zp{>b8RsL5$hb zUM$CH*xAgr2Q$SBTU{T@g5-yjHdE5wNI0s0>?Tg>Bk}+4GW4MZD{#rOr^Z1pWV8B2 z8r-bO>e5_dfUJ=Jy3+E|KI;=w@Lvp(nuBTTQf?=N{+~Vk*V?pGK>$v60rm8jLU`So z>~~!Wj6KIrP_r=wZY-pQaIb);{jaC^_p|Y+V5bPqqR}T`#1gf4fm`KBH`0v0h$<`m zH-`JKNB{RP(U#hQtYzul=EEl$2yBD@T$XG5k1sE0*r5UHV=i~S1mAzC{^u_L?|UjR zA>+5XwUkk7XGy2INWh@!zpQ`^Wz1(#;br_cmyelpzdtj-o&uXoYtT??yr0*cN`esM z1>q2o(<^*kq?Ha#?($e|YDvw%pSAMbn z!(~>e4|Doj>)Zcp@de=7$>ZO2FU1qVj(-3d8V9d#HtPA|?pNrIi2;1?b(7!Mrls5S z8UOp}f8T|0Hn0V=@cxhI6RG-QS0t_~6>KWSKKPLM%c%VRn4=QF{iy97znn|w z4|0hP@LVi=LyuesUq8O|?(FyUlmGpF|8ZZ!%fWjxdDUb0RXiNb3={$Sm=fM3tX_47 z3-7A!EWp(0r8WF=(;vS*JVqb9tSP%0K->YxBnpgF(Oz1Ig9ze>4(LZSay%D;ZZenf!t&$^N)r2%^uxJeGiIUk)AZJfP{+n$Pb z4cP$HG!6z)8zwO0=7IIXr)NQLdzuRWxISXC5ykM)OGmfz3}KB(3n0YP4jD^Ga(#94 zon24FhxhfXz;}1~8p1iiys8TeAD&!+tlBo9KRogxT==HpOwKA$%dhWCtvd&tfR>jL;K zJtX|{y43cq-&~pE~ zzbW6j2=&?RWunwE99>m(aCbD((oGP5DJcjv+po@qC|giF4X?QM*r75rD8e3fkWLa z_M*>emHyyK2Prm;tw;>Y8*`u714h=Vi9ad<097$3uZ?jgvdUDMy-_nX*azLf3GBy(EOI7`IWB0N`82&i_wlmH5LRq!k0lew>w&UChQnBezCecg@a>QaXHqY zZNA@}gmPRcRP?M8$JiL;;6cS^@76*&jp8;M_u1q3Th@p)Xy{G46Ev?G7BQy5=B--! z5(fag7_bJpuMC=W(Ksb%7}qf*qmx7U zIkzuHPOhp@!+G}96sK|Uq{8$uwkn{AiYMZnhGH5a^QuY#+7xJII$`5yfRjzM{{HD% z2kVt)WU*c@3nc#PU(LAfEBzN1_FpSz5eB~Jc#!*fCwt7=0O(xgw+Y@D(x^rF)+=!9 znt(ugX65wrZAXg+oI`!=p>xZ{m$###q-iR`E#VtWSbxvovj9L{9Yl`@e0%g?6F_d+ zO_lg3DWjhM7Qx?Yhw{r08Bdx7QMe6lEP5Gb>YXbuq!DS3+Fl*Q1%SA~8@YMfI zo*g7H2b6#Kt~R|(_+V`PZ?NM(mVRF!-BSMi{yD`Ui&zreLmDPAbR|d$#BZYC!DFF( z5g4s*Uv*V$D7%$nr+Uo6Kdf5>OQTS=O&z#jpSb=R=ow56X>cT!u$^(%^u^VCj0%1g zHORcn_0dB6;MQi_3O@)4lZf2!0kkv+_tw%iBaT7U+8$nCboI^OIm`cRq#yFxcdBhw zPDp6LY@2+^LiVoD0t+6o8u{MCj^}R+d(&Tk+&RH%4%5w+j4MmR9n$fn>fbW1 znjdgE0#UC*anJ`4r*?qa1~XzEAuAwu1U{_mmJU?%MxA-+e)@BW|7}Pn%wep?f%ux( z9uQ$=*7TAA5apQsAlq)q?_H8JaBo~eW-D38!moWBCyk=W2}oc(O)cTl-#fK{_=cd44SW_7n>%7=+~ZQjw#?=6ZPJLt&sasCVE0K z+1Y4jH9k`E%V2fFVbH)nT&zXz`U)E~7`O&tZao2EZb~dQr(5>V#QTC#3br}iMJEO8 z(>~!PHK36W%QOe))r;N$hv}hkV089eH84cp7$9RzC{?~i3us8+ph$o_6HmSf>Y9l- zEL_z;3)t}BYtHq?y+5Hc59mBj8WgCalk&uGVZPP9=`)(;+(n!G{}@|WtuXpo)O>dv z21IlVsjq&#ZrBY5^@OCS>3wk%o6%>YC_v+p54R0Ec~ZE_OGUNqMF4oFXmA9dj4zOJ ziQIgxyg|0;TDPl4R7Pbd5zbRK|+=7eHlU>0E)UWqI6YJHQZQF zmWP}qCy}4n;|%&1XDKcv7-UIm-!v{JaWCii4r>`EPUd|Hh=8BHvA^B0mIp7&y*4fo zPg-Lgdazk2_9EnhFe?D_F(B=qc@*yh)!)^vDcR*Q@mL%4DEgJ}O^)W3wI8Z}7b=xf zL0O+tBQo#U6m0$^bzoFDaKSFN1-B)|1n4ORe2i|Xa*9o_@{v+gTY9KZ&K9{{vmFCS zb-JH7&cph(U7|RO%g@X61g4_O8=A=~HunaN?`v3G>AJ7WF{bEoQ1CHdZh9Y?m>@@EV9Xqd-^_4JM_@y@lViz_8_q z9_~2$bzJ*hwu6o2Ex-*GoWAmrDmmkIktD%iw4$f%dfSq>na>Q##f~;S51*)es;0F{ z9jQ=>c)aDK-KPfXzQ@WgB1ADKs6RB(ie6==QyW;6P|q%1T5^~juHR!wA(|#yY^9c4 zu7Tn?{<$>4#EA7G1Q*pCC?@|-&$b4%-twJX@%8*JXKNs2U7ZqAs4^5*vS$O8r$ksF zu#>Q~V-{cEKA2I6s4=qcmR)3oQF9U7K>qh~(_*p3Q!eA00)2Uz-OaCzm$X;2p5JVW zy9R|({IIo&ds|&6ID%V6rKCH@RH$W7Q37XH-zL=r;sWjtAk{f99v|alTyS^9@XMan z3|&yc?~a3;GZZJjC#`-kHIOC2*Po{#N6vtmputRrEl{deY8oFvf@HhH?kL?_P07}RtzSa-G$ zt4566HY|)_L5_StkFpVXx~c>Mb)O~0Cpu};M|0{Je2#FV;C1<a$@X$(q*hGtp9J5XxkGua|m&^7h`(mZOj{ zF!2?(GYPUg=G-S3?nhEllpb=ZVf+SEgr=t%m^PBhd5O7;^wIR`@(6k0OD0wgR1jM- z^-48T*lP>%$ME#PckBCB-eLSU7PkN+H*~6;ows5f2YLBZtTRz^$Q&IPJM{thlSnYY zi!PRM^Sl9t?84IU*O~5hN=rh!v8{%-Cd5C3?}*w?KWkoT`r3V#U0-p>*`mqU-Q`hu z`v;Sd6WL(%WOvl_YV*DP8eZ0Jq%te zO0X0nND#+?oV}guP{bC0aOk(k@48WjBhLI+1kMPAq!201j)1}e6IA&mZA}nu;wKk( z&+j*nLUzK8gwjM4xIULLbmduanG~Wb_xej>rAsW zZHG4_&-&-BvRO9!d$V!pBW*w)z>qH^ABwQnY`mR>3%9ViU^Bf7X`*`LYd9U}+9^&a zk~YOXFTl#AF%%sR|30|;0cwP49OqI7B8UdAby6hqlN%{bF?H6)JreiA9BDR2yh-~x z@`T^l(0(ApQX-Om^8V#4fhdHCQKx3v&!@GUDRoY&lm>T+4JpNmT%`?<73o# zKKiLmo&eo2{g$_W1+y%`mJ}A2c6k}dZczUO7FnNdgI;Q2E%6eFfQAeQ6-QD_E5k5* z#&|Zvdzao-opXN(!pt=bE`d^gZveGMgDsL>=^3jA5)w>nYw5>chA7R#H+{qiBG9<^ z?L^L34AXEw-hp#R`}{dqIs8Dnh>kb8I8u#vjG1RJNOIG5-1YyYuiA*c~4J>q3;oQO9z^zL-nAIU7Nmtd?lAhuRj6nG#lGQo?fX zMw%<$DW4+w1Qa42e_9w`a1$>v>9J)!Q07P9MB5c(*1VmKO<0B^P|71oXepC&R>M($ z&FiYdjIv4r6~5@deGI_=|;^Z zi`Tnno9Lt!8tvA(y&%!8p!Xo5oKlItmNfi0w?`yD^R9ZG<{7R6x1g!^Xz>jCb~V$* z%3<$6;K|M!AP|+)TQQ{oWrB|&7x(8ilVud*F)GF>u@oCIirTmLU1O`RBOA9d*1)8ZH^ztKuV84v%WR46RjbEQJV{ghK)6r7={}xVUw%!sElP4u zhN~UotIf-PvjcLR-j$iZVWlPo;*_XbK>D)FWH=c{h0} zs%E;A61cE}1StRP*>F`=*;x4~7f)mp2_$6C2o1&f7zW=pF=5J={S2bl4gkDxnXFve(_mmEN88(a*e(Q&`$z7?9Do;^^2OUlX{)tldE{@ zojfzfJFWaOmxy`+2nlhW{pfvd#v)dz;!r%^^^tN5?|MN85RX*lMl^$i$|MI z+{-?vSrJ{T+^KU$H37`Z5>{6#`i_s%A{}g$eqUr+XdtWBqvfh*%P#GY{?wY(4;fX^?B^#N>;l?lx$&SjC>JhEc4k!N$T5q zzn)r0_E@=Y?HlBRmqzI(vyFUUB@zOexa@Q*{OHdtfl!=_v2zyJsuWUW;RPsfn%$mr z@4F>11u97cjWyCfxxU)bk^~L}N9O#ZX=jAzJ+G|_|7M9+kC z2oX^rJIw*=?}Lx^k&F{^sK83>V_VmG`uDj)d4~vF=5-Lx+WKp-~LCY z|Id$T8sNSHTGwBk*=MFl)MW zjwg&M+(2oB8b(?%1Cpt){JW{5_<)Q=)AgdC0ZU~i)9Sm0+3G(H&P7DL>$jT|S&Yq6FM0X&_@hB zmmj$e5i(a6(=^z3(pELW;h}MVKbcPMP1mIq$R8i=dI>HBl_K7+Y#@gS!MbcKUjfjp zJ{41odv@unSLS)uT>He+cT1BV4(zD^_W29cL4@ZK^(vBFmx#|v`$LD|H^;LlUQ#e- z39V8nR0V%{DcrBC5WW;oF(33iIJqY-sg}T@AzrbV;DATuP`F}*w&O@Nl}RgBy$f86 z5d;oZvzmxQQ20ynW1JhvW&L_`_Jf8|08fc@JM9pwpO+X`6a5US<(<5u|f%_{m=s z0zw=OCE{zVO@NN!*e9g=91Ka)zc^%2sF9K^bqceR>69!$CxVF7{HeO35>SO_P<>|a zo|l@u2n6Q)%8S+Haibh~BZ$0Z$%^Nf`Q-0}A`B~n$}-QAt3B$JzTfHL@9&$rJb9He z#5t2q=xdFh>&|icDfkz2=D7WH5dI%q@*aZPlGB6evxugZt`a>GY|f+(G%F}^Y{Ilj zl!D-o>vfeV_S{QQ zVJY#4Pz2v&$TNOf>i7}YqF63+5~qI5mQaFQ*gQa=*(q#GBn^OAi;d1^6j69@EL@r7 zgnF%)k=#_L1{O_zY+jzw1x5RrSA|wG*EC{HrLfeXyU9PaBX2M18bSn-`cNvFdmQ$b z$!GbtsgxwIejeMoJ4cZw<`d_}a%6oxP+e-F>F^Gr$KDUcNoWY#{Afi`_{miK3J|~w zLym{C`Fp=BMuf+xgL1$<+o8a->;NmNVrnO)e&fhY-83#QB?TYpFw+K`m~oz2QvW&tP-Yz@q+Z9zWO(=K$XhA8V9Ca^l>(vWE-D zuSKzP5hLLv#@K!AGG{b>&wWW3sYM#n3Q%0`^`{>1s?`^~|08Cs4irGt>WhrE1#;Ly zeL0gwkc=D;h%QC#T*F~*6b(jod;JoFiCy)L-Q4Plr3Q7Ap9pW&X%)Bo*MKJ7=l1?A ziI>+a`UdgDVue%{n1sK@E>RDRw6?`Op$Drw!Sfi{~}wWCK$0 zku~iHM0QcwM7Oe2VV$S<|6Py&&mAt%1{TY7daY-iE6n%|8Dr(`o-`}rmo{oibPxAE z4jgl3-d!sLZrv}jeWG&tbbVWHQpOUT3De^GDtj~i&D96cEd2(SbM!RxO=+U;5Z59N zfihefe|+gedsix_3c*L=(J|GTN}I+rc@#rL8W>07YE{dTqGTnPy~gGqW?c@8xRmW{ zKoU(ojkGPyEw-P27cW{Qs?5ItShtC64lA6)oK^@WY+XmDxRawQjQXcdVq-gbD8X2B z)DN81D8oYagIS(ougPr{ri9eC(z2RCz; z^Q%rPvoAiupUDDs98_0>`F5V0c!NPuw z5}KSj%zGcdRo8ku{7=l3R*xhgSn!je$)TY#;%fBDBnPhhm}aCSzQ0#ewcr%G#)@NJ zMy&!VR+<$KPfPNCW#oKpi1NwDYt~u#4mQ4L42DEmjwEU9DT=#pD3Q{mG-mqNiSwk7 z^9*4-v|vF}y``Low2I~(zjkWP<-o=Y*2e{30HFH5sf zND;a4*rPeq@7%B~@_1F_T(M!DbtzqCr34Y82!S73g(m6iu0E88?5O(}>f8*4aj(jQqbQ`=fXZ^_ zOb`hP8&HERa+;=B^u%<>q0r;e_!u4HV{3(iD*MTQ9%qAfR)S+2THUQ#y9Gnps^E-pxyrsCT)DBmKY%fl0uJMX8vwpAO}^WYC*M6! zE=qZiGanB(`(bWoaW=0&_0XQZwkhv9Z9q5{E6770OV^mn<+>m`O{&(6T(BqQATVZr zEwUjf!hAwORr^}D}V$S;>OA}-IHf3@Jl!FrUl;HOi*jAX*gy?v6@CQ7E z`&@+z@pV4cI4T4Z)Y6tMzDFD^&VxFFje9=6AF5dP?MnJBjWA^>Z|K!h5#xhSsOao& zR)?Nc<5VRjA=o5cQqiR*Vec$zi#(z6+(vFrW{^g@N*09b0*UG|wxba;Edr?&HR8-91-Az`E;m4} zfY2+O{M`VcN%s@`YCm`K@{m~<2j46H05lb74cn5%Oa8< zgk`EFcfMzS3jOD)K8Zfh$IYFwi8U>gpbZ*?8Vtq zOl5Ij$vK4Hg6w_WKhS7qMBQOU(riFCn~!pcWNm7HeJ~}B0aIAUj9a{a=lBx8iF1u^ zFza0$G0hwul5wO?lK?_RWMJl%B4J0B&M>KJNcJJIJ&aLr3!-7iGZo!wx4d8|SfaC4 zw+BX=@Tkv06ff~90ER)2>E3b;pfOw7zIfFbSJR4n?Gn#`sfC6JmJiI$CuN8;>F+N9^)ipWK!CFw*w*?6^1jbLaJl4i`~LxUZ^PV(f5bwGg37_}?= z_S|3bw``~IY!JMbGRvftmynb`!?rEl`p%)@EpYa&0AAM%M%g0)!+J3ZB<}wF&Vjg& zXS4qzFU5+hnTb-bE3I0Ampw1#343!_QmGNsf5|DaOa8>WZy?qY7Mj=x#=N^un?8;K zXvb` zqON4Q6{grt0AzK;Ug8;WP0J5o5+oYR#UE*N%quv7)S_L@sTPENm>fWNtF0$>>V6-( zIcgr;=reDICj!ZXyP_T-4;4?9zbEkWn8ZY|JEL78H#KF`M zm&n2j_z--U$+9;FxoNzD_p`YCkkcAYVqA219Z0a!(U;th2e5jZn05@_Z^zX$fzoke zy+5eaJLx6>##Y_KkC!%sRPR6lCW9s4QcOVU@7JYSP!F|qGPn;K(~?+x%p))(L@abK zc+|hOx|FfG7D=OsmlE|TOi?XN<&CdXL-}1EEjMkwrx#z~J=1-0lr-LGCbfrOP}eKE z+aAg)F`#FYP{_e|uB(6p)Lyi?QATxYDeMYd>;w@_Aye&o(4b+olpOMVdX$?gNwy@R z_Uwqd9+48!RD`5@Q5xrgp}C0C+1~Yc_ZW%p@eIivuB| zb4EFNRmko}Ty*2q-o_jKcUE4>R>USRwCX3Wz7z}IUWGWFT?*^~PKG!T-7K6LY_wgu zK%f9C=F*>Op60w;7ZKxr+!}<1b~3xU76}rag~6)b+Nq* z5WqaT?&*@WLNhpT6Ue6^P=gxqEP~!nQ%kW2ZZ6Sh(Y}b_zomHR)B?;m9%Tqs#uH8M z$##lmBFl_2zBSJ0T_kN5;Ij1?VldtO_y>UVlz}I#I9^cN;lpV%SkXDh=payicM1in z2pLutE!Yj1dnWGcBSV=8a}P^Nz#LxA`00sCb$MGZT!dwPb zcz6>WfGh7)q>U7i;%mTHI(I>sxM;;e8!>3|pn-B@w5e&m`mECQd8MUu`%^RybNyLU zP%8JhG|h9*s`Q|g>?)W&)xBXg60zNL?hx7FV#=IoRM!QXa+vV1Cj)=Ak^Jr&x3+-8 zhoNI34F`rY792JV`Ek3@13%$x8&=tUfrkfQ?T*e?Rq02Na*?-_RtNW78rOVsi;{Ro zre#NWce~IW;NRw*WcAh0cLf21mC>*l{cHprL)P1;?byHS7+i{g(~-NFJF99mL);dl zNwCKhAW`!YzHnjac}B=PaK*88@Q`tEnx-$~`S3ziLrh#k4cUF3Y8_;l% z)@Mpxx;?}|<$V>y`+F1G3?5}RdNA^Q644M9=$kP1Z3Wo&`jC6Fe^_Lrafx2-Q+OuBKF}N_XH4u|VL7M9A z{D}}z3vyPI!5R}#%_iE*bd$&HwMHi+L8E8XV4`IZ|U;_Cy5Y@Gb zLDj(IVt*u5R3|r6?Mpl`<5c?>SOK4;x@-Ea?bB-_35n?G$RvKUoP*|hsb@Vq z`JD;3SOi1VYkDUTWC)QnGVwtrXPKM%s8B8G*@DKa{O4{AE2oW@6?a=e{PV$0h)O26 z(!jlHt0LL30!E(KB4ppW03uoVLflei=+WUt(%1Qbh%W}hxFzbf>%V;$fWUkfL}f`U zH)WQIs{tFw;lbm#k&UKJ$gAD`gx_HO-S7XLM zW-{Yjp?VT|(Og?uwHBHK2D)%)fVa8i84-vE!FFlQWz9KR&396up$+2m@~`TEez&(> zy?;zFXjA{b>ulk`7;!NWTukNMZ~F6GOy>;`CX@6UmwbEveen7#C*z_X0zBAHy@<4{ zxfZ~xvhnWGnn<&c0SCWFW3jN!G+>)Unmx8;gB0*AoNT^%XWv z9+!LoDnRW}XU) z8!3fa)h1>D+C&YV6#Af}uO&*6$1~`E@D4kIE{#$48S39B-~ZeV=mAWW3P3p(YUaWR zrE)FZzjLA7@jC(lZHzIL%(VECZICW?Ky|QqdZGXGZ5)9*@mi>GFhsVT)F6R+Fu3`E zjYGaseFb!@tbhr>Fj`?gaS_k}9hOGQOuwyM`O_M)vcOh-3EMV=ZUt8j=*fzK zCK%nYX}o&zv09@H(2Ipyc5CLcFU5dvk+W~>E$TfjJqFBwd;Y+p&=lYUEwNV_!Tx#E zE{v2J7j%=>gW^SlshT6;b5Q|5;4~4vkoY2<&;0SzKLpm`-qAyxZ=!fRD8daR+7x*U zLJ0T_pww1AG*i1P?d4e41w7PAh^sFK=ub7yFKCtiNW7K>_q7+9`4rs1q{v@gEKe?f zRE9cPK>A9@AZ&pkjq6kY3~~O!Ioe)t4p?so?G=I_M!)~@VhDoJz=XIbAKa1d^Y%bi zojON z=(YnNtFBYv)RXK0O5-UcnmZeSt7)PgInMBO`QiEf18|1O!Tb_R(4ePse{V1HPgl-B zHhfg*=!M-WgCj6x^t0k}-5b4ofMq)cN;5Q=G$@+cl|cmA%#-l_*MlG#`Z z%4-Oa(3!lHyb_>h?1pN)Kkn{7I1?QVkeUK9P)E0T4;vkHI&X{GvbYT7FslQiO&;J{ zLMHNEdfM2lCNT6sxuM`WX>>hO^f_Sukw48~_6oNT$0;@O|0#;0{fC4@d#VNy_DR_W zJWa;FEc;gT4=DK@!pd`0Yr*4SBqsca~Ju z(FR1R7Y7yuS%37X>)WU6N|Qmg$=Ovv_UT#3jW1XR*v&l<<*bze-XxQkA@Wqq?eV`@ zIR5ZOy$PW6EnsSW(&*IckC&%oA)v~0a}NYZCj)=3oIG~~jPm`li+d)@B>c;IAt*5Y zC6jfEu;0v?9Xk%%+UxK`@}M$f#syyZTt!pu80T*ZF`&ZZRLY&w>{>}u5Ne=a& zsL&`#LS#wk&}Xnsy`$Y`3 zZ!^Dlvyg9?gQ}$i1Kj6xT0uWV2dFuq6c4v&AXkI~?>ojRS+@HuBhQVGOHDyVcn^?Y zFL%%9hq7y)yX_A3p${>rxA?-~a`ZFB*y|6$2tF}NR%zinaHwyn*(L}W7Z>G+{ISD~TouGVShQDh z9T`N4p8{i~6y+%9>LAx1o`28yOC-cliu3wo9Sy1H)TQodQ)BCvIu?WCj)aZO-;*-6Jb(&(pU zxytdSfT&$B+B7fw2RHJ15`47e_W5NZI%2b5T8|EID=pV50Fyr!#GncXfWW~Oe#&Y! z+>N4>BECt&t_HLes}na546BR#UZL|yIJl5Nb8*0E1u*u`omo&K#+bnm7o7;FIt4IwxirO&_t*39Px#fUp~M}Z4JKYnXZ z#sCJOUfpeQfoB#nBUNIlMTB~v0SwgQ^u-r9d8m9hsL%i5?fXF;VJp>2k>A?@V8;%U zAy%t;PiC2T$MmawU?MD?R_3JCx1OJ#%L%=$>R#bcBa5(2LrwPtL~)%P%;$iR7670k zK~K~F$KG52McJ<1!!!d7G33xO2tzm0IdmhbfTV<=q|(w1Ff=MC(g-3dC@3J(B`9rx zfP_jZjUf4+m;2e@eeeBv?|thJ7_@hL20-od1iU^VOS09A&7 z_|BampK<0sE5kN{&)oqgRqr=QeqjIbuK%t-HNf@NUvif2dK|d=UgUf0>4{TY6uw!8 z8kVahrjJ~hl02fI)RDJsL#HSCHDM;ou&_Mp@E%fE3J(AfVJA3`i55>ZI)S&jA5t z7znXz06QoST*}re(SuK|WZrcn+7bt|$9tczW*C}p{(uXUREZ0HL5o?LlMh1mv%loTer>BEa~# z1Be?qu*gtgyy>F8=lrHKG`aW6-*ros-~%NmzwnbaUa5faU2+hcm+d?hIh*qDwjjQ$|GHT`+a^}EZ-Ai_1EdEaW!Flya>5UutW3khsns92=YcK)x=6hr0G zXqny_Eo>+YFu8yelE7h5l~?WFcKN}$!9YRV66hml@p4MCl|j2w8Ql>wl$Qxy)t9 z_0+NKsYajxF`!Q$cVH2yj(8>qBv4J=Q}{7@|LzqQh%x;!5y%z0c1**IiWELr{g-3? zhgsW1-zQK(J|d72t%0g5NO5BNDW>E@xfj5Z9je>aPqDse;<=dlZ^s9_6hN<;zN?|z zYI$2*gu=_t5wb66zTccU4U+ocg}=SxKv4+V1bVpJ!WAsN0Z^=wgY!&XjzhnR0AsNp zA3)7LLy;J025Ju5@0=wDv<@pzJ25ead6H+E!K+#fF5Db=loaE+l|q`s#RbFyby!oq zAQ2i-^E!R|-M8C+Ta;6#N6Cn?%*Z^-M$B#S&l70Eq1K}l(8pKH#2WK=fWblXa$4n( zy8eB08qp=yj&7)qc~DWn0xe_z4H*S4k3zZHF2On@;(m-dP>ewWB^w3hrl%=hnLF)s~}1Ng?3zVQ?JUaGjcUxqyZnywp9O#~tV#(ObG z%MQ40l<=BswUaG^2Qb45ERjL0;sk!C0%XSE29UNdGoU`)tfY1T&D1g4ZWy0OME}tx zy+<*du9X1-Jci# zcbfVqauTIMc?vN@A6}0l^Z}5qu*H~`PvVY_H?scB9e_%VZ+{(?TYiphf*3A=`m`Yu zz%a)2lh8zV!#0rC^%8u;&4G0sNeHG!T*cD}fm!1^iXgMm`bzJMtzwh}m^p|T?gWhA zun2W}Uy}~EOVl9Q9o9Iu$Dl*qBG(U($TAA3M?8S$g9^$8B_oRK&2*(tf%b+G%7dsE zTdLV2f9h7EC;5Sc%;6i>FU+>lh2$~|M-}Mn5#m;Ss3ylUO~EsBF)C)~V$Rcod(`0Q zCR2EM00c}>`)Zp-TbNnf2U#k~cs^tlbI8Ab7CCn2wjC{$r6Fo1G==#xeV>v(9S^|> z!G&_b;O94326DLVHOT_}H%1r(b8SDdO+!9smO`>9qKpZRO@dB?=9B2qs{eWoPi3hV&zi zsEz$wtGgYp5{1BsbWYFBHI990tu(KCV)UKFvJkWmZnOFYzNH1E%+grw-eM1TcON~YDsef%%B zO^_y|?mEUt!kWh7j|`&>N>BxOqZ>`?iLiFTpxG}aOl9~0V2!J}3PD~r5D?S*{woz$ z*t1@8P?adxTyh@}0`5`d9|3Hh5;AglbRA*l4v{L%1mrmNPP2I|x0c~l>mV|z+-IKz z^GrhH3I2j$o0fX}V_Y+G}A)#}! zHc%QS)njPz5ZWi7PY-XHNvnC!hyT)kW zeEqpkim0bG`pli1cS^LqUUJ^NN1cdz_%TGwbs0>f=+ApyaBSz+*Jr^o?0|^x?`A)^ z97Z0w5Xdg>s78N@gp!4xz2=v~`GA!;MQgpNcRvAd*cYi19!xLdd+Rg!y!azAjkZgc zJNZ|kKA-+jyT*XZ7YsM>yYOVYvVh=RmHeV5RS}6QPZ}4V=}ST#C4?*F^B4@u?x$B$ zU9iDXtUfs}fI=<)(ep{cRhVGGBg}a)3PH)n!+ZgXlmIc6O~(i{m7siY`_u3cn6qp# zx&ToDdvDvb#L5&95w>+Yh;fyjo!cCK2}3u_r(7O$^*8{k_#7Bp^j$Dbiv3Cb2Y`-+ z7rbdCA-1cROfe)}4mB%`73>0TSSpBYzj|NOHvi^%wg()&))ylz{X2*?+ia6<+EzTR z3Q*6-pZi8<-^?*a8k>(=GxUSOD#F^I&PXHEsp~N?e`Bf&`Sdy)Z*U3npHgAR$U2ly%b~d`rD|nxq#y)!cZe$I^dFeT&vOopEiklCB3euDyHyV9( zOsZ*H_@lLEEC;CKuh5H*B7;>1@5l%xrvn9@X5gedYk9{jKOhLZ1?18%?13U-^Zdq? z{&O(?i-*K*VDnDs0x`4X&vzNn3=7Tw$S0P^+`}Rvg7apVyYT z6#4f^P{NMPC61+!%TIjE(^-<+Xd`ryCNu81^PUw@?So{+M->^&anMu>{1W*A@<1Z7 zL8oyo&o>yh@iNbjN_BrggMSyyVJXeSHaYGBBugG2LGe$>V=D=!Y#JM|;BmiMl{0T? z)+y|RL&3%;GEjVl(hvJSb)STk&ZT5mK)nfR`>pS=q#SMou0~q-vj^KzZ5kpJX{E?x zNX&6pt1lRs6-b$w&4sa@vT3r&;O_7M0xJxR9zE1=pcDq}pTn;kfdL~M^O~qYonxGp^moKeb#$(`&k06$7(?eu*pScynsOMSgame7!Cr|JnLjH00 ztvWW-`~0Dtny9*m(!e|1$X9=(mQy`QV~F*d&4wPg7L~0&RIR9bP_O%m@g3yKEywDg zqS`F{z)e_lHs_pi(k`AZ(+6NlQ%ijySD`YaP9oJ)>zsYytt{`O-zB~a&L9{W6qJgvw5ca z(p;(SW|W8^GhQ!EQxMFcMa$1pOh&WFCTQN$C2){9D11x4#8U9MCz1QUX%~x2xqlE~ z!W#zDd8)H;SfxIrWnJV?(;ydgzs#2Y?AH7g(s)GUaf8XRWBkvqB)Wxuzx?vDZcmWx zCK|>fTi&bSo8y=3!s1fGQ-3J}VsI3y5KRJimqow;eI(88!eMb!3)iHdX#OcITW(vb znFj3($zMAo!jiDF0=G}YQBOxVdW zU0}>Eqmc^0iWdb>A zy|7{KRYs}J z1qVP}%nuk8Na5jGg4Dy?SkDm(vp$pb?WGCy$(3op|5++8gz%;v4mH zF*c#SQmEtDc${sBt_u;zS+JnA8c;8tD3|v0<9|ZHlrAlP5hPl8-!*HU@4~tYkFyr*(093yEe7GvRq9PyeOEAyCl&}*ebv`1uLtwRnmntN>?shQ5+ zL7k`3iy2{B3CbWB&vrSI7*N$!yxD~s?3L2~BaXm;7`|+ZU}zn5{^b zZ)m0{adedBpvnTvT1)BKQUX zdf1o!UMH-ty2O@uD#KU$H{bHHoMrd}X9);qs=r-&r%XUhWp2K~WjdSFjX%&xV{;AQ z%S*yT^qo(a6@BJ~FYPK)z2~iDs8Z3CjquPtoXydxn*`{ma}IudT~gXysM}>b10L2a z5A{hDkx>5rufYdZ2W{c}<+R$a)W$b(=p>MW>V+f5Vu&d^ZdyAq_cC9voTn}kpwR@f z{AcNV^gnxYAC~o@9+_W~#$TSmw#{5|NrA5{MkQo*bk;y~DacsX0zU8|L8 z<6pFJWMKRtummvGQ1>O&8@OcP4-;RzT#Rh3yW#UHD;djhj2zTvdxk5vpycNn?BccC zI6vcOn0&^3V^;SVptU6)>X}ZX%HbY6fyOS_Is0bkQplecI%uy{1hQkEruL$BI}gPVvZ-mimI78aecA6=DX-gz3K4c3RKjNj?-}9-`xE#I_VM5)qh+CZIFp9L=jn zuGR8nR92{C>}Umb@9B)w4Uv^RM~fTVr-V~pTb}5Y5+>{Y^?Y^n4`VlJC6J^j*YCWa z#M(%tls14cI>L+_Yvkz+N$aE`<)L!(A6zsat}l_@{zc`^yzGR&lQO4N2)KkQMvTWc zqbsvJo$Bce3_oAv=NhX3=We7{hr79gGDzNLG-^9->Thac_~5W$M&MvB((408NZ$22 z;!N2GY7*PT6`~Jc=qYC}0sj}k6NPXBA+zT{-Tu(o6pDc z(5HRyN2whXjfTvXC7u6;MIar%DFy%_OS-Pg(`(=$5y{cwhiQmg2tew z;=~>WDr^9j`3>N(@ooy=%??;cly@H)xRe&aJxeMdwks!o)G6x#K;?OqSxy*-19Fl3 z)p^;yE5A-qz*~fei~Eb^PBqFr<&ZR%aF1qDr$~KVJxVk#lO>IEVLh(tD6EKPp_cLw z#nu1N!db%yKRDFrRUQY`mIBa~od$lLRkLTID^3LR&pCK7y;K|s<{3AJbg9%?6 z{yBm~p}{^w)Gnpaob64cx^7S%5AaafjigxMSAGY$mo^J*$9WMRhU-Z-PG6NhKik|(-{$037Jm2?OgZ_r@oT9+K)2-+hw>EOcZ#tUEm!o71jRSjFj7uB=m`;J1BU}A_!bzWCS5#f_1 z!(sDsnp9br@RE4Y*p~_Rr$M$71P1iE#3UJIx@`18G$cs%wz#Aso)R7&eRG7w(Vp^_ z{pCAUmJu%xukA&&E(#QV%U z_{<Lp+jY!bJ z558P5i-5e~ILL_w4?8)^rFv4d^(}L5Va^w2Xo)KnPiZ+#ra?pc36J)D7>uwe`&xnr z1x}zoCX4ZmyoRfuawl;RRkwUBESn=)vh<6VL~3+AjI+c;{Fc*~Ib`9wNw{c#n?k$MJDfAp!E|P+YTBp`xo^dX!1kYWAho@+!Tk5$MJY(QmDx7Wir_XivelPQe zB3;)bawY6*&2)2>oTa0L52x2#52vr0j6FLxT}t#L?j&A*EUwLECsgo5ya(Af+upsz z1ji3HD&5eTd&B1DuFM_J*tljE(=)qL*5#=qe!h9{)%x3l`R^u^`E!AaPIBB@){L{{Dn{4j0FXZAqJBKvpR%wW@s4d{shM z+-#_k-;OmQC0G24ze?Os zMuJNmwRZz)xYeI^L-(wfet`gL*@vb_r_IBRZHVX8bdj3eV(_&LEq9FX5E8~*s)g>< z3kv|#kZ%@NWg=BFHeJQGLlT;f59)OA2)n>kw~%2N**^30`HQdWk0jU_h&x$E80UTr z9j}kek#%p^7~a%nC2(?pAAi0`EkL`{ztGBMmK0u&b(ad${*Z{)o#!Y`;L6x zt9W9N2wV-xiQ=tMXXrm^xsnJZP8um%5R>R%r4Pd}%|;vT5bJl*(1$SD2b$?@zv!)f zDWOBgO5SaH-k;;6WDnuY4EiwXITk;nlx-so|FHy*lSL&1oCt!7olURAxj+)mkndTO zJ{OMDX|IF9$)Fj+8%SjU0(@JX>m~wsL85>(L85U?K8HQq= z6?x7&j_XEWnCku7LxlBKN2EKEKSmNUgIR~N2@ydM9rrX%rufvDG5I?EXrvPtw>j1# zaGYsPLg2M{lM|Pk6&rKiy+uwG;gIqICQw7%&Ubn|1Q%$CBriSL;wUk6^7z7hpKbiL zU<`MRe>RU`4>R{@^5QLdGp798@^qe~y0@*|!jrGG-qs6>pCjQWkJ}RXL!8zvLf}&} zrS>(noWZB>0}mw%;X*mShSl*!iUJQULAlE>evF@%DHeN!QDFo}kt~j}OpDuyrr&z> zK0LX|m$FlfX69Zb`oc+k0foQZAS; zK|^D&{)OH}+4NL^Fs7ZrP0q{$&YOma2Bva!t>>;|k#j5x+_+3l`!Y84w~$*r`q({c z68K3F4J~$FuBEs<^=CdAxLH-yxHeS}5OUk;vMAy(pP)b{{jSLo7@iTdS zJw4{^n$M5gJI5wer%?I9N^TmdV}W@V;dP_4MoqchL;avo*FJtEX+dI8<7S{sFyK2= z%(Yl=YCIA7Bz|H-jzR+1b}Qt(Q#^w|5%G`-a=`1!T|cLdlU}v%NX&5tm0-@|I6Ds> zP0lL1+H57Uw)$sq>IuJptb+b4o+g6WZb012RNg~PrZlM~OZRK)pMjsxiH#61@V)YQ zA?4zcvjXq~^k*s8UVPY85FkZD{2^h^8H@qn2+NDLN|=2{(+yq38JycyN`1bl5F1kJ zbKs=BF1U694mYl9s^mO2RT=mLjY91d0V2SSJy%ElxDMf*Pe?vfUPel$vNMoE<>?%k z(l4{zJ)U_2EPC6lCW|pSQ1Huh{sTvv@`AaT{Da_oC}?RJ$C2Ec&JUS+N|Tj*NK+G5 zIFv6h^#dq&Cbn7AL)NJKr-3yv-{Q-wA5d&9-wi^G#KPw&CSc~4waM2NI3{o=G};vO z_kjIPzd&SiQ1wrR)#LO{6r5?Clw{lLB<~VVeGqsR?kV}oC-mxiVq7)hAMMf^_HGB- zk8_u>@XS{=h$MTiDfcRYe*GDDv@Wbb6OP3EG<{-ri7C|&7at`N*GJAr66gSS<yqA+G-cuZ+Q!Ma?#Xm0-PW2A7!_J z9aDGLxlf&%xfS47rmoA|8vKEjQmF&V24%s=LRxt1K}yM+9(u0&Tb@i=RVb`|-8uw(9= z4e}D?y*EOyZJ91(_=%1zs0*Rj^Md7&H>f`jg(YguRW^kmj%E@N> zqO>JahD9qq@Sx@AiqbvN>u1w-*i!FZKiAm{=H;{9CjHz>o}2!?1B~j$uXE`Dq3Md^i!fEY_266h_luF* zc`5UG(q=Hv+6}Z$?I**&({w+AcyaQGZ^7?f(6ckMPM?$L&zJph^0ICi9E$w;O#UFY zlAV64?4Fknwyte~A7w?Q@?B#6zq&`L-W}bOIIE9_+ z0FqI6PHU2r#NVA=W4bhrG5+A^NP48Sj#8$1@)Fq^|2dq2*;LE5JeMs0r0A~#OeDf9 z3DKYl<2Xr4Ek!B`Quf*NWC|)cWiFVak7lcG%a+$m1?v zvR03tTC}kjlhUWl#PL%4W}`<%j@Fa>Gzkl9Ev}BUBh&qXH#) z9cf227dulX;W!!G&0F)8OGZF2EknBv67~sk53&2KFX8YySf}XPE#33xVvHO_$hWX#Mgv`@GEeS1E&st7kmz?(S$tg>)pVl9P?TqMoiI#D-< z6-tv?>L9Xexh$}MRhR&-+5e2pl*vUn9db+x3s(($nDjEi;wscA1pvc1q*%Nz`RE>o zyfRlunwW&RAOvLWVX2>eA}^-0D5)Ol`ol~3a>b2tZo)UM7Pt0JP-=n-CE=BtQ(r8jgvM(tcZl4j>HIyCh$?f7S;Mig-J>dBl1AuF5#S_Ez|(?sOH z{U61&Zs4(^HDCMiiVqSwzrjzg1tW}0Zd*XaGYSyq-bUBsu+S3WK`_Fp1KP;N95)OZ zdWbJdJq8Bj<0=1RM*zYF?ktEA3lXGBtwj1XT*}mhT)k0!ka5TX6cfjO=6sCMxS~D9Ofs+b>BvQTX-18@NLWPvJqRvC?LjQq7Mp zl-Y4|658|+PyM&;aCAHOMt&x~?Wu%ZcYPUcZUYgc1K5r{sxR~vO)<*#$D$DYRq+2N zWP)vT z5|!5n{r`rp_&=X41AH>><_8X0|MioZl6f>B#}(Zh|AsC6kH4y^tJc{~Gh-q4hY0tt z&@Wy|By9&@x%X`9zkSbWZr-9fXV}%M+y7Yc_Ba0)X#qXb-9g(c|Mf6vpu>ne`_3Ti zf2Eg{VU}0ivRy5nzaQaZro}9y95kpk7jDw zi1!5MM4qqD+%_~2skb-}7MpDEJS#jFo(6=^Wv14BEl5?6xYqQF3*?k}(1=THt~FZ! z&xXCfTsP=PaWx``of4*UXrG)BV1xKPea+_ySRDq{VSxHs2-P9p)omV|rJToTpu|^& zgbd49fzuzJeX$lKOse4msf}W5L-lXc#||+*jt=TMWo;meH&|S;Z2PrCO`W#~%wP&C zWZv7LjyDoj-)Q69eZK!*H%zDjQc~0uI_1wR&BXm+)xbsH6Y$7A0d zQ0fEfp!Xdi9B(DGWV|0?*Z0gl;7X`q-9All?NC

hVq>KzGW3 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

9OIv@!h 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∋XqK+vxuLTquAx{~o?G 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

%{;9e{p0gbOsE27IZQ$zdP!T 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%0DrBFD0R`|Spf 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%0AoPCKhoL9 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 z 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

u_{Yx7fX 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

nME_AGNaM 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

e+ zUCAR@gX$r1lOxbi=S5HRxRw1NBiA)qYYuAgUh-RD(r{i8p1<15U2N?1?lO}wDS?U4 zk5xeJJ#YuNqy>>}**AFRfs!gdd+ntE*@;4Q9LSu%5Ip!A&$RHJ+x8693h8_U!Kw5e z;$7^m^XAfj?C)PjVP=Ou1;D~0D9q6Z;XpB@GdoJ|y{^W913M2{yJW=519-*_tN0ho zL6i0>&^}B-_SY-%eR_>S!{#*@enpu+R=5)6477mDHQueMZ7fX%$sMM-Tf-j4!Hq*w z6}X_mfZJvk1k}X|I>vQ}AhWFT$*J|mC`2#S;ee9t5?jDQb?u4}E4xMgNu>Pk`AiKl zcc}9api#ag3V=r2E}A4}We8S38j{hAUYkJm0YB89a6!!jtguJ~IKd?6Y4Fd#OmN@b zP114aUGt^12Q_+OW)##p!9fw}9UM zBH%7p^W&9^p!C4jE)?(Bwy7)>Gj@=p#UoolGRXKF;F-=N>$&u$H~S45*Q_chc5vmL ze7Y2j)hoqcX|_jfze#Yu<`3l~M1F*+XhLtQTLI~D+@<2DZUkKAD9};XPt{!;1?BaF zcz3Y&iqmJH7|^EgbmLKTeX9TILHL_TAV-5-dU^`an3TEwKr{0$YL3jMlX4Uy>y&3x z$Nx3N#gYWastaN_;4x4PUl7&kwfAfLDx&l6HUpop3Ajn^U0|BE`bCcH!G3W~uovt@ zf%<(1PBI7So9ge2D2Qp=V0~sO0+nv-L8`fkd0^X&jDV{geg!daOa(1FNj+h>P=Q!2X#Sj`QMl00H}yy2u(Bzp}C|c>sU<{Zx zst#}(lB3XtR-sYNU57;77@+~^MDQ+k1r{w{!1h8NpD3;myUa{V<$1~v099V}5DX%K zk8J?2RN#28aI<&q@AL8(5QVBbfEP2X@PCgmW-2z!%u-pWGRU9 zX$DM^4ippYnw;&L+G(()Z0>E_x9X~A%{{BdjuiCib%#y?7(}<0mF($o)fyW z2YruhiFA_jUpJ>< z>iYzhE1Igat^xT7V^}JGf%J|m;~8KZi)v>5j?VdWwe4!qRqg|Tk~Wmg@a#pHWtbBS z2SPyT9Nyc+C`Z(vogUS%a^!ACZfVKCg*+N_|2&9;%DsB+j5SUGOF@r@0u>L_yBES( z+eRT$7MZl|^ApPb9>z|CgiC>JmvaZ14pd%Px&bzkyg;e4d?(Bqg01p6lqVkcXFz>+ z!^_80@?R`caLa3SFF2AJL?@$Qp5Ul_+ygD=g>< z$0~u~HPg}z_w8;RU%G6Z;U66oCg*qtqVMrOd~4_m_}(xDth>QAn#?fLirf}95Ld5) z|F(Ig>s=jW%;P#f^`Qo0Rp;2XZRKh@p-Qk-Py)$-meU^tp`HXhIe9#oJX8#ex1xfe zjKh^fPNm9WdAqY#W)R{z8R3p4>RG0^7-5b$Wx<9+`!kU5(*Ql!UA2FS;-{ErqxZD? ziXfHQ*-oJ-%lI6G4hgY8pPjUGiIu}GK9d95a>=CdHR(k|Pl352bz@LJ+P-ZTYS-xZ z`|SlAJ8`uIXnH*MA@<&M$J`BaLXTzguJo8bu98PQISNpBxKhi;H~~lCP;mO ziXYwl{9t_qC%Op4N!!w-6Ck#FhW`LMTJuU`DWxD|@*MJv-F0xR@xBoNkqgtiwHqzR zKwC5Xg41W{tl+N-@m-^Vf-U!*LD@&XBpA}?NgS|E8bTlEt_tM-7{2-#rjCH4NIe13 z$f&jl-`EF+6rS#ZGge6;kZ!IK6wrfd@k*aqO{(TeNg;sa4^oq$(gFJMZqR>aAg`gc z-SM0P!maWLOjADr*Kb_ehA4P51L4!50i*VIr-Is@DN6m$Yjq&rDu$rcXf!BNh_hL& zYXWfbCgngiQ_!o5*NK%be&uc}AP;NADUWE4K%m3-shm417>O7C{ui?w2lZ?T0w%Fr z4wIqD zzKH!0EojJ!^bBlO6O@icKZa(IY5Q`fdf)Ikgt;JItdMvTa<-LhJ09vTYkG!9A zsVK=U`i~Ivj{#`;h_NF@UtwD7q_djq@cwSi{e@4I?4FoT7~wB;IAw15M157Z9ab@h z2l*n<(FebfaE4>df-G-1RbuOGoqf^+@taiScRSJt(JhvmwD!6@R6k>l-3{JOiBF}M zVE)m+ZD>Q)Jnuy7=0wVbKN9B54~i={ZasbVd>HCZ3(Iz7R@s3H3Xv@H%%`Gc^j-O~`N1^>>zsrn?CQxzpu7nN~USO7W|t36!(K7mwcAqH!+ zju_;X{n=Hg`ShXujC49;;iM6_1;}?AbIeV!j?R_j~ zX_C-0c@FV?$4y1u=dFNPMh-TW_IckOZoG$sF79!{X2A=h95{<#rkCINr z7$%h3%PfhvjAzI#A&B>t@NtS}`d~qN7!MY~N@d9@pxqb_#CSwAEh0YCnJ=u~Cn*J1 zE=p@pi;kG4FN_2A!r1|X2KD53_ToQ~OuGy~pZAOsWhO9{Jn&EM*2Kp>QgJ|&uO#(e zulPVrr=B%mu2DFLpvfB#Sielui7>)7y840ScAaY`W5RR8n^&0w?I6Si9hsWe1&qby zg^$Slob(c1bKz{pZJ3W`$ZoL3WjbrS3Nh`v0%ApY)=oTc{b3C#kwOmXdFgNzgub$M zL&Hx+P}s`#4wf_wK@oTEnZO<!oeMkW!aXl2& zS3SqLg&r(;gsPVF_zATZS7sn6VEn1l+!poN0II;T89Ejw?}8qOLeF-_{sK}0wGDs~ z?O=)bFR3dS??{N?|U4K&2p;V&mM; zVf=rK3oBp%H@>eZ;Hc&#mp7q)>ugU)vza-K&VMMi;41OVj5bx#qBW4qP>NTU;i^Tw z3*T^>mMhgGi#Nz2xQ`H^XcmrcJ2q5&dxa>V50p|I+wqJE=7?GVRTHm~cjmb1t`KL% z>5(?~;XK`h5|Ny?Ph5}DS}sP0`&~!JjdD35C;8wSg~-CUE2)ryNrtlb)kWYv--+wF zMXb}FBf$Igjq?W?+H6Eh&lAWoElk6jFfM~~%0xIh?uT=BrQB<@_!<2Gz1c)7uWk-x zVI8#zN`4s^zU%LnI@_1AJ*NI5gULFcv_JA3F#};Rh7%e4m;`Zd%1NSbDEi_A)613( zH{Yz3&U+=TMjv5F|bkAIg7Ypk?sYtvU;{o43fRqTH?)pqA}if*{b!t2l0 zL=4Yf@2YN1;Sw>U6*56WZk?M-RD)wM)11^r|3UBwUGm4_kp7{7#3)q@7>~! zL3L=_X^Pw1|D$vk^J?uPkQ^gj?Xh~|i`%~HySCXfSpG=f=vkK)3OF_08lEAdD+!xB zM1-*c*<#c!%HJQ0P{?P&DDUzt%%u~WVBV0=sa~xbY!EIeK^D8P@az-X__2rwnlcx+ zok+fk2^sS6!{p%X&pl@7wyXEr+q|4Lz4vzb44j_=P4_ZgNHxWewAX$Wafh)<&I|;%M1dc8I*AewO?Xr~@Z36N4t5 zlaztrfZ&MWL}QTOguf6mV$FOz?F~9VsldFHMSYpHNVxrGhz&`JVZ2>iBNg1E=(a5V zRi>GbS&wEsKj<;E-WTfeKu+VqSn-2HsW@kNoCl=|Zxt2~si&8uAEws^*`~h(d0&4| z*4k$+d=6?my=p6*Hr$z60H`YPzIUkqHpVNF$?wu~@v0`6z%{u|FVz|THOZ68E@a*p z(1J|om?v(x84F zv?sLRs1lZ_+@?AJi><>;XD&_5|2|{h^}$r;QHql+HRUqQ9&y0K>1xmEn%bcg?aFOp zQH?8)a69+cu5`rkf43PwC_(fUJS>59;=6ILW69~LR!3Qjr(a-KDuYfT+rOl+BT)dA zA*(DJC8XR6k+41W1U9{%g+0$Ef2OZD;+eJ!y>XriAUUgq@w4!pBo;h`CV-8rF_0D1 zy?Nf({?3_k(n#}e2Xk!rc2-dQPq6_t>=zS*v&G^}{sovqlrr2twa=w+EnPP$BS_3eIx&PJRvq*Hdf{Ruu7Kw27Wd=zf z;=V-CY9IIDynG`Gmw$)P#-fa6f?BF!%Avj#qunc*JFNsi_cAP~jslQYvvHKe$CKKk z`1(SQyPsbwMHB27FTM2>tUl07d}fbFgG$CTD-%y)*1_Si=y2??<$6Q>1H zs;O}LUut@P^ZF2x*oWTEj0`u-{N;^&wZP#XNxdsp+Bp6@xGRoh7f2N}4>ZpfF`V%D#in`})y)3L&CbAEzGZoU4 zt6>lLZ4)?Ln)suPt{eArd~4b)fZar(cOqgb#i&0^CHjt_QiP_P1Ogjn5BR5$E0)J3 zUgL`%jWXtrbF7pF1imC$Ho-S?$(_p+x@euFag#zBIMLa^B523h8#zK1Md*-^Nm#dI z#NHDdSw+$-Nd;6qc-TSq=w`)NkfmY~U1}~u+-C^9*V(!W@}&&eXB7zgPPaQ4UIci! z_Vu3{>5pU=wOB$u`?@S`ETAHK&(daCei&sbI)+&qN6*n& z6{t7?58eqC+Hy0Y2S!)*^~+NV@~pfSr}FesQd)SifT;KV^g!EX*X7qt0z=`x7Pn96 z?hK_|O3#a8=zz!hmOTF&ek6U#d?9q2jqj72#zaXo41-%&8?Rjy`<*!J8n-ri?s5?Bq`s@0h0;HBF`|HK&T?EW#Y!f} zbM&5?LKz5tOBrf7={n?6Q`o!eR|zD_Q2|8ZuvHAAGW>r1Hjmyyv{td`$1V>FzRTiR=ja zGYsjda8udzBT&q)Re8+-Q}9znfnTXrRDXg6C?%G^nld5;s;B=0LV~}xr?n)9;9+0w z<7Kb= zcZ42d%Pv*1Qq3PhWQfIxE8o0rg9*kn)HP?RBfbt&S51;*m+Y|bOZoNST%YfxVaL6UK}=eisg~Y}vII1vJK47<@#7Ce1=HU}$tI?i;O2(dg>R?bDa=>R z5N>7Yn=ndS=O+!t|5kbVo66pWis@ubqrLISi7W49s9gH&XfhGl+=2rj%KfyZm)9K9 zgeUbHYBEmyq=*`StAd#JNW}fXtwz@#mCy^=Bjd{8&{`@UOFBmD#M38y4LR&%v#rTc zy#ygUo#0y$3=U3#X~|X#dDu)tqEjcrrOS|{)bmu3d_Uyq0bugj9*2@sm-Yyk6^5<# z`pz)Lwl$Ha*^`V5JI9)i6t_fbcf`&9E7km(j@>dx>fW_*U)YC6R;59|<-8*%S@lm; z5=fqr!NGs53)s|9)T(zO;u>DrL5lcj%j`0Ux z*LuTSOJyK7G9+qV5>?rLB;Ag_loo21E61dPEkpgNK8~++hA-BiZZ3^$L?EU>W@KGQ zKor|6Y7)vehfms9R|#k_X0HV+Eh ze(r`#D^;M})3}gQ2ht##6hB+8G7_V==f1o9uAsv0=2K4Dx~1SNKZ23%eoPtbj+{;H z+mgKf4U!WPWhUd+=H)4a)a&J%VcJXG-UQJ z*>-KL3*uK2^hDbWSdT#Qlzw`#ykc0kRr*_ae8&|3K*9yQ6gIRoQ2RhXA?rRHJQ&r# z3$(5mr|JAGN!?HbPS#9%U;iIr?;X|T+H{R8L=4gbK{^4Ae$TJ0_vo`0f4I5RDd3$ZG1o=d^eP1S^8)C>H;)V8mMAr)7T5HU3?BPy6;1@ybjx3beC3g`_5)^@axJx^qNM0ZShNR9gkLLc4Jtear2 zS_Jya%R{zH&vWzzq?Z{O@4a+}@90WVEYX@w4Tx7sG4d83IevhpJ3fVZWD^#43MBd! z7M9Y7vOpy^$ZaPry16^3h+Dq@BUzjAN*H!LBrWJ>xT9!TO+PLAd3gUt zGkT6D_XnpjVnXsc)@vP(q>=|u7PfgYw`==GU4^vQn!Q{46vS-W>+{q$%6+Gwb3QyZ1zIkY8itSU1&>Db_wc?D3cc%z z`b!(pl^s`I-r&{xxxGpJ;pb+D?KcCa)rb-~n;=utm9IZ}p58uHL>+B4|yf?pT5$U}-J2|I*vcw-GcKG&%DpztqDR!N8Uo36yZ&e<*(>EJn z&rfjK)tTcNHWaKiJKgioZZN%k^Lyq+o`;xztoh*9jO?oh9>UgJpSj*gY5Rq0AGK5} zzuh;xs&z0q73A@LdWazB{+AyHfe2ADZhS9G7QP>@j4&us%VKbJ#2GI-e2r#6FkSy5 zm@)!y*rQuRJ}LYDETSTI&n8DqmSygMo9t>F`^fi0s(pKgp|+`SqJGu#6ZdIE%e`3~ zq~otQ!VEWl8gE9woRYc=w#Ja(vCY>DN?4WLR1M{uxzexD!1j?aa?lvwQTo8q{=OiaVW=NmsQOr82isv8K(Y|4Rp?CG zjQ_|~J0Qev)xYc_ap%($f|jTM0D7@ZO@|vNckHgMakeUMUe&LP!X87#C(7m4jrx`v zaG;6cqV4Z=TPI#ky%e%exi?>8~MT0M=_XUc&Ldz=d&GK|FDM)D$J^dDqEMGIO zP|IEQURnE>Hw9kb=L|vwO!>g#$x+d=li-DeZrI>XKOZQ`gf-uiybV*sQg?z0el=DTx znZ@jVeC;QbN#p8jJXK_Zn|(`xku}=;_4#uM7d^cbAB9g>%7Y_$4UIBvgd=HvSpWZQ z%73_TC1Gg1IdXw(2?M7VOf`#3R1OGp2eyCQsVt5EsE>||=n?8JOG+Zt>H}@4UKR^h z@p~ms4YyUFz8x~;8Eww|VD>zLST~8GIF)1s%3WQI3Uhc|3;m-$VDHnri4|a0BslSW z!gr5G#NjGTFh_T}(Vc8qXfbx;RX=W9A@PRF)lU^stt!jg>&a(F;-u-05f`NOnxxbw z-<0EytEpOe)%>O)O~EY!wmYckM;_A&WZS+_mdZ2p#y$9Y==&m7gJt=b z#z%(ol-i{f*`b#eY|$8S;N(FL3{c=;D4ZM-D%>C3+nPqjDy*;-i}(s%Jx-5bF9y%Y<0DYL##F z)EayQLz=fkg?|b0XB!l*8&z})GfE_8JsYXGMydJxnpk0>k8yVR zOTy@q6};b5@`52@lN#S}$0Yw!6s!+Nx+|{v+MVT8)S(FZ@>M_o3!DdhdGAfKQ~RvZ{Bz=e$q*3F2y$H^y#vtnvae%ySMWO*(qRNQ!aC zGq;_n0%yN1@hbGOu}7AIL5kw72hNq>VnjBB)z+D=A`LT!Bp1F%{#cmQ*xN6qLlw{` zgxqO6M}N8aD_(PLR$g{Qf!QtKi0NN2AE8+UZqY6GWr6DJH75vW-r`6|Th_93(mtoGfwOYo#VkD_~mVOM~izN1atYc4bM}P#OA-_?Ovf=I`Zusz(*Z zI+%`)_s~f8_kCD{=P^qYhq+Mov8A9V6AEfMa7wkuzTt07E%sMjE{AqU2w3FZV1F5r zmI?p$PL)cqN!7KWNVFpXW|~R;JV|%&%^{rL;VDe_F4&qnemAVmv@p_5ue13yIDaR= znB&FBm&;(zgW{}Fl+Q7*N|5L4ISqSMaEpE5WtI>4(K4NG(gU#^DC5vs%Kp2r?r)pA z4p#N6utNrsBnC>38;ykLPA%GR$jNUZMf7A5!Q4}ms=yM6?vGvGj2`E1 z!pT>i+BiPnyXl_m9>s}kExPw0_9mqhWxq|1R#+s{y*iyUDO(#X75H9`DfQY1CMM6H zryDm-EY-+Us-LPk@Zx8Ss(lg|%}i}W{rhxWJQ1@=_KY|WpYS(B3VQ`q={D!8k$ZHv z9K|%OI5|ELdi$VTJp-3XZ+{-b@j1$X`RsjF+s;Ovi;S`?d-13>#$u`@H>=t{t;4(a zUj(P;uhG5w{WAY_Fo|_i+xF)u$LG&oyNbWRE2<-dfe2GOOQoHHI^1C4_U8|%nw=j% zdK7JD`zLh`T+^>Bb#l{&kkDxDd9^)+Plrf^c-3}~>ecE>d~qhBb^b*dhwFYqKDkGu zo|6<(c%p;dj!!*ZmF9ohvA>nwGvpfzL<4*`qt~*G0>$Jo2j=QJasXZOPg=eD`1#{B zDR*99Ip^V7b~TMu=RJb3GcHo_Pvd&@Fou_4)Ly=a{GP6TFrI$>mQq+jn9N$Kmh+r1 zY`-0qfRdG#Pd72T>BM3FDN6YuW{@IMO_7ObfCrI?srC11!gR)E&^MG$*0`K}86U$w zvPD6UyiL49=_6K@X*Jm z)=+ac(>8JYQiRGgQOCr+6>kc7Aj<=z>s0c421lO=@(b$PYw68Aw<9n<%makMpw3&x z>lj?YI68>KfZBLwV$)y8YOMNeJe6jowy$c)a3JH2#QYzNGv0$eBvIkyY>QG0k!RYi z&Ucz-xvI$=LhQ0{80EO>Y2>?o{&l_)3M`xFF{vBxj53A|YKj__kR6?uyVwZXB=;736Ih}+>I{emgx71zQ(1D|hCt!Q? zke03+Zz|t3r?}Q6i~q9Z?M=wl^{ylGf&yy9 z3uDO{C*2BvTg&=CQ=CAG+Vvoa|KkO4_51#+ktdejv3W)ozbdA(o>PQ3a+N50~SY&d38T5Xs6% zi^L*2bRHNWGdhU%^)CJJFrmOs^xk#WE`<*s`W1)51W`S5p|u5!;@t0eb$vLpD*m3T z{(BkchS)WNYzeh7X;+eE{=1C&X ztknSs-`2uY9=cb)CW$poaeIMl`S0d`VSbU4pwCe_tDR}`ftsjMQU04+m z^9Y($wSG7PpL5;R`W0UB@GD^^ySzj1rww6rSe*eeRWBTG8@1!96RdJG%1s^8;_>;S zk@Eo3`^kIjH>oBzNz(-A3rxo_Y9EtzAKl5+;XSp;*1q(WdqG}|m?g?yimrIsA-4Bn z3boP=4#?{srUaDgHABh=N6qw+c1sGop5nAjdt}% z(@r<@v}bMA-mps#_x-#g^SCUNCgvFC@Xxp81;4VvAq5MH>ql=WlPTp1V+ z6zkt#8^yG9MX1|SGrHZ@`#fULTum$&h!amcU1=EmDBHEQf3OqZ{Z_nBfnXJU>wsIf zRq}0w(6>h;CpNY;ltFhpYMZH;Y%{mcN1YKJl}@u;ZcxK=qx}B&xE4)j z3iC+~yA;aNg5 z4}G)Y8LD*?-4U8W^FgaWObT@_#RYWt4M-mYPnkw5=T8Tk$ti`)um}|iMP9F$;z9MN zzVCeBPf&)W{ODwBVmmQ5dM34!xOdMbvA5#4&0P<7*sytpmGzUQXLX{6EmHRx`t7Ji z)t*r~C$vuy{Ejw-6U`4R2g^*HE|uF(Dxu9M@44Kbcji>`7)tTSkdB3?- z&PEgDNKwxd7ni7Al975htb!J-pX=Z^2PQy&lV@uw+I2=|T)VO+|zCU-9Dgf2ywdH10>kkw$3Oe5z``$)X4eXS)h9 zG*j*oHhgvWO4MKx8*|TZ@U)H5&oTG&yt^6q^KTzq$GyzE#Ia785vK3i)S~X=SWI}3 zX5Kvt?4v*K1gWXW_GG*G{`9vr(h&@kXMr;I!@XhU)&2aAa)o8;u5b<1d+8MELg^3F z;<_#{jUN9Zu}5AzO(r)1Z|+hQFA$Q>=lE3VfLoPJ6$bC#JRjJM&)(?sL= zo^-_uRBP=yFzRMqv2RPe@l=0M%iP%U$&uG6Y_D{>Ya!YAh>3{b% zz;AdY3Di;HL-ngKLWfB|derRil}u9=Ja%d&Z2(-GDPdM%PoY$FD=7$@V4uu5l4L($ zzk;;&?z*UL9WwIkkSe{y)fr7mt%Y)qV@oKGo@&y^$uH&VJK;Y`T@xrHRP*}C7Okc(nkWltF zxrh9t5RSV%$%qx5AWA8P!=r_L)i?u*;=Y+@T{dyfhV}1-V+0w+Q)28be)As2e^b4b z1}5&yUIW!p-dvfH4FpjULU2#Y$k4eMNyBMlU#ylI+5;ZgFU5l)$ZSb<=x=>5uk7@G z82Z+b94>VfkwCLZQGmOk{`nqK+^`#MSojo2o4|1)?me^aH5|5G;MVP&fw{w9r<>nx zou@n=Ns?sg^Cb8BuFh{Bd=7Wl%OzVp6WD4T=Gt}tqExJI z-y??&Fnll8L*kwfbkev@2O*ordTB{a>bndfYggiauf`pXYU|>Vgu{!5%b=B0tL$Cw zJHv%jE=!$`wM^X_X$%APW!coB@}FQ_OrmL~X}H&$X32~X1UJD|)YX}`!p za&|0^X@Z;MvI>{SWVIttH_tSQ9r1)_M-0Un3pdmk`VdnB`A~CfjAmmrPZPG##JfcN zghX2GmD>a*DjwyjuqO7}GxU7poYnW`7oAR{2+TY`pLzA;3eQ65MBbJ1kX-6#vY#m){nWi^!H;mWDbctc8-uU#cWN_b=PwHf-X zFS4(NhJ}V4q0u!o7=XPHDTz+L{&wyqbxKMi zlWR!jhsp?LWPu{&ff~hm=*kDAZS+`FC?%s z@RKYW;ZDju@@A8iV>R(xqYzEKfyx&aD%ZVRPP8R zbmY$BX!^+#9{HhZL}7!Uev<3l1+|)Vm5}i;U=7FE0tJ;*4cwS0CE9SK4)4 zp3knGms9?mm*=-g%fN zk=6v`GX*K5Hqiy@=cI?Jl&#S3VQ3f%gFz(DuWRx6ywksi+z|=vuV7C`;NG1ly586w zqGu+XZ_gsIQjSc>SZ7$;Um8|t6-9mgvA(dSPzx#&ptrMDjb(*$q0E0wYpv$(gngtc ze*H1y4qh!^vAKEmkIxA~^o7&`*nv{sDe<`y`qO$VPZO8^b?ViNbYqV1M1e{HQ&)L& z9f;>NH;~lo??fGYdr4v^7<72!v)c9xRPR}6s5kBh?E7M`Exn!}I=-g*;iXSJlsgvU zaBY5D3E5Vbl9mwRN%EM~bj|ZbIf}$wx@vGUYS)^@?QOPX*<-pbVb9dQG+xVmAx~NX zlR+#ETAaN^q&H6o$$po}?pzy})Ju++JrCzTI4jL*H>Nxj#mp;(B+=w*UPE4e#bqT| zfVE*Ka#!2Bk9}%|;tL31OdfNKqoL%`D!QpUkJt>mR!)Y(Y z0ePfpIX?QOud`fKXPiaNoooEk%yB>aJ|BG!>orh9f;ghBkyCskvvt<-UGL)?kC;ck zf=;Vm@bTySD+8HS1c3_*%rvwYsz104!zTxjj24;mW?e-8$Wi8Uo2jpoKF=UGOmV2U zXSF-J3+6uU*6xCVyqIV*`s^Z}EVsy(l!J}wdmhuZS(XAtCzr4^{f`ND=K&N37v2JW z!$@#~4r4|Wdw`VJ>?U9d1`f@pQ^7hT{h-TyJy0a zSrl@(nW5i)fBCwPU2&mOMV+`lL=HFq7nwhmBc*cZZ-zx~&TlIo&Be6}4Y-~Y9Bue`lo zR1Br7L8@{t@RjoucFN!(2=RB6daC5XaE)C@Ot{N;KoIa+$`?;y_>zT3OLUn9zR-Sx zvPUl61~ZpM`cEtsz{Kcfhiutz#?*~Sx2|xB2I{`ZS7RFvJyA2@Sf1y75P8;%sJ^Ie zvZ^O_#NLW8R_Hui(4#W+Ea{f7dpCsWLU9cSZE*X6{f)d*YcNV_5}BZUJF?@6Zcc{# zKG7i)C0S<|aC2ghXO;b+7U#g*xBu2Zi1HB7M3l$OW&2Z-xHfKGZV%$kl7~ zn(aypms-5)M@Q^j!NVhki`VO88f#eDzyI~gBoU4a(KBz3Yh@PWyV5X(+#B|-+^@gc zQpmVbg7q&IWmQOt%OD}PV2qaTQM`-FqmXJ1X*L#=gRjWvy#9Hw>R%XrOwTD{=-i+X z7!>n$D#=H6VjuXPKV6@Enbs_f%Tl?90?ONt6V`HJVz@RS6OM zAQ{LN!Ej{My?f5Ize3+BpN}rl&B^{K5&CnF#edvk|4!gaK%*(WwO@+0>Px4$=>|;zpge6IM5_J-^0h6}mrel95o#;>8xON7skrGj1O())u7wWIH^Buf7v273+a= zzL0~+U=5fu`8VYB4+se0Cgd^A4QPD{3uR!8IJDP#I?J13y&t|Gy7JhdJ$KWA4VWwQ zkP!c7q)0vXUhcdDZi}RH_?uP6ch0c!k)~iW+I$VkA{71=~9Af-&*ZJrjNvQX;aI6lCx|aG*Bp zLlL-n9u<@ta@i}&4Ht7m*@kq84`Pky*0C~$Vsox|>3Q(-m3LLWFSER|9fj2X!aFJUc~53J7K{;o&O3+JQHQ-4W$2<}UNz`v#Hr zF(O`SOeEQF0ybQuhP+=>5hOs7^BJ`Z{behg5$wauViTI9}m5dJI>A(=wf?US;*z`dKPQFy64 z;bqUxuZ17dR71|)@r)U_Xee@d5Nr!))<};z(w2a6CK-0Zmqoy&R3svN)VPmH1w38X z@#l_2B!%rC$}HiYkw{f(@qVOtpu(a~g-w(DbPzKuaB=vc*mJdmB61*VCSBCN+w4|p z&~%qVPc!tl=WJs`6Lz4x>(xhp#)n%I75OW+^X+!>k;~%&RA=#er^knNhs1&OLyz{q zO>E^wjoADV6e~e?&k-)k`+0y$l-$s8(eS(pOOt4t$ZyoNuzMN8ww{U6Pm5yCxTuT; zs%wyOR|BYZBbg$S8Nzy><8qInOjM02^@6!_#Cu}Mhh#ww`ra{M2li&7DtZ3Xtx092S^zn^!`Cs*< z#3PePIIV<>G?OTwp~8^q5+<;n5R769cT^h0 zc^LG)ZU!qgG+O!#{{h$nz?+;zfNTvwbmxBKVVle5^L)8rpFBIHzLw+svwnFRL%qe@UX5I0J%To&H^ullv6_>SYkBA0=^#1 zgslgYtoQLR{6M})Pnj-udYjD?PAhCPv#Ses;RL|xgKWK1-w7AjvxWVz^K}n;7qT{# zTSiM)A&SzSEO(%&BDJYE5bH-OLtX<*55Y%y)lOih!}H1LeOkVo9Hci%IY^FGFSmKC zZp#QUe@xMjsO+-OAU!BCG@>}0Y-EEMSZT(jgJQ!BbItHR`4!Ug)Q|C*YSUkj@VrV5 zQnSAOZ`oa+|MfbE5v~Kl4_Uq>lN$E3LW8S9wW3 z+yeGDcXeR%jbM8ei!arD7=!3dwR$kT?Q^B zig4(1=s!=V`KRkZ-w!akO|%(#ZR^Keu30a2ftm?N0e1KLTK?TICCFmA-!4Cl2*y2o z=ew>zLznee;CdJ3XqG&ttO}~8-nTJk#Lk^;X!3=jN0(_6>3kT$Ts4QRFrI-$fV%dE$n^jvl4+|F5IKZ7Sp18RDK zJ78ec?qGeg>c!UHL$?x8Vb}rO)*a!dq5H>_O5iCFTkzftgT+m9qGmpOb(a7euRbgd z$@p}whZ`l46@>)Jkn<4!)=I5OnT4Zc_6ZB$)#w4DCq#>6-&UMd_YlNUsTM5s+<8!= z7C`DNTBm%>H|0P~@nPu8hItVd9u_MEm@zQhn^F zykvhoEffXSSQj>z1-^YcNNE5zIzqOZoQ3GoF{UbROOYJ)@rT)KQRT zp*G9-)*)-RnivBV`foSe zo#(UO?11s<)7-=4p1i9(xOutOEahi{RPoCp|G?&Tg1UXl5l zdf-%WSpqL+8_NT!;xtN5i#R@ec&_Jx$Tn~VB|*n7K-is$*Yq3dD13V^5)-pC|7=3X7$qr#Y zy8!0D>$dlHR|ax=BVQ~XZ?(+bGCt5=J--GK&PbC)+oYT-XPhq{>_r`cw>suwRBk2h zTbJBceWQ&?K(ZE;aDLw$_QDPP%QX)=6r>LTa_AP*$Gn}tqinUieGvb1?Au?;Gw@gE zGLcNd`;O-o$vvnXv#ea$ZyG_+Y~$OWB`f6ckX| z+uPn8^NlX!&(l|&=by6YbC`cWozFmo5U;6m>~Pdx+LeKEA}ynPTdRzW2qWyGrVz&# zWYWsk+2huYh}azPs$Q<76^C78Dpx2>QIP*QmAu@c<}@+={D7NY5=M5~er zAixGabMg1q)y}-xrjVRip(EMDA~_P5|GlKW1;oD#RA z!m${d3PSk>HlGNQjgZ^%6p`@uM=gZMnU=@fBM#4vkeCQJ?HOrUmoz0Z$IjsU(*>q| zQJyeOq`U^7(3&QrC|(_aO#7)?i$B5O|M@)<52?P4gV7Al%LKClcM2Ru*l)lw2It)b z6iHNf1i|ku8W0905~w5tl@I62DM1}CUuM-H_T^|PfUp%tWoNNVP@>7UC9KU?Jk_&) zN!^MWWgrCH;<39)E9wM4PHq^ zZt?s|4UM#6p$e%AyeHF;z+W_2VwUHHvSj?f>gBYa@1Y^mEe!4P#71FvZ(bBIsmVl6 zM~g&0RqIIU5CvHB%4NX8ut@JjE_*nha{d_w0U%`H0(CG)J~Mw=lJ2*t7rJ@E>ma8n zVZ|kXd#`fTaud0;q;W&*`nsKUzc0ZyoW}%#bD)*cs}E{nU4)kD=PN|a?+r?TptBcr z3`pa4VAgcAxVW$<0U6#K5d`AY1N-sk*PAExd;=}($5!^n^y_@vca+UvsR;_Gklv)d zN!=4$nQD0EPGP8KzT#56xDFS4<~h3+(6Om>+Xd#CS1lvr(*B^TwD^KVvr+Tp zU1C~L2?ZsrGY`r+m&!j;!F~iK2Uv&C6u~P zR@YJli$F%l0HCBnr}H}sQK-Dj>NV#xDSeo(&e@3fpD4F>Q;GGU{jLv^dD$H%4ss%* z&5PCgsRXmYVHS2M_u<^#mh|`NT7?RBGeoO|+lN624>mu3_Xf>=Tol%gN|O|r+t`R# z@z{_`43V)vF)Y$ptzI})5ix}Sp%neUcW{Pq2ZKJGXJjA`SaR>B5`2QC8A=BlQ$bMP zQUaA!l%p-zP0Z+3UUR2zLrvC;FrkkJ;M3^W-0mM9^Gf5S7u!Cza)}8r3`E;FiGJA zR?e&oU>HsEN*C~{VE}{JQFqP?@Z%~^K3IA=9@SIFdN%Ew2)L=+YG(@Rex!FSLwZHS zM17XE1S~T!E3`JP1wJ79$AC8&14wj|S-2O#9D%JnyI^iKXBwg$IRR)XIxs0(iDoXv$BK5*eQY_|O;-W#6@LEX9dbg&GDt*wB;P=@bD0R<^`}yZL6FuyIK|sV)Vx zR83|OmG=X#0pp0X+=~{q?zbi`w|}^IDU4zI72AI~nqoxeG-%|0XX_q7#GZjG;-62z zA6CiyVr62_;b!~G4I&M&H?WoA9Zn;K>ZFVYU!MhT&8~73SiJ}KFPWH6@iqhoO7)3e zE>RYDEVBg3skc`0T@^~`5j(S#d!<2O z(QDW)&Ur-MvPMUrN?#elx~F~ac<+mSmgKYb7of1^SvBB)aOU6|6VU(=O*=2_LDgb? zK^N`i_hFZiSz^e=YJXTVtbEZi%i(>J4gKFQmKmg)3uo}t<>bdsfl)D9N-IHY8~CZN zl8J$DlKfWrk+fqG#_a?|PH#rojYQ(}-b*0(lGZa;FShbozphz{1)en*S4))KvqbD7 zH*&-*B|2XKbBUhF8ESpZ@Uj{mx)I*d0KQ03z;e06wGRTb2U)?ChOuJy_1F55pOuOws zn>L-SO3)ZGf5wX!ne0Pe-N(bw8u1L&OcE|PR;n=KrM4{!<8M8hfIkMx@7ssBXid@2 zNz6n$=OTEfkXNH$M#a<2(A8`Eyjbv57U^hG;S=4p@X^L8pZPjn=k;ivp^)WxWya{O z6#L9Cpp>{!9}cXo$lz#D(WG0tys!BC!BJo*92{jgw3lI|+mG!9y1`uip)2c@1rCH# z=gcA4d(!D6iV?rFKW@s$*`Yh~{JH>{NKaSw?S0oJHp}V@XN%`3NACOI1z7N1v38~i zD5r3TX_FVVGcMm^Pu z1t1Hqy7vhNQWk6xcKs=FS-kdp)^s=PqI6+78$ZkR~D3Dpxj;67qH}KviVAIW(kvJ;un=;Q@l~6nL2O&^W3;RCQn!chY%kT9KEo zxFiE0gLOH}OPPy*y=uLR5HUfV2ogA-*I9lktZ4Z)WkpucwX5wmU0dcDbO+F7Jh(<6 z%xehyOfX$l`iF*U2T#{cr7uI!(r8LJixa>v=w4eDM>dy_v4P2jCsf7FY{2YSBxrly z3NB(K^TWMdjjsw=Jax@J0aLi*gLvsNGzJtuf@AW4mz?s^g{9G5HiLNre}GoWM}O(t z5inpqse=Ww087ojNZt>8rF%@;k&2(P=3e`Md)IRJu5ZT-SQRVf(kvhp0X|<0uo{v8 zV-U;>ZRanM19L#;i(lOuZ~?Nb7+6?ovCU zj>=-gKIgnqY%wcf_vFpdIiIVjC&2Cf^0W|)z8A%f?vdZ=gugjjuL=44=W0{}pX=)W z*Kv>S*A9KDCMvGI$?Qk`=cDj2JpFRe-sUG+om?47;YKQ1R#iZ6zdfo34Xlng$TPF5n|1&>6?n}x)4AlwDi^Nx$$Y8nNEic=ZGfBo z(7{wXj)pZY@9(Lqmzi*XeuT>{EaED&MeI~&QE9YEkv@9MHn7cHQ*DtAa8>9!XCGgM z3yep*@fu3SP=?l-atAu$G7F!VNF`|`f=#xuQ?hjWg91a@$Glee^Ty6}i zZgy>h`V*^{D`Os9J$O*G{})~y#LEk85juboN!MqP@jNHS3Eq3d9rb7tFZ4ZX@Of05 zUR;0S6wI{JpH4=oiD~QzjhJ3WyJ#_MFj$_I{-tpJLn^m6O?kepO?U^eabQIX)P|k@ zdT|97-9-9c?gsE81+O?A?XDa& z!#?NDO@r@rYYnv4GFx}|zKjtU&(;D;WB1uk7-wbBWSQru*U_NqBe}Bis_^eQuZ<^} zuK-(mp5*y&V3`#y-28(BELovg0KMY3f!J&*4nUKBxE*I6DHHqR<{t(DuJZB#XUkgJ57JA(g>M18F!Cq)VYhz(gwg>}?FDMVl&LkRr|y-ur4mJ7c%xF`-7{Nn8Pq zCn#7=Z}|f}@39QB{<(v4r?S&Oa(|#lltqK?y^r{|0LDzK+6XR1qFe%`=`K%#7lPH! zk<5O#;3SUmF(zLhekjVh_jO$0i?`U*+rT?68pNJi5@XV*Pac~oyMm4xSv|TpeX=?9 zO*$th^F1*uazu|??CmFcx1X=PA_Ry9uyHJDr5S{D@!7Ap^&mdEXE?wP1Qr_DZ$0ph zF~Dyq23+_-p1ig1>8mQFzU5vDPk>ktZiVeA7gv>bUe>l zBwHs9Y|{8x0&EStH#_eF+wM{vlrqryeFulJ+IwprpfWi>6 z;{c*E==)O~9R31%JbM684b9cViKTllJpPDi9#ztSFJ@Grat@A8L@h!Eb~+#Z0w3bK z+2qQP;7noL*=h|vnJIW?rFfEr@yQpE2-_uXez&8Tcx*U3$xA_Gi zFqzkZTWm6ZpKmxm?qv-Iv!`hR(OM$zA1mKg+Nm-#bVY~(QvC5WEsma%t7OKk>GuAh zJWUfk|BO4jqv>RKfDm}Dhp8$Dk1gTvk)4kv2V8yAN)SS0y}Z?zMHfgGNJ01!6YZd4 zG{m;(q8%0v5Vl;hj%42H2(#~jO3$QOt~u-g-2sn5BGnox#~{$7(gHtHK}GUED-1#J z2S&J2h_EC!dH3)N-?gCyaCj2Niu3v}oQ=%&{)`8eq>0%150~zqc#oDtvCV{JCCviP zIN5RbX}PFO0^7%1L~T@xCpT^` z0K$(LewRwzd8nq^mY(z>$xLlISf!Y%Er&!uUDh zVnz!L(Qi3stUo7HI;Q@^Ve74f7}247Lx5YXtO_85IsgOF4k!#4X{Mut!S5dnUr>buv?8{d<;~)0ADcaleGLJ;<@Ud;Y@@d z;bVg1acN-K<=vx*bn(}~1+=s~?Dgy(VgLe@|9PIHPxLo!H4M>R{YHZ zT9Is^eY;Q@uwh}TSoiChZA)_;7s}cNyvOp>P$Bbbt~#)t@-MK$CswH+2mlHg8rSqZ zNq!^0tHm+DT8BS!rz{u%5u^IeTpyD;5Rr~1x&etm@oRLZ5G!aTzHOBvXL=E*q|6zP z^Z_=m7GYFF0#l$*A^1J2C5=#)p(|1byn#~~7TCn{5<+nXwaSrXzs*9-KyN|%bx&Lv zr@&`0t5qum%$S=*Zg$32Viwv<1Do;qM2~Xd5^eCxb)3-k8=zqC;kq&f47+c6ieR(BL6sn9m62!!oNPmt zz&_uf+3aL8!YO!eTEW(x!0c?-2FSn*fE}uQQ}4U*@Pc(Fj*J7BiwGo|VVt)Hm7EGC zM2a)<{WD`;_nCT8zs(ux%hs9BT6E`{G}PXTRa;JySvTG!?uZC2`uaaJ}#UFg% zUj=`6^1WwJOSbj_{9ng5E=3gI{r#%|XbMeS$wmlUHnr;#+5RYO`bVw6N6Jm`fOSl@ z@*lr0g}e*4eZ+u3p}3WAtsvbFNSSCLdql8+7e?s3QW2<`nRw#OPTq&Nje5Lgu-ODH?ARK1rz?+PO1=XV9FtzA3dcx5To zV-{54ny{-dZ5Vmq8M|Y=pR0ii&=m@k6EZ#u^!CTBgrHn3oE*^nkQxvL2CRfRHR46i zcFk$3UCes}Xw$c6V_tGy>13J9|C<84K@~wD+tmB}lP@Z<{sLA4ZA4kVYsnXED+m-7 zuw4i|1y{WTh=%h5oI`OW5hFN7fVc2XRP}cNs80LLZ$TIF2^}tG>A;W+9+(N5ECoAi zu_G4PyI&7tPY2i~?B%!&E;IG&aQ-DGNmqwSQxTt2bh_eQf^y`EVAO-Gox1jc5g!(VT+h=pwnMlS_0a69|Ii7ngFXH?f>wr z=AU8G4SH&=t4Kb>Laa2K>xWWCI$<0424Zra=PTq9;Io*05hTg#3u7nl)`lIi)yw9K zDbAc5X5F;!Nu&Vssl;z`J024B5!Sl%y92^?spbw}2=SE12cf{_S_)h$*Rr095n?Zi zw;|n?3qu4wIq#I**f4=g!ZNC?65I!sH2OiFEL&!6+Z}0n1IXb?bR=O5*+GM5pK?Do zShcr-0Aq-F)?&j?0N(#Oko}jo!7`i(oXnBR9Y7i?5WLL3L}q^PYgnD^D79&NP09^5 zg1m&^WM!=^CN}_Sr4&B`@)avmUoE)&;~-WpBvPhQMLC?t!Xb`8E=E|Tf{HpC$X3OS z*KC^a1pAui5~vnX;hJO%JP`}}oMU8*GC|sFHVC69-h#?1*BDEzL94+a4SL~aGjxj- z()=Say}m%}njJz?fKA0NXZ=kHv@A^c`0uxQRij1?KpUcFS6@1dKDi}%lJ{}&6mTXZ6C&+H8dx8T2@FJx0kFhic3l)2`^>!mPxDaNVh zDNCTb6jhE)H3J(xu^Da=F?bkINy)Xfc-&v?(bKq)JRNmhI8r~6U~cHgnpY0B+tB&0ep z%|-&L95F~MrZo?*@NNXPqFCmI;_lZ#;Yzdyl1@7SP)i<#YybQG{6D|hMG#&T3ng%S zOgneUxDM1lN5R|IcDLA5{FO-a!6%Le-|w8yjrtc&J}dnZ6TiStqL^pKPh!ApM2!{4 z?+RaJmClj`x+qcyxB0NxHCL_lQPCb2IFpn+18ADSKsk3y?}8eHsXPg!&)H5Il3#r! zeeNAuqkvTMRa^)t92^J5`@?6RpFvn*D+oP4h#2*iX768wwPm#*afWRNb_Xy0LKsJf z-Y)8-kEC9CnQ_^i2C&9-QXW&w!acd1tA1ZbyKGeNCRLG z%fEkqeW0@%&?@|UTXS=2F9%^tE(CXT6;J`I0@{;!rM7V)QYm>pdnp)8guUS7Q$32g zmRzi=82e)Ru0yS%E2SxEWXH!Udje_a!CfgfP4&&#glwk-QbHs|v*|*ZEdv|4%vvda{>KY|o+xU{H9G1{@gw9# z^@HfTw>ejGpb=y2|b@Sw;$E_b* z4u4n2JO$JrFTsQRi;e#OY41w>pVnY8n{6{K?KB$3>i@!KdL)^ z0}v)lvwe-zh8myu(#*;8ULW-nv)lfu;v(wC9gQoYfcslmW`Hh=!d~qnud-HeS#NYZYCOf{rE6w2|M^`Nq?hkf zgQOk1DQ?MA4`7-)4A;gW#p-ic*ay#MR)P0V@}n|rI0Fl>{m2{W?nIA&I$t#0zFUl1s3LMe#Ea9tDam z;VP@ZL=x5z65iw^cHw5o$s7m8&b+@D9xjFy!l@gO8^t?wYWx=un-SwE8E0G;dPLFo zXP4AxX7@z{k!TfK)a5idU337+731RfiD{eKcS6CMyQ@wirv53^-5zM1mE&-6`gN|6 z)W@ceVy6Pl@@-vN+2-Uq_7uOSuXKB2mw*wT?tS$#{AR<^w`>C!5{x~o-+}h^?VRiO z14+@_6_G<9J$Is29kEaH!#O2x@sd7>WpCzTP8I=<&7H~Tz)`TQ+u^VQ1g2e2$Q~JP zf-p^X>9b7l(_lUDn*_=UvZ0q^Swry=&4 zT%B-^?FC56RNM)$R>Mf3bm-7N@APgnz`-UiS#!nJf}AT+af?vw zWSdP4sh0*Q(#O$=mbye0ip)LEa%C z$rIKkDzS~Q%~FiwX3bLdB*=ge_VU)hSHAdl(dZ20_s`CmGsk>BG%suOf^52rV@`-k zz)f2s@Cq#r&1?oCglT&;w(Ou~&arGW%W#<#=D0`^)0AbXuyYP@iKpDT{B?));rQBj zfudyh!^$d<&kAtrNnQ!D2vQq?MH?Q$tNj`F^k+wofvo*P(w=h(;Q}mkHv?jl-ycVF zDO-&(vXhVaz>Zh8`RmQQl{l?Nwr!2qk-8{4IQHn|*xjhTEt}YBGREHUUD&OE$ZSOp zxKiO(2$l~FuIJqe019=_>2mmS4BvUS**ln>DE6hzLE2rT#x z?SRlkJAV~GO-0`*e<~}w^B<$rD-vxg>0s{zt+@d>BhtLR=*-Q{m)%d7-a-#6(Nb7= zUG$@IfqW!KDBHIiH6-t4iFn%rGw9}_Y=4o2T`oNgx7AB{lrS$pg?@p zK&8sj^W%Vr7`5qp3RP_NqL;>kb*b9{q|3|Un?&?)?{(cNDUgUJ&}57tS+j~EuZ}*y_89I;Pz_}#xa01upT?_e ziy5|#@sI-ji9!8kM&ciDPZ9%nyLNswx;$Wzv4xw!dc*xV%qsKXq5Z>|_BLc1MFLi@ zn?`S)X`~bm_1VOE7?PM%8FSy}AsKjL8Ci@Re%dXsd|dey{~2XR_e_&(%);n5cQoc; zwoHB8^+5?8evUL;dMP>i~@GGW7 z;o)ao+#Foo{ca5k?yjCm%XfV3eh;%Wcuvtmw{9xVGI>y6D4p+irWGE^j@@JAWAf&)b%{Io*bPbyJdeqTx)IzN=J~b>m8AM$ z8vn?cH})DLbqLp}#wcxmwCQ=<;MzXJTxjux0&3F}dE5W&$1I2J!OM8w6M-A>(v9an zk?L1hg52#uVWgyR7r+U#TT&9L54*XjGNU!i7r%bo0sF4^!@M2&dU|hR$K(Nej>FWQ zR5PO))K)RHq9cW9Lp+F!##zUBD0+N8z?pr-=K|*h;qZTzjtaDfA+dm5SmtgZjc@h! zr6KP3Iciz+?P^(7h6aJ8OAH^5!!8-z<9O;iWES8&#(d_`CPELpp(NOzR09xwYOo(s zoHeq{$)mSy03OOQb(IHu0(!CByv`C&PgDfboXLyU;SuZl3XoEct{DC#LQJy|7VY%$g#x zzhVZm-P1maVY(ED+UwfBkAPJ&61>y0u)4Pk@lRFz{_aJXS?NZK(o_Zz6vZ5tWl%+h zPW89&?w^xShk`?e48PBCj3=vaubUu3Ax={BI^TcU_&=78qy@5c;$|}9q7uJl^p-== zV5B7ndQG$|6rJzs%(GLJA#TM^O>PFL!&v!&BKKx=}Sa? zz4u`WjzKmqCto70#p01mjRG0L)-gyi(#{X83sT|f1Asp%X0W)CuXAk^FRs1d1N^Dn z>egF(&YkeOTk{{VB|RB`1XR|8f*O}CJPC_aJs%isnQKeNcQZ-S@S~OaBrSE9#Z$!4 z{*Ff8cXK!f#*__tx75&6`&U3!;1YNz)WF^C&c1dHOCs^l{O|&~CQGz1=p2 z?&c0-K|Keq#$@NSFMG8mh2v7Nms2=F+!SEcTB}znyszq*_LoP{EEMh7Zh3jLHi_dH zMJ`Elmj2u}7Ir`EolNRsJvBmqzn}J4WonRoQ2Ov@8fLvX8egD)$tba%{kd4z+8Q|`L#~F4gd)|4~8*^5uW>GzpL6KILmoyS{qJmG0F@V<6s7S&s&JC3X150^#A7LC{@#6B0k0SAcg~!!qB! zlr}INbD&!a)2dIDi^?nfpg0Vj?;EO7(4MXIup~r20YUKymRW z?GirH>WA*fgpl!sVsyqA5C@9elKb__<95wA z#6Y93M~AbTy?VEiiyw5Aw^!iqJo?x6ejs`aD=j93V=A^B#A^h&#oRJ2ucrvvEhP9_ zqoN&$J+Ty$j|}MLk>(D@1rT=Q$uk@W9gT6Zh?b?B9xWUu;uz?S6qxUg8WERUv(S3G z2&EbUAf-7=cj;_rpfXL7y>BSmkgJD2Qa{arm20vy;ZaWen+na93s7{_Wy~p?N-B85 zY1|fGDN2J(_aBz6&h0-Lq(+}nDN&8SAn#bNDeS4EOILjxSWcF#;TM9VuQdnqhMZ#@ z5dNeWE@QomUvA}|u!S%&hWRN(EdVjjs(D6gvA5~01S^fal*|tK5Egs9f!z-KsGX-K zA}j9pvP^j7;imtHwiEt82c}~C(k*Shy5??ZLhYqcR@f}{akR4->^DDPTQKr7!7i+r z!6r3YLOFpO@exuSPi!Sv}mzBSJHu#V7vaj@|{4CaFABtdI0^$1|SJjU&;S{#fYsOT?k?N$E zVbzzzxG3(vgnRg$a3;gyvgllbR@@_znh^eIM-|y`0{H_!0(sJu_>|7?)@RE25~jv4 zJ$>^(5>Wulx0A>OOmH3fIp?*5t@yq&zg>PxUgrfVKe$PfG=+M=gg8kv!Lr^5bx4BB zp!lt`ZF#OD7^i36=f8e@nB@+2t*hUC-GdYWZI@|B}G2k5$7e)RyDY z*P!zbki8a;lTHG2zY=?a_!7sV6T)Pds3M+8yinxaA~N#+c$o$efllAreddG*nJse9 zQ&*Ue1F-)q)r4JOz6-loYd3EgpNamp{F`4>JX}6z#e9DbKgns3$(mrg(sKD9m;EEo zFagmpKmM+xdigbZ<=KMzHDa0d6Iu(id8*qd0eZ#-a2QC&A?+3xLG|`I#!!~69D=?x zm8(9Xs$Xdj2kvA?p$pZQICN0Lr9C!SAmh9U7el~x%$Cx~n`G_vcD+DlT49T5e%TqV<9mr1sT&}Hts%F0bEXj7B;cA)>lHET8<8WcA6uc-v|w!N+MC<8mBX@wyv&0^}iCpnycjY2Cax4pLp zJJ@U&e5zSrCNMwdrpAeo0ob;m6i~#egyvj?2;c>|LyC6Y^?#P>(75LTQ)L7s-Fqn`WwIa!C!m93Fl*Okfy&yX^FAHcdE1 zJWOppZTn|m!xbJmyINn9dHQ$NC;y2CBS8|2o|0#+RP^vax02$tu{P;p z88t#}rm-C%Jp{ zFD9?)2|b;Nx?At>+tRjL(yr;9GFEz1W16L-x5jK$MR3KVMWtRgOsB@)cW0=AWWrre zrF=ybf<~`m*NnPHn(q}JN8hxTp+U+g06y2XNECwMH(4KsxUJ+v;(P-eUfJU8?R!wf z2q4E>b9A%OF|x8S^T-yZw&fmgtESgsDZ>Iu;Z%uuxDLl&LMJ&x!JP!vduqq zWtc>17+%}x5FM&?H}i;Mr7a@4_6~;gsq?6n@DBQUZ^#mtZiM^uYs$at?xAf+US-fN zw^UFym>RFX{Zw;^zwA|hm51hXpnB9znUxC7wulJYmJ+#@@6{)HgjP#Z?p)bu@hNmV zJsD*3&22()&GB1Ge$|yPes7LPE)3<@a8kTwRG-*-jQF#U9>EDSgRmyCTz#y2dSYwnHVZdvM?F=2?J`+taa*k#u*V6kiA-DJz_6 z;H?)h)XRki)8_}7<&Hk0y^O4JvqLqI`QJBTQ9%)H7Awyy%rL^A`dNp(P%ncb4__b##5#DB+stZ7oQdCHJ4AKuqgI&hGY+$H-}or zd-F%zOYGWm#@k-VT`6y{37kD?Kh+k^EbA}h?)T&Sjj%x|f7Z761L|9$?wNd>wC2NO zNy+RH~{E>@uB~Mt(Jm-U8O`b#qA`g5tbboc6&Um zqeoi6_am_1twEutol$M17_h|WHw};z-^ie6Wc<9YyYG?g4_)3;V5`U!_yXo*CMzvy z!Y>1z+yLd_=zTxkctp?}8MAtQaZRxG$NQ;7-w3kjw5e&kp;YsT`ou#vuAEQa9^dT} z@7?uP z{=EMLSTaYH3#>ojoxgTSy~g_!u;DIHMFvk?1nF?V?QczGNzVScD}A&9N)!`oytZ=2 zb%2~QMpd@+9LL(PPQTOTTKE5`WADWtCLISjbDt6GEaNT*D(WSl?bp7k%MnF=-Y5h^ z=j2Bl0Dt`)LR_Mj1Jk=X%S4n}OM;TZ)(y2rx6w)PrW4QQ)7gxQVV0%f5T}4L-c>E{ z^)&oO6Nev;$^ss1nx!99m&@sYr0bYxmd8U_xfOU6Fnwvv8@D{5R~FwUN4dQ-J~V+e zRX4hOATRj5V06scu>Fbcuk7zX@v6XVWmQRrE^D>X$@s%-`p>ee@{8K0X)Bw_>IaYufdRHUS`yaIZnLqovOLFlBTgol$kk|`^3&8>YM5!- z#QOTR&N}z9+V}UMK0hFvNhzRqr=4tE;_sSyJ{eHMA%4{R<};%Q=xQ#bP7w0bHGQiV zn1D>b&h(*`CCdFa9y+S;&bYy`@F*i&4M4C+{Lv6VJFY4SWm!Kzkk#6Y;7-lZ6fn*< zlaW3>()5y}kx|KxsbP(I=$%p@3vyCf_e2bcA1xkW>^6n*w!F6hKF1MWb#G!iS>RA& zncvDS>FUMgucZ(+V27LWlIzjc0u{yO$G6XE{Li!{sT&3MrLK2m$gUyoEqhFzGteL$!&k$3s8wZDYNy?khhlV?yXZU>S zb52A=h^vk1z^<@2eI)_Cxa&HpQntPIHalbsm*!=&aBpUkhcb7hiLNJ8!34(s2q#IB zluG81{RW(E4TK5zptT3i+;eD5QE71nc=%;%h2`l~rw#$-Jy^p=_4xyE^bpAph%wxk z*8!=&C%sjFMm31;1m*@?Csb%kKpjylZn!E*#cdeAeqEWuHU(4-9K!uB4qub_T88vz z4)6{HFNBFk7F_473!D{FECFCCq$f2hvPttLa%6nl2dgaPV3?o(PQA*5=uP z74of!E;&3^F{3iRQkXBqrQll-GwN%nUbF5u_p)>kHhJyb0gW)cHm+jnR)F4*(}F{; z2g0^%mJ|$%Fnf6A709M#_;QP6QL<=-c)XUa2j^?Go@SY0 z;25@CpZU)rJB~gegCh7ICx`JPjFtW-N4{3kfKlK!7BsNkse04`tGxiasm&!GqXqVr zK`c$!%Fu3h&5sg?@3{EkdU5jZ*T20)vTl3LwQnC-R`wUs+KEBduVnrf+9#9koVnRx zNb>jGL2-LUzd(6M5?0u{pEw%I%)ffaF{gS|y{YiM}8m`4&W#uyrde?)dRS?j?TEgJBW7*Ec%KiQ$L!$J(TX)}P|%Zi)W1df)Ru zMjs_Eo|t$iuw%+PT=TO>Cp}lOQ>KvSm1P!BH?_;$=ojmjV`(>iS@pH9*eJWj(3`w| zYLV%YU|G{PI-lfUYNt8fk!IB^UU1X+$cu|-q|cb%H;OOtU3TY7>49ylSA$N#GD8fn zk_{AO`nuySz(3{r+?dLTup*TvR-yGJum2|Fs^Hm3&J=M-%?_N@KaaWp6lx?+gd5ei z*14rnM{?jhSRSB$=w3uvBUG^DV+Yjww9%rzke}o7_PFV~^F#YmH^PqIHu+zdg8l%^ zQpGK1L6eNC*DMU3z9;P8F@Ch(H2d9}-yu*&%5&z*^>CU!UPmZd11HE4TVzk^FgExm zUs}B+q%&W#xUZZgXL)#KzEb`3ue~|pgA;n#*(QG;i&YPeA3jZso0?YCd%f`Ap7y2s z&gyV4t$5L6-Ts zQ%wYA{S6;CLz44yk*B;)=ccm`6VP0AvOU?+c5=##YuC(3Br8KI@5i~9p?=17jM=_K z>5i03cQf_XV}jQxlnhdC?d=?0B;dBcLuEQ~E}thdMg*LmS*xsGjEdON;5RodB=~fq z?`Xr?N~q=#W~Z-^d`T_UD};G^{nc=0ctF#V7wgb1U!~>hleR-o0`^vSX1&o$7 zXHMU*=IJ{`z=%Hwp@0+5zTF@zoc^7?f^S(|nB;;8QwH3BA*)Z>|+ZEI5}eE@w+ znCG9iV5;*_!-xaKJXCwYaaRuSsQReETb8~paDZmfoN7OMZ=|(S}*lzjzc=+N2`wp_S&#Xw8 zeX}>N4T;KX9{4`I6*ss%min9pyIc_+At-x<;#?_Eh~Bn($RnmIgw2TK=|uk1L*F8; z82ot090s4;U#yT2>Teak_KQD(JnfzEk-odKMHFLd%JiG|@M&`%bKef3l@~7KYu@D( zSN-OC-gzk>Eq$|i@}kkOvhbA>FdQ8KGSv09gCuX+RAX9-rr!@Tcvrt!7bW1n0~d&? zI{d2`lLQH}xW+>LT19ON?p~@-kqOZ3k`x9e1RAkM-t4!^Am1I6+A2Fwa}20o(yyL@ zl!&FRjp^?=NWn{VHKzuz{eaiOiPQpFUrK$I(8^^^i>ifgOubITHNoyDw;qqNb7{6m zzSU)$O8Tzm?8T!tY5r>v_hh8mm^!s8sDKi#F88t#a~mM5^fjqZ=P$coY~0MeuIi_^ za>?!W;!8l?K5S;1qnuXFAa9Hrdq$Lo?!wroIuMU)6~!z0CE6@=KA$L`TD; znKZw_=yj*M@$R85ts_@7_SU7R&l*X@Vf!`DcTwRzu#nbj%AiT^0Ng9JR6pQD<%sb}?IZ|q75^X7LxCE&Q&m>bmmgj|beKnjqPDxW zV<7XYR#ZP}6UP;a9c#0EJC3!8N_pY}De_eHuiw(OoO~uCrFB<+pS-n(v|q>^h*d3$ zb1G;0{r!lw(~=TiS!Fu*=IrVBxHD_OK83S2-%dysY*Tx|A>rc7QAPv6@%8~ad0^|v ztpI2he8|1a`1gqs%|$DFxxXO{hKzTrpO{hABhX^ac4z)O@iH!n@*%kFZC^!3DABR3Hc=L;Srrc&LI&ke*KJ%j;&zyjk1@WOs@T%YZaQuvod zVv`cXAh`{tPr=U+TdG1>y*zd3*#a7M*}SgcF86=yXOPulBQpgxu**pv8z~VC6Fea6 zO=%zSu$}*|flghQRLjA6*u4DX?!n>tBEb;Rbs)_!&u&1KL%^xmu{*dGXjew*Ku=S2qNq|I|VUKkeR5ca2hIWjsKnRK!ni#E}h-3)S zXr`(+f#v?h#a0!D?m_t}+YBhRL7SD4yjo zM+>!Zm`^RFyBsqeBR;7T5JC&8kB;QR+cFu?v#Dszt?#)n`up6JR7brhbFA-D28%)> z9Pb`-@b+HI=oM(+F|lD%&yYka*lrJ0UA>BEr+q;-VRqykR8n6WV=f^rM}&R{a&>-0 ztz7`bql@EXq`xNP&i@BP{m*ZTdGtL<8F{g2q8uy1&(hyIE@gUfsO9p z+f60-iq~w4s+oiOIWv_fdGMJc=q~R^(yVMCYafq!JVe(Le5q&0An9|MAcv;=zzy@n z-ygV0v_9q@MjSeQOhYwMY%KCkx0RZL@=H#FC*7PV33`3E&|pmURvuc$(yv}e-El@p z_3thPy}F}*r!tsvyvBG-bi$wSRR_n3QlF=rt(w;)UZTv?RniUI1-a(!A5OHYgb@npYtKgmc_dCg(e701MBlT{c>s5qW+OfbfN(Y}mXJ5qQh7 zzlZgL;7ud>wQIyh#`CPy2AfT8ZH!cX)7AcE=Vj^Qn){?pgAOCIzPQUe4=rY^>TL$L z&DwjYXkPUBWe5I62Qa*av^xXw@89c2-ay^#!W)Y0VXw_c0a=C{_~wpURP?2&&F)$V zXq2RIk_r_k7h(|+^cHZD6uZObH8OwUDJ6?UH>?fN8kjEOzs+D`P>YPo!pizs6SPFl z8eEW5K2|$(um(D$?*(73R6W(k9#-#HKPr(K|JTuHL?^)tjs@Mj0Oa|JM0*v+h5NEP z_KDd3noc-e+DUj4S~W$!vF*4;pplS)s3R9AYopq5YmYQ8XGZjIUS)H;NbM7Bs2diG z`X6biic~b`xZ>;j_5O`IifT8_;QjneLRk6djM1>|V47PNyCSM(cTCmu5A;BC2?Z7~ zsv4kw!k?-FfyPO%HaW04=}&vrSb*n{1fC;(2~Z<6aM9S|NP7-f`pm#}j z*3v+euz!Kz{ru9^Pq3|WA(8d8@)!JH;yo@KE^#352SP&v^XEOr{s{eu1>*0!vuT}& zP@d8xBw279dJ_U+CX~n4TNvTdn=w?dT@$(nGi^@|hH8&k-~bx4>hxE=qJ1Jeo`N%H z6NVMh1EH;@*`sNl$cP@F+py{uYMEfux$gW$+FJ0*6dUqbQ$<`P7Hed$bUpjC*#Svi zuj1DY`6iIRdI|-WqMicBK%W*)4k6J~JRS;Is>Kal>;2*hC#l>Hz6Z`Y4j>-(d|@ZAr(|$TeNyiszbH1(ENy3MTYC`NHp^*?T=D#~I}*zIy8-BXOLtkuZa z&^9HPfqtA>^E9MZb?afJ>{h?;20v>KeldH(TTqP%Aq|F}Be7wHx@SeAg)lQ!K$t2c zv2ggCB8t8NfE*0exQsYiw(XWg7)ky_P*(40NL5psyd?8yZO@iNv?esw_4Xxbj&WKy zeS=a(3-Y6z8gsvH& z(Um53AJ$>jtZ=-)SVdF^c1NFWnHDSA=H^O3p&mh2gO1QufD ztdquN;?iA7I3zzIQXB)^*`sA7ONEJCPd#sd~<$xg4pnT=gu0o4iR?u(2b zUV*r4IDdKJgn}D{=3Q$GXXyUe34X5C4bg%c;JH6vLzs!us$T8cTVnEVtQrMceL|dg z0M>i1#t24UpXCGAebof~Q-)GRhEw0WTaSa~M`QlO$3uT?1|)0oijC}bFh+iJ39dq_ zI&vSYiWmhuNJWbn=4|4)y+NuSIO?)gqK3~L$&cHJ$-eMR^>3Ca?b`NHKz6*KCLRuZ zGv|4*+nE6ia;EF(;r+C_*S26FIq{-Ed$|f!BZxFj2tn3HkAM>?BIz|Q^>*W=yYT9J zYXzIzpL)K~>c!%h0yyt`vF|BGagXF#FNHPs&Yp(a)0iUtJ;s3pW%{X?jH?3TGkE zGPlzrmL=QKti19#=rIb>3tVkH{981~31M+8e!!+vRJxj2>5jxLECJxpHX;d2KD4~^ z{N=$@53`t2F?3Jp2Ixi^J$SUe`HwS1Z1BzA#{UnR3cYMjBi;j3VE>Y&amCZYG2KHJ zheCY25%z~Mn{PTqAk(8TF?BxMGZUA3Wi1|k)G1I zK~_PJl_QNrB|l~5>>}P|+$>Q89BCJ)0!gRdJZ4J85`CTDRtJ zCRGJ5kxktvlT|>K{Ji(_IWM881vy&F?I09CCjIIXaJsJk6!(1nR6l0~w(GJlnLQAD zSvVgk`wyZQ-VEc-jZPM%sABgLFYD~L7l5wF8DuxNJ*{Ca3UN%5qAYpl^}+qJfz{H% zBbhK0lZA7luIR`{=adCQp7oc|ibuWYl+SR4>XZ9oZg=Q6;y1|v_AF2=#`j8@Wa=cT zUV0qg^%ckj&d~Qo_Pu=@>uXg&*-0orWTgN5QYzSw@!qksnneeTige}ZhIE3Hi@c*H0rT|u>3 z=Wfd;g#*ryLwB>EIsm#@7}iv=&+2Fha>uk=1^Mb4@3 z>x}Uo|LWHV!cZy5hh?g&s)E0DtmXJ^CjxvL58;}}%4YT3L#^CNNkoeNBlrzlz*1GA zYuDZtkHrqJsTvbJ4gD5l9POk!mb$sPVcmc)2PKTcVYHn?bT?7)-y6*=Fsh1ZjdPz# z#ybf0J5Q5_j}wpm{Gs2zTt1r4Al|UuK`;C%-{txJ-yUz+_3uhsKCszn$z)hUYuRua zNWFF-O0jX?u?QK+r(@Fak;qSv$*XeZUKjH0Y_+2JT94$fToTo zf6+cJ{aDS}BYv+%jw_b|0ejrxduv~~d3GQzlVtjDU#uhXn~m1tL)y~G0pg@q?E$Pbe&F(2R+vT+7B0t*voOaUq+g_Ame+z@~#C()6+OQK# zP8Pvvt1@PC2Hs;L$79Kx#Dv4>T2>Yg*RwtN?el(qvUMDMsOMC-CE#p!8%{mCuR4Rd z#zaVvJv?I&2V$pOLziWVyHf|miw@`(Esxu6bn2Raz5mN~H*e6Ix`DIN)8c0$DB*4c z@mdRQ146W?q^c1#)^c)lIf9y}t~HAa8$8xNf}y&x=pIHZDk{F;X!j@lI(k2c&=^mu z=g8828!4bx2YLjnr2zF;JDRg;LF^?3#Egr})e@Q}TC{#|9&L9xNqnsI>(5erNv0$y zDYHQ-@sI&GX?#&is}m~{k6VFb*r?$UK%S!4eGgA2LL zyd=DocGj2yn($2ju@*E1tgG0lSi!^MXkm1`sA)8Dzx2+~%qXrvF_yO;XF^`%F41nu zR?lxY{~G?cd(Ddu)PBnq^lf*KXoazPr;qp1pXtkvhI~ zLE;ntnGoH0#ti)+HYq&Zs8umXf-;+<@p|2A%Ae-2WIBF>i8t=swAZ-AFTW8_(!|2` z>eg7q=~r73q%F z+tPl2dAnUd7_L8Z%~j;}1I6q!0W)e89FQG-@y>H^**?p8*4vU|8lK?v^{e6#_!kqV$8FCT@@Nq74{yXcR7Qw=fzMCvIbJxXhP?} zSW(rW1$+x*Z(qg;PukN0qgA*aHIP(PbwUvRNv!v8!@I@U-j^mgcGlHb4+%`j*z%eO zVuP_{e6amVu&chbNi|*wqh0twoV!L0HSi2nV0rO46rbs3V@z!SNpEk;lt)@kM;0pM zEZGQadk(EQ)i%WWx2tD5U;$%8H5L5r>Vw6i6D(3aw9y(_v}g8Vr3mjiBEH5X?>c>F z7k{c0TTo;Jz3^&n0?ilxeP{x+3;`ROedX83^xI{^N_@*BFPZFnvQPWh*Ipb5Ot4_l zPlIeClhY5J_i<@8k%)M ziKB!{BR%f@2%ZVrB*rCx!nukY@C9Lg9fy={Z<<+{l8g@y9{l^$g|xsErsesK&{9q0 z*OSV)3~ozH?N0ixZQruh*KrC0IE2~^G>LK15_3?Q@ssGIRr_^#6}=0+r(F@N;h_H* zxVAS=9$A|O`;FGU7LBxDy0rAQlKwtX>7?zA6$|WM30Wf-(SL* zwFM)k8XUE^8P{&GA}x40gmJ~x$8m^XMQK|9K7)rES_>_g)nB_Bg#_oqBka^S^EqVk z(u5oH7He*g0x)HV{^!nqXji1)6Drfy3P!G^f_d zZt&l<5B7M{wER@u_-)>9*hen2Ai3sp6fh*UzOZO zWNoY|$z7t<1q7C*{(W?rSmI!-#QXL5TfperyVG+>Vu@JA0(KoN{$l7hGA~BaS?N=8 z%Gc7gA@@j>cupzf=))uAHB%R&3~C#S?@=$V8|Ph{uyE|rm_bF%9^sl0GwKcgraG0U zvzn!+rPNu}w=YgNJ(d0=s11|0Y}>SHi?pGRw&`!LCW_b_yYDz#hU_O}`)Gpbsi7!V zj3~z;$Ag#j_%0UoF$nm`M%}*_96#?aOTDpo7}sw=i3t?d-X|r^fyWv+?hlJ;J$f=X zHA=j_-*;kOb3)>y{lTmlrdZ9@x;2A8jri};bsEDPw{#l0fN$ZOgy|giog!j&#NrH$ zTNt)&6>RLBdU)&Zu3-Zr)rZr4#ulTjx-XK<>Pk^C%W7$C=e?k%txt_fxw&YcW*od` z8ig(TrzHp@DuOI_lQ~{w?n*J;yR@YeMM8bzaphv9(F?i(KxDDw{)$Quj811k@Vwg{ znA1LTnzj(m_&QrnQS2DW&U9FrH;BPCUD2XZ^A-f~dGvUueU+x>*y_++?*Ht}u<#o> zA=hk7RjUWMr9MVfzfrA%@#p(wZE(3cofW|aA`XlhZ$R~+G0H&m3mqgBOmF1zr1F%r0QP`L+B@&rb+}8{ck};ZjUA zxgvP}-izS$;KiB$%>{l=HXb>+46y!=gXVYwSh9Q{Z0eUr0;OJHbY_pYl!tub_UeBB z1Gu;_$_K6SZpCeZ`c8bqp`*uar&wX@&i^s*w0K%=9sxEHquV{O&>mbX^?W``$g3 zmdDXzn3gD${#Uf3o}XLs?F!ui|9_cwl2d2Kdh}%J;n9;ScZh*&WbR3S>NPS`cawjs zdTUip5=rJruKy{{>=3MK5xcsN!#LxK41o~(^2ete9`ui`GX2BY;Dx| zvcjFZpw;#?DZ18TCSk4C=UQW<`o4na0+yz`M=7h6w6*Tj0vGBp&8e?+tG1~pco5ec z+eW^tJb2Y7sMb0^c`|jy=R#x5_}~-f9^P*~=TW>E1#fk2hI2uoMcGF5`mLrOSflID z+3l}?xBl!g${6QcJT*ZNawT3v3Q*&p59+qu$l zTHstg+nRc!&<2bW5!d82^27xrYXOlyEt*uLDs*@zddR}VWz>IEVR9`+iAJwCV%#xp zPg?M&+y6NGnIwq{v>$r;hBe*6=Po{&ku9M{@Ji0=m%{-slG?81(B727qqT`}P!f?P_h^Gp*PfN>MXS8{lU?T;&v~mK&wFAc zH$3U_PXQQS!z-Z=bODFD7E02u&zdifzm-VK(em}IdhN40SQsA`gL8Ct&e~~BDFEfM z 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 Vx74hYDcuBr40R9b Date: Wed, 13 Jul 2022 21:44:48 -0700 Subject: [PATCH 70/75] docs: Fix typo and use em dashes --- src/demo-react/README.md | 8 ++++---- src/demo-react/docs/adr.md | 4 ++-- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/demo-react/README.md b/src/demo-react/README.md index a7944604..8340cb58 100644 --- a/src/demo-react/README.md +++ b/src/demo-react/README.md @@ -4,18 +4,18 @@ The demo game is present to help you test your [Adagrams implementation](../adag As a result, when you first start the demo game, before you've implemented any of the Waves, the demo game won't function correctly! Specifically, it starts off thinking that every hand of letters is `["H", "E", "L", "L", "O", "W", "O", "R", "L", "D"]`, that any word at all "uses" those letters, and that everything is worth 0 points. As you implement the Adagrams functions (and pass its tests), you make it so the demo game functions correctly. -## Adagrams Proxy -- The Proxy Pattern +## Adagrams Proxy—The Proxy Pattern -The way the demo game functions *without* your implementation is by applying the [Proxy Pattern](https://en.wikipedia.org/wiki/Proxy_pattern) to the methods of your [adagrams.js](../adagrams.js). The Proxy in this case is an object defined in [adagrams-proxy.js](./adagrams-proxy.js). This proxy object implements the same "interface" as your real Adagrams -- that is, it defines the same four functions, with the same names, parameters, and return types -- and provides default behavior for any cases where the real Adagrams returns `undefined` -- that's the default return value for any JavaScript function. When you start implementing your Adagrams, and the functions stop returning `undefined`, the Proxy automatically switches to using your implementation for the function instead of its default behavior. +The way the demo game functions *without* your implementation is by applying the [Proxy Pattern](https://en.wikipedia.org/wiki/Proxy_pattern) to the methods of your [adagrams.js](../adagrams.js). The Proxy in this case is an object defined in [adagrams-proxy.js](./adagrams-proxy.js). This proxy object implements the same "interface" as your real Adagrams—that is, it defines the same four functions, with the same names, parameters, and return types—and provides default behavior for any cases where the real Adagrams returns `undefined`—that's the default return value for any JavaScript function. When you start implementing your Adagrams, and the functions stop returning `undefined`, the Proxy automatically switches to using your implementation for the function instead of its default behavior. The traditional definition of the Proxy Pattern explains that two "concrete" classes will inherit from an "interface". In other languages besides JavaScript, an interface is a way to explicitly specify the names, parameters, and return values of a class's methods without providing any implementation for them. An interface is usually described as a "contract" that code in a function expects an instance object of a class that implements the interface to fulfill. JavaScript doesn't have a way to explicitly define an interface in code; you call a method, and deal with whatever the result is. (A return value of `undefined` or a runtime error might be that result!) So when we implement the Proxy Pattern in JavaScript, our Proxy object fulfills the "implicit" interface for our real object. In this case, we know what the interface is because there are tests, other functions outside the module, and documents describing it. The Proxy and Real Adagrams objects implement the same "implicit" interface because they satisfy the expectations of the code that uses them. If the idea of an implicit interface makes you feel uncomfortable, then you might like TypeScript. ## How is the game structured? ### Ink -The demo game is built with a framework called [Ink](https://github.com/vadimdemedes/ink#readme), which makes it so you can develop terminal applications using [React](https://reactjs.org/). This means you will find React concepts -- props, state, jsx, etc. -- used throughout the demo game code. Ink provides the services that reconcile React's render tree with the standard output of the terminal shell (for you, probably `zsh` or `bash`). You might guess that the visual output of HTML is much richer than that of the terminal, and it really shows when you look at the render functions of React components that use Ink primitives, considering there are only a few -- `Box` and `Spacer` for layout, `Text`, `Transform`, and `Newline` for writing text with colors and styles, and `Static` to make the output stay instead of being refreshed. The game gives you some idea of how these pieces can be combined to create an interactive terminal app, but incidentally so do the tests. Jest also uses Ink for its text rendering. Run the tests in watch mode (`yarn test --watch`) and play with the Watch Usage options to see a different Ink app in action. +The demo game is built with a framework called [Ink](https://github.com/vadimdemedes/ink#readme), which makes it so you can develop terminal applications using [React](https://reactjs.org/). This means you will find React concepts—props, state, jsx, etc.—used throughout the demo game code. Ink provides the services that reconcile React's render tree with the standard output of the terminal shell (for you, probably `zsh` or `bash`). You might guess that the visual output of HTML is much richer than that of the terminal, and it really shows when you look at the render functions of React components that use Ink primitives, considering there are only a few—`Box` and `Spacer` for layout, `Text`, `Transform`, and `Newline` for writing text with colors and styles, and `Static` to make the output stay instead of being refreshed. The game gives you some idea of how these pieces can be combined to create an interactive terminal app, but incidentally so do the tests. Jest also uses Ink for its text rendering. Run the tests in watch mode (`yarn test --watch`) and play with the Watch Usage options to see a different Ink app in action. ### App structure and folder Layout -The app itself starts at [cli.js](./cli.js), which is where we call Ink's `render` method on the App component. The [App](./app.js) component looks simple -- it is a `ScreenDisplayer` inside a `GameStateStore` -- but that simple definition hides all of the complexity of the whole app. Putting the `ScreenDisplayer` in the `GameStateStore` is the connection point between all of the state management code inside `gamestate` and all of the components inside of `screens`. (The rest of the custom components, which the screen components depend, are in the `components` folder.) In this sense, then, the `gameState` is "global" -- everything in the app has access to the game state via React Context. You can read the consequence of that decision in code: most of the `screen` components expect game state to be available to them via `useGameStateContext`, and even some of the reusable components (e.g. [timer](./components/timer.js)) expect it, too. +The app itself starts at [cli.js](./cli.js), which is where we call Ink's `render` method on the App component. The [App](./app.js) component looks simple—it is a `ScreenDisplayer` inside a `GameStateStore`—but that simple definition hides all of the complexity of the whole app. Putting the `ScreenDisplayer` in the `GameStateStore` is the connection point between all of the state management code inside `gamestate` and all of the components inside of `screens`. (The rest of the custom components, which the screen components depend on, are in the `components` folder.) In this sense, then, the `gamestate` is "global"—everything in the app has access to the game state via React Context. You can read the consequence of that decision in code: most of the `screen` components expect game state to be available to them via `useGameStateContext`, and even some of the reusable components (e.g. [timer](./components/timer.js)) expect it, too. Folder summary: - [components/](./components/): React components that can be reused. This includes simple display-only components like [Button](./components/button.js), complex input-handling components like [NumberField](./components/number-field.js), and more-esoteric components such as the context-providing [GameStateStore](./components/gamestate-context.js). diff --git a/src/demo-react/docs/adr.md b/src/demo-react/docs/adr.md index 21b41833..346031f4 100644 --- a/src/demo-react/docs/adr.md +++ b/src/demo-react/docs/adr.md @@ -55,14 +55,14 @@ Chosen option: Rewrite the demo game using Ink, because: Here is a deeper discussion of the problem context and challenges presented to maintaining the existing demo game: -1. Fixes and featues are difficult to apply. The architecture of the app makes bugs hard to investigate. For example, the game offers a round timer in its arguments, but it does not implement this round timer. One of the volunteer TAs (this document's author) [created a one-line fix](https://github.com/mmcknett/js-adagrams/commit/5a4535f7b5212b704fa6a478ba98b75ae67d9ee7) for this behavior, yet it is not obvious from inspecting the code--not even to that TA, upon reviewing the commit--why this fix works. Additionally, the tests for the demo game have sporadically led to student submissions failing even though the tests pass locally. It would be nice to apply the principle of "if it ain't broke, don't fix it." However, it is difficult to tell if the demo game is broke and, should it be determined to **be** broke, how one might fix it. +1. Fixes and featues are difficult to apply. The architecture of the app makes bugs hard to investigate. For example, the game offers a round timer in its arguments, but it does not implement this round timer. One of the volunteer TAs (this document's author) [created a one-line fix](https://github.com/mmcknett/js-adagrams/commit/5a4535f7b5212b704fa6a478ba98b75ae67d9ee7) for this behavior, yet it is not obvious from inspecting the code—not even to that TA, upon reviewing the commit—why this fix works. Additionally, the tests for the demo game have sporadically led to student submissions failing even though the tests pass locally. It would be nice to apply the principle of "if it ain't broke, don't fix it." However, it is difficult to tell if the demo game is broke and, should it be determined to **be** broke, how one might fix it. 1. The demo game fundamentally depends on [Vorpal](https://github.com/dthree/vorpal), which is no longer being maintained. Some forks of Vorpal had been created with the intention of keeping the library maintained, including [moleculerjs/vorpal](https://github.com/moleculerjs/vorpal) and [vorpaljs-reforged](https://github.com/vorpaljs-reforged/vorpal), but these forks also appear to have fallen into inactivity. Keeping Vorpal updated has been necessary in the past to suppress `npm audit` security notices, which have scared and distracted students. At this point, there is no known drop-in replacement for Vorpal. 1. Each cohort, students look to the demo game as a model for how they oght to write JavaScript. Most, understandably, get discrouaged and give up trying to unravel it. As a student, it is easy to blame yourself for an inability to understand code, especially when it follows a "simple" pattern, as Model View Controller (MVC) is purported to be. The demo game even has classes named Model, View, and Controller! Simple, right? TAs, tutors, or instructors are forced to provide the context that this app's architecture is not simple, and is actually difficult for even seasoned developers to approach with intuition. The difficulty arises from a few issues, including: 1. Tight coupling among the Controller and View classes in the game. For example, the entrypoint to the game is `Controller.start`, which is called from `demo.js`. All that this function does is call `View.start`. All that *that* function does is log a message, then call `show` on the `Vorpal` singleton in the `view.js` module. Two function calls into the demo game, and a trip to the Vorpal docs is necessary to make any informed inferences on the game's behavior. - The tight coupling among classes seems to have come from an attempt to strictly adhere to the MVC "pattern." During the game's execution, from the very beginning, the flow of control passes back and forth between `Controller`, which invokes `View` after manipulating the model, and `View` which invokes `Controller`-- though it unexpectedly does so via `callbacks` objects. This flow of control likely surprises anyone who looks at [the MVC Wikipedia page](https://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller) for an illustration of the pattern. View and Controller are entirely separate in that illustration. Nonetheless, the connection between the two classes does sensibly arise from the constaints of Vorpal and the need to keep the code relatively simple. Attempting to satisfy the conflicting needs of satisfying Vorpal and satisfying MVC has resulted in classes that are named in a way that defies their true relationship. + The tight coupling among classes seems to have come from an attempt to strictly adhere to the MVC "pattern." During the game's execution, from the very beginning, the flow of control passes back and forth between `Controller`, which invokes `View` after manipulating the model, and `View` which invokes `Controller`—though it unexpectedly does so via `callbacks` objects. This flow of control likely surprises anyone who looks at [the MVC Wikipedia page](https://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller) for an illustration of the pattern. View and Controller are entirely separate in that illustration. Nonetheless, the connection between the two classes does sensibly arise from the constaints of Vorpal and the need to keep the code relatively simple. Attempting to satisfy the conflicting needs of satisfying Vorpal and satisfying MVC has resulted in classes that are named in a way that defies their true relationship. 1. The classes violate the Single Responsibility Principle. `View` handles all responsibilities that seem view-related; `Controller` handles all responsibilities that link the model and the view. The `Model` object is probably doing the best job having a single responsibility. That single responsibility is "manage all of the game state", but because the game state is small and interconnected it is arguably singular. From 103852d207332af5b9e5f12395b6bcc0813ec594 Mon Sep 17 00:00:00 2001 From: Matt McKnett Date: Thu, 14 Jul 2022 07:29:23 -0700 Subject: [PATCH 71/75] docs: Update root README --- README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 33c4dad8..913f4a3e 100644 --- a/README.md +++ b/README.md @@ -60,7 +60,7 @@ This is shorthand for the command `open coverage/lcov-report/index.html` and wil ### Adagrams Demo Game -In addition to the provided unit tests, we provided a demo game application that uses Adagrams code that you will implement. You can play the game as you implement each wave of the project and verify that game functionality begins to work, in addition to passing unit tests. Don't forget; making the demo game work is optional-- **passing the unit tests is required.** +In addition to the provided unit tests, we provided a demo game application that uses Adagrams code that you will implement. You can play the game as you implement each wave of the project and verify that game functionality begins to work, in addition to passing unit tests. Don't forget; making the demo game work is optional—**passing the unit tests is required.**

@@ -74,11 +74,11 @@ You can start the demo game application with the following command: $ yarn run demo-game ``` -This will start the Adagrams prompt, and you can start a new game by typing `start` (or `start ` for a game with multiple players). +This will start the Adagrams menu. You can start a new game, learn how to play, or quit. -Once the game has started each player is prompted to play anagrams from the displayed letter bank until their turn completes. At the end of each round the player who played the best word (according to the logic you will implement in wave 4) is awarded points based on that word. Once all rounds are completed the game announced who won with the point total for that player. +Once the game has started, each player is prompted to play anagrams from the displayed letter bank until their turn completes. At the end of each round the player who played the best word (according to the logic you will implement in wave 4) is awarded points based on that word. Once all rounds are completed the game announced who won with the point total for that player. -The game is fairly rudimentary and has a few bugs remaining, such as needing to type 'exit' to complete your turn. If you've completed all of the waves for this project and wish to continue working on terminal JavaScript code, feel free to ask your instructors for suggestions on bug fixes or improvements to make for the game code. +The game is fairly rudimentary and has a few bugs remaining. If you've completed all of the waves for this project and wish to continue working on terminal JavaScript code, feel free to ask your instructors for suggestions on bug fixes or improvements to make for the game code. [The game's code is documented](./src/demo-react#react-demo-game) in README files in its various folders. #### Conclusion From 1d1a4ad6fe21f01ca2470d73ca3193da40addf65 Mon Sep 17 00:00:00 2001 From: Matt McKnett Date: Thu, 14 Jul 2022 08:44:20 -0700 Subject: [PATCH 72/75] docs: Copyedit the Demo Game root docs --- src/demo-react/README.md | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/demo-react/README.md b/src/demo-react/README.md index 8340cb58..04979beb 100644 --- a/src/demo-react/README.md +++ b/src/demo-react/README.md @@ -12,14 +12,16 @@ The traditional definition of the Proxy Pattern explains that two "concrete" cla ## How is the game structured? ### Ink -The demo game is built with a framework called [Ink](https://github.com/vadimdemedes/ink#readme), which makes it so you can develop terminal applications using [React](https://reactjs.org/). This means you will find React concepts—props, state, jsx, etc.—used throughout the demo game code. Ink provides the services that reconcile React's render tree with the standard output of the terminal shell (for you, probably `zsh` or `bash`). You might guess that the visual output of HTML is much richer than that of the terminal, and it really shows when you look at the render functions of React components that use Ink primitives, considering there are only a few—`Box` and `Spacer` for layout, `Text`, `Transform`, and `Newline` for writing text with colors and styles, and `Static` to make the output stay instead of being refreshed. The game gives you some idea of how these pieces can be combined to create an interactive terminal app, but incidentally so do the tests. Jest also uses Ink for its text rendering. Run the tests in watch mode (`yarn test --watch`) and play with the Watch Usage options to see a different Ink app in action. +The demo game is built with a framework called [Ink](https://github.com/vadimdemedes/ink#readme), which makes it so you can develop terminal applications using [React](https://reactjs.org/). This means you will find React concepts—props, state, jsx, etc.—used throughout the demo game code. Ink provides the services that reconcile React's render tree with the standard output of the terminal shell (for you, probably `zsh` or `bash`). If you're familiar with React, you know it's most commonly used to generate HTML on web pages. As you might guess, HTML in a browser can produce much richer visual output than the terminal can. You can tell this is true by looking at the render functions of React components that use Ink primitives. There are only a few of those primitives—`Box` and `Spacer` for layout, `Text`, `Transform`, and `Newline` for writing text with colors and styles, and `Static` to make the output stay instead of being refreshed. HTML has vastly more tags to make elements from. Nonetheless, the six tags Ink gives you to work with make it possible to create surprisingly dynamic and visual apps on the terminal, even to the point where you can use flexbox to arrange text in your Ink apps! + +This demo game demonstrates how you can combine these pieces to create an interactive terminal app, but incidentally so does running the tests. The tests in this project are run by a JavaScript program called Jest, and Jest also uses Ink for its text rendering. Run the tests in watch mode (`yarn test --watch`) and play with the Watch Usage options to see a different Ink app in action. ### App structure and folder Layout -The app itself starts at [cli.js](./cli.js), which is where we call Ink's `render` method on the App component. The [App](./app.js) component looks simple—it is a `ScreenDisplayer` inside a `GameStateStore`—but that simple definition hides all of the complexity of the whole app. Putting the `ScreenDisplayer` in the `GameStateStore` is the connection point between all of the state management code inside `gamestate` and all of the components inside of `screens`. (The rest of the custom components, which the screen components depend on, are in the `components` folder.) In this sense, then, the `gamestate` is "global"—everything in the app has access to the game state via React Context. You can read the consequence of that decision in code: most of the `screen` components expect game state to be available to them via `useGameStateContext`, and even some of the reusable components (e.g. [timer](./components/timer.js)) expect it, too. +The app itself starts at [cli.js](./cli.js), which is where we call Ink's `render` method on the App component. The [App](./app.js) component looks simple—it is a `ScreenDisplayer` inside a `GameStateStore`—but that simple definition hides all of the complexity of the whole app. Putting the `ScreenDisplayer` in the `GameStateStore` is the connection point between all of the state management code inside `gamestate` and all of the components inside of `screens`. (The rest of the custom components, which the screen components depend on, are in the `components` folder.) In a way, then, the `gamestate` is "global"—everything in the app has access to the game state via React Context. You can read the consequence of that decision in code: most of the `screen` components expect game state to be available to them via `useGameStateContext`, and even some of the reusable components (e.g. [timer](./components/timer.js)) expect it, too. -Folder summary: +More details about screens, gamestate, and the reusable components can be found by going to their folders: - [components/](./components/): React components that can be reused. This includes simple display-only components like [Button](./components/button.js), complex input-handling components like [NumberField](./components/number-field.js), and more-esoteric components such as the context-providing [GameStateStore](./components/gamestate-context.js). -- [gamestate/](./gamestate/): Reducers, actions, and "middleware", following patterns that are like redux but implemented with [useReducer](https://reactjs.org/docs/hooks-reference.html#usereducer). +- [gamestate/](./gamestate/): Reducers, actions, and "middleware", that store and allow changes on the state of the game and its UI. This folder follows a pattern that is like [redux](https://redux.js.org/tutorials/essentials/part-1-overview-concepts#what-is-redux) but implemented with React's own [useReducer](https://reactjs.org/docs/hooks-reference.html#usereducer). - [screens/](./screens/): React components that represent the various "screens" that players move through during the game. The [ScreenDisplayer](./screens/index.js) chooses the screen based on the current state. ## History From e424d8aab42059caa8e87844811045541ccad842 Mon Sep 17 00:00:00 2001 From: Matt McKnett Date: Thu, 14 Jul 2022 09:04:16 -0700 Subject: [PATCH 73/75] docs: reorder bullet points Reading screens first probably makes more sense. --- src/demo-react/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/demo-react/README.md b/src/demo-react/README.md index 04979beb..7398ecb3 100644 --- a/src/demo-react/README.md +++ b/src/demo-react/README.md @@ -20,9 +20,9 @@ This demo game demonstrates how you can combine these pieces to create an intera The app itself starts at [cli.js](./cli.js), which is where we call Ink's `render` method on the App component. The [App](./app.js) component looks simple—it is a `ScreenDisplayer` inside a `GameStateStore`—but that simple definition hides all of the complexity of the whole app. Putting the `ScreenDisplayer` in the `GameStateStore` is the connection point between all of the state management code inside `gamestate` and all of the components inside of `screens`. (The rest of the custom components, which the screen components depend on, are in the `components` folder.) In a way, then, the `gamestate` is "global"—everything in the app has access to the game state via React Context. You can read the consequence of that decision in code: most of the `screen` components expect game state to be available to them via `useGameStateContext`, and even some of the reusable components (e.g. [timer](./components/timer.js)) expect it, too. More details about screens, gamestate, and the reusable components can be found by going to their folders: -- [components/](./components/): React components that can be reused. This includes simple display-only components like [Button](./components/button.js), complex input-handling components like [NumberField](./components/number-field.js), and more-esoteric components such as the context-providing [GameStateStore](./components/gamestate-context.js). -- [gamestate/](./gamestate/): Reducers, actions, and "middleware", that store and allow changes on the state of the game and its UI. This folder follows a pattern that is like [redux](https://redux.js.org/tutorials/essentials/part-1-overview-concepts#what-is-redux) but implemented with React's own [useReducer](https://reactjs.org/docs/hooks-reference.html#usereducer). - [screens/](./screens/): React components that represent the various "screens" that players move through during the game. The [ScreenDisplayer](./screens/index.js) chooses the screen based on the current state. +- [gamestate/](./gamestate/): Reducers, actions, and "middleware", that store and allow changes on the state of the game and its UI. This folder follows a pattern that is like [redux](https://redux.js.org/tutorials/essentials/part-1-overview-concepts#what-is-redux) but implemented with React's own [useReducer](https://reactjs.org/docs/hooks-reference.html#usereducer). +- [components/](./components/): React components that can be reused. This includes simple display-only components like [Button](./components/button.js), complex input-handling components like [NumberField](./components/number-field.js), and more-esoteric components such as the context-providing [GameStateStore](./components/gamestate-context.js). ## History This is not the first incarnation of the JS Adagrams demo game. An [Architectural Decision Record](./docs/adr.md) describes the latest iteration as well as reasoning behind its development. \ No newline at end of file From f0fc05f17bfe623f9fa399b6ea9c88b4bfb24ad9 Mon Sep 17 00:00:00 2001 From: Matt McKnett Date: Thu, 14 Jul 2022 10:56:38 -0700 Subject: [PATCH 74/75] docs: Copyedit screens readme. I also added a bunch of discussion on MVC, then put the whole section behind a collapsible TL;DR. --- src/demo-react/screens/README.md | 26 ++++++++++++++++++++------ 1 file changed, 20 insertions(+), 6 deletions(-) diff --git a/src/demo-react/screens/README.md b/src/demo-react/screens/README.md index 70a25c0f..d031b4ec 100644 --- a/src/demo-react/screens/README.md +++ b/src/demo-react/screens/README.md @@ -1,17 +1,29 @@ # Screens -This is the game's "presentation layer". If you think of the app as following the [Model-View-Controller (MVC) pattern](https://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller), the screens (and the [components](../components/) they depend on) contain the View and Controller. They render the jsx that comprises the View. They register functions that handle input by dispatching actions to manipulate state, thereby Controlling it. In fact, had the [gamestate](../gamestate/) been simple enough, they would also have been the place where state, the Model, is defined and stored. +This is the game's "presentation layer". If you think of the app as following the [Model-View-Controller (MVC) pattern](https://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller), the screens (and the [components](../components/) they depend on) contain the View and Controller. They contain the View in that they render the jsx that results in text showing up on the screen. They contain the Controller in that they register input-handling functions, which dispatch actions, in order to control the state in [gamestate](../gamestate). In fact, had the game's state, which is the Model, been simple enough, they would also have been the place where state is defined and stored. ## Following MVC ### MVC and the structure of files, functions, and classes The prior statement is a big hint that "following the MVC pattern" does not mean separating files, or even classes, or even functions (!) into "model", "view", and "controller". Following the MVC pattern means: 1. A user manipulates some input device (mouse, keyboard, touch, microphone, etc.) 1. That input is interpreted by a controller, with enough additional information from the context of the running application, to modify an underlying "model". -1. The change made to the model is observed by a "view" layer, which takes the model changes and renders it into a form that an output device can interpret -1. The rendered output is displayed to the user via some means (screen, printed document, audio output, tactile display, etc.) +1. The change made to the model is observed by a "view" layer, which takes the model changes and renders it into a form that an output device can interpret. +1. The rendered output is displayed to the user via some means (screen, printed document, audio output, tactile display, etc.). -The model is the core. Around it, there are many many layers of Controller and View that sit between the user and the model that an application defines. The screens in this folder organize certain aspects of the application's View and Controller, segmenting them in a way that matches the original developer's mental model of how the application is supposed to behave from a user perspective. There are screen component because the wireframes started with screens. The View & Controller layer might have been organized differently, depending on what the original specifications had looked like. Likewise, the "game state" model might not have been monolithic, global, and located in a single folder. There are some obvious seams. Were the application to grow, it would benefit from refactoring to separate the state that changes independently, similar to how these screens are factored to display screens that are independent of each other from a View perspective. +

+ Expand for a deeper discussion on the nature and value of MVC. -### Specifying the screens +The model is at the core, and around it, there are many many layers of Controller and View. They make the model available to the user, and allow the user to interact with it. The screens in this folder organize certain aspects of the application's overall View and Controller, segmenting them in a way that matches the developer's mental model of how the application is supposed to behave from a user perspective. The folders, files, and even the functions representing components, emerge out of this mental model of user interaction, rather than being organized around the View and Controller concepts themselves. That means that not every Ink app, and likely very few React apps, would have a "screens" folder. There are only "screen" components because the wireframes started with screens. React apps also wouldn't have "view" and "controller" folders; in React it is awkward to separate views from controllers cleanly. Doing so would make the code harder to understand. The View & Controller layer might have been organized differently, depending on what the original specifications had looked like. + +Likewise, the "game state" model might not have been monolithic, global, and located in a single folder. There are some obvious seams in the game state where the state might be separated into different objects. Were the application to grow, it would benefit from refactoring to separate the state that changes independently, similar to how these screens are factored to display screens that are independent of each other from a View perspective. + +If this leaves you feeling uncomfortable with how loose the MVC concept is as a pattern, you may prefer to instead think about what anti-patterns might emerge in your code, and what benefits you miss out on, if it isn't applied. The most common anti-pattern emerges when the Controller directly interacts with the View. Input directly controls output, without an observable model in between. It makes it harder to keep track of whatever information passes from input to output. It means that testing the system isn't possible without poking buttons and looking at the screen. Forcing data through a Model layer adds a lot of flexbility when it comes to extending and testing a UI system. The most obvious benefit comes from separating the Model from the View and Controller. Separating out a clear, but abstract, representation of the app's state and of the data that a user cares about, makes it much easier to move that state around—keep track of previous state in order to undo actions, send the state to a server or to disk, etc. You can save the state so that the user can resume whatever they were doing if their application closed or disconnected. You can more easily create file saving code. And you can much more easily test your model without having to mock more complicated aspects of code like display or user input. While testing the demo game, the original developer took advantage of this. It has [a debug flag in its reducer](../gamestate/reducer.js#L12) that lets you go straight to a win screen with mock data. This sort of setting would be possible, but more difficult, had the model been spread throughout the application. + +Separating the Model from other aspects of the application is so powerful that "Model" is the common theme when you compare MVC to other patterns that are intended to compete with or supersede it, such as [Model-View-ViewModel](https://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93viewmodel) (MVVM), [Model-View-Adapter](https://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93adapter) (MVA), and [Model-View-Presenter](https://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93presenter) (MVP). In fact, if you compare the data flow diagrams of all of these "patterns" to the data flow diagram of [the traditional 3-tier architecture](https://en.wikipedia.org/wiki/Multitier_architecture#Three-tier_architecture), you might come to the conclusion that they're all fundamentally the same. People who discuss and theorize about software architecture seem to come back, again and again, to this idea. There is a model of a system at the center, which is stored in a way the computer can represent it. Changes to that model are organized by some layer that interprets user actions and forms them into functions that can operate on the model. When the model changes, calculations have to be made in order to return the updates back to the user. The various organizational models offer different advice and points of view on how the systems that interpret input or produce output ought to be organized or connected, but fundamentally the abstracted model of data is always at the center. +

+ +TL;DR: An observable model is key, and you have lots of flexibility in organizing the code that handles user input/output. + +### Why screens? These rough wireframes were used to guide development of the View. The "screens" concept evolved directly from the wireframes: ![This is a high level description of screens in the Adagrams application. Five screens are listed: Main Menu, How to Play, Set up game (with a name entry sub-screen), In-game, and Win Screen. All of the screens' layouts except for in-game are shown in this wireframe. The "Main Menu" screen has three options: Start New Game, How to Play, and Quit. "Start New Game" is highlighted. The "How to Play" screen provides the following explanation: "Select # and names of players. Each round, a new set of 10 letters is chosen. Every player has a certain number of seconds to guess. The winner is whoever has the highest score at the end of all rounds." The Set up Game screen has three areas to enter numbers: Number of players (1-4), Number of rounds, and Seconds per player per round. It lists initial values of 2, 3, and 15, respectively. 2 is highlighted. The player entry sub-screen of "Set up Game" prompts the user with "Player whatever, enter name". As an example of input, "Matt" is the name entered. The subs-screen is prescribed to show for each of the number of players entered in "Set Up Game". The In-Game screen is part of the next wireframe image and not present. Finally, the Win Screen shows that a message will display after the game is complete. The message is: "Player wins with Number points!", where Player and Number are placeholders for the winner and how many points they earned. Additionally, a list of players and the points they earned appears below.](../docs/screens-wireframe-1.png) @@ -20,10 +32,12 @@ These rough wireframes were used to guide development of the View. The "screens" It's worth mentioning that the final result does not implement these wireframes exactly. The rough, hand-drawn nature of these wireframes is a big hint that they are not intended to be a full specification, followed rigorously; they are merely a jumping-off point. That is exactly how development played out. ## Magic index.js -The root component of the screens, `ScreenDisplayer`, is inside of `index.js`. That lets the import statement in [app.js](../app.js) look a little magical: +The root component of the screens, `ScreenDisplayer`, is inside of [index.js](./index.js). That lets the import statement in [app.js](../app.js) look a little magical: ``` import ScreenDisplayer from './screens'; ``` JavaScript `import` knows to look for `index.js` when it's given a folder instead of a file, and that's how `App` ends up getting the `ScreenDisplayer` without mentioning "index" anywhere. + +You can see the screens that have been implemented by looking at the logic inside of `ScreenDisplayer`. From 12a3f3fb65d8106c5580d4d77c192d788e2e7834 Mon Sep 17 00:00:00 2001 From: Matt McKnett Date: Tue, 19 Jul 2022 14:42:30 -0700 Subject: [PATCH 75/75] docs: Higher-order reducers are not middleware I used the term "middleware" incorrectly. Middleware is a higher-order function applied to the `dispatch` function. The structures I had called "middleware" in the documentation are actually higher-order reducers. They modify the reducer, but still guarantee a state is returned and do not produce side-effects. Middleware wrapping the dispatcher allows for side-effects and behavior that does not produce state modifications. --- src/demo-react/README.md | 2 +- src/demo-react/gamestate/README.md | 5 ++--- src/demo-react/gamestate/errors.js | 6 +----- src/demo-react/gamestate/reducer.js | 8 ++++---- src/demo-react/gamestate/timer.js | 2 +- 5 files changed, 9 insertions(+), 14 deletions(-) diff --git a/src/demo-react/README.md b/src/demo-react/README.md index 7398ecb3..319e94ea 100644 --- a/src/demo-react/README.md +++ b/src/demo-react/README.md @@ -21,7 +21,7 @@ The app itself starts at [cli.js](./cli.js), which is where we call Ink's `rende More details about screens, gamestate, and the reusable components can be found by going to their folders: - [screens/](./screens/): React components that represent the various "screens" that players move through during the game. The [ScreenDisplayer](./screens/index.js) chooses the screen based on the current state. -- [gamestate/](./gamestate/): Reducers, actions, and "middleware", that store and allow changes on the state of the game and its UI. This folder follows a pattern that is like [redux](https://redux.js.org/tutorials/essentials/part-1-overview-concepts#what-is-redux) but implemented with React's own [useReducer](https://reactjs.org/docs/hooks-reference.html#usereducer). +- [gamestate/](./gamestate/): Reducers and actions that store and allow changes on the state of the game and its UI. This folder follows a pattern that is like [redux](https://redux.js.org/tutorials/essentials/part-1-overview-concepts#what-is-redux) but implemented with React's own [useReducer](https://reactjs.org/docs/hooks-reference.html#usereducer). - [components/](./components/): React components that can be reused. This includes simple display-only components like [Button](./components/button.js), complex input-handling components like [NumberField](./components/number-field.js), and more-esoteric components such as the context-providing [GameStateStore](./components/gamestate-context.js). ## History diff --git a/src/demo-react/gamestate/README.md b/src/demo-react/gamestate/README.md index 383a53b3..b5c4143d 100644 --- a/src/demo-react/gamestate/README.md +++ b/src/demo-react/gamestate/README.md @@ -2,7 +2,6 @@ This is where you find functions controlling the game's underlying state, which includes things like what screen the game is displaying, how many rounds have been requested, what players have guessed, etc. There are a few types of things here that you will commonly find in code following a [state reducer](https://redux.js.org/tutorials/fundamentals/part-3-state-actions-reducers) pattern: - Actions - Reducers -- Middleware - Selectors ## Actions @@ -11,8 +10,8 @@ An action is just an object. It's expected to have a `type` field with a string ## Reducers The `reducer` at the bottom of [reducer.js](./reducer.js) looks complicated. Fundamentally, it's a function that is just like the callback you pass to [Array.reduce](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/reduce). In fact, you can imagine React, under the covers, taking an array of action objects that it has been given via `dispatch`, and literally calling `reduce` on that array using your reducer function. The `reduce` function will use your reducer to calculate the new `state`, starting with `initialState`, for every action that it was provided. (You do have to imagine this, though. React doesn't actually use `reduce`. It needs to prioritize, defer, and occasionally discard work it has done to update state, so the mechanism it uses to loop over actions is more complicated.) Once the actions are applied, you end up with a brand new state object that is the result of previous state and action running through your reducer function. -## Middleware -So why is the `reducer` surrounded by a bunch of other function calls? These are "middleware". They apply the [Decorator Pattern](https://blog.logrocket.com/understanding-javascript-decorators/) to modify the core behavior of `gameStateReducer`. For example, while `gameStateReducer` will happily set `desiredPlayers` to whatever the action payload's value is, it is wrapped in [validateOptionsInput](./options.js), which will swap the action out for an error action if the payload isn't in a valid range. You could achieve the same result with a big, monolithic reducer function, but using the decorator pattern gives you more flexibility to change the reducer without modifying its existing implementation. (That's the O in [SOLID](https://www.geeksforgeeks.org/solid-principle-in-programming-understand-with-real-life-examples/), open/closed: the reducer is open for extension, but closed for modification.) The separation of middleware also presents opportunity to test the middleware independently, though the current suite of tests simply tests the reducer with all the middleware wrapping it. +### Higher-order reducers +So why is the `reducer` [surrounded by a bunch of other function calls](../gamestate/reducer.js#L151-L160)? These are "higher-order reducers", which wrap the core reducer. They apply the [Decorator Pattern](https://blog.logrocket.com/understanding-javascript-decorators/) to modify the behavior of `gameStateReducer`. For example, `gameStateReducer` will happily set `desiredPlayers` to whatever the action payload's value is. However, it is wrapped in [validateOptionsInput](./options.js), which will swap the action out for an error action if the `SET_DESIRED_PLAYERS` action's payload isn't in a valid range. You could achieve the same result with a big, monolithic reducer function, but using the decorator pattern gives you more flexibility to change the reducer without modifying its existing implementation. (That's the O in [SOLID](https://www.geeksforgeeks.org/solid-principle-in-programming-understand-with-real-life-examples/), open/closed: the reducer is open for extension, but closed for modification.) The separation of higher-order reducers also presents opportunity to test them independently. Say you suspected `validateOptionsInput` were affecting state it should not; you can easily remove it by commenting out two lines and then see if the state is still affected. You can also add unit tests specifically for the higher-order reducer. (Note that the current suite of tests simply tests the final `reducer` function, with the `gameStateReducer` and all of the higher-order reducers wrapping it.) For further exploration of the concept, see: [Customizing Behavior with Higher-Order Reducers](https://redux.js.org/usage/structuring-reducers/reusing-reducer-logic#customizing-behavior-with-higher-order-reducers). ## Selectors There aren't many selectors; the purpose of selectors is to take the `state` object and retrieve information from it. Most places in the application just read what they need directly from `state`, but the win screen has some more complicated calculations to do. Those have gone in [WinScreenInfo](./win-selectors.js). diff --git a/src/demo-react/gamestate/errors.js b/src/demo-react/gamestate/errors.js index 8bba5dad..7f084a48 100644 --- a/src/demo-react/gamestate/errors.js +++ b/src/demo-react/gamestate/errors.js @@ -7,11 +7,7 @@ export class SetErrorAction { } } -export function getLastError(state) { - return state.lastError -} - -export function errorMiddleware(wrappedReducer) { +export function withLastError(wrappedReducer) { // Intercept any error actions and forward the rest to the wrapped reducer. return (state, action) => { switch(action.type) { diff --git a/src/demo-react/gamestate/reducer.js b/src/demo-react/gamestate/reducer.js index a90187b8..642ee55d 100644 --- a/src/demo-react/gamestate/reducer.js +++ b/src/demo-react/gamestate/reducer.js @@ -1,11 +1,11 @@ import { useReducer } from 'react'; import * as Actions from './action-types'; -import { errorMiddleware } from './errors'; +import { withLastError } from './errors'; import { validateOptionsInput } from './options'; import { validateGuessInput } from './rules'; import { ScreenId } from './screens'; -import { timerMiddleware } from './timer'; +import { withGameTimer } from './timer'; import Adagrams from 'demo-react/adagrams-proxy'; @@ -149,10 +149,10 @@ function guessWord(state, word) { } export const reducer = - timerMiddleware( + withGameTimer( validateGuessInput( validateOptionsInput( - errorMiddleware( + withLastError( gameStateReducer ) ) diff --git a/src/demo-react/gamestate/timer.js b/src/demo-react/gamestate/timer.js index 5cdb1966..7aca2e33 100644 --- a/src/demo-react/gamestate/timer.js +++ b/src/demo-react/gamestate/timer.js @@ -1,7 +1,7 @@ import makeAction from './generic-action'; import { ADVANCE_TURN, TICK } from './action-types'; -export function timerMiddleware(reducer) { +export function withGameTimer(reducer) { return (state, action) => { if (action.type !== TICK) { return reducer(state, action);