how to convert promise into object [duplicate]

I’ve been asked to fetch data from (“https://jsonplaceholder.typicode.com/todos) ,
here’s the code:

const todo_list = document.querySelector(".task-list")

const logTodo = async () => {
    const response = await fetch("https://jsonplaceholder.typicode.com/todos");
    const data = await response.json();
    return data;
}
const comp_json = logTodo();

const appendListItem = (id) => {
    const list_item = document.createElement("li");
    const checkmark = document.createElement("img");
    const todo_text = document.createElement("p");
    list_item.appendChild(checkmark);
    list_item.appendChild(todo_text);
    todo_list.appendChild(list_item);
    todo_text.innerHTML = comp_json[id].title;
    if (comp_json[id].completed == true) {
        checkmark.setAttribute("src", "img/circle.svg");
        checkmark.setAttribute("alt", "unchecked checkmark");
        checkmark.setAttribute("class", "task-uncheck");
        todo_text.setAttribute("class", "task-undone");
    } else {
        checkmark.setAttribute("src", "img/check-mark.svg");
        checkmark.setAttribute("alt", "checkmark");
        checkmark.setAttribute("class", "task-checkmark");
        todo_text.setAttribute("class", "task-p");
    };
    console.log("done!")
};
for (let i = 0; i < comp_json.length; i++) {
    appendListItem(i);
}

literally every key is undefined, i can not reach any data from returned promise.

I was trying to get title key using this code:
comp_json[id].title, it returns error:
VM2629:1 Uncaught TypeError: Cannot read properties of undefined (reading 'title') at <anonymous>:1:14
I’ve been doing this task for past 4 hours, I can’t find my answer anywhere. what are your expectations??

ERR_CONNECTION_CLOSED on requests after 9s

I am creating a frontend client for generating AI images. On frontend I send with fetch a request to backend to generate a new image, then the backend requests a Stable Diffusion API which takes some time (10-15s on average) to respond with future image URL.
The problem is that after around 9s i get ERR_CONNECTION_CLOSED on frontend.
I am using ngrok, if it has anything to do with the problem.

I tried setting different timeouts on frontend and my backend but it doesn’t change much. I also tried setting abort signal timeout on 2min but it didn’t help.

Should I use WebSockets for this?
I also noticed that if any request from frontend lasts more than 9s it gets closed. (from this api https://dummyapis.com/dummy/delay-response)

Iterating over a multidimensional object to return a frequency count using a for-in loop. Given the code below, how can I find the number of cats?

Below are the pets of each of the following individuals. I would like to find the total number of cats.

 const tutorPetTypes = {
      'Sarah': ['cat'],
      'Jim': ['dog', 'dog'],
      'Joe': ['mouse'],
      'Róisín': ['cat','cat','cat','cat','cat','dog'],
      'Edd': ['lizard', 'cat'],
      'Lewis': ['bearded dragon', 'tortoise']
    }

    let totalCats = 0
    // Start typing below this line

JavaScript onchange function that updates data array and input value?

I’m creating an editable table to be used for scoring a boardgame called 7 Wonders. In the app I’m creating I’ve got a:

  1. DataByPlayer.js: An array of objects for players 1-7. Each object will hold the individual score for each category area (military, armada, etc.).
{ 
playerId: '1',
name: 'Player 1',
military: 100,
armada: 0,
coins: 0,
wonders: 0,
blue: 0,
yellow: 0,
green: 0,
purple: 0,
boats: 0,
leaders: 0,
black: 0,
total: 0
}, 
...
  1. The table itself which has an input inside each table cell.

`const ScoreTableByPlayer = () => {

const Player1 = DataByPlayer[0];
const Player2 = DataByPlayer[1];
const Player3 = DataByPlayer[2];
const Player4 = DataByPlayer[3];
const Player5 = DataByPlayer[4];
const Player6 = DataByPlayer[5];
const Player7 = DataByPlayer[6];

const calculatePlayerScore = (index) => {
    return DataByPlayer[index].military + DataByPlayer[index].armada + DataByPlayer[index].coins + DataByPlayer[index].wonders + DataByPlayer[index].blue + DataByPlayer[index].yellow + DataByPlayer[index].green + DataByPlayer[index].purple + DataByPlayer[index].boats + DataByPlayer[index].leaders + DataByPlayer[index].black;
   
};

return (
    <div class="tableFixHead">
        <table>
            <thead>
                <tr>
                    <th id="firstCell"></th>
                    <th>
                        <input
                        name="name"
                        type="text"
                        placeholder="Player1"
                        />
                    </th>
                    <th>
                        <input
                        name="name"
                        type="text"
                        placeholder="Player2"
                        />
                    </th>
                    <th>
                        <input
                        name="name"
                        type="text"
                        placeholder="Player3"
                        />
                    </th>
                    <th>
                        <input
                        name="name"
                        type="text"
                        placeholder="Player4"
                        />
                    </th>
                    <th>
                        <input
                        name="name"
                        type="text"
                        placeholder="Player5"
                        />
                    </th>
                    <th>
                        <input
                        name="name"
                        type="text"
                        placeholder="Player6"
                        />
                    </th>
                    <th>
                        <input
                        name="name"
                        type="text"
                        placeholder="Player7"
                        />
                    </th>
                </tr>
            </thead>
            <tbody>
                <tr class="militaryRow">
                    <th class="leftColumn militaryRow">
                        <img class="wondersIcon" 
                            src={icon_military} 
                            alt="military icon" 
                        /> 
                        <span class="categoryHeading">Military</span>
                    </th>
                    <td><input
                        name="Player1.military"
                        value={Player1.military}
                        type="number"
                    />
                    </td>
                    <td><input
                        name="Player2.military"
                        value={Player2.military}
                        type="number"            
                    />
                    </td>
                    <td><input
                        name="Player3.military"
                        value={Player3.military}
                        type="number"            
                    />
                    </td>
                    <td><input
                        name="Player4.military"
                        value={Player4.military}
                        type="number"            
                    />
                    </td>
                    <td><input
                        name="Player5.military"
                        value={Player5.military}
                        type="number"            
                    />
                    </td>
                    <td><input
                        name="Player6.military"
                        value={Player6.military}
                        type="number"            
                    />
                    </td>
                    <td><input
                        name="Player7.military"
                        value={Player7.military}
                        type="number"            
                    />
                    </td>
                </tr>
                <tr class="armadaRow">
                    <th class="leftColumn armadaRow">
                        <img class="wondersIcon" 
                            src={icon_armada} 
                            alt="armada icon" /> 
                        <span class="categoryHeading">Armada</span>
                    </th>
                    <td><input
                        class="player1 armada"
                        value={Player1.armada}
                        type="number"                     
                    /></td>
                    <td><input
                        class="player2 armada"
                        value={Player2.armada}
                        type="number"                     
                    /></td>
                    <td><input
                        class="player3 armada"
                        value={Player3.armada}
                        type="number"                     
                    /></td>
                    <td><input
                        class="player4 armada"
                        value={Player4.armada}
                        type="number"                     
                    /></td>
                    <td><input
                        class="player5 armada"
                        value={Player5.armada}
                        type="number"                     
                    /></td>
                    <td><input
                        class="player6 armada"
                        value={Player6.armada}
                        type="number"                     
                    /></td>
                    <td><input
                        class="player7 armada"
                        value={Player7.armada}
                        type="number"                     
                    /></td>
                </tr>
                <tr class="coinsRow">
                    <th class="leftColumn coinsRow">
                        <img class="wondersIcon" 
                            src={icon_coins} 
                            alt="coins icon" /> 
                        <span class="categoryHeading">Coins & Minus Points</span>
                    </th>
                    <td><input
                        class="player1 coins"
                        value={Player1.coins}
                        type="number"                     
                    /></td>
                    <td><input
                        class="player2 coins"
                        value={Player2.coins}
                        type="number"                     
                    /></td>
                    <td><input
                        class="player3 coins"
                        value={Player3.coins}
                        type="number"                     
                    /></td>
                    <td><input
                        class="player4 coins"
                        value={Player4.coins}
                        type="number"                     
                    /></td>
                    <td><input
                        class="player5 coins"
                        value={Player5.coins}
                        type="number"                     
                    /></td>
                    <td><input
                        class="player6 coins"
                        value={Player6.coins}
                        type="number"                     
                    /></td>
                    <td><input
                        class="player7 coins"
                        value={Player7.coins}
                        type="number"                     
                    /></td>
                </tr>
                <tr class="wondersRow">
                    <th class="leftColumn wondersRow">
                        <img class="wondersIcon" 
                            src={icon_wonders} 
                            alt="wonders icon" /> 
                        <span class="categoryHeading">Wonders Board</span>
                    </th>
                    <td><input
                        class="player1 wonders"
                        value={Player1.wonders}
                        type="number"                     
                    /></td>
                    <td><input
                        class="player2 wonders"
                        value={Player2.wonders}
                        type="number"                     
                    /></td>
                    <td><input
                        class="player3 wonders"
                        value={Player3.wonders}
                        type="number"                     
                    /></td>
                    <td><input
                        class="player4 wonders"
                        value={Player4.wonders}
                        type="number"                     
                    /></td>
                    <td><input
                        class="player5 wonders"
                        value={Player5.wonders}
                        type="number"                     
                    /></td>
                    <td><input
                        class="player6 wonders"
                        value={Player6.wonders}
                        type="number"                     
                    /></td>
                    <td><input
                        class="player7 wonders"
                        value={Player7.wonders}
                        type="number"                     
                    /></td>

                </tr>
                <tr class="civicRow">
                    <th class="leftColumn civicRow">
                        <img class="wondersIcon" 
                            src={icon_blue} 
                            alt="civic icon" /> 
                        <span class="categoryHeading">Civic Cards</span>
                    </th>
                    <td><input
                        class="player1 blue"
                        value={Player1.blue}
                        type="number"                     
                    /></td>
                    <td><input
                        class="player2 blue"
                        value={Player2.blue}
                        type="number"                     
                    /></td>
                    <td><input
                        class="player3 blue"
                        value={Player3.blue}
                        type="number"                     
                    /></td>
                    <td><input
                        class="player4 blue"
                        value={Player4.blue}
                        type="number"                     
                    /></td>
                    <td><input
                        class="player5 blue"
                        value={Player5.blue}
                        type="number"                     
                    /></td>
                    <td><input
                        class="player6 blue"
                        value={Player6.blue}
                        type="number"                     
                    /></td>
                    <td><input
                        class="player7 blue"
                        value={Player7.blue}
                        type="number"                     
                    /></td>
                </tr>
                <tr class="commercialRow">
                    <th class="leftColumn commercialRow">
                        <img class="wondersIcon" 
                            src={icon_yellow} 
                            alt="commerical icon" /> 
                        <span class="categoryHeading">Commerical Cards</span>
                    </th>
                    <td><input
                        class="player1 yellow"
                        value={Player1.yellow}
                        type="number"                     
                    /></td>
                    <td><input
                        class="player2 yellow"
                        value={Player2.yellow}
                        type="number"                     
                    /></td>
                    <td><input
                        class="player3 yellow"
                        value={Player3.yellow}
                        type="number"                     
                    /></td>
                    <td><input
                        class="player4 yellow"
                        value={Player4.yellow}
                        type="number"                     
                    /></td>
                    <td><input
                        class="player5 yellow"
                        value={Player5.yellow}
                        type="number"                     
                    /></td>
                    <td><input
                        class="player6 yellow"
                        value={Player6.yellow}
                        type="number"                     
                    /></td>
                    <td><input
                        class="player7 yellow"
                        value={Player7.yellow}
                        type="number"                     
                    /></td>
                </tr>
                <tr class="scientificRow">
                    <th class="leftColumn scientificRow">
                        <img class="wondersIcon" 
                            src={icon_green} 
                            alt="scientific icon" /> 
                        <span class="categoryHeading">Scientific Points</span>
                    </th>
                    <td><input
                        class="player1 green"
                        value={Player1.green}
                        type="number"                     
                    /></td>
                    <td><input
                        class="player2 green"
                        value={Player2.green}
                        type="number"                     
                    /></td>
                    <td><input
                        class="player3 green"
                        value={Player3.green}
                        type="number"                     
                    /></td>
                    <td><input
                        class="player4 green"
                        value={Player4.green}
                        type="number"                     
                    /></td>
                    <td><input
                        class="player5 green"
                        value={Player5.green}
                        type="number"                     
                    /></td>
                    <td><input
                        class="player6 green"
                        value={Player6.green}
                        type="number"                     
                    /></td>
                    <td><input
                        class="player7 green"
                        value={Player7.green}
                        type="number"                     
                    /></td>
                </tr>
                <tr class="guildRow">
                    <th class="leftColumn guildRow">
                        <img class="wondersIcon" 
                            src={icon_purple} 
                            alt="guild icon" /> 
                        <span class="categoryHeading">Guild Cards</span>
                    </th>
                    <td><input
                        class="player1 purple"
                        value={Player1.purple}
                        type="number"                     
                    /></td>
                    <td><input
                        class="player2 purple"
                        value={Player2.purple}
                        type="number"                     
                    /></td>
                    <td><input
                        class="player3 purple"
                        value={Player3.purple}
                        type="number"                     
                    /></td>
                    <td><input
                        class="player4 purple"
                        value={Player4.purple}
                        type="number"                     
                    /></td>
                    <td><input
                        class="player5 purple"
                        value={Player5.purple}
                        type="number"                     
                    /></td>
                    <td><input
                        class="player6 purple"
                        value={Player6.purple}
                        type="number"                     
                    /></td>
                    <td><input
                        class="player7 purple"
                        value={Player7.purple}
                        type="number"                     
                    /></td>
                </tr>
                <tr class="boatRow">
                    <th class="leftColumn boatRow">
                        <img class="wondersIcon" 
                            src={icon_boats} 
                            alt="boats icon" /> 
                        <span class="categoryHeading">Boats & Islands</span>
                    </th>
                    <td><input
                        class="player1 boats"
                        value={Player1.boats}
                        type="number"                     
                    /></td>
                    <td><input
                        class="player2 boats"
                        value={Player2.boats}
                        type="number"                     
                    /></td>
                    <td><input
                        class="player3 boats"
                        value={Player3.boats}
                        type="number"                     
                    /></td>
                    <td><input
                        class="player4 boats"
                        value={Player4.boats}
                        type="number"                     
                    /></td>
                    <td><input
                        class="player5 boats"
                        value={Player5.boats}
                        type="number"                     
                    /></td>
                    <td><input
                        class="player6 boats"
                        value={Player6.boats}
                        type="number"                     
                    /></td>
                    <td><input
                        class="player7 boats"
                        value={Player7.boats}
                        type="number"                     
                    /></td>
                </tr>
                <tr class="leaderRow">
                    <th class="leftColumn leaderRow">
                        <img class="wondersIcon" 
                            src={icon_leaders} 
                            alt="leaders icon" /> 
                        <span class="categoryHeading">Leader Cards</span>
                    </th>
                    <td><input
                        class="player1 leaders"
                        value={Player1.leaders}
                        type="number"                     
                    /></td>
                    <td><input
                        class="player2 leaders"
                        value={Player2.leaders}
                        type="number"                     
                    /></td>
                    <td><input
                        class="player3 leaders"
                        value={Player3.leaders}
                        type="number"                     
                    /></td>
                    <td><input
                        class="player4 leaders"
                        value={Player4.leaders}
                        type="number"                     
                    /></td>
                    <td><input
                        class="player5 leaders"
                        value={Player5.leaders}
                        type="number"                     
                    /></td>
                    <td><input
                        class="player6 leaders"
                        value={Player6.leaders}
                        type="number"                     
                    /></td>
                    <td><input
                        class="player7 leaders"
                        value={Player7.leaders}
                        type="number"                     
                    /></td>
                </tr>
                <tr class="citiesRow">
                    <th class="leftColumn citiesRow">
                        <img class="wondersIcon" 
                            src={icon_black} 
                            alt="cities icon" /> 
                        <span class="categoryHeading">Cities Cards</span>
                    </th>
                    <td><input
                        class="player1 black"
                        value={Player1.black}
                        type="number"                     
                    /></td>
                    <td><input
                        class="player2 black"
                        value={Player2.black}
                        type="number"                     
                    /></td>
                    <td><input
                        class="player3 black"
                        value={Player3.black}
                        type="number"                     
                    /></td>
                    <td><input
                        class="player4 black"
                        value={Player4.black}
                        type="number"                     
                    /></td>
                    <td><input
                        class="player5 black"
                        value={Player5.black}
                        type="number"                     
                    /></td>
                    <td><input
                        class="player6 black"
                        value={Player6.black}
                        type="number"                     
                    /></td>
                    <td><input
                        class="player7 black"
                        value={Player7.black}
                        type="number"                     
                    /></td>
                </tr>
            </tbody>
            <tfoot>
                <tr>
                    <th class="leftColumn totalHeadingCell"><span class="totalHeading">Total</span></th>
                    <td>{calculatePlayerScore(0)}</td>
                    <td>{calculatePlayerScore(1)}</td>
                    <td>{calculatePlayerScore(2)}</td>
                    <td>{calculatePlayerScore(3)}</td>
                    <td>{calculatePlayerScore(4)}</td>
                    <td>{calculatePlayerScore(5)}</td>
                    <td>{calculatePlayerScore(6)}</td>
                </tr>
            </tfoot>
        </table>
    </div>
)

};

export default ScoreTableByPlayer;`

**The Problem:
** is that when you try and change the value of one of the inputs, I cannot get it to:
A) Change the value in the data array (See above)
B) Show the updated value as the input value.

You can check out:

I presume I need to create an onchange function but after days searching online and trying everything I cannot get anything to work.

Scalable Captcha Solution

For the last few years my company and I have been using Google ReCaptcha V3 for our websites. But we are looking to massively scale up and this will include a long list of domains which will grow over time. We won’t want to have to add Domains to the list manually on the Google Admin.

Are their any solutions available where we can integrate a Captcha solution without explicitly stating the domains names?

I have not found any suitable solutions as of yet

An empty screen appears when running the server

Failed to load Resource: the server responded with a status of  404(Not found)

Refused to execute script from '(server domain/static/js/main.82470613.js)' because its MIME type ('text/html') is not executable, and strict MIME type checking is enabled.

Refused to apply style from '(server domain/static/css/main.e6c13ad2.css)' because its MIME type ('text/html') is not a supported stylesheet MIME type, and strict MIME checking is enabled.

Refused to apply style from '(server domain/static/css/main.e6c13ad2.css)' because its MIME type ('text/html') is not a supported stylesheet MIME type, and strict MIME checking is enabled.

Failed to load resource: the server responded with a status of 404(Not Found)

I’m developing a homepage, but when I run it on the server, a blank screen appears and this error message appears in the developer tools. Is there any solution?

It’s login page. I’ve tried using fetch to get data but never works.
Help!
Error image

React Native Vision Camera UseCodeScanner Error Exception

I have an issue with the “useCodeScanner”.

**ERROR **TypeError: 0, _$$_REQUIRE(_dependencyMap[11(…)e-vision-camera”).useCodeScanner is not a function (it is undefined)

This error is located at:
in Home (created by SceneView)
in StaticContainer
in EnsureSingleNavigator (created by SceneView)
in SceneView (created by SceneView)
in RCTView (created by View)
in View (created by DebugContainer)
in DebugContainer (created by MaybeNestedStack)
in MaybeNestedStack (created by SceneView)
in RCTView (created by View)
in View (created by SceneView)
in RNSScreen
in Unknown (created by InnerScreen)
in Suspender (created by Freeze)
in Suspense (created by Freeze)
in Freeze (created by DelayedFreeze)
in DelayedFreeze (created by InnerScreen)
in InnerScreen (created by Screen)
in Screen (created by SceneView)
in SceneView (created by NativeStackViewInner)
in Suspender (created by Freeze)
in Suspense (created by Freeze)
in Freeze (created by DelayedFreeze)
in DelayedFreeze (created by ScreenStack)
in RNSScreenStack (created by ScreenStack)
in ScreenStack (created by NativeStackViewInner)
in NativeStackViewInner (created by NativeStackView)
in RNCSafeAreaProvider (created by SafeAreaProvider)
in SafeAreaProvider (created by SafeAreaInsetsContext)
in SafeAreaProviderCompat (created by NativeStackView)
in NativeStackView (created by NativeStackNavigator)
in PreventRemoveProvider (created by NavigationContent)
in NavigationContent
in Unknown (created by NativeStackNavigator)
in NativeStackNavigator (created by App)
in EnsureSingleNavigator
in BaseNavigationContainer
in ThemeProvider
in NavigationContainerInner (created by App)
in Appyour text
in RCTView (created by View)
in View (created by AppContainer)
in RCTView (created by View)
in View (created by AppContainer)
in AppContainer
in ScanEat(RootComponent), js engine: hermes
Do you have any ideas on how to fix it?
I really appreciate any help you can provide .

 import {
  Camera,
  useCameraDevices,
  useCodeScanner,
} from 'react-native-vision-camera';
const devices = useCameraDevices();
  const device = devices.back;

  useEffect(() => {
    checkPermission();
  }, []);

  const checkPermission = async () => {
    try {
      const newCameraPermission = await Camera.requestCameraPermission();
      console.log('Camera Permission:', newCameraPermission);
    } catch (error) {
      console.error('Camera Permission Error:', error);
    }
  };

  
const codeScanner = useCodeScanner({
  codeTypes: ['qr', 'ean-13'],
  onCodeScanned: (codes) => {
    console.log(`Scanned ${codes.length} codes!`)
  }
})

  if (device == null) {
    return (
      <View style={{flex: 1, justifyContent: 'center', alignItems: 'center'}}>
        <ActivityIndicator />
      </View>
    );
  }  return (
    <SafeAreaView
      style={{
        flex: 1,
        justifyContent: 'center',
        alignItems: 'center',
        backgroundColor: '#000',
      }}>
      <Camera
        style={StyleSheet.absoluteFill}
        device={device}
        isActive={true}
        codeScanner={codeScanner}
      />
  
    </SafeAreaView>
  );

React popup updates too late

I develop a language selection app as for a survey. 1st I select a continent, 2nd I select a coutry on a map, then I#’ll get a popup. In that popup i select a language to get to a specific letter as 2nd popup.

The languages shown in the 1st popup are images loaded from a backend(strapi); I have a logger in the background of the app so i know which flag i pressed but it seems to send/load the data only from the previeos language/flag selection(e.g. when i press the french flag, i need to click afterwards on another flag to get the french flag shown).

The right letter should be loaded in the SecondPopup, but it seems to register the click and open the popup at the same time :/

App.js:

import React, { useState, useEffect, useRef } from 'react';
import './App.css';
import NavBar from './components/Navbar';
import RegionPicker from './components/RegionPicker';
import EuMap from './components/eumap';
import { BrowserRouter as Router, Route, Routes, useNavigate } from 'react-router-dom';
import 'reactjs-popup/dist/index.css';
import { logingData} from './components/Logger';

const App = () => {

  const apiUrl = 'http://localhost:1339/api/participants';
  const [selectedRegion, setSelectedRegion] = useState(null);
  let participantDataID = null;


  const onRegionPickerHandler = (region) => {
    setSelectedRegion(region);
  }

  const clearSelectedRegion = () => {
    setSelectedRegion(null);
  }

  function pauseAnimation() {
    var items = document.querySelector('.circles').childNodes;
    for (let i = 0; i < items.length; i++) {
      items[i].style.animationPlayState = "paused";
    }
  }

  function resumeAnimation() {
    var items = document.querySelector('.circles').childNodes;
    for (let i = 0; i < items.length; i++) {
      items[i].style.animationPlayState = "running";
    }
  }

  const navigate = useNavigate();
  //console.log(navigate);
  useEffect(() => {
    console.log("LoginData has changed");
    
  }, [logingData]); // Specify logingData as dependency
  


  return (
          <div className="App">
            <div class="context">
              <NavBar className='nb' clearSelectedRegion={clearSelectedRegion} selectedRegion={selectedRegion} resumeAnimation={resumeAnimation} />
              {selectedRegion ? (
                <div>
                  <EuMap regio={selectedRegion} />
                  {pauseAnimation()}

                </div>
              ) : (
                <div>

                  <RegionPicker onRegionPickerHandler={onRegionPickerHandler} />

                </div>
              )}
            </div>
            <div class="area" >
              <ul class="circles">
                <li></li>
                <li></li>
                <li></li>
                <li></li>
                <li></li>
                <li></li>
                <li></li>
                <li></li>
                <li></li>
                <li></li>
              </ul>
            </div >
          </div>
  );
}

export default App;

Logger.js:

import { languageLetter } from './Utilities';

// Running logging function to check each mouseclick and clicked on elements
Object.keys(window).forEach(key => {
    if (/^on(click)/.test(key)){
        window.addEventListener(key.slice(2), event => {
            //Only track if task is active
            if (true) {
                    if(event.target.className == "Flag"){
                        if(event.target.currentSrc.includes("tn_uk")){
                            languageLetter("eng")
                        }else if(event.target.currentSrc.includes("tn_sp")){
                            languageLetter("spa")
                        }//more languages ...
                    }                 
            }
        },);
    }
})

Utilities.js:

import { letterEnglish } from "./letters/letterEnglish";
import { letterFrench } from "./letters/letterFrench";
import { letterGerman } from "./letters/letterGerman";
import { letterItalian } from "./letters/letterItalian";

export let currentLetter;



export const languageLetter = (bias) => {
  switch(bias){
      case "eng":
      currentLetter = letterEnglish;
      console.log("eng-letter");
      break;
      case "fr":
      currentLetter = letterFrench;
      break;
      case "ger":
      currentLetter = letterGerman;
      break;
      case "ita":
      currentLetter = letterItalian;
      break;
    default:
      currentLetter = letterEnglish;
      break;
  }
}

Where the popups get shown/produced(eumap.js):

import * as d3 from 'd3';
import * as topojson from "topojson";

import Countries from './Countries';

import React, {useState} from 'react';
import Popup from 'reactjs-popup';
import 'reactjs-popup/dist/index.css';
import { incrementEvent,languageLetter,currentLetter } from './Utilities';

import { letterFrench } from "./letters/letterFrench";

 const EuMap = ({regio}) => {

  const [showPopup, setShowPopup] = useState(false);

  const [showFirstPopup, setShowFirstPopup] = useState(false);
  const [showSecondPopup, setShowSecondPopup] = useState(false);

  const handleFirstPopupClick = () => {
    setShowFirstPopup(true);
  };

  const handleSecondPopupClick = () => {
    setShowSecondPopup(true);
  };

  const handleClosePopup = () => {
    setShowFirstPopup(false);
    setShowSecondPopup(false);
  };

  const FirstPopup = ({ handleClose }) => {
    return (
      <div className="popup">
        <div className="popup-inner">
        <div className='lineOne'>
            <h1>{selectedCountry != null ? selectedCountry.properties.name : "unknown"}</h1>
            <button className="close-btn" onClick={handleClose}>x</button>
          </div>
          <Countries
          selectedRegion={regio} selectedCoutry={selectedCountry != null ? selectedCountry.properties.name : "Germany"} togglePopup={togglePopup}
        />
          
          
        </div>
      </div>
    );
  };

  const SecondPopup = ({ handleClose }) => {
    const letterToDisplay = currentLetter != null ? currentLetter : letterFrench;
    return (
      <div className="popup-snd">
        <div className="popup-inner">
          <div className='lineOne'>
            <h1>{selectedCountry != null ? selectedCountry.properties.name : "unknown"}</h1>
            <span className="close-btn" onClick={handleClose}>×</span>
          </div>
          <p dangerouslySetInnerHTML={{ __html: letterToDisplay }}></p>
        </div>
      </div>
    );
  };

  // D3 map generation and opening popup, sry stack thiks this is spam becuase it is to much code :/

return (
  <div>
  {showFirstPopup && <FirstPopup handleClose={handleClosePopup} />}
  {showSecondPopup && <SecondPopup handleClose={handleClosePopup} />}
  </div>
)

 }

 export default EuMap

Getting error 500 even after using async in react native with firebase

While creating a signup page I am getting error.
My auth code is

const createUser=async()=>{
        await auth()
  .createUserWithEmailAndPassword(Email, Password)
  .then(() => {
    console.log('User account created & signed in!');
  })
  .catch(error => {
    if (error.code === 'auth/email-already-in-use') {
      console.log('That email address is already in use!');
    }

    if (error.code === 'auth/invalid-email') {
      console.log('That email address is invalid!');
    }

    console.error(error);
  });
    } 

What I am getting is :

 Use process(css).then(cb) to work with async plugins

the file I was editing into is SignupScreen.js

enter image description here

How do I properly structure, configure, and bundle npm references in a Typescript monorepo using npm workspaces?

I’m having trouble getting my head around how to configure this monorepo so it bundles, builds, and executes without problems.

It’s a fullstack serverless (AWS) monorepo using npm workspaces, built entirely in TS.

It’s It’s structured like so:

my-monorepo/
├── node_modules
├── packages/
│   ├── lib/
│   │   ├── index.ts
│   │   ├── random.ts
│   │   ├── package.json
│   │   └── tsconfig.json
│   ├── lambda/
│   │   ├── test.ts
│   │   ├── package.json
│   │   └── tsconfig.json
│   └── web/
│       └── react-vite/
│           ├── App.tsx
│           ├── package.json
│           └── tsconfig.json
├── package.json
├── tsconfig.base.json
└── tsconfig.json

I’m simply trying to make it so all external and internal npm package references work, so I can share code between all projects out of the /lib folder.

Here’s lambda/test.ts:

import { ulid } from "ulid";
import { random } from "@my-monorepo/lib";

export async function routesHandler(event: any) {
    try {
        return {
            statusCode: 200,
            // body: JSON.stringify(`${random.randomPhrase()} Lambda!`)
            body: JSON.stringify(`Hello Lambda! How about a ULID? -> ${ulid()}`)
        };
    } catch (e) {
        console.log("It's dead:", e);
    }
}

This executes just fine, and prints:

Compiling with Typescript...
Using local tsconfig.json - ./packages/lambda/tsconfig.json
Typescript compiled.
{
    "statusCode": 200,
    "body": ""Hello Lambda! How about a ULID? -> 01HE33FGF9DE4Q6H8K1KP42KEA""
}

When I try to call from the random module by swapping the body lines in the lambda above, like this:

return {
    statusCode: 200,
    body: JSON.stringify(`${random.randomPhrase()} Lambda!`)
    //body: JSON.stringify(`Hello Lambda! How about a ULID? -> ${ulid()}`)
};

I get this:

import * as random from “./random”;
^^^^^^

SyntaxError: Cannot use import statement outside a module

/lib/index.ts:

import * as random from "./random";
import * as model from "./model/model";

export {
    random,
    model
};

/lib/random.ts:

const randomPhrase = (): string => {
    const phrases = [
        "Gadzooks!",
        "Eureka!",
        "D'oh!",
        "Egads!",
        "Bazinga!"
    ];
    return phrases[Math.round(Math.random() * phrases.length)];
};

export {
    randomPhrase
};

It has to be a combination of tsconfig props that I’m getting wrong, because I can execute code from the /lib within App.tsx in the web/react-vite project, it renders and works as expected. Here’s that snippet:

import { random } from "@my-monorepo/lib";

function App() {
    return (
        <div>Welcome to React...{random.randomPhrase()}</div>
    )
}

export default App

I see what I should:

enter image description here

Here’s the root config stuff:

./package.json

{
    "name": "my-monorepo",
    "type": "module",
    "private": true,
    "workspaces": [
        "packages/lambda",
        "packages/web/react-vite",
        "packages/lib"
    ],
    "devDependencies": {
        ...  
    },
    "dependencies": {
        ...
    }
}

./tsconfig.base.json

{
    "compilerOptions": {
        "target": "ES2022",
        "module": "CommonJS",
        "declaration": true,
        "sourceMap": true,
        "strict": true,
        "moduleResolution": "node",
        "esModuleInterop": true,
        "skipLibCheck": true,
        "forceConsistentCasingInFileNames": true,
        "composite": true
    },
    "exclude": ["node_modules"],
    "include": [
        "packages/lib/*",
        "packages/lib/**/*"
    ]
}

./tsconfig.json

{
    "references": [
        {
            "path": "packages/lambda"
        },
        {
            "path": "packages/lib"
        }
    ]
}

/lib config files:

lib/package.json:

{
    "name": "@my-monorepo/lib",
    "version": "1.0.0",
    "main": "index.ts",
    "type": "module"
}

lib/tsconfig.json:

{
    "extends": "../../tsconfig.base.json"
}

/lambda config files:

lambda/package.json

{
    "name": "@my-monorepo/lambda",
    "version": "1.0.0",
    "main": "test.ts",
    "type": "module",
    "dependencies": {
        "@kilonova-serverless-fullstack/lib": "^1.0.0",
        "ulid": "^2.3.0"
    }
}

lambda/tsconfig.json

{
    "extends": "../../tsconfig.base.json"
}

nodejs websocket client performance

I run pretty simple nodejs script – websocket client which handles messages accordingly, my question is, how could I possibly make this client run faster? Would it make more sense to host it on larger server? (16/32+ cores) or is that pointless? My code parses the event.data to json, does that cost me more performance than the server CPUs? How could I improve the parsing of the data then? I attach simple code example:

let socket

function connectWSS(){
    socket = new WebSocket("wss://example.com");
    socket.onopen = function() {
        // ONOPEN
    }
    socket.onmessage = function (event){
            // JSON PARSING THE DATA
            // PROCESSING THE DATA
        }
    socket.onerror = function(error) {
      //RECONNECT
    }
    socket.onclose = function(event){
        //RECONNECT
    }
}```

Accessibility talkback issue with select and option tag

I need a help with talkback android reader on Select Option tag. It is working fine with nvda and jaws but talkback is somehow not reading aria-label text in option tag

<select aria-label='test' id="cars">
  <option aria-label="test1">Volvo </option>
  <option aria-label="test2">Saab </option>
  <option aria-label="test3">Mercedes</option>
  <option aria-label="test4">Audi</option>
</select>

This is the piece of code i have in react. NVDA react test1, test2, when focus on option with keyboard up and down arrow key. but somehow it is not reading test1 , test2 when focus on option on mobile with talkback.It reads Volvo, saab etc instead.

make the button link change depending on the slide I’m on

I’m building my website/portfolio, so I made a slider of 3 images representing each of my 3 projects to present on my website. In the middle of the page I have a “Learn more” button, but I don’t know how to make the button link change depending on the slide I’m on. How can I fix this?

Here is the html:

  <main>
    <div class="slider">
      <div class="slider--content">
        <button class="slider__btn-left">
          <i class="fas fa-angle-left"></i>
        </button>
        <div class="slider--feature">
          <h1 class="slider--title">mes projets</h1>
          <p class="slider--text"></p>
          <a href="/projets/lequipe-de-nathan/lequipe-de-nathan.html" class="slider--btn">En savoir plus</a>
        </div>
        <button class="slider__btn-right">
          <i class="fas fa-angle-right"></i>
        </button>
      </div>
    </div>
  </main>

Here is the css:

.slider {
  background-position: center;
  background-repeat: no-repeat;
  background-size: cover;
  height: 100vh;
  width: 100%;
}

.slider--content {
  display: flex;
  justify-content: space-between;
  align-items: center;
  height: 100vh;
}

.slider--feature {
  text-align: center;
}

.slider--title {
  font-size: 2.5rem;
  color: #fff;
  text-transform: uppercase;
  font-weight: 700;
}

.slider--text {
  font-size: 1rem;
  color: #fff;
  text-transform: uppercase;
  margin: 0.5rem 0;
}

.slider__btn-right,
.slider__btn-left {
  background: transparent;
  border: none;
  outline: none;
  font-size: 4rem;
  color: #eee;
  padding: 0 1rem;
  cursor: pointer;
  transition: transform 0.1s ease-in-out;
}

.slider--btn {
  background: #fff;
  text-transform: uppercase;
  border: none;
  color: #444;
  border: 1px solid #444;
  outline: none;
  font-weight: 700;
  padding: 0.8rem 2rem;
  cursor: pointer;
}

.slider__btn-left:hover,
.slider__btn-right:hover {
  transform: scale(0.95);
}

@keyframes fadeIn {
  0% {
    opacity: 0;
  }
  100% {
    opacity: 1;
  }
}
.fadeIn {
  animation: fadeIn 1s;
}

Here is the js:

const slideContainer = document.querySelector(".slider")
const sliderText = document.querySelector(".slider--text")
const btnLeft = document.querySelector(".slider__btn-left")
const btnRight = document.querySelector(".slider__btn-right")

const sliderImages = [
  {
    src: "https://images.unsplash.com/photo-1526726538690-5cbf956ae2fd?auto=format&fit=crop&q=80&w=1740&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D",
    text: "L'équipe de Nathan",
  },
  {
    src: "https://images.unsplash.com/photo-1517672651691-24622a91b550?auto=format&fit=crop&q=80&w=1932&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D",
    text: "Nathan's Darts",
  },
  {
    src: "https://images.unsplash.com/photo-1534093607318-f025413f49cb?auto=format&fit=crop&q=80&w=1740&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D",
    text: "E-commerce",
  },
]

let slideCounter = 0

const startSlider = () => {
  slideContainer.style.backgroundImage = `linear-gradient(
      to right,
      rgba(34, 34, 34, 0.4),
      rgba(68, 68, 68, 0.4)
    ), url(${sliderImages[0].src})`
  sliderText.innerHTML = sliderImages[0].text
}

btnRight.addEventListener("click", function() {
  if (slideCounter === sliderImages.length - 1) {
    slideContainer.style.backgroundImage = `linear-gradient(
      to right,
      rgba(34, 34, 34, 0.4),
      rgba(68, 68, 68, 0.4)
    ), url(${sliderImages[0].src})`
    sliderText.innerHTML = sliderImages[0].text
    slideCounter = -1

    slideContainer.classList.add("fadeIn")
    setTimeout(() => {
      slideContainer.classList.remove("fadeIn")
    }, 1000)
  }
  slideContainer.style.backgroundImage = `linear-gradient(
      to right,
      rgba(34, 34, 34, 0.4),
      rgba(68, 68, 68, 0.4)
      ),url(${sliderImages[slideCounter + 1].src})`
  sliderText.innerHTML = sliderImages[slideCounter + 1].text
  slideCounter++
  slideContainer.classList.add("fadeIn")
  setTimeout(() => {
    slideContainer.classList.remove("fadeIn")
  }, 1000)
})

btnLeft.addEventListener("click", function() {
  if (slideCounter === 0) {
    slideContainer.style.backgroundImage = `linear-gradient(
      to right,
      rgba(34, 34, 34, 0.4),
      rgba(68, 68, 68, 0.4)
    ),url(${sliderImages[sliderImages.length - 1].src})`
    sliderText.innerHTML = sliderImages[sliderImages.length - 1].text
    slideCounter = sliderImages.length
    slideContainer.classList.add("fadeIn")
    setTimeout(() => {
      slideContainer.classList.remove("fadeIn")
    }, 1000)
  }

  slideContainer.style.backgroundImage = `linear-gradient(
      to right,
      rgba(34, 34, 34, 0.4),
      rgba(68, 68, 68, 0.4)
    ),url(${sliderImages[slideCounter - 1].src})`
  sliderText.innerHTML = sliderImages[slideCounter - 1].text
  slideCounter--
  slideContainer.classList.add("fadeIn")
  setTimeout(() => {
    slideContainer.classList.remove("fadeIn")
  }, 1000)
})

startSlider()

Thank you if you take the time to answer and help me.

Block margin hides outside elements of flex container in that block

I have got the block with height 100vh and width 300px; Inside this block i have got flex container all size of my block (calc(100vh-40px) & 300px), and with margin 20px for all sides (thats why i use “calc”).

My problem is, that when i am trying to move deep children elements outside my flex container, or move absolute element (with relative parent inside flex container) – none of thoose element dont go futher my flex container (above margin). As i can see margin of my flex-container just “eates” this elements.

How to solve this problem, if i need to make margin to my flex container and move elements outside it anyway?

Need help with understanding of margin