From c6d9611e8163f4d608292bd1a9dc0d37f9c862f3 Mon Sep 17 00:00:00 2001 From: Philippe Torrel Date: Tue, 18 Aug 2026 14:27:34 +0200 Subject: [PATCH] --- 06_js-debug/faq/divide-example.html | 25 + 06_js-debug/faq/divide.ts | 5 + 06_js-debug/faq/extraction-bsp.html | 33 + .../uebungen/u01_bibverwaltung/solution.html | 73 ++ .../uebungen/u02_extraction/solution.html | 86 +++ 06_js-debug/uebungen/u03_dry/solution.html | 66 ++ .../u04_dry-benutzerzugang/solution.html | 295 ++++++++ .../u05_error-format-date/solution.html | 43 ++ .../uebungen/u06_error-benutzer/index.html | 2 +- .../uebungen/u06_error-benutzer/solution.html | 57 ++ .../u07_check-temperature/solution.html | 39 ++ .../u08_benutzer-anzeigen/solution.html | 56 ++ .../u09_parse-user-data/solution.html | 55 ++ .../uebungen/u10_einkaufspreis/solution.js | 40 ++ .../uebungen/u11_calculate-avg-error/index.js | 8 + .../u11_calculate-avg-error/solution.js | 0 .../uebungen/u12_find-maximum-error/index.js | 14 + .../u12_find-maximum-error/solution.js | 0 .../u13_temp-converter/assets/js/main.js | 17 + .../u13_temp-converter/assets/js/preset.js | 45 ++ .../uebungen/u13_temp-converter/index.html | 32 + .../uebungen/u14_counter-error/index.html | 51 ++ .../uebungen/u14_counter-error/solution.html | 44 ++ .../uebungen/uebungen-11-14-js-debug.zip | Bin 0 -> 6034 bytes .../tag46/03_dry/03_range-helper.js | 4 + .../tag46/04_error-types/03_type-error.html | 2 + .../tag46/05_logical-error/logical-error.html | 10 +- .../tag47/01_demo-form-bug/assets/js/main.js | 57 ++ .../tag47/01_demo-form-bug/index.html | 41 ++ .../tag47/01_demo-form-bug/package-lock.json | 644 ++++++++++++++++++ .../tag47/01_demo-form-bug/package.json | 14 + webseite-simple/about.html | 31 - webseite-simple/contact.html | 31 - webseite-simple/imprint.html | 31 - webseite-simple/index.html | 31 - 35 files changed, 1852 insertions(+), 130 deletions(-) create mode 100644 06_js-debug/faq/divide-example.html create mode 100644 06_js-debug/faq/divide.ts create mode 100644 06_js-debug/faq/extraction-bsp.html create mode 100644 06_js-debug/uebungen/u01_bibverwaltung/solution.html create mode 100644 06_js-debug/uebungen/u02_extraction/solution.html create mode 100644 06_js-debug/uebungen/u03_dry/solution.html create mode 100644 06_js-debug/uebungen/u04_dry-benutzerzugang/solution.html create mode 100644 06_js-debug/uebungen/u05_error-format-date/solution.html create mode 100644 06_js-debug/uebungen/u06_error-benutzer/solution.html create mode 100644 06_js-debug/uebungen/u07_check-temperature/solution.html create mode 100644 06_js-debug/uebungen/u08_benutzer-anzeigen/solution.html create mode 100644 06_js-debug/uebungen/u09_parse-user-data/solution.html create mode 100644 06_js-debug/uebungen/u10_einkaufspreis/solution.js create mode 100644 06_js-debug/uebungen/u11_calculate-avg-error/index.js rename webseite-simple/assets/css/main.css => 06_js-debug/uebungen/u11_calculate-avg-error/solution.js (100%) create mode 100644 06_js-debug/uebungen/u12_find-maximum-error/index.js rename webseite-simple/assets/js/main.js => 06_js-debug/uebungen/u12_find-maximum-error/solution.js (100%) create mode 100644 06_js-debug/uebungen/u13_temp-converter/assets/js/main.js create mode 100644 06_js-debug/uebungen/u13_temp-converter/assets/js/preset.js create mode 100644 06_js-debug/uebungen/u13_temp-converter/index.html create mode 100644 06_js-debug/uebungen/u14_counter-error/index.html create mode 100644 06_js-debug/uebungen/u14_counter-error/solution.html create mode 100644 06_js-debug/uebungen/uebungen-11-14-js-debug.zip create mode 100644 06_js-debug/unterricht/tag47/01_demo-form-bug/assets/js/main.js create mode 100644 06_js-debug/unterricht/tag47/01_demo-form-bug/index.html create mode 100644 06_js-debug/unterricht/tag47/01_demo-form-bug/package-lock.json create mode 100644 06_js-debug/unterricht/tag47/01_demo-form-bug/package.json delete mode 100644 webseite-simple/about.html delete mode 100644 webseite-simple/contact.html delete mode 100644 webseite-simple/imprint.html delete mode 100644 webseite-simple/index.html diff --git a/06_js-debug/faq/divide-example.html b/06_js-debug/faq/divide-example.html new file mode 100644 index 0000000..eba2e0a --- /dev/null +++ b/06_js-debug/faq/divide-example.html @@ -0,0 +1,25 @@ + + + + + + Divide + + + +
+
+

Divide

+
+
+ + + diff --git a/06_js-debug/faq/divide.ts b/06_js-debug/faq/divide.ts new file mode 100644 index 0000000..bbaf32c --- /dev/null +++ b/06_js-debug/faq/divide.ts @@ -0,0 +1,5 @@ +function divide(a, b) { + return a / b; +} + +console.log(divide(10)); diff --git a/06_js-debug/faq/extraction-bsp.html b/06_js-debug/faq/extraction-bsp.html new file mode 100644 index 0000000..12aad16 --- /dev/null +++ b/06_js-debug/faq/extraction-bsp.html @@ -0,0 +1,33 @@ + + + + + + Extraction sum + + + +
+
+

Extraction sum

+
+
+ + + diff --git a/06_js-debug/uebungen/u01_bibverwaltung/solution.html b/06_js-debug/uebungen/u01_bibverwaltung/solution.html new file mode 100644 index 0000000..e9483db --- /dev/null +++ b/06_js-debug/uebungen/u01_bibverwaltung/solution.html @@ -0,0 +1,73 @@ + + + + + + Exercise: Nested If-Statements + + +

Exercise: Nested If-Statements

+ + + + diff --git a/06_js-debug/uebungen/u02_extraction/solution.html b/06_js-debug/uebungen/u02_extraction/solution.html new file mode 100644 index 0000000..9b18945 --- /dev/null +++ b/06_js-debug/uebungen/u02_extraction/solution.html @@ -0,0 +1,86 @@ + + + + + + Exercise: Extracted Library Operations + + +

Exercise: Extracted Library Operations

+ + + + diff --git a/06_js-debug/uebungen/u03_dry/solution.html b/06_js-debug/uebungen/u03_dry/solution.html new file mode 100644 index 0000000..da183ed --- /dev/null +++ b/06_js-debug/uebungen/u03_dry/solution.html @@ -0,0 +1,66 @@ + + + + + + Exercise: Don't Repeat Yourself (DRY) + + +

Exercise: Don't Repeat Yourself (DRY)

+

+ In dieser Übung überarbeitest du einen Teil des Codes nach dem DRY-Prinzip (Don't Repeat Yourself). Du arbeitest + mit einem Skript, das Wetterberichte für mehrere Städte protokolliert, einschließlich zusätzlicher Wetterdaten wie + der Windgeschwindigkeit. Deine Aufgabe ist es, Code-Wiederholungen zu vermeiden, indem du Arrays, Schleifen und + Funktionen verwendest. Erstelle eine zusätzliche formatWeatherReport(report) Funktion, die ein + Wetterberichtsobjekt als Parameter annimmt. Sie sollte einen formatierten Wetterberichtstring zurückgeben. +

+ + + + diff --git a/06_js-debug/uebungen/u04_dry-benutzerzugang/solution.html b/06_js-debug/uebungen/u04_dry-benutzerzugang/solution.html new file mode 100644 index 0000000..9f22c20 --- /dev/null +++ b/06_js-debug/uebungen/u04_dry-benutzerzugang/solution.html @@ -0,0 +1,295 @@ + + + + + + Advanced If-Else Statements (Enhanced Nesting) + + + +
+
+

Advanced If-Else Statements (Enhanced Nesting)

+
+
+ + + diff --git a/06_js-debug/uebungen/u05_error-format-date/solution.html b/06_js-debug/uebungen/u05_error-format-date/solution.html new file mode 100644 index 0000000..b48e0f6 --- /dev/null +++ b/06_js-debug/uebungen/u05_error-format-date/solution.html @@ -0,0 +1,43 @@ + + + + + + Übung 05: FormatDate Fehler + + + +
+
+

Übung 05: FormatDate Fehler

+
+
+ + + diff --git a/06_js-debug/uebungen/u06_error-benutzer/index.html b/06_js-debug/uebungen/u06_error-benutzer/index.html index 9261022..d579592 100644 --- a/06_js-debug/uebungen/u06_error-benutzer/index.html +++ b/06_js-debug/uebungen/u06_error-benutzer/index.html @@ -1,4 +1,4 @@ - + diff --git a/06_js-debug/uebungen/u06_error-benutzer/solution.html b/06_js-debug/uebungen/u06_error-benutzer/solution.html new file mode 100644 index 0000000..086754f --- /dev/null +++ b/06_js-debug/uebungen/u06_error-benutzer/solution.html @@ -0,0 +1,57 @@ + + + + + + Übung 6: Benutzer erstellen + + + +
+
+

Übung 6: Benutzer erstellen

+
+
+ + + diff --git a/06_js-debug/uebungen/u07_check-temperature/solution.html b/06_js-debug/uebungen/u07_check-temperature/solution.html new file mode 100644 index 0000000..bdfb01d --- /dev/null +++ b/06_js-debug/uebungen/u07_check-temperature/solution.html @@ -0,0 +1,39 @@ + + + + + + Übung 7: checkTemperature Fehler + + + +
+
+

Übung 7: checkTemperature Fehler

+

Versuche, den Code auszuführen, den Fehler zu identifizieren und ihn zu beheben.

+
+
+ + + diff --git a/06_js-debug/uebungen/u08_benutzer-anzeigen/solution.html b/06_js-debug/uebungen/u08_benutzer-anzeigen/solution.html new file mode 100644 index 0000000..d165475 --- /dev/null +++ b/06_js-debug/uebungen/u08_benutzer-anzeigen/solution.html @@ -0,0 +1,56 @@ + + + + + + Übung 8: Benutzer anzeigen + + + +
+
+

Übung 8: Benutzer anzeigen

+

+ Der folgende Code enthält mehrere Referenzfehler, die über verschiedene Teile des Codes verteilt sind. Deine + Aufgabe ist es, alle Referenzfehler zu identifizieren und zu beheben, um sicherzustellen, dass der Code + korrekt läuft. +

+
+
+ + + diff --git a/06_js-debug/uebungen/u09_parse-user-data/solution.html b/06_js-debug/uebungen/u09_parse-user-data/solution.html new file mode 100644 index 0000000..2752893 --- /dev/null +++ b/06_js-debug/uebungen/u09_parse-user-data/solution.html @@ -0,0 +1,55 @@ + + + + + + Übung 9: parseUserData Fehler + + + +
+
+

Übung 9: parseUserData Fehler

+

Die Kommentare zeigen das erwartete Ergebnis.

+
+
+ + + diff --git a/06_js-debug/uebungen/u10_einkaufspreis/solution.js b/06_js-debug/uebungen/u10_einkaufspreis/solution.js new file mode 100644 index 0000000..ea756e4 --- /dev/null +++ b/06_js-debug/uebungen/u10_einkaufspreis/solution.js @@ -0,0 +1,40 @@ +function calculateTotalPrice(items) { + let total = 0; + items.forEach((item) => { + total += Number(item.price); // Number parsen + }); + return Number(total.toFixed(2)); +} + +const shoppingCart = [ + { name: 'Laptop', price: 999.99 }, + { name: 'Smartphone', price: 599.99 }, // string zu zahl + { name: 'Headphones', price: 199.99 }, // cost -> price +]; + +const totalPrice = calculateTotalPrice(shoppingCart); +console.log('Total Price:', Number(totalPrice).toFixed(2)); + +function displayUserProfile(user) { + console.log(`Name: ${user.name}`); + console.log(`Age: ${user.age}`); + console.log(`Email: ${user.email.toLowerCase()}`); +} + +const userProfile = { + name: 'Sarah', + age: 'twenty-five', + email: 'SARAH@EXAMPLE.COM', +}; + +displayUserProfile(userProfile); + +function getFirstItemName(items) { + return items[0].name.toUpperCase(); +} + +console.log('First Item:', getFirstItemName(shoppingCart)); // => LAPTOP + +const numberList = '1,2,3,4,5'; +const sum = numberList.split(',').reduce((acc, num) => acc + Number(num), 0); //mit split zu einem arr +console.log('Sum:', sum); // => 15 diff --git a/06_js-debug/uebungen/u11_calculate-avg-error/index.js b/06_js-debug/uebungen/u11_calculate-avg-error/index.js new file mode 100644 index 0000000..5f360da --- /dev/null +++ b/06_js-debug/uebungen/u11_calculate-avg-error/index.js @@ -0,0 +1,8 @@ +function calculateAverage(numbers) { + const total = numbers.reduce((sum, num) => sum + num, 10); + const average = total / numbers; + return average; +} + +console.log(calculateAverage([10, 20, 30])); // => 20 +console.log(calculateAverage([5, 15, 25, 35])); // => 20 diff --git a/webseite-simple/assets/css/main.css b/06_js-debug/uebungen/u11_calculate-avg-error/solution.js similarity index 100% rename from webseite-simple/assets/css/main.css rename to 06_js-debug/uebungen/u11_calculate-avg-error/solution.js diff --git a/06_js-debug/uebungen/u12_find-maximum-error/index.js b/06_js-debug/uebungen/u12_find-maximum-error/index.js new file mode 100644 index 0000000..16d8a6f --- /dev/null +++ b/06_js-debug/uebungen/u12_find-maximum-error/index.js @@ -0,0 +1,14 @@ +// logical error +function findMaximum(a, b, c) { + if (a > b && a > c) { + return a; + } else if (b > a && b > c) { + return b; + } else { + return c; + } +} + +console.log(findMaximum(1, 2, 3)); // => 3 +console.log(findMaximum(102, 59, 18)); // => 102 +console.log(findMaximum(532, 532, 345)); // => 532 diff --git a/webseite-simple/assets/js/main.js b/06_js-debug/uebungen/u12_find-maximum-error/solution.js similarity index 100% rename from webseite-simple/assets/js/main.js rename to 06_js-debug/uebungen/u12_find-maximum-error/solution.js diff --git a/06_js-debug/uebungen/u13_temp-converter/assets/js/main.js b/06_js-debug/uebungen/u13_temp-converter/assets/js/main.js new file mode 100644 index 0000000..a9e0d8d --- /dev/null +++ b/06_js-debug/uebungen/u13_temp-converter/assets/js/main.js @@ -0,0 +1,17 @@ +'use strict'; + +(() => { + // === DOM & VARS ======= + const DOM = {}; + + // === INIT ============= + const init = () => {}; + + // === EVENTHANDLER ===== + + // === XHR/FETCH ======== + + // === FUNCTIONS ======== + + init(); +})(); diff --git a/06_js-debug/uebungen/u13_temp-converter/assets/js/preset.js b/06_js-debug/uebungen/u13_temp-converter/assets/js/preset.js new file mode 100644 index 0000000..c5ee928 --- /dev/null +++ b/06_js-debug/uebungen/u13_temp-converter/assets/js/preset.js @@ -0,0 +1,45 @@ +'use strict'; + +(() => { + // ===== DOM ===== + const DOM = { + temperatureForm: document.querySelector('#temperatureForm'), + celsiusInput: document.querySelector('#celsius'), + result: document.querySelector('#result'), + }; + + // ===== INIT ===== + const init = () => { + DOM.temperatureForm.addEventListener('submit', handleFormSubmit); + }; + + // ===== EVENT HANDLERS ===== + function handleFormSubmit(e) { + const celsius = DOM.celsiusInput.value; + + if (!isNaN(celsius)) { + alert('Please enter a valid number'); + return; + } + + const fahrenheit = convertToFahrenheit(celsius); + + displayResult(fahrenheit); + + DOM.temperatureForm.reset(); + } + + // ===== FUNCTIONS ===== + function convertToFahrenheit(celsius) { + if (typeof celsius === 'string') return 0; + + return (celsius * 9) / 5 + 32; + } + + function displayResult(result) { + DOM.result.textContent = result.toFixed(2); + } + + // ===== CALL INIT ===== + init(); +})(); diff --git a/06_js-debug/uebungen/u13_temp-converter/index.html b/06_js-debug/uebungen/u13_temp-converter/index.html new file mode 100644 index 0000000..dd8ec54 --- /dev/null +++ b/06_js-debug/uebungen/u13_temp-converter/index.html @@ -0,0 +1,32 @@ + + + + + + Temperature Converter + + + + +
+

Temperature Converter

+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+ +
Result: °F
+
+ + diff --git a/06_js-debug/uebungen/u14_counter-error/index.html b/06_js-debug/uebungen/u14_counter-error/index.html new file mode 100644 index 0000000..3018487 --- /dev/null +++ b/06_js-debug/uebungen/u14_counter-error/index.html @@ -0,0 +1,51 @@ + + + + + + Counter Example + + + +
+

Counter

+ +
+
+
+ Count: + +
+ +
+
+
+ + + + diff --git a/06_js-debug/uebungen/u14_counter-error/solution.html b/06_js-debug/uebungen/u14_counter-error/solution.html new file mode 100644 index 0000000..84fbc04 --- /dev/null +++ b/06_js-debug/uebungen/u14_counter-error/solution.html @@ -0,0 +1,44 @@ + + + + + + Counter Example + + + +
+

Counter

+ +
+
+
+ Count: + +
+ +
+
+
+ + + + diff --git a/06_js-debug/uebungen/uebungen-11-14-js-debug.zip b/06_js-debug/uebungen/uebungen-11-14-js-debug.zip new file mode 100644 index 0000000000000000000000000000000000000000..354de1671c0928d406420daf462aac61d5238649 GIT binary patch literal 6034 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 AAOHXW literal 0 HcmV?d00001 diff --git a/06_js-debug/unterricht/tag46/03_dry/03_range-helper.js b/06_js-debug/unterricht/tag46/03_dry/03_range-helper.js index f1565fc..9f04d32 100644 --- a/06_js-debug/unterricht/tag46/03_dry/03_range-helper.js +++ b/06_js-debug/unterricht/tag46/03_dry/03_range-helper.js @@ -91,3 +91,7 @@ function range(startOrEnd, end, step) { return rangeFromStartToEnd(0, startOrEnd); } } + +// range(5); // => [0, 1, 2, 3, 4] +// range(1, 5); // => [1, 2, 3, 4] +// range(0, 20, 5); // => [0, 5, 10, 15] diff --git a/06_js-debug/unterricht/tag46/04_error-types/03_type-error.html b/06_js-debug/unterricht/tag46/04_error-types/03_type-error.html index c7a6eab..7c49513 100644 --- a/06_js-debug/unterricht/tag46/04_error-types/03_type-error.html +++ b/06_js-debug/unterricht/tag46/04_error-types/03_type-error.html @@ -33,6 +33,8 @@ console.log('Hello, ' + name); // => 'Hello, 42' <- implizite Typkonvertierung } + console.log(3 <= '3px'); // <- implizite Typkonvertierung -> 3 <= NaN -> false + greet(42); } diff --git a/06_js-debug/unterricht/tag46/05_logical-error/logical-error.html b/06_js-debug/unterricht/tag46/05_logical-error/logical-error.html index 84a33e1..04fc8f5 100644 --- a/06_js-debug/unterricht/tag46/05_logical-error/logical-error.html +++ b/06_js-debug/unterricht/tag46/05_logical-error/logical-error.html @@ -19,11 +19,11 @@ { const n = 10; - // if (n % 2 === 0) { - // console.log('odd'); // Annahme vertauscht - // } else { - // console.log('even'); - // } + if (n % 2 === 0) { + console.log('odd'); // Annahme vertauscht + } else { + console.log('even'); + } // const evenNumbers = _.range(11).filter((n) => n % 2); const evenNumbers = _.range(11).filter((n) => n % 2 === 0); diff --git a/06_js-debug/unterricht/tag47/01_demo-form-bug/assets/js/main.js b/06_js-debug/unterricht/tag47/01_demo-form-bug/assets/js/main.js new file mode 100644 index 0000000..e040173 --- /dev/null +++ b/06_js-debug/unterricht/tag47/01_demo-form-bug/assets/js/main.js @@ -0,0 +1,57 @@ +'use strict'; + +(() => { + // ===== DOM ===== + const DOM = { + calculateForm: document.querySelector('#calculateForm'), + firstNumberInput: document.querySelector('#firstNumber'), + secondNumberInput: document.querySelector('#secondNumber'), + result: document.querySelector('#result'), + }; + + // console.log(DOM); + + // ===== INIT ===== + const init = () => { + DOM.calculateForm.noValidate = true; // DOM.calculateForm.setAttribute('novalidate',''); + DOM.calculateForm.addEventListener('submit', handleFormSubmit); + }; + + // ===== EVENT HANDLERS ===== + function handleFormSubmit(e) { + e.preventDefault(); + + if (hasInputsEmptyValues(DOM.firstNumberInput, DOM.secondNumberInput)) { + alert('Please enter a number in both fields'); + return; + } + + const num1 = getNumberValue(DOM.firstNumberInput); + const num2 = getNumberValue(DOM.secondNumberInput); + + const sum = add(num1, num2); + + displayResult(sum); + DOM.calculateForm.reset(); + } + + // ===== FUNCTIONS ===== + const hasInputsEmptyValues = (inputOne, inputTwo) => { + // if (inputOne.value === '' || inputTwo.value === '') { + // return true; + // } else { + // return false; + // } + return inputOne.value === '' || inputTwo.value === ''; + }; + + const getNumberValue = (input) => Number(input.value); + const add = (a, b) => Number(a) + Number(b); + + const displayResult = (result) => { + DOM.result.textContent = result; + }; + + // ===== CALL INIT ===== + init(); +})(); diff --git a/06_js-debug/unterricht/tag47/01_demo-form-bug/index.html b/06_js-debug/unterricht/tag47/01_demo-form-bug/index.html new file mode 100644 index 0000000..bdb9c27 --- /dev/null +++ b/06_js-debug/unterricht/tag47/01_demo-form-bug/index.html @@ -0,0 +1,41 @@ + + + + + + Debugging Demo + + + + +
+

Debugging Demo

+ +
+
+
+ +
+ +
+
+
+ +
+
+ +
+ +
+
+
+ +
+ +
+
+ +
Result:
+
+ + diff --git a/06_js-debug/unterricht/tag47/01_demo-form-bug/package-lock.json b/06_js-debug/unterricht/tag47/01_demo-form-bug/package-lock.json new file mode 100644 index 0000000..403cb02 --- /dev/null +++ b/06_js-debug/unterricht/tag47/01_demo-form-bug/package-lock.json @@ -0,0 +1,644 @@ +{ + "name": "01_demo-form-bug", + "version": "1.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "01_demo-form-bug", + "version": "1.0.0", + "devDependencies": { + "http-server": "^14.1.1" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/async": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.6.tgz", + "integrity": "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==", + "dev": true, + "license": "MIT" + }, + "node_modules/basic-auth": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz", + "integrity": "sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==", + "dev": true, + "license": "MIT", + "dependencies": { + "safe-buffer": "5.1.2" + }, + "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==", + "dev": true, + "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==", + "dev": true, + "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/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, + "license": "MIT" + }, + "node_modules/corser": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/corser/-/corser-2.0.1.tgz", + "integrity": "sha512-utCYNzRSQIZNPIcGZdQc92UVJYAhtGAteCFg0yRaFm8f0P+CPtyGyHXJcGXnffjCybUCEx3FQ2G7U3/o9eIkVQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/debug": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "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==", + "dev": true, + "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/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==", + "dev": true, + "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==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-object-atoms": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.2.tgz", + "integrity": "sha512-HWcBoN6NileqtSydK2FqHbS/LoDd2pqrnQHLyJzBj4kOp/ky2MWMN694xOfkK8/SnUsW2DH7EfyVlydKCsm1Zw==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", + "dev": true, + "license": "MIT" + }, + "node_modules/follow-redirects": { + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.16.0.tgz", + "integrity": "sha512-y5rN/uOsadFT/JfYwhxRS5R7Qce+g3zG97+JrtFZlC9klX/W5hD7iiLzScI4nZqUS7DNUdhPgw4xI8W2LuXlUw==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "license": "MIT", + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "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==", + "dev": true, + "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==", + "dev": true, + "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==", + "dev": true, + "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==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "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==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasown": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.4.tgz", + "integrity": "sha512-T2UbfbBEF32wiepXIsMlTW9+dDYC6wMh/t/vYA4tuOMKqWz/n3vr1NFSxQiyP+zk2mXsoMA/i/7qV6LKut1t1A==", + "dev": true, + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "dev": true, + "license": "MIT", + "bin": { + "he": "bin/he" + } + }, + "node_modules/html-encoding-sniffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz", + "integrity": "sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==", + "dev": true, + "license": "MIT", + "dependencies": { + "whatwg-encoding": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/http-proxy": { + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", + "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/http-server": { + "version": "14.1.1", + "resolved": "https://registry.npmjs.org/http-server/-/http-server-14.1.1.tgz", + "integrity": "sha512-+cbxadF40UXd9T01zUHgA+rlo2Bg1Srer4+B4NwIHdaGxAGGv59nYRnGGDJ9LBk7alpS0US+J+bLLdQOOkJq4A==", + "dev": true, + "license": "MIT", + "dependencies": { + "basic-auth": "^2.0.1", + "chalk": "^4.1.2", + "corser": "^2.0.1", + "he": "^1.2.0", + "html-encoding-sniffer": "^3.0.0", + "http-proxy": "^1.18.1", + "mime": "^1.6.0", + "minimist": "^1.2.6", + "opener": "^1.5.1", + "portfinder": "^1.0.28", + "secure-compare": "3.0.1", + "union": "~0.5.0", + "url-join": "^4.0.1" + }, + "bin": { + "http-server": "bin/http-server" + }, + "engines": { + "node": ">=12" + } + }, + "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==", + "dev": true, + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "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==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "dev": true, + "license": "MIT", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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==", + "dev": true, + "license": "MIT" + }, + "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==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/opener": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/opener/-/opener-1.5.2.tgz", + "integrity": "sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==", + "dev": true, + "license": "(WTFPL OR MIT)", + "bin": { + "opener": "bin/opener-bin.js" + } + }, + "node_modules/portfinder": { + "version": "1.0.38", + "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.38.tgz", + "integrity": "sha512-rEwq/ZHlJIKw++XtLAO8PPuOQA/zaPJOZJ37BVuN97nLpMJeuDVLVGRwbFoBgLudgdTMP2hdRJP++H+8QOA3vg==", + "dev": true, + "license": "MIT", + "dependencies": { + "async": "^3.2.6", + "debug": "^4.3.6" + }, + "engines": { + "node": ">= 10.12" + } + }, + "node_modules/qs": { + "version": "6.15.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.15.3.tgz", + "integrity": "sha512-O9gl3zCl5h5blw1KGUzQKhA5oUXSl8rwUIM5o0S3nCXMliSvy5Dzx7/DJcI+SwgICv+IneSZwhBh1oSyEHA71A==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "es-define-property": "^1.0.1", + "side-channel": "^1.1.1" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true, + "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==", + "dev": true, + "license": "MIT" + }, + "node_modules/secure-compare": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/secure-compare/-/secure-compare-3.0.1.tgz", + "integrity": "sha512-AckIIV90rPDcBcglUwXPF3kg0P0qmPsPXAj6BBEENQE1p5yA1xfmDJzfi1Tappj37Pv2mVbKpL3Z1T+Nn7k1Qw==", + "dev": true, + "license": "MIT" + }, + "node_modules/side-channel": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.1.tgz", + "integrity": "sha512-6x6dK6zJdpTzF4sQeNYxwtvBzf6Eg4GtlesS94HOvTudUeyK2WXAaIfmDgsyslYrRBeFIlsi54AYsFGUuhmvrQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.4", + "side-channel-list": "^1.0.1", + "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.1", + "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.1.tgz", + "integrity": "sha512-mjn/0bi/oUURjc5Xl7IaWi/OJJJumuoJFQJfDDyO46+hBWsfaVM65TBHq2eoZBhzl9EchxOijpkbRC8SVBQU0w==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.4" + }, + "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==", + "dev": true, + "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==", + "dev": true, + "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/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/union": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/union/-/union-0.5.0.tgz", + "integrity": "sha512-N6uOhuW6zO95P3Mel2I2zMsbsanvvtgn6jVqJv4vbVcz/JN0OkL9suomjQGmWtxJQXOCqUJvquc1sMeNz/IwlA==", + "dev": true, + "dependencies": { + "qs": "^6.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/url-join": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/url-join/-/url-join-4.0.1.tgz", + "integrity": "sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA==", + "dev": true, + "license": "MIT" + }, + "node_modules/whatwg-encoding": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz", + "integrity": "sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==", + "deprecated": "Use @exodus/bytes instead for a more spec-conformant and faster implementation", + "dev": true, + "license": "MIT", + "dependencies": { + "iconv-lite": "0.6.3" + }, + "engines": { + "node": ">=12" + } + } + } +} diff --git a/06_js-debug/unterricht/tag47/01_demo-form-bug/package.json b/06_js-debug/unterricht/tag47/01_demo-form-bug/package.json new file mode 100644 index 0000000..99c7f07 --- /dev/null +++ b/06_js-debug/unterricht/tag47/01_demo-form-bug/package.json @@ -0,0 +1,14 @@ +{ + "name": "01_demo-form-bug", + "version": "1.0.0", + "description": "", + "main": "index.js", + "scripts": { + "dev": "npx http-server -c-1 -p 3000" + }, + "keywords": [], + "type": "module", + "devDependencies": { + "http-server": "^14.1.1" + } +} diff --git a/webseite-simple/about.html b/webseite-simple/about.html deleted file mode 100644 index 6c3a37d..0000000 --- a/webseite-simple/about.html +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - Webseite - - - - - - -
-
-

About

-

- Lorem ipsum dolor sit amet consectetur, adipisicing elit. Blanditiis ullam obcaecati iure quisquam odio qui - minima aspernatur tenetur praesentium rerum, tempore in veritatis quibusdam eum reprehenderit necessitatibus - corrupti facere dolor! -

-
-
- - diff --git a/webseite-simple/contact.html b/webseite-simple/contact.html deleted file mode 100644 index b006e6c..0000000 --- a/webseite-simple/contact.html +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - Webseite - - - - - - -
-
-

Home

-

- Lorem ipsum dolor sit amet consectetur, adipisicing elit. Blanditiis ullam obcaecati iure quisquam odio qui - minima aspernatur tenetur praesentium rerum, tempore in veritatis quibusdam eum reprehenderit necessitatibus - corrupti facere dolor! -

-
-
- - diff --git a/webseite-simple/imprint.html b/webseite-simple/imprint.html deleted file mode 100644 index b006e6c..0000000 --- a/webseite-simple/imprint.html +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - Webseite - - - - - - -
-
-

Home

-

- Lorem ipsum dolor sit amet consectetur, adipisicing elit. Blanditiis ullam obcaecati iure quisquam odio qui - minima aspernatur tenetur praesentium rerum, tempore in veritatis quibusdam eum reprehenderit necessitatibus - corrupti facere dolor! -

-
-
- - diff --git a/webseite-simple/index.html b/webseite-simple/index.html deleted file mode 100644 index b006e6c..0000000 --- a/webseite-simple/index.html +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - Webseite - - - - - - -
-
-

Home

-

- Lorem ipsum dolor sit amet consectetur, adipisicing elit. Blanditiis ullam obcaecati iure quisquam odio qui - minima aspernatur tenetur praesentium rerum, tempore in veritatis quibusdam eum reprehenderit necessitatibus - corrupti facere dolor! -

-
-
- -