From d42c71cfbc99e9910699f797ee62c2e2c03a520c Mon Sep 17 00:00:00 2001 From: chelproc Date: Sun, 20 Jul 2025 21:55:16 +0900 Subject: [PATCH 01/21] =?UTF-8?q?=E3=82=A6=E3=82=A7=E3=83=96=E3=82=B5?= =?UTF-8?q?=E3=83=BC=E3=83=90=E3=83=BC=E3=81=AE=E7=AB=A0=E3=81=AB=20Fetch?= =?UTF-8?q?=20API=20=E3=82=92=E8=BF=BD=E5=8A=A0=20(=E3=82=A2=E3=82=A6?= =?UTF-8?q?=E3=83=88=E3=83=A9=E3=82=A4=E3=83=B3)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/3-web-servers/06-fetch-api/index.mdx | 40 +++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 docs/3-web-servers/06-fetch-api/index.mdx diff --git a/docs/3-web-servers/06-fetch-api/index.mdx b/docs/3-web-servers/06-fetch-api/index.mdx new file mode 100644 index 000000000..55728126c --- /dev/null +++ b/docs/3-web-servers/06-fetch-api/index.mdx @@ -0,0 +1,40 @@ +--- +title: ブラウザとサーバー間の通信 +--- + +- 前頁では、Webサーバーを構築した +- ブラウザとWebサーバーはHTTPを使って通信することを学んだ +- ブラウザがリクエストを発行するのは、次のいずれかの場合だった + - アドレスバーにURLを入力したとき + - リンクをクリックしたとき + - 取得した HTML に外部リソースを読み込むタグが含まれていたとき +- 実は、JavaScriptを使ってブラウザにリクエストを発行させることもできる +- そのためのAPIがFetch APIだ + +## ブラウザで動く JavaScript でモジュールを用いる + +- Fetch API を用いることにより、Webアプリはブラウザの枠を超えた機能を実現できる +- しかし、複雑な処理を行う場合、JavaScriptのコードが長くなり、可読性が低下する +- Node.js では、モジュールを用いてコードを分割することができた +- 実は、ブラウザでも、JavaScriptのコードをモジュールとして分割することができる +- これ以降は、ブラウザで動く JavaScript でもモジュールを用いることを前提にする + +サンプルプログラム・解説 (../04-module/ と同様の内容) + +## Fetch API + +- Fetch API は、 `fetch` 関数を呼び出すことで実行できる +- `fetch` 関数にリクエストを発行したい URL を指定することで、[Response](https://developer.mozilla.org/ja/docs/Web/API/Response) オブジェクトを取得できる +- Response オブジェクトの `text` メソッドを呼び出すことで、レスポンスを文字列として取得できる + +非同期処理についてのコラム (async await をつけることだけ触れる) + +サンプルプログラム・解説 (../../4-advanced/01-fetch-api/ と同じ内容) + +## 演習問題1 + +- Fetch API を用いて日経平均株価を取得するプログラム。日経平均はサーバーで乱数生成 + +## 演習問題2 + +- 演習問題1に加え、 Fetch API を用いて 10 秒ごとに日経平均株価を取得してリアルタイムに反映させるプログラム From 88c8a5f37481dd3e49440d9003305a75ce5b6107 Mon Sep 17 00:00:00 2001 From: chelproc Date: Sun, 20 Jul 2025 22:13:53 +0900 Subject: [PATCH 02/21] draft --- .../_samples/browser-module/main.mjs | 6 + .../_samples/browser-module/package.json | 6 + .../_samples/browser-module/public/index.html | 12 + .../_samples/browser-module/public/main.js | 6 + .../_samples/browser-module/public/math.js | 7 + .../_samples/fetch-weather/main.mjs | 10 + .../_samples/fetch-weather/package.json | 6 + .../_samples/fetch-weather/public/index.html | 11 + .../_samples/fetch-weather/public/script.js | 5 + .../_samples/nikkei-realtime/main.mjs | 11 + .../_samples/nikkei-realtime/package.json | 6 + .../nikkei-realtime/public/index.html | 15 + .../_samples/nikkei-realtime/public/script.js | 27 ++ .../_samples/nikkei-simple/main.mjs | 11 + .../_samples/nikkei-simple/package.json | 6 + .../_samples/nikkei-simple/public/index.html | 13 + .../_samples/nikkei-simple/public/script.js | 5 + docs/3-web-servers/06-fetch-api/index.mdx | 262 ++++++++++++++++-- 18 files changed, 403 insertions(+), 22 deletions(-) create mode 100644 docs/3-web-servers/06-fetch-api/_samples/browser-module/main.mjs create mode 100644 docs/3-web-servers/06-fetch-api/_samples/browser-module/package.json create mode 100644 docs/3-web-servers/06-fetch-api/_samples/browser-module/public/index.html create mode 100644 docs/3-web-servers/06-fetch-api/_samples/browser-module/public/main.js create mode 100644 docs/3-web-servers/06-fetch-api/_samples/browser-module/public/math.js create mode 100644 docs/3-web-servers/06-fetch-api/_samples/fetch-weather/main.mjs create mode 100644 docs/3-web-servers/06-fetch-api/_samples/fetch-weather/package.json create mode 100644 docs/3-web-servers/06-fetch-api/_samples/fetch-weather/public/index.html create mode 100644 docs/3-web-servers/06-fetch-api/_samples/fetch-weather/public/script.js create mode 100644 docs/3-web-servers/06-fetch-api/_samples/nikkei-realtime/main.mjs create mode 100644 docs/3-web-servers/06-fetch-api/_samples/nikkei-realtime/package.json create mode 100644 docs/3-web-servers/06-fetch-api/_samples/nikkei-realtime/public/index.html create mode 100644 docs/3-web-servers/06-fetch-api/_samples/nikkei-realtime/public/script.js create mode 100644 docs/3-web-servers/06-fetch-api/_samples/nikkei-simple/main.mjs create mode 100644 docs/3-web-servers/06-fetch-api/_samples/nikkei-simple/package.json create mode 100644 docs/3-web-servers/06-fetch-api/_samples/nikkei-simple/public/index.html create mode 100644 docs/3-web-servers/06-fetch-api/_samples/nikkei-simple/public/script.js diff --git a/docs/3-web-servers/06-fetch-api/_samples/browser-module/main.mjs b/docs/3-web-servers/06-fetch-api/_samples/browser-module/main.mjs new file mode 100644 index 000000000..105d59e3c --- /dev/null +++ b/docs/3-web-servers/06-fetch-api/_samples/browser-module/main.mjs @@ -0,0 +1,6 @@ +import express from "express"; +const app = express(); + +app.use(express.static("./public")); + +app.listen(3000); \ No newline at end of file diff --git a/docs/3-web-servers/06-fetch-api/_samples/browser-module/package.json b/docs/3-web-servers/06-fetch-api/_samples/browser-module/package.json new file mode 100644 index 000000000..e2eab74f3 --- /dev/null +++ b/docs/3-web-servers/06-fetch-api/_samples/browser-module/package.json @@ -0,0 +1,6 @@ +{ + "name": "browser-module", + "dependencies": { + "express": "^5.1.0" + } +} \ No newline at end of file diff --git a/docs/3-web-servers/06-fetch-api/_samples/browser-module/public/index.html b/docs/3-web-servers/06-fetch-api/_samples/browser-module/public/index.html new file mode 100644 index 000000000..be8734139 --- /dev/null +++ b/docs/3-web-servers/06-fetch-api/_samples/browser-module/public/index.html @@ -0,0 +1,12 @@ + + + + + モジュールの例 + + +

計算結果

+

+ + + \ No newline at end of file diff --git a/docs/3-web-servers/06-fetch-api/_samples/browser-module/public/main.js b/docs/3-web-servers/06-fetch-api/_samples/browser-module/public/main.js new file mode 100644 index 000000000..26bf24c4e --- /dev/null +++ b/docs/3-web-servers/06-fetch-api/_samples/browser-module/public/main.js @@ -0,0 +1,6 @@ +import { add, multiply } from "./math.js"; + +const sum = add(3, 4); +const product = multiply(3, 4); + +document.getElementById("result").textContent = `3 + 4 = ${sum}, 3 × 4 = ${product}`; \ No newline at end of file diff --git a/docs/3-web-servers/06-fetch-api/_samples/browser-module/public/math.js b/docs/3-web-servers/06-fetch-api/_samples/browser-module/public/math.js new file mode 100644 index 000000000..5dc492535 --- /dev/null +++ b/docs/3-web-servers/06-fetch-api/_samples/browser-module/public/math.js @@ -0,0 +1,7 @@ +export function add(a, b) { + return a + b; +} + +export function multiply(a, b) { + return a * b; +} \ No newline at end of file diff --git a/docs/3-web-servers/06-fetch-api/_samples/fetch-weather/main.mjs b/docs/3-web-servers/06-fetch-api/_samples/fetch-weather/main.mjs new file mode 100644 index 000000000..0a9deea1b --- /dev/null +++ b/docs/3-web-servers/06-fetch-api/_samples/fetch-weather/main.mjs @@ -0,0 +1,10 @@ +import express from "express"; +const app = express(); + +app.use(express.static("./public")); + +app.get("/weather", (request, response) => { + response.send("晴れ"); +}); + +app.listen(3000); \ No newline at end of file diff --git a/docs/3-web-servers/06-fetch-api/_samples/fetch-weather/package.json b/docs/3-web-servers/06-fetch-api/_samples/fetch-weather/package.json new file mode 100644 index 000000000..3b76253af --- /dev/null +++ b/docs/3-web-servers/06-fetch-api/_samples/fetch-weather/package.json @@ -0,0 +1,6 @@ +{ + "name": "fetch-weather", + "dependencies": { + "express": "^5.1.0" + } +} \ No newline at end of file diff --git a/docs/3-web-servers/06-fetch-api/_samples/fetch-weather/public/index.html b/docs/3-web-servers/06-fetch-api/_samples/fetch-weather/public/index.html new file mode 100644 index 000000000..5f8b268f1 --- /dev/null +++ b/docs/3-web-servers/06-fetch-api/_samples/fetch-weather/public/index.html @@ -0,0 +1,11 @@ + + + + + 天気予報 + + + + + + \ No newline at end of file diff --git a/docs/3-web-servers/06-fetch-api/_samples/fetch-weather/public/script.js b/docs/3-web-servers/06-fetch-api/_samples/fetch-weather/public/script.js new file mode 100644 index 000000000..4c1bff3bc --- /dev/null +++ b/docs/3-web-servers/06-fetch-api/_samples/fetch-weather/public/script.js @@ -0,0 +1,5 @@ +document.getElementById("fetch-button").onclick = async () => { + const response = await fetch("/weather"); + const weather = await response.text(); + alert(weather); +}; \ No newline at end of file diff --git a/docs/3-web-servers/06-fetch-api/_samples/nikkei-realtime/main.mjs b/docs/3-web-servers/06-fetch-api/_samples/nikkei-realtime/main.mjs new file mode 100644 index 000000000..57ffade85 --- /dev/null +++ b/docs/3-web-servers/06-fetch-api/_samples/nikkei-realtime/main.mjs @@ -0,0 +1,11 @@ +import express from "express"; +const app = express(); + +app.use(express.static("./public")); + +app.get("/nikkei", (request, response) => { + const nikkei = Math.floor(Math.random() * 20000) + 20000; + response.send(`${nikkei}`); +}); + +app.listen(3000); \ No newline at end of file diff --git a/docs/3-web-servers/06-fetch-api/_samples/nikkei-realtime/package.json b/docs/3-web-servers/06-fetch-api/_samples/nikkei-realtime/package.json new file mode 100644 index 000000000..7c66e759b --- /dev/null +++ b/docs/3-web-servers/06-fetch-api/_samples/nikkei-realtime/package.json @@ -0,0 +1,6 @@ +{ + "name": "nikkei-realtime", + "dependencies": { + "express": "^5.1.0" + } +} \ No newline at end of file diff --git a/docs/3-web-servers/06-fetch-api/_samples/nikkei-realtime/public/index.html b/docs/3-web-servers/06-fetch-api/_samples/nikkei-realtime/public/index.html new file mode 100644 index 000000000..3027dd2cc --- /dev/null +++ b/docs/3-web-servers/06-fetch-api/_samples/nikkei-realtime/public/index.html @@ -0,0 +1,15 @@ + + + + + リアルタイム日経平均株価 + + +

リアルタイム日経平均株価

+

現在の株価: ---

+

更新時刻: ---

+

履歴

+ + + + \ No newline at end of file diff --git a/docs/3-web-servers/06-fetch-api/_samples/nikkei-realtime/public/script.js b/docs/3-web-servers/06-fetch-api/_samples/nikkei-realtime/public/script.js new file mode 100644 index 000000000..2c291ef20 --- /dev/null +++ b/docs/3-web-servers/06-fetch-api/_samples/nikkei-realtime/public/script.js @@ -0,0 +1,27 @@ +async function fetchNikkei() { + const response = await fetch("/nikkei"); + const price = await response.text(); + const now = new Date(); + const timeString = now.toLocaleTimeString("ja-JP"); + + // 現在の株価を更新 + document.getElementById("current-price").textContent = price; + document.getElementById("update-time").textContent = timeString; + + // 履歴に追加 + const historyList = document.getElementById("history"); + const listItem = document.createElement("li"); + listItem.textContent = `${timeString} - ${price}円`; + historyList.insertBefore(listItem, historyList.firstChild); + + // 履歴を最新10件に制限 + while (historyList.children.length > 10) { + historyList.removeChild(historyList.lastChild); + } +} + +// 初回実行 +fetchNikkei(); + +// 10秒ごとに実行 +setInterval(fetchNikkei, 10000); \ No newline at end of file diff --git a/docs/3-web-servers/06-fetch-api/_samples/nikkei-simple/main.mjs b/docs/3-web-servers/06-fetch-api/_samples/nikkei-simple/main.mjs new file mode 100644 index 000000000..73d4b6ba7 --- /dev/null +++ b/docs/3-web-servers/06-fetch-api/_samples/nikkei-simple/main.mjs @@ -0,0 +1,11 @@ +import express from "express"; +const app = express(); + +app.use(express.static("./public")); + +app.get("/nikkei", (request, response) => { + const nikkei = Math.floor(Math.random() * 20000) + 20000; + response.send(`${nikkei}円`); +}); + +app.listen(3000); \ No newline at end of file diff --git a/docs/3-web-servers/06-fetch-api/_samples/nikkei-simple/package.json b/docs/3-web-servers/06-fetch-api/_samples/nikkei-simple/package.json new file mode 100644 index 000000000..c6bbb4dc3 --- /dev/null +++ b/docs/3-web-servers/06-fetch-api/_samples/nikkei-simple/package.json @@ -0,0 +1,6 @@ +{ + "name": "nikkei-simple", + "dependencies": { + "express": "^5.1.0" + } +} \ No newline at end of file diff --git a/docs/3-web-servers/06-fetch-api/_samples/nikkei-simple/public/index.html b/docs/3-web-servers/06-fetch-api/_samples/nikkei-simple/public/index.html new file mode 100644 index 000000000..3d2e5506f --- /dev/null +++ b/docs/3-web-servers/06-fetch-api/_samples/nikkei-simple/public/index.html @@ -0,0 +1,13 @@ + + + + + 日経平均株価 + + +

日経平均株価

+ +

+ + + \ No newline at end of file diff --git a/docs/3-web-servers/06-fetch-api/_samples/nikkei-simple/public/script.js b/docs/3-web-servers/06-fetch-api/_samples/nikkei-simple/public/script.js new file mode 100644 index 000000000..625de76af --- /dev/null +++ b/docs/3-web-servers/06-fetch-api/_samples/nikkei-simple/public/script.js @@ -0,0 +1,5 @@ +document.getElementById("fetch-button").onclick = async () => { + const response = await fetch("/nikkei"); + const price = await response.text(); + document.getElementById("result").textContent = `現在の日経平均株価: ${price}`; +}; \ No newline at end of file diff --git a/docs/3-web-servers/06-fetch-api/index.mdx b/docs/3-web-servers/06-fetch-api/index.mdx index 55728126c..87083a701 100644 --- a/docs/3-web-servers/06-fetch-api/index.mdx +++ b/docs/3-web-servers/06-fetch-api/index.mdx @@ -2,39 +2,257 @@ title: ブラウザとサーバー間の通信 --- -- 前頁では、Webサーバーを構築した -- ブラウザとWebサーバーはHTTPを使って通信することを学んだ -- ブラウザがリクエストを発行するのは、次のいずれかの場合だった - - アドレスバーにURLを入力したとき - - リンクをクリックしたとき - - 取得した HTML に外部リソースを読み込むタグが含まれていたとき -- 実は、JavaScriptを使ってブラウザにリクエストを発行させることもできる -- そのためのAPIがFetch APIだ +前頁では、Webサーバーを構築しました。そして、ブラウザとWebサーバーは**HTTP**を使って通信することを学びました。 -## ブラウザで動く JavaScript でモジュールを用いる +これまで学習してきた中で、ブラウザがリクエストを発行するのは、次のいずれかの場合でした。 -- Fetch API を用いることにより、Webアプリはブラウザの枠を超えた機能を実現できる -- しかし、複雑な処理を行う場合、JavaScriptのコードが長くなり、可読性が低下する -- Node.js では、モジュールを用いてコードを分割することができた -- 実は、ブラウザでも、JavaScriptのコードをモジュールとして分割することができる -- これ以降は、ブラウザで動く JavaScript でもモジュールを用いることを前提にする +- アドレスバーにURLを入力したとき +- リンクをクリックしたとき +- 取得したHTMLに外部リソースを読み込むタグが含まれていたとき -サンプルプログラム・解説 (../04-module/ と同様の内容) +実は、JavaScriptを使ってブラウザにリクエストを発行させることもできます。そのためのAPIが**Fetch API**です。 + +## ブラウザで動くJavaScriptでモジュールを用いる + +Fetch APIを用いることにより、Webアプリはブラウザの枠を超えた機能を実現できます。しかし、複雑な処理を行う場合、JavaScriptのコードが長くなり、可読性が低下します。 + +[「モジュールとnpm」](/docs/web-servers/module/)の章では、Node.jsにおいてモジュールを用いてコードを分割することができることを学びました。実は、ブラウザでも、JavaScriptのコードをモジュールとして分割することができます。 + +これ以降は、ブラウザで動くJavaScriptでもモジュールを用いることを前提にします。 + +### ブラウザでのモジュールの使い方 + +ブラウザでモジュールを使用するには、` + + +``` + +```javascript title="public/main.js" +import { add, multiply } from "./math.js"; + +const sum = add(3, 4); +const product = multiply(3, 4); + +document.getElementById("result").textContent = `3 + 4 = ${sum}, 3 × 4 = ${product}`; +``` + +```javascript title="public/math.js" +export function add(a, b) { + return a + b; +} + +export function multiply(a, b) { + return a * b; +} +``` + +Node.jsの場合と同様に、`export`文と`import`文を用いて他のモジュールとのやり取りを行うことができます。ただし、ブラウザでは拡張子`.js`のファイルでもECMAScriptモジュールとして扱われます。 + +:::tip[モジュールスクリプトの特徴] + +`type="module"`を指定したスクリプトには、次のような特徴があります。 + +- `import`文と`export`文が使用できる +- 自動的に`strict mode`になる +- トップレベルの変数がグローバルスコープを汚染しない +- 同じモジュールを複数回読み込んでも、実行されるのは1回だけ + +::: + + ## Fetch API -- Fetch API は、 `fetch` 関数を呼び出すことで実行できる -- `fetch` 関数にリクエストを発行したい URL を指定することで、[Response](https://developer.mozilla.org/ja/docs/Web/API/Response) オブジェクトを取得できる -- Response オブジェクトの `text` メソッドを呼び出すことで、レスポンスを文字列として取得できる +Fetch APIは、`fetch`関数を呼び出すことで実行できます。`fetch`関数にリクエストを発行したいURLを指定することで、[`Response`](https://developer.mozilla.org/ja/docs/Web/API/Response)オブジェクトを取得できます。`Response`オブジェクトの[`text`メソッド](https://developer.mozilla.org/ja/docs/Web/API/Response/text)を呼び出すことで、レスポンスボディを文字列として取得できます。 + +```javascript title="public/script.js (ブラウザ上で動くJavaScript)" +document.getElementById("fetch-button").onclick = async () => { + const response = await fetch("/weather"); + const weather = await response.text(); + alert(weather); +}; +``` + +:::tip[非同期処理] + +JavaScriptにおける**非同期処理**とは、ファイルの入出力やネットワーク通信など、JavaScriptの外側の時間のかかる処理の完了を待つ間、ほかの処理を実行できるようにする仕組みです。`fetch`関数は非同期処理を行うため、次の2つを行います。 + +- 非同期処理を行う関数を呼び出す関数を定義する際、`async`キーワードをつけること +- 非同期処理を行う関数の戻り値に対し、`await`演算子を適用すること + +詳しくは「[非同期プログラミング](/docs/advanced/async/)」の章で学習します。 + +::: + +```html title="public/index.html" + + + + + 天気予報 + + + + + + +``` + +```javascript title="main.mjs (サーバーとして動くJavaScript)" +import express from "express"; +const app = express(); -非同期処理についてのコラム (async await をつけることだけ触れる) +app.use(express.static("./public")); -サンプルプログラム・解説 (../../4-advanced/01-fetch-api/ と同じ内容) +app.get("/weather", (request, response) => { + response.send("晴れ"); +}); + +app.listen(3000); +``` + + ## 演習問題1 -- Fetch API を用いて日経平均株価を取得するプログラム。日経平均はサーバーで乱数生成 +Fetch APIを用いて日経平均株価を取得するプログラムを作成してください。日経平均株価は、サーバー側で乱数を用いて生成してください。 + +### ヒント + +- サーバー側で`/nikkei`というパスに対するGETリクエストを処理する +- `Math.random()`を使って20000円から40000円の間の値を生成する +- クライアント側でボタンをクリックしたときに`fetch`関数を使って取得する + + + +```javascript title="main.mjs" +import express from "express"; +const app = express(); + +app.use(express.static("./public")); + +app.get("/nikkei", (request, response) => { + const nikkei = Math.floor(Math.random() * 20000) + 20000; + response.send(`${nikkei}円`); +}); + +app.listen(3000); +``` + +```html title="public/index.html" + + + + + 日経平均株価 + + +

日経平均株価

+ +

+ + + +``` + +```javascript title="public/script.js" +document.getElementById("fetch-button").onclick = async () => { + const response = await fetch("/nikkei"); + const price = await response.text(); + document.getElementById("result").textContent = `現在の日経平均株価: ${price}`; +}; +``` + + + +
## 演習問題2 -- 演習問題1に加え、 Fetch API を用いて 10 秒ごとに日経平均株価を取得してリアルタイムに反映させるプログラム +演習問題1に加え、Fetch APIを用いて10秒ごとに日経平均株価を取得してリアルタイムに反映させるプログラムを作成してください。 + +### ヒント + +- `setInterval`関数を使って定期的に実行する +- 取得した値を画面に表示し続ける +- 過去の履歴も含めて表示すると良いでしょう + + + +```javascript title="main.mjs" +import express from "express"; +const app = express(); + +app.use(express.static("./public")); + +app.get("/nikkei", (request, response) => { + const nikkei = Math.floor(Math.random() * 20000) + 20000; + response.send(`${nikkei}`); +}); + +app.listen(3000); +``` + +```html title="public/index.html" + + + + + リアルタイム日経平均株価 + + +

リアルタイム日経平均株価

+

現在の株価: ---

+

更新時刻: ---

+

履歴

+
    + + + +``` + +```javascript title="public/script.js" +async function fetchNikkei() { + const response = await fetch("/nikkei"); + const price = await response.text(); + const now = new Date(); + const timeString = now.toLocaleTimeString("ja-JP"); + + // 現在の株価を更新 + document.getElementById("current-price").textContent = price; + document.getElementById("update-time").textContent = timeString; + + // 履歴に追加 + const historyList = document.getElementById("history"); + const listItem = document.createElement("li"); + listItem.textContent = `${timeString} - ${price}円`; + historyList.insertBefore(listItem, historyList.firstChild); + + // 履歴を最新10件に制限 + while (historyList.children.length > 10) { + historyList.removeChild(historyList.lastChild); + } +} + +// 初回実行 +fetchNikkei(); + +// 10秒ごとに実行 +setInterval(fetchNikkei, 10000); +``` + + + +
    \ No newline at end of file From eda251ff7304d0a938857192677819f5e03e13f1 Mon Sep 17 00:00:00 2001 From: chelproc Date: Mon, 21 Jul 2025 21:55:03 +0900 Subject: [PATCH 03/21] =?UTF-8?q?Fetch=20API=20=E3=81=AE=E8=A8=98=E8=BF=B0?= =?UTF-8?q?=E3=82=92=E6=8B=A1=E5=85=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../_samples/browser-module/.gitignore | 1 + .../_samples/browser-module/main.mjs | 5 +- .../_samples/browser-module/package-lock.json | 755 ++++++++++++++++++ .../_samples/browser-module/package.json | 2 +- .../_samples/browser-module/public/index.html | 4 +- .../_samples/browser-module/public/main.js | 6 - .../_samples/browser-module/public/main.mjs | 7 + .../public/{math.js => math.mjs} | 2 +- .../_samples/fetch-weather/.gitignore | 1 + .../_samples/fetch-weather/main.mjs | 6 +- .../_samples/fetch-weather/package-lock.json | 755 ++++++++++++++++++ .../_samples/fetch-weather/package.json | 2 +- .../_samples/fetch-weather/public/index.html | 6 +- .../_samples/fetch-weather/public/script.js | 5 - .../_samples/fetch-weather/public/script.mjs | 9 + docs/3-web-servers/06-fetch-api/index.mdx | 150 ++-- 16 files changed, 1609 insertions(+), 107 deletions(-) create mode 100644 docs/3-web-servers/06-fetch-api/_samples/browser-module/.gitignore create mode 100644 docs/3-web-servers/06-fetch-api/_samples/browser-module/package-lock.json delete mode 100644 docs/3-web-servers/06-fetch-api/_samples/browser-module/public/main.js create mode 100644 docs/3-web-servers/06-fetch-api/_samples/browser-module/public/main.mjs rename docs/3-web-servers/06-fetch-api/_samples/browser-module/public/{math.js => math.mjs} (97%) create mode 100644 docs/3-web-servers/06-fetch-api/_samples/fetch-weather/.gitignore create mode 100644 docs/3-web-servers/06-fetch-api/_samples/fetch-weather/package-lock.json delete mode 100644 docs/3-web-servers/06-fetch-api/_samples/fetch-weather/public/script.js create mode 100644 docs/3-web-servers/06-fetch-api/_samples/fetch-weather/public/script.mjs diff --git a/docs/3-web-servers/06-fetch-api/_samples/browser-module/.gitignore b/docs/3-web-servers/06-fetch-api/_samples/browser-module/.gitignore new file mode 100644 index 000000000..07e6e472c --- /dev/null +++ b/docs/3-web-servers/06-fetch-api/_samples/browser-module/.gitignore @@ -0,0 +1 @@ +/node_modules diff --git a/docs/3-web-servers/06-fetch-api/_samples/browser-module/main.mjs b/docs/3-web-servers/06-fetch-api/_samples/browser-module/main.mjs index 105d59e3c..a5f68fa95 100644 --- a/docs/3-web-servers/06-fetch-api/_samples/browser-module/main.mjs +++ b/docs/3-web-servers/06-fetch-api/_samples/browser-module/main.mjs @@ -1,6 +1,5 @@ import express from "express"; -const app = express(); +const app = express(); app.use(express.static("./public")); - -app.listen(3000); \ No newline at end of file +app.listen(3000); diff --git a/docs/3-web-servers/06-fetch-api/_samples/browser-module/package-lock.json b/docs/3-web-servers/06-fetch-api/_samples/browser-module/package-lock.json new file mode 100644 index 000000000..89871efa3 --- /dev/null +++ b/docs/3-web-servers/06-fetch-api/_samples/browser-module/package-lock.json @@ -0,0 +1,755 @@ +{ + "name": "browser-module", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "browser-module", + "dependencies": { + "express": "^5.1.0" + } + }, + "node_modules/accepts": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-2.0.0.tgz", + "integrity": "sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==", + "dependencies": { + "mime-types": "^3.0.0", + "negotiator": "^1.0.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/body-parser": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-2.2.0.tgz", + "integrity": "sha512-02qvAaxv8tp7fBa/mw1ga98OGm+eCbqzJOKoRt70sLmfEEi+jyBYVTDGfCL/k06/4EMk/z01gCe7HoCH/f2LTg==", + "dependencies": { + "bytes": "^3.1.2", + "content-type": "^1.0.5", + "debug": "^4.4.0", + "http-errors": "^2.0.0", + "iconv-lite": "^0.6.3", + "on-finished": "^2.4.1", + "qs": "^6.14.0", + "raw-body": "^3.0.0", + "type-is": "^2.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "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-apply-helpers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/call-bound": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", + "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "get-intrinsic": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/content-disposition": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-1.0.0.tgz", + "integrity": "sha512-Au9nRL8VNUut/XSzbQA38+M78dzP4D+eqg3gfJHMIHHYa3bg067xj1KxMUWj+VULbiZMowKngFFbKczUrNJ1mg==", + "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.7.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz", + "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie-signature": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.2.2.tgz", + "integrity": "sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg==", + "engines": { + "node": ">=6.6.0" + } + }, + "node_modules/debug": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz", + "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "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/dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "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": "2.0.0", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", + "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/es-define-property": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-object-atoms": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "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": "5.1.0", + "resolved": "https://registry.npmjs.org/express/-/express-5.1.0.tgz", + "integrity": "sha512-DT9ck5YIRU+8GYzzU5kT3eHGA5iL+1Zd0EutOmTE9Dtk+Tvuzd23VBU+ec7HPNSTxXYO55gPV/hq4pSBJDjFpA==", + "dependencies": { + "accepts": "^2.0.0", + "body-parser": "^2.2.0", + "content-disposition": "^1.0.0", + "content-type": "^1.0.5", + "cookie": "^0.7.1", + "cookie-signature": "^1.2.1", + "debug": "^4.4.0", + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "etag": "^1.8.1", + "finalhandler": "^2.1.0", + "fresh": "^2.0.0", + "http-errors": "^2.0.0", + "merge-descriptors": "^2.0.0", + "mime-types": "^3.0.0", + "on-finished": "^2.4.1", + "once": "^1.4.0", + "parseurl": "^1.3.3", + "proxy-addr": "^2.0.7", + "qs": "^6.14.0", + "range-parser": "^1.2.1", + "router": "^2.2.0", + "send": "^1.1.0", + "serve-static": "^2.2.0", + "statuses": "^2.0.1", + "type-is": "^2.0.1", + "vary": "^1.1.2" + }, + "engines": { + "node": ">= 18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/finalhandler": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-2.1.0.tgz", + "integrity": "sha512-/t88Ty3d5JWQbWYgaOGCCYfXRwV1+be02WqYYlL6h0lEiUAMPM8o8qKGO01YIkOHzka2up08wvgYD0mDiI+q3Q==", + "dependencies": { + "debug": "^4.4.0", + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "on-finished": "^2.4.1", + "parseurl": "^1.3.3", + "statuses": "^2.0.1" + }, + "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": "2.0.0", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-2.0.0.tgz", + "integrity": "sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-intrinsic": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "function-bind": "^1.1.2", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/gopd": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "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/http-errors/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/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "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/is-promise": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-4.0.0.tgz", + "integrity": "sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==" + }, + "node_modules/math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/media-typer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-1.1.0.tgz", + "integrity": "sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/merge-descriptors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-2.0.0.tgz", + "integrity": "sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g==", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/mime-db": { + "version": "1.54.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz", + "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.1.tgz", + "integrity": "sha512-xRc4oEhT6eaBpU1XF7AjpOFD+xQmXNB5OVKwp4tqCuBpHLS/ZbBDrc07mYTDqVMg6PfxUjjNp85O6Cd2Z/5HWA==", + "dependencies": { + "mime-db": "^1.54.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "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/negotiator": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-1.0.0.tgz", + "integrity": "sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/object-inspect": { + "version": "1.13.4", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", + "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dependencies": { + "wrappy": "1" + } + }, + "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": "8.2.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-8.2.0.tgz", + "integrity": "sha512-TdrF7fW9Rphjq4RjrW0Kp2AW0Ahwu9sRGTkS6bvDi0SCwZlEZYmcfDbEsTz8RVk0EHIS/Vd1bv3JhG+1xZuAyQ==", + "engines": { + "node": ">=16" + } + }, + "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.14.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.0.tgz", + "integrity": "sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==", + "dependencies": { + "side-channel": "^1.1.0" + }, + "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": "3.0.0", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-3.0.0.tgz", + "integrity": "sha512-RmkhL8CAyCRPXCE28MMH0z2PNWQBNk2Q09ZdxM9IOOXwxwZbN+qbWaatPkdkWIKL2ZVDImrN/pK5HTRz2PcS4g==", + "dependencies": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.6.3", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/router": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/router/-/router-2.2.0.tgz", + "integrity": "sha512-nLTrUKm2UyiL7rlhapu/Zl45FwNgkZGaCpZbIHajDYgwlJCOzLSk+cIPAnsEqV955GjILJnKbdQC1nVPz+gAYQ==", + "dependencies": { + "debug": "^4.4.0", + "depd": "^2.0.0", + "is-promise": "^4.0.0", + "parseurl": "^1.3.3", + "path-to-regexp": "^8.0.0" + }, + "engines": { + "node": ">= 18" + } + }, + "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": "1.2.0", + "resolved": "https://registry.npmjs.org/send/-/send-1.2.0.tgz", + "integrity": "sha512-uaW0WwXKpL9blXE2o0bRhoL2EGXIrZxQ2ZQ4mgcfoBxdFmQold+qWsD2jLrfZ0trjKL6vOw0j//eAwcALFjKSw==", + "dependencies": { + "debug": "^4.3.5", + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "etag": "^1.8.1", + "fresh": "^2.0.0", + "http-errors": "^2.0.0", + "mime-types": "^3.0.1", + "ms": "^2.1.3", + "on-finished": "^2.4.1", + "range-parser": "^1.2.1", + "statuses": "^2.0.1" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/serve-static": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-2.2.0.tgz", + "integrity": "sha512-61g9pCh0Vnh7IutZjtLGGpTA355+OPn2TyDv/6ivP2h/AdAVX9azsoxmg2/M6nZeQZNYBEwIcsne1mJd9oQItQ==", + "dependencies": { + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "parseurl": "^1.3.3", + "send": "^1.2.0" + }, + "engines": { + "node": ">= 18" + } + }, + "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.1.0", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", + "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3", + "side-channel-list": "^1.0.0", + "side-channel-map": "^1.0.1", + "side-channel-weakmap": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-list": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", + "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-map": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", + "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-weakmap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", + "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3", + "side-channel-map": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/statuses": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz", + "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==", + "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": "2.0.1", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-2.0.1.tgz", + "integrity": "sha512-OZs6gsjF4vMp32qrCbiVSkrFmXtG/AZhY3t0iAMrMBiAZyV9oALtXO8hsrHbMXF9x6L3grlFuwW2oAz7cav+Gw==", + "dependencies": { + "content-type": "^1.0.5", + "media-typer": "^1.1.0", + "mime-types": "^3.0.0" + }, + "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/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" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" + } + } +} diff --git a/docs/3-web-servers/06-fetch-api/_samples/browser-module/package.json b/docs/3-web-servers/06-fetch-api/_samples/browser-module/package.json index e2eab74f3..2a4cf9aa8 100644 --- a/docs/3-web-servers/06-fetch-api/_samples/browser-module/package.json +++ b/docs/3-web-servers/06-fetch-api/_samples/browser-module/package.json @@ -3,4 +3,4 @@ "dependencies": { "express": "^5.1.0" } -} \ No newline at end of file +} diff --git a/docs/3-web-servers/06-fetch-api/_samples/browser-module/public/index.html b/docs/3-web-servers/06-fetch-api/_samples/browser-module/public/index.html index be8734139..5d2f4f9f3 100644 --- a/docs/3-web-servers/06-fetch-api/_samples/browser-module/public/index.html +++ b/docs/3-web-servers/06-fetch-api/_samples/browser-module/public/index.html @@ -7,6 +7,6 @@

    計算結果

    - + - \ No newline at end of file + diff --git a/docs/3-web-servers/06-fetch-api/_samples/browser-module/public/main.js b/docs/3-web-servers/06-fetch-api/_samples/browser-module/public/main.js deleted file mode 100644 index 26bf24c4e..000000000 --- a/docs/3-web-servers/06-fetch-api/_samples/browser-module/public/main.js +++ /dev/null @@ -1,6 +0,0 @@ -import { add, multiply } from "./math.js"; - -const sum = add(3, 4); -const product = multiply(3, 4); - -document.getElementById("result").textContent = `3 + 4 = ${sum}, 3 × 4 = ${product}`; \ No newline at end of file diff --git a/docs/3-web-servers/06-fetch-api/_samples/browser-module/public/main.mjs b/docs/3-web-servers/06-fetch-api/_samples/browser-module/public/main.mjs new file mode 100644 index 000000000..f5e88ba24 --- /dev/null +++ b/docs/3-web-servers/06-fetch-api/_samples/browser-module/public/main.mjs @@ -0,0 +1,7 @@ +import { add, multiply } from "./math.mjs"; + +const sum = add(3, 4); +const product = multiply(3, 4); + +const resultElement = document.getElementById("result"); +resultElement.textContent = `3 + 4 = ${sum}, 3 × 4 = ${product}`; diff --git a/docs/3-web-servers/06-fetch-api/_samples/browser-module/public/math.js b/docs/3-web-servers/06-fetch-api/_samples/browser-module/public/math.mjs similarity index 97% rename from docs/3-web-servers/06-fetch-api/_samples/browser-module/public/math.js rename to docs/3-web-servers/06-fetch-api/_samples/browser-module/public/math.mjs index 5dc492535..e059eb589 100644 --- a/docs/3-web-servers/06-fetch-api/_samples/browser-module/public/math.js +++ b/docs/3-web-servers/06-fetch-api/_samples/browser-module/public/math.mjs @@ -4,4 +4,4 @@ export function add(a, b) { export function multiply(a, b) { return a * b; -} \ No newline at end of file +} diff --git a/docs/3-web-servers/06-fetch-api/_samples/fetch-weather/.gitignore b/docs/3-web-servers/06-fetch-api/_samples/fetch-weather/.gitignore new file mode 100644 index 000000000..07e6e472c --- /dev/null +++ b/docs/3-web-servers/06-fetch-api/_samples/fetch-weather/.gitignore @@ -0,0 +1 @@ +/node_modules diff --git a/docs/3-web-servers/06-fetch-api/_samples/fetch-weather/main.mjs b/docs/3-web-servers/06-fetch-api/_samples/fetch-weather/main.mjs index 0a9deea1b..55bdb6770 100644 --- a/docs/3-web-servers/06-fetch-api/_samples/fetch-weather/main.mjs +++ b/docs/3-web-servers/06-fetch-api/_samples/fetch-weather/main.mjs @@ -1,10 +1,8 @@ import express from "express"; -const app = express(); +const app = express(); app.use(express.static("./public")); - app.get("/weather", (request, response) => { response.send("晴れ"); }); - -app.listen(3000); \ No newline at end of file +app.listen(3000); diff --git a/docs/3-web-servers/06-fetch-api/_samples/fetch-weather/package-lock.json b/docs/3-web-servers/06-fetch-api/_samples/fetch-weather/package-lock.json new file mode 100644 index 000000000..66f41388e --- /dev/null +++ b/docs/3-web-servers/06-fetch-api/_samples/fetch-weather/package-lock.json @@ -0,0 +1,755 @@ +{ + "name": "fetch-weather", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "fetch-weather", + "dependencies": { + "express": "^5.1.0" + } + }, + "node_modules/accepts": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-2.0.0.tgz", + "integrity": "sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==", + "dependencies": { + "mime-types": "^3.0.0", + "negotiator": "^1.0.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/body-parser": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-2.2.0.tgz", + "integrity": "sha512-02qvAaxv8tp7fBa/mw1ga98OGm+eCbqzJOKoRt70sLmfEEi+jyBYVTDGfCL/k06/4EMk/z01gCe7HoCH/f2LTg==", + "dependencies": { + "bytes": "^3.1.2", + "content-type": "^1.0.5", + "debug": "^4.4.0", + "http-errors": "^2.0.0", + "iconv-lite": "^0.6.3", + "on-finished": "^2.4.1", + "qs": "^6.14.0", + "raw-body": "^3.0.0", + "type-is": "^2.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "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-apply-helpers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/call-bound": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", + "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "get-intrinsic": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/content-disposition": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-1.0.0.tgz", + "integrity": "sha512-Au9nRL8VNUut/XSzbQA38+M78dzP4D+eqg3gfJHMIHHYa3bg067xj1KxMUWj+VULbiZMowKngFFbKczUrNJ1mg==", + "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.7.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz", + "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie-signature": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.2.2.tgz", + "integrity": "sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg==", + "engines": { + "node": ">=6.6.0" + } + }, + "node_modules/debug": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz", + "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "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/dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "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": "2.0.0", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", + "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/es-define-property": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-object-atoms": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "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": "5.1.0", + "resolved": "https://registry.npmjs.org/express/-/express-5.1.0.tgz", + "integrity": "sha512-DT9ck5YIRU+8GYzzU5kT3eHGA5iL+1Zd0EutOmTE9Dtk+Tvuzd23VBU+ec7HPNSTxXYO55gPV/hq4pSBJDjFpA==", + "dependencies": { + "accepts": "^2.0.0", + "body-parser": "^2.2.0", + "content-disposition": "^1.0.0", + "content-type": "^1.0.5", + "cookie": "^0.7.1", + "cookie-signature": "^1.2.1", + "debug": "^4.4.0", + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "etag": "^1.8.1", + "finalhandler": "^2.1.0", + "fresh": "^2.0.0", + "http-errors": "^2.0.0", + "merge-descriptors": "^2.0.0", + "mime-types": "^3.0.0", + "on-finished": "^2.4.1", + "once": "^1.4.0", + "parseurl": "^1.3.3", + "proxy-addr": "^2.0.7", + "qs": "^6.14.0", + "range-parser": "^1.2.1", + "router": "^2.2.0", + "send": "^1.1.0", + "serve-static": "^2.2.0", + "statuses": "^2.0.1", + "type-is": "^2.0.1", + "vary": "^1.1.2" + }, + "engines": { + "node": ">= 18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/finalhandler": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-2.1.0.tgz", + "integrity": "sha512-/t88Ty3d5JWQbWYgaOGCCYfXRwV1+be02WqYYlL6h0lEiUAMPM8o8qKGO01YIkOHzka2up08wvgYD0mDiI+q3Q==", + "dependencies": { + "debug": "^4.4.0", + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "on-finished": "^2.4.1", + "parseurl": "^1.3.3", + "statuses": "^2.0.1" + }, + "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": "2.0.0", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-2.0.0.tgz", + "integrity": "sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-intrinsic": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "function-bind": "^1.1.2", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/gopd": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "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/http-errors/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/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "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/is-promise": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-4.0.0.tgz", + "integrity": "sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==" + }, + "node_modules/math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/media-typer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-1.1.0.tgz", + "integrity": "sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/merge-descriptors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-2.0.0.tgz", + "integrity": "sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g==", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/mime-db": { + "version": "1.54.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz", + "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.1.tgz", + "integrity": "sha512-xRc4oEhT6eaBpU1XF7AjpOFD+xQmXNB5OVKwp4tqCuBpHLS/ZbBDrc07mYTDqVMg6PfxUjjNp85O6Cd2Z/5HWA==", + "dependencies": { + "mime-db": "^1.54.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "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/negotiator": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-1.0.0.tgz", + "integrity": "sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/object-inspect": { + "version": "1.13.4", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", + "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dependencies": { + "wrappy": "1" + } + }, + "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": "8.2.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-8.2.0.tgz", + "integrity": "sha512-TdrF7fW9Rphjq4RjrW0Kp2AW0Ahwu9sRGTkS6bvDi0SCwZlEZYmcfDbEsTz8RVk0EHIS/Vd1bv3JhG+1xZuAyQ==", + "engines": { + "node": ">=16" + } + }, + "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.14.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.0.tgz", + "integrity": "sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==", + "dependencies": { + "side-channel": "^1.1.0" + }, + "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": "3.0.0", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-3.0.0.tgz", + "integrity": "sha512-RmkhL8CAyCRPXCE28MMH0z2PNWQBNk2Q09ZdxM9IOOXwxwZbN+qbWaatPkdkWIKL2ZVDImrN/pK5HTRz2PcS4g==", + "dependencies": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.6.3", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/router": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/router/-/router-2.2.0.tgz", + "integrity": "sha512-nLTrUKm2UyiL7rlhapu/Zl45FwNgkZGaCpZbIHajDYgwlJCOzLSk+cIPAnsEqV955GjILJnKbdQC1nVPz+gAYQ==", + "dependencies": { + "debug": "^4.4.0", + "depd": "^2.0.0", + "is-promise": "^4.0.0", + "parseurl": "^1.3.3", + "path-to-regexp": "^8.0.0" + }, + "engines": { + "node": ">= 18" + } + }, + "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": "1.2.0", + "resolved": "https://registry.npmjs.org/send/-/send-1.2.0.tgz", + "integrity": "sha512-uaW0WwXKpL9blXE2o0bRhoL2EGXIrZxQ2ZQ4mgcfoBxdFmQold+qWsD2jLrfZ0trjKL6vOw0j//eAwcALFjKSw==", + "dependencies": { + "debug": "^4.3.5", + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "etag": "^1.8.1", + "fresh": "^2.0.0", + "http-errors": "^2.0.0", + "mime-types": "^3.0.1", + "ms": "^2.1.3", + "on-finished": "^2.4.1", + "range-parser": "^1.2.1", + "statuses": "^2.0.1" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/serve-static": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-2.2.0.tgz", + "integrity": "sha512-61g9pCh0Vnh7IutZjtLGGpTA355+OPn2TyDv/6ivP2h/AdAVX9azsoxmg2/M6nZeQZNYBEwIcsne1mJd9oQItQ==", + "dependencies": { + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "parseurl": "^1.3.3", + "send": "^1.2.0" + }, + "engines": { + "node": ">= 18" + } + }, + "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.1.0", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", + "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3", + "side-channel-list": "^1.0.0", + "side-channel-map": "^1.0.1", + "side-channel-weakmap": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-list": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", + "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-map": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", + "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-weakmap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", + "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3", + "side-channel-map": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/statuses": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz", + "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==", + "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": "2.0.1", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-2.0.1.tgz", + "integrity": "sha512-OZs6gsjF4vMp32qrCbiVSkrFmXtG/AZhY3t0iAMrMBiAZyV9oALtXO8hsrHbMXF9x6L3grlFuwW2oAz7cav+Gw==", + "dependencies": { + "content-type": "^1.0.5", + "media-typer": "^1.1.0", + "mime-types": "^3.0.0" + }, + "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/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" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" + } + } +} diff --git a/docs/3-web-servers/06-fetch-api/_samples/fetch-weather/package.json b/docs/3-web-servers/06-fetch-api/_samples/fetch-weather/package.json index 3b76253af..1a8c98d3b 100644 --- a/docs/3-web-servers/06-fetch-api/_samples/fetch-weather/package.json +++ b/docs/3-web-servers/06-fetch-api/_samples/fetch-weather/package.json @@ -3,4 +3,4 @@ "dependencies": { "express": "^5.1.0" } -} \ No newline at end of file +} diff --git a/docs/3-web-servers/06-fetch-api/_samples/fetch-weather/public/index.html b/docs/3-web-servers/06-fetch-api/_samples/fetch-weather/public/index.html index 5f8b268f1..f6fbcb501 100644 --- a/docs/3-web-servers/06-fetch-api/_samples/fetch-weather/public/index.html +++ b/docs/3-web-servers/06-fetch-api/_samples/fetch-weather/public/index.html @@ -5,7 +5,7 @@ 天気予報 - - +

    本日の天気はです。

    + - \ No newline at end of file + diff --git a/docs/3-web-servers/06-fetch-api/_samples/fetch-weather/public/script.js b/docs/3-web-servers/06-fetch-api/_samples/fetch-weather/public/script.js deleted file mode 100644 index 4c1bff3bc..000000000 --- a/docs/3-web-servers/06-fetch-api/_samples/fetch-weather/public/script.js +++ /dev/null @@ -1,5 +0,0 @@ -document.getElementById("fetch-button").onclick = async () => { - const response = await fetch("/weather"); - const weather = await response.text(); - alert(weather); -}; \ No newline at end of file diff --git a/docs/3-web-servers/06-fetch-api/_samples/fetch-weather/public/script.mjs b/docs/3-web-servers/06-fetch-api/_samples/fetch-weather/public/script.mjs new file mode 100644 index 000000000..27dd1c066 --- /dev/null +++ b/docs/3-web-servers/06-fetch-api/_samples/fetch-weather/public/script.mjs @@ -0,0 +1,9 @@ +// http://localhost:3000/weather に HTTP リクエストを送信 +// fetch 関数は非同期処理を行うため、await を演算子を適用して完了を待機する +const response = await fetch("/weather"); + +// レスポンスをテキストとして取得 +const weather = await response.text(); + +const weatherElement = document.getElementById("weather"); +weatherElement.textContent = weather; diff --git a/docs/3-web-servers/06-fetch-api/index.mdx b/docs/3-web-servers/06-fetch-api/index.mdx index 87083a701..6b770eaa2 100644 --- a/docs/3-web-servers/06-fetch-api/index.mdx +++ b/docs/3-web-servers/06-fetch-api/index.mdx @@ -1,54 +1,48 @@ --- -title: ブラウザとサーバー間の通信 +title: Fetch API --- -前頁では、Webサーバーを構築しました。そして、ブラウザとWebサーバーは**HTTP**を使って通信することを学びました。 +前頁では、Webサーバーが動作する仕組みと、ブラウザとWebサーバーの間で行われる基本的な通信の手順について学びました。この流れの中では、ブラウザは、次のような場合にHTTPリクエストをWebサーバーに対して送信するのでした。 -これまで学習してきた中で、ブラウザがリクエストを発行するのは、次のいずれかの場合でした。 +1. アドレスバーにURLを入力したとき +2. リンクをクリックしたとき +3. 取得したHTMLに外部リソースを読み込むタグが含まれていたとき -- アドレスバーにURLを入力したとき -- リンクをクリックしたとき -- 取得したHTMLに外部リソースを読み込むタグが含まれていたとき +しかし、この方法では、新しい情報を取得する度にブラウザのページ遷移が必要になるため、複雑なアプリケーションを構築するには不便です。**Fetch API**を用いると、ブラウザ上で動作するJavaScriptから、Webサーバーに対して直接HTTPリクエストを発行し、レスポンスを受け取ることができます。これにより、Webアプリケーションはページ遷移を伴わずに新しい情報を取得したり、サーバーと通信したりすることが可能になります。 -実は、JavaScriptを使ってブラウザにリクエストを発行させることもできます。そのためのAPIが**Fetch API**です。 +## ブラウザで動作するJavaScriptでモジュールを用いる -## ブラウザで動くJavaScriptでモジュールを用いる +JavaScriptを用いて複雑なプログラムを記載する際、1ファイルに含まれるJavaScriptのコードが長くなると、全体を把握するのが難しくなります。[モジュールとnpm](/docs/web-servers/module/)の章では、**モジュール**を用いることで、Node.jsにおいて巨大なコードを分割することができることを学びました。ブラウザにおいても同様にモジュールの仕組みが使用できます。 -Fetch APIを用いることにより、Webアプリはブラウザの枠を超えた機能を実現できます。しかし、複雑な処理を行う場合、JavaScriptのコードが長くなり、可読性が低下します。 +ブラウザでモジュールを使用するには、`script`タグの`type`属性に対し、`"module"`を指定します。これにより、読み込まれたJavaScriptがモジュールとして扱われ、`import`文や`export`文を使用できるようになります。ブラウザは、まだ取得されていないモジュールへの`import`文を見つけると、新しいリクエストを発行して、指定されたモジュールを読み込みます。 -[「モジュールとnpm」](/docs/web-servers/module/)の章では、Node.jsにおいてモジュールを用いてコードを分割することができることを学びました。実は、ブラウザでも、JavaScriptのコードをモジュールとして分割することができます。 +次の例では、`index.html`から`main.mjs`をモジュールとして読み込んでいます。`main.mjs`の中では、別のモジュールである`math.mjs`からエクスポートされた、`add`関数と`multiply`関数をインポートして使用しています。 -これ以降は、ブラウザで動くJavaScriptでもモジュールを用いることを前提にします。 - -### ブラウザでのモジュールの使い方 +```javascript title="main.mjs (サーバーとして動作するJavaScript)" +import express from "express"; -ブラウザでモジュールを使用するには、` - - +```html title="public/index.html (抜粋)" +

    計算結果

    +

    + ``` -```javascript title="public/main.js" -import { add, multiply } from "./math.js"; +```javascript title="public/main.mjs (ブラウザ上で動作するJavaScript)" +import { add, multiply } from "./math.mjs"; const sum = add(3, 4); const product = multiply(3, 4); -document.getElementById("result").textContent = `3 + 4 = ${sum}, 3 × 4 = ${product}`; +const resultElement = document.getElementById("result"); +resultElement.textContent = `3 + 4 = ${sum}, 3 × 4 = ${product}`; ``` -```javascript title="public/math.js" +```javascript title="public/math.mjs (ブラウザ上で動作するJavaScript)" export function add(a, b) { return a + b; } @@ -58,73 +52,66 @@ export function multiply(a, b) { } ``` -Node.jsの場合と同様に、`export`文と`import`文を用いて他のモジュールとのやり取りを行うことができます。ただし、ブラウザでは拡張子`.js`のファイルでもECMAScriptモジュールとして扱われます。 + -:::tip[モジュールスクリプトの特徴] +この項以降、ブラウザで動作するJavaScriptのコードは、全てモジュールを用いて記述していきます。 -`type="module"`を指定したスクリプトには、次のような特徴があります。 +:::warning[HTMLファイルをブラウザで開く場合] -- `import`文と`export`文が使用できる -- 自動的に`strict mode`になる -- トップレベルの変数がグローバルスコープを汚染しない -- 同じモジュールを複数回読み込んでも、実行されるのは1回だけ +第1章で使用したような、HTMLファイルを直接ブラウザで開く方法では、モジュールを使用できません。この例のように、Express等を用いてWebサーバーを構築し、Webサーバー経由でブラウザにHTMLを取得させる必要があります。 ::: - - ## Fetch API -Fetch APIは、`fetch`関数を呼び出すことで実行できます。`fetch`関数にリクエストを発行したいURLを指定することで、[`Response`](https://developer.mozilla.org/ja/docs/Web/API/Response)オブジェクトを取得できます。`Response`オブジェクトの[`text`メソッド](https://developer.mozilla.org/ja/docs/Web/API/Response/text)を呼び出すことで、レスポンスボディを文字列として取得できます。 - -```javascript title="public/script.js (ブラウザ上で動くJavaScript)" -document.getElementById("fetch-button").onclick = async () => { - const response = await fetch("/weather"); - const weather = await response.text(); - alert(weather); -}; -``` - -:::tip[非同期処理] - -JavaScriptにおける**非同期処理**とは、ファイルの入出力やネットワーク通信など、JavaScriptの外側の時間のかかる処理の完了を待つ間、ほかの処理を実行できるようにする仕組みです。`fetch`関数は非同期処理を行うため、次の2つを行います。 - -- 非同期処理を行う関数を呼び出す関数を定義する際、`async`キーワードをつけること -- 非同期処理を行う関数の戻り値に対し、`await`演算子を適用すること - -詳しくは「[非同期プログラミング](/docs/advanced/async/)」の章で学習します。 +Fetch APIは、`fetch`関数を呼び出すことで実行できます。`fetch`関数にリクエストを発行したいURLを指定することで、HTTPリクエストを発行し、[`Response`](https://developer.mozilla.org/ja/docs/Web/API/Response)オブジェクトを取得できます。`Response`オブジェクトの[`text`メソッド](https://developer.mozilla.org/ja/docs/Web/API/Response/text)を呼び出すことで、レスポンスボディを文字列として取得できます。 -::: +次の例では、ブラウザは`script.mjs`の中で`fetch("/weather")`が呼び出されたときに、Webサーバーに対して`/weather`というパスに対するリクエストを発行します。Webサーバーは、`/weather`に対するリクエストを受け取ると、レスポンスとして「晴れ」という文字列を返します。ブラウザは、このレスポンスを受け取り、HTMLの中の`span`要素に「晴れ」という文字列を表示します。 -```html title="public/index.html" - - - - - 天気予報 - - - - - - -``` +`fetch`関数や `Response#text` メソッドは、時間のかかる処理を行うため、**非同期処理**としてバックグラウンドで実行されます。この例では、式`fetch("/weather")`の評価は直ちに完了しますが、まだHTTPリクエストは完了していません。`await fetch("/weather")`のように、**`await`演算子を適用**することで、HTTPリクエストが完了するまで待機し、実際のレスポンスを取得できます。 -```javascript title="main.mjs (サーバーとして動くJavaScript)" +```javascript title="main.mjs (サーバーとして動作するJavaScript)" import express from "express"; -const app = express(); +const app = express(); app.use(express.static("./public")); - app.get("/weather", (request, response) => { response.send("晴れ"); }); - app.listen(3000); ``` +```html title="public/index.html" +

    本日の天気はです。

    + +``` + +```javascript title="public/script.mjs (ブラウザ上で動作するJavaScript)" +// http://localhost:3000/weather に HTTP リクエストを送信 +// fetch 関数は非同期処理を行うため、await を演算子を適用して完了を待機する +const response = await fetch("/weather"); + +// レスポンスをテキストとして取得 +const weather = await response.text(); + +const weatherElement = document.getElementById("weather"); +weatherElement.textContent = weather; +``` + +:::tip[非同期処理] + +JavaScriptにおける**非同期処理**とは、ファイルの入出力やネットワーク通信など、JavaScriptの外側の時間のかかる処理の完了を待つ間、ほかの処理を実行できるようにする仕組みです。非同期処理を行う関数を使用するためには、次の2つのルールを守る必要があります。 + +- 非同期処理を行う関数を呼び出す関数を定義する際、`async`キーワードをつけること + - ただし、モジュールのトップレベル (関数の外側) では、`async`キーワードは不要 +- 非同期処理を行う関数の戻り値に対し、`await`演算子を適用すること + +非同期処理を行う関数の戻り値の実態は、`Promise`と呼ばれるオブジェクトです。`await`演算子は、`Promise`オブジェクトに作用し、その処理が完了するまで待機します。詳細は、[MDNの記事](https://developer.mozilla.org/ja/docs/Learn/JavaScript/Asynchronous)を参照してください。 + +::: + ## 演習問題1 Fetch APIを用いて日経平均株価を取得するプログラムを作成してください。日経平均株価は、サーバー側で乱数を用いて生成してください。 @@ -171,7 +158,8 @@ app.listen(3000); document.getElementById("fetch-button").onclick = async () => { const response = await fetch("/nikkei"); const price = await response.text(); - document.getElementById("result").textContent = `現在の日経平均株価: ${price}`; + document.getElementById("result").textContent = + `現在の日経平均株価: ${price}`; }; ``` @@ -229,17 +217,17 @@ async function fetchNikkei() { const price = await response.text(); const now = new Date(); const timeString = now.toLocaleTimeString("ja-JP"); - + // 現在の株価を更新 document.getElementById("current-price").textContent = price; document.getElementById("update-time").textContent = timeString; - + // 履歴に追加 const historyList = document.getElementById("history"); const listItem = document.createElement("li"); listItem.textContent = `${timeString} - ${price}円`; historyList.insertBefore(listItem, historyList.firstChild); - + // 履歴を最新10件に制限 while (historyList.children.length > 10) { historyList.removeChild(historyList.lastChild); @@ -255,4 +243,4 @@ setInterval(fetchNikkei, 10000); - \ No newline at end of file + From e14f441ede25baea0a53a5b66bbb7ac845e26502 Mon Sep 17 00:00:00 2001 From: chelproc Date: Mon, 21 Jul 2025 22:32:17 +0900 Subject: [PATCH 04/21] refactor: Replace Nikkei examples with JPY/USD exchange rate examples MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Changed Exercise 1 from Nikkei stock price to exchange rate display - Uses top-level fetch without button (immediate page load) - Generates random exchange rate between 140-160 yen/dollar - Changed Exercise 2 from real-time stock updates to currency converter - Added input field for JPY amount with button-triggered conversion - Removed setInterval functionality - Added async/await usage warning with examples - Updated all sample files to use .mjs extension and type="module" - Renamed sample directories: - nikkei-simple → exchange-rate - nikkei-realtime → currency-converter 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude --- .../_samples/currency-converter/main.mjs | 11 ++ .../package.json | 0 .../currency-converter/public/index.html | 18 +++ .../currency-converter/public/script.mjs | 25 +++ .../_samples/exchange-rate/main.mjs | 11 ++ .../package.json | 0 .../_samples/exchange-rate/public/index.html | 12 ++ .../_samples/exchange-rate/public/script.mjs | 4 + .../_samples/nikkei-realtime/main.mjs | 11 -- .../nikkei-realtime/public/index.html | 15 -- .../_samples/nikkei-realtime/public/script.js | 27 ---- .../_samples/nikkei-simple/main.mjs | 11 -- .../_samples/nikkei-simple/public/index.html | 13 -- .../_samples/nikkei-simple/public/script.js | 5 - docs/3-web-servers/06-fetch-api/index.mdx | 144 ++++++++++-------- 15 files changed, 161 insertions(+), 146 deletions(-) create mode 100644 docs/3-web-servers/06-fetch-api/_samples/currency-converter/main.mjs rename docs/3-web-servers/06-fetch-api/_samples/{nikkei-realtime => currency-converter}/package.json (100%) create mode 100644 docs/3-web-servers/06-fetch-api/_samples/currency-converter/public/index.html create mode 100644 docs/3-web-servers/06-fetch-api/_samples/currency-converter/public/script.mjs create mode 100644 docs/3-web-servers/06-fetch-api/_samples/exchange-rate/main.mjs rename docs/3-web-servers/06-fetch-api/_samples/{nikkei-simple => exchange-rate}/package.json (100%) create mode 100644 docs/3-web-servers/06-fetch-api/_samples/exchange-rate/public/index.html create mode 100644 docs/3-web-servers/06-fetch-api/_samples/exchange-rate/public/script.mjs delete mode 100644 docs/3-web-servers/06-fetch-api/_samples/nikkei-realtime/main.mjs delete mode 100644 docs/3-web-servers/06-fetch-api/_samples/nikkei-realtime/public/index.html delete mode 100644 docs/3-web-servers/06-fetch-api/_samples/nikkei-realtime/public/script.js delete mode 100644 docs/3-web-servers/06-fetch-api/_samples/nikkei-simple/main.mjs delete mode 100644 docs/3-web-servers/06-fetch-api/_samples/nikkei-simple/public/index.html delete mode 100644 docs/3-web-servers/06-fetch-api/_samples/nikkei-simple/public/script.js diff --git a/docs/3-web-servers/06-fetch-api/_samples/currency-converter/main.mjs b/docs/3-web-servers/06-fetch-api/_samples/currency-converter/main.mjs new file mode 100644 index 000000000..488d57b3a --- /dev/null +++ b/docs/3-web-servers/06-fetch-api/_samples/currency-converter/main.mjs @@ -0,0 +1,11 @@ +import express from "express"; +const app = express(); + +app.use(express.static("./public")); + +app.get("/exchange-rate", (request, response) => { + const rate = (Math.random() * 20 + 140).toFixed(2); + response.send(rate); +}); + +app.listen(3000); \ No newline at end of file diff --git a/docs/3-web-servers/06-fetch-api/_samples/nikkei-realtime/package.json b/docs/3-web-servers/06-fetch-api/_samples/currency-converter/package.json similarity index 100% rename from docs/3-web-servers/06-fetch-api/_samples/nikkei-realtime/package.json rename to docs/3-web-servers/06-fetch-api/_samples/currency-converter/package.json diff --git a/docs/3-web-servers/06-fetch-api/_samples/currency-converter/public/index.html b/docs/3-web-servers/06-fetch-api/_samples/currency-converter/public/index.html new file mode 100644 index 000000000..3ce8b7b6c --- /dev/null +++ b/docs/3-web-servers/06-fetch-api/_samples/currency-converter/public/index.html @@ -0,0 +1,18 @@ + + + + + 通貨換算 + + +

    円→ドル通貨換算

    +
    + + +
    +
    + + + \ No newline at end of file diff --git a/docs/3-web-servers/06-fetch-api/_samples/currency-converter/public/script.mjs b/docs/3-web-servers/06-fetch-api/_samples/currency-converter/public/script.mjs new file mode 100644 index 000000000..cc000262a --- /dev/null +++ b/docs/3-web-servers/06-fetch-api/_samples/currency-converter/public/script.mjs @@ -0,0 +1,25 @@ +// ボタンクリックイベントに非同期関数を設定 +// async キーワードが必要 +document.getElementById("convert-button").onclick = async () => { + const yenInput = document.getElementById("yen-input"); + const yenAmount = parseFloat(yenInput.value); + + if (isNaN(yenAmount) || yenAmount <= 0) { + alert("正しい金額を入力してください"); + return; + } + + // 為替レートを取得 + const response = await fetch("/exchange-rate"); + const rate = parseFloat(await response.text()); + + // ドルに換算 + const dollarAmount = (yenAmount / rate).toFixed(2); + + // 結果を表示 + const resultDiv = document.getElementById("result"); + resultDiv.innerHTML = ` +

    為替レート: 1ドル = ${rate}円

    +

    ${yenAmount}円 = ${dollarAmount}ドル

    + `; +}; \ No newline at end of file diff --git a/docs/3-web-servers/06-fetch-api/_samples/exchange-rate/main.mjs b/docs/3-web-servers/06-fetch-api/_samples/exchange-rate/main.mjs new file mode 100644 index 000000000..488d57b3a --- /dev/null +++ b/docs/3-web-servers/06-fetch-api/_samples/exchange-rate/main.mjs @@ -0,0 +1,11 @@ +import express from "express"; +const app = express(); + +app.use(express.static("./public")); + +app.get("/exchange-rate", (request, response) => { + const rate = (Math.random() * 20 + 140).toFixed(2); + response.send(rate); +}); + +app.listen(3000); \ No newline at end of file diff --git a/docs/3-web-servers/06-fetch-api/_samples/nikkei-simple/package.json b/docs/3-web-servers/06-fetch-api/_samples/exchange-rate/package.json similarity index 100% rename from docs/3-web-servers/06-fetch-api/_samples/nikkei-simple/package.json rename to docs/3-web-servers/06-fetch-api/_samples/exchange-rate/package.json diff --git a/docs/3-web-servers/06-fetch-api/_samples/exchange-rate/public/index.html b/docs/3-web-servers/06-fetch-api/_samples/exchange-rate/public/index.html new file mode 100644 index 000000000..043138225 --- /dev/null +++ b/docs/3-web-servers/06-fetch-api/_samples/exchange-rate/public/index.html @@ -0,0 +1,12 @@ + + + + + 為替レート + + +

    円/ドル為替レート

    +

    現在のレート: 読み込み中...円/ドル

    + + + \ No newline at end of file diff --git a/docs/3-web-servers/06-fetch-api/_samples/exchange-rate/public/script.mjs b/docs/3-web-servers/06-fetch-api/_samples/exchange-rate/public/script.mjs new file mode 100644 index 000000000..de3fed1d7 --- /dev/null +++ b/docs/3-web-servers/06-fetch-api/_samples/exchange-rate/public/script.mjs @@ -0,0 +1,4 @@ +// ページ読み込み時に自動的に実行される(トップレベルのawait) +const response = await fetch("/exchange-rate"); +const rate = await response.text(); +document.getElementById("rate").textContent = rate; \ No newline at end of file diff --git a/docs/3-web-servers/06-fetch-api/_samples/nikkei-realtime/main.mjs b/docs/3-web-servers/06-fetch-api/_samples/nikkei-realtime/main.mjs deleted file mode 100644 index 57ffade85..000000000 --- a/docs/3-web-servers/06-fetch-api/_samples/nikkei-realtime/main.mjs +++ /dev/null @@ -1,11 +0,0 @@ -import express from "express"; -const app = express(); - -app.use(express.static("./public")); - -app.get("/nikkei", (request, response) => { - const nikkei = Math.floor(Math.random() * 20000) + 20000; - response.send(`${nikkei}`); -}); - -app.listen(3000); \ No newline at end of file diff --git a/docs/3-web-servers/06-fetch-api/_samples/nikkei-realtime/public/index.html b/docs/3-web-servers/06-fetch-api/_samples/nikkei-realtime/public/index.html deleted file mode 100644 index 3027dd2cc..000000000 --- a/docs/3-web-servers/06-fetch-api/_samples/nikkei-realtime/public/index.html +++ /dev/null @@ -1,15 +0,0 @@ - - - - - リアルタイム日経平均株価 - - -

    リアルタイム日経平均株価

    -

    現在の株価: ---

    -

    更新時刻: ---

    -

    履歴

    -
      - - - \ No newline at end of file diff --git a/docs/3-web-servers/06-fetch-api/_samples/nikkei-realtime/public/script.js b/docs/3-web-servers/06-fetch-api/_samples/nikkei-realtime/public/script.js deleted file mode 100644 index 2c291ef20..000000000 --- a/docs/3-web-servers/06-fetch-api/_samples/nikkei-realtime/public/script.js +++ /dev/null @@ -1,27 +0,0 @@ -async function fetchNikkei() { - const response = await fetch("/nikkei"); - const price = await response.text(); - const now = new Date(); - const timeString = now.toLocaleTimeString("ja-JP"); - - // 現在の株価を更新 - document.getElementById("current-price").textContent = price; - document.getElementById("update-time").textContent = timeString; - - // 履歴に追加 - const historyList = document.getElementById("history"); - const listItem = document.createElement("li"); - listItem.textContent = `${timeString} - ${price}円`; - historyList.insertBefore(listItem, historyList.firstChild); - - // 履歴を最新10件に制限 - while (historyList.children.length > 10) { - historyList.removeChild(historyList.lastChild); - } -} - -// 初回実行 -fetchNikkei(); - -// 10秒ごとに実行 -setInterval(fetchNikkei, 10000); \ No newline at end of file diff --git a/docs/3-web-servers/06-fetch-api/_samples/nikkei-simple/main.mjs b/docs/3-web-servers/06-fetch-api/_samples/nikkei-simple/main.mjs deleted file mode 100644 index 73d4b6ba7..000000000 --- a/docs/3-web-servers/06-fetch-api/_samples/nikkei-simple/main.mjs +++ /dev/null @@ -1,11 +0,0 @@ -import express from "express"; -const app = express(); - -app.use(express.static("./public")); - -app.get("/nikkei", (request, response) => { - const nikkei = Math.floor(Math.random() * 20000) + 20000; - response.send(`${nikkei}円`); -}); - -app.listen(3000); \ No newline at end of file diff --git a/docs/3-web-servers/06-fetch-api/_samples/nikkei-simple/public/index.html b/docs/3-web-servers/06-fetch-api/_samples/nikkei-simple/public/index.html deleted file mode 100644 index 3d2e5506f..000000000 --- a/docs/3-web-servers/06-fetch-api/_samples/nikkei-simple/public/index.html +++ /dev/null @@ -1,13 +0,0 @@ - - - - - 日経平均株価 - - -

      日経平均株価

      - -

      - - - \ No newline at end of file diff --git a/docs/3-web-servers/06-fetch-api/_samples/nikkei-simple/public/script.js b/docs/3-web-servers/06-fetch-api/_samples/nikkei-simple/public/script.js deleted file mode 100644 index 625de76af..000000000 --- a/docs/3-web-servers/06-fetch-api/_samples/nikkei-simple/public/script.js +++ /dev/null @@ -1,5 +0,0 @@ -document.getElementById("fetch-button").onclick = async () => { - const response = await fetch("/nikkei"); - const price = await response.text(); - document.getElementById("result").textContent = `現在の日経平均株価: ${price}`; -}; \ No newline at end of file diff --git a/docs/3-web-servers/06-fetch-api/index.mdx b/docs/3-web-servers/06-fetch-api/index.mdx index 6b770eaa2..da0904a93 100644 --- a/docs/3-web-servers/06-fetch-api/index.mdx +++ b/docs/3-web-servers/06-fetch-api/index.mdx @@ -114,15 +114,15 @@ JavaScriptにおける**非同期処理**とは、ファイルの ## 演習問題1 -Fetch APIを用いて日経平均株価を取得するプログラムを作成してください。日経平均株価は、サーバー側で乱数を用いて生成してください。 +Fetch APIを用いて為替レート(円/ドル)を取得するプログラムを作成してください。為替レートは、サーバー側で乱数を用いて生成してください。ページを開いたときに自動的に取得して表示するようにしましょう。 ### ヒント -- サーバー側で`/nikkei`というパスに対するGETリクエストを処理する -- `Math.random()`を使って20000円から40000円の間の値を生成する -- クライアント側でボタンをクリックしたときに`fetch`関数を使って取得する +- サーバー側で`/exchange-rate`というパスに対するGETリクエストを処理する +- `Math.random()`を使って140円から160円の間の値を生成する +- クライアント側ではページ読み込み時(トップレベル)で`fetch`関数を使って取得する - + ```javascript title="main.mjs" import express from "express"; @@ -130,9 +130,9 @@ const app = express(); app.use(express.static("./public")); -app.get("/nikkei", (request, response) => { - const nikkei = Math.floor(Math.random() * 20000) + 20000; - response.send(`${nikkei}円`); +app.get("/exchange-rate", (request, response) => { + const rate = (Math.random() * 20 + 140).toFixed(2); + response.send(rate); }); app.listen(3000); @@ -143,41 +143,56 @@ app.listen(3000); - 日経平均株価 + 為替レート -

      日経平均株価

      - -

      - +

      円/ドル為替レート

      +

      現在のレート: 読み込み中...円/ドル

      + ``` -```javascript title="public/script.js" -document.getElementById("fetch-button").onclick = async () => { - const response = await fetch("/nikkei"); - const price = await response.text(); - document.getElementById("result").textContent = - `現在の日経平均株価: ${price}`; -}; +```javascript title="public/script.mjs" +// ページ読み込み時に自動的に実行される(トップレベルのawait) +const response = await fetch("/exchange-rate"); +const rate = await response.text(); +document.getElementById("rate").textContent = rate; ``` - +
      ## 演習問題2 -演習問題1に加え、Fetch APIを用いて10秒ごとに日経平均株価を取得してリアルタイムに反映させるプログラムを作成してください。 +通貨換算アプリケーションを作成してください。円の金額を入力してボタンをクリックすると、現在の為替レートでドルに換算して表示するプログラムです。 ### ヒント -- `setInterval`関数を使って定期的に実行する -- 取得した値を画面に表示し続ける -- 過去の履歴も含めて表示すると良いでしょう +- 入力フィールドとボタンを用意する +- ボタンのクリックイベントで`fetch`関数を使って為替レートを取得する +- 取得したレートを使って換算結果を計算・表示する + +:::warning[非同期関数と`async`キーワード] + +`await`を使用する関数には必ず`async`キーワードを付ける必要があります。 + +```javascript +// ❌ エラーになる例 +document.getElementById("convert-button").onclick = () => { + const response = await fetch("/exchange-rate"); // SyntaxError: await は async 関数内でのみ使用可能 +}; + +// ✅ 正しい例 +document.getElementById("convert-button").onclick = async () => { + const response = await fetch("/exchange-rate"); // OK! +}; +``` + +::: - + ```javascript title="main.mjs" import express from "express"; @@ -185,9 +200,9 @@ const app = express(); app.use(express.static("./public")); -app.get("/nikkei", (request, response) => { - const nikkei = Math.floor(Math.random() * 20000) + 20000; - response.send(`${nikkei}`); +app.get("/exchange-rate", (request, response) => { + const rate = (Math.random() * 20 + 140).toFixed(2); + response.send(rate); }); app.listen(3000); @@ -198,49 +213,50 @@ app.listen(3000); - リアルタイム日経平均株価 + 通貨換算 -

      リアルタイム日経平均株価

      -

      現在の株価: ---

      -

      更新時刻: ---

      -

      履歴

      -
        - +

        円→ドル通貨換算

        +
        + + +
        +
        + ``` -```javascript title="public/script.js" -async function fetchNikkei() { - const response = await fetch("/nikkei"); - const price = await response.text(); - const now = new Date(); - const timeString = now.toLocaleTimeString("ja-JP"); - - // 現在の株価を更新 - document.getElementById("current-price").textContent = price; - document.getElementById("update-time").textContent = timeString; - - // 履歴に追加 - const historyList = document.getElementById("history"); - const listItem = document.createElement("li"); - listItem.textContent = `${timeString} - ${price}円`; - historyList.insertBefore(listItem, historyList.firstChild); - - // 履歴を最新10件に制限 - while (historyList.children.length > 10) { - historyList.removeChild(historyList.lastChild); +```javascript title="public/script.mjs" +// ボタンクリックイベントに非同期関数を設定 +// async キーワードが必要 +document.getElementById("convert-button").onclick = async () => { + const yenInput = document.getElementById("yen-input"); + const yenAmount = parseFloat(yenInput.value); + + if (isNaN(yenAmount) || yenAmount <= 0) { + alert("正しい金額を入力してください"); + return; } -} - -// 初回実行 -fetchNikkei(); - -// 10秒ごとに実行 -setInterval(fetchNikkei, 10000); + + // 為替レートを取得 + const response = await fetch("/exchange-rate"); + const rate = parseFloat(await response.text()); + + // ドルに換算 + const dollarAmount = (yenAmount / rate).toFixed(2); + + // 結果を表示 + const resultDiv = document.getElementById("result"); + resultDiv.innerHTML = ` +

        為替レート: 1ドル = ${rate}円

        +

        ${yenAmount}円 = ${dollarAmount}ドル

        + `; +}; ``` - +
        From ce641847f0f1d49d2df875aedff7c99d7fa8567a Mon Sep 17 00:00:00 2001 From: chelproc Date: Tue, 22 Jul 2025 21:35:13 +0900 Subject: [PATCH 05/21] =?UTF-8?q?=E6=BC=94=E7=BF=92=E5=95=8F=E9=A1=8C?= =?UTF-8?q?=E3=82=92=E7=B0=A1=E5=8D=98=E3=81=AB=E3=81=97=E3=81=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../_samples/currency-converter/.gitignore | 1 + .../_samples/currency-converter/main.mjs | 8 +- .../currency-converter/package-lock.json | 755 ++++++++++++++++++ .../_samples/currency-converter/package.json | 4 +- .../currency-converter/public/index.html | 15 +- .../currency-converter/public/script.mjs | 29 +- .../_samples/exchange-rate/.gitignore | 1 + .../_samples/exchange-rate/main.mjs | 8 +- .../_samples/exchange-rate/package-lock.json | 755 ++++++++++++++++++ .../_samples/exchange-rate/package.json | 4 +- .../_samples/exchange-rate/public/index.html | 5 +- .../_samples/exchange-rate/public/script.mjs | 3 +- .../_samples/fetch-weather/public/script.mjs | 3 +- docs/3-web-servers/06-fetch-api/index.mdx | 113 +-- 14 files changed, 1578 insertions(+), 126 deletions(-) create mode 100644 docs/3-web-servers/06-fetch-api/_samples/currency-converter/.gitignore create mode 100644 docs/3-web-servers/06-fetch-api/_samples/currency-converter/package-lock.json create mode 100644 docs/3-web-servers/06-fetch-api/_samples/exchange-rate/.gitignore create mode 100644 docs/3-web-servers/06-fetch-api/_samples/exchange-rate/package-lock.json diff --git a/docs/3-web-servers/06-fetch-api/_samples/currency-converter/.gitignore b/docs/3-web-servers/06-fetch-api/_samples/currency-converter/.gitignore new file mode 100644 index 000000000..07e6e472c --- /dev/null +++ b/docs/3-web-servers/06-fetch-api/_samples/currency-converter/.gitignore @@ -0,0 +1 @@ +/node_modules diff --git a/docs/3-web-servers/06-fetch-api/_samples/currency-converter/main.mjs b/docs/3-web-servers/06-fetch-api/_samples/currency-converter/main.mjs index 488d57b3a..c739a42b4 100644 --- a/docs/3-web-servers/06-fetch-api/_samples/currency-converter/main.mjs +++ b/docs/3-web-servers/06-fetch-api/_samples/currency-converter/main.mjs @@ -1,11 +1,9 @@ import express from "express"; -const app = express(); +const app = express(); app.use(express.static("./public")); - app.get("/exchange-rate", (request, response) => { - const rate = (Math.random() * 20 + 140).toFixed(2); + const rate = Math.random() * 20 + 140; response.send(rate); }); - -app.listen(3000); \ No newline at end of file +app.listen(3000); diff --git a/docs/3-web-servers/06-fetch-api/_samples/currency-converter/package-lock.json b/docs/3-web-servers/06-fetch-api/_samples/currency-converter/package-lock.json new file mode 100644 index 000000000..ceec2a56c --- /dev/null +++ b/docs/3-web-servers/06-fetch-api/_samples/currency-converter/package-lock.json @@ -0,0 +1,755 @@ +{ + "name": "currency-converter", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "currency-converter", + "dependencies": { + "express": "^5.1.0" + } + }, + "node_modules/accepts": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-2.0.0.tgz", + "integrity": "sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==", + "dependencies": { + "mime-types": "^3.0.0", + "negotiator": "^1.0.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/body-parser": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-2.2.0.tgz", + "integrity": "sha512-02qvAaxv8tp7fBa/mw1ga98OGm+eCbqzJOKoRt70sLmfEEi+jyBYVTDGfCL/k06/4EMk/z01gCe7HoCH/f2LTg==", + "dependencies": { + "bytes": "^3.1.2", + "content-type": "^1.0.5", + "debug": "^4.4.0", + "http-errors": "^2.0.0", + "iconv-lite": "^0.6.3", + "on-finished": "^2.4.1", + "qs": "^6.14.0", + "raw-body": "^3.0.0", + "type-is": "^2.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "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-apply-helpers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/call-bound": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", + "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "get-intrinsic": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/content-disposition": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-1.0.0.tgz", + "integrity": "sha512-Au9nRL8VNUut/XSzbQA38+M78dzP4D+eqg3gfJHMIHHYa3bg067xj1KxMUWj+VULbiZMowKngFFbKczUrNJ1mg==", + "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.7.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz", + "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie-signature": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.2.2.tgz", + "integrity": "sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg==", + "engines": { + "node": ">=6.6.0" + } + }, + "node_modules/debug": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz", + "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "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/dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "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": "2.0.0", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", + "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/es-define-property": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-object-atoms": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "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": "5.1.0", + "resolved": "https://registry.npmjs.org/express/-/express-5.1.0.tgz", + "integrity": "sha512-DT9ck5YIRU+8GYzzU5kT3eHGA5iL+1Zd0EutOmTE9Dtk+Tvuzd23VBU+ec7HPNSTxXYO55gPV/hq4pSBJDjFpA==", + "dependencies": { + "accepts": "^2.0.0", + "body-parser": "^2.2.0", + "content-disposition": "^1.0.0", + "content-type": "^1.0.5", + "cookie": "^0.7.1", + "cookie-signature": "^1.2.1", + "debug": "^4.4.0", + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "etag": "^1.8.1", + "finalhandler": "^2.1.0", + "fresh": "^2.0.0", + "http-errors": "^2.0.0", + "merge-descriptors": "^2.0.0", + "mime-types": "^3.0.0", + "on-finished": "^2.4.1", + "once": "^1.4.0", + "parseurl": "^1.3.3", + "proxy-addr": "^2.0.7", + "qs": "^6.14.0", + "range-parser": "^1.2.1", + "router": "^2.2.0", + "send": "^1.1.0", + "serve-static": "^2.2.0", + "statuses": "^2.0.1", + "type-is": "^2.0.1", + "vary": "^1.1.2" + }, + "engines": { + "node": ">= 18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/finalhandler": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-2.1.0.tgz", + "integrity": "sha512-/t88Ty3d5JWQbWYgaOGCCYfXRwV1+be02WqYYlL6h0lEiUAMPM8o8qKGO01YIkOHzka2up08wvgYD0mDiI+q3Q==", + "dependencies": { + "debug": "^4.4.0", + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "on-finished": "^2.4.1", + "parseurl": "^1.3.3", + "statuses": "^2.0.1" + }, + "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": "2.0.0", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-2.0.0.tgz", + "integrity": "sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-intrinsic": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "function-bind": "^1.1.2", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/gopd": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "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/http-errors/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/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "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/is-promise": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-4.0.0.tgz", + "integrity": "sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==" + }, + "node_modules/math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/media-typer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-1.1.0.tgz", + "integrity": "sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/merge-descriptors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-2.0.0.tgz", + "integrity": "sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g==", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/mime-db": { + "version": "1.54.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz", + "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.1.tgz", + "integrity": "sha512-xRc4oEhT6eaBpU1XF7AjpOFD+xQmXNB5OVKwp4tqCuBpHLS/ZbBDrc07mYTDqVMg6PfxUjjNp85O6Cd2Z/5HWA==", + "dependencies": { + "mime-db": "^1.54.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "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/negotiator": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-1.0.0.tgz", + "integrity": "sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/object-inspect": { + "version": "1.13.4", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", + "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dependencies": { + "wrappy": "1" + } + }, + "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": "8.2.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-8.2.0.tgz", + "integrity": "sha512-TdrF7fW9Rphjq4RjrW0Kp2AW0Ahwu9sRGTkS6bvDi0SCwZlEZYmcfDbEsTz8RVk0EHIS/Vd1bv3JhG+1xZuAyQ==", + "engines": { + "node": ">=16" + } + }, + "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.14.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.0.tgz", + "integrity": "sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==", + "dependencies": { + "side-channel": "^1.1.0" + }, + "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": "3.0.0", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-3.0.0.tgz", + "integrity": "sha512-RmkhL8CAyCRPXCE28MMH0z2PNWQBNk2Q09ZdxM9IOOXwxwZbN+qbWaatPkdkWIKL2ZVDImrN/pK5HTRz2PcS4g==", + "dependencies": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.6.3", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/router": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/router/-/router-2.2.0.tgz", + "integrity": "sha512-nLTrUKm2UyiL7rlhapu/Zl45FwNgkZGaCpZbIHajDYgwlJCOzLSk+cIPAnsEqV955GjILJnKbdQC1nVPz+gAYQ==", + "dependencies": { + "debug": "^4.4.0", + "depd": "^2.0.0", + "is-promise": "^4.0.0", + "parseurl": "^1.3.3", + "path-to-regexp": "^8.0.0" + }, + "engines": { + "node": ">= 18" + } + }, + "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": "1.2.0", + "resolved": "https://registry.npmjs.org/send/-/send-1.2.0.tgz", + "integrity": "sha512-uaW0WwXKpL9blXE2o0bRhoL2EGXIrZxQ2ZQ4mgcfoBxdFmQold+qWsD2jLrfZ0trjKL6vOw0j//eAwcALFjKSw==", + "dependencies": { + "debug": "^4.3.5", + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "etag": "^1.8.1", + "fresh": "^2.0.0", + "http-errors": "^2.0.0", + "mime-types": "^3.0.1", + "ms": "^2.1.3", + "on-finished": "^2.4.1", + "range-parser": "^1.2.1", + "statuses": "^2.0.1" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/serve-static": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-2.2.0.tgz", + "integrity": "sha512-61g9pCh0Vnh7IutZjtLGGpTA355+OPn2TyDv/6ivP2h/AdAVX9azsoxmg2/M6nZeQZNYBEwIcsne1mJd9oQItQ==", + "dependencies": { + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "parseurl": "^1.3.3", + "send": "^1.2.0" + }, + "engines": { + "node": ">= 18" + } + }, + "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.1.0", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", + "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3", + "side-channel-list": "^1.0.0", + "side-channel-map": "^1.0.1", + "side-channel-weakmap": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-list": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", + "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-map": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", + "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-weakmap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", + "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3", + "side-channel-map": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/statuses": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz", + "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==", + "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": "2.0.1", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-2.0.1.tgz", + "integrity": "sha512-OZs6gsjF4vMp32qrCbiVSkrFmXtG/AZhY3t0iAMrMBiAZyV9oALtXO8hsrHbMXF9x6L3grlFuwW2oAz7cav+Gw==", + "dependencies": { + "content-type": "^1.0.5", + "media-typer": "^1.1.0", + "mime-types": "^3.0.0" + }, + "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/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" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" + } + } +} diff --git a/docs/3-web-servers/06-fetch-api/_samples/currency-converter/package.json b/docs/3-web-servers/06-fetch-api/_samples/currency-converter/package.json index 7c66e759b..0720d8eee 100644 --- a/docs/3-web-servers/06-fetch-api/_samples/currency-converter/package.json +++ b/docs/3-web-servers/06-fetch-api/_samples/currency-converter/package.json @@ -1,6 +1,6 @@ { - "name": "nikkei-realtime", + "name": "currency-converter", "dependencies": { "express": "^5.1.0" } -} \ No newline at end of file +} diff --git a/docs/3-web-servers/06-fetch-api/_samples/currency-converter/public/index.html b/docs/3-web-servers/06-fetch-api/_samples/currency-converter/public/index.html index 3ce8b7b6c..cc8babfd0 100644 --- a/docs/3-web-servers/06-fetch-api/_samples/currency-converter/public/index.html +++ b/docs/3-web-servers/06-fetch-api/_samples/currency-converter/public/index.html @@ -5,14 +5,11 @@ 通貨換算 -

        円→ドル通貨換算

        -
        - - -
        -
        +

        + + +

        +

        ドル

        - \ No newline at end of file + diff --git a/docs/3-web-servers/06-fetch-api/_samples/currency-converter/public/script.mjs b/docs/3-web-servers/06-fetch-api/_samples/currency-converter/public/script.mjs index cc000262a..1649aafb3 100644 --- a/docs/3-web-servers/06-fetch-api/_samples/currency-converter/public/script.mjs +++ b/docs/3-web-servers/06-fetch-api/_samples/currency-converter/public/script.mjs @@ -1,25 +1,16 @@ -// ボタンクリックイベントに非同期関数を設定 -// async キーワードが必要 +// await 演算子を使用するため、async キーワードが必要 document.getElementById("convert-button").onclick = async () => { - const yenInput = document.getElementById("yen-input"); - const yenAmount = parseFloat(yenInput.value); - - if (isNaN(yenAmount) || yenAmount <= 0) { - alert("正しい金額を入力してください"); - return; - } - // 為替レートを取得 const response = await fetch("/exchange-rate"); const rate = parseFloat(await response.text()); - + + // 入力された円の金額を取得 + const yenInput = document.getElementById("yen-input"); + const yen = parseFloat(yenInput.value); + // ドルに換算 - const dollarAmount = (yenAmount / rate).toFixed(2); - + const dollar = yen / rate; + // 結果を表示 - const resultDiv = document.getElementById("result"); - resultDiv.innerHTML = ` -

        為替レート: 1ドル = ${rate}円

        -

        ${yenAmount}円 = ${dollarAmount}ドル

        - `; -}; \ No newline at end of file + document.getElementById("result").textContent = dollar; +}; diff --git a/docs/3-web-servers/06-fetch-api/_samples/exchange-rate/.gitignore b/docs/3-web-servers/06-fetch-api/_samples/exchange-rate/.gitignore new file mode 100644 index 000000000..07e6e472c --- /dev/null +++ b/docs/3-web-servers/06-fetch-api/_samples/exchange-rate/.gitignore @@ -0,0 +1 @@ +/node_modules diff --git a/docs/3-web-servers/06-fetch-api/_samples/exchange-rate/main.mjs b/docs/3-web-servers/06-fetch-api/_samples/exchange-rate/main.mjs index 488d57b3a..07b4beafc 100644 --- a/docs/3-web-servers/06-fetch-api/_samples/exchange-rate/main.mjs +++ b/docs/3-web-servers/06-fetch-api/_samples/exchange-rate/main.mjs @@ -1,11 +1,9 @@ import express from "express"; -const app = express(); +const app = express(); app.use(express.static("./public")); - app.get("/exchange-rate", (request, response) => { - const rate = (Math.random() * 20 + 140).toFixed(2); + const rate = 140 + Math.random() * 20; response.send(rate); }); - -app.listen(3000); \ No newline at end of file +app.listen(3000); diff --git a/docs/3-web-servers/06-fetch-api/_samples/exchange-rate/package-lock.json b/docs/3-web-servers/06-fetch-api/_samples/exchange-rate/package-lock.json new file mode 100644 index 000000000..3c32b0fca --- /dev/null +++ b/docs/3-web-servers/06-fetch-api/_samples/exchange-rate/package-lock.json @@ -0,0 +1,755 @@ +{ + "name": "exchange-rate", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "exchange-rate", + "dependencies": { + "express": "^5.1.0" + } + }, + "node_modules/accepts": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-2.0.0.tgz", + "integrity": "sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==", + "dependencies": { + "mime-types": "^3.0.0", + "negotiator": "^1.0.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/body-parser": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-2.2.0.tgz", + "integrity": "sha512-02qvAaxv8tp7fBa/mw1ga98OGm+eCbqzJOKoRt70sLmfEEi+jyBYVTDGfCL/k06/4EMk/z01gCe7HoCH/f2LTg==", + "dependencies": { + "bytes": "^3.1.2", + "content-type": "^1.0.5", + "debug": "^4.4.0", + "http-errors": "^2.0.0", + "iconv-lite": "^0.6.3", + "on-finished": "^2.4.1", + "qs": "^6.14.0", + "raw-body": "^3.0.0", + "type-is": "^2.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "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-apply-helpers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/call-bound": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", + "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "get-intrinsic": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/content-disposition": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-1.0.0.tgz", + "integrity": "sha512-Au9nRL8VNUut/XSzbQA38+M78dzP4D+eqg3gfJHMIHHYa3bg067xj1KxMUWj+VULbiZMowKngFFbKczUrNJ1mg==", + "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.7.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz", + "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie-signature": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.2.2.tgz", + "integrity": "sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg==", + "engines": { + "node": ">=6.6.0" + } + }, + "node_modules/debug": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz", + "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "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/dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "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": "2.0.0", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", + "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/es-define-property": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-object-atoms": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "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": "5.1.0", + "resolved": "https://registry.npmjs.org/express/-/express-5.1.0.tgz", + "integrity": "sha512-DT9ck5YIRU+8GYzzU5kT3eHGA5iL+1Zd0EutOmTE9Dtk+Tvuzd23VBU+ec7HPNSTxXYO55gPV/hq4pSBJDjFpA==", + "dependencies": { + "accepts": "^2.0.0", + "body-parser": "^2.2.0", + "content-disposition": "^1.0.0", + "content-type": "^1.0.5", + "cookie": "^0.7.1", + "cookie-signature": "^1.2.1", + "debug": "^4.4.0", + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "etag": "^1.8.1", + "finalhandler": "^2.1.0", + "fresh": "^2.0.0", + "http-errors": "^2.0.0", + "merge-descriptors": "^2.0.0", + "mime-types": "^3.0.0", + "on-finished": "^2.4.1", + "once": "^1.4.0", + "parseurl": "^1.3.3", + "proxy-addr": "^2.0.7", + "qs": "^6.14.0", + "range-parser": "^1.2.1", + "router": "^2.2.0", + "send": "^1.1.0", + "serve-static": "^2.2.0", + "statuses": "^2.0.1", + "type-is": "^2.0.1", + "vary": "^1.1.2" + }, + "engines": { + "node": ">= 18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/finalhandler": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-2.1.0.tgz", + "integrity": "sha512-/t88Ty3d5JWQbWYgaOGCCYfXRwV1+be02WqYYlL6h0lEiUAMPM8o8qKGO01YIkOHzka2up08wvgYD0mDiI+q3Q==", + "dependencies": { + "debug": "^4.4.0", + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "on-finished": "^2.4.1", + "parseurl": "^1.3.3", + "statuses": "^2.0.1" + }, + "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": "2.0.0", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-2.0.0.tgz", + "integrity": "sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-intrinsic": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "function-bind": "^1.1.2", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/gopd": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "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/http-errors/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/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "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/is-promise": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-4.0.0.tgz", + "integrity": "sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==" + }, + "node_modules/math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/media-typer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-1.1.0.tgz", + "integrity": "sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/merge-descriptors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-2.0.0.tgz", + "integrity": "sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g==", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/mime-db": { + "version": "1.54.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz", + "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.1.tgz", + "integrity": "sha512-xRc4oEhT6eaBpU1XF7AjpOFD+xQmXNB5OVKwp4tqCuBpHLS/ZbBDrc07mYTDqVMg6PfxUjjNp85O6Cd2Z/5HWA==", + "dependencies": { + "mime-db": "^1.54.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "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/negotiator": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-1.0.0.tgz", + "integrity": "sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/object-inspect": { + "version": "1.13.4", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", + "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dependencies": { + "wrappy": "1" + } + }, + "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": "8.2.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-8.2.0.tgz", + "integrity": "sha512-TdrF7fW9Rphjq4RjrW0Kp2AW0Ahwu9sRGTkS6bvDi0SCwZlEZYmcfDbEsTz8RVk0EHIS/Vd1bv3JhG+1xZuAyQ==", + "engines": { + "node": ">=16" + } + }, + "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.14.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.0.tgz", + "integrity": "sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==", + "dependencies": { + "side-channel": "^1.1.0" + }, + "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": "3.0.0", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-3.0.0.tgz", + "integrity": "sha512-RmkhL8CAyCRPXCE28MMH0z2PNWQBNk2Q09ZdxM9IOOXwxwZbN+qbWaatPkdkWIKL2ZVDImrN/pK5HTRz2PcS4g==", + "dependencies": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.6.3", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/router": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/router/-/router-2.2.0.tgz", + "integrity": "sha512-nLTrUKm2UyiL7rlhapu/Zl45FwNgkZGaCpZbIHajDYgwlJCOzLSk+cIPAnsEqV955GjILJnKbdQC1nVPz+gAYQ==", + "dependencies": { + "debug": "^4.4.0", + "depd": "^2.0.0", + "is-promise": "^4.0.0", + "parseurl": "^1.3.3", + "path-to-regexp": "^8.0.0" + }, + "engines": { + "node": ">= 18" + } + }, + "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": "1.2.0", + "resolved": "https://registry.npmjs.org/send/-/send-1.2.0.tgz", + "integrity": "sha512-uaW0WwXKpL9blXE2o0bRhoL2EGXIrZxQ2ZQ4mgcfoBxdFmQold+qWsD2jLrfZ0trjKL6vOw0j//eAwcALFjKSw==", + "dependencies": { + "debug": "^4.3.5", + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "etag": "^1.8.1", + "fresh": "^2.0.0", + "http-errors": "^2.0.0", + "mime-types": "^3.0.1", + "ms": "^2.1.3", + "on-finished": "^2.4.1", + "range-parser": "^1.2.1", + "statuses": "^2.0.1" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/serve-static": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-2.2.0.tgz", + "integrity": "sha512-61g9pCh0Vnh7IutZjtLGGpTA355+OPn2TyDv/6ivP2h/AdAVX9azsoxmg2/M6nZeQZNYBEwIcsne1mJd9oQItQ==", + "dependencies": { + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "parseurl": "^1.3.3", + "send": "^1.2.0" + }, + "engines": { + "node": ">= 18" + } + }, + "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.1.0", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", + "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3", + "side-channel-list": "^1.0.0", + "side-channel-map": "^1.0.1", + "side-channel-weakmap": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-list": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", + "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-map": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", + "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-weakmap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", + "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3", + "side-channel-map": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/statuses": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz", + "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==", + "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": "2.0.1", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-2.0.1.tgz", + "integrity": "sha512-OZs6gsjF4vMp32qrCbiVSkrFmXtG/AZhY3t0iAMrMBiAZyV9oALtXO8hsrHbMXF9x6L3grlFuwW2oAz7cav+Gw==", + "dependencies": { + "content-type": "^1.0.5", + "media-typer": "^1.1.0", + "mime-types": "^3.0.0" + }, + "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/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" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" + } + } +} diff --git a/docs/3-web-servers/06-fetch-api/_samples/exchange-rate/package.json b/docs/3-web-servers/06-fetch-api/_samples/exchange-rate/package.json index c6bbb4dc3..44fb68a0e 100644 --- a/docs/3-web-servers/06-fetch-api/_samples/exchange-rate/package.json +++ b/docs/3-web-servers/06-fetch-api/_samples/exchange-rate/package.json @@ -1,6 +1,6 @@ { - "name": "nikkei-simple", + "name": "exchange-rate", "dependencies": { "express": "^5.1.0" } -} \ No newline at end of file +} diff --git a/docs/3-web-servers/06-fetch-api/_samples/exchange-rate/public/index.html b/docs/3-web-servers/06-fetch-api/_samples/exchange-rate/public/index.html index 043138225..39d86873e 100644 --- a/docs/3-web-servers/06-fetch-api/_samples/exchange-rate/public/index.html +++ b/docs/3-web-servers/06-fetch-api/_samples/exchange-rate/public/index.html @@ -5,8 +5,7 @@ 為替レート -

        円/ドル為替レート

        -

        現在のレート: 読み込み中...円/ドル

        +

        円/ドル

        - \ No newline at end of file + diff --git a/docs/3-web-servers/06-fetch-api/_samples/exchange-rate/public/script.mjs b/docs/3-web-servers/06-fetch-api/_samples/exchange-rate/public/script.mjs index de3fed1d7..a235c9c67 100644 --- a/docs/3-web-servers/06-fetch-api/_samples/exchange-rate/public/script.mjs +++ b/docs/3-web-servers/06-fetch-api/_samples/exchange-rate/public/script.mjs @@ -1,4 +1,3 @@ -// ページ読み込み時に自動的に実行される(トップレベルのawait) const response = await fetch("/exchange-rate"); const rate = await response.text(); -document.getElementById("rate").textContent = rate; \ No newline at end of file +document.getElementById("rate").textContent = rate; diff --git a/docs/3-web-servers/06-fetch-api/_samples/fetch-weather/public/script.mjs b/docs/3-web-servers/06-fetch-api/_samples/fetch-weather/public/script.mjs index 27dd1c066..63844a1ff 100644 --- a/docs/3-web-servers/06-fetch-api/_samples/fetch-weather/public/script.mjs +++ b/docs/3-web-servers/06-fetch-api/_samples/fetch-weather/public/script.mjs @@ -5,5 +5,4 @@ const response = await fetch("/weather"); // レスポンスをテキストとして取得 const weather = await response.text(); -const weatherElement = document.getElementById("weather"); -weatherElement.textContent = weather; +document.getElementById("weather").textContent = weather; diff --git a/docs/3-web-servers/06-fetch-api/index.mdx b/docs/3-web-servers/06-fetch-api/index.mdx index da0904a93..b61c1a650 100644 --- a/docs/3-web-servers/06-fetch-api/index.mdx +++ b/docs/3-web-servers/06-fetch-api/index.mdx @@ -8,7 +8,7 @@ title: Fetch API 2. リンクをクリックしたとき 3. 取得したHTMLに外部リソースを読み込むタグが含まれていたとき -しかし、この方法では、新しい情報を取得する度にブラウザのページ遷移が必要になるため、複雑なアプリケーションを構築するには不便です。**Fetch API**を用いると、ブラウザ上で動作するJavaScriptから、Webサーバーに対して直接HTTPリクエストを発行し、レスポンスを受け取ることができます。これにより、Webアプリケーションはページ遷移を伴わずに新しい情報を取得したり、サーバーと通信したりすることが可能になります。 +しかし、この方法では、新しい情報を取得する度にブラウザのページ遷移が必要になるため、複雑なアプリケーションを構築するには不便です。**Fetch API**を用いると、ブラウザ上で動作するJavaScriptから、Webサーバーに対して直接HTTPリクエストを発行し、レスポンスを受け取ることができます。これにより、Webアプリケーションはページ遷移を伴わずにサーバーと通信することが可能になります。 ## ブラウザで動作するJavaScriptでモジュールを用いる @@ -62,9 +62,9 @@ export function multiply(a, b) { ::: -## Fetch API +## Fetch API を使用する -Fetch APIは、`fetch`関数を呼び出すことで実行できます。`fetch`関数にリクエストを発行したいURLを指定することで、HTTPリクエストを発行し、[`Response`](https://developer.mozilla.org/ja/docs/Web/API/Response)オブジェクトを取得できます。`Response`オブジェクトの[`text`メソッド](https://developer.mozilla.org/ja/docs/Web/API/Response/text)を呼び出すことで、レスポンスボディを文字列として取得できます。 +Fetch APIは、`fetch`関数を呼び出すことで実行できます。`fetch`関数にリクエストを発行したいURLを指定することで、HTTPリクエストを発行し、[`Response`](https://developer.mozilla.org/ja/docs/Web/API/Response)オブジェクトを取得できます。`Response`オブジェクトの[`text`メソッド](https://developer.mozilla.org/ja/docs/Web/API/Response/text)を呼び出すことで、レスポンスを文字列として取得できます。 次の例では、ブラウザは`script.mjs`の中で`fetch("/weather")`が呼び出されたときに、Webサーバーに対して`/weather`というパスに対するリクエストを発行します。Webサーバーは、`/weather`に対するリクエストを受け取ると、レスポンスとして「晴れ」という文字列を返します。ブラウザは、このレスポンスを受け取り、HTMLの中の`span`要素に「晴れ」という文字列を表示します。 @@ -94,8 +94,7 @@ const response = await fetch("/weather"); // レスポンスをテキストとして取得 const weather = await response.text(); -const weatherElement = document.getElementById("weather"); -weatherElement.textContent = weather; +document.getElementById("weather").textContent = weather; ``` @@ -114,47 +113,32 @@ JavaScriptにおける**非同期処理**とは、ファイルの ## 演習問題1 -Fetch APIを用いて為替レート(円/ドル)を取得するプログラムを作成してください。為替レートは、サーバー側で乱数を用いて生成してください。ページを開いたときに自動的に取得して表示するようにしましょう。 +Fetch APIを用いて、ページを開いたとき、サーバーから現在の為替レート(円/ドル)を取得して表示するWebアプリケーションを作成してください。ただし、為替レートは、サーバー側で乱数を用いて生成してください。 ### ヒント -- サーバー側で`/exchange-rate`というパスに対するGETリクエストを処理する -- `Math.random()`を使って140円から160円の間の値を生成する -- クライアント側ではページ読み込み時(トップレベル)で`fetch`関数を使って取得する +Expressを用いて、`/exchange-rate`というパスに対するリクエストを受けたとき、`140 + Math.random() * 20`の値をレスポンスとして返すようにしましょう。ブラウザ側では、`fetch`関数を用いて`/exchange-rate`にリクエストを発行し、レスポンスを受け取って表示しましょう。 -```javascript title="main.mjs" +```javascript title="main.mjs (サーバーとして動作するJavaScript)" import express from "express"; -const app = express(); +const app = express(); app.use(express.static("./public")); - app.get("/exchange-rate", (request, response) => { - const rate = (Math.random() * 20 + 140).toFixed(2); + const rate = 140 + Math.random() * 20; response.send(rate); }); - app.listen(3000); ``` -```html title="public/index.html" - - - - - 為替レート - - -

        円/ドル為替レート

        -

        現在のレート: 読み込み中...円/ドル

        - - - +```html title="public/index.html (抜粋)" +

        円/ドル

        + ``` -```javascript title="public/script.mjs" -// ページ読み込み時に自動的に実行される(トップレベルのawait) +```javascript title="public/script.mjs (ブラウザ上で動作するJavaScript)" const response = await fetch("/exchange-rate"); const rate = await response.text(); document.getElementById("rate").textContent = rate; @@ -166,17 +150,15 @@ document.getElementById("rate").textContent = rate; ## 演習問題2 -通貨換算アプリケーションを作成してください。円の金額を入力してボタンをクリックすると、現在の為替レートでドルに換算して表示するプログラムです。 +円の金額を入力してボタンをクリックすると、現在の為替レートでドルに換算して表示する、通貨換算アプリケーションを作成してください。 ### ヒント -- 入力フィールドとボタンを用意する -- ボタンのクリックイベントで`fetch`関数を使って為替レートを取得する -- 取得したレートを使って換算結果を計算・表示する +サーバーの実装は演習問題1と同じです。ブラウザ側では、ボタンとテキストボックスを用意します。ボタンのクリックイベントハンドラの中で`fetch`関数を用いて為替レートを取得し、入力された金額を為替レートで割ってドルに換算しましょう。`Response#text`メソッドの戻り値は文字列なので、[`parseFloat`](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/parseFloat)関数を用いて数値に変換してから計算を行う必要があります。 :::warning[非同期関数と`async`キーワード] -`await`を使用する関数には必ず`async`キーワードを付ける必要があります。 +`await`演算子を関数内で使用する場合は、その関数に`async`キーワードを付与する必要があります。 ```javascript // ❌ エラーになる例 @@ -186,7 +168,7 @@ document.getElementById("convert-button").onclick = () => { // ✅ 正しい例 document.getElementById("convert-button").onclick = async () => { - const response = await fetch("/exchange-rate"); // OK! + const response = await fetch("/exchange-rate"); // OK }; ``` @@ -194,66 +176,43 @@ document.getElementById("convert-button").onclick = async () => { -```javascript title="main.mjs" +```javascript title="main.mjs (サーバーとして動作するJavaScript)" import express from "express"; -const app = express(); +const app = express(); app.use(express.static("./public")); - app.get("/exchange-rate", (request, response) => { - const rate = (Math.random() * 20 + 140).toFixed(2); + const rate = Math.random() * 20 + 140; response.send(rate); }); - app.listen(3000); ``` -```html title="public/index.html" - - - - - 通貨換算 - - -

        円→ドル通貨換算

        -
        - - -
        -
        - - - +```html title="public/index.html (抜粋)" +

        + + +

        +

        ドル

        + ``` ```javascript title="public/script.mjs" -// ボタンクリックイベントに非同期関数を設定 -// async キーワードが必要 +// await 演算子を使用するため、async キーワードが必要 document.getElementById("convert-button").onclick = async () => { - const yenInput = document.getElementById("yen-input"); - const yenAmount = parseFloat(yenInput.value); - - if (isNaN(yenAmount) || yenAmount <= 0) { - alert("正しい金額を入力してください"); - return; - } - // 為替レートを取得 const response = await fetch("/exchange-rate"); const rate = parseFloat(await response.text()); - + + // 入力された円の金額を取得 + const yenInput = document.getElementById("yen-input"); + const yen = parseFloat(yenInput.value); + // ドルに換算 - const dollarAmount = (yenAmount / rate).toFixed(2); - + const dollar = yen / rate; + // 結果を表示 - const resultDiv = document.getElementById("result"); - resultDiv.innerHTML = ` -

        為替レート: 1ドル = ${rate}円

        -

        ${yenAmount}円 = ${dollarAmount}ドル

        - `; + document.getElementById("result").textContent = dollar; }; ``` From 59a41a1cbf893ae26b0fa7d5a55224dbb81ad13d Mon Sep 17 00:00:00 2001 From: WATAHIKI YUTO Date: Thu, 31 Jul 2025 22:19:24 +0900 Subject: [PATCH 06/21] =?UTF-8?q?=E7=A2=BA=E8=AA=8D=E5=95=8F=E9=A1=8C?= =?UTF-8?q?=E3=81=A8=E6=BC=94=E7=BF=92=E5=95=8F=E9=A1=8C=E3=82=92=E8=BF=BD?= =?UTF-8?q?=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../fetch-open-status-json/.gitignore | 1 + .../_samples/fetch-open-status-json/main.mjs | 15 + .../fetch-open-status-json/package-lock.json | 822 ++++++++++++++++++ .../fetch-open-status-json/package.json | 6 + .../fetch-open-status-json/public/index.html | 13 + .../fetch-open-status-json/public/script.mjs | 11 + .../_samples/fetch-open-status/.gitignore | 1 + .../_samples/fetch-open-status/main.mjs | 11 + .../fetch-open-status/package-lock.json | 822 ++++++++++++++++++ .../_samples/fetch-open-status/package.json | 6 + .../fetch-open-status/public/index.html | 11 + .../fetch-open-status/public/script.mjs | 4 + docs/3-web-servers/06-fetch-api/index.mdx | 107 ++- .../_samples/book-search/.gitignore | 1 + .../_samples/book-search/main.mjs | 23 + .../_samples/book-search/package-lock.json | 822 ++++++++++++++++++ .../_samples/book-search/package.json | 6 + .../_samples/book-search/public/index.html | 13 + .../_samples/book-search/public/script.mjs | 19 + .../_samples/calculate-tax/.gitignore | 1 + .../_samples/calculate-tax/main.mjs | 19 + .../_samples/calculate-tax/package-lock.json | 822 ++++++++++++++++++ .../_samples/calculate-tax/package.json | 6 + .../_samples/calculate-tax/public/index.html | 14 + .../_samples/calculate-tax/public/script.mjs | 13 + .../_samples/chat-app/.gitignore | 1 + .../_samples/chat-app/main.mjs | 19 + .../_samples/chat-app/package-lock.json | 822 ++++++++++++++++++ .../_samples/chat-app/package.json | 6 + .../_samples/chat-app/public/index.html | 13 + .../_samples/chat-app/public/script.mjs | 22 + .../3-web-servers/07-fetch-api-post/index.mdx | 296 +++++++ 32 files changed, 4766 insertions(+), 2 deletions(-) create mode 100644 docs/3-web-servers/06-fetch-api/_samples/fetch-open-status-json/.gitignore create mode 100644 docs/3-web-servers/06-fetch-api/_samples/fetch-open-status-json/main.mjs create mode 100644 docs/3-web-servers/06-fetch-api/_samples/fetch-open-status-json/package-lock.json create mode 100644 docs/3-web-servers/06-fetch-api/_samples/fetch-open-status-json/package.json create mode 100644 docs/3-web-servers/06-fetch-api/_samples/fetch-open-status-json/public/index.html create mode 100644 docs/3-web-servers/06-fetch-api/_samples/fetch-open-status-json/public/script.mjs create mode 100644 docs/3-web-servers/06-fetch-api/_samples/fetch-open-status/.gitignore create mode 100644 docs/3-web-servers/06-fetch-api/_samples/fetch-open-status/main.mjs create mode 100644 docs/3-web-servers/06-fetch-api/_samples/fetch-open-status/package-lock.json create mode 100644 docs/3-web-servers/06-fetch-api/_samples/fetch-open-status/package.json create mode 100644 docs/3-web-servers/06-fetch-api/_samples/fetch-open-status/public/index.html create mode 100644 docs/3-web-servers/06-fetch-api/_samples/fetch-open-status/public/script.mjs create mode 100644 docs/3-web-servers/07-fetch-api-post/_samples/book-search/.gitignore create mode 100644 docs/3-web-servers/07-fetch-api-post/_samples/book-search/main.mjs create mode 100644 docs/3-web-servers/07-fetch-api-post/_samples/book-search/package-lock.json create mode 100644 docs/3-web-servers/07-fetch-api-post/_samples/book-search/package.json create mode 100644 docs/3-web-servers/07-fetch-api-post/_samples/book-search/public/index.html create mode 100644 docs/3-web-servers/07-fetch-api-post/_samples/book-search/public/script.mjs create mode 100644 docs/3-web-servers/07-fetch-api-post/_samples/calculate-tax/.gitignore create mode 100644 docs/3-web-servers/07-fetch-api-post/_samples/calculate-tax/main.mjs create mode 100644 docs/3-web-servers/07-fetch-api-post/_samples/calculate-tax/package-lock.json create mode 100644 docs/3-web-servers/07-fetch-api-post/_samples/calculate-tax/package.json create mode 100644 docs/3-web-servers/07-fetch-api-post/_samples/calculate-tax/public/index.html create mode 100644 docs/3-web-servers/07-fetch-api-post/_samples/calculate-tax/public/script.mjs create mode 100644 docs/3-web-servers/07-fetch-api-post/_samples/chat-app/.gitignore create mode 100644 docs/3-web-servers/07-fetch-api-post/_samples/chat-app/main.mjs create mode 100644 docs/3-web-servers/07-fetch-api-post/_samples/chat-app/package-lock.json create mode 100644 docs/3-web-servers/07-fetch-api-post/_samples/chat-app/package.json create mode 100644 docs/3-web-servers/07-fetch-api-post/_samples/chat-app/public/index.html create mode 100644 docs/3-web-servers/07-fetch-api-post/_samples/chat-app/public/script.mjs create mode 100644 docs/3-web-servers/07-fetch-api-post/index.mdx diff --git a/docs/3-web-servers/06-fetch-api/_samples/fetch-open-status-json/.gitignore b/docs/3-web-servers/06-fetch-api/_samples/fetch-open-status-json/.gitignore new file mode 100644 index 000000000..07e6e472c --- /dev/null +++ b/docs/3-web-servers/06-fetch-api/_samples/fetch-open-status-json/.gitignore @@ -0,0 +1 @@ +/node_modules diff --git a/docs/3-web-servers/06-fetch-api/_samples/fetch-open-status-json/main.mjs b/docs/3-web-servers/06-fetch-api/_samples/fetch-open-status-json/main.mjs new file mode 100644 index 000000000..80bb3e883 --- /dev/null +++ b/docs/3-web-servers/06-fetch-api/_samples/fetch-open-status-json/main.mjs @@ -0,0 +1,15 @@ +import express from "express"; + +const app = express(); + +app.use(express.static("./public")); + +app.get("/open-status", (request, response) => { + response.json({ + isOpen: true, + openTime: "10:00", + closeTime: "18:00", + }); +}); + +app.listen(3000); diff --git a/docs/3-web-servers/06-fetch-api/_samples/fetch-open-status-json/package-lock.json b/docs/3-web-servers/06-fetch-api/_samples/fetch-open-status-json/package-lock.json new file mode 100644 index 000000000..11ca7f696 --- /dev/null +++ b/docs/3-web-servers/06-fetch-api/_samples/fetch-open-status-json/package-lock.json @@ -0,0 +1,822 @@ +{ + "name": "fetch-open-status-json", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "fetch-open-status-json", + "dependencies": { + "express": "^5.1.0" + } + }, + "node_modules/accepts": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-2.0.0.tgz", + "integrity": "sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==", + "license": "MIT", + "dependencies": { + "mime-types": "^3.0.0", + "negotiator": "^1.0.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/body-parser": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-2.2.0.tgz", + "integrity": "sha512-02qvAaxv8tp7fBa/mw1ga98OGm+eCbqzJOKoRt70sLmfEEi+jyBYVTDGfCL/k06/4EMk/z01gCe7HoCH/f2LTg==", + "license": "MIT", + "dependencies": { + "bytes": "^3.1.2", + "content-type": "^1.0.5", + "debug": "^4.4.0", + "http-errors": "^2.0.0", + "iconv-lite": "^0.6.3", + "on-finished": "^2.4.1", + "qs": "^6.14.0", + "raw-body": "^3.0.0", + "type-is": "^2.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/call-bind-apply-helpers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/call-bound": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", + "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "get-intrinsic": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/content-disposition": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-1.0.0.tgz", + "integrity": "sha512-Au9nRL8VNUut/XSzbQA38+M78dzP4D+eqg3gfJHMIHHYa3bg067xj1KxMUWj+VULbiZMowKngFFbKczUrNJ1mg==", + "license": "MIT", + "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==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz", + "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie-signature": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.2.2.tgz", + "integrity": "sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg==", + "license": "MIT", + "engines": { + "node": ">=6.6.0" + } + }, + "node_modules/debug": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz", + "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "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==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "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==", + "license": "MIT" + }, + "node_modules/encodeurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", + "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/es-define-property": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-object-atoms": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "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==", + "license": "MIT" + }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/express": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/express/-/express-5.1.0.tgz", + "integrity": "sha512-DT9ck5YIRU+8GYzzU5kT3eHGA5iL+1Zd0EutOmTE9Dtk+Tvuzd23VBU+ec7HPNSTxXYO55gPV/hq4pSBJDjFpA==", + "license": "MIT", + "dependencies": { + "accepts": "^2.0.0", + "body-parser": "^2.2.0", + "content-disposition": "^1.0.0", + "content-type": "^1.0.5", + "cookie": "^0.7.1", + "cookie-signature": "^1.2.1", + "debug": "^4.4.0", + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "etag": "^1.8.1", + "finalhandler": "^2.1.0", + "fresh": "^2.0.0", + "http-errors": "^2.0.0", + "merge-descriptors": "^2.0.0", + "mime-types": "^3.0.0", + "on-finished": "^2.4.1", + "once": "^1.4.0", + "parseurl": "^1.3.3", + "proxy-addr": "^2.0.7", + "qs": "^6.14.0", + "range-parser": "^1.2.1", + "router": "^2.2.0", + "send": "^1.1.0", + "serve-static": "^2.2.0", + "statuses": "^2.0.1", + "type-is": "^2.0.1", + "vary": "^1.1.2" + }, + "engines": { + "node": ">= 18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/finalhandler": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-2.1.0.tgz", + "integrity": "sha512-/t88Ty3d5JWQbWYgaOGCCYfXRwV1+be02WqYYlL6h0lEiUAMPM8o8qKGO01YIkOHzka2up08wvgYD0mDiI+q3Q==", + "license": "MIT", + "dependencies": { + "debug": "^4.4.0", + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "on-finished": "^2.4.1", + "parseurl": "^1.3.3", + "statuses": "^2.0.1" + }, + "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==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fresh": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-2.0.0.tgz", + "integrity": "sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-intrinsic": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "function-bind": "^1.1.2", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/gopd": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "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==", + "license": "MIT", + "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/http-errors/node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "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==", + "license": "ISC" + }, + "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==", + "license": "MIT", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/is-promise": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-4.0.0.tgz", + "integrity": "sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==", + "license": "MIT" + }, + "node_modules/math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/media-typer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-1.1.0.tgz", + "integrity": "sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/merge-descriptors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-2.0.0.tgz", + "integrity": "sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/mime-db": { + "version": "1.54.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz", + "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.1.tgz", + "integrity": "sha512-xRc4oEhT6eaBpU1XF7AjpOFD+xQmXNB5OVKwp4tqCuBpHLS/ZbBDrc07mYTDqVMg6PfxUjjNp85O6Cd2Z/5HWA==", + "license": "MIT", + "dependencies": { + "mime-db": "^1.54.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "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==", + "license": "MIT" + }, + "node_modules/negotiator": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-1.0.0.tgz", + "integrity": "sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/object-inspect": { + "version": "1.13.4", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", + "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "license": "MIT", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "license": "ISC", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/path-to-regexp": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-8.2.0.tgz", + "integrity": "sha512-TdrF7fW9Rphjq4RjrW0Kp2AW0Ahwu9sRGTkS6bvDi0SCwZlEZYmcfDbEsTz8RVk0EHIS/Vd1bv3JhG+1xZuAyQ==", + "license": "MIT", + "engines": { + "node": ">=16" + } + }, + "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==", + "license": "MIT", + "dependencies": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/qs": { + "version": "6.14.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.0.tgz", + "integrity": "sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==", + "license": "BSD-3-Clause", + "dependencies": { + "side-channel": "^1.1.0" + }, + "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==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/raw-body": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-3.0.0.tgz", + "integrity": "sha512-RmkhL8CAyCRPXCE28MMH0z2PNWQBNk2Q09ZdxM9IOOXwxwZbN+qbWaatPkdkWIKL2ZVDImrN/pK5HTRz2PcS4g==", + "license": "MIT", + "dependencies": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.6.3", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/router": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/router/-/router-2.2.0.tgz", + "integrity": "sha512-nLTrUKm2UyiL7rlhapu/Zl45FwNgkZGaCpZbIHajDYgwlJCOzLSk+cIPAnsEqV955GjILJnKbdQC1nVPz+gAYQ==", + "license": "MIT", + "dependencies": { + "debug": "^4.4.0", + "depd": "^2.0.0", + "is-promise": "^4.0.0", + "parseurl": "^1.3.3", + "path-to-regexp": "^8.0.0" + }, + "engines": { + "node": ">= 18" + } + }, + "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" + } + ], + "license": "MIT" + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "license": "MIT" + }, + "node_modules/send": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/send/-/send-1.2.0.tgz", + "integrity": "sha512-uaW0WwXKpL9blXE2o0bRhoL2EGXIrZxQ2ZQ4mgcfoBxdFmQold+qWsD2jLrfZ0trjKL6vOw0j//eAwcALFjKSw==", + "license": "MIT", + "dependencies": { + "debug": "^4.3.5", + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "etag": "^1.8.1", + "fresh": "^2.0.0", + "http-errors": "^2.0.0", + "mime-types": "^3.0.1", + "ms": "^2.1.3", + "on-finished": "^2.4.1", + "range-parser": "^1.2.1", + "statuses": "^2.0.1" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/serve-static": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-2.2.0.tgz", + "integrity": "sha512-61g9pCh0Vnh7IutZjtLGGpTA355+OPn2TyDv/6ivP2h/AdAVX9azsoxmg2/M6nZeQZNYBEwIcsne1mJd9oQItQ==", + "license": "MIT", + "dependencies": { + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "parseurl": "^1.3.3", + "send": "^1.2.0" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "license": "ISC" + }, + "node_modules/side-channel": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", + "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3", + "side-channel-list": "^1.0.0", + "side-channel-map": "^1.0.1", + "side-channel-weakmap": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-list": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", + "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-map": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", + "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-weakmap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", + "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3", + "side-channel-map": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/statuses": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz", + "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==", + "license": "MIT", + "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==", + "license": "MIT", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/type-is": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-2.0.1.tgz", + "integrity": "sha512-OZs6gsjF4vMp32qrCbiVSkrFmXtG/AZhY3t0iAMrMBiAZyV9oALtXO8hsrHbMXF9x6L3grlFuwW2oAz7cav+Gw==", + "license": "MIT", + "dependencies": { + "content-type": "^1.0.5", + "media-typer": "^1.1.0", + "mime-types": "^3.0.0" + }, + "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==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "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==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "license": "ISC" + } + } +} diff --git a/docs/3-web-servers/06-fetch-api/_samples/fetch-open-status-json/package.json b/docs/3-web-servers/06-fetch-api/_samples/fetch-open-status-json/package.json new file mode 100644 index 000000000..0daafc3dc --- /dev/null +++ b/docs/3-web-servers/06-fetch-api/_samples/fetch-open-status-json/package.json @@ -0,0 +1,6 @@ +{ + "name": "fetch-open-status-json", + "dependencies": { + "express": "^5.1.0" + } +} diff --git a/docs/3-web-servers/06-fetch-api/_samples/fetch-open-status-json/public/index.html b/docs/3-web-servers/06-fetch-api/_samples/fetch-open-status-json/public/index.html new file mode 100644 index 000000000..06c1266f3 --- /dev/null +++ b/docs/3-web-servers/06-fetch-api/_samples/fetch-open-status-json/public/index.html @@ -0,0 +1,13 @@ + + + + + カフェ営業状況 + + +

        カフェは現在です。

        + +

        本日の営業時間はからです。

        + + + diff --git a/docs/3-web-servers/06-fetch-api/_samples/fetch-open-status-json/public/script.mjs b/docs/3-web-servers/06-fetch-api/_samples/fetch-open-status-json/public/script.mjs new file mode 100644 index 000000000..4dab48d9e --- /dev/null +++ b/docs/3-web-servers/06-fetch-api/_samples/fetch-open-status-json/public/script.mjs @@ -0,0 +1,11 @@ +const response = await fetch("/open-status"); +const openStatus = await response.json(); + +if (openStatus.isOpen) { + document.getElementById("open-status").textContent = "営業中"; +} else { + document.getElementById("open-status").textContent = "営業時間外"; +} + +document.getElementById("open-time").textContent = openStatus.openTime; +document.getElementById("close-time").textContent = openStatus.closeTime; diff --git a/docs/3-web-servers/06-fetch-api/_samples/fetch-open-status/.gitignore b/docs/3-web-servers/06-fetch-api/_samples/fetch-open-status/.gitignore new file mode 100644 index 000000000..07e6e472c --- /dev/null +++ b/docs/3-web-servers/06-fetch-api/_samples/fetch-open-status/.gitignore @@ -0,0 +1 @@ +/node_modules diff --git a/docs/3-web-servers/06-fetch-api/_samples/fetch-open-status/main.mjs b/docs/3-web-servers/06-fetch-api/_samples/fetch-open-status/main.mjs new file mode 100644 index 000000000..619df3be2 --- /dev/null +++ b/docs/3-web-servers/06-fetch-api/_samples/fetch-open-status/main.mjs @@ -0,0 +1,11 @@ +import express from "express"; + +const app = express(); + +app.use(express.static("./public")); + +app.get("/open-status", (request, response) => { + response.send("営業中"); +}); + +app.listen(3000); diff --git a/docs/3-web-servers/06-fetch-api/_samples/fetch-open-status/package-lock.json b/docs/3-web-servers/06-fetch-api/_samples/fetch-open-status/package-lock.json new file mode 100644 index 000000000..eed4ca815 --- /dev/null +++ b/docs/3-web-servers/06-fetch-api/_samples/fetch-open-status/package-lock.json @@ -0,0 +1,822 @@ +{ + "name": "fetch-open-status", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "fetch-open-status", + "dependencies": { + "express": "^5.1.0" + } + }, + "node_modules/accepts": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-2.0.0.tgz", + "integrity": "sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==", + "license": "MIT", + "dependencies": { + "mime-types": "^3.0.0", + "negotiator": "^1.0.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/body-parser": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-2.2.0.tgz", + "integrity": "sha512-02qvAaxv8tp7fBa/mw1ga98OGm+eCbqzJOKoRt70sLmfEEi+jyBYVTDGfCL/k06/4EMk/z01gCe7HoCH/f2LTg==", + "license": "MIT", + "dependencies": { + "bytes": "^3.1.2", + "content-type": "^1.0.5", + "debug": "^4.4.0", + "http-errors": "^2.0.0", + "iconv-lite": "^0.6.3", + "on-finished": "^2.4.1", + "qs": "^6.14.0", + "raw-body": "^3.0.0", + "type-is": "^2.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/call-bind-apply-helpers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/call-bound": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", + "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "get-intrinsic": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/content-disposition": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-1.0.0.tgz", + "integrity": "sha512-Au9nRL8VNUut/XSzbQA38+M78dzP4D+eqg3gfJHMIHHYa3bg067xj1KxMUWj+VULbiZMowKngFFbKczUrNJ1mg==", + "license": "MIT", + "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==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz", + "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie-signature": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.2.2.tgz", + "integrity": "sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg==", + "license": "MIT", + "engines": { + "node": ">=6.6.0" + } + }, + "node_modules/debug": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz", + "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "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==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "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==", + "license": "MIT" + }, + "node_modules/encodeurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", + "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/es-define-property": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-object-atoms": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "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==", + "license": "MIT" + }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/express": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/express/-/express-5.1.0.tgz", + "integrity": "sha512-DT9ck5YIRU+8GYzzU5kT3eHGA5iL+1Zd0EutOmTE9Dtk+Tvuzd23VBU+ec7HPNSTxXYO55gPV/hq4pSBJDjFpA==", + "license": "MIT", + "dependencies": { + "accepts": "^2.0.0", + "body-parser": "^2.2.0", + "content-disposition": "^1.0.0", + "content-type": "^1.0.5", + "cookie": "^0.7.1", + "cookie-signature": "^1.2.1", + "debug": "^4.4.0", + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "etag": "^1.8.1", + "finalhandler": "^2.1.0", + "fresh": "^2.0.0", + "http-errors": "^2.0.0", + "merge-descriptors": "^2.0.0", + "mime-types": "^3.0.0", + "on-finished": "^2.4.1", + "once": "^1.4.0", + "parseurl": "^1.3.3", + "proxy-addr": "^2.0.7", + "qs": "^6.14.0", + "range-parser": "^1.2.1", + "router": "^2.2.0", + "send": "^1.1.0", + "serve-static": "^2.2.0", + "statuses": "^2.0.1", + "type-is": "^2.0.1", + "vary": "^1.1.2" + }, + "engines": { + "node": ">= 18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/finalhandler": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-2.1.0.tgz", + "integrity": "sha512-/t88Ty3d5JWQbWYgaOGCCYfXRwV1+be02WqYYlL6h0lEiUAMPM8o8qKGO01YIkOHzka2up08wvgYD0mDiI+q3Q==", + "license": "MIT", + "dependencies": { + "debug": "^4.4.0", + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "on-finished": "^2.4.1", + "parseurl": "^1.3.3", + "statuses": "^2.0.1" + }, + "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==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fresh": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-2.0.0.tgz", + "integrity": "sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-intrinsic": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "function-bind": "^1.1.2", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/gopd": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "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==", + "license": "MIT", + "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/http-errors/node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "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==", + "license": "ISC" + }, + "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==", + "license": "MIT", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/is-promise": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-4.0.0.tgz", + "integrity": "sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==", + "license": "MIT" + }, + "node_modules/math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/media-typer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-1.1.0.tgz", + "integrity": "sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/merge-descriptors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-2.0.0.tgz", + "integrity": "sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/mime-db": { + "version": "1.54.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz", + "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.1.tgz", + "integrity": "sha512-xRc4oEhT6eaBpU1XF7AjpOFD+xQmXNB5OVKwp4tqCuBpHLS/ZbBDrc07mYTDqVMg6PfxUjjNp85O6Cd2Z/5HWA==", + "license": "MIT", + "dependencies": { + "mime-db": "^1.54.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "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==", + "license": "MIT" + }, + "node_modules/negotiator": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-1.0.0.tgz", + "integrity": "sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/object-inspect": { + "version": "1.13.4", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", + "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "license": "MIT", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "license": "ISC", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/path-to-regexp": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-8.2.0.tgz", + "integrity": "sha512-TdrF7fW9Rphjq4RjrW0Kp2AW0Ahwu9sRGTkS6bvDi0SCwZlEZYmcfDbEsTz8RVk0EHIS/Vd1bv3JhG+1xZuAyQ==", + "license": "MIT", + "engines": { + "node": ">=16" + } + }, + "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==", + "license": "MIT", + "dependencies": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/qs": { + "version": "6.14.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.0.tgz", + "integrity": "sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==", + "license": "BSD-3-Clause", + "dependencies": { + "side-channel": "^1.1.0" + }, + "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==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/raw-body": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-3.0.0.tgz", + "integrity": "sha512-RmkhL8CAyCRPXCE28MMH0z2PNWQBNk2Q09ZdxM9IOOXwxwZbN+qbWaatPkdkWIKL2ZVDImrN/pK5HTRz2PcS4g==", + "license": "MIT", + "dependencies": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.6.3", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/router": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/router/-/router-2.2.0.tgz", + "integrity": "sha512-nLTrUKm2UyiL7rlhapu/Zl45FwNgkZGaCpZbIHajDYgwlJCOzLSk+cIPAnsEqV955GjILJnKbdQC1nVPz+gAYQ==", + "license": "MIT", + "dependencies": { + "debug": "^4.4.0", + "depd": "^2.0.0", + "is-promise": "^4.0.0", + "parseurl": "^1.3.3", + "path-to-regexp": "^8.0.0" + }, + "engines": { + "node": ">= 18" + } + }, + "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" + } + ], + "license": "MIT" + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "license": "MIT" + }, + "node_modules/send": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/send/-/send-1.2.0.tgz", + "integrity": "sha512-uaW0WwXKpL9blXE2o0bRhoL2EGXIrZxQ2ZQ4mgcfoBxdFmQold+qWsD2jLrfZ0trjKL6vOw0j//eAwcALFjKSw==", + "license": "MIT", + "dependencies": { + "debug": "^4.3.5", + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "etag": "^1.8.1", + "fresh": "^2.0.0", + "http-errors": "^2.0.0", + "mime-types": "^3.0.1", + "ms": "^2.1.3", + "on-finished": "^2.4.1", + "range-parser": "^1.2.1", + "statuses": "^2.0.1" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/serve-static": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-2.2.0.tgz", + "integrity": "sha512-61g9pCh0Vnh7IutZjtLGGpTA355+OPn2TyDv/6ivP2h/AdAVX9azsoxmg2/M6nZeQZNYBEwIcsne1mJd9oQItQ==", + "license": "MIT", + "dependencies": { + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "parseurl": "^1.3.3", + "send": "^1.2.0" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "license": "ISC" + }, + "node_modules/side-channel": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", + "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3", + "side-channel-list": "^1.0.0", + "side-channel-map": "^1.0.1", + "side-channel-weakmap": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-list": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", + "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-map": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", + "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-weakmap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", + "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3", + "side-channel-map": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/statuses": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz", + "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==", + "license": "MIT", + "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==", + "license": "MIT", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/type-is": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-2.0.1.tgz", + "integrity": "sha512-OZs6gsjF4vMp32qrCbiVSkrFmXtG/AZhY3t0iAMrMBiAZyV9oALtXO8hsrHbMXF9x6L3grlFuwW2oAz7cav+Gw==", + "license": "MIT", + "dependencies": { + "content-type": "^1.0.5", + "media-typer": "^1.1.0", + "mime-types": "^3.0.0" + }, + "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==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "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==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "license": "ISC" + } + } +} diff --git a/docs/3-web-servers/06-fetch-api/_samples/fetch-open-status/package.json b/docs/3-web-servers/06-fetch-api/_samples/fetch-open-status/package.json new file mode 100644 index 000000000..a502ffd84 --- /dev/null +++ b/docs/3-web-servers/06-fetch-api/_samples/fetch-open-status/package.json @@ -0,0 +1,6 @@ +{ + "name": "fetch-open-status", + "dependencies": { + "express": "^5.1.0" + } +} diff --git a/docs/3-web-servers/06-fetch-api/_samples/fetch-open-status/public/index.html b/docs/3-web-servers/06-fetch-api/_samples/fetch-open-status/public/index.html new file mode 100644 index 000000000..13df699ba --- /dev/null +++ b/docs/3-web-servers/06-fetch-api/_samples/fetch-open-status/public/index.html @@ -0,0 +1,11 @@ + + + + + カフェ営業状況 + + +

        カフェは現在です。

        + + + diff --git a/docs/3-web-servers/06-fetch-api/_samples/fetch-open-status/public/script.mjs b/docs/3-web-servers/06-fetch-api/_samples/fetch-open-status/public/script.mjs new file mode 100644 index 000000000..59683be9c --- /dev/null +++ b/docs/3-web-servers/06-fetch-api/_samples/fetch-open-status/public/script.mjs @@ -0,0 +1,4 @@ +const response = await fetch("/open-status"); +const openStatus = await response.text(); + +document.getElementById("open-status").textContent = openStatus; diff --git a/docs/3-web-servers/06-fetch-api/index.mdx b/docs/3-web-servers/06-fetch-api/index.mdx index b61c1a650..c9891c4c7 100644 --- a/docs/3-web-servers/06-fetch-api/index.mdx +++ b/docs/3-web-servers/06-fetch-api/index.mdx @@ -1,5 +1,5 @@ --- -title: Fetch API +title: Fetch APIによるデータの取得 --- 前頁では、Webサーバーが動作する仕組みと、ブラウザとWebサーバーの間で行われる基本的な通信の手順について学びました。この流れの中では、ブラウザは、次のような場合にHTTPリクエストをWebサーバーに対して送信するのでした。 @@ -62,7 +62,7 @@ export function multiply(a, b) { ::: -## Fetch API を使用する +## Fetch APIでテキストデータを取得する Fetch APIは、`fetch`関数を呼び出すことで実行できます。`fetch`関数にリクエストを発行したいURLを指定することで、HTTPリクエストを発行し、[`Response`](https://developer.mozilla.org/ja/docs/Web/API/Response)オブジェクトを取得できます。`Response`オブジェクトの[`text`メソッド](https://developer.mozilla.org/ja/docs/Web/API/Response/text)を呼び出すことで、レスポンスを文字列として取得できます。 @@ -111,6 +111,109 @@ JavaScriptにおける**非同期処理**とは、ファイルの ::: +### 確認問題 + +あるカフェでは、現在「営業中」か「営業時間外」かを表示するWebアプリケーションを作成しています。 + +サーバー側では、`/open-status`というパスに対するリクエストを受けたとき、`営業中`という文字列をレスポンスとして返すようにしてください。ブラウザ側では、`fetch`関数を用いて`/open-status`にリクエストを発行し、レスポンスを受け取って、`カフェは現在営業中です。`と表示するようにしてください。 + +ここに画像を埋め込む + + + +```javascript title="main.mjs (サーバーとして動作するJavaScript)" +import express from "express"; + +const app = express(); + +app.use(express.static("./public")); + +app.get("/open-status", (request, response) => { + response.send("営業中"); +}); + +app.listen(3000); +``` + +```html title="public/index.htmlの抜粋" +

        カフェは現在です。

        + +``` + +```javascript title="public/script.mjs (ブラウザ上で動作するJavaScript)" +const response = await fetch("/open-status"); +const openStatus = await response.text(); + +document.getElementById("open-status").textContent = openStatus; +``` + + + +
        + +## Fetch APIでJSONデータを取得する + +### 確認問題 + +あるカフェでは、現在「営業中」か「営業時間外」かだけではなく、営業時間も表示するWebアプリケーションを作成することにしました。 + +サーバー側では、`/open-status`に対するリクエストを受けたとき、次のようなJSON形式のレスポンスを返すようにしてください。ブラウザ側では、`/open-status`にリクエストを発行し、レスポンスを受け取って、カフェが営業中であれば`カフェは現在営業中です。本日の営業時間は10:00から18:00です。`と表示し、カフェが営業時間外であれば`カフェは現在営業時間外です。本日の営業時間は10:00から18:00です。`と表示するようにしてください。 + +```json +{ + "isOpen": true, + "openTime": "10:00", + "closeTime": "18:00" +} +``` + +ここに画像を埋め込む + + + +```javascript title="main.mjs (サーバーとして動作するJavaScript)" +import express from "express"; + +const app = express(); + +app.use(express.static("./public")); + +app.get("/open-status", (request, response) => { + response.json({ + isOpen: true, + openTime: "10:00", + closeTime: "18:00", + }); +}); + +app.listen(3000); +``` + +{/* prettier-ignore */} +```html title="public/index.htmlの抜粋" +

        カフェは現在です。

        +

        本日の営業時間はからです。

        + +``` + +```javascript title="public/script.mjs (ブラウザ上で動作するJavaScript)" +const response = await fetch("/open-status"); +const openStatus = await response.json(); + +if (openStatus.isOpen) { + document.getElementById("open-status").textContent = "営業中"; +} else { + document.getElementById("open-status").textContent = "営業時間外"; +} + +document.getElementById("open-time").textContent = openStatus.openTime; +document.getElementById("close-time").textContent = openStatus.closeTime; +``` + + + +
        + ## 演習問題1 Fetch APIを用いて、ページを開いたとき、サーバーから現在の為替レート(円/ドル)を取得して表示するWebアプリケーションを作成してください。ただし、為替レートは、サーバー側で乱数を用いて生成してください。 diff --git a/docs/3-web-servers/07-fetch-api-post/_samples/book-search/.gitignore b/docs/3-web-servers/07-fetch-api-post/_samples/book-search/.gitignore new file mode 100644 index 000000000..07e6e472c --- /dev/null +++ b/docs/3-web-servers/07-fetch-api-post/_samples/book-search/.gitignore @@ -0,0 +1 @@ +/node_modules diff --git a/docs/3-web-servers/07-fetch-api-post/_samples/book-search/main.mjs b/docs/3-web-servers/07-fetch-api-post/_samples/book-search/main.mjs new file mode 100644 index 000000000..ce924acbc --- /dev/null +++ b/docs/3-web-servers/07-fetch-api-post/_samples/book-search/main.mjs @@ -0,0 +1,23 @@ +import express from "express"; + +const app = express(); + +app.use(express.static("./public")); +app.use(express.json()); + +const books = [ + { title: "吾輩は猫である", author: "夏目漱石" }, + { title: "こころ", author: "夏目漱石" }, + { title: "坊っちゃん", author: "夏目漱石" }, + { title: "舞姫", author: "森鴎外" }, + { title: "高瀬舟", author: "森鴎外" }, +]; + +app.post("/search", (request, response) => { + const selectedBooks = books.filter( + (book) => book.author === request.body.author, + ); + response.json(selectedBooks); +}); + +app.listen(3000); diff --git a/docs/3-web-servers/07-fetch-api-post/_samples/book-search/package-lock.json b/docs/3-web-servers/07-fetch-api-post/_samples/book-search/package-lock.json new file mode 100644 index 000000000..c7b997d2e --- /dev/null +++ b/docs/3-web-servers/07-fetch-api-post/_samples/book-search/package-lock.json @@ -0,0 +1,822 @@ +{ + "name": "book-search", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "book-search", + "dependencies": { + "express": "^5.1.0" + } + }, + "node_modules/accepts": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-2.0.0.tgz", + "integrity": "sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==", + "license": "MIT", + "dependencies": { + "mime-types": "^3.0.0", + "negotiator": "^1.0.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/body-parser": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-2.2.0.tgz", + "integrity": "sha512-02qvAaxv8tp7fBa/mw1ga98OGm+eCbqzJOKoRt70sLmfEEi+jyBYVTDGfCL/k06/4EMk/z01gCe7HoCH/f2LTg==", + "license": "MIT", + "dependencies": { + "bytes": "^3.1.2", + "content-type": "^1.0.5", + "debug": "^4.4.0", + "http-errors": "^2.0.0", + "iconv-lite": "^0.6.3", + "on-finished": "^2.4.1", + "qs": "^6.14.0", + "raw-body": "^3.0.0", + "type-is": "^2.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/call-bind-apply-helpers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/call-bound": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", + "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "get-intrinsic": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/content-disposition": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-1.0.0.tgz", + "integrity": "sha512-Au9nRL8VNUut/XSzbQA38+M78dzP4D+eqg3gfJHMIHHYa3bg067xj1KxMUWj+VULbiZMowKngFFbKczUrNJ1mg==", + "license": "MIT", + "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==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz", + "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie-signature": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.2.2.tgz", + "integrity": "sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg==", + "license": "MIT", + "engines": { + "node": ">=6.6.0" + } + }, + "node_modules/debug": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz", + "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "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==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "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==", + "license": "MIT" + }, + "node_modules/encodeurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", + "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/es-define-property": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-object-atoms": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "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==", + "license": "MIT" + }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/express": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/express/-/express-5.1.0.tgz", + "integrity": "sha512-DT9ck5YIRU+8GYzzU5kT3eHGA5iL+1Zd0EutOmTE9Dtk+Tvuzd23VBU+ec7HPNSTxXYO55gPV/hq4pSBJDjFpA==", + "license": "MIT", + "dependencies": { + "accepts": "^2.0.0", + "body-parser": "^2.2.0", + "content-disposition": "^1.0.0", + "content-type": "^1.0.5", + "cookie": "^0.7.1", + "cookie-signature": "^1.2.1", + "debug": "^4.4.0", + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "etag": "^1.8.1", + "finalhandler": "^2.1.0", + "fresh": "^2.0.0", + "http-errors": "^2.0.0", + "merge-descriptors": "^2.0.0", + "mime-types": "^3.0.0", + "on-finished": "^2.4.1", + "once": "^1.4.0", + "parseurl": "^1.3.3", + "proxy-addr": "^2.0.7", + "qs": "^6.14.0", + "range-parser": "^1.2.1", + "router": "^2.2.0", + "send": "^1.1.0", + "serve-static": "^2.2.0", + "statuses": "^2.0.1", + "type-is": "^2.0.1", + "vary": "^1.1.2" + }, + "engines": { + "node": ">= 18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/finalhandler": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-2.1.0.tgz", + "integrity": "sha512-/t88Ty3d5JWQbWYgaOGCCYfXRwV1+be02WqYYlL6h0lEiUAMPM8o8qKGO01YIkOHzka2up08wvgYD0mDiI+q3Q==", + "license": "MIT", + "dependencies": { + "debug": "^4.4.0", + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "on-finished": "^2.4.1", + "parseurl": "^1.3.3", + "statuses": "^2.0.1" + }, + "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==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fresh": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-2.0.0.tgz", + "integrity": "sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-intrinsic": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "function-bind": "^1.1.2", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/gopd": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "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==", + "license": "MIT", + "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/http-errors/node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "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==", + "license": "ISC" + }, + "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==", + "license": "MIT", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/is-promise": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-4.0.0.tgz", + "integrity": "sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==", + "license": "MIT" + }, + "node_modules/math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/media-typer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-1.1.0.tgz", + "integrity": "sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/merge-descriptors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-2.0.0.tgz", + "integrity": "sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/mime-db": { + "version": "1.54.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz", + "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.1.tgz", + "integrity": "sha512-xRc4oEhT6eaBpU1XF7AjpOFD+xQmXNB5OVKwp4tqCuBpHLS/ZbBDrc07mYTDqVMg6PfxUjjNp85O6Cd2Z/5HWA==", + "license": "MIT", + "dependencies": { + "mime-db": "^1.54.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "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==", + "license": "MIT" + }, + "node_modules/negotiator": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-1.0.0.tgz", + "integrity": "sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/object-inspect": { + "version": "1.13.4", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", + "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "license": "MIT", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "license": "ISC", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/path-to-regexp": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-8.2.0.tgz", + "integrity": "sha512-TdrF7fW9Rphjq4RjrW0Kp2AW0Ahwu9sRGTkS6bvDi0SCwZlEZYmcfDbEsTz8RVk0EHIS/Vd1bv3JhG+1xZuAyQ==", + "license": "MIT", + "engines": { + "node": ">=16" + } + }, + "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==", + "license": "MIT", + "dependencies": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/qs": { + "version": "6.14.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.0.tgz", + "integrity": "sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==", + "license": "BSD-3-Clause", + "dependencies": { + "side-channel": "^1.1.0" + }, + "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==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/raw-body": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-3.0.0.tgz", + "integrity": "sha512-RmkhL8CAyCRPXCE28MMH0z2PNWQBNk2Q09ZdxM9IOOXwxwZbN+qbWaatPkdkWIKL2ZVDImrN/pK5HTRz2PcS4g==", + "license": "MIT", + "dependencies": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.6.3", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/router": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/router/-/router-2.2.0.tgz", + "integrity": "sha512-nLTrUKm2UyiL7rlhapu/Zl45FwNgkZGaCpZbIHajDYgwlJCOzLSk+cIPAnsEqV955GjILJnKbdQC1nVPz+gAYQ==", + "license": "MIT", + "dependencies": { + "debug": "^4.4.0", + "depd": "^2.0.0", + "is-promise": "^4.0.0", + "parseurl": "^1.3.3", + "path-to-regexp": "^8.0.0" + }, + "engines": { + "node": ">= 18" + } + }, + "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" + } + ], + "license": "MIT" + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "license": "MIT" + }, + "node_modules/send": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/send/-/send-1.2.0.tgz", + "integrity": "sha512-uaW0WwXKpL9blXE2o0bRhoL2EGXIrZxQ2ZQ4mgcfoBxdFmQold+qWsD2jLrfZ0trjKL6vOw0j//eAwcALFjKSw==", + "license": "MIT", + "dependencies": { + "debug": "^4.3.5", + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "etag": "^1.8.1", + "fresh": "^2.0.0", + "http-errors": "^2.0.0", + "mime-types": "^3.0.1", + "ms": "^2.1.3", + "on-finished": "^2.4.1", + "range-parser": "^1.2.1", + "statuses": "^2.0.1" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/serve-static": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-2.2.0.tgz", + "integrity": "sha512-61g9pCh0Vnh7IutZjtLGGpTA355+OPn2TyDv/6ivP2h/AdAVX9azsoxmg2/M6nZeQZNYBEwIcsne1mJd9oQItQ==", + "license": "MIT", + "dependencies": { + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "parseurl": "^1.3.3", + "send": "^1.2.0" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "license": "ISC" + }, + "node_modules/side-channel": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", + "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3", + "side-channel-list": "^1.0.0", + "side-channel-map": "^1.0.1", + "side-channel-weakmap": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-list": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", + "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-map": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", + "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-weakmap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", + "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3", + "side-channel-map": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/statuses": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz", + "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==", + "license": "MIT", + "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==", + "license": "MIT", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/type-is": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-2.0.1.tgz", + "integrity": "sha512-OZs6gsjF4vMp32qrCbiVSkrFmXtG/AZhY3t0iAMrMBiAZyV9oALtXO8hsrHbMXF9x6L3grlFuwW2oAz7cav+Gw==", + "license": "MIT", + "dependencies": { + "content-type": "^1.0.5", + "media-typer": "^1.1.0", + "mime-types": "^3.0.0" + }, + "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==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "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==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "license": "ISC" + } + } +} diff --git a/docs/3-web-servers/07-fetch-api-post/_samples/book-search/package.json b/docs/3-web-servers/07-fetch-api-post/_samples/book-search/package.json new file mode 100644 index 000000000..074a0e785 --- /dev/null +++ b/docs/3-web-servers/07-fetch-api-post/_samples/book-search/package.json @@ -0,0 +1,6 @@ +{ + "name": "book-search", + "dependencies": { + "express": "^5.1.0" + } +} diff --git a/docs/3-web-servers/07-fetch-api-post/_samples/book-search/public/index.html b/docs/3-web-servers/07-fetch-api-post/_samples/book-search/public/index.html new file mode 100644 index 000000000..77ea92970 --- /dev/null +++ b/docs/3-web-servers/07-fetch-api-post/_samples/book-search/public/index.html @@ -0,0 +1,13 @@ + + + + + 書籍検索アプリ + + + + +
          + + + diff --git a/docs/3-web-servers/07-fetch-api-post/_samples/book-search/public/script.mjs b/docs/3-web-servers/07-fetch-api-post/_samples/book-search/public/script.mjs new file mode 100644 index 000000000..a6ac18d32 --- /dev/null +++ b/docs/3-web-servers/07-fetch-api-post/_samples/book-search/public/script.mjs @@ -0,0 +1,19 @@ +document.getElementById("search-button").onclick = async () => { + const author = document.getElementById("author-input").value; + + const response = await fetch("/search", { + method: "post", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify({ author: author }), + }); + const books = await response.json(); + + const bookList = document.getElementById("book-list"); + bookList.innerHTML = ""; + + for (const book of books) { + const li = document.createElement("li"); + li.textContent = book.title; + bookList.appendChild(li); + } +}; diff --git a/docs/3-web-servers/07-fetch-api-post/_samples/calculate-tax/.gitignore b/docs/3-web-servers/07-fetch-api-post/_samples/calculate-tax/.gitignore new file mode 100644 index 000000000..07e6e472c --- /dev/null +++ b/docs/3-web-servers/07-fetch-api-post/_samples/calculate-tax/.gitignore @@ -0,0 +1 @@ +/node_modules diff --git a/docs/3-web-servers/07-fetch-api-post/_samples/calculate-tax/main.mjs b/docs/3-web-servers/07-fetch-api-post/_samples/calculate-tax/main.mjs new file mode 100644 index 000000000..0bec16025 --- /dev/null +++ b/docs/3-web-servers/07-fetch-api-post/_samples/calculate-tax/main.mjs @@ -0,0 +1,19 @@ +import express from "express"; + +const app = express(); + +app.use(express.static("./public")); +app.use(express.json()); + +const taxRate = 0.1; + +app.post("/calculate", (request, response) => { + const tax = request.body.subtotal * taxRate; + const total = tax + request.body.subtotal; + response.json({ + tax: tax, + total: total, + }); +}); + +app.listen(3000); diff --git a/docs/3-web-servers/07-fetch-api-post/_samples/calculate-tax/package-lock.json b/docs/3-web-servers/07-fetch-api-post/_samples/calculate-tax/package-lock.json new file mode 100644 index 000000000..367638582 --- /dev/null +++ b/docs/3-web-servers/07-fetch-api-post/_samples/calculate-tax/package-lock.json @@ -0,0 +1,822 @@ +{ + "name": "tax-calculator", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "tax-calculator", + "dependencies": { + "express": "^5.1.0" + } + }, + "node_modules/accepts": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-2.0.0.tgz", + "integrity": "sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==", + "license": "MIT", + "dependencies": { + "mime-types": "^3.0.0", + "negotiator": "^1.0.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/body-parser": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-2.2.0.tgz", + "integrity": "sha512-02qvAaxv8tp7fBa/mw1ga98OGm+eCbqzJOKoRt70sLmfEEi+jyBYVTDGfCL/k06/4EMk/z01gCe7HoCH/f2LTg==", + "license": "MIT", + "dependencies": { + "bytes": "^3.1.2", + "content-type": "^1.0.5", + "debug": "^4.4.0", + "http-errors": "^2.0.0", + "iconv-lite": "^0.6.3", + "on-finished": "^2.4.1", + "qs": "^6.14.0", + "raw-body": "^3.0.0", + "type-is": "^2.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/call-bind-apply-helpers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/call-bound": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", + "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "get-intrinsic": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/content-disposition": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-1.0.0.tgz", + "integrity": "sha512-Au9nRL8VNUut/XSzbQA38+M78dzP4D+eqg3gfJHMIHHYa3bg067xj1KxMUWj+VULbiZMowKngFFbKczUrNJ1mg==", + "license": "MIT", + "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==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz", + "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie-signature": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.2.2.tgz", + "integrity": "sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg==", + "license": "MIT", + "engines": { + "node": ">=6.6.0" + } + }, + "node_modules/debug": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz", + "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "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==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "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==", + "license": "MIT" + }, + "node_modules/encodeurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", + "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/es-define-property": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-object-atoms": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "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==", + "license": "MIT" + }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/express": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/express/-/express-5.1.0.tgz", + "integrity": "sha512-DT9ck5YIRU+8GYzzU5kT3eHGA5iL+1Zd0EutOmTE9Dtk+Tvuzd23VBU+ec7HPNSTxXYO55gPV/hq4pSBJDjFpA==", + "license": "MIT", + "dependencies": { + "accepts": "^2.0.0", + "body-parser": "^2.2.0", + "content-disposition": "^1.0.0", + "content-type": "^1.0.5", + "cookie": "^0.7.1", + "cookie-signature": "^1.2.1", + "debug": "^4.4.0", + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "etag": "^1.8.1", + "finalhandler": "^2.1.0", + "fresh": "^2.0.0", + "http-errors": "^2.0.0", + "merge-descriptors": "^2.0.0", + "mime-types": "^3.0.0", + "on-finished": "^2.4.1", + "once": "^1.4.0", + "parseurl": "^1.3.3", + "proxy-addr": "^2.0.7", + "qs": "^6.14.0", + "range-parser": "^1.2.1", + "router": "^2.2.0", + "send": "^1.1.0", + "serve-static": "^2.2.0", + "statuses": "^2.0.1", + "type-is": "^2.0.1", + "vary": "^1.1.2" + }, + "engines": { + "node": ">= 18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/finalhandler": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-2.1.0.tgz", + "integrity": "sha512-/t88Ty3d5JWQbWYgaOGCCYfXRwV1+be02WqYYlL6h0lEiUAMPM8o8qKGO01YIkOHzka2up08wvgYD0mDiI+q3Q==", + "license": "MIT", + "dependencies": { + "debug": "^4.4.0", + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "on-finished": "^2.4.1", + "parseurl": "^1.3.3", + "statuses": "^2.0.1" + }, + "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==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fresh": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-2.0.0.tgz", + "integrity": "sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-intrinsic": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "function-bind": "^1.1.2", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/gopd": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "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==", + "license": "MIT", + "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/http-errors/node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "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==", + "license": "ISC" + }, + "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==", + "license": "MIT", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/is-promise": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-4.0.0.tgz", + "integrity": "sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==", + "license": "MIT" + }, + "node_modules/math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/media-typer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-1.1.0.tgz", + "integrity": "sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/merge-descriptors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-2.0.0.tgz", + "integrity": "sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/mime-db": { + "version": "1.54.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz", + "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.1.tgz", + "integrity": "sha512-xRc4oEhT6eaBpU1XF7AjpOFD+xQmXNB5OVKwp4tqCuBpHLS/ZbBDrc07mYTDqVMg6PfxUjjNp85O6Cd2Z/5HWA==", + "license": "MIT", + "dependencies": { + "mime-db": "^1.54.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "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==", + "license": "MIT" + }, + "node_modules/negotiator": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-1.0.0.tgz", + "integrity": "sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/object-inspect": { + "version": "1.13.4", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", + "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "license": "MIT", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "license": "ISC", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/path-to-regexp": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-8.2.0.tgz", + "integrity": "sha512-TdrF7fW9Rphjq4RjrW0Kp2AW0Ahwu9sRGTkS6bvDi0SCwZlEZYmcfDbEsTz8RVk0EHIS/Vd1bv3JhG+1xZuAyQ==", + "license": "MIT", + "engines": { + "node": ">=16" + } + }, + "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==", + "license": "MIT", + "dependencies": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/qs": { + "version": "6.14.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.0.tgz", + "integrity": "sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==", + "license": "BSD-3-Clause", + "dependencies": { + "side-channel": "^1.1.0" + }, + "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==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/raw-body": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-3.0.0.tgz", + "integrity": "sha512-RmkhL8CAyCRPXCE28MMH0z2PNWQBNk2Q09ZdxM9IOOXwxwZbN+qbWaatPkdkWIKL2ZVDImrN/pK5HTRz2PcS4g==", + "license": "MIT", + "dependencies": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.6.3", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/router": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/router/-/router-2.2.0.tgz", + "integrity": "sha512-nLTrUKm2UyiL7rlhapu/Zl45FwNgkZGaCpZbIHajDYgwlJCOzLSk+cIPAnsEqV955GjILJnKbdQC1nVPz+gAYQ==", + "license": "MIT", + "dependencies": { + "debug": "^4.4.0", + "depd": "^2.0.0", + "is-promise": "^4.0.0", + "parseurl": "^1.3.3", + "path-to-regexp": "^8.0.0" + }, + "engines": { + "node": ">= 18" + } + }, + "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" + } + ], + "license": "MIT" + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "license": "MIT" + }, + "node_modules/send": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/send/-/send-1.2.0.tgz", + "integrity": "sha512-uaW0WwXKpL9blXE2o0bRhoL2EGXIrZxQ2ZQ4mgcfoBxdFmQold+qWsD2jLrfZ0trjKL6vOw0j//eAwcALFjKSw==", + "license": "MIT", + "dependencies": { + "debug": "^4.3.5", + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "etag": "^1.8.1", + "fresh": "^2.0.0", + "http-errors": "^2.0.0", + "mime-types": "^3.0.1", + "ms": "^2.1.3", + "on-finished": "^2.4.1", + "range-parser": "^1.2.1", + "statuses": "^2.0.1" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/serve-static": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-2.2.0.tgz", + "integrity": "sha512-61g9pCh0Vnh7IutZjtLGGpTA355+OPn2TyDv/6ivP2h/AdAVX9azsoxmg2/M6nZeQZNYBEwIcsne1mJd9oQItQ==", + "license": "MIT", + "dependencies": { + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "parseurl": "^1.3.3", + "send": "^1.2.0" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "license": "ISC" + }, + "node_modules/side-channel": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", + "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3", + "side-channel-list": "^1.0.0", + "side-channel-map": "^1.0.1", + "side-channel-weakmap": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-list": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", + "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-map": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", + "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-weakmap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", + "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3", + "side-channel-map": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/statuses": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz", + "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==", + "license": "MIT", + "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==", + "license": "MIT", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/type-is": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-2.0.1.tgz", + "integrity": "sha512-OZs6gsjF4vMp32qrCbiVSkrFmXtG/AZhY3t0iAMrMBiAZyV9oALtXO8hsrHbMXF9x6L3grlFuwW2oAz7cav+Gw==", + "license": "MIT", + "dependencies": { + "content-type": "^1.0.5", + "media-typer": "^1.1.0", + "mime-types": "^3.0.0" + }, + "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==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "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==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "license": "ISC" + } + } +} diff --git a/docs/3-web-servers/07-fetch-api-post/_samples/calculate-tax/package.json b/docs/3-web-servers/07-fetch-api-post/_samples/calculate-tax/package.json new file mode 100644 index 000000000..35b284a1a --- /dev/null +++ b/docs/3-web-servers/07-fetch-api-post/_samples/calculate-tax/package.json @@ -0,0 +1,6 @@ +{ + "name": "tax-calculator", + "dependencies": { + "express": "^5.1.0" + } +} diff --git a/docs/3-web-servers/07-fetch-api-post/_samples/calculate-tax/public/index.html b/docs/3-web-servers/07-fetch-api-post/_samples/calculate-tax/public/index.html new file mode 100644 index 000000000..267938dc6 --- /dev/null +++ b/docs/3-web-servers/07-fetch-api-post/_samples/calculate-tax/public/index.html @@ -0,0 +1,14 @@ + + + + + 消費税計算 + + + + +
          消費税額:
          +
          税込価格:
          + + + diff --git a/docs/3-web-servers/07-fetch-api-post/_samples/calculate-tax/public/script.mjs b/docs/3-web-servers/07-fetch-api-post/_samples/calculate-tax/public/script.mjs new file mode 100644 index 000000000..eae93e8a6 --- /dev/null +++ b/docs/3-web-servers/07-fetch-api-post/_samples/calculate-tax/public/script.mjs @@ -0,0 +1,13 @@ +document.getElementById("calculate-button").onclick = async () => { + const subtotal = parseFloat(document.getElementById("subtotal-input").value); + + const response = await fetch("/calculate", { + method: "post", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify({ subtotal: subtotal }), + }); + const taxResult = await response.json(); + + document.getElementById("tax").textContent = taxResult.tax; + document.getElementById("total").textContent = taxResult.total; +}; diff --git a/docs/3-web-servers/07-fetch-api-post/_samples/chat-app/.gitignore b/docs/3-web-servers/07-fetch-api-post/_samples/chat-app/.gitignore new file mode 100644 index 000000000..07e6e472c --- /dev/null +++ b/docs/3-web-servers/07-fetch-api-post/_samples/chat-app/.gitignore @@ -0,0 +1 @@ +/node_modules diff --git a/docs/3-web-servers/07-fetch-api-post/_samples/chat-app/main.mjs b/docs/3-web-servers/07-fetch-api-post/_samples/chat-app/main.mjs new file mode 100644 index 000000000..0ba804bfc --- /dev/null +++ b/docs/3-web-servers/07-fetch-api-post/_samples/chat-app/main.mjs @@ -0,0 +1,19 @@ +import express from "express"; + +const app = express(); + +app.use(express.static("./public")); +app.use(express.json()); + +const messages = []; + +app.get("/messages", (request, response) => { + response.json(messages); +}); + +app.post("/send", (request, response) => { + messages.push(request.body.message); + response.send(); +}); + +app.listen(3000); diff --git a/docs/3-web-servers/07-fetch-api-post/_samples/chat-app/package-lock.json b/docs/3-web-servers/07-fetch-api-post/_samples/chat-app/package-lock.json new file mode 100644 index 000000000..48e39776b --- /dev/null +++ b/docs/3-web-servers/07-fetch-api-post/_samples/chat-app/package-lock.json @@ -0,0 +1,822 @@ +{ + "name": "chat-app", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "chat-app", + "dependencies": { + "express": "^5.1.0" + } + }, + "node_modules/accepts": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-2.0.0.tgz", + "integrity": "sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==", + "license": "MIT", + "dependencies": { + "mime-types": "^3.0.0", + "negotiator": "^1.0.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/body-parser": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-2.2.0.tgz", + "integrity": "sha512-02qvAaxv8tp7fBa/mw1ga98OGm+eCbqzJOKoRt70sLmfEEi+jyBYVTDGfCL/k06/4EMk/z01gCe7HoCH/f2LTg==", + "license": "MIT", + "dependencies": { + "bytes": "^3.1.2", + "content-type": "^1.0.5", + "debug": "^4.4.0", + "http-errors": "^2.0.0", + "iconv-lite": "^0.6.3", + "on-finished": "^2.4.1", + "qs": "^6.14.0", + "raw-body": "^3.0.0", + "type-is": "^2.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/call-bind-apply-helpers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/call-bound": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", + "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "get-intrinsic": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/content-disposition": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-1.0.0.tgz", + "integrity": "sha512-Au9nRL8VNUut/XSzbQA38+M78dzP4D+eqg3gfJHMIHHYa3bg067xj1KxMUWj+VULbiZMowKngFFbKczUrNJ1mg==", + "license": "MIT", + "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==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz", + "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie-signature": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.2.2.tgz", + "integrity": "sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg==", + "license": "MIT", + "engines": { + "node": ">=6.6.0" + } + }, + "node_modules/debug": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz", + "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "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==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "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==", + "license": "MIT" + }, + "node_modules/encodeurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", + "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/es-define-property": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-object-atoms": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "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==", + "license": "MIT" + }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/express": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/express/-/express-5.1.0.tgz", + "integrity": "sha512-DT9ck5YIRU+8GYzzU5kT3eHGA5iL+1Zd0EutOmTE9Dtk+Tvuzd23VBU+ec7HPNSTxXYO55gPV/hq4pSBJDjFpA==", + "license": "MIT", + "dependencies": { + "accepts": "^2.0.0", + "body-parser": "^2.2.0", + "content-disposition": "^1.0.0", + "content-type": "^1.0.5", + "cookie": "^0.7.1", + "cookie-signature": "^1.2.1", + "debug": "^4.4.0", + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "etag": "^1.8.1", + "finalhandler": "^2.1.0", + "fresh": "^2.0.0", + "http-errors": "^2.0.0", + "merge-descriptors": "^2.0.0", + "mime-types": "^3.0.0", + "on-finished": "^2.4.1", + "once": "^1.4.0", + "parseurl": "^1.3.3", + "proxy-addr": "^2.0.7", + "qs": "^6.14.0", + "range-parser": "^1.2.1", + "router": "^2.2.0", + "send": "^1.1.0", + "serve-static": "^2.2.0", + "statuses": "^2.0.1", + "type-is": "^2.0.1", + "vary": "^1.1.2" + }, + "engines": { + "node": ">= 18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/finalhandler": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-2.1.0.tgz", + "integrity": "sha512-/t88Ty3d5JWQbWYgaOGCCYfXRwV1+be02WqYYlL6h0lEiUAMPM8o8qKGO01YIkOHzka2up08wvgYD0mDiI+q3Q==", + "license": "MIT", + "dependencies": { + "debug": "^4.4.0", + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "on-finished": "^2.4.1", + "parseurl": "^1.3.3", + "statuses": "^2.0.1" + }, + "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==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fresh": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-2.0.0.tgz", + "integrity": "sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-intrinsic": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "function-bind": "^1.1.2", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/gopd": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "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==", + "license": "MIT", + "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/http-errors/node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "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==", + "license": "ISC" + }, + "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==", + "license": "MIT", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/is-promise": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-4.0.0.tgz", + "integrity": "sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==", + "license": "MIT" + }, + "node_modules/math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/media-typer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-1.1.0.tgz", + "integrity": "sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/merge-descriptors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-2.0.0.tgz", + "integrity": "sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/mime-db": { + "version": "1.54.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz", + "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.1.tgz", + "integrity": "sha512-xRc4oEhT6eaBpU1XF7AjpOFD+xQmXNB5OVKwp4tqCuBpHLS/ZbBDrc07mYTDqVMg6PfxUjjNp85O6Cd2Z/5HWA==", + "license": "MIT", + "dependencies": { + "mime-db": "^1.54.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "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==", + "license": "MIT" + }, + "node_modules/negotiator": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-1.0.0.tgz", + "integrity": "sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/object-inspect": { + "version": "1.13.4", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", + "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "license": "MIT", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "license": "ISC", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/path-to-regexp": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-8.2.0.tgz", + "integrity": "sha512-TdrF7fW9Rphjq4RjrW0Kp2AW0Ahwu9sRGTkS6bvDi0SCwZlEZYmcfDbEsTz8RVk0EHIS/Vd1bv3JhG+1xZuAyQ==", + "license": "MIT", + "engines": { + "node": ">=16" + } + }, + "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==", + "license": "MIT", + "dependencies": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/qs": { + "version": "6.14.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.0.tgz", + "integrity": "sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==", + "license": "BSD-3-Clause", + "dependencies": { + "side-channel": "^1.1.0" + }, + "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==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/raw-body": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-3.0.0.tgz", + "integrity": "sha512-RmkhL8CAyCRPXCE28MMH0z2PNWQBNk2Q09ZdxM9IOOXwxwZbN+qbWaatPkdkWIKL2ZVDImrN/pK5HTRz2PcS4g==", + "license": "MIT", + "dependencies": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.6.3", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/router": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/router/-/router-2.2.0.tgz", + "integrity": "sha512-nLTrUKm2UyiL7rlhapu/Zl45FwNgkZGaCpZbIHajDYgwlJCOzLSk+cIPAnsEqV955GjILJnKbdQC1nVPz+gAYQ==", + "license": "MIT", + "dependencies": { + "debug": "^4.4.0", + "depd": "^2.0.0", + "is-promise": "^4.0.0", + "parseurl": "^1.3.3", + "path-to-regexp": "^8.0.0" + }, + "engines": { + "node": ">= 18" + } + }, + "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" + } + ], + "license": "MIT" + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "license": "MIT" + }, + "node_modules/send": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/send/-/send-1.2.0.tgz", + "integrity": "sha512-uaW0WwXKpL9blXE2o0bRhoL2EGXIrZxQ2ZQ4mgcfoBxdFmQold+qWsD2jLrfZ0trjKL6vOw0j//eAwcALFjKSw==", + "license": "MIT", + "dependencies": { + "debug": "^4.3.5", + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "etag": "^1.8.1", + "fresh": "^2.0.0", + "http-errors": "^2.0.0", + "mime-types": "^3.0.1", + "ms": "^2.1.3", + "on-finished": "^2.4.1", + "range-parser": "^1.2.1", + "statuses": "^2.0.1" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/serve-static": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-2.2.0.tgz", + "integrity": "sha512-61g9pCh0Vnh7IutZjtLGGpTA355+OPn2TyDv/6ivP2h/AdAVX9azsoxmg2/M6nZeQZNYBEwIcsne1mJd9oQItQ==", + "license": "MIT", + "dependencies": { + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "parseurl": "^1.3.3", + "send": "^1.2.0" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "license": "ISC" + }, + "node_modules/side-channel": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", + "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3", + "side-channel-list": "^1.0.0", + "side-channel-map": "^1.0.1", + "side-channel-weakmap": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-list": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", + "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-map": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", + "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-weakmap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", + "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3", + "side-channel-map": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/statuses": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz", + "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==", + "license": "MIT", + "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==", + "license": "MIT", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/type-is": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-2.0.1.tgz", + "integrity": "sha512-OZs6gsjF4vMp32qrCbiVSkrFmXtG/AZhY3t0iAMrMBiAZyV9oALtXO8hsrHbMXF9x6L3grlFuwW2oAz7cav+Gw==", + "license": "MIT", + "dependencies": { + "content-type": "^1.0.5", + "media-typer": "^1.1.0", + "mime-types": "^3.0.0" + }, + "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==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "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==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "license": "ISC" + } + } +} diff --git a/docs/3-web-servers/07-fetch-api-post/_samples/chat-app/package.json b/docs/3-web-servers/07-fetch-api-post/_samples/chat-app/package.json new file mode 100644 index 000000000..4d01f243c --- /dev/null +++ b/docs/3-web-servers/07-fetch-api-post/_samples/chat-app/package.json @@ -0,0 +1,6 @@ +{ + "name": "chat-app", + "dependencies": { + "express": "^5.1.0" + } +} diff --git a/docs/3-web-servers/07-fetch-api-post/_samples/chat-app/public/index.html b/docs/3-web-servers/07-fetch-api-post/_samples/chat-app/public/index.html new file mode 100644 index 000000000..6c1bab14d --- /dev/null +++ b/docs/3-web-servers/07-fetch-api-post/_samples/chat-app/public/index.html @@ -0,0 +1,13 @@ + + + + + チャットアプリ + + +
            + + + + + diff --git a/docs/3-web-servers/07-fetch-api-post/_samples/chat-app/public/script.mjs b/docs/3-web-servers/07-fetch-api-post/_samples/chat-app/public/script.mjs new file mode 100644 index 000000000..38ea2aeee --- /dev/null +++ b/docs/3-web-servers/07-fetch-api-post/_samples/chat-app/public/script.mjs @@ -0,0 +1,22 @@ +setInterval(async () => { + const response = await fetch("/messages"); + const messages = await response.json(); + + const messageList = document.getElementById("message-list"); + messageList.innerHTML = ""; + + for (const message of messages) { + const li = document.createElement("li"); + li.textContent = message; + messageList.appendChild(li); + } +}, 1000); + +document.getElementById("send-button").onclick = async () => { + const message = document.getElementById("message-input").value; + await fetch("/send", { + method: "post", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify({ message: message }), + }); +}; diff --git a/docs/3-web-servers/07-fetch-api-post/index.mdx b/docs/3-web-servers/07-fetch-api-post/index.mdx new file mode 100644 index 000000000..33428479a --- /dev/null +++ b/docs/3-web-servers/07-fetch-api-post/index.mdx @@ -0,0 +1,296 @@ +--- +title: Fetch APIによるデータの送信 +--- + +## Fetch APIでデータを送信する + +### 確認問題 + +次のように、税抜価格を入力することで、消費税額と税込価格を計算するWebアプリケーションを作成してみましょう。 + +ここに動画を埋め込む + +サーバー側では、`/calculate`に対するPOSTリクエストを受けたとき、受け取った税抜価格から消費税額と税込価格を計算し、これらをJSON形式で返すようにしてください。ブラウザ側では、税抜価格を入力し、計算ボタンを押すと、`/calculate`に対してPOSTリクエストで税抜価格を送信し、受け取ったレスポンスに基づいて消費税額と税込価格を表示するようにしてください。 + +消費税額と税込価格は次のように計算できます。 + +```javascript title="main.mjsの抜粋 (サーバーとして動作するJavaScript)" +const taxRate = 0.1; // 消費税率 + +app.post("/calculate", (request, response) => { + const subtotal = /* リクエストボディから税抜価格を取得 */; + const tax = subtotal * taxRate; // 消費税額を計算 + const total = tax + subtotal; // 税込価格を計算 + // 消費税額と税込価格をJSON形式で返す +}); +``` + + + +```javascript title="main.mjs (サーバーとして動作するJavaScript)" +import express from "express"; + +const app = express(); + +app.use(express.static("./public")); +app.use(express.json()); + +const taxRate = 0.1; + +app.post("/calculate", (request, response) => { + const tax = request.body.subtotal * taxRate; + const total = tax + request.body.subtotal; + response.json({ + tax: tax, + total: total, + }); +}); + +app.listen(3000); +``` + +```html title="public/index.htmlの抜粋" + + +
            消費税額:
            +
            税込価格:
            + +``` + +```javascript title="public/script.mjs (ブラウザ上で動作するJavaScript)" +document.getElementById("calculate-button").onclick = async () => { + const subtotal = parseFloat(document.getElementById("subtotal-input").value); + + const response = await fetch("/calculate", { + method: "post", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify({ subtotal: subtotal }), + }); + const taxResult = await response.json(); + + document.getElementById("tax").textContent = taxResult.tax; + document.getElementById("total").textContent = taxResult.total; +}; +``` + + + +
            + +## 演習問題1 + +次のように、著者名を入力することで、その著者の本の一覧が表示される書籍検索アプリを作ってみましょう。 + +ここに動画を埋め込む + +サーバー側では、`/search`に対するPOSTリクエストを受けたとき、受け取った著者名に一致する本のデータをJSON形式で返すようにしてください。 + +```javascript title="main.mjsの抜粋 (サーバーとして動作するJavaScript)" +const books = [ + { title: "吾輩は猫である", author: "夏目漱石" }, + { title: "こころ", author: "夏目漱石" }, + { title: "坊っちゃん", author: "夏目漱石" }, + { title: "舞姫", author: "森鴎外" }, + { title: "高瀬舟", author: "森鴎外" }, +]; + +app.post("/search", (request, response) => { + const selectedBooks = books.filter( + // 受け取った著者名に一致する本を選択 + ); + // 本のデータをJSON形式で返す +}) +``` + +ブラウザ側では、著者名を入力し、検索ボタンを押すと、`/search`に対してPOSTリクエストで著者名を送信し、受け取ったレスポンスに基づいて本の一覧を表示するようにしてください。 + +本の一覧を表示するためには、`ul`要素を用意し、次のように`li`要素を追加していくことができます。 + +```html title="public/index.htmlの抜粋" +
              +``` + +```javascript title="public/script.mjsの抜粋 (ブラウザ上で動作するJavaScript)" +document.getElementById("search-button").onclick = async () => { + // 著者名を送信し、レスポンスを受け取る + + const bookList = document.getElementById("book-list"); + bookList.innerHTML = ""; // 空文字列とすることで、すでに存在しているul要素の子要素をすべて削除 + + for (const book of books) { + const li = document.createElement("li"); + li.textContent = book.title; + bookList.appendChild(li); + } +} +``` + +:::tip[`Array#filter`メソッド] + +[`Array#filter`メソッド](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Array/filter)は、関数オブジェクトを引数としてとり、その関数が`true`となる要素だけからなる新しい配列を返すメソッドです。 + +```javascript +const numbers = [1, 2, 3, 4, 5, 6, 7, 8]; + +/// [2, 4, 6, 8] +const evenNumbers = numbers.filter((number) => number % 2 === 0); +``` + +::: + + + +```javascript title="main.mjs (サーバーとして動作するJavaScript)" +import express from "express"; + +const app = express(); + +app.use(express.static("./public")); +app.use(express.json()); + +const books = [ + { title: "吾輩は猫である", author: "夏目漱石" }, + { title: "こころ", author: "夏目漱石" }, + { title: "坊っちゃん", author: "夏目漱石" }, + { title: "舞姫", author: "森鴎外" }, + { title: "高瀬舟", author: "森鴎外" }, +]; + +app.post("/search", (request, response) => { + const selectedBooks = books.filter( + (book) => book.author === request.body.author, + ); + response.json(selectedBooks); +}); + +app.listen(3000); +``` + +```html title="public/index.htmlの抜粋" + + +
                + +``` + +```javascript title="public/script.mjs (ブラウザ上で動作するJavaScript)" +document.getElementById("search-button").onclick = async () => { + const author = document.getElementById("author-input").value; + + const response = await fetch("/search", { + method: "post", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify({ author: author }), + }); + const books = await response.json(); + + const bookList = document.getElementById("book-list"); + bookList.innerHTML = ""; + + for (const book of books) { + const li = document.createElement("li"); + li.textContent = book.title; + bookList.appendChild(li); + } +}; +``` + + + +
                + +## 演習問題2 + +次のようなチャットアプリを作ってみましょう。 + +ここに動画を埋め込む + +サーバー側では、これまでのメッセージを保存する配列`messages`を用意しましょう。`/messages`に対するGETリクエストを受けたとき、配列`messages`をJSON形式で返すようにしてください。また、`/send`に対するPOSTリクエストを受けたとき、`Array#push`メソッドで受け取ったメッセージを配列`messages`に追加するようにしてください。 + +```javascript title="main.mjsの抜粋 (サーバーとして動作するJavaScript)" +const messages = []; + +app.get("/messages", (request, response) => { + // messagesをJSON形式で返す +}); + +app.post("/send", (request, response) => { + // 受け取ったメッセージをmessagesに追加 + response.send(); +}); +``` + +ブラウザ側では、新着メッセージを確認するために、定期的に`/messages`にGETリクエストを発行し、受け取ったレスポンスに基づいてメッセージの一覧を表示するようにしてください。また、メッセージを入力し、送信ボタンを押すと、`/send`に対してPOSTリクエストでメッセージの内容を送信するようにしてください。 + +定期的に新着メッセージを確認するためには、次のように`setInterval`関数が利用できます。 + +```javascript title="public/script.mjsの抜粋 (ブラウザ上で動作するJavaScript)" +setInterval(async () => { + const response = await fetch("/messages"); + // レスポンスを処理する +}, 1000); + +document.getElementById("send-button").onclick = async () => { + // メッセージを送信する +} +``` + + + +```javascript title="main.mjs (サーバーとして動作するJavaScript)" +import express from "express"; + +const app = express(); + +app.use(express.static("./public")); +app.use(express.json()); + +const messages = []; + +app.get("/messages", (request, response) => { + response.json(messages); +}); + +app.post("/send", (request, response) => { + messages.push(request.body.message); + response.send(); +}); + +app.listen(3000); +``` + +```html title="public/index.htmlの抜粋" +
                  + + + +``` + +```javascript title="public/script.mjs (ブラウザ上で動作するJavaScript)" +setInterval(async () => { + const response = await fetch("/messages"); + const messages = await response.json(); + + const messageList = document.getElementById("message-list"); + messageList.innerHTML = ""; + + for (const message of messages) { + const li = document.createElement("li"); + li.textContent = message; + messageList.appendChild(li); + } +}, 1000); + +document.getElementById("send-button").onclick = async () => { + const message = document.getElementById("message-input").value; + await fetch("/send", { + method: "post", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify({ message: message }), + }); +}; +``` + + + +
                  From bf4a0e7cd11a40c617838a0ad15ab88b0effef4e Mon Sep 17 00:00:00 2001 From: WATAHIKI YUTO Date: Tue, 29 Jul 2025 16:34:48 +0900 Subject: [PATCH 07/21] =?UTF-8?q?=E3=83=87=E3=83=BC=E3=82=BF=E3=83=99?= =?UTF-8?q?=E3=83=BC=E3=82=B9=E3=81=AE=E7=AB=A0=E3=82=92Fetch=20API?= =?UTF-8?q?=E4=B8=AD=E5=BF=83=E3=81=AB=E6=9B=B8=E3=81=8D=E6=8F=9B=E3=81=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../08-database/_samples/forum/main.mjs | 27 ++--- .../_samples/forum/public/index.html | 13 +++ .../_samples/forum/public/script.mjs | 22 ++++ docs/3-web-servers/08-database/index.mdx | 102 ++++++++---------- 4 files changed, 85 insertions(+), 79 deletions(-) create mode 100644 docs/3-web-servers/08-database/_samples/forum/public/index.html create mode 100644 docs/3-web-servers/08-database/_samples/forum/public/script.mjs diff --git a/docs/3-web-servers/08-database/_samples/forum/main.mjs b/docs/3-web-servers/08-database/_samples/forum/main.mjs index 34dafc4b8..60a73bb70 100644 --- a/docs/3-web-servers/08-database/_samples/forum/main.mjs +++ b/docs/3-web-servers/08-database/_samples/forum/main.mjs @@ -2,34 +2,19 @@ import express from "express"; import { PrismaClient } from "./generated/prisma/index.js"; const app = express(); -app.use(express.urlencoded({ extended: true })); const client = new PrismaClient(); -app.get("/", async (request, response) => { +app.use(express.json()); +app.use(express.static("./public")); + +app.get("/posts", async (request, response) => { const posts = await client.post.findMany(); - response.send(` - - - - - 掲示板 - - -
                    - ${posts.map((post) => `
                  • ${post.message}
                  • `).join("")} -
                  -
                  - - -
                  - - - `); + response.json(posts); }); app.post("/send", async (request, response) => { await client.post.create({ data: { message: request.body.message } }); - response.redirect("/"); + response.send(); }); app.listen(3000); diff --git a/docs/3-web-servers/08-database/_samples/forum/public/index.html b/docs/3-web-servers/08-database/_samples/forum/public/index.html new file mode 100644 index 000000000..5767633c5 --- /dev/null +++ b/docs/3-web-servers/08-database/_samples/forum/public/index.html @@ -0,0 +1,13 @@ + + + + + 掲示板 + + +
                    + + + + + diff --git a/docs/3-web-servers/08-database/_samples/forum/public/script.mjs b/docs/3-web-servers/08-database/_samples/forum/public/script.mjs new file mode 100644 index 000000000..c09b5b88e --- /dev/null +++ b/docs/3-web-servers/08-database/_samples/forum/public/script.mjs @@ -0,0 +1,22 @@ +setInterval(async () => { + const response = await fetch("/posts"); + const posts = await response.json(); + + const messageList = document.getElementById("message-list"); + messageList.innerHTML = ""; + + for (const post of posts) { + const li = document.createElement("li"); + li.textContent = post.message; + messageList.appendChild(li); + } +}, 1000); + +document.getElementById("send-button").onclick = async () => { + const message = document.getElementById("message-input").value; + await fetch("/send", { + method: "post", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify({ message: message }), + }); +}; diff --git a/docs/3-web-servers/08-database/index.mdx b/docs/3-web-servers/08-database/index.mdx index 09cdee032..666a2e435 100644 --- a/docs/3-web-servers/08-database/index.mdx +++ b/docs/3-web-servers/08-database/index.mdx @@ -269,10 +269,6 @@ model Post { Node.jsのデバッガを用いて、データベースのデータがPrismaで取得できることを確認しましょう。 -### 手順6 - -Expressをインストールし、`/`へのGETリクエストに対して、データベースのデータをHTMLに整形したレスポンスを返せるようにしましょう。 - :::info[ヒント] Prismaの`findMany`メソッドを用いて、テーブル内にある全てのレコードを取得できます。 @@ -284,28 +280,19 @@ const posts = await client.post.findMany(); // ] ``` -このメソッドの戻り値は、各カラムの値をプロパティとして持つオブジェクトの配列です。`Array#map`メソッドや`Array#join`メソッドを用い、適切なHTMLに変換してレスポンスを生成しましょう。 +このメソッドの戻り値は、各カラムの値をプロパティとして持つオブジェクトの配列です。 ::: +### 手順6 + +Expressをインストールし、`/posts`へのGETリクエストに対して、データベースのデータをJSON形式のレスポンスで返せるようにしましょう。 + -```javascript title="main.mjsの抜粋" -app.get("/", async (request, response) => { +```javascript title="main.mjsの抜粋 (サーバーとして動作するJavaScript)" +app.get("/posts", async (request, response) => { const posts = await client.post.findMany(); - response.send(` - - - - - 掲示板 - - -
                      - ${posts.map((post) => `
                    • ${post.message}
                    • `).join("")} -
                    - - - `); + response.json(posts); }); ``` @@ -313,47 +300,51 @@ app.get("/", async (request, response) => { ### 手順7 -掲示板を投稿するためのHTMLのフォームを表示できるようにしましょう。入力されたデータは`/send`へのPOSTリクエストとして送信されるようにしてみましょう。 - -:::info[ヒント] -手順6で作成したテンプレートとなるHTMLファイルを編集し、フォームを追加しましょう。 -::: +[Fetch APIによるデータの送信の章](/docs/web-servers/fetch-api-post/)の演習問題2と同様にして、ブラウザ側で、定期的に`/posts`にGETリクエストを発行し、受け取ったレスポンスに基づいてメッセージの一覧を表示するようにしてください。また、メッセージを入力し、送信ボタンを押すと、`/send`に対してPOSTリクエストでメッセージの内容を送信するようにしてください。 -```javascript title="main.mjsの抜粋" -app.get("/", async (request, response) => { - const posts = await client.post.findMany(); - response.send(` - - - - - 掲示板 - - -
                      - ${posts.map((post) => `
                    • ${post.message}
                    • `).join("")} -
                    -
                    - - -
                    - - - `); -}); +```html title="public/index.htmlの抜粋" +
                      + + + +``` + +```javascript title="public/script.mjs (ブラウザ上で動作するJavaScript)" +setInterval(async () => { + const response = await fetch("/posts"); + const posts = await response.json(); + + const messageList = document.getElementById("message-list"); + messageList.innerHTML = ""; + + for (const post of posts) { + const li = document.createElement("li"); + li.textContent = post.message; + messageList.appendChild(li); + } +}, 1000); + +document.getElementById("send-button").onclick = async () => { + const message = document.getElementById("message-input").value; + await fetch("/send", { + method: "post", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify({ message: message }), + }); +}; ```
                      ### 手順8 -前の手順で作成したHTMLのフォームの送信先 (`/send`へのPOSTリクエスト) を作成しましょう。送られてきたデータが正しいか、Node.jsのデバッガを用いて確認してみましょう。 +メッセージの送信先 (`/send`へのPOSTリクエスト) を作成しましょう。送られてきたデータが正しいか、Node.jsのデバッガを用いて確認してみましょう。 -```javascript title="main.mjsの抜粋" +```javascript title="main.mjsの抜粋 (サーバーとして動作するJavaScript)" app.use(express.urlencoded({ extended: true })); app.post("/send", async (request, response) => { debugger; // ここでrequestオブジェクトの中身を確認 @@ -364,20 +355,15 @@ app.post("/send", async (request, response) => { ### 手順9 -送られてきたデータをデータベースに保存できるようにしましょう。データベースに投稿が保存された後、ブラウザは自動的に`/`に戻るようにしてみましょう。 - -:::info[ヒント] -[GETリクエストとPOSTリクエストの章](/docs/web-servers/get-post/)で扱った`express.Response#redirect`メソッドが使えます。 - -::: +送られてきたデータをデータベースに保存できるようにしましょう。 -```javascript title="main.mjsの抜粋" +```javascript title="main.mjsの抜粋 (サーバーとして動作するJavaScript)" app.use(express.urlencoded({ extended: true })); app.post("/send", async (request, response) => { await client.post.create({ data: { message: request.body.message } }); - response.redirect("/"); + response.send(); }); ``` From f7ab63b451885ca7159ef9ae5c70c1dea571d8b5 Mon Sep 17 00:00:00 2001 From: WATAHIKI YUTO Date: Fri, 1 Aug 2025 09:52:58 +0900 Subject: [PATCH 08/21] =?UTF-8?q?=E3=83=95=E3=82=A9=E3=83=BC=E3=83=9E?= =?UTF-8?q?=E3=83=83=E3=83=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/3-web-servers/07-fetch-api-post/index.mdx | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/docs/3-web-servers/07-fetch-api-post/index.mdx b/docs/3-web-servers/07-fetch-api-post/index.mdx index 33428479a..6a9a081aa 100644 --- a/docs/3-web-servers/07-fetch-api-post/index.mdx +++ b/docs/3-web-servers/07-fetch-api-post/index.mdx @@ -85,6 +85,7 @@ document.getElementById("calculate-button").onclick = async () => { サーバー側では、`/search`に対するPOSTリクエストを受けたとき、受け取った著者名に一致する本のデータをJSON形式で返すようにしてください。 +{/* prettier-ignore */} ```javascript title="main.mjsの抜粋 (サーバーとして動作するJavaScript)" const books = [ { title: "吾輩は猫である", author: "夏目漱石" }, @@ -99,7 +100,7 @@ app.post("/search", (request, response) => { // 受け取った著者名に一致する本を選択 ); // 本のデータをJSON形式で返す -}) +}); ``` ブラウザ側では、著者名を入力し、検索ボタンを押すと、`/search`に対してPOSTリクエストで著者名を送信し、受け取ったレスポンスに基づいて本の一覧を表示するようにしてください。 @@ -122,7 +123,7 @@ document.getElementById("search-button").onclick = async () => { li.textContent = book.title; bookList.appendChild(li); } -} +}; ``` :::tip[`Array#filter`メソッド] @@ -232,7 +233,7 @@ setInterval(async () => { document.getElementById("send-button").onclick = async () => { // メッセージを送信する -} +}; ``` From bfc30e742ee2a03e36893e86e0776b56a59c4a1a Mon Sep 17 00:00:00 2001 From: chelproc Date: Sat, 2 Aug 2025 17:48:58 +0900 Subject: [PATCH 09/21] =?UTF-8?q?Fetch=20API=20=E3=81=A7=20JSON=20?= =?UTF-8?q?=E3=82=92=E6=89=B1=E3=81=86=E3=81=9F=E3=82=81=E3=81=AE=E8=A8=98?= =?UTF-8?q?=E4=BA=8B=E3=80=81POST=20=E3=83=AA=E3=82=AF=E3=82=A8=E3=82=B9?= =?UTF-8?q?=E3=83=88=E3=82=92=E6=89=B1=E3=81=86=E3=81=9F=E3=82=81=E3=81=AE?= =?UTF-8?q?=E8=A8=98=E4=BA=8B=E3=82=92=E8=BF=BD=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/3-web-servers/04-module/index.mdx | 27 +- .../_samples/fetch-weather-json/.gitignore | 1 + .../_samples/fetch-weather-json/main.mjs | 11 + .../fetch-weather-json/package-lock.json | 755 ++++++++++++++++ .../_samples/fetch-weather-json/package.json | 6 + .../fetch-weather-json/public/index.html | 12 + .../fetch-weather-json/public/script.js | 8 + .../_samples/fetch-weather/public/index.html | 2 +- .../_samples/fetch-weather/public/script.js | 10 + .../_samples/fetch-weather/public/script.mjs | 8 - docs/3-web-servers/06-fetch-api/index.mdx | 134 +-- .../_samples/bank-account/.gitignore | 1 + .../_samples/bank-account/main.mjs | 15 + .../_samples/bank-account/package-lock.json | 822 ++++++++++++++++++ .../_samples/bank-account/package.json | 6 + .../_samples/bank-account/public/index.html | 12 + .../_samples/bank-account/public/script.js | 12 + .../07-fetch-api-post/http-message.drawio.svg | 268 ++++++ .../3-web-servers/07-fetch-api-post/index.mdx | 72 ++ src/components/Term/definitions.js | 3 +- 20 files changed, 2084 insertions(+), 101 deletions(-) create mode 100644 docs/3-web-servers/06-fetch-api/_samples/fetch-weather-json/.gitignore create mode 100644 docs/3-web-servers/06-fetch-api/_samples/fetch-weather-json/main.mjs create mode 100644 docs/3-web-servers/06-fetch-api/_samples/fetch-weather-json/package-lock.json create mode 100644 docs/3-web-servers/06-fetch-api/_samples/fetch-weather-json/package.json create mode 100644 docs/3-web-servers/06-fetch-api/_samples/fetch-weather-json/public/index.html create mode 100644 docs/3-web-servers/06-fetch-api/_samples/fetch-weather-json/public/script.js create mode 100644 docs/3-web-servers/06-fetch-api/_samples/fetch-weather/public/script.js delete mode 100644 docs/3-web-servers/06-fetch-api/_samples/fetch-weather/public/script.mjs create mode 100644 docs/3-web-servers/07-fetch-api-post/_samples/bank-account/.gitignore create mode 100644 docs/3-web-servers/07-fetch-api-post/_samples/bank-account/main.mjs create mode 100644 docs/3-web-servers/07-fetch-api-post/_samples/bank-account/package-lock.json create mode 100644 docs/3-web-servers/07-fetch-api-post/_samples/bank-account/package.json create mode 100644 docs/3-web-servers/07-fetch-api-post/_samples/bank-account/public/index.html create mode 100644 docs/3-web-servers/07-fetch-api-post/_samples/bank-account/public/script.js create mode 100644 docs/3-web-servers/07-fetch-api-post/http-message.drawio.svg diff --git a/docs/3-web-servers/04-module/index.mdx b/docs/3-web-servers/04-module/index.mdx index 444a8d177..6a3c6c417 100644 --- a/docs/3-web-servers/04-module/index.mdx +++ b/docs/3-web-servers/04-module/index.mdx @@ -154,32 +154,7 @@ npm install date-fns :::tip[JSON] -npmによって作成された`package.json`とは何者でしょうか。拡張子が`.json`のファイルには、**JSON**が記述されています。JSONは、JavaScript Object Notationの略で、複雑なデータ構造を単一の文字列として表現する際に、JavaScriptオブジェクトに似た記法を用いるための仕様です。JavaScriptとの相性が非常に良いだけでなく、文法が単純で明快であることから、JavaScriptを用いないプロジェクトでも頻繁に用いられます。 - -JSONは、JavaScriptのオブジェクト記法よりも制限が厳しくなっています。例えば、 - -```js -{ - name: "田中", - age: 18, -} -``` - -は、JavaScriptの文法では有効ですが、JSONとしては誤りです。JSONには、 - -- キーには必ずダブルクォーテーションをつける -- 最後のプロパティの後にはコンマをつけてはならない - -という制約があります。このため、上のオブジェクトをJSONで記述するためには、 - -```json -{ - "name": "田中", - "age": 18 -} -``` - -のようにしなければなりません。 +npmによって作成された`package.json`は、Node.jsのアプリケーションの各種設定を記述するためのファイルです。後の節で詳細を扱いますが、JSONと呼ばれる形式で記述されています。 ::: diff --git a/docs/3-web-servers/06-fetch-api/_samples/fetch-weather-json/.gitignore b/docs/3-web-servers/06-fetch-api/_samples/fetch-weather-json/.gitignore new file mode 100644 index 000000000..07e6e472c --- /dev/null +++ b/docs/3-web-servers/06-fetch-api/_samples/fetch-weather-json/.gitignore @@ -0,0 +1 @@ +/node_modules diff --git a/docs/3-web-servers/06-fetch-api/_samples/fetch-weather-json/main.mjs b/docs/3-web-servers/06-fetch-api/_samples/fetch-weather-json/main.mjs new file mode 100644 index 000000000..b5572a10e --- /dev/null +++ b/docs/3-web-servers/06-fetch-api/_samples/fetch-weather-json/main.mjs @@ -0,0 +1,11 @@ +import express from "express"; + +const app = express(); +app.use(express.static("./public")); +app.get("/weather", (request, response) => { + response.json({ + condition: "晴れ", + temperature: 25, + }); +}); +app.listen(3000); diff --git a/docs/3-web-servers/06-fetch-api/_samples/fetch-weather-json/package-lock.json b/docs/3-web-servers/06-fetch-api/_samples/fetch-weather-json/package-lock.json new file mode 100644 index 000000000..239697b29 --- /dev/null +++ b/docs/3-web-servers/06-fetch-api/_samples/fetch-weather-json/package-lock.json @@ -0,0 +1,755 @@ +{ + "name": "fetch-weather-json", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "fetch-weather-json", + "dependencies": { + "express": "^5.1.0" + } + }, + "node_modules/accepts": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-2.0.0.tgz", + "integrity": "sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==", + "dependencies": { + "mime-types": "^3.0.0", + "negotiator": "^1.0.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/body-parser": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-2.2.0.tgz", + "integrity": "sha512-02qvAaxv8tp7fBa/mw1ga98OGm+eCbqzJOKoRt70sLmfEEi+jyBYVTDGfCL/k06/4EMk/z01gCe7HoCH/f2LTg==", + "dependencies": { + "bytes": "^3.1.2", + "content-type": "^1.0.5", + "debug": "^4.4.0", + "http-errors": "^2.0.0", + "iconv-lite": "^0.6.3", + "on-finished": "^2.4.1", + "qs": "^6.14.0", + "raw-body": "^3.0.0", + "type-is": "^2.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "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-apply-helpers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/call-bound": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", + "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "get-intrinsic": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/content-disposition": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-1.0.0.tgz", + "integrity": "sha512-Au9nRL8VNUut/XSzbQA38+M78dzP4D+eqg3gfJHMIHHYa3bg067xj1KxMUWj+VULbiZMowKngFFbKczUrNJ1mg==", + "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.7.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz", + "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie-signature": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.2.2.tgz", + "integrity": "sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg==", + "engines": { + "node": ">=6.6.0" + } + }, + "node_modules/debug": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz", + "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "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/dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "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": "2.0.0", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", + "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/es-define-property": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-object-atoms": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "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": "5.1.0", + "resolved": "https://registry.npmjs.org/express/-/express-5.1.0.tgz", + "integrity": "sha512-DT9ck5YIRU+8GYzzU5kT3eHGA5iL+1Zd0EutOmTE9Dtk+Tvuzd23VBU+ec7HPNSTxXYO55gPV/hq4pSBJDjFpA==", + "dependencies": { + "accepts": "^2.0.0", + "body-parser": "^2.2.0", + "content-disposition": "^1.0.0", + "content-type": "^1.0.5", + "cookie": "^0.7.1", + "cookie-signature": "^1.2.1", + "debug": "^4.4.0", + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "etag": "^1.8.1", + "finalhandler": "^2.1.0", + "fresh": "^2.0.0", + "http-errors": "^2.0.0", + "merge-descriptors": "^2.0.0", + "mime-types": "^3.0.0", + "on-finished": "^2.4.1", + "once": "^1.4.0", + "parseurl": "^1.3.3", + "proxy-addr": "^2.0.7", + "qs": "^6.14.0", + "range-parser": "^1.2.1", + "router": "^2.2.0", + "send": "^1.1.0", + "serve-static": "^2.2.0", + "statuses": "^2.0.1", + "type-is": "^2.0.1", + "vary": "^1.1.2" + }, + "engines": { + "node": ">= 18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/finalhandler": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-2.1.0.tgz", + "integrity": "sha512-/t88Ty3d5JWQbWYgaOGCCYfXRwV1+be02WqYYlL6h0lEiUAMPM8o8qKGO01YIkOHzka2up08wvgYD0mDiI+q3Q==", + "dependencies": { + "debug": "^4.4.0", + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "on-finished": "^2.4.1", + "parseurl": "^1.3.3", + "statuses": "^2.0.1" + }, + "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": "2.0.0", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-2.0.0.tgz", + "integrity": "sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-intrinsic": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "function-bind": "^1.1.2", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/gopd": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "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/http-errors/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/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "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/is-promise": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-4.0.0.tgz", + "integrity": "sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==" + }, + "node_modules/math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/media-typer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-1.1.0.tgz", + "integrity": "sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/merge-descriptors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-2.0.0.tgz", + "integrity": "sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g==", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/mime-db": { + "version": "1.54.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz", + "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.1.tgz", + "integrity": "sha512-xRc4oEhT6eaBpU1XF7AjpOFD+xQmXNB5OVKwp4tqCuBpHLS/ZbBDrc07mYTDqVMg6PfxUjjNp85O6Cd2Z/5HWA==", + "dependencies": { + "mime-db": "^1.54.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "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/negotiator": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-1.0.0.tgz", + "integrity": "sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/object-inspect": { + "version": "1.13.4", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", + "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dependencies": { + "wrappy": "1" + } + }, + "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": "8.2.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-8.2.0.tgz", + "integrity": "sha512-TdrF7fW9Rphjq4RjrW0Kp2AW0Ahwu9sRGTkS6bvDi0SCwZlEZYmcfDbEsTz8RVk0EHIS/Vd1bv3JhG+1xZuAyQ==", + "engines": { + "node": ">=16" + } + }, + "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.14.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.0.tgz", + "integrity": "sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==", + "dependencies": { + "side-channel": "^1.1.0" + }, + "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": "3.0.0", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-3.0.0.tgz", + "integrity": "sha512-RmkhL8CAyCRPXCE28MMH0z2PNWQBNk2Q09ZdxM9IOOXwxwZbN+qbWaatPkdkWIKL2ZVDImrN/pK5HTRz2PcS4g==", + "dependencies": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.6.3", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/router": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/router/-/router-2.2.0.tgz", + "integrity": "sha512-nLTrUKm2UyiL7rlhapu/Zl45FwNgkZGaCpZbIHajDYgwlJCOzLSk+cIPAnsEqV955GjILJnKbdQC1nVPz+gAYQ==", + "dependencies": { + "debug": "^4.4.0", + "depd": "^2.0.0", + "is-promise": "^4.0.0", + "parseurl": "^1.3.3", + "path-to-regexp": "^8.0.0" + }, + "engines": { + "node": ">= 18" + } + }, + "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": "1.2.0", + "resolved": "https://registry.npmjs.org/send/-/send-1.2.0.tgz", + "integrity": "sha512-uaW0WwXKpL9blXE2o0bRhoL2EGXIrZxQ2ZQ4mgcfoBxdFmQold+qWsD2jLrfZ0trjKL6vOw0j//eAwcALFjKSw==", + "dependencies": { + "debug": "^4.3.5", + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "etag": "^1.8.1", + "fresh": "^2.0.0", + "http-errors": "^2.0.0", + "mime-types": "^3.0.1", + "ms": "^2.1.3", + "on-finished": "^2.4.1", + "range-parser": "^1.2.1", + "statuses": "^2.0.1" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/serve-static": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-2.2.0.tgz", + "integrity": "sha512-61g9pCh0Vnh7IutZjtLGGpTA355+OPn2TyDv/6ivP2h/AdAVX9azsoxmg2/M6nZeQZNYBEwIcsne1mJd9oQItQ==", + "dependencies": { + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "parseurl": "^1.3.3", + "send": "^1.2.0" + }, + "engines": { + "node": ">= 18" + } + }, + "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.1.0", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", + "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3", + "side-channel-list": "^1.0.0", + "side-channel-map": "^1.0.1", + "side-channel-weakmap": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-list": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", + "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-map": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", + "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-weakmap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", + "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3", + "side-channel-map": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/statuses": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz", + "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==", + "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": "2.0.1", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-2.0.1.tgz", + "integrity": "sha512-OZs6gsjF4vMp32qrCbiVSkrFmXtG/AZhY3t0iAMrMBiAZyV9oALtXO8hsrHbMXF9x6L3grlFuwW2oAz7cav+Gw==", + "dependencies": { + "content-type": "^1.0.5", + "media-typer": "^1.1.0", + "mime-types": "^3.0.0" + }, + "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/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" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" + } + } +} diff --git a/docs/3-web-servers/06-fetch-api/_samples/fetch-weather-json/package.json b/docs/3-web-servers/06-fetch-api/_samples/fetch-weather-json/package.json new file mode 100644 index 000000000..9d8d1b363 --- /dev/null +++ b/docs/3-web-servers/06-fetch-api/_samples/fetch-weather-json/package.json @@ -0,0 +1,6 @@ +{ + "name": "fetch-weather-json", + "dependencies": { + "express": "^5.1.0" + } +} diff --git a/docs/3-web-servers/06-fetch-api/_samples/fetch-weather-json/public/index.html b/docs/3-web-servers/06-fetch-api/_samples/fetch-weather-json/public/index.html new file mode 100644 index 000000000..08fc0b658 --- /dev/null +++ b/docs/3-web-servers/06-fetch-api/_samples/fetch-weather-json/public/index.html @@ -0,0 +1,12 @@ + + + + + 天気予報 + + +

                      本日の天気はです。

                      +

                      現在の気温は度です。

                      + + + diff --git a/docs/3-web-servers/06-fetch-api/_samples/fetch-weather-json/public/script.js b/docs/3-web-servers/06-fetch-api/_samples/fetch-weather-json/public/script.js new file mode 100644 index 000000000..96957b9f6 --- /dev/null +++ b/docs/3-web-servers/06-fetch-api/_samples/fetch-weather-json/public/script.js @@ -0,0 +1,8 @@ +async function fetchWeather() { + const response = await fetch("/weather"); + // レスポンスをJSONとして取得 + const weather = await response.json(); + document.getElementById("condition").textContent = weather.condition; + document.getElementById("temperature").textContent = weather.temperature; +} +fetchWeather(); diff --git a/docs/3-web-servers/06-fetch-api/_samples/fetch-weather/public/index.html b/docs/3-web-servers/06-fetch-api/_samples/fetch-weather/public/index.html index f6fbcb501..3759ca834 100644 --- a/docs/3-web-servers/06-fetch-api/_samples/fetch-weather/public/index.html +++ b/docs/3-web-servers/06-fetch-api/_samples/fetch-weather/public/index.html @@ -6,6 +6,6 @@

                      本日の天気はです。

                      - + diff --git a/docs/3-web-servers/06-fetch-api/_samples/fetch-weather/public/script.js b/docs/3-web-servers/06-fetch-api/_samples/fetch-weather/public/script.js new file mode 100644 index 000000000..44bf43ed5 --- /dev/null +++ b/docs/3-web-servers/06-fetch-api/_samples/fetch-weather/public/script.js @@ -0,0 +1,10 @@ +// await演算子を使用するため、asyncキーワードが必要 +async function fetchWeather() { + // http://localhost:3000/weather にHTTPリクエストを送信 + // fetch関数は非同期処理を行うため、awaitを演算子を適用して完了を待機する + const response = await fetch("/weather"); + // レスポンスをテキストとして取得 + const weather = await response.text(); + document.getElementById("weather").textContent = weather; +} +fetchWeather(); diff --git a/docs/3-web-servers/06-fetch-api/_samples/fetch-weather/public/script.mjs b/docs/3-web-servers/06-fetch-api/_samples/fetch-weather/public/script.mjs deleted file mode 100644 index 63844a1ff..000000000 --- a/docs/3-web-servers/06-fetch-api/_samples/fetch-weather/public/script.mjs +++ /dev/null @@ -1,8 +0,0 @@ -// http://localhost:3000/weather に HTTP リクエストを送信 -// fetch 関数は非同期処理を行うため、await を演算子を適用して完了を待機する -const response = await fetch("/weather"); - -// レスポンスをテキストとして取得 -const weather = await response.text(); - -document.getElementById("weather").textContent = weather; diff --git a/docs/3-web-servers/06-fetch-api/index.mdx b/docs/3-web-servers/06-fetch-api/index.mdx index c9891c4c7..942d7f2d7 100644 --- a/docs/3-web-servers/06-fetch-api/index.mdx +++ b/docs/3-web-servers/06-fetch-api/index.mdx @@ -10,65 +10,13 @@ title: Fetch APIによるデータの取得 しかし、この方法では、新しい情報を取得する度にブラウザのページ遷移が必要になるため、複雑なアプリケーションを構築するには不便です。**Fetch API**を用いると、ブラウザ上で動作するJavaScriptから、Webサーバーに対して直接HTTPリクエストを発行し、レスポンスを受け取ることができます。これにより、Webアプリケーションはページ遷移を伴わずにサーバーと通信することが可能になります。 -## ブラウザで動作するJavaScriptでモジュールを用いる - -JavaScriptを用いて複雑なプログラムを記載する際、1ファイルに含まれるJavaScriptのコードが長くなると、全体を把握するのが難しくなります。[モジュールとnpm](/docs/web-servers/module/)の章では、**モジュール**を用いることで、Node.jsにおいて巨大なコードを分割することができることを学びました。ブラウザにおいても同様にモジュールの仕組みが使用できます。 - -ブラウザでモジュールを使用するには、`script`タグの`type`属性に対し、`"module"`を指定します。これにより、読み込まれたJavaScriptがモジュールとして扱われ、`import`文や`export`文を使用できるようになります。ブラウザは、まだ取得されていないモジュールへの`import`文を見つけると、新しいリクエストを発行して、指定されたモジュールを読み込みます。 - -次の例では、`index.html`から`main.mjs`をモジュールとして読み込んでいます。`main.mjs`の中では、別のモジュールである`math.mjs`からエクスポートされた、`add`関数と`multiply`関数をインポートして使用しています。 - -```javascript title="main.mjs (サーバーとして動作するJavaScript)" -import express from "express"; - -const app = express(); -app.use(express.static("./public")); -app.listen(3000); -``` - -```html title="public/index.html (抜粋)" -

                      計算結果

                      -

                      - -``` - -```javascript title="public/main.mjs (ブラウザ上で動作するJavaScript)" -import { add, multiply } from "./math.mjs"; - -const sum = add(3, 4); -const product = multiply(3, 4); - -const resultElement = document.getElementById("result"); -resultElement.textContent = `3 + 4 = ${sum}, 3 × 4 = ${product}`; -``` - -```javascript title="public/math.mjs (ブラウザ上で動作するJavaScript)" -export function add(a, b) { - return a + b; -} - -export function multiply(a, b) { - return a * b; -} -``` - - - -この項以降、ブラウザで動作するJavaScriptのコードは、全てモジュールを用いて記述していきます。 - -:::warning[HTMLファイルをブラウザで開く場合] - -第1章で使用したような、HTMLファイルを直接ブラウザで開く方法では、モジュールを使用できません。この例のように、Express等を用いてWebサーバーを構築し、Webサーバー経由でブラウザにHTMLを取得させる必要があります。 - -::: - -## Fetch APIでテキストデータを取得する +## Fetch API を使用する Fetch APIは、`fetch`関数を呼び出すことで実行できます。`fetch`関数にリクエストを発行したいURLを指定することで、HTTPリクエストを発行し、[`Response`](https://developer.mozilla.org/ja/docs/Web/API/Response)オブジェクトを取得できます。`Response`オブジェクトの[`text`メソッド](https://developer.mozilla.org/ja/docs/Web/API/Response/text)を呼び出すことで、レスポンスを文字列として取得できます。 次の例では、ブラウザは`script.mjs`の中で`fetch("/weather")`が呼び出されたときに、Webサーバーに対して`/weather`というパスに対するリクエストを発行します。Webサーバーは、`/weather`に対するリクエストを受け取ると、レスポンスとして「晴れ」という文字列を返します。ブラウザは、このレスポンスを受け取り、HTMLの中の`span`要素に「晴れ」という文字列を表示します。 -`fetch`関数や `Response#text` メソッドは、時間のかかる処理を行うため、**非同期処理**としてバックグラウンドで実行されます。この例では、式`fetch("/weather")`の評価は直ちに完了しますが、まだHTTPリクエストは完了していません。`await fetch("/weather")`のように、**`await`演算子を適用**することで、HTTPリクエストが完了するまで待機し、実際のレスポンスを取得できます。 +`fetch`関数や`Response#text`メソッドは、時間のかかる処理を行うため、**非同期処理**としてバックグラウンドで実行されます。戻り値に対して`await`演算子を適用することで、HTTPリクエストが完了するまで待機し、実際のレスポンスを取得できます。なお、`await`演算子を使用するためには、演算子が使用されている関数に`async`キーワードを付与する必要があります。 ```javascript title="main.mjs (サーバーとして動作するJavaScript)" import express from "express"; @@ -81,20 +29,22 @@ app.get("/weather", (request, response) => { app.listen(3000); ``` -```html title="public/index.html" +```html title="public/index.html (抜粋)"

                      本日の天気はです。

                      - + ``` -```javascript title="public/script.mjs (ブラウザ上で動作するJavaScript)" -// http://localhost:3000/weather に HTTP リクエストを送信 -// fetch 関数は非同期処理を行うため、await を演算子を適用して完了を待機する -const response = await fetch("/weather"); - -// レスポンスをテキストとして取得 -const weather = await response.text(); - -document.getElementById("weather").textContent = weather; +```javascript title="public/script.js (ブラウザ上で動作するJavaScript)" +// await演算子を使用するため、asyncキーワードが必要 +async function fetchWeather() { + // http://localhost:3000/weather にHTTPリクエストを送信 + // fetch関数は非同期処理を行うため、awaitを演算子を適用して完了を待機する + const response = await fetch("/weather"); + // レスポンスをテキストとして取得 + const weather = await response.text(); + document.getElementById("weather").textContent = weather; +} +fetchWeather(); ``` @@ -153,6 +103,60 @@ document.getElementById("open-status").textContent = openStatus; ## Fetch APIでJSONデータを取得する +前項では、Fetch APIを用いてサーバーから文字列を取得しました。しかし、実際のアプリケーションでは、単純な文字列ではなく、複雑な構造を持つデータを扱うことになります。ネットワークを経由してデータをやり取りする際には、データを事前に決めた形式に整形しておくことが重要です。コンマや改行区切りの文字列を用いることもできますが、より一般的な方法として、**JSON**という形式が広く使用されています。JSONは、データを文字列として表現するためのフォーマットで、JavaScriptのオブジェクト記法に基づいています。 + +次の例では、Fetch APIを用いて、サーバーから現在の天気と気温を取得しています。前項のサンプルアプリケーションとは、次の点が異なっています。 + +- サーバー側は、Expressが提供する[`Response#json`メソッド](https://expressjs.com/ja/api.html#res.json)を用いてレスポンスを送信しています。このメソッドは、引数として渡されたオブジェクトをJSONに変換してレスポンスとして返します。 +- クライアント側は、ブラウザが提供する[`Response#json`メソッド](https://developer.mozilla.org/ja/docs/Web/API/Response/json)を用いてレスポンスを取得しています。このメソッドは、レスポンスの内容をJSONとして解析し、JavaScriptのオブジェクトとして返します。 + +```javascript title="main.mjs (サーバーとして動作するJavaScript)" +import express from "express"; + +const app = express(); +app.use(express.static("./public")); +app.get("/weather", (request, response) => { + response.json({ + condition: "晴れ", + temperature: 25, + }); +}); +app.listen(3000); +``` + +```html title="public/index.html (抜粋)" +

                      本日の天気はです。

                      +

                      現在の気温は度です。

                      + +``` + +```javascript title="public/script.js (ブラウザ上で動作するJavaScript)" +async function fetchWeather() { + const response = await fetch("/weather"); + // レスポンスをJSONとして取得 + const weather = await response.json(); + document.getElementById("condition").textContent = weather.condition; + document.getElementById("temperature").textContent = weather.temperature; +} +fetchWeather(); +``` + +:::tip[JSONの構文] + +JSONは、JavaScriptのオブジェクト記法よりも制限が厳しくなっています。例えば、次の式の右辺は、JavaScriptとしては正しいですが、JSONとしては誤りです。 + +```js +const person = { name: "田中", age: 18 }; +``` + +JSONでは、次のように、全てのキーをダブルクォーテーションで囲って記述する必要があります。 + +```json +{ "name": "田中", "age": 18 } +``` + +::: + ### 確認問題 あるカフェでは、現在「営業中」か「営業時間外」かだけではなく、営業時間も表示するWebアプリケーションを作成することにしました。 diff --git a/docs/3-web-servers/07-fetch-api-post/_samples/bank-account/.gitignore b/docs/3-web-servers/07-fetch-api-post/_samples/bank-account/.gitignore new file mode 100644 index 000000000..07e6e472c --- /dev/null +++ b/docs/3-web-servers/07-fetch-api-post/_samples/bank-account/.gitignore @@ -0,0 +1 @@ +/node_modules diff --git a/docs/3-web-servers/07-fetch-api-post/_samples/bank-account/main.mjs b/docs/3-web-servers/07-fetch-api-post/_samples/bank-account/main.mjs new file mode 100644 index 000000000..118aebdc8 --- /dev/null +++ b/docs/3-web-servers/07-fetch-api-post/_samples/bank-account/main.mjs @@ -0,0 +1,15 @@ +import express from "express"; + +const app = express(); +app.use(express.static("./public")); +// リクエストボディをJSONとして解釈する +app.use(express.json()); + +const account = { balance: 100000 }; +app.post("/transaction", (request, response) => { + // リクエストボディはrequest.bodyに格納される + account.balance += request.body.amount; + response.json(account); +}); + +app.listen(3000); diff --git a/docs/3-web-servers/07-fetch-api-post/_samples/bank-account/package-lock.json b/docs/3-web-servers/07-fetch-api-post/_samples/bank-account/package-lock.json new file mode 100644 index 000000000..36a4e7f7e --- /dev/null +++ b/docs/3-web-servers/07-fetch-api-post/_samples/bank-account/package-lock.json @@ -0,0 +1,822 @@ +{ + "name": "bank-account", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "bank-account", + "dependencies": { + "express": "^5.1.0" + } + }, + "node_modules/accepts": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-2.0.0.tgz", + "integrity": "sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==", + "license": "MIT", + "dependencies": { + "mime-types": "^3.0.0", + "negotiator": "^1.0.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/body-parser": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-2.2.0.tgz", + "integrity": "sha512-02qvAaxv8tp7fBa/mw1ga98OGm+eCbqzJOKoRt70sLmfEEi+jyBYVTDGfCL/k06/4EMk/z01gCe7HoCH/f2LTg==", + "license": "MIT", + "dependencies": { + "bytes": "^3.1.2", + "content-type": "^1.0.5", + "debug": "^4.4.0", + "http-errors": "^2.0.0", + "iconv-lite": "^0.6.3", + "on-finished": "^2.4.1", + "qs": "^6.14.0", + "raw-body": "^3.0.0", + "type-is": "^2.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/call-bind-apply-helpers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/call-bound": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", + "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "get-intrinsic": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/content-disposition": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-1.0.0.tgz", + "integrity": "sha512-Au9nRL8VNUut/XSzbQA38+M78dzP4D+eqg3gfJHMIHHYa3bg067xj1KxMUWj+VULbiZMowKngFFbKczUrNJ1mg==", + "license": "MIT", + "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==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz", + "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie-signature": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.2.2.tgz", + "integrity": "sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg==", + "license": "MIT", + "engines": { + "node": ">=6.6.0" + } + }, + "node_modules/debug": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz", + "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "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==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "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==", + "license": "MIT" + }, + "node_modules/encodeurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", + "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/es-define-property": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-object-atoms": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "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==", + "license": "MIT" + }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/express": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/express/-/express-5.1.0.tgz", + "integrity": "sha512-DT9ck5YIRU+8GYzzU5kT3eHGA5iL+1Zd0EutOmTE9Dtk+Tvuzd23VBU+ec7HPNSTxXYO55gPV/hq4pSBJDjFpA==", + "license": "MIT", + "dependencies": { + "accepts": "^2.0.0", + "body-parser": "^2.2.0", + "content-disposition": "^1.0.0", + "content-type": "^1.0.5", + "cookie": "^0.7.1", + "cookie-signature": "^1.2.1", + "debug": "^4.4.0", + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "etag": "^1.8.1", + "finalhandler": "^2.1.0", + "fresh": "^2.0.0", + "http-errors": "^2.0.0", + "merge-descriptors": "^2.0.0", + "mime-types": "^3.0.0", + "on-finished": "^2.4.1", + "once": "^1.4.0", + "parseurl": "^1.3.3", + "proxy-addr": "^2.0.7", + "qs": "^6.14.0", + "range-parser": "^1.2.1", + "router": "^2.2.0", + "send": "^1.1.0", + "serve-static": "^2.2.0", + "statuses": "^2.0.1", + "type-is": "^2.0.1", + "vary": "^1.1.2" + }, + "engines": { + "node": ">= 18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/finalhandler": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-2.1.0.tgz", + "integrity": "sha512-/t88Ty3d5JWQbWYgaOGCCYfXRwV1+be02WqYYlL6h0lEiUAMPM8o8qKGO01YIkOHzka2up08wvgYD0mDiI+q3Q==", + "license": "MIT", + "dependencies": { + "debug": "^4.4.0", + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "on-finished": "^2.4.1", + "parseurl": "^1.3.3", + "statuses": "^2.0.1" + }, + "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==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fresh": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-2.0.0.tgz", + "integrity": "sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-intrinsic": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "function-bind": "^1.1.2", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/gopd": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "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==", + "license": "MIT", + "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/http-errors/node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "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==", + "license": "ISC" + }, + "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==", + "license": "MIT", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/is-promise": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-4.0.0.tgz", + "integrity": "sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==", + "license": "MIT" + }, + "node_modules/math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/media-typer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-1.1.0.tgz", + "integrity": "sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/merge-descriptors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-2.0.0.tgz", + "integrity": "sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/mime-db": { + "version": "1.54.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz", + "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.1.tgz", + "integrity": "sha512-xRc4oEhT6eaBpU1XF7AjpOFD+xQmXNB5OVKwp4tqCuBpHLS/ZbBDrc07mYTDqVMg6PfxUjjNp85O6Cd2Z/5HWA==", + "license": "MIT", + "dependencies": { + "mime-db": "^1.54.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "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==", + "license": "MIT" + }, + "node_modules/negotiator": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-1.0.0.tgz", + "integrity": "sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/object-inspect": { + "version": "1.13.4", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", + "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "license": "MIT", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "license": "ISC", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/path-to-regexp": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-8.2.0.tgz", + "integrity": "sha512-TdrF7fW9Rphjq4RjrW0Kp2AW0Ahwu9sRGTkS6bvDi0SCwZlEZYmcfDbEsTz8RVk0EHIS/Vd1bv3JhG+1xZuAyQ==", + "license": "MIT", + "engines": { + "node": ">=16" + } + }, + "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==", + "license": "MIT", + "dependencies": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/qs": { + "version": "6.14.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.0.tgz", + "integrity": "sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==", + "license": "BSD-3-Clause", + "dependencies": { + "side-channel": "^1.1.0" + }, + "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==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/raw-body": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-3.0.0.tgz", + "integrity": "sha512-RmkhL8CAyCRPXCE28MMH0z2PNWQBNk2Q09ZdxM9IOOXwxwZbN+qbWaatPkdkWIKL2ZVDImrN/pK5HTRz2PcS4g==", + "license": "MIT", + "dependencies": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.6.3", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/router": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/router/-/router-2.2.0.tgz", + "integrity": "sha512-nLTrUKm2UyiL7rlhapu/Zl45FwNgkZGaCpZbIHajDYgwlJCOzLSk+cIPAnsEqV955GjILJnKbdQC1nVPz+gAYQ==", + "license": "MIT", + "dependencies": { + "debug": "^4.4.0", + "depd": "^2.0.0", + "is-promise": "^4.0.0", + "parseurl": "^1.3.3", + "path-to-regexp": "^8.0.0" + }, + "engines": { + "node": ">= 18" + } + }, + "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" + } + ], + "license": "MIT" + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "license": "MIT" + }, + "node_modules/send": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/send/-/send-1.2.0.tgz", + "integrity": "sha512-uaW0WwXKpL9blXE2o0bRhoL2EGXIrZxQ2ZQ4mgcfoBxdFmQold+qWsD2jLrfZ0trjKL6vOw0j//eAwcALFjKSw==", + "license": "MIT", + "dependencies": { + "debug": "^4.3.5", + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "etag": "^1.8.1", + "fresh": "^2.0.0", + "http-errors": "^2.0.0", + "mime-types": "^3.0.1", + "ms": "^2.1.3", + "on-finished": "^2.4.1", + "range-parser": "^1.2.1", + "statuses": "^2.0.1" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/serve-static": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-2.2.0.tgz", + "integrity": "sha512-61g9pCh0Vnh7IutZjtLGGpTA355+OPn2TyDv/6ivP2h/AdAVX9azsoxmg2/M6nZeQZNYBEwIcsne1mJd9oQItQ==", + "license": "MIT", + "dependencies": { + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "parseurl": "^1.3.3", + "send": "^1.2.0" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "license": "ISC" + }, + "node_modules/side-channel": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", + "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3", + "side-channel-list": "^1.0.0", + "side-channel-map": "^1.0.1", + "side-channel-weakmap": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-list": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", + "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-map": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", + "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-weakmap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", + "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3", + "side-channel-map": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/statuses": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz", + "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==", + "license": "MIT", + "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==", + "license": "MIT", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/type-is": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-2.0.1.tgz", + "integrity": "sha512-OZs6gsjF4vMp32qrCbiVSkrFmXtG/AZhY3t0iAMrMBiAZyV9oALtXO8hsrHbMXF9x6L3grlFuwW2oAz7cav+Gw==", + "license": "MIT", + "dependencies": { + "content-type": "^1.0.5", + "media-typer": "^1.1.0", + "mime-types": "^3.0.0" + }, + "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==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "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==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "license": "ISC" + } + } +} diff --git a/docs/3-web-servers/07-fetch-api-post/_samples/bank-account/package.json b/docs/3-web-servers/07-fetch-api-post/_samples/bank-account/package.json new file mode 100644 index 000000000..f65a662eb --- /dev/null +++ b/docs/3-web-servers/07-fetch-api-post/_samples/bank-account/package.json @@ -0,0 +1,6 @@ +{ + "name": "bank-account", + "dependencies": { + "express": "^5.1.0" + } +} diff --git a/docs/3-web-servers/07-fetch-api-post/_samples/bank-account/public/index.html b/docs/3-web-servers/07-fetch-api-post/_samples/bank-account/public/index.html new file mode 100644 index 000000000..93a83b72f --- /dev/null +++ b/docs/3-web-servers/07-fetch-api-post/_samples/bank-account/public/index.html @@ -0,0 +1,12 @@ + + + + + 銀行アプリ + + +

                      残高:

                      + + + + diff --git a/docs/3-web-servers/07-fetch-api-post/_samples/bank-account/public/script.js b/docs/3-web-servers/07-fetch-api-post/_samples/bank-account/public/script.js new file mode 100644 index 000000000..7da3820a7 --- /dev/null +++ b/docs/3-web-servers/07-fetch-api-post/_samples/bank-account/public/script.js @@ -0,0 +1,12 @@ +document.getElementById("withdraw-button").onclick = async () => { + const response = await fetch("/transaction", { + // POSTリクエストを送信 + method: "POST", + // リクエストヘッダーにContent-Typeを指定 + headers: { "Content-Type": "application/json" }, + // リクエストボディにJSON形式のデータを指定 + body: JSON.stringify({ amount: -10000 }), + }); + const account = await response.json(); + document.getElementById("balance").textContent = account.balance; +}; diff --git a/docs/3-web-servers/07-fetch-api-post/http-message.drawio.svg b/docs/3-web-servers/07-fetch-api-post/http-message.drawio.svg new file mode 100644 index 000000000..4ff884a0b --- /dev/null +++ b/docs/3-web-servers/07-fetch-api-post/http-message.drawio.svg @@ -0,0 +1,268 @@ + + + + + + + + + + HTTP リクエスト + + + + + + + + + + 制御情報 + + + + + + + + + + ヘッダ + + + + + + + + + + ボディ + + + + + + + + + + メソッド + + + + + + + + + + パス + + + + + + + + + + 名前 + + + + + + + + + + 値 + + + + + + + + + + 名前 + + + + + + + + + + 値 + + + + + + + + + + 名前 + + + + + + + + + + 値 + + + + + + + + + + データ + + + + + + + + + + HTTP レスポンス + + + + + + + + + + 制御情報 + + + + + + + + + + ヘッダ + + + + + + + + + + ボディ + + + + + + + + + + ステータス + + + + + + + + + + 名前 + + + + + + + + + + 値 + + + + + + + + + + 名前 + + + + + + + + + + 値 + + + + + + + + + + 名前 + + + + + + + + + + 値 + + + + + + + + + + データ + + + + + + + + + + GETリクエストには + + + ボディがない + + + + + \ No newline at end of file diff --git a/docs/3-web-servers/07-fetch-api-post/index.mdx b/docs/3-web-servers/07-fetch-api-post/index.mdx index 6a9a081aa..78a1d3014 100644 --- a/docs/3-web-servers/07-fetch-api-post/index.mdx +++ b/docs/3-web-servers/07-fetch-api-post/index.mdx @@ -2,8 +2,80 @@ title: Fetch APIによるデータの送信 --- +Fetch APIを用いると、サーバーからデータを取得するだけでなく、サーバーにデータを送信することもできます。この節では、Fetch APIを用いてデータを送信する方法について学びます。実践的なアプリケーションの開発のためには、HTTPの仕組みについて、より深く理解する必要があります。まずは、HTTPリクエストとレスポンスの詳細な構造を確認しましょう。 + +## HTTPリクエストとレスポンスの構造 + +[Expressによるサーバー構築](../server/)の節では、クライアントからサーバーへの要求をリクエストと呼び、その応答をレスポンスと呼ぶことを学びました。HTTPのリクエストやレスポンスは、主に3つの要素から構成されます。 + +- **制御情報**: リクエストやレスポンスの基本的な情報を含む部分。リクエストには、**メソッド**と呼ばれるHTTPリクエストの種類を指定するための情報や、リクエストの対象となるパスなどが含まれます。レスポンスには、HTTPステータスコードと呼ばれる、リクエストの結果を示すコードが含まれます。 +- **ヘッダー**: リクエストやレスポンスに関する追加情報を含む部分。名前と値のペアで構成され、リクエストやレスポンスの内容をより詳細に説明します。 +- **ボディ**: リクエストやレスポンスの実際のデータ。リクエストのボディには、サーバーに送信するデータが含まれ、レスポンスのボディには、サーバーからクライアントに返されるデータが含まれます。 + +HTTPリクエストは、メソッドによってそのリクエストの目的を示します。代表的なHTTPリクエストメソッドは、次の2つです。 + +- **GET**: サーバーからデータを取得するためのリクエスト。Webページを表示するためのリクエストなどに使用されます。 +- **POST**: サーバーにデータを送信するためのリクエスト。フォームの送信などに使用されます。 + +これまで扱ってきた、ブラウザのアドレスバーにURLを入力したときに発行されるリクエストや、Fetch APIにURLのみを指定して発行されるリクエストは、全て**GETリクエスト**です。データを送信するためには、代わりに**POSTリクエスト**が使用できます。POSTリクエストでは、GETリクエストには存在しない**リクエストボディ**が存在し、ここにサーバーに送信したいデータを含めることができます。 + +![HTTPメッセージの構造](./http-message.drawio.svg) + ## Fetch APIでデータを送信する +Fetch APIを用いてPOSTリクエストを送信するためには、`fetch`関数の第2引数に、リクエストメソッド、リクエストヘッダー、リクエストボディを指定します。 + +次の例では、Fetch APIを用いて、銀行口座から預金を引き出すアプリケーションを作成します。利用者が「一万円を出金」ボタンを押すと、Fetch APIを用いてPOSTリクエストがサーバーに送信され、サーバーは銀行口座の残高を更新してレスポンスを返します。ブラウザは、このレスポンスを受け取り、残高を更新して表示します。 + +- `main.mjs` + - 6行目では、[`express.json`](https://expressjs.com/ja/api.html#express.json)を用いて、リクエストボディをJSONとして解釈できるようにしています。これにより、11行目のように、リクエストの処理中に`request.body`を通してJSON形式のリクエストボディにアクセスできるようになります。 + - 9行目では、[`app.post`](https://expressjs.com/ja/api.html#app.post.method)メソッドを、`/transaction`というパスに対するリクエストを受け付けるために使用しています。`app.get`メソッドがGETリクエストを受け付けるのに対し、`app.post`メソッドはPOSTリクエストを受け付けます。 +- `public/script.js` + - 2行目の`fetch`関数の第2引数のオブジェクトには、`method`プロパティにリクエストメソッドを、`headers`プロパティにリクエストヘッダーを、`body`プロパティにリクエストボディを指定しています。 + - 6行目で指定されている[`content-type`リクエストヘッダ](https://developer.mozilla.org/ja/docs/Web/HTTP/Reference/Headers/Content-Type)は、リクエストボディの形式を示すために使用されます。ここでは、[`application/json`](https://developer.mozilla.org/ja/docs/Web/HTTP/Guides/MIME_types#applicationjson)を指定して、リクエストボディがJSON形式であることを示しています。 + - 8行目の[`JSON.stringify`関数](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify)は、JavaScriptのオブジェクトをJSON形式の文字列に変換するために使用されます。これにより、オブジェクトをリクエストボディとして送信できるようになります。 + +```javascript title="main.mjs (サーバーとして動作するJavaScript)" showLineNumbers +import express from "express"; + +const app = express(); +app.use(express.static("./public")); +// リクエストボディをJSONとして解釈する +app.use(express.json()); + +const account = { balance: 100000 }; +app.post("/transaction", (request, response) => { + // リクエストボディはrequest.bodyに格納される + account.balance += request.body.amount; + response.json(account); +}); + +app.listen(3000); +``` + +```html title="public/index.html (抜粋)" showLineNumbers +

                      残高:

                      + + +``` + +```javascript title="public/script.js (ブラウザ上で動作するJavaScript)" showLineNumbers +document.getElementById("withdraw-button").onclick = async () => { + const response = await fetch("/transaction", { + // POSTリクエストを送信 + method: "POST", + // リクエストヘッダーにContent-Typeを指定 + headers: { "Content-Type": "application/json" }, + // リクエストボディにJSON形式のデータを指定 + body: JSON.stringify({ amount: -10000 }), + }); + const account = await response.json(); + document.getElementById("balance").textContent = account.balance; +}; +``` + + + ### 確認問題 次のように、税抜価格を入力することで、消費税額と税込価格を計算するWebアプリケーションを作成してみましょう。 diff --git a/src/components/Term/definitions.js b/src/components/Term/definitions.js index 9b1ceb361..bc7f694ce 100644 --- a/src/components/Term/definitions.js +++ b/src/components/Term/definitions.js @@ -26,6 +26,7 @@ export default { "/docs/web-servers/node-js/": "はじめてのNode.js", "/docs/web-servers/module/": "モジュールとnpm", "/docs/web-servers/server/": "Expressによるサーバー構築", + "/docs/web-servers/fetch-api/": "Fetch API", "/docs/web-servers/form/": "フォーム", "/docs/web-servers/get-post/": "GETリクエストとPOSTリクエスト", "/docs/web-servers/database/": "データベース", @@ -373,7 +374,7 @@ export default { name: "JSON", definition: "複雑なデータ構造をJavaScriptオブジェクトに似た形式で文字列として表現するための記法。", - referencePage: "/docs/web-servers/module/", + referencePage: "/docs/web-servers/fetch-api/", }, requestResponse: { name: "リクエストとレスポンス", From d078d6e647889da51578d1573815bc61b14e9437 Mon Sep 17 00:00:00 2001 From: chelproc Date: Sat, 2 Aug 2025 18:01:05 +0900 Subject: [PATCH 10/21] =?UTF-8?q?=E9=96=8B=E7=99=BA=E8=80=85=E3=83=84?= =?UTF-8?q?=E3=83=BC=E3=83=AB=E3=81=AB=E3=81=A4=E3=81=84=E3=81=A6=E8=A8=98?= =?UTF-8?q?=E8=BF=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../devtool-network.drawio.svg | 84 +++++++++++++++++++ .../3-web-servers/07-fetch-api-post/index.mdx | 4 + 2 files changed, 88 insertions(+) create mode 100644 docs/3-web-servers/07-fetch-api-post/devtool-network.drawio.svg diff --git a/docs/3-web-servers/07-fetch-api-post/devtool-network.drawio.svg b/docs/3-web-servers/07-fetch-api-post/devtool-network.drawio.svg new file mode 100644 index 000000000..de1f7904d --- /dev/null +++ b/docs/3-web-servers/07-fetch-api-post/devtool-network.drawio.svg @@ -0,0 +1,84 @@ + + + + + + + + + + + + + Network タブを開く + + + + + + + + + + 発行されたリクエストが + + + 順番に表示される + + + + + + + + + + リクエスト・レスポンス + + + の制御情報 + + + + + + + + + + リクエストボディ + + + + + + + + + + レスポンスボディ + + + + + + + + + + リクエストヘッダー + + + + + + + + + + レスポンスヘッダー + + + + + \ No newline at end of file diff --git a/docs/3-web-servers/07-fetch-api-post/index.mdx b/docs/3-web-servers/07-fetch-api-post/index.mdx index 78a1d3014..fdba4a5e9 100644 --- a/docs/3-web-servers/07-fetch-api-post/index.mdx +++ b/docs/3-web-servers/07-fetch-api-post/index.mdx @@ -76,6 +76,10 @@ document.getElementById("withdraw-button").onclick = async () => { +ブラウザに搭載されている開発者ツールを用いると、ブラウザが発行したリクエストや、受け取ったレスポンスの内容を確認できます。次の画像は、Google ChromeのNetworkタブを開いた状態で、上記のサンプルアプリケーションを実行したときのものです。`/transaction`に対するPOSTリクエストが正しく発行されていることがわかります。 + +![開発者ツールのNetworkタブ](./devtool-network.drawio.svg) + ### 確認問題 次のように、税抜価格を入力することで、消費税額と税込価格を計算するWebアプリケーションを作成してみましょう。 From 4593470ce200fda9017cd49ac007a36eda8d4d97 Mon Sep 17 00:00:00 2001 From: chelproc Date: Sat, 2 Aug 2025 18:42:40 +0900 Subject: [PATCH 11/21] =?UTF-8?q?=E7=A9=BA=E8=A1=8C=E3=81=AE=E8=A6=8F?= =?UTF-8?q?=E5=89=87=E3=81=AE=E5=A4=89=E6=9B=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/3-web-servers/06-fetch-api/index.mdx | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/docs/3-web-servers/06-fetch-api/index.mdx b/docs/3-web-servers/06-fetch-api/index.mdx index 942d7f2d7..53c7a4cb4 100644 --- a/docs/3-web-servers/06-fetch-api/index.mdx +++ b/docs/3-web-servers/06-fetch-api/index.mdx @@ -23,9 +23,11 @@ import express from "express"; const app = express(); app.use(express.static("./public")); + app.get("/weather", (request, response) => { response.send("晴れ"); }); + app.listen(3000); ``` @@ -44,6 +46,7 @@ async function fetchWeather() { const weather = await response.text(); document.getElementById("weather").textContent = weather; } + fetchWeather(); ``` @@ -115,12 +118,14 @@ import express from "express"; const app = express(); app.use(express.static("./public")); + app.get("/weather", (request, response) => { response.json({ condition: "晴れ", temperature: 25, }); }); + app.listen(3000); ``` @@ -138,6 +143,7 @@ async function fetchWeather() { document.getElementById("condition").textContent = weather.condition; document.getElementById("temperature").textContent = weather.temperature; } + fetchWeather(); ``` From ee2d2094853e8fbb625f35f37520490e233cdf2f Mon Sep 17 00:00:00 2001 From: WATAHIKI YUTO Date: Sat, 2 Aug 2025 19:28:26 +0900 Subject: [PATCH 12/21] =?UTF-8?q?=E3=83=96=E3=83=A9=E3=82=A6=E3=82=B6?= =?UTF-8?q?=E5=81=B4=E3=81=AEJavaScript=E3=82=92=E8=84=B1ESM=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../fetch-open-status-json/public/index.html | 2 +- .../fetch-open-status-json/public/script.js | 13 +++++++ .../fetch-open-status-json/public/script.mjs | 11 ------ .../fetch-open-status/public/index.html | 2 +- .../fetch-open-status/public/script.js | 7 ++++ .../fetch-open-status/public/script.mjs | 4 -- docs/3-web-servers/06-fetch-api/index.mdx | 37 +++++++++++-------- .../_samples/book-search/public/index.html | 2 +- .../public/{script.mjs => script.js} | 0 .../_samples/calculate-tax/public/index.html | 2 +- .../public/{script.mjs => script.js} | 0 .../_samples/chat-app/public/index.html | 2 +- .../chat-app/public/{script.mjs => script.js} | 0 .../3-web-servers/07-fetch-api-post/index.mdx | 16 ++++---- 14 files changed, 54 insertions(+), 44 deletions(-) create mode 100644 docs/3-web-servers/06-fetch-api/_samples/fetch-open-status-json/public/script.js delete mode 100644 docs/3-web-servers/06-fetch-api/_samples/fetch-open-status-json/public/script.mjs create mode 100644 docs/3-web-servers/06-fetch-api/_samples/fetch-open-status/public/script.js delete mode 100644 docs/3-web-servers/06-fetch-api/_samples/fetch-open-status/public/script.mjs rename docs/3-web-servers/07-fetch-api-post/_samples/book-search/public/{script.mjs => script.js} (100%) rename docs/3-web-servers/07-fetch-api-post/_samples/calculate-tax/public/{script.mjs => script.js} (100%) rename docs/3-web-servers/07-fetch-api-post/_samples/chat-app/public/{script.mjs => script.js} (100%) diff --git a/docs/3-web-servers/06-fetch-api/_samples/fetch-open-status-json/public/index.html b/docs/3-web-servers/06-fetch-api/_samples/fetch-open-status-json/public/index.html index 06c1266f3..ab8c09633 100644 --- a/docs/3-web-servers/06-fetch-api/_samples/fetch-open-status-json/public/index.html +++ b/docs/3-web-servers/06-fetch-api/_samples/fetch-open-status-json/public/index.html @@ -8,6 +8,6 @@

                      カフェは現在です。

                      本日の営業時間はからです。

                      - + diff --git a/docs/3-web-servers/06-fetch-api/_samples/fetch-open-status-json/public/script.js b/docs/3-web-servers/06-fetch-api/_samples/fetch-open-status-json/public/script.js new file mode 100644 index 000000000..27e8dcf6f --- /dev/null +++ b/docs/3-web-servers/06-fetch-api/_samples/fetch-open-status-json/public/script.js @@ -0,0 +1,13 @@ +async function fetchOpenStatus() { + const response = await fetch("/open-status"); + const openStatus = await response.json(); + if (openStatus.isOpen) { + document.getElementById("open-status").textContent = "営業中"; + } else { + document.getElementById("open-status").textContent = "営業時間外"; + } + document.getElementById("open-time").textContent = openStatus.openTime; + document.getElementById("close-time").textContent = openStatus.closeTime; +} + +fetchOpenStatus(); diff --git a/docs/3-web-servers/06-fetch-api/_samples/fetch-open-status-json/public/script.mjs b/docs/3-web-servers/06-fetch-api/_samples/fetch-open-status-json/public/script.mjs deleted file mode 100644 index 4dab48d9e..000000000 --- a/docs/3-web-servers/06-fetch-api/_samples/fetch-open-status-json/public/script.mjs +++ /dev/null @@ -1,11 +0,0 @@ -const response = await fetch("/open-status"); -const openStatus = await response.json(); - -if (openStatus.isOpen) { - document.getElementById("open-status").textContent = "営業中"; -} else { - document.getElementById("open-status").textContent = "営業時間外"; -} - -document.getElementById("open-time").textContent = openStatus.openTime; -document.getElementById("close-time").textContent = openStatus.closeTime; diff --git a/docs/3-web-servers/06-fetch-api/_samples/fetch-open-status/public/index.html b/docs/3-web-servers/06-fetch-api/_samples/fetch-open-status/public/index.html index 13df699ba..ea3b7968c 100644 --- a/docs/3-web-servers/06-fetch-api/_samples/fetch-open-status/public/index.html +++ b/docs/3-web-servers/06-fetch-api/_samples/fetch-open-status/public/index.html @@ -6,6 +6,6 @@

                      カフェは現在です。

                      - + diff --git a/docs/3-web-servers/06-fetch-api/_samples/fetch-open-status/public/script.js b/docs/3-web-servers/06-fetch-api/_samples/fetch-open-status/public/script.js new file mode 100644 index 000000000..57c998e16 --- /dev/null +++ b/docs/3-web-servers/06-fetch-api/_samples/fetch-open-status/public/script.js @@ -0,0 +1,7 @@ +async function fetchOpenStatus() { + const response = await fetch("/open-status"); + const openStatus = await response.text(); + document.getElementById("open-status").textContent = openStatus; +} + +fetchOpenStatus(); diff --git a/docs/3-web-servers/06-fetch-api/_samples/fetch-open-status/public/script.mjs b/docs/3-web-servers/06-fetch-api/_samples/fetch-open-status/public/script.mjs deleted file mode 100644 index 59683be9c..000000000 --- a/docs/3-web-servers/06-fetch-api/_samples/fetch-open-status/public/script.mjs +++ /dev/null @@ -1,4 +0,0 @@ -const response = await fetch("/open-status"); -const openStatus = await response.text(); - -document.getElementById("open-status").textContent = openStatus; diff --git a/docs/3-web-servers/06-fetch-api/index.mdx b/docs/3-web-servers/06-fetch-api/index.mdx index 53c7a4cb4..71dee5cda 100644 --- a/docs/3-web-servers/06-fetch-api/index.mdx +++ b/docs/3-web-servers/06-fetch-api/index.mdx @@ -90,14 +90,17 @@ app.listen(3000); ```html title="public/index.htmlの抜粋"

                      カフェは現在です。

                      - + ``` -```javascript title="public/script.mjs (ブラウザ上で動作するJavaScript)" -const response = await fetch("/open-status"); -const openStatus = await response.text(); +```javascript title="public/script.js (ブラウザ上で動作するJavaScript)" +async function fetchOpenStatus() { + const response = await fetch("/open-status"); + const openStatus = await response.text(); + document.getElementById("open-status").textContent = openStatus; +} -document.getElementById("open-status").textContent = openStatus; +fetchOpenStatus(); ``` @@ -203,21 +206,23 @@ app.listen(3000); ```html title="public/index.htmlの抜粋"

                      カフェは現在です。

                      本日の営業時間はからです。

                      - + ``` -```javascript title="public/script.mjs (ブラウザ上で動作するJavaScript)" -const response = await fetch("/open-status"); -const openStatus = await response.json(); - -if (openStatus.isOpen) { - document.getElementById("open-status").textContent = "営業中"; -} else { - document.getElementById("open-status").textContent = "営業時間外"; +```javascript title="public/script.js (ブラウザ上で動作するJavaScript)" +async function fetchOpenStatus() { + const response = await fetch("/open-status"); + const openStatus = await response.json(); + if (openStatus.isOpen) { + document.getElementById("open-status").textContent = "営業中"; + } else { + document.getElementById("open-status").textContent = "営業時間外"; + } + document.getElementById("open-time").textContent = openStatus.openTime; + document.getElementById("close-time").textContent = openStatus.closeTime; } -document.getElementById("open-time").textContent = openStatus.openTime; -document.getElementById("close-time").textContent = openStatus.closeTime; +fetchOpenStatus(); ``` diff --git a/docs/3-web-servers/07-fetch-api-post/_samples/book-search/public/index.html b/docs/3-web-servers/07-fetch-api-post/_samples/book-search/public/index.html index 77ea92970..2a19ed277 100644 --- a/docs/3-web-servers/07-fetch-api-post/_samples/book-search/public/index.html +++ b/docs/3-web-servers/07-fetch-api-post/_samples/book-search/public/index.html @@ -8,6 +8,6 @@
                        - + diff --git a/docs/3-web-servers/07-fetch-api-post/_samples/book-search/public/script.mjs b/docs/3-web-servers/07-fetch-api-post/_samples/book-search/public/script.js similarity index 100% rename from docs/3-web-servers/07-fetch-api-post/_samples/book-search/public/script.mjs rename to docs/3-web-servers/07-fetch-api-post/_samples/book-search/public/script.js diff --git a/docs/3-web-servers/07-fetch-api-post/_samples/calculate-tax/public/index.html b/docs/3-web-servers/07-fetch-api-post/_samples/calculate-tax/public/index.html index 267938dc6..a139a8667 100644 --- a/docs/3-web-servers/07-fetch-api-post/_samples/calculate-tax/public/index.html +++ b/docs/3-web-servers/07-fetch-api-post/_samples/calculate-tax/public/index.html @@ -9,6 +9,6 @@
                        消費税額:
                        税込価格:
                        - + diff --git a/docs/3-web-servers/07-fetch-api-post/_samples/calculate-tax/public/script.mjs b/docs/3-web-servers/07-fetch-api-post/_samples/calculate-tax/public/script.js similarity index 100% rename from docs/3-web-servers/07-fetch-api-post/_samples/calculate-tax/public/script.mjs rename to docs/3-web-servers/07-fetch-api-post/_samples/calculate-tax/public/script.js diff --git a/docs/3-web-servers/07-fetch-api-post/_samples/chat-app/public/index.html b/docs/3-web-servers/07-fetch-api-post/_samples/chat-app/public/index.html index 6c1bab14d..6603deca4 100644 --- a/docs/3-web-servers/07-fetch-api-post/_samples/chat-app/public/index.html +++ b/docs/3-web-servers/07-fetch-api-post/_samples/chat-app/public/index.html @@ -8,6 +8,6 @@
                          - + diff --git a/docs/3-web-servers/07-fetch-api-post/_samples/chat-app/public/script.mjs b/docs/3-web-servers/07-fetch-api-post/_samples/chat-app/public/script.js similarity index 100% rename from docs/3-web-servers/07-fetch-api-post/_samples/chat-app/public/script.mjs rename to docs/3-web-servers/07-fetch-api-post/_samples/chat-app/public/script.js diff --git a/docs/3-web-servers/07-fetch-api-post/index.mdx b/docs/3-web-servers/07-fetch-api-post/index.mdx index fdba4a5e9..cd82575ef 100644 --- a/docs/3-web-servers/07-fetch-api-post/index.mdx +++ b/docs/3-web-servers/07-fetch-api-post/index.mdx @@ -130,10 +130,10 @@ app.listen(3000);
                          消費税額:
                          税込価格:
                          - + ``` -```javascript title="public/script.mjs (ブラウザ上で動作するJavaScript)" +```javascript title="public/script.js (ブラウザ上で動作するJavaScript)" document.getElementById("calculate-button").onclick = async () => { const subtotal = parseFloat(document.getElementById("subtotal-input").value); @@ -187,7 +187,7 @@ app.post("/search", (request, response) => {
                            ``` -```javascript title="public/script.mjsの抜粋 (ブラウザ上で動作するJavaScript)" +```javascript title="public/script.jsの抜粋 (ブラウザ上で動作するJavaScript)" document.getElementById("search-button").onclick = async () => { // 著者名を送信し、レスポンスを受け取る @@ -247,10 +247,10 @@ app.listen(3000);
                              - + ``` -```javascript title="public/script.mjs (ブラウザ上で動作するJavaScript)" +```javascript title="public/script.js (ブラウザ上で動作するJavaScript)" document.getElementById("search-button").onclick = async () => { const author = document.getElementById("author-input").value; @@ -301,7 +301,7 @@ app.post("/send", (request, response) => { 定期的に新着メッセージを確認するためには、次のように`setInterval`関数が利用できます。 -```javascript title="public/script.mjsの抜粋 (ブラウザ上で動作するJavaScript)" +```javascript title="public/script.jsの抜粋 (ブラウザ上で動作するJavaScript)" setInterval(async () => { const response = await fetch("/messages"); // レスポンスを処理する @@ -340,10 +340,10 @@ app.listen(3000);
                                - + ``` -```javascript title="public/script.mjs (ブラウザ上で動作するJavaScript)" +```javascript title="public/script.js (ブラウザ上で動作するJavaScript)" setInterval(async () => { const response = await fetch("/messages"); const messages = await response.json(); From 88620f95ca9c53b34d94eb5f1377bb90194b0cae Mon Sep 17 00:00:00 2001 From: WATAHIKI YUTO Date: Sat, 2 Aug 2025 23:48:58 +0900 Subject: [PATCH 13/21] =?UTF-8?q?=E8=AA=AC=E6=98=8E=E6=96=87=E4=B8=AD?= =?UTF-8?q?=E3=81=AE=E8=AA=A4=E6=A4=8D=E3=82=92=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../06-fetch-api/_samples/fetch-weather-json/main.mjs | 2 ++ .../_samples/fetch-weather-json/public/script.js | 1 + .../06-fetch-api/_samples/fetch-weather/main.mjs | 2 ++ .../06-fetch-api/_samples/fetch-weather/public/script.js | 3 ++- docs/3-web-servers/06-fetch-api/index.mdx | 6 +++--- 5 files changed, 10 insertions(+), 4 deletions(-) diff --git a/docs/3-web-servers/06-fetch-api/_samples/fetch-weather-json/main.mjs b/docs/3-web-servers/06-fetch-api/_samples/fetch-weather-json/main.mjs index b5572a10e..6195e11dd 100644 --- a/docs/3-web-servers/06-fetch-api/_samples/fetch-weather-json/main.mjs +++ b/docs/3-web-servers/06-fetch-api/_samples/fetch-weather-json/main.mjs @@ -2,10 +2,12 @@ import express from "express"; const app = express(); app.use(express.static("./public")); + app.get("/weather", (request, response) => { response.json({ condition: "晴れ", temperature: 25, }); }); + app.listen(3000); diff --git a/docs/3-web-servers/06-fetch-api/_samples/fetch-weather-json/public/script.js b/docs/3-web-servers/06-fetch-api/_samples/fetch-weather-json/public/script.js index 96957b9f6..13e45c796 100644 --- a/docs/3-web-servers/06-fetch-api/_samples/fetch-weather-json/public/script.js +++ b/docs/3-web-servers/06-fetch-api/_samples/fetch-weather-json/public/script.js @@ -5,4 +5,5 @@ async function fetchWeather() { document.getElementById("condition").textContent = weather.condition; document.getElementById("temperature").textContent = weather.temperature; } + fetchWeather(); diff --git a/docs/3-web-servers/06-fetch-api/_samples/fetch-weather/main.mjs b/docs/3-web-servers/06-fetch-api/_samples/fetch-weather/main.mjs index 55bdb6770..7d3032a98 100644 --- a/docs/3-web-servers/06-fetch-api/_samples/fetch-weather/main.mjs +++ b/docs/3-web-servers/06-fetch-api/_samples/fetch-weather/main.mjs @@ -2,7 +2,9 @@ import express from "express"; const app = express(); app.use(express.static("./public")); + app.get("/weather", (request, response) => { response.send("晴れ"); }); + app.listen(3000); diff --git a/docs/3-web-servers/06-fetch-api/_samples/fetch-weather/public/script.js b/docs/3-web-servers/06-fetch-api/_samples/fetch-weather/public/script.js index 44bf43ed5..08406f6d5 100644 --- a/docs/3-web-servers/06-fetch-api/_samples/fetch-weather/public/script.js +++ b/docs/3-web-servers/06-fetch-api/_samples/fetch-weather/public/script.js @@ -1,10 +1,11 @@ // await演算子を使用するため、asyncキーワードが必要 async function fetchWeather() { // http://localhost:3000/weather にHTTPリクエストを送信 - // fetch関数は非同期処理を行うため、awaitを演算子を適用して完了を待機する + // fetch関数は非同期処理を行うため、await演算子を適用して完了を待機する const response = await fetch("/weather"); // レスポンスをテキストとして取得 const weather = await response.text(); document.getElementById("weather").textContent = weather; } + fetchWeather(); diff --git a/docs/3-web-servers/06-fetch-api/index.mdx b/docs/3-web-servers/06-fetch-api/index.mdx index 71dee5cda..7b9ca9226 100644 --- a/docs/3-web-servers/06-fetch-api/index.mdx +++ b/docs/3-web-servers/06-fetch-api/index.mdx @@ -10,11 +10,11 @@ title: Fetch APIによるデータの取得 しかし、この方法では、新しい情報を取得する度にブラウザのページ遷移が必要になるため、複雑なアプリケーションを構築するには不便です。**Fetch API**を用いると、ブラウザ上で動作するJavaScriptから、Webサーバーに対して直接HTTPリクエストを発行し、レスポンスを受け取ることができます。これにより、Webアプリケーションはページ遷移を伴わずにサーバーと通信することが可能になります。 -## Fetch API を使用する +## Fetch APIを使用する Fetch APIは、`fetch`関数を呼び出すことで実行できます。`fetch`関数にリクエストを発行したいURLを指定することで、HTTPリクエストを発行し、[`Response`](https://developer.mozilla.org/ja/docs/Web/API/Response)オブジェクトを取得できます。`Response`オブジェクトの[`text`メソッド](https://developer.mozilla.org/ja/docs/Web/API/Response/text)を呼び出すことで、レスポンスを文字列として取得できます。 -次の例では、ブラウザは`script.mjs`の中で`fetch("/weather")`が呼び出されたときに、Webサーバーに対して`/weather`というパスに対するリクエストを発行します。Webサーバーは、`/weather`に対するリクエストを受け取ると、レスポンスとして「晴れ」という文字列を返します。ブラウザは、このレスポンスを受け取り、HTMLの中の`span`要素に「晴れ」という文字列を表示します。 +次の例では、ブラウザは`script.js`の中で`fetch("/weather")`が呼び出されたときに、Webサーバーに対して`/weather`というパスに対するリクエストを発行します。Webサーバーは、`/weather`に対するリクエストを受け取ると、レスポンスとして「晴れ」という文字列を返します。ブラウザは、このレスポンスを受け取り、HTMLの中の`span`要素に「晴れ」という文字列を表示します。 `fetch`関数や`Response#text`メソッドは、時間のかかる処理を行うため、**非同期処理**としてバックグラウンドで実行されます。戻り値に対して`await`演算子を適用することで、HTTPリクエストが完了するまで待機し、実際のレスポンスを取得できます。なお、`await`演算子を使用するためには、演算子が使用されている関数に`async`キーワードを付与する必要があります。 @@ -40,7 +40,7 @@ app.listen(3000); // await演算子を使用するため、asyncキーワードが必要 async function fetchWeather() { // http://localhost:3000/weather にHTTPリクエストを送信 - // fetch関数は非同期処理を行うため、awaitを演算子を適用して完了を待機する + // fetch関数は非同期処理を行うため、await演算子を適用して完了を待機する const response = await fetch("/weather"); // レスポンスをテキストとして取得 const weather = await response.text(); From eb036a9bfb3fdc69acd3a3aa9167ad1a06909f3e Mon Sep 17 00:00:00 2001 From: WATAHIKI YUTO Date: Sun, 3 Aug 2025 00:41:54 +0900 Subject: [PATCH 14/21] =?UTF-8?q?CodeSandbox=E3=81=8C=E5=8B=95=E3=81=8B?= =?UTF-8?q?=E3=81=AA=E3=81=84=E5=95=8F=E9=A1=8C=E3=82=92=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../06-fetch-api/_samples/currency-converter/package.json | 3 +++ .../06-fetch-api/_samples/exchange-rate/package.json | 3 +++ .../06-fetch-api/_samples/fetch-open-status-json/package.json | 3 +++ .../06-fetch-api/_samples/fetch-open-status/package.json | 3 +++ .../06-fetch-api/_samples/fetch-weather-json/package.json | 3 +++ .../06-fetch-api/_samples/fetch-weather/package.json | 3 +++ .../07-fetch-api-post/_samples/bank-account/package.json | 3 +++ .../07-fetch-api-post/_samples/book-search/package.json | 3 +++ .../07-fetch-api-post/_samples/calculate-tax/package.json | 3 +++ .../07-fetch-api-post/_samples/chat-app/package.json | 3 +++ 10 files changed, 30 insertions(+) diff --git a/docs/3-web-servers/06-fetch-api/_samples/currency-converter/package.json b/docs/3-web-servers/06-fetch-api/_samples/currency-converter/package.json index 0720d8eee..21a171b62 100644 --- a/docs/3-web-servers/06-fetch-api/_samples/currency-converter/package.json +++ b/docs/3-web-servers/06-fetch-api/_samples/currency-converter/package.json @@ -1,5 +1,8 @@ { "name": "currency-converter", + "scripts": { + "start": "node main.mjs" + }, "dependencies": { "express": "^5.1.0" } diff --git a/docs/3-web-servers/06-fetch-api/_samples/exchange-rate/package.json b/docs/3-web-servers/06-fetch-api/_samples/exchange-rate/package.json index 44fb68a0e..1b6de522c 100644 --- a/docs/3-web-servers/06-fetch-api/_samples/exchange-rate/package.json +++ b/docs/3-web-servers/06-fetch-api/_samples/exchange-rate/package.json @@ -1,5 +1,8 @@ { "name": "exchange-rate", + "scripts": { + "start": "node main.mjs" + }, "dependencies": { "express": "^5.1.0" } diff --git a/docs/3-web-servers/06-fetch-api/_samples/fetch-open-status-json/package.json b/docs/3-web-servers/06-fetch-api/_samples/fetch-open-status-json/package.json index 0daafc3dc..04ddec804 100644 --- a/docs/3-web-servers/06-fetch-api/_samples/fetch-open-status-json/package.json +++ b/docs/3-web-servers/06-fetch-api/_samples/fetch-open-status-json/package.json @@ -1,5 +1,8 @@ { "name": "fetch-open-status-json", + "scripts": { + "start": "node main.mjs" + }, "dependencies": { "express": "^5.1.0" } diff --git a/docs/3-web-servers/06-fetch-api/_samples/fetch-open-status/package.json b/docs/3-web-servers/06-fetch-api/_samples/fetch-open-status/package.json index a502ffd84..1fb5b27fc 100644 --- a/docs/3-web-servers/06-fetch-api/_samples/fetch-open-status/package.json +++ b/docs/3-web-servers/06-fetch-api/_samples/fetch-open-status/package.json @@ -1,5 +1,8 @@ { "name": "fetch-open-status", + "scripts": { + "start": "node main.mjs" + }, "dependencies": { "express": "^5.1.0" } diff --git a/docs/3-web-servers/06-fetch-api/_samples/fetch-weather-json/package.json b/docs/3-web-servers/06-fetch-api/_samples/fetch-weather-json/package.json index 9d8d1b363..5cd337267 100644 --- a/docs/3-web-servers/06-fetch-api/_samples/fetch-weather-json/package.json +++ b/docs/3-web-servers/06-fetch-api/_samples/fetch-weather-json/package.json @@ -1,5 +1,8 @@ { "name": "fetch-weather-json", + "scripts": { + "start": "node main.mjs" + }, "dependencies": { "express": "^5.1.0" } diff --git a/docs/3-web-servers/06-fetch-api/_samples/fetch-weather/package.json b/docs/3-web-servers/06-fetch-api/_samples/fetch-weather/package.json index 1a8c98d3b..69284b2c2 100644 --- a/docs/3-web-servers/06-fetch-api/_samples/fetch-weather/package.json +++ b/docs/3-web-servers/06-fetch-api/_samples/fetch-weather/package.json @@ -1,5 +1,8 @@ { "name": "fetch-weather", + "scripts": { + "start": "node main.mjs" + }, "dependencies": { "express": "^5.1.0" } diff --git a/docs/3-web-servers/07-fetch-api-post/_samples/bank-account/package.json b/docs/3-web-servers/07-fetch-api-post/_samples/bank-account/package.json index f65a662eb..5603151c3 100644 --- a/docs/3-web-servers/07-fetch-api-post/_samples/bank-account/package.json +++ b/docs/3-web-servers/07-fetch-api-post/_samples/bank-account/package.json @@ -1,5 +1,8 @@ { "name": "bank-account", + "scripts": { + "start": "node main.mjs" + }, "dependencies": { "express": "^5.1.0" } diff --git a/docs/3-web-servers/07-fetch-api-post/_samples/book-search/package.json b/docs/3-web-servers/07-fetch-api-post/_samples/book-search/package.json index 074a0e785..fe95acf0f 100644 --- a/docs/3-web-servers/07-fetch-api-post/_samples/book-search/package.json +++ b/docs/3-web-servers/07-fetch-api-post/_samples/book-search/package.json @@ -1,5 +1,8 @@ { "name": "book-search", + "scripts": { + "start": "node main.mjs" + }, "dependencies": { "express": "^5.1.0" } diff --git a/docs/3-web-servers/07-fetch-api-post/_samples/calculate-tax/package.json b/docs/3-web-servers/07-fetch-api-post/_samples/calculate-tax/package.json index 35b284a1a..206833968 100644 --- a/docs/3-web-servers/07-fetch-api-post/_samples/calculate-tax/package.json +++ b/docs/3-web-servers/07-fetch-api-post/_samples/calculate-tax/package.json @@ -1,5 +1,8 @@ { "name": "tax-calculator", + "scripts": { + "start": "node main.mjs" + }, "dependencies": { "express": "^5.1.0" } diff --git a/docs/3-web-servers/07-fetch-api-post/_samples/chat-app/package.json b/docs/3-web-servers/07-fetch-api-post/_samples/chat-app/package.json index 4d01f243c..a3a7ed176 100644 --- a/docs/3-web-servers/07-fetch-api-post/_samples/chat-app/package.json +++ b/docs/3-web-servers/07-fetch-api-post/_samples/chat-app/package.json @@ -1,5 +1,8 @@ { "name": "chat-app", + "scripts": { + "start": "node main.mjs" + }, "dependencies": { "express": "^5.1.0" } From 27a530fc312b6ba60a04d1381a8066b3306d10c2 Mon Sep 17 00:00:00 2001 From: chelproc Date: Sun, 3 Aug 2025 11:51:22 +0900 Subject: [PATCH 15/21] =?UTF-8?q?top-level=20await=20=E3=81=AB=E9=96=A2?= =?UTF-8?q?=E3=81=99=E3=82=8B=E8=A8=98=E8=BF=B0=E3=82=92=E5=89=8A=E9=99=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/3-web-servers/06-fetch-api/index.mdx | 1 - 1 file changed, 1 deletion(-) diff --git a/docs/3-web-servers/06-fetch-api/index.mdx b/docs/3-web-servers/06-fetch-api/index.mdx index 7b9ca9226..7cbfb3536 100644 --- a/docs/3-web-servers/06-fetch-api/index.mdx +++ b/docs/3-web-servers/06-fetch-api/index.mdx @@ -57,7 +57,6 @@ fetchWeather(); JavaScriptにおける**非同期処理**とは、ファイルの入出力やネットワーク通信など、JavaScriptの外側の時間のかかる処理の完了を待つ間、ほかの処理を実行できるようにする仕組みです。非同期処理を行う関数を使用するためには、次の2つのルールを守る必要があります。 - 非同期処理を行う関数を呼び出す関数を定義する際、`async`キーワードをつけること - - ただし、モジュールのトップレベル (関数の外側) では、`async`キーワードは不要 - 非同期処理を行う関数の戻り値に対し、`await`演算子を適用すること 非同期処理を行う関数の戻り値の実態は、`Promise`と呼ばれるオブジェクトです。`await`演算子は、`Promise`オブジェクトに作用し、その処理が完了するまで待機します。詳細は、[MDNの記事](https://developer.mozilla.org/ja/docs/Learn/JavaScript/Asynchronous)を参照してください。 From e7f9a2f05aa026f430b003a487483e84d9113b26 Mon Sep 17 00:00:00 2001 From: WATAHIKI YUTO Date: Sun, 3 Aug 2025 16:53:23 +0900 Subject: [PATCH 16/21] =?UTF-8?q?=E7=A2=BA=E8=AA=8D=E5=95=8F=E9=A1=8C?= =?UTF-8?q?=E3=81=A8=E6=BC=94=E7=BF=92=E5=95=8F=E9=A1=8C=E3=82=92=E4=BF=AE?= =?UTF-8?q?=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../_samples/currency-converter/main.mjs | 11 +- .../currency-converter/public/index.html | 11 +- .../currency-converter/public/script.js | 20 +++ .../currency-converter/public/script.mjs | 16 --- .../_samples/exchange-rate/main.mjs | 9 -- .../_samples/exchange-rate/public/index.html | 11 -- .../_samples/exchange-rate/public/script.mjs | 3 - .../.gitignore | 0 .../_samples/exchange-rates/main.mjs | 14 ++ .../package-lock.json | 4 +- .../_samples/exchange-rates}/package.json | 2 +- .../_samples/exchange-rates/public/index.html | 12 ++ .../_samples/exchange-rates/public/script.js | 7 + .../_samples/fetch-open-status-json/main.mjs | 1 - .../_samples/fetch-open-status/main.mjs | 1 - docs/3-web-servers/06-fetch-api/index.mdx | 130 +++++++++++------- .../_samples/book-search/main.mjs | 2 - .../_samples/book-search/public/script.js | 2 +- .../_samples/calculate-tax/main.mjs | 19 --- .../_samples/calculate-tax/public/index.html | 14 -- .../_samples/calculate-tax/public/script.js | 13 -- .../_samples/chat-app/main.mjs | 2 - .../_samples/chat-app/public/script.js | 2 +- .../.gitignore | 0 .../_samples/coffee-sales/main.mjs | 18 +++ .../package-lock.json | 4 +- .../_samples/coffee-sales}/package.json | 2 +- .../_samples/coffee-sales/public/index.html | 14 ++ .../_samples/coffee-sales/public/script.js | 14 ++ .../3-web-servers/07-fetch-api-post/index.mdx | 81 +++++------ 30 files changed, 239 insertions(+), 200 deletions(-) create mode 100644 docs/3-web-servers/06-fetch-api/_samples/currency-converter/public/script.js delete mode 100644 docs/3-web-servers/06-fetch-api/_samples/currency-converter/public/script.mjs delete mode 100644 docs/3-web-servers/06-fetch-api/_samples/exchange-rate/main.mjs delete mode 100644 docs/3-web-servers/06-fetch-api/_samples/exchange-rate/public/index.html delete mode 100644 docs/3-web-servers/06-fetch-api/_samples/exchange-rate/public/script.mjs rename docs/3-web-servers/06-fetch-api/_samples/{exchange-rate => exchange-rates}/.gitignore (100%) create mode 100644 docs/3-web-servers/06-fetch-api/_samples/exchange-rates/main.mjs rename docs/3-web-servers/06-fetch-api/_samples/{exchange-rate => exchange-rates}/package-lock.json (99%) rename docs/3-web-servers/{07-fetch-api-post/_samples/calculate-tax => 06-fetch-api/_samples/exchange-rates}/package.json (78%) create mode 100644 docs/3-web-servers/06-fetch-api/_samples/exchange-rates/public/index.html create mode 100644 docs/3-web-servers/06-fetch-api/_samples/exchange-rates/public/script.js delete mode 100644 docs/3-web-servers/07-fetch-api-post/_samples/calculate-tax/main.mjs delete mode 100644 docs/3-web-servers/07-fetch-api-post/_samples/calculate-tax/public/index.html delete mode 100644 docs/3-web-servers/07-fetch-api-post/_samples/calculate-tax/public/script.js rename docs/3-web-servers/07-fetch-api-post/_samples/{calculate-tax => coffee-sales}/.gitignore (100%) create mode 100644 docs/3-web-servers/07-fetch-api-post/_samples/coffee-sales/main.mjs rename docs/3-web-servers/07-fetch-api-post/_samples/{calculate-tax => coffee-sales}/package-lock.json (99%) rename docs/3-web-servers/{06-fetch-api/_samples/exchange-rate => 07-fetch-api-post/_samples/coffee-sales}/package.json (78%) create mode 100644 docs/3-web-servers/07-fetch-api-post/_samples/coffee-sales/public/index.html create mode 100644 docs/3-web-servers/07-fetch-api-post/_samples/coffee-sales/public/script.js diff --git a/docs/3-web-servers/06-fetch-api/_samples/currency-converter/main.mjs b/docs/3-web-servers/06-fetch-api/_samples/currency-converter/main.mjs index c739a42b4..26ae69c77 100644 --- a/docs/3-web-servers/06-fetch-api/_samples/currency-converter/main.mjs +++ b/docs/3-web-servers/06-fetch-api/_samples/currency-converter/main.mjs @@ -2,8 +2,13 @@ import express from "express"; const app = express(); app.use(express.static("./public")); -app.get("/exchange-rate", (request, response) => { - const rate = Math.random() * 20 + 140; - response.send(rate); + +app.get("/exchange-rates", (request, response) => { + const rates = { + usdJpy: 140 + Math.random() * 20, + eurJpy: 150 + Math.random() * 20, + }; + response.json(rates); }); + app.listen(3000); diff --git a/docs/3-web-servers/06-fetch-api/_samples/currency-converter/public/index.html b/docs/3-web-servers/06-fetch-api/_samples/currency-converter/public/index.html index cc8babfd0..965f00cca 100644 --- a/docs/3-web-servers/06-fetch-api/_samples/currency-converter/public/index.html +++ b/docs/3-web-servers/06-fetch-api/_samples/currency-converter/public/index.html @@ -5,11 +5,10 @@ 通貨換算 -

                                - - -

                                -

                                ドル

                                - + + +
                                ドル
                                +
                                ユーロ
                                + diff --git a/docs/3-web-servers/06-fetch-api/_samples/currency-converter/public/script.js b/docs/3-web-servers/06-fetch-api/_samples/currency-converter/public/script.js new file mode 100644 index 000000000..c0eb32acd --- /dev/null +++ b/docs/3-web-servers/06-fetch-api/_samples/currency-converter/public/script.js @@ -0,0 +1,20 @@ +// await演算子を使用するため、asyncキーワードが必要 +document.getElementById("convert-button").onclick = async () => { + // 入力された円の金額を取得 + const jpyInput = document.getElementById("jpy-input"); + const jpy = parseFloat(jpyInput.value); + + // 為替レートを取得 + const response = await fetch("/exchange-rates"); + const rates = await response.json(); + + // ドルに換算 + const usd = jpy / rates.usdJpy; + + // ユーロに換算 + const eur = jpy / rates.eurJpy; + + // 結果を表示 + document.getElementById("usd-result").textContent = usd; + document.getElementById("eur-result").textContent = eur; +}; diff --git a/docs/3-web-servers/06-fetch-api/_samples/currency-converter/public/script.mjs b/docs/3-web-servers/06-fetch-api/_samples/currency-converter/public/script.mjs deleted file mode 100644 index 1649aafb3..000000000 --- a/docs/3-web-servers/06-fetch-api/_samples/currency-converter/public/script.mjs +++ /dev/null @@ -1,16 +0,0 @@ -// await 演算子を使用するため、async キーワードが必要 -document.getElementById("convert-button").onclick = async () => { - // 為替レートを取得 - const response = await fetch("/exchange-rate"); - const rate = parseFloat(await response.text()); - - // 入力された円の金額を取得 - const yenInput = document.getElementById("yen-input"); - const yen = parseFloat(yenInput.value); - - // ドルに換算 - const dollar = yen / rate; - - // 結果を表示 - document.getElementById("result").textContent = dollar; -}; diff --git a/docs/3-web-servers/06-fetch-api/_samples/exchange-rate/main.mjs b/docs/3-web-servers/06-fetch-api/_samples/exchange-rate/main.mjs deleted file mode 100644 index 07b4beafc..000000000 --- a/docs/3-web-servers/06-fetch-api/_samples/exchange-rate/main.mjs +++ /dev/null @@ -1,9 +0,0 @@ -import express from "express"; - -const app = express(); -app.use(express.static("./public")); -app.get("/exchange-rate", (request, response) => { - const rate = 140 + Math.random() * 20; - response.send(rate); -}); -app.listen(3000); diff --git a/docs/3-web-servers/06-fetch-api/_samples/exchange-rate/public/index.html b/docs/3-web-servers/06-fetch-api/_samples/exchange-rate/public/index.html deleted file mode 100644 index 39d86873e..000000000 --- a/docs/3-web-servers/06-fetch-api/_samples/exchange-rate/public/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - 為替レート - - -

                                円/ドル

                                - - - diff --git a/docs/3-web-servers/06-fetch-api/_samples/exchange-rate/public/script.mjs b/docs/3-web-servers/06-fetch-api/_samples/exchange-rate/public/script.mjs deleted file mode 100644 index a235c9c67..000000000 --- a/docs/3-web-servers/06-fetch-api/_samples/exchange-rate/public/script.mjs +++ /dev/null @@ -1,3 +0,0 @@ -const response = await fetch("/exchange-rate"); -const rate = await response.text(); -document.getElementById("rate").textContent = rate; diff --git a/docs/3-web-servers/06-fetch-api/_samples/exchange-rate/.gitignore b/docs/3-web-servers/06-fetch-api/_samples/exchange-rates/.gitignore similarity index 100% rename from docs/3-web-servers/06-fetch-api/_samples/exchange-rate/.gitignore rename to docs/3-web-servers/06-fetch-api/_samples/exchange-rates/.gitignore diff --git a/docs/3-web-servers/06-fetch-api/_samples/exchange-rates/main.mjs b/docs/3-web-servers/06-fetch-api/_samples/exchange-rates/main.mjs new file mode 100644 index 000000000..26ae69c77 --- /dev/null +++ b/docs/3-web-servers/06-fetch-api/_samples/exchange-rates/main.mjs @@ -0,0 +1,14 @@ +import express from "express"; + +const app = express(); +app.use(express.static("./public")); + +app.get("/exchange-rates", (request, response) => { + const rates = { + usdJpy: 140 + Math.random() * 20, + eurJpy: 150 + Math.random() * 20, + }; + response.json(rates); +}); + +app.listen(3000); diff --git a/docs/3-web-servers/06-fetch-api/_samples/exchange-rate/package-lock.json b/docs/3-web-servers/06-fetch-api/_samples/exchange-rates/package-lock.json similarity index 99% rename from docs/3-web-servers/06-fetch-api/_samples/exchange-rate/package-lock.json rename to docs/3-web-servers/06-fetch-api/_samples/exchange-rates/package-lock.json index 3c32b0fca..bf7724999 100644 --- a/docs/3-web-servers/06-fetch-api/_samples/exchange-rate/package-lock.json +++ b/docs/3-web-servers/06-fetch-api/_samples/exchange-rates/package-lock.json @@ -1,10 +1,10 @@ { - "name": "exchange-rate", + "name": "exchange-rates", "lockfileVersion": 3, "requires": true, "packages": { "": { - "name": "exchange-rate", + "name": "exchange-rates", "dependencies": { "express": "^5.1.0" } diff --git a/docs/3-web-servers/07-fetch-api-post/_samples/calculate-tax/package.json b/docs/3-web-servers/06-fetch-api/_samples/exchange-rates/package.json similarity index 78% rename from docs/3-web-servers/07-fetch-api-post/_samples/calculate-tax/package.json rename to docs/3-web-servers/06-fetch-api/_samples/exchange-rates/package.json index 206833968..ed8eb6db6 100644 --- a/docs/3-web-servers/07-fetch-api-post/_samples/calculate-tax/package.json +++ b/docs/3-web-servers/06-fetch-api/_samples/exchange-rates/package.json @@ -1,5 +1,5 @@ { - "name": "tax-calculator", + "name": "exchange-rates", "scripts": { "start": "node main.mjs" }, diff --git a/docs/3-web-servers/06-fetch-api/_samples/exchange-rates/public/index.html b/docs/3-web-servers/06-fetch-api/_samples/exchange-rates/public/index.html new file mode 100644 index 000000000..a4bbaf609 --- /dev/null +++ b/docs/3-web-servers/06-fetch-api/_samples/exchange-rates/public/index.html @@ -0,0 +1,12 @@ + + + + + 為替レート + + +
                                円/ドル
                                +
                                円/ユーロ
                                + + + diff --git a/docs/3-web-servers/06-fetch-api/_samples/exchange-rates/public/script.js b/docs/3-web-servers/06-fetch-api/_samples/exchange-rates/public/script.js new file mode 100644 index 000000000..48ba6bd05 --- /dev/null +++ b/docs/3-web-servers/06-fetch-api/_samples/exchange-rates/public/script.js @@ -0,0 +1,7 @@ +setInterval(async () => { + const response = await fetch("/exchange-rates"); + const rates = await response.json(); + + document.getElementById("usd-jpy").textContent = rates.usdJpy; + document.getElementById("eur-jpy").textContent = rates.eurJpy; +}, 1000); diff --git a/docs/3-web-servers/06-fetch-api/_samples/fetch-open-status-json/main.mjs b/docs/3-web-servers/06-fetch-api/_samples/fetch-open-status-json/main.mjs index 80bb3e883..86f3bac3b 100644 --- a/docs/3-web-servers/06-fetch-api/_samples/fetch-open-status-json/main.mjs +++ b/docs/3-web-servers/06-fetch-api/_samples/fetch-open-status-json/main.mjs @@ -1,7 +1,6 @@ import express from "express"; const app = express(); - app.use(express.static("./public")); app.get("/open-status", (request, response) => { diff --git a/docs/3-web-servers/06-fetch-api/_samples/fetch-open-status/main.mjs b/docs/3-web-servers/06-fetch-api/_samples/fetch-open-status/main.mjs index 619df3be2..aba4d18ff 100644 --- a/docs/3-web-servers/06-fetch-api/_samples/fetch-open-status/main.mjs +++ b/docs/3-web-servers/06-fetch-api/_samples/fetch-open-status/main.mjs @@ -1,7 +1,6 @@ import express from "express"; const app = express(); - app.use(express.static("./public")); app.get("/open-status", (request, response) => { diff --git a/docs/3-web-servers/06-fetch-api/index.mdx b/docs/3-web-servers/06-fetch-api/index.mdx index 7cbfb3536..af23cdeba 100644 --- a/docs/3-web-servers/06-fetch-api/index.mdx +++ b/docs/3-web-servers/06-fetch-api/index.mdx @@ -77,7 +77,6 @@ JavaScriptにおける**非同期処理**とは、ファイルの import express from "express"; const app = express(); - app.use(express.static("./public")); app.get("/open-status", (request, response) => { @@ -187,7 +186,6 @@ JSONでは、次のように、全てのキーをダブルクォーテーショ import express from "express"; const app = express(); - app.use(express.static("./public")); app.get("/open-status", (request, response) => { @@ -230,11 +228,29 @@ fetchOpenStatus(); ## 演習問題1 -Fetch APIを用いて、ページを開いたとき、サーバーから現在の為替レート(円/ドル)を取得して表示するWebアプリケーションを作成してください。ただし、為替レートは、サーバー側で乱数を用いて生成してください。 +次のように、定期的にサーバーから現在の為替レートを取得して表示するWebアプリケーションを作成してください。ただし、為替レートは、サーバー側で乱数を用いて生成してください。 -### ヒント +ここに動画を埋め込む -Expressを用いて、`/exchange-rate`というパスに対するリクエストを受けたとき、`140 + Math.random() * 20`の値をレスポンスとして返すようにしましょう。ブラウザ側では、`fetch`関数を用いて`/exchange-rate`にリクエストを発行し、レスポンスを受け取って表示しましょう。 +サーバー側では、`/exchange-rates`に対するリクエストを受けたとき、次のように作成されたオブジェクトをJSON形式のレスポンスとして返すようにしてください。 + +```javascript +const rates = { + usdJpy: 140 + Math.random() * 20, + eurJpy: 150 + Math.random() * 20, +}; +``` + +ブラウザ側では、`/exchange-rates`に定期的にリクエストを発行し、レスポンスを受け取って表示しましょう。 + +定期的にリクエストを発行するには、次のように`setInterval`関数が利用できます。 + +```javascript +setInterval(async () => { + const response = await fetch("/exchange-rates"); + // レスポンスを処理する +}, 1000); +``` @@ -243,54 +259,64 @@ import express from "express"; const app = express(); app.use(express.static("./public")); -app.get("/exchange-rate", (request, response) => { - const rate = 140 + Math.random() * 20; - response.send(rate); + +app.get("/exchange-rates", (request, response) => { + const rates = { + usdJpy: 140 + Math.random() * 20, + eurJpy: 150 + Math.random() * 20, + }; + response.json(rates); }); + app.listen(3000); ``` ```html title="public/index.html (抜粋)" -

                                円/ドル

                                - +
                                円/ドル
                                +
                                円/ユーロ
                                + ``` -```javascript title="public/script.mjs (ブラウザ上で動作するJavaScript)" -const response = await fetch("/exchange-rate"); -const rate = await response.text(); -document.getElementById("rate").textContent = rate; +```javascript title="public/script.js (ブラウザ上で動作するJavaScript)" +setInterval(async () => { + const response = await fetch("/exchange-rates"); + const rates = await response.json(); + + document.getElementById("usd-jpy").textContent = rates.usdJpy; + document.getElementById("eur-jpy").textContent = rates.eurJpy; +}, 1000); ``` - +
                                ## 演習問題2 -円の金額を入力してボタンをクリックすると、現在の為替レートでドルに換算して表示する、通貨換算アプリケーションを作成してください。 +次のように、円の金額を入力してボタンをクリックすると、その時の為替レートで換算して表示する、通貨換算アプリケーションを作成してください。 -### ヒント +ここに動画を埋め込む -サーバーの実装は演習問題1と同じです。ブラウザ側では、ボタンとテキストボックスを用意します。ボタンのクリックイベントハンドラの中で`fetch`関数を用いて為替レートを取得し、入力された金額を為替レートで割ってドルに換算しましょう。`Response#text`メソッドの戻り値は文字列なので、[`parseFloat`](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/parseFloat)関数を用いて数値に変換してから計算を行う必要があります。 +サーバー側は、演習問題1と同様です。 -:::warning[非同期関数と`async`キーワード] +ブラウザ側では、円の金額を入力し、計算ボタンを押すと、演習問題1と同様に為替レートを取得し、その為替レートをもとにドルとユーロに換算して表示します。 -`await`演算子を関数内で使用する場合は、その関数に`async`キーワードを付与する必要があります。 +`input`要素の値を取得するためには、次のようにします。また、[`parseFloat`](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/parseFloat)関数を用いて文字列を数値に変換してから計算を行う必要があります。 -```javascript -// ❌ エラーになる例 -document.getElementById("convert-button").onclick = () => { - const response = await fetch("/exchange-rate"); // SyntaxError: await は async 関数内でのみ使用可能 -}; +```html title="public/index.htmlの抜粋" + + +``` -// ✅ 正しい例 +```javascript title="public/script.js (ブラウザ上で動作するJavaScript)" document.getElementById("convert-button").onclick = async () => { - const response = await fetch("/exchange-rate"); // OK + const jpyInput = document.getElementById("jpy-input"); + const jpy = parseFloat(jpyInput.value); + + // 為替レートを取得し、ドルとユーロに換算 }; ``` -::: - ```javascript title="main.mjs (サーバーとして動作するJavaScript)" @@ -298,38 +324,46 @@ import express from "express"; const app = express(); app.use(express.static("./public")); -app.get("/exchange-rate", (request, response) => { - const rate = Math.random() * 20 + 140; - response.send(rate); + +app.get("/exchange-rates", (request, response) => { + const rates = { + usdJpy: 140 + Math.random() * 20, + eurJpy: 150 + Math.random() * 20, + }; + response.json(rates); }); + app.listen(3000); ``` ```html title="public/index.html (抜粋)" -

                                - - -

                                -

                                ドル

                                - + + +
                                ドル
                                +
                                ユーロ
                                + ``` -```javascript title="public/script.mjs" -// await 演算子を使用するため、async キーワードが必要 +```javascript title="public/script.js" +// await演算子を使用するため、asyncキーワードが必要 document.getElementById("convert-button").onclick = async () => { - // 為替レートを取得 - const response = await fetch("/exchange-rate"); - const rate = parseFloat(await response.text()); - // 入力された円の金額を取得 - const yenInput = document.getElementById("yen-input"); - const yen = parseFloat(yenInput.value); + const jpyInput = document.getElementById("jpy-input"); + const jpy = parseFloat(jpyInput.value); + + // 為替レートを取得 + const response = await fetch("/exchange-rates"); + const rates = await response.json(); // ドルに換算 - const dollar = yen / rate; + const usd = jpy / rates.usdJpy; + + // ユーロに換算 + const eur = jpy / rates.eurJpy; // 結果を表示 - document.getElementById("result").textContent = dollar; + document.getElementById("usd-result").textContent = usd; + document.getElementById("eur-result").textContent = eur; }; ``` diff --git a/docs/3-web-servers/07-fetch-api-post/_samples/book-search/main.mjs b/docs/3-web-servers/07-fetch-api-post/_samples/book-search/main.mjs index ce924acbc..13725d451 100644 --- a/docs/3-web-servers/07-fetch-api-post/_samples/book-search/main.mjs +++ b/docs/3-web-servers/07-fetch-api-post/_samples/book-search/main.mjs @@ -1,7 +1,6 @@ import express from "express"; const app = express(); - app.use(express.static("./public")); app.use(express.json()); @@ -12,7 +11,6 @@ const books = [ { title: "舞姫", author: "森鴎外" }, { title: "高瀬舟", author: "森鴎外" }, ]; - app.post("/search", (request, response) => { const selectedBooks = books.filter( (book) => book.author === request.body.author, diff --git a/docs/3-web-servers/07-fetch-api-post/_samples/book-search/public/script.js b/docs/3-web-servers/07-fetch-api-post/_samples/book-search/public/script.js index a6ac18d32..f65078ad7 100644 --- a/docs/3-web-servers/07-fetch-api-post/_samples/book-search/public/script.js +++ b/docs/3-web-servers/07-fetch-api-post/_samples/book-search/public/script.js @@ -2,7 +2,7 @@ document.getElementById("search-button").onclick = async () => { const author = document.getElementById("author-input").value; const response = await fetch("/search", { - method: "post", + method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ author: author }), }); diff --git a/docs/3-web-servers/07-fetch-api-post/_samples/calculate-tax/main.mjs b/docs/3-web-servers/07-fetch-api-post/_samples/calculate-tax/main.mjs deleted file mode 100644 index 0bec16025..000000000 --- a/docs/3-web-servers/07-fetch-api-post/_samples/calculate-tax/main.mjs +++ /dev/null @@ -1,19 +0,0 @@ -import express from "express"; - -const app = express(); - -app.use(express.static("./public")); -app.use(express.json()); - -const taxRate = 0.1; - -app.post("/calculate", (request, response) => { - const tax = request.body.subtotal * taxRate; - const total = tax + request.body.subtotal; - response.json({ - tax: tax, - total: total, - }); -}); - -app.listen(3000); diff --git a/docs/3-web-servers/07-fetch-api-post/_samples/calculate-tax/public/index.html b/docs/3-web-servers/07-fetch-api-post/_samples/calculate-tax/public/index.html deleted file mode 100644 index a139a8667..000000000 --- a/docs/3-web-servers/07-fetch-api-post/_samples/calculate-tax/public/index.html +++ /dev/null @@ -1,14 +0,0 @@ - - - - - 消費税計算 - - - - -
                                消費税額:
                                -
                                税込価格:
                                - - - diff --git a/docs/3-web-servers/07-fetch-api-post/_samples/calculate-tax/public/script.js b/docs/3-web-servers/07-fetch-api-post/_samples/calculate-tax/public/script.js deleted file mode 100644 index eae93e8a6..000000000 --- a/docs/3-web-servers/07-fetch-api-post/_samples/calculate-tax/public/script.js +++ /dev/null @@ -1,13 +0,0 @@ -document.getElementById("calculate-button").onclick = async () => { - const subtotal = parseFloat(document.getElementById("subtotal-input").value); - - const response = await fetch("/calculate", { - method: "post", - headers: { "Content-Type": "application/json" }, - body: JSON.stringify({ subtotal: subtotal }), - }); - const taxResult = await response.json(); - - document.getElementById("tax").textContent = taxResult.tax; - document.getElementById("total").textContent = taxResult.total; -}; diff --git a/docs/3-web-servers/07-fetch-api-post/_samples/chat-app/main.mjs b/docs/3-web-servers/07-fetch-api-post/_samples/chat-app/main.mjs index 0ba804bfc..5d4073487 100644 --- a/docs/3-web-servers/07-fetch-api-post/_samples/chat-app/main.mjs +++ b/docs/3-web-servers/07-fetch-api-post/_samples/chat-app/main.mjs @@ -1,12 +1,10 @@ import express from "express"; const app = express(); - app.use(express.static("./public")); app.use(express.json()); const messages = []; - app.get("/messages", (request, response) => { response.json(messages); }); diff --git a/docs/3-web-servers/07-fetch-api-post/_samples/chat-app/public/script.js b/docs/3-web-servers/07-fetch-api-post/_samples/chat-app/public/script.js index 38ea2aeee..22e676d75 100644 --- a/docs/3-web-servers/07-fetch-api-post/_samples/chat-app/public/script.js +++ b/docs/3-web-servers/07-fetch-api-post/_samples/chat-app/public/script.js @@ -15,7 +15,7 @@ setInterval(async () => { document.getElementById("send-button").onclick = async () => { const message = document.getElementById("message-input").value; await fetch("/send", { - method: "post", + method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ message: message }), }); diff --git a/docs/3-web-servers/07-fetch-api-post/_samples/calculate-tax/.gitignore b/docs/3-web-servers/07-fetch-api-post/_samples/coffee-sales/.gitignore similarity index 100% rename from docs/3-web-servers/07-fetch-api-post/_samples/calculate-tax/.gitignore rename to docs/3-web-servers/07-fetch-api-post/_samples/coffee-sales/.gitignore diff --git a/docs/3-web-servers/07-fetch-api-post/_samples/coffee-sales/main.mjs b/docs/3-web-servers/07-fetch-api-post/_samples/coffee-sales/main.mjs new file mode 100644 index 000000000..43710aae1 --- /dev/null +++ b/docs/3-web-servers/07-fetch-api-post/_samples/coffee-sales/main.mjs @@ -0,0 +1,18 @@ +import express from "express"; + +const app = express(); +app.use(express.static("./public")); +app.use(express.json()); + +const unitPrice = 500; +const sales = { + quantity: 0, + total: 0, +}; +app.post("/sales", (request, response) => { + sales.quantity += request.body.quantity; + sales.total += unitPrice * request.body.quantity; + response.json(sales); +}); + +app.listen(3000); diff --git a/docs/3-web-servers/07-fetch-api-post/_samples/calculate-tax/package-lock.json b/docs/3-web-servers/07-fetch-api-post/_samples/coffee-sales/package-lock.json similarity index 99% rename from docs/3-web-servers/07-fetch-api-post/_samples/calculate-tax/package-lock.json rename to docs/3-web-servers/07-fetch-api-post/_samples/coffee-sales/package-lock.json index 367638582..3d3a5df4f 100644 --- a/docs/3-web-servers/07-fetch-api-post/_samples/calculate-tax/package-lock.json +++ b/docs/3-web-servers/07-fetch-api-post/_samples/coffee-sales/package-lock.json @@ -1,10 +1,10 @@ { - "name": "tax-calculator", + "name": "coffee-sales", "lockfileVersion": 3, "requires": true, "packages": { "": { - "name": "tax-calculator", + "name": "coffee-sales", "dependencies": { "express": "^5.1.0" } diff --git a/docs/3-web-servers/06-fetch-api/_samples/exchange-rate/package.json b/docs/3-web-servers/07-fetch-api-post/_samples/coffee-sales/package.json similarity index 78% rename from docs/3-web-servers/06-fetch-api/_samples/exchange-rate/package.json rename to docs/3-web-servers/07-fetch-api-post/_samples/coffee-sales/package.json index 1b6de522c..fe4407d26 100644 --- a/docs/3-web-servers/06-fetch-api/_samples/exchange-rate/package.json +++ b/docs/3-web-servers/07-fetch-api-post/_samples/coffee-sales/package.json @@ -1,5 +1,5 @@ { - "name": "exchange-rate", + "name": "coffee-sales", "scripts": { "start": "node main.mjs" }, diff --git a/docs/3-web-servers/07-fetch-api-post/_samples/coffee-sales/public/index.html b/docs/3-web-servers/07-fetch-api-post/_samples/coffee-sales/public/index.html new file mode 100644 index 000000000..50909b1a5 --- /dev/null +++ b/docs/3-web-servers/07-fetch-api-post/_samples/coffee-sales/public/index.html @@ -0,0 +1,14 @@ + + + + + コーヒー売上記録 + + + + +
                                売上杯数:
                                +
                                売上金額:
                                + + + diff --git a/docs/3-web-servers/07-fetch-api-post/_samples/coffee-sales/public/script.js b/docs/3-web-servers/07-fetch-api-post/_samples/coffee-sales/public/script.js new file mode 100644 index 000000000..2558ef2fc --- /dev/null +++ b/docs/3-web-servers/07-fetch-api-post/_samples/coffee-sales/public/script.js @@ -0,0 +1,14 @@ +document.getElementById("record-button").onclick = async () => { + const quantityInput = document.getElementById("quantity-input"); + const quantity = parseInt(quantityInput.value); + + const response = await fetch("/sales", { + method: "POST", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify({ quantity: quantity }), + }); + const sales = await response.json(); + + document.getElementById("sales-quantity").textContent = sales.quantity; + document.getElementById("sales-total").textContent = sales.total; +}; diff --git a/docs/3-web-servers/07-fetch-api-post/index.mdx b/docs/3-web-servers/07-fetch-api-post/index.mdx index cd82575ef..478db4249 100644 --- a/docs/3-web-servers/07-fetch-api-post/index.mdx +++ b/docs/3-web-servers/07-fetch-api-post/index.mdx @@ -82,74 +82,74 @@ document.getElementById("withdraw-button").onclick = async () => { ### 確認問題 -次のように、税抜価格を入力することで、消費税額と税込価格を計算するWebアプリケーションを作成してみましょう。 +次のように、売れた杯数を入力することで、売上杯数と売上金額を計算するWebアプリケーションを作成してみましょう。 ここに動画を埋め込む -サーバー側では、`/calculate`に対するPOSTリクエストを受けたとき、受け取った税抜価格から消費税額と税込価格を計算し、これらをJSON形式で返すようにしてください。ブラウザ側では、税抜価格を入力し、計算ボタンを押すと、`/calculate`に対してPOSTリクエストで税抜価格を送信し、受け取ったレスポンスに基づいて消費税額と税込価格を表示するようにしてください。 - -消費税額と税込価格は次のように計算できます。 +サーバー側では、`/sales`に対するPOSTリクエストを受けたとき、受け取った杯数とサーバーに保存されている一杯あたりの価格をもとに売上杯数と売上金額を更新し、これらをJSON形式で返すようにしてください。 ```javascript title="main.mjsの抜粋 (サーバーとして動作するJavaScript)" -const taxRate = 0.1; // 消費税率 - -app.post("/calculate", (request, response) => { - const subtotal = /* リクエストボディから税抜価格を取得 */; - const tax = subtotal * taxRate; // 消費税額を計算 - const total = tax + subtotal; // 税込価格を計算 - // 消費税額と税込価格をJSON形式で返す +const unitPrice = 500; +const sales = { + quantity: 0, + total: 0, +}; +app.post("/sales", (request, response) => { + // 売上杯数と売上金額を更新して、JSON形式で返す }); ``` - +ブラウザ側では、売れた杯数を入力し、記録ボタンを押すと、`/sales`に対してPOSTリクエストで売れた杯数を送信し、受け取ったレスポンスに基づいて売上杯数と売上金額を表示するようにしてください。 + + ```javascript title="main.mjs (サーバーとして動作するJavaScript)" import express from "express"; const app = express(); - app.use(express.static("./public")); app.use(express.json()); -const taxRate = 0.1; - -app.post("/calculate", (request, response) => { - const tax = request.body.subtotal * taxRate; - const total = tax + request.body.subtotal; - response.json({ - tax: tax, - total: total, - }); +const unitPrice = 500; +const sales = { + quantity: 0, + total: 0, +}; +app.post("/sales", (request, response) => { + sales.quantity += request.body.quantity; + sales.total += unitPrice * request.body.quantity; + response.json(sales); }); app.listen(3000); ``` ```html title="public/index.htmlの抜粋" - - -
                                消費税額:
                                -
                                税込価格:
                                + + +
                                売上杯数:
                                +
                                売上金額:
                                ``` ```javascript title="public/script.js (ブラウザ上で動作するJavaScript)" -document.getElementById("calculate-button").onclick = async () => { - const subtotal = parseFloat(document.getElementById("subtotal-input").value); +document.getElementById("record-button").onclick = async () => { + const quantityInput = document.getElementById("quantity-input"); + const quantity = parseInt(quantityInput.value); - const response = await fetch("/calculate", { - method: "post", + const response = await fetch("/sales", { + method: "POST", headers: { "Content-Type": "application/json" }, - body: JSON.stringify({ subtotal: subtotal }), + body: JSON.stringify({ quantity: quantity }), }); - const taxResult = await response.json(); + const sales = await response.json(); - document.getElementById("tax").textContent = taxResult.tax; - document.getElementById("total").textContent = taxResult.total; + document.getElementById("sales-quantity").textContent = sales.quantity; + document.getElementById("sales-total").textContent = sales.total; }; ``` - +
                                @@ -170,7 +170,6 @@ const books = [ { title: "舞姫", author: "森鴎外" }, { title: "高瀬舟", author: "森鴎外" }, ]; - app.post("/search", (request, response) => { const selectedBooks = books.filter( // 受け取った著者名に一致する本を選択 @@ -221,7 +220,6 @@ const evenNumbers = numbers.filter((number) => number % 2 === 0); import express from "express"; const app = express(); - app.use(express.static("./public")); app.use(express.json()); @@ -232,7 +230,6 @@ const books = [ { title: "舞姫", author: "森鴎外" }, { title: "高瀬舟", author: "森鴎外" }, ]; - app.post("/search", (request, response) => { const selectedBooks = books.filter( (book) => book.author === request.body.author, @@ -255,7 +252,7 @@ document.getElementById("search-button").onclick = async () => { const author = document.getElementById("author-input").value; const response = await fetch("/search", { - method: "post", + method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ author: author }), }); @@ -299,8 +296,6 @@ app.post("/send", (request, response) => { ブラウザ側では、新着メッセージを確認するために、定期的に`/messages`にGETリクエストを発行し、受け取ったレスポンスに基づいてメッセージの一覧を表示するようにしてください。また、メッセージを入力し、送信ボタンを押すと、`/send`に対してPOSTリクエストでメッセージの内容を送信するようにしてください。 -定期的に新着メッセージを確認するためには、次のように`setInterval`関数が利用できます。 - ```javascript title="public/script.jsの抜粋 (ブラウザ上で動作するJavaScript)" setInterval(async () => { const response = await fetch("/messages"); @@ -318,12 +313,10 @@ document.getElementById("send-button").onclick = async () => { import express from "express"; const app = express(); - app.use(express.static("./public")); app.use(express.json()); const messages = []; - app.get("/messages", (request, response) => { response.json(messages); }); @@ -361,7 +354,7 @@ setInterval(async () => { document.getElementById("send-button").onclick = async () => { const message = document.getElementById("message-input").value; await fetch("/send", { - method: "post", + method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ message: message }), }); From 38a18d92c78bcbf3e7241295bb1683ede2bb1b41 Mon Sep 17 00:00:00 2001 From: WATAHIKI YUTO Date: Sun, 3 Aug 2025 17:05:46 +0900 Subject: [PATCH 17/21] =?UTF-8?q?=E3=83=87=E3=83=BC=E3=82=BF=E3=83=99?= =?UTF-8?q?=E3=83=BC=E3=82=B9=E3=81=AE=E7=AB=A0=E3=81=AE=E6=BC=94=E7=BF=92?= =?UTF-8?q?=E5=95=8F=E9=A1=8C=E3=82=92=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../_samples/chat-app/public/script.js | 3 +- .../3-web-servers/07-fetch-api-post/index.mdx | 3 +- .../08-database/_samples/forum/main.mjs | 1 - .../_samples/forum/public/index.html | 2 +- .../forum/public/{script.mjs => script.js} | 5 ++-- docs/3-web-servers/08-database/index.mdx | 29 +++++++++++++++---- 6 files changed, 31 insertions(+), 12 deletions(-) rename docs/3-web-servers/08-database/_samples/forum/public/{script.mjs => script.js} (81%) diff --git a/docs/3-web-servers/07-fetch-api-post/_samples/chat-app/public/script.js b/docs/3-web-servers/07-fetch-api-post/_samples/chat-app/public/script.js index 22e676d75..da2f195ec 100644 --- a/docs/3-web-servers/07-fetch-api-post/_samples/chat-app/public/script.js +++ b/docs/3-web-servers/07-fetch-api-post/_samples/chat-app/public/script.js @@ -13,7 +13,8 @@ setInterval(async () => { }, 1000); document.getElementById("send-button").onclick = async () => { - const message = document.getElementById("message-input").value; + const messageInput = document.getElementById("message-input"); + const message = messageInput.value; await fetch("/send", { method: "POST", headers: { "Content-Type": "application/json" }, diff --git a/docs/3-web-servers/07-fetch-api-post/index.mdx b/docs/3-web-servers/07-fetch-api-post/index.mdx index 478db4249..0e8e1f68f 100644 --- a/docs/3-web-servers/07-fetch-api-post/index.mdx +++ b/docs/3-web-servers/07-fetch-api-post/index.mdx @@ -352,7 +352,8 @@ setInterval(async () => { }, 1000); document.getElementById("send-button").onclick = async () => { - const message = document.getElementById("message-input").value; + const messageInput = document.getElementById("message-input"); + const message = messageInput.value; await fetch("/send", { method: "POST", headers: { "Content-Type": "application/json" }, diff --git a/docs/3-web-servers/08-database/_samples/forum/main.mjs b/docs/3-web-servers/08-database/_samples/forum/main.mjs index 60a73bb70..211f356d3 100644 --- a/docs/3-web-servers/08-database/_samples/forum/main.mjs +++ b/docs/3-web-servers/08-database/_samples/forum/main.mjs @@ -3,7 +3,6 @@ import { PrismaClient } from "./generated/prisma/index.js"; const app = express(); const client = new PrismaClient(); - app.use(express.json()); app.use(express.static("./public")); diff --git a/docs/3-web-servers/08-database/_samples/forum/public/index.html b/docs/3-web-servers/08-database/_samples/forum/public/index.html index 5767633c5..1890e692a 100644 --- a/docs/3-web-servers/08-database/_samples/forum/public/index.html +++ b/docs/3-web-servers/08-database/_samples/forum/public/index.html @@ -8,6 +8,6 @@
                                  - + diff --git a/docs/3-web-servers/08-database/_samples/forum/public/script.mjs b/docs/3-web-servers/08-database/_samples/forum/public/script.js similarity index 81% rename from docs/3-web-servers/08-database/_samples/forum/public/script.mjs rename to docs/3-web-servers/08-database/_samples/forum/public/script.js index c09b5b88e..8fd822f0b 100644 --- a/docs/3-web-servers/08-database/_samples/forum/public/script.mjs +++ b/docs/3-web-servers/08-database/_samples/forum/public/script.js @@ -13,9 +13,10 @@ setInterval(async () => { }, 1000); document.getElementById("send-button").onclick = async () => { - const message = document.getElementById("message-input").value; + const messageInput = document.getElementById("message-input"); + const message = messageInput.value; await fetch("/send", { - method: "post", + method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ message: message }), }); diff --git a/docs/3-web-servers/08-database/index.mdx b/docs/3-web-servers/08-database/index.mdx index 666a2e435..c3360408c 100644 --- a/docs/3-web-servers/08-database/index.mdx +++ b/docs/3-web-servers/08-database/index.mdx @@ -300,18 +300,35 @@ app.get("/posts", async (request, response) => { ### 手順7 -[Fetch APIによるデータの送信の章](/docs/web-servers/fetch-api-post/)の演習問題2と同様にして、ブラウザ側で、定期的に`/posts`にGETリクエストを発行し、受け取ったレスポンスに基づいてメッセージの一覧を表示するようにしてください。また、メッセージを入力し、送信ボタンを押すと、`/send`に対してPOSTリクエストでメッセージの内容を送信するようにしてください。 +前頁での演習問題2と同様にして、ブラウザ側で、定期的に`/posts`にGETリクエストを発行し、受け取ったレスポンスに基づいてメッセージの一覧を表示するようにしてください。また、メッセージを入力し、送信ボタンを押すと、`/send`に対してPOSTリクエストでメッセージの内容を送信するようにしてください。 +```javascript title="main.mjs (サーバーとして動作するJavaScript)" +import express from "express"; +import { PrismaClient } from "./generated/prisma/index.js"; + +const app = express(); +const client = new PrismaClient(); +app.use(express.json()); +app.use(express.static("./public")); + +app.get("/posts", async (request, response) => { + const posts = await client.post.findMany(); + response.json(posts); +}); + +app.listen(3000); +``` + ```html title="public/index.htmlの抜粋"
                                    - + ``` -```javascript title="public/script.mjs (ブラウザ上で動作するJavaScript)" +```javascript title="public/script.js (ブラウザ上で動作するJavaScript)" setInterval(async () => { const response = await fetch("/posts"); const posts = await response.json(); @@ -327,9 +344,10 @@ setInterval(async () => { }, 1000); document.getElementById("send-button").onclick = async () => { - const message = document.getElementById("message-input").value; + const messageInput = document.getElementById("message-input"); + const message = messageInput.value; await fetch("/send", { - method: "post", + method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ message: message }), }); @@ -360,7 +378,6 @@ app.post("/send", async (request, response) => { ```javascript title="main.mjsの抜粋 (サーバーとして動作するJavaScript)" -app.use(express.urlencoded({ extended: true })); app.post("/send", async (request, response) => { await client.post.create({ data: { message: request.body.message } }); response.send(); From 961c581e3cc1e2bfe1c932ccc30e983a1e5c97a8 Mon Sep 17 00:00:00 2001 From: WATAHIKI YUTO Date: Sun, 3 Aug 2025 18:06:02 +0900 Subject: [PATCH 18/21] =?UTF-8?q?=E7=A2=BA=E8=AA=8D=E5=95=8F=E9=A1=8C?= =?UTF-8?q?=E3=81=A8=E6=BC=94=E7=BF=92=E5=95=8F=E9=A1=8C=E3=81=AB=E7=94=BB?= =?UTF-8?q?=E5=83=8F=E3=81=A8=E5=8B=95=E7=94=BB=E3=82=92=E8=BF=BD=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../06-fetch-api/cafe-open-status-app.png | Bin 0 -> 73464 bytes .../06-fetch-api/cafe-open-status-json-app.png | Bin 0 -> 183905 bytes .../06-fetch-api/currency-converter-app.mp4 | Bin 0 -> 102997 bytes .../06-fetch-api/exchange-rates-app.mp4 | Bin 0 -> 118361 bytes docs/3-web-servers/06-fetch-api/index.mdx | 11 +++++++---- .../07-fetch-api-post/book-search-app.mp4 | Bin 0 -> 128560 bytes .../07-fetch-api-post/chat-app.mp4 | Bin 0 -> 101626 bytes .../07-fetch-api-post/coffee-sales-app.mp4 | Bin 0 -> 62441 bytes docs/3-web-servers/07-fetch-api-post/index.mdx | 10 +++++++--- 9 files changed, 14 insertions(+), 7 deletions(-) create mode 100644 docs/3-web-servers/06-fetch-api/cafe-open-status-app.png create mode 100644 docs/3-web-servers/06-fetch-api/cafe-open-status-json-app.png create mode 100644 docs/3-web-servers/06-fetch-api/currency-converter-app.mp4 create mode 100644 docs/3-web-servers/06-fetch-api/exchange-rates-app.mp4 create mode 100644 docs/3-web-servers/07-fetch-api-post/book-search-app.mp4 create mode 100644 docs/3-web-servers/07-fetch-api-post/chat-app.mp4 create mode 100644 docs/3-web-servers/07-fetch-api-post/coffee-sales-app.mp4 diff --git a/docs/3-web-servers/06-fetch-api/cafe-open-status-app.png b/docs/3-web-servers/06-fetch-api/cafe-open-status-app.png new file mode 100644 index 0000000000000000000000000000000000000000..7adbfd147d8cc6e15a775954bd5da5eeb2f48375 GIT binary patch literal 73464 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 literal 0 HcmV?d00001 diff --git a/docs/3-web-servers/06-fetch-api/cafe-open-status-json-app.png b/docs/3-web-servers/06-fetch-api/cafe-open-status-json-app.png new file mode 100644 index 0000000000000000000000000000000000000000..22c8121dcf17fa7b6e2da3218547f4b13b5cdb2c GIT binary patch literal 183905 zcmeFZcUTkax;G3M#aIBt!U}>4M3JI&5CVt_(uL5QNH3xH5~SFbDxniZilO&jMT!In zf|L-dl+Z&DJ?~`gv-a87_pWo^z5n|DG1nC`Oy-%HJmtQBzx4b9od ziVrktXiinr(9q4EJOS*v;5yJlLvu#eR$gA?vAjHohO3j6t%D^EjpCaaU3xvO@8?qt zHLrnAK9E(KQ)R-?rib?2C!I`#MA3Zu7RLl%n)`JspXFRraasS%`?&bPZV91^Gc=q0_3(sOc61Q}w<20zfC{-Y(u)

                                    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 ZlVI<&-s(ojDC@ak(~BE={-HS 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

                                    OId}s@SDAUY%;T0K09{Z#+?i@nF*_VS5uT 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 IWsC#=578kOcK`qY literal 0 HcmV?d00001 diff --git a/docs/3-web-servers/06-fetch-api/currency-converter-app.mp4 b/docs/3-web-servers/06-fetch-api/currency-converter-app.mp4 new file mode 100644 index 0000000000000000000000000000000000000000..95ac91cab92ea8a07a8ac5b49e605e8375950365 GIT binary patch literal 102997 zcmbq*1yq(x*Y@+!CEZ=p-Q6M5Dc#-OrG$WVhjfRuARyf!DcxPt4GR1Zo})*7&-Z=r zTK`%%Ff;e;Ysc)_GqdMb002O2>g-`};bdn60Du7=|AKy43|x(vZS2{Y0RRAusiTPr z0QhRa#@N6a)TaUp^5LO$L43D)YxY@vBHaw}EZO0aI|~OJF+H)7oudgcGpOju%EZY| z%)w#6ZfL{|dhv__)PYe}L0poajaXPs6x7q$#0d04)Xv_++QihEn1zXnm7ax(<*~Q9 zv$H)9Bcq#}8-uHbv5B3vfh~ibqZ#8P7Y1`@8*5M>J9}pfJ6k6nVj}}X10#NBVn-8G zepX^*6GLk|BP)Jp9wr_pVgp+PYY!(AekONT9wv8YW>#Vw6Ml0OcVZ_OLr{s6*xtzl zL<;(?=V;8&%)kU90{tSkv2Zsr)_X)`22toa8rYhd@H2A|8<{)W*%;`7NSTS99ZjsQ zEu26lE_W_tBWF;-$iar62_%Anv8SD_2|o)n9WyhrsezNTp1qTmh5ciXzW^NU_3TVd zolKnh=~;-K%^g7$ARrcEYdbqD19MPK??)pGv6Hoh5lEOH4NSzgj^CLWS=bmjKMG=D z>ulm^Z2;;7YB#iYaWwGIGqSU>H*f~kjX*YXb~LcC1wnv1IvPCoF?BSsF>wM}%TUkW z15~y!=4Szw4U7%!AJs6_Gqf;pdSqhZX!2b#Hxmmpb7w=)J3D(5TRk&7d(hjz8tp-( zRwf=GY)iit(Y5jk9?e0095} z5im({zjRfu*2Vs(9ctlw86gA!)sYGQ{wAS?dZ%E1(>c&cJ% zI|*e(=ZhU38c|LW&&n|RD;YG%Hu%+R$bz)p@pzV&0?wIN{XN-HS0-ljBc`}jS%{q; zx25*W*d;E$$#OADBw*{f7H0*fr+IvpDTb&UAASf?G)j!Q=X-v1M@1l3>@;qNuS=0# zoZ{0lUAc6e56q*kf9!|`=JTd|zIfimu?g@&wn?jY{Tb`@`9Pxt)Q-+qUu-s$3`H29 zdV?1otAf-_R{qR#Fj%9aJq9+-8F8vSD+Nyi8vMyr%Q`LQ67CNl@gPWY{FcHJutlG9 z8wGB}G@lBC9a0b3h{(I8jkMs>MhHNQcy=Nugl@o-1Z%e&W)*Dnj<717mHN&wCc3ry zPV3ywp|yd4z;aLDZ@hsJ*3kJj=6Ja$O|Oc*-&FgQe~e3TzRIt>W5{^`Hd1Z6ldvkb zF0K{8FJz(FKn}<*0{~D{iWfX_}-!|)US+9 z6k#1+4(1&WF|xypH2FRsG_kfEK)WcAS^Bc2K3YC*3(2tdi6C708)Wl7bypLyrmfQE zs-%L4oz&@^+z$NwauY^E2xe_(C$k~;593;PloTC|kb~OPExO3DZ#WYBl(Nb7adj4w z&}TpGunCVl_-&CuMpBsv)6l&9=u7Bl)Mcmre1SzUEl~<$-F1Jjrx|9wtb+2E4Q`7V zBrLG|b4rgg%bf?=QcwRAhOL5HK2Nq7%7vF|r=IZ6#?x)t-`I{Ka}H@A9hPK1ehHX)U1mSg7WMnMOm}&KAq^MV{e0{dpKF) zE@rT!kGSSVLSrU3T!9xXD~xa+22FS%L21>Twa07Ng7DzFfH6Q=E|BbrJC)IlESme+5Ky?KGJX!l53p!X_2zLBRTUP)&PH;wxjjzsM@%cY~y-3KS{@r zI`G@Yx)|xvIk%stt;vn6yEZ$F+W1#6(9K^qTuSsleX0GS*Q&Pg&Mnk?82&KN3BLGn zm6AuY6h-5C0)rpl@#p9l(3`B^yxGnvg38!&7m1)`x#10+#CT#~8C|%uC53PKxhbW^?p||T%pejR3i;5mpmNsJ_xG$+|ca;I=f=(UBJgpQgy5xd>l?ATK{mt-pfgT%S9E5wYR zXrnOY1zYGP5L3kS4FTP*j&dbuc=fPgor9l(D6XSp(8lC*L#l(1e_!B@xalgx!|pD_ zk^Z(IWVb*cnK>ki8pp|3exva@!e#!gdToqPq-Ww^9GZ%=?Pqj}IkwIiH`XmAcp5y7 zPo1qkwMzOuI$}`5Che-|tU3qnE@ZOu9ye0)cyb_CcK5_ZM>F^4_OGnN^gI$!BkXQ~8E zV)V${Y%4#*;CG)kD+MQPfdm{|K97N4G!{mX0qtA5b#z+;Y_H70rq?(0~sZ~KN4s8TR!U`Y1DaAb|xO#pq=7L1K zgLK0(I>Alj`Q_~G@gltI8zRcF)$=4p>SiXNEhUTY-KV4}^#J+7qiBKnW^MnR+g7Nz z90_|~qStKedP5!W2e5>vJ3m2WusIwB?pAfpjzr<`3x-16<1$xXVLHRncmMzpta|kh znP0D;3~Il9?X^3RdR*@lli+T^jgpsm2}`1x_)%k8fnz7I<5iUKVT~|_o?HUM$N93J zxKj+XD7&UdHvmVVwJGc`8m1JxT>5DCo>it;V?|q=9T~nu7ya1wdg~!`f2s%Xo#< zjm0RTUBG3v4bm#@g_DK1P|mism(-c%HlrsNBs-g_AwUWo?4($>HY#ocgg(%RWU3XV^J+Q9^O>@B_$E!rb%jk)+!Cw^2I^>F># zYI8yili}1I;GL+1ea6r7rQ0EH{fh&W3wUF7%@g!))!dmevRb8!49O9 zr_hKn$|&qCXTN%ieKPPZIajm&1El)md`~lR2bX64smfjV>v*uNUbKzsb06yA=3Gb* z%%lYLXRr{{k$`*z?`%*dyiYP zy7gJ+YAmjwn}Q%%uj+V^TTGz_T3hact{SFp@09xo!4Jw$?JHPL4mRU@vL?EuxW$t} z8z*1X1GMqtPzMa2(%b=?WFr3|5gK%#i4LQ#yd&UZB$p5^Dtg-8<4P|y&CA3kLnou7 z|J0Lbwm1dszI3@)1X97YrflU4oMU};NE54I%VC-ksds65)cS~~$2_GTbD!+!cFrLu zBv!FsMG@LjjmD=LYhy7lOX{+7G^otif;O-HET4S3gjMz%MgR7U>P-@tsS{7MxpM!Y z7yMv6mz+h2v~r^&t%euta;)g-r-SMFE8Gz7ZKqhyCzi4K`5XDQFb=LldROb@BItQT zVf?3`odnw(J8qK@i^;gysXHq5RaJ2OywS9`CKHBuT3J>N{S1ekU|M3mrn=rXoeoVA zi{K2X&%M+CsXjP40jY*G$rX=(DH${3+ z4%dwAJ?DRNW4+U?9lU5pJP*~SXsFg1mZ@8xhPpI^gfC#_2x}Li8O9^4Oy)#H?ilJs z4p>l?HOv@Pl#*-YtkuTkr@V1ZW|%bN z7v}CHrM2-h2M+vlxtq~dspxj=t1R7SQ-8z+o~pj3^#I=$^uFGb(w_qE61EAsNv zQfH>eQHNXLYQFWX`DAv6UTnF}zQbXBU+QB6EZ_UahpbTOB`%Sk4shqF_AkBg37Ww$ zTb5>)Km%{aYJXoFCX+GD7Ex8{5-phdBENl9*ekY_S)py?Wei;z(C*$WJ}WH5KD>rM zprwqPo~j`*=g_Klzh=G$^&bTQt!@i%qew)D+_YBuw8;JEBQEK~S5uDF%g@Nu_;Gca z9ypg+kySfOuGZ_D$7*?Fk$R+jo(J#Yp(LgGezno^X;?#jJ+gxX6;>LCwN_YR?up*xS`cN~v-EQ+cqS zf;j|$QTOHR#yi{tOmAqn53^UGW7v;ah)aGG7oR^zKXY+`1K}sVLC*uz{?gr%t8Fl1 zoNMrIX;{cko{Fj_2DhGzWuxv4O17$b9=AX)_h9eA9crbAF5_YQZnb9;BF>*PmE>`+ z{P#lxxkZUWoF_jUmrLokAsEpLff)a_Jmb|5v=>ShWq$%WPJ;dIRM%8IyVEWJvesjFWP1Zj}vj`c+|} z_=H$Hq40P&wpi>WtGqye8-a0$%9{0dB<{Fqdek&I544U8Rbd5=h_^n)l)S?Y8xPq_Z{y3PM{dC>qB?c)`N%q6lPPlW;*s~=${NdFQW;b-ayWrH#=)KIm$9nj9j=wp?Iq0KeZI^9~@{r&5q~Ps2wBpK1#emx+brK00I|F?D9O(gv zSxsxCZWFAFG}uK3LSZ4KZU;VmhPeP>eT2YvU~xspvw|YtpyYsN930c4jOXfyvevE< z&kmXDnaJ@>=Z6ztiAhN&yqPgvrj73B*dcL_oNA|}9jju7ZVJ}Hzu=l}^vXmkpl9jA zI+RGrEHQi2G(tj(P8YcE#e^Xu$?&C4otY4#{iaA@pzm1ol(~eFauSwa8H@s#cg)k;_(h8ggMch_Fo^L!bm0 zycOB6=6WHwj%X9~*0VjHvm?CP25&comTJk-GIp@K(5nW((PA%JWhlLg(A8}v8atnl zl(@Tj`VnW{?2d>BJ^q}?&-h+O>pl0a&dZL`;At}+w!PHZ)N{X??-D$bl~Zof-RKfN zZoqs0GZN@su2d0u4?GB0i0@^xzCY##bhC$@OywRqa`_b1UT$glJ%o+}fad-|IDE-Z zd98&a9sKs_UU@AqfACCvH;l~)w$b+y+FST6KWh5jX&4o5FO#g~2t#0IEvI;&s$MZi z?eoN7A8YZpAG0*YaKKN_ph@#IH+_U&dq>dMX5mJvhV4m7!Y%?W#=!e6Yi6{o@_mce<{=g*4}tctUY&4K~>>1}J<%Lr-ACH?!a zI~Uq{>L~MG_n$;!1bVi3^cWTbKgfhv41Lji6JkuWg#AN`?9hx7*|j{0QW;9qc+s@_ zll^v_O|q23bjeQ;(qFnmMZ@r3dnpF%mcRCIkLq^Hvx|j-jb|M<*-oJ2!gT7m?lsdP z^Gwa5;QzLp!i4X=LL@4wCv@KI{J=UW+h_MGlsoX*n@>j({b%ocj6TcgvX>2SUx`$; z?v(mQc-~u&y4@rb*aa5*V{qzkqMrW{3LNn6(#7WbuORayV*U)B|NjNZW&i+iBAiNY zE$Vk)82HE*kt}OW2#abW53|3AEn}TC4QAEk=Ih$5;sp~gG`bM_`6u^xC@0)kLT~L* z*OCcU0{2qd!&C+%yI}ci*sbb4pxKO;+V~>_y5jx#u%<4Z-sE0Aho%V^2dn0ywx`bxGsU=Z_W5P=>88!A>x_`t0}A0IaIrx$0X7G}R% zj|7NG?(&!&N80#cpf^T+`!1kqkLqsC?dABq{-fwcTOA`=N^PD_^#Jg&*PaTz&Aco6 z0lo7mBjs~Hu|fGm2$0fl!Wkm&LEkeN0J64)yWKafe7X!<`QnZ{`&8E!>T1p8>PJ41A2Ewnz7G+a646~coVv7K$Bz2am=G8K&SNunT=z2A?a<1hfRb_8Y^IE(znnoiMD^HnBWONRm9YRHyR6*qsHq>%v|e=(=9 z4srb}^<0DGRNnVpJ00-9C;(zndZ+phw1R<3V6Q@8_WI37!dD(^ol9eMZ2&-~)X(V* zVof*-;%W%YFtYr?Ri+I;D?oiZdZ<*lWPiUvPg>{(pp{ZYN~Kl@XLR=QbL;uOdDeHy zwcg3Y007WMfOn_>KU{i;Oew10Gy?Jb`+2ep;^HBkYA#hIY@Q+mWB2g4M*(Q@750EI zP+>r-&o7y2g=|oPpEa?lx>NxE&ol7hp2b(+UR{}-&8JN2$tkGc$6G8Up93NOQUIDq zXi8btsLww$`8yv$wJL%Zk(>XJ;k#k2g)@T1QRrwN9=pP4+vI;VjFa^R+uawtoE!~I z1|ZJ92DT?f3O5t)%!YIY@QVo8J$(BKh5A*cU3V%#Ps8r`Wk;f{2+pE%J%^9xm zuYM{k*$z@x2bhunV<16qAm3qa5BYZF38C8+>Z1fVctu!#pp+J zBJ@i05j=-SPI1J7njUE*HfTx0{~|g{Q+Rt$G_A5Bi46& z3j;G5f7s~}rF&;{L6(3UFz*bJesMG=cmUW4naFt5ER-p}Vh zZ0sHVlqJ8#PMvwN))i?_18obIy$4uk8pxVyPyt@CJb3s z8BkQSTEqPmg1Lw$L8b%)A3m1LVHqA^rF?Tlv7-khi^r$h&*+BhI%eW$s13i5;{x8EwBK3xevv6yY?NznlnN26U7A*B0fsxdsk^vR>YK zNGluaJH}9p@>0?l%as0|pKoQC&gstb(bHJ2fYjxyy&pmQ^s#G<=I_=nmz+ zRPku-c^Js-E{j3H^xMmqWI!oWREDAiU789@BpVD=Y^L&%N5`$hvMZ0RI|#x;oQV0I zrbxNJa!^8Wlhcz4UHYI=A>wxbjZ$sWf{yDWrvaEat7{R8!+Y*PN zwE6&2XYbZZzojts;q`fJ23|VNyt!|FVsff^?pMS6F(m_c1*9fe4*u^>3mpOaR7P4j zElFw>PRWExsq@FS`Y)elb+DE^DOsQ|##6o6(MQxfM`D2|p;3hpVkVyvz;ElWoWsIZ zvdXG>Kf@cnSW`jP;#?X=i?Ar|^clu4MF2suhS#$__2v4L?T=RocH(9=z#oxMw-S^1qCaXX{6B`EC!qJA;3vz2DRpG!3?FsFJY~vfe6Ixzn zfx_OJg5(Q0DG&B^+VMjt4Hh zN#77Km^{jf8&VGw9{VT(M3aODESIbn{=%iuj5}H zFg@dvPc^W)unbRl?V8+c+;gQ8X~cDV)=c3c?6Tjh(M4f>SlH#q@@(|{MdxXQv}An@ z7~EQE2%uXkw9Bff_vv~z7!3l{(6TQ3s)nTz-@X(1sCf=kj0K)^g|2fpYR@=d;5;yu zIS*yR3sX;R9#$2}j2o6k(}aIhRn8Ul9MxID5$ySEPbe1-@epcg?RWM{H7r^?D-V&$ z&W$%aXqDf{r|nryKLmM$Z;Mm|sT-wW?=1}E>c25)SqpICYAuEqnz55yZHu6W9z!2WQmcqX&_xd@LgNfazM>`9`hcV}qd%NvdsJ_A= z)7W>_hYKGk?R1$nrCgdk#jWcuyZgoT3VZ&))Ig&!@DfzV5>9K9T15`X$C#bvm33QYh6Nl)l={SGbXC9*4OCV3Vo1D;@5tWF-Al6Y4rOy=aE znww(oI?*!pH+x=~FOWbvdLdPSbLo2Io%Pcu@erQa$)}DSq(Odj$6aa)o3f9Pd~GW< zt(|vs>rq!>EQEwE9FqkT^0lKi5*qwv+loCGJ|eW}%ok4Fdr?VvJpIWi%DDl_w%bE9 zCRbVs7$#9v@PiT)e@e=Y!xKPwfk@4kcW^>Yw}1t;cU_BX2AG@d=jRIE(M}4YEhlGO z)UR?P)XA`s08iJ8Edr^4kvf}pGq}<#GD8A+eEI`#4s`O?&H^JH!+R|fFH@ zpI}q%lT(Oux|TkW(hhfPOE#z-QoqHRT8mv9)}hLPlV?7eI)5YY6{#Zr%x<46G_unqC>eG|paNvn@CXToj=<~I&cM-_!+F(VUff}Y+o&|@u&bT-)0>^(_nZQwh`6SwSU zePu;m33liIwmFU}l}s!qxI%Ns1|1i5rF16Frs88~Qw39WxsjBmF*xqwwjn`0&p0;_ zXCSXSipPBRl!9@!{}pT_GMRp8$wmp?XJqp$=C-9*KCUQJE>30*H*D3dT+bmHpztw7 z7)6^~4*d^Cn+aX$;OI?66`Yf%1|puxV?DHpf2&szrEa|sM5K!;KGA-&G#O>E6*?-= zOY?HeZBjy}%yZ@Lwn-+Hv_*mHWXOQ?z3H7~-PQxO6e`Nzpn6UEP_36(d0laho=^MZ88%a1v!KKO@?U$v02d1SM}N5{@+Sk9GI%vwBHKJp~Er zOzK(G0z+z~Zq63kF$XiOh~Jow=(A-Mnu-ib?8K%^kRv}6iP60^ro5(iU7UCp)2>5C#AMLBg4{;uw5?owtGCfKzpp;-2emKgoeE&SbDn znh8QMVAGy_n66V3PzPA+@%0PkX=JipF|?Ri8DGmfF+PH8;C=Ca#<}uH2$ZJD6gWWZ z08Gn(8Gb+a{KFI!`GS9f|6Nc4u>&{&Gq3+X^?+rCxrN`Q3nirf(o`S@*7)l^N}57Dq*F60Lnl6Bo}396b;z%B;(BByE=-nPp=pDP6& z1b+%nrMu=o!J|iT@0mhxYy>rxukg!Dq>@!FF?WTw$0jhFtHWR4fe_%OKth5J^8`PW zDgY?Qj#E04{;rjn*lJwsNfKC^9S?QD9l<&_03m+m7wAU;z|7QtZ$Ui)0g3=K_$AcFDFEZgY2(tP}Xr}(MIF9ldG5Q+dWL*U=6|BvRsQ2f~lu>e9a5Kblg zxAUn~i^RuU9SRj=4Kh)WjP;jzRnpa$wyqbK8bZm2j0j%rJhi3&w~(MM@(qZIqHu=r zKc_B`^-jXA9-dXBI-M>a6R+2_+P4EL?AqnEe-$8mjAUUgBb~@n*C`@ zFt32l`xL+=jC{30qn_YMR5r=zRVatFZzavpG5YS&gl`Jg&96}Q(@ zZdFTB;WMF&1JTv8>mxluj-`g5zwxfvsHr28Z2+8MR20nG1mIqMt3-)g6Iw3THX##J z{X_*{{FYNvdjxL3(lM1|%Cb5LmWN`R^tw1KdC&jD^Di#^oP4S=aj)Si`WY_>4lBu( z>nFR)kxw%Bsnr$mJ1i72Mi*aPXMJB$K}+izBt)M*yf$x+{mOoe3irDznF_;X(sKX8 zjBn;Dx!ciHYT`j`yOAN#C&*lgzhl`N{nE_ zL5H07SC0{pmMFNhE|K$L9g_An#Iqhqm10sq0d@!9qCwoG>q70M=k<$9E-q*Kd0nsr zfg4fHhmnDUI=o`pXx!lUS1r&_ackYL<>5rV-^H(M<|0JLvs3(B%EU7|+#RbfLXkp{-#cXgsk1`|%FS~9G3z`_y z5yp9wV~H|?qQ%~1{!`GhGL*()JzHb?O~<;BAf2B8Y`+BwX-+xpyq~wL*gvx%V7bLX z5kL(K{vwp_SnX0DvkV9$7Y^YVc|;xd4p+hr>+&(r|G!MtAFr^-K#poDoDuYMHo<4x z;`6w7cqHEc5@n!^Q$p$x9(O*3Pp1<@GDDAV*8n%+@khgWvlrvpog-?W2BP5+SAORS zNu&RJgT~|XrU%T(``=a-;Z*K=8&DGdgmtiv?MXL&pwih=l}&^U=uYK_)c;FCx*fzq z2$)guFEbA#Rl!6C;kxbr0)l=A!jKY9E&X%u0iXwG6@sk)FZ$oa1loYWUNWb>;pIa4mOZG0S8I>)f(2t57&^^o6aSR{cylM-SQLS^trWYv zg?{wbeu=+O4`DUbmo7R=D=y84)uE+-!dG-&f<1yTAi;J(6+5PEY)SY@Nv|QM?5w3( z2^Sz2n|&Ed+pyfE3;|)`n3ar|l=y9+&J=|7#tYErbUNK(YnUN$Asu0gb6&LH2DkGM zgs6%wapMvDSx}2ZlU>*fKS_4XUGW9Q1ARz_#Ekt)?7GHg9!jI~aw>UVwu?MDqg&rk zOw_B>KE%tOm=DE!;j?S%U~4+rcE26EwKS(1-hVOy`SElcjzxM(Ls~ir52tbVGIICy zfJoI(qUBxS$GypM9K$02*EJ4n&`PZ_?Utd<8wVk#gIk8zq~cBN5fPX&K<%iTiQVA= zF|YRoP2R|V4*nnB@mPh<0}ZC;uPIy5eO9@b%rbdqbRVw*T>eZma~K;;wp z#lrjXE&qrj4*5_8@Z&%6!CIn!ZxU?#%T?_EKfO)2hf|1wQ6h}_k<3p=csnV_HhB5~qOKmW=o zZmx(h*&OR4#WYZ6pOcW#ugnPUVBwI7Un&|spNSox z&$JiwGU4h{(Gz;w29Q3oQ_HC%h8={Z3MAt6yeYdHWpB~|2=2oN=%KJR9BXS7u`6Sx zpm);dAARz_0aw$k-U$hBv~LO9ZXX(`cuH~m0=fpm{PgZL5yK%pjGw{}od|cRZyF=A zAeCjSKwFllTcT54`{je8*;(GDD7nJ=Ot`djVbkaR$uP0Rn@ggI0`-Ei&g6NCq)%Le zHJwk@LZf&?*ess%j!eh8KD%+*u~X<-=!rEq;34%64w%p?myL#WeUZSSnVqbfbY5Q& zA}@u2sLj7&>^$CKB}3TYOR%>xN-=Z1XV3HHK`yYXG1k7FmMlsS-7UyNU2Q#+(j70{ zebIgc@8~nafw?=PfT8_1{ONU6?w1NG!GMHk_XtjzVrHW4|;`^!6IEQiIY@KEk z>fT<+)mmdxgtA2Z1@f!O_up>AP7PCc3`}nkojLvsuY(4qs{uyBnF)Wy@?`=#38^Mm zUZ|-DZgww%1_b(s!rclrd|%4A?EVtlqgjNQAb%M3z2UWP0ME{!jL0|sXaR=@v5^2~ z*8Vo-z#_xRym0ag1?06wZsI@0{x}h5Y!3B>!3k_JTlF9#dU^TnPUio1nHF-uhF#HxYzr(?#xreui(+_OCd9 zHo|Ir$9>Eb{Btk=7{@SQ3?KQw5DxOZ@ctAS#or7iN(EFu=wJ@41-PRAiGuTI17OP^ zgbTXt{Bi96TTEy{V>(BbsKp1DI8}xdP@kW{XkzmemXRh7p274(+`=- z?NcIC)=?sKge@DZ&2S0kWkUz ziD~G8@njyn0J45i(S1#jj|%@*VyP^fw|@_vale?44P2a3$3ob&mjy;XvA6S0Y-S4| zOWZziux+@qgaCTF9MGZF@r>@|ektxF8jkdo$O$PP0@E#5jYJ%6qac`T7u{UEK5tjA z_%1A20c3;;pU4MHr!SvkFGeuetx4wx-Ww@rSu4NpM}{SF9&Cgtf88t@zh~%7+^J>7 zf-bNpp;D9+#EE$JT#rx)k$J?x zVkC^Nj+-%@*NR+NaZ_qB?Su$KWRRFx`7;e`?*<2hLa=ZwN*fCBXbAhP>UUJ%vRRA| zd=ltqD|HD+7mtQGp0-*DQKOGYA679f9Z)5k_M-9eTZ-;QKQ_P1lU)9fX@IJ|Tp455 z7Xpo*CMX9F^M`{2O+b@E?=kE1W6A<})w)-nxCqOrE2G{wSscYum~|3LFTk+cF0Zs1 z(I1uv5m+^&h5-tzJt!OX!BhX-fB6`yUcSpj;V`=@meAPVpm>hxJR5I}um8os2=Fh@NNYn)4(%v)#brDB|yII7L1U ze7pHyIYL5$SpA+R0-1Xm^zmDH`wOZPbJz1Qf+160dVj#l$CLO)B>>m6Kk@$aB=*K1 z1S;`Mn&>Z6@Jvu&Dj$UOFMj59_-|L6bPy8gyP2N}qMtTbJbc>ZCsMRsl8p0TL|V`p z9SHhv=0CDTj}aOf6eQhFjIU<=fx@PkNX+&PA*$aJ=DTHKdt~}p3-hHKEXtfcCH-F6 zMD@jyLL~#jeV}R`?w$w3gh9}PlfSt2p3Fu$OD@JiFiKLF)5dEvj)b0=Nn33?3`o1o zO;d*cP#Vgz@|kR~c7s&b4BRyG27MAmQL_!R&3D>egs)f53az1Wc5{uzEX@*(S19iC z3DMidy4?Y~^^nCv$WS5U z&Y9C00%Z!RHB3Zv8v0>3G|k;O)q86 zLyD}2`2(2!f0yImFaby@AWs5)x>o$xPUY9nLZBtz4geLdUKd)fbsUW7&a^tT<2#8D zG9I`SKM(yN^n(77>dAf@N9{;!(8x3Eqz^BK_XrqsTGffn4%L&NN^4~n7!%6ZYeL~0 zmI;Q(A*sE;YL)l0hM@`nLc`O3>QF|QH1qlBg_Y73#9{waiSUKLNr|b^QMTI*IvfeiHn#LCG+n@neqA&0o2$nwJ+*>SN;o| zemAt85Xi91z>L0s@(1A8$7sArt=TYzrw|h1h(emI-LBSo*B?WuWRU39aJ1Z41nPkSn4{hmcyT$xW`cYrMbbV3<6^Vv6HI7w z-JFaD-76TOb`LK7{&=_Jk+n1msOo$+Zhb<}s1|K5`>Ar#Q9z%TjhPomF-#HGtE^%0 z@#Mbc6nLqMjZ?z6Row)Z9ZiDBi{fa)slzWW;%~y#%ij(av!_Dq^jp<_)EaeUsc!u2 z(<9z8KE9c%5kdx2U^TALH+I@}^bGwEflq4m#KZorP0}{`%g7r1i%qO0qIG{*b_i36)BT zFf1C>FR_=r53HiazQ!LZ^7kyH<329DzCf>BTo^+2E|GX;11RWurlrrz7M&QqZQr#=)PP zh~LZ(fCEJVFo1Bz7jZV3zwRHuM?g*?C+M1M9{?Gd93ax8r8`5CuY^(?(}`8{8&PFp zN-iB|GL`bzmEO{U^$Cytz>RY4*50@@=20eALlR4B@4590({1&J$eZTFYFWu7Jt04? zTjd$A&k}bsBaW)K)7YPS-)a~lItbWH##N*R?K=5dyc4g244bb8wxVCkc@Fieh}gxW>L!8VEuRUE^}Ng|Zjk zXOxpXvF%52oRBwQ+cX#<+*VS;BihWGOJb^p4VoO)Nu622e2tX0hKJqOF%W5pDZnzw0wzrMJbNk9H&5R^ zM8gF~Z5XdLxBL6QjfN}w!vUZ`IoID8geZT|+#3UC!u@lk2EVGv3dI~;VLb^vvgo1M zMMYJVJ{$);yK>*_QFNfUVn7!_S+|tU!jurE87n3Z0jCUs_btlJ>=y^u#`NFJ-Il+{ zSG%|LR~1S3aJAGft3?Sx$Acbtaq*U~;>GBU*~fV8x}tttcw%upf45}}px6~^l>GI`k8LeEJmO_<%FX#QZ74YEop@P(Aj)B=-?b+O@)drp`F z()v%F8EyT`<4f!3B_)?oE|&!(IB@gwuG5H5zAkd~_NLLN*@(l>AW?O+$`Lwzokop_ zRg`E8SPr1LsmX<$*qGg2Vp7&avmK&@1T0y-bCV+E`r=+KO!;1YZXNksO(?;-^(Kk< z?GWzr=GfJuxZUv4YyzHQ({V?fqikTiZc3W8QtTOb#%1>b-i=~AedB047w zLX&^r;aJ{tMaW#Ijd3-9!1|mA9YIUNx%E-ap(h`gB30LXEX!SVvZJlZ^;IC|GmX@t zz>BeZw*EaJYlmb^pcit4FR%$SVN7LK;c+L{4SDDms>)Lx?yB=g`R$ zF+$wl_x?dQf?YZ2lj_+knWGX?=qXCP;J{qhTa)yTwqqK98gT&uCOsO3De@vj^BTJZ z$9`nO{Nrw=6CpJFT{nM{p&MF@DTjK zXy^Uwyuo(>0H6?r(@;SBr{BIjz!Ip(Ua1QKv&Icn6QFy(o88(ZQk@dezqP_o*>1UV zxX4UAUo!E&GAH+=AZv5fxxZ<5b;tZ67+qYjGBA-Dl{sE*fvi+aVcN;}4iUT>OZ)VE zUt3Ls5mO7SD__9%lXPK<**BM^@ODi{VS#r#2D&^{bzZK1AnAZi4X%o~O_<{~X{Fuo z$pBw%48&*H=*2U;K)wga#fcK_18OxyCzWiAb`U5 zwn~Z-HQc#iVvgn>z+Nl&DcXbQeJmmTrYj^6Udn`%mu@>6+PX*!8;&fD5{-8)xgbRJ z%cN7VIzExw6Fp7wP_TKNhjs0$f!58Q#P~FxLME%(0sVvvQX@8Fob|)4C^2?s?#bIS z9OWx5nS=l!fg(56@}S-lwBXX}Bw;|<+ipyr5A$7L+;&-CA}e(XW=hiTR{ARXVYv6c z-wDX;xH`Bc|8`OH5cygIrS}N!pspR0LNj=dIL){;mtkn>ZWQ^oDECT~v2j*EGcI+M zyR%XCo83Xj)vd5aEJ>5E5Ar9MUD;N~X~!`GF}!a6ia~Z|X232fQI9)K_9wi#d9RXW zqIQNe)LC#Eff3j{oxX@7ud=t9<6km!(?L#8_2pODx1*@SkMK_N>-LjnWrWbk79Ktq z2pS_`?38v%3z}6mhQOvFB-!Uu{sKto^`;zyn5UqAzYIg|@0sVXk$Fyp7i6wx>_0S9 zOw$_1x;aD8Fb8Gu@+sQX4HaDO(Y)^V^NpAYpTrmOj-g%UxKwl!_Q+OwQ2dzijM0=L z!vP;(M}Dd%*LkJQ)5u5tFzq>$X?dHFT3J3~=O+-%n49rUWqwun8A01VU>cLY1|aCv zk}6IReP9HVw*&yW#6{HKSH33Y&=!&}cAc=aB-$eT$p~(vDZ5YU#>;PL zylI~#m3Ky{vX}Cokmxg6%J>|V<5!5ii;V3-^pP*3?n^HF(C!~sO-ym%y~@FPaLcs# z@p#G{E(y7lG+r!Q*dC>cyS~7lx^4b=3%|^Ku2Q^?d?{u(UBvLZpaw0!TUpy7%`wWo zL>+^(ac;!Soh1*Zfw-U48*c9U2p;i5rCTj_hQJSVN0XSZC6uUOs`>z10irM&Qk>b( z1_GWPcm5io2<)vO_{1yH!RF^%Nm$caw)$EYuWD{YfwdL&cDBjtYxv*27( z+-lI7m~O-EX*Suk-VC+Bk8NqR)98*UUt0?koMy{0j)>!%A$Ye5=o!EnQ(Aj}3Tly^3+Mgk9+ zDo>#l!T7rSDPvp$xc8o|dq)0BtLQdH^ilevE- zwM-f`fj_RT6R@Vud=qF7GS8$o(K|LuFR3ZBMyig1p)!S|&#o*HIAFZA_zmSz&)D7j zmNxMdFmSgK$EEfb7b&yCZu0x3r%c0=N=F8=PXjkkwEK{0OW78t4n1Y`9-)hwnYym~ zS6LK7hDhP#co~D%Yze?JP8&SA5qfvs*tFSJKRnlLD_;Sn-Y2#$UDQ!ZcvNca9=SFq z{|AjdRxB|*y1{4;@@8K9rHmSoM}rV;By?0R4tUZ@6#g8wr7hb`?0GSION+l17IgBc ze)gqOK1egV;qa_X=PDtl>K|Wy)$g`jsagLug>nDx-1hld{YNJNR|5cm1c6+-zn#3m zo@RZbE-Pep395>_KV#xlth(Da7VDjasV=1@Kjv=*U;w8U8P0!5^iCVk4bd%34R0vV zJt*pby2QPg%dsrO2Hm4a1$SeW$sw+Y!NcywbNYnAgl8dC{!+pdksim??%L%CUU>f( z2Y;~Ay6_qL?f)o;pSbJrN++8<>2U;g7 zaO0d>sIr(;#s~~2tOl4pAuCXKE2o~=uh`^8WvX*k-=Wf`h|8%sJUaVgMp}BJg@w^o z``xNvuLV`Vg83MtLFTV>fB#72Ptkxpk^YOFKVAXVeX^tolq>(IWdhn{3t1~#x|+c$ zh3$P03%%2Gh~t$A@aQ;e@hcw&sv7$#LqPCf2%opWXrCwV{!Iv${1eqsAXE8&ZM;wd z@+GwbA0ds=smksCE);o1f&|rhG-p`@z{0HgN}Z@2Lvjj?Iey`F`gaZ>iNV!1f(rNl zS~4~6`6Qzvkn8x*qAp0jj->{zduPowa_l%6KGJ&m9{@n2OTa(MfS(hzNP1FY0L1^R z1~9Sz$vy~xbn6pY2q-t<&z1shC_S01DOnE?y1Qi2`#gH;DZu)x`@hTlhXnqTMx);+ z%;#3jUk6J5l5RO7*wfx0zLe-9KO>E?{y(7LPJg1r31p`KFKL1R&c1}_AIpG&Spggm zz2D?V+^?q}xt)a7I2;#q_-agwVEfMa7-#W^VRGoZZi^W{I~oXpuWr?!DV@0)vGlZ3 zPBDf$DzNyzAQX4(li9!625lx5px|yyZ{vsxB=!T!ErX4v4iHZGpZA}+=00ye&syd- z{a-}?BT-O8WaKl0Id{~39CmIRY7F?-TNVH^;wJ&1)_w%CVABGbYyT~HbUv5% zsQX|$z+!ze3}IIgSC?igvDXf39VHxG@n=Mj`;QNG>!MJYn+Z*`W7wPfeal_(_0rAT zj&-mgITKD;lVW!yYPNY)TjKN<5VpM#IC8$Pzpb#yAtwKEb9_J;u!s6K|&H>BWr zcn%nGbPN9tRJMUBuR-9{@AZ(@I;-=h^&@+{=3s8A;1za4g&@Tu_+?)QbX%djE`0+_W6fdSnLLi- zYkyLkeasZtJ~!JzYVGcc@!=K%TaPl|rynA;Om|}=hpMgo$7>C=pUZR1*B4H{>r;#= zEUf}}so0Zke;^EF-vW%dz34&5q_-J#eRPzP47V>zd`s!W1#SmhkO&DRuy7b*Ny

                                    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%0D(yI2|h{u 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 literal 0 HcmV?d00001 diff --git a/docs/3-web-servers/06-fetch-api/exchange-rates-app.mp4 b/docs/3-web-servers/06-fetch-api/exchange-rates-app.mp4 new file mode 100644 index 0000000000000000000000000000000000000000..4f7781c9a2835c49cd2609f682cfa0bb1398c76f GIT binary patch literal 118361 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 z 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リクエストをWebサーバーに対して送信するのでした。 1. アドレスバーにURLを入力したとき @@ -69,7 +72,7 @@ JavaScriptにおける**非同期処理**とは、ファイルの サーバー側では、`/open-status`というパスに対するリクエストを受けたとき、`営業中`という文字列をレスポンスとして返すようにしてください。ブラウザ側では、`fetch`関数を用いて`/open-status`にリクエストを発行し、レスポンスを受け取って、`カフェは現在営業中です。`と表示するようにしてください。 -ここに画像を埋め込む +![カフェの営業状況表示プログラム](./cafe-open-status-app.png) @@ -178,7 +181,7 @@ JSONでは、次のように、全てのキーをダブルクォーテーショ } ``` -ここに画像を埋め込む +![カフェの営業状況表示プログラム](./cafe-open-status-json-app.png) @@ -230,7 +233,7 @@ fetchOpenStatus(); 次のように、定期的にサーバーから現在の為替レートを取得して表示するWebアプリケーションを作成してください。ただし、為替レートは、サーバー側で乱数を用いて生成してください。 -ここに動画を埋め込む +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 literal 0 HcmV?d00001 diff --git a/docs/3-web-servers/07-fetch-api-post/chat-app.mp4 b/docs/3-web-servers/07-fetch-api-post/chat-app.mp4 new file mode 100644 index 0000000000000000000000000000000000000000..730cd41420b9b3ff0dc16ca69d8b7a8375318fc3 GIT binary patch literal 101626 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%0AZ~D6A*@M-E`27O944B0kM3Ues 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⩔SATpAvM@X;Bz^PsPDI-uzggp?ZA=y1m#qLEGL`F%mh31aH>zn+ z^;*q=1E!yp?RzBZRgiPQKilYvwm_g2qEW3Vb?Zw5tJqjnvHl>^TVy{LGk4!`>O5Up zJ{I&gOzAHRha})0lcp+-H?!Kh2)p?HN(@9hP>j3(z=|Jn7do4)#yQ5@7$7^gZk%PV zl}x{CB`1?Wzu@=C>J1`I>>OzX-XJMgEq$x!UvUQO1_u6409W&$Oz*q7C42VcasYr` zuWQK|W0~Um4>}h4J#$E+_$p@-Mi>N@zUXc4=*dWPs=hzc|EKEarvVw=`7dkxu60Br z)`yJ%AP_TB;N9a9lkkI(FpV(|5~=IU^Vx19U;2S)E`X?@k1QL1aPe<>C4o7Bh`+F@ z|H0#T!s2aQnMJ%Z2j%J$7^v--jK4J<(V40nt&&e|5}%h>$s2NaLKLrJJh2|NO4#}s z$7MoNxBU>7hqW8@oC(eH+u-7Ni$NPht;Q4;qppn^N|D-8K4|l|^^xxf^0)m9+vY#^Wf+Tpgh-!b#b@An zJGwo$e-W|U8C8(6m2~5dc9O3H68Ou@|5Va%@yMkhKZ{?tY?fcvY^zc$%6I&NWhQ~f zN92p1+Ju6FsCeaXOGY^ea`OCVCe7b9jYyq_BT3vdPhsr1AT^M`?U%Z0SuJ+tLiTs1 z`%!j6xK_RX$>MdmR!wkcCKk7ot$p2yj*Xc4FSnx2uxV(Fvnxu(bqrG*YM;82&s~L# z{;d$u0+2hn0Ol9hkwewgDzZq%u~2jG!xq(V8lm1sj;KJgUc^?#@@@LtYJLiDKo-Bg z2K@g}p$~ss*!}avB+ysimO)SiP{3d0{?in*Hti2NA)!@%Ya;R?yg4`q%*ZK@KEzdN z-UOH}U*~yXR=U{dhI+fT^nzb-?{HxS4Bfse@f(Hzkou2@3a(<$f3h+Wu43zp9o~+c zS9BiP-#+cs;@V^Sf)TIQyWS5OZs4OKAQLZAl1K^C`zyY10Z`y?C$P?cb+Mp1=Ud6@ zys=7RJi*6+sQWRXs39RM!6^kUp8C;Z{|66zeIA_CuPzb%KhW+F$SLW!m4Jp9=Mg_t z^FIg&sMdve6LPAuBxLqXm=_vG9LjFtbI;2VYqj@c%s4z%Zzq4%&nsEFUv}D!fv!B7 zuIwY7saUl4z0^dPPm3UFn-NcMTKN8DMG$gAef!yn8lgv-yb&T;dM4$Uh=AeQIVnF`CzMu_e9wITeW)p%46Y<+& zW#K|73Fy#*@jD|IAxjuY{2eomm*1HE>Vh^<$ zi`!{P%t*fHHorQEnc%_Q=gl6HqJtn2XK8UaaZ`SI#oBJ@jk(3Ab`lH|nh+w&h)c3# zi4GwOusAu4NR#2nY6@JLj~N|%YqFtA6`@cooyrBXX3Nb{66=s8cHy2}8J>91iho;w zd5l)cDwMv>nri=2BlXQKJs8AuDdZUkcX*cZE%e9 z70tlLCHAhn^U1fP>cfZaKWU_d)3Ah}mBbfM<(qn5Yr2Cvbbc(ow2YX8dec0f9y}J6 zJc}NUl?0!QTWjPAg?F?2dsnd+A5|G|vGZoH8TL!|T+Hd`TzARDry)tGFFiVWkCF(Z zza&?DtM@(oeqY;@*xPM5j1x6|+p%|;p1GZCVzN~0)#x4 zImCpOQgCc92QHilK>2U%ra!2-;}>FZeTHxXmcol>%_K09k~QiIu_rR*p#sxv$NDwuy4jFhq^Syy zTokL4TDeS`2y7!szNKjL3n=K~Se^S0oN;zjtOHKn!6f5Qg?ex43IBUVJ%rCO^@%wi zy&i7%cg2GUs}AP4TKk`5Ii`HdIwK#ttR`o~03i*of@#@5sxN=5yfpj}*~!R6UrV}} zVHH6{l~SOKoolkGnPAolm6eV!M*Z-Xb^x{v`}>!2VI($vex#?$i3SaySB?s#MNAqkiuI1%znu2hib zIWKh=AZ!k6=rRsXNUKSjTgKMn{_s{K9l4+=^)WAxw9IQ9)M@S*zaH*@r*G^xfWUNX zs@J>-g9>~%@9P}9U=C)G@=0eswL&a->g80`vih8afhA_`^Mf&6uKtM^4EOUBP*7T0 zE0%GrjO$RlPcsAvX(@U6tnXzh5v^lKiBt+Q?Wkt3J3!3oT1R8<$L>WL@jcrUP2asN z{YFzhkE@?;?NT_?cDVt0uCmkRJ<>Rf$_CtH)0H)u8n@1jjr$9?inlST#6~Z}Y;d-q zydTYl)o(E;x2ca)!Q87LPb8NKT*ySBo%gm6YZrKxzwmj`xzyHenqb?EW ztfa|iIz0e;?NtT2UGX;m;62$R?waN7?FOWUExba=1bq@IiJ?F9iP^0^<@Z?N{{u(j@E?qqV+QiY;CD4Pd)08 zPZwyHJ<3kiisIVV9LwqSxTo&5)AhgGzhyAxAs=6K7TaP$aEYgX8gD(NPi;i^%{#k$ z!O6KJrk7Xcc5lj=deCmQjFd?VphZ~mJyu?G>A^yqRND(MRzECx^F+jr*5Q;#AYvAE zw#ExRYpcb|Sp;HvfXvYN5L0fLuD9mdUQqiRdi$)qgMjgw(O9IRO33}^*Ycv}(*sFb zUewm3G>*v?gp}>5Foif4+#~EZzsVhOKw?W>({@Yh-bhpBpCnhiY>#8u0Q z;oZgc=aZ?ehSQ3MiA!duNhI~+xA&@$sM^p`hG`OQk)6bfT7_ydO`a0J=L{g9CcqGA z^w7!ZX6|xeZrOg+htucI*Y~`yQXb=B(`#qHAv)_#dy}n!5}7t_$jH3swV8&sa`OkK zz5JYcVZz&vnfYxKNc9JkimZ{S0yb7}eNw}>qzN|A>z&E2cNE~WTx94X*)Ou z;`&j0j zt&f*DmB=yhfZXQDo=iVCL4jd!{bHCjSZx+>cLtjg``q=-j%L=%n1fCR#*t)7or_(; zZoIhoj*pgz87hJyAdKD(D%pj2p&3yxhw6`cB;Cz-3{_GAeyqP z6EAC7dwBbk4b@f!-CMkt^@h;(m=mO3L@AEv1c^~EuB2sfU`FGSg=;dQNfbExBo`yH zE;Kz%U>FUrzJZaV%~`iNk=?7QkyC#sxzojMvoz9$AhbB7qlvYjIP49SJ|WAvIqBsxt1Bx8LubL>OR;|ZSHv-l z%8r6l>BpyLwP5|^%Jwdyi%rQz#4;0m8ix;1uOb>xEITR2Cod5bM_I0K={z7*=k#(n z415ABo8;fC!9jQ%9NO?uamweTf+R0vdi~&*XL%n6FIFi1ibfRy#Zytpy+9A|m}
                                    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

                                    }!s)_qeRhSN*1cvR> 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¾KtcnFE**rLkiai56BlF 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 u#VQuKUVCLFb-3+DxYQN#kUhQ%5 { 次のように、売れた杯数を入力することで、売上杯数と売上金額を計算するWebアプリケーションを作成してみましょう。 -ここに動画を埋め込む +

                                    - - - `); -}); - -app.listen(3000); diff --git a/docs/3-web-servers/06-form/_samples/book-search-system/package-lock.json b/docs/3-web-servers/06-form/_samples/book-search-system/package-lock.json deleted file mode 100644 index 860a2b28a..000000000 --- a/docs/3-web-servers/06-form/_samples/book-search-system/package-lock.json +++ /dev/null @@ -1,822 +0,0 @@ -{ - "name": "book-search-system", - "lockfileVersion": 3, - "requires": true, - "packages": { - "": { - "name": "book-search-system", - "dependencies": { - "express": "^5.1.0" - } - }, - "node_modules/accepts": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-2.0.0.tgz", - "integrity": "sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==", - "license": "MIT", - "dependencies": { - "mime-types": "^3.0.0", - "negotiator": "^1.0.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/body-parser": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-2.2.0.tgz", - "integrity": "sha512-02qvAaxv8tp7fBa/mw1ga98OGm+eCbqzJOKoRt70sLmfEEi+jyBYVTDGfCL/k06/4EMk/z01gCe7HoCH/f2LTg==", - "license": "MIT", - "dependencies": { - "bytes": "^3.1.2", - "content-type": "^1.0.5", - "debug": "^4.4.0", - "http-errors": "^2.0.0", - "iconv-lite": "^0.6.3", - "on-finished": "^2.4.1", - "qs": "^6.14.0", - "raw-body": "^3.0.0", - "type-is": "^2.0.0" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/bytes": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", - "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/call-bind-apply-helpers": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", - "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/call-bound": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", - "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.2", - "get-intrinsic": "^1.3.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/content-disposition": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-1.0.0.tgz", - "integrity": "sha512-Au9nRL8VNUut/XSzbQA38+M78dzP4D+eqg3gfJHMIHHYa3bg067xj1KxMUWj+VULbiZMowKngFFbKczUrNJ1mg==", - "license": "MIT", - "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==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/cookie": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz", - "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/cookie-signature": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.2.2.tgz", - "integrity": "sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg==", - "license": "MIT", - "engines": { - "node": ">=6.6.0" - } - }, - "node_modules/debug": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz", - "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==", - "license": "MIT", - "dependencies": { - "ms": "^2.1.3" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "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==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/dunder-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", - "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.1", - "es-errors": "^1.3.0", - "gopd": "^1.2.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "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==", - "license": "MIT" - }, - "node_modules/encodeurl": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", - "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/es-define-property": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", - "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-errors": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", - "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-object-atoms": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", - "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "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==", - "license": "MIT" - }, - "node_modules/etag": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/express": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/express/-/express-5.1.0.tgz", - "integrity": "sha512-DT9ck5YIRU+8GYzzU5kT3eHGA5iL+1Zd0EutOmTE9Dtk+Tvuzd23VBU+ec7HPNSTxXYO55gPV/hq4pSBJDjFpA==", - "license": "MIT", - "dependencies": { - "accepts": "^2.0.0", - "body-parser": "^2.2.0", - "content-disposition": "^1.0.0", - "content-type": "^1.0.5", - "cookie": "^0.7.1", - "cookie-signature": "^1.2.1", - "debug": "^4.4.0", - "encodeurl": "^2.0.0", - "escape-html": "^1.0.3", - "etag": "^1.8.1", - "finalhandler": "^2.1.0", - "fresh": "^2.0.0", - "http-errors": "^2.0.0", - "merge-descriptors": "^2.0.0", - "mime-types": "^3.0.0", - "on-finished": "^2.4.1", - "once": "^1.4.0", - "parseurl": "^1.3.3", - "proxy-addr": "^2.0.7", - "qs": "^6.14.0", - "range-parser": "^1.2.1", - "router": "^2.2.0", - "send": "^1.1.0", - "serve-static": "^2.2.0", - "statuses": "^2.0.1", - "type-is": "^2.0.1", - "vary": "^1.1.2" - }, - "engines": { - "node": ">= 18" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" - } - }, - "node_modules/finalhandler": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-2.1.0.tgz", - "integrity": "sha512-/t88Ty3d5JWQbWYgaOGCCYfXRwV1+be02WqYYlL6h0lEiUAMPM8o8qKGO01YIkOHzka2up08wvgYD0mDiI+q3Q==", - "license": "MIT", - "dependencies": { - "debug": "^4.4.0", - "encodeurl": "^2.0.0", - "escape-html": "^1.0.3", - "on-finished": "^2.4.1", - "parseurl": "^1.3.3", - "statuses": "^2.0.1" - }, - "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==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/fresh": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-2.0.0.tgz", - "integrity": "sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/function-bind": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", - "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-intrinsic": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", - "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.2", - "es-define-property": "^1.0.1", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.1.1", - "function-bind": "^1.1.2", - "get-proto": "^1.0.1", - "gopd": "^1.2.0", - "has-symbols": "^1.1.0", - "hasown": "^2.0.2", - "math-intrinsics": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", - "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", - "license": "MIT", - "dependencies": { - "dunder-proto": "^1.0.1", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/gopd": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", - "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-symbols": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", - "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/hasown": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", - "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", - "license": "MIT", - "dependencies": { - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "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==", - "license": "MIT", - "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/http-errors/node_modules/statuses": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", - "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/iconv-lite": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", - "license": "MIT", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - }, - "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==", - "license": "ISC" - }, - "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==", - "license": "MIT", - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/is-promise": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-4.0.0.tgz", - "integrity": "sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==", - "license": "MIT" - }, - "node_modules/math-intrinsics": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", - "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/media-typer": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-1.1.0.tgz", - "integrity": "sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/merge-descriptors": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-2.0.0.tgz", - "integrity": "sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g==", - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/mime-db": { - "version": "1.54.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz", - "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime-types": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.1.tgz", - "integrity": "sha512-xRc4oEhT6eaBpU1XF7AjpOFD+xQmXNB5OVKwp4tqCuBpHLS/ZbBDrc07mYTDqVMg6PfxUjjNp85O6Cd2Z/5HWA==", - "license": "MIT", - "dependencies": { - "mime-db": "^1.54.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "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==", - "license": "MIT" - }, - "node_modules/negotiator": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-1.0.0.tgz", - "integrity": "sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/object-inspect": { - "version": "1.13.4", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", - "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/on-finished": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", - "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", - "license": "MIT", - "dependencies": { - "ee-first": "1.1.1" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "license": "ISC", - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/parseurl": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/path-to-regexp": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-8.2.0.tgz", - "integrity": "sha512-TdrF7fW9Rphjq4RjrW0Kp2AW0Ahwu9sRGTkS6bvDi0SCwZlEZYmcfDbEsTz8RVk0EHIS/Vd1bv3JhG+1xZuAyQ==", - "license": "MIT", - "engines": { - "node": ">=16" - } - }, - "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==", - "license": "MIT", - "dependencies": { - "forwarded": "0.2.0", - "ipaddr.js": "1.9.1" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/qs": { - "version": "6.14.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.0.tgz", - "integrity": "sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==", - "license": "BSD-3-Clause", - "dependencies": { - "side-channel": "^1.1.0" - }, - "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==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/raw-body": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-3.0.0.tgz", - "integrity": "sha512-RmkhL8CAyCRPXCE28MMH0z2PNWQBNk2Q09ZdxM9IOOXwxwZbN+qbWaatPkdkWIKL2ZVDImrN/pK5HTRz2PcS4g==", - "license": "MIT", - "dependencies": { - "bytes": "3.1.2", - "http-errors": "2.0.0", - "iconv-lite": "0.6.3", - "unpipe": "1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/router": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/router/-/router-2.2.0.tgz", - "integrity": "sha512-nLTrUKm2UyiL7rlhapu/Zl45FwNgkZGaCpZbIHajDYgwlJCOzLSk+cIPAnsEqV955GjILJnKbdQC1nVPz+gAYQ==", - "license": "MIT", - "dependencies": { - "debug": "^4.4.0", - "depd": "^2.0.0", - "is-promise": "^4.0.0", - "parseurl": "^1.3.3", - "path-to-regexp": "^8.0.0" - }, - "engines": { - "node": ">= 18" - } - }, - "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" - } - ], - "license": "MIT" - }, - "node_modules/safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "license": "MIT" - }, - "node_modules/send": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/send/-/send-1.2.0.tgz", - "integrity": "sha512-uaW0WwXKpL9blXE2o0bRhoL2EGXIrZxQ2ZQ4mgcfoBxdFmQold+qWsD2jLrfZ0trjKL6vOw0j//eAwcALFjKSw==", - "license": "MIT", - "dependencies": { - "debug": "^4.3.5", - "encodeurl": "^2.0.0", - "escape-html": "^1.0.3", - "etag": "^1.8.1", - "fresh": "^2.0.0", - "http-errors": "^2.0.0", - "mime-types": "^3.0.1", - "ms": "^2.1.3", - "on-finished": "^2.4.1", - "range-parser": "^1.2.1", - "statuses": "^2.0.1" - }, - "engines": { - "node": ">= 18" - } - }, - "node_modules/serve-static": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-2.2.0.tgz", - "integrity": "sha512-61g9pCh0Vnh7IutZjtLGGpTA355+OPn2TyDv/6ivP2h/AdAVX9azsoxmg2/M6nZeQZNYBEwIcsne1mJd9oQItQ==", - "license": "MIT", - "dependencies": { - "encodeurl": "^2.0.0", - "escape-html": "^1.0.3", - "parseurl": "^1.3.3", - "send": "^1.2.0" - }, - "engines": { - "node": ">= 18" - } - }, - "node_modules/setprototypeof": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", - "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", - "license": "ISC" - }, - "node_modules/side-channel": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", - "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "object-inspect": "^1.13.3", - "side-channel-list": "^1.0.0", - "side-channel-map": "^1.0.1", - "side-channel-weakmap": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/side-channel-list": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", - "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "object-inspect": "^1.13.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/side-channel-map": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", - "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.5", - "object-inspect": "^1.13.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/side-channel-weakmap": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", - "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.5", - "object-inspect": "^1.13.3", - "side-channel-map": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/statuses": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz", - "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==", - "license": "MIT", - "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==", - "license": "MIT", - "engines": { - "node": ">=0.6" - } - }, - "node_modules/type-is": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-2.0.1.tgz", - "integrity": "sha512-OZs6gsjF4vMp32qrCbiVSkrFmXtG/AZhY3t0iAMrMBiAZyV9oALtXO8hsrHbMXF9x6L3grlFuwW2oAz7cav+Gw==", - "license": "MIT", - "dependencies": { - "content-type": "^1.0.5", - "media-typer": "^1.1.0", - "mime-types": "^3.0.0" - }, - "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==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "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==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "license": "ISC" - } - } -} diff --git a/docs/3-web-servers/06-form/_samples/book-search-system/package.json b/docs/3-web-servers/06-form/_samples/book-search-system/package.json deleted file mode 100644 index a0f384efe..000000000 --- a/docs/3-web-servers/06-form/_samples/book-search-system/package.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "name": "book-search-system", - "dependencies": { - "express": "^5.1.0" - } -} diff --git a/docs/3-web-servers/06-form/_samples/book-search-system/public/index.html b/docs/3-web-servers/06-form/_samples/book-search-system/public/index.html deleted file mode 100644 index 77b03caf5..000000000 --- a/docs/3-web-servers/06-form/_samples/book-search-system/public/index.html +++ /dev/null @@ -1,13 +0,0 @@ - - - - - 書籍検索システムの解答例 - - -
                                    - - -
                                    - - diff --git a/docs/3-web-servers/06-form/_samples/node-emoji-form/.gitignore b/docs/3-web-servers/06-form/_samples/node-emoji-form/.gitignore deleted file mode 100644 index 07e6e472c..000000000 --- a/docs/3-web-servers/06-form/_samples/node-emoji-form/.gitignore +++ /dev/null @@ -1 +0,0 @@ -/node_modules diff --git a/docs/3-web-servers/06-form/_samples/node-emoji-form/main.mjs b/docs/3-web-servers/06-form/_samples/node-emoji-form/main.mjs deleted file mode 100644 index 71ea05376..000000000 --- a/docs/3-web-servers/06-form/_samples/node-emoji-form/main.mjs +++ /dev/null @@ -1,13 +0,0 @@ -import express from "express"; -import { emojify } from "node-emoji"; - -const app = express(); -app.use(express.static("./public")); - -app.get("/emojify", (request, response) => { - const text = request.query.text; - const emojifiedText = emojify(text); - response.send(emojifiedText); -}); - -app.listen(3000); diff --git a/docs/3-web-servers/06-form/_samples/node-emoji-form/package-lock.json b/docs/3-web-servers/06-form/_samples/node-emoji-form/package-lock.json deleted file mode 100644 index 8356118c2..000000000 --- a/docs/3-web-servers/06-form/_samples/node-emoji-form/package-lock.json +++ /dev/null @@ -1,886 +0,0 @@ -{ - "name": "emoji-form", - "lockfileVersion": 3, - "requires": true, - "packages": { - "": { - "name": "emoji-form", - "dependencies": { - "express": "^5.1.0", - "node-emoji": "^2.2.0" - } - }, - "node_modules/@sindresorhus/is": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz", - "integrity": "sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==", - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sindresorhus/is?sponsor=1" - } - }, - "node_modules/accepts": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-2.0.0.tgz", - "integrity": "sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==", - "license": "MIT", - "dependencies": { - "mime-types": "^3.0.0", - "negotiator": "^1.0.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/body-parser": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-2.2.0.tgz", - "integrity": "sha512-02qvAaxv8tp7fBa/mw1ga98OGm+eCbqzJOKoRt70sLmfEEi+jyBYVTDGfCL/k06/4EMk/z01gCe7HoCH/f2LTg==", - "license": "MIT", - "dependencies": { - "bytes": "^3.1.2", - "content-type": "^1.0.5", - "debug": "^4.4.0", - "http-errors": "^2.0.0", - "iconv-lite": "^0.6.3", - "on-finished": "^2.4.1", - "qs": "^6.14.0", - "raw-body": "^3.0.0", - "type-is": "^2.0.0" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/bytes": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", - "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/call-bind-apply-helpers": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", - "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/call-bound": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", - "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.2", - "get-intrinsic": "^1.3.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/char-regex": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", - "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", - "license": "MIT", - "engines": { - "node": ">=10" - } - }, - "node_modules/content-disposition": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-1.0.0.tgz", - "integrity": "sha512-Au9nRL8VNUut/XSzbQA38+M78dzP4D+eqg3gfJHMIHHYa3bg067xj1KxMUWj+VULbiZMowKngFFbKczUrNJ1mg==", - "license": "MIT", - "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==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/cookie": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz", - "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/cookie-signature": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.2.2.tgz", - "integrity": "sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg==", - "license": "MIT", - "engines": { - "node": ">=6.6.0" - } - }, - "node_modules/debug": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz", - "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==", - "license": "MIT", - "dependencies": { - "ms": "^2.1.3" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "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==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/dunder-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", - "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.1", - "es-errors": "^1.3.0", - "gopd": "^1.2.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "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==", - "license": "MIT" - }, - "node_modules/emojilib": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/emojilib/-/emojilib-2.4.0.tgz", - "integrity": "sha512-5U0rVMU5Y2n2+ykNLQqMoqklN9ICBT/KsvC1Gz6vqHbz2AXXGkG+Pm5rMWk/8Vjrr/mY9985Hi8DYzn1F09Nyw==", - "license": "MIT" - }, - "node_modules/encodeurl": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", - "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/es-define-property": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", - "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-errors": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", - "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-object-atoms": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", - "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "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==", - "license": "MIT" - }, - "node_modules/etag": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/express": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/express/-/express-5.1.0.tgz", - "integrity": "sha512-DT9ck5YIRU+8GYzzU5kT3eHGA5iL+1Zd0EutOmTE9Dtk+Tvuzd23VBU+ec7HPNSTxXYO55gPV/hq4pSBJDjFpA==", - "license": "MIT", - "dependencies": { - "accepts": "^2.0.0", - "body-parser": "^2.2.0", - "content-disposition": "^1.0.0", - "content-type": "^1.0.5", - "cookie": "^0.7.1", - "cookie-signature": "^1.2.1", - "debug": "^4.4.0", - "encodeurl": "^2.0.0", - "escape-html": "^1.0.3", - "etag": "^1.8.1", - "finalhandler": "^2.1.0", - "fresh": "^2.0.0", - "http-errors": "^2.0.0", - "merge-descriptors": "^2.0.0", - "mime-types": "^3.0.0", - "on-finished": "^2.4.1", - "once": "^1.4.0", - "parseurl": "^1.3.3", - "proxy-addr": "^2.0.7", - "qs": "^6.14.0", - "range-parser": "^1.2.1", - "router": "^2.2.0", - "send": "^1.1.0", - "serve-static": "^2.2.0", - "statuses": "^2.0.1", - "type-is": "^2.0.1", - "vary": "^1.1.2" - }, - "engines": { - "node": ">= 18" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" - } - }, - "node_modules/finalhandler": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-2.1.0.tgz", - "integrity": "sha512-/t88Ty3d5JWQbWYgaOGCCYfXRwV1+be02WqYYlL6h0lEiUAMPM8o8qKGO01YIkOHzka2up08wvgYD0mDiI+q3Q==", - "license": "MIT", - "dependencies": { - "debug": "^4.4.0", - "encodeurl": "^2.0.0", - "escape-html": "^1.0.3", - "on-finished": "^2.4.1", - "parseurl": "^1.3.3", - "statuses": "^2.0.1" - }, - "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==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/fresh": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-2.0.0.tgz", - "integrity": "sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/function-bind": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", - "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-intrinsic": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", - "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.2", - "es-define-property": "^1.0.1", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.1.1", - "function-bind": "^1.1.2", - "get-proto": "^1.0.1", - "gopd": "^1.2.0", - "has-symbols": "^1.1.0", - "hasown": "^2.0.2", - "math-intrinsics": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", - "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", - "license": "MIT", - "dependencies": { - "dunder-proto": "^1.0.1", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/gopd": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", - "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-symbols": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", - "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/hasown": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", - "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", - "license": "MIT", - "dependencies": { - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "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==", - "license": "MIT", - "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/http-errors/node_modules/statuses": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", - "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/iconv-lite": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", - "license": "MIT", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - }, - "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==", - "license": "ISC" - }, - "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==", - "license": "MIT", - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/is-promise": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-4.0.0.tgz", - "integrity": "sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==", - "license": "MIT" - }, - "node_modules/math-intrinsics": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", - "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/media-typer": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-1.1.0.tgz", - "integrity": "sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/merge-descriptors": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-2.0.0.tgz", - "integrity": "sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g==", - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/mime-db": { - "version": "1.54.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz", - "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime-types": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.1.tgz", - "integrity": "sha512-xRc4oEhT6eaBpU1XF7AjpOFD+xQmXNB5OVKwp4tqCuBpHLS/ZbBDrc07mYTDqVMg6PfxUjjNp85O6Cd2Z/5HWA==", - "license": "MIT", - "dependencies": { - "mime-db": "^1.54.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "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==", - "license": "MIT" - }, - "node_modules/negotiator": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-1.0.0.tgz", - "integrity": "sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/node-emoji": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-2.2.0.tgz", - "integrity": "sha512-Z3lTE9pLaJF47NyMhd4ww1yFTAP8YhYI8SleJiHzM46Fgpm5cnNzSl9XfzFNqbaz+VlJrIj3fXQ4DeN1Rjm6cw==", - "license": "MIT", - "dependencies": { - "@sindresorhus/is": "^4.6.0", - "char-regex": "^1.0.2", - "emojilib": "^2.4.0", - "skin-tone": "^2.0.0" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/object-inspect": { - "version": "1.13.4", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", - "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/on-finished": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", - "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", - "license": "MIT", - "dependencies": { - "ee-first": "1.1.1" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "license": "ISC", - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/parseurl": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/path-to-regexp": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-8.2.0.tgz", - "integrity": "sha512-TdrF7fW9Rphjq4RjrW0Kp2AW0Ahwu9sRGTkS6bvDi0SCwZlEZYmcfDbEsTz8RVk0EHIS/Vd1bv3JhG+1xZuAyQ==", - "license": "MIT", - "engines": { - "node": ">=16" - } - }, - "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==", - "license": "MIT", - "dependencies": { - "forwarded": "0.2.0", - "ipaddr.js": "1.9.1" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/qs": { - "version": "6.14.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.0.tgz", - "integrity": "sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==", - "license": "BSD-3-Clause", - "dependencies": { - "side-channel": "^1.1.0" - }, - "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==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/raw-body": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-3.0.0.tgz", - "integrity": "sha512-RmkhL8CAyCRPXCE28MMH0z2PNWQBNk2Q09ZdxM9IOOXwxwZbN+qbWaatPkdkWIKL2ZVDImrN/pK5HTRz2PcS4g==", - "license": "MIT", - "dependencies": { - "bytes": "3.1.2", - "http-errors": "2.0.0", - "iconv-lite": "0.6.3", - "unpipe": "1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/router": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/router/-/router-2.2.0.tgz", - "integrity": "sha512-nLTrUKm2UyiL7rlhapu/Zl45FwNgkZGaCpZbIHajDYgwlJCOzLSk+cIPAnsEqV955GjILJnKbdQC1nVPz+gAYQ==", - "license": "MIT", - "dependencies": { - "debug": "^4.4.0", - "depd": "^2.0.0", - "is-promise": "^4.0.0", - "parseurl": "^1.3.3", - "path-to-regexp": "^8.0.0" - }, - "engines": { - "node": ">= 18" - } - }, - "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" - } - ], - "license": "MIT" - }, - "node_modules/safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "license": "MIT" - }, - "node_modules/send": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/send/-/send-1.2.0.tgz", - "integrity": "sha512-uaW0WwXKpL9blXE2o0bRhoL2EGXIrZxQ2ZQ4mgcfoBxdFmQold+qWsD2jLrfZ0trjKL6vOw0j//eAwcALFjKSw==", - "license": "MIT", - "dependencies": { - "debug": "^4.3.5", - "encodeurl": "^2.0.0", - "escape-html": "^1.0.3", - "etag": "^1.8.1", - "fresh": "^2.0.0", - "http-errors": "^2.0.0", - "mime-types": "^3.0.1", - "ms": "^2.1.3", - "on-finished": "^2.4.1", - "range-parser": "^1.2.1", - "statuses": "^2.0.1" - }, - "engines": { - "node": ">= 18" - } - }, - "node_modules/serve-static": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-2.2.0.tgz", - "integrity": "sha512-61g9pCh0Vnh7IutZjtLGGpTA355+OPn2TyDv/6ivP2h/AdAVX9azsoxmg2/M6nZeQZNYBEwIcsne1mJd9oQItQ==", - "license": "MIT", - "dependencies": { - "encodeurl": "^2.0.0", - "escape-html": "^1.0.3", - "parseurl": "^1.3.3", - "send": "^1.2.0" - }, - "engines": { - "node": ">= 18" - } - }, - "node_modules/setprototypeof": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", - "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", - "license": "ISC" - }, - "node_modules/side-channel": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", - "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "object-inspect": "^1.13.3", - "side-channel-list": "^1.0.0", - "side-channel-map": "^1.0.1", - "side-channel-weakmap": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/side-channel-list": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", - "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "object-inspect": "^1.13.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/side-channel-map": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", - "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.5", - "object-inspect": "^1.13.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/side-channel-weakmap": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", - "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.5", - "object-inspect": "^1.13.3", - "side-channel-map": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/skin-tone": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/skin-tone/-/skin-tone-2.0.0.tgz", - "integrity": "sha512-kUMbT1oBJCpgrnKoSr0o6wPtvRWT9W9UKvGLwfJYO2WuahZRHOpEyL1ckyMGgMWh0UdpmaoFqKKD29WTomNEGA==", - "license": "MIT", - "dependencies": { - "unicode-emoji-modifier-base": "^1.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/statuses": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz", - "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==", - "license": "MIT", - "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==", - "license": "MIT", - "engines": { - "node": ">=0.6" - } - }, - "node_modules/type-is": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-2.0.1.tgz", - "integrity": "sha512-OZs6gsjF4vMp32qrCbiVSkrFmXtG/AZhY3t0iAMrMBiAZyV9oALtXO8hsrHbMXF9x6L3grlFuwW2oAz7cav+Gw==", - "license": "MIT", - "dependencies": { - "content-type": "^1.0.5", - "media-typer": "^1.1.0", - "mime-types": "^3.0.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/unicode-emoji-modifier-base": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unicode-emoji-modifier-base/-/unicode-emoji-modifier-base-1.0.0.tgz", - "integrity": "sha512-yLSH4py7oFH3oG/9K+XWrz1pSi3dfUrWEnInbxMfArOfc1+33BlGPQtLsOYwvdMy11AwUBetYuaRxSPqgkq+8g==", - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/unpipe": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "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==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "license": "ISC" - } - } -} diff --git a/docs/3-web-servers/06-form/_samples/node-emoji-form/package.json b/docs/3-web-servers/06-form/_samples/node-emoji-form/package.json deleted file mode 100644 index 13c3402cf..000000000 --- a/docs/3-web-servers/06-form/_samples/node-emoji-form/package.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "name": "emoji-form", - "dependencies": { - "express": "^5.1.0", - "node-emoji": "^2.2.0" - } -} diff --git a/docs/3-web-servers/06-form/_samples/node-emoji-form/public/index.html b/docs/3-web-servers/06-form/_samples/node-emoji-form/public/index.html deleted file mode 100644 index 929aa89b5..000000000 --- a/docs/3-web-servers/06-form/_samples/node-emoji-form/public/index.html +++ /dev/null @@ -1,13 +0,0 @@ - - - - - node-emoji (フォーム) の解答例 - - -
                                    - - -
                                    - - diff --git a/docs/3-web-servers/06-form/_samples/query-parameter/.gitignore b/docs/3-web-servers/06-form/_samples/query-parameter/.gitignore deleted file mode 100644 index 07e6e472c..000000000 --- a/docs/3-web-servers/06-form/_samples/query-parameter/.gitignore +++ /dev/null @@ -1 +0,0 @@ -/node_modules diff --git a/docs/3-web-servers/06-form/_samples/query-parameter/main.mjs b/docs/3-web-servers/06-form/_samples/query-parameter/main.mjs deleted file mode 100644 index 79d94fc98..000000000 --- a/docs/3-web-servers/06-form/_samples/query-parameter/main.mjs +++ /dev/null @@ -1,7 +0,0 @@ -import express from "express"; - -const app = express(); -app.get("/", (request, response) => { - response.send(JSON.stringify(request.query)); -}); -app.listen(3000); diff --git a/docs/3-web-servers/06-form/_samples/query-parameter/package-lock.json b/docs/3-web-servers/06-form/_samples/query-parameter/package-lock.json deleted file mode 100644 index af0d3a5b8..000000000 --- a/docs/3-web-servers/06-form/_samples/query-parameter/package-lock.json +++ /dev/null @@ -1,822 +0,0 @@ -{ - "name": "query-parameter", - "lockfileVersion": 3, - "requires": true, - "packages": { - "": { - "name": "query-parameter", - "dependencies": { - "express": "^5.1.0" - } - }, - "node_modules/accepts": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-2.0.0.tgz", - "integrity": "sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==", - "license": "MIT", - "dependencies": { - "mime-types": "^3.0.0", - "negotiator": "^1.0.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/body-parser": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-2.2.0.tgz", - "integrity": "sha512-02qvAaxv8tp7fBa/mw1ga98OGm+eCbqzJOKoRt70sLmfEEi+jyBYVTDGfCL/k06/4EMk/z01gCe7HoCH/f2LTg==", - "license": "MIT", - "dependencies": { - "bytes": "^3.1.2", - "content-type": "^1.0.5", - "debug": "^4.4.0", - "http-errors": "^2.0.0", - "iconv-lite": "^0.6.3", - "on-finished": "^2.4.1", - "qs": "^6.14.0", - "raw-body": "^3.0.0", - "type-is": "^2.0.0" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/bytes": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", - "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/call-bind-apply-helpers": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", - "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/call-bound": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", - "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.2", - "get-intrinsic": "^1.3.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/content-disposition": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-1.0.0.tgz", - "integrity": "sha512-Au9nRL8VNUut/XSzbQA38+M78dzP4D+eqg3gfJHMIHHYa3bg067xj1KxMUWj+VULbiZMowKngFFbKczUrNJ1mg==", - "license": "MIT", - "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==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/cookie": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz", - "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/cookie-signature": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.2.2.tgz", - "integrity": "sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg==", - "license": "MIT", - "engines": { - "node": ">=6.6.0" - } - }, - "node_modules/debug": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz", - "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==", - "license": "MIT", - "dependencies": { - "ms": "^2.1.3" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "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==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/dunder-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", - "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.1", - "es-errors": "^1.3.0", - "gopd": "^1.2.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "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==", - "license": "MIT" - }, - "node_modules/encodeurl": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", - "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/es-define-property": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", - "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-errors": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", - "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-object-atoms": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", - "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "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==", - "license": "MIT" - }, - "node_modules/etag": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/express": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/express/-/express-5.1.0.tgz", - "integrity": "sha512-DT9ck5YIRU+8GYzzU5kT3eHGA5iL+1Zd0EutOmTE9Dtk+Tvuzd23VBU+ec7HPNSTxXYO55gPV/hq4pSBJDjFpA==", - "license": "MIT", - "dependencies": { - "accepts": "^2.0.0", - "body-parser": "^2.2.0", - "content-disposition": "^1.0.0", - "content-type": "^1.0.5", - "cookie": "^0.7.1", - "cookie-signature": "^1.2.1", - "debug": "^4.4.0", - "encodeurl": "^2.0.0", - "escape-html": "^1.0.3", - "etag": "^1.8.1", - "finalhandler": "^2.1.0", - "fresh": "^2.0.0", - "http-errors": "^2.0.0", - "merge-descriptors": "^2.0.0", - "mime-types": "^3.0.0", - "on-finished": "^2.4.1", - "once": "^1.4.0", - "parseurl": "^1.3.3", - "proxy-addr": "^2.0.7", - "qs": "^6.14.0", - "range-parser": "^1.2.1", - "router": "^2.2.0", - "send": "^1.1.0", - "serve-static": "^2.2.0", - "statuses": "^2.0.1", - "type-is": "^2.0.1", - "vary": "^1.1.2" - }, - "engines": { - "node": ">= 18" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" - } - }, - "node_modules/finalhandler": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-2.1.0.tgz", - "integrity": "sha512-/t88Ty3d5JWQbWYgaOGCCYfXRwV1+be02WqYYlL6h0lEiUAMPM8o8qKGO01YIkOHzka2up08wvgYD0mDiI+q3Q==", - "license": "MIT", - "dependencies": { - "debug": "^4.4.0", - "encodeurl": "^2.0.0", - "escape-html": "^1.0.3", - "on-finished": "^2.4.1", - "parseurl": "^1.3.3", - "statuses": "^2.0.1" - }, - "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==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/fresh": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-2.0.0.tgz", - "integrity": "sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/function-bind": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", - "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-intrinsic": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", - "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.2", - "es-define-property": "^1.0.1", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.1.1", - "function-bind": "^1.1.2", - "get-proto": "^1.0.1", - "gopd": "^1.2.0", - "has-symbols": "^1.1.0", - "hasown": "^2.0.2", - "math-intrinsics": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", - "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", - "license": "MIT", - "dependencies": { - "dunder-proto": "^1.0.1", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/gopd": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", - "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-symbols": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", - "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/hasown": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", - "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", - "license": "MIT", - "dependencies": { - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "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==", - "license": "MIT", - "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/http-errors/node_modules/statuses": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", - "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/iconv-lite": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", - "license": "MIT", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - }, - "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==", - "license": "ISC" - }, - "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==", - "license": "MIT", - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/is-promise": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-4.0.0.tgz", - "integrity": "sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==", - "license": "MIT" - }, - "node_modules/math-intrinsics": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", - "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/media-typer": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-1.1.0.tgz", - "integrity": "sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/merge-descriptors": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-2.0.0.tgz", - "integrity": "sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g==", - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/mime-db": { - "version": "1.54.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz", - "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime-types": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.1.tgz", - "integrity": "sha512-xRc4oEhT6eaBpU1XF7AjpOFD+xQmXNB5OVKwp4tqCuBpHLS/ZbBDrc07mYTDqVMg6PfxUjjNp85O6Cd2Z/5HWA==", - "license": "MIT", - "dependencies": { - "mime-db": "^1.54.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "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==", - "license": "MIT" - }, - "node_modules/negotiator": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-1.0.0.tgz", - "integrity": "sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/object-inspect": { - "version": "1.13.4", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", - "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/on-finished": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", - "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", - "license": "MIT", - "dependencies": { - "ee-first": "1.1.1" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "license": "ISC", - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/parseurl": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/path-to-regexp": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-8.2.0.tgz", - "integrity": "sha512-TdrF7fW9Rphjq4RjrW0Kp2AW0Ahwu9sRGTkS6bvDi0SCwZlEZYmcfDbEsTz8RVk0EHIS/Vd1bv3JhG+1xZuAyQ==", - "license": "MIT", - "engines": { - "node": ">=16" - } - }, - "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==", - "license": "MIT", - "dependencies": { - "forwarded": "0.2.0", - "ipaddr.js": "1.9.1" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/qs": { - "version": "6.14.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.0.tgz", - "integrity": "sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==", - "license": "BSD-3-Clause", - "dependencies": { - "side-channel": "^1.1.0" - }, - "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==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/raw-body": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-3.0.0.tgz", - "integrity": "sha512-RmkhL8CAyCRPXCE28MMH0z2PNWQBNk2Q09ZdxM9IOOXwxwZbN+qbWaatPkdkWIKL2ZVDImrN/pK5HTRz2PcS4g==", - "license": "MIT", - "dependencies": { - "bytes": "3.1.2", - "http-errors": "2.0.0", - "iconv-lite": "0.6.3", - "unpipe": "1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/router": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/router/-/router-2.2.0.tgz", - "integrity": "sha512-nLTrUKm2UyiL7rlhapu/Zl45FwNgkZGaCpZbIHajDYgwlJCOzLSk+cIPAnsEqV955GjILJnKbdQC1nVPz+gAYQ==", - "license": "MIT", - "dependencies": { - "debug": "^4.4.0", - "depd": "^2.0.0", - "is-promise": "^4.0.0", - "parseurl": "^1.3.3", - "path-to-regexp": "^8.0.0" - }, - "engines": { - "node": ">= 18" - } - }, - "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" - } - ], - "license": "MIT" - }, - "node_modules/safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "license": "MIT" - }, - "node_modules/send": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/send/-/send-1.2.0.tgz", - "integrity": "sha512-uaW0WwXKpL9blXE2o0bRhoL2EGXIrZxQ2ZQ4mgcfoBxdFmQold+qWsD2jLrfZ0trjKL6vOw0j//eAwcALFjKSw==", - "license": "MIT", - "dependencies": { - "debug": "^4.3.5", - "encodeurl": "^2.0.0", - "escape-html": "^1.0.3", - "etag": "^1.8.1", - "fresh": "^2.0.0", - "http-errors": "^2.0.0", - "mime-types": "^3.0.1", - "ms": "^2.1.3", - "on-finished": "^2.4.1", - "range-parser": "^1.2.1", - "statuses": "^2.0.1" - }, - "engines": { - "node": ">= 18" - } - }, - "node_modules/serve-static": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-2.2.0.tgz", - "integrity": "sha512-61g9pCh0Vnh7IutZjtLGGpTA355+OPn2TyDv/6ivP2h/AdAVX9azsoxmg2/M6nZeQZNYBEwIcsne1mJd9oQItQ==", - "license": "MIT", - "dependencies": { - "encodeurl": "^2.0.0", - "escape-html": "^1.0.3", - "parseurl": "^1.3.3", - "send": "^1.2.0" - }, - "engines": { - "node": ">= 18" - } - }, - "node_modules/setprototypeof": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", - "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", - "license": "ISC" - }, - "node_modules/side-channel": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", - "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "object-inspect": "^1.13.3", - "side-channel-list": "^1.0.0", - "side-channel-map": "^1.0.1", - "side-channel-weakmap": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/side-channel-list": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", - "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "object-inspect": "^1.13.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/side-channel-map": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", - "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.5", - "object-inspect": "^1.13.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/side-channel-weakmap": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", - "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.5", - "object-inspect": "^1.13.3", - "side-channel-map": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/statuses": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz", - "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==", - "license": "MIT", - "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==", - "license": "MIT", - "engines": { - "node": ">=0.6" - } - }, - "node_modules/type-is": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-2.0.1.tgz", - "integrity": "sha512-OZs6gsjF4vMp32qrCbiVSkrFmXtG/AZhY3t0iAMrMBiAZyV9oALtXO8hsrHbMXF9x6L3grlFuwW2oAz7cav+Gw==", - "license": "MIT", - "dependencies": { - "content-type": "^1.0.5", - "media-typer": "^1.1.0", - "mime-types": "^3.0.0" - }, - "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==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "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==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "license": "ISC" - } - } -} diff --git a/docs/3-web-servers/06-form/_samples/query-parameter/package.json b/docs/3-web-servers/06-form/_samples/query-parameter/package.json deleted file mode 100644 index 4bd27eb0d..000000000 --- a/docs/3-web-servers/06-form/_samples/query-parameter/package.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "name": "query-parameter", - "dependencies": { - "express": "^5.1.0" - } -} diff --git a/docs/3-web-servers/06-form/_samples/send-data-to-server/.gitignore b/docs/3-web-servers/06-form/_samples/send-data-to-server/.gitignore deleted file mode 100644 index 07e6e472c..000000000 --- a/docs/3-web-servers/06-form/_samples/send-data-to-server/.gitignore +++ /dev/null @@ -1 +0,0 @@ -/node_modules diff --git a/docs/3-web-servers/06-form/_samples/send-data-to-server/main.mjs b/docs/3-web-servers/06-form/_samples/send-data-to-server/main.mjs deleted file mode 100644 index c34b002ce..000000000 --- a/docs/3-web-servers/06-form/_samples/send-data-to-server/main.mjs +++ /dev/null @@ -1,10 +0,0 @@ -import express from "express"; - -const app = express(); -app.use(express.static("./public")); -app.get("/send", (request, response) => { - response.send( - `あなたの名前は${request.query.name}で、${request.query.age}歳ですね。`, - ); -}); -app.listen(3000); diff --git a/docs/3-web-servers/06-form/_samples/send-data-to-server/package-lock.json b/docs/3-web-servers/06-form/_samples/send-data-to-server/package-lock.json deleted file mode 100644 index ed1321c67..000000000 --- a/docs/3-web-servers/06-form/_samples/send-data-to-server/package-lock.json +++ /dev/null @@ -1,822 +0,0 @@ -{ - "name": "send-data-to-server", - "lockfileVersion": 3, - "requires": true, - "packages": { - "": { - "name": "send-data-to-server", - "dependencies": { - "express": "^5.1.0" - } - }, - "node_modules/accepts": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-2.0.0.tgz", - "integrity": "sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==", - "license": "MIT", - "dependencies": { - "mime-types": "^3.0.0", - "negotiator": "^1.0.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/body-parser": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-2.2.0.tgz", - "integrity": "sha512-02qvAaxv8tp7fBa/mw1ga98OGm+eCbqzJOKoRt70sLmfEEi+jyBYVTDGfCL/k06/4EMk/z01gCe7HoCH/f2LTg==", - "license": "MIT", - "dependencies": { - "bytes": "^3.1.2", - "content-type": "^1.0.5", - "debug": "^4.4.0", - "http-errors": "^2.0.0", - "iconv-lite": "^0.6.3", - "on-finished": "^2.4.1", - "qs": "^6.14.0", - "raw-body": "^3.0.0", - "type-is": "^2.0.0" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/bytes": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", - "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/call-bind-apply-helpers": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", - "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/call-bound": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", - "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.2", - "get-intrinsic": "^1.3.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/content-disposition": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-1.0.0.tgz", - "integrity": "sha512-Au9nRL8VNUut/XSzbQA38+M78dzP4D+eqg3gfJHMIHHYa3bg067xj1KxMUWj+VULbiZMowKngFFbKczUrNJ1mg==", - "license": "MIT", - "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==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/cookie": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz", - "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/cookie-signature": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.2.2.tgz", - "integrity": "sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg==", - "license": "MIT", - "engines": { - "node": ">=6.6.0" - } - }, - "node_modules/debug": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz", - "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==", - "license": "MIT", - "dependencies": { - "ms": "^2.1.3" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "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==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/dunder-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", - "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.1", - "es-errors": "^1.3.0", - "gopd": "^1.2.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "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==", - "license": "MIT" - }, - "node_modules/encodeurl": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", - "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/es-define-property": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", - "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-errors": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", - "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-object-atoms": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", - "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "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==", - "license": "MIT" - }, - "node_modules/etag": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/express": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/express/-/express-5.1.0.tgz", - "integrity": "sha512-DT9ck5YIRU+8GYzzU5kT3eHGA5iL+1Zd0EutOmTE9Dtk+Tvuzd23VBU+ec7HPNSTxXYO55gPV/hq4pSBJDjFpA==", - "license": "MIT", - "dependencies": { - "accepts": "^2.0.0", - "body-parser": "^2.2.0", - "content-disposition": "^1.0.0", - "content-type": "^1.0.5", - "cookie": "^0.7.1", - "cookie-signature": "^1.2.1", - "debug": "^4.4.0", - "encodeurl": "^2.0.0", - "escape-html": "^1.0.3", - "etag": "^1.8.1", - "finalhandler": "^2.1.0", - "fresh": "^2.0.0", - "http-errors": "^2.0.0", - "merge-descriptors": "^2.0.0", - "mime-types": "^3.0.0", - "on-finished": "^2.4.1", - "once": "^1.4.0", - "parseurl": "^1.3.3", - "proxy-addr": "^2.0.7", - "qs": "^6.14.0", - "range-parser": "^1.2.1", - "router": "^2.2.0", - "send": "^1.1.0", - "serve-static": "^2.2.0", - "statuses": "^2.0.1", - "type-is": "^2.0.1", - "vary": "^1.1.2" - }, - "engines": { - "node": ">= 18" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" - } - }, - "node_modules/finalhandler": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-2.1.0.tgz", - "integrity": "sha512-/t88Ty3d5JWQbWYgaOGCCYfXRwV1+be02WqYYlL6h0lEiUAMPM8o8qKGO01YIkOHzka2up08wvgYD0mDiI+q3Q==", - "license": "MIT", - "dependencies": { - "debug": "^4.4.0", - "encodeurl": "^2.0.0", - "escape-html": "^1.0.3", - "on-finished": "^2.4.1", - "parseurl": "^1.3.3", - "statuses": "^2.0.1" - }, - "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==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/fresh": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-2.0.0.tgz", - "integrity": "sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/function-bind": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", - "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-intrinsic": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", - "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.2", - "es-define-property": "^1.0.1", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.1.1", - "function-bind": "^1.1.2", - "get-proto": "^1.0.1", - "gopd": "^1.2.0", - "has-symbols": "^1.1.0", - "hasown": "^2.0.2", - "math-intrinsics": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", - "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", - "license": "MIT", - "dependencies": { - "dunder-proto": "^1.0.1", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/gopd": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", - "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-symbols": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", - "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/hasown": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", - "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", - "license": "MIT", - "dependencies": { - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "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==", - "license": "MIT", - "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/http-errors/node_modules/statuses": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", - "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/iconv-lite": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", - "license": "MIT", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - }, - "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==", - "license": "ISC" - }, - "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==", - "license": "MIT", - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/is-promise": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-4.0.0.tgz", - "integrity": "sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==", - "license": "MIT" - }, - "node_modules/math-intrinsics": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", - "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/media-typer": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-1.1.0.tgz", - "integrity": "sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/merge-descriptors": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-2.0.0.tgz", - "integrity": "sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g==", - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/mime-db": { - "version": "1.54.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz", - "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime-types": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.1.tgz", - "integrity": "sha512-xRc4oEhT6eaBpU1XF7AjpOFD+xQmXNB5OVKwp4tqCuBpHLS/ZbBDrc07mYTDqVMg6PfxUjjNp85O6Cd2Z/5HWA==", - "license": "MIT", - "dependencies": { - "mime-db": "^1.54.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "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==", - "license": "MIT" - }, - "node_modules/negotiator": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-1.0.0.tgz", - "integrity": "sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/object-inspect": { - "version": "1.13.4", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", - "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/on-finished": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", - "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", - "license": "MIT", - "dependencies": { - "ee-first": "1.1.1" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "license": "ISC", - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/parseurl": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/path-to-regexp": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-8.2.0.tgz", - "integrity": "sha512-TdrF7fW9Rphjq4RjrW0Kp2AW0Ahwu9sRGTkS6bvDi0SCwZlEZYmcfDbEsTz8RVk0EHIS/Vd1bv3JhG+1xZuAyQ==", - "license": "MIT", - "engines": { - "node": ">=16" - } - }, - "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==", - "license": "MIT", - "dependencies": { - "forwarded": "0.2.0", - "ipaddr.js": "1.9.1" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/qs": { - "version": "6.14.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.0.tgz", - "integrity": "sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==", - "license": "BSD-3-Clause", - "dependencies": { - "side-channel": "^1.1.0" - }, - "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==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/raw-body": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-3.0.0.tgz", - "integrity": "sha512-RmkhL8CAyCRPXCE28MMH0z2PNWQBNk2Q09ZdxM9IOOXwxwZbN+qbWaatPkdkWIKL2ZVDImrN/pK5HTRz2PcS4g==", - "license": "MIT", - "dependencies": { - "bytes": "3.1.2", - "http-errors": "2.0.0", - "iconv-lite": "0.6.3", - "unpipe": "1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/router": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/router/-/router-2.2.0.tgz", - "integrity": "sha512-nLTrUKm2UyiL7rlhapu/Zl45FwNgkZGaCpZbIHajDYgwlJCOzLSk+cIPAnsEqV955GjILJnKbdQC1nVPz+gAYQ==", - "license": "MIT", - "dependencies": { - "debug": "^4.4.0", - "depd": "^2.0.0", - "is-promise": "^4.0.0", - "parseurl": "^1.3.3", - "path-to-regexp": "^8.0.0" - }, - "engines": { - "node": ">= 18" - } - }, - "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" - } - ], - "license": "MIT" - }, - "node_modules/safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "license": "MIT" - }, - "node_modules/send": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/send/-/send-1.2.0.tgz", - "integrity": "sha512-uaW0WwXKpL9blXE2o0bRhoL2EGXIrZxQ2ZQ4mgcfoBxdFmQold+qWsD2jLrfZ0trjKL6vOw0j//eAwcALFjKSw==", - "license": "MIT", - "dependencies": { - "debug": "^4.3.5", - "encodeurl": "^2.0.0", - "escape-html": "^1.0.3", - "etag": "^1.8.1", - "fresh": "^2.0.0", - "http-errors": "^2.0.0", - "mime-types": "^3.0.1", - "ms": "^2.1.3", - "on-finished": "^2.4.1", - "range-parser": "^1.2.1", - "statuses": "^2.0.1" - }, - "engines": { - "node": ">= 18" - } - }, - "node_modules/serve-static": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-2.2.0.tgz", - "integrity": "sha512-61g9pCh0Vnh7IutZjtLGGpTA355+OPn2TyDv/6ivP2h/AdAVX9azsoxmg2/M6nZeQZNYBEwIcsne1mJd9oQItQ==", - "license": "MIT", - "dependencies": { - "encodeurl": "^2.0.0", - "escape-html": "^1.0.3", - "parseurl": "^1.3.3", - "send": "^1.2.0" - }, - "engines": { - "node": ">= 18" - } - }, - "node_modules/setprototypeof": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", - "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", - "license": "ISC" - }, - "node_modules/side-channel": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", - "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "object-inspect": "^1.13.3", - "side-channel-list": "^1.0.0", - "side-channel-map": "^1.0.1", - "side-channel-weakmap": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/side-channel-list": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", - "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "object-inspect": "^1.13.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/side-channel-map": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", - "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.5", - "object-inspect": "^1.13.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/side-channel-weakmap": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", - "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.5", - "object-inspect": "^1.13.3", - "side-channel-map": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/statuses": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz", - "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==", - "license": "MIT", - "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==", - "license": "MIT", - "engines": { - "node": ">=0.6" - } - }, - "node_modules/type-is": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-2.0.1.tgz", - "integrity": "sha512-OZs6gsjF4vMp32qrCbiVSkrFmXtG/AZhY3t0iAMrMBiAZyV9oALtXO8hsrHbMXF9x6L3grlFuwW2oAz7cav+Gw==", - "license": "MIT", - "dependencies": { - "content-type": "^1.0.5", - "media-typer": "^1.1.0", - "mime-types": "^3.0.0" - }, - "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==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "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==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "license": "ISC" - } - } -} diff --git a/docs/3-web-servers/06-form/_samples/send-data-to-server/package.json b/docs/3-web-servers/06-form/_samples/send-data-to-server/package.json deleted file mode 100644 index 1f3a6a1c9..000000000 --- a/docs/3-web-servers/06-form/_samples/send-data-to-server/package.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "name": "send-data-to-server", - "dependencies": { - "express": "^5.1.0" - } -} diff --git a/docs/3-web-servers/06-form/_samples/send-data-to-server/public/index.html b/docs/3-web-servers/06-form/_samples/send-data-to-server/public/index.html deleted file mode 100644 index 835f96574..000000000 --- a/docs/3-web-servers/06-form/_samples/send-data-to-server/public/index.html +++ /dev/null @@ -1,14 +0,0 @@ - - - - - フォーム - - -
                                    - - - -
                                    - - diff --git a/docs/3-web-servers/06-form/form-example-1.png b/docs/3-web-servers/06-form/form-example-1.png deleted file mode 100644 index 13e2c6a4e22e8aee385988bafbb35a26d0612988..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 49388 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 diff --git a/docs/3-web-servers/06-form/form-example-2.png b/docs/3-web-servers/06-form/form-example-2.png deleted file mode 100644 index 7263b4cda5debdf33d65a9579e4c6c5708eaa585..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 47833 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
                                    TqW$W~xUzOL(f! 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 QE#OB(MOV2@(LVbB0U8a8Y5)KL diff --git a/docs/3-web-servers/06-form/form-example-3.png b/docs/3-web-servers/06-form/form-example-3.png deleted file mode 100644 index 36d23979b61b63787751da155bdaf13b49666c4f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 51356 zcmeFZWmH_-)-769fglMG+#x}NdvF3IxD(vn-6dENlHhK^U4pwy0YQShYjAhBx3a%` zZhLp1bF%Nx_v5v;8qkWWwdNdijxqb_qmK%dmlZ=nCO`&(KqwO8!U`Y|0u=bW4)H1Q z6GDF+0Q>?wDu}%Yl?)PXgFr7q62kA4+;sL*kdhVGn=gH4Oi1zYYV;$)Mp$sz!thx3 zg&J5nxF3X%B)x2{J5@YvHH&i=Csj4AJq|mY7d3aof-Z`&JJ%b)71T++nR`7PFy{VL zBUbgrp+^cTM+XO1?w=G1{r!j6Z(=1 z^tN{(YIHs#6=(Z%s*$bq!0jj^Lg5Mu3WmqW;gSYKk&;87{a}d%Aw~S*5{$##8ilCE zww~xlwsv-QQZq0NoKUVDi9_KUczuQZQQLOUzmogn!_O}aAr7X&0k8kz>c`wVfvByO z@(JfYC*_~#!=I!8CgF=pHat8G-Py4a0rd$XQ`#XgJZ+@>!|Z;4MpiVv4_VLptaR^| z&UkA$BgM*{OAC1YKwR(w%54T!Fa&iaLpQw_MDSUm7AH_#Q zA^`!cg-=oDacMKX?}EJioYhqIxBdQb4PzrZNq~z&ACxa2vB93B5>(D#*jI^u+X?Ke z-RL5Ms3!p)cr(19x56#*$F&1vm{IvMGC?VCrZ!J$&|%Wxg~7@%{?Q;LqY&6&3h#;? zS35ea;4TMla2lhG{2%VM6$9503X1c3)7RI>yG~|53`}An9Qu1S44kEASw1w-#-(}~ zK5+X#?gKJ7YA9w#XTxtBM7)9&fZ~!=*V+)5pZl6}{>d)D+lPN5IjMu`Jsx|7k{~?T z=rG64!A>-vE1?eK_y^(HdDkVc=~~+~GOO|X0N!i&_LbjL{RRso<^|^Y9Ro%#7N*3X zrS^w?^*{e=VDzm*TCS*I?N4NXMn;4|Lq?_JvCpogqVn27O;}s`Ay*PqNai}4E#bE8 zi*R(*fwnql+p3&-qSTfY9i7#*aqPBy{_%J$?E$ON^)MGs_9M3YOC%>-$o30Zp-ORk zxX+!T)qGvKN5}e}#2@#$c=|I;@n8_n^=&`fPSR_dX-HnyG*f7kJ?Mib9xs*Y7m^vxqGG6*v}VMXzzeMD2ZxF@I9WO}pCS zO4oJG->theZ*%~qFA@PKe+h1X_2(c`6%4(qTx|BBYmw2NEYS|eq>`lu$EB3hYt}rk zG#wK4^72aRI2_4B(DA-D78fiUmlKl+26^w5cQf0}*SUncj^)bK-CxW_Taar*)Vj#2 zviF`8h3`0X5nTamcwG8;Q#xIy|0F0V=xA67jRr$4EE*U;F1p?``SMkJ>BiI8wImkj z?2^((9awK6v^KZDLnt>)&N*k{a+gW&k|Z^g5&hxb%r5= zJ*J+~*<&kh6AlzKm)4eum+gz2+=#=_UhDdmqUuBg-sOkEH+iuc zwV5VR%f`jhukrVhjqgSZ`NF(HTbq3#fC&&&7t(%N&ge9C3&vpAreDZoYaz*Ae|p9! ze=%%rWfkJS=GuCz-2}J*QVo%M3Zzc^%8mKYmWg{&cl9ecHl!Z&wR8Y?rt|LP%8<`P zWt6pQrlFyAcOs=CE78}U1yvn)%3Qd?n7i1v92pQPw*#C(Lk{1~R+igZq*$5brmW&F ztM%-g=XlI7cgdi07%`L-weO{&8a9W!vk#%Ol2)&xOBYO*h^cd<(;`Sz0H1Vy8~xe+SU=d%NIgUg@N|ybunWa zi)MSx#~cN_oOeVM#;7$Vb;N%QZxAo)33O`07bFg7wl9{ z#2TLERQQa=Ipw`pkIC)A-g{F_j9o`dVd%F?Siqg;bgJCcc;Wd*a>9CJ!B*b%?%wTu zvOGdc`~Dx)cll&a-zz>V->Cn)CZAZlY#98!3q%1_t7 zc!Uv*3~v{;`3&vPK&yuqV)CU#W60{hC^6fF`6CiNlZ29E!x+D%yF4g~i?=@;YEzi7 znd*VMJ5{PmmZ69VCc>!GkRZVLI-!q56w{hRV2&e8SR_?AZxUprY_zjpo@={)rJ&6C z3`u+G>4(PPuZw}a*slmuAUqCykw)v)-zSQ17j|;2%3LgyEU82#=Y(}_7aUbMW$zbz zTp8LkZ4aLxd?@r85F8FtMS13t<859j7^WemJWVJu@zV11RI~Cyx0UWy6R7{$diiAD zgi5E2nxwz6OX1l>X}$MAh=OyHTOq!x`q3K|?>t0*N7?0lbAk3#>o-^e5I15AWI0jU zdy+kYIJ1+@$*@ogJKFWqvzQPN3AaNwS-v4Q`V^YLon4Z{$EgzS-mcTXQ0E^|Qv@<# zKO0qaSi3Zx@A{^6uWn8&fQkiaapdN{ihn)81JgejJ}MAdpi+Z7nyt2s&2NiA)N9sz z?wlW+(Pi+aOH#^Xg<2yEQ7<$(=5?k5J>i}}p>^fJS*QI4DDIoOjE0_9jH4BpC??Z3 zz7qqsp@VjKPS{5M<0b8h+A?0Ap$+zw`~`Ygh+P<8mpqh^_03M-@&**o5IGH{p(bm+ z_#LvtKFe1_HjIr#JLiG#c-Z$vyfTmLKhf-sJA8imNa5=J3j6ZyQhrYwa(oF|{B)D~ zuE(CFt4)aA%)Hw_O$Bl|SBncl~^GYQdd`pSK9jUF$pr=?}YhtQZM)I zH#u>*`}E}l{sPuVGy-Rr=#UIwR(q~iYCQe>9#gM1WfIn>|I4rl3=_QTp2A? z*YjA!6Nn`=!JsgFZTz?xOBVYXh|-=}XiR8gE~5yG6MD;vVW?5%MLixX0lGpNJ1x7$ zMJFz7wj5#Xd97%>2`xm8)V)ZQJ9soCX0)MdZno_(x@vNX7Q*FVUG<5bIv{J3aZ;!2 z1IDab>y{csRfdJZZ=9ug8eI~Xu@pbRWZ&&oZU!BM#Z`coDD?3 z^rrrpy*I?fgza2)n5U!M%ISqKxp~0Rd4Qxm49i6NUK*s5DJc6E$o(u5X#0gUn+^)o zXv9KZ))QuTqRG>|#0>*x%aThCF5(rFZYuqyO4G3?BDbpR@EBGva6_t;`TX%@ZS32M zH|o;kb|II=FjNH;-eSNg>dv{Gg4XgCQv*zoa3N@}{)&%^c4XKJVL4QQ$d4fE!hL7_ zJD2@0xOtmeGG9VM!e|RApBM0UlFSw8e@qX2QC~;ogW~QTMB-c~Gh6PHJY3`lIBg)q^NgMj0Lzu{?n^;?KqYinsQTO6K>B9A}33opDKAIt3GR92Uz zXZw~SUw2qb7!_0(3HhUVm7Q9>*dZO!X;bJ_i?1F>0)!_Q6y}U-);%p6V^@SVjCuGG zjHdOJ-e<`#(9mVM#T`xGddBK*O4sJy%HyIRDZK`+$U8cylw3VxbT^t{hw3AYO7qr| z4C?2PeU6Wqw9CAc7=;O&ed|LG z-*e-Rk0Q_HGZCP>p9)I|fXfAO*xwkXfKYSRLZ`)4m{wxahTflR7Jq=bGH86ZJsi*T zN6n#^<$$ju_@LGBE}B&h7ao95Zs61On||>&d}5YDFRzPCTxR=yzWMLMzjiXiW2w$O z7I((5^ERBlgl*R9ejO&wYY3#Kdr?w&RNpcdn&)Vay+O!hv@BZk;r70byqh?i-xmj4 zyP@`XW#Yaz*l*&^U`z?D)u`+J0WbG!aYm?o^;pwxlTOI~un$kr|K4b+1}4)iugT{5?!FAyRCKoowHwf3U^9uT(le-zQmmk2%UTn;qnQAAhZ+W7Dk4^tb zG)@D>y{kPaBuxIqQS4x*@Cr$*Xz;^~-$h0Qm(r!rf`9EIq(qVf-YI`yPh(r<8@fkp z7lD}Dx2PyJQT&*QVNsZaat_(PnQ%+%a3G_K zoOR(=^~R9RF8SAzly;577n>*gjmgS_EH9Z<29s)C(tj1WWJ5XBp19L~zxU~5?EK_m z+r5XZH{dAH&6K)?&nNYIFRC6y>j9t(~`=*&0p0kO*)A;qbQ~97M!O#i{p#2;}|q?-n_0f?VjJ| zRQ$`Z>Y2#PK+Z}Gq)mBvW)nc4Vt+A^IgPB?asx7BzX$&T6q@DU`)dkbps~uVG zi`1EYW!XQE9gX3Vv?+5F9?iGw3Ocv$V7&%la>0@};Va4zZ$+Cf>q@GQ$Dj9ght>C6 z6NR`I78VBmYOM%%Cwd2UtEfHxbp+Riwh|O&2hg|r%rnK_0_DOOAKUqSnJEGfD4C>4Nr0e4ZooHXQtwt${xmuC()IPk7ZY#< zlgP`CLvL|87o4I;Q>zwK$~B55mxcr$o5-M)rrhv$kY(N`i(j{xu2&J zijpe@3jV>rne51HyVz8BI;`Rb99qXSrfK>knIc#)q)09QA+4~CA-R*!)4Au z!ap%DQ?Gy#(7Opkq*4ze$;Dm^Oa1t~cEv#+Y{;H$0WQjQ;D5Y3wO{hOq={_uxY#pi zL#ZMnM{ftXIpxtdMyr23#$HmSHtMR$a zk(cSUuuud4;X^!N;El3n;zVS?U@pl42IPJ+neCtGJf#=uAX#{kns>ifmImNWk`2(zlW(HtoQhEf8@qjHn)!sQA@ymyX=_+e6{D5ao&CI0__3EH z@yXNYg0ix*e2kudjkO|3P)O(rz+lI)Y{N5WK`Sl3bK(6F;D9lDkRiQsQGN($DsXnH zQ83o{_V)K!SXk*|;UwzdB){Jzx~~z^`1m+%+v$Dgr-^20v~_Uzp9w8s4?D>~3WUm% zT^HSbOSnY_gZ^QA{q}&rF2Fj-%Lmnq$qfJGegDJ93gZ4I{=VSGEB-kV{oloaEgfLf zHcowXtoesc`>(7_`x^+}4p&D@HuV2)4(T4~>7WCh-GLbwFoc1D!LD%u*r$ka5N$ot zWXOM?m0-<_GBx@#jbdOw`*p1J#Od1;QAD^yaOen55PrFpmfLNfy?2zAd$W1*bt*3Y zy4-1n#8HDFV)wf;34BS`mS!Wq`v6tLQ3x9wJMwbBoe2}gunmOFL*%YksO59{AIa+m z#Gdn>yE{*yx^nW-sNrSh0zHMEFI_EX*hK=g!;6YsuiRt>ukj&*h#{0~yQiDFcn0D> zG;>as{1smTln16wqVRQk0r;Ysm6f#Em{s(jOqGck0LMs6Ye2y~6l(JhX4=OaDy8h5ZNZFH_f5%f>%W9{pa5!y|e%p5~F(h#t3 zAHOa-FM+Vyawnr9(^#)n$b7@7AXwO7?t) zYasH)5kqguzk0>T-PHDqIGFBN?b6D6Z-@9z*N&pmQMs>Ttp5iiyV9E!ylPVxda#MK zwdDdebj)6*QU*i(3E+Nj1dXHr;2icy@}O>!AIK>of-r-Qn-PJWJDITt?1_Eh>#)wA z^JMV`|Bd9u>9;#LbwN+Xsz+)!=#=(67`AH~JAAQV3;MC#-Hh)5bRk7gPW9Ir^dFy< z5(cet5i zPSsxl=bjBRvEvsJ5#hRCTSiy|AVG|Oi#V}6UUOVq#_Ne#o?4*XMCt5VfYuuWVq|3O zqRC7Cv_Dsym67pkVoZM45P7Rg&p7KpjtY2@hV13ko3|w4CwgGOYCbqIv9TFGj}H;M zBcY+8+lS0TZ}Ul30JzyBAAa2UeaHE!ON=gIE14yQ^vel=;1Hxo;?v*tc{w%aTr(t% z=SGNN^aX@7;sRjWmEV*v?Pi>^b&7)|JS|;#dP@s`VOQ*y-qYuJP=K_)#pARgTEmU1 z0ZKLo0O^0VtNTcR(_*ne`gqkH=rWOU?sF2IM!lIGLn#%v94SV!J$x*_xs3&z(sD#$ zY`HQ>{a+xviJs(={ zi#J?q@iO1axR(J)RKjQ~xvyIB3uXF3w}e(%U#woh$S{1)3w3F-?$()n5+<)rGVK$> zwM^4kjU~s=UF<3Q;u!jVFpnfqUmIuq5)(0B;I23{&hfe2ew!Pab~F-B`PF4>e>2!h z!Q6YGSlt0%)}!lw>T|Q5_q&wUK!0t&I;eE8sNVchCNCCNfECLdq2qO~yfE7V`mqg~eu-$=^G-b7d)V0@#Pn%Epl zEA6=-)B(tfL%Lg3RFt~(O2dJMV<0YtsQZxa@vHWiYdei};_+Ki^O1R3TCTV>t~k}p zt7-;+?GhcIn9L|?VQk$X#Qc{QVB;8wUp3NoxcnaPgj2>`?>K{!P>qPA!${=)fzzAJ zXF}wl2t(~aIEpvyL|ILUZ#q{7vQ47N+2_+UGnx&v+46B z@z`V8n=XF>5c_f(t>V?4>_8nb)BCVtmvQ}Bk@#WFj}p(w7{WKg$O31>Li=G)IWS<3 zY3iYkL;PW!U0R`E@E?tuNNsHreED}teym+H(KatVZs7F82=N@9H^ickw_Vp!>2g;m zgM-TV&pXxB7h z2@cx7mlefdf$I<0ownqQ)G_PBjbvrRq8`*Utx8*NEGUt=k|@fw`hIVca;I&Dfc&`P z`BCl`V8MP9n`$?bFGh>hD;3;cXV=oyi!z>Q80BZbU#zn?RJ$QKzuT)EqJ1Y3WnEbr zZ-oIH;HFgbnQe7;$yVonI3Z@rsM*+O!8EhJ9-lD})7jbCu72Lkfg>X$ zg9HU7)Xc)-y|wmREk@IRmx9|=KQC-f(WcbZ?;W45ACaVBX|Yy37V^Zeq3cgHvd4H2 zo5pg;ea@fJVYu}~yqd1F$3!KOrXDQF8blX|E5bsDnp~1ZFuf#`5lIb#8*~BFuf~cy z1$TaGJZ#~$7&0gxkE{Q-9?>fzl>@?wysd4$mx-)rYC8I~tv{H=iB`MdLTJ-+Z6ZQM zrAZBqrpW8585y>y{%T!nSnfMB{;aNpRNzaFhEU$~49J*mGvbqpl{Z#wSWxUS+fI?< z*k8R$Io{>=ni7M2*BzN~Wj2GLkQs_4V^h8gqfsI)0V^gQ?WU*4=T@^VbEcWYF$#(o#5D=Zh#A$d%oa#5Av) zhN)Ph^Xibjs^Q+(TZ1qfSm-3 zde;XX1yjA97?__pk4Yo-JZdY#g^{_go4`f3o;+ipMiv{Y=)?KH>^ms1|IJn%F{9U_+Y*v8!%1uL$o zYfSUo_sl!B`#UNV4}ubi(2>2bST!d%n>ZT+D!=7X`0^D`b(}^-%wvm8s4@TzO65%; zNY)g~PVAW;`;BU7KB;T2=Z=${yncEaz9tl3`Y!e;3|3)AkM2E6?`Z(O` z;NGt?#C88%x^+j=?Vi6bF*(RD5I7~hm0#^SWM%+RQFqU5G0Rxd-tJ03BjLJ`itZr)trg#C zKO0My-}+$t<&uwXAd&a4K&mJW1>|KjD-*af^t~-JO+&CHwSzxVK*$w}2p(ttiORJ* zBC2q;368|1BJ&#y$xVcD{sFDi0TH2H&0tiN__v#og4 zH5sw#+@w3}UiJj>*AZwV+ME(Jqm_ILbGY zF~tFsPEsmtW6`_O08A0Ju_?j0FT`O-zFKfy>I6<6%iQmucbsBCao4@hrtac`K?F_Y zL$0~hdg}3mSmnvXKhg6XYJ@?zMcis0U8RZ~)kg3~kLq_QsXCbRbM8yFR2dXYB&v`+ zi{WaYZ=Y&wRaUz;YjO%Ca#C1!ef;J(62Do?HZMc8xSVPEfJ{*GhbR zSp0+f(+CSNy){9OZ|YU2t^TtgINjSBiOt0((jcHJuCQmqYQgF;f*>}TC5E;hR%{gm zv%Xj8bty6F$~&-5wsLat2^M8T^^Y=E2`pNtR&OWYa^auq!o4^rDBBEWspFaN zxp#Bydw!;V`SLX#LeDEr<|np#{Za4Kye?)78Vc`;!@?}HrKvs0M2RdO65{KEY;c{khkYR37m?XDVgTND{f;k~>`r)M~j8l6H zL?LJ6#I|*h4n!Qsi)OjHLv7Rer!4h8C>$dDBbMXh5I~%>X3!-=UUqxUSvG^cpdxJ4 z(9rE{Myj7v)5e{%v_!xxS!(s5HC&5pscSvPl||bXn25IDnZj;91|&P-zZH`I@5@(K zL@@L~*|-mC?I#f|se&!9+cQp{JeQk_!y^EI#aKF>yl|&`Ukl_} zC3n&8Yin!iRaHteRBGNhNc6t1e#S`yYZVo{yOzXZtx&?<>m%ZHFkjEMQKqb3RQlqu z&WM}BBiX8w%jdz8l++vN5{v*m)k=2GEaLuSY?qIb-1T=Mq7idjx zBRS)A4j@~1SLJ#;hb7PF`zd*6rz;l(S~qIUS8_7oVnB_!Sq)LMHf)#Z+)A)j{c&`@ zdP}n}$*bUce3ONa-b6a@ojYoJ-CBxtnIWqnLwrBXPJR?DB^UIqQH3WMFYY1R)1$q( z%D4t#9e&Vgl2}&We9u!_o=up_rH8L_s<|E4l-K(IxSlts7|oKcYTZxMd&Wd6^4@d*VwsS9X0*~2ZJn{?{ua$hnW8Lv*bT_8=7@_K zbfeY=i>)*`)#Fm~6|I3wo#+8Xp0ZqJXV7ayM(bo{;@e|pl_N2#j7@A;+l?9a zkAPRuPO7QW4!`J4p^^4iBZd3j^KS1QxgVZ(k%w)T+Fct z{ZRg#D2iC?FeQu+)a=t{xz#G!cQ~n`D2n9W;$wspwZ7CP-}s5u2qe*nF}x8Eg{;aD zifG}%Rk=Ov)1}kt44>C4BVQ`P7e(5Ug#L27SC;NhekhD}>Tbip2qSRE#|b8=FFZh) z8m{1On9PgN`wN)ki0zAf~M!(~0 z)q8ATI`m$$#A**rs@d-WM);LleU?Mt*j_uOkqlaG-J_>OLl2pz-cci*peq%q`K8CzS*3$V2x#*hcP}|Vi&USfuAU_>I@Vb| z^5VHIFL2baZ)~j8kS-#Ng*{=6e>V8qbesg{FeVnA?QdfttgY=e@65%whOCr&wh-`f zwe|t`i>1FpvI88WlGMk^5+c`|nLK=%)GM;zE>JmHiNciy z2q!cNKfK0d$WMv%Jfb2jPk4bJ9V?R0O|*{*Llr|6hV)4^d%Ew1R>+{z7*DJj#pu=? zAMgcD>DPF|cDrYY;mfkE;~Z6fSZj8M%*Qs8i#)upL@T2K7xk#%3E%D*?aZ6TATF$; zqc%;Z-YtFX0V3Q+lK@XIx%6LWLUMK zHkzPt8(6novFIZQd>Q{IE)9cD$yddL{2w0;+(qJ}X2dsWCX7l~CVLjuPQxfi40Fpl zX3|FRbJI%omqb656u7C@A*|QYa2(4zR+h$V2PEaKFGsgd{7S~BoIcvSHRD~8-oqM3 zOo@*40LAO=h2Z09Ha`zmC9x!qrQO2z{fHI)I|XwdX*wQ!mBX@tf|NV-1l|BL zO&GSj$N7Y+f0pY&uANGjkMaohelphxKTQ-8n0_}?QZFzl6j%E7xp9&}78x1M;_
                                    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 G=l=y8gFHU~ diff --git a/docs/3-web-servers/06-form/form-url.png b/docs/3-web-servers/06-form/form-url.png deleted file mode 100644 index 67f78a67f27cd7e8253e23a8ad1412be92e3b0e8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7430 zcmZ{J2UJr_*EV{QCWxZ+-jOOzngIc+N|oL*G^qvx2%$&^DUlL-3q`3xsH1@AdWG?_cZx_F8AonKNzAo|!!}&l97otwuq{Kt@17K%t@jM4y1*hSJry zGzrmv!sbwltJgIzeKjQlL_ZVeDnjU}sHI3iPz}9#W_#l*PWnpS)QfYU#+o?+AMGq_9L=q8yMU>N#xHs0X^YKs< z4iBOQxWH8@MsMHV8?A#q*TX^Oi#XuZWLp$)GD-dpXZ;VP@4a7)+6a*PkRNJ&uJ1_c z30>5B0A<@c>(4eF={&9jQdaV>Nkpfcm7B`#CJ{YPZ^E^Q0)JcMy?bS{ag=9GbI^c~**ZO_aMBg*ml>)2j8#n5VKNNT4Romgza`w|FAD}f0R&B*vn%WV(M|LF=JbZ`v#^$c1vhYe;Nwd3 zV>^x{G9_^@hq4}>=IPNzlOEQGe~dXKZre$SRF(Ls(=v@?pvr9ol(K;ra%8Z(4o7eO zx&Bnj!Qd{XfEnQAMf;^$#p>uQmPFj;{4)l3hN3|S8`>2~(#32k|Mpi<{giEVb>H@Q zZyB5T=l9w^pMb#4jEsyEdTvgkutAT&b@L-!RdD>&lo=Di{~qLULl3%V(a^j8r|(bP zLmm^H3P|J4yD?YCECHZ?W%E-w!nag(;JxS-%VuXgt5 z!_DcT+1bjuoJSdwxwXl6iYbG4i426Lp$gl6cO4HJ8joVD;bO$w7YHI=cZ}O_{SKPg z=BF3F#){hixQ8sBLs+&PWH#j;$osT_F-iQLr%TB?S4sgbTkP!B5}1a}M|!?cDpc$N zFq7xQPemx6nmeop-RRi9P^$FZx+F#99zU+^;dBetE!{htrwlG>`?i`3asT}0Im1B& zt(ETl+CcDySL@ynffLx$>l<)JUnv{&4sIq3i-b-8>2IZ-@Kmxs>4v`|vhbPax9an+ z6IV9|ELBBD>RQn^q#O;JAt`a}$oK*cIiYPuT$?}F=rdUow;97QAEZW!jU*kQwHxMZ z-F@Nfe<1#Q=oxx*gHB$8!QlMTQquWXCLZxn15?dt-fcH`_c3#|s3j{r8d8O2cH^C0 z@R(_YmkIaw_M#lMK0GiebIuFc(-<8cE%|KJ7B=75W)M0U*W|T&VN%uO)~&og3iRj! zg~xLnQaNdgU6xy)lPR2Ibcm6r%ig34%e|Ku_;%9H{5`6kIC$dRufEu8T9q`c4P5EiDQ4EVKwSwg>e8%0$y-v3_OD?JSH?J-yK$ z{e8za7nK|GATzEz+h?1K(Bq-ac-uHir2hR1V|uONP0L`9PSYMz*B<>I61JJqTobx1 zpBcPKfP#3$uR!&`ClxR%JgURy0p@LgZZ6Bx(vr#-Yp^~B7+wRy#(LQ{+dq}YQ#Z@h-E57$h}DtvhTK(Fv?Ic z?xxJ!6h9_9%1Atq&l6pAjQrcpI0@D$4gUC{=_-2BR!u{CCxY<(;bx5q(4EIjMV6_k z%oE+}hc!zTwk-RkWEk8~SC?N`chAqyuQA|QjDdl{U?Tn2V%85y^&npMl6Sf28g)f& zS$Z5BczvuA%agLTV?{45erx1E49Cows^t%2Is`gVj7*|LZcbx>vfIozS7ji%C; zH8e5DVsG!xW2q@s{AFLv{bmZrxB+0@d|&$at)oOy!*gX!{gIeh-1rB-HV5J7wi}`) z=H0;sLZ8E)@)RI3oaYw%#G*ZpGu9O6QcodaAj;0D>ND>;)TUDW=7mR9sdx}aK>FRf zU_R22+~Vf$ zo^ua*Q)ZzR^-=FaJMHlpnSzifa?fwct0-2FQptXykXg>B>)Gr;E+95X&UfLb)ZD0f z_EO+pP(N25ixL2_EvkBZ68)a)dAeyFYln<{c#Bz%VHVs7OdoY~DU1Dsf;4g4D_XN0 zIXG(Od!h3H^aW;WX6hH6h#2xX@h%```KZpOoDbQoEMmuP)auBvq)QL6;GlV^eixe(i!dRU|305 z{JZlK3|!JFqMF=GDYi_r;$6Ky821ZQRgfVdEpQod_!%s%K_IXgtQoPn2vtB_T%@*- z*q=^&v{&NAH2C<(PvSiSlsEA?+W~4wo$ePfjY?H)=BBE54OfPuCQ%S9GC49vg<&L@ zujM`9@U(B;qJNJRHfv)@8q_DDE@ZuM3K^*=dS2gz088y8sdNr9wy7PTD ziU+2{7n4pCMg;3*{%)sF$iZ9D@e{KjDGs3p3Eqb>B`&q{iz0@!zU0zFP;7I8?8Y#+ zQzBwxOT%Nd=%HeGv6+yaxo^b7^KB26L2LsPG8s?!1k2<#Xg`NItRHXnF6 z22+l&Hvn@*>U`OKSk+!LmEYo{x2fU6`Tf-Z{2C}fTREM39+9(&h~!HjiNKoWk2-m{ z7?ZX;Pg!pJBF81vr^z#(36@U8b!HgvZ1tX6&W_(+zKSijCiO7|HPTARo2A>sTIYg45d@p)392g}1olEO#MaLQh{gC{T4L~B1VF|tb zdCH+WrERcBy1BiA=T+?&&1lY`(r2j>Wz=x7opL%pLh50@;m6e`+n*Ao9&t$ZH< zfLZigGDT4!ot8Zuk-ukZ)ri>!!dQY9&iI=~!Kz+}ydjjBNrrX*lB6cYkJ! zTuUI^oxx}vwF>Bpmtf^u9{4}1VeyT4IRW7vuYTqiLG?niSxJ{PcVm$oJ02cxVZO1L z(#^oB-)%AzdiHQ#8s$X6cski5j*}h}rVjYp4CT)DjL5$O$`+}*?bYnMnp7rleH*sb zp=xh_U$-3pT=`y#>t`ZnuI>PjY&TBD0>ea1Q=8jpAk*ZV8uhDj^x_3#qNL2rnUz}?HS$!mr^~IwR{G(5ZrtO% zn~zLL`0W&2R4*5MpupiGjr%$Qxp8_FO7>?u85?{oV`+@BOlk>Iu4TE86@9?C)x$kz z>9MT%P+stlMvznkja>`>qYz|PueZvIm8&qA1-QNPMLNRui1;TcexKI;VM4y!oJTfe zdVAgFjKHdzaq!lxMM>z-V*%eUeP*aywh)5eq^NE23q6og)nu56At=oz z!o~tcs0htFYO)ooWJU+)I33Ii$iK6Kk_0# zF#JSyk#$1dI5@CkOV*Lw8WNxRxhJ;0@t&gf23c=MKW~qZ5k*5`2b1e4%BNq{s8aMn z;JobgE)L@Mg`#WvAr+Tur+n2{<|If4%!R3*ahv)0_PAHt6Ymh{*K(KE+S5<-V=}E? zzt}Rpj25dGT5zgb-jH!>cr&Ciyz8(E-5TZZ+7Tq@Yyqp?0;w#v(VmGBAwUCDJtGvT z!m)_~TEVyg+LZyg+O*kI1MVtImLFi4%OmR>e_t7fOt?edpL=kZ@9AD|0zeL*H1wXl zGS=@_E_=kilk#qm<60qMqyBv?Pe>_Bz)XJR@r`h0mFrW=QMXhaKI#;?v~0M<5AYjS z?47Ig$quVZlE8KqqOh?^`34D67G`B^8WZ$P@&UM{*z z)YX;Hx0{*qv*ipq_OTRkNnp<)Afq4Bj(tYgKFIodFrp8>iGN~MxM8;ngvox@2wzHC zELCC-=R9)ml~OJteE*0NpEmY&g(UX{$S}n}PK!ZSq$6JqRz&6E<5#tN@5`F!Ed%Eb z9>Y>2I!5MBvr)+>L%^bLre5&JeViBJ$S`t>nWLr0gdzjhlnZOP6H}*!r4clJ6Ni8f z4(;DUV{X|*$bF3K0JyZ8JsN3akzfs=w)7f%5idFV*1#?G+v^&Xth%dOd~3U~YnCmb z+oVA$s>E6E%Pr~c8&!wib2nG$8Y@5kL=~lrN88Gwe(LZ&rO4AnK&op^zv{_)rNQRzl+1lGl3hSlG#CqDrHNV)IK z7uqqUtu%sL9|!KQ{Nxi6F%Fh87e9hVUM(V>+()I?pV2e2QIAbr_iUZ7zEkVChEfzv z(eFjyeqkLGcR3lF>UQiD3$|7u!Nlb9dv7(W812o6K|Ik z#3D2$jvPCWE7hX>JGV1szKMgM&%!p((8*liafY8bnD~a^Fyv{CA7HDjQ^?$6(Y>1! zTlyh>;!dP{FV~cMtw-BW8c2z zn6|f6QfHq`GR7@mSu|;DGohV0zPPSVV$WYtzm#4Fe*k|G0T-J~sPhsOyPsqc?9(7# zl_aR!&A=Srz=C1}mvkS-`Bn@qVSe;VXJ481ngMg!=QA{LqIv@0r-vny`!s#%$=rpl zRyE%Ui|6SzEG_9iI>1gLddv(WJe&DNo3mP3hwn}@0VN1)9|+4D7|z1tIiJ+vO zQ5Tb-fO%vU2hv&Q;QG8aqJc6cQ>xPZk)F5KB)C(mM^QQLbj6B!ew$zPFlmpciyo@3 z&GK0Z)qLAVyIS@IkS^=VoXvEablsAUk2YLED=6tNJ3w@Cv9Nu zf)?OcuZvm_x|fzY+jp0lsx$V)G|^eB>R|(gM&cSBe5J8)=OA54okD{5(7lEQRhdA21ZOW$egLd-R#F0LSi^FFR*#qaM3 zIA0os>4J`SY+Yy4%_JAzYh{gsB9qDJz45*u;!R*xL^B4nV|dLM446=s4`sz=E&*jk zvY)V1tcBC9&)#v}eQ0XA@%#m)GzEN2c+r&L7;z?`gQIO|e)*|Ti^7i{9GQ*Ku$=mt zbJFwGpl|C(w{{{MzjG3o4wd{5>32p>EMh$)8TmJy!k(P3n0o+S?}t?ETi6Mnet6C1rfJ?A_U+GWO4u zK^>_bx-ZE$(%ARDhnJ%^RBwxaG(P)Cmb_TDVSp+&E1|Xop>M7XQf!^dnJEFoRlAv& z$#;J5p%`b(aB*2yOB@bUuRiWuT6RFjq?Sz0-&?Wk9uX1Y|C39x1R`ie`hl3ND(XuK zF}(eJ)1%rM#b063r0)^KbC>-q_E2~`StUU{`_LU714N1`pRudanRz>9$;2c{iVq)p z&MwaYlF!(27B|WgKGu*$@keqHNp?N*{fpm@syJut$lVR9};ZTzQuf&33D2I z9plI6HK5H*?^xZS5KfL#Ucr&3OfTgESZ^k}Sb_`$a ztMbsl-M9w{&<+M=)b_S9sEv}j;Rv6EQ1y_{a#Z#CY=UAyg19DJbF8UG#+sjmW%WzS z={}z!9sP$XZj0;!w3G_FbgA}r^E#&q9HZk2&A|uk_&Jsl%Z1ZHtLO3UQMCC1U(5tO zQ~VrkoQ)E8p;fyX#;%?Ci}UHDlfcK*j4it@%5FOVU2+#X-LIbri(xLiHoy2YFAv15 z&c9{Hh#1U~WE_1Lz1yy9IrsGTgDqux=g%Nk#?6AV6t`r}?-%+x(;^{|j^_4F@&22O z>GlX8sBr~I?Kes(?@^JlP)R>I^7Q~SVwiT+-K~n`&ICi!tOhYg)cmOY&RHSr>-sKq z&qyD0U)l2ehO=8l%NSmis&;l-i;thbxpI85VTbq>1vH+Gm39#r+T$r#>~zkoS#zMw+=IAB=^r7L~pyE z%0Su0hgf@t|BEV>wYSD`ItL@>!oo~k^WLKK8wOrkDUUXxWH$1?JZj?%0xZin1hVd* zw+o`*XkwZy+(MehX z!N&Hao+v`4J1pb#ZA4*l<#ZVR3ah*@1l{({X@&M?8uP!tuO^ZfYX<18N>29x$BteP ztTwwht(c`S2P@%q-|XV#*FN zw+vSMSCEu9N(D;-9OsTl>(`{eeVpFgxca-$t|1#p;M8!0z3t1U2?4==mD(r zU+`wTRy{WkE;W0*W@`gTa&EG#$?Iq@<|`9FnH%YcbOljn;G5TjQV^TmO4U=|^)uWZ<)BWZ zdS{l*ui<-;$g$|8*(Nz5Q#pXY!U^NoUg!T6gR&Z{C;PtH>ad*VzN=3vP_Zp&HQ8jX zxYN?EyPk6z99r%uulpZFhs}UV`qkt3n;!#DeGIS3riX@JH!w6Ty=Ur>s~KT@TN9W_ zulW!8C?;7&J}2DQrKaYrH#d)izK-0ziA~+@RaZdOc*g3Ptts#4S*bws(9$H- zB;9wy6H2ZrL4HGnnsIiTI`YSMeZPcQuI^)Hp1a=?IsJQgASaj)LxY3)4pFRqkra#u zP6AJ5O==zD$=($si_VL)S`7SI0R9F)ZEbmva|qv8H}G=6*d%~kGffI(>!7UNL0R0y zG>FL-NKaOUJj~=TJs*Mw6*1@#h2r>)Q&Y||9CJJN2Na;jR(>}Idgv^eB=Egd7rd&LUTYIW zov=!sYQxezI66a$M*Q}erHSM(uOK4l1$cHglOY8^EN0AeYeok7!L*w1bkaI)a&Z}; zrKPoosm2>KS>@#9NPBf}5X+>Ge9&3Eg5J94ey{`!LPPC)Q|Hf)_shLHQ#Stx+jw}+&VSzxGUTJWjwUFiQ0l*@Xn8*AX-w$pjDtfM~{P~J@hQ*nq)Q+Yp; zR(I62nj2g0DZx@f!d)=Wfhvhu#mh8jWLb`#MrE-5JvIfS8n!v%@L?hJPb+Ue_7aHC zYZtLRyK)T$Xc33Ol=+l)w{*R6{f~(c>th)aDGO8eE?Dn!xz=}hLt|qIjnXYU3vj$| zGUG6rf_?RMJyR|r7R@Uz#c86khuAQQ6`%YY&gWzP_PTty#hi==ss2l_w&&^~XzGFC zWnZ(t*rT;*3o!MFnQJ6hQlkp{hn*;Z+s8BWhm?{7*x;ptV}yp^)wxNK$_iA!_x!7n zf<9y3isyNf@Q#>VE4d!q;zu6F(D!fuPhQ9M6}d;oM0B3U4Y(8{ePqhfVYZm%AKE86 za+=GW#jkMH+FwZiD$BTtPf1V301x3O261`$tFaFcs%}P)zLG+kE~OmDYZENnCm~sfvnS?+%2)sq9H0o`{g+1}OMV}CZNy=PL(aFi#|PPooH4xbKM@n#&Mf})ulb6% zYIUmew`Zb`4)V4OSI@_@k7vB%E(tVLw4Wf9Y(oDB;a+pU diff --git a/docs/3-web-servers/06-form/index.mdx b/docs/3-web-servers/06-form/index.mdx deleted file mode 100644 index de7a09324..000000000 --- a/docs/3-web-servers/06-form/index.mdx +++ /dev/null @@ -1,246 +0,0 @@ ---- -title: フォーム ---- - -## クエリパラメータの利用 - -入力した内容によって、次に移るページで表示されるものが異なるウェブページがあります。例として、Googleで`utcode`と検索した際に表示される検索結果のページを考えてみましょう。 - -![クエリパラメータ](./query-parameter.png) - -このページのURLは、次のようになっています。 - -``` -https://www.google.com/search?q=utcode&sourceid=chrome&ie=UTF-8 -``` - -このようなページでは、入力した内容によって異なるウェブページが表示されるよう、入力した内容が移った先のページのURLに反映されています。この例では、URLの末尾に`?q=utcode&sourceid=chrome&ie=UTF-8`というデータが付加されています。これが**クエリパラメータ**です。 - -クエリパラメータは、キーと値の組み合わせにより表現されます。先ほどのGoogleの検索結果であれば、次のような3つのパラメータが存在することになります。 - -| キー | 値 | -| ---------- | -------- | -| `q` | `utcode` | -| `sourceid` | `chrome` | -| `ie` | `UTF-8` | - -Expressからクエリパラメータを利用する場合、`request.query` ([`express.Request#query`プロパティ](https://expressjs.com/ja/api.html#req.query)) にこれらの値がオブジェクトとして格納されています。 - -```javascript title="main.mjs" -import express from "express"; - -const app = express(); -app.get("/", (request, response) => { - response.send(JSON.stringify(request.query)); -}); -app.listen(3000); -``` - - - -:::tip[JSONとは何か] - -JSONは「JavaScript Object Notation」の略でJavaScriptのオブジェクト表記法を倣ったデータ記述方法のことです。つまりデータの保存はオブジェクトの形式で行うという決まり事です。表記法の名前なので臆する必要はありません。 - -::: - -:::tip[JSON.stringifyメソッド] - -`JSON.stringify`メソッドはオブジェクトをJSON形式の文字列に変換するメソッドです。 - -::: - -:::tip[URLとして使用できない文字の対処方法] - -URLとして使用できない文字(日本語文字など)は[URLエンコード](https://ja.wikipedia.org/wiki/%E3%83%91%E3%83%BC%E3%82%BB%E3%83%B3%E3%83%88%E3%82%A8%E3%83%B3%E3%82%B3%E3%83%BC%E3%83%87%E3%82%A3%E3%83%B3%E3%82%B0)する必要があります。JavaScriptなら`encodeURIComponent`関数で変換できます。 - -```javascript -encodeURIComponent("日本語"); // "%E6%97%A5%E6%9C%AC%E8%AA%9E" -``` - -::: - -## サーバーにデータを送信する - -`form`要素を使うとユーザーの入力からクエリパラメータを生成してページ遷移できます。 - -- `form`の`action`属性: フォーム送信時に移動し、データを送信するページ -- `input`要素: テキストボックス -- `input`の`name`属性: クエリパラメータのキー -- `button`要素: `form`内のボタンをクリックすると`form`の`action`に指定したページに遷移します(送信ボタンになります) - -以下のコードの、HTMLファイルと、JavaScriptファイルを作成して実行してみましょう。 - -```html title="public/index.html" - - - - - フォーム - - -
                                    - - - -
                                    - - -``` - -```javascript title="main.mjs" -import express from "express"; - -const app = express(); -app.use(express.static("./public")); -app.get("/send", (request, response) => { - response.send( - `あなたの名前は${request.query.name}で、${request.query.age}歳ですね。`, - ); -}); -app.listen(3000); -``` - - - -上記コードを実行すると、以下のような画面がブラウザに表示されます。 - -![初めの画面](./form-example-1.png) - -以下のように入力して、送信ボタンをクリックすると、 -![初めの画面に入力](./form-example-2.png) - -`http://localhost:3000/send`に移り、以下のような画面が表示されます。 - -![http://localhost:3000/send](./form-example-3.png) - -このページのURLを見てみましょう。特に、クエリパラメータの部分に注目してみましょう。 -![URLのクエリパラメータ](form-url.png) - -## 演習問題1 - -[npmの章](/docs/web-servers/module/#node-emoji-%E3%83%91%E3%83%83%E3%82%B1%E3%83%BC%E3%82%B8)で扱った`node-emoji`パッケージの`emojify`関数を使って、送られた文字列に`emojify`関数を適用するサーバーを作ってみましょう。 - -また、文字列を簡単にサーバーに送れるようにフォームも作りましょう。 - -たとえば、フォームで`I :heart: :coffee:`と送信したときに、`I ❤️ ☕`とブラウザに表示されれば成功です。 - - - -`node-emoji`と`express`をインストールするのを忘れないようにしましょう。 - -```html title="public/index.html" - - - - - node-emoji (フォーム) の解答例 - - -
                                    - - -
                                    - - -``` - -```js title="main.mjs" -import express from "express"; -import { emojify } from "node-emoji"; - -const app = express(); -app.use(express.static("./public")); - -app.get("/emojify", (request, response) => { - const text = request.query.text; - const emojifiedText = emojify(text); - response.send(emojifiedText); -}); - -app.listen(3000); -``` - - - -
                                    - -## 演習問題2(発展) - -書籍検索システムを作ってみましょう。まずは、配列に本のデータを登録します。 - -```javascript -const books = [ - { title: "吾輩は猫である", author: "夏目漱石" }, - { title: "こころ", author: "夏目漱石" }, - { title: "坊つちやん", author: "夏目漱石" }, - { title: "舞姫", author: "森鴎外" }, - { title: "高瀬舟", author: "森鴎外" }, -]; -``` - -著者名を入力して送信すると、その著者の出版物が一覧表示されるシステムを作ってみましょう。 - -:::tip[`Array#filter`メソッド] - -[`Array#filter`メソッド](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Array/filter)は、関数オブジェクトを引数としてとり、その関数が`true`となる要素だけからなる新しい配列を返すメソッドです。 - -```javascript -const numbers = [1, 2, 3, 4, 5, 6, 7, 8]; - -/// [2, 4, 6, 8] -const evenNumbers = numbers.filter((number) => number % 2 === 0); -``` - -::: - - - -```html title="public/index.html" -
                                    - - -
                                    -``` - -```javascript title="main.mjs" -import express from "express"; - -const app = express(); - -const books = [ - { title: "吾輩は猫である", author: "夏目漱石" }, - { title: "こころ", author: "夏目漱石" }, - { title: "坊つちやん", author: "夏目漱石" }, - { title: "舞姫", author: "森鴎外" }, - { title: "高瀬舟", author: "森鴎外" }, -]; - -app.use(express.static("./public")); - -app.get("/search", (request, response) => { - const selectedBooks = books.filter( - (book) => book.author === request.query.author, - ); - response.send(` - - - - - Document - - -
                                      - ${selectedBooks.map((book) => `
                                    • ${book.title}
                                    • `).join("")} -
                                    - - - `); -}); - -app.listen(3000); -``` - - - -
                                    diff --git a/docs/3-web-servers/06-form/query-parameter.png b/docs/3-web-servers/06-form/query-parameter.png deleted file mode 100644 index 9a73adbfa98ab50727cf4f6d6662a405a05c9898..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 143095 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

                                    Rs_6LF*6YjgsYH8C8gU1qCYER#+rN9ht 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 q1pN52wGr(j$O?M@mdiv{YC>;Qs)7(nQn% diff --git a/docs/3-web-servers/07-get-post/_samples/forum/.gitignore b/docs/3-web-servers/07-get-post/_samples/forum/.gitignore deleted file mode 100644 index 30bc16279..000000000 --- a/docs/3-web-servers/07-get-post/_samples/forum/.gitignore +++ /dev/null @@ -1 +0,0 @@ -/node_modules \ No newline at end of file diff --git a/docs/3-web-servers/07-get-post/_samples/forum/main.mjs b/docs/3-web-servers/07-get-post/_samples/forum/main.mjs deleted file mode 100644 index f4f66a6b0..000000000 --- a/docs/3-web-servers/07-get-post/_samples/forum/main.mjs +++ /dev/null @@ -1,34 +0,0 @@ -import express from "express"; - -const app = express(); -app.use(express.urlencoded({ extended: true })); - -const messages = []; - -app.get("/", (request, response) => { - response.send(` - - - - - 掲示板 - - -

                                    -
                                    - - -
                                    - - - `); -}); - -app.post("/send", (request, response) => { - messages.push(request.body.message); - response.redirect("/"); -}); - -app.listen(3000); diff --git a/docs/3-web-servers/07-get-post/_samples/forum/package-lock.json b/docs/3-web-servers/07-get-post/_samples/forum/package-lock.json deleted file mode 100644 index c33c1022e..000000000 --- a/docs/3-web-servers/07-get-post/_samples/forum/package-lock.json +++ /dev/null @@ -1,822 +0,0 @@ -{ - "name": "forum", - "lockfileVersion": 3, - "requires": true, - "packages": { - "": { - "name": "forum", - "dependencies": { - "express": "^5.1.0" - } - }, - "node_modules/accepts": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-2.0.0.tgz", - "integrity": "sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==", - "license": "MIT", - "dependencies": { - "mime-types": "^3.0.0", - "negotiator": "^1.0.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/body-parser": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-2.2.0.tgz", - "integrity": "sha512-02qvAaxv8tp7fBa/mw1ga98OGm+eCbqzJOKoRt70sLmfEEi+jyBYVTDGfCL/k06/4EMk/z01gCe7HoCH/f2LTg==", - "license": "MIT", - "dependencies": { - "bytes": "^3.1.2", - "content-type": "^1.0.5", - "debug": "^4.4.0", - "http-errors": "^2.0.0", - "iconv-lite": "^0.6.3", - "on-finished": "^2.4.1", - "qs": "^6.14.0", - "raw-body": "^3.0.0", - "type-is": "^2.0.0" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/bytes": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", - "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/call-bind-apply-helpers": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", - "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/call-bound": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", - "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.2", - "get-intrinsic": "^1.3.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/content-disposition": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-1.0.0.tgz", - "integrity": "sha512-Au9nRL8VNUut/XSzbQA38+M78dzP4D+eqg3gfJHMIHHYa3bg067xj1KxMUWj+VULbiZMowKngFFbKczUrNJ1mg==", - "license": "MIT", - "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==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/cookie": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz", - "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/cookie-signature": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.2.2.tgz", - "integrity": "sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg==", - "license": "MIT", - "engines": { - "node": ">=6.6.0" - } - }, - "node_modules/debug": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz", - "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==", - "license": "MIT", - "dependencies": { - "ms": "^2.1.3" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "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==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/dunder-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", - "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.1", - "es-errors": "^1.3.0", - "gopd": "^1.2.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "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==", - "license": "MIT" - }, - "node_modules/encodeurl": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", - "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/es-define-property": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", - "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-errors": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", - "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-object-atoms": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", - "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "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==", - "license": "MIT" - }, - "node_modules/etag": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/express": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/express/-/express-5.1.0.tgz", - "integrity": "sha512-DT9ck5YIRU+8GYzzU5kT3eHGA5iL+1Zd0EutOmTE9Dtk+Tvuzd23VBU+ec7HPNSTxXYO55gPV/hq4pSBJDjFpA==", - "license": "MIT", - "dependencies": { - "accepts": "^2.0.0", - "body-parser": "^2.2.0", - "content-disposition": "^1.0.0", - "content-type": "^1.0.5", - "cookie": "^0.7.1", - "cookie-signature": "^1.2.1", - "debug": "^4.4.0", - "encodeurl": "^2.0.0", - "escape-html": "^1.0.3", - "etag": "^1.8.1", - "finalhandler": "^2.1.0", - "fresh": "^2.0.0", - "http-errors": "^2.0.0", - "merge-descriptors": "^2.0.0", - "mime-types": "^3.0.0", - "on-finished": "^2.4.1", - "once": "^1.4.0", - "parseurl": "^1.3.3", - "proxy-addr": "^2.0.7", - "qs": "^6.14.0", - "range-parser": "^1.2.1", - "router": "^2.2.0", - "send": "^1.1.0", - "serve-static": "^2.2.0", - "statuses": "^2.0.1", - "type-is": "^2.0.1", - "vary": "^1.1.2" - }, - "engines": { - "node": ">= 18" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" - } - }, - "node_modules/finalhandler": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-2.1.0.tgz", - "integrity": "sha512-/t88Ty3d5JWQbWYgaOGCCYfXRwV1+be02WqYYlL6h0lEiUAMPM8o8qKGO01YIkOHzka2up08wvgYD0mDiI+q3Q==", - "license": "MIT", - "dependencies": { - "debug": "^4.4.0", - "encodeurl": "^2.0.0", - "escape-html": "^1.0.3", - "on-finished": "^2.4.1", - "parseurl": "^1.3.3", - "statuses": "^2.0.1" - }, - "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==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/fresh": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-2.0.0.tgz", - "integrity": "sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/function-bind": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", - "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-intrinsic": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", - "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.2", - "es-define-property": "^1.0.1", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.1.1", - "function-bind": "^1.1.2", - "get-proto": "^1.0.1", - "gopd": "^1.2.0", - "has-symbols": "^1.1.0", - "hasown": "^2.0.2", - "math-intrinsics": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", - "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", - "license": "MIT", - "dependencies": { - "dunder-proto": "^1.0.1", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/gopd": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", - "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-symbols": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", - "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/hasown": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", - "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", - "license": "MIT", - "dependencies": { - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "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==", - "license": "MIT", - "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/http-errors/node_modules/statuses": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", - "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/iconv-lite": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", - "license": "MIT", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - }, - "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==", - "license": "ISC" - }, - "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==", - "license": "MIT", - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/is-promise": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-4.0.0.tgz", - "integrity": "sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==", - "license": "MIT" - }, - "node_modules/math-intrinsics": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", - "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/media-typer": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-1.1.0.tgz", - "integrity": "sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/merge-descriptors": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-2.0.0.tgz", - "integrity": "sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g==", - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/mime-db": { - "version": "1.54.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz", - "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime-types": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.1.tgz", - "integrity": "sha512-xRc4oEhT6eaBpU1XF7AjpOFD+xQmXNB5OVKwp4tqCuBpHLS/ZbBDrc07mYTDqVMg6PfxUjjNp85O6Cd2Z/5HWA==", - "license": "MIT", - "dependencies": { - "mime-db": "^1.54.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "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==", - "license": "MIT" - }, - "node_modules/negotiator": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-1.0.0.tgz", - "integrity": "sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/object-inspect": { - "version": "1.13.4", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", - "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/on-finished": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", - "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", - "license": "MIT", - "dependencies": { - "ee-first": "1.1.1" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "license": "ISC", - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/parseurl": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/path-to-regexp": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-8.2.0.tgz", - "integrity": "sha512-TdrF7fW9Rphjq4RjrW0Kp2AW0Ahwu9sRGTkS6bvDi0SCwZlEZYmcfDbEsTz8RVk0EHIS/Vd1bv3JhG+1xZuAyQ==", - "license": "MIT", - "engines": { - "node": ">=16" - } - }, - "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==", - "license": "MIT", - "dependencies": { - "forwarded": "0.2.0", - "ipaddr.js": "1.9.1" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/qs": { - "version": "6.14.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.0.tgz", - "integrity": "sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==", - "license": "BSD-3-Clause", - "dependencies": { - "side-channel": "^1.1.0" - }, - "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==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/raw-body": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-3.0.0.tgz", - "integrity": "sha512-RmkhL8CAyCRPXCE28MMH0z2PNWQBNk2Q09ZdxM9IOOXwxwZbN+qbWaatPkdkWIKL2ZVDImrN/pK5HTRz2PcS4g==", - "license": "MIT", - "dependencies": { - "bytes": "3.1.2", - "http-errors": "2.0.0", - "iconv-lite": "0.6.3", - "unpipe": "1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/router": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/router/-/router-2.2.0.tgz", - "integrity": "sha512-nLTrUKm2UyiL7rlhapu/Zl45FwNgkZGaCpZbIHajDYgwlJCOzLSk+cIPAnsEqV955GjILJnKbdQC1nVPz+gAYQ==", - "license": "MIT", - "dependencies": { - "debug": "^4.4.0", - "depd": "^2.0.0", - "is-promise": "^4.0.0", - "parseurl": "^1.3.3", - "path-to-regexp": "^8.0.0" - }, - "engines": { - "node": ">= 18" - } - }, - "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" - } - ], - "license": "MIT" - }, - "node_modules/safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "license": "MIT" - }, - "node_modules/send": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/send/-/send-1.2.0.tgz", - "integrity": "sha512-uaW0WwXKpL9blXE2o0bRhoL2EGXIrZxQ2ZQ4mgcfoBxdFmQold+qWsD2jLrfZ0trjKL6vOw0j//eAwcALFjKSw==", - "license": "MIT", - "dependencies": { - "debug": "^4.3.5", - "encodeurl": "^2.0.0", - "escape-html": "^1.0.3", - "etag": "^1.8.1", - "fresh": "^2.0.0", - "http-errors": "^2.0.0", - "mime-types": "^3.0.1", - "ms": "^2.1.3", - "on-finished": "^2.4.1", - "range-parser": "^1.2.1", - "statuses": "^2.0.1" - }, - "engines": { - "node": ">= 18" - } - }, - "node_modules/serve-static": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-2.2.0.tgz", - "integrity": "sha512-61g9pCh0Vnh7IutZjtLGGpTA355+OPn2TyDv/6ivP2h/AdAVX9azsoxmg2/M6nZeQZNYBEwIcsne1mJd9oQItQ==", - "license": "MIT", - "dependencies": { - "encodeurl": "^2.0.0", - "escape-html": "^1.0.3", - "parseurl": "^1.3.3", - "send": "^1.2.0" - }, - "engines": { - "node": ">= 18" - } - }, - "node_modules/setprototypeof": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", - "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", - "license": "ISC" - }, - "node_modules/side-channel": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", - "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "object-inspect": "^1.13.3", - "side-channel-list": "^1.0.0", - "side-channel-map": "^1.0.1", - "side-channel-weakmap": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/side-channel-list": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", - "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "object-inspect": "^1.13.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/side-channel-map": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", - "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.5", - "object-inspect": "^1.13.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/side-channel-weakmap": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", - "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.5", - "object-inspect": "^1.13.3", - "side-channel-map": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/statuses": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz", - "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==", - "license": "MIT", - "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==", - "license": "MIT", - "engines": { - "node": ">=0.6" - } - }, - "node_modules/type-is": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-2.0.1.tgz", - "integrity": "sha512-OZs6gsjF4vMp32qrCbiVSkrFmXtG/AZhY3t0iAMrMBiAZyV9oALtXO8hsrHbMXF9x6L3grlFuwW2oAz7cav+Gw==", - "license": "MIT", - "dependencies": { - "content-type": "^1.0.5", - "media-typer": "^1.1.0", - "mime-types": "^3.0.0" - }, - "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==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "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==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "license": "ISC" - } - } -} diff --git a/docs/3-web-servers/07-get-post/_samples/forum/package.json b/docs/3-web-servers/07-get-post/_samples/forum/package.json deleted file mode 100644 index 14dec7148..000000000 --- a/docs/3-web-servers/07-get-post/_samples/forum/package.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "name": "forum", - "dependencies": { - "express": "^5.1.0" - } -} diff --git a/docs/3-web-servers/07-get-post/_samples/post-request/.gitignore b/docs/3-web-servers/07-get-post/_samples/post-request/.gitignore deleted file mode 100644 index 07e6e472c..000000000 --- a/docs/3-web-servers/07-get-post/_samples/post-request/.gitignore +++ /dev/null @@ -1 +0,0 @@ -/node_modules diff --git a/docs/3-web-servers/07-get-post/_samples/post-request/main.mjs b/docs/3-web-servers/07-get-post/_samples/post-request/main.mjs deleted file mode 100644 index f34b4360c..000000000 --- a/docs/3-web-servers/07-get-post/_samples/post-request/main.mjs +++ /dev/null @@ -1,13 +0,0 @@ -import express from "express"; - -const app = express(); - -app.use(express.urlencoded({ extended: true })); -app.use(express.static("./public")); - -app.post("/send", (request, response) => { - response.send( - `あなたの名前は${request.body.name}で、${request.body.age}歳ですね。`, - ); -}); -app.listen(3000); diff --git a/docs/3-web-servers/07-get-post/_samples/post-request/package-lock.json b/docs/3-web-servers/07-get-post/_samples/post-request/package-lock.json deleted file mode 100644 index ed1321c67..000000000 --- a/docs/3-web-servers/07-get-post/_samples/post-request/package-lock.json +++ /dev/null @@ -1,822 +0,0 @@ -{ - "name": "send-data-to-server", - "lockfileVersion": 3, - "requires": true, - "packages": { - "": { - "name": "send-data-to-server", - "dependencies": { - "express": "^5.1.0" - } - }, - "node_modules/accepts": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-2.0.0.tgz", - "integrity": "sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==", - "license": "MIT", - "dependencies": { - "mime-types": "^3.0.0", - "negotiator": "^1.0.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/body-parser": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-2.2.0.tgz", - "integrity": "sha512-02qvAaxv8tp7fBa/mw1ga98OGm+eCbqzJOKoRt70sLmfEEi+jyBYVTDGfCL/k06/4EMk/z01gCe7HoCH/f2LTg==", - "license": "MIT", - "dependencies": { - "bytes": "^3.1.2", - "content-type": "^1.0.5", - "debug": "^4.4.0", - "http-errors": "^2.0.0", - "iconv-lite": "^0.6.3", - "on-finished": "^2.4.1", - "qs": "^6.14.0", - "raw-body": "^3.0.0", - "type-is": "^2.0.0" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/bytes": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", - "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/call-bind-apply-helpers": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", - "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/call-bound": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", - "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.2", - "get-intrinsic": "^1.3.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/content-disposition": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-1.0.0.tgz", - "integrity": "sha512-Au9nRL8VNUut/XSzbQA38+M78dzP4D+eqg3gfJHMIHHYa3bg067xj1KxMUWj+VULbiZMowKngFFbKczUrNJ1mg==", - "license": "MIT", - "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==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/cookie": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz", - "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/cookie-signature": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.2.2.tgz", - "integrity": "sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg==", - "license": "MIT", - "engines": { - "node": ">=6.6.0" - } - }, - "node_modules/debug": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz", - "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==", - "license": "MIT", - "dependencies": { - "ms": "^2.1.3" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "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==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/dunder-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", - "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.1", - "es-errors": "^1.3.0", - "gopd": "^1.2.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "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==", - "license": "MIT" - }, - "node_modules/encodeurl": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", - "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/es-define-property": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", - "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-errors": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", - "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-object-atoms": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", - "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "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==", - "license": "MIT" - }, - "node_modules/etag": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/express": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/express/-/express-5.1.0.tgz", - "integrity": "sha512-DT9ck5YIRU+8GYzzU5kT3eHGA5iL+1Zd0EutOmTE9Dtk+Tvuzd23VBU+ec7HPNSTxXYO55gPV/hq4pSBJDjFpA==", - "license": "MIT", - "dependencies": { - "accepts": "^2.0.0", - "body-parser": "^2.2.0", - "content-disposition": "^1.0.0", - "content-type": "^1.0.5", - "cookie": "^0.7.1", - "cookie-signature": "^1.2.1", - "debug": "^4.4.0", - "encodeurl": "^2.0.0", - "escape-html": "^1.0.3", - "etag": "^1.8.1", - "finalhandler": "^2.1.0", - "fresh": "^2.0.0", - "http-errors": "^2.0.0", - "merge-descriptors": "^2.0.0", - "mime-types": "^3.0.0", - "on-finished": "^2.4.1", - "once": "^1.4.0", - "parseurl": "^1.3.3", - "proxy-addr": "^2.0.7", - "qs": "^6.14.0", - "range-parser": "^1.2.1", - "router": "^2.2.0", - "send": "^1.1.0", - "serve-static": "^2.2.0", - "statuses": "^2.0.1", - "type-is": "^2.0.1", - "vary": "^1.1.2" - }, - "engines": { - "node": ">= 18" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" - } - }, - "node_modules/finalhandler": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-2.1.0.tgz", - "integrity": "sha512-/t88Ty3d5JWQbWYgaOGCCYfXRwV1+be02WqYYlL6h0lEiUAMPM8o8qKGO01YIkOHzka2up08wvgYD0mDiI+q3Q==", - "license": "MIT", - "dependencies": { - "debug": "^4.4.0", - "encodeurl": "^2.0.0", - "escape-html": "^1.0.3", - "on-finished": "^2.4.1", - "parseurl": "^1.3.3", - "statuses": "^2.0.1" - }, - "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==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/fresh": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-2.0.0.tgz", - "integrity": "sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/function-bind": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", - "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-intrinsic": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", - "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.2", - "es-define-property": "^1.0.1", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.1.1", - "function-bind": "^1.1.2", - "get-proto": "^1.0.1", - "gopd": "^1.2.0", - "has-symbols": "^1.1.0", - "hasown": "^2.0.2", - "math-intrinsics": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", - "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", - "license": "MIT", - "dependencies": { - "dunder-proto": "^1.0.1", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/gopd": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", - "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-symbols": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", - "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/hasown": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", - "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", - "license": "MIT", - "dependencies": { - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "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==", - "license": "MIT", - "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/http-errors/node_modules/statuses": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", - "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/iconv-lite": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", - "license": "MIT", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - }, - "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==", - "license": "ISC" - }, - "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==", - "license": "MIT", - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/is-promise": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-4.0.0.tgz", - "integrity": "sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==", - "license": "MIT" - }, - "node_modules/math-intrinsics": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", - "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/media-typer": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-1.1.0.tgz", - "integrity": "sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/merge-descriptors": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-2.0.0.tgz", - "integrity": "sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g==", - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/mime-db": { - "version": "1.54.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz", - "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime-types": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.1.tgz", - "integrity": "sha512-xRc4oEhT6eaBpU1XF7AjpOFD+xQmXNB5OVKwp4tqCuBpHLS/ZbBDrc07mYTDqVMg6PfxUjjNp85O6Cd2Z/5HWA==", - "license": "MIT", - "dependencies": { - "mime-db": "^1.54.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "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==", - "license": "MIT" - }, - "node_modules/negotiator": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-1.0.0.tgz", - "integrity": "sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/object-inspect": { - "version": "1.13.4", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", - "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/on-finished": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", - "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", - "license": "MIT", - "dependencies": { - "ee-first": "1.1.1" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "license": "ISC", - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/parseurl": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/path-to-regexp": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-8.2.0.tgz", - "integrity": "sha512-TdrF7fW9Rphjq4RjrW0Kp2AW0Ahwu9sRGTkS6bvDi0SCwZlEZYmcfDbEsTz8RVk0EHIS/Vd1bv3JhG+1xZuAyQ==", - "license": "MIT", - "engines": { - "node": ">=16" - } - }, - "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==", - "license": "MIT", - "dependencies": { - "forwarded": "0.2.0", - "ipaddr.js": "1.9.1" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/qs": { - "version": "6.14.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.0.tgz", - "integrity": "sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==", - "license": "BSD-3-Clause", - "dependencies": { - "side-channel": "^1.1.0" - }, - "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==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/raw-body": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-3.0.0.tgz", - "integrity": "sha512-RmkhL8CAyCRPXCE28MMH0z2PNWQBNk2Q09ZdxM9IOOXwxwZbN+qbWaatPkdkWIKL2ZVDImrN/pK5HTRz2PcS4g==", - "license": "MIT", - "dependencies": { - "bytes": "3.1.2", - "http-errors": "2.0.0", - "iconv-lite": "0.6.3", - "unpipe": "1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/router": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/router/-/router-2.2.0.tgz", - "integrity": "sha512-nLTrUKm2UyiL7rlhapu/Zl45FwNgkZGaCpZbIHajDYgwlJCOzLSk+cIPAnsEqV955GjILJnKbdQC1nVPz+gAYQ==", - "license": "MIT", - "dependencies": { - "debug": "^4.4.0", - "depd": "^2.0.0", - "is-promise": "^4.0.0", - "parseurl": "^1.3.3", - "path-to-regexp": "^8.0.0" - }, - "engines": { - "node": ">= 18" - } - }, - "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" - } - ], - "license": "MIT" - }, - "node_modules/safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "license": "MIT" - }, - "node_modules/send": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/send/-/send-1.2.0.tgz", - "integrity": "sha512-uaW0WwXKpL9blXE2o0bRhoL2EGXIrZxQ2ZQ4mgcfoBxdFmQold+qWsD2jLrfZ0trjKL6vOw0j//eAwcALFjKSw==", - "license": "MIT", - "dependencies": { - "debug": "^4.3.5", - "encodeurl": "^2.0.0", - "escape-html": "^1.0.3", - "etag": "^1.8.1", - "fresh": "^2.0.0", - "http-errors": "^2.0.0", - "mime-types": "^3.0.1", - "ms": "^2.1.3", - "on-finished": "^2.4.1", - "range-parser": "^1.2.1", - "statuses": "^2.0.1" - }, - "engines": { - "node": ">= 18" - } - }, - "node_modules/serve-static": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-2.2.0.tgz", - "integrity": "sha512-61g9pCh0Vnh7IutZjtLGGpTA355+OPn2TyDv/6ivP2h/AdAVX9azsoxmg2/M6nZeQZNYBEwIcsne1mJd9oQItQ==", - "license": "MIT", - "dependencies": { - "encodeurl": "^2.0.0", - "escape-html": "^1.0.3", - "parseurl": "^1.3.3", - "send": "^1.2.0" - }, - "engines": { - "node": ">= 18" - } - }, - "node_modules/setprototypeof": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", - "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", - "license": "ISC" - }, - "node_modules/side-channel": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", - "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "object-inspect": "^1.13.3", - "side-channel-list": "^1.0.0", - "side-channel-map": "^1.0.1", - "side-channel-weakmap": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/side-channel-list": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", - "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "object-inspect": "^1.13.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/side-channel-map": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", - "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.5", - "object-inspect": "^1.13.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/side-channel-weakmap": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", - "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.5", - "object-inspect": "^1.13.3", - "side-channel-map": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/statuses": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz", - "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==", - "license": "MIT", - "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==", - "license": "MIT", - "engines": { - "node": ">=0.6" - } - }, - "node_modules/type-is": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-2.0.1.tgz", - "integrity": "sha512-OZs6gsjF4vMp32qrCbiVSkrFmXtG/AZhY3t0iAMrMBiAZyV9oALtXO8hsrHbMXF9x6L3grlFuwW2oAz7cav+Gw==", - "license": "MIT", - "dependencies": { - "content-type": "^1.0.5", - "media-typer": "^1.1.0", - "mime-types": "^3.0.0" - }, - "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==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "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==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "license": "ISC" - } - } -} diff --git a/docs/3-web-servers/07-get-post/_samples/post-request/package.json b/docs/3-web-servers/07-get-post/_samples/post-request/package.json deleted file mode 100644 index 1f3a6a1c9..000000000 --- a/docs/3-web-servers/07-get-post/_samples/post-request/package.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "name": "send-data-to-server", - "dependencies": { - "express": "^5.1.0" - } -} diff --git a/docs/3-web-servers/07-get-post/_samples/post-request/public/index.html b/docs/3-web-servers/07-get-post/_samples/post-request/public/index.html deleted file mode 100644 index 84f040ffc..000000000 --- a/docs/3-web-servers/07-get-post/_samples/post-request/public/index.html +++ /dev/null @@ -1,14 +0,0 @@ - - - - - フォーム - - -
                                    - - - -
                                    - - diff --git a/docs/3-web-servers/07-get-post/index.mdx b/docs/3-web-servers/07-get-post/index.mdx deleted file mode 100644 index cea546ba9..000000000 --- a/docs/3-web-servers/07-get-post/index.mdx +++ /dev/null @@ -1,123 +0,0 @@ ---- -title: HTTPリクエストメソッド ---- - -import networkDevtool1 from "./network-devtool-1.mp4"; -import networkDevtool2 from "./network-devtool-2.mp4"; - -## リクエストの種類 - -{/* prettier-ignore */} -クライアントからサーバーへの要求をリクエストと言いました。HTTPのリクエストには、**メソッド**と呼ばれる区分があります。 - -今まで扱ってきたのはその中でもメソッドがGETである、**GETリクエスト**と呼ばれるものになります。 - -GETリクエストでサーバーにデータを送信する場合、前頁で扱ったように、クエリパラメータとしてURLの末尾に付加するしかありませんが、この方式だと困ってしまうことがあります。例えばパスワードなどを入力したときにURLにパスワード情報が載ってしまい機密情報の漏洩につながります。また、URLの長さの制限のため、大量の情報は送信できません。 - -そこで用いるのがメソッドがPOSTであるHTTPリクエストの、**POSTリクエスト**です。POSTリクエストでは、クエリパラメータとは別に、リクエストボディと呼ばれる領域を使って大容量のデータを送信できます。 - -![HTTPメソッドの比較](./method-comparison.png) - -前頁の例を、POSTリクエストを用いて書き直してみましょう。`form`要素の`method`属性に`post`を指定することで、ブラウザは送信ボタンが押されたときにPOSTリクエストを発行します。 - -```html title="public/index.html" - - - - - フォーム - - -
                                    - - - -
                                    - - -``` - -```javascript title="main.mjs" -import express from "express"; - -const app = express(); - -app.use(express.urlencoded({ extended: true })); -app.use(express.static("./public")); - -app.post("/send", (request, response) => { - response.send( - `あなたの名前は${request.body.name}で、${request.body.age}歳ですね。`, - ); -}); -app.listen(3000); -``` - - - -これまで利用していたExpressの[`get`メソッド](https://expressjs.com/ja/api.html#app.get.method)では、GETリクエストしか受け付けられないため、`/send`へのPOSTリクエストを受け付けるために[`post`メソッド](https://expressjs.com/ja/api.html#app.post.method)を利用しています。 - -{/* prettier-ignore */} -クエリパラメータには、`request`オブジェクトの
                                    `query`プロパティからアクセスできましたが、リクエストボディには、`request`オブジェクトの`body`プロパティからアクセスできます。 - -`app.use(express.urlencoded({ extended: true }));`は、リクエストボディの解釈方法を定めています。HTMLのフォームが送信されたとき、ブラウザが発行するPOSTリクエストのリクエストボディは、クエリパラメータと同じくURLエンコードされた形式で記述されます。[`express.urlencoded`関数](https://expressjs.com/ja/api.html#express.urlencoded)は、URLエンコードされたリクエストボディを読み取り、`request.body`にオブジェクトの形式でデータを保存する役割を担っています。 - -このWebサイトにアクセスし、以下のように入力します。 - -![名前と年齢を入力し、これから送信する。](post-request.png) - -送信ボタンをクリックすると`http://localhost:3000/send`に移り、以下のような画面が表示されます。GETリクエストの時と違い、クエリパラメータがURLに表示されていないことが分かります。 - -![送信後、URLにクエリパラメータが表示されていない。](post-request-2.png) - -![GETリクエストとPOSTリクエスト](requestAndResponse.png) - -## ブラウザの通信を覗いてみる - -ブラウザの開発者ツールには、ブラウザの行うネットワーク通信を監視するツールが搭載されています。これを使い、実際にPOSTリクエストの中身がどうなっているか覗いてみましょう。 - -開発者ツールの`Network`タブを開き、フォームに文字を入力して送信してみます。 - -そして`Name`欄の`send`をクリックし、`Headers`を選択すると`Request Method`が`POST`になっています。 - -

                                    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