diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml
index ed46fd0b..91b0b99d 100644
--- a/.github/workflows/lint.yml
+++ b/.github/workflows/lint.yml
@@ -9,9 +9,12 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout
- uses: actions/checkout@v3
+ uses: actions/checkout@v4
- - run: npm install
+ - name: Install dependencies
+ uses: actions/setup-node@v4
+ with:
+ node-version: '20.11.1' # Install the latest LTS (Long-Term Support) version
- run: npm run format:check
diff --git a/.vscode/settings.json b/.vscode/settings.json
index 5a90e202..7a25dcd7 100644
--- a/.vscode/settings.json
+++ b/.vscode/settings.json
@@ -109,7 +109,7 @@
// Defines a default markdown formatter which takes precedence over all other formatter settings. Must be the identifier of an extension contributing a formatter
"[markdown]": {
- "editor.defaultFormatter": "DavidAnson.vscode-markdownlint"
+ "editor.defaultFormatter": "esbenp.prettier-vscode"
},
// Enable/disable update table of contents on save
diff --git a/1-what-is-programming/0-javascript/README.md b/1-what-is-programming/0-javascript/README.md
index 61b0381a..2fbc0d5a 100644
--- a/1-what-is-programming/0-javascript/README.md
+++ b/1-what-is-programming/0-javascript/README.md
@@ -62,7 +62,7 @@ alert('hello user (alert)');
You can also write your code in a script tag of an HTML file then open the HTML
file in your browser. The JavaScript will run automatically when the page is
-loaded. See this in action with `./inline.html`.
+loaded. See this in action with `./1-inline-script-tag.html`.
You will learn about this later in the course for examples and exercises that
introduce how JavaScript interacts with the DOM. It's easier to understand "the
@@ -74,8 +74,9 @@ big picture" when you can see everything in one document.
You can also write your code in a separate `.js` file, then load the file into
your HTML to execute the code. There are two different ways you can load a `.js`
-file into your HTML, you can see them in action with `./separate-script` and
-`./separate-modules` (you'll learn more about scripts vs. modules later on).
+file into your HTML, you can see them in action with `./2-separate-script-file`
+and `./3-separate-module-files` (you'll learn more about scripts vs. modules
+later on).
You will use this for larger projects and for collaboration. Separating code
into smaller files each with a clear purpose makes your code base easier to
@@ -113,8 +114,7 @@ in a browser, each one has a specific use case:
[code.org](https://code.org/) (develop and play games with JS),
[editor.p5js.org](https://editor.p5js.org/) (create interactive artwork),
[PencilCode](https://pencilcode.net/edit/myprogram) (write your code as blocks
- or text), [Ocelot](https://code.ocelot-ide.org/) (disallows "bad" language
- features and has helpful error messages).
+ or text).
---
@@ -135,11 +135,9 @@ secure and developer-friendly alternative to Node.js.
- [javascript.info/intro](https://javascript.info/intro)
- [The Net Ninja](https://www.youtube.com/watch?v=VB7y0yxZjro)
-- [MDN](https://developer.mozilla.org/en-US/docs/Learn/JavaScript/First_steps/What_is_JavaScript)
- [Andrew Mosh](https://www.youtube.com/watch?v=W6NZfCO5SIk) \(first 5 minutes\)
- [Code School](https://www.youtube.com/watch?v=nItSSTwBvSU)
- [MDN: First Steps](https://developer.mozilla.org/en-US/docs/Learn/JavaScript/First_steps/What_is_JavaScript)
-- [javascript.info](https://javascript.info/intro)
- [Danielle ThΓ©](https://www.youtube.com/watch?v=gT0Lh1eYk78)
---
@@ -148,4 +146,4 @@ secure and developer-friendly alternative to Node.js.
JavaScript is the language used to write the Source Code in this diagram:
-[![program diagram](../../assets/a-program.svg)](https://excalidraw.com/#json=_cj6JYwuO38PPGKxXN_cQ,3910Z7e2jGLZu4vjueG-Bg)
+[![program diagram](../../assets/a-program.png)](https://excalidraw.com/#json=_cj6JYwuO38PPGKxXN_cQ,3910Z7e2jGLZu4vjueG-Bg)
diff --git a/1-what-is-programming/0-javascript/some-history.md b/1-what-is-programming/0-javascript/some-history.md
index 1cd44700..5b2f7b54 100644
--- a/1-what-is-programming/0-javascript/some-history.md
+++ b/1-what-is-programming/0-javascript/some-history.md
@@ -40,7 +40,6 @@ grow, but this is the case for JavaScript.
- [You Don't Know JS](https://github.com/getify/You-Dont-Know-JS/blob/2nd-ed/get-started/ch1.md#backwards--forwards)
- [Why is JavaScript backwards compatible to a fault?](https://stackoverflow.com/questions/4937245/why-is-javascript-backwards-compatible-to-a-fault)
-- [edytawrobel](https://www.edytawrobel.com/js-compatibility/)
- [tonsky.me](https://tonsky.me/blog/compatibility/)
- [rohitdhatrak](https://www.rohitdhatrak.com/backwards-forwards-compatibility/)
- [Chrome Breaks the Web](https://www.theregister.com/2021/10/04/chrome_breaks_web/)
diff --git a/1-what-is-programming/1-the-developers/README.md b/1-what-is-programming/1-the-developers/README.md
index b0493320..e1105e32 100644
--- a/1-what-is-programming/1-the-developers/README.md
+++ b/1-what-is-programming/1-the-developers/README.md
@@ -23,4 +23,4 @@ Users and on the left in this diagram, developers are on the right.
- **Dynamic**: Logs and error messages help developers understand what is
happening inside the computer as it follows the code's instructions.
-[![program diagram](../../assets/a-program.svg)](https://excalidraw.com/#json=40qMI89WByj9Yhhh94Ghg,4zpL-AmDgpnbyFJWJfNQhg)
+[![program diagram](../../assets/a-program.png)](https://excalidraw.com/#json=40qMI89WByj9Yhhh94Ghg,4zpL-AmDgpnbyFJWJfNQhg)
diff --git a/1-what-is-programming/2-the-computer/README.md b/1-what-is-programming/2-the-computer/README.md
index 73550ef4..a89f2f3d 100644
--- a/1-what-is-programming/2-the-computer/README.md
+++ b/1-what-is-programming/2-the-computer/README.md
@@ -53,4 +53,4 @@ developer.
Tracing code is a very good way to begin understanding how the computer follows
your instructions one step at a time:
-[![program diagram](../../assets/a-program.svg)](https://excalidraw.com/#json=_cj6JYwuO38PPGKxXN_cQ,3910Z7e2jGLZu4vjueG-Bg)
+[![program diagram](../../assets/a-program.png)](https://excalidraw.com/#json=_cj6JYwuO38PPGKxXN_cQ,3910Z7e2jGLZu4vjueG-Bg)
diff --git a/1-what-is-programming/2-the-computer/guide-tracing.mp4 b/1-what-is-programming/2-the-computer/guide-tracing.mp4
index cb604b2a..2c47a63a 100644
Binary files a/1-what-is-programming/2-the-computer/guide-tracing.mp4 and b/1-what-is-programming/2-the-computer/guide-tracing.mp4 differ
diff --git a/1-what-is-programming/3-the-users/README.md b/1-what-is-programming/3-the-users/README.md
index 86c4f101..d077fc15 100644
--- a/1-what-is-programming/3-the-users/README.md
+++ b/1-what-is-programming/3-the-users/README.md
@@ -27,4 +27,4 @@ Users and on the left in this diagram, developers are on the right.
- **Outputting Data**: `alert` is a simple way for the computer to display
data to a user.
-[![program diagram](../../assets/a-program.svg)](https://excalidraw.com/#json=40qMI89WByj9Yhhh94Ghg,4zpL-AmDgpnbyFJWJfNQhg)
+[![program diagram](../../assets/a-program.png)](https://excalidraw.com/#json=40qMI89WByj9Yhhh94Ghg,4zpL-AmDgpnbyFJWJfNQhg)
diff --git a/1-what-is-programming/4-data-in-data-out/README.md b/1-what-is-programming/4-data-in-data-out/README.md
index f30de5ef..118c8251 100644
--- a/1-what-is-programming/4-data-in-data-out/README.md
+++ b/1-what-is-programming/4-data-in-data-out/README.md
@@ -2,7 +2,7 @@
So what is a program? It's something like this:
-![program diagram](../../assets/a-program.svg)
+![program diagram](../../assets/a-program.png)
The basic job of a computer program is to process data. Even the most beautiful
and interactive programs are just processing data behind the scenes. One of the
@@ -90,7 +90,7 @@ Practice explaining what is happening in each program using these terms:
out.
In the `/examples` folder you will find a few programs with a comment describing
-the **behavior**, **data in** and **data out**. Your challenge in `/exericses`
+the **behavior**, **data in** and **data out**. Your challenge in `/exercises`
is to fill in the same information for new programs.
Be _very careful_ about your formatting! Study the example comments closely and
diff --git a/1-what-is-programming/README.md b/1-what-is-programming/README.md
index 7b9b56ff..9a69bad3 100644
--- a/1-what-is-programming/README.md
+++ b/1-what-is-programming/README.md
@@ -24,7 +24,7 @@ then communicating with everyone involved to deliver quality software within
your project's constraints. This diagram shows the different channels of
communication in a software project:
-![rhetorical situation](../assets/the-big-picture.svg)
+![rhetorical situation](../assets/the-big-picture.png)
---
@@ -42,7 +42,7 @@ perfectly structured and do exactly what we want. The computer just _parses_
(interprets) our code and follows the instructions without any understanding or
thinking.
-You can think of a programing language as the developer's UI for the computer.
+You can think of a programming language as the developer's UI for the computer.
Because this UI isn't very intuitive you will need to spend a lot of time
studying syntax and other details before you can program with ease. This is why
you will be focusing on _understanding_ programs before writing them.
diff --git a/2-just-enough-javascript/02-primitive-values/README.md b/2-just-enough-javascript/02-primitive-values/README.md
index 84825887..6a943d5d 100644
--- a/2-just-enough-javascript/02-primitive-values/README.md
+++ b/2-just-enough-javascript/02-primitive-values/README.md
@@ -45,6 +45,8 @@ console.log(null);
'use strict';
console.log('--- numbers: numbers that are not wrapped in quotation marks ---');
console.log(12);
+console.log(3.14);
console.log(0);
console.log(-12);
+console.log(10_000_000_000);
```
diff --git a/2-just-enough-javascript/07-variables/README.md b/2-just-enough-javascript/07-variables/README.md
index cb12d328..f5246650 100644
--- a/2-just-enough-javascript/07-variables/README.md
+++ b/2-just-enough-javascript/07-variables/README.md
@@ -304,7 +304,7 @@ many rules and the rules aren't very complicated, you just need to learn them:
- [javascript.info](https://javascript.info/variables#variable-naming)
- [nexTRIE](https://www.youtube.com/watch?v=O5WlRR-lEDE)
-- [launchcode](ntro-to-professional-web-dev/chapters/data-and-variables/more-on-variables.html#naming-variables)
+- [launchcode](https://education.launchcode.org/intro-to-web-dev-curriculum/data-and-variables/reading/more-on-variables/index.html#naming-variables)
π₯ variable names can use numbers, letters, $, or _
diff --git a/2-just-enough-javascript/11-block-scope/3-quiz/predicting-logs.md b/2-just-enough-javascript/11-block-scope/3-quiz/predicting-logs.md
index 58dee415..bc9addc4 100644
--- a/2-just-enough-javascript/11-block-scope/3-quiz/predicting-logs.md
+++ b/2-just-enough-javascript/11-block-scope/3-quiz/predicting-logs.md
@@ -60,7 +60,7 @@ The assignment on line 7 is inside a block scope, but is accessing a variable
declared in the outer scope. This means that the new value will still be
available after the scope has closed.
-Line 8 and line 11 will both log `"cat"` because a new value was never assigned
+Line 8 and line 11 will both log `"dog"` because a new value was never assigned
between those lines.
diff --git a/2-just-enough-javascript/13-while-loops/08-parsons/enter-something-2.js b/2-just-enough-javascript/13-while-loops/08-parsons/enter-something-2.js
index ce7d42c8..08a57934 100644
--- a/2-just-enough-javascript/13-while-loops/08-parsons/enter-something-2.js
+++ b/2-just-enough-javascript/13-while-loops/08-parsons/enter-something-2.js
@@ -28,4 +28,4 @@ if (input === '') {
while input === null { // distractor
if (input === '') // distractor
-LET input = null;
+LET input = null; // distractor
diff --git a/2-just-enough-javascript/13-while-loops/09-infinite-loops/guide.mp4 b/2-just-enough-javascript/13-while-loops/09-infinite-loops/guide.mp4
index 8fffd898..05b50b73 100644
Binary files a/2-just-enough-javascript/13-while-loops/09-infinite-loops/guide.mp4 and b/2-just-enough-javascript/13-while-loops/09-infinite-loops/guide.mp4 differ
diff --git a/2-just-enough-javascript/README.md b/2-just-enough-javascript/README.md
index dc796bfe..e0936998 100644
--- a/2-just-enough-javascript/README.md
+++ b/2-just-enough-javascript/README.md
@@ -9,9 +9,8 @@ and interact with users. Why just enough, and not a little more? Because reading
and understanding program logic is more important than JavaScript, so why let
the code get in the way?
-In this directory is is all the JavaScript you will find in this module's
-examples and exercises. Don't be mistaken, there's a lot you can do with only
-this!
+In this directory is all the JavaScript you will find in this module's examples
+and exercises. Don't be mistaken, there's a lot you can do with only this!
---
@@ -59,8 +58,8 @@ rest go a lot smoother.
#### `// prettier-ignore`
The marking exercises will have an extra block around the code and a comment
-written before the block. You can ignore that. It's there Prettier doesn't
-remove the extra spacing when it formats the code.
+written before the block. You can ignore that. It's there so that Prettier
+doesn't remove the extra spacing when it formats the code.
---
diff --git a/2-just-enough-javascript/guide-parsons.mp4 b/2-just-enough-javascript/guide-parsons.mp4
index 4b94d929..eb7d947f 100644
Binary files a/2-just-enough-javascript/guide-parsons.mp4 and b/2-just-enough-javascript/guide-parsons.mp4 differ
diff --git a/3-understanding-programs/2-reading-programs/code-reading-sessions/README.md b/3-understanding-programs/2-reading-programs/code-reading-sessions/README.md
index 39091e97..53d9f89b 100644
--- a/3-understanding-programs/2-reading-programs/code-reading-sessions/README.md
+++ b/3-understanding-programs/2-reading-programs/code-reading-sessions/README.md
@@ -7,10 +7,7 @@ divided them into basic and advanced. Advanced exercises can be used in clubs
that have been running for a while, and especially work well when doing a second
code club using the same code snippet.
-- [runner](https://runner.code-reading.org/): a slide show to help pace your
- code reading session
-- [annotate](https://annotate.code-reading.org/#/): a site for loading and
- annotating code on the web
+- [code reading resources](https://codereading.club/resources)
---
diff --git a/3-understanding-programs/6-logging-state/README.md b/3-understanding-programs/5-logging-state/README.md
similarity index 100%
rename from 3-understanding-programs/6-logging-state/README.md
rename to 3-understanding-programs/5-logging-state/README.md
diff --git a/3-understanding-programs/6-logging-state/examples/getting-an-orange.js b/3-understanding-programs/5-logging-state/examples/getting-an-orange.js
similarity index 100%
rename from 3-understanding-programs/6-logging-state/examples/getting-an-orange.js
rename to 3-understanding-programs/5-logging-state/examples/getting-an-orange.js
diff --git a/3-understanding-programs/6-logging-state/exercises/guessing-game/1.js b/3-understanding-programs/5-logging-state/exercises/guessing-game/1.js
similarity index 100%
rename from 3-understanding-programs/6-logging-state/exercises/guessing-game/1.js
rename to 3-understanding-programs/5-logging-state/exercises/guessing-game/1.js
diff --git a/3-understanding-programs/6-logging-state/exercises/guessing-game/2.js b/3-understanding-programs/5-logging-state/exercises/guessing-game/2.js
similarity index 100%
rename from 3-understanding-programs/6-logging-state/exercises/guessing-game/2.js
rename to 3-understanding-programs/5-logging-state/exercises/guessing-game/2.js
diff --git a/3-understanding-programs/6-logging-state/exercises/remove-duplicates/1.js b/3-understanding-programs/5-logging-state/exercises/remove-duplicates/1.js
similarity index 100%
rename from 3-understanding-programs/6-logging-state/exercises/remove-duplicates/1.js
rename to 3-understanding-programs/5-logging-state/exercises/remove-duplicates/1.js
diff --git a/3-understanding-programs/6-logging-state/exercises/remove-duplicates/2.js b/3-understanding-programs/5-logging-state/exercises/remove-duplicates/2.js
similarity index 100%
rename from 3-understanding-programs/6-logging-state/exercises/remove-duplicates/2.js
rename to 3-understanding-programs/5-logging-state/exercises/remove-duplicates/2.js
diff --git a/3-understanding-programs/6-logging-state/exercises/remove-duplicates/3.js b/3-understanding-programs/5-logging-state/exercises/remove-duplicates/3.js
similarity index 100%
rename from 3-understanding-programs/6-logging-state/exercises/remove-duplicates/3.js
rename to 3-understanding-programs/5-logging-state/exercises/remove-duplicates/3.js
diff --git a/3-understanding-programs/6-logging-state/exercises/repeat-or-remove/1.js b/3-understanding-programs/5-logging-state/exercises/repeat-or-remove/1.js
similarity index 100%
rename from 3-understanding-programs/6-logging-state/exercises/repeat-or-remove/1.js
rename to 3-understanding-programs/5-logging-state/exercises/repeat-or-remove/1.js
diff --git a/3-understanding-programs/6-logging-state/exercises/repeat-or-remove/2.js b/3-understanding-programs/5-logging-state/exercises/repeat-or-remove/2.js
similarity index 100%
rename from 3-understanding-programs/6-logging-state/exercises/repeat-or-remove/2.js
rename to 3-understanding-programs/5-logging-state/exercises/repeat-or-remove/2.js
diff --git a/3-understanding-programs/6-logging-state/exercises/repeat-or-remove/3.js b/3-understanding-programs/5-logging-state/exercises/repeat-or-remove/3.js
similarity index 100%
rename from 3-understanding-programs/6-logging-state/exercises/repeat-or-remove/3.js
rename to 3-understanding-programs/5-logging-state/exercises/repeat-or-remove/3.js
diff --git a/3-understanding-programs/6-logging-state/exercises/search/1.js b/3-understanding-programs/5-logging-state/exercises/search/1.js
similarity index 100%
rename from 3-understanding-programs/6-logging-state/exercises/search/1.js
rename to 3-understanding-programs/5-logging-state/exercises/search/1.js
diff --git a/3-understanding-programs/6-logging-state/exercises/search/2.js b/3-understanding-programs/5-logging-state/exercises/search/2.js
similarity index 100%
rename from 3-understanding-programs/6-logging-state/exercises/search/2.js
rename to 3-understanding-programs/5-logging-state/exercises/search/2.js
diff --git a/3-understanding-programs/6-logging-state/exercises/study.json b/3-understanding-programs/5-logging-state/exercises/study.json
similarity index 100%
rename from 3-understanding-programs/6-logging-state/exercises/study.json
rename to 3-understanding-programs/5-logging-state/exercises/study.json
diff --git a/3-understanding-programs/6-logging-state/guide.mp4 b/3-understanding-programs/5-logging-state/guide.mp4
similarity index 100%
rename from 3-understanding-programs/6-logging-state/guide.mp4
rename to 3-understanding-programs/5-logging-state/guide.mp4
diff --git a/3-understanding-programs/7-tracing-backwards/README.md b/3-understanding-programs/6-tracing-backwards/README.md
similarity index 100%
rename from 3-understanding-programs/7-tracing-backwards/README.md
rename to 3-understanding-programs/6-tracing-backwards/README.md
diff --git a/3-understanding-programs/7-tracing-backwards/exercises/frogify.js b/3-understanding-programs/6-tracing-backwards/exercises/frogify.js
similarity index 100%
rename from 3-understanding-programs/7-tracing-backwards/exercises/frogify.js
rename to 3-understanding-programs/6-tracing-backwards/exercises/frogify.js
diff --git a/3-understanding-programs/7-tracing-backwards/exercises/getting-an-orange.js b/3-understanding-programs/6-tracing-backwards/exercises/getting-an-orange.js
similarity index 100%
rename from 3-understanding-programs/7-tracing-backwards/exercises/getting-an-orange.js
rename to 3-understanding-programs/6-tracing-backwards/exercises/getting-an-orange.js
diff --git a/3-understanding-programs/7-tracing-backwards/exercises/guessing-game.js b/3-understanding-programs/6-tracing-backwards/exercises/guessing-game.js
similarity index 100%
rename from 3-understanding-programs/7-tracing-backwards/exercises/guessing-game.js
rename to 3-understanding-programs/6-tracing-backwards/exercises/guessing-game.js
diff --git a/3-understanding-programs/7-tracing-backwards/exercises/madlib.js b/3-understanding-programs/6-tracing-backwards/exercises/madlib.js
similarity index 100%
rename from 3-understanding-programs/7-tracing-backwards/exercises/madlib.js
rename to 3-understanding-programs/6-tracing-backwards/exercises/madlib.js
diff --git a/3-understanding-programs/7-tracing-backwards/exercises/remembery.js b/3-understanding-programs/6-tracing-backwards/exercises/remembery.js
similarity index 100%
rename from 3-understanding-programs/7-tracing-backwards/exercises/remembery.js
rename to 3-understanding-programs/6-tracing-backwards/exercises/remembery.js
diff --git a/3-understanding-programs/7-tracing-backwards/exercises/repeat-or-remove.js b/3-understanding-programs/6-tracing-backwards/exercises/repeat-or-remove.js
similarity index 100%
rename from 3-understanding-programs/7-tracing-backwards/exercises/repeat-or-remove.js
rename to 3-understanding-programs/6-tracing-backwards/exercises/repeat-or-remove.js
diff --git a/3-understanding-programs/7-tracing-backwards/exercises/search.js b/3-understanding-programs/6-tracing-backwards/exercises/search.js
similarity index 100%
rename from 3-understanding-programs/7-tracing-backwards/exercises/search.js
rename to 3-understanding-programs/6-tracing-backwards/exercises/search.js
diff --git a/3-understanding-programs/7-tracing-backwards/guide.mp4 b/3-understanding-programs/6-tracing-backwards/guide.mp4
similarity index 100%
rename from 3-understanding-programs/7-tracing-backwards/guide.mp4
rename to 3-understanding-programs/6-tracing-backwards/guide.mp4
diff --git a/3-understanding-programs/7-tracing-backwards/study.json b/3-understanding-programs/6-tracing-backwards/study.json
similarity index 100%
rename from 3-understanding-programs/7-tracing-backwards/study.json
rename to 3-understanding-programs/6-tracing-backwards/study.json
diff --git a/3-understanding-programs/8-naming-variables/README.md b/3-understanding-programs/7-naming-variables/README.md
similarity index 100%
rename from 3-understanding-programs/8-naming-variables/README.md
rename to 3-understanding-programs/7-naming-variables/README.md
diff --git a/3-understanding-programs/8-naming-variables/examples/frogify/0-unhelpful-names.js b/3-understanding-programs/7-naming-variables/examples/frogify/0-unhelpful-names.js
similarity index 100%
rename from 3-understanding-programs/8-naming-variables/examples/frogify/0-unhelpful-names.js
rename to 3-understanding-programs/7-naming-variables/examples/frogify/0-unhelpful-names.js
diff --git a/3-understanding-programs/8-naming-variables/examples/frogify/1-helpful-generic.js b/3-understanding-programs/7-naming-variables/examples/frogify/1-helpful-generic.js
similarity index 100%
rename from 3-understanding-programs/8-naming-variables/examples/frogify/1-helpful-generic.js
rename to 3-understanding-programs/7-naming-variables/examples/frogify/1-helpful-generic.js
diff --git a/3-understanding-programs/8-naming-variables/examples/frogify/2-helpful-specific.js b/3-understanding-programs/7-naming-variables/examples/frogify/2-helpful-specific.js
similarity index 100%
rename from 3-understanding-programs/8-naming-variables/examples/frogify/2-helpful-specific.js
rename to 3-understanding-programs/7-naming-variables/examples/frogify/2-helpful-specific.js
diff --git a/3-understanding-programs/8-naming-variables/exercises/animalopedia/0-unhelpful-names.js b/3-understanding-programs/7-naming-variables/exercises/animalopedia/0-unhelpful-names.js
similarity index 100%
rename from 3-understanding-programs/8-naming-variables/exercises/animalopedia/0-unhelpful-names.js
rename to 3-understanding-programs/7-naming-variables/exercises/animalopedia/0-unhelpful-names.js
diff --git a/3-understanding-programs/8-naming-variables/exercises/animalopedia/1-helpful-generic.js b/3-understanding-programs/7-naming-variables/exercises/animalopedia/1-helpful-generic.js
similarity index 100%
rename from 3-understanding-programs/8-naming-variables/exercises/animalopedia/1-helpful-generic.js
rename to 3-understanding-programs/7-naming-variables/exercises/animalopedia/1-helpful-generic.js
diff --git a/3-understanding-programs/8-naming-variables/exercises/animalopedia/2-helpful-specific.js b/3-understanding-programs/7-naming-variables/exercises/animalopedia/2-helpful-specific.js
similarity index 100%
rename from 3-understanding-programs/8-naming-variables/exercises/animalopedia/2-helpful-specific.js
rename to 3-understanding-programs/7-naming-variables/exercises/animalopedia/2-helpful-specific.js
diff --git a/3-understanding-programs/8-naming-variables/exercises/e-at-index-1/0-unhelpful-names.js b/3-understanding-programs/7-naming-variables/exercises/e-at-index-1/0-unhelpful-names.js
similarity index 100%
rename from 3-understanding-programs/8-naming-variables/exercises/e-at-index-1/0-unhelpful-names.js
rename to 3-understanding-programs/7-naming-variables/exercises/e-at-index-1/0-unhelpful-names.js
diff --git a/3-understanding-programs/8-naming-variables/exercises/e-at-index-1/1-helpful-generic.js b/3-understanding-programs/7-naming-variables/exercises/e-at-index-1/1-helpful-generic.js
similarity index 100%
rename from 3-understanding-programs/8-naming-variables/exercises/e-at-index-1/1-helpful-generic.js
rename to 3-understanding-programs/7-naming-variables/exercises/e-at-index-1/1-helpful-generic.js
diff --git a/3-understanding-programs/8-naming-variables/exercises/e-at-index-1/2-helpful-specific.js b/3-understanding-programs/7-naming-variables/exercises/e-at-index-1/2-helpful-specific.js
similarity index 100%
rename from 3-understanding-programs/8-naming-variables/exercises/e-at-index-1/2-helpful-specific.js
rename to 3-understanding-programs/7-naming-variables/exercises/e-at-index-1/2-helpful-specific.js
diff --git a/3-understanding-programs/8-naming-variables/exercises/e-at-index-2/0-unhelpful-names.js b/3-understanding-programs/7-naming-variables/exercises/e-at-index-2/0-unhelpful-names.js
similarity index 100%
rename from 3-understanding-programs/8-naming-variables/exercises/e-at-index-2/0-unhelpful-names.js
rename to 3-understanding-programs/7-naming-variables/exercises/e-at-index-2/0-unhelpful-names.js
diff --git a/3-understanding-programs/8-naming-variables/exercises/e-at-index-2/1-helpful-generic.js b/3-understanding-programs/7-naming-variables/exercises/e-at-index-2/1-helpful-generic.js
similarity index 100%
rename from 3-understanding-programs/8-naming-variables/exercises/e-at-index-2/1-helpful-generic.js
rename to 3-understanding-programs/7-naming-variables/exercises/e-at-index-2/1-helpful-generic.js
diff --git a/3-understanding-programs/8-naming-variables/exercises/e-at-index-2/2-helpful-specific.js b/3-understanding-programs/7-naming-variables/exercises/e-at-index-2/2-helpful-specific.js
similarity index 100%
rename from 3-understanding-programs/8-naming-variables/exercises/e-at-index-2/2-helpful-specific.js
rename to 3-understanding-programs/7-naming-variables/exercises/e-at-index-2/2-helpful-specific.js
diff --git a/3-understanding-programs/8-naming-variables/exercises/every/0-unhelpful-names.js b/3-understanding-programs/7-naming-variables/exercises/every/0-unhelpful-names.js
similarity index 100%
rename from 3-understanding-programs/8-naming-variables/exercises/every/0-unhelpful-names.js
rename to 3-understanding-programs/7-naming-variables/exercises/every/0-unhelpful-names.js
diff --git a/3-understanding-programs/8-naming-variables/exercises/every/1-helpful-generic.js b/3-understanding-programs/7-naming-variables/exercises/every/1-helpful-generic.js
similarity index 100%
rename from 3-understanding-programs/8-naming-variables/exercises/every/1-helpful-generic.js
rename to 3-understanding-programs/7-naming-variables/exercises/every/1-helpful-generic.js
diff --git a/3-understanding-programs/8-naming-variables/exercises/every/2-helpful-specific.js b/3-understanding-programs/7-naming-variables/exercises/every/2-helpful-specific.js
similarity index 100%
rename from 3-understanding-programs/8-naming-variables/exercises/every/2-helpful-specific.js
rename to 3-understanding-programs/7-naming-variables/exercises/every/2-helpful-specific.js
diff --git a/3-understanding-programs/8-naming-variables/exercises/filter/0-unhelpful-names.js b/3-understanding-programs/7-naming-variables/exercises/filter/0-unhelpful-names.js
similarity index 100%
rename from 3-understanding-programs/8-naming-variables/exercises/filter/0-unhelpful-names.js
rename to 3-understanding-programs/7-naming-variables/exercises/filter/0-unhelpful-names.js
diff --git a/3-understanding-programs/8-naming-variables/exercises/filter/1-helpful-generic.js b/3-understanding-programs/7-naming-variables/exercises/filter/1-helpful-generic.js
similarity index 100%
rename from 3-understanding-programs/8-naming-variables/exercises/filter/1-helpful-generic.js
rename to 3-understanding-programs/7-naming-variables/exercises/filter/1-helpful-generic.js
diff --git a/3-understanding-programs/8-naming-variables/exercises/filter/2-helpful-specific.js b/3-understanding-programs/7-naming-variables/exercises/filter/2-helpful-specific.js
similarity index 100%
rename from 3-understanding-programs/8-naming-variables/exercises/filter/2-helpful-specific.js
rename to 3-understanding-programs/7-naming-variables/exercises/filter/2-helpful-specific.js
diff --git a/3-understanding-programs/8-naming-variables/exercises/map/0-unhelpful-names.js b/3-understanding-programs/7-naming-variables/exercises/map/0-unhelpful-names.js
similarity index 100%
rename from 3-understanding-programs/8-naming-variables/exercises/map/0-unhelpful-names.js
rename to 3-understanding-programs/7-naming-variables/exercises/map/0-unhelpful-names.js
diff --git a/3-understanding-programs/8-naming-variables/exercises/map/1-helpful-generic.js b/3-understanding-programs/7-naming-variables/exercises/map/1-helpful-generic.js
similarity index 100%
rename from 3-understanding-programs/8-naming-variables/exercises/map/1-helpful-generic.js
rename to 3-understanding-programs/7-naming-variables/exercises/map/1-helpful-generic.js
diff --git a/3-understanding-programs/8-naming-variables/exercises/map/2-helpful-specific.js b/3-understanding-programs/7-naming-variables/exercises/map/2-helpful-specific.js
similarity index 100%
rename from 3-understanding-programs/8-naming-variables/exercises/map/2-helpful-specific.js
rename to 3-understanding-programs/7-naming-variables/exercises/map/2-helpful-specific.js
diff --git a/3-understanding-programs/8-naming-variables/exercises/no-duplicates/0-unhelpful-names.js b/3-understanding-programs/7-naming-variables/exercises/no-duplicates/0-unhelpful-names.js
similarity index 100%
rename from 3-understanding-programs/8-naming-variables/exercises/no-duplicates/0-unhelpful-names.js
rename to 3-understanding-programs/7-naming-variables/exercises/no-duplicates/0-unhelpful-names.js
diff --git a/3-understanding-programs/8-naming-variables/exercises/no-duplicates/1-helpful-generic.js b/3-understanding-programs/7-naming-variables/exercises/no-duplicates/1-helpful-generic.js
similarity index 100%
rename from 3-understanding-programs/8-naming-variables/exercises/no-duplicates/1-helpful-generic.js
rename to 3-understanding-programs/7-naming-variables/exercises/no-duplicates/1-helpful-generic.js
diff --git a/3-understanding-programs/8-naming-variables/exercises/no-duplicates/2-helpful-specific.js b/3-understanding-programs/7-naming-variables/exercises/no-duplicates/2-helpful-specific.js
similarity index 100%
rename from 3-understanding-programs/8-naming-variables/exercises/no-duplicates/2-helpful-specific.js
rename to 3-understanding-programs/7-naming-variables/exercises/no-duplicates/2-helpful-specific.js
diff --git a/3-understanding-programs/8-naming-variables/exercises/remembery/0-unhelpful-names.js b/3-understanding-programs/7-naming-variables/exercises/remembery/0-unhelpful-names.js
similarity index 100%
rename from 3-understanding-programs/8-naming-variables/exercises/remembery/0-unhelpful-names.js
rename to 3-understanding-programs/7-naming-variables/exercises/remembery/0-unhelpful-names.js
diff --git a/3-understanding-programs/8-naming-variables/exercises/remembery/1-helpful-generic.js b/3-understanding-programs/7-naming-variables/exercises/remembery/1-helpful-generic.js
similarity index 100%
rename from 3-understanding-programs/8-naming-variables/exercises/remembery/1-helpful-generic.js
rename to 3-understanding-programs/7-naming-variables/exercises/remembery/1-helpful-generic.js
diff --git a/3-understanding-programs/8-naming-variables/exercises/remembery/2-helpful-specific.js b/3-understanding-programs/7-naming-variables/exercises/remembery/2-helpful-specific.js
similarity index 100%
rename from 3-understanding-programs/8-naming-variables/exercises/remembery/2-helpful-specific.js
rename to 3-understanding-programs/7-naming-variables/exercises/remembery/2-helpful-specific.js
diff --git a/3-understanding-programs/8-naming-variables/exercises/some/0-unhelpful-names.js b/3-understanding-programs/7-naming-variables/exercises/some/0-unhelpful-names.js
similarity index 100%
rename from 3-understanding-programs/8-naming-variables/exercises/some/0-unhelpful-names.js
rename to 3-understanding-programs/7-naming-variables/exercises/some/0-unhelpful-names.js
diff --git a/3-understanding-programs/8-naming-variables/exercises/some/1-helpful-generic.js b/3-understanding-programs/7-naming-variables/exercises/some/1-helpful-generic.js
similarity index 100%
rename from 3-understanding-programs/8-naming-variables/exercises/some/1-helpful-generic.js
rename to 3-understanding-programs/7-naming-variables/exercises/some/1-helpful-generic.js
diff --git a/3-understanding-programs/8-naming-variables/exercises/some/2-helpful-specific.js b/3-understanding-programs/7-naming-variables/exercises/some/2-helpful-specific.js
similarity index 100%
rename from 3-understanding-programs/8-naming-variables/exercises/some/2-helpful-specific.js
rename to 3-understanding-programs/7-naming-variables/exercises/some/2-helpful-specific.js
diff --git a/3-understanding-programs/8-naming-variables/exercises/sort-by-length/0-unhelpful-names.js b/3-understanding-programs/7-naming-variables/exercises/sort-by-length/0-unhelpful-names.js
similarity index 100%
rename from 3-understanding-programs/8-naming-variables/exercises/sort-by-length/0-unhelpful-names.js
rename to 3-understanding-programs/7-naming-variables/exercises/sort-by-length/0-unhelpful-names.js
diff --git a/3-understanding-programs/8-naming-variables/exercises/sort-by-length/1-helpful-generic.js b/3-understanding-programs/7-naming-variables/exercises/sort-by-length/1-helpful-generic.js
similarity index 100%
rename from 3-understanding-programs/8-naming-variables/exercises/sort-by-length/1-helpful-generic.js
rename to 3-understanding-programs/7-naming-variables/exercises/sort-by-length/1-helpful-generic.js
diff --git a/3-understanding-programs/8-naming-variables/exercises/sort-by-length/2-helpful-specific.js b/3-understanding-programs/7-naming-variables/exercises/sort-by-length/2-helpful-specific.js
similarity index 100%
rename from 3-understanding-programs/8-naming-variables/exercises/sort-by-length/2-helpful-specific.js
rename to 3-understanding-programs/7-naming-variables/exercises/sort-by-length/2-helpful-specific.js
diff --git a/3-understanding-programs/8-naming-variables/guide.mp4 b/3-understanding-programs/7-naming-variables/guide.mp4
similarity index 100%
rename from 3-understanding-programs/8-naming-variables/guide.mp4
rename to 3-understanding-programs/7-naming-variables/guide.mp4
diff --git a/3-understanding-programs/8-naming-variables/study.json b/3-understanding-programs/7-naming-variables/study.json
similarity index 100%
rename from 3-understanding-programs/8-naming-variables/study.json
rename to 3-understanding-programs/7-naming-variables/study.json
diff --git a/3-understanding-programs/9-code-review/README.md b/3-understanding-programs/8-code-review/README.md
similarity index 100%
rename from 3-understanding-programs/9-code-review/README.md
rename to 3-understanding-programs/8-code-review/README.md
diff --git a/3-understanding-programs/9-code-review/examples/no-repetitions/program.js b/3-understanding-programs/8-code-review/examples/no-repetitions/program.js
similarity index 100%
rename from 3-understanding-programs/9-code-review/examples/no-repetitions/program.js
rename to 3-understanding-programs/8-code-review/examples/no-repetitions/program.js
diff --git a/3-understanding-programs/9-code-review/examples/no-repetitions/review.js b/3-understanding-programs/8-code-review/examples/no-repetitions/review.js
similarity index 100%
rename from 3-understanding-programs/9-code-review/examples/no-repetitions/review.js
rename to 3-understanding-programs/8-code-review/examples/no-repetitions/review.js
diff --git a/3-understanding-programs/9-code-review/exercises/1-is-excited/program.js b/3-understanding-programs/8-code-review/exercises/1-is-excited/program.js
similarity index 100%
rename from 3-understanding-programs/9-code-review/exercises/1-is-excited/program.js
rename to 3-understanding-programs/8-code-review/exercises/1-is-excited/program.js
diff --git a/3-understanding-programs/9-code-review/exercises/1-is-excited/review.js b/3-understanding-programs/8-code-review/exercises/1-is-excited/review.js
similarity index 100%
rename from 3-understanding-programs/9-code-review/exercises/1-is-excited/review.js
rename to 3-understanding-programs/8-code-review/exercises/1-is-excited/review.js
diff --git a/3-understanding-programs/9-code-review/exercises/2-frogopedia/program.js b/3-understanding-programs/8-code-review/exercises/2-frogopedia/program.js
similarity index 100%
rename from 3-understanding-programs/9-code-review/exercises/2-frogopedia/program.js
rename to 3-understanding-programs/8-code-review/exercises/2-frogopedia/program.js
diff --git a/3-understanding-programs/9-code-review/exercises/2-frogopedia/review.js b/3-understanding-programs/8-code-review/exercises/2-frogopedia/review.js
similarity index 100%
rename from 3-understanding-programs/9-code-review/exercises/2-frogopedia/review.js
rename to 3-understanding-programs/8-code-review/exercises/2-frogopedia/review.js
diff --git a/3-understanding-programs/9-code-review/exercises/3-has-a-vowel/program.js b/3-understanding-programs/8-code-review/exercises/3-has-a-vowel/program.js
similarity index 100%
rename from 3-understanding-programs/9-code-review/exercises/3-has-a-vowel/program.js
rename to 3-understanding-programs/8-code-review/exercises/3-has-a-vowel/program.js
diff --git a/3-understanding-programs/9-code-review/exercises/3-has-a-vowel/review.js b/3-understanding-programs/8-code-review/exercises/3-has-a-vowel/review.js
similarity index 100%
rename from 3-understanding-programs/9-code-review/exercises/3-has-a-vowel/review.js
rename to 3-understanding-programs/8-code-review/exercises/3-has-a-vowel/review.js
diff --git a/3-understanding-programs/9-code-review/study.json b/3-understanding-programs/8-code-review/study.json
similarity index 100%
rename from 3-understanding-programs/9-code-review/study.json
rename to 3-understanding-programs/8-code-review/study.json
diff --git a/4-developing-programs/0-pair-programming/README.md b/4-developing-programs/0-pair-programming/README.md
index bb467f35..89ea1e8d 100644
--- a/4-developing-programs/0-pair-programming/README.md
+++ b/4-developing-programs/0-pair-programming/README.md
@@ -17,19 +17,19 @@ takes turns in these two roles:
## Practice
-> [puzzlecode.org](https://puzzlecode.org/),
-> [wiki guide](https://github.com/mikegagnon/puzzlecode/wiki/)
+To practice pair programming there are 4 small programs you can develop in
+pairs. You have already studied these programs in Just Enough JavaScript, so you
+should be able to focus on your pair programming role instead of how to solve
+the problem.
-[PuzzleCode](https://puzzlecode.org/) is a great site for learning to pair
-program, the website has simple coding challenges with a minimal programming
-language that you can figure out in a minute. Because the language is simple and
-there is no setup required, you can get right into Pair Programming without
-getting caught up in details.
+In pair programming it's good to switch roles regularly. Try switching roles for
+each user story in the spec. This strategy will accomplish two things:
-After you've spent some time practicing both roles (_Navigator & Driver_) on
-PuzzleCode you will be ready for Pair Programming with JavaScript.
+1. You will both have a chance to practice each role.
+2. You will experience _incremental development_ - writing a program one step at
+ a time, where each step adds user-facing behavior.
-Enjoy!
+Happy coding!
---
diff --git a/4-developing-programs/0-pair-programming/exercises/exactly-ten.js b/4-developing-programs/0-pair-programming/exercises/exactly-ten.js
new file mode 100644
index 00000000..2139cb79
--- /dev/null
+++ b/4-developing-programs/0-pair-programming/exercises/exactly-ten.js
@@ -0,0 +1,20 @@
+// #todo
+
+'use strict';
+
+/*
+ a user can provide input that is 10 characters long
+ - given they cancel, a message is displayed and they are prompted again
+ - given the input is too short, they are told how much too short and prompted again
+ - given the input is too long, they are told how much too long and prompted again
+ - given the input is 10 characters, the loop will exit and the input is alerted
+
+ test cases:
+ invalid input:
+ (no test cases! the loop will not exit so there will be no output to test)
+ input of 10 characters
+ 'javascript' -> 'javascript'
+ '0123456789' -> '0123456789'
+ 'a b c d e ' -> 'a b c d e '
+
+*/
diff --git a/4-developing-programs/0-pair-programming/exercises/first-and-last.js b/4-developing-programs/0-pair-programming/exercises/first-and-last.js
new file mode 100644
index 00000000..0741db9f
--- /dev/null
+++ b/4-developing-programs/0-pair-programming/exercises/first-and-last.js
@@ -0,0 +1,27 @@
+// #todo
+
+'use strict';
+
+/*
+ a user can provide input that starts with a capital letter and ends with a period
+ - given the user cancels, they will be prompted again
+ - given the input is shorter than two characters, they will be prompted again
+ - given their input does not begin with a capital letter, they will be prompted again
+ - given their input does not end with a period, they will be prompted again
+ - given their input is valid, the first letter will be lower-cased and the period removed
+ - given their input is valid, the loop will exit
+
+ test cases:
+ invalid input:
+ (no test cases! the loop will not exit so there will be no output to test)
+ two-character input:
+ 'A.' -> 'a'
+ 'X.' -> 'x'
+ longer words:
+ 'Hello.' -> 'hello'
+ 'JavaScript!.' -> 'javaScript!'
+ with some spaces:
+ 'Hello World.' -> 'hello World'
+ 'Hack your future.' -> 'hack your future'
+
+*/
diff --git a/4-developing-programs/0-pair-programming/exercises/one-at-a-time.js b/4-developing-programs/0-pair-programming/exercises/one-at-a-time.js
new file mode 100644
index 00000000..8dce1aa0
--- /dev/null
+++ b/4-developing-programs/0-pair-programming/exercises/one-at-a-time.js
@@ -0,0 +1,17 @@
+// #todo
+
+'use strict';
+
+/*
+ a user can add single characters to a string until they confirm they have finished
+ - given they cancel, they see a helpful message and are prompted again
+ - given the input is empty, they see a helpful message and are prompted again
+ - given the input is longer than 1 character, they see a helpful message and are prompted again
+ - given the input is a single character, the input is appended to the output
+ - given the user confirms the output is complete, the loop will end and the output is displayed
+
+ no test cases!
+ this program cannot be tested by input/output pairs
+ because the user can decide when to stop there are no certain test cases
+
+*/
diff --git a/4-developing-programs/0-pair-programming/exercises/only-letters.js b/4-developing-programs/0-pair-programming/exercises/only-letters.js
new file mode 100644
index 00000000..05bf156f
--- /dev/null
+++ b/4-developing-programs/0-pair-programming/exercises/only-letters.js
@@ -0,0 +1,20 @@
+// #todo
+
+'use strict';
+
+/*
+ a user can provide input that contains only uppercase and lowercase letters
+ - given the user cancels, they will be prompted again
+ - given the input is empty, they will be prompted again
+ - given their input contains anything that is not a letter, they will be prompted again
+ - given their input is valid, the loop will exit and their input is alerted
+
+ test cases:
+ invalid input:
+ (no test cases! the loop will not exit so there will be no output to test)
+ input with only letters:
+ 'abcdABCD' -> 'abcdABCD'
+ 'JAVAscript' -> 'JAVAscript'
+ 'hi' -> 'hi'
+
+*/
diff --git a/4-developing-programs/6-legacy-code/README.md b/4-developing-programs/6-legacy-code/README.md
new file mode 100644
index 00000000..0ae0c423
--- /dev/null
+++ b/4-developing-programs/6-legacy-code/README.md
@@ -0,0 +1,45 @@
+# Legacy Code
+
+**Legacy Code** is software that was written in the past that is still used
+today. Often legacy code was written by someone who no longer works for a
+company, or was even written in a language that current developers don't know
+very well - or at all!
+
+A classic example of legacy code is
+[COBOL](https://stackoverflow.blog/2020/04/20/brush-up-your-cobol-why-is-a-60-year-old-language-suddenly-in-demand/)
+in
+[Banking](https://www.fintechfutures.com/2021/11/legacy-systems-in-banking-the-major-barrier-for-digital-transformation/),
+but not all legacy code is so extreme. Legacy code might also be written 6
+months ago but still be hard to understand because it was poorly documented,
+poorly written, or is simply 1000 lines of code that you have 1 day to study
+before shipping a new feature.
+
+## Your Challenge
+
+In these exercises you will be given programs that work, but are poorly or
+confusingly written. Some of the programs may contain JS language features you
+haven't learned yet, that's part of the challenge! You don't need to master
+those features or use them in your refactor, but will need to study them enough
+to understand what they are doing in the legacy code. You might even find that
+you can refactor the program without understanding all of it! So don't loose
+toooo much time on each detail, focus on the big picture and refactor the
+program so _you_ understand it.
+
+Your task is to rewrite the programs in `/exercises` so they ...
+
+1. ... are easier for a developer to understand.
+2. ... are more intuitive for the user.
+3. ... implement simpler computer instructions.
+
+You don't need to worry about efficiency, optimizing programs for speed is more
+advanced skill you can learn later in your development life when you start
+building programs that are noticeably slow.
+
+> PS. You have already studied programs with similar behavior to these
+> exercises. Challenge yourself to complete these exercises without looking back
+> to past programs. Try to find new ways of writing these programs that fit your
+> style.
+
+## References
+
+- [When understanding means rewriting](https://blog.codinghorror.com/when-understanding-means-rewriting/)
diff --git a/3-understanding-programs/z-challenge/1-developer-experience.md b/4-developing-programs/6-legacy-code/examples/1-developer-experience.md
similarity index 100%
rename from 3-understanding-programs/z-challenge/1-developer-experience.md
rename to 4-developing-programs/6-legacy-code/examples/1-developer-experience.md
diff --git a/3-understanding-programs/z-challenge/2-user-experience.md b/4-developing-programs/6-legacy-code/examples/2-user-experience.md
similarity index 100%
rename from 3-understanding-programs/z-challenge/2-user-experience.md
rename to 4-developing-programs/6-legacy-code/examples/2-user-experience.md
diff --git a/3-understanding-programs/z-challenge/3-computer-instructions.md b/4-developing-programs/6-legacy-code/examples/3-computer-instructions.md
similarity index 100%
rename from 3-understanding-programs/z-challenge/3-computer-instructions.md
rename to 4-developing-programs/6-legacy-code/examples/3-computer-instructions.md
diff --git a/3-understanding-programs/z-challenge/README.md b/4-developing-programs/6-legacy-code/examples/README.md
similarity index 98%
rename from 3-understanding-programs/z-challenge/README.md
rename to 4-developing-programs/6-legacy-code/examples/README.md
index 923f911b..616ec50a 100644
--- a/3-understanding-programs/z-challenge/README.md
+++ b/4-developing-programs/6-legacy-code/examples/README.md
@@ -1,4 +1,4 @@
-# Challenge: Many Versions of the Same Program
+# Legacy Code: Examples
You should think of source code _first_ as a letter to the next developer,
_second_ as a user experience, and _third_ as instructions for the computer.
diff --git a/4-developing-programs/6-legacy-code/exercises/frogify/legacy.js b/4-developing-programs/6-legacy-code/exercises/frogify/legacy.js
new file mode 100644
index 00000000..92de08c4
--- /dev/null
+++ b/4-developing-programs/6-legacy-code/exercises/frogify/legacy.js
@@ -0,0 +1,43 @@
+/* Analyze the legacy code.
+
+ Developer:
+
+ - Formatting:
+ - Variable Names:
+ - Comments:
+ - Logs:
+
+ User:
+
+ - Clear Instructions:
+ - Helpful Feedback:
+ - Consistency:
+ - Tone of Voice:
+
+ Computer:
+
+ - Variables and Types:
+ - Data Input:
+ - Control Flow:
+ - Operations:
+
+*/
+
+tbf = null
+while (tbf == null)
+ tbf = prompt(
+ 'frogify this.\n' +
+ '"f" -> "frog"\n' +
+ '"F" -> "FROG"'
+ )
+
+fd = ''
+for (i = 0; i < tbf.length; i++) {
+ ch = tbf[i]
+
+ if (ch == 'f') fd = fd + 'frog'
+ else if (ch == 'F') fd = fd + 'FROG'
+ else fd = fd + ch
+}
+
+alert(fd)
diff --git a/4-developing-programs/6-legacy-code/exercises/frogify/refactor.js b/4-developing-programs/6-legacy-code/exercises/frogify/refactor.js
new file mode 100644
index 00000000..cd0da518
--- /dev/null
+++ b/4-developing-programs/6-legacy-code/exercises/frogify/refactor.js
@@ -0,0 +1,26 @@
+'use strict';
+
+/* Describe your refactor.
+
+ Developer:
+
+ - Formatting:
+ - Variable Names:
+ - Comments:
+ - Logs:
+
+ User:
+
+ - Clear Instructions:
+ - Helpful Feedback:
+ - Consistency:
+ - Tone of Voice:
+
+ Computer:
+
+ - Variables and Types:
+ - Data Input:
+ - Control Flow:
+ - Operations:
+
+*/
diff --git a/4-developing-programs/6-legacy-code/exercises/getting-an-orange/legacy.js b/4-developing-programs/6-legacy-code/exercises/getting-an-orange/legacy.js
new file mode 100644
index 00000000..f359761b
--- /dev/null
+++ b/4-developing-programs/6-legacy-code/exercises/getting-an-orange/legacy.js
@@ -0,0 +1,51 @@
+'use strict';
+
+/* Analyze the legacy code.
+
+ Developer:
+
+ - Formatting:
+ - Variable Names:
+ - Comments:
+ - Logs:
+
+ User:
+
+ - Clear Instructions:
+ - Helpful Feedback:
+ - Consistency:
+ - Tone of Voice:
+
+ Computer:
+
+ - Variables and Types:
+ - Data orange_maybe:
+ - Control Flow:
+ - Operations:
+
+*/
+
+
+let orange = '';
+
+for (;orange === '';)
+{ var orange_maybe = prompt('orange me!;')
+
+ if (orange_maybe === null) null
+ else if (orange_maybe.toLowerCase() === 'orange')
+ { orange = orange_maybe; } }
+
+
+let size = '';
+
+if (orange === 'orange')
+{ size += 'small;' }
+
+if (orange === 'ORANGE')
+{ size += 'big;' }
+
+if (orange !== 'orange' && orange !== 'ORANGE')
+{ size = 'small/big;' }
+
+
+alert(orange + ' is a ' + size + ' orange;')
diff --git a/4-developing-programs/6-legacy-code/exercises/getting-an-orange/refactor.js b/4-developing-programs/6-legacy-code/exercises/getting-an-orange/refactor.js
new file mode 100644
index 00000000..cd0da518
--- /dev/null
+++ b/4-developing-programs/6-legacy-code/exercises/getting-an-orange/refactor.js
@@ -0,0 +1,26 @@
+'use strict';
+
+/* Describe your refactor.
+
+ Developer:
+
+ - Formatting:
+ - Variable Names:
+ - Comments:
+ - Logs:
+
+ User:
+
+ - Clear Instructions:
+ - Helpful Feedback:
+ - Consistency:
+ - Tone of Voice:
+
+ Computer:
+
+ - Variables and Types:
+ - Data Input:
+ - Control Flow:
+ - Operations:
+
+*/
diff --git a/4-developing-programs/6-legacy-code/exercises/guessing-game/legacy.js b/4-developing-programs/6-legacy-code/exercises/guessing-game/legacy.js
new file mode 100644
index 00000000..b1fa521a
--- /dev/null
+++ b/4-developing-programs/6-legacy-code/exercises/guessing-game/legacy.js
@@ -0,0 +1,116 @@
+/* Analyze the legacy code.
+
+ Developer:
+
+ - Formatting:
+ - Variable Names:
+ - Comments:
+ - Logs:
+
+ User:
+
+ - Clear Instructions:
+ - Helpful Feedback:
+ - Consistency:
+ - Tone of Voice:
+
+ Computer:
+
+ - Variables and Types:
+ - Data Input:
+ - Control Flow:
+ - Operations:
+
+*/
+
+const user = {
+ option: prompt(`Welcome!
+
+"play": begin the game
+"-h": read the instructions
+escape: exit the game`),
+};
+
+with (user) {
+ if (option === '-h') {
+ alert(
+ `This is a two player game.
+
+Player 1: enters a secret number, and then a clue.
+Player 2: is shown the clue and must guess the number.
+
+you can end the game at any point by canceling`,
+ );
+ } else if (option === 'play') {
+ const game = {
+ phrase: '',
+ clue: '',
+ guess: '',
+ winner: 'no one',
+ };
+
+ alert('Player 2: look away! hide your eyes!');
+
+ with (game) {
+ while (phrase === '') {
+ phrase = prompt('Player 1: enter a secret phrase');
+ }
+
+ if (phrase === null) {
+ alert('good bye');
+ } else {
+ while (clue === '') {
+ clue = prompt('Player 1: enter a clue to help guess your number');
+ }
+
+ if (clue === null) {
+ alert('good bye');
+ } else {
+ alert(`Player 1: you entered ...
+
+- number: ${phrase}
+- clue: "${clue}"`);
+
+ alert('now go get Player 2');
+
+ while (guess === '') {
+ guess = prompt(`Player 2, Here is your clue:
+
+- "${clue}"
+
+what do you think the secret phrase is?`);
+ }
+
+ if (guess === null) {
+ alert('good bye');
+ } else if (guess === phrase) {
+ winner = 'Player 2';
+ alert('Congrats, you were right!');
+ } else {
+ winner = 'Player 1';
+
+ const revealTheSecret = confirm(`Nope, not correct.
+
+do you want to know the secret?`);
+
+ if (revealTheSecret) {
+ alert(`The secret was:
+
+- ${phrase}
+
+thanks for playing, see ya`);
+ } else {
+ alert('better luck next time');
+ }
+ }
+ }
+ }
+ }
+
+ alert('game over. the winner is: ' + winner);
+ } else if (option === null) {
+ alert('good bye');
+ } else {
+ alert('unknown command: "' + option + '"');
+ }
+}
diff --git a/4-developing-programs/6-legacy-code/exercises/guessing-game/refactor.js b/4-developing-programs/6-legacy-code/exercises/guessing-game/refactor.js
new file mode 100644
index 00000000..cd0da518
--- /dev/null
+++ b/4-developing-programs/6-legacy-code/exercises/guessing-game/refactor.js
@@ -0,0 +1,26 @@
+'use strict';
+
+/* Describe your refactor.
+
+ Developer:
+
+ - Formatting:
+ - Variable Names:
+ - Comments:
+ - Logs:
+
+ User:
+
+ - Clear Instructions:
+ - Helpful Feedback:
+ - Consistency:
+ - Tone of Voice:
+
+ Computer:
+
+ - Variables and Types:
+ - Data Input:
+ - Control Flow:
+ - Operations:
+
+*/
diff --git a/4-developing-programs/6-legacy-code/exercises/madlib/legacy.js b/4-developing-programs/6-legacy-code/exercises/madlib/legacy.js
new file mode 100644
index 00000000..544b7581
--- /dev/null
+++ b/4-developing-programs/6-legacy-code/exercises/madlib/legacy.js
@@ -0,0 +1,43 @@
+'use strict';
+
+/* Analyze the legacy code.
+
+ Developer:
+
+ - Formatting:
+ - Variable Names:
+ - Comments:
+ - Logs:
+
+ User:
+
+ - Clear Instructions:
+ - Helpful Feedback:
+ - Consistency:
+ - Tone of Voice:
+
+ Computer:
+
+ - Variables and Types:
+ - Data Input:
+ - Control Flow:
+ - Operations:
+
+*/
+
+
+alert(renderMadlib(['noun', 'adjective', 'verb'], madlib));
+
+function renderMadlib(wordTypes = [], madlib) {
+ const words = [];
+ for (const wordType of wordTypes) {
+ let nextWord = null;
+ while (nextWord === null) nextWord = prompt(`enter an ${wordType}`);
+ words.push(nextWord);
+ }
+ return madlib(...words);
+}
+
+function madlib(noun = '', adjective = '', verb = '') {
+ return `The ${adjective} ${noun} likes to ${verb}.`;
+}
diff --git a/4-developing-programs/6-legacy-code/exercises/madlib/refactor.js b/4-developing-programs/6-legacy-code/exercises/madlib/refactor.js
new file mode 100644
index 00000000..cd0da518
--- /dev/null
+++ b/4-developing-programs/6-legacy-code/exercises/madlib/refactor.js
@@ -0,0 +1,26 @@
+'use strict';
+
+/* Describe your refactor.
+
+ Developer:
+
+ - Formatting:
+ - Variable Names:
+ - Comments:
+ - Logs:
+
+ User:
+
+ - Clear Instructions:
+ - Helpful Feedback:
+ - Consistency:
+ - Tone of Voice:
+
+ Computer:
+
+ - Variables and Types:
+ - Data Input:
+ - Control Flow:
+ - Operations:
+
+*/
diff --git a/4-developing-programs/6-legacy-code/exercises/remembery/legacy.js b/4-developing-programs/6-legacy-code/exercises/remembery/legacy.js
new file mode 100644
index 00000000..1f0be11a
--- /dev/null
+++ b/4-developing-programs/6-legacy-code/exercises/remembery/legacy.js
@@ -0,0 +1,64 @@
+'use strict';
+
+/* Analyze the legacy code.
+
+ Developer:
+
+ - Formatting:
+ - Variable Names:
+ - Comments:
+ - Logs:
+
+ User:
+
+ - Clear Instructions:
+ - Helpful Feedback:
+ - Consistency:
+ - Tone of Voice:
+
+ Computer:
+
+ - Variables and Types:
+ - Data Input:
+ - Control Flow:
+ - Operations:
+
+*/
+
+
+alert(`Guess 3 phrases in 3 tries
+
+ Player 1:
+ enter three phrases
+
+ Player 2:
+ see the three phrases in order
+ then enter them back in order
+ you will get one point for each correct guess
+`);
+
+alert('Player 2: go hide');
+
+let one = prompt('Player 1, enter your first phrase:'),
+ two = prompt('Player 1, enter your second phrase:'),
+ three = prompt('Player 1, enter your third phrase:');
+
+alert('Player 2, get back here');
+
+alert(`Player 2, remember these:\n1. "${one}"\n2. "${two}"\n3. "${three}"`,);
+
+let points = 3;
+
+if (prompt('Player 2, guess 1:') !== one) {
+ points = points - 1;
+}
+if (prompt('Player 2, guess 2:') !== two) {
+ points = points - 1;
+}
+if (prompt('Player 2, guess 3:') !== three) {
+ points = points - 1;
+}
+
+alert("player 1's score: " + (3 - points));
+
+alert("player 2's score: " + points);
diff --git a/4-developing-programs/6-legacy-code/exercises/remembery/refactor.js b/4-developing-programs/6-legacy-code/exercises/remembery/refactor.js
new file mode 100644
index 00000000..cd0da518
--- /dev/null
+++ b/4-developing-programs/6-legacy-code/exercises/remembery/refactor.js
@@ -0,0 +1,26 @@
+'use strict';
+
+/* Describe your refactor.
+
+ Developer:
+
+ - Formatting:
+ - Variable Names:
+ - Comments:
+ - Logs:
+
+ User:
+
+ - Clear Instructions:
+ - Helpful Feedback:
+ - Consistency:
+ - Tone of Voice:
+
+ Computer:
+
+ - Variables and Types:
+ - Data Input:
+ - Control Flow:
+ - Operations:
+
+*/
diff --git a/4-developing-programs/6-from-spec/0-stepped-examples/study.json b/4-developing-programs/6-legacy-code/exercises/study.json
similarity index 100%
rename from 4-developing-programs/6-from-spec/0-stepped-examples/study.json
rename to 4-developing-programs/6-legacy-code/exercises/study.json
diff --git a/4-developing-programs/6-from-spec/0-stepped-examples/1-be-excited/0-the-behavior.js b/4-developing-programs/7-from-spec/0-stepped-examples/1-be-excited/0-the-behavior.js
similarity index 100%
rename from 4-developing-programs/6-from-spec/0-stepped-examples/1-be-excited/0-the-behavior.js
rename to 4-developing-programs/7-from-spec/0-stepped-examples/1-be-excited/0-the-behavior.js
diff --git a/4-developing-programs/6-from-spec/0-stepped-examples/1-be-excited/1-plan-goals.js b/4-developing-programs/7-from-spec/0-stepped-examples/1-be-excited/1-plan-goals.js
similarity index 100%
rename from 4-developing-programs/6-from-spec/0-stepped-examples/1-be-excited/1-plan-goals.js
rename to 4-developing-programs/7-from-spec/0-stepped-examples/1-be-excited/1-plan-goals.js
diff --git a/4-developing-programs/6-from-spec/0-stepped-examples/1-be-excited/2-english-solution.js b/4-developing-programs/7-from-spec/0-stepped-examples/1-be-excited/2-english-solution.js
similarity index 100%
rename from 4-developing-programs/6-from-spec/0-stepped-examples/1-be-excited/2-english-solution.js
rename to 4-developing-programs/7-from-spec/0-stepped-examples/1-be-excited/2-english-solution.js
diff --git a/4-developing-programs/6-from-spec/0-stepped-examples/1-be-excited/3-pseudo-code.js b/4-developing-programs/7-from-spec/0-stepped-examples/1-be-excited/3-pseudo-code.js
similarity index 100%
rename from 4-developing-programs/6-from-spec/0-stepped-examples/1-be-excited/3-pseudo-code.js
rename to 4-developing-programs/7-from-spec/0-stepped-examples/1-be-excited/3-pseudo-code.js
diff --git a/4-developing-programs/6-from-spec/0-stepped-examples/1-be-excited/4-first-goal.js b/4-developing-programs/7-from-spec/0-stepped-examples/1-be-excited/4-first-goal.js
similarity index 100%
rename from 4-developing-programs/6-from-spec/0-stepped-examples/1-be-excited/4-first-goal.js
rename to 4-developing-programs/7-from-spec/0-stepped-examples/1-be-excited/4-first-goal.js
diff --git a/4-developing-programs/6-from-spec/0-stepped-examples/1-be-excited/5-second-goal.js b/4-developing-programs/7-from-spec/0-stepped-examples/1-be-excited/5-second-goal.js
similarity index 100%
rename from 4-developing-programs/6-from-spec/0-stepped-examples/1-be-excited/5-second-goal.js
rename to 4-developing-programs/7-from-spec/0-stepped-examples/1-be-excited/5-second-goal.js
diff --git a/4-developing-programs/6-from-spec/0-stepped-examples/1-be-excited/6-third-goal.js b/4-developing-programs/7-from-spec/0-stepped-examples/1-be-excited/6-third-goal.js
similarity index 100%
rename from 4-developing-programs/6-from-spec/0-stepped-examples/1-be-excited/6-third-goal.js
rename to 4-developing-programs/7-from-spec/0-stepped-examples/1-be-excited/6-third-goal.js
diff --git a/4-developing-programs/6-from-spec/0-stepped-examples/1-be-excited/7-more-tests.js b/4-developing-programs/7-from-spec/0-stepped-examples/1-be-excited/7-more-tests.js
similarity index 100%
rename from 4-developing-programs/6-from-spec/0-stepped-examples/1-be-excited/7-more-tests.js
rename to 4-developing-programs/7-from-spec/0-stepped-examples/1-be-excited/7-more-tests.js
diff --git a/4-developing-programs/6-from-spec/0-stepped-examples/2-favorite-color/0-the-behavior.js b/4-developing-programs/7-from-spec/0-stepped-examples/2-favorite-color/0-the-behavior.js
similarity index 100%
rename from 4-developing-programs/6-from-spec/0-stepped-examples/2-favorite-color/0-the-behavior.js
rename to 4-developing-programs/7-from-spec/0-stepped-examples/2-favorite-color/0-the-behavior.js
diff --git a/4-developing-programs/6-from-spec/0-stepped-examples/2-favorite-color/1-plan-goals.js b/4-developing-programs/7-from-spec/0-stepped-examples/2-favorite-color/1-plan-goals.js
similarity index 100%
rename from 4-developing-programs/6-from-spec/0-stepped-examples/2-favorite-color/1-plan-goals.js
rename to 4-developing-programs/7-from-spec/0-stepped-examples/2-favorite-color/1-plan-goals.js
diff --git a/4-developing-programs/6-from-spec/0-stepped-examples/2-favorite-color/2-pseudo-code.js b/4-developing-programs/7-from-spec/0-stepped-examples/2-favorite-color/2-pseudo-code.js
similarity index 100%
rename from 4-developing-programs/6-from-spec/0-stepped-examples/2-favorite-color/2-pseudo-code.js
rename to 4-developing-programs/7-from-spec/0-stepped-examples/2-favorite-color/2-pseudo-code.js
diff --git a/4-developing-programs/6-from-spec/0-stepped-examples/2-favorite-color/3-first-goal.js b/4-developing-programs/7-from-spec/0-stepped-examples/2-favorite-color/3-first-goal.js
similarity index 100%
rename from 4-developing-programs/6-from-spec/0-stepped-examples/2-favorite-color/3-first-goal.js
rename to 4-developing-programs/7-from-spec/0-stepped-examples/2-favorite-color/3-first-goal.js
diff --git a/4-developing-programs/6-from-spec/0-stepped-examples/2-favorite-color/4-second-goal.js b/4-developing-programs/7-from-spec/0-stepped-examples/2-favorite-color/4-second-goal.js
similarity index 100%
rename from 4-developing-programs/6-from-spec/0-stepped-examples/2-favorite-color/4-second-goal.js
rename to 4-developing-programs/7-from-spec/0-stepped-examples/2-favorite-color/4-second-goal.js
diff --git a/4-developing-programs/6-from-spec/0-stepped-examples/2-favorite-color/5-third-goal.js b/4-developing-programs/7-from-spec/0-stepped-examples/2-favorite-color/5-third-goal.js
similarity index 100%
rename from 4-developing-programs/6-from-spec/0-stepped-examples/2-favorite-color/5-third-goal.js
rename to 4-developing-programs/7-from-spec/0-stepped-examples/2-favorite-color/5-third-goal.js
diff --git a/4-developing-programs/6-from-spec/0-stepped-examples/2-favorite-color/6-more-tests.js b/4-developing-programs/7-from-spec/0-stepped-examples/2-favorite-color/6-more-tests.js
similarity index 100%
rename from 4-developing-programs/6-from-spec/0-stepped-examples/2-favorite-color/6-more-tests.js
rename to 4-developing-programs/7-from-spec/0-stepped-examples/2-favorite-color/6-more-tests.js
diff --git a/4-developing-programs/6-from-spec/0-stepped-examples/3-bouncy-string/00-the-behavior.js b/4-developing-programs/7-from-spec/0-stepped-examples/3-bouncy-string/00-the-behavior.js
similarity index 100%
rename from 4-developing-programs/6-from-spec/0-stepped-examples/3-bouncy-string/00-the-behavior.js
rename to 4-developing-programs/7-from-spec/0-stepped-examples/3-bouncy-string/00-the-behavior.js
diff --git a/4-developing-programs/6-from-spec/0-stepped-examples/3-bouncy-string/01-plan-goals.js b/4-developing-programs/7-from-spec/0-stepped-examples/3-bouncy-string/01-plan-goals.js
similarity index 100%
rename from 4-developing-programs/6-from-spec/0-stepped-examples/3-bouncy-string/01-plan-goals.js
rename to 4-developing-programs/7-from-spec/0-stepped-examples/3-bouncy-string/01-plan-goals.js
diff --git a/4-developing-programs/6-from-spec/0-stepped-examples/3-bouncy-string/02-pseudo-code.js b/4-developing-programs/7-from-spec/0-stepped-examples/3-bouncy-string/02-pseudo-code.js
similarity index 100%
rename from 4-developing-programs/6-from-spec/0-stepped-examples/3-bouncy-string/02-pseudo-code.js
rename to 4-developing-programs/7-from-spec/0-stepped-examples/3-bouncy-string/02-pseudo-code.js
diff --git a/4-developing-programs/6-from-spec/0-stepped-examples/3-bouncy-string/04-first-goal-a.js b/4-developing-programs/7-from-spec/0-stepped-examples/3-bouncy-string/04-first-goal-a.js
similarity index 100%
rename from 4-developing-programs/6-from-spec/0-stepped-examples/3-bouncy-string/04-first-goal-a.js
rename to 4-developing-programs/7-from-spec/0-stepped-examples/3-bouncy-string/04-first-goal-a.js
diff --git a/4-developing-programs/6-from-spec/0-stepped-examples/3-bouncy-string/05-first-goal-b.js b/4-developing-programs/7-from-spec/0-stepped-examples/3-bouncy-string/05-first-goal-b.js
similarity index 100%
rename from 4-developing-programs/6-from-spec/0-stepped-examples/3-bouncy-string/05-first-goal-b.js
rename to 4-developing-programs/7-from-spec/0-stepped-examples/3-bouncy-string/05-first-goal-b.js
diff --git a/4-developing-programs/6-from-spec/0-stepped-examples/3-bouncy-string/06-first-goal-c.js b/4-developing-programs/7-from-spec/0-stepped-examples/3-bouncy-string/06-first-goal-c.js
similarity index 100%
rename from 4-developing-programs/6-from-spec/0-stepped-examples/3-bouncy-string/06-first-goal-c.js
rename to 4-developing-programs/7-from-spec/0-stepped-examples/3-bouncy-string/06-first-goal-c.js
diff --git a/4-developing-programs/6-from-spec/0-stepped-examples/3-bouncy-string/07-first-goal-d.js b/4-developing-programs/7-from-spec/0-stepped-examples/3-bouncy-string/07-first-goal-d.js
similarity index 100%
rename from 4-developing-programs/6-from-spec/0-stepped-examples/3-bouncy-string/07-first-goal-d.js
rename to 4-developing-programs/7-from-spec/0-stepped-examples/3-bouncy-string/07-first-goal-d.js
diff --git a/4-developing-programs/6-from-spec/0-stepped-examples/3-bouncy-string/08-second-goal.js b/4-developing-programs/7-from-spec/0-stepped-examples/3-bouncy-string/08-second-goal.js
similarity index 100%
rename from 4-developing-programs/6-from-spec/0-stepped-examples/3-bouncy-string/08-second-goal.js
rename to 4-developing-programs/7-from-spec/0-stepped-examples/3-bouncy-string/08-second-goal.js
diff --git a/4-developing-programs/6-from-spec/0-stepped-examples/3-bouncy-string/09-third-goal.js b/4-developing-programs/7-from-spec/0-stepped-examples/3-bouncy-string/09-third-goal.js
similarity index 100%
rename from 4-developing-programs/6-from-spec/0-stepped-examples/3-bouncy-string/09-third-goal.js
rename to 4-developing-programs/7-from-spec/0-stepped-examples/3-bouncy-string/09-third-goal.js
diff --git a/4-developing-programs/6-from-spec/0-stepped-examples/3-bouncy-string/10-more-tests.js b/4-developing-programs/7-from-spec/0-stepped-examples/3-bouncy-string/10-more-tests.js
similarity index 100%
rename from 4-developing-programs/6-from-spec/0-stepped-examples/3-bouncy-string/10-more-tests.js
rename to 4-developing-programs/7-from-spec/0-stepped-examples/3-bouncy-string/10-more-tests.js
diff --git a/4-developing-programs/7-from-spec/0-stepped-examples/study.json b/4-developing-programs/7-from-spec/0-stepped-examples/study.json
new file mode 100644
index 00000000..94911a73
--- /dev/null
+++ b/4-developing-programs/7-from-spec/0-stepped-examples/study.json
@@ -0,0 +1,5 @@
+{
+ "study": {
+ "stepped": ".js"
+ }
+}
diff --git a/4-developing-programs/6-from-spec/1-starter-code/1-something-with-a-space.js b/4-developing-programs/7-from-spec/1-starter-code/1-something-with-a-space.js
similarity index 100%
rename from 4-developing-programs/6-from-spec/1-starter-code/1-something-with-a-space.js
rename to 4-developing-programs/7-from-spec/1-starter-code/1-something-with-a-space.js
diff --git a/4-developing-programs/6-from-spec/1-starter-code/2-has-spaces.js b/4-developing-programs/7-from-spec/1-starter-code/2-has-spaces.js
similarity index 100%
rename from 4-developing-programs/6-from-spec/1-starter-code/2-has-spaces.js
rename to 4-developing-programs/7-from-spec/1-starter-code/2-has-spaces.js
diff --git a/4-developing-programs/6-from-spec/2-specs-and-goals/no-repeats.js b/4-developing-programs/7-from-spec/2-specs-and-goals/no-repeats.js
similarity index 100%
rename from 4-developing-programs/6-from-spec/2-specs-and-goals/no-repeats.js
rename to 4-developing-programs/7-from-spec/2-specs-and-goals/no-repeats.js
diff --git a/4-developing-programs/6-from-spec/2-specs-and-goals/remove-repeats.js b/4-developing-programs/7-from-spec/2-specs-and-goals/remove-repeats.js
similarity index 100%
rename from 4-developing-programs/6-from-spec/2-specs-and-goals/remove-repeats.js
rename to 4-developing-programs/7-from-spec/2-specs-and-goals/remove-repeats.js
diff --git a/4-developing-programs/6-from-spec/3-only-specs/dogify.js b/4-developing-programs/7-from-spec/3-only-specs/dogify.js
similarity index 100%
rename from 4-developing-programs/6-from-spec/3-only-specs/dogify.js
rename to 4-developing-programs/7-from-spec/3-only-specs/dogify.js
diff --git a/4-developing-programs/6-from-spec/3-only-specs/has-a-dog.js b/4-developing-programs/7-from-spec/3-only-specs/has-a-dog.js
similarity index 100%
rename from 4-developing-programs/6-from-spec/3-only-specs/has-a-dog.js
rename to 4-developing-programs/7-from-spec/3-only-specs/has-a-dog.js
diff --git a/4-developing-programs/6-from-spec/README.md b/4-developing-programs/7-from-spec/README.md
similarity index 100%
rename from 4-developing-programs/6-from-spec/README.md
rename to 4-developing-programs/7-from-spec/README.md
diff --git a/4-developing-programs/7-reverse-engineering/README.md b/4-developing-programs/8-reverse-engineering/README.md
similarity index 100%
rename from 4-developing-programs/7-reverse-engineering/README.md
rename to 4-developing-programs/8-reverse-engineering/README.md
diff --git a/4-developing-programs/7-reverse-engineering/exercises/mystery-1.js b/4-developing-programs/8-reverse-engineering/exercises/mystery-1.js
similarity index 100%
rename from 4-developing-programs/7-reverse-engineering/exercises/mystery-1.js
rename to 4-developing-programs/8-reverse-engineering/exercises/mystery-1.js
diff --git a/4-developing-programs/7-reverse-engineering/exercises/mystery-1.re.js b/4-developing-programs/8-reverse-engineering/exercises/mystery-1.re.js
similarity index 100%
rename from 4-developing-programs/7-reverse-engineering/exercises/mystery-1.re.js
rename to 4-developing-programs/8-reverse-engineering/exercises/mystery-1.re.js
diff --git a/4-developing-programs/7-reverse-engineering/exercises/mystery-2.js b/4-developing-programs/8-reverse-engineering/exercises/mystery-2.js
similarity index 100%
rename from 4-developing-programs/7-reverse-engineering/exercises/mystery-2.js
rename to 4-developing-programs/8-reverse-engineering/exercises/mystery-2.js
diff --git a/4-developing-programs/7-reverse-engineering/exercises/mystery-2.re.js b/4-developing-programs/8-reverse-engineering/exercises/mystery-2.re.js
similarity index 100%
rename from 4-developing-programs/7-reverse-engineering/exercises/mystery-2.re.js
rename to 4-developing-programs/8-reverse-engineering/exercises/mystery-2.re.js
diff --git a/4-developing-programs/7-reverse-engineering/exercises/mystery-3.js b/4-developing-programs/8-reverse-engineering/exercises/mystery-3.js
similarity index 100%
rename from 4-developing-programs/7-reverse-engineering/exercises/mystery-3.js
rename to 4-developing-programs/8-reverse-engineering/exercises/mystery-3.js
diff --git a/4-developing-programs/7-reverse-engineering/exercises/mystery-3.re.js b/4-developing-programs/8-reverse-engineering/exercises/mystery-3.re.js
similarity index 100%
rename from 4-developing-programs/7-reverse-engineering/exercises/mystery-3.re.js
rename to 4-developing-programs/8-reverse-engineering/exercises/mystery-3.re.js
diff --git a/4-developing-programs/8-imagining-programs/README.md b/4-developing-programs/9-imagining-programs/README.md
similarity index 100%
rename from 4-developing-programs/8-imagining-programs/README.md
rename to 4-developing-programs/9-imagining-programs/README.md
diff --git a/README.md b/README.md
index 75c52da9..6ca9866e 100644
--- a/README.md
+++ b/README.md
@@ -1,3 +1,5 @@
+
+
# Welcome to JS
> The best authors and the best JavaScript developers are those who obsess about
@@ -170,11 +172,8 @@ read a new program and do a simple code review.
2. Zoom In
3. Find Connections
4. Describe Goals
-- [ ] π₯ **Code Review**: Given a working program you can review the code for
+- [ ] π£ **Code Review**: Given a working program you can review the code for
clarity, correctness and style.
-- [ ] π **Same Behavior, Different Code**: You can study simple programs with
- the same behavior (_data in, data out_) but different source code and
- explain how the differences matter for each audience.
### [4. Developing Programs](./4-developing-programs)
@@ -196,7 +195,10 @@ collaboratively on a code base.
- [ ] π£ **Modifying Programs**: You can make small changes in a program to
change its behavior without breaking it.
- [ ] π₯ **Refactoring**: Given a working program, you can make changes to the
- code without changing the program's behavior.
+ code without changing the program's user-facing behavior.
+- [ ] π₯ **Legacy Code**: You can understand and rewrite a poorly written
+ program to improve the experience of all 3 audiences: _developer_, _user_,
+ _computer_.
- [ ] π₯ **Writing Programs**: Given a description of a program's behavior
(_user story + test cases_), you can plan goals for the program and write
code to pass the tests.
@@ -251,8 +253,8 @@ collaboratively on a code base.
2. pull the changes from your fork to your computer
3. Navigate to the module repository in terminal
- `$ cd welcome-to-js`
-4. Run the `study` command from your CLI
- - `$ study`
+4. Run the `lenses2` command from your CLI
+ - `$ lenses2`
5. The material will open in your default browser, you're good to go!
- you can read the `study-lenses` user guide from your browser by navigating
to `localhost:xxxx?--help`
diff --git a/assets/a-program.png b/assets/a-program.png
new file mode 100644
index 00000000..adbebdff
Binary files /dev/null and b/assets/a-program.png differ
diff --git a/assets/computers-and-developers.png b/assets/computers-and-developers.png
new file mode 100644
index 00000000..bbe897e6
Binary files /dev/null and b/assets/computers-and-developers.png differ
diff --git a/assets/the-big-picture.png b/assets/the-big-picture.png
new file mode 100644
index 00000000..086f05d5
Binary files /dev/null and b/assets/the-big-picture.png differ
diff --git a/lesson-plans/README.md b/lesson-plans/README.md
index 670765e5..a86140b8 100644
--- a/lesson-plans/README.md
+++ b/lesson-plans/README.md
@@ -1,9 +1,13 @@
# Lesson Plans
-## Week 1
+If you are using this material with teachers and students check out these lesson
+plans for some ideas what to cover in class.
-- [Week 1](./week-1/README.md)
+Got more ideas for lesson plans around this material? Send a PR!
-## Week 2
+Suggested Sequence:
-- [Week 2](./week-2/README.md)
+1. Computers and Developers
+2. Devtools Debugger
+3. Errors and Bugs
+4. Writing and Reviewing
diff --git a/lesson-plans/week-1/README.md b/lesson-plans/computers-and-developers/README.md
similarity index 57%
rename from lesson-plans/week-1/README.md
rename to lesson-plans/computers-and-developers/README.md
index ca9b45b7..2d647cc6 100644
--- a/lesson-plans/week-1/README.md
+++ b/lesson-plans/computers-and-developers/README.md
@@ -1,4 +1,8 @@
-# Week 1
+# Computers & Developers
+
+Explore how Computers and Developers read the same code in different ways.
+
+---
## Prep Work
@@ -17,19 +21,28 @@
- [JS Fundamentals - Variables](https://javascript.info/variables)
- [JS Variables](https://education.launchcode.org/intro-to-professional-web-dev/chapters/data-and-variables/variables.html)
- [JavaScript Variables and Constants](https://www.programiz.com/javascript/variables-constants)
-- from `javascript.info`: [DevTools](https://javascript.info/devtools),
- [Debugging Chrome](https://javascript.info/debugging-chrome)
-- Study
- [/3-understanding-programs/1-predicting-execution](../../3-understanding-programs/1-predicting-execution/?--defaults)
- - `devtool-setup.mp4`
- - `guide.mp4`
- - the JS files
+
+---
+
+## Learning Objectives
+
+- π₯ **Code Audiences**: You can explain how a single file of code is understood
+ by:
+ - **Computers**: A computer follows the code's instructions one step at a
+ time.
+ - **Developers**: A developer reads the code, comments and variable names to
+ understand what the code is _intended_ to do.
+- π£ **Tracing Variables**: You can follow a program's instructions like the
+ computer does, filling out a _trace table_ and checking your work with the
+ [trace] button.
+
+---
## During Class
The most important objective for today is that you learn how to trace variables
the way a computer interprets them. If you don't understand this the rest of JS
-will be a mystery! and learn how to use devtools and debug your code.
+will be a mystery!
### Before Break
@@ -42,26 +55,13 @@ will be a mystery! and learn how to use devtools and debug your code.
- Study examples 4 & 5 again with your classmates
- Begin `tracing-variables/exercises`
----
-
-
-
----
-
-
-Tracing Variables
+**Break!**
### After Break
-- **All Together**: A coach demonstrates the debugger features in
- `/1-isolate/examples`
-- **In Small Groups**: Practice stepping through and predicting the programs in
- `/1-isolate/exercises`
-- **All Together**: A coach demonstrates how to step through JavaScript in an
- HTML project with `/2-integrate/examples`
-- **In Small Groups**: Practice stepping through and predicting the programs in
- `/2-integrate/exercises`
-- **All Together** Regroup with ~20 minutes left at the end of class for each
+- **In Small Groups**:
+ - Continue studying `tracing-variables/exercises`
+- **All Together** Regroup with ~30 minutes left at the end of class for each
group to present:
- what went well?
- what went less well?
@@ -69,24 +69,23 @@ Tracing Variables
---
-1. Isolate
+
---
-2.
-Integrate
+
+Tracing Variables
---
## After Class
+No deliverables. Just lots of study time, alone and in groups. Here's some ideas
+for what to focus on:
+
- π₯ [compute-it](http://compute-it.toxicode.fr/) (all of it), π£
[little-dot](http://little-dot.toxicode.fr/)
- Continue studying your favorite online tutorials
- Finish `/1-what-is-programming` and study as much as you can from
`/2-just-enough-javascript`
- `/0-flashcards`: ~20 minutes every day (add more cards as you go!)
-- Continue studying your favorite online tutorials
-- Finish studying `/2-just-enough-javascript` if you haven't yet
-- Study `/3-understanding-programs`
-- `/0-flashcards`: ~20 minutes every day (add more cards as you go!)
diff --git a/lesson-plans/computers-and-developers/study.json b/lesson-plans/computers-and-developers/study.json
new file mode 100644
index 00000000..aab8fb1c
--- /dev/null
+++ b/lesson-plans/computers-and-developers/study.json
@@ -0,0 +1,37 @@
+{
+ "study": {
+ "loopGuard": false,
+ "eslint": false,
+ "openIn": "jsTutor",
+ "save": true,
+ "writeme": false,
+ "debug": false,
+ "ask": {
+ "levels": [1, 2],
+ "data": false,
+ "functions": false
+ }
+ },
+ "highlight": {
+ "--use": "",
+ "run": false,
+ "flowchart": false,
+ "variables": false,
+ "ask": false,
+ "table": false,
+ "trace": false,
+ "random": false
+ },
+ "variables": {
+ "--use": "",
+ "trace": false,
+ "ask": false
+ },
+ "parsons": {
+ "--use": "",
+ "study": false,
+ "table": false,
+ "trace": false,
+ "run": false
+ }
+}
diff --git a/lesson-plans/week-1/teaching-tips.md b/lesson-plans/computers-and-developers/teaching-tips.md
similarity index 100%
rename from lesson-plans/week-1/teaching-tips.md
rename to lesson-plans/computers-and-developers/teaching-tips.md
diff --git a/lesson-plans/week-1/computers-and-developers/tracing-variables/README.md b/lesson-plans/computers-and-developers/tracing-variables/README.md
similarity index 100%
rename from lesson-plans/week-1/computers-and-developers/tracing-variables/README.md
rename to lesson-plans/computers-and-developers/tracing-variables/README.md
diff --git a/lesson-plans/week-1/computers-and-developers/tracing-variables/examples/0-comments.js b/lesson-plans/computers-and-developers/tracing-variables/examples/0-comments.js
similarity index 100%
rename from lesson-plans/week-1/computers-and-developers/tracing-variables/examples/0-comments.js
rename to lesson-plans/computers-and-developers/tracing-variables/examples/0-comments.js
diff --git a/lesson-plans/week-1/computers-and-developers/tracing-variables/examples/1-strings.js b/lesson-plans/computers-and-developers/tracing-variables/examples/1-strings.js
similarity index 100%
rename from lesson-plans/week-1/computers-and-developers/tracing-variables/examples/1-strings.js
rename to lesson-plans/computers-and-developers/tracing-variables/examples/1-strings.js
diff --git a/lesson-plans/week-1/computers-and-developers/tracing-variables/examples/2-console-log.js b/lesson-plans/computers-and-developers/tracing-variables/examples/2-console-log.js
similarity index 100%
rename from lesson-plans/week-1/computers-and-developers/tracing-variables/examples/2-console-log.js
rename to lesson-plans/computers-and-developers/tracing-variables/examples/2-console-log.js
diff --git a/lesson-plans/week-1/computers-and-developers/tracing-variables/examples/3-string-concatenation.js b/lesson-plans/computers-and-developers/tracing-variables/examples/3-string-concatenation.js
similarity index 100%
rename from lesson-plans/week-1/computers-and-developers/tracing-variables/examples/3-string-concatenation.js
rename to lesson-plans/computers-and-developers/tracing-variables/examples/3-string-concatenation.js
diff --git a/lesson-plans/week-1/computers-and-developers/tracing-variables/examples/4-strict-mode.js b/lesson-plans/computers-and-developers/tracing-variables/examples/4-strict-mode.js
similarity index 100%
rename from lesson-plans/week-1/computers-and-developers/tracing-variables/examples/4-strict-mode.js
rename to lesson-plans/computers-and-developers/tracing-variables/examples/4-strict-mode.js
diff --git a/lesson-plans/week-1/computers-and-developers/tracing-variables/examples/5-variables.js b/lesson-plans/computers-and-developers/tracing-variables/examples/5-variables.js
similarity index 100%
rename from lesson-plans/week-1/computers-and-developers/tracing-variables/examples/5-variables.js
rename to lesson-plans/computers-and-developers/tracing-variables/examples/5-variables.js
diff --git a/lesson-plans/week-1/computers-and-developers/tracing-variables/examples/6-trace-tables.png b/lesson-plans/computers-and-developers/tracing-variables/examples/6-trace-tables.png
similarity index 100%
rename from lesson-plans/week-1/computers-and-developers/tracing-variables/examples/6-trace-tables.png
rename to lesson-plans/computers-and-developers/tracing-variables/examples/6-trace-tables.png
diff --git a/lesson-plans/week-1/computers-and-developers/tracing-variables/exercises/1-two-variables.js b/lesson-plans/computers-and-developers/tracing-variables/exercises/1-two-variables.js
similarity index 100%
rename from lesson-plans/week-1/computers-and-developers/tracing-variables/exercises/1-two-variables.js
rename to lesson-plans/computers-and-developers/tracing-variables/exercises/1-two-variables.js
diff --git a/lesson-plans/week-1/computers-and-developers/tracing-variables/exercises/2-four-variables.js b/lesson-plans/computers-and-developers/tracing-variables/exercises/2-four-variables.js
similarity index 100%
rename from lesson-plans/week-1/computers-and-developers/tracing-variables/exercises/2-four-variables.js
rename to lesson-plans/computers-and-developers/tracing-variables/exercises/2-four-variables.js
diff --git a/lesson-plans/week-1/computers-and-developers/tracing-variables/exercises/3-hello-good-bye.js b/lesson-plans/computers-and-developers/tracing-variables/exercises/3-hello-good-bye.js
similarity index 100%
rename from lesson-plans/week-1/computers-and-developers/tracing-variables/exercises/3-hello-good-bye.js
rename to lesson-plans/computers-and-developers/tracing-variables/exercises/3-hello-good-bye.js
diff --git a/lesson-plans/week-1/computers-and-developers/tracing-variables/exercises/4-value-swap.js b/lesson-plans/computers-and-developers/tracing-variables/exercises/4-value-swap.js
similarity index 100%
rename from lesson-plans/week-1/computers-and-developers/tracing-variables/exercises/4-value-swap.js
rename to lesson-plans/computers-and-developers/tracing-variables/exercises/4-value-swap.js
diff --git a/lesson-plans/week-1/computers-and-developers/tracing-variables/exercises/5-conditional-statement.js b/lesson-plans/computers-and-developers/tracing-variables/exercises/5-conditional-statement.js
similarity index 100%
rename from lesson-plans/week-1/computers-and-developers/tracing-variables/exercises/5-conditional-statement.js
rename to lesson-plans/computers-and-developers/tracing-variables/exercises/5-conditional-statement.js
diff --git a/lesson-plans/week-1/computers-and-developers/tracing-variables/exercises/6-while-loop.js b/lesson-plans/computers-and-developers/tracing-variables/exercises/6-while-loop.js
similarity index 100%
rename from lesson-plans/week-1/computers-and-developers/tracing-variables/exercises/6-while-loop.js
rename to lesson-plans/computers-and-developers/tracing-variables/exercises/6-while-loop.js
diff --git a/lesson-plans/week-1/devtools-debugger/1-isolate/README.md b/lesson-plans/devtools-debugger/1-isolate/README.md
similarity index 100%
rename from lesson-plans/week-1/devtools-debugger/1-isolate/README.md
rename to lesson-plans/devtools-debugger/1-isolate/README.md
diff --git a/lesson-plans/week-1/devtools-debugger/1-isolate/examples/1-stepping-through.js b/lesson-plans/devtools-debugger/1-isolate/examples/1-stepping-through.js
similarity index 100%
rename from lesson-plans/week-1/devtools-debugger/1-isolate/examples/1-stepping-through.js
rename to lesson-plans/devtools-debugger/1-isolate/examples/1-stepping-through.js
diff --git a/lesson-plans/week-1/devtools-debugger/1-isolate/examples/2-scope-panel.js b/lesson-plans/devtools-debugger/1-isolate/examples/2-scope-panel.js
similarity index 100%
rename from lesson-plans/week-1/devtools-debugger/1-isolate/examples/2-scope-panel.js
rename to lesson-plans/devtools-debugger/1-isolate/examples/2-scope-panel.js
diff --git a/lesson-plans/week-1/devtools-debugger/1-isolate/examples/3-hovering-preview.js b/lesson-plans/devtools-debugger/1-isolate/examples/3-hovering-preview.js
similarity index 100%
rename from lesson-plans/week-1/devtools-debugger/1-isolate/examples/3-hovering-preview.js
rename to lesson-plans/devtools-debugger/1-isolate/examples/3-hovering-preview.js
diff --git a/lesson-plans/week-1/devtools-debugger/1-isolate/examples/4-continue-to-here.js b/lesson-plans/devtools-debugger/1-isolate/examples/4-continue-to-here.js
similarity index 100%
rename from lesson-plans/week-1/devtools-debugger/1-isolate/examples/4-continue-to-here.js
rename to lesson-plans/devtools-debugger/1-isolate/examples/4-continue-to-here.js
diff --git a/lesson-plans/week-1/devtools-debugger/1-isolate/examples/5-breakpoints.js b/lesson-plans/devtools-debugger/1-isolate/examples/5-breakpoints.js
similarity index 100%
rename from lesson-plans/week-1/devtools-debugger/1-isolate/examples/5-breakpoints.js
rename to lesson-plans/devtools-debugger/1-isolate/examples/5-breakpoints.js
diff --git a/lesson-plans/week-1/devtools-debugger/1-isolate/examples/6-debugger-statement.js b/lesson-plans/devtools-debugger/1-isolate/examples/6-debugger-statement.js
similarity index 100%
rename from lesson-plans/week-1/devtools-debugger/1-isolate/examples/6-debugger-statement.js
rename to lesson-plans/devtools-debugger/1-isolate/examples/6-debugger-statement.js
diff --git a/lesson-plans/week-1/devtools-debugger/1-isolate/exercises/1-conditionals/1-greeting.js b/lesson-plans/devtools-debugger/1-isolate/exercises/1-conditionals/1-greeting.js
similarity index 100%
rename from lesson-plans/week-1/devtools-debugger/1-isolate/exercises/1-conditionals/1-greeting.js
rename to lesson-plans/devtools-debugger/1-isolate/exercises/1-conditionals/1-greeting.js
diff --git a/lesson-plans/week-1/devtools-debugger/1-isolate/exercises/1-conditionals/2-five-characters.js b/lesson-plans/devtools-debugger/1-isolate/exercises/1-conditionals/2-five-characters.js
similarity index 100%
rename from lesson-plans/week-1/devtools-debugger/1-isolate/exercises/1-conditionals/2-five-characters.js
rename to lesson-plans/devtools-debugger/1-isolate/exercises/1-conditionals/2-five-characters.js
diff --git a/lesson-plans/week-1/devtools-debugger/1-isolate/exercises/2-while-loops/1-input-something.js b/lesson-plans/devtools-debugger/1-isolate/exercises/2-while-loops/1-input-something.js
similarity index 100%
rename from lesson-plans/week-1/devtools-debugger/1-isolate/exercises/2-while-loops/1-input-something.js
rename to lesson-plans/devtools-debugger/1-isolate/exercises/2-while-loops/1-input-something.js
diff --git a/lesson-plans/week-1/devtools-debugger/1-isolate/exercises/2-while-loops/2-five-characters.js b/lesson-plans/devtools-debugger/1-isolate/exercises/2-while-loops/2-five-characters.js
similarity index 100%
rename from lesson-plans/week-1/devtools-debugger/1-isolate/exercises/2-while-loops/2-five-characters.js
rename to lesson-plans/devtools-debugger/1-isolate/exercises/2-while-loops/2-five-characters.js
diff --git a/lesson-plans/week-1/devtools-debugger/1-isolate/exercises/3-for-of-loops/1-doubled-characters.js b/lesson-plans/devtools-debugger/1-isolate/exercises/3-for-of-loops/1-doubled-characters.js
similarity index 100%
rename from lesson-plans/week-1/devtools-debugger/1-isolate/exercises/3-for-of-loops/1-doubled-characters.js
rename to lesson-plans/devtools-debugger/1-isolate/exercises/3-for-of-loops/1-doubled-characters.js
diff --git a/lesson-plans/week-1/devtools-debugger/1-isolate/exercises/3-for-of-loops/2-reverse.js b/lesson-plans/devtools-debugger/1-isolate/exercises/3-for-of-loops/2-reverse.js
similarity index 100%
rename from lesson-plans/week-1/devtools-debugger/1-isolate/exercises/3-for-of-loops/2-reverse.js
rename to lesson-plans/devtools-debugger/1-isolate/exercises/3-for-of-loops/2-reverse.js
diff --git a/lesson-plans/week-1/devtools-debugger/1-isolate/study.json b/lesson-plans/devtools-debugger/1-isolate/study.json
similarity index 100%
rename from lesson-plans/week-1/devtools-debugger/1-isolate/study.json
rename to lesson-plans/devtools-debugger/1-isolate/study.json
diff --git a/lesson-plans/week-1/devtools-debugger/2-integrate/README.md b/lesson-plans/devtools-debugger/2-integrate/README.md
similarity index 100%
rename from lesson-plans/week-1/devtools-debugger/2-integrate/README.md
rename to lesson-plans/devtools-debugger/2-integrate/README.md
diff --git a/lesson-plans/week-1/devtools-debugger/2-integrate/examples/0-the-sources-tab/app.js b/lesson-plans/devtools-debugger/2-integrate/examples/0-the-sources-tab/app.js
similarity index 100%
rename from lesson-plans/week-1/devtools-debugger/2-integrate/examples/0-the-sources-tab/app.js
rename to lesson-plans/devtools-debugger/2-integrate/examples/0-the-sources-tab/app.js
diff --git a/lesson-plans/week-1/devtools-debugger/2-integrate/examples/0-the-sources-tab/index.html b/lesson-plans/devtools-debugger/2-integrate/examples/0-the-sources-tab/index.html
similarity index 100%
rename from lesson-plans/week-1/devtools-debugger/2-integrate/examples/0-the-sources-tab/index.html
rename to lesson-plans/devtools-debugger/2-integrate/examples/0-the-sources-tab/index.html
diff --git a/lesson-plans/week-1/devtools-debugger/2-integrate/examples/0-the-sources-tab/styles.css b/lesson-plans/devtools-debugger/2-integrate/examples/0-the-sources-tab/styles.css
similarity index 100%
rename from lesson-plans/week-1/devtools-debugger/2-integrate/examples/0-the-sources-tab/styles.css
rename to lesson-plans/devtools-debugger/2-integrate/examples/0-the-sources-tab/styles.css
diff --git a/lesson-plans/week-1/devtools-debugger/2-integrate/examples/1-dom-io/app.js b/lesson-plans/devtools-debugger/2-integrate/examples/1-dom-io/app.js
similarity index 100%
rename from lesson-plans/week-1/devtools-debugger/2-integrate/examples/1-dom-io/app.js
rename to lesson-plans/devtools-debugger/2-integrate/examples/1-dom-io/app.js
diff --git a/lesson-plans/week-1/devtools-debugger/2-integrate/examples/1-dom-io/index.html b/lesson-plans/devtools-debugger/2-integrate/examples/1-dom-io/index.html
similarity index 100%
rename from lesson-plans/week-1/devtools-debugger/2-integrate/examples/1-dom-io/index.html
rename to lesson-plans/devtools-debugger/2-integrate/examples/1-dom-io/index.html
diff --git a/lesson-plans/week-1/devtools-debugger/2-integrate/examples/1-dom-io/styles.css b/lesson-plans/devtools-debugger/2-integrate/examples/1-dom-io/styles.css
similarity index 100%
rename from lesson-plans/week-1/devtools-debugger/2-integrate/examples/1-dom-io/styles.css
rename to lesson-plans/devtools-debugger/2-integrate/examples/1-dom-io/styles.css
diff --git a/lesson-plans/week-1/devtools-debugger/2-integrate/examples/2-step-over/app.js b/lesson-plans/devtools-debugger/2-integrate/examples/2-step-over/app.js
similarity index 100%
rename from lesson-plans/week-1/devtools-debugger/2-integrate/examples/2-step-over/app.js
rename to lesson-plans/devtools-debugger/2-integrate/examples/2-step-over/app.js
diff --git a/lesson-plans/week-1/devtools-debugger/2-integrate/examples/2-step-over/index.html b/lesson-plans/devtools-debugger/2-integrate/examples/2-step-over/index.html
similarity index 100%
rename from lesson-plans/week-1/devtools-debugger/2-integrate/examples/2-step-over/index.html
rename to lesson-plans/devtools-debugger/2-integrate/examples/2-step-over/index.html
diff --git a/lesson-plans/week-1/devtools-debugger/2-integrate/examples/2-step-over/styles.css b/lesson-plans/devtools-debugger/2-integrate/examples/2-step-over/styles.css
similarity index 100%
rename from lesson-plans/week-1/devtools-debugger/2-integrate/examples/2-step-over/styles.css
rename to lesson-plans/devtools-debugger/2-integrate/examples/2-step-over/styles.css
diff --git a/lesson-plans/week-1/devtools-debugger/2-integrate/exercises/1-variables/1-hello/app.js b/lesson-plans/devtools-debugger/2-integrate/exercises/1-variables/1-hello/app.js
similarity index 100%
rename from lesson-plans/week-1/devtools-debugger/2-integrate/exercises/1-variables/1-hello/app.js
rename to lesson-plans/devtools-debugger/2-integrate/exercises/1-variables/1-hello/app.js
diff --git a/lesson-plans/week-1/devtools-debugger/2-integrate/exercises/1-variables/1-hello/index.html b/lesson-plans/devtools-debugger/2-integrate/exercises/1-variables/1-hello/index.html
similarity index 100%
rename from lesson-plans/week-1/devtools-debugger/2-integrate/exercises/1-variables/1-hello/index.html
rename to lesson-plans/devtools-debugger/2-integrate/exercises/1-variables/1-hello/index.html
diff --git a/lesson-plans/week-1/devtools-debugger/2-integrate/exercises/1-variables/1-hello/styles.css b/lesson-plans/devtools-debugger/2-integrate/exercises/1-variables/1-hello/styles.css
similarity index 100%
rename from lesson-plans/week-1/devtools-debugger/2-integrate/exercises/1-variables/1-hello/styles.css
rename to lesson-plans/devtools-debugger/2-integrate/exercises/1-variables/1-hello/styles.css
diff --git a/lesson-plans/week-1/devtools-debugger/2-integrate/exercises/1-variables/2-twice/app.js b/lesson-plans/devtools-debugger/2-integrate/exercises/1-variables/2-twice/app.js
similarity index 100%
rename from lesson-plans/week-1/devtools-debugger/2-integrate/exercises/1-variables/2-twice/app.js
rename to lesson-plans/devtools-debugger/2-integrate/exercises/1-variables/2-twice/app.js
diff --git a/lesson-plans/week-1/devtools-debugger/2-integrate/exercises/1-variables/2-twice/index.html b/lesson-plans/devtools-debugger/2-integrate/exercises/1-variables/2-twice/index.html
similarity index 100%
rename from lesson-plans/week-1/devtools-debugger/2-integrate/exercises/1-variables/2-twice/index.html
rename to lesson-plans/devtools-debugger/2-integrate/exercises/1-variables/2-twice/index.html
diff --git a/lesson-plans/week-1/devtools-debugger/2-integrate/exercises/1-variables/2-twice/styles.css b/lesson-plans/devtools-debugger/2-integrate/exercises/1-variables/2-twice/styles.css
similarity index 100%
rename from lesson-plans/week-1/devtools-debugger/2-integrate/exercises/1-variables/2-twice/styles.css
rename to lesson-plans/devtools-debugger/2-integrate/exercises/1-variables/2-twice/styles.css
diff --git a/lesson-plans/week-1/devtools-debugger/2-integrate/exercises/2-conditionals/1-time-management/app.js b/lesson-plans/devtools-debugger/2-integrate/exercises/2-conditionals/1-time-management/app.js
similarity index 100%
rename from lesson-plans/week-1/devtools-debugger/2-integrate/exercises/2-conditionals/1-time-management/app.js
rename to lesson-plans/devtools-debugger/2-integrate/exercises/2-conditionals/1-time-management/app.js
diff --git a/lesson-plans/week-1/devtools-debugger/2-integrate/exercises/2-conditionals/1-time-management/index.html b/lesson-plans/devtools-debugger/2-integrate/exercises/2-conditionals/1-time-management/index.html
similarity index 100%
rename from lesson-plans/week-1/devtools-debugger/2-integrate/exercises/2-conditionals/1-time-management/index.html
rename to lesson-plans/devtools-debugger/2-integrate/exercises/2-conditionals/1-time-management/index.html
diff --git a/lesson-plans/week-1/devtools-debugger/2-integrate/exercises/2-conditionals/1-time-management/styles.css b/lesson-plans/devtools-debugger/2-integrate/exercises/2-conditionals/1-time-management/styles.css
similarity index 100%
rename from lesson-plans/week-1/devtools-debugger/2-integrate/exercises/2-conditionals/1-time-management/styles.css
rename to lesson-plans/devtools-debugger/2-integrate/exercises/2-conditionals/1-time-management/styles.css
diff --git a/lesson-plans/week-1/devtools-debugger/2-integrate/exercises/2-conditionals/2-search/app.js b/lesson-plans/devtools-debugger/2-integrate/exercises/2-conditionals/2-search/app.js
similarity index 100%
rename from lesson-plans/week-1/devtools-debugger/2-integrate/exercises/2-conditionals/2-search/app.js
rename to lesson-plans/devtools-debugger/2-integrate/exercises/2-conditionals/2-search/app.js
diff --git a/lesson-plans/week-1/devtools-debugger/2-integrate/exercises/2-conditionals/2-search/index.html b/lesson-plans/devtools-debugger/2-integrate/exercises/2-conditionals/2-search/index.html
similarity index 100%
rename from lesson-plans/week-1/devtools-debugger/2-integrate/exercises/2-conditionals/2-search/index.html
rename to lesson-plans/devtools-debugger/2-integrate/exercises/2-conditionals/2-search/index.html
diff --git a/lesson-plans/week-1/devtools-debugger/2-integrate/exercises/2-conditionals/2-search/styles.css b/lesson-plans/devtools-debugger/2-integrate/exercises/2-conditionals/2-search/styles.css
similarity index 100%
rename from lesson-plans/week-1/devtools-debugger/2-integrate/exercises/2-conditionals/2-search/styles.css
rename to lesson-plans/devtools-debugger/2-integrate/exercises/2-conditionals/2-search/styles.css
diff --git a/lesson-plans/week-1/devtools-debugger/2-integrate/exercises/3-for-of-loops/1-reverse/app.js b/lesson-plans/devtools-debugger/2-integrate/exercises/3-for-of-loops/1-reverse/app.js
similarity index 100%
rename from lesson-plans/week-1/devtools-debugger/2-integrate/exercises/3-for-of-loops/1-reverse/app.js
rename to lesson-plans/devtools-debugger/2-integrate/exercises/3-for-of-loops/1-reverse/app.js
diff --git a/lesson-plans/week-1/devtools-debugger/2-integrate/exercises/3-for-of-loops/1-reverse/index.html b/lesson-plans/devtools-debugger/2-integrate/exercises/3-for-of-loops/1-reverse/index.html
similarity index 100%
rename from lesson-plans/week-1/devtools-debugger/2-integrate/exercises/3-for-of-loops/1-reverse/index.html
rename to lesson-plans/devtools-debugger/2-integrate/exercises/3-for-of-loops/1-reverse/index.html
diff --git a/lesson-plans/week-1/devtools-debugger/2-integrate/exercises/3-for-of-loops/1-reverse/styles.css b/lesson-plans/devtools-debugger/2-integrate/exercises/3-for-of-loops/1-reverse/styles.css
similarity index 100%
rename from lesson-plans/week-1/devtools-debugger/2-integrate/exercises/3-for-of-loops/1-reverse/styles.css
rename to lesson-plans/devtools-debugger/2-integrate/exercises/3-for-of-loops/1-reverse/styles.css
diff --git a/lesson-plans/week-1/devtools-debugger/2-integrate/exercises/3-for-of-loops/2-mirror/app.js b/lesson-plans/devtools-debugger/2-integrate/exercises/3-for-of-loops/2-mirror/app.js
similarity index 100%
rename from lesson-plans/week-1/devtools-debugger/2-integrate/exercises/3-for-of-loops/2-mirror/app.js
rename to lesson-plans/devtools-debugger/2-integrate/exercises/3-for-of-loops/2-mirror/app.js
diff --git a/lesson-plans/week-1/devtools-debugger/2-integrate/exercises/3-for-of-loops/2-mirror/index.html b/lesson-plans/devtools-debugger/2-integrate/exercises/3-for-of-loops/2-mirror/index.html
similarity index 100%
rename from lesson-plans/week-1/devtools-debugger/2-integrate/exercises/3-for-of-loops/2-mirror/index.html
rename to lesson-plans/devtools-debugger/2-integrate/exercises/3-for-of-loops/2-mirror/index.html
diff --git a/lesson-plans/week-1/devtools-debugger/2-integrate/exercises/3-for-of-loops/2-mirror/styles.css b/lesson-plans/devtools-debugger/2-integrate/exercises/3-for-of-loops/2-mirror/styles.css
similarity index 100%
rename from lesson-plans/week-1/devtools-debugger/2-integrate/exercises/3-for-of-loops/2-mirror/styles.css
rename to lesson-plans/devtools-debugger/2-integrate/exercises/3-for-of-loops/2-mirror/styles.css
diff --git a/lesson-plans/week-1/devtools-debugger/2-integrate/study.json b/lesson-plans/devtools-debugger/2-integrate/study.json
similarity index 100%
rename from lesson-plans/week-1/devtools-debugger/2-integrate/study.json
rename to lesson-plans/devtools-debugger/2-integrate/study.json
diff --git a/lesson-plans/devtools-debugger/README.md b/lesson-plans/devtools-debugger/README.md
new file mode 100644
index 00000000..d384bb39
--- /dev/null
+++ b/lesson-plans/devtools-debugger/README.md
@@ -0,0 +1,86 @@
+# DevTools Debugger
+
+Practice using different features in your browser's DevTools Debugger to
+understand interactive JS programs.
+
+---
+
+## Prep Work
+
+- from `javascript.info`: [DevTools](https://javascript.info/devtools),
+ [Debugging Chrome](https://javascript.info/debugging-chrome)
+- Study
+ [/3-understanding-programs/1-predicting-execution](../../3-understanding-programs/1-predicting-execution/?--defaults)
+ - `devtool-setup.mp4`
+ - `guide.mp4`
+ - the JS files
+
+---
+
+## Learning Objectives
+
+- π₯ **Stepping Through**: You can use the _Step_ button to go through a program
+ one statement at a time, pausing an any line you want to inspect.
+- π₯ **Scope Panel**: You can use the _Scope_ panel in your debugger to find the
+ value of all active variables at step of execution, including when a variable
+ is _uninitialized_.
+- π₯ **Hovering Previews**: You can preview the value of any expression or
+ initialized variable in your program, including parts of a longer expression.
+- π£ **Continue to Here**: When paused in the debugger, you can skip the
+ program's execution to a specific line using the "continue to here" option.
+- π£ **Breakpoints**: Once in the Debugger, you can set and unset breakpoints to
+ skip ahead to specific lines. You can also set and unset breakpoints within a
+ line when possible.
+- π₯ **`debugger` Statement**: You understand the difference between `debugger`
+ and a breakpoint, and can write a `debugger` statement in your source code to
+ pause the program before specific lines.
+- π₯ **Stepping Over**: You can step over functions in your program to skip
+ their _implementation_ and focus on your program's behavior.
+
+---
+
+## During Class
+
+Practice stepping and skipping through programs using your browser's debugger.
+
+### Before Break
+
+- **All Together**: A coach demonstrates the debugger features in
+ `/1-isolate/examples`
+- **In Small Groups**: Practice stepping through and predicting the programs in
+ `/1-isolate/exercises`
+
+**Break!**
+
+### After Break
+
+- **All Together**: A coach demonstrates how to step through JavaScript in an
+ HTML project with `/2-integrate/examples`
+- **In Small Groups**: Practice stepping through and predicting the programs in
+ `/2-integrate/exercises`
+- **All Together** Regroup with ~20 minutes left at the end of class for each
+ group to present:
+ - what went well?
+ - what went less well?
+ - lessons learned
+
+---
+
+1. Isolate
+
+---
+
+2.
+Integrate
+
+---
+
+## After Class
+
+No deliverables. Just lots of study time, alone and in groups. Here's some ideas
+for what to focus on after this lesson:
+
+- Continue studying your favorite online tutorials
+- Finish studying `/2-just-enough-javascript` if you haven't yet
+- Study `/3-understanding-programs`
+- `/0-flashcards`: ~20 minutes every day (add more cards as you go!)
diff --git a/lesson-plans/week-1/devtools-debugger/study.json b/lesson-plans/devtools-debugger/study.json
similarity index 100%
rename from lesson-plans/week-1/devtools-debugger/study.json
rename to lesson-plans/devtools-debugger/study.json
diff --git a/lesson-plans/week-2/errors-and-bugs/1-errors/README.md b/lesson-plans/errors-and-bugs/1-errors/README.md
similarity index 100%
rename from lesson-plans/week-2/errors-and-bugs/1-errors/README.md
rename to lesson-plans/errors-and-bugs/1-errors/README.md
diff --git a/lesson-plans/week-2/errors-and-bugs/1-errors/exercises/1-isolate/reference-error/declaration-mistake-1.js b/lesson-plans/errors-and-bugs/1-errors/exercises/1-isolate/reference-error/declaration-mistake-1.js
similarity index 100%
rename from lesson-plans/week-2/errors-and-bugs/1-errors/exercises/1-isolate/reference-error/declaration-mistake-1.js
rename to lesson-plans/errors-and-bugs/1-errors/exercises/1-isolate/reference-error/declaration-mistake-1.js
diff --git a/lesson-plans/week-2/errors-and-bugs/1-errors/exercises/1-isolate/reference-error/declaration-mistake-2.js b/lesson-plans/errors-and-bugs/1-errors/exercises/1-isolate/reference-error/declaration-mistake-2.js
similarity index 100%
rename from lesson-plans/week-2/errors-and-bugs/1-errors/exercises/1-isolate/reference-error/declaration-mistake-2.js
rename to lesson-plans/errors-and-bugs/1-errors/exercises/1-isolate/reference-error/declaration-mistake-2.js
diff --git a/lesson-plans/week-2/errors-and-bugs/1-errors/exercises/1-isolate/reference-error/reading-variable-mistake.js b/lesson-plans/errors-and-bugs/1-errors/exercises/1-isolate/reference-error/reading-variable-mistake.js
similarity index 100%
rename from lesson-plans/week-2/errors-and-bugs/1-errors/exercises/1-isolate/reference-error/reading-variable-mistake.js
rename to lesson-plans/errors-and-bugs/1-errors/exercises/1-isolate/reference-error/reading-variable-mistake.js
diff --git a/lesson-plans/week-2/errors-and-bugs/1-errors/exercises/1-isolate/syntax-error/bad-conditional.js b/lesson-plans/errors-and-bugs/1-errors/exercises/1-isolate/syntax-error/bad-conditional.js
similarity index 100%
rename from lesson-plans/week-2/errors-and-bugs/1-errors/exercises/1-isolate/syntax-error/bad-conditional.js
rename to lesson-plans/errors-and-bugs/1-errors/exercises/1-isolate/syntax-error/bad-conditional.js
diff --git a/lesson-plans/week-2/errors-and-bugs/1-errors/exercises/1-isolate/syntax-error/string-mistake-1.js b/lesson-plans/errors-and-bugs/1-errors/exercises/1-isolate/syntax-error/string-mistake-1.js
similarity index 100%
rename from lesson-plans/week-2/errors-and-bugs/1-errors/exercises/1-isolate/syntax-error/string-mistake-1.js
rename to lesson-plans/errors-and-bugs/1-errors/exercises/1-isolate/syntax-error/string-mistake-1.js
diff --git a/lesson-plans/week-2/errors-and-bugs/1-errors/exercises/1-isolate/syntax-error/string-mistake-2.js b/lesson-plans/errors-and-bugs/1-errors/exercises/1-isolate/syntax-error/string-mistake-2.js
similarity index 100%
rename from lesson-plans/week-2/errors-and-bugs/1-errors/exercises/1-isolate/syntax-error/string-mistake-2.js
rename to lesson-plans/errors-and-bugs/1-errors/exercises/1-isolate/syntax-error/string-mistake-2.js
diff --git a/lesson-plans/week-2/errors-and-bugs/1-errors/exercises/1-isolate/syntax-error/two-declarations.js b/lesson-plans/errors-and-bugs/1-errors/exercises/1-isolate/syntax-error/two-declarations.js
similarity index 100%
rename from lesson-plans/week-2/errors-and-bugs/1-errors/exercises/1-isolate/syntax-error/two-declarations.js
rename to lesson-plans/errors-and-bugs/1-errors/exercises/1-isolate/syntax-error/two-declarations.js
diff --git a/lesson-plans/week-2/errors-and-bugs/1-errors/exercises/1-isolate/syntax-error/variable-name.js b/lesson-plans/errors-and-bugs/1-errors/exercises/1-isolate/syntax-error/variable-name.js
similarity index 100%
rename from lesson-plans/week-2/errors-and-bugs/1-errors/exercises/1-isolate/syntax-error/variable-name.js
rename to lesson-plans/errors-and-bugs/1-errors/exercises/1-isolate/syntax-error/variable-name.js
diff --git a/lesson-plans/week-2/errors-and-bugs/1-errors/exercises/1-isolate/type-error/variable-assignment-mistake.js b/lesson-plans/errors-and-bugs/1-errors/exercises/1-isolate/type-error/variable-assignment-mistake.js
similarity index 100%
rename from lesson-plans/week-2/errors-and-bugs/1-errors/exercises/1-isolate/type-error/variable-assignment-mistake.js
rename to lesson-plans/errors-and-bugs/1-errors/exercises/1-isolate/type-error/variable-assignment-mistake.js
diff --git a/lesson-plans/week-2/errors-and-bugs/1-errors/exercises/2-integrate/1-twice/app.js b/lesson-plans/errors-and-bugs/1-errors/exercises/2-integrate/1-twice/app.js
similarity index 100%
rename from lesson-plans/week-2/errors-and-bugs/1-errors/exercises/2-integrate/1-twice/app.js
rename to lesson-plans/errors-and-bugs/1-errors/exercises/2-integrate/1-twice/app.js
diff --git a/lesson-plans/week-2/errors-and-bugs/1-errors/exercises/2-integrate/1-twice/index.html b/lesson-plans/errors-and-bugs/1-errors/exercises/2-integrate/1-twice/index.html
similarity index 100%
rename from lesson-plans/week-2/errors-and-bugs/1-errors/exercises/2-integrate/1-twice/index.html
rename to lesson-plans/errors-and-bugs/1-errors/exercises/2-integrate/1-twice/index.html
diff --git a/lesson-plans/week-2/errors-and-bugs/1-errors/exercises/2-integrate/1-twice/styles.css b/lesson-plans/errors-and-bugs/1-errors/exercises/2-integrate/1-twice/styles.css
similarity index 100%
rename from lesson-plans/week-2/errors-and-bugs/1-errors/exercises/2-integrate/1-twice/styles.css
rename to lesson-plans/errors-and-bugs/1-errors/exercises/2-integrate/1-twice/styles.css
diff --git a/lesson-plans/week-2/errors-and-bugs/1-errors/exercises/2-integrate/2-time-management/app.js b/lesson-plans/errors-and-bugs/1-errors/exercises/2-integrate/2-time-management/app.js
similarity index 100%
rename from lesson-plans/week-2/errors-and-bugs/1-errors/exercises/2-integrate/2-time-management/app.js
rename to lesson-plans/errors-and-bugs/1-errors/exercises/2-integrate/2-time-management/app.js
diff --git a/lesson-plans/week-2/errors-and-bugs/1-errors/exercises/2-integrate/2-time-management/index.html b/lesson-plans/errors-and-bugs/1-errors/exercises/2-integrate/2-time-management/index.html
similarity index 100%
rename from lesson-plans/week-2/errors-and-bugs/1-errors/exercises/2-integrate/2-time-management/index.html
rename to lesson-plans/errors-and-bugs/1-errors/exercises/2-integrate/2-time-management/index.html
diff --git a/lesson-plans/week-2/errors-and-bugs/1-errors/exercises/2-integrate/2-time-management/styles.css b/lesson-plans/errors-and-bugs/1-errors/exercises/2-integrate/2-time-management/styles.css
similarity index 100%
rename from lesson-plans/week-2/errors-and-bugs/1-errors/exercises/2-integrate/2-time-management/styles.css
rename to lesson-plans/errors-and-bugs/1-errors/exercises/2-integrate/2-time-management/styles.css
diff --git a/lesson-plans/week-2/errors-and-bugs/1-errors/exercises/2-integrate/3-search/app.js b/lesson-plans/errors-and-bugs/1-errors/exercises/2-integrate/3-search/app.js
similarity index 100%
rename from lesson-plans/week-2/errors-and-bugs/1-errors/exercises/2-integrate/3-search/app.js
rename to lesson-plans/errors-and-bugs/1-errors/exercises/2-integrate/3-search/app.js
diff --git a/lesson-plans/week-2/errors-and-bugs/1-errors/exercises/2-integrate/3-search/index.html b/lesson-plans/errors-and-bugs/1-errors/exercises/2-integrate/3-search/index.html
similarity index 100%
rename from lesson-plans/week-2/errors-and-bugs/1-errors/exercises/2-integrate/3-search/index.html
rename to lesson-plans/errors-and-bugs/1-errors/exercises/2-integrate/3-search/index.html
diff --git a/lesson-plans/week-2/errors-and-bugs/1-errors/exercises/2-integrate/3-search/styles.css b/lesson-plans/errors-and-bugs/1-errors/exercises/2-integrate/3-search/styles.css
similarity index 100%
rename from lesson-plans/week-2/errors-and-bugs/1-errors/exercises/2-integrate/3-search/styles.css
rename to lesson-plans/errors-and-bugs/1-errors/exercises/2-integrate/3-search/styles.css
diff --git a/lesson-plans/week-2/errors-and-bugs/1-errors/exercises/2-integrate/4-reverse/app.js b/lesson-plans/errors-and-bugs/1-errors/exercises/2-integrate/4-reverse/app.js
similarity index 100%
rename from lesson-plans/week-2/errors-and-bugs/1-errors/exercises/2-integrate/4-reverse/app.js
rename to lesson-plans/errors-and-bugs/1-errors/exercises/2-integrate/4-reverse/app.js
diff --git a/lesson-plans/week-2/errors-and-bugs/1-errors/exercises/2-integrate/4-reverse/index.html b/lesson-plans/errors-and-bugs/1-errors/exercises/2-integrate/4-reverse/index.html
similarity index 100%
rename from lesson-plans/week-2/errors-and-bugs/1-errors/exercises/2-integrate/4-reverse/index.html
rename to lesson-plans/errors-and-bugs/1-errors/exercises/2-integrate/4-reverse/index.html
diff --git a/lesson-plans/week-2/errors-and-bugs/1-errors/exercises/2-integrate/4-reverse/styles.css b/lesson-plans/errors-and-bugs/1-errors/exercises/2-integrate/4-reverse/styles.css
similarity index 100%
rename from lesson-plans/week-2/errors-and-bugs/1-errors/exercises/2-integrate/4-reverse/styles.css
rename to lesson-plans/errors-and-bugs/1-errors/exercises/2-integrate/4-reverse/styles.css
diff --git a/lesson-plans/week-2/errors-and-bugs/1-errors/exercises/2-integrate/5-mirror/app.js b/lesson-plans/errors-and-bugs/1-errors/exercises/2-integrate/5-mirror/app.js
similarity index 100%
rename from lesson-plans/week-2/errors-and-bugs/1-errors/exercises/2-integrate/5-mirror/app.js
rename to lesson-plans/errors-and-bugs/1-errors/exercises/2-integrate/5-mirror/app.js
diff --git a/lesson-plans/week-2/errors-and-bugs/1-errors/exercises/2-integrate/5-mirror/index.html b/lesson-plans/errors-and-bugs/1-errors/exercises/2-integrate/5-mirror/index.html
similarity index 100%
rename from lesson-plans/week-2/errors-and-bugs/1-errors/exercises/2-integrate/5-mirror/index.html
rename to lesson-plans/errors-and-bugs/1-errors/exercises/2-integrate/5-mirror/index.html
diff --git a/lesson-plans/week-2/errors-and-bugs/1-errors/exercises/2-integrate/5-mirror/styles.css b/lesson-plans/errors-and-bugs/1-errors/exercises/2-integrate/5-mirror/styles.css
similarity index 100%
rename from lesson-plans/week-2/errors-and-bugs/1-errors/exercises/2-integrate/5-mirror/styles.css
rename to lesson-plans/errors-and-bugs/1-errors/exercises/2-integrate/5-mirror/styles.css
diff --git a/lesson-plans/week-2/errors-and-bugs/1-errors/exercises/2-integrate/study.json b/lesson-plans/errors-and-bugs/1-errors/exercises/2-integrate/study.json
similarity index 100%
rename from lesson-plans/week-2/errors-and-bugs/1-errors/exercises/2-integrate/study.json
rename to lesson-plans/errors-and-bugs/1-errors/exercises/2-integrate/study.json
diff --git a/lesson-plans/week-2/errors-and-bugs/1-errors/study.json b/lesson-plans/errors-and-bugs/1-errors/study.json
similarity index 100%
rename from lesson-plans/week-2/errors-and-bugs/1-errors/study.json
rename to lesson-plans/errors-and-bugs/1-errors/study.json
diff --git a/lesson-plans/week-2/errors-and-bugs/2-bugs/README.md b/lesson-plans/errors-and-bugs/2-bugs/README.md
similarity index 100%
rename from lesson-plans/week-2/errors-and-bugs/2-bugs/README.md
rename to lesson-plans/errors-and-bugs/2-bugs/README.md
diff --git a/lesson-plans/week-2/errors-and-bugs/2-bugs/examples/five-long.js b/lesson-plans/errors-and-bugs/2-bugs/examples/five-long.js
similarity index 100%
rename from lesson-plans/week-2/errors-and-bugs/2-bugs/examples/five-long.js
rename to lesson-plans/errors-and-bugs/2-bugs/examples/five-long.js
diff --git a/lesson-plans/week-2/errors-and-bugs/2-bugs/exercises/1-isolate/1-five-long.js b/lesson-plans/errors-and-bugs/2-bugs/exercises/1-isolate/1-five-long.js
similarity index 100%
rename from lesson-plans/week-2/errors-and-bugs/2-bugs/exercises/1-isolate/1-five-long.js
rename to lesson-plans/errors-and-bugs/2-bugs/exercises/1-isolate/1-five-long.js
diff --git a/lesson-plans/week-2/errors-and-bugs/2-bugs/exercises/1-isolate/2-enter-something.js b/lesson-plans/errors-and-bugs/2-bugs/exercises/1-isolate/2-enter-something.js
similarity index 100%
rename from lesson-plans/week-2/errors-and-bugs/2-bugs/exercises/1-isolate/2-enter-something.js
rename to lesson-plans/errors-and-bugs/2-bugs/exercises/1-isolate/2-enter-something.js
diff --git a/lesson-plans/week-2/errors-and-bugs/2-bugs/exercises/1-isolate/3-excitement.js b/lesson-plans/errors-and-bugs/2-bugs/exercises/1-isolate/3-excitement.js
similarity index 100%
rename from lesson-plans/week-2/errors-and-bugs/2-bugs/exercises/1-isolate/3-excitement.js
rename to lesson-plans/errors-and-bugs/2-bugs/exercises/1-isolate/3-excitement.js
diff --git a/lesson-plans/week-2/errors-and-bugs/2-bugs/exercises/1-isolate/4-mirror.js b/lesson-plans/errors-and-bugs/2-bugs/exercises/1-isolate/4-mirror.js
similarity index 100%
rename from lesson-plans/week-2/errors-and-bugs/2-bugs/exercises/1-isolate/4-mirror.js
rename to lesson-plans/errors-and-bugs/2-bugs/exercises/1-isolate/4-mirror.js
diff --git a/lesson-plans/week-2/errors-and-bugs/2-bugs/exercises/2-integrate/1-string-sorter/app.js b/lesson-plans/errors-and-bugs/2-bugs/exercises/2-integrate/1-string-sorter/app.js
similarity index 100%
rename from lesson-plans/week-2/errors-and-bugs/2-bugs/exercises/2-integrate/1-string-sorter/app.js
rename to lesson-plans/errors-and-bugs/2-bugs/exercises/2-integrate/1-string-sorter/app.js
diff --git a/lesson-plans/week-2/errors-and-bugs/2-bugs/exercises/2-integrate/1-string-sorter/app.re.js b/lesson-plans/errors-and-bugs/2-bugs/exercises/2-integrate/1-string-sorter/app.re.js
similarity index 100%
rename from lesson-plans/week-2/errors-and-bugs/2-bugs/exercises/2-integrate/1-string-sorter/app.re.js
rename to lesson-plans/errors-and-bugs/2-bugs/exercises/2-integrate/1-string-sorter/app.re.js
diff --git a/lesson-plans/week-2/errors-and-bugs/2-bugs/exercises/2-integrate/1-string-sorter/index.html b/lesson-plans/errors-and-bugs/2-bugs/exercises/2-integrate/1-string-sorter/index.html
similarity index 100%
rename from lesson-plans/week-2/errors-and-bugs/2-bugs/exercises/2-integrate/1-string-sorter/index.html
rename to lesson-plans/errors-and-bugs/2-bugs/exercises/2-integrate/1-string-sorter/index.html
diff --git a/lesson-plans/week-2/errors-and-bugs/2-bugs/exercises/2-integrate/1-string-sorter/styles.css b/lesson-plans/errors-and-bugs/2-bugs/exercises/2-integrate/1-string-sorter/styles.css
similarity index 100%
rename from lesson-plans/week-2/errors-and-bugs/2-bugs/exercises/2-integrate/1-string-sorter/styles.css
rename to lesson-plans/errors-and-bugs/2-bugs/exercises/2-integrate/1-string-sorter/styles.css
diff --git a/lesson-plans/week-2/errors-and-bugs/2-bugs/exercises/2-integrate/2-pyramid/app.js b/lesson-plans/errors-and-bugs/2-bugs/exercises/2-integrate/2-pyramid/app.js
similarity index 100%
rename from lesson-plans/week-2/errors-and-bugs/2-bugs/exercises/2-integrate/2-pyramid/app.js
rename to lesson-plans/errors-and-bugs/2-bugs/exercises/2-integrate/2-pyramid/app.js
diff --git a/lesson-plans/week-2/errors-and-bugs/2-bugs/exercises/2-integrate/2-pyramid/app.re.js b/lesson-plans/errors-and-bugs/2-bugs/exercises/2-integrate/2-pyramid/app.re.js
similarity index 100%
rename from lesson-plans/week-2/errors-and-bugs/2-bugs/exercises/2-integrate/2-pyramid/app.re.js
rename to lesson-plans/errors-and-bugs/2-bugs/exercises/2-integrate/2-pyramid/app.re.js
diff --git a/lesson-plans/week-2/errors-and-bugs/2-bugs/exercises/2-integrate/2-pyramid/index.html b/lesson-plans/errors-and-bugs/2-bugs/exercises/2-integrate/2-pyramid/index.html
similarity index 100%
rename from lesson-plans/week-2/errors-and-bugs/2-bugs/exercises/2-integrate/2-pyramid/index.html
rename to lesson-plans/errors-and-bugs/2-bugs/exercises/2-integrate/2-pyramid/index.html
diff --git a/lesson-plans/week-2/errors-and-bugs/2-bugs/exercises/2-integrate/2-pyramid/styles.css b/lesson-plans/errors-and-bugs/2-bugs/exercises/2-integrate/2-pyramid/styles.css
similarity index 100%
rename from lesson-plans/week-2/errors-and-bugs/2-bugs/exercises/2-integrate/2-pyramid/styles.css
rename to lesson-plans/errors-and-bugs/2-bugs/exercises/2-integrate/2-pyramid/styles.css
diff --git a/lesson-plans/week-2/errors-and-bugs/2-bugs/exercises/2-integrate/study.json b/lesson-plans/errors-and-bugs/2-bugs/exercises/2-integrate/study.json
similarity index 100%
rename from lesson-plans/week-2/errors-and-bugs/2-bugs/exercises/2-integrate/study.json
rename to lesson-plans/errors-and-bugs/2-bugs/exercises/2-integrate/study.json
diff --git a/lesson-plans/week-2/errors-and-bugs/2-bugs/study.json b/lesson-plans/errors-and-bugs/2-bugs/study.json
similarity index 100%
rename from lesson-plans/week-2/errors-and-bugs/2-bugs/study.json
rename to lesson-plans/errors-and-bugs/2-bugs/study.json
diff --git a/lesson-plans/errors-and-bugs/README.md b/lesson-plans/errors-and-bugs/README.md
new file mode 100644
index 00000000..9773654b
--- /dev/null
+++ b/lesson-plans/errors-and-bugs/README.md
@@ -0,0 +1,55 @@
+# Errors & Bugs
+
+Practice using different features in your browser's DevTools Debugger to
+understand interactive JS programs.
+
+---
+
+## Learning Objectives
+
+- Errors
+ - π₯ Understand the difference between an _error_ and your _mistake_.
+ - π₯ Use error messages and your debugger to find errors in your code.
+ - π₯ Search errors online using the _name_, _message_ and _environment_.
+ - π£ Identify if an error occurred in creation or execution phase.
+ - π£ Fix errors in your programs.
+- Bugs
+ - π₯ Use test cases to check if a program works correctly.
+ - π₯ Find lines in a program that surprise you.
+ - π£ Make small changes and keep track of your experiments.
+ - π₯ Fix bugs in your programs.
+ - π Tracing backwards to understand _why_ something happened.
+
+---
+
+## During Class
+
+Practice fixing errors and bugs in a program.
+
+### Before Break
+
+- **All Together**: [Errors](./1-errors/README.md?--defaults)
+- **In Small Groups**: Practice the exercises in `./1-errors`
+
+**Break!**
+
+### After Break
+
+- **All Together**: [Bugs](./2-bugs/README.md?--defaults)
+- **In Small Groups**: Practice the exercises in `./2-bugs`
+- **All Together** Regroup with ~20 minutes left at the end of class for each
+ group to present:
+ - what went well?
+ - what went less well?
+ - lessons learned
+
+---
+
+## After Class
+
+No deliverables. Just lots of study time, alone and in groups. Here's some ideas
+for what to focus on after this lesson:
+
+- Continue studying your favorite online tutorials
+- Study `/4-developing-programs`
+- `/0-flashcards`: ~20 minutes every day (add more cards as you go!)
diff --git a/lesson-plans/week-1/computers-and-developers/README.md b/lesson-plans/week-1/computers-and-developers/README.md
deleted file mode 100644
index e69de29b..00000000
diff --git a/lesson-plans/week-1/devtools-debugger/README.md b/lesson-plans/week-1/devtools-debugger/README.md
deleted file mode 100644
index e69de29b..00000000
diff --git a/lesson-plans/week-2/errors-and-bugs/README.md b/lesson-plans/week-2/errors-and-bugs/README.md
deleted file mode 100644
index e69de29b..00000000
diff --git a/lesson-plans/week-2/writing-and-reviewing/README.md b/lesson-plans/week-2/writing-and-reviewing/README.md
deleted file mode 100644
index e69de29b..00000000
diff --git a/lesson-plans/week-2/README.md b/lesson-plans/writing-and-reviewing/README.md
similarity index 59%
rename from lesson-plans/week-2/README.md
rename to lesson-plans/writing-and-reviewing/README.md
index d5273308..4705cb96 100644
--- a/lesson-plans/week-2/README.md
+++ b/lesson-plans/writing-and-reviewing/README.md
@@ -1,29 +1,34 @@
-# Week 2
+# Writing & Reviewing
+
+---
## Prep Work
- Study `/3-understanding-programs/7-code-review`
- Read through `/4-developing-programs/0-pair-programming`
-## During Class
-
-Practice fixing errors and bugs in a program and how to write and review code.
+---
-### Before Break
+## Learning Objectives
-- **All Together**: [Errors](../week-2/errors-and-bugs/1-errors/README.md?--defaults)
-- **In Small Groups**: Practice the exercises in `./1-errors`
-- **All Together**: [Bugs](../week-2/errors-and-bugs/2-bugs/README.md?--defaults)
-- **In Small Groups**: Practice the exercises in `./2-bugs`
-- **All Together** Regroup with ~20 minutes left at the end of class for each
- group to present:
- - what went well?
- - what went less well?
- - lessons learned
+- π₯ **Pair Programming**: You can explain the two roles in pair programming
+ (_driver_ and _navigator_), and are comfortable trying either role.
+- π£ **Code Review**: You can work in pairs to review your classmates' programs,
+ including incomplete programs or programs that do not work as expected.
+- π£ **Giving Feedback**: You can give constructive feedback to your classmates
+ about their code after you had a chance to review it.
+- π£ **Learning From Code**: You can clearly explain at least 2 things you
+ learned from studying your classmates' programs.
+- π₯ **Writing Programs**: You can use Pair Programming to write code to satisfy
+ user a story, acceptance criteria & test cases.
+- π **Multiple Solutions**: You can write more than one solution to the same
+ code challenge.
---
-### After Break
+## During Class
+
+### Before Break
- **All Together**: Read through the challenge's specs, test cases & use the
obfuscated solution so everyone understands the expected behavior.
@@ -31,6 +36,11 @@ Practice fixing errors and bugs in a program and how to write and review code.
challenge. Take your time and use the `review.js` as a guide to write the best
code you can.
- Done early? Try writing more solutions
+
+**Break!**
+
+### After Break
+
- **In Pairs**: Find another pair to work with:
- Swap programs and review each others' code, without talking to each other!
If one pair wrote more than one solution, just pick one to review
@@ -45,7 +55,7 @@ Practice fixing errors and bugs in a program and how to write and review code.
---
-The Challenge: Bouncify
+The Challenge: Bouncify
---
@@ -54,6 +64,6 @@ Practice fixing errors and bugs in a program and how to write and review code.
No deliverables. Just lots of study time, alone and in groups. Here's some ideas
for what to focus on after this lesson:
-- `/0-flashcards`: ~20 minutes every day (add more cards as you go!)
- Continue studying your favorite online tutorials
- Study `/4-developing-programs`
+- `/0-flashcards`: ~20 minutes every day (add more cards as you go!)
diff --git a/lesson-plans/week-2/writing-and-reviewing/bouncify/demo.re.js b/lesson-plans/writing-and-reviewing/bouncify/demo.re.js
similarity index 100%
rename from lesson-plans/week-2/writing-and-reviewing/bouncify/demo.re.js
rename to lesson-plans/writing-and-reviewing/bouncify/demo.re.js
diff --git a/lesson-plans/week-2/writing-and-reviewing/bouncify/review.js b/lesson-plans/writing-and-reviewing/bouncify/review.js
similarity index 100%
rename from lesson-plans/week-2/writing-and-reviewing/bouncify/review.js
rename to lesson-plans/writing-and-reviewing/bouncify/review.js
diff --git a/lesson-plans/week-2/writing-and-reviewing/bouncify/solution-1.js b/lesson-plans/writing-and-reviewing/bouncify/solution-1.js
similarity index 100%
rename from lesson-plans/week-2/writing-and-reviewing/bouncify/solution-1.js
rename to lesson-plans/writing-and-reviewing/bouncify/solution-1.js
diff --git a/lesson-plans/week-2/writing-and-reviewing/bouncify/solution-2.js b/lesson-plans/writing-and-reviewing/bouncify/solution-2.js
similarity index 100%
rename from lesson-plans/week-2/writing-and-reviewing/bouncify/solution-2.js
rename to lesson-plans/writing-and-reviewing/bouncify/solution-2.js
diff --git a/lesson-plans/week-2/writing-and-reviewing/bouncify/solution-3.js b/lesson-plans/writing-and-reviewing/bouncify/solution-3.js
similarity index 100%
rename from lesson-plans/week-2/writing-and-reviewing/bouncify/solution-3.js
rename to lesson-plans/writing-and-reviewing/bouncify/solution-3.js
diff --git a/lesson-plans/week-2/writing-and-reviewing/bouncify/solution-4.js b/lesson-plans/writing-and-reviewing/bouncify/solution-4.js
similarity index 100%
rename from lesson-plans/week-2/writing-and-reviewing/bouncify/solution-4.js
rename to lesson-plans/writing-and-reviewing/bouncify/solution-4.js
diff --git a/lesson-plans/week-2/writing-and-reviewing/study.json b/lesson-plans/writing-and-reviewing/study.json
similarity index 100%
rename from lesson-plans/week-2/writing-and-reviewing/study.json
rename to lesson-plans/writing-and-reviewing/study.json
diff --git a/package-lock.json b/package-lock.json
index 579dbbe7..4cce5745 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -8,6 +8,9 @@
"name": "welcome-to-js",
"version": "1.0.0",
"license": "MIT",
+ "dependencies": {
+ "study-lenses": "^0.0.170"
+ },
"devDependencies": {
"@ls-lint/ls-lint": "^2.0.0",
"cspell": "^6.31.1",
@@ -212,9 +215,9 @@
}
},
"node_modules/@babel/parser": {
- "version": "7.23.9",
- "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.9.tgz",
- "integrity": "sha512-9tcKgqKbs3xGJ+NtKF2ndOBBLVwPjl1SHxPQkd36r3Dlirw3xWUeGaTbqr7uGZcTaxkVNwc+03SVP7aCdWrTlA==",
+ "version": "7.24.0",
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.0.tgz",
+ "integrity": "sha512-QuP/FxEAzMSjXygs8v4N9dvdXzEHN4W1oF3PxuWAtPo08UdM17u89RDMgjLn/mlc56iM0HlLmVkO/wgR+rDgHg==",
"dev": true,
"bin": {
"parser": "bin/babel-parser.js"
@@ -224,14 +227,14 @@
}
},
"node_modules/@babel/template": {
- "version": "7.23.9",
- "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.23.9.tgz",
- "integrity": "sha512-+xrD2BWLpvHKNmX2QbpdpsBaWnRxahMwJjO+KZk2JOElj5nSmKezyS1B4u+QbHMTX69t4ukm6hh9lsYQ7GHCKA==",
+ "version": "7.24.0",
+ "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.24.0.tgz",
+ "integrity": "sha512-Bkf2q8lMB0AFpX0NFEqSbx1OkTHf0f+0j82mkw+ZpzBnkk7e9Ql0891vlfgi+kHwOk8tQjiQHpqh4LaSa0fKEA==",
"dev": true,
"dependencies": {
"@babel/code-frame": "^7.23.5",
- "@babel/parser": "^7.23.9",
- "@babel/types": "^7.23.9"
+ "@babel/parser": "^7.24.0",
+ "@babel/types": "^7.24.0"
},
"engines": {
"node": ">=6.9.0"
@@ -322,9 +325,9 @@
}
},
"node_modules/@babel/traverse": {
- "version": "7.23.9",
- "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.9.tgz",
- "integrity": "sha512-I/4UJ9vs90OkBtY6iiiTORVMyIhJ4kAVmsKo9KFc8UOxMeUfi2hvtIBsET5u9GizXE6/GFSuKCTNfgCswuEjRg==",
+ "version": "7.24.0",
+ "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.0.tgz",
+ "integrity": "sha512-HfuJlI8qq3dEDmNU5ChzzpZRWq+oxCZQyMzIMEqLho+AQnhMnKQUzH6ydo3RBl/YjPCuk68Y6s0Gx0AeyULiWw==",
"dev": true,
"dependencies": {
"@babel/code-frame": "^7.23.5",
@@ -333,8 +336,8 @@
"@babel/helper-function-name": "^7.23.0",
"@babel/helper-hoist-variables": "^7.22.5",
"@babel/helper-split-export-declaration": "^7.22.6",
- "@babel/parser": "^7.23.9",
- "@babel/types": "^7.23.9",
+ "@babel/parser": "^7.24.0",
+ "@babel/types": "^7.24.0",
"debug": "^4.3.1",
"globals": "^11.1.0"
},
@@ -436,9 +439,9 @@
}
},
"node_modules/@babel/types": {
- "version": "7.23.9",
- "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.9.tgz",
- "integrity": "sha512-dQjSq/7HaSjRM43FFGnv5keM2HsxpmyV1PfaSVm0nzzjwwTmjOe6J4bC8e3+pTEIgHaHj+1ZlLThRJ2auc/w1Q==",
+ "version": "7.24.0",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.0.tgz",
+ "integrity": "sha512-+j7a5c253RfKh8iABBhywc8NSfP5LURe7Uh4qpsh6jc+aLJguvmIUBdjSdEMQv2bENrCR5MfRdjGo7vzS/ob7w==",
"dev": true,
"dependencies": {
"@babel/helper-string-parser": "^7.23.4",
@@ -1028,9 +1031,9 @@
}
},
"node_modules/@javascript-obfuscator/escodegen": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/@javascript-obfuscator/escodegen/-/escodegen-2.2.0.tgz",
- "integrity": "sha512-vyBqXZqAHWe40dA5tVsXC85KJ0eWgTwPrxZdOtaHH0di7tkb8G8x8MEQs0HbbDdONN7M5M45fyVpEF5aR1++Dw==",
+ "version": "2.2.2",
+ "resolved": "https://registry.npmjs.org/@javascript-obfuscator/escodegen/-/escodegen-2.2.2.tgz",
+ "integrity": "sha512-0VoGJun/lpGEPv8J8R8fpwt1iAGyctUjHTQoYoCbKY2rcGc6d+NycrqSMo61vRXhZiTnHgud1UF8dOI7UAPdTw==",
"dev": true,
"dependencies": {
"@javascript-obfuscator/estraverse": "^5.3.0",
@@ -1145,9 +1148,9 @@
}
},
"node_modules/@jridgewell/set-array": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz",
- "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==",
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz",
+ "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==",
"dev": true,
"engines": {
"node": ">=6.0.0"
@@ -1339,9 +1342,9 @@
"dev": true
},
"node_modules/@types/node": {
- "version": "20.11.20",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-20.11.20.tgz",
- "integrity": "sha512-7/rR21OS+fq8IyHTgtLkDK949uzsa6n8BkziAKtPVpugIkO6D+/ooXMvzXxDnZrmtXVfjb1bKQafYpb8s89LOg==",
+ "version": "20.11.24",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-20.11.24.tgz",
+ "integrity": "sha512-Kza43ewS3xoLgCEpQrsT+xRo/EJej1y0kVYGiLFE1NEODXGzTfwiC6tXTLMQskn1X4/Rjlh0MQUvx9W+L9long==",
"dev": true,
"dependencies": {
"undici-types": "~5.26.4"
@@ -1648,26 +1651,6 @@
"integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==",
"dev": true
},
- "node_modules/array-includes": {
- "version": "3.1.7",
- "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.7.tgz",
- "integrity": "sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "call-bind": "^1.0.2",
- "define-properties": "^1.2.0",
- "es-abstract": "^1.22.1",
- "get-intrinsic": "^1.2.1",
- "is-string": "^1.0.7"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
"node_modules/array-lite": {
"version": "0.1.1",
"resolved": "https://registry.npmjs.org/array-lite/-/array-lite-0.1.1.tgz",
@@ -1689,84 +1672,6 @@
"node": ">=8"
}
},
- "node_modules/array.prototype.filter": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/array.prototype.filter/-/array.prototype.filter-1.0.3.tgz",
- "integrity": "sha512-VizNcj/RGJiUyQBgzwxzE5oHdeuXY5hSbbmKMlphj1cy1Vl7Pn2asCGbSrru6hSQjmCzqTBPVWAF/whmEOVHbw==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "call-bind": "^1.0.2",
- "define-properties": "^1.2.0",
- "es-abstract": "^1.22.1",
- "es-array-method-boxes-properly": "^1.0.0",
- "is-string": "^1.0.7"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/array.prototype.findlastindex": {
- "version": "1.2.4",
- "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.4.tgz",
- "integrity": "sha512-hzvSHUshSpCflDR1QMUBLHGHP1VIEBegT4pix9H/Z92Xw3ySoy6c2qh7lJWTJnRJ8JCZ9bJNCgTyYaJGcJu6xQ==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "call-bind": "^1.0.5",
- "define-properties": "^1.2.1",
- "es-abstract": "^1.22.3",
- "es-errors": "^1.3.0",
- "es-shim-unscopables": "^1.0.2"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/array.prototype.flat": {
- "version": "1.3.2",
- "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz",
- "integrity": "sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "call-bind": "^1.0.2",
- "define-properties": "^1.2.0",
- "es-abstract": "^1.22.1",
- "es-shim-unscopables": "^1.0.0"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/array.prototype.flatmap": {
- "version": "1.3.2",
- "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz",
- "integrity": "sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "call-bind": "^1.0.2",
- "define-properties": "^1.2.0",
- "es-abstract": "^1.22.1",
- "es-shim-unscopables": "^1.0.0"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
"node_modules/arraybuffer.prototype.slice": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz",
@@ -2187,22 +2092,6 @@
"node": ">=6"
}
},
- "node_modules/canvas": {
- "version": "2.8.0",
- "resolved": "https://registry.npmjs.org/canvas/-/canvas-2.8.0.tgz",
- "integrity": "sha512-gLTi17X8WY9Cf5GZ2Yns8T5lfBOcGgFehDFb+JQwDqdOoBOcECS9ZWMEAqMSVcMYwXD659J8NyzjRY/2aE+C2Q==",
- "dev": true,
- "hasInstallScript": true,
- "peer": true,
- "dependencies": {
- "@mapbox/node-pre-gyp": "^1.0.0",
- "nan": "^2.14.0",
- "simple-get": "^3.0.3"
- },
- "engines": {
- "node": ">=6"
- }
- },
"node_modules/chalk": {
"version": "4.1.2",
"resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
@@ -2220,9 +2109,9 @@
}
},
"node_modules/chance": {
- "version": "1.1.7",
- "resolved": "https://registry.npmjs.org/chance/-/chance-1.1.7.tgz",
- "integrity": "sha512-bua/2cZEfzS6qPm0vi3JEvGNbriDLcMj9lKxCQOjUcCJRcyjA7umP0zZm6bKWWlBN04vA0L99QGH/CZQawr0eg==",
+ "version": "1.1.8",
+ "resolved": "https://registry.npmjs.org/chance/-/chance-1.1.8.tgz",
+ "integrity": "sha512-v7fi5Hj2VbR6dJEGRWLmJBA83LJMS47pkAbmROFxHWd9qmE1esHRZW8Clf1Fhzr3rjxnNZVCjOEv/ivFxeIMtg==",
"dev": true
},
"node_modules/char-regex": {
@@ -2450,15 +2339,6 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/clone-response/node_modules/mimic-response": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz",
- "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==",
- "dev": true,
- "engines": {
- "node": ">=4"
- }
- },
"node_modules/color": {
"version": "3.2.1",
"resolved": "https://registry.npmjs.org/color/-/color-3.2.1.tgz",
@@ -2999,16 +2879,15 @@
}
},
"node_modules/decompress-response": {
- "version": "4.2.1",
- "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-4.2.1.tgz",
- "integrity": "sha512-jOSne2qbyE+/r8G1VU+G/82LBs2Fs4LAsTiLSHOCOMZQl2OKZ6i8i4IyHemTe+/yIXOtTcRQMzPcgyhoFlqPkw==",
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz",
+ "integrity": "sha512-BzRPQuY1ip+qDonAOz42gRm/pg9F768C+npV/4JOsxRC2sq+Rlk+Q4ZCAsOhnIaMrgarILY+RMUIvMmmX1qAEA==",
"dev": true,
- "peer": true,
"dependencies": {
- "mimic-response": "^2.0.0"
+ "mimic-response": "^1.0.0"
},
"engines": {
- "node": ">=8"
+ "node": ">=4"
}
},
"node_modules/deep-extend": {
@@ -3590,18 +3469,18 @@
}
},
"node_modules/es-abstract": {
- "version": "1.22.4",
- "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.4.tgz",
- "integrity": "sha512-vZYJlk2u6qHYxBOTjAeg7qUxHdNfih64Uu2J8QqWgXZ2cri0ZpJAkzDUK/q593+mvKwlxyaxr6F1Q+3LKoQRgg==",
+ "version": "1.22.5",
+ "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.5.tgz",
+ "integrity": "sha512-oW69R+4q2wG+Hc3KZePPZxOiisRIqfKBVo/HLx94QcJeWGU/8sZhCvc829rd1kS366vlJbzBfXf9yWwf0+Ko7w==",
"dev": true,
"dependencies": {
"array-buffer-byte-length": "^1.0.1",
"arraybuffer.prototype.slice": "^1.0.3",
- "available-typed-arrays": "^1.0.6",
+ "available-typed-arrays": "^1.0.7",
"call-bind": "^1.0.7",
"es-define-property": "^1.0.0",
"es-errors": "^1.3.0",
- "es-set-tostringtag": "^2.0.2",
+ "es-set-tostringtag": "^2.0.3",
"es-to-primitive": "^1.2.1",
"function.prototype.name": "^1.1.6",
"get-intrinsic": "^1.2.4",
@@ -3609,15 +3488,15 @@
"globalthis": "^1.0.3",
"gopd": "^1.0.1",
"has-property-descriptors": "^1.0.2",
- "has-proto": "^1.0.1",
+ "has-proto": "^1.0.3",
"has-symbols": "^1.0.3",
"hasown": "^2.0.1",
"internal-slot": "^1.0.7",
"is-array-buffer": "^3.0.4",
"is-callable": "^1.2.7",
- "is-negative-zero": "^2.0.2",
+ "is-negative-zero": "^2.0.3",
"is-regex": "^1.1.4",
- "is-shared-array-buffer": "^1.0.2",
+ "is-shared-array-buffer": "^1.0.3",
"is-string": "^1.0.7",
"is-typed-array": "^1.1.13",
"is-weakref": "^1.0.2",
@@ -3630,10 +3509,10 @@
"string.prototype.trim": "^1.2.8",
"string.prototype.trimend": "^1.0.7",
"string.prototype.trimstart": "^1.0.7",
- "typed-array-buffer": "^1.0.1",
- "typed-array-byte-length": "^1.0.0",
- "typed-array-byte-offset": "^1.0.0",
- "typed-array-length": "^1.0.4",
+ "typed-array-buffer": "^1.0.2",
+ "typed-array-byte-length": "^1.0.1",
+ "typed-array-byte-offset": "^1.0.2",
+ "typed-array-length": "^1.0.5",
"unbox-primitive": "^1.0.2",
"which-typed-array": "^1.1.14"
},
@@ -3644,13 +3523,6 @@
"url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/es-array-method-boxes-properly": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz",
- "integrity": "sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==",
- "dev": true,
- "peer": true
- },
"node_modules/es-define-property": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz",
@@ -3686,16 +3558,6 @@
"node": ">= 0.4"
}
},
- "node_modules/es-shim-unscopables": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz",
- "integrity": "sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "hasown": "^2.0.0"
- }
- },
"node_modules/es-to-primitive": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz",
@@ -3867,119 +3729,27 @@
"node": "^10.12.0 || >=12.0.0"
}
},
- "node_modules/eslint-import-resolver-node": {
- "version": "0.3.9",
- "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz",
- "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "debug": "^3.2.7",
- "is-core-module": "^2.13.0",
- "resolve": "^1.22.4"
- }
- },
- "node_modules/eslint-import-resolver-node/node_modules/debug": {
- "version": "3.2.7",
- "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
- "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "ms": "^2.1.1"
- }
- },
- "node_modules/eslint-module-utils": {
- "version": "2.8.0",
- "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.8.0.tgz",
- "integrity": "sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "debug": "^3.2.7"
- },
- "engines": {
- "node": ">=4"
- },
- "peerDependenciesMeta": {
- "eslint": {
- "optional": true
- }
- }
- },
- "node_modules/eslint-module-utils/node_modules/debug": {
- "version": "3.2.7",
- "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
- "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "ms": "^2.1.1"
- }
- },
- "node_modules/eslint-plugin-import": {
- "version": "2.29.1",
- "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.29.1.tgz",
- "integrity": "sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==",
+ "node_modules/eslint-plugin-jsdoc": {
+ "version": "33.3.0",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-33.3.0.tgz",
+ "integrity": "sha512-wt6I9X8JoOyUtnsafM7AWBEfLCD3BI1wR5/vTu0hti4CoZc37bB4ZX9A7DsWKbEC/xROAAcBV2VAT638w9VKyQ==",
"dev": true,
- "peer": true,
"dependencies": {
- "array-includes": "^3.1.7",
- "array.prototype.findlastindex": "^1.2.3",
- "array.prototype.flat": "^1.3.2",
- "array.prototype.flatmap": "^1.3.2",
- "debug": "^3.2.7",
- "doctrine": "^2.1.0",
- "eslint-import-resolver-node": "^0.3.9",
- "eslint-module-utils": "^2.8.0",
- "hasown": "^2.0.0",
- "is-core-module": "^2.13.1",
- "is-glob": "^4.0.3",
- "minimatch": "^3.1.2",
- "object.fromentries": "^2.0.7",
- "object.groupby": "^1.0.1",
- "object.values": "^1.1.7",
- "semver": "^6.3.1",
- "tsconfig-paths": "^3.15.0"
+ "@es-joy/jsdoccomment": "^0.4.4",
+ "comment-parser": "1.1.5",
+ "debug": "^4.3.1",
+ "esquery": "^1.4.0",
+ "jsdoctypeparser": "^9.0.0",
+ "lodash": "^4.17.21",
+ "regextras": "^0.7.1",
+ "semver": "^7.3.5",
+ "spdx-expression-parse": "^3.0.1"
},
"engines": {
- "node": ">=4"
+ "node": ">=10"
},
"peerDependencies": {
- "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8"
- }
- },
- "node_modules/eslint-plugin-import/node_modules/debug": {
- "version": "3.2.7",
- "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
- "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "ms": "^2.1.1"
- }
- },
- "node_modules/eslint-plugin-import/node_modules/doctrine": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz",
- "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "esutils": "^2.0.2"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/eslint-plugin-import/node_modules/semver": {
- "version": "6.3.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
- "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
- "dev": true,
- "peer": true,
- "bin": {
- "semver": "bin/semver.js"
+ "eslint": "^6.0.0 || ^7.0.0"
}
},
"node_modules/eslint-plugin-prettier": {
@@ -4172,14 +3942,14 @@
}
},
"node_modules/express": {
- "version": "4.18.2",
- "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz",
- "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==",
+ "version": "4.18.3",
+ "resolved": "https://registry.npmjs.org/express/-/express-4.18.3.tgz",
+ "integrity": "sha512-6VyCijWQ+9O7WuVMTRBTl+cjNNIzD5cY5mQ1WM8r/LEkI2u8EYpOotESNwzNlyCn3g+dmjKYI6BmNneSr/FSRw==",
"dev": true,
"dependencies": {
"accepts": "~1.3.8",
"array-flatten": "1.1.1",
- "body-parser": "1.20.1",
+ "body-parser": "1.20.2",
"content-disposition": "0.5.4",
"content-type": "~1.0.4",
"cookie": "0.5.0",
@@ -4213,30 +3983,6 @@
"node": ">= 0.10.0"
}
},
- "node_modules/express/node_modules/body-parser": {
- "version": "1.20.1",
- "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz",
- "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==",
- "dev": true,
- "dependencies": {
- "bytes": "3.1.2",
- "content-type": "~1.0.4",
- "debug": "2.6.9",
- "depd": "2.0.0",
- "destroy": "1.2.0",
- "http-errors": "2.0.0",
- "iconv-lite": "0.4.24",
- "on-finished": "2.4.1",
- "qs": "6.11.0",
- "raw-body": "2.5.1",
- "type-is": "~1.6.18",
- "unpipe": "1.0.0"
- },
- "engines": {
- "node": ">= 0.8",
- "npm": "1.2.8000 || >= 1.4.16"
- }
- },
"node_modules/express/node_modules/cookie": {
"version": "0.5.0",
"resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz",
@@ -4279,21 +4025,6 @@
"integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
"dev": true
},
- "node_modules/express/node_modules/raw-body": {
- "version": "2.5.1",
- "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz",
- "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==",
- "dev": true,
- "dependencies": {
- "bytes": "3.1.2",
- "http-errors": "2.0.0",
- "iconv-lite": "0.4.24",
- "unpipe": "1.0.0"
- },
- "engines": {
- "node": ">= 0.8"
- }
- },
"node_modules/external-editor": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz",
@@ -4960,18 +4691,6 @@
"node": ">=8.6"
}
},
- "node_modules/got/node_modules/decompress-response": {
- "version": "3.3.0",
- "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz",
- "integrity": "sha512-BzRPQuY1ip+qDonAOz42gRm/pg9F768C+npV/4JOsxRC2sq+Rlk+Q4ZCAsOhnIaMrgarILY+RMUIvMmmX1qAEA==",
- "dev": true,
- "dependencies": {
- "mimic-response": "^1.0.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
"node_modules/got/node_modules/get-stream": {
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz",
@@ -4984,15 +4703,6 @@
"node": ">=6"
}
},
- "node_modules/got/node_modules/mimic-response": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz",
- "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==",
- "dev": true,
- "engines": {
- "node": ">=4"
- }
- },
"node_modules/graceful-fs": {
"version": "4.2.11",
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz",
@@ -5586,19 +5296,6 @@
"is-ci": "bin.js"
}
},
- "node_modules/is-core-module": {
- "version": "2.13.1",
- "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz",
- "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "hasown": "^2.0.0"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
"node_modules/is-date-object": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz",
@@ -5975,22 +5672,22 @@
}
},
"node_modules/javascript-obfuscator": {
- "version": "2.17.0",
- "resolved": "https://registry.npmjs.org/javascript-obfuscator/-/javascript-obfuscator-2.17.0.tgz",
- "integrity": "sha512-R7WqpiMh7lvi/9E1g76zUw3MEWJ/6kuK8vj13fWdMm+QjjJuYSjunxkWe5KnbL8kh6zNpAKY8HN3I0ZGUfVVHg==",
+ "version": "2.19.1",
+ "resolved": "https://registry.npmjs.org/javascript-obfuscator/-/javascript-obfuscator-2.19.1.tgz",
+ "integrity": "sha512-NPoC0pUBKHiFJqAm/+hHDM1FzpreUGkzkBTAWDYkA+XI6wZWRqjwlDAjLOwWbjqNwnW/QqkPf35KMAZC/oHtiw==",
"dev": true,
"hasInstallScript": true,
"dependencies": {
- "@javascript-obfuscator/escodegen": "2.2.0",
+ "@javascript-obfuscator/escodegen": "2.2.2",
"@javascript-obfuscator/estraverse": "5.3.0",
"@nuxtjs/opencollective": "0.3.2",
- "acorn": "8.4.1",
+ "acorn": "8.5.0",
"assert": "2.0.0",
- "chalk": "4.1.1",
- "chance": "1.1.7",
+ "chalk": "4.1.2",
+ "chance": "1.1.8",
"class-validator": "0.13.1",
- "commander": "8.0.0",
- "eslint-scope": "5.1.1",
+ "commander": "8.2.0",
+ "eslint-scope": "6.0.0",
"fast-deep-equal": "3.1.3",
"inversify": "5.1.1",
"js-string-escape": "1.0.1",
@@ -5999,16 +5696,16 @@
"multimatch": "5.0.0",
"process": "0.11.10",
"reflect-metadata": "0.1.13",
- "source-map-support": "0.5.19",
+ "source-map-support": "0.5.20",
"string-template": "1.0.0",
"stringz": "2.1.0",
- "tslib": "2.3.0"
+ "tslib": "2.3.1"
},
"bin": {
"javascript-obfuscator": "bin/javascript-obfuscator"
},
"engines": {
- "node": ">=12"
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
},
"funding": {
"type": "opencollective",
@@ -6016,9 +5713,9 @@
}
},
"node_modules/javascript-obfuscator/node_modules/acorn": {
- "version": "8.4.1",
- "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.4.1.tgz",
- "integrity": "sha512-asabaBSkEKosYKMITunzX177CXxQ4Q8BSSzMTKD+FefUhipQC70gfW5SiUDhYQ3vk8G+81HqQk7Fv9OXwwn9KA==",
+ "version": "8.5.0",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.5.0.tgz",
+ "integrity": "sha512-yXbYeFy+jUuYd3/CDcg2NkIYE991XYX/bje7LmjJigUciaeO1JR4XxXgCIV1/Zc/dRuFEyw1L0pbA+qynJkW5Q==",
"dev": true,
"bin": {
"acorn": "bin/acorn"
@@ -6027,57 +5724,32 @@
"node": ">=0.4.0"
}
},
- "node_modules/javascript-obfuscator/node_modules/chalk": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz",
- "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==",
- "dev": true,
- "dependencies": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/chalk?sponsor=1"
- }
- },
"node_modules/javascript-obfuscator/node_modules/commander": {
- "version": "8.0.0",
- "resolved": "https://registry.npmjs.org/commander/-/commander-8.0.0.tgz",
- "integrity": "sha512-Xvf85aAtu6v22+E5hfVoLHqyul/jyxh91zvqk/ioJTQuJR7Z78n7H558vMPKanPSRgIEeZemT92I2g9Y8LPbSQ==",
+ "version": "8.2.0",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-8.2.0.tgz",
+ "integrity": "sha512-LLKxDvHeL91/8MIyTAD5BFMNtoIwztGPMiM/7Bl8rIPmHCZXRxmSWr91h57dpOpnQ6jIUqEWdXE/uBYMfiVZDA==",
"dev": true,
"engines": {
"node": ">= 12"
}
},
"node_modules/javascript-obfuscator/node_modules/eslint-scope": {
- "version": "5.1.1",
- "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz",
- "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==",
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-6.0.0.tgz",
+ "integrity": "sha512-uRDL9MWmQCkaFus8RF5K9/L/2fn+80yoW3jkD53l4shjCh26fCtvJGasxjUqP5OT87SYTxCVA3BwTUzuELx9kA==",
"dev": true,
"dependencies": {
"esrecurse": "^4.3.0",
- "estraverse": "^4.1.1"
+ "estraverse": "^5.2.0"
},
"engines": {
- "node": ">=8.0.0"
- }
- },
- "node_modules/javascript-obfuscator/node_modules/estraverse": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz",
- "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==",
- "dev": true,
- "engines": {
- "node": ">=4.0"
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
}
},
"node_modules/javascript-obfuscator/node_modules/tslib": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.0.tgz",
- "integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==",
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz",
+ "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==",
"dev": true
},
"node_modules/jest-diff": {
@@ -6778,16 +6450,12 @@
}
},
"node_modules/mimic-response": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-2.1.0.tgz",
- "integrity": "sha512-wXqjST+SLt7R009ySCglWBCFpjUygmCIfD790/kVbiGmUgfYGuB14PiTd5DwVxSV4NcYHjzMkoj5LjQZwTQLEA==",
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz",
+ "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==",
"dev": true,
- "peer": true,
"engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "node": ">=4"
}
},
"node_modules/min-document": {
@@ -6830,12 +6498,12 @@
}
},
"node_modules/minipass": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz",
- "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==",
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-6.0.2.tgz",
+ "integrity": "sha512-MzWSV5nYVT7mVyWCwn2o7JH13w2TBRmmSqSRCKzTw+lmft9X4z+3wjvs06Tzijo5z4W/kahUCDpRXTF+ZrmF/w==",
"dev": true,
"engines": {
- "node": ">=8"
+ "node": ">=16 || 14 >=14.17"
}
},
"node_modules/minizlib": {
@@ -6967,13 +6635,6 @@
"integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==",
"dev": true
},
- "node_modules/nan": {
- "version": "2.18.0",
- "resolved": "https://registry.npmjs.org/nan/-/nan-2.18.0.tgz",
- "integrity": "sha512-W7tfG7vMOGtD30sHoZSSc/JVYiyDPEyQVso/Zz+/uQd0B0L46gtC+pHha5FFMRpil6fm/AoEcRWyOVi4+E/f8w==",
- "dev": true,
- "peer": true
- },
"node_modules/natural-compare": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
@@ -7095,13 +6756,13 @@
}
},
"node_modules/object-is": {
- "version": "1.1.5",
- "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz",
- "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==",
+ "version": "1.1.6",
+ "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.6.tgz",
+ "integrity": "sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q==",
"dev": true,
"dependencies": {
- "call-bind": "^1.0.2",
- "define-properties": "^1.1.3"
+ "call-bind": "^1.0.7",
+ "define-properties": "^1.2.1"
},
"engines": {
"node": ">= 0.4"
@@ -7151,56 +6812,6 @@
"node": ">= 0.4"
}
},
- "node_modules/object.fromentries": {
- "version": "2.0.7",
- "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.7.tgz",
- "integrity": "sha512-UPbPHML6sL8PI/mOqPwsH4G6iyXcCGzLin8KvEPenOZN5lpCNBZZQ+V62vdjB1mQHrmqGQt5/OJzemUA+KJmEA==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "call-bind": "^1.0.2",
- "define-properties": "^1.2.0",
- "es-abstract": "^1.22.1"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/object.groupby": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.2.tgz",
- "integrity": "sha512-bzBq58S+x+uo0VjurFT0UktpKHOZmv4/xePiOA1nbB9pMqpGK7rUPNgf+1YC+7mE+0HzhTMqNUuCqvKhj6FnBw==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "array.prototype.filter": "^1.0.3",
- "call-bind": "^1.0.5",
- "define-properties": "^1.2.1",
- "es-abstract": "^1.22.3",
- "es-errors": "^1.0.0"
- }
- },
- "node_modules/object.values": {
- "version": "1.1.7",
- "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.7.tgz",
- "integrity": "sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "call-bind": "^1.0.2",
- "define-properties": "^1.2.0",
- "es-abstract": "^1.22.1"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
"node_modules/on-finished": {
"version": "2.4.1",
"resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz",
@@ -7547,13 +7158,6 @@
"node": ">=8"
}
},
- "node_modules/path-parse": {
- "version": "1.0.7",
- "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
- "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
- "dev": true,
- "peer": true
- },
"node_modules/path-scurry": {
"version": "1.10.1",
"resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.1.tgz",
@@ -7972,24 +7576,6 @@
"integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==",
"dev": true
},
- "node_modules/resolve": {
- "version": "1.22.8",
- "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz",
- "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "is-core-module": "^2.13.0",
- "path-parse": "^1.0.7",
- "supports-preserve-symlinks-flag": "^1.0.0"
- },
- "bin": {
- "resolve": "bin/resolve"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
"node_modules/resolve-from": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz",
@@ -8567,39 +8153,6 @@
"url": "https://github.com/sponsors/isaacs"
}
},
- "node_modules/simple-concat": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz",
- "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==",
- "dev": true,
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/feross"
- },
- {
- "type": "patreon",
- "url": "https://www.patreon.com/feross"
- },
- {
- "type": "consulting",
- "url": "https://feross.org/support"
- }
- ],
- "peer": true
- },
- "node_modules/simple-get": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-3.1.1.tgz",
- "integrity": "sha512-CQ5LTKGfCpvE1K0n2us+kuMPbk/q0EKl82s4aheV9oXjFEz6W/Y7oQFVJuU6QG77hRT4Ghb5RURteF5vnWjupA==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "decompress-response": "^4.2.0",
- "once": "^1.3.1",
- "simple-concat": "^1.0.0"
- }
- },
"node_modules/simple-swizzle": {
"version": "0.2.2",
"resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz",
@@ -8651,9 +8204,9 @@
}
},
"node_modules/source-map-support": {
- "version": "0.5.19",
- "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz",
- "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==",
+ "version": "0.5.20",
+ "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.20.tgz",
+ "integrity": "sha512-n1lZZ8Ve4ksRqizaBQgxXDgKwttHDhyfQjA6YZZn8+AroHbsIz+JjwxQDxbp+7y5OYCI8t1Yk7etjD9CRd2hIw==",
"dev": true,
"dependencies": {
"buffer-from": "^1.0.0",
@@ -9073,29 +8626,6 @@
"url": "https://opencollective.com/eslint"
}
},
- "node_modules/study-lenses/node_modules/eslint-plugin-jsdoc": {
- "version": "33.3.0",
- "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-33.3.0.tgz",
- "integrity": "sha512-wt6I9X8JoOyUtnsafM7AWBEfLCD3BI1wR5/vTu0hti4CoZc37bB4ZX9A7DsWKbEC/xROAAcBV2VAT638w9VKyQ==",
- "dev": true,
- "dependencies": {
- "@es-joy/jsdoccomment": "^0.4.4",
- "comment-parser": "1.1.5",
- "debug": "^4.3.1",
- "esquery": "^1.4.0",
- "jsdoctypeparser": "^9.0.0",
- "lodash": "^4.17.21",
- "regextras": "^0.7.1",
- "semver": "^7.3.5",
- "spdx-expression-parse": "^3.0.1"
- },
- "engines": {
- "node": ">=10"
- },
- "peerDependencies": {
- "eslint": "^6.0.0 || ^7.0.0"
- }
- },
"node_modules/study-lenses/node_modules/eslint-scope": {
"version": "5.1.1",
"resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz",
@@ -9208,19 +8738,6 @@
"node": ">=8"
}
},
- "node_modules/supports-preserve-symlinks-flag": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
- "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
- "dev": true,
- "peer": true,
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
"node_modules/table": {
"version": "6.8.1",
"resolved": "https://registry.npmjs.org/table/-/table-6.8.1.tgz",
@@ -9305,6 +8822,15 @@
"node": ">=10"
}
},
+ "node_modules/tar/node_modules/minipass": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz",
+ "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
"node_modules/teamcity-service-messages": {
"version": "0.1.12",
"resolved": "https://registry.npmjs.org/teamcity-service-messages/-/teamcity-service-messages-0.1.12.tgz",
@@ -9347,16 +8873,6 @@
"integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==",
"dev": true
},
- "node_modules/terser/node_modules/source-map-support": {
- "version": "0.5.21",
- "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz",
- "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==",
- "dev": true,
- "dependencies": {
- "buffer-from": "^1.0.0",
- "source-map": "^0.6.0"
- }
- },
"node_modules/text-hex": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/text-hex/-/text-hex-1.0.0.tgz",
diff --git a/package.json b/package.json
index 1dc22ad7..ca5bcfea 100644
--- a/package.json
+++ b/package.json
@@ -10,10 +10,16 @@
"lint:ls": "ls-lint",
"lint:md": "markdownlint --ignore node_modules --ignore flashcards --config ./.markdownlint.jsonc --fix ./ ",
"lint:js": "eslint --max-warnings=0 --ext=.js --format=codeframe --format=table",
- "study": "lenses2"
+ "study": "lenses2",
+ "demo:local": "study --demo-reset=300000 --reset-ignore=node_modules",
+ "demo:deployed": "study --demo-reset=300000 --reset-ignore=node_modules --no-open",
+ "demo:dev": "study --demo-reset=10000 --reset-ignore=node_modules, --no-open"
},
"author": "HackYourFutureBelgium",
"license": "MIT",
+ "dependencies": {
+ "study-lenses": "^0.0.170"
+ },
"devDependencies": {
"@ls-lint/ls-lint": "^2.0.0",
"cspell": "^6.31.1",