diff --git a/docs/6-exercise/1-basis-of-web/_samples/blackjack/index.html b/docs/6-exercise/1-basis-of-web/_samples/blackjack/index.html
deleted file mode 100644
index df19d1882..000000000
--- a/docs/6-exercise/1-basis-of-web/_samples/blackjack/index.html
+++ /dev/null
@@ -1,10 +0,0 @@
-
-
-
-
- Title
-
-
-
-
-
diff --git a/docs/6-exercise/1-basis-of-web/_samples/blackjack/script.js b/docs/6-exercise/1-basis-of-web/_samples/blackjack/script.js
deleted file mode 100644
index ca890e6f3..000000000
--- a/docs/6-exercise/1-basis-of-web/_samples/blackjack/script.js
+++ /dev/null
@@ -1,14 +0,0 @@
-let tanakaHandTotal = 19;
-let satoHandTotal = 22;
-
-// 21を超えていた場合は0(最弱)として扱う
-if (tanakaHandTotal > 21) tanakaHandTotal = 0;
-if (satoHandTotal > 21) satoHandTotal = 0;
-
-if (tanakaHandTotal > satoHandTotal) {
- document.write("田中さんの勝ち");
-} else if (tanakaHandTotal < satoHandTotal) {
- document.write("佐藤さんの勝ち");
-} else {
- document.write("引き分け");
-}
diff --git a/docs/6-exercise/1-basis-of-web/_samples/bubble-sort-pure/index.html b/docs/6-exercise/1-basis-of-web/_samples/bubble-sort-pure/index.html
deleted file mode 100644
index f5e9fd303..000000000
--- a/docs/6-exercise/1-basis-of-web/_samples/bubble-sort-pure/index.html
+++ /dev/null
@@ -1,10 +0,0 @@
-
-
-
-
- バブルソート 解答例 (純粋関数)
-
-
-
-
-
diff --git a/docs/6-exercise/1-basis-of-web/_samples/bubble-sort-pure/script.js b/docs/6-exercise/1-basis-of-web/_samples/bubble-sort-pure/script.js
deleted file mode 100644
index fb65a6d6b..000000000
--- a/docs/6-exercise/1-basis-of-web/_samples/bubble-sort-pure/script.js
+++ /dev/null
@@ -1,21 +0,0 @@
-function swapIndex(array, indexA, indexB) {
- const temp = array[indexA];
- array[indexA] = array[indexB];
- array[indexB] = temp;
-}
-function bubbleSort(inputArray) {
- const array = inputArray.slice();
- for (let i = array.length - 1; i > 0; i--) {
- for (let j = 0; j < i; j++) {
- if (array[j] > array[j + 1]) swapIndex(array, j, j + 1);
- }
- }
- return array;
-}
-
-unsorted_array = [
- 8, 2, 9, 14, 12, 1, 5, 13, 16, 3, 19, 17, 18, 10, 15, 7, 20, 11, 6, 4,
-];
-sorted_array = bubbleSort(unsorted_array);
-document.write(`sorted array: [${sorted_array}]
`);
-document.write(`unsorted array(shouldn't be sorted): [${unsorted_array}]`);
diff --git a/docs/6-exercise/1-basis-of-web/_samples/bubble-sort/index.html b/docs/6-exercise/1-basis-of-web/_samples/bubble-sort/index.html
deleted file mode 100644
index 5a882dc4e..000000000
--- a/docs/6-exercise/1-basis-of-web/_samples/bubble-sort/index.html
+++ /dev/null
@@ -1,10 +0,0 @@
-
-
-
-
- バブルソート 解答例
-
-
-
-
-
diff --git a/docs/6-exercise/1-basis-of-web/_samples/bubble-sort/script.js b/docs/6-exercise/1-basis-of-web/_samples/bubble-sort/script.js
deleted file mode 100644
index c2860e6b1..000000000
--- a/docs/6-exercise/1-basis-of-web/_samples/bubble-sort/script.js
+++ /dev/null
@@ -1,19 +0,0 @@
-function swapIndex(array, indexA, indexB) {
- const temp = array[indexA];
- array[indexA] = array[indexB];
- array[indexB] = temp;
-}
-function bubbleSort(array) {
- for (let i = array.length - 1; i > 0; i--) {
- for (let j = 0; j < i; j++) {
- if (array[j] > array[j + 1]) swapIndex(array, j, j + 1);
- }
- }
- return array;
-}
-
-unsorted_array = [
- 8, 2, 9, 14, 12, 1, 5, 13, 16, 3, 19, 17, 18, 10, 15, 7, 20, 11, 6, 4,
-];
-sorted_array = bubbleSort(unsorted_array);
-document.write(`sorted array: [${sorted_array}]`);
diff --git a/docs/6-exercise/1-basis-of-web/_samples/fibonacci/array/index.html b/docs/6-exercise/1-basis-of-web/_samples/fibonacci/array/index.html
deleted file mode 100644
index f798747d4..000000000
--- a/docs/6-exercise/1-basis-of-web/_samples/fibonacci/array/index.html
+++ /dev/null
@@ -1,10 +0,0 @@
-
-
-
-
- Document
-
-
-
-
-
diff --git a/docs/6-exercise/1-basis-of-web/_samples/fibonacci/array/script.js b/docs/6-exercise/1-basis-of-web/_samples/fibonacci/array/script.js
deleted file mode 100644
index 08341f0c4..000000000
--- a/docs/6-exercise/1-basis-of-web/_samples/fibonacci/array/script.js
+++ /dev/null
@@ -1,9 +0,0 @@
-function fibonacci(n) {
- let sequence = [0, 1];
- for (let i = 2; i < n + 1; i += 1) {
- sequence.push(sequence[i - 1] + sequence[i - 2]);
- }
- return sequence[n];
-}
-
-document.write(fibonacci(10));
diff --git a/docs/6-exercise/1-basis-of-web/_samples/fibonacci/recursion/index.html b/docs/6-exercise/1-basis-of-web/_samples/fibonacci/recursion/index.html
deleted file mode 100644
index f798747d4..000000000
--- a/docs/6-exercise/1-basis-of-web/_samples/fibonacci/recursion/index.html
+++ /dev/null
@@ -1,10 +0,0 @@
-
-
-
-
- Document
-
-
-
-
-
diff --git a/docs/6-exercise/1-basis-of-web/_samples/fibonacci/recursion/script.js b/docs/6-exercise/1-basis-of-web/_samples/fibonacci/recursion/script.js
deleted file mode 100644
index bb22d7256..000000000
--- a/docs/6-exercise/1-basis-of-web/_samples/fibonacci/recursion/script.js
+++ /dev/null
@@ -1,9 +0,0 @@
-function fibonacci(n) {
- if (n <= 2) {
- return 1;
- }
- return fibonacci(n - 1) + fibonacci(n - 2);
-}
-// このように、関数が自分自身を呼び出すときその関数を再帰関数と呼びます。
-
-document.write(fibonacci(10));
diff --git a/docs/6-exercise/1-basis-of-web/_samples/html/index.html b/docs/6-exercise/1-basis-of-web/_samples/html/index.html
deleted file mode 100644
index 7927339af..000000000
--- a/docs/6-exercise/1-basis-of-web/_samples/html/index.html
+++ /dev/null
@@ -1,43 +0,0 @@
-
-
-
-
- ut.code(); のウェブサイト
-
-
- ut.code();
-
- ut.code(); とは
-
- ut.code(); は、2019
- 年設立の東京大学のソフトウェアエンジニアリングコミュニティです。
-
- 主な活動
-
- -
- 学習
-
- - 学習カリキュラムの作成
- - 自主ゼミの開講
- - 「はじめてのプログラミング教室」の出展
-
-
- -
- 交流
-
- - 作業会の開催
- - 五月祭・駒場祭への出展
- - 合宿の開催
-
-
- -
- 開発
-
- - プロジェクトの開発
- - ブレインストーミングの実施
- - 定例ミーティングの開催
-
-
-
-
-
diff --git a/docs/6-exercise/1-basis-of-web/_samples/html/logo.svg b/docs/6-exercise/1-basis-of-web/_samples/html/logo.svg
deleted file mode 100644
index bfee0a6b4..000000000
--- a/docs/6-exercise/1-basis-of-web/_samples/html/logo.svg
+++ /dev/null
@@ -1,34 +0,0 @@
-
-
-
diff --git a/docs/6-exercise/1-basis-of-web/_samples/length-of-name/index.html b/docs/6-exercise/1-basis-of-web/_samples/length-of-name/index.html
deleted file mode 100644
index df19d1882..000000000
--- a/docs/6-exercise/1-basis-of-web/_samples/length-of-name/index.html
+++ /dev/null
@@ -1,10 +0,0 @@
-
-
-
-
- Title
-
-
-
-
-
diff --git a/docs/6-exercise/1-basis-of-web/_samples/length-of-name/script.js b/docs/6-exercise/1-basis-of-web/_samples/length-of-name/script.js
deleted file mode 100644
index f2c72153f..000000000
--- a/docs/6-exercise/1-basis-of-web/_samples/length-of-name/script.js
+++ /dev/null
@@ -1,10 +0,0 @@
-let nameLength = 7;
-if (4 <= nameLength && nameLength <= 10) {
- // 比較演算子を2つ並べるのではなく、論理演算子&&を用います。
- document.write("登録できます");
-} else if (nameLength === 0) {
- // else if の else が抜けていました。
- document.write("名前を入力してください");
-} else {
- document.write("名前は4文字以上10文字以下で入力してください");
-}
diff --git a/docs/6-exercise/1-basis-of-web/_samples/times-table/index.html b/docs/6-exercise/1-basis-of-web/_samples/times-table/index.html
deleted file mode 100644
index 9448cf692..000000000
--- a/docs/6-exercise/1-basis-of-web/_samples/times-table/index.html
+++ /dev/null
@@ -1,10 +0,0 @@
-
-
-
-
- 九九の表 解答例
-
-
-
-
-
diff --git a/docs/6-exercise/1-basis-of-web/_samples/times-table/script.js b/docs/6-exercise/1-basis-of-web/_samples/times-table/script.js
deleted file mode 100644
index 9d408c9d9..000000000
--- a/docs/6-exercise/1-basis-of-web/_samples/times-table/script.js
+++ /dev/null
@@ -1,9 +0,0 @@
-document.write("");
-for (let i = 1; i <= 9; i++) {
- document.write("");
- for (let j = 1; j <= 9; j++) {
- document.write(` ${i * j} | `);
- }
- document.write("
");
-}
-document.write("
");
diff --git a/docs/6-exercise/1-basis-of-web/_samples/truck/index.html b/docs/6-exercise/1-basis-of-web/_samples/truck/index.html
deleted file mode 100644
index 2371e6767..000000000
--- a/docs/6-exercise/1-basis-of-web/_samples/truck/index.html
+++ /dev/null
@@ -1,10 +0,0 @@
-
-
-
-
- Document
-
-
-
-
-
diff --git a/docs/6-exercise/1-basis-of-web/_samples/truck/script.js b/docs/6-exercise/1-basis-of-web/_samples/truck/script.js
deleted file mode 100644
index 2c9b0282f..000000000
--- a/docs/6-exercise/1-basis-of-web/_samples/truck/script.js
+++ /dev/null
@@ -1,12 +0,0 @@
-let box = 25;
-let weight = 1000;
-
-if (box <= 30 && weight <= 2000) {
- document.write('出発できます
');
-} else if (box > 30 && weight <= 2000) {
- document.write('箱の数を減らしてください
');
-} else if (box <= 30 && weight > 2000) {
- document.write('重量を減らしてください
');
-} else {
- document.write('箱の数と重量を減らしてください
');
-}
diff --git a/docs/6-exercise/1-basis-of-web/blue-hello-world.jpg b/docs/6-exercise/1-basis-of-web/blue-hello-world.jpg
deleted file mode 100644
index f6956eb19..000000000
Binary files a/docs/6-exercise/1-basis-of-web/blue-hello-world.jpg and /dev/null differ
diff --git a/docs/6-exercise/1-basis-of-web/bubble-sort-video.mp4 b/docs/6-exercise/1-basis-of-web/bubble-sort-video.mp4
deleted file mode 100644
index 1763264f2..000000000
Binary files a/docs/6-exercise/1-basis-of-web/bubble-sort-video.mp4 and /dev/null differ
diff --git a/docs/6-exercise/1-basis-of-web/index.mdx b/docs/6-exercise/1-basis-of-web/index.mdx
deleted file mode 100644
index 40bb76ce6..000000000
--- a/docs/6-exercise/1-basis-of-web/index.mdx
+++ /dev/null
@@ -1,392 +0,0 @@
----
-title: Web プログラミングの初歩
-sidebar_position: 1
----
-
-import Term from "@site/src/components/Term";
-import Answer from "@site/src/components/Answer";
-import ViewSource from "@site/src/components/ViewSource";
-import BubbleSortVideo from "@site/docs/6-exercise/1-basis-of-web/bubble-sort-video.mp4";
-
-この章では教材の「[初めてのウェブ開発](/docs/trial-session/get-started/)」から「[ウェブサイトの見た目を整える](/docs/trial-session/css/)」までの内容を扱っています。
-
----
-
-## 1. HTML
-
-HTML を用いて次のようなウェブサイトを作ってみましょう。ut.code(); のロゴは[ここ](./_samples/html/logo.svg)からダウンロードして使用してください。
-
-
-
-### 解答例
-
-
-
-```html
-
-
-
-
- ut.code(); のウェブサイト
-
-
- ut.code();
-
- ut.code(); とは
-
- ut.code(); は、2019
- 年設立の東京大学のソフトウェアエンジニアリングコミュニティです。
-
- 主な活動
-
- -
- 学習
-
- - 学習カリキュラムの作成
- - 自主ゼミの開講
- - 「はじめてのプログラミング教室」の出展
-
-
- -
- 交流
-
- - 作業会の開催
- - 五月祭・駒場祭への出展
- - 合宿の開催
-
-
- -
- 開発
-
- - プロジェクトの開発
- - ブレインストーミングの実施
- - 定例ミーティングの開催
-
-
-
-
-
-```
-
-
-
-
-
----
-
-## 2. 名前の長さ
-
-太郎くんは、名前を 4 文字以上 10 文字以下で入力して登録できるウェブサイトを作ろうとしています。そこで、名前の文字数を変数に入れておき、
-
-- 文字数が 4 文字以上 10 文字以下なら `登録できます`
-- 文字数が 0 文字なら `名前を入力してください`
-- それ以外の文字数(1 文字〜3 文字または 11 文字以上)なら `名前は4文字以上10文字以下で入力してください`
-
-と表示されるプログラムを以下のように作成しました。
-
-```javascript
-const nameLength = 7;
-if (4 <= nameLength <= 10) {
- document.write("登録できます");
-}
-if (nameLength === 0) {
- document.write("名前を入力してください");
-} else {
- document.write("名前は4文字以上10文字以下で入力してください");
-}
-```
-
-しかし、変数の値を色々変えて試してみたところ、思った通りに表示されないことがわかりました。このプログラムを、正しく動作するように修正してください。修正すべき箇所は 2 つあります。
-
-### 解答例
-
-
-
-```javascript
-const nameLength = 7;
-if (4 <= nameLength && nameLength <= 10) {
- // 比較演算子を2つ並べるのではなく、論理演算子&&を用います。
- document.write("登録できます");
-} else if (nameLength === 0) {
- // else if の else が抜けていました。
- document.write("名前を入力してください");
-} else {
- document.write("名前は4文字以上10文字以下で入力してください");
-}
-```
-
-
-
-
-
----
-
-## 3. ブラックジャック
-
-田中さんと佐藤さんの 2 人が、トランプゲームのブラックジャックで遊んでいます。ブラックジャックのルールは次の通りとします。
-
-- 2 人の手札の数字の合計を比べ、より大きい方が勝ちとなる。
-- ただし、どちらか 1 人の手札の数字の合計が 21 を超えていた場合、その人の負けとなる。
-- 2 人の手札の数字の合計が同じだった場合や、2 人とも 21 を超えていた場合は引き分けとなる。
-
-田中さんと佐藤さんの手札の数字の合計をそれぞれ変数に入れておき、田中さんと佐藤さんのどちらが勝つか、あるいは引き分けかを表示するプログラムを作成してください。
-
-### 解答例
-
-
-
-```javascript
-let tanakaHandTotal = 19;
-let satoHandTotal = 22;
-
-// 21を超えていた場合は0(最弱)として扱う
-if (tanakaHandTotal > 21) tanakaHandTotal = 0;
-if (satoHandTotal > 21) satoHandTotal = 0;
-
-if (tanakaHandTotal > satoHandTotal) {
- document.write("田中さんの勝ち");
-} else if (tanakaHandTotal < satoHandTotal) {
- document.write("佐藤さんの勝ち");
-} else {
- document.write("引き分け");
-}
-```
-
-
-
-
-
----
-
-## 4. トラック
-
-引っ越しトラックを考えます。
-
-- 段ボール箱の数が 30 個以内
-- 合計の重量が 2000 kg 以内
-
-の両方の条件を満たすときに、トラックは出発できます。
-
-「箱の数」「合計の重量」の 2 つの変数の値によって、
-
-- 出発できる場合には「出発できます」
-- 箱が多すぎる場合には「箱の数を減らしてください」
-- 重量が大きすぎる場合には「重量を減らしてください」
-- 箱が多すぎかつ重量も重すぎる場合には「箱の数と重量を減らしてください」
-
-と表示されるプログラムを作ってみましょう。
-
-また、出発できる場合には文字を緑色で、出発できない場合には文字を赤色で表示するようにしましょう。
-
-:::tip
-
-`document.write()` は文字列だけでなく、HTML 要素を出力することができます。
-
-```javascript title="script.js"
-document.write('Hello World!
');
-```
-
-
-
-:::
-
-### 解答例
-
-
-
-```javascript title="script.js"
-let box = 25;
-let weight = 1000;
-
-if (box <= 30 && weight <= 2000) {
- document.write('出発できます
');
-} else if (box > 30 && weight <= 2000) {
- document.write('箱の数を減らしてください
');
-} else if (box <= 30 && weight > 2000) {
- document.write('重量を減らしてください
');
-} else {
- document.write('箱の数と重量を減らしてください
');
-}
-```
-
-
-
-
-
----
-
-## 5. 九九
-
-[HTML の `table`, `tr`, `td` タグ](https://developer.mozilla.org/ja/docs/Web/HTML/Element/table) を用いて、九九の表を画面に表示させてみましょう。
-
-:::tip
-
-開きタグと閉じタグをどのタイミングで出力すべきかに注意しましょう。
-
-:::
-
-### 解答例
-
-
-
-```javascript
-document.write("");
-for (let i = 1; i <= 9; i++) {
- document.write("");
- for (let j = 1; j <= 9; j++) {
- document.write(` ${i * j} | `);
- }
- document.write("
");
-}
-document.write("
");
-```
-
-
-
-
-
----
-
-## 6. フィボナッチ数列
-
-1,1,2,3,5...というように、前 2 つの数を足すと次の数になるような数の並びをフィボナッチ数列と言います。引数 `n` に対してフィボナッチ数列の n 番目の数を返す関数を定義してください。ただし 1 番目と 2 番目の数は 1 とします。
-
-### 解答例
-
-
-
-```javascript
-function fibonacci(n) {
- if (n <= 2) {
- return 1;
- }
- return fibonacci(n - 1) + fibonacci(n - 2);
-}
-
-// このように、関数が自分自身を呼び出すときその関数を再帰関数と呼びます。
-```
-
-
-
-### 別解
-
-もし「配列」「繰り返し」という概念をすでに学習している場合、次のような書き方もできます。
-
-```javascript
-function fibonacci(n) {
- let sequence = [1, 1];
- for (let i = 2; i < n; i += 1) {
- sequence.push(sequence[i - 1] + sequence[i - 2]);
- }
- return sequence[n - 1];
-}
-```
-
-
-
-
-
----
-
-## 7. バブルソート
-
-引数に対して「バブルソート」という整列アルゴリズムを行い、整列済み配列を返す関数`bubbleSort()`を作成しましょう。
-そのアルゴリズムは次の通りです。
-
-- ソート前配列のある要素を取り、その一つ後ろの要素と比較する
- - もし一つ後ろの要素の方が小さければ、二項を入れ替える
- - そうでなければ、何もしない
-- その操作を一番前の要素から一番後ろにたどり着くまで繰り返す
- - これで一番後ろの要素が一番大きいものであると確定する
-- 上の操作を、全ての要素が後ろから大きい順に並ぶまで繰り返す
-
-:::note
-テスト用に、以下のランダムに生成された配列を自由に使ってよいものとします。
-
-```javascript
-const array1 = [7, 1, 10, 4, 3, 5, 9, 2, 8, 6];
-const array2 = [8, 2, 9, 14, 12, 1, 5, 13, 16, 3];
-const array3 = [73, 39, 94, 57, 42, 78, 20, 55, 56, 77];
-const array4 = [247, 785, 73, 879, 515, 545, 423, 617, 19, 600];
-```
-
-:::
-
-
-
-:::info
-要素を入れ替えるとき、単に
-
-```javascript
-array[0] = array[1];
-array[1] = array[0];
-```
-
-とするだけでは両方が`array[1]`になってしまい、うまくいきません。どうすればよいでしょうか。
-
-:::
-
-### 解答例
-
-
-
-```javascript
-function swapIndex(array, indexA, indexB) {
- const temp = array[indexA];
- array[indexA] = array[indexB];
- array[indexB] = temp;
-}
-function bubbleSort(array) {
- for (let i = array.length - 1; i > 0; i--) {
- for (let j = 0; j < i; j++) {
- if (array[j] > array[j + 1]) swapIndex(array, j, j + 1);
- }
- }
- return array;
-}
-```
-
-
-
-
-
-:::tip
-
-**副作用**と**純粋関数**
-の話
-
-本解答例では返り値をarrayに代入していないにも関わらず、arrayの中身が変わってしまいます。なぜでしょうか?
-
-[**参照の節**](/docs/browser-apps/reference/)で説明したように、これは配列が評価されたときにそれ自身ではなく、配列の**参照**が得られるからです。関数を実行したときに返り値以外に関数外部に影響を与えることを**副作用**と呼び、**副作用**を持たない関数を**純粋関数**と呼びます。思わぬ**副作用**を防ぐために有効範囲の広い関数は**純粋関数**であることが望ましいとされています。また関数のマクロ的役割である「操作のまとまり」として、**副作用**である外部へのアクセス(画面への表示、インターネットのアクセス、ファイルの入出力など)をひとまとめにする場合は、専用の関数を作成し、それを明示した方がよいとされています。
-
-また関数の引数以外の可変変数を参照することは**参照透過性**の妨げになり、デバッグが難しくなるといわれています。
-
-上の関数を**純粋関数**に書き直すと例えば、
-
-
-
-```diff javascript
-+ /* swapIndexは純粋関数ではないが、あくまでモジュール化のプロセスであり、
-+ 外部では使わないので、予期せぬ副作用は発生しにくいためこのままでもよい */
-function swapIndex(array, indexA, indexB) {
- const temp = array[indexA];
- array[indexA] = array[indexB];
- array[indexB] = temp;
-}
-- function bubbleSort(array) {
-+ function bubbleSort(inputArray) {
-+ let array = inputArray.slice(); // 配列の値をコピーする
- for (let i = array.length - 1; i > 0; i--) {
- for (let j = 0; j < i; j++) {
- if (array[j] > array[j + 1]) swapIndex(array, j, j+1);
- }
- }
- return array;
-}
-```
-
-
-
-となります。
-
-:::
diff --git a/docs/6-exercise/1-basis-of-web/website.png b/docs/6-exercise/1-basis-of-web/website.png
deleted file mode 100644
index 0ab0e13d3..000000000
Binary files a/docs/6-exercise/1-basis-of-web/website.png and /dev/null differ
diff --git a/docs/6-exercise/10-typescript/_samples/count/main.ts b/docs/6-exercise/10-typescript/_samples/count/main.ts
deleted file mode 100644
index b8dd993f8..000000000
--- a/docs/6-exercise/10-typescript/_samples/count/main.ts
+++ /dev/null
@@ -1,11 +0,0 @@
-function count(a: T[], f: (x: T) => boolean): number {
- let result = 0;
- for (const x of a) {
- if (f(x)) result += 1;
- }
- return result;
-}
-
-// 使用例
-console.log(count([1, 2, 3], (x) => x >= 2)); // 2
-console.log(count(["a", "aa"], (x) => x.length === 2)); // 1
diff --git a/docs/6-exercise/10-typescript/_samples/welcome/main.ts b/docs/6-exercise/10-typescript/_samples/welcome/main.ts
deleted file mode 100644
index 5d280eb97..000000000
--- a/docs/6-exercise/10-typescript/_samples/welcome/main.ts
+++ /dev/null
@@ -1,19 +0,0 @@
-type Guest = { type: "guest" };
-type General = { type: "general"; name: string };
-type Premium = { type: "premium"; name: string; daysLeft: number };
-type User = Guest | General | Premium;
-
-function welcome(user: User) {
- if (user.type === "guest") {
- // この中では user は Guest 型として扱われる
- console.log(`ようこそ ゲストさん`);
- } else if (user.type === "general") {
- // この中では user は General 型として扱われる
- console.log(`ようこそ ${user.name}さん`);
- } else {
- // この中では user は Premium 型として扱われる
- console.log(
- `ようこそ ${user.name}さん プレミアム会員の有効期間は残り${user.daysLeft}日です`,
- );
- }
-}
diff --git a/docs/6-exercise/10-typescript/index.mdx b/docs/6-exercise/10-typescript/index.mdx
deleted file mode 100644
index c567e00b3..000000000
--- a/docs/6-exercise/10-typescript/index.mdx
+++ /dev/null
@@ -1,165 +0,0 @@
----
-title: TypeScript 演習
-sidebar_position: 9
----
-
-import Answer from "@site/src/components/Answer";
-import ViewSource from "@site/src/components/ViewSource";
-
-この章では教材の「[TypeScript](/docs/advanced/typescript/)」の内容を扱っています。
-
----
-
-## 問題 1
-
-以下の 2 つの TypeScript のコードについて、エラーが表示される行を全て選んでください。
-
-### 問題 1-1
-
-```typescript
-let a: unknown = "a";
-let b: string = "a";
-let c: "a" = "a";
-b = a;
-b = c;
-console.log(a.length);
-console.log(b.length);
-console.log(c.length);
-```
-
-
-
-正解: 4 行目、6 行目
-
-- 1~3 行目は、文字列 `"a"` は `unknown` 型、`string` 型、`"a"` 型のいずれにも含まれるのでエラーは出ません。
-- 4 行目は、`unknown` 型の変数を `string` 型に代入しようとしていますが、`unknown` 型は `string` 型の部分集合ではないのでエラーが出ます。
-- 5 行目は、`"a"` 型は `string` 型の部分集合なのでエラーは出ません。
-- 6 行目は、`unknown` 型は `length` プロパティを持たないためエラーが出ます。
-- 7 行目は、`string` 型は `length` プロパティを持つためエラーは出ません。
-- 8 行目は、`"a"` 型は `string` 型の部分集合なので `length` プロパティを持ち、エラーは出ません。
-
-
-
-### 問題 1-2
-
-```typescript
-type T = { x: number };
-type U = { x: number; y: number };
-let a: T = { x: 1 };
-let b: T = { x: 1, y: 2 };
-let c: U = { x: 1 };
-let d: U = { x: 1, y: 2 };
-a = d;
-console.log(a.y);
-console.log(d.y);
-```
-
-
-
-正解: 4 行目、5 行目、8 行目
-
-- 4 行目のようにプロパティを直接記述する場合は、余分なプロパティが含まれているとエラーが出ます。7 行目との違いに注意してください。
-- 5 行目は、必要なプロパティが不足しているためエラーが出ます。
-- 7 行目は、`U` 型は `T` 型の部分集合であるためエラーは出ません。
-- 8 行目は、7 行目で `a` に `d` を代入しているため問題なさそうに見えますが、`a` は `T` 型だと宣言されているため、`y` プロパティを持たないという扱いになり、エラーが出ます。このように、余分なプロパティを持つオブジェクトを代入できても、余分なプロパティにアクセスすることはできません。
-- 9 行目は、`U` 型は `y` プロパティを持つためエラーは出ません。
-
-
-
----
-
-## 問題 2
-
-TypeScript を用いて、以下の要件を満たす関数 `welcome` を作成してください。
-
-- 引数として `User` 型のオブジェクトを受け取る。`User` 型は、下にあるコードの通りに定義する。ここで、`type` プロパティはユーザーの種類 (ゲスト、一般会員、プレミアム会員)、`name` プロパティはユーザーの名前、`daysLeft` プロパティはプレミアム会員の有効期間である。
-- `type` プロパティの値に応じて、以下の内容をコンソールに表示する(`xxx` の部分には適切な情報を当てはめる)。
- - `type` が `"guest"` ならば、`ようこそ ゲストさん`
- - `type` が `"general"` ならば、`ようこそ xxxさん`
- - `type` が `"premium"` ならば、`ようこそ xxxさん プレミアム会員の有効期間は残りxxx日です`
-
-```typescript
-type Guest = { type: "guest" };
-type General = { type: "general"; name: string };
-type Premium = { type: "premium"; name: string; daysLeft: number };
-type User = Guest | General | Premium;
-
-function welcome(user: User) {
- // ここに関数の内容を記述
-}
-
-// 使用例
-welcome({ type: "guest" }); // ようこそ ゲストさん
-welcome({ type: "general", name: "太郎" }); // ようこそ 太郎さん
-welcome({ type: "premium", name: "太郎", daysLeft: 30 }); // ようこそ 太郎さん プレミアム会員の有効期間は残り30日です
-```
-
-
-
-このように、共通のプロパティ (ここでは `type`) を用いて複数の型を判別できるようにした型は**タグ付きユニオン**などと呼ばれます。TypeScript ではタグ付きユニオンへのサポートが手厚く、条件分岐を行うと自動で型が絞り込まれます。
-
-```typescript
-type Guest = { type: "guest" };
-type General = { type: "general"; name: string };
-type Premium = { type: "premium"; name: string; daysLeft: number };
-type User = Guest | General | Premium;
-
-function welcome(user: User) {
- if (user.type === "guest") {
- // この中では user は Guest 型として扱われる
- console.log(`ようこそ ゲストさん`);
- } else if (user.type === "general") {
- // この中では user は General 型として扱われる
- console.log(`ようこそ ${user.name}さん`);
- } else {
- // この中では user は Premium 型として扱われる
- console.log(
- `ようこそ ${user.name}さん プレミアム会員の有効期間は残り${user.daysLeft}日です`,
- );
- }
-}
-```
-
-
-
-
-
----
-
-## 問題 3
-
-次の関数 `count` は、配列 `a` の各要素を引数として関数 `f` を実行し、戻り値が `true` となる要素の個数を返す関数です。ただし、`f` の戻り値は論理値 (`true` または `false`) とします。ジェネリクスを用いて適切な型をつけてください。
-
-```typescript
-function count(a, f) {
- let result = 0;
- for (const x of a) {
- if (f(x)) result += 1;
- }
- return result;
-}
-
-// 使用例
-console.log(count([1, 2, 3], (x) => x >= 2)); // 2
-console.log(count(["a", "aa"], (x) => x.length === 2)); // 1
-```
-
-
-
-論理値は `boolean` 型です。
-
-戻り値の型は推論されるため、省略しても構いません。
-
-```typescript
-function count(a: T[], f: (x: T) => boolean): number {
- let result = 0;
- for (const x of a) {
- if (f(x)) result += 1;
- }
- return result;
-}
-```
-
-
-
-
diff --git a/docs/6-exercise/11-react/_sample/.gitignore b/docs/6-exercise/11-react/_sample/.gitignore
deleted file mode 100644
index b512c09d4..000000000
--- a/docs/6-exercise/11-react/_sample/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-node_modules
\ No newline at end of file
diff --git a/docs/6-exercise/11-react/_sample/index.html b/docs/6-exercise/11-react/_sample/index.html
deleted file mode 100644
index 1c43dab61..000000000
--- a/docs/6-exercise/11-react/_sample/index.html
+++ /dev/null
@@ -1,13 +0,0 @@
-
-
-
-
-
-
- ToDoアプリ
-
-
-
-
-
-
diff --git a/docs/6-exercise/11-react/_sample/package-lock.json b/docs/6-exercise/11-react/_sample/package-lock.json
deleted file mode 100644
index 20c4ecbc0..000000000
--- a/docs/6-exercise/11-react/_sample/package-lock.json
+++ /dev/null
@@ -1,2291 +0,0 @@
-{
- "name": "frontend",
- "version": "0.0.0",
- "lockfileVersion": 2,
- "requires": true,
- "packages": {
- "": {
- "name": "frontend",
- "version": "0.0.0",
- "dependencies": {
- "react": "^18.2.0",
- "react-dom": "^18.2.0"
- },
- "devDependencies": {
- "@types/react": "^18.0.27",
- "@types/react-dom": "^18.0.10",
- "@vitejs/plugin-react": "^3.1.0",
- "typescript": "^4.9.3",
- "vite": "^4.1.0"
- }
- },
- "node_modules/@ampproject/remapping": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz",
- "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==",
- "dev": true,
- "dependencies": {
- "@jridgewell/gen-mapping": "^0.1.0",
- "@jridgewell/trace-mapping": "^0.3.9"
- },
- "engines": {
- "node": ">=6.0.0"
- }
- },
- "node_modules/@babel/code-frame": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz",
- "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==",
- "dev": true,
- "dependencies": {
- "@babel/highlight": "^7.18.6"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/compat-data": {
- "version": "7.21.0",
- "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.21.0.tgz",
- "integrity": "sha512-gMuZsmsgxk/ENC3O/fRw5QY8A9/uxQbbCEypnLIiYYc/qVJtEV7ouxC3EllIIwNzMqAQee5tanFabWsUOutS7g==",
- "dev": true,
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/core": {
- "version": "7.21.0",
- "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.21.0.tgz",
- "integrity": "sha512-PuxUbxcW6ZYe656yL3EAhpy7qXKq0DmYsrJLpbB8XrsCP9Nm+XCg9XFMb5vIDliPD7+U/+M+QJlH17XOcB7eXA==",
- "dev": true,
- "dependencies": {
- "@ampproject/remapping": "^2.2.0",
- "@babel/code-frame": "^7.18.6",
- "@babel/generator": "^7.21.0",
- "@babel/helper-compilation-targets": "^7.20.7",
- "@babel/helper-module-transforms": "^7.21.0",
- "@babel/helpers": "^7.21.0",
- "@babel/parser": "^7.21.0",
- "@babel/template": "^7.20.7",
- "@babel/traverse": "^7.21.0",
- "@babel/types": "^7.21.0",
- "convert-source-map": "^1.7.0",
- "debug": "^4.1.0",
- "gensync": "^1.0.0-beta.2",
- "json5": "^2.2.2",
- "semver": "^6.3.0"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/babel"
- }
- },
- "node_modules/@babel/generator": {
- "version": "7.21.1",
- "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.21.1.tgz",
- "integrity": "sha512-1lT45bAYlQhFn/BHivJs43AiW2rg3/UbLyShGfF3C0KmHvO5fSghWd5kBJy30kpRRucGzXStvnnCFniCR2kXAA==",
- "dev": true,
- "dependencies": {
- "@babel/types": "^7.21.0",
- "@jridgewell/gen-mapping": "^0.3.2",
- "@jridgewell/trace-mapping": "^0.3.17",
- "jsesc": "^2.5.1"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/generator/node_modules/@jridgewell/gen-mapping": {
- "version": "0.3.2",
- "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz",
- "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==",
- "dev": true,
- "dependencies": {
- "@jridgewell/set-array": "^1.0.1",
- "@jridgewell/sourcemap-codec": "^1.4.10",
- "@jridgewell/trace-mapping": "^0.3.9"
- },
- "engines": {
- "node": ">=6.0.0"
- }
- },
- "node_modules/@babel/helper-compilation-targets": {
- "version": "7.20.7",
- "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.7.tgz",
- "integrity": "sha512-4tGORmfQcrc+bvrjb5y3dG9Mx1IOZjsHqQVUz7XCNHO+iTmqxWnVg3KRygjGmpRLJGdQSKuvFinbIb0CnZwHAQ==",
- "dev": true,
- "dependencies": {
- "@babel/compat-data": "^7.20.5",
- "@babel/helper-validator-option": "^7.18.6",
- "browserslist": "^4.21.3",
- "lru-cache": "^5.1.1",
- "semver": "^6.3.0"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0"
- }
- },
- "node_modules/@babel/helper-environment-visitor": {
- "version": "7.18.9",
- "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz",
- "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==",
- "dev": true,
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-function-name": {
- "version": "7.21.0",
- "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.21.0.tgz",
- "integrity": "sha512-HfK1aMRanKHpxemaY2gqBmL04iAPOPRj7DxtNbiDOrJK+gdwkiNRVpCpUJYbUT+aZyemKN8brqTOxzCaG6ExRg==",
- "dev": true,
- "dependencies": {
- "@babel/template": "^7.20.7",
- "@babel/types": "^7.21.0"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-hoist-variables": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz",
- "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==",
- "dev": true,
- "dependencies": {
- "@babel/types": "^7.18.6"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-module-imports": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz",
- "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==",
- "dev": true,
- "dependencies": {
- "@babel/types": "^7.18.6"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-module-transforms": {
- "version": "7.21.2",
- "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.21.2.tgz",
- "integrity": "sha512-79yj2AR4U/Oqq/WOV7Lx6hUjau1Zfo4cI+JLAVYeMV5XIlbOhmjEk5ulbTc9fMpmlojzZHkUUxAiK+UKn+hNQQ==",
- "dev": true,
- "dependencies": {
- "@babel/helper-environment-visitor": "^7.18.9",
- "@babel/helper-module-imports": "^7.18.6",
- "@babel/helper-simple-access": "^7.20.2",
- "@babel/helper-split-export-declaration": "^7.18.6",
- "@babel/helper-validator-identifier": "^7.19.1",
- "@babel/template": "^7.20.7",
- "@babel/traverse": "^7.21.2",
- "@babel/types": "^7.21.2"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-plugin-utils": {
- "version": "7.20.2",
- "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz",
- "integrity": "sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ==",
- "dev": true,
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-simple-access": {
- "version": "7.20.2",
- "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz",
- "integrity": "sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==",
- "dev": true,
- "dependencies": {
- "@babel/types": "^7.20.2"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-split-export-declaration": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz",
- "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==",
- "dev": true,
- "dependencies": {
- "@babel/types": "^7.18.6"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-string-parser": {
- "version": "7.19.4",
- "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz",
- "integrity": "sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==",
- "dev": true,
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-validator-identifier": {
- "version": "7.19.1",
- "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz",
- "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==",
- "dev": true,
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-validator-option": {
- "version": "7.21.0",
- "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.21.0.tgz",
- "integrity": "sha512-rmL/B8/f0mKS2baE9ZpyTcTavvEuWhTTW8amjzXNvYG4AwBsqTLikfXsEofsJEfKHf+HQVQbFOHy6o+4cnC/fQ==",
- "dev": true,
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helpers": {
- "version": "7.21.0",
- "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.21.0.tgz",
- "integrity": "sha512-XXve0CBtOW0pd7MRzzmoyuSj0e3SEzj8pgyFxnTT1NJZL38BD1MK7yYrm8yefRPIDvNNe14xR4FdbHwpInD4rA==",
- "dev": true,
- "dependencies": {
- "@babel/template": "^7.20.7",
- "@babel/traverse": "^7.21.0",
- "@babel/types": "^7.21.0"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/highlight": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz",
- "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==",
- "dev": true,
- "dependencies": {
- "@babel/helper-validator-identifier": "^7.18.6",
- "chalk": "^2.0.0",
- "js-tokens": "^4.0.0"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/parser": {
- "version": "7.21.2",
- "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.21.2.tgz",
- "integrity": "sha512-URpaIJQwEkEC2T9Kn+Ai6Xe/02iNaVCuT/PtoRz3GPVJVDpPd7mLo+VddTbhCRU9TXqW5mSrQfXZyi8kDKOVpQ==",
- "dev": true,
- "bin": {
- "parser": "bin/babel-parser.js"
- },
- "engines": {
- "node": ">=6.0.0"
- }
- },
- "node_modules/@babel/plugin-transform-react-jsx-self": {
- "version": "7.21.0",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.21.0.tgz",
- "integrity": "sha512-f/Eq+79JEu+KUANFks9UZCcvydOOGMgF7jBrcwjHa5jTZD8JivnhCJYvmlhR/WTXBWonDExPoW0eO/CR4QJirA==",
- "dev": true,
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.20.2"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-react-jsx-source": {
- "version": "7.19.6",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.19.6.tgz",
- "integrity": "sha512-RpAi004QyMNisst/pvSanoRdJ4q+jMCWyk9zdw/CyLB9j8RXEahodR6l2GyttDRyEVWZtbN+TpLiHJ3t34LbsQ==",
- "dev": true,
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.19.0"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/template": {
- "version": "7.20.7",
- "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.20.7.tgz",
- "integrity": "sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==",
- "dev": true,
- "dependencies": {
- "@babel/code-frame": "^7.18.6",
- "@babel/parser": "^7.20.7",
- "@babel/types": "^7.20.7"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/traverse": {
- "version": "7.21.2",
- "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.21.2.tgz",
- "integrity": "sha512-ts5FFU/dSUPS13tv8XiEObDu9K+iagEKME9kAbaP7r0Y9KtZJZ+NGndDvWoRAYNpeWafbpFeki3q9QoMD6gxyw==",
- "dev": true,
- "dependencies": {
- "@babel/code-frame": "^7.18.6",
- "@babel/generator": "^7.21.1",
- "@babel/helper-environment-visitor": "^7.18.9",
- "@babel/helper-function-name": "^7.21.0",
- "@babel/helper-hoist-variables": "^7.18.6",
- "@babel/helper-split-export-declaration": "^7.18.6",
- "@babel/parser": "^7.21.2",
- "@babel/types": "^7.21.2",
- "debug": "^4.1.0",
- "globals": "^11.1.0"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/types": {
- "version": "7.21.2",
- "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.21.2.tgz",
- "integrity": "sha512-3wRZSs7jiFaB8AjxiiD+VqN5DTG2iRvJGQ+qYFrs/654lg6kGTQWIOFjlBo5RaXuAZjBmP3+OQH4dmhqiiyYxw==",
- "dev": true,
- "dependencies": {
- "@babel/helper-string-parser": "^7.19.4",
- "@babel/helper-validator-identifier": "^7.19.1",
- "to-fast-properties": "^2.0.0"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@esbuild/android-arm": {
- "version": "0.16.17",
- "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.16.17.tgz",
- "integrity": "sha512-N9x1CMXVhtWEAMS7pNNONyA14f71VPQN9Cnavj1XQh6T7bskqiLLrSca4O0Vr8Wdcga943eThxnVp3JLnBMYtw==",
- "cpu": [
- "arm"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "android"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/android-arm64": {
- "version": "0.16.17",
- "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.16.17.tgz",
- "integrity": "sha512-MIGl6p5sc3RDTLLkYL1MyL8BMRN4tLMRCn+yRJJmEDvYZ2M7tmAf80hx1kbNEUX2KJ50RRtxZ4JHLvCfuB6kBg==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "android"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/android-x64": {
- "version": "0.16.17",
- "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.16.17.tgz",
- "integrity": "sha512-a3kTv3m0Ghh4z1DaFEuEDfz3OLONKuFvI4Xqczqx4BqLyuFaFkuaG4j2MtA6fuWEFeC5x9IvqnX7drmRq/fyAQ==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "android"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/darwin-arm64": {
- "version": "0.16.17",
- "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.16.17.tgz",
- "integrity": "sha512-/2agbUEfmxWHi9ARTX6OQ/KgXnOWfsNlTeLcoV7HSuSTv63E4DqtAc+2XqGw1KHxKMHGZgbVCZge7HXWX9Vn+w==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "darwin"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/darwin-x64": {
- "version": "0.16.17",
- "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.16.17.tgz",
- "integrity": "sha512-2By45OBHulkd9Svy5IOCZt376Aa2oOkiE9QWUK9fe6Tb+WDr8hXL3dpqi+DeLiMed8tVXspzsTAvd0jUl96wmg==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "darwin"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/freebsd-arm64": {
- "version": "0.16.17",
- "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.16.17.tgz",
- "integrity": "sha512-mt+cxZe1tVx489VTb4mBAOo2aKSnJ33L9fr25JXpqQqzbUIw/yzIzi+NHwAXK2qYV1lEFp4OoVeThGjUbmWmdw==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "freebsd"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/freebsd-x64": {
- "version": "0.16.17",
- "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.16.17.tgz",
- "integrity": "sha512-8ScTdNJl5idAKjH8zGAsN7RuWcyHG3BAvMNpKOBaqqR7EbUhhVHOqXRdL7oZvz8WNHL2pr5+eIT5c65kA6NHug==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "freebsd"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/linux-arm": {
- "version": "0.16.17",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.16.17.tgz",
- "integrity": "sha512-iihzrWbD4gIT7j3caMzKb/RsFFHCwqqbrbH9SqUSRrdXkXaygSZCZg1FybsZz57Ju7N/SHEgPyaR0LZ8Zbe9gQ==",
- "cpu": [
- "arm"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/linux-arm64": {
- "version": "0.16.17",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.16.17.tgz",
- "integrity": "sha512-7S8gJnSlqKGVJunnMCrXHU9Q8Q/tQIxk/xL8BqAP64wchPCTzuM6W3Ra8cIa1HIflAvDnNOt2jaL17vaW+1V0g==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/linux-ia32": {
- "version": "0.16.17",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.16.17.tgz",
- "integrity": "sha512-kiX69+wcPAdgl3Lonh1VI7MBr16nktEvOfViszBSxygRQqSpzv7BffMKRPMFwzeJGPxcio0pdD3kYQGpqQ2SSg==",
- "cpu": [
- "ia32"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/linux-loong64": {
- "version": "0.16.17",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.16.17.tgz",
- "integrity": "sha512-dTzNnQwembNDhd654cA4QhbS9uDdXC3TKqMJjgOWsC0yNCbpzfWoXdZvp0mY7HU6nzk5E0zpRGGx3qoQg8T2DQ==",
- "cpu": [
- "loong64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/linux-mips64el": {
- "version": "0.16.17",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.16.17.tgz",
- "integrity": "sha512-ezbDkp2nDl0PfIUn0CsQ30kxfcLTlcx4Foz2kYv8qdC6ia2oX5Q3E/8m6lq84Dj/6b0FrkgD582fJMIfHhJfSw==",
- "cpu": [
- "mips64el"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/linux-ppc64": {
- "version": "0.16.17",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.16.17.tgz",
- "integrity": "sha512-dzS678gYD1lJsW73zrFhDApLVdM3cUF2MvAa1D8K8KtcSKdLBPP4zZSLy6LFZ0jYqQdQ29bjAHJDgz0rVbLB3g==",
- "cpu": [
- "ppc64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/linux-riscv64": {
- "version": "0.16.17",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.16.17.tgz",
- "integrity": "sha512-ylNlVsxuFjZK8DQtNUwiMskh6nT0vI7kYl/4fZgV1llP5d6+HIeL/vmmm3jpuoo8+NuXjQVZxmKuhDApK0/cKw==",
- "cpu": [
- "riscv64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/linux-s390x": {
- "version": "0.16.17",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.16.17.tgz",
- "integrity": "sha512-gzy7nUTO4UA4oZ2wAMXPNBGTzZFP7mss3aKR2hH+/4UUkCOyqmjXiKpzGrY2TlEUhbbejzXVKKGazYcQTZWA/w==",
- "cpu": [
- "s390x"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/linux-x64": {
- "version": "0.16.17",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.16.17.tgz",
- "integrity": "sha512-mdPjPxfnmoqhgpiEArqi4egmBAMYvaObgn4poorpUaqmvzzbvqbowRllQ+ZgzGVMGKaPkqUmPDOOFQRUFDmeUw==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/netbsd-x64": {
- "version": "0.16.17",
- "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.16.17.tgz",
- "integrity": "sha512-/PzmzD/zyAeTUsduZa32bn0ORug+Jd1EGGAUJvqfeixoEISYpGnAezN6lnJoskauoai0Jrs+XSyvDhppCPoKOA==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "netbsd"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/openbsd-x64": {
- "version": "0.16.17",
- "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.16.17.tgz",
- "integrity": "sha512-2yaWJhvxGEz2RiftSk0UObqJa/b+rIAjnODJgv2GbGGpRwAfpgzyrg1WLK8rqA24mfZa9GvpjLcBBg8JHkoodg==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "openbsd"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/sunos-x64": {
- "version": "0.16.17",
- "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.16.17.tgz",
- "integrity": "sha512-xtVUiev38tN0R3g8VhRfN7Zl42YCJvyBhRKw1RJjwE1d2emWTVToPLNEQj/5Qxc6lVFATDiy6LjVHYhIPrLxzw==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "sunos"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/win32-arm64": {
- "version": "0.16.17",
- "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.16.17.tgz",
- "integrity": "sha512-ga8+JqBDHY4b6fQAmOgtJJue36scANy4l/rL97W+0wYmijhxKetzZdKOJI7olaBaMhWt8Pac2McJdZLxXWUEQw==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "win32"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/win32-ia32": {
- "version": "0.16.17",
- "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.16.17.tgz",
- "integrity": "sha512-WnsKaf46uSSF/sZhwnqE4L/F89AYNMiD4YtEcYekBt9Q7nj0DiId2XH2Ng2PHM54qi5oPrQ8luuzGszqi/veig==",
- "cpu": [
- "ia32"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "win32"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@esbuild/win32-x64": {
- "version": "0.16.17",
- "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.16.17.tgz",
- "integrity": "sha512-y+EHuSchhL7FjHgvQL/0fnnFmO4T1bhvWANX6gcnqTjtnKWbTvUMCpGnv2+t+31d7RzyEAYAd4u2fnIhHL6N/Q==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "win32"
- ],
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@jridgewell/gen-mapping": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz",
- "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==",
- "dev": true,
- "dependencies": {
- "@jridgewell/set-array": "^1.0.0",
- "@jridgewell/sourcemap-codec": "^1.4.10"
- },
- "engines": {
- "node": ">=6.0.0"
- }
- },
- "node_modules/@jridgewell/resolve-uri": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz",
- "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==",
- "dev": true,
- "engines": {
- "node": ">=6.0.0"
- }
- },
- "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==",
- "dev": true,
- "engines": {
- "node": ">=6.0.0"
- }
- },
- "node_modules/@jridgewell/sourcemap-codec": {
- "version": "1.4.14",
- "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz",
- "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==",
- "dev": true
- },
- "node_modules/@jridgewell/trace-mapping": {
- "version": "0.3.17",
- "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz",
- "integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==",
- "dev": true,
- "dependencies": {
- "@jridgewell/resolve-uri": "3.1.0",
- "@jridgewell/sourcemap-codec": "1.4.14"
- }
- },
- "node_modules/@types/prop-types": {
- "version": "15.7.5",
- "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz",
- "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==",
- "dev": true
- },
- "node_modules/@types/react": {
- "version": "18.0.28",
- "resolved": "https://registry.npmjs.org/@types/react/-/react-18.0.28.tgz",
- "integrity": "sha512-RD0ivG1kEztNBdoAK7lekI9M+azSnitIn85h4iOiaLjaTrMjzslhaqCGaI4IyCJ1RljWiLCEu4jyrLLgqxBTew==",
- "dev": true,
- "dependencies": {
- "@types/prop-types": "*",
- "@types/scheduler": "*",
- "csstype": "^3.0.2"
- }
- },
- "node_modules/@types/react-dom": {
- "version": "18.0.11",
- "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.0.11.tgz",
- "integrity": "sha512-O38bPbI2CWtgw/OoQoY+BRelw7uysmXbWvw3nLWO21H1HSh+GOlqPuXshJfjmpNlKiiSDG9cc1JZAaMmVdcTlw==",
- "dev": true,
- "dependencies": {
- "@types/react": "*"
- }
- },
- "node_modules/@types/scheduler": {
- "version": "0.16.2",
- "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz",
- "integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==",
- "dev": true
- },
- "node_modules/@vitejs/plugin-react": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-3.1.0.tgz",
- "integrity": "sha512-AfgcRL8ZBhAlc3BFdigClmTUMISmmzHn7sB2h9U1odvc5U/MjWXsAaz18b/WoppUTDBzxOJwo2VdClfUcItu9g==",
- "dev": true,
- "dependencies": {
- "@babel/core": "^7.20.12",
- "@babel/plugin-transform-react-jsx-self": "^7.18.6",
- "@babel/plugin-transform-react-jsx-source": "^7.19.6",
- "magic-string": "^0.27.0",
- "react-refresh": "^0.14.0"
- },
- "engines": {
- "node": "^14.18.0 || >=16.0.0"
- },
- "peerDependencies": {
- "vite": "^4.1.0-beta.0"
- }
- },
- "node_modules/ansi-styles": {
- "version": "3.2.1",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
- "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
- "dev": true,
- "dependencies": {
- "color-convert": "^1.9.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/browserslist": {
- "version": "4.21.5",
- "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.5.tgz",
- "integrity": "sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w==",
- "dev": true,
- "funding": [
- {
- "type": "opencollective",
- "url": "https://opencollective.com/browserslist"
- },
- {
- "type": "tidelift",
- "url": "https://tidelift.com/funding/github/npm/browserslist"
- }
- ],
- "dependencies": {
- "caniuse-lite": "^1.0.30001449",
- "electron-to-chromium": "^1.4.284",
- "node-releases": "^2.0.8",
- "update-browserslist-db": "^1.0.10"
- },
- "bin": {
- "browserslist": "cli.js"
- },
- "engines": {
- "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7"
- }
- },
- "node_modules/caniuse-lite": {
- "version": "1.0.30001466",
- "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001466.tgz",
- "integrity": "sha512-ewtFBSfWjEmxUgNBSZItFSmVtvk9zkwkl1OfRZlKA8slltRN+/C/tuGVrF9styXkN36Yu3+SeJ1qkXxDEyNZ5w==",
- "dev": true,
- "funding": [
- {
- "type": "opencollective",
- "url": "https://opencollective.com/browserslist"
- },
- {
- "type": "tidelift",
- "url": "https://tidelift.com/funding/github/npm/caniuse-lite"
- }
- ]
- },
- "node_modules/chalk": {
- "version": "2.4.2",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
- "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
- "dev": true,
- "dependencies": {
- "ansi-styles": "^3.2.1",
- "escape-string-regexp": "^1.0.5",
- "supports-color": "^5.3.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/color-convert": {
- "version": "1.9.3",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
- "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
- "dev": true,
- "dependencies": {
- "color-name": "1.1.3"
- }
- },
- "node_modules/color-name": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
- "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==",
- "dev": true
- },
- "node_modules/convert-source-map": {
- "version": "1.9.0",
- "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz",
- "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==",
- "dev": true
- },
- "node_modules/csstype": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.1.tgz",
- "integrity": "sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw==",
- "dev": true
- },
- "node_modules/debug": {
- "version": "4.3.4",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
- "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
- "dev": true,
- "dependencies": {
- "ms": "2.1.2"
- },
- "engines": {
- "node": ">=6.0"
- },
- "peerDependenciesMeta": {
- "supports-color": {
- "optional": true
- }
- }
- },
- "node_modules/electron-to-chromium": {
- "version": "1.4.328",
- "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.328.tgz",
- "integrity": "sha512-DE9tTy2PNmy1v55AZAO542ui+MLC2cvINMK4P2LXGsJdput/ThVG9t+QGecPuAZZSgC8XoI+Jh9M1OG9IoNSCw==",
- "dev": true
- },
- "node_modules/esbuild": {
- "version": "0.16.17",
- "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.16.17.tgz",
- "integrity": "sha512-G8LEkV0XzDMNwXKgM0Jwu3nY3lSTwSGY6XbxM9cr9+s0T/qSV1q1JVPBGzm3dcjhCic9+emZDmMffkwgPeOeLg==",
- "dev": true,
- "hasInstallScript": true,
- "bin": {
- "esbuild": "bin/esbuild"
- },
- "engines": {
- "node": ">=12"
- },
- "optionalDependencies": {
- "@esbuild/android-arm": "0.16.17",
- "@esbuild/android-arm64": "0.16.17",
- "@esbuild/android-x64": "0.16.17",
- "@esbuild/darwin-arm64": "0.16.17",
- "@esbuild/darwin-x64": "0.16.17",
- "@esbuild/freebsd-arm64": "0.16.17",
- "@esbuild/freebsd-x64": "0.16.17",
- "@esbuild/linux-arm": "0.16.17",
- "@esbuild/linux-arm64": "0.16.17",
- "@esbuild/linux-ia32": "0.16.17",
- "@esbuild/linux-loong64": "0.16.17",
- "@esbuild/linux-mips64el": "0.16.17",
- "@esbuild/linux-ppc64": "0.16.17",
- "@esbuild/linux-riscv64": "0.16.17",
- "@esbuild/linux-s390x": "0.16.17",
- "@esbuild/linux-x64": "0.16.17",
- "@esbuild/netbsd-x64": "0.16.17",
- "@esbuild/openbsd-x64": "0.16.17",
- "@esbuild/sunos-x64": "0.16.17",
- "@esbuild/win32-arm64": "0.16.17",
- "@esbuild/win32-ia32": "0.16.17",
- "@esbuild/win32-x64": "0.16.17"
- }
- },
- "node_modules/escalade": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz",
- "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==",
- "dev": true,
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/escape-string-regexp": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
- "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
- "dev": true,
- "engines": {
- "node": ">=0.8.0"
- }
- },
- "node_modules/fsevents": {
- "version": "2.3.2",
- "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
- "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
- "dev": true,
- "hasInstallScript": true,
- "optional": true,
- "os": [
- "darwin"
- ],
- "engines": {
- "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
- }
- },
- "node_modules/function-bind": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
- "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
- "dev": true
- },
- "node_modules/gensync": {
- "version": "1.0.0-beta.2",
- "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz",
- "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==",
- "dev": true,
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/globals": {
- "version": "11.12.0",
- "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz",
- "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==",
- "dev": true,
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/has": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
- "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
- "dev": true,
- "dependencies": {
- "function-bind": "^1.1.1"
- },
- "engines": {
- "node": ">= 0.4.0"
- }
- },
- "node_modules/has-flag": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
- "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
- "dev": true,
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/is-core-module": {
- "version": "2.11.0",
- "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz",
- "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==",
- "dev": true,
- "dependencies": {
- "has": "^1.0.3"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/js-tokens": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
- "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="
- },
- "node_modules/jsesc": {
- "version": "2.5.2",
- "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz",
- "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==",
- "dev": true,
- "bin": {
- "jsesc": "bin/jsesc"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/json5": {
- "version": "2.2.3",
- "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz",
- "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==",
- "dev": true,
- "bin": {
- "json5": "lib/cli.js"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/loose-envify": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz",
- "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==",
- "dependencies": {
- "js-tokens": "^3.0.0 || ^4.0.0"
- },
- "bin": {
- "loose-envify": "cli.js"
- }
- },
- "node_modules/lru-cache": {
- "version": "5.1.1",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz",
- "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==",
- "dev": true,
- "dependencies": {
- "yallist": "^3.0.2"
- }
- },
- "node_modules/magic-string": {
- "version": "0.27.0",
- "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.27.0.tgz",
- "integrity": "sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==",
- "dev": true,
- "dependencies": {
- "@jridgewell/sourcemap-codec": "^1.4.13"
- },
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/ms": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
- "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
- "dev": true
- },
- "node_modules/nanoid": {
- "version": "3.3.4",
- "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz",
- "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==",
- "dev": true,
- "bin": {
- "nanoid": "bin/nanoid.cjs"
- },
- "engines": {
- "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
- }
- },
- "node_modules/node-releases": {
- "version": "2.0.10",
- "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.10.tgz",
- "integrity": "sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w==",
- "dev": true
- },
- "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
- },
- "node_modules/picocolors": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
- "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==",
- "dev": true
- },
- "node_modules/postcss": {
- "version": "8.4.21",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.21.tgz",
- "integrity": "sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg==",
- "dev": true,
- "funding": [
- {
- "type": "opencollective",
- "url": "https://opencollective.com/postcss/"
- },
- {
- "type": "tidelift",
- "url": "https://tidelift.com/funding/github/npm/postcss"
- }
- ],
- "dependencies": {
- "nanoid": "^3.3.4",
- "picocolors": "^1.0.0",
- "source-map-js": "^1.0.2"
- },
- "engines": {
- "node": "^10 || ^12 || >=14"
- }
- },
- "node_modules/react": {
- "version": "18.2.0",
- "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz",
- "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==",
- "dependencies": {
- "loose-envify": "^1.1.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/react-dom": {
- "version": "18.2.0",
- "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz",
- "integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==",
- "dependencies": {
- "loose-envify": "^1.1.0",
- "scheduler": "^0.23.0"
- },
- "peerDependencies": {
- "react": "^18.2.0"
- }
- },
- "node_modules/react-refresh": {
- "version": "0.14.0",
- "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.0.tgz",
- "integrity": "sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/resolve": {
- "version": "1.22.1",
- "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz",
- "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==",
- "dev": true,
- "dependencies": {
- "is-core-module": "^2.9.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/rollup": {
- "version": "3.19.1",
- "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.19.1.tgz",
- "integrity": "sha512-lAbrdN7neYCg/8WaoWn/ckzCtz+jr70GFfYdlf50OF7387HTg+wiuiqJRFYawwSPpqfqDNYqK7smY/ks2iAudg==",
- "dev": true,
- "bin": {
- "rollup": "dist/bin/rollup"
- },
- "engines": {
- "node": ">=14.18.0",
- "npm": ">=8.0.0"
- },
- "optionalDependencies": {
- "fsevents": "~2.3.2"
- }
- },
- "node_modules/scheduler": {
- "version": "0.23.0",
- "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz",
- "integrity": "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==",
- "dependencies": {
- "loose-envify": "^1.1.0"
- }
- },
- "node_modules/semver": {
- "version": "6.3.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
- "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
- "dev": true,
- "bin": {
- "semver": "bin/semver.js"
- }
- },
- "node_modules/source-map-js": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz",
- "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/supports-color": {
- "version": "5.5.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
- "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
- "dev": true,
- "dependencies": {
- "has-flag": "^3.0.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "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,
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/to-fast-properties": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
- "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==",
- "dev": true,
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/typescript": {
- "version": "4.9.5",
- "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz",
- "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==",
- "dev": true,
- "bin": {
- "tsc": "bin/tsc",
- "tsserver": "bin/tsserver"
- },
- "engines": {
- "node": ">=4.2.0"
- }
- },
- "node_modules/update-browserslist-db": {
- "version": "1.0.10",
- "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz",
- "integrity": "sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==",
- "dev": true,
- "funding": [
- {
- "type": "opencollective",
- "url": "https://opencollective.com/browserslist"
- },
- {
- "type": "tidelift",
- "url": "https://tidelift.com/funding/github/npm/browserslist"
- }
- ],
- "dependencies": {
- "escalade": "^3.1.1",
- "picocolors": "^1.0.0"
- },
- "bin": {
- "browserslist-lint": "cli.js"
- },
- "peerDependencies": {
- "browserslist": ">= 4.21.0"
- }
- },
- "node_modules/vite": {
- "version": "4.1.4",
- "resolved": "https://registry.npmjs.org/vite/-/vite-4.1.4.tgz",
- "integrity": "sha512-3knk/HsbSTKEin43zHu7jTwYWv81f8kgAL99G5NWBcA1LKvtvcVAC4JjBH1arBunO9kQka+1oGbrMKOjk4ZrBg==",
- "dev": true,
- "dependencies": {
- "esbuild": "^0.16.14",
- "postcss": "^8.4.21",
- "resolve": "^1.22.1",
- "rollup": "^3.10.0"
- },
- "bin": {
- "vite": "bin/vite.js"
- },
- "engines": {
- "node": "^14.18.0 || >=16.0.0"
- },
- "optionalDependencies": {
- "fsevents": "~2.3.2"
- },
- "peerDependencies": {
- "@types/node": ">= 14",
- "less": "*",
- "sass": "*",
- "stylus": "*",
- "sugarss": "*",
- "terser": "^5.4.0"
- },
- "peerDependenciesMeta": {
- "@types/node": {
- "optional": true
- },
- "less": {
- "optional": true
- },
- "sass": {
- "optional": true
- },
- "stylus": {
- "optional": true
- },
- "sugarss": {
- "optional": true
- },
- "terser": {
- "optional": true
- }
- }
- },
- "node_modules/yallist": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
- "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==",
- "dev": true
- }
- },
- "dependencies": {
- "@ampproject/remapping": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz",
- "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==",
- "dev": true,
- "requires": {
- "@jridgewell/gen-mapping": "^0.1.0",
- "@jridgewell/trace-mapping": "^0.3.9"
- }
- },
- "@babel/code-frame": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz",
- "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==",
- "dev": true,
- "requires": {
- "@babel/highlight": "^7.18.6"
- }
- },
- "@babel/compat-data": {
- "version": "7.21.0",
- "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.21.0.tgz",
- "integrity": "sha512-gMuZsmsgxk/ENC3O/fRw5QY8A9/uxQbbCEypnLIiYYc/qVJtEV7ouxC3EllIIwNzMqAQee5tanFabWsUOutS7g==",
- "dev": true
- },
- "@babel/core": {
- "version": "7.21.0",
- "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.21.0.tgz",
- "integrity": "sha512-PuxUbxcW6ZYe656yL3EAhpy7qXKq0DmYsrJLpbB8XrsCP9Nm+XCg9XFMb5vIDliPD7+U/+M+QJlH17XOcB7eXA==",
- "dev": true,
- "requires": {
- "@ampproject/remapping": "^2.2.0",
- "@babel/code-frame": "^7.18.6",
- "@babel/generator": "^7.21.0",
- "@babel/helper-compilation-targets": "^7.20.7",
- "@babel/helper-module-transforms": "^7.21.0",
- "@babel/helpers": "^7.21.0",
- "@babel/parser": "^7.21.0",
- "@babel/template": "^7.20.7",
- "@babel/traverse": "^7.21.0",
- "@babel/types": "^7.21.0",
- "convert-source-map": "^1.7.0",
- "debug": "^4.1.0",
- "gensync": "^1.0.0-beta.2",
- "json5": "^2.2.2",
- "semver": "^6.3.0"
- }
- },
- "@babel/generator": {
- "version": "7.21.1",
- "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.21.1.tgz",
- "integrity": "sha512-1lT45bAYlQhFn/BHivJs43AiW2rg3/UbLyShGfF3C0KmHvO5fSghWd5kBJy30kpRRucGzXStvnnCFniCR2kXAA==",
- "dev": true,
- "requires": {
- "@babel/types": "^7.21.0",
- "@jridgewell/gen-mapping": "^0.3.2",
- "@jridgewell/trace-mapping": "^0.3.17",
- "jsesc": "^2.5.1"
- },
- "dependencies": {
- "@jridgewell/gen-mapping": {
- "version": "0.3.2",
- "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz",
- "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==",
- "dev": true,
- "requires": {
- "@jridgewell/set-array": "^1.0.1",
- "@jridgewell/sourcemap-codec": "^1.4.10",
- "@jridgewell/trace-mapping": "^0.3.9"
- }
- }
- }
- },
- "@babel/helper-compilation-targets": {
- "version": "7.20.7",
- "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.7.tgz",
- "integrity": "sha512-4tGORmfQcrc+bvrjb5y3dG9Mx1IOZjsHqQVUz7XCNHO+iTmqxWnVg3KRygjGmpRLJGdQSKuvFinbIb0CnZwHAQ==",
- "dev": true,
- "requires": {
- "@babel/compat-data": "^7.20.5",
- "@babel/helper-validator-option": "^7.18.6",
- "browserslist": "^4.21.3",
- "lru-cache": "^5.1.1",
- "semver": "^6.3.0"
- }
- },
- "@babel/helper-environment-visitor": {
- "version": "7.18.9",
- "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz",
- "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==",
- "dev": true
- },
- "@babel/helper-function-name": {
- "version": "7.21.0",
- "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.21.0.tgz",
- "integrity": "sha512-HfK1aMRanKHpxemaY2gqBmL04iAPOPRj7DxtNbiDOrJK+gdwkiNRVpCpUJYbUT+aZyemKN8brqTOxzCaG6ExRg==",
- "dev": true,
- "requires": {
- "@babel/template": "^7.20.7",
- "@babel/types": "^7.21.0"
- }
- },
- "@babel/helper-hoist-variables": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz",
- "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==",
- "dev": true,
- "requires": {
- "@babel/types": "^7.18.6"
- }
- },
- "@babel/helper-module-imports": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz",
- "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==",
- "dev": true,
- "requires": {
- "@babel/types": "^7.18.6"
- }
- },
- "@babel/helper-module-transforms": {
- "version": "7.21.2",
- "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.21.2.tgz",
- "integrity": "sha512-79yj2AR4U/Oqq/WOV7Lx6hUjau1Zfo4cI+JLAVYeMV5XIlbOhmjEk5ulbTc9fMpmlojzZHkUUxAiK+UKn+hNQQ==",
- "dev": true,
- "requires": {
- "@babel/helper-environment-visitor": "^7.18.9",
- "@babel/helper-module-imports": "^7.18.6",
- "@babel/helper-simple-access": "^7.20.2",
- "@babel/helper-split-export-declaration": "^7.18.6",
- "@babel/helper-validator-identifier": "^7.19.1",
- "@babel/template": "^7.20.7",
- "@babel/traverse": "^7.21.2",
- "@babel/types": "^7.21.2"
- }
- },
- "@babel/helper-plugin-utils": {
- "version": "7.20.2",
- "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz",
- "integrity": "sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ==",
- "dev": true
- },
- "@babel/helper-simple-access": {
- "version": "7.20.2",
- "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz",
- "integrity": "sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==",
- "dev": true,
- "requires": {
- "@babel/types": "^7.20.2"
- }
- },
- "@babel/helper-split-export-declaration": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz",
- "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==",
- "dev": true,
- "requires": {
- "@babel/types": "^7.18.6"
- }
- },
- "@babel/helper-string-parser": {
- "version": "7.19.4",
- "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz",
- "integrity": "sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==",
- "dev": true
- },
- "@babel/helper-validator-identifier": {
- "version": "7.19.1",
- "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz",
- "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==",
- "dev": true
- },
- "@babel/helper-validator-option": {
- "version": "7.21.0",
- "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.21.0.tgz",
- "integrity": "sha512-rmL/B8/f0mKS2baE9ZpyTcTavvEuWhTTW8amjzXNvYG4AwBsqTLikfXsEofsJEfKHf+HQVQbFOHy6o+4cnC/fQ==",
- "dev": true
- },
- "@babel/helpers": {
- "version": "7.21.0",
- "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.21.0.tgz",
- "integrity": "sha512-XXve0CBtOW0pd7MRzzmoyuSj0e3SEzj8pgyFxnTT1NJZL38BD1MK7yYrm8yefRPIDvNNe14xR4FdbHwpInD4rA==",
- "dev": true,
- "requires": {
- "@babel/template": "^7.20.7",
- "@babel/traverse": "^7.21.0",
- "@babel/types": "^7.21.0"
- }
- },
- "@babel/highlight": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz",
- "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==",
- "dev": true,
- "requires": {
- "@babel/helper-validator-identifier": "^7.18.6",
- "chalk": "^2.0.0",
- "js-tokens": "^4.0.0"
- }
- },
- "@babel/parser": {
- "version": "7.21.2",
- "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.21.2.tgz",
- "integrity": "sha512-URpaIJQwEkEC2T9Kn+Ai6Xe/02iNaVCuT/PtoRz3GPVJVDpPd7mLo+VddTbhCRU9TXqW5mSrQfXZyi8kDKOVpQ==",
- "dev": true
- },
- "@babel/plugin-transform-react-jsx-self": {
- "version": "7.21.0",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.21.0.tgz",
- "integrity": "sha512-f/Eq+79JEu+KUANFks9UZCcvydOOGMgF7jBrcwjHa5jTZD8JivnhCJYvmlhR/WTXBWonDExPoW0eO/CR4QJirA==",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.20.2"
- }
- },
- "@babel/plugin-transform-react-jsx-source": {
- "version": "7.19.6",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.19.6.tgz",
- "integrity": "sha512-RpAi004QyMNisst/pvSanoRdJ4q+jMCWyk9zdw/CyLB9j8RXEahodR6l2GyttDRyEVWZtbN+TpLiHJ3t34LbsQ==",
- "dev": true,
- "requires": {
- "@babel/helper-plugin-utils": "^7.19.0"
- }
- },
- "@babel/template": {
- "version": "7.20.7",
- "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.20.7.tgz",
- "integrity": "sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==",
- "dev": true,
- "requires": {
- "@babel/code-frame": "^7.18.6",
- "@babel/parser": "^7.20.7",
- "@babel/types": "^7.20.7"
- }
- },
- "@babel/traverse": {
- "version": "7.21.2",
- "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.21.2.tgz",
- "integrity": "sha512-ts5FFU/dSUPS13tv8XiEObDu9K+iagEKME9kAbaP7r0Y9KtZJZ+NGndDvWoRAYNpeWafbpFeki3q9QoMD6gxyw==",
- "dev": true,
- "requires": {
- "@babel/code-frame": "^7.18.6",
- "@babel/generator": "^7.21.1",
- "@babel/helper-environment-visitor": "^7.18.9",
- "@babel/helper-function-name": "^7.21.0",
- "@babel/helper-hoist-variables": "^7.18.6",
- "@babel/helper-split-export-declaration": "^7.18.6",
- "@babel/parser": "^7.21.2",
- "@babel/types": "^7.21.2",
- "debug": "^4.1.0",
- "globals": "^11.1.0"
- }
- },
- "@babel/types": {
- "version": "7.21.2",
- "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.21.2.tgz",
- "integrity": "sha512-3wRZSs7jiFaB8AjxiiD+VqN5DTG2iRvJGQ+qYFrs/654lg6kGTQWIOFjlBo5RaXuAZjBmP3+OQH4dmhqiiyYxw==",
- "dev": true,
- "requires": {
- "@babel/helper-string-parser": "^7.19.4",
- "@babel/helper-validator-identifier": "^7.19.1",
- "to-fast-properties": "^2.0.0"
- }
- },
- "@esbuild/android-arm": {
- "version": "0.16.17",
- "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.16.17.tgz",
- "integrity": "sha512-N9x1CMXVhtWEAMS7pNNONyA14f71VPQN9Cnavj1XQh6T7bskqiLLrSca4O0Vr8Wdcga943eThxnVp3JLnBMYtw==",
- "dev": true,
- "optional": true
- },
- "@esbuild/android-arm64": {
- "version": "0.16.17",
- "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.16.17.tgz",
- "integrity": "sha512-MIGl6p5sc3RDTLLkYL1MyL8BMRN4tLMRCn+yRJJmEDvYZ2M7tmAf80hx1kbNEUX2KJ50RRtxZ4JHLvCfuB6kBg==",
- "dev": true,
- "optional": true
- },
- "@esbuild/android-x64": {
- "version": "0.16.17",
- "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.16.17.tgz",
- "integrity": "sha512-a3kTv3m0Ghh4z1DaFEuEDfz3OLONKuFvI4Xqczqx4BqLyuFaFkuaG4j2MtA6fuWEFeC5x9IvqnX7drmRq/fyAQ==",
- "dev": true,
- "optional": true
- },
- "@esbuild/darwin-arm64": {
- "version": "0.16.17",
- "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.16.17.tgz",
- "integrity": "sha512-/2agbUEfmxWHi9ARTX6OQ/KgXnOWfsNlTeLcoV7HSuSTv63E4DqtAc+2XqGw1KHxKMHGZgbVCZge7HXWX9Vn+w==",
- "dev": true,
- "optional": true
- },
- "@esbuild/darwin-x64": {
- "version": "0.16.17",
- "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.16.17.tgz",
- "integrity": "sha512-2By45OBHulkd9Svy5IOCZt376Aa2oOkiE9QWUK9fe6Tb+WDr8hXL3dpqi+DeLiMed8tVXspzsTAvd0jUl96wmg==",
- "dev": true,
- "optional": true
- },
- "@esbuild/freebsd-arm64": {
- "version": "0.16.17",
- "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.16.17.tgz",
- "integrity": "sha512-mt+cxZe1tVx489VTb4mBAOo2aKSnJ33L9fr25JXpqQqzbUIw/yzIzi+NHwAXK2qYV1lEFp4OoVeThGjUbmWmdw==",
- "dev": true,
- "optional": true
- },
- "@esbuild/freebsd-x64": {
- "version": "0.16.17",
- "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.16.17.tgz",
- "integrity": "sha512-8ScTdNJl5idAKjH8zGAsN7RuWcyHG3BAvMNpKOBaqqR7EbUhhVHOqXRdL7oZvz8WNHL2pr5+eIT5c65kA6NHug==",
- "dev": true,
- "optional": true
- },
- "@esbuild/linux-arm": {
- "version": "0.16.17",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.16.17.tgz",
- "integrity": "sha512-iihzrWbD4gIT7j3caMzKb/RsFFHCwqqbrbH9SqUSRrdXkXaygSZCZg1FybsZz57Ju7N/SHEgPyaR0LZ8Zbe9gQ==",
- "dev": true,
- "optional": true
- },
- "@esbuild/linux-arm64": {
- "version": "0.16.17",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.16.17.tgz",
- "integrity": "sha512-7S8gJnSlqKGVJunnMCrXHU9Q8Q/tQIxk/xL8BqAP64wchPCTzuM6W3Ra8cIa1HIflAvDnNOt2jaL17vaW+1V0g==",
- "dev": true,
- "optional": true
- },
- "@esbuild/linux-ia32": {
- "version": "0.16.17",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.16.17.tgz",
- "integrity": "sha512-kiX69+wcPAdgl3Lonh1VI7MBr16nktEvOfViszBSxygRQqSpzv7BffMKRPMFwzeJGPxcio0pdD3kYQGpqQ2SSg==",
- "dev": true,
- "optional": true
- },
- "@esbuild/linux-loong64": {
- "version": "0.16.17",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.16.17.tgz",
- "integrity": "sha512-dTzNnQwembNDhd654cA4QhbS9uDdXC3TKqMJjgOWsC0yNCbpzfWoXdZvp0mY7HU6nzk5E0zpRGGx3qoQg8T2DQ==",
- "dev": true,
- "optional": true
- },
- "@esbuild/linux-mips64el": {
- "version": "0.16.17",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.16.17.tgz",
- "integrity": "sha512-ezbDkp2nDl0PfIUn0CsQ30kxfcLTlcx4Foz2kYv8qdC6ia2oX5Q3E/8m6lq84Dj/6b0FrkgD582fJMIfHhJfSw==",
- "dev": true,
- "optional": true
- },
- "@esbuild/linux-ppc64": {
- "version": "0.16.17",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.16.17.tgz",
- "integrity": "sha512-dzS678gYD1lJsW73zrFhDApLVdM3cUF2MvAa1D8K8KtcSKdLBPP4zZSLy6LFZ0jYqQdQ29bjAHJDgz0rVbLB3g==",
- "dev": true,
- "optional": true
- },
- "@esbuild/linux-riscv64": {
- "version": "0.16.17",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.16.17.tgz",
- "integrity": "sha512-ylNlVsxuFjZK8DQtNUwiMskh6nT0vI7kYl/4fZgV1llP5d6+HIeL/vmmm3jpuoo8+NuXjQVZxmKuhDApK0/cKw==",
- "dev": true,
- "optional": true
- },
- "@esbuild/linux-s390x": {
- "version": "0.16.17",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.16.17.tgz",
- "integrity": "sha512-gzy7nUTO4UA4oZ2wAMXPNBGTzZFP7mss3aKR2hH+/4UUkCOyqmjXiKpzGrY2TlEUhbbejzXVKKGazYcQTZWA/w==",
- "dev": true,
- "optional": true
- },
- "@esbuild/linux-x64": {
- "version": "0.16.17",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.16.17.tgz",
- "integrity": "sha512-mdPjPxfnmoqhgpiEArqi4egmBAMYvaObgn4poorpUaqmvzzbvqbowRllQ+ZgzGVMGKaPkqUmPDOOFQRUFDmeUw==",
- "dev": true,
- "optional": true
- },
- "@esbuild/netbsd-x64": {
- "version": "0.16.17",
- "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.16.17.tgz",
- "integrity": "sha512-/PzmzD/zyAeTUsduZa32bn0ORug+Jd1EGGAUJvqfeixoEISYpGnAezN6lnJoskauoai0Jrs+XSyvDhppCPoKOA==",
- "dev": true,
- "optional": true
- },
- "@esbuild/openbsd-x64": {
- "version": "0.16.17",
- "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.16.17.tgz",
- "integrity": "sha512-2yaWJhvxGEz2RiftSk0UObqJa/b+rIAjnODJgv2GbGGpRwAfpgzyrg1WLK8rqA24mfZa9GvpjLcBBg8JHkoodg==",
- "dev": true,
- "optional": true
- },
- "@esbuild/sunos-x64": {
- "version": "0.16.17",
- "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.16.17.tgz",
- "integrity": "sha512-xtVUiev38tN0R3g8VhRfN7Zl42YCJvyBhRKw1RJjwE1d2emWTVToPLNEQj/5Qxc6lVFATDiy6LjVHYhIPrLxzw==",
- "dev": true,
- "optional": true
- },
- "@esbuild/win32-arm64": {
- "version": "0.16.17",
- "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.16.17.tgz",
- "integrity": "sha512-ga8+JqBDHY4b6fQAmOgtJJue36scANy4l/rL97W+0wYmijhxKetzZdKOJI7olaBaMhWt8Pac2McJdZLxXWUEQw==",
- "dev": true,
- "optional": true
- },
- "@esbuild/win32-ia32": {
- "version": "0.16.17",
- "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.16.17.tgz",
- "integrity": "sha512-WnsKaf46uSSF/sZhwnqE4L/F89AYNMiD4YtEcYekBt9Q7nj0DiId2XH2Ng2PHM54qi5oPrQ8luuzGszqi/veig==",
- "dev": true,
- "optional": true
- },
- "@esbuild/win32-x64": {
- "version": "0.16.17",
- "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.16.17.tgz",
- "integrity": "sha512-y+EHuSchhL7FjHgvQL/0fnnFmO4T1bhvWANX6gcnqTjtnKWbTvUMCpGnv2+t+31d7RzyEAYAd4u2fnIhHL6N/Q==",
- "dev": true,
- "optional": true
- },
- "@jridgewell/gen-mapping": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz",
- "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==",
- "dev": true,
- "requires": {
- "@jridgewell/set-array": "^1.0.0",
- "@jridgewell/sourcemap-codec": "^1.4.10"
- }
- },
- "@jridgewell/resolve-uri": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz",
- "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==",
- "dev": true
- },
- "@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==",
- "dev": true
- },
- "@jridgewell/sourcemap-codec": {
- "version": "1.4.14",
- "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz",
- "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==",
- "dev": true
- },
- "@jridgewell/trace-mapping": {
- "version": "0.3.17",
- "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz",
- "integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==",
- "dev": true,
- "requires": {
- "@jridgewell/resolve-uri": "3.1.0",
- "@jridgewell/sourcemap-codec": "1.4.14"
- }
- },
- "@types/prop-types": {
- "version": "15.7.5",
- "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz",
- "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==",
- "dev": true
- },
- "@types/react": {
- "version": "18.0.28",
- "resolved": "https://registry.npmjs.org/@types/react/-/react-18.0.28.tgz",
- "integrity": "sha512-RD0ivG1kEztNBdoAK7lekI9M+azSnitIn85h4iOiaLjaTrMjzslhaqCGaI4IyCJ1RljWiLCEu4jyrLLgqxBTew==",
- "dev": true,
- "requires": {
- "@types/prop-types": "*",
- "@types/scheduler": "*",
- "csstype": "^3.0.2"
- }
- },
- "@types/react-dom": {
- "version": "18.0.11",
- "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.0.11.tgz",
- "integrity": "sha512-O38bPbI2CWtgw/OoQoY+BRelw7uysmXbWvw3nLWO21H1HSh+GOlqPuXshJfjmpNlKiiSDG9cc1JZAaMmVdcTlw==",
- "dev": true,
- "requires": {
- "@types/react": "*"
- }
- },
- "@types/scheduler": {
- "version": "0.16.2",
- "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz",
- "integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==",
- "dev": true
- },
- "@vitejs/plugin-react": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-3.1.0.tgz",
- "integrity": "sha512-AfgcRL8ZBhAlc3BFdigClmTUMISmmzHn7sB2h9U1odvc5U/MjWXsAaz18b/WoppUTDBzxOJwo2VdClfUcItu9g==",
- "dev": true,
- "requires": {
- "@babel/core": "^7.20.12",
- "@babel/plugin-transform-react-jsx-self": "^7.18.6",
- "@babel/plugin-transform-react-jsx-source": "^7.19.6",
- "magic-string": "^0.27.0",
- "react-refresh": "^0.14.0"
- }
- },
- "ansi-styles": {
- "version": "3.2.1",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
- "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
- "dev": true,
- "requires": {
- "color-convert": "^1.9.0"
- }
- },
- "browserslist": {
- "version": "4.21.5",
- "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.5.tgz",
- "integrity": "sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w==",
- "dev": true,
- "requires": {
- "caniuse-lite": "^1.0.30001449",
- "electron-to-chromium": "^1.4.284",
- "node-releases": "^2.0.8",
- "update-browserslist-db": "^1.0.10"
- }
- },
- "caniuse-lite": {
- "version": "1.0.30001466",
- "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001466.tgz",
- "integrity": "sha512-ewtFBSfWjEmxUgNBSZItFSmVtvk9zkwkl1OfRZlKA8slltRN+/C/tuGVrF9styXkN36Yu3+SeJ1qkXxDEyNZ5w==",
- "dev": true
- },
- "chalk": {
- "version": "2.4.2",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
- "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
- "dev": true,
- "requires": {
- "ansi-styles": "^3.2.1",
- "escape-string-regexp": "^1.0.5",
- "supports-color": "^5.3.0"
- }
- },
- "color-convert": {
- "version": "1.9.3",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
- "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
- "dev": true,
- "requires": {
- "color-name": "1.1.3"
- }
- },
- "color-name": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
- "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==",
- "dev": true
- },
- "convert-source-map": {
- "version": "1.9.0",
- "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz",
- "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==",
- "dev": true
- },
- "csstype": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.1.tgz",
- "integrity": "sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw==",
- "dev": true
- },
- "debug": {
- "version": "4.3.4",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
- "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
- "dev": true,
- "requires": {
- "ms": "2.1.2"
- }
- },
- "electron-to-chromium": {
- "version": "1.4.328",
- "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.328.tgz",
- "integrity": "sha512-DE9tTy2PNmy1v55AZAO542ui+MLC2cvINMK4P2LXGsJdput/ThVG9t+QGecPuAZZSgC8XoI+Jh9M1OG9IoNSCw==",
- "dev": true
- },
- "esbuild": {
- "version": "0.16.17",
- "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.16.17.tgz",
- "integrity": "sha512-G8LEkV0XzDMNwXKgM0Jwu3nY3lSTwSGY6XbxM9cr9+s0T/qSV1q1JVPBGzm3dcjhCic9+emZDmMffkwgPeOeLg==",
- "dev": true,
- "requires": {
- "@esbuild/android-arm": "0.16.17",
- "@esbuild/android-arm64": "0.16.17",
- "@esbuild/android-x64": "0.16.17",
- "@esbuild/darwin-arm64": "0.16.17",
- "@esbuild/darwin-x64": "0.16.17",
- "@esbuild/freebsd-arm64": "0.16.17",
- "@esbuild/freebsd-x64": "0.16.17",
- "@esbuild/linux-arm": "0.16.17",
- "@esbuild/linux-arm64": "0.16.17",
- "@esbuild/linux-ia32": "0.16.17",
- "@esbuild/linux-loong64": "0.16.17",
- "@esbuild/linux-mips64el": "0.16.17",
- "@esbuild/linux-ppc64": "0.16.17",
- "@esbuild/linux-riscv64": "0.16.17",
- "@esbuild/linux-s390x": "0.16.17",
- "@esbuild/linux-x64": "0.16.17",
- "@esbuild/netbsd-x64": "0.16.17",
- "@esbuild/openbsd-x64": "0.16.17",
- "@esbuild/sunos-x64": "0.16.17",
- "@esbuild/win32-arm64": "0.16.17",
- "@esbuild/win32-ia32": "0.16.17",
- "@esbuild/win32-x64": "0.16.17"
- }
- },
- "escalade": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz",
- "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==",
- "dev": true
- },
- "escape-string-regexp": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
- "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
- "dev": true
- },
- "fsevents": {
- "version": "2.3.2",
- "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
- "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
- "dev": true,
- "optional": true
- },
- "function-bind": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
- "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
- "dev": true
- },
- "gensync": {
- "version": "1.0.0-beta.2",
- "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz",
- "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==",
- "dev": true
- },
- "globals": {
- "version": "11.12.0",
- "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz",
- "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==",
- "dev": true
- },
- "has": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
- "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
- "dev": true,
- "requires": {
- "function-bind": "^1.1.1"
- }
- },
- "has-flag": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
- "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
- "dev": true
- },
- "is-core-module": {
- "version": "2.11.0",
- "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz",
- "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==",
- "dev": true,
- "requires": {
- "has": "^1.0.3"
- }
- },
- "js-tokens": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
- "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="
- },
- "jsesc": {
- "version": "2.5.2",
- "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz",
- "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==",
- "dev": true
- },
- "json5": {
- "version": "2.2.3",
- "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz",
- "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==",
- "dev": true
- },
- "loose-envify": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz",
- "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==",
- "requires": {
- "js-tokens": "^3.0.0 || ^4.0.0"
- }
- },
- "lru-cache": {
- "version": "5.1.1",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz",
- "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==",
- "dev": true,
- "requires": {
- "yallist": "^3.0.2"
- }
- },
- "magic-string": {
- "version": "0.27.0",
- "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.27.0.tgz",
- "integrity": "sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==",
- "dev": true,
- "requires": {
- "@jridgewell/sourcemap-codec": "^1.4.13"
- }
- },
- "ms": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
- "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
- "dev": true
- },
- "nanoid": {
- "version": "3.3.4",
- "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz",
- "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==",
- "dev": true
- },
- "node-releases": {
- "version": "2.0.10",
- "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.10.tgz",
- "integrity": "sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w==",
- "dev": true
- },
- "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
- },
- "picocolors": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
- "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==",
- "dev": true
- },
- "postcss": {
- "version": "8.4.21",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.21.tgz",
- "integrity": "sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg==",
- "dev": true,
- "requires": {
- "nanoid": "^3.3.4",
- "picocolors": "^1.0.0",
- "source-map-js": "^1.0.2"
- }
- },
- "react": {
- "version": "18.2.0",
- "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz",
- "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==",
- "requires": {
- "loose-envify": "^1.1.0"
- }
- },
- "react-dom": {
- "version": "18.2.0",
- "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz",
- "integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==",
- "requires": {
- "loose-envify": "^1.1.0",
- "scheduler": "^0.23.0"
- }
- },
- "react-refresh": {
- "version": "0.14.0",
- "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.0.tgz",
- "integrity": "sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ==",
- "dev": true
- },
- "resolve": {
- "version": "1.22.1",
- "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz",
- "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==",
- "dev": true,
- "requires": {
- "is-core-module": "^2.9.0",
- "path-parse": "^1.0.7",
- "supports-preserve-symlinks-flag": "^1.0.0"
- }
- },
- "rollup": {
- "version": "3.19.1",
- "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.19.1.tgz",
- "integrity": "sha512-lAbrdN7neYCg/8WaoWn/ckzCtz+jr70GFfYdlf50OF7387HTg+wiuiqJRFYawwSPpqfqDNYqK7smY/ks2iAudg==",
- "dev": true,
- "requires": {
- "fsevents": "~2.3.2"
- }
- },
- "scheduler": {
- "version": "0.23.0",
- "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz",
- "integrity": "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==",
- "requires": {
- "loose-envify": "^1.1.0"
- }
- },
- "semver": {
- "version": "6.3.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
- "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
- "dev": true
- },
- "source-map-js": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz",
- "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==",
- "dev": true
- },
- "supports-color": {
- "version": "5.5.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
- "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
- "dev": true,
- "requires": {
- "has-flag": "^3.0.0"
- }
- },
- "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
- },
- "to-fast-properties": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
- "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==",
- "dev": true
- },
- "typescript": {
- "version": "4.9.5",
- "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz",
- "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==",
- "dev": true
- },
- "update-browserslist-db": {
- "version": "1.0.10",
- "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz",
- "integrity": "sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==",
- "dev": true,
- "requires": {
- "escalade": "^3.1.1",
- "picocolors": "^1.0.0"
- }
- },
- "vite": {
- "version": "4.1.4",
- "resolved": "https://registry.npmjs.org/vite/-/vite-4.1.4.tgz",
- "integrity": "sha512-3knk/HsbSTKEin43zHu7jTwYWv81f8kgAL99G5NWBcA1LKvtvcVAC4JjBH1arBunO9kQka+1oGbrMKOjk4ZrBg==",
- "dev": true,
- "requires": {
- "esbuild": "^0.16.14",
- "fsevents": "~2.3.2",
- "postcss": "^8.4.21",
- "resolve": "^1.22.1",
- "rollup": "^3.10.0"
- }
- },
- "yallist": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
- "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==",
- "dev": true
- }
- }
-}
diff --git a/docs/6-exercise/11-react/_sample/package.json b/docs/6-exercise/11-react/_sample/package.json
deleted file mode 100644
index ba2942310..000000000
--- a/docs/6-exercise/11-react/_sample/package.json
+++ /dev/null
@@ -1,22 +0,0 @@
-{
- "name": "frontend",
- "private": true,
- "version": "0.0.0",
- "type": "module",
- "scripts": {
- "dev": "vite",
- "build": "tsc && vite build",
- "preview": "vite preview"
- },
- "dependencies": {
- "react": "^18.2.0",
- "react-dom": "^18.2.0"
- },
- "devDependencies": {
- "@types/react": "^18.0.27",
- "@types/react-dom": "^18.0.10",
- "@vitejs/plugin-react": "^3.1.0",
- "typescript": "^4.9.3",
- "vite": "^4.1.0"
- }
-}
diff --git a/docs/6-exercise/11-react/_sample/src/App.css b/docs/6-exercise/11-react/_sample/src/App.css
deleted file mode 100644
index c80351bfc..000000000
--- a/docs/6-exercise/11-react/_sample/src/App.css
+++ /dev/null
@@ -1,149 +0,0 @@
-body {
- overflow-y: hidden;
-}
-
-.no-category {
- opacity: 0.3;
-}
-
-.sidenav {
- height: 100%;
- width: 200px;
- position: absolute;
- top: 0;
- left: 0;
- overflow-x: hidden;
- padding-top: 60px;
- border-right: solid;
-}
-
-.sidenav .nav-list {
- list-style: none;
- padding-left: 0;
-}
-
-.sidenav .nav-row {
- display: flex;
-}
-
-.sidenav .off-focus {
- display: block;
- text-align: left;
- height: 25px;
- background-color: white;
- border: none;
- width: 100%;
- transition: 0.1s;
-}
-
-.sidenav .off-focus:hover {
- background-color: gainsboro;
-}
-
-.sidenav .on-focus {
- display: block;
- text-align: left;
- height: 25px;
- background-color: gainsboro;
- border: none;
- width: 100%;
-}
-
-.sidenav .delete-button {
- display: block;
- border: none;
-}
-
-.main {
- margin-left: 200px;
- padding-top: 60px;
-}
-
-.todo-table {
- width: 100%;
-}
-
-th {
- border-bottom: solid;
-}
-
-.header1 {
- width: 70%;
-}
-
-.header2 {
- width: 20%;
-}
-
-td {
- border-bottom: solid 1px;
-}
-
-.todo {
- display: flex;
- height: 25px;
- vertical-align: middle;
-}
-
-.editing-todo {
- height: 25px;
- vertical-align: middle;
-}
-
-.editing-todo form {
- display: flex;
-}
-
-.no-todo {
- display: flex;
- height: 25px;
- vertical-align: middle;
- opacity: 0.3;
-}
-
-.category {
- text-align: center;
-}
-
-.add-button {
- border: none;
-}
-
-.edit-button {
- display: block;
- margin-left: auto;
- border: none;
-}
-
-.confirm-button {
- display: block;
- margin-left: auto;
- border: none;
-}
-
-td .delete-button {
- display: block;
- margin-left: 2px;
- border: none;
-}
-
-.done {
- text-align: center;
-}
-
-.category-input {
- border: none;
- border-bottom: solid 1px;
- outline: none;
-}
-
-.category-input ::after {
- left: 0;
- top: 30px;
- content: error;
- color: red;
-}
-
-.hidden {
- display: none;
-}
diff --git a/docs/6-exercise/11-react/_sample/src/App.tsx b/docs/6-exercise/11-react/_sample/src/App.tsx
deleted file mode 100644
index f47c58ccd..000000000
--- a/docs/6-exercise/11-react/_sample/src/App.tsx
+++ /dev/null
@@ -1,359 +0,0 @@
-import { useState } from "react";
-import "./App.css";
-
-// ToDoのデータ構造
-type Todo = {
- id: number;
- category: string;
- content: string;
- isDone: boolean;
-};
-
-function App() {
- // ToDoのリスト
- const [todos, setTodos] = useState([]);
- // 現在編集中のToDoのid(編集していないときは-1)
- const [editingTodoId, setEditingTodoId] = useState(-1);
- // 次に作成するToDoのid
- const [nextId, setNextId] = useState(1);
- // ToDoのカテゴリ(空文字はすべてのカテゴリ)
- const [categories, setCategories] = useState([""]);
- // 現在表示中のカテゴリ
- const [currentCategory, setCurrentCategory] = useState("");
- // input要素のvalue
- const [contentInput, setContentInput] = useState("");
- const [categoryInputInMainScreen, setCategoryInputInMainScreen] =
- useState("");
- const [categoryInputInSideBar, setCategoryInputInSideBar] =
- useState("");
-
- // ToDoを追加する関数
- const addTodo = (newTodo: Todo) => {
- const todosCopy = todos.slice();
- todosCopy.push(newTodo);
- setTodos(todosCopy);
- };
-
- // ToDoの内容を更新する関数
- const updateTodoContent = (id: number, newContent: string) => {
- const todosCopy = todos.slice();
- const todoUpdated = todosCopy.find((todoCopy) => todoCopy.id === id);
- if (!todoUpdated) throw new Error();
- todoUpdated.content = newContent;
- setTodos(todosCopy);
- };
-
- // ToDoが完了したかどうかを変更する関数
- const updateTodoIsDone = (id: number) => {
- const todosCopy = todos.slice();
- const todoUpdated = todosCopy.find((todoCopy) => todoCopy.id === id);
- if (!todoUpdated) throw new Error();
- todoUpdated.isDone = !todoUpdated.isDone;
- setTodos(todosCopy);
- };
-
- // ToDoを削除する関数
- const removeTodo = (id: number) => {
- setTodos(todos.filter((todo) => todo.id !== id));
- };
-
- // カテゴリを追加する関数
- const addCategory = (newCategory: string) => {
- const categoriesCopy = categories.slice();
- categoriesCopy.push(newCategory);
- setCategories(categoriesCopy);
- };
-
- // カテゴリを削除する関数
- const removeCategory = (existingCategory: string) => {
- setCategories(
- categories.filter((category) => existingCategory != category),
- );
- };
-
- // 編集操作を取り消す関数
- const clearEditing = () => {
- const editedTodo =
- editingTodoId === -1
- ? null
- : todos.find((todo) => todo.id === editingTodoId);
- if (editedTodo === undefined) throw new Error();
- else if (editedTodo != null && editedTodo.content === "") {
- removeTodo(editingTodoId);
- }
- setContentInput("");
- setEditingTodoId(-1);
- };
-
- // 現在表示中のカテゴリのToDo
- const todosOfCurrentCategories =
- currentCategory === ""
- ? todos
- : todos.filter((todo) => todo.category === currentCategory);
-
- return (
-
- {/* サイドバー */}
-
-
- {categories.map((category) =>
- category === "" ? (
- -
-
-
- ) : (
- -
-
-
-
- ),
- )}
-
-
-
- {/* ToDoの表示部分 */}
-
-
- {/** すべてのカテゴリを表示しているときは新規ToDoのカテゴリを指定して
- * 追加するためにinput要素を表示 */}
-
-
-
- );
-}
-
-export default App;
diff --git a/docs/6-exercise/11-react/_sample/src/main.tsx b/docs/6-exercise/11-react/_sample/src/main.tsx
deleted file mode 100644
index 2be325ed2..000000000
--- a/docs/6-exercise/11-react/_sample/src/main.tsx
+++ /dev/null
@@ -1,9 +0,0 @@
-import React from "react";
-import ReactDOM from "react-dom/client";
-import App from "./App";
-
-ReactDOM.createRoot(document.getElementById("root") as HTMLElement).render(
-
-
- ,
-);
diff --git a/docs/6-exercise/11-react/_sample/src/vite-env.d.ts b/docs/6-exercise/11-react/_sample/src/vite-env.d.ts
deleted file mode 100644
index 11f02fe2a..000000000
--- a/docs/6-exercise/11-react/_sample/src/vite-env.d.ts
+++ /dev/null
@@ -1 +0,0 @@
-///
diff --git a/docs/6-exercise/11-react/_sample/tsconfig.json b/docs/6-exercise/11-react/_sample/tsconfig.json
deleted file mode 100644
index 3d0a51a86..000000000
--- a/docs/6-exercise/11-react/_sample/tsconfig.json
+++ /dev/null
@@ -1,21 +0,0 @@
-{
- "compilerOptions": {
- "target": "ESNext",
- "useDefineForClassFields": true,
- "lib": ["DOM", "DOM.Iterable", "ESNext"],
- "allowJs": false,
- "skipLibCheck": true,
- "esModuleInterop": false,
- "allowSyntheticDefaultImports": true,
- "strict": true,
- "forceConsistentCasingInFileNames": true,
- "module": "ESNext",
- "moduleResolution": "Node",
- "resolveJsonModule": true,
- "isolatedModules": true,
- "noEmit": true,
- "jsx": "react-jsx"
- },
- "include": ["src"],
- "references": [{ "path": "./tsconfig.node.json" }]
-}
diff --git a/docs/6-exercise/11-react/_sample/tsconfig.node.json b/docs/6-exercise/11-react/_sample/tsconfig.node.json
deleted file mode 100644
index 9d31e2aed..000000000
--- a/docs/6-exercise/11-react/_sample/tsconfig.node.json
+++ /dev/null
@@ -1,9 +0,0 @@
-{
- "compilerOptions": {
- "composite": true,
- "module": "ESNext",
- "moduleResolution": "Node",
- "allowSyntheticDefaultImports": true
- },
- "include": ["vite.config.ts"]
-}
diff --git a/docs/6-exercise/11-react/_sample/vite.config.ts b/docs/6-exercise/11-react/_sample/vite.config.ts
deleted file mode 100644
index 9cc50ead1..000000000
--- a/docs/6-exercise/11-react/_sample/vite.config.ts
+++ /dev/null
@@ -1,7 +0,0 @@
-import { defineConfig } from "vite";
-import react from "@vitejs/plugin-react";
-
-// https://vitejs.dev/config/
-export default defineConfig({
- plugins: [react()],
-});
diff --git a/docs/6-exercise/11-react/index.mdx b/docs/6-exercise/11-react/index.mdx
deleted file mode 100644
index 7f9972a65..000000000
--- a/docs/6-exercise/11-react/index.mdx
+++ /dev/null
@@ -1,88 +0,0 @@
----
-title: React を用いたアプリ作成
-sidebar_position: 10
----
-
-import todoAppVideo from "./todo-app.mp4";
-import ViewSource from "@site/src/components/ViewSource";
-
-この章では教材の「[React](/docs/advanced/react/)」の内容を扱っています。
-
----
-
-## ToDo リスト
-
-以下のような本格的な ToDo リストを作ってみましょう。
-
-
-
-- ToDo のカテゴリを自分で作成できます
-- カテゴリごとにタスクを追加することができます
-- ToDo の削除・編集ができます
-- ToDo が完了したらチェックをつけることができます
-- カテゴリを削除するとその配下にある ToDo も削除されます
-
-### ヒント
-
-以下ヒントです。
-
-#### ヒント1
-
-いきなりデザインも機能も同時に本格的にするのは複雑なので、まずは最小限の機能に焦点を絞るのがよいでしょう。手始めに、カテゴリなどは考えず ToDo を追加・削除・編集するアプリを作ってみましょう。
-
-この教材の [React の章](/docs/advanced/react/#課題-2)で簡単な ToDo アプリを実際に作っている箇所もあるので、そちらも参考にしてみましょう。
-
-#### ヒント2
-
-大まかにみれば、肝心の ToDo に関しては次のようなモデル(型)を用意すればよさそうです
-
-```javascript
-type Todo = {
- id: number, // ToDoのid
- category: string, // ToDoの属するカテゴリ
- content: string, // ToDoの内容
- isDone: boolean, // ToDoが完了しているかどうか
-};
-```
-
-そして複数の ToDo をまとめてリストとして管理します。
-
-```javascript
-const [todos, setTodos] = useState([]);
-
-const addTodo = (newTodo: Todo) => {
- // todosを更新する操作
-};
-
-const updateTodoContent = (id: number, newContent: string) => {
- // todoの内容を更新する操作
-};
-
-const updateTodoIsDone = (id: number) => {
- // todoが完了したかを更新する操作
-};
-
-const removeTodo = (id: number) => {
- // todosを削除する操作
-}
-```
-
-また、カテゴリもリストに格納して管理できます。
-
-```javascript
-const [categories, setCategories] = useState([]);
-
-const addCategory = (newCategory: string) => {
- // カテゴリを追加する操作
-}
-
-const removeCategory = (existingCategory: string) => {
- // カテゴリを削除する操作
-}
-```
-
-### 解答例
-
-以下解答例です。
-
-
diff --git a/docs/6-exercise/11-react/todo-app.mp4 b/docs/6-exercise/11-react/todo-app.mp4
deleted file mode 100644
index 3805e0acb..000000000
Binary files a/docs/6-exercise/11-react/todo-app.mp4 and /dev/null differ
diff --git a/docs/6-exercise/2-easy-apps/_samples/bmi/index.html b/docs/6-exercise/2-easy-apps/_samples/bmi/index.html
deleted file mode 100644
index 2e810eb27..000000000
--- a/docs/6-exercise/2-easy-apps/_samples/bmi/index.html
+++ /dev/null
@@ -1,17 +0,0 @@
-
-
-
-
- Document
-
-
- BMI計算アプリ
- cm
- kg
-
- BMIは……
- ??
- です!
-
-
-
diff --git a/docs/6-exercise/2-easy-apps/_samples/bmi/script.js b/docs/6-exercise/2-easy-apps/_samples/bmi/script.js
deleted file mode 100644
index 1ea0861ab..000000000
--- a/docs/6-exercise/2-easy-apps/_samples/bmi/script.js
+++ /dev/null
@@ -1,12 +0,0 @@
-const height = document.getElementById("height");
-const weight = document.getElementById("weight");
-
-const calcButton = document.getElementById("calc-button");
-
-const answer = document.getElementById("answer");
-
-function clicked() {
- answer.textContent = weight.value / (height.value / 100) ** 2;
-}
-
-calcButton.onclick = clicked;
diff --git a/docs/6-exercise/2-easy-apps/_samples/calculator/index.html b/docs/6-exercise/2-easy-apps/_samples/calculator/index.html
deleted file mode 100644
index a9fe50ab2..000000000
--- a/docs/6-exercise/2-easy-apps/_samples/calculator/index.html
+++ /dev/null
@@ -1,20 +0,0 @@
-
-
-
-
- Title
-
-
-
-
-
-
-
-
-
-
diff --git a/docs/6-exercise/2-easy-apps/_samples/calculator/script.js b/docs/6-exercise/2-easy-apps/_samples/calculator/script.js
deleted file mode 100644
index d5b9a820e..000000000
--- a/docs/6-exercise/2-easy-apps/_samples/calculator/script.js
+++ /dev/null
@@ -1,25 +0,0 @@
-const calculateButton = document.getElementById("calculate-button");
-const number1 = document.getElementById("number1");
-const number2 = document.getElementById("number2");
-const operator = document.getElementById("operator");
-const result = document.getElementById("result");
-
-function calculate() {
- const inputNumber1 = Number(number1.value);
- const inputNumber2 = Number(number2.value);
- if (operator.value === "/" && inputNumber2 === 0) {
- result.textContent = "0で割ることはできません。";
- result.style.color = "red";
- } else {
- if (operator.value === "+")
- result.textContent = inputNumber1 + inputNumber2;
- if (operator.value === "-")
- result.textContent = inputNumber1 - inputNumber2;
- if (operator.value === "*")
- result.textContent = inputNumber1 * inputNumber2;
- if (operator.value === "/")
- result.textContent = inputNumber1 / inputNumber2;
- result.style.color = "black";
- }
-}
-calculateButton.onclick = calculate;
diff --git a/docs/6-exercise/2-easy-apps/_samples/drawing/answer/index.html b/docs/6-exercise/2-easy-apps/_samples/drawing/answer/index.html
deleted file mode 100644
index 86e05bebf..000000000
--- a/docs/6-exercise/2-easy-apps/_samples/drawing/answer/index.html
+++ /dev/null
@@ -1,19 +0,0 @@
-
-
-
-
- Document
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/docs/6-exercise/2-easy-apps/_samples/drawing/answer/script.js b/docs/6-exercise/2-easy-apps/_samples/drawing/answer/script.js
deleted file mode 100644
index c921b529e..000000000
--- a/docs/6-exercise/2-easy-apps/_samples/drawing/answer/script.js
+++ /dev/null
@@ -1,27 +0,0 @@
-const canvas = document.getElementById("canvas");
-const smallButton = document.getElementById("small-button");
-const bigButton = document.getElementById("big-button");
-
-const context = canvas.getContext("2d");
-let isBig = false;
-
-canvas.onclick = drawRect;
-
-function drawRect(e) {
- const top = canvas.getBoundingClientRect().top;
- const left = canvas.getBoundingClientRect().left;
- context.fillStyle = "green";
- if (isBig) {
- context.fillRect(e.pageX - left - 10, e.pageY - top - 10, 20, 20);
- } else {
- context.fillRect(e.pageX - left - 5, e.pageY - top - 5, 10, 10);
- }
-}
-
-function swapSize() {
- isBig = !isBig;
-}
-
-smallButton.onclick = swapSize;
-
-bigButton.onclick = swapSize;
diff --git a/docs/6-exercise/2-easy-apps/_samples/drawing/canvas-demo/index.html b/docs/6-exercise/2-easy-apps/_samples/drawing/canvas-demo/index.html
deleted file mode 100644
index 017826e17..000000000
--- a/docs/6-exercise/2-easy-apps/_samples/drawing/canvas-demo/index.html
+++ /dev/null
@@ -1,13 +0,0 @@
-
-
-
-
- Document
-
-
-
-
-
-
diff --git a/docs/6-exercise/2-easy-apps/_samples/drawing/canvas-demo/script.js b/docs/6-exercise/2-easy-apps/_samples/drawing/canvas-demo/script.js
deleted file mode 100644
index ee46889ae..000000000
--- a/docs/6-exercise/2-easy-apps/_samples/drawing/canvas-demo/script.js
+++ /dev/null
@@ -1,4 +0,0 @@
-let canvas = document.getElementById("canvas");
-let context = canvas.getContext("2d");
-context.fillStyle = "green";
-context.fillRect(20, 10, 150, 100);
diff --git a/docs/6-exercise/2-easy-apps/_samples/drawing/event-demo/index.html b/docs/6-exercise/2-easy-apps/_samples/drawing/event-demo/index.html
deleted file mode 100644
index e5bf042ba..000000000
--- a/docs/6-exercise/2-easy-apps/_samples/drawing/event-demo/index.html
+++ /dev/null
@@ -1,14 +0,0 @@
-
-
-
-
- Document
-
-
-
-
-
-
-
-
-
diff --git a/docs/6-exercise/2-easy-apps/_samples/drawing/event-demo/script.js b/docs/6-exercise/2-easy-apps/_samples/drawing/event-demo/script.js
deleted file mode 100644
index 708d75f00..000000000
--- a/docs/6-exercise/2-easy-apps/_samples/drawing/event-demo/script.js
+++ /dev/null
@@ -1,12 +0,0 @@
-const button = document.getElementById("button");
-const tagNameDisplay = document.getElementById("tag-name-display");
-const displayX = document.getElementById("display-x");
-const displayY = document.getElementById("display-y");
-
-function displayNameAndLocation(e) {
- tagNameDisplay.textContent = e.target.tagName;
- displayX.textContent = e.pageX;
- displayY.textContent = e.pageY;
-}
-
-button.onclick = displayNameAndLocation;
diff --git a/docs/6-exercise/2-easy-apps/_samples/object-event/index.html b/docs/6-exercise/2-easy-apps/_samples/object-event/index.html
deleted file mode 100644
index 00c3a5a43..000000000
--- a/docs/6-exercise/2-easy-apps/_samples/object-event/index.html
+++ /dev/null
@@ -1,12 +0,0 @@
-
-
-
-
- school annual report
-
-
- 成績:数学...80点、理科...90点
-
-
-
-
diff --git a/docs/6-exercise/2-easy-apps/_samples/object-event/script.js b/docs/6-exercise/2-easy-apps/_samples/object-event/script.js
deleted file mode 100644
index e142b4be1..000000000
--- a/docs/6-exercise/2-easy-apps/_samples/object-event/script.js
+++ /dev/null
@@ -1,22 +0,0 @@
-let tanaka = {
- name: "田中",
- scores: {
- math: 80,
- science: 90,
- },
-};
-
-function falsifyTanakaData() {
- tanaka.scores.math = 100;
- tanaka.scores.science = 100;
- const academicPerformance = document.getElementById("academic-performance");
- academicPerformance.textContent =
- "成績:数学..." +
- tanaka.scores.math +
- "点、理科..." +
- tanaka.scores.science +
- "点";
-}
-
-const trickbutton = document.getElementById("button");
-trickbutton.onclick = falsifyTanakaData;
diff --git a/docs/6-exercise/2-easy-apps/bmi.mp4 b/docs/6-exercise/2-easy-apps/bmi.mp4
deleted file mode 100644
index ffbf34760..000000000
Binary files a/docs/6-exercise/2-easy-apps/bmi.mp4 and /dev/null differ
diff --git a/docs/6-exercise/2-easy-apps/calculator.mp4 b/docs/6-exercise/2-easy-apps/calculator.mp4
deleted file mode 100644
index 16894286d..000000000
Binary files a/docs/6-exercise/2-easy-apps/calculator.mp4 and /dev/null differ
diff --git a/docs/6-exercise/2-easy-apps/drawing.mp4 b/docs/6-exercise/2-easy-apps/drawing.mp4
deleted file mode 100644
index 5d89b3573..000000000
Binary files a/docs/6-exercise/2-easy-apps/drawing.mp4 and /dev/null differ
diff --git a/docs/6-exercise/2-easy-apps/index.mdx b/docs/6-exercise/2-easy-apps/index.mdx
deleted file mode 100644
index 66d6ba9c8..000000000
--- a/docs/6-exercise/2-easy-apps/index.mdx
+++ /dev/null
@@ -1,359 +0,0 @@
----
-title: 簡単な Web アプリケーションの作成
-sidebar_position: 2
----
-
-import Answer from "@site/src/components/Answer";
-import ViewSource from "@site/src/components/ViewSource";
-import bmiVideo from "./bmi.mp4";
-import calculatorVideo from "./calculator.mp4";
-import objectEventVideo from "./object-event.mp4";
-import drawingVideo from "./drawing.mp4";
-
-この章では教材の「[オブジェクト](/docs/trial-session/object/)」から「[プロジェクト](/docs/trial-session/project/)」までの内容を扱っています。
-
----
-
-## 1. BMI 計算アプリ
-
-身長と体重を入力すると BMI を計算するアプリを作ってみましょう。
-
-
-
-### 解答例
-
-
-
-```html title="index.html"
-BMI計算アプリ
- cm
- kg
-
-BMIは……
-??
-です!
-```
-
-```javascript title="script.js"
-const height = document.getElementById("height");
-const weight = document.getElementById("weight");
-
-const calcButton = document.getElementById("calc-button");
-
-const answer = document.getElementById("answer");
-
-calcButton.onclick = () => {
- answer.textContent = weight.value / (height.value / 100) ** 2;
-};
-```
-
-
-
-
-
----
-
-## 2. 電卓アプリ
-
-入力した 2 つの値の四則演算ができる、簡易的な計算アプリを作ってみましょう。
-
-### ルール
-
-- 2 つの数値と、演算子 `+`、`-`、`*`、`/` のうちいずれか 1 つを選択できます
-- `計算` ボタンをクリックすると、計算結果が表示されます
-
-
-
-### STEP 1
-
-まずは、数値の入力欄を作り、入力された値を取得してみましょう。
-
-- 入力欄は `input` タグで作成できます。`type` 属性に `number` を指定することで、入力を数値のみに限定することができます。
-
- ```html title="index.html"
-
- ```
-
-- 入力された数値は、`document.getElementById` 関数が返すオブジェクトの `value` プロパティに格納されています。
-- ただし、文字列として格納されているので、四則演算を行うには数値に変換する必要があります。文字列を数値に変換するには、`Number()` を使います。
-
- ```javascript
- const number = Number("1"); // 1
- ```
-
-- 2 つの入力欄とボタンを配置し、ボタンを押すと入力された 2 つの数の和が表示されるようにしてみましょう。
-
- ```html title="index.html"
-
-
-
-
- ```
-
- ```javascript title="script.js"
- const calculateButton = document.getElementById("calculate-button");
- const number1 = document.getElementById("number1");
- const number2 = document.getElementById("number2");
- const result = document.getElementById("result");
-
- function calculate() {
- const inputNumber1 = Number(number1.value);
- const inputNumber2 = Number(number2.value);
- result.textContent = inputNumber1 + inputNumber2;
- }
- calculateButton.onclick = calculate;
- ```
-
-### STEP 2
-
-次に、演算子を選択できるプルダウンメニューを作りましょう。
-
-- プルダウンメニューは、`select` タグと `option` タグを使って実現できます。1 つ 1 つの選択肢を `option` タグで作成し、全体を `select` タグで囲みます。
-
- ```html title="index.html"
-
- ```
-
-- `select` 要素を `document.getElementById` 関数で取得します。返されたオブジェクトの `value` プロパティには、プルダウンメニューで選択されている選択肢の `value` 属性に指定されている文字列が格納されています。
-
- ```javascript title="script.js"
- const fruitSelect = document.getElementById("fruit-select");
-
- // "strawberry", "apple", "banana" のいずれか
- document.write(fruitSelect.value);
- ```
-
-- 演算子 `+`、`-`、`*`、`/` の中から 1 つ選択できるプルダウンメニューを作り、選ばれた演算子に応じた計算結果が表示されるようにしましょう。
-- 余裕がある人は、0 で割ろうとした時に計算結果の代わりにエラーメッセージが表示されるようにしてみましょう。
-
-### 解答例
-
-
-
-```html title="index.html"
-
-
-
-
-
-```
-
-```javascript title="script.js"
-const calculateButton = document.getElementById("calculate-button");
-const number1 = document.getElementById("number1");
-const number2 = document.getElementById("number2");
-const operator = document.getElementById("operator");
-const result = document.getElementById("result");
-
-function calculate() {
- const inputNumber1 = Number(number1.value);
- const inputNumber2 = Number(number2.value);
- if (operator.value === "/" && inputNumber2 === 0) {
- result.textContent = "0で割ることはできません。";
- result.style.color = "red";
- } else {
- if (operator.value === "+")
- result.textContent = inputNumber1 + inputNumber2;
- if (operator.value === "-")
- result.textContent = inputNumber1 - inputNumber2;
- if (operator.value === "*")
- result.textContent = inputNumber1 * inputNumber2;
- if (operator.value === "/")
- result.textContent = inputNumber1 / inputNumber2;
- result.style.color = "black";
- }
-}
-calculateButton.onclick = calculate;
-```
-
-
-
-
-
----
-
-## 3. 成績改竄
-
-田中君の成績を格納したオブジェクトがあります。
-
-```javascript
-let tanaka = {
- name: "田中",
- scores: {
- math: 80,
- science: 90,
- },
-};
-```
-
-しかしながら田中君は、親に数学、理科の成績を高く見せたいと考えました。
-下を満たすプログラムを作成して下さい。
-
-- HTML を読み込むと、`成績:数学...80点、理科...90点` と表示される
-- ボタンを押すと、`成績:数学...100点、理科...100点` と表示される
-- ただし、JavaScript は `tanaka` オブジェクトのみを参照する。新しい成績格納オブジェクトを作ってはならない。
-
-すなわち、
-
-```javascript
-HTML要素.textContent =
- "成績:数学..." +
- tanaka.scores.math +
- "点、理科..." +
- tanaka.scores.science +
- "点";
-```
-
-というコードを含めることを条件とします。
-
-
-
-### 解答例
-
-
-
-```html title="index.html"
-成績:数学...80点、理科...90点
-
-```
-
-```javascript title="script.js"
-let tanaka = {
- name: "田中",
- scores: {
- math: 80,
- science: 90,
- },
-};
-
-function falsifyTanakaData() {
- tanaka.scores.math = 100;
- tanaka.scores.science = 100;
- const academicPerformance = document.getElementById("academic-performance");
- academicPerformance.textContent =
- "成績:数学..." +
- tanaka.scores.math +
- "点、理科..." +
- tanaka.scores.science +
- "点";
-}
-
-const trickbutton = document.getElementById("button");
-trickbutton.onclick = falsifyTanakaData;
-```
-
-
-
-
-
----
-
-## 4. 正方形の描画
-
-枠内でクリックしたら正方形を描画するツールを作成してみましょう。
-
-
-
-### ヒント
-
-`canvas` 要素を用いることによって、ブラウザ上に図形や絵を描画することができます。
-`canvas` 要素を `getElementById` 関数で呼び出し、`getContext` 関数を用いることによって図形の描画を行うことができます。
-
-```html
-
-```
-
-```javascript
-const canvas = document.getElementById("canvas");
-const ctx = canvas.getContext("2d");
-ctx.fillStyle = "green";
-ctx.fillRect(10, 10, 100, 100);
-```
-
-
-
-また、DOM の onclick プロパティに格納された関数は、引数として [`MouseEvent` オブジェクト](https://developer.mozilla.org/ja/docs/Web/API/MouseEvent) を受け取ります。また、 [`MouseEvent#target` プロパティ](https://developer.mozilla.org/ja/docs/Web/API/Event/target)にアクセスすることで、ユーザーがクリックしたオブジェクトの情報などを取得することができます。
-
-```html
-
-
-
-
-```
-
-```javascript
-const button = document.getElementById("button");
-const tagNameDisplay = document.getElementById("tag-name-display");
-const displayX = document.getElementById("display-x");
-const displayY = document.getElementById("display-y");
-
-function displayNameAndLocation(e) {
- // e は event の略
- tagNameDisplay.textContent = e.target.tagName;
- displayX.textContent = e.pageX;
- displayY.textContent = e.pageY;
-}
-
-button.onclick = displayNameAndLocation;
-```
-
-
-
-### 解答例
-
-
-
-```html title="index.html"
-
-
-
-
-
-
-
-```
-
-```javascript title="script.js"
-const canvas = document.getElementById("canvas");
-const smallButton = document.getElementById("small-button");
-const bigButton = document.getElementById("big-button");
-
-const context = canvas.getContext("2d");
-let isBig = false;
-
-canvas.onclick = drawRect;
-
-function drawRect(e) {
- const top = canvas.getBoundingClientRect().top;
- const left = canvas.getBoundingClientRect().left;
- context.fillStyle = "green";
- if (isBig) {
- context.fillRect(e.pageX - left - 10, e.pageY - top - 10, 20, 20);
- } else {
- context.fillRect(e.pageX - left - 5, e.pageY - top - 5, 10, 10);
- }
-}
-
-function swapSize() {
- isBig = !isBig;
-}
-
-smallButton.onclick = swapSize;
-
-bigButton.onclick = swapSize;
-```
-
-
-
-
diff --git a/docs/6-exercise/2-easy-apps/object-event.mp4 b/docs/6-exercise/2-easy-apps/object-event.mp4
deleted file mode 100644
index 02c0fb8b5..000000000
Binary files a/docs/6-exercise/2-easy-apps/object-event.mp4 and /dev/null differ
diff --git a/docs/6-exercise/3-javascript/_samples/animals1/index.html b/docs/6-exercise/3-javascript/_samples/animals1/index.html
deleted file mode 100644
index 4f99f115a..000000000
--- a/docs/6-exercise/3-javascript/_samples/animals1/index.html
+++ /dev/null
@@ -1,10 +0,0 @@
-
-
-
-
- 動物
-
-
-
-
-
diff --git a/docs/6-exercise/3-javascript/_samples/animals1/script.js b/docs/6-exercise/3-javascript/_samples/animals1/script.js
deleted file mode 100644
index a764f22c9..000000000
--- a/docs/6-exercise/3-javascript/_samples/animals1/script.js
+++ /dev/null
@@ -1,47 +0,0 @@
-class Cat {
- weight = 5;
-
- isKitten = true;
-
- meow() {
- alert("ミャー");
- }
-}
-
-class Dog {
- weight = 10;
-
- isPuppy = false;
-
- bark() {
- alert("ワンワン");
- }
-}
-
-class Chicken {
- weight = 2.8;
-
- isDelicious = true;
-
- crow() {
- alert("コケコッコー");
- }
-}
-
-class Bear {
- weight = 80;
-
- growl() {
- alert("グルルル");
- }
-}
-
-const cat = new Cat();
-const dog = new Dog();
-const chicken = new Chicken();
-const bear = new Bear();
-
-cat.meow();
-dog.bark();
-chicken.crow();
-bear.growl();
diff --git a/docs/6-exercise/3-javascript/_samples/animals2/index.html b/docs/6-exercise/3-javascript/_samples/animals2/index.html
deleted file mode 100644
index 4f99f115a..000000000
--- a/docs/6-exercise/3-javascript/_samples/animals2/index.html
+++ /dev/null
@@ -1,10 +0,0 @@
-
-
-
-
- 動物
-
-
-
-
-
diff --git a/docs/6-exercise/3-javascript/_samples/animals2/script.js b/docs/6-exercise/3-javascript/_samples/animals2/script.js
deleted file mode 100644
index c4a950329..000000000
--- a/docs/6-exercise/3-javascript/_samples/animals2/script.js
+++ /dev/null
@@ -1,49 +0,0 @@
-class Animal {
- weight;
-
- sound;
-
- say() {
- alert(this.sound);
- }
-}
-
-class Cat extends Animal {
- weight = 5;
-
- isKitten = true;
-
- sound = "ニャー";
-}
-
-class Dog extends Animal {
- weight = 10;
-
- isPuppy = false;
-
- sound = "ワンワン";
-}
-
-class Chicken extends Animal {
- weight = 2.8;
-
- isDelicious = true;
-
- sound = "コケコッコー";
-}
-
-class Bear extends Animal {
- weight = 80;
-
- sound = "グルルル";
-}
-
-const cat = new Cat();
-const dog = new Dog();
-const chicken = new Chicken();
-const bear = new Bear();
-
-cat.say();
-dog.say();
-chicken.say();
-bear.say();
diff --git a/docs/6-exercise/3-javascript/_samples/collatz-problem/index.html b/docs/6-exercise/3-javascript/_samples/collatz-problem/index.html
deleted file mode 100644
index b8afd62b9..000000000
--- a/docs/6-exercise/3-javascript/_samples/collatz-problem/index.html
+++ /dev/null
@@ -1,11 +0,0 @@
-
-
-
-
- Title
-
-
-
-
-
-
diff --git a/docs/6-exercise/3-javascript/_samples/collatz-problem/script.js b/docs/6-exercise/3-javascript/_samples/collatz-problem/script.js
deleted file mode 100644
index 327c90bd4..000000000
--- a/docs/6-exercise/3-javascript/_samples/collatz-problem/script.js
+++ /dev/null
@@ -1,12 +0,0 @@
-let n = 27;
-const answer = document.getElementById("answer");
-while (n !== 1) {
- answer.textContent += n + " → ";
- if (n % 2 === 0) {
- n /= 2;
- } else {
- n *= 3;
- n += 1;
- }
-}
-answer.textContent += 1;
diff --git a/docs/6-exercise/3-javascript/_samples/ranking/index.html b/docs/6-exercise/3-javascript/_samples/ranking/index.html
deleted file mode 100644
index e5863244e..000000000
--- a/docs/6-exercise/3-javascript/_samples/ranking/index.html
+++ /dev/null
@@ -1,17 +0,0 @@
-
-
-
-
- Document
-
-
-
-
-
-
diff --git a/docs/6-exercise/3-javascript/_samples/ranking/script.js b/docs/6-exercise/3-javascript/_samples/ranking/script.js
deleted file mode 100644
index fa8c69ec3..000000000
--- a/docs/6-exercise/3-javascript/_samples/ranking/script.js
+++ /dev/null
@@ -1,72 +0,0 @@
-const table = document.getElementById("table");
-
-function createPersonalData(name, mathScore, scienceScore) {
- return {
- name: name,
- scores: {
- math: mathScore,
- science: scienceScore,
- total: mathScore + scienceScore,
- },
- };
-}
-
-// データオブジェクトを生成
-const sato = createPersonalData("佐藤", 80, 70);
-const suzuki = createPersonalData("鈴木", 90, 70);
-const takahashi = createPersonalData("高橋", 100, 40);
-const tanaka = createPersonalData("田中", 85, 65);
-
-// この配列の要素をあとで並び替える。
-const personalDataList = [sato, suzuki, takahashi, tanaka];
-
-// 並び替えるぞ~
-// まず、合計点の順に並べよう。for文のネストが要るぞ!
-// 佐藤と鈴木を比べる→高橋と「佐藤&鈴木」を比べる→田中と「佐藤&鈴木&高橋」を比べる
-
-// 配列のa番目とb番目の要素を入れ替える関数を用意する。
-function swap(array, a, b) {
- const previousData = array[a];
- array[a] = array[b];
- array[b] = previousData;
-}
-
-// いざ、並び替え!
-for (let i = 1; i < 4; i += 1) {
- const person_i = personalDataList[i];
-
- for (let j = 0; j < i; j += 1) {
- const person_j = personalDataList[j];
-
- if (person_j.scores.total < person_i.scores.total) {
- // 1つ目のルールに従って入れ替え
- swap(personalDataList, j, i);
- }
-
- if (
- person_j.scores.total == person_i.scores.total &&
- person_j.scores.math < person_i.scores.math
- ) {
- // 2つ目のルールに従って入れ替え
- swap(personalDataList, j, i);
- }
- }
-}
-
-// 表を埋めていくDOM
-for (const personalData of personalDataList) {
- const newRow = document.createElement("tr");
- const ranking = document.createElement("td");
- const name = document.createElement("td");
- const score = document.createElement("td");
- ranking.textContent = personalDataList.indexOf(personalData);
- name.textContent = personalData.name;
- score.textContent = personalData.scores.total;
- ranking.style.border = "solid";
- name.style.border = "solid";
- score.style.border = "solid";
- newRow.appendChild(ranking);
- newRow.appendChild(name);
- newRow.appendChild(score);
- table.appendChild(newRow);
-}
diff --git a/docs/6-exercise/3-javascript/index.mdx b/docs/6-exercise/3-javascript/index.mdx
deleted file mode 100644
index eb0938439..000000000
--- a/docs/6-exercise/3-javascript/index.mdx
+++ /dev/null
@@ -1,415 +0,0 @@
----
-title: JavaScript の諸文法
-sidebar_position: 3
----
-
-import Answer from "@site/src/components/Answer";
-import ViewSource from "@site/src/components/ViewSource";
-
-この章では教材の「[ブラウザの開発者ツール](/docs/browser-apps/inspector/)」から「[無名関数](/docs/browser-apps/anonymous-function/)」までの内容を扱っています。
-
----
-
-## 1. コラッツの問題
-
-正の整数 n に対して、以下の操作を考えます。
-
-- n が偶数の場合、n を 2 で割る。
-- n が奇数の場合、n に 3 をかけて 1 を足す。
-
-`n = 27` から始めて、`n` が `1` になるまで操作を繰り返します。それぞれの操作の後の `n` の値を順番に表示するプログラムを、while 文を用いて作成してください。
-
-例えば、`n = 3` から始めて操作を繰り返すと、`n` の値は 3 → 10 → 5 → 16 → 8 → 4 → 2 → 1 と変化します。
-
-:::tip[`a` を `b` で割った余り]
-
-`a` を `b` で割った余りは `a % b` と表します。これを用いて `n` が偶数か奇数かを判定しましょう。
-
-```javascript
-const n = 27;
-if (n % 2 === 0) {
- document.write("nは偶数です");
-} else {
- document.write("nは奇数です");
-}
-```
-
-:::
-
-### 解答例
-
-
-
-```html
-
-```
-
-```javascript
-let n = 27;
-const answer = document.getElementById("answer");
-while (n !== 1) {
- answer.textContent += n + " → ";
- if (n % 2 === 0) {
- n /= 2;
- } else {
- n *= 3;
- n += 1;
- }
-}
-answer.textContent += 1;
-```
-
-
-
-
-
----
-
-## 2. 動物の鳴き声
-
-次のコードは、ブラウザ上に動物の鳴き声を表示するプログラムです。
-
-```html title="index.html"
-
-
-
-
- 動物
-
-
-
-
-
-```
-
-```javascript title="script.js"
-class Cat {
- weight = 5;
-
- isKitten = true;
-
- meow() {
- alert("ミャー");
- }
-}
-
-class Dog {
- weight = 10;
-
- isPuppy = false;
-
- bark() {
- alert("ミャー");
- }
-}
-
-class Chicken {
- weight = 2.8;
-
- isDelicious = true;
-
- crow() {
- alert("コケコッコー");
- }
-}
-
-const cat = new Cat();
-const dog = new Dog();
-const chicken = new Chicken();
-
-cat.meow();
-dog.bark();
-chicken.crow();
-```
-
-1. 新たに `Bear`(熊)クラスを追加し、体重を 80 として、`growl` メソッドで「グルルル」と鳴くようにしてみましょう。
-
-2. 1 のようにどんどん動物を増やしていく事もできますが、いくつかの性質や処理は共通点があり、1つの親クラスにまとめることができるように見えます。どのようなクラスを用意すればきれいにまとめることができるでしょうか?
-
-### 解答例
-
-
-
-#### 1 の解答例
-
-```javascript title="script.js"
-// 犬、猫、ニワトリの後
-
-class Bear {
- weight = 80;
-
- growl() {
- alert();
- }
-}
-
-const cat = new Cat();
-const dog = new Dog();
-const chicken = new Chicken();
-const bear = new Bear();
-
-cat.meow();
-dog.bark();
-chicken.crow();
-bear.growl();
-```
-
-
-
-#### 2 の解答例
-
-以下のようなクラス `Animal` を用意します。つまり、動物の体重という性質や動物が「鳴く」という処理は同じであり、変わるのは声のみなので、一括で扱ってしまいます。
-
-```javascript
-class Animal {
- weight;
-
- sound;
-
- say() {
- alert(this.sound);
- }
-}
-```
-
-このようなクラスを作れば、次のようにコードをきれいに書くことができます。
-
-```javascript title="script.js"
-class Animal {
- weight;
-
- sound;
-
- say() {
- alert(this.sound);
- }
-}
-
-class Cat extends Animal {
- weight = 5;
-
- isKitten = true;
-
- sound = "ニャー";
-}
-
-class Dog extends Animal {
- weight = 10;
-
- isPuppy = false;
-
- sound = "ワンワン";
-}
-
-class Chicken extends Animal {
- weight = 2.8;
-
- isDelicious = true;
-
- sound = "コケコッコー";
-}
-
-class Bear extends Animal {
- weight = 80;
-
- sound = "グルルル";
-}
-
-const cat = new Cat();
-const dog = new Dog();
-const chicken = new Chicken();
-const bear = new Bear();
-
-cat.say();
-dog.say();
-chicken.say();
-bear.say();
-```
-
-
-
-また、たとえばある正体不明の動物のインスタンスを引数として受け取ったときに鳴き声を表示する関数を作るとします。このとき、メソッドがバラバラだと次のように関数が長いコードになってしまいます。
-
-```javascript
-function showSound(Animal) {
- if (Animal instanceof cat) {
- Animal.meow();
- } else if (Animal instanceof dog) {
- Animal.bark();
- } else if (Animal instanceof chicken) {
- Animal.growl();
- }
- // 動物が増えるとさらに条件分岐が続く
-}
-```
-
-これも、親クラスを作ることで短く書けます。
-
-```javascript
-function showSound(Animal) {
- Animal.say();
- // なんの動物であるかを気にする必要がない
-}
-```
-
-このように、同じ処理でも動物によって処理が変わるにもかかわらず、コードは1つにまとめることができました。この「同じ処理でも引数(今回は動物)によって処理が変わる」ことを、**ポリモーフィズム**と言います。
-
-
-
----
-
-## 3. 順位表
-
-みんなのテストの点数が出ました。
-
-| 名前 | 数学 | 理科 |
-| ---- | ------ | ----- |
-| 佐藤 | 80 点 | 70 点 |
-| 鈴木 | 90 点 | 70 点 |
-| 高橋 | 100 点 | 40 点 |
-| 田中 | 85 点 | 65 点 |
-
-この点数データを使って、順位表を作ってください。
-
-
-ルールは以下とします。
-
-- `math`、`science` の合計点が高い者を上位とする。
-- 上記で同率になった場合、`math` の得点が高い者を上位とする。
-- 順位の判定はもちろん、配列内で繰り返し処理(点数の比較)をするプログラムを JavaScript で書いて行う。
-
-```javascript
-const academicPerformanceData = [sato, suzuki, takahashi, tanaka];
-
-// const academicPerformanceData = [tanaka, suzuki, sato, takahashi];などでも構わない。
-
-// for文でacademicPerformanceDataの要素を順位順に並べ替える処理を書く
-```
-
-最初の配列 `academicPerformanceData` がどんな並びをしていても,最終的には 1 位から順に並んだ配列が出てくるようにプログラムを作成すること。(上記の点数の場合は `[suzuki, tanaka, sato, takahashi]`)
-
-### ヒント
-
-```javascript
-const sato = {
- name:"佐藤";
- scores: {
- math: 0,
- science: 0,
- total: 0;
- };
-}
-```
-
-このように氏名・点数のデータからオブジェクトを作成すると処理がしやすいでしょう。
-
-プログラムを書き終えたら、初めの `academicPerformanceData` の順番をいじったり、点数を書き換えたりして、望み通りの表ができるか確認しましょう。
-
-### 解答例
-
-
-
-まずは、HTML で表のひな形を作ります。
-
-```html title="index.html"
-
-
-
-
- Document
-
-
-
-
-
-
-```
-
-続いて、script.js の回答例です。
-
-```javascript title="script.js"
-const table = document.getElementById("table");
-
-function createPersonalData(name, mathScore, scienceScore) {
- return {
- name: name,
- scores: {
- math: mathScore,
- science: scienceScore,
- total: mathScore + scienceScore,
- },
- };
-}
-
-// データオブジェクトを生成
-const sato = createPersonalData("佐藤", 80, 70);
-const suzuki = createPersonalData("鈴木", 90, 70);
-const takahashi = createPersonalData("高橋", 100, 40);
-const tanaka = createPersonalData("田中", 85, 65);
-
-// この配列の要素をあとで並び替える。
-const personalDataList = [sato, suzuki, takahashi, tanaka];
-
-// 並び替えるぞ~
-// まず、合計点の順に並べよう。for文のネストが要るぞ!
-// 佐藤と鈴木を比べる→高橋と「佐藤&鈴木」を比べる→田中と「佐藤&鈴木&高橋」を比べる
-
-// 配列のa番目とb番目の要素を入れ替える関数を用意する。
-function swap(array, a, b) {
- const previousData = array[a];
- array[a] = array[b];
- array[b] = previousData;
-}
-
-// いざ、並び替え!
-for (let i = 1; i < 4; i += 1) {
- const person_i = personalDataList[i];
-
- for (let j = 0; j < i; j += 1) {
- const person_j = personalDataList[j];
-
- if (person_j.scores.total < person_i.scores.total) {
- // 1つ目のルールに従って入れ替え
- swap(personalDataList, j, i);
- }
-
- if (
- person_j.scores.total == person_i.scores.total &&
- person_j.scores.math < person_i.scores.math
- ) {
- // 2つ目のルールに従って入れ替え
- swap(personalDataList, j, i);
- }
- }
-}
-
-// 表を埋めていくDOM
-for (const personalData of personalDataList) {
- const newRow = document.createElement("tr");
- const ranking = document.createElement("td");
- const name = document.createElement("td");
- const score = document.createElement("td");
- ranking.textContent = personalDataList.indexOf(personalData);
- name.textContent = personalData.name;
- score.textContent = personalData.scores.total;
- ranking.style.border = "solid";
- name.style.border = "solid";
- score.style.border = "solid";
- newRow.appendChild(ranking);
- newRow.appendChild(name);
- newRow.appendChild(score);
- table.appendChild(newRow);
-}
-```
-
-並び替えは「バブルソート」を用いています。[他の並べ方](https://products.sint.co.jp/topsic/blog/algorithm-type)もあるので興味のある方は調べてみましょう
-
-
-
-
diff --git a/docs/6-exercise/3-javascript/tableImage.png b/docs/6-exercise/3-javascript/tableImage.png
deleted file mode 100644
index 40ac0fee8..000000000
Binary files a/docs/6-exercise/3-javascript/tableImage.png and /dev/null differ
diff --git a/docs/6-exercise/4-css/_samples/1_fixed/index.html b/docs/6-exercise/4-css/_samples/1_fixed/index.html
deleted file mode 100644
index 29618d1dc..000000000
--- a/docs/6-exercise/4-css/_samples/1_fixed/index.html
+++ /dev/null
@@ -1,100 +0,0 @@
-
-
-
-
- スタイルシート大学 文化祭
-
-
-
-
-
-
以下では、場所ごとに開催企画を紹介します。
-
中央通り屋台
-
-
牛串
-
牛串を販売しています。おいしいよ。
-
予約不要
-
-
-
牛串
-
牛串を販売しています。おいしいよ。
-
予約不要
-
-
-
牛串
-
牛串を販売しています。おいしいよ。
-
予約不要
-
-
-
屋外ステージ
-
-
軽音サークル ライブ
-
軽音サークルがライブを披露します。
-
予約不要
-
-
-
軽音サークル ライブ
-
軽音サークルがライブを披露します。
-
予約不要
-
-
-
軽音サークル ライブ
-
軽音サークルがライブを披露します。
-
予約不要
-
-
-
屋内ステージ
-
-
ジャズダンス
-
ジャズダンスを披露します。
-
予約必要
-
-
-
ジャズダンス
-
ジャズダンスを披露します。
-
予約必要
-
-
-
ジャズダンス
-
ジャズダンスを披露します。
-
予約必要
-
-
-
教室棟
-
-
映画サークル上映会
-
部員が制作した映画を上映しています。
-
予約必要
-
-
-
映画サークル上映会
-
部員が制作した映画を上映しています。
-
予約必要
-
-
-
映画サークル上映会
-
部員が制作した映画を上映しています。
-
予約必要
-
-
-
講堂
-
-
合唱サークル 演奏会
-
合唱サークルが演奏会を行います。
-
予約必要
-
-
-
合唱サークル 演奏会
-
合唱サークルが演奏会を行います。
-
予約必要
-
-
-
合唱サークル 演奏会
-
合唱サークルが演奏会を行います。
-
予約必要
-
-
-
-
diff --git a/docs/6-exercise/4-css/_samples/1_fixed/style.css b/docs/6-exercise/4-css/_samples/1_fixed/style.css
deleted file mode 100644
index 0c4cadee8..000000000
--- a/docs/6-exercise/4-css/_samples/1_fixed/style.css
+++ /dev/null
@@ -1,75 +0,0 @@
-body {
- margin: 0;
-}
-
-h1,
-h2,
-h3 {
- font-weight: normal;
-}
-
-#header {
- z-index: 10;
- width: 100%;
- height: 80px;
- padding: 20px;
- background-color: #666;
- color: #fff;
- text-align: center;
- /* 以下の部分を追加: (1) */
- position: fixed;
- top: 0;
-}
-
-#wrapper {
- max-width: 600px;
- margin: auto;
- padding: 20px;
- /* 以下の部分を追加: (1) */
- margin-top: 120px;
-}
-
-.card {
- border-width: 0 2px 2px 2px;
- border-style: solid;
- border-color: #666;
- padding: 20px;
-}
-
-.place {
- margin: 0;
- padding: 10px;
- background-color: #666;
- color: #fff;
-}
-
-.reservation {
- width: 5rem;
- text-align: center;
-}
-
-.needed {
- background-color: lightpink;
-}
-
-.not-needed {
- background-color: lightgreen;
-}
-
-.block {
- background-color: lightcoral;
- width: 100px;
- height: 50px;
- margin: 10px;
- padding: 10px;
- font-size: 30px;
-}
-
-.inline {
- background-color: lightblue;
- width: 100px;
- height: 50px;
- margin: 10px;
- padding: 10px;
- font-size: 30px;
-}
diff --git a/docs/6-exercise/4-css/_samples/2_relative-absolute/index.html b/docs/6-exercise/4-css/_samples/2_relative-absolute/index.html
deleted file mode 100644
index 29618d1dc..000000000
--- a/docs/6-exercise/4-css/_samples/2_relative-absolute/index.html
+++ /dev/null
@@ -1,100 +0,0 @@
-
-
-
-
- スタイルシート大学 文化祭
-
-
-
-
-
-
以下では、場所ごとに開催企画を紹介します。
-
中央通り屋台
-
-
牛串
-
牛串を販売しています。おいしいよ。
-
予約不要
-
-
-
牛串
-
牛串を販売しています。おいしいよ。
-
予約不要
-
-
-
牛串
-
牛串を販売しています。おいしいよ。
-
予約不要
-
-
-
屋外ステージ
-
-
軽音サークル ライブ
-
軽音サークルがライブを披露します。
-
予約不要
-
-
-
軽音サークル ライブ
-
軽音サークルがライブを披露します。
-
予約不要
-
-
-
軽音サークル ライブ
-
軽音サークルがライブを披露します。
-
予約不要
-
-
-
屋内ステージ
-
-
ジャズダンス
-
ジャズダンスを披露します。
-
予約必要
-
-
-
ジャズダンス
-
ジャズダンスを披露します。
-
予約必要
-
-
-
ジャズダンス
-
ジャズダンスを披露します。
-
予約必要
-
-
-
教室棟
-
-
映画サークル上映会
-
部員が制作した映画を上映しています。
-
予約必要
-
-
-
映画サークル上映会
-
部員が制作した映画を上映しています。
-
予約必要
-
-
-
映画サークル上映会
-
部員が制作した映画を上映しています。
-
予約必要
-
-
-
講堂
-
-
合唱サークル 演奏会
-
合唱サークルが演奏会を行います。
-
予約必要
-
-
-
合唱サークル 演奏会
-
合唱サークルが演奏会を行います。
-
予約必要
-
-
-
合唱サークル 演奏会
-
合唱サークルが演奏会を行います。
-
予約必要
-
-
-
-
diff --git a/docs/6-exercise/4-css/_samples/2_relative-absolute/style.css b/docs/6-exercise/4-css/_samples/2_relative-absolute/style.css
deleted file mode 100644
index 999dfe497..000000000
--- a/docs/6-exercise/4-css/_samples/2_relative-absolute/style.css
+++ /dev/null
@@ -1,63 +0,0 @@
-body {
- margin: 0;
-}
-
-h1,
-h2,
-h3 {
- font-weight: normal;
-}
-
-#header {
- z-index: 10;
- width: 100%;
- height: 80px;
- padding: 20px;
- background-color: #666;
- color: #fff;
- text-align: center;
- /* 以下の部分を追加: (1) */
- position: fixed;
- top: 0;
-}
-
-#wrapper {
- max-width: 600px;
- margin: auto;
- padding: 20px;
- /* 以下の部分を追加: (1) */
- margin-top: 120px;
-}
-
-.card {
- border-width: 0 2px 2px 2px;
- border-style: solid;
- border-color: #666;
- padding: 20px;
- /* 以下の部分を追加: (2) */
- position: relative;
-}
-
-.place {
- margin: 0;
- padding: 10px;
- background-color: #666;
- color: #fff;
-}
-
-.reservation {
- width: 5rem;
- text-align: center;
- /* 以下の部分を追加: (2) */
- position: absolute;
- top: 20px;
- right: 20px;
-}
-
-.needed {
- background-color: lightpink;
-}
-
-.not-needed {
- background-color: lightgreen;
-}
diff --git a/docs/6-exercise/4-css/_samples/3_sticky/index.html b/docs/6-exercise/4-css/_samples/3_sticky/index.html
deleted file mode 100644
index 29618d1dc..000000000
--- a/docs/6-exercise/4-css/_samples/3_sticky/index.html
+++ /dev/null
@@ -1,100 +0,0 @@
-
-
-
-
- スタイルシート大学 文化祭
-
-
-
-
-
-
以下では、場所ごとに開催企画を紹介します。
-
中央通り屋台
-
-
牛串
-
牛串を販売しています。おいしいよ。
-
予約不要
-
-
-
牛串
-
牛串を販売しています。おいしいよ。
-
予約不要
-
-
-
牛串
-
牛串を販売しています。おいしいよ。
-
予約不要
-
-
-
屋外ステージ
-
-
軽音サークル ライブ
-
軽音サークルがライブを披露します。
-
予約不要
-
-
-
軽音サークル ライブ
-
軽音サークルがライブを披露します。
-
予約不要
-
-
-
軽音サークル ライブ
-
軽音サークルがライブを披露します。
-
予約不要
-
-
-
屋内ステージ
-
-
ジャズダンス
-
ジャズダンスを披露します。
-
予約必要
-
-
-
ジャズダンス
-
ジャズダンスを披露します。
-
予約必要
-
-
-
ジャズダンス
-
ジャズダンスを披露します。
-
予約必要
-
-
-
教室棟
-
-
映画サークル上映会
-
部員が制作した映画を上映しています。
-
予約必要
-
-
-
映画サークル上映会
-
部員が制作した映画を上映しています。
-
予約必要
-
-
-
映画サークル上映会
-
部員が制作した映画を上映しています。
-
予約必要
-
-
-
講堂
-
-
合唱サークル 演奏会
-
合唱サークルが演奏会を行います。
-
予約必要
-
-
-
合唱サークル 演奏会
-
合唱サークルが演奏会を行います。
-
予約必要
-
-
-
合唱サークル 演奏会
-
合唱サークルが演奏会を行います。
-
予約必要
-
-
-
-
diff --git a/docs/6-exercise/4-css/_samples/3_sticky/style.css b/docs/6-exercise/4-css/_samples/3_sticky/style.css
deleted file mode 100644
index c1484612d..000000000
--- a/docs/6-exercise/4-css/_samples/3_sticky/style.css
+++ /dev/null
@@ -1,67 +0,0 @@
-body {
- margin: 0;
-}
-
-h1,
-h2,
-h3 {
- font-weight: normal;
-}
-
-#header {
- z-index: 10;
- width: 100%;
- height: 80px;
- padding: 20px;
- background-color: #666;
- color: #fff;
- text-align: center;
- /* 以下の部分を追加: (1) */
- position: fixed;
- top: 0;
-}
-
-#wrapper {
- max-width: 600px;
- margin: auto;
- padding: 20px;
- /* 以下の部分を追加: (1) */
- margin-top: 120px;
-}
-
-.card {
- border-width: 0 2px 2px 2px;
- border-style: solid;
- border-color: #666;
- padding: 20px;
- /* 以下の部分を追加: (2) */
- position: relative;
-}
-
-.place {
- margin: 0;
- padding: 10px;
- background-color: #666;
- color: #fff;
- /* 以下の部分を追加: (3) */
- z-index: 5;
- position: sticky;
- top: 120px;
-}
-
-.reservation {
- width: 5rem;
- text-align: center;
- /* 以下の部分を追加: (2) */
- position: absolute;
- top: 20px;
- right: 20px;
-}
-
-.needed {
- background-color: lightpink;
-}
-
-.not-needed {
- background-color: lightgreen;
-}
diff --git a/docs/6-exercise/4-css/_samples/block-inline1/index.html b/docs/6-exercise/4-css/_samples/block-inline1/index.html
deleted file mode 100644
index e983b86ff..000000000
--- a/docs/6-exercise/4-css/_samples/block-inline1/index.html
+++ /dev/null
@@ -1,12 +0,0 @@
-
-
-
-
- Title
-
-
-
- block
- inline
-
-
diff --git a/docs/6-exercise/4-css/_samples/block-inline1/style.css b/docs/6-exercise/4-css/_samples/block-inline1/style.css
deleted file mode 100644
index fa6c9ba64..000000000
--- a/docs/6-exercise/4-css/_samples/block-inline1/style.css
+++ /dev/null
@@ -1,17 +0,0 @@
-.block {
- background-color: lightcoral;
- width: 100px;
- height: 50px;
- margin: 10px;
- padding: 30px;
- font-size: 30px;
-}
-
-.inline {
- background-color: lightblue;
- width: 100px;
- height: 50px;
- margin: 10px;
- padding: 30px;
- font-size: 30px;
-}
diff --git a/docs/6-exercise/4-css/_samples/block-inline2/index.html b/docs/6-exercise/4-css/_samples/block-inline2/index.html
deleted file mode 100644
index e3cdeee6e..000000000
--- a/docs/6-exercise/4-css/_samples/block-inline2/index.html
+++ /dev/null
@@ -1,15 +0,0 @@
-
-
-
-
- Title
-
-
-
-
-
-
diff --git a/docs/6-exercise/4-css/_samples/block-inline2/style.css b/docs/6-exercise/4-css/_samples/block-inline2/style.css
deleted file mode 100644
index e17243b83..000000000
--- a/docs/6-exercise/4-css/_samples/block-inline2/style.css
+++ /dev/null
@@ -1,12 +0,0 @@
-.box1 {
- background-color: lightcoral;
- width: 100px;
- height: 100px;
- margin: 10px;
- padding: 30px;
- font-size: 30px;
-}
-
-.box2 {
- background-color: lightblue;
-}
diff --git a/docs/6-exercise/4-css/_samples/flexbox-grid/index.html b/docs/6-exercise/4-css/_samples/flexbox-grid/index.html
deleted file mode 100644
index 9f4ca5cb5..000000000
--- a/docs/6-exercise/4-css/_samples/flexbox-grid/index.html
+++ /dev/null
@@ -1,51 +0,0 @@
-
-
-
-
- Our site
-
-
-
-
- 最近の記事
-
-
-
diff --git a/docs/6-exercise/4-css/_samples/flexbox-grid/style.css b/docs/6-exercise/4-css/_samples/flexbox-grid/style.css
deleted file mode 100644
index f3fe9f735..000000000
--- a/docs/6-exercise/4-css/_samples/flexbox-grid/style.css
+++ /dev/null
@@ -1,82 +0,0 @@
-header {
- height: 70px;
- display: flex;
- border-bottom: solid;
- padding-right: 10px;
- padding-left: 10px;
- margin-top: 0;
- align-items: center;
-}
-
-.logo {
- font-size: 40px;
-}
-
-.logo span {
- color: springgreen;
-}
-
-ul.nav {
- display: flex;
- align-items: center;
- list-style: none;
- margin-left: auto;
- height: 100%;
-}
-
-.nav li {
- height: 100%;
- width: 100px;
- border-right: solid;
-}
-
-li.nav-about {
- border-left: solid;
-}
-
-header a {
- color: black;
- text-decoration: none;
- display: block;
- text-align: center;
-}
-
-.link {
- height: 45px;
- padding-top: 25px;
- transition: 0.25s;
-}
-
-.link:hover {
- background-color: palegreen;
-}
-
-h1 {
- margin-top: 100px;
- text-align: center;
-}
-
-.board {
- display: grid;
- grid-template-columns: 400px 400px;
- grid-template-rows: 300px 300px;
- justify-content: center;
- gap: 40px 50px;
-}
-
-article {
- overflow: hidden;
- background-color: black;
-}
-
-article a {
- text-decoration: none;
-}
-
-article div.title {
- height: 100%;
- display: block;
- text-align: center;
- color: white;
- letter-spacing: 2px;
-}
diff --git a/docs/6-exercise/4-css/_samples/responsive-design/index.html b/docs/6-exercise/4-css/_samples/responsive-design/index.html
deleted file mode 100644
index 3f300c9c9..000000000
--- a/docs/6-exercise/4-css/_samples/responsive-design/index.html
+++ /dev/null
@@ -1,13 +0,0 @@
-
-
-
-
- 課題
-
-
-
-
- 横
- 縦
-
-
diff --git a/docs/6-exercise/4-css/_samples/responsive-design/style.css b/docs/6-exercise/4-css/_samples/responsive-design/style.css
deleted file mode 100644
index 3b8402998..000000000
--- a/docs/6-exercise/4-css/_samples/responsive-design/style.css
+++ /dev/null
@@ -1,17 +0,0 @@
-@media (orientation: landscape) {
- #landscape {
- color: red;
- text-decoration-line: underline;
- text-decoration-color: red;
- text-decoration-style: solid;
- }
-}
-
-@media (orientation: portrait) {
- #portrait {
- color: red;
- text-decoration-line: underline;
- text-decoration-color: red;
- text-decoration-style: solid;
- }
-}
diff --git a/docs/6-exercise/4-css/article.jpg b/docs/6-exercise/4-css/article.jpg
deleted file mode 100644
index f466e4a24..000000000
Binary files a/docs/6-exercise/4-css/article.jpg and /dev/null differ
diff --git a/docs/6-exercise/4-css/divElement.png b/docs/6-exercise/4-css/divElement.png
deleted file mode 100644
index b9a22168e..000000000
Binary files a/docs/6-exercise/4-css/divElement.png and /dev/null differ
diff --git a/docs/6-exercise/4-css/header-scroll.mp4 b/docs/6-exercise/4-css/header-scroll.mp4
deleted file mode 100644
index 348136a41..000000000
Binary files a/docs/6-exercise/4-css/header-scroll.mp4 and /dev/null differ
diff --git a/docs/6-exercise/4-css/index.mdx b/docs/6-exercise/4-css/index.mdx
deleted file mode 100644
index 0945bc9ef..000000000
--- a/docs/6-exercise/4-css/index.mdx
+++ /dev/null
@@ -1,587 +0,0 @@
----
-title: CSS によるスタイリング
-sidebar_position: 4
----
-
-import Answer from "@site/src/components/Answer";
-import ViewSource from "@site/src/components/ViewSource";
-import transitionVideo from "./transition.mp4";
-import headerScrollVideo from "./header-scroll.mp4";
-import placeScrollVideo from "./place-scroll.mp4";
-import Details from "@theme/Details";
-
-この章では教材の「[CSS](/docs/trial-session/css)」「[CSS による配置](/docs/browser-apps/css-arrangement)」の内容を扱っています。
-
----
-
-## 1. ブロックレベル要素とインライン要素
-
-### 問題 1
-
-以下の点について、ブロックレベル要素とインライン要素の挙動の違いを確認してみましょう。見た目だけでなく、開発者ツールを用いて値がどうなっているか調べてみましょう。
-
-- `width`, `height` の設定が反映されるかどうか。
-- `margin` の設定が反映されるかどうか。
-- `padding` を設定するとどのように表示されるか。
-- `font-size` を設定し、`width`, `height` を設定しないとき、要素の大きさはどうなるか。
-
-#### 解説
-
-
-
-以下に示したコードの CSS プロパティの値を変えてみて、挙動を調べてみましょう。
-
-- ブロックレベル要素は `width`, `height` の値を設定できますが、インライン要素はできません。
-- ブロックレベル要素は `margin` を上下左右に設定できますが、インライン要素は左右しか設定できません。
-- ブロックレベル要素に上下の `padding` を設定すると、余白が他の要素に被らないように縦の位置が調整されます。一方、インライン要素に上下の `padding` を設定した場合、要素の縦の位置が調整されず他の要素に被って表示されます。
-- ブロックレベル要素の `height` やインライン要素の `width`, `height` の初期値は、中身の要素の大きさによって決まるので、`font-size` を変更することで大きさが変化します。また、開発者ツールで値を調べてみると、インライン要素の大きさは文字の大きさと同じになるのに対し、ブロックレベル要素の `height` は `font-size` の 1.5 倍になることがわかります。
-
-```html title="index.html"
-
-
-
-
- Title
-
-
-
- block
- inline
-
-
-```
-
-```css title="style.css"
-.block {
- background-color: lightcoral;
- width: 100px;
- height: 50px;
- margin: 10px;
- padding: 30px;
- font-size: 30px;
-}
-
-.inline {
- background-color: lightblue;
- width: 100px;
- height: 50px;
- margin: 10px;
- padding: 30px;
- font-size: 30px;
-}
-```
-
-
-
-
-
-### 問題 2
-
-以下のように、`div` 要素の中に `div` 要素を配置するとどのように表示されるでしょうか。`span` 要素の中に `span` 要素を配置した場合はどうでしょうか。また、上に挙げた CSS プロパティを外側の要素にのみ設定するとどうなるか調べてみましょう。
-
-```html title="index.html"
-
-
-
-```
-
-#### 解説
-
-
-
-- 画像のように、`div` 要素の場合は縦方向に、`span` 要素の場合は横方向に挟まるように表示されます。
-
- 
- 
-
-- CSS プロパティの一部は、親要素のものが継承されます。例えば `font-size` は、外側の要素に設定した値が自動的に内側の要素にも反映されます(もちろん、手動で別の値を設定することも可能です)。一方、`margin` や `padding` などは反映されません。以下のような CSS ファイルを作成して、挙動を調べてみましょう。
-
- ```css title="style.css"
- .box1 {
- background-color: lightcoral;
- width: 100px;
- height: 100px;
- margin: 10px;
- padding: 30px;
- font-size: 30px;
- }
-
- .box2 {
- background-color: lightblue;
- }
- ```
-
-
-
-
-
----
-
-## 2. フレックスボックスとグリッド
-
-次のようなウェブサイトを作成してみましょう。
-
-
-
-- メニューバーを flexbox で再現してみましょう。
-- 記事の部分は grid で適度な間隔を開けて配置してみましょう。
-
-以下発展課題です。
-
-- 記事・ロゴ・ナビゲーションボタン(ABOUT など)はクリックできるようにしてください。ただし `button` タグは使わないでください。記事は写真も文字も黒い枠もすべてクリックできるようにしてください。
-- ナビゲーションボタンにカーソルを合わせると以下のように色が徐々に(0.1 s で)変わるようにしてください。
-
-
-
-- 記事の画像は以下からダウンロードしてください。
- [download](article.jpg)
-
-### 解答例
-
-
-
-```html title="index.html"
-
-最近の記事
-
-```
-
-```css title="style.css"
-header {
- height: 70px;
- display: flex;
- border-bottom: solid;
- padding-right: 10px;
- padding-left: 10px;
- margin-top: 0;
- align-items: center;
-}
-
-.logo {
- font-size: 40px;
-}
-
-.logo span {
- color: springgreen;
-}
-
-ul.nav {
- display: flex;
- align-items: center;
- list-style: none;
- margin-left: auto;
- height: 100%;
-}
-
-.nav li {
- height: 100%;
- width: 100px;
- border-right: solid;
-}
-
-li.nav-about {
- border-left: solid;
-}
-
-header a {
- color: black;
- text-decoration: none;
- display: block;
- text-align: center;
-}
-
-.link {
- height: 45px;
- padding-top: 25px;
- transition: 0.25s;
-}
-
-.link:hover {
- background-color: palegreen;
-}
-
-h1 {
- margin-top: 100px;
- text-align: center;
-}
-
-.board {
- display: grid;
- grid-template-columns: 400px 400px;
- grid-template-rows: 300px 300px;
- justify-content: center;
- gap: 40px 50px;
-}
-
-article {
- overflow: hidden;
- background-color: black;
-}
-
-article a {
- text-decoration: none;
-}
-
-article div.title {
- height: 100%;
- display: block;
- text-align: center;
- color: white;
- letter-spacing: 2px;
-}
-```
-
-
-
-
-
----
-
-## 3. `position`
-
-この問題では、以下の HTML ファイルと CSS ファイルをコピーして使用してください。
-
-HTML}>
-
-```html
-
-
-
-
-
- スタイルシート大学 文化祭
-
-
-
-
-
-
以下では、場所ごとに開催企画を紹介します。
-
中央通り屋台
-
-
牛串
-
牛串を販売しています。おいしいよ。
-
予約不要
-
-
-
牛串
-
牛串を販売しています。おいしいよ。
-
予約不要
-
-
-
牛串
-
牛串を販売しています。おいしいよ。
-
予約不要
-
-
-
屋外ステージ
-
-
軽音サークル ライブ
-
軽音サークルがライブを披露します。
-
予約不要
-
-
-
軽音サークル ライブ
-
軽音サークルがライブを披露します。
-
予約不要
-
-
-
軽音サークル ライブ
-
軽音サークルがライブを披露します。
-
予約不要
-
-
-
屋内ステージ
-
-
ジャズダンス
-
ジャズダンスを披露します。
-
予約必要
-
-
-
ジャズダンス
-
ジャズダンスを披露します。
-
予約必要
-
-
-
ジャズダンス
-
ジャズダンスを披露します。
-
予約必要
-
-
-
教室棟
-
-
映画サークル上映会
-
部員が制作した映画を上映しています。
-
予約必要
-
-
-
映画サークル上映会
-
部員が制作した映画を上映しています。
-
予約必要
-
-
-
映画サークル上映会
-
部員が制作した映画を上映しています。
-
予約必要
-
-
-
講堂
-
-
合唱サークル 演奏会
-
合唱サークルが演奏会を行います。
-
予約必要
-
-
-
合唱サークル 演奏会
-
合唱サークルが演奏会を行います。
-
予約必要
-
-
-
合唱サークル 演奏会
-
合唱サークルが演奏会を行います。
-
予約必要
-
-
-
-
-```
-
-
-
-CSS}>
-
-```css
-body {
- margin: 0;
- font-weight: normal;
-}
-
-h1,
-h2,
-h3 {
- font-weight: normal;
-}
-
-#header {
- text-align: center;
-
- width: 100%;
- height: 160px;
- background-color: lightblue;
- padding: 20px;
- z-index: 10;
-}
-
-#wrapper {
- max-width: 600px;
- margin: auto;
- padding: 20px;
-}
-
-.card {
- border: 1px solid #aaa;
- padding: 20px;
-}
-
-.district {
- background-color: #ddd;
- margin: 0;
-}
-
-.reservation {
- width: 5rem;
- text-align: center;
-}
-
-.needed {
- background-color: lightpink;
-}
-
-.not-needed {
- background-color: lightgreen;
-}
-```
-
-
-
-### 問題 1
-
-「スタイルシート大学 文化祭」と書かれた灰色の部分(ヘッダー)が、スクロールしても同じ位置にとどまるようにしてみましょう。
-
-
-
-#### ヒント
-
-- `#header` を固定すると、`#wrapper` の上部が `#header` の裏側に隠れてしまうでしょうか。これは `#header` を固定したことによって、`#header` が画面手前に向かって浮いたようになり、空いたスペースに `#wrapper` が入り込んだためです。
-
- - `#wrapper` の上部に適切なサイズの余白を設けることで対処しましょう。
-
-#### 解答例
-
-
-
-以下を追加しましょう。
-
-```css
-#header {
- position: fixed;
- top: 0;
-}
-```
-
-ヘッダーの下の部分が隠れてしまうのを防ぐために、以下を記述します。
-
-```css
-#wrapper {
- margin-top: 200px;
-}
-```
-
-
-
-
-### 問題 2
-
-「予約不要」「予約必要」といった表示が、各企画のカードの右上に表示されるようにしましょう。
-
-
-
-#### 解答例
-
-
-
-以下を追加しましょう。
-
-```css
-.reservation {
- position: absolute;
- top: 20px;
- right: 20px;
-}
-```
-
-```css
-.card {
- position: relative;
-}
-```
-
-
-
-
-### 問題 3
-
-(発展) 「中央通り屋台」「屋外ステージ」などの場所の名前が、その場所の企画が画面上にある間は上部にとどまるようにしてみましょう。
-
-
-
-#### 解答例
-
-
-
-以下を追加しましょう。
-
-```css
-.district {
- background-color: #ddd;
- margin: 0;
- /* 以下の部分を追加: (3) */
- position: sticky;
- top: 200px;
- z-index: 5;
-}
-```
-
-
-
-
-
----
-
-## 4. レスポンシブデザイン
-
-スマホは縦向き、横向きの両方で使います。両方の画面を一つの CSS でデザインする練習をしましょう。
-
-以下要件です。画面上に「縦」「横」の 2 文字を表示した上で、
-
-- 画面が縦長の時は、「縦」を赤くし、赤い下線を引く
-- 画面が横長の時は、「横」を赤くし、赤い下線を引く
-
-### 解答例
-
-
-
-デバイスが縦長か横長か判別するのに使うメディア特性は `orientation` です。
-
-```html title="index.html"
-横
-縦
-```
-
-```css title="style.css"
-@media (orientation: landscape) {
- #landscape {
- color: red;
- text-decoration-line: underline;
- text-decoration-color: red;
- text-decoration-style: solid;
- }
-}
-
-@media (orientation: portrait) {
- #portrait {
- color: red;
- text-decoration-line: underline;
- text-decoration-color: red;
- text-decoration-style: solid;
- }
-}
-```
-
-
-
-
diff --git a/docs/6-exercise/4-css/place-scroll.mp4 b/docs/6-exercise/4-css/place-scroll.mp4
deleted file mode 100644
index 428f5f751..000000000
Binary files a/docs/6-exercise/4-css/place-scroll.mp4 and /dev/null differ
diff --git a/docs/6-exercise/4-css/reserve-label.png b/docs/6-exercise/4-css/reserve-label.png
deleted file mode 100644
index bf3ebe673..000000000
Binary files a/docs/6-exercise/4-css/reserve-label.png and /dev/null differ
diff --git a/docs/6-exercise/4-css/spanElement.png b/docs/6-exercise/4-css/spanElement.png
deleted file mode 100644
index 874a51dd3..000000000
Binary files a/docs/6-exercise/4-css/spanElement.png and /dev/null differ
diff --git a/docs/6-exercise/4-css/transition.mp4 b/docs/6-exercise/4-css/transition.mp4
deleted file mode 100644
index 2c24dc792..000000000
Binary files a/docs/6-exercise/4-css/transition.mp4 and /dev/null differ
diff --git a/docs/6-exercise/4-css/utcodeWeb.png b/docs/6-exercise/4-css/utcodeWeb.png
deleted file mode 100644
index a41063082..000000000
Binary files a/docs/6-exercise/4-css/utcodeWeb.png and /dev/null differ
diff --git a/docs/6-exercise/5-browser-apps/_samples/flashcard/index.html b/docs/6-exercise/5-browser-apps/_samples/flashcard/index.html
deleted file mode 100644
index 735ad03ea..000000000
--- a/docs/6-exercise/5-browser-apps/_samples/flashcard/index.html
+++ /dev/null
@@ -1,17 +0,0 @@
-
-
-
-
- 英単語帳
-
-
-
-
-
-
-
-
-
diff --git a/docs/6-exercise/5-browser-apps/_samples/flashcard/script.js b/docs/6-exercise/5-browser-apps/_samples/flashcard/script.js
deleted file mode 100644
index 3751f4092..000000000
--- a/docs/6-exercise/5-browser-apps/_samples/flashcard/script.js
+++ /dev/null
@@ -1,21 +0,0 @@
-const questions = ["apple", "black", "cloud"];
-const answers = ["りんご", "黒", "雲"];
-
-const questionDisplay = document.getElementById("question");
-
-const answer = document.getElementById("answer");
-let index = 0;
-
-questionDisplay.textContent = questions[0];
-
-document.getElementById("answer-button").onclick = () => {
- answer.textContent = answers[index];
-};
-document.getElementById("next-button").onclick = () => {
- index += 1;
- if (index === questions.length) {
- index = 0;
- }
- questionDisplay.textContent = questions[index];
- answer.textContent = "";
-};
diff --git a/docs/6-exercise/5-browser-apps/_samples/flashcard/style.css b/docs/6-exercise/5-browser-apps/_samples/flashcard/style.css
deleted file mode 100644
index 53a4b7aec..000000000
--- a/docs/6-exercise/5-browser-apps/_samples/flashcard/style.css
+++ /dev/null
@@ -1,16 +0,0 @@
-.card {
- height: 200px;
- width: 500px;
- border: 1px solid black;
- text-align: center;
-}
-
-#question {
- font-size: 75px;
- margin: 5px;
-}
-
-#answer {
- font-size: 35px;
- color: grey;
-}
diff --git a/docs/6-exercise/5-browser-apps/_samples/timer/alarm.mp3 b/docs/6-exercise/5-browser-apps/_samples/timer/alarm.mp3
deleted file mode 100644
index 2d4153106..000000000
Binary files a/docs/6-exercise/5-browser-apps/_samples/timer/alarm.mp3 and /dev/null differ
diff --git a/docs/6-exercise/5-browser-apps/_samples/timer/index.html b/docs/6-exercise/5-browser-apps/_samples/timer/index.html
deleted file mode 100644
index 0eb031b36..000000000
--- a/docs/6-exercise/5-browser-apps/_samples/timer/index.html
+++ /dev/null
@@ -1,51 +0,0 @@
-
-
-
-
- Document
-
-
-
- タイマー
-
-
-
- 時間
-
- 分
-
- 秒
-
-
-
-
-
-
-
-
-
-
diff --git a/docs/6-exercise/5-browser-apps/_samples/timer/script.js b/docs/6-exercise/5-browser-apps/_samples/timer/script.js
deleted file mode 100644
index e9499a855..000000000
--- a/docs/6-exercise/5-browser-apps/_samples/timer/script.js
+++ /dev/null
@@ -1,159 +0,0 @@
-// DOMの取得
-const timerDisplay = document.getElementById("time");
-const hourInput = document.getElementById("hour-input");
-const minuteInput = document.getElementById("minute-input");
-const secondInput = document.getElementById("second-input");
-const startButton = document.getElementById("start-button");
-const stopButton = document.getElementById("stop-button");
-const setButton = document.getElementById("set-button");
-const errorConsole = document.getElementById("error-console");
-
-let existingAudio = null;
-
-// タイマー本体
-class Timer {
- timeLeft = 0;
-
- tickerId;
-
- // スタートしたときに実行される関数
- onStart;
-
- // ストップしたときに実行される関数
- onStop;
-
- // タイムアップしたときに実行される関数
- onTimeUp;
-
- constructor(onStart, onStop, onTimeUp) {
- this.onStart = onStart;
- this.onStop = onStop;
- this.onTimeUp = onTimeUp;
- }
-
- // カウントダウンをスタートするメソッド
- startCountDown() {
- this.onStart();
- // カウントダウン処理
- this.tickerId = setInterval(() => {
- this.timeLeft -= 100;
- if (this.timeLeft === 0) {
- clearInterval(this.tickerId);
- this.onTimeUp();
- }
- }, 100);
- }
-
- // カウントダウンをストップするメソッド
- stopCountDown() {
- if (!this.onStop) {
- throw new Error();
- }
- this.onStop();
- clearInterval(this.tickerId);
- }
-
- // 残り時間をセットするメソッド
- setTimeLeft(period) {
- this.stopCountDown();
- this.timeLeft = period;
- }
-}
-
-const timer = new Timer(
- () => {
- startButton.disabled = true;
- stopButton.disabled = false;
- },
- () => {
- startButton.disabled = false;
- stopButton.disabled = true;
- destroyAudioIfExists();
- },
- () => {
- startButton.disabled = true;
- stopButton.disabled = false;
- createAudioIfNone();
- },
-);
-
-// 音が出ていなければ音を出す
-function createAudioIfNone() {
- if (!existingAudio) {
- existingAudio = new Audio();
- existingAudio.src = "alarm.mp3";
- existingAudio.addEventListener("canplaythrough", () => {
- existingAudio.play();
- });
- }
-}
-
-// 音が出ていれば途中で消す
-function destroyAudioIfExists() {
- if (existingAudio) {
- existingAudio.pause();
- existingAudio.removeAttribute("src"); // empty source
- existingAudio.load();
- existingAudio = null;
- }
-}
-
-// スタートボタンを押すと、残り時間がある時はカウントダウンし、ないときはエラーが出る
-startButton.onclick = () => {
- if (timer.timeLeft > 0) {
- timer.startCountDown();
- } else if (timer.timeLeft === 0) {
- errorConsole.textContent = "時間をセットしてください";
- } else throw new Error();
-};
-
-// ストップボタンを押すと、カウントダウンがストップする
-stopButton.onclick = () => {
- timer.stopCountDown();
-};
-
-// はじめはストップボタンは押せないようにする
-stopButton.disabled = true;
-
-// セットボタンを押すと残り時間がセットされる
-setButton.onclick = () => {
- errorConsole.textContent = "";
- timer.setTimeLeft(
- Number(hourInput.value) * 1000 * 60 * 60 +
- Number(minuteInput.value) * 1000 * 60 +
- Number(secondInput.value) * 1000,
- );
-};
-
-// タイマーの描画を開始
-setInterval(() => {
- let timeLeftCopy = timer.timeLeft + 999;
- // 時間を取得
- const hour = Math.floor(timeLeftCopy / (1000 * 60 * 60));
- timeLeftCopy -= hour * (1000 * 60 * 60);
-
- // 分を取得
- const minute = Math.floor(timeLeftCopy / (1000 * 60));
- timeLeftCopy -= minute * (1000 * 60);
-
- // 秒を取得
- const second = Math.floor(timeLeftCopy / 1000);
- timeLeftCopy -= second * 1000;
-
- // 表示用に時刻表示を整える
- let hourString = hour.toString();
- let minuteString = minute.toString();
- let secondString = second.toString();
- if (hourString.length === 1) {
- hourString = `0${hourString}`;
- }
- if (minuteString.length === 1) {
- minuteString = `0${minuteString}`;
- }
- if (secondString.length === 1) {
- secondString = `0${secondString}`;
- }
-
- // 時間を表示
- timerDisplay.textContent = `${hourString}:${minuteString}:${secondString}`;
-}, 10);
diff --git a/docs/6-exercise/5-browser-apps/_samples/timer/style.css b/docs/6-exercise/5-browser-apps/_samples/timer/style.css
deleted file mode 100644
index 22f7d66d7..000000000
--- a/docs/6-exercise/5-browser-apps/_samples/timer/style.css
+++ /dev/null
@@ -1,30 +0,0 @@
-#time {
- text-align: center;
- font-size: 15vw;
-}
-
-input {
- width: 20vw;
- padding: 10px;
- box-sizing: border-box;
-}
-
-.input-container {
- text-align: center;
-}
-
-button {
- width: 30vw;
- padding: 10px;
- box-sizing: border-box;
-}
-
-.button-container {
- margin-top: 2px;
- text-align: center;
-}
-#error-console {
- color: red;
- text-align: center;
- font-size: xx-large;
-}
diff --git a/docs/6-exercise/5-browser-apps/alarm.mp3 b/docs/6-exercise/5-browser-apps/alarm.mp3
deleted file mode 100644
index 2d4153106..000000000
Binary files a/docs/6-exercise/5-browser-apps/alarm.mp3 and /dev/null differ
diff --git a/docs/6-exercise/5-browser-apps/flashcard.mp4 b/docs/6-exercise/5-browser-apps/flashcard.mp4
deleted file mode 100644
index 69b9f63d6..000000000
Binary files a/docs/6-exercise/5-browser-apps/flashcard.mp4 and /dev/null differ
diff --git a/docs/6-exercise/5-browser-apps/google-search.png b/docs/6-exercise/5-browser-apps/google-search.png
deleted file mode 100644
index a8f1d53bb..000000000
Binary files a/docs/6-exercise/5-browser-apps/google-search.png and /dev/null differ
diff --git a/docs/6-exercise/5-browser-apps/index.mdx b/docs/6-exercise/5-browser-apps/index.mdx
deleted file mode 100644
index bb606d091..000000000
--- a/docs/6-exercise/5-browser-apps/index.mdx
+++ /dev/null
@@ -1,130 +0,0 @@
----
-title: フロントエンドアプリの開発
-sidebar_position: 5
----
-
-import ViewSource from "@site/src/components/ViewSource";
-import Answer from "@site/src/components/Answer";
-import timerVideo from "./timer.mp4";
-import flashcardVideo from "./flashcard.mp4";
-
-この章は教材の「[ブラウザで動作するアプリを構築しよう](/docs/browser-apps/)」までの項目の総合問題です。
-
----
-
-## 1. 英単語帳アプリ
-
-単語帳アプリを作ってみましょう。
-
-### ルール
-
-- 画面に問題が表示される
-
-- 「答えを見る」ボタンを押すと、答えが表示される
-
-- 「次の問題へ」ボタンを押すと、次の問題が表示される(最後の問題の次は最初の問題に戻る)
-
-
-
-### ヒント
-
-- まずは HTML で、問題や答えを表示するための `div` 要素と「答えを見る」「次の問題へ」ボタンを作成しましょう。
-
-- 次に、問題と答えの組をいくつか作りましょう。問題と答えを格納する配列をそれぞれ作成します。
-
-- 配列ができたら、ボタンの操作に応じて問題や答えが表示されるようにプログラムを作成しましょう。
-
- - 問題を順番に表示させるには、「現在表示されている問題のインデックス」を変数で管理し、「次の問題へ」ボタンを押すとインデックスが 1 増えるようにすると良いでしょう。ただし、最後の問題の次は最初の問題に戻ることに注意しましょう。
-
- - 「答えを見る」ボタンを押した時に答えが表示されるようにしましょう。「次の問題へ」ボタンを押した時には答えを非表示にする必要があることにも注意しましょう。
-
-- ここまでで基本的な動作は完成です。最後に、CSS を用いて画面を整えてみましょう。
-
-- 余裕のある人は、さらに機能を追加してみましょう。例えば、問題が表示される順番をランダムにしたり、選択肢を用意してクイズ形式にしたりすることが考えられます。
-
-### 解答例
-
-
-
-```html title="index.html"
-
-
-
-```
-
-```js title="script.js"
-const questions = ["apple", "black", "cloud"];
-const answers = ["りんご", "黒", "雲"];
-
-const questionDisplay = document.getElementById("question");
-
-const answer = document.getElementById("answer");
-let index = 0;
-
-questionDisplay.textContent = questions[0];
-
-document.getElementById("answer-button").onclick = () => {
- answer.textContent = answers[index];
-};
-document.getElementById("next-button").onclick = () => {
- index += 1;
- if (index === questions.length) {
- index = 0;
- }
- questionDisplay.textContent = questions[index];
- answer.textContent = "";
-};
-```
-
-
-
-
-
----
-
-## 2. タイマーアプリ
-
-以下のような音が鳴るタイマーを作ってみましょう。
-
-**音声が出ますのでご注意ください**
-
-
-
-- セットボタンで時間がセットされます。
-- スタートボタンで開始、ストップボタンで一時停止できます。
-- タイマーが動いている間はスタートボタンは押せません。逆に停止しているときはストップボタンは押せません。
-- 時間になると音が出ます。~~関西弁~~音源は[ここ](alarm.mp3)からダウンロードしてください。
-- ストップボタンかセットボタンを押すと音が止まります。
-- セットされている時間が0秒のままスタートボタンを押すとエラーが表示されます。
-- 残り時間表示は時間・分・秒に分けて表示されます。
-- 時間の入力欄には数字しか入力できません。
-- ボタンで時間を調整することもでき、直接タイプ入力することもできます。
-- 画面の大きさを変えるとそれに応じてタイマーのサイズも変わります。(つまり物の位置関係やスタイルは崩れません)
-
-### ヒント
-
-#### ヒント1
-
-何やらよくわからないことがたくさん出てきました。まず多くの人が注目するのは「**音**」だと思います。音の鳴らし方なんか知らないよって?大丈夫。プログラミングでわからないことは調べれば良いのです。皆気になっていることは調べれば案外すぐに出てくるものです。試しに `JavaScript 音` なんて調べてはいかがでしょうか?
-
-他にも特徴的な動きが何個かある思いますが、特徴的なものは調べると結構すぐ見つかります。積極的に調べていきましょう。
-
-
-グーグル先生さすがっす!!
-
-#### ヒント2
-
-混乱する原因の一つは、機能が多いために今どの部分を作っているのか不明瞭になりやすいということです。
-
-しかし、純粋なタイマーの機能だけに焦点を絞って考えた場合、考えることはそう多くありません。極端に言えば、**残り時間** という情報と、その残り時間を減らしていく関数さえあれば、一応タイマーにはなります。このように、まずは本質的な機能や状態に目を向けることが肝要です。
-
-### 解答例
-
-
-
-
-
-
diff --git a/docs/6-exercise/5-browser-apps/timer.mp4 b/docs/6-exercise/5-browser-apps/timer.mp4
deleted file mode 100644
index 6487a0453..000000000
Binary files a/docs/6-exercise/5-browser-apps/timer.mp4 and /dev/null differ
diff --git a/docs/6-exercise/6-express-and-ejs/_samples/express-ejs/faculties.js b/docs/6-exercise/6-express-and-ejs/_samples/express-ejs/faculties.js
deleted file mode 100644
index b0be4de7b..000000000
--- a/docs/6-exercise/6-express-and-ejs/_samples/express-ejs/faculties.js
+++ /dev/null
@@ -1,87 +0,0 @@
-exports.faculties = [
- "law",
- "medicine",
- "engineering",
- "letters",
- "science",
- "agriculture",
- "economics",
- "artsAndSciences",
- "education",
- "pharmaceuticalSciences",
-];
-
-exports.facultyData = {
- law: {
- name: "法学部",
- departments: [
- "第一類(法学総合コース)",
- "第二類(法律プロフェッション・コース)",
- "第三類(政治コース)",
- ],
- },
- medicine: {
- name: "医学部",
- departments: ["医学科", "健康総合科学科"],
- },
- engineering: {
- name: "工学部",
- departments: [
- "社会基盤学科",
- "建築学科",
- "都市工学科",
- "機械工学科",
- "機械情報工学科",
- "航空宇宙工学科",
- "精密工学科",
- "電子情報工学科",
- "電気電子工学科",
- "物理工学科",
- "計数工学科",
- "マテリアル工学科",
- "応用化学科",
- "化学システム工学科",
- "化学生命工学科",
- "システム創成学科",
- ],
- },
- letters: {
- name: "文学部",
- departments: ["人文学科"],
- },
- science: {
- name: "理学部",
- departments: [
- "数学科",
- "情報科学科",
- "物理学科",
- "天文学科",
- "地球惑星物理学科",
- "地球惑星環境学科",
- "化学科",
- "生物化学科",
- "生物学科",
- "生物情報科学科",
- ],
- },
- agriculture: {
- name: "農学部",
- departments: ["応用生命科学課程", "環境資源科学課程", "獣医学課程"],
- },
- economics: {
- name: "経済学部",
- departments: ["経済学科", "経営学科", "金融学科"],
- },
- artsAndSciences: {
- name: "教養学部",
- departments: ["教養学科", "学際科学科", "統合自然科学科"],
- },
- education: {
- name: "教育学部",
- departments: ["総合教育科学科"],
- },
- pharmaceuticalSciences: {
- name: "薬学部",
- departments: ["薬科学科", "薬学科"],
- },
-};
diff --git a/docs/6-exercise/6-express-and-ejs/_samples/express-ejs/main.js b/docs/6-exercise/6-express-and-ejs/_samples/express-ejs/main.js
deleted file mode 100644
index 9d8518a38..000000000
--- a/docs/6-exercise/6-express-and-ejs/_samples/express-ejs/main.js
+++ /dev/null
@@ -1,15 +0,0 @@
-const { facultyData } = require("./faculties");
-const fs = require("fs");
-const express = require("express");
-const ejs = require("ejs");
-const app = express();
-
-app.get("/", (request, response) => {
- const template = fs.readFileSync("template.ejs", "utf-8");
- const html = ejs.render(template, {
- departments: facultyData.engineering.departments,
- });
- response.send(html);
-});
-
-app.listen(3000);
diff --git a/docs/6-exercise/6-express-and-ejs/_samples/express-ejs/template.ejs b/docs/6-exercise/6-express-and-ejs/_samples/express-ejs/template.ejs
deleted file mode 100644
index e785c7990..000000000
--- a/docs/6-exercise/6-express-and-ejs/_samples/express-ejs/template.ejs
+++ /dev/null
@@ -1,14 +0,0 @@
-
-
-
-
- Title
-
-
-
- <% for (const department of departments) { %>
- - <%= department %>
- <% } %>
-
-
-
diff --git a/docs/6-exercise/6-express-and-ejs/_samples/express-no-ejs/faculties.js b/docs/6-exercise/6-express-and-ejs/_samples/express-no-ejs/faculties.js
deleted file mode 100644
index b0be4de7b..000000000
--- a/docs/6-exercise/6-express-and-ejs/_samples/express-no-ejs/faculties.js
+++ /dev/null
@@ -1,87 +0,0 @@
-exports.faculties = [
- "law",
- "medicine",
- "engineering",
- "letters",
- "science",
- "agriculture",
- "economics",
- "artsAndSciences",
- "education",
- "pharmaceuticalSciences",
-];
-
-exports.facultyData = {
- law: {
- name: "法学部",
- departments: [
- "第一類(法学総合コース)",
- "第二類(法律プロフェッション・コース)",
- "第三類(政治コース)",
- ],
- },
- medicine: {
- name: "医学部",
- departments: ["医学科", "健康総合科学科"],
- },
- engineering: {
- name: "工学部",
- departments: [
- "社会基盤学科",
- "建築学科",
- "都市工学科",
- "機械工学科",
- "機械情報工学科",
- "航空宇宙工学科",
- "精密工学科",
- "電子情報工学科",
- "電気電子工学科",
- "物理工学科",
- "計数工学科",
- "マテリアル工学科",
- "応用化学科",
- "化学システム工学科",
- "化学生命工学科",
- "システム創成学科",
- ],
- },
- letters: {
- name: "文学部",
- departments: ["人文学科"],
- },
- science: {
- name: "理学部",
- departments: [
- "数学科",
- "情報科学科",
- "物理学科",
- "天文学科",
- "地球惑星物理学科",
- "地球惑星環境学科",
- "化学科",
- "生物化学科",
- "生物学科",
- "生物情報科学科",
- ],
- },
- agriculture: {
- name: "農学部",
- departments: ["応用生命科学課程", "環境資源科学課程", "獣医学課程"],
- },
- economics: {
- name: "経済学部",
- departments: ["経済学科", "経営学科", "金融学科"],
- },
- artsAndSciences: {
- name: "教養学部",
- departments: ["教養学科", "学際科学科", "統合自然科学科"],
- },
- education: {
- name: "教育学部",
- departments: ["総合教育科学科"],
- },
- pharmaceuticalSciences: {
- name: "薬学部",
- departments: ["薬科学科", "薬学科"],
- },
-};
diff --git a/docs/6-exercise/6-express-and-ejs/_samples/express-no-ejs/main.js b/docs/6-exercise/6-express-and-ejs/_samples/express-no-ejs/main.js
deleted file mode 100644
index 8e8d1d37b..000000000
--- a/docs/6-exercise/6-express-and-ejs/_samples/express-no-ejs/main.js
+++ /dev/null
@@ -1,12 +0,0 @@
-const { facultyData } = require("./faculties");
-const express = require("express");
-const app = express();
-
-const departments = facultyData.engineering.departments;
-app.get("/", (request, response) => {
- response.send(
- departments.map((department) => `${department}`).join(""),
- );
-});
-
-app.listen(3000);
diff --git a/docs/6-exercise/6-express-and-ejs/_samples/faculty-list-express/departmentList.ejs b/docs/6-exercise/6-express-and-ejs/_samples/faculty-list-express/departmentList.ejs
deleted file mode 100644
index 798faf5a9..000000000
--- a/docs/6-exercise/6-express-and-ejs/_samples/faculty-list-express/departmentList.ejs
+++ /dev/null
@@ -1,15 +0,0 @@
-
-
-
-
- <%= facultyData[faculty].name %>の学科一覧
-
-
- <%= facultyData[faculty].name %>の学科一覧
-
- <% for (const department of facultyData[faculty].departments) { %>
- - <%= department %>
- <% } %>
-
-
-
diff --git a/docs/6-exercise/6-express-and-ejs/_samples/faculty-list-express/faculties.js b/docs/6-exercise/6-express-and-ejs/_samples/faculty-list-express/faculties.js
deleted file mode 100644
index b0be4de7b..000000000
--- a/docs/6-exercise/6-express-and-ejs/_samples/faculty-list-express/faculties.js
+++ /dev/null
@@ -1,87 +0,0 @@
-exports.faculties = [
- "law",
- "medicine",
- "engineering",
- "letters",
- "science",
- "agriculture",
- "economics",
- "artsAndSciences",
- "education",
- "pharmaceuticalSciences",
-];
-
-exports.facultyData = {
- law: {
- name: "法学部",
- departments: [
- "第一類(法学総合コース)",
- "第二類(法律プロフェッション・コース)",
- "第三類(政治コース)",
- ],
- },
- medicine: {
- name: "医学部",
- departments: ["医学科", "健康総合科学科"],
- },
- engineering: {
- name: "工学部",
- departments: [
- "社会基盤学科",
- "建築学科",
- "都市工学科",
- "機械工学科",
- "機械情報工学科",
- "航空宇宙工学科",
- "精密工学科",
- "電子情報工学科",
- "電気電子工学科",
- "物理工学科",
- "計数工学科",
- "マテリアル工学科",
- "応用化学科",
- "化学システム工学科",
- "化学生命工学科",
- "システム創成学科",
- ],
- },
- letters: {
- name: "文学部",
- departments: ["人文学科"],
- },
- science: {
- name: "理学部",
- departments: [
- "数学科",
- "情報科学科",
- "物理学科",
- "天文学科",
- "地球惑星物理学科",
- "地球惑星環境学科",
- "化学科",
- "生物化学科",
- "生物学科",
- "生物情報科学科",
- ],
- },
- agriculture: {
- name: "農学部",
- departments: ["応用生命科学課程", "環境資源科学課程", "獣医学課程"],
- },
- economics: {
- name: "経済学部",
- departments: ["経済学科", "経営学科", "金融学科"],
- },
- artsAndSciences: {
- name: "教養学部",
- departments: ["教養学科", "学際科学科", "統合自然科学科"],
- },
- education: {
- name: "教育学部",
- departments: ["総合教育科学科"],
- },
- pharmaceuticalSciences: {
- name: "薬学部",
- departments: ["薬科学科", "薬学科"],
- },
-};
diff --git a/docs/6-exercise/6-express-and-ejs/_samples/faculty-list-express/facultyList.ejs b/docs/6-exercise/6-express-and-ejs/_samples/faculty-list-express/facultyList.ejs
deleted file mode 100644
index 5aa013f7b..000000000
--- a/docs/6-exercise/6-express-and-ejs/_samples/faculty-list-express/facultyList.ejs
+++ /dev/null
@@ -1,15 +0,0 @@
-
-
-
-
- 東京大学の学部一覧
-
-
- 東京大学の学部一覧
-
-
-
diff --git a/docs/6-exercise/6-express-and-ejs/_samples/faculty-list-express/main.js b/docs/6-exercise/6-express-and-ejs/_samples/faculty-list-express/main.js
deleted file mode 100644
index 733456e7e..000000000
--- a/docs/6-exercise/6-express-and-ejs/_samples/faculty-list-express/main.js
+++ /dev/null
@@ -1,29 +0,0 @@
-const { faculties, facultyData } = require("./faculties");
-const fs = require("fs");
-const express = require("express");
-const ejs = require("ejs");
-const app = express();
-
-app.get("/", (request, response) => {
- const template = fs.readFileSync("facultyList.ejs", "utf-8");
- const html = ejs.render(template, {
- faculties,
- facultyData,
- });
- response.send(html);
-});
-
-app.get("/:faculty", (request, response) => {
- const faculty = request.params.faculty;
- if (faculties.includes(faculty)) {
- const template = fs.readFileSync("departmentList.ejs", "utf-8");
- const html = ejs.render(template, {
- facultyData,
- faculty,
- });
- response.send(html);
- }
- response.end();
-});
-
-app.listen(3000);
diff --git a/docs/6-exercise/6-express-and-ejs/_samples/faculty-list-html/departmentList.ejs b/docs/6-exercise/6-express-and-ejs/_samples/faculty-list-html/departmentList.ejs
deleted file mode 100644
index 798faf5a9..000000000
--- a/docs/6-exercise/6-express-and-ejs/_samples/faculty-list-html/departmentList.ejs
+++ /dev/null
@@ -1,15 +0,0 @@
-
-
-
-
- <%= facultyData[faculty].name %>の学科一覧
-
-
- <%= facultyData[faculty].name %>の学科一覧
-
- <% for (const department of facultyData[faculty].departments) { %>
- - <%= department %>
- <% } %>
-
-
-
diff --git a/docs/6-exercise/6-express-and-ejs/_samples/faculty-list-html/faculties.js b/docs/6-exercise/6-express-and-ejs/_samples/faculty-list-html/faculties.js
deleted file mode 100644
index b0be4de7b..000000000
--- a/docs/6-exercise/6-express-and-ejs/_samples/faculty-list-html/faculties.js
+++ /dev/null
@@ -1,87 +0,0 @@
-exports.faculties = [
- "law",
- "medicine",
- "engineering",
- "letters",
- "science",
- "agriculture",
- "economics",
- "artsAndSciences",
- "education",
- "pharmaceuticalSciences",
-];
-
-exports.facultyData = {
- law: {
- name: "法学部",
- departments: [
- "第一類(法学総合コース)",
- "第二類(法律プロフェッション・コース)",
- "第三類(政治コース)",
- ],
- },
- medicine: {
- name: "医学部",
- departments: ["医学科", "健康総合科学科"],
- },
- engineering: {
- name: "工学部",
- departments: [
- "社会基盤学科",
- "建築学科",
- "都市工学科",
- "機械工学科",
- "機械情報工学科",
- "航空宇宙工学科",
- "精密工学科",
- "電子情報工学科",
- "電気電子工学科",
- "物理工学科",
- "計数工学科",
- "マテリアル工学科",
- "応用化学科",
- "化学システム工学科",
- "化学生命工学科",
- "システム創成学科",
- ],
- },
- letters: {
- name: "文学部",
- departments: ["人文学科"],
- },
- science: {
- name: "理学部",
- departments: [
- "数学科",
- "情報科学科",
- "物理学科",
- "天文学科",
- "地球惑星物理学科",
- "地球惑星環境学科",
- "化学科",
- "生物化学科",
- "生物学科",
- "生物情報科学科",
- ],
- },
- agriculture: {
- name: "農学部",
- departments: ["応用生命科学課程", "環境資源科学課程", "獣医学課程"],
- },
- economics: {
- name: "経済学部",
- departments: ["経済学科", "経営学科", "金融学科"],
- },
- artsAndSciences: {
- name: "教養学部",
- departments: ["教養学科", "学際科学科", "統合自然科学科"],
- },
- education: {
- name: "教育学部",
- departments: ["総合教育科学科"],
- },
- pharmaceuticalSciences: {
- name: "薬学部",
- departments: ["薬科学科", "薬学科"],
- },
-};
diff --git a/docs/6-exercise/6-express-and-ejs/_samples/faculty-list-html/facultyList.ejs b/docs/6-exercise/6-express-and-ejs/_samples/faculty-list-html/facultyList.ejs
deleted file mode 100644
index 99c52a214..000000000
--- a/docs/6-exercise/6-express-and-ejs/_samples/faculty-list-html/facultyList.ejs
+++ /dev/null
@@ -1,15 +0,0 @@
-
-
-
-
- 東京大学の学部一覧
-
-
- 東京大学の学部一覧
-
-
-
diff --git a/docs/6-exercise/6-express-and-ejs/_samples/faculty-list-html/main.js b/docs/6-exercise/6-express-and-ejs/_samples/faculty-list-html/main.js
deleted file mode 100644
index dc881e127..000000000
--- a/docs/6-exercise/6-express-and-ejs/_samples/faculty-list-html/main.js
+++ /dev/null
@@ -1,26 +0,0 @@
-const { faculties, facultyData } = require("./faculties");
-const fs = require("fs");
-const http = require("http");
-const ejs = require("ejs");
-const server = new http.Server();
-
-server.addListener("request", (request, response) => {
- if (request.url === "/") {
- const template = fs.readFileSync("facultyList.ejs", "utf-8");
- const html = ejs.render(template, {
- faculties,
- facultyData,
- });
- response.write(html);
- } else if (faculties.includes(request.url.slice(1))) {
- const template = fs.readFileSync("departmentList.ejs", "utf-8");
- const html = ejs.render(template, {
- facultyData,
- faculty: request.url.slice(1),
- });
- response.write(html);
- }
- response.end();
-});
-
-server.listen(3000);
diff --git a/docs/6-exercise/6-express-and-ejs/_samples/module/faculties.js b/docs/6-exercise/6-express-and-ejs/_samples/module/faculties.js
deleted file mode 100644
index b0be4de7b..000000000
--- a/docs/6-exercise/6-express-and-ejs/_samples/module/faculties.js
+++ /dev/null
@@ -1,87 +0,0 @@
-exports.faculties = [
- "law",
- "medicine",
- "engineering",
- "letters",
- "science",
- "agriculture",
- "economics",
- "artsAndSciences",
- "education",
- "pharmaceuticalSciences",
-];
-
-exports.facultyData = {
- law: {
- name: "法学部",
- departments: [
- "第一類(法学総合コース)",
- "第二類(法律プロフェッション・コース)",
- "第三類(政治コース)",
- ],
- },
- medicine: {
- name: "医学部",
- departments: ["医学科", "健康総合科学科"],
- },
- engineering: {
- name: "工学部",
- departments: [
- "社会基盤学科",
- "建築学科",
- "都市工学科",
- "機械工学科",
- "機械情報工学科",
- "航空宇宙工学科",
- "精密工学科",
- "電子情報工学科",
- "電気電子工学科",
- "物理工学科",
- "計数工学科",
- "マテリアル工学科",
- "応用化学科",
- "化学システム工学科",
- "化学生命工学科",
- "システム創成学科",
- ],
- },
- letters: {
- name: "文学部",
- departments: ["人文学科"],
- },
- science: {
- name: "理学部",
- departments: [
- "数学科",
- "情報科学科",
- "物理学科",
- "天文学科",
- "地球惑星物理学科",
- "地球惑星環境学科",
- "化学科",
- "生物化学科",
- "生物学科",
- "生物情報科学科",
- ],
- },
- agriculture: {
- name: "農学部",
- departments: ["応用生命科学課程", "環境資源科学課程", "獣医学課程"],
- },
- economics: {
- name: "経済学部",
- departments: ["経済学科", "経営学科", "金融学科"],
- },
- artsAndSciences: {
- name: "教養学部",
- departments: ["教養学科", "学際科学科", "統合自然科学科"],
- },
- education: {
- name: "教育学部",
- departments: ["総合教育科学科"],
- },
- pharmaceuticalSciences: {
- name: "薬学部",
- departments: ["薬科学科", "薬学科"],
- },
-};
diff --git a/docs/6-exercise/6-express-and-ejs/_samples/module/main.js b/docs/6-exercise/6-express-and-ejs/_samples/module/main.js
deleted file mode 100644
index c9fd13a27..000000000
--- a/docs/6-exercise/6-express-and-ejs/_samples/module/main.js
+++ /dev/null
@@ -1,2 +0,0 @@
-const { facultyData } = require("./faculties");
-console.log(facultyData.engineering.departments.length);
diff --git a/docs/6-exercise/6-express-and-ejs/faculties.js b/docs/6-exercise/6-express-and-ejs/faculties.js
deleted file mode 100644
index b0be4de7b..000000000
--- a/docs/6-exercise/6-express-and-ejs/faculties.js
+++ /dev/null
@@ -1,87 +0,0 @@
-exports.faculties = [
- "law",
- "medicine",
- "engineering",
- "letters",
- "science",
- "agriculture",
- "economics",
- "artsAndSciences",
- "education",
- "pharmaceuticalSciences",
-];
-
-exports.facultyData = {
- law: {
- name: "法学部",
- departments: [
- "第一類(法学総合コース)",
- "第二類(法律プロフェッション・コース)",
- "第三類(政治コース)",
- ],
- },
- medicine: {
- name: "医学部",
- departments: ["医学科", "健康総合科学科"],
- },
- engineering: {
- name: "工学部",
- departments: [
- "社会基盤学科",
- "建築学科",
- "都市工学科",
- "機械工学科",
- "機械情報工学科",
- "航空宇宙工学科",
- "精密工学科",
- "電子情報工学科",
- "電気電子工学科",
- "物理工学科",
- "計数工学科",
- "マテリアル工学科",
- "応用化学科",
- "化学システム工学科",
- "化学生命工学科",
- "システム創成学科",
- ],
- },
- letters: {
- name: "文学部",
- departments: ["人文学科"],
- },
- science: {
- name: "理学部",
- departments: [
- "数学科",
- "情報科学科",
- "物理学科",
- "天文学科",
- "地球惑星物理学科",
- "地球惑星環境学科",
- "化学科",
- "生物化学科",
- "生物学科",
- "生物情報科学科",
- ],
- },
- agriculture: {
- name: "農学部",
- departments: ["応用生命科学課程", "環境資源科学課程", "獣医学課程"],
- },
- economics: {
- name: "経済学部",
- departments: ["経済学科", "経営学科", "金融学科"],
- },
- artsAndSciences: {
- name: "教養学部",
- departments: ["教養学科", "学際科学科", "統合自然科学科"],
- },
- education: {
- name: "教育学部",
- departments: ["総合教育科学科"],
- },
- pharmaceuticalSciences: {
- name: "薬学部",
- departments: ["薬科学科", "薬学科"],
- },
-};
diff --git a/docs/6-exercise/6-express-and-ejs/index.mdx b/docs/6-exercise/6-express-and-ejs/index.mdx
deleted file mode 100644
index 0dc7f3d79..000000000
--- a/docs/6-exercise/6-express-and-ejs/index.mdx
+++ /dev/null
@@ -1,264 +0,0 @@
----
-title: Express とテンプレートエンジン
-sidebar_position: 6
----
-
-import Answer from "@site/src/components/Answer";
-import ViewSource from "@site/src/components/ViewSource";
-import Details from "@theme/Details";
-
-この章では教材の「[はじめての Node.js](/docs/web-servers/node-js/)」から「[Express によるサーバー構築](/docs/web-servers/server/)」までの内容を扱っています。
-
----
-
-## 準備
-
-このページの演習問題を解く前に、以下の準備を行ってください。
-
-1. 新しいフォルダを Visual Studio Code で開き、`faculties.js` という名前のファイルを作成してください。
-2. 以下のコードを `faculties.js` にコピー&ペーストしてください。
-
-faculties.js}>
-
-```javascript title="faculties.js"
-exports.faculties = [
- "law",
- "medicine",
- "engineering",
- "letters",
- "science",
- "agriculture",
- "economics",
- "artsAndSciences",
- "education",
- "pharmaceuticalSciences",
-];
-
-exports.facultyData = {
- law: {
- name: "法学部",
- departments: [
- "第一類(法学総合コース)",
- "第二類(法律プロフェッション・コース)",
- "第三類(政治コース)",
- ],
- },
- medicine: {
- name: "医学部",
- departments: ["医学科", "健康総合科学科"],
- },
- engineering: {
- name: "工学部",
- departments: [
- "社会基盤学科",
- "建築学科",
- "都市工学科",
- "機械工学科",
- "機械情報工学科",
- "航空宇宙工学科",
- "精密工学科",
- "電子情報工学科",
- "電気電子工学科",
- "物理工学科",
- "計数工学科",
- "マテリアル工学科",
- "応用化学科",
- "化学システム工学科",
- "化学生命工学科",
- "システム創成学科",
- ],
- },
- letters: {
- name: "文学部",
- departments: ["人文学科"],
- },
- science: {
- name: "理学部",
- departments: [
- "数学科",
- "情報科学科",
- "物理学科",
- "天文学科",
- "地球惑星物理学科",
- "地球惑星環境学科",
- "化学科",
- "生物化学科",
- "生物学科",
- "生物情報科学科",
- ],
- },
- agriculture: {
- name: "農学部",
- departments: ["応用生命科学課程", "環境資源科学課程", "獣医学課程"],
- },
- economics: {
- name: "経済学部",
- departments: ["経済学科", "経営学科", "金融学科"],
- },
- artsAndSciences: {
- name: "教養学部",
- departments: ["教養学科", "学際科学科", "統合自然科学科"],
- },
- education: {
- name: "教育学部",
- departments: ["総合教育科学科"],
- },
- pharmaceuticalSciences: {
- name: "薬学部",
- departments: ["薬科学科", "薬学科"],
- },
-};
-```
-
-
-
-これ以降、`faculties.js` の中身を書き換えたり、コピーして他のファイルに貼り付けたりしてはいけません。
-
-`faculties.js` ファイルでは、東京大学の学部に関するデータが入った `faculties`, `facultyData` がエクスポートされています。
-
-- `faculties` は学部の英語名の配列です。
-- `facultyData` は学部の英語名をプロパティ名とするオブジェクトです。さらに、各プロパティは `name` と `departments` プロパティを持つオブジェクトであり、`name` は学部の日本語名、`departments` はその学部に属する学科の日本語名の配列です。
-
----
-
-## 1. モジュール
-
-工学部の学科数をコンソールに出力するプログラムを `main.js` ファイルに作成し、Node.js で実行してください。
-ただし、工学部の学科数は自分で数えるのではなく、`faculties.js` ファイルから `facultyData` を取得して計算してください。
-
-### 解答例
-
-
-
-ターミナルで `node main.js` コマンドを実行すると、コンソールに `16` と表示されるはずです。
-
-```javascript title="main.js"
-const { facultyData } = require("./faculties");
-console.log(facultyData.engineering.departments.length);
-```
-
-
-
-
-
----
-
-## 2. Express
-
-Express を用いて、工学部の学科を箇条書きで表示するウェブページを作成してください。EJS は用いても用いなくても構いません。
-
-### 解答例 1(EJS を用いない)
-
-
-
-```javascript title="main.js"
-const { facultyData } = require("./faculties");
-const express = require("express");
-const app = express();
-
-const departments = facultyData.engineering.departments;
-app.get("/", (request, response) => {
- response.send(
- departments.map((department) => `${department}`).join(""),
- );
-});
-
-app.listen(3000);
-```
-
-
-
-
-
-### 解答例 2(EJS を用いる)
-
-
-
-```javascript title="main.js"
-const { facultyData } = require("./faculties");
-const fs = require("fs");
-const express = require("express");
-const ejs = require("ejs");
-const app = express();
-
-app.get("/", (request, response) => {
- const template = fs.readFileSync("template.ejs", "utf-8");
- const html = ejs.render(template, {
- departments: facultyData.engineering.departments,
- });
- response.send(html);
-});
-
-app.listen(3000);
-```
-
-```html title="template.ejs"
-
-
-
-
- Title
-
-
-
- <% for (const department of departments) { %>
- - <%= department %>
- <% } %>
-
-
-
-```
-
-
-
-
-
----
-
-## 3. 総合問題
-
-http モジュール(あるいは Express)と EJS を用いて、以下の要件を満たすウェブサービスを作成してください。
-
-- `http://localhost:3000/` にアクセスすると東京大学の学部一覧が表示される。それぞれの学部名は `/[学部の英語名]` へのリンクになっている。
-- リンクがクリックされると `http://localhost:3000/[学部の英語名]` にページが移動し、その学部の学科一覧が表示される。例えば、工学部がクリックされると `http://localhost:3000/engineering` に移動し、工学部の学科一覧が表示される。
-
-:::tip
-
-Express を用いる場合は、[Route paramater](https://expressjs.com/en/guide/routing.html#route-parameters) を用いると簡潔に実装することができます。
-
-```javascript title="main.js"
-// 使用例
-const express = require("express");
-const app = express();
-
-app.get("/:faculty", (request, response) => {
- response.send(request.params.faculty);
-});
-
-app.listen(3000);
-```
-
-:::
-
-
-
-
-### 解答例 1 (`http` 標準モジュール)
-
-
-
-### 解答例 2 (Express)
-
-
diff --git a/docs/6-exercise/6-express-and-ejs/sample1.png b/docs/6-exercise/6-express-and-ejs/sample1.png
deleted file mode 100644
index eb7f29ec1..000000000
Binary files a/docs/6-exercise/6-express-and-ejs/sample1.png and /dev/null differ
diff --git a/docs/6-exercise/6-express-and-ejs/sample2.png b/docs/6-exercise/6-express-and-ejs/sample2.png
deleted file mode 100644
index df9a838d0..000000000
Binary files a/docs/6-exercise/6-express-and-ejs/sample2.png and /dev/null differ
diff --git a/docs/6-exercise/7-get-and-post/_samples/login-form/.gitignore b/docs/6-exercise/7-get-and-post/_samples/login-form/.gitignore
deleted file mode 100644
index 44e68351d..000000000
--- a/docs/6-exercise/7-get-and-post/_samples/login-form/.gitignore
+++ /dev/null
@@ -1,20 +0,0 @@
-# Dependencies
-node_modules
-
-# Production
-/build
-
-# Generated files
-.docusaurus
-.cache-loader
-
-# Misc
-.DS_Store
-.env.local
-.env.development.local
-.env.test.local
-.env.production.local
-
-npm-debug.log*
-yarn-debug.log*
-yarn-error.log*
diff --git a/docs/6-exercise/7-get-and-post/_samples/login-form/package-lock.json b/docs/6-exercise/7-get-and-post/_samples/login-form/package-lock.json
deleted file mode 100644
index c7fd26fb2..000000000
--- a/docs/6-exercise/7-get-and-post/_samples/login-form/package-lock.json
+++ /dev/null
@@ -1,1018 +0,0 @@
-{
- "name": "login-form",
- "version": "1.0.0",
- "lockfileVersion": 2,
- "requires": true,
- "packages": {
- "": {
- "name": "login-form",
- "version": "1.0.0",
- "license": "ISC",
- "dependencies": {
- "express": "^4.18.2"
- }
- },
- "node_modules/accepts": {
- "version": "1.3.8",
- "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz",
- "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==",
- "dependencies": {
- "mime-types": "~2.1.34",
- "negotiator": "0.6.3"
- },
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/array-flatten": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
- "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg=="
- },
- "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==",
- "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/bytes": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz",
- "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==",
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/call-bind": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz",
- "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==",
- "dependencies": {
- "function-bind": "^1.1.1",
- "get-intrinsic": "^1.0.2"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/content-disposition": {
- "version": "0.5.4",
- "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz",
- "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==",
- "dependencies": {
- "safe-buffer": "5.2.1"
- },
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/content-type": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz",
- "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==",
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/cookie": {
- "version": "0.5.0",
- "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz",
- "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==",
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/cookie-signature": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
- "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ=="
- },
- "node_modules/debug": {
- "version": "2.6.9",
- "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
- "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
- "dependencies": {
- "ms": "2.0.0"
- }
- },
- "node_modules/depd": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
- "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==",
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/destroy": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz",
- "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==",
- "engines": {
- "node": ">= 0.8",
- "npm": "1.2.8000 || >= 1.4.16"
- }
- },
- "node_modules/ee-first": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
- "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow=="
- },
- "node_modules/encodeurl": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
- "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==",
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/escape-html": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
- "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow=="
- },
- "node_modules/etag": {
- "version": "1.8.1",
- "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
- "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==",
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/express": {
- "version": "4.18.2",
- "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz",
- "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==",
- "dependencies": {
- "accepts": "~1.3.8",
- "array-flatten": "1.1.1",
- "body-parser": "1.20.1",
- "content-disposition": "0.5.4",
- "content-type": "~1.0.4",
- "cookie": "0.5.0",
- "cookie-signature": "1.0.6",
- "debug": "2.6.9",
- "depd": "2.0.0",
- "encodeurl": "~1.0.2",
- "escape-html": "~1.0.3",
- "etag": "~1.8.1",
- "finalhandler": "1.2.0",
- "fresh": "0.5.2",
- "http-errors": "2.0.0",
- "merge-descriptors": "1.0.1",
- "methods": "~1.1.2",
- "on-finished": "2.4.1",
- "parseurl": "~1.3.3",
- "path-to-regexp": "0.1.7",
- "proxy-addr": "~2.0.7",
- "qs": "6.11.0",
- "range-parser": "~1.2.1",
- "safe-buffer": "5.2.1",
- "send": "0.18.0",
- "serve-static": "1.15.0",
- "setprototypeof": "1.2.0",
- "statuses": "2.0.1",
- "type-is": "~1.6.18",
- "utils-merge": "1.0.1",
- "vary": "~1.1.2"
- },
- "engines": {
- "node": ">= 0.10.0"
- }
- },
- "node_modules/finalhandler": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz",
- "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==",
- "dependencies": {
- "debug": "2.6.9",
- "encodeurl": "~1.0.2",
- "escape-html": "~1.0.3",
- "on-finished": "2.4.1",
- "parseurl": "~1.3.3",
- "statuses": "2.0.1",
- "unpipe": "~1.0.0"
- },
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/forwarded": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz",
- "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==",
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/fresh": {
- "version": "0.5.2",
- "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
- "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==",
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/function-bind": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
- "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A=="
- },
- "node_modules/get-intrinsic": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.0.tgz",
- "integrity": "sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==",
- "dependencies": {
- "function-bind": "^1.1.1",
- "has": "^1.0.3",
- "has-symbols": "^1.0.3"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/has": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
- "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
- "dependencies": {
- "function-bind": "^1.1.1"
- },
- "engines": {
- "node": ">= 0.4.0"
- }
- },
- "node_modules/has-symbols": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz",
- "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==",
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/http-errors": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz",
- "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==",
- "dependencies": {
- "depd": "2.0.0",
- "inherits": "2.0.4",
- "setprototypeof": "1.2.0",
- "statuses": "2.0.1",
- "toidentifier": "1.0.1"
- },
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/iconv-lite": {
- "version": "0.4.24",
- "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
- "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
- "dependencies": {
- "safer-buffer": ">= 2.1.2 < 3"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/inherits": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
- "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
- },
- "node_modules/ipaddr.js": {
- "version": "1.9.1",
- "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz",
- "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==",
- "engines": {
- "node": ">= 0.10"
- }
- },
- "node_modules/media-typer": {
- "version": "0.3.0",
- "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
- "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==",
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/merge-descriptors": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz",
- "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w=="
- },
- "node_modules/methods": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
- "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==",
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/mime": {
- "version": "1.6.0",
- "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
- "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==",
- "bin": {
- "mime": "cli.js"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/mime-db": {
- "version": "1.52.0",
- "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
- "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/mime-types": {
- "version": "2.1.35",
- "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
- "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
- "dependencies": {
- "mime-db": "1.52.0"
- },
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/ms": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
- "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
- },
- "node_modules/negotiator": {
- "version": "0.6.3",
- "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz",
- "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==",
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/object-inspect": {
- "version": "1.12.3",
- "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz",
- "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==",
- "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",
- "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==",
- "dependencies": {
- "ee-first": "1.1.1"
- },
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/parseurl": {
- "version": "1.3.3",
- "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
- "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==",
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/path-to-regexp": {
- "version": "0.1.7",
- "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
- "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ=="
- },
- "node_modules/proxy-addr": {
- "version": "2.0.7",
- "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz",
- "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==",
- "dependencies": {
- "forwarded": "0.2.0",
- "ipaddr.js": "1.9.1"
- },
- "engines": {
- "node": ">= 0.10"
- }
- },
- "node_modules/qs": {
- "version": "6.11.0",
- "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz",
- "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==",
- "dependencies": {
- "side-channel": "^1.0.4"
- },
- "engines": {
- "node": ">=0.6"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/range-parser": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
- "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==",
- "engines": {
- "node": ">= 0.6"
- }
- },
- "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==",
- "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/safe-buffer": {
- "version": "5.2.1",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
- "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/feross"
- },
- {
- "type": "patreon",
- "url": "https://www.patreon.com/feross"
- },
- {
- "type": "consulting",
- "url": "https://feross.org/support"
- }
- ]
- },
- "node_modules/safer-buffer": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
- "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
- },
- "node_modules/send": {
- "version": "0.18.0",
- "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz",
- "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==",
- "dependencies": {
- "debug": "2.6.9",
- "depd": "2.0.0",
- "destroy": "1.2.0",
- "encodeurl": "~1.0.2",
- "escape-html": "~1.0.3",
- "etag": "~1.8.1",
- "fresh": "0.5.2",
- "http-errors": "2.0.0",
- "mime": "1.6.0",
- "ms": "2.1.3",
- "on-finished": "2.4.1",
- "range-parser": "~1.2.1",
- "statuses": "2.0.1"
- },
- "engines": {
- "node": ">= 0.8.0"
- }
- },
- "node_modules/send/node_modules/ms": {
- "version": "2.1.3",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
- "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="
- },
- "node_modules/serve-static": {
- "version": "1.15.0",
- "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz",
- "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==",
- "dependencies": {
- "encodeurl": "~1.0.2",
- "escape-html": "~1.0.3",
- "parseurl": "~1.3.3",
- "send": "0.18.0"
- },
- "engines": {
- "node": ">= 0.8.0"
- }
- },
- "node_modules/setprototypeof": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz",
- "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw=="
- },
- "node_modules/side-channel": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz",
- "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==",
- "dependencies": {
- "call-bind": "^1.0.0",
- "get-intrinsic": "^1.0.2",
- "object-inspect": "^1.9.0"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/statuses": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz",
- "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==",
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/toidentifier": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz",
- "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==",
- "engines": {
- "node": ">=0.6"
- }
- },
- "node_modules/type-is": {
- "version": "1.6.18",
- "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz",
- "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==",
- "dependencies": {
- "media-typer": "0.3.0",
- "mime-types": "~2.1.24"
- },
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/unpipe": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
- "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==",
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/utils-merge": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
- "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==",
- "engines": {
- "node": ">= 0.4.0"
- }
- },
- "node_modules/vary": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
- "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==",
- "engines": {
- "node": ">= 0.8"
- }
- }
- },
- "dependencies": {
- "accepts": {
- "version": "1.3.8",
- "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz",
- "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==",
- "requires": {
- "mime-types": "~2.1.34",
- "negotiator": "0.6.3"
- }
- },
- "array-flatten": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
- "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg=="
- },
- "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==",
- "requires": {
- "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"
- }
- },
- "bytes": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz",
- "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg=="
- },
- "call-bind": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz",
- "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==",
- "requires": {
- "function-bind": "^1.1.1",
- "get-intrinsic": "^1.0.2"
- }
- },
- "content-disposition": {
- "version": "0.5.4",
- "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz",
- "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==",
- "requires": {
- "safe-buffer": "5.2.1"
- }
- },
- "content-type": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz",
- "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA=="
- },
- "cookie": {
- "version": "0.5.0",
- "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz",
- "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw=="
- },
- "cookie-signature": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
- "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ=="
- },
- "debug": {
- "version": "2.6.9",
- "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
- "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
- "requires": {
- "ms": "2.0.0"
- }
- },
- "depd": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
- "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw=="
- },
- "destroy": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz",
- "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg=="
- },
- "ee-first": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
- "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow=="
- },
- "encodeurl": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
- "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w=="
- },
- "escape-html": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
- "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow=="
- },
- "etag": {
- "version": "1.8.1",
- "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
- "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg=="
- },
- "express": {
- "version": "4.18.2",
- "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz",
- "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==",
- "requires": {
- "accepts": "~1.3.8",
- "array-flatten": "1.1.1",
- "body-parser": "1.20.1",
- "content-disposition": "0.5.4",
- "content-type": "~1.0.4",
- "cookie": "0.5.0",
- "cookie-signature": "1.0.6",
- "debug": "2.6.9",
- "depd": "2.0.0",
- "encodeurl": "~1.0.2",
- "escape-html": "~1.0.3",
- "etag": "~1.8.1",
- "finalhandler": "1.2.0",
- "fresh": "0.5.2",
- "http-errors": "2.0.0",
- "merge-descriptors": "1.0.1",
- "methods": "~1.1.2",
- "on-finished": "2.4.1",
- "parseurl": "~1.3.3",
- "path-to-regexp": "0.1.7",
- "proxy-addr": "~2.0.7",
- "qs": "6.11.0",
- "range-parser": "~1.2.1",
- "safe-buffer": "5.2.1",
- "send": "0.18.0",
- "serve-static": "1.15.0",
- "setprototypeof": "1.2.0",
- "statuses": "2.0.1",
- "type-is": "~1.6.18",
- "utils-merge": "1.0.1",
- "vary": "~1.1.2"
- }
- },
- "finalhandler": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz",
- "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==",
- "requires": {
- "debug": "2.6.9",
- "encodeurl": "~1.0.2",
- "escape-html": "~1.0.3",
- "on-finished": "2.4.1",
- "parseurl": "~1.3.3",
- "statuses": "2.0.1",
- "unpipe": "~1.0.0"
- }
- },
- "forwarded": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz",
- "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow=="
- },
- "fresh": {
- "version": "0.5.2",
- "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
- "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q=="
- },
- "function-bind": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
- "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A=="
- },
- "get-intrinsic": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.0.tgz",
- "integrity": "sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==",
- "requires": {
- "function-bind": "^1.1.1",
- "has": "^1.0.3",
- "has-symbols": "^1.0.3"
- }
- },
- "has": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
- "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
- "requires": {
- "function-bind": "^1.1.1"
- }
- },
- "has-symbols": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz",
- "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A=="
- },
- "http-errors": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz",
- "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==",
- "requires": {
- "depd": "2.0.0",
- "inherits": "2.0.4",
- "setprototypeof": "1.2.0",
- "statuses": "2.0.1",
- "toidentifier": "1.0.1"
- }
- },
- "iconv-lite": {
- "version": "0.4.24",
- "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
- "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
- "requires": {
- "safer-buffer": ">= 2.1.2 < 3"
- }
- },
- "inherits": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
- "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
- },
- "ipaddr.js": {
- "version": "1.9.1",
- "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz",
- "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g=="
- },
- "media-typer": {
- "version": "0.3.0",
- "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
- "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ=="
- },
- "merge-descriptors": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz",
- "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w=="
- },
- "methods": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
- "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w=="
- },
- "mime": {
- "version": "1.6.0",
- "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
- "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg=="
- },
- "mime-db": {
- "version": "1.52.0",
- "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
- "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg=="
- },
- "mime-types": {
- "version": "2.1.35",
- "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
- "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
- "requires": {
- "mime-db": "1.52.0"
- }
- },
- "ms": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
- "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
- },
- "negotiator": {
- "version": "0.6.3",
- "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz",
- "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg=="
- },
- "object-inspect": {
- "version": "1.12.3",
- "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz",
- "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g=="
- },
- "on-finished": {
- "version": "2.4.1",
- "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz",
- "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==",
- "requires": {
- "ee-first": "1.1.1"
- }
- },
- "parseurl": {
- "version": "1.3.3",
- "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
- "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ=="
- },
- "path-to-regexp": {
- "version": "0.1.7",
- "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
- "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ=="
- },
- "proxy-addr": {
- "version": "2.0.7",
- "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz",
- "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==",
- "requires": {
- "forwarded": "0.2.0",
- "ipaddr.js": "1.9.1"
- }
- },
- "qs": {
- "version": "6.11.0",
- "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz",
- "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==",
- "requires": {
- "side-channel": "^1.0.4"
- }
- },
- "range-parser": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
- "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg=="
- },
- "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==",
- "requires": {
- "bytes": "3.1.2",
- "http-errors": "2.0.0",
- "iconv-lite": "0.4.24",
- "unpipe": "1.0.0"
- }
- },
- "safe-buffer": {
- "version": "5.2.1",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
- "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ=="
- },
- "safer-buffer": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
- "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
- },
- "send": {
- "version": "0.18.0",
- "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz",
- "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==",
- "requires": {
- "debug": "2.6.9",
- "depd": "2.0.0",
- "destroy": "1.2.0",
- "encodeurl": "~1.0.2",
- "escape-html": "~1.0.3",
- "etag": "~1.8.1",
- "fresh": "0.5.2",
- "http-errors": "2.0.0",
- "mime": "1.6.0",
- "ms": "2.1.3",
- "on-finished": "2.4.1",
- "range-parser": "~1.2.1",
- "statuses": "2.0.1"
- },
- "dependencies": {
- "ms": {
- "version": "2.1.3",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
- "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="
- }
- }
- },
- "serve-static": {
- "version": "1.15.0",
- "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz",
- "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==",
- "requires": {
- "encodeurl": "~1.0.2",
- "escape-html": "~1.0.3",
- "parseurl": "~1.3.3",
- "send": "0.18.0"
- }
- },
- "setprototypeof": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz",
- "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw=="
- },
- "side-channel": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz",
- "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==",
- "requires": {
- "call-bind": "^1.0.0",
- "get-intrinsic": "^1.0.2",
- "object-inspect": "^1.9.0"
- }
- },
- "statuses": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz",
- "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ=="
- },
- "toidentifier": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz",
- "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA=="
- },
- "type-is": {
- "version": "1.6.18",
- "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz",
- "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==",
- "requires": {
- "media-typer": "0.3.0",
- "mime-types": "~2.1.24"
- }
- },
- "unpipe": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
- "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ=="
- },
- "utils-merge": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
- "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA=="
- },
- "vary": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
- "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg=="
- }
- }
-}
diff --git a/docs/6-exercise/7-get-and-post/_samples/login-form/package.json b/docs/6-exercise/7-get-and-post/_samples/login-form/package.json
deleted file mode 100644
index ef9e4d765..000000000
--- a/docs/6-exercise/7-get-and-post/_samples/login-form/package.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "name": "login-form",
- "version": "1.0.0",
- "description": "",
- "main": "server.js",
- "scripts": {
- "test": "echo \"Error: no test specified\" && exit 1",
- "start": "node server.js"
- },
- "author": "",
- "license": "ISC",
- "dependencies": {
- "express": "^4.18.2"
- }
-}
diff --git a/docs/6-exercise/7-get-and-post/_samples/login-form/server.js b/docs/6-exercise/7-get-and-post/_samples/login-form/server.js
deleted file mode 100644
index 968e62977..000000000
--- a/docs/6-exercise/7-get-and-post/_samples/login-form/server.js
+++ /dev/null
@@ -1,18 +0,0 @@
-const express = require("express");
-
-const app = express();
-
-const data = { tanaka: "1234", sato: "9999" };
-
-app.use(express.urlencoded({ extended: true }));
-app.use(express.static("static"));
-
-app.post("/user", (request, response) => {
- if (request.body.password === data[request.body.user]) {
- response.send(`ようこそ、${request.body.user}さん!`);
- } else {
- response.send("ユーザが存在しないか、パスワードが間違っています");
- }
-});
-
-app.listen(3000);
diff --git a/docs/6-exercise/7-get-and-post/_samples/login-form/static/index.html b/docs/6-exercise/7-get-and-post/_samples/login-form/static/index.html
deleted file mode 100644
index 56489a74c..000000000
--- a/docs/6-exercise/7-get-and-post/_samples/login-form/static/index.html
+++ /dev/null
@@ -1,24 +0,0 @@
-
-
-
-
- ログイン
-
-
-
-
-
diff --git a/docs/6-exercise/7-get-and-post/index.mdx b/docs/6-exercise/7-get-and-post/index.mdx
deleted file mode 100644
index 5d5d95d91..000000000
--- a/docs/6-exercise/7-get-and-post/index.mdx
+++ /dev/null
@@ -1,89 +0,0 @@
----
-title: GET リクエストと POST リクエスト
-sidebar_position: 6
----
-
-import CodeBlock from "@theme/CodeBlock";
-import Term from "@site/src/components/Term";
-import ViewSource from "@site/src/components/ViewSource";
-import Answer from "@site/src/components/Answer";
-import Details from "@theme/Details";
-
-この章では教材の「[フォーム](/docs/web-servers/form/)」「[GET リクエストと POST リクエスト](/docs/web-servers/get-post/)」の内容を扱っています。
-
----
-
-## ユーザ名とパスワードを入力してログイン
-
-ユーザ名とパスワードを入力してログインするサイトを作ってみましょう。
-
-- 正しいユーザ名とパスワードを入力すると、「ようこそ〇〇さん」(〇〇はユーザ名)と表示されます。
-- 存在しないユーザ名、または間違ったパスワードを入力すると、「ユーザが存在しないか、パスワードが間違っています」と表示されます。
-
-※ユーザ名とパスワードはあらかじめサーバー側で定義しておきましょう。
-
-
-
-
-
-```javascript title="server.js"
-const express = require("express");
-
-const app = express();
-
-const data = { tanaka: "1234", sato: "9999" };
-
-app.use(express.urlencoded({ extended: true }));
-app.use(express.static("static"));
-
-app.post("/user", (request, response) => {
- if (request.body.password === data[request.body.user]) {
- response.send(`ようこそ、${request.body.user}さん!`);
- } else {
- response.send("ユーザが存在しないか、パスワードが間違っています");
- }
-});
-
-app.listen(3000);
-```
-
-```html title="index.html"
-
-
-
-
- ログイン
-
-
-
-
-
-```
-
-
-
-
-
-注意}>
-
-このシステムでは、`tanaka` や `sato` などのユーザ名をキーにしているため、同名の人物が存在するとログインできなくなります。
-
-本来はそのような場合も想定し、`{ 自動で発行したid: { name: "名前", password: ""}}` のようなモデルを使って、ユーザを登録するたびに `id` を自動で発行し、その `id` をキーにするようにするとよいでしょう。
-
-詳細はデータベースや Cookie について理解したのちに、[Cookie の章の課題](/docs/web-servers/cookie/#%E8%AA%B2%E9%A1%8C-1)等を通して学習してください。
-
-
diff --git a/docs/6-exercise/7-get-and-post/login.png b/docs/6-exercise/7-get-and-post/login.png
deleted file mode 100644
index 83dd17dd4..000000000
Binary files a/docs/6-exercise/7-get-and-post/login.png and /dev/null differ
diff --git a/docs/6-exercise/8-database-and-cookie/_samples/cookie/.gitignore b/docs/6-exercise/8-database-and-cookie/_samples/cookie/.gitignore
deleted file mode 100644
index 30bc16279..000000000
--- a/docs/6-exercise/8-database-and-cookie/_samples/cookie/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-/node_modules
\ No newline at end of file
diff --git a/docs/6-exercise/8-database-and-cookie/_samples/cookie/index.ejs b/docs/6-exercise/8-database-and-cookie/_samples/cookie/index.ejs
deleted file mode 100644
index e0a4b4ca7..000000000
--- a/docs/6-exercise/8-database-and-cookie/_samples/cookie/index.ejs
+++ /dev/null
@@ -1,28 +0,0 @@
-
-
-
-
- ut商会
-
-
-
-
-
- 車 |
- 指輪 |
- エビ |
-
-
-
-
- <% for ( const item of items ){%>
- |
- <% } %>
-
-
-
- <% if(recommended){ %>
- あなたへのおすすめは<%= recommended %>です
- <% } %>
-
-
diff --git a/docs/6-exercise/8-database-and-cookie/_samples/cookie/main.js b/docs/6-exercise/8-database-and-cookie/_samples/cookie/main.js
deleted file mode 100644
index 97c3cf80a..000000000
--- a/docs/6-exercise/8-database-and-cookie/_samples/cookie/main.js
+++ /dev/null
@@ -1,57 +0,0 @@
-const fs = require("fs");
-const ejs = require("ejs");
-const express = require("express");
-const cookieParser = require("cookie-parser");
-
-const app = express();
-app.use(cookieParser());
-
-const items = ["car", "ring", "shrimp"];
-
-app.get("/", (request, response) => {
- let recommended;
- const carPreference = parseInt(request.cookies.carPreference) || 0;
- const ringPreference = parseInt(request.cookies.ringPreference) || 0;
- const shrimpPreference = parseInt(request.cookies.shrimpPreference) || 0;
- const favorite = Math.max(carPreference, ringPreference, shrimpPreference);
- if (
- (carPreference === ringPreference && carPreference === favorite) ||
- (ringPreference === shrimpPreference && ringPreference === favorite) ||
- (shrimpPreference === carPreference && shrimpPreference === favorite) ||
- favorite === 0
- ) {
- recommended = null;
- } else if (carPreference === favorite) {
- recommended = "車";
- } else if (ringPreference === favorite) {
- recommended = "指輪";
- } else {
- recommended = "エビ";
- }
- const template = fs.readFileSync("./index.ejs", { encoding: "utf-8" });
- const html = ejs.render(template, { items: items, recommended: recommended });
- response.send(html);
-});
-
-app.get("/car", (request, response) => {
- const carPreference = Number(request.cookies.carPreference) || 0;
- const newCarPreference = carPreference + 1;
- response.cookie("carPreference", newCarPreference.toString());
- response.send("車を買いました");
-});
-
-app.get("/ring", (request, response) => {
- const ringPreference = Number(request.cookies.ringPreference) || 0;
- const newRingPreference = ringPreference + 1;
- response.cookie("ringPreference", newRingPreference.toString());
- response.send("指輪を買いました");
-});
-
-app.get("/shrimp", (request, response) => {
- const shrimpPreference = Number(request.cookies.shrimpPreference) || 0;
- const newShrimpPreference = shrimpPreference + 1;
- response.cookie("shrimpPreference", newShrimpPreference.toString());
- response.send("エビを買いました");
-});
-
-app.listen(3000);
diff --git a/docs/6-exercise/8-database-and-cookie/_samples/cookie/package-lock.json b/docs/6-exercise/8-database-and-cookie/_samples/cookie/package-lock.json
deleted file mode 100644
index 25a9d14ed..000000000
--- a/docs/6-exercise/8-database-and-cookie/_samples/cookie/package-lock.json
+++ /dev/null
@@ -1,1333 +0,0 @@
-{
- "name": "cookie",
- "version": "1.0.0",
- "lockfileVersion": 2,
- "requires": true,
- "packages": {
- "": {
- "name": "cookie",
- "version": "1.0.0",
- "license": "ISC",
- "dependencies": {
- "cookie-parser": "^1.4.6",
- "ejs": "^3.1.9",
- "express": "^4.18.2"
- }
- },
- "node_modules/accepts": {
- "version": "1.3.8",
- "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz",
- "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==",
- "dependencies": {
- "mime-types": "~2.1.34",
- "negotiator": "0.6.3"
- },
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/ansi-styles": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
- "dependencies": {
- "color-convert": "^2.0.1"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
- }
- },
- "node_modules/array-flatten": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
- "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg=="
- },
- "node_modules/async": {
- "version": "3.2.4",
- "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz",
- "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ=="
- },
- "node_modules/balanced-match": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
- "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="
- },
- "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==",
- "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/brace-expansion": {
- "version": "1.1.11",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
- "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
- "dependencies": {
- "balanced-match": "^1.0.0",
- "concat-map": "0.0.1"
- }
- },
- "node_modules/bytes": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz",
- "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==",
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/call-bind": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz",
- "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==",
- "dependencies": {
- "function-bind": "^1.1.1",
- "get-intrinsic": "^1.0.2"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/chalk": {
- "version": "4.1.2",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
- "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
- "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/color-convert": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
- "dependencies": {
- "color-name": "~1.1.4"
- },
- "engines": {
- "node": ">=7.0.0"
- }
- },
- "node_modules/color-name": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
- },
- "node_modules/concat-map": {
- "version": "0.0.1",
- "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
- "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg=="
- },
- "node_modules/content-disposition": {
- "version": "0.5.4",
- "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz",
- "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==",
- "dependencies": {
- "safe-buffer": "5.2.1"
- },
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/content-type": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz",
- "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==",
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/cookie": {
- "version": "0.5.0",
- "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz",
- "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==",
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/cookie-parser": {
- "version": "1.4.6",
- "resolved": "https://registry.npmjs.org/cookie-parser/-/cookie-parser-1.4.6.tgz",
- "integrity": "sha512-z3IzaNjdwUC2olLIB5/ITd0/setiaFMLYiZJle7xg5Fe9KWAceil7xszYfHHBtDFYLSgJduS2Ty0P1uJdPDJeA==",
- "dependencies": {
- "cookie": "0.4.1",
- "cookie-signature": "1.0.6"
- },
- "engines": {
- "node": ">= 0.8.0"
- }
- },
- "node_modules/cookie-parser/node_modules/cookie": {
- "version": "0.4.1",
- "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.1.tgz",
- "integrity": "sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA==",
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/cookie-signature": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
- "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ=="
- },
- "node_modules/debug": {
- "version": "2.6.9",
- "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
- "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
- "dependencies": {
- "ms": "2.0.0"
- }
- },
- "node_modules/depd": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
- "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==",
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/destroy": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz",
- "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==",
- "engines": {
- "node": ">= 0.8",
- "npm": "1.2.8000 || >= 1.4.16"
- }
- },
- "node_modules/ee-first": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
- "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow=="
- },
- "node_modules/ejs": {
- "version": "3.1.9",
- "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.9.tgz",
- "integrity": "sha512-rC+QVNMJWv+MtPgkt0y+0rVEIdbtxVADApW9JXrUVlzHetgcyczP/E7DJmWJ4fJCZF2cPcBk0laWO9ZHMG3DmQ==",
- "dependencies": {
- "jake": "^10.8.5"
- },
- "bin": {
- "ejs": "bin/cli.js"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/encodeurl": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
- "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==",
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/escape-html": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
- "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow=="
- },
- "node_modules/etag": {
- "version": "1.8.1",
- "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
- "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==",
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/express": {
- "version": "4.18.2",
- "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz",
- "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==",
- "dependencies": {
- "accepts": "~1.3.8",
- "array-flatten": "1.1.1",
- "body-parser": "1.20.1",
- "content-disposition": "0.5.4",
- "content-type": "~1.0.4",
- "cookie": "0.5.0",
- "cookie-signature": "1.0.6",
- "debug": "2.6.9",
- "depd": "2.0.0",
- "encodeurl": "~1.0.2",
- "escape-html": "~1.0.3",
- "etag": "~1.8.1",
- "finalhandler": "1.2.0",
- "fresh": "0.5.2",
- "http-errors": "2.0.0",
- "merge-descriptors": "1.0.1",
- "methods": "~1.1.2",
- "on-finished": "2.4.1",
- "parseurl": "~1.3.3",
- "path-to-regexp": "0.1.7",
- "proxy-addr": "~2.0.7",
- "qs": "6.11.0",
- "range-parser": "~1.2.1",
- "safe-buffer": "5.2.1",
- "send": "0.18.0",
- "serve-static": "1.15.0",
- "setprototypeof": "1.2.0",
- "statuses": "2.0.1",
- "type-is": "~1.6.18",
- "utils-merge": "1.0.1",
- "vary": "~1.1.2"
- },
- "engines": {
- "node": ">= 0.10.0"
- }
- },
- "node_modules/filelist": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz",
- "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==",
- "dependencies": {
- "minimatch": "^5.0.1"
- }
- },
- "node_modules/filelist/node_modules/brace-expansion": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
- "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
- "dependencies": {
- "balanced-match": "^1.0.0"
- }
- },
- "node_modules/filelist/node_modules/minimatch": {
- "version": "5.1.6",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz",
- "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==",
- "dependencies": {
- "brace-expansion": "^2.0.1"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/finalhandler": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz",
- "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==",
- "dependencies": {
- "debug": "2.6.9",
- "encodeurl": "~1.0.2",
- "escape-html": "~1.0.3",
- "on-finished": "2.4.1",
- "parseurl": "~1.3.3",
- "statuses": "2.0.1",
- "unpipe": "~1.0.0"
- },
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/forwarded": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz",
- "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==",
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/fresh": {
- "version": "0.5.2",
- "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
- "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==",
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/function-bind": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
- "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A=="
- },
- "node_modules/get-intrinsic": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.0.tgz",
- "integrity": "sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==",
- "dependencies": {
- "function-bind": "^1.1.1",
- "has": "^1.0.3",
- "has-symbols": "^1.0.3"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/has": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
- "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
- "dependencies": {
- "function-bind": "^1.1.1"
- },
- "engines": {
- "node": ">= 0.4.0"
- }
- },
- "node_modules/has-flag": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/has-symbols": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz",
- "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==",
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/http-errors": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz",
- "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==",
- "dependencies": {
- "depd": "2.0.0",
- "inherits": "2.0.4",
- "setprototypeof": "1.2.0",
- "statuses": "2.0.1",
- "toidentifier": "1.0.1"
- },
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/iconv-lite": {
- "version": "0.4.24",
- "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
- "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
- "dependencies": {
- "safer-buffer": ">= 2.1.2 < 3"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/inherits": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
- "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
- },
- "node_modules/ipaddr.js": {
- "version": "1.9.1",
- "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz",
- "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==",
- "engines": {
- "node": ">= 0.10"
- }
- },
- "node_modules/jake": {
- "version": "10.8.5",
- "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.5.tgz",
- "integrity": "sha512-sVpxYeuAhWt0OTWITwT98oyV0GsXyMlXCF+3L1SuafBVUIr/uILGRB+NqwkzhgXKvoJpDIpQvqkUALgdmQsQxw==",
- "dependencies": {
- "async": "^3.2.3",
- "chalk": "^4.0.2",
- "filelist": "^1.0.1",
- "minimatch": "^3.0.4"
- },
- "bin": {
- "jake": "bin/cli.js"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/media-typer": {
- "version": "0.3.0",
- "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
- "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==",
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/merge-descriptors": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz",
- "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w=="
- },
- "node_modules/methods": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
- "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==",
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/mime": {
- "version": "1.6.0",
- "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
- "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==",
- "bin": {
- "mime": "cli.js"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/mime-db": {
- "version": "1.52.0",
- "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
- "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/mime-types": {
- "version": "2.1.35",
- "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
- "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
- "dependencies": {
- "mime-db": "1.52.0"
- },
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/minimatch": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
- "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
- "dependencies": {
- "brace-expansion": "^1.1.7"
- },
- "engines": {
- "node": "*"
- }
- },
- "node_modules/ms": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
- "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
- },
- "node_modules/negotiator": {
- "version": "0.6.3",
- "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz",
- "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==",
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/object-inspect": {
- "version": "1.12.3",
- "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz",
- "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==",
- "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",
- "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==",
- "dependencies": {
- "ee-first": "1.1.1"
- },
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/parseurl": {
- "version": "1.3.3",
- "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
- "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==",
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/path-to-regexp": {
- "version": "0.1.7",
- "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
- "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ=="
- },
- "node_modules/proxy-addr": {
- "version": "2.0.7",
- "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz",
- "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==",
- "dependencies": {
- "forwarded": "0.2.0",
- "ipaddr.js": "1.9.1"
- },
- "engines": {
- "node": ">= 0.10"
- }
- },
- "node_modules/qs": {
- "version": "6.11.0",
- "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz",
- "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==",
- "dependencies": {
- "side-channel": "^1.0.4"
- },
- "engines": {
- "node": ">=0.6"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/range-parser": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
- "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==",
- "engines": {
- "node": ">= 0.6"
- }
- },
- "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==",
- "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/safe-buffer": {
- "version": "5.2.1",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
- "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/feross"
- },
- {
- "type": "patreon",
- "url": "https://www.patreon.com/feross"
- },
- {
- "type": "consulting",
- "url": "https://feross.org/support"
- }
- ]
- },
- "node_modules/safer-buffer": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
- "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
- },
- "node_modules/send": {
- "version": "0.18.0",
- "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz",
- "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==",
- "dependencies": {
- "debug": "2.6.9",
- "depd": "2.0.0",
- "destroy": "1.2.0",
- "encodeurl": "~1.0.2",
- "escape-html": "~1.0.3",
- "etag": "~1.8.1",
- "fresh": "0.5.2",
- "http-errors": "2.0.0",
- "mime": "1.6.0",
- "ms": "2.1.3",
- "on-finished": "2.4.1",
- "range-parser": "~1.2.1",
- "statuses": "2.0.1"
- },
- "engines": {
- "node": ">= 0.8.0"
- }
- },
- "node_modules/send/node_modules/ms": {
- "version": "2.1.3",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
- "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="
- },
- "node_modules/serve-static": {
- "version": "1.15.0",
- "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz",
- "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==",
- "dependencies": {
- "encodeurl": "~1.0.2",
- "escape-html": "~1.0.3",
- "parseurl": "~1.3.3",
- "send": "0.18.0"
- },
- "engines": {
- "node": ">= 0.8.0"
- }
- },
- "node_modules/setprototypeof": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz",
- "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw=="
- },
- "node_modules/side-channel": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz",
- "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==",
- "dependencies": {
- "call-bind": "^1.0.0",
- "get-intrinsic": "^1.0.2",
- "object-inspect": "^1.9.0"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/statuses": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz",
- "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==",
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/supports-color": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
- "dependencies": {
- "has-flag": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/toidentifier": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz",
- "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==",
- "engines": {
- "node": ">=0.6"
- }
- },
- "node_modules/type-is": {
- "version": "1.6.18",
- "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz",
- "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==",
- "dependencies": {
- "media-typer": "0.3.0",
- "mime-types": "~2.1.24"
- },
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/unpipe": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
- "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==",
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/utils-merge": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
- "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==",
- "engines": {
- "node": ">= 0.4.0"
- }
- },
- "node_modules/vary": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
- "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==",
- "engines": {
- "node": ">= 0.8"
- }
- }
- },
- "dependencies": {
- "accepts": {
- "version": "1.3.8",
- "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz",
- "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==",
- "requires": {
- "mime-types": "~2.1.34",
- "negotiator": "0.6.3"
- }
- },
- "ansi-styles": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
- "requires": {
- "color-convert": "^2.0.1"
- }
- },
- "array-flatten": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
- "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg=="
- },
- "async": {
- "version": "3.2.4",
- "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz",
- "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ=="
- },
- "balanced-match": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
- "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="
- },
- "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==",
- "requires": {
- "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"
- }
- },
- "brace-expansion": {
- "version": "1.1.11",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
- "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
- "requires": {
- "balanced-match": "^1.0.0",
- "concat-map": "0.0.1"
- }
- },
- "bytes": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz",
- "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg=="
- },
- "call-bind": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz",
- "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==",
- "requires": {
- "function-bind": "^1.1.1",
- "get-intrinsic": "^1.0.2"
- }
- },
- "chalk": {
- "version": "4.1.2",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
- "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
- "requires": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- }
- },
- "color-convert": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
- "requires": {
- "color-name": "~1.1.4"
- }
- },
- "color-name": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
- },
- "concat-map": {
- "version": "0.0.1",
- "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
- "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg=="
- },
- "content-disposition": {
- "version": "0.5.4",
- "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz",
- "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==",
- "requires": {
- "safe-buffer": "5.2.1"
- }
- },
- "content-type": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz",
- "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA=="
- },
- "cookie": {
- "version": "0.5.0",
- "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz",
- "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw=="
- },
- "cookie-parser": {
- "version": "1.4.6",
- "resolved": "https://registry.npmjs.org/cookie-parser/-/cookie-parser-1.4.6.tgz",
- "integrity": "sha512-z3IzaNjdwUC2olLIB5/ITd0/setiaFMLYiZJle7xg5Fe9KWAceil7xszYfHHBtDFYLSgJduS2Ty0P1uJdPDJeA==",
- "requires": {
- "cookie": "0.4.1",
- "cookie-signature": "1.0.6"
- },
- "dependencies": {
- "cookie": {
- "version": "0.4.1",
- "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.1.tgz",
- "integrity": "sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA=="
- }
- }
- },
- "cookie-signature": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
- "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ=="
- },
- "debug": {
- "version": "2.6.9",
- "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
- "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
- "requires": {
- "ms": "2.0.0"
- }
- },
- "depd": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
- "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw=="
- },
- "destroy": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz",
- "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg=="
- },
- "ee-first": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
- "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow=="
- },
- "ejs": {
- "version": "3.1.9",
- "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.9.tgz",
- "integrity": "sha512-rC+QVNMJWv+MtPgkt0y+0rVEIdbtxVADApW9JXrUVlzHetgcyczP/E7DJmWJ4fJCZF2cPcBk0laWO9ZHMG3DmQ==",
- "requires": {
- "jake": "^10.8.5"
- }
- },
- "encodeurl": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
- "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w=="
- },
- "escape-html": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
- "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow=="
- },
- "etag": {
- "version": "1.8.1",
- "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
- "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg=="
- },
- "express": {
- "version": "4.18.2",
- "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz",
- "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==",
- "requires": {
- "accepts": "~1.3.8",
- "array-flatten": "1.1.1",
- "body-parser": "1.20.1",
- "content-disposition": "0.5.4",
- "content-type": "~1.0.4",
- "cookie": "0.5.0",
- "cookie-signature": "1.0.6",
- "debug": "2.6.9",
- "depd": "2.0.0",
- "encodeurl": "~1.0.2",
- "escape-html": "~1.0.3",
- "etag": "~1.8.1",
- "finalhandler": "1.2.0",
- "fresh": "0.5.2",
- "http-errors": "2.0.0",
- "merge-descriptors": "1.0.1",
- "methods": "~1.1.2",
- "on-finished": "2.4.1",
- "parseurl": "~1.3.3",
- "path-to-regexp": "0.1.7",
- "proxy-addr": "~2.0.7",
- "qs": "6.11.0",
- "range-parser": "~1.2.1",
- "safe-buffer": "5.2.1",
- "send": "0.18.0",
- "serve-static": "1.15.0",
- "setprototypeof": "1.2.0",
- "statuses": "2.0.1",
- "type-is": "~1.6.18",
- "utils-merge": "1.0.1",
- "vary": "~1.1.2"
- }
- },
- "filelist": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz",
- "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==",
- "requires": {
- "minimatch": "^5.0.1"
- },
- "dependencies": {
- "brace-expansion": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
- "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
- "requires": {
- "balanced-match": "^1.0.0"
- }
- },
- "minimatch": {
- "version": "5.1.6",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz",
- "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==",
- "requires": {
- "brace-expansion": "^2.0.1"
- }
- }
- }
- },
- "finalhandler": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz",
- "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==",
- "requires": {
- "debug": "2.6.9",
- "encodeurl": "~1.0.2",
- "escape-html": "~1.0.3",
- "on-finished": "2.4.1",
- "parseurl": "~1.3.3",
- "statuses": "2.0.1",
- "unpipe": "~1.0.0"
- }
- },
- "forwarded": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz",
- "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow=="
- },
- "fresh": {
- "version": "0.5.2",
- "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
- "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q=="
- },
- "function-bind": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
- "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A=="
- },
- "get-intrinsic": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.0.tgz",
- "integrity": "sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==",
- "requires": {
- "function-bind": "^1.1.1",
- "has": "^1.0.3",
- "has-symbols": "^1.0.3"
- }
- },
- "has": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
- "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
- "requires": {
- "function-bind": "^1.1.1"
- }
- },
- "has-flag": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="
- },
- "has-symbols": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz",
- "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A=="
- },
- "http-errors": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz",
- "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==",
- "requires": {
- "depd": "2.0.0",
- "inherits": "2.0.4",
- "setprototypeof": "1.2.0",
- "statuses": "2.0.1",
- "toidentifier": "1.0.1"
- }
- },
- "iconv-lite": {
- "version": "0.4.24",
- "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
- "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
- "requires": {
- "safer-buffer": ">= 2.1.2 < 3"
- }
- },
- "inherits": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
- "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
- },
- "ipaddr.js": {
- "version": "1.9.1",
- "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz",
- "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g=="
- },
- "jake": {
- "version": "10.8.5",
- "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.5.tgz",
- "integrity": "sha512-sVpxYeuAhWt0OTWITwT98oyV0GsXyMlXCF+3L1SuafBVUIr/uILGRB+NqwkzhgXKvoJpDIpQvqkUALgdmQsQxw==",
- "requires": {
- "async": "^3.2.3",
- "chalk": "^4.0.2",
- "filelist": "^1.0.1",
- "minimatch": "^3.0.4"
- }
- },
- "media-typer": {
- "version": "0.3.0",
- "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
- "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ=="
- },
- "merge-descriptors": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz",
- "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w=="
- },
- "methods": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
- "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w=="
- },
- "mime": {
- "version": "1.6.0",
- "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
- "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg=="
- },
- "mime-db": {
- "version": "1.52.0",
- "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
- "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg=="
- },
- "mime-types": {
- "version": "2.1.35",
- "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
- "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
- "requires": {
- "mime-db": "1.52.0"
- }
- },
- "minimatch": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
- "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
- "requires": {
- "brace-expansion": "^1.1.7"
- }
- },
- "ms": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
- "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
- },
- "negotiator": {
- "version": "0.6.3",
- "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz",
- "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg=="
- },
- "object-inspect": {
- "version": "1.12.3",
- "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz",
- "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g=="
- },
- "on-finished": {
- "version": "2.4.1",
- "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz",
- "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==",
- "requires": {
- "ee-first": "1.1.1"
- }
- },
- "parseurl": {
- "version": "1.3.3",
- "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
- "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ=="
- },
- "path-to-regexp": {
- "version": "0.1.7",
- "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
- "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ=="
- },
- "proxy-addr": {
- "version": "2.0.7",
- "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz",
- "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==",
- "requires": {
- "forwarded": "0.2.0",
- "ipaddr.js": "1.9.1"
- }
- },
- "qs": {
- "version": "6.11.0",
- "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz",
- "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==",
- "requires": {
- "side-channel": "^1.0.4"
- }
- },
- "range-parser": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
- "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg=="
- },
- "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==",
- "requires": {
- "bytes": "3.1.2",
- "http-errors": "2.0.0",
- "iconv-lite": "0.4.24",
- "unpipe": "1.0.0"
- }
- },
- "safe-buffer": {
- "version": "5.2.1",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
- "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ=="
- },
- "safer-buffer": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
- "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
- },
- "send": {
- "version": "0.18.0",
- "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz",
- "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==",
- "requires": {
- "debug": "2.6.9",
- "depd": "2.0.0",
- "destroy": "1.2.0",
- "encodeurl": "~1.0.2",
- "escape-html": "~1.0.3",
- "etag": "~1.8.1",
- "fresh": "0.5.2",
- "http-errors": "2.0.0",
- "mime": "1.6.0",
- "ms": "2.1.3",
- "on-finished": "2.4.1",
- "range-parser": "~1.2.1",
- "statuses": "2.0.1"
- },
- "dependencies": {
- "ms": {
- "version": "2.1.3",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
- "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="
- }
- }
- },
- "serve-static": {
- "version": "1.15.0",
- "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz",
- "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==",
- "requires": {
- "encodeurl": "~1.0.2",
- "escape-html": "~1.0.3",
- "parseurl": "~1.3.3",
- "send": "0.18.0"
- }
- },
- "setprototypeof": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz",
- "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw=="
- },
- "side-channel": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz",
- "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==",
- "requires": {
- "call-bind": "^1.0.0",
- "get-intrinsic": "^1.0.2",
- "object-inspect": "^1.9.0"
- }
- },
- "statuses": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz",
- "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ=="
- },
- "supports-color": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
- "requires": {
- "has-flag": "^4.0.0"
- }
- },
- "toidentifier": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz",
- "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA=="
- },
- "type-is": {
- "version": "1.6.18",
- "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz",
- "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==",
- "requires": {
- "media-typer": "0.3.0",
- "mime-types": "~2.1.24"
- }
- },
- "unpipe": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
- "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ=="
- },
- "utils-merge": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
- "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA=="
- },
- "vary": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
- "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg=="
- }
- }
-}
diff --git a/docs/6-exercise/8-database-and-cookie/_samples/cookie/package.json b/docs/6-exercise/8-database-and-cookie/_samples/cookie/package.json
deleted file mode 100644
index 746f0c410..000000000
--- a/docs/6-exercise/8-database-and-cookie/_samples/cookie/package.json
+++ /dev/null
@@ -1,16 +0,0 @@
-{
- "name": "cookie",
- "version": "1.0.0",
- "description": "",
- "main": "index.js",
- "scripts": {
- "test": "echo \"Error: no test specified\" && exit 1"
- },
- "author": "",
- "license": "ISC",
- "dependencies": {
- "cookie-parser": "^1.4.6",
- "ejs": "^3.1.9",
- "express": "^4.18.2"
- }
-}
diff --git a/docs/6-exercise/8-database-and-cookie/_samples/database/path-parameter/.gitignore b/docs/6-exercise/8-database-and-cookie/_samples/database/path-parameter/.gitignore
deleted file mode 100644
index 11ddd8dbe..000000000
--- a/docs/6-exercise/8-database-and-cookie/_samples/database/path-parameter/.gitignore
+++ /dev/null
@@ -1,3 +0,0 @@
-node_modules
-# Keep environment variables out of version control
-.env
diff --git a/docs/6-exercise/8-database-and-cookie/_samples/database/path-parameter/courses.ejs b/docs/6-exercise/8-database-and-cookie/_samples/database/path-parameter/courses.ejs
deleted file mode 100644
index 6780c99c3..000000000
--- a/docs/6-exercise/8-database-and-cookie/_samples/database/path-parameter/courses.ejs
+++ /dev/null
@@ -1,39 +0,0 @@
-
-
-
-
- Document
-
-
-
-
-
- 講義名 |
- テストの有無 |
- 説明 |
-
-
-
- <% for (const course of courses) {%>
-
- <%= course.name %> |
- <%= course.hasTest %> |
- <%= course.description %> |
-
- <% } %>
-
-
-
-
-
diff --git a/docs/6-exercise/8-database-and-cookie/_samples/database/path-parameter/index.ejs b/docs/6-exercise/8-database-and-cookie/_samples/database/path-parameter/index.ejs
deleted file mode 100644
index 3e25e5aba..000000000
--- a/docs/6-exercise/8-database-and-cookie/_samples/database/path-parameter/index.ejs
+++ /dev/null
@@ -1,35 +0,0 @@
-
-
-
-
- Document
-
-
-
-
-
- 講師ID |
- 氏名 |
- |
-
-
-
- <% for (const teacher of teachers) {%>
-
- <%= teacher.id %> |
- <%= teacher.name %> |
-
-
- |
-
- <% } %>
-
-
-
-
-
diff --git a/docs/6-exercise/8-database-and-cookie/_samples/database/path-parameter/main.js b/docs/6-exercise/8-database-and-cookie/_samples/database/path-parameter/main.js
deleted file mode 100644
index 90df51ba3..000000000
--- a/docs/6-exercise/8-database-and-cookie/_samples/database/path-parameter/main.js
+++ /dev/null
@@ -1,54 +0,0 @@
-const fs = require("fs");
-const express = require("express");
-const ejs = require("ejs");
-const { PrismaClient } = require("@prisma/client");
-
-const app = express();
-const client = new PrismaClient();
-
-app.use(express.urlencoded({ extended: true }));
-
-app.get("/", async (request, response) => {
- const teachers = await client.teacher.findMany();
- const template = fs.readFileSync("./index.ejs", { encoding: "utf-8" });
- const html = ejs.render(template, { teachers: teachers });
- response.send(html);
-});
-
-app.get("/:teacherId/courses", async (request, response) => {
- const teacherId = request.params.teacherId;
- const courses = await client.course.findMany({
- where: { teacherId: parseInt(teacherId) },
- });
- const template = fs.readFileSync("./courses.ejs", { encoding: "utf-8" });
- const html = ejs.render(template, { courses: courses, teacherId: teacherId });
- response.send(html);
-});
-
-app.post("/:teacherId/courses/add-course", async (request, response) => {
- const newCourse = request.body.newCourse;
- const teacherId = parseInt(request.params.teacherId);
- const hasTest = request.body.hasTest;
- const description = request.body.description;
- await client.course.create({
- data: {
- name: newCourse,
- hasTest: hasTest,
- description: description,
- teacherId: teacherId,
- },
- });
- response.send("送信しました");
-});
-
-app.post("/add-teacher", async (request, response) => {
- const teacherName = request.body.teacherName;
- await client.teacher.create({
- data: {
- name: teacherName,
- },
- });
- response.send("送信しました");
-});
-
-app.listen(3000);
diff --git a/docs/6-exercise/8-database-and-cookie/_samples/database/path-parameter/package-lock.json b/docs/6-exercise/8-database-and-cookie/_samples/database/path-parameter/package-lock.json
deleted file mode 100644
index d143d1e7b..000000000
--- a/docs/6-exercise/8-database-and-cookie/_samples/database/path-parameter/package-lock.json
+++ /dev/null
@@ -1,1377 +0,0 @@
-{
- "name": "database",
- "version": "1.0.0",
- "lockfileVersion": 2,
- "requires": true,
- "packages": {
- "": {
- "name": "database",
- "version": "1.0.0",
- "license": "ISC",
- "dependencies": {
- "@prisma/client": "^4.11.0",
- "ejs": "^3.1.9",
- "express": "^4.18.2"
- },
- "devDependencies": {
- "prisma": "^4.11.0"
- }
- },
- "node_modules/@prisma/client": {
- "version": "4.11.0",
- "resolved": "https://registry.npmjs.org/@prisma/client/-/client-4.11.0.tgz",
- "integrity": "sha512-0INHYkQIqgAjrt7NzhYpeDQi8x3Nvylc2uDngKyFDDj1tTRQ4uV1HnVmd1sQEraeVAN63SOK0dgCKQHlvjL0KA==",
- "hasInstallScript": true,
- "dependencies": {
- "@prisma/engines-version": "4.11.0-57.8fde8fef4033376662cad983758335009d522acb"
- },
- "engines": {
- "node": ">=14.17"
- },
- "peerDependencies": {
- "prisma": "*"
- },
- "peerDependenciesMeta": {
- "prisma": {
- "optional": true
- }
- }
- },
- "node_modules/@prisma/engines": {
- "version": "4.11.0",
- "resolved": "https://registry.npmjs.org/@prisma/engines/-/engines-4.11.0.tgz",
- "integrity": "sha512-0AEBi2HXGV02cf6ASsBPhfsVIbVSDC9nbQed4iiY5eHttW9ZtMxHThuKZE1pnESbr8HRdgmFSa/Kn4OSNYuibg==",
- "devOptional": true,
- "hasInstallScript": true
- },
- "node_modules/@prisma/engines-version": {
- "version": "4.11.0-57.8fde8fef4033376662cad983758335009d522acb",
- "resolved": "https://registry.npmjs.org/@prisma/engines-version/-/engines-version-4.11.0-57.8fde8fef4033376662cad983758335009d522acb.tgz",
- "integrity": "sha512-3Vd8Qq06d5xD8Ch5WauWcUUrsVPdMC6Ge8ILji8RFfyhUpqon6qSyGM0apvr1O8n8qH8cKkEFqRPsYjuz5r83g=="
- },
- "node_modules/accepts": {
- "version": "1.3.8",
- "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz",
- "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==",
- "dependencies": {
- "mime-types": "~2.1.34",
- "negotiator": "0.6.3"
- },
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/ansi-styles": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
- "dependencies": {
- "color-convert": "^2.0.1"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
- }
- },
- "node_modules/array-flatten": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
- "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg=="
- },
- "node_modules/async": {
- "version": "3.2.4",
- "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz",
- "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ=="
- },
- "node_modules/balanced-match": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
- "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="
- },
- "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==",
- "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/brace-expansion": {
- "version": "1.1.11",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
- "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
- "dependencies": {
- "balanced-match": "^1.0.0",
- "concat-map": "0.0.1"
- }
- },
- "node_modules/bytes": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz",
- "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==",
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/call-bind": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz",
- "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==",
- "dependencies": {
- "function-bind": "^1.1.1",
- "get-intrinsic": "^1.0.2"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/chalk": {
- "version": "4.1.2",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
- "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
- "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/color-convert": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
- "dependencies": {
- "color-name": "~1.1.4"
- },
- "engines": {
- "node": ">=7.0.0"
- }
- },
- "node_modules/color-name": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
- },
- "node_modules/concat-map": {
- "version": "0.0.1",
- "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
- "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg=="
- },
- "node_modules/content-disposition": {
- "version": "0.5.4",
- "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz",
- "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==",
- "dependencies": {
- "safe-buffer": "5.2.1"
- },
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/content-type": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz",
- "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==",
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/cookie": {
- "version": "0.5.0",
- "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz",
- "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==",
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/cookie-signature": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
- "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ=="
- },
- "node_modules/debug": {
- "version": "2.6.9",
- "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
- "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
- "dependencies": {
- "ms": "2.0.0"
- }
- },
- "node_modules/depd": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
- "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==",
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/destroy": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz",
- "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==",
- "engines": {
- "node": ">= 0.8",
- "npm": "1.2.8000 || >= 1.4.16"
- }
- },
- "node_modules/ee-first": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
- "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow=="
- },
- "node_modules/ejs": {
- "version": "3.1.9",
- "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.9.tgz",
- "integrity": "sha512-rC+QVNMJWv+MtPgkt0y+0rVEIdbtxVADApW9JXrUVlzHetgcyczP/E7DJmWJ4fJCZF2cPcBk0laWO9ZHMG3DmQ==",
- "dependencies": {
- "jake": "^10.8.5"
- },
- "bin": {
- "ejs": "bin/cli.js"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/encodeurl": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
- "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==",
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/escape-html": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
- "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow=="
- },
- "node_modules/etag": {
- "version": "1.8.1",
- "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
- "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==",
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/express": {
- "version": "4.18.2",
- "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz",
- "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==",
- "dependencies": {
- "accepts": "~1.3.8",
- "array-flatten": "1.1.1",
- "body-parser": "1.20.1",
- "content-disposition": "0.5.4",
- "content-type": "~1.0.4",
- "cookie": "0.5.0",
- "cookie-signature": "1.0.6",
- "debug": "2.6.9",
- "depd": "2.0.0",
- "encodeurl": "~1.0.2",
- "escape-html": "~1.0.3",
- "etag": "~1.8.1",
- "finalhandler": "1.2.0",
- "fresh": "0.5.2",
- "http-errors": "2.0.0",
- "merge-descriptors": "1.0.1",
- "methods": "~1.1.2",
- "on-finished": "2.4.1",
- "parseurl": "~1.3.3",
- "path-to-regexp": "0.1.7",
- "proxy-addr": "~2.0.7",
- "qs": "6.11.0",
- "range-parser": "~1.2.1",
- "safe-buffer": "5.2.1",
- "send": "0.18.0",
- "serve-static": "1.15.0",
- "setprototypeof": "1.2.0",
- "statuses": "2.0.1",
- "type-is": "~1.6.18",
- "utils-merge": "1.0.1",
- "vary": "~1.1.2"
- },
- "engines": {
- "node": ">= 0.10.0"
- }
- },
- "node_modules/filelist": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz",
- "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==",
- "dependencies": {
- "minimatch": "^5.0.1"
- }
- },
- "node_modules/filelist/node_modules/brace-expansion": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
- "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
- "dependencies": {
- "balanced-match": "^1.0.0"
- }
- },
- "node_modules/filelist/node_modules/minimatch": {
- "version": "5.1.6",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz",
- "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==",
- "dependencies": {
- "brace-expansion": "^2.0.1"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/finalhandler": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz",
- "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==",
- "dependencies": {
- "debug": "2.6.9",
- "encodeurl": "~1.0.2",
- "escape-html": "~1.0.3",
- "on-finished": "2.4.1",
- "parseurl": "~1.3.3",
- "statuses": "2.0.1",
- "unpipe": "~1.0.0"
- },
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/forwarded": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz",
- "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==",
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/fresh": {
- "version": "0.5.2",
- "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
- "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==",
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/function-bind": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
- "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A=="
- },
- "node_modules/get-intrinsic": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.0.tgz",
- "integrity": "sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==",
- "dependencies": {
- "function-bind": "^1.1.1",
- "has": "^1.0.3",
- "has-symbols": "^1.0.3"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/has": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
- "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
- "dependencies": {
- "function-bind": "^1.1.1"
- },
- "engines": {
- "node": ">= 0.4.0"
- }
- },
- "node_modules/has-flag": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/has-symbols": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz",
- "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==",
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/http-errors": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz",
- "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==",
- "dependencies": {
- "depd": "2.0.0",
- "inherits": "2.0.4",
- "setprototypeof": "1.2.0",
- "statuses": "2.0.1",
- "toidentifier": "1.0.1"
- },
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/iconv-lite": {
- "version": "0.4.24",
- "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
- "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
- "dependencies": {
- "safer-buffer": ">= 2.1.2 < 3"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/inherits": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
- "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
- },
- "node_modules/ipaddr.js": {
- "version": "1.9.1",
- "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz",
- "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==",
- "engines": {
- "node": ">= 0.10"
- }
- },
- "node_modules/jake": {
- "version": "10.8.5",
- "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.5.tgz",
- "integrity": "sha512-sVpxYeuAhWt0OTWITwT98oyV0GsXyMlXCF+3L1SuafBVUIr/uILGRB+NqwkzhgXKvoJpDIpQvqkUALgdmQsQxw==",
- "dependencies": {
- "async": "^3.2.3",
- "chalk": "^4.0.2",
- "filelist": "^1.0.1",
- "minimatch": "^3.0.4"
- },
- "bin": {
- "jake": "bin/cli.js"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/media-typer": {
- "version": "0.3.0",
- "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
- "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==",
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/merge-descriptors": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz",
- "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w=="
- },
- "node_modules/methods": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
- "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==",
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/mime": {
- "version": "1.6.0",
- "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
- "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==",
- "bin": {
- "mime": "cli.js"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/mime-db": {
- "version": "1.52.0",
- "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
- "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/mime-types": {
- "version": "2.1.35",
- "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
- "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
- "dependencies": {
- "mime-db": "1.52.0"
- },
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/minimatch": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
- "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
- "dependencies": {
- "brace-expansion": "^1.1.7"
- },
- "engines": {
- "node": "*"
- }
- },
- "node_modules/ms": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
- "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
- },
- "node_modules/negotiator": {
- "version": "0.6.3",
- "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz",
- "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==",
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/object-inspect": {
- "version": "1.12.3",
- "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz",
- "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==",
- "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",
- "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==",
- "dependencies": {
- "ee-first": "1.1.1"
- },
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/parseurl": {
- "version": "1.3.3",
- "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
- "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==",
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/path-to-regexp": {
- "version": "0.1.7",
- "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
- "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ=="
- },
- "node_modules/prisma": {
- "version": "4.11.0",
- "resolved": "https://registry.npmjs.org/prisma/-/prisma-4.11.0.tgz",
- "integrity": "sha512-4zZmBXssPUEiX+GeL0MUq/Yyie4ltiKmGu7jCJFnYMamNrrulTBc+D+QwAQSJ01tyzeGHlD13kOnqPwRipnlNw==",
- "devOptional": true,
- "hasInstallScript": true,
- "dependencies": {
- "@prisma/engines": "4.11.0"
- },
- "bin": {
- "prisma": "build/index.js",
- "prisma2": "build/index.js"
- },
- "engines": {
- "node": ">=14.17"
- }
- },
- "node_modules/proxy-addr": {
- "version": "2.0.7",
- "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz",
- "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==",
- "dependencies": {
- "forwarded": "0.2.0",
- "ipaddr.js": "1.9.1"
- },
- "engines": {
- "node": ">= 0.10"
- }
- },
- "node_modules/qs": {
- "version": "6.11.0",
- "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz",
- "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==",
- "dependencies": {
- "side-channel": "^1.0.4"
- },
- "engines": {
- "node": ">=0.6"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/range-parser": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
- "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==",
- "engines": {
- "node": ">= 0.6"
- }
- },
- "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==",
- "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/safe-buffer": {
- "version": "5.2.1",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
- "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/feross"
- },
- {
- "type": "patreon",
- "url": "https://www.patreon.com/feross"
- },
- {
- "type": "consulting",
- "url": "https://feross.org/support"
- }
- ]
- },
- "node_modules/safer-buffer": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
- "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
- },
- "node_modules/send": {
- "version": "0.18.0",
- "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz",
- "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==",
- "dependencies": {
- "debug": "2.6.9",
- "depd": "2.0.0",
- "destroy": "1.2.0",
- "encodeurl": "~1.0.2",
- "escape-html": "~1.0.3",
- "etag": "~1.8.1",
- "fresh": "0.5.2",
- "http-errors": "2.0.0",
- "mime": "1.6.0",
- "ms": "2.1.3",
- "on-finished": "2.4.1",
- "range-parser": "~1.2.1",
- "statuses": "2.0.1"
- },
- "engines": {
- "node": ">= 0.8.0"
- }
- },
- "node_modules/send/node_modules/ms": {
- "version": "2.1.3",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
- "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="
- },
- "node_modules/serve-static": {
- "version": "1.15.0",
- "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz",
- "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==",
- "dependencies": {
- "encodeurl": "~1.0.2",
- "escape-html": "~1.0.3",
- "parseurl": "~1.3.3",
- "send": "0.18.0"
- },
- "engines": {
- "node": ">= 0.8.0"
- }
- },
- "node_modules/setprototypeof": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz",
- "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw=="
- },
- "node_modules/side-channel": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz",
- "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==",
- "dependencies": {
- "call-bind": "^1.0.0",
- "get-intrinsic": "^1.0.2",
- "object-inspect": "^1.9.0"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/statuses": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz",
- "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==",
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/supports-color": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
- "dependencies": {
- "has-flag": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/toidentifier": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz",
- "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==",
- "engines": {
- "node": ">=0.6"
- }
- },
- "node_modules/type-is": {
- "version": "1.6.18",
- "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz",
- "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==",
- "dependencies": {
- "media-typer": "0.3.0",
- "mime-types": "~2.1.24"
- },
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/unpipe": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
- "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==",
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/utils-merge": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
- "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==",
- "engines": {
- "node": ">= 0.4.0"
- }
- },
- "node_modules/vary": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
- "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==",
- "engines": {
- "node": ">= 0.8"
- }
- }
- },
- "dependencies": {
- "@prisma/client": {
- "version": "4.11.0",
- "resolved": "https://registry.npmjs.org/@prisma/client/-/client-4.11.0.tgz",
- "integrity": "sha512-0INHYkQIqgAjrt7NzhYpeDQi8x3Nvylc2uDngKyFDDj1tTRQ4uV1HnVmd1sQEraeVAN63SOK0dgCKQHlvjL0KA==",
- "requires": {
- "@prisma/engines-version": "4.11.0-57.8fde8fef4033376662cad983758335009d522acb"
- }
- },
- "@prisma/engines": {
- "version": "4.11.0",
- "resolved": "https://registry.npmjs.org/@prisma/engines/-/engines-4.11.0.tgz",
- "integrity": "sha512-0AEBi2HXGV02cf6ASsBPhfsVIbVSDC9nbQed4iiY5eHttW9ZtMxHThuKZE1pnESbr8HRdgmFSa/Kn4OSNYuibg==",
- "devOptional": true
- },
- "@prisma/engines-version": {
- "version": "4.11.0-57.8fde8fef4033376662cad983758335009d522acb",
- "resolved": "https://registry.npmjs.org/@prisma/engines-version/-/engines-version-4.11.0-57.8fde8fef4033376662cad983758335009d522acb.tgz",
- "integrity": "sha512-3Vd8Qq06d5xD8Ch5WauWcUUrsVPdMC6Ge8ILji8RFfyhUpqon6qSyGM0apvr1O8n8qH8cKkEFqRPsYjuz5r83g=="
- },
- "accepts": {
- "version": "1.3.8",
- "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz",
- "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==",
- "requires": {
- "mime-types": "~2.1.34",
- "negotiator": "0.6.3"
- }
- },
- "ansi-styles": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
- "requires": {
- "color-convert": "^2.0.1"
- }
- },
- "array-flatten": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
- "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg=="
- },
- "async": {
- "version": "3.2.4",
- "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz",
- "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ=="
- },
- "balanced-match": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
- "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="
- },
- "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==",
- "requires": {
- "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"
- }
- },
- "brace-expansion": {
- "version": "1.1.11",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
- "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
- "requires": {
- "balanced-match": "^1.0.0",
- "concat-map": "0.0.1"
- }
- },
- "bytes": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz",
- "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg=="
- },
- "call-bind": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz",
- "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==",
- "requires": {
- "function-bind": "^1.1.1",
- "get-intrinsic": "^1.0.2"
- }
- },
- "chalk": {
- "version": "4.1.2",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
- "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
- "requires": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- }
- },
- "color-convert": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
- "requires": {
- "color-name": "~1.1.4"
- }
- },
- "color-name": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
- },
- "concat-map": {
- "version": "0.0.1",
- "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
- "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg=="
- },
- "content-disposition": {
- "version": "0.5.4",
- "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz",
- "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==",
- "requires": {
- "safe-buffer": "5.2.1"
- }
- },
- "content-type": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz",
- "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA=="
- },
- "cookie": {
- "version": "0.5.0",
- "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz",
- "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw=="
- },
- "cookie-signature": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
- "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ=="
- },
- "debug": {
- "version": "2.6.9",
- "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
- "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
- "requires": {
- "ms": "2.0.0"
- }
- },
- "depd": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
- "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw=="
- },
- "destroy": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz",
- "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg=="
- },
- "ee-first": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
- "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow=="
- },
- "ejs": {
- "version": "3.1.9",
- "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.9.tgz",
- "integrity": "sha512-rC+QVNMJWv+MtPgkt0y+0rVEIdbtxVADApW9JXrUVlzHetgcyczP/E7DJmWJ4fJCZF2cPcBk0laWO9ZHMG3DmQ==",
- "requires": {
- "jake": "^10.8.5"
- }
- },
- "encodeurl": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
- "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w=="
- },
- "escape-html": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
- "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow=="
- },
- "etag": {
- "version": "1.8.1",
- "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
- "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg=="
- },
- "express": {
- "version": "4.18.2",
- "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz",
- "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==",
- "requires": {
- "accepts": "~1.3.8",
- "array-flatten": "1.1.1",
- "body-parser": "1.20.1",
- "content-disposition": "0.5.4",
- "content-type": "~1.0.4",
- "cookie": "0.5.0",
- "cookie-signature": "1.0.6",
- "debug": "2.6.9",
- "depd": "2.0.0",
- "encodeurl": "~1.0.2",
- "escape-html": "~1.0.3",
- "etag": "~1.8.1",
- "finalhandler": "1.2.0",
- "fresh": "0.5.2",
- "http-errors": "2.0.0",
- "merge-descriptors": "1.0.1",
- "methods": "~1.1.2",
- "on-finished": "2.4.1",
- "parseurl": "~1.3.3",
- "path-to-regexp": "0.1.7",
- "proxy-addr": "~2.0.7",
- "qs": "6.11.0",
- "range-parser": "~1.2.1",
- "safe-buffer": "5.2.1",
- "send": "0.18.0",
- "serve-static": "1.15.0",
- "setprototypeof": "1.2.0",
- "statuses": "2.0.1",
- "type-is": "~1.6.18",
- "utils-merge": "1.0.1",
- "vary": "~1.1.2"
- }
- },
- "filelist": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz",
- "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==",
- "requires": {
- "minimatch": "^5.0.1"
- },
- "dependencies": {
- "brace-expansion": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
- "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
- "requires": {
- "balanced-match": "^1.0.0"
- }
- },
- "minimatch": {
- "version": "5.1.6",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz",
- "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==",
- "requires": {
- "brace-expansion": "^2.0.1"
- }
- }
- }
- },
- "finalhandler": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz",
- "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==",
- "requires": {
- "debug": "2.6.9",
- "encodeurl": "~1.0.2",
- "escape-html": "~1.0.3",
- "on-finished": "2.4.1",
- "parseurl": "~1.3.3",
- "statuses": "2.0.1",
- "unpipe": "~1.0.0"
- }
- },
- "forwarded": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz",
- "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow=="
- },
- "fresh": {
- "version": "0.5.2",
- "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
- "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q=="
- },
- "function-bind": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
- "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A=="
- },
- "get-intrinsic": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.0.tgz",
- "integrity": "sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==",
- "requires": {
- "function-bind": "^1.1.1",
- "has": "^1.0.3",
- "has-symbols": "^1.0.3"
- }
- },
- "has": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
- "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
- "requires": {
- "function-bind": "^1.1.1"
- }
- },
- "has-flag": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="
- },
- "has-symbols": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz",
- "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A=="
- },
- "http-errors": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz",
- "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==",
- "requires": {
- "depd": "2.0.0",
- "inherits": "2.0.4",
- "setprototypeof": "1.2.0",
- "statuses": "2.0.1",
- "toidentifier": "1.0.1"
- }
- },
- "iconv-lite": {
- "version": "0.4.24",
- "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
- "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
- "requires": {
- "safer-buffer": ">= 2.1.2 < 3"
- }
- },
- "inherits": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
- "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
- },
- "ipaddr.js": {
- "version": "1.9.1",
- "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz",
- "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g=="
- },
- "jake": {
- "version": "10.8.5",
- "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.5.tgz",
- "integrity": "sha512-sVpxYeuAhWt0OTWITwT98oyV0GsXyMlXCF+3L1SuafBVUIr/uILGRB+NqwkzhgXKvoJpDIpQvqkUALgdmQsQxw==",
- "requires": {
- "async": "^3.2.3",
- "chalk": "^4.0.2",
- "filelist": "^1.0.1",
- "minimatch": "^3.0.4"
- }
- },
- "media-typer": {
- "version": "0.3.0",
- "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
- "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ=="
- },
- "merge-descriptors": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz",
- "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w=="
- },
- "methods": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
- "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w=="
- },
- "mime": {
- "version": "1.6.0",
- "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
- "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg=="
- },
- "mime-db": {
- "version": "1.52.0",
- "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
- "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg=="
- },
- "mime-types": {
- "version": "2.1.35",
- "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
- "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
- "requires": {
- "mime-db": "1.52.0"
- }
- },
- "minimatch": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
- "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
- "requires": {
- "brace-expansion": "^1.1.7"
- }
- },
- "ms": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
- "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
- },
- "negotiator": {
- "version": "0.6.3",
- "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz",
- "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg=="
- },
- "object-inspect": {
- "version": "1.12.3",
- "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz",
- "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g=="
- },
- "on-finished": {
- "version": "2.4.1",
- "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz",
- "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==",
- "requires": {
- "ee-first": "1.1.1"
- }
- },
- "parseurl": {
- "version": "1.3.3",
- "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
- "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ=="
- },
- "path-to-regexp": {
- "version": "0.1.7",
- "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
- "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ=="
- },
- "prisma": {
- "version": "4.11.0",
- "resolved": "https://registry.npmjs.org/prisma/-/prisma-4.11.0.tgz",
- "integrity": "sha512-4zZmBXssPUEiX+GeL0MUq/Yyie4ltiKmGu7jCJFnYMamNrrulTBc+D+QwAQSJ01tyzeGHlD13kOnqPwRipnlNw==",
- "devOptional": true,
- "requires": {
- "@prisma/engines": "4.11.0"
- }
- },
- "proxy-addr": {
- "version": "2.0.7",
- "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz",
- "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==",
- "requires": {
- "forwarded": "0.2.0",
- "ipaddr.js": "1.9.1"
- }
- },
- "qs": {
- "version": "6.11.0",
- "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz",
- "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==",
- "requires": {
- "side-channel": "^1.0.4"
- }
- },
- "range-parser": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
- "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg=="
- },
- "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==",
- "requires": {
- "bytes": "3.1.2",
- "http-errors": "2.0.0",
- "iconv-lite": "0.4.24",
- "unpipe": "1.0.0"
- }
- },
- "safe-buffer": {
- "version": "5.2.1",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
- "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ=="
- },
- "safer-buffer": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
- "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
- },
- "send": {
- "version": "0.18.0",
- "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz",
- "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==",
- "requires": {
- "debug": "2.6.9",
- "depd": "2.0.0",
- "destroy": "1.2.0",
- "encodeurl": "~1.0.2",
- "escape-html": "~1.0.3",
- "etag": "~1.8.1",
- "fresh": "0.5.2",
- "http-errors": "2.0.0",
- "mime": "1.6.0",
- "ms": "2.1.3",
- "on-finished": "2.4.1",
- "range-parser": "~1.2.1",
- "statuses": "2.0.1"
- },
- "dependencies": {
- "ms": {
- "version": "2.1.3",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
- "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="
- }
- }
- },
- "serve-static": {
- "version": "1.15.0",
- "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz",
- "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==",
- "requires": {
- "encodeurl": "~1.0.2",
- "escape-html": "~1.0.3",
- "parseurl": "~1.3.3",
- "send": "0.18.0"
- }
- },
- "setprototypeof": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz",
- "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw=="
- },
- "side-channel": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz",
- "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==",
- "requires": {
- "call-bind": "^1.0.0",
- "get-intrinsic": "^1.0.2",
- "object-inspect": "^1.9.0"
- }
- },
- "statuses": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz",
- "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ=="
- },
- "supports-color": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
- "requires": {
- "has-flag": "^4.0.0"
- }
- },
- "toidentifier": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz",
- "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA=="
- },
- "type-is": {
- "version": "1.6.18",
- "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz",
- "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==",
- "requires": {
- "media-typer": "0.3.0",
- "mime-types": "~2.1.24"
- }
- },
- "unpipe": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
- "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ=="
- },
- "utils-merge": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
- "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA=="
- },
- "vary": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
- "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg=="
- }
- }
-}
diff --git a/docs/6-exercise/8-database-and-cookie/_samples/database/path-parameter/package.json b/docs/6-exercise/8-database-and-cookie/_samples/database/path-parameter/package.json
deleted file mode 100644
index 89fe65066..000000000
--- a/docs/6-exercise/8-database-and-cookie/_samples/database/path-parameter/package.json
+++ /dev/null
@@ -1,19 +0,0 @@
-{
- "name": "database",
- "version": "1.0.0",
- "description": "",
- "main": "index.js",
- "scripts": {
- "test": "echo \"Error: no test specified\" && exit 1"
- },
- "author": "",
- "license": "ISC",
- "devDependencies": {
- "prisma": "^4.11.0"
- },
- "dependencies": {
- "@prisma/client": "^4.11.0",
- "ejs": "^3.1.9",
- "express": "^4.18.2"
- }
-}
diff --git a/docs/6-exercise/8-database-and-cookie/_samples/database/path-parameter/prisma/schema.prisma b/docs/6-exercise/8-database-and-cookie/_samples/database/path-parameter/prisma/schema.prisma
deleted file mode 100644
index 8862b4412..000000000
--- a/docs/6-exercise/8-database-and-cookie/_samples/database/path-parameter/prisma/schema.prisma
+++ /dev/null
@@ -1,26 +0,0 @@
-// This is your Prisma schema file,
-// learn more about it in the docs: https://pris.ly/d/prisma-schema
-
-generator client {
- provider = "prisma-client-js"
-}
-
-datasource db {
- provider = "postgresql"
- url = env("DATABASE_URL")
-}
-
-model Teacher {
- id Int @id @unique @default(autoincrement())
- name String
- Courses Course[]
-}
-
-model Course {
- id Int @id @default(autoincrement())
- name String
- description String
- hasTest String
- teacher Teacher @relation(fields: [teacherId], references: [id])
- teacherId Int
-}
diff --git a/docs/6-exercise/8-database-and-cookie/_samples/database/query-parameter/.gitignore b/docs/6-exercise/8-database-and-cookie/_samples/database/query-parameter/.gitignore
deleted file mode 100644
index 11ddd8dbe..000000000
--- a/docs/6-exercise/8-database-and-cookie/_samples/database/query-parameter/.gitignore
+++ /dev/null
@@ -1,3 +0,0 @@
-node_modules
-# Keep environment variables out of version control
-.env
diff --git a/docs/6-exercise/8-database-and-cookie/_samples/database/query-parameter/courses.ejs b/docs/6-exercise/8-database-and-cookie/_samples/database/query-parameter/courses.ejs
deleted file mode 100644
index efb047679..000000000
--- a/docs/6-exercise/8-database-and-cookie/_samples/database/query-parameter/courses.ejs
+++ /dev/null
@@ -1,41 +0,0 @@
-
-
-
-
- Document
-
-
-
-
-
- 講義名 |
- テストの有無 |
- 説明 |
-
-
-
- <% for (const course of courses) {%>
-
- <%= course.name %> |
- <%= course.hasTest %> |
- <%= course.description %> |
-
- <% } %>
-
-
-
-
-
diff --git a/docs/6-exercise/8-database-and-cookie/_samples/database/query-parameter/index.ejs b/docs/6-exercise/8-database-and-cookie/_samples/database/query-parameter/index.ejs
deleted file mode 100644
index 945355145..000000000
--- a/docs/6-exercise/8-database-and-cookie/_samples/database/query-parameter/index.ejs
+++ /dev/null
@@ -1,42 +0,0 @@
-
-
-
-
- Document
-
-
-
-
-
- 講師ID |
- 氏名 |
- |
-
-
-
- <% for (const teacher of teachers) {%>
-
- <%= teacher.id %> |
- <%= teacher.name %> |
-
-
- |
-
- <% } %>
-
-
-
-
-
diff --git a/docs/6-exercise/8-database-and-cookie/_samples/database/query-parameter/main.js b/docs/6-exercise/8-database-and-cookie/_samples/database/query-parameter/main.js
deleted file mode 100644
index 10277d238..000000000
--- a/docs/6-exercise/8-database-and-cookie/_samples/database/query-parameter/main.js
+++ /dev/null
@@ -1,54 +0,0 @@
-const fs = require("fs");
-const express = require("express");
-const ejs = require("ejs");
-const { PrismaClient } = require("@prisma/client");
-
-const app = express();
-const client = new PrismaClient();
-
-app.use(express.urlencoded({ extended: true }));
-
-app.get("/", async (request, response) => {
- const teachers = await client.teacher.findMany();
- const template = fs.readFileSync("./index.ejs", { encoding: "utf-8" });
- const html = ejs.render(template, { teachers: teachers });
- response.send(html);
-});
-
-app.get("/courses", async (request, response) => {
- const teacherId = request.query.teacherId;
- const courses = await client.course.findMany({
- where: { teacherId: parseInt(teacherId) },
- });
- const template = fs.readFileSync("./courses.ejs", { encoding: "utf-8" });
- const html = ejs.render(template, { courses: courses, teacherId: teacherId });
- response.send(html);
-});
-
-app.post("/add-course", async (request, response) => {
- const newCourse = request.body.newCourse;
- const teacherId = parseInt(request.body.teacherId);
- const hasTest = request.body.hasTest;
- const description = request.body.description;
- await client.course.create({
- data: {
- name: newCourse,
- hasTest: hasTest,
- description: description,
- teacherId: teacherId,
- },
- });
- response.send("送信しました");
-});
-
-app.post("/add-teacher", async (request, response) => {
- const teacherName = request.body.teacherName;
- await client.teacher.create({
- data: {
- name: teacherName,
- },
- });
- response.send("送信しました");
-});
-
-app.listen(3000);
diff --git a/docs/6-exercise/8-database-and-cookie/_samples/database/query-parameter/package-lock.json b/docs/6-exercise/8-database-and-cookie/_samples/database/query-parameter/package-lock.json
deleted file mode 100644
index d143d1e7b..000000000
--- a/docs/6-exercise/8-database-and-cookie/_samples/database/query-parameter/package-lock.json
+++ /dev/null
@@ -1,1377 +0,0 @@
-{
- "name": "database",
- "version": "1.0.0",
- "lockfileVersion": 2,
- "requires": true,
- "packages": {
- "": {
- "name": "database",
- "version": "1.0.0",
- "license": "ISC",
- "dependencies": {
- "@prisma/client": "^4.11.0",
- "ejs": "^3.1.9",
- "express": "^4.18.2"
- },
- "devDependencies": {
- "prisma": "^4.11.0"
- }
- },
- "node_modules/@prisma/client": {
- "version": "4.11.0",
- "resolved": "https://registry.npmjs.org/@prisma/client/-/client-4.11.0.tgz",
- "integrity": "sha512-0INHYkQIqgAjrt7NzhYpeDQi8x3Nvylc2uDngKyFDDj1tTRQ4uV1HnVmd1sQEraeVAN63SOK0dgCKQHlvjL0KA==",
- "hasInstallScript": true,
- "dependencies": {
- "@prisma/engines-version": "4.11.0-57.8fde8fef4033376662cad983758335009d522acb"
- },
- "engines": {
- "node": ">=14.17"
- },
- "peerDependencies": {
- "prisma": "*"
- },
- "peerDependenciesMeta": {
- "prisma": {
- "optional": true
- }
- }
- },
- "node_modules/@prisma/engines": {
- "version": "4.11.0",
- "resolved": "https://registry.npmjs.org/@prisma/engines/-/engines-4.11.0.tgz",
- "integrity": "sha512-0AEBi2HXGV02cf6ASsBPhfsVIbVSDC9nbQed4iiY5eHttW9ZtMxHThuKZE1pnESbr8HRdgmFSa/Kn4OSNYuibg==",
- "devOptional": true,
- "hasInstallScript": true
- },
- "node_modules/@prisma/engines-version": {
- "version": "4.11.0-57.8fde8fef4033376662cad983758335009d522acb",
- "resolved": "https://registry.npmjs.org/@prisma/engines-version/-/engines-version-4.11.0-57.8fde8fef4033376662cad983758335009d522acb.tgz",
- "integrity": "sha512-3Vd8Qq06d5xD8Ch5WauWcUUrsVPdMC6Ge8ILji8RFfyhUpqon6qSyGM0apvr1O8n8qH8cKkEFqRPsYjuz5r83g=="
- },
- "node_modules/accepts": {
- "version": "1.3.8",
- "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz",
- "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==",
- "dependencies": {
- "mime-types": "~2.1.34",
- "negotiator": "0.6.3"
- },
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/ansi-styles": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
- "dependencies": {
- "color-convert": "^2.0.1"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
- }
- },
- "node_modules/array-flatten": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
- "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg=="
- },
- "node_modules/async": {
- "version": "3.2.4",
- "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz",
- "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ=="
- },
- "node_modules/balanced-match": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
- "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="
- },
- "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==",
- "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/brace-expansion": {
- "version": "1.1.11",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
- "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
- "dependencies": {
- "balanced-match": "^1.0.0",
- "concat-map": "0.0.1"
- }
- },
- "node_modules/bytes": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz",
- "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==",
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/call-bind": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz",
- "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==",
- "dependencies": {
- "function-bind": "^1.1.1",
- "get-intrinsic": "^1.0.2"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/chalk": {
- "version": "4.1.2",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
- "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
- "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/color-convert": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
- "dependencies": {
- "color-name": "~1.1.4"
- },
- "engines": {
- "node": ">=7.0.0"
- }
- },
- "node_modules/color-name": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
- },
- "node_modules/concat-map": {
- "version": "0.0.1",
- "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
- "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg=="
- },
- "node_modules/content-disposition": {
- "version": "0.5.4",
- "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz",
- "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==",
- "dependencies": {
- "safe-buffer": "5.2.1"
- },
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/content-type": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz",
- "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==",
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/cookie": {
- "version": "0.5.0",
- "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz",
- "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==",
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/cookie-signature": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
- "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ=="
- },
- "node_modules/debug": {
- "version": "2.6.9",
- "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
- "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
- "dependencies": {
- "ms": "2.0.0"
- }
- },
- "node_modules/depd": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
- "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==",
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/destroy": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz",
- "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==",
- "engines": {
- "node": ">= 0.8",
- "npm": "1.2.8000 || >= 1.4.16"
- }
- },
- "node_modules/ee-first": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
- "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow=="
- },
- "node_modules/ejs": {
- "version": "3.1.9",
- "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.9.tgz",
- "integrity": "sha512-rC+QVNMJWv+MtPgkt0y+0rVEIdbtxVADApW9JXrUVlzHetgcyczP/E7DJmWJ4fJCZF2cPcBk0laWO9ZHMG3DmQ==",
- "dependencies": {
- "jake": "^10.8.5"
- },
- "bin": {
- "ejs": "bin/cli.js"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/encodeurl": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
- "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==",
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/escape-html": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
- "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow=="
- },
- "node_modules/etag": {
- "version": "1.8.1",
- "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
- "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==",
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/express": {
- "version": "4.18.2",
- "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz",
- "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==",
- "dependencies": {
- "accepts": "~1.3.8",
- "array-flatten": "1.1.1",
- "body-parser": "1.20.1",
- "content-disposition": "0.5.4",
- "content-type": "~1.0.4",
- "cookie": "0.5.0",
- "cookie-signature": "1.0.6",
- "debug": "2.6.9",
- "depd": "2.0.0",
- "encodeurl": "~1.0.2",
- "escape-html": "~1.0.3",
- "etag": "~1.8.1",
- "finalhandler": "1.2.0",
- "fresh": "0.5.2",
- "http-errors": "2.0.0",
- "merge-descriptors": "1.0.1",
- "methods": "~1.1.2",
- "on-finished": "2.4.1",
- "parseurl": "~1.3.3",
- "path-to-regexp": "0.1.7",
- "proxy-addr": "~2.0.7",
- "qs": "6.11.0",
- "range-parser": "~1.2.1",
- "safe-buffer": "5.2.1",
- "send": "0.18.0",
- "serve-static": "1.15.0",
- "setprototypeof": "1.2.0",
- "statuses": "2.0.1",
- "type-is": "~1.6.18",
- "utils-merge": "1.0.1",
- "vary": "~1.1.2"
- },
- "engines": {
- "node": ">= 0.10.0"
- }
- },
- "node_modules/filelist": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz",
- "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==",
- "dependencies": {
- "minimatch": "^5.0.1"
- }
- },
- "node_modules/filelist/node_modules/brace-expansion": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
- "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
- "dependencies": {
- "balanced-match": "^1.0.0"
- }
- },
- "node_modules/filelist/node_modules/minimatch": {
- "version": "5.1.6",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz",
- "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==",
- "dependencies": {
- "brace-expansion": "^2.0.1"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/finalhandler": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz",
- "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==",
- "dependencies": {
- "debug": "2.6.9",
- "encodeurl": "~1.0.2",
- "escape-html": "~1.0.3",
- "on-finished": "2.4.1",
- "parseurl": "~1.3.3",
- "statuses": "2.0.1",
- "unpipe": "~1.0.0"
- },
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/forwarded": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz",
- "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==",
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/fresh": {
- "version": "0.5.2",
- "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
- "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==",
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/function-bind": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
- "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A=="
- },
- "node_modules/get-intrinsic": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.0.tgz",
- "integrity": "sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==",
- "dependencies": {
- "function-bind": "^1.1.1",
- "has": "^1.0.3",
- "has-symbols": "^1.0.3"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/has": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
- "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
- "dependencies": {
- "function-bind": "^1.1.1"
- },
- "engines": {
- "node": ">= 0.4.0"
- }
- },
- "node_modules/has-flag": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/has-symbols": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz",
- "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==",
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/http-errors": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz",
- "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==",
- "dependencies": {
- "depd": "2.0.0",
- "inherits": "2.0.4",
- "setprototypeof": "1.2.0",
- "statuses": "2.0.1",
- "toidentifier": "1.0.1"
- },
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/iconv-lite": {
- "version": "0.4.24",
- "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
- "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
- "dependencies": {
- "safer-buffer": ">= 2.1.2 < 3"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/inherits": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
- "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
- },
- "node_modules/ipaddr.js": {
- "version": "1.9.1",
- "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz",
- "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==",
- "engines": {
- "node": ">= 0.10"
- }
- },
- "node_modules/jake": {
- "version": "10.8.5",
- "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.5.tgz",
- "integrity": "sha512-sVpxYeuAhWt0OTWITwT98oyV0GsXyMlXCF+3L1SuafBVUIr/uILGRB+NqwkzhgXKvoJpDIpQvqkUALgdmQsQxw==",
- "dependencies": {
- "async": "^3.2.3",
- "chalk": "^4.0.2",
- "filelist": "^1.0.1",
- "minimatch": "^3.0.4"
- },
- "bin": {
- "jake": "bin/cli.js"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/media-typer": {
- "version": "0.3.0",
- "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
- "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==",
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/merge-descriptors": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz",
- "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w=="
- },
- "node_modules/methods": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
- "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==",
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/mime": {
- "version": "1.6.0",
- "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
- "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==",
- "bin": {
- "mime": "cli.js"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/mime-db": {
- "version": "1.52.0",
- "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
- "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/mime-types": {
- "version": "2.1.35",
- "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
- "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
- "dependencies": {
- "mime-db": "1.52.0"
- },
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/minimatch": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
- "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
- "dependencies": {
- "brace-expansion": "^1.1.7"
- },
- "engines": {
- "node": "*"
- }
- },
- "node_modules/ms": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
- "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
- },
- "node_modules/negotiator": {
- "version": "0.6.3",
- "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz",
- "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==",
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/object-inspect": {
- "version": "1.12.3",
- "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz",
- "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==",
- "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",
- "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==",
- "dependencies": {
- "ee-first": "1.1.1"
- },
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/parseurl": {
- "version": "1.3.3",
- "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
- "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==",
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/path-to-regexp": {
- "version": "0.1.7",
- "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
- "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ=="
- },
- "node_modules/prisma": {
- "version": "4.11.0",
- "resolved": "https://registry.npmjs.org/prisma/-/prisma-4.11.0.tgz",
- "integrity": "sha512-4zZmBXssPUEiX+GeL0MUq/Yyie4ltiKmGu7jCJFnYMamNrrulTBc+D+QwAQSJ01tyzeGHlD13kOnqPwRipnlNw==",
- "devOptional": true,
- "hasInstallScript": true,
- "dependencies": {
- "@prisma/engines": "4.11.0"
- },
- "bin": {
- "prisma": "build/index.js",
- "prisma2": "build/index.js"
- },
- "engines": {
- "node": ">=14.17"
- }
- },
- "node_modules/proxy-addr": {
- "version": "2.0.7",
- "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz",
- "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==",
- "dependencies": {
- "forwarded": "0.2.0",
- "ipaddr.js": "1.9.1"
- },
- "engines": {
- "node": ">= 0.10"
- }
- },
- "node_modules/qs": {
- "version": "6.11.0",
- "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz",
- "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==",
- "dependencies": {
- "side-channel": "^1.0.4"
- },
- "engines": {
- "node": ">=0.6"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/range-parser": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
- "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==",
- "engines": {
- "node": ">= 0.6"
- }
- },
- "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==",
- "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/safe-buffer": {
- "version": "5.2.1",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
- "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/feross"
- },
- {
- "type": "patreon",
- "url": "https://www.patreon.com/feross"
- },
- {
- "type": "consulting",
- "url": "https://feross.org/support"
- }
- ]
- },
- "node_modules/safer-buffer": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
- "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
- },
- "node_modules/send": {
- "version": "0.18.0",
- "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz",
- "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==",
- "dependencies": {
- "debug": "2.6.9",
- "depd": "2.0.0",
- "destroy": "1.2.0",
- "encodeurl": "~1.0.2",
- "escape-html": "~1.0.3",
- "etag": "~1.8.1",
- "fresh": "0.5.2",
- "http-errors": "2.0.0",
- "mime": "1.6.0",
- "ms": "2.1.3",
- "on-finished": "2.4.1",
- "range-parser": "~1.2.1",
- "statuses": "2.0.1"
- },
- "engines": {
- "node": ">= 0.8.0"
- }
- },
- "node_modules/send/node_modules/ms": {
- "version": "2.1.3",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
- "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="
- },
- "node_modules/serve-static": {
- "version": "1.15.0",
- "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz",
- "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==",
- "dependencies": {
- "encodeurl": "~1.0.2",
- "escape-html": "~1.0.3",
- "parseurl": "~1.3.3",
- "send": "0.18.0"
- },
- "engines": {
- "node": ">= 0.8.0"
- }
- },
- "node_modules/setprototypeof": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz",
- "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw=="
- },
- "node_modules/side-channel": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz",
- "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==",
- "dependencies": {
- "call-bind": "^1.0.0",
- "get-intrinsic": "^1.0.2",
- "object-inspect": "^1.9.0"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/statuses": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz",
- "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==",
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/supports-color": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
- "dependencies": {
- "has-flag": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/toidentifier": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz",
- "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==",
- "engines": {
- "node": ">=0.6"
- }
- },
- "node_modules/type-is": {
- "version": "1.6.18",
- "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz",
- "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==",
- "dependencies": {
- "media-typer": "0.3.0",
- "mime-types": "~2.1.24"
- },
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/unpipe": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
- "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==",
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/utils-merge": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
- "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==",
- "engines": {
- "node": ">= 0.4.0"
- }
- },
- "node_modules/vary": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
- "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==",
- "engines": {
- "node": ">= 0.8"
- }
- }
- },
- "dependencies": {
- "@prisma/client": {
- "version": "4.11.0",
- "resolved": "https://registry.npmjs.org/@prisma/client/-/client-4.11.0.tgz",
- "integrity": "sha512-0INHYkQIqgAjrt7NzhYpeDQi8x3Nvylc2uDngKyFDDj1tTRQ4uV1HnVmd1sQEraeVAN63SOK0dgCKQHlvjL0KA==",
- "requires": {
- "@prisma/engines-version": "4.11.0-57.8fde8fef4033376662cad983758335009d522acb"
- }
- },
- "@prisma/engines": {
- "version": "4.11.0",
- "resolved": "https://registry.npmjs.org/@prisma/engines/-/engines-4.11.0.tgz",
- "integrity": "sha512-0AEBi2HXGV02cf6ASsBPhfsVIbVSDC9nbQed4iiY5eHttW9ZtMxHThuKZE1pnESbr8HRdgmFSa/Kn4OSNYuibg==",
- "devOptional": true
- },
- "@prisma/engines-version": {
- "version": "4.11.0-57.8fde8fef4033376662cad983758335009d522acb",
- "resolved": "https://registry.npmjs.org/@prisma/engines-version/-/engines-version-4.11.0-57.8fde8fef4033376662cad983758335009d522acb.tgz",
- "integrity": "sha512-3Vd8Qq06d5xD8Ch5WauWcUUrsVPdMC6Ge8ILji8RFfyhUpqon6qSyGM0apvr1O8n8qH8cKkEFqRPsYjuz5r83g=="
- },
- "accepts": {
- "version": "1.3.8",
- "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz",
- "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==",
- "requires": {
- "mime-types": "~2.1.34",
- "negotiator": "0.6.3"
- }
- },
- "ansi-styles": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
- "requires": {
- "color-convert": "^2.0.1"
- }
- },
- "array-flatten": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
- "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg=="
- },
- "async": {
- "version": "3.2.4",
- "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz",
- "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ=="
- },
- "balanced-match": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
- "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="
- },
- "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==",
- "requires": {
- "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"
- }
- },
- "brace-expansion": {
- "version": "1.1.11",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
- "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
- "requires": {
- "balanced-match": "^1.0.0",
- "concat-map": "0.0.1"
- }
- },
- "bytes": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz",
- "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg=="
- },
- "call-bind": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz",
- "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==",
- "requires": {
- "function-bind": "^1.1.1",
- "get-intrinsic": "^1.0.2"
- }
- },
- "chalk": {
- "version": "4.1.2",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
- "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
- "requires": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- }
- },
- "color-convert": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
- "requires": {
- "color-name": "~1.1.4"
- }
- },
- "color-name": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
- },
- "concat-map": {
- "version": "0.0.1",
- "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
- "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg=="
- },
- "content-disposition": {
- "version": "0.5.4",
- "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz",
- "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==",
- "requires": {
- "safe-buffer": "5.2.1"
- }
- },
- "content-type": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz",
- "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA=="
- },
- "cookie": {
- "version": "0.5.0",
- "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz",
- "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw=="
- },
- "cookie-signature": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
- "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ=="
- },
- "debug": {
- "version": "2.6.9",
- "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
- "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
- "requires": {
- "ms": "2.0.0"
- }
- },
- "depd": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
- "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw=="
- },
- "destroy": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz",
- "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg=="
- },
- "ee-first": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
- "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow=="
- },
- "ejs": {
- "version": "3.1.9",
- "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.9.tgz",
- "integrity": "sha512-rC+QVNMJWv+MtPgkt0y+0rVEIdbtxVADApW9JXrUVlzHetgcyczP/E7DJmWJ4fJCZF2cPcBk0laWO9ZHMG3DmQ==",
- "requires": {
- "jake": "^10.8.5"
- }
- },
- "encodeurl": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
- "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w=="
- },
- "escape-html": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
- "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow=="
- },
- "etag": {
- "version": "1.8.1",
- "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
- "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg=="
- },
- "express": {
- "version": "4.18.2",
- "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz",
- "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==",
- "requires": {
- "accepts": "~1.3.8",
- "array-flatten": "1.1.1",
- "body-parser": "1.20.1",
- "content-disposition": "0.5.4",
- "content-type": "~1.0.4",
- "cookie": "0.5.0",
- "cookie-signature": "1.0.6",
- "debug": "2.6.9",
- "depd": "2.0.0",
- "encodeurl": "~1.0.2",
- "escape-html": "~1.0.3",
- "etag": "~1.8.1",
- "finalhandler": "1.2.0",
- "fresh": "0.5.2",
- "http-errors": "2.0.0",
- "merge-descriptors": "1.0.1",
- "methods": "~1.1.2",
- "on-finished": "2.4.1",
- "parseurl": "~1.3.3",
- "path-to-regexp": "0.1.7",
- "proxy-addr": "~2.0.7",
- "qs": "6.11.0",
- "range-parser": "~1.2.1",
- "safe-buffer": "5.2.1",
- "send": "0.18.0",
- "serve-static": "1.15.0",
- "setprototypeof": "1.2.0",
- "statuses": "2.0.1",
- "type-is": "~1.6.18",
- "utils-merge": "1.0.1",
- "vary": "~1.1.2"
- }
- },
- "filelist": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz",
- "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==",
- "requires": {
- "minimatch": "^5.0.1"
- },
- "dependencies": {
- "brace-expansion": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
- "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
- "requires": {
- "balanced-match": "^1.0.0"
- }
- },
- "minimatch": {
- "version": "5.1.6",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz",
- "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==",
- "requires": {
- "brace-expansion": "^2.0.1"
- }
- }
- }
- },
- "finalhandler": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz",
- "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==",
- "requires": {
- "debug": "2.6.9",
- "encodeurl": "~1.0.2",
- "escape-html": "~1.0.3",
- "on-finished": "2.4.1",
- "parseurl": "~1.3.3",
- "statuses": "2.0.1",
- "unpipe": "~1.0.0"
- }
- },
- "forwarded": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz",
- "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow=="
- },
- "fresh": {
- "version": "0.5.2",
- "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
- "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q=="
- },
- "function-bind": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
- "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A=="
- },
- "get-intrinsic": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.0.tgz",
- "integrity": "sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==",
- "requires": {
- "function-bind": "^1.1.1",
- "has": "^1.0.3",
- "has-symbols": "^1.0.3"
- }
- },
- "has": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
- "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
- "requires": {
- "function-bind": "^1.1.1"
- }
- },
- "has-flag": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="
- },
- "has-symbols": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz",
- "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A=="
- },
- "http-errors": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz",
- "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==",
- "requires": {
- "depd": "2.0.0",
- "inherits": "2.0.4",
- "setprototypeof": "1.2.0",
- "statuses": "2.0.1",
- "toidentifier": "1.0.1"
- }
- },
- "iconv-lite": {
- "version": "0.4.24",
- "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
- "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
- "requires": {
- "safer-buffer": ">= 2.1.2 < 3"
- }
- },
- "inherits": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
- "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
- },
- "ipaddr.js": {
- "version": "1.9.1",
- "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz",
- "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g=="
- },
- "jake": {
- "version": "10.8.5",
- "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.5.tgz",
- "integrity": "sha512-sVpxYeuAhWt0OTWITwT98oyV0GsXyMlXCF+3L1SuafBVUIr/uILGRB+NqwkzhgXKvoJpDIpQvqkUALgdmQsQxw==",
- "requires": {
- "async": "^3.2.3",
- "chalk": "^4.0.2",
- "filelist": "^1.0.1",
- "minimatch": "^3.0.4"
- }
- },
- "media-typer": {
- "version": "0.3.0",
- "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
- "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ=="
- },
- "merge-descriptors": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz",
- "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w=="
- },
- "methods": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
- "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w=="
- },
- "mime": {
- "version": "1.6.0",
- "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
- "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg=="
- },
- "mime-db": {
- "version": "1.52.0",
- "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
- "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg=="
- },
- "mime-types": {
- "version": "2.1.35",
- "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
- "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
- "requires": {
- "mime-db": "1.52.0"
- }
- },
- "minimatch": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
- "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
- "requires": {
- "brace-expansion": "^1.1.7"
- }
- },
- "ms": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
- "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
- },
- "negotiator": {
- "version": "0.6.3",
- "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz",
- "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg=="
- },
- "object-inspect": {
- "version": "1.12.3",
- "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz",
- "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g=="
- },
- "on-finished": {
- "version": "2.4.1",
- "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz",
- "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==",
- "requires": {
- "ee-first": "1.1.1"
- }
- },
- "parseurl": {
- "version": "1.3.3",
- "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
- "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ=="
- },
- "path-to-regexp": {
- "version": "0.1.7",
- "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
- "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ=="
- },
- "prisma": {
- "version": "4.11.0",
- "resolved": "https://registry.npmjs.org/prisma/-/prisma-4.11.0.tgz",
- "integrity": "sha512-4zZmBXssPUEiX+GeL0MUq/Yyie4ltiKmGu7jCJFnYMamNrrulTBc+D+QwAQSJ01tyzeGHlD13kOnqPwRipnlNw==",
- "devOptional": true,
- "requires": {
- "@prisma/engines": "4.11.0"
- }
- },
- "proxy-addr": {
- "version": "2.0.7",
- "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz",
- "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==",
- "requires": {
- "forwarded": "0.2.0",
- "ipaddr.js": "1.9.1"
- }
- },
- "qs": {
- "version": "6.11.0",
- "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz",
- "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==",
- "requires": {
- "side-channel": "^1.0.4"
- }
- },
- "range-parser": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
- "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg=="
- },
- "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==",
- "requires": {
- "bytes": "3.1.2",
- "http-errors": "2.0.0",
- "iconv-lite": "0.4.24",
- "unpipe": "1.0.0"
- }
- },
- "safe-buffer": {
- "version": "5.2.1",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
- "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ=="
- },
- "safer-buffer": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
- "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
- },
- "send": {
- "version": "0.18.0",
- "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz",
- "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==",
- "requires": {
- "debug": "2.6.9",
- "depd": "2.0.0",
- "destroy": "1.2.0",
- "encodeurl": "~1.0.2",
- "escape-html": "~1.0.3",
- "etag": "~1.8.1",
- "fresh": "0.5.2",
- "http-errors": "2.0.0",
- "mime": "1.6.0",
- "ms": "2.1.3",
- "on-finished": "2.4.1",
- "range-parser": "~1.2.1",
- "statuses": "2.0.1"
- },
- "dependencies": {
- "ms": {
- "version": "2.1.3",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
- "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="
- }
- }
- },
- "serve-static": {
- "version": "1.15.0",
- "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz",
- "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==",
- "requires": {
- "encodeurl": "~1.0.2",
- "escape-html": "~1.0.3",
- "parseurl": "~1.3.3",
- "send": "0.18.0"
- }
- },
- "setprototypeof": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz",
- "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw=="
- },
- "side-channel": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz",
- "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==",
- "requires": {
- "call-bind": "^1.0.0",
- "get-intrinsic": "^1.0.2",
- "object-inspect": "^1.9.0"
- }
- },
- "statuses": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz",
- "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ=="
- },
- "supports-color": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
- "requires": {
- "has-flag": "^4.0.0"
- }
- },
- "toidentifier": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz",
- "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA=="
- },
- "type-is": {
- "version": "1.6.18",
- "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz",
- "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==",
- "requires": {
- "media-typer": "0.3.0",
- "mime-types": "~2.1.24"
- }
- },
- "unpipe": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
- "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ=="
- },
- "utils-merge": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
- "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA=="
- },
- "vary": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
- "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg=="
- }
- }
-}
diff --git a/docs/6-exercise/8-database-and-cookie/_samples/database/query-parameter/package.json b/docs/6-exercise/8-database-and-cookie/_samples/database/query-parameter/package.json
deleted file mode 100644
index 89fe65066..000000000
--- a/docs/6-exercise/8-database-and-cookie/_samples/database/query-parameter/package.json
+++ /dev/null
@@ -1,19 +0,0 @@
-{
- "name": "database",
- "version": "1.0.0",
- "description": "",
- "main": "index.js",
- "scripts": {
- "test": "echo \"Error: no test specified\" && exit 1"
- },
- "author": "",
- "license": "ISC",
- "devDependencies": {
- "prisma": "^4.11.0"
- },
- "dependencies": {
- "@prisma/client": "^4.11.0",
- "ejs": "^3.1.9",
- "express": "^4.18.2"
- }
-}
diff --git a/docs/6-exercise/8-database-and-cookie/_samples/database/query-parameter/prisma/schema.prisma b/docs/6-exercise/8-database-and-cookie/_samples/database/query-parameter/prisma/schema.prisma
deleted file mode 100644
index 8862b4412..000000000
--- a/docs/6-exercise/8-database-and-cookie/_samples/database/query-parameter/prisma/schema.prisma
+++ /dev/null
@@ -1,26 +0,0 @@
-// This is your Prisma schema file,
-// learn more about it in the docs: https://pris.ly/d/prisma-schema
-
-generator client {
- provider = "prisma-client-js"
-}
-
-datasource db {
- provider = "postgresql"
- url = env("DATABASE_URL")
-}
-
-model Teacher {
- id Int @id @unique @default(autoincrement())
- name String
- Courses Course[]
-}
-
-model Course {
- id Int @id @default(autoincrement())
- name String
- description String
- hasTest String
- teacher Teacher @relation(fields: [teacherId], references: [id])
- teacherId Int
-}
diff --git a/docs/6-exercise/8-database-and-cookie/index.mdx b/docs/6-exercise/8-database-and-cookie/index.mdx
deleted file mode 100644
index 20580ff28..000000000
--- a/docs/6-exercise/8-database-and-cookie/index.mdx
+++ /dev/null
@@ -1,343 +0,0 @@
----
-title: データベースと Cookie
-sidebar_position: 7
----
-
-import trackingVideo from "./tracking.mp4";
-import ViewSource from "@site/src/components/ViewSource";
-import Answer from "@site/src/components/Answer";
-
-この章では教材の「[データベース](/docs/web-servers/database/)」「[Cookie と認証](/docs/web-servers/cookie/)」の内容を扱っています。
-
----
-
-## 1. データベース
-
-ある学校のアプリで、データベースから先生たちのデータを取得して表示し、先生を1人選択するとその先生が持っている講義一覧が表示されるアプリを作ってみましょう。また、新たに先生の追加と講義の追加ができるようにしましょう。
-
-### 解答例
-
-
-
-データモデルを用意します。
-
-```javascript title="schema.prisma"
-
-model Teacher {
- id Int @id @unique @default(autoincrement())
- name String
- Courses Course[]
-}
-
-model Course {
- id Int @id @default(autoincrement())
- name String
- description String
- hasTest String
- teacher Teacher @relation(fields: [teacherId], references: [id])
- teacherId Int
-}
-```
-
-まず講師一覧表示用の画面を用意します
-
-```html title="index.ejs"
-
-
-
-
- Document
-
-
-
-
-
- 講師ID |
- 氏名 |
- |
-
-
-
- <% for (const teacher of teachers) {%>
-
- <%= teacher.id %> |
- <%= teacher.name %> |
-
-
- |
-
- <% } %>
-
-
-
-
-
-```
-
-講義一覧のページを用意します。
-
-```html title="courses.ejs"
-
-
-
-
- Document
-
-
-
-
-
- 講義名 |
- テストの有無 |
- 説明 |
-
-
-
- <% for (const course of courses) {%>
-
- <%= course.name %> |
- <%= course.hasTest %> |
- <%= course.description %> |
-
- <% } %>
-
-
-
-
-
-```
-
-最後にサーバー処理を追加します。
-
-```javascript title="main.js"
-const fs = require("fs");
-const express = require("express");
-const ejs = require("ejs");
-const { PrismaClient } = require("@prisma/client");
-
-const app = express();
-const client = new PrismaClient();
-
-app.use(express.urlencoded({ extended: true }));
-
-app.get("/", async (request, response) => {
- const teachers = await client.teacher.findMany();
- const template = fs.readFileSync("./index.ejs", { encoding: "utf-8" });
- const html = ejs.render(template, { teachers: teachers });
- response.send(html);
-});
-
-app.get("/courses", async (request, response) => {
- const teacherId = request.query.teacherId;
- const courses = await client.course.findMany({
- where: { teacherId: parseInt(teacherId) },
- });
- const template = fs.readFileSync("./courses.ejs", { encoding: "utf-8" });
- const html = ejs.render(template, { courses: courses, teacherId: teacherId });
- response.send(html);
-});
-
-app.post("/add-course", async (request, response) => {
- const newCourse = request.body.newCourse;
- const teacherId = parseInt(request.body.teacherId);
- const hasTest = request.body.hasTest;
- const description = request.body.description;
- await client.course.create({
- data: {
- name: newCourse,
- hasTest: hasTest,
- description: description,
- teacherId: teacherId,
- },
- });
- response.send("送信しました");
-});
-
-app.post("/add-teacher", async (request, response) => {
- const teacherName = request.body.teacherName;
- await client.teacher.create({
- data: {
- name: teacherName,
- },
- });
- response.send("送信しました");
-});
-
-app.listen(3000);
-```
-
-
-
-
-
-
-
- 別解
-
-解答例ではクエリパラメーターを用いましたが、**パスパラメータ**を使用することもできます。
-パスパラメータとは、特定のリソースを参照するために URL に付加される変数のことです。
-
-例えば
-`https://exapmle.com/users/:id` という URL の場合(`:id` は適当な数字)、id はそのサイト内で特定のユーザを参照するための変数となります。`https://exapmle.com/users/34` ならば、id が 34 のユーザを参照することになります。
-
-Express でパスパラメータを使用する場合、`app.get` ([`express.Application#get` メソッド](https://expressjs.com/ja/api.html#app.get.method)) の第一引数のパスに `:` を組み込むことによって、パスパラメータ名を決めることができます。また、[`express.Request#params` プロパティ](https://expressjs.com/en/4x/api.html#req.params) にパスパラメータが格納されます。
-
-```javascript
-const app = express();
-
-app.get("/users/:id", (request, response) => {
- response.send("user " + request.params.id);
-});
-```
-
-このパスパラメータを用いた解答を作ることもできます。
-
-以下解答例となります。
-
-
-
-
-
----
-
-## 2. Cookie
-
-ショッピングサイトのトラッキングシステムを作ってみましょう。購入した回数が一番多い商品のおすすめが表示されるようにしてみましょう。
-
-
-
-- 購入ボタンを押した回数がクッキーに保存されるようにしてみましょう。
-- 購入した回数が一番多い商品をお勧めするようにしてみましょう。
-
-### 解答例
-
-
-
-```html title=index.ejs
-
-
-
-
- ut商会
-
-
-
-
-
- 車 |
- 指輪 |
- エビ |
-
-
-
-
- <% for ( const item of items ){%>
- |
- <% } %>
-
-
-
- <% if(recommended){ %>
- あなたへのおすすめは<%= recommended %>です
- <% } %>
-
-
-
-```
-
-```javascript title="main.js"
-const fs = require("fs");
-const ejs = require("ejs");
-const express = require("express");
-const cookieParser = require("cookie-parser");
-
-const app = express();
-app.use(cookieParser());
-
-const items = ["car", "ring", "shrimp"];
-
-app.get("/", (request, response) => {
- let recommended;
- const carPreference = parseInt(request.cookies.carPreference) || 0;
- const ringPreference = parseInt(request.cookies.ringPreference) || 0;
- const shrimpPreference = parseInt(request.cookies.shrimpPreference) || 0;
- const favorite = Math.max(carPreference, ringPreference, shrimpPreference);
- if (
- (carPreference === ringPreference && carPreference === favorite) ||
- (ringPreference === shrimpPreference && ringPreference === favorite) ||
- (shrimpPreference === carPreference && shrimpPreference === favorite) ||
- favorite === 0
- ) {
- recommended = null;
- } else if (carPreference === favorite) {
- recommended = "車";
- } else if (ringPreference === favorite) {
- recommended = "指輪";
- } else {
- recommended = "エビ";
- }
- const template = fs.readFileSync("./index.ejs", { encoding: "utf-8" });
- const html = ejs.render(template, { items: items, recommended: recommended });
- response.send(html);
-});
-
-app.get("/car", (request, response) => {
- const carPreference = Number(request.cookies.carPreference) || 0;
- const newCarPreference = carPreference + 1;
- response.cookie("carPreference", newCarPreference.toString());
- response.send("車を買いました");
-});
-
-app.get("/ring", (request, response) => {
- const ringPreference = Number(request.cookies.ringPreference) || 0;
- const newRingPreference = ringPreference + 1;
- response.cookie("ringPreference", newRingPreference.toString());
- response.send("指輪を買いました");
-});
-
-app.get("/shrimp", (request, response) => {
- const shrimpPreference = Number(request.cookies.shrimpPreference) || 0;
- const newShrimpPreference = shrimpPreference + 1;
- response.cookie("shrimpPreference", newShrimpPreference.toString());
- response.send("エビを買いました");
-});
-
-app.listen(3000);
-```
-
-
-
-
diff --git a/docs/6-exercise/8-database-and-cookie/tracking.mp4 b/docs/6-exercise/8-database-and-cookie/tracking.mp4
deleted file mode 100644
index 1cc87b6ce..000000000
Binary files a/docs/6-exercise/8-database-and-cookie/tracking.mp4 and /dev/null differ
diff --git a/docs/6-exercise/9-fetch-api/_samples/restaurants/server.js b/docs/6-exercise/9-fetch-api/_samples/restaurants/server.js
deleted file mode 100644
index 248f1feb0..000000000
--- a/docs/6-exercise/9-fetch-api/_samples/restaurants/server.js
+++ /dev/null
@@ -1,39 +0,0 @@
-const express = require("express");
-const app = express();
-
-app.use(express.json());
-app.use(express.static("static"));
-
-const restaurants = [];
-
-app.get("/restaurants", (request, response) => {
- response.json(restaurants);
-});
-
-app.post("/register", (request, response) => {
- restaurants.push({
- name: request.body.name,
- totalRating: 0,
- numRatings: 0,
- averageRating: 0,
- });
- response.end();
-});
-
-app.post("/rate", (request, response) => {
- const index = request.body.index;
- restaurants[index].totalRating += Number(request.body.rating); // 文字列を数値に変換
- restaurants[index].numRatings += 1;
-
- if (restaurants[index].numRatings !== 0) {
- // 評価者が0人でないときは、平均点を計算
- restaurants[index].averageRating =
- restaurants[index].totalRating / restaurants[index].numRatings;
- } else {
- // 評価者が0人のときは、平均点は0(ゼロ除算を防ぐため)
- restaurants[index].averageRating = 0;
- }
- response.end();
-});
-
-app.listen(3000);
diff --git a/docs/6-exercise/9-fetch-api/_samples/restaurants/static/index.html b/docs/6-exercise/9-fetch-api/_samples/restaurants/static/index.html
deleted file mode 100644
index 7803fecec..000000000
--- a/docs/6-exercise/9-fetch-api/_samples/restaurants/static/index.html
+++ /dev/null
@@ -1,32 +0,0 @@
-
-
-
-
- Document
-
-
-
-
-
-
-
diff --git a/docs/6-exercise/9-fetch-api/_samples/restaurants/static/script.js b/docs/6-exercise/9-fetch-api/_samples/restaurants/static/script.js
deleted file mode 100644
index 351c5f1cd..000000000
--- a/docs/6-exercise/9-fetch-api/_samples/restaurants/static/script.js
+++ /dev/null
@@ -1,54 +0,0 @@
-const restaurantList = document.getElementById("restaurant-list");
-const nameInput = document.getElementById("name-input");
-const nameSelect = document.getElementById("name-select");
-const ratingSelect = document.getElementById("rating-select");
-
-setInterval(async () => {
- // nameSelect にも ratingSelect にもフォーカスが当たっていない際にのみ、要素を再生成する
- if (
- document.activeElement !== nameSelect &&
- document.activeElement !== ratingSelect
- ) {
- const response = await fetch("/restaurants");
- const restaurants = await response.json();
- restaurantList.innerHTML = "";
- nameSelect.innerHTML = "";
-
- for (let i = 0; i < restaurants.length; i += 1) {
- // 料理店の一覧を生成する部分
- const li = document.createElement("li");
- const name = document.createElement("h3");
- const averageRating = document.createElement("p");
- name.textContent = restaurants[i].name;
- averageRating.textContent = `平均評価: ${restaurants[i].averageRating}`;
- li.appendChild(name);
- li.appendChild(averageRating);
- restaurantList.appendChild(li);
-
- // 評価する料理店の選択肢を生成する部分
- const option = document.createElement("option");
- option.value = i;
- option.textContent = restaurants[i].name;
- nameSelect.appendChild(option);
- }
- }
-}, 1000);
-
-document.getElementById("register-button").onclick = async () => {
- const name = nameInput.value;
- await fetch("/register", {
- method: "post",
- headers: { "Content-Type": "application/json" },
- body: JSON.stringify({ name: name }),
- });
-};
-
-document.getElementById("rate-button").onclick = async () => {
- const index = nameSelect.value;
- const rating = ratingSelect.value;
- await fetch("/rate", {
- method: "post",
- headers: { "Content-Type": "application/json" },
- body: JSON.stringify({ index: index, rating: rating }),
- });
-};
diff --git a/docs/6-exercise/9-fetch-api/index.mdx b/docs/6-exercise/9-fetch-api/index.mdx
deleted file mode 100644
index df8d95d60..000000000
--- a/docs/6-exercise/9-fetch-api/index.mdx
+++ /dev/null
@@ -1,130 +0,0 @@
----
-title: Fetch API 演習
-sidebar_position: 8
----
-
-import CodeBlock from "@theme/CodeBlock";
-import Term from "@site/src/components/Term";
-import ViewSource from "@site/src/components/ViewSource";
-import Answer from "@site/src/components/Answer";
-import restaurantsVideo from "./restaurants.mp4";
-
-この章では教材の「[Fetch API](/docs/advanced/fetch-api/)」の内容を扱っています。
-
----
-
-## 課題
-
-料理店に評価をつけられるサイトを作ってみましょう。
-
-
-
-### ヒント
-
-- 選択式のメニューを作るには `select` タグを用いましょう。
-
- ```html title="index.html"
-
- ```
-
-- `option` の `value` に入れられている数字は文字列のため、平均評価の算出をする前に数値に変換しておくと良いでしょう。以下では `Number` オブジェクトを用いる例を示します。
-
- ```javascript title="sample.js"
- const one = "1";
- const two = "2";
-
- console.log(one + two); // 12
- console.log(Number(one) + Number(two)); // 3
- ```
-
-- 今回は、登録されているレストランの最新の情報を取得するため一定時間ごとに画面を描画し直すことが必要ですが、そのようにすると店名を選択する`select` 要素が操作できなくなってしまうことに注意が必要です。以下では、現在操作されている(フォーカスが当たっている)要素を取得する `document.activeElement` を用いて、料理店の評価の送信に必要な `select` 要素が操作されている際には再描画を行わないようにしています。
-
- ```javascript title="script.js"
- if (
- document.activeElement !== nameSelect &&
- document.activeElement !== ratingSelect
- ) {
- // 再描画
- }
- ```
-
-### 解答例
-
-
-
-```javascript title="server.js"
-app.get("/restaurants", (request, response) => {
- response.json(restaurants);
-});
-
-app.post("/register", (request, response) => {
- restaurants.push({
- name: request.body.name,
- totalRating: 0,
- numRatings: 0,
- averageRating: 0,
- });
- response.end();
-});
-
-app.post("/rate", (request, response) => {
- const index = request.body.index;
- restaurants[index].totalRating += Number(request.body.rating); // 文字列を数値に変換
- restaurants[index].numRatings += 1;
-
- if (restaurants[index].numRatings !== 0) {
- // 評価者が0人でないときは、平均点を計算
- restaurants[index].averageRating =
- restaurants[index].totalRating / restaurants[index].numRatings;
- } else {
- // 評価者が0人のときは、平均点は0(ゼロ除算を防ぐため)
- restaurants[index].averageRating = 0;
- }
- response.end();
-});
-```
-
-```javascript title="static/script.js"
-setInterval(async () => {
- // nameSelect にも ratingSelect にもフォーカスが当たっていない際にのみ、要素を再生成する
- if (
- document.activeElement !== nameSelect &&
- document.activeElement !== ratingSelect
- ) {
- const response = await fetch("/restaurants");
- const restaurants = await response.json();
- restaurantList.innerHTML = "";
- nameSelect.innerHTML = "";
-
- for (let i = 0; i < restaurants.length; i += 1) {
- // 料理店の一覧を生成する部分
- const li = document.createElement("li");
- const name = document.createElement("h3");
- const averageRating = document.createElement("p");
- name.textContent = restaurants[i].name;
- averageRating.textContent = `平均評価: ${restaurants[i].averageRating}`;
- li.appendChild(name);
- li.appendChild(averageRating);
- restaurantList.appendChild(li);
-
- // 評価する料理店の選択肢を生成する部分
- const option = document.createElement("option");
- option.value = i;
- option.textContent = restaurants[i].name;
- nameSelect.appendChild(option);
- }
- }
-}, 1000);
-```
-
-コードの全体は以下を参照してください。
-
-
-
-
diff --git a/docs/6-exercise/9-fetch-api/restaurants.mp4 b/docs/6-exercise/9-fetch-api/restaurants.mp4
deleted file mode 100644
index a6bd40958..000000000
Binary files a/docs/6-exercise/9-fetch-api/restaurants.mp4 and /dev/null differ
diff --git a/docs/6-exercise/index.mdx b/docs/6-exercise/index.mdx
deleted file mode 100644
index 2e52cb06d..000000000
--- a/docs/6-exercise/index.mdx
+++ /dev/null
@@ -1,10 +0,0 @@
----
-title: 演習問題集
-sidebar_position: 6
----
-
-import DocCardList from "@theme/DocCardList";
-
-ここではこの教材内で学んだことに関する演習問題を掲載しています。スキルアップしたい方も腕試ししたい方もぜひ解いてみてください!
-
-
diff --git a/docs/index.mdx b/docs/index.mdx
index e189765a8..f71ae81e0 100644
--- a/docs/index.mdx
+++ b/docs/index.mdx
@@ -17,10 +17,6 @@ sidebar_position: 0
### 4. [現代のアプリを支える技術を学ぼう](/docs/advanced/)
-## 演習問題
-
-### 5. [演習問題集](/docs/exercise/)
-
## 参考資料
-### 6. [チーム開発を始める前に](/docs/team-development/)
+### 5. [チーム開発を始める前に](/docs/team-development/)
diff --git a/src/components/Term/definitions.js b/src/components/Term/definitions.js
index de922144f..ef1484b85 100644
--- a/src/components/Term/definitions.js
+++ b/src/components/Term/definitions.js
@@ -17,8 +17,6 @@ export default {
"/docs/trial-session/project/": "プロジェクト",
"/docs/trial-session/deploy/": "作ったウェブアプリを公開する",
"/docs/browser-apps/inspector/": "ブラウザの開発者ツール",
- "/docs/browser-apps/reference/": "オブジェクトの参照",
- "/docs/exercise/basis-of-web/#副作用と純粋関数の話": "副作用と純粋関数",
"/docs/browser-apps/loop/": "繰り返し",
"/docs/browser-apps/class/": "クラス",
"/docs/browser-apps/array/": "配列",
@@ -311,29 +309,6 @@ export default {
"イベント発生時の処理を行う仕組み。onclick 関数、onload 関数など、on キーワードにイベント名をつけた名称になっている。",
referencePage: "/docs/trial-session/events/",
},
- javascriptReference: {
- name: "参照",
- definition:
- "値のコピーではなくメモリの場所を指し示す値の形式。オブジェクトや配列を直接評価すると得られる。代入演算子で参照値を渡した場合、二つの変数が同じものを指し示していることになるため、片方を変更するともう片方も変更されてしまう。",
- referencePage: "/docs/browser-apps/reference/",
- },
- javascriptSideEffects: {
- name: "副作用",
- definition:
- "関数などを実行したときに、返り値以外の変数に影響を及ぼすこと。",
- referencePage: "/docs/exercise/basis-of-web/#副作用と純粋関数の話",
- },
- javascriptPureFunction: {
- name: "純粋関数",
- definition: "副作用を持たない関数。数学的な関数や写像により近い概念。",
- referencePage: "/docs/exercise/basis-of-web/#副作用と純粋関数の話",
- },
- javascriptReferenceTransparency: {
- name: "参照透過性",
- definition:
- "関数に一定の引数を与えると、常に一定の値を返すこと。考えることを減らすことができ、デバッグがしやすい。",
- referencePage: "/docs/exercise/basis-of-web/#副作用と純粋関数の話",
- },
javascriptClass: {
name: "クラス (JavaScript)",
definition:
diff --git a/src/components/Term/type-map.js b/src/components/Term/type-map.js
index 2a963ccd1..78adc8307 100644
--- a/src/components/Term/type-map.js
+++ b/src/components/Term/type-map.js
@@ -69,10 +69,6 @@ const typeMap = new Map([
["DOM", "dom"],
["イベント", "events"],
["イベントハンドラ", "eventHandler"],
- ["参照", "javascriptReference"],
- ["副作用", "javascriptSideEffects"],
- ["純粋関数", "javascriptPureFunction"],
- ["参照透過性", "javascriptReferenceTransparency"],
["クラス", "javascriptClass"],
["インスタンス", "javascriptInstance"],
["コンストラクタ", "javascriptConstructor"],