How to get the status of a fetch correctly?

I perform a fetch in my api and it returns a 201 status, but when I try to receive it in a variable the status comes all weird.


async function Verify (test) {
 await fetch("/api/test", {
  method: "POST", 
  headers: {
   'Content-Type': 'application/json',
  },
  body: JSON.stringify({test: test}),
 }).then((response) => {
  res = response.status; 
  console.log(res); //thats print '201'
  return res;
 });
}
const status = Verify(test);
console.log(status); //thats print 'Promise { <state>: "fulfilled", <value>: 201 }'

Why my kFormater is doesnt add any format

soo i want to make like is formated like 1.2k, 5.1M etc. but its doesnt add “k” or “M”

`” onclick=”handleLike(”)” class=”btn btn-primary” style=”background: #F2BE22;”>
“><%= element.like %>

            <script>
              function kFormatter(num) {
                return Math.abs(num) > 999 ? Math.sign(num) * ((Math.abs(num) / 1000).toFixed(1)) + 'k' : Math.sign(num) * Math.abs(num);
              }
            
              window.addEventListener('DOMContentLoaded', function() {
                var likeCountElements = document.querySelectorAll('[id^="likeCount"]');
                likeCountElements.forEach(function(element) {
                  element.textContent = kFormatter(currentLikes);
                });
              });
            </script>`

its just format the num but not give the “k”

I want to make it like youtube like when its thousand it will format it to something like 1.2k

Does Turf.js allow polygon-to-polygon spatial join?

Does Turf.js support spatial joins between polygons and polygons?
I have a task with a clickable leaflet.js city map that highlights the closest building polygons within a radius from any clicked-upon road.

The task finds the closest road segment (geojson line object) to the coordinates clicked, adds it to the leaflet.js map, and then draws a Turf.js buffer polygon, and adds it to the leaflet.js map too.

Next is spatially joining the buffer with the building polygons to get the buildings within the buffer.

But no function seems to exist for that. Instead, I have to for-loop through every building polygon, do turf.booleanContains() + turf.booleanOverlap(), and add the passing polygons to the map.

This is probably fine, but this for-loop stuff is too costly because I have 900K building polygons to iterate thru for every single click I do. Well, I have to do that to find the closest road segments too, but old idea was buffering a circle around the clicked coordinates, spatially joining the road-segments within it and THEN iterating within those road segments only, … until I couldn’t find out any polygon-to-polyline spatial join either in Turf.js.

My next option is doing all of this stuff behind the curtain with python geopandas.

      <script>
         // Creating map options
var mapOptions = {
            center: [40.7128, -74.0060],
            zoom: 10,
            zoomControl: false
}
         
// Create Map
var map = new L.map('map', mapOptions); // Creating a map object
// Creating Layer
var layer = new L.TileLayer('http://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png');         
map.addLayer(layer);   // Adding layer to the map

      
// zoom control options         
var zoomOptions = {
            zoomInText: '1',
            zoomOutText: '0',
         
};
var zoom = L.control.zoom(zoomOptions);   // Creating zoom control         
zoom.addTo(map);   // Adding zoom control to the map
// https://stackoverflow.com/questions/41256026/clear-marker-layers-leaflet


var streetSegments = // list of street segment geojson line objects
var parcelLots = // list of building footprint geojson polygon objects

// Adding the layers group to add the geojson layers
var mapLayerGroup;
mapLayerGroup = L.layerGroup().addTo(map);

var streetSegmentLayer;
var streetSegmentBufferLayer; 
var parcelLotLayer; 

streetSegmentLayer = L.geoJSON().addTo(mapLayerGroup ); 
// a currently blank layer that street segment polylines will be added onto later
streetSegmentBufferLayer = L.geoJSON().addTo(mapLayerGroup ); 
// a currently blank layer that street segments buffer polygons will be added onto later
parcelLotLayer = L.geoJSON().addTo(mapLayerGroup ); 
// a currently blank layer that building footprint polygons will be added onto later

map.on('click', 
function(e)
{

// clear the map's canvas and re-add the geojson layers again
// this allows us to auto-delete (and "refresh") all the old highlighted street segment, polygons, and buffers when a new coordinate is clicked.
mapLayerGroup.clearLayers(); 
streetSegmentLayer = L.geoJSON().addTo(mapLayerGroup ); 
streetSegmentBufferLayer = L.geoJSON().addTo(mapLayerGroup );
parcelLotLayer = L.geoJSON().addTo(mapLayerGroup ); 

// get the latlng and then x/y coords of the clicked location
var selectedCoords = e.latlng.toString().split(',');
var lat = selectedCoords[0].split('(')[1];
var lng = selectedCoords[1].split(')')[0];
            
document.getElementById('lat').value = lat;
document.getElementById('lon').value = lng;

var turfCoords = turf.point([lng, lat]);

console.log("You clicked the map at latitude: " + lat + " and longitude:" + lng);

// project the coordinates that were clicked on to Mercator
var projectedCoords = turf.toMercator(turfCoords);

// Find the closest Street Segment to the selected (and then projected) coordinates
var tempStreetSegment = streetSegments[0];
var tempStreetSegmentDistance = turf.pointToLineDistance(projectedCoords, tempStreetSegment, {units: 'feet'});
var closestStreetSegment = tempStreetSegment; 
var closestStreetSegmentDistance = tempStreetSegmentDistance;
for (let i = 1; i < streetSegments.length; i++) {
    tempStreetSegment =  streetSegments[i];
    tempStreetSegmentDistance = turf.pointToLineDistance(projectedCoords, tempStreetSegment, {units: 'feet'});
    if (tempStreetSegmentDistance < closestStreetSegmentDistance) {
        closestStreetSegment = tempStreetSegment;
        closestStreetSegmentDistance = tempStreetSegmentDistance;
    } else {
    }
}


// Shows the closest street segment polyline to the chosen coordinate  visibly on the map
var currStreetSegment = turf.toWgs84(closestStreetSegment)  // never forget to re-project
streetSegmentLayer.addData(currStreetSegment)

// Shows the buffer around the current street segment polyline visibly on the map
var streetSegmentBuffer = turf.buffer(currStreetSegment.toGeoJSON(), 500, {units: "feet"})
var currStreetSegmentBuffer = turf.toWgs84(streetSegmentBuffer) // never forget to re-project
streetSegmentBufferLayer.addData(currStreetSegmentBuffer);

// Show the parcel lots that fall within the buffer
var tempParcelLot;
var currParcelLot;
//var parcelLotsWithinBuffer = [];
for (let i = 1; i < parcelLots.length; i++) {
    tempParcelLot =  parcelLots[i]; // a building footprint polygon
    if (turf.booleanContains(streetSegmentBuffer, tempParcelLot) || turf.booleanOverlap(streetSegmentBuffer, tempParcelLot)) {
        //parcelLotsWithinBuffer.push(tempParcelLot);
        currParcelLot = turf.toWgs84(tempParcelLot);
        parcelLotLayer.addData(currParcelLot)
    } else {
    }
}


});

      </script>

Tradovate javascript function mathematicl formula format

Tradovate javascript function mathematicl formula format

I am trying to code a formula to plug into tradovate trading platform which utilizes javascript. However i not getting result being displayed. I am guessing the way the code is formated is not requesting the data correctly into the code. the two inputs are volume of the bar and the closing price of such bar input.

function volScore() {
const volume = d.volume();
const price = d.close();
const vwp = (volume * price);
const vwap = (vwp / volume);
const vwapSQR = Math.sqrt(price - vwap)  * volume;
 const vwapSD = Math.sqrt(vwapSQR / volume);
 vsc = ((price - vwap) / vwapSD);
 }
 return {
 vsc
 } 

do I need to change something or place it under class module. or call for the formula differently

Issue making API call from from React context in nested providers

I created 2 contexts in my react app. The first is the App Provider that has auth functions for api calls to login, logout, register, and update. It also has an authFetch function in it to check if the user is authorized. The second context is the Study Provider that is going to handle dealing with study material. You also need to be authorized to use it so I was trying to import the authFetch function into the study provider.

However, that doesn’t seem to work. It will only return an empty array and the state isn’t updated. The appContext file works fine and if I paste the fetchQuestions into the appContext file, it will make the API call. However, it is just not working in the studyContext file.

Is there something I am missing to be able to use the authFetch function in the fetchQuestions function? Is there a better way to write this code or refactor it?

React dom

<React.StrictMode>
    <AppProvider>
      <StudyProvider>
        <App />
      </StudyProvider>
    </AppProvider>
  </React.StrictMode>

studyContext.js

import { useReducer, useContext, createContext, useEffect } from 'react'
import * as actionTypes from './studyActionTypes'
import { useAppContext } from '../appContext'

const initialState = {
  questions: [],
  error: null
}

const StudyContext = createContext()

const reducer = (state, action) => {
  switch (action.type) {
    case actionTypes.FETCH_QUESTIONS:
      return {
        ...state,
        questions: action.payload,
        isLoading: false,
        error: null
      }
    default:
      throw new Error(`Unknown action type: ${action.type}`)
  }
}

const StudyProvider = ({ children }) => {
  const { authFetch } = useAppContext()
  const [state, dispatch] = useReducer(reducer, initialState)

  const fetchQuestions = async () => {
    try {
      const { data } = await authFetch.get('/questions')
      const questions = data

      dispatch({
        type: actionTypes.FETCH_QUESTIONS,
        payload: questions
      })

      console.log(state.questions)
    } catch (error) {
      dispatch({
        type: actionTypes.FETCH_QUESTIONS,
        payload: [],
        error: error.message
      })
    }
  }

  useEffect(() => {
    fetchQuestions()
  }, [])

  return (
    <StudyContext.Provider
      value={{
        ...state,
        fetchQuestions
      }}
    >
      {children}
    </StudyContext.Provider>
  )
}

const useStudyContext = () => {
  return useContext(StudyContext)
}

export { StudyProvider, useStudyContext }

appContext.js

import { useReducer, useContext, createContext } from 'react'
import axios from 'axios'
import * as actionTypes from './actionTypes'

const token = localStorage.getItem('token')
const user = localStorage.getItem('user')

const initialState = {
  isLoading: false,
  showAlert: false,
  alertText: '',
  alertType: '',
  user: user ? JSON.parse(user) : null,
  token: token
}

const AppContext = createContext()

const reducer = (state, action) => {
  switch (action.type) {
    case actionTypes.DISPLAY_ALERT:
      return {
        ...state,
        showAlert: false,
        alertType: '',
        alertText: ''
      }
    case actionTypes.REGISTER:
    case actionTypes.LOGIN:
      return {
        ...state,
        token: action.payload.token,
        user: action.payload.user
      }
    case actionTypes.LOGOUT:
      return {
        ...initialState,
        user: null,
        token: null
      }
    case actionTypes.UPDATE_USER:
      return {
        ...state,
        token: action.payload.token,
        user: action.payload.user
      }
    default:
      throw new Error(`Unknown action type: ${action.type}`)
  }
}

const AppProvider = ({ children }) => {
  const [state, dispatch] = useReducer(reducer, initialState)

  // Axios
  const authFetch = axios.create({
    baseURL: 'api/v1'
  })

  // Request
  authFetch.interceptors.request.use(
    (config) => {
      config.headers.common['Authorization'] = `Bearer ${state.token}`
      return config
    },
    (error) => {
      return Promise.reject(error)
    }
  )

  // Response
  authFetch.interceptors.response.use(
    (response) => {
      return response
    },
    (error) => {
      if (error.response.status === 401) {
        logout()
      }
      return Promise.reject(error)
    }
  )

  const displayAlert = () => {
    dispatch({ type: actionTypes.DISPLAY_ALERT })
  }

  const addUserToLocalStorage = ({ user, token }) => {
    localStorage.setItem('user', JSON.stringify(user))
    localStorage.setItem('token', token)
  }

  const removeUserFromLocalStorage = () => {
    localStorage.removeItem('user')
    localStorage.removeItem('token')
  }

  const registerUser = async (currentUser) => {
    try {
      const { data } = await axios.post('/api/v1/auth/register', currentUser)
      const { user, token } = data

      dispatch({
        type: actionTypes.REGISTER,
        payload: { user, token }
      })

      addUserToLocalStorage({ user, token })
    } catch (error) {
      throw new Error(error.response.data.msg)
    }
  }

  const login = async (currentUser) => {
    try {
      const { data } = await axios.post('/api/v1/auth/login', currentUser)
      const { user, token } = data

      dispatch({
        type: actionTypes.LOGIN,
        payload: { user, token }
      })

      addUserToLocalStorage({ user, token })
    } catch (error) {
      throw new Error(error.response.data.msg)
    }
  }

  const logout = () => {
    try {
      dispatch({ type: actionTypes.LOGOUT })
      removeUserFromLocalStorage()
    } catch (error) {
      throw new Error(error)
    }
  }

  const updateUser = async (currentUser) => {
    try {
      const { data } = await authFetch.patch('/auth/updateUser', currentUser)
      const { user, token } = data

      dispatch({ type: actionTypes.UPDATE_USER, payload: { user, token } })
      addUserToLocalStorage({ user, token })
    } catch (error) {
      throw new Error(error.response.data.msg)
    }
  }

  return (
    <AppContext.Provider
      value={{
        ...state,
        displayAlert,
        registerUser,
        login,
        logout,
        updateUser
      }}
    >
      {children}
    </AppContext.Provider>
  )
}

const useAppContext = () => {
  return useContext(AppContext)
}

export { AppProvider, useAppContext }

How can I use a function to define a property within a class?

I am trying to define a variable based on a condition. In the code below, I want to be able to define speed as “1” if my character is over a tile that I have coded to be “water” and speed as “2” on every other tile.

I know the code for signaling the water is firing correctly, but I am struggling to create a function (I don’t think I can use get/set?) that worked.

 racer1: new Person({
      isPlayerControlled: false,
      x: utils.withGrid(6),
      y: utils.withGrid(25),
      speed: 2,
      src: "/images/characters/people/6frameani.png",
      behaviorLoop: [ 
      {type: "walk", direction: "up",}
      ]
        }

Before I tried editing the Person object, I tried by editing the updatePosition method I have written, but I could not make any headway there either.

 updatePosition(state) {
      const [property, change] = this.directionUpdate[this.direction];
      this[property] += change;
      this.movingProgressRemaining -= this.speed; 

      if (state.map.isSpaceWet(this.x, this.y, this.direction) == true) {
        this.speed=1; 
      }
      else if (state.map.isSpaceWet(this.x, this.y, this.direction) == false) {
        this.speed=2;
        return;
      }

My character would just stop when they reach the water. I believe because the decreased speed reduced the movingProgressRemaining to 0, signaling an end of their movement.

Uncaught TypeError: Cannot read properties of undefined (reading ‘close’)

I am always getting this error:
Uncaught TypeError: Cannot read properties of undefined (reading ‘close’)
whenever i write the code:

render() {
        return (
            <tr>
                <td>{this.props.ticker}</td>
                <td>{this.state.data.close}</td>
                <td>{this.state.data.date}</td>
                <td>{this.state.data.label}</td>
            </tr>
        )
    }

i had used this earlier:

export const iex={
    api_token: 'pk_28378b3165fb4fba817da6d5db428467',
    base_url: 'https://cloud.iexapis.com/'
};

I cant understand where the problem lies.

This is my code:

import React, { Component } from 'react';
import { iex } from '../config/iex.js';

class StockRow extends Component{

    constructor(props){
        super(props);
        this.state= {
            date: {},
        };
    }

    componentDidMount(){
    //      query the API
        const url = `${iex.base_url}/stock/${this.props.ticker}/
        intraday-prices?chartLast=1&token=${iex.api_token}`
        fetch(url)
        .then((response) =>response.json())
        .then((data) =>{
            console.log(data);
            this.setState({
                data: data[data.length-1],
            });
        });
    }
render() {
        return (
            <tr>
                <td>{this.props.ticker}</td>
                <td>{this.state.data.close}</td>
                <td>{this.state.data.date}</td>
                <td>{this.state.data.label}</td>
            </tr>
        )
    }
}

export default StockRow;

Creating a storybook for a component with children

I have the following code:

(notice I’m using: storybook: 7.0.23)

package.json

{
  "name": "chatscope",
  "version": "0.1.0",
  "private": true,
  "dependencies": {
    "@testing-library/jest-dom": "^5.16.5",
    "@testing-library/react": "^13.4.0",
    "@testing-library/user-event": "^13.5.0",
    "@types/jest": "^27.5.2",
    "@types/node": "^16.18.37",
    "@types/react": "^18.2.14",
    "@types/react-dom": "^18.2.6",
    "react": "^18.2.0",
    "react-dom": "^18.2.0",
    "react-scripts": "5.0.1",
    "typescript": "^4.9.5",
    "web-vitals": "^2.1.4"
  },
  "scripts": {
    "start": "react-scripts start",
    "build": "react-scripts build",
    "test": "react-scripts test",
    "eject": "react-scripts eject",
    "storybook": "storybook dev -p 6006",
    "build-storybook": "storybook build"
  },
  "eslintConfig": {
    "extends": [
      "react-app",
      "react-app/jest",
      "plugin:storybook/recommended"
    ]
  },
  "browserslist": {
    "production": [
      ">0.2%",
      "not dead",
      "not op_mini all"
    ],
    "development": [
      "last 1 chrome version",
      "last 1 firefox version",
      "last 1 safari version"
    ]
  },
  "devDependencies": {
    "@babel/plugin-proposal-private-property-in-object": "^7.21.11",
    "@storybook/addon-essentials": "7.0.23",
    "@storybook/addon-interactions": "7.0.23",
    "@storybook/addon-links": "7.0.23",
    "@storybook/blocks": "7.0.23",
    "@storybook/preset-create-react-app": "7.0.23",
    "@storybook/react": "7.0.23",
    "@storybook/react-webpack5": "7.0.23",
    "@storybook/testing-library": "0.0.14-next.2",
    "babel-plugin-named-exports-order": "0.0.2",
    "eslint-plugin-storybook": "^0.6.12",
    "prop-types": "15.8.1",
    "storybook": "7.0.23",
    "webpack": "5.88.0"
  }
}

Image.tsx

import React, { forwardRef, useImperativeHandle, useRef } from "react";

export interface ImageProps {
  name?: string;
  src?: string;
  style?: React.CSSProperties;
}

interface ImageRef {
  focus: () => void;
}

const ImageInner: React.ForwardRefRenderFunction<ImageRef, ImageProps> = (
  {
    name,
    src,
    style,
  },
  ref
) => {

  const avatarRef = useRef<HTMLDivElement>(null);

  useImperativeHandle(ref, () => ({
    focus: () => {
      avatarRef.current?.focus();
    },
  }));

  return (
    <div
      ref={avatarRef}
      style={{
        display: "inline-block",
        ...style,
      }}
    >
      <img src={src} alt={name} />
      {
        name && (
          <div style={{ textAlign: 'center' }}>{name}</div>
        )
      }
    </div>
  );
};

export const Image = forwardRef(ImageInner);

ImageGroup.tsx

import React, { ReactElement } from "react";
import { ImageProps } from "../Image/Image";

interface ImageGroupProps {
  children: ReactElement<ImageProps>[];
}

export const ImageGroup: React.FC<ImageGroupProps> = ({
  children,
}) => {

  return (
    <div>
      {
        children.map((child, index) => {
          return React.cloneElement(child, {
            key: index,
            name: `[${child.props.name}]`,
            style: {
              opacity: 0.9,
              margin: '4px',
            },
          });
        })
      }
    </div>
  );
};

Image.stories.ts

import type { Meta, StoryObj } from '@storybook/react';
import { Image } from '../components/Image/Image';

const meta = {
  title: 'Example/Image',
  component: Image,
  tags: ['autodocs'],
  argTypes: {

  },
  args: {
    src: 'https://picsum.photos/200/200',
    name: 'Image 1',
  }
} satisfies Meta<typeof Image>;

export default meta;

type Story = StoryObj<typeof meta>;

export const Default: Story = {
  args: {

  },
};

ImageGroup.stories.ts

import type { Meta, StoryObj } from '@storybook/react';
import { ImageGroup } from '../components/ImageGroup/ImageGroup';

const meta = {
  title: 'Example/ImageGroup',
  component: ImageGroup,
  tags: ['autodocs'],
  argTypes: {

  },
} satisfies Meta<typeof ImageGroup>;

export default meta;

type Story = StoryObj<typeof meta>;

export const Default: Story = {
  args: {
    children: [

    ],
  },
};

The story for the Image works properly:

enter image description here

But I want to create a story for the ImageGroup as well.

On file: App.tsx I have the following code:

import './App.css';
import { Image } from './components/Image/Image';
import { ImageGroup } from './components/ImageGroup/ImageGroup';

function App() {
  return (
    <div className="App">
      <ImageGroup>
        <Image name="Image 1" src="https://picsum.photos/200/200?nocache=1" />
        <Image name="Image 2" src="https://picsum.photos/200/200?nocache=2" />
        <Image name="Image 3" src="https://picsum.photos/200/200?nocache=3" />
      </ImageGroup>
    </div>
  );
}

export default App;

which displays something like this:

enter image description here

I want the story for the ImageGroup to display something similar.

Any idea on how to do this?

Thanks!

i have error to recognize folder in node.js

this is my html code `

                </div>
                <script>$.ajax({
                    url: "/static/home/done/",
                    success: function (data) {
                        $(data).find("a").attr("href", function (i, val) {
                            if (val.match(/.(jpe?g|png|gif|JPG)$/)) {
                                $("#done_work_1").append("<div class='slide'><img src='" + val + "'></div>");
                                $("#done_work_2").append("<div class='slide'><img src='" + val + "'></div>");
                            }
                        });
                    }
                });</script>`

and this is my server.js file in node.js

    res.sendFile(__dirname + '/template/home.html');
});

app.use('/static/home', express.static('static/home'));
app.use(express.static('static/home'));
app.use('/static/home/done', express.static('static/home/done'));
app.use(express.static('static/home/done'));

my image is in this location static/home/done

but when i run the node server.js on localhost
got this error in console

Failed to load resource: the server responded with a status of 404 (Not Found) —-http://127.0.0.1:4400/static/home/done/

i want use jqury code say in up to load image inside (static/home/done) file but i got this error , how can i fix it 🙁

“Error: Could not establish connection. Receiving end does not exist”

I’m developing a Chrome extension and encountering an error message in the console: “Uncaught (in promise) Error: Could not establish connection. Receiving end does not exist.” I’m having trouble understanding its cause and how to resolve it.

Here’s the relevant code snippet from my content script:

service-worker.js

chrome.webRequest.onBeforeRequest.addListener((details) => {
  chrome.runtime.sendMessage({
    message: "background_to_popup",
    data: details,
  })
  console.log(details); 
}, {
  urls: ['<all_urls>'],
  types: ['main_frame'],
});

I’m not sure what is causing this error and how to establish the connection correctly between the content script and the background script. Any insights or suggestions would be greatly appreciated.

React native application instantly crashes on Testflight instantly due to some type of execution error

I am a developer and I create a react native application with expo. I am in the process of publishing it to apple app store for review. I noticed that on my local machine it runs perfectly. When i publish it to Testflight it instantly crashes. I have the backtrace and I went through it but can not figure out exactly what is causing the issue to fix the problem. Can anyone help me figure what the issue is and what is causing the issue by the backtrace. I would really appreciate it.

Here is the backtrace:

{"app_name":"Rippe","timestamp":"2023-06-30 12:58:52.00 -0700","app_version":"1.0.0","slice_uuid":"...","adam_id":"...","build_version":"1","platform":2,"bundleID":"app.rippeapp.com","share_with_app_devs":0,"is_first_party":0,"bug_type":"309","os_version":"iPhone OS 16.5.1 (20F75)","roots_installed":0,"name":"Rippe","incident_id":"..."}
{
  "uptime" : 65000,
  "procRole" : "Foreground",
  "version" : 2,
  "userID" : 501,
  "deployVersion" : 210,
  "modelCode" : "iPad11,6",
  "coalitionID" : 1277,
  "osVersion" : {
    "isEmbedded" : true,
    "train" : "iPhone OS 16.5.1",
    "releaseType" : "User",
    "build" : "20F75"
  },
  "captureTime" : "2023-06-30 12:58:50.2801 -0700",
  "incident" : "BF86938B-5562-4A8C-B058-1C2DDC77BEDB",
  "pid" : 2981,
  "cpuType" : "ARM-64",
  "roots_installed" : 0,
  "bug_type" : "309",
  "procLaunch" : "2023-06-30 12:58:50.0089 -0700",
  "procStartAbsTime" : 1560679672274,
  "procExitAbsTime" : 1560686110050,
  "procName" : "Rippe",
  "procPath" : "/private/var/containers/Bundle/Application/5191B255-ACE4-4921-83C5-49AD676CEF8F/Rippe.app/Rippe",
  "bundleInfo" : {"CFBundleShortVersionString":"1.0.0","CFBundleVersion":"1","CFBundleIdentifier":"app.rippeapp.com","DTAppStoreToolsBuild":"14E221"},
  "storeInfo" : {"itemID":"6450795147","deviceIdentifierForVendor":"A0B69947-7299-465C-AB19-355D955F323D","thirdParty":true,"softwareVersionExternalIdentifier":"858167359"},
  "parentProc" : "launchd",
  "parentPid" : 1,
  "coalitionName" : "...",
  "crashReporterKey" : "b3ddb8582d3b8e5e8ba255ff7366f65d3c1291b8",
  "wasUnlockedSinceBoot" : 1,
  "isLocked" : 0,
  "codeSigningID" : "...",
  "codeSigningTeamID" : "...",
  "codeSigningFlags" : ...,
  "codeSigningValidationCategory" : 4,
  "codeSigningTrustLevel" : 0,
  "exception" : {"codes":"0x0000000000000000, 0x0000000000000000","rawCodes":[0,0],"type":"EXC_CRASH","signal":"SIGABRT"},
  "ktriageinfo" : "VM - (arg = 0x0) pmap_enter retried due to resource shortagen",
  "asi" : {"libsystem_c.dylib":["abort() called"]},
  "lastExceptionBacktrace" : [{"imageOffset":40116,"symbol":"__exceptionPreprocess","symbolLocation":164,"imageIndex":9},{"imageOffset":99280,"symbol":"objc_exception_throw","symbolLocation":60,"imageIndex":15},{"imageOffset":763356,"imageIndex":0},{"imageOffset":1231540,"imageIndex":0},{"imageOffset":1233656,"imageIndex":0},{"imageOffset":470020,"symbol":"__invoking___","symbolLocation":148,"imageIndex":9},{"imageOffset":134324,"symbol":"-[NSInvocation invoke]","symbolLocation":428,"imageIndex":9},{"imageOffset":132812,"symbol":"-[NSInvocation invokeWithTarget:]","symbolLocation":64,"imageIndex":9},{"imageOffset":958332,"imageIndex":0},{"imageOffset":967008,"imageIndex":0},{"imageOffset":966120,"imageIndex":0},{"imageOffset":8992,"symbol":"_dispatch_call_block_and_release","symbolLocation":32,"imageIndex":4},{"imageOffset":16044,"symbol":"_dispatch_client_callout","symbolLocation":20,"imageIndex":4},{"imageOffset":46388,"symbol":"_dispatch_lane_serial_drain","symbolLocation":668,"imageIndex":4},{"imageOffset":49316,"symbol":"_dispatch_lane_invoke","symbolLocation":384,"imageIndex":4},{"imageOffset":93404,"symbol":"_dispatch_workloop_worker_thread","symbolLocation":648,"imageIndex":4},{"imageOffset":3548,"symbol":"_pthread_wqthread","symbolLocation":288,"imageIndex":12},{"imageOffset":2940,"symbol":"start_wqthread","symbolLocation":8,"imageIndex":12}],
  "faultingThread" : 1,
  "threads" : [{"id":460443,"queue":"com.apple.main-thread","frames":[{"imageOffset":3204,"symbol":"mach_msg2_trap","symbolLocation":8,"imageIndex":3},{"imageOffset":80724,"symbol":"mach_msg2_internal","symbolLocation":80,"imageIndex":3},{"imageOffset":81452,"symbol":"mach_msg_overwrite","symbolLocation":540,"imageIndex":3},{"imageOffset":4552,"symbol":"mach_msg","symbolLocation":24,"imageIndex":3},{"imageOffset":127500,"symbol":"_dispatch_mach_send_and_wait_for_reply","symbolLocation":548,"imageIndex":4},{"imageOffset":128412,"symbol":"dispatch_mach_send_with_result_and_wait_for_reply","symbolLocation":60,"imageIndex":4},{"imageOffset":66072,"symbol":"xpc_connection_send_message_with_reply_sync","symbolLocation":240,"imageIndex":5},{"imageOffset":10697388,"symbol":"-[GEOXPCRequest sendSync:error:]","symbolLocation":232,"imageIndex":6},{"imageOffset":4833572,"symbol":"_GEOGetAllValuesInStore","symbolLocation":196,"imageIndex":6},{"imageOffset":4069504,"symbol":"-[GEOConfigStorageCached resync]","symbolLocation":80,"imageIndex":6},{"imageOffset":4068996,"symbol":"-[GEOConfigStorageCached getConfigValueForKey:countryCode:options:source:]","symbolLocation":176,"imageIndex":6},{"imageOffset":75364,"symbol":"___getValue_block_invoke","symbolLocation":552,"imageIndex":6},{"imageOffset":252304,"symbol":"MapKitConfig_GetPropertiesForKey","symbolLocation":2636,"imageIndex":7},{"imageOffset":495192,"symbol":"GEOConfigGetPropertiesForKey","symbolLocation":84,"imageIndex":6},{"imageOffset":495620,"symbol":"_getValue","symbolLocation":212,"imageIndex":6},{"imageOffset":621496,"symbol":"GEOConfigGetInteger","symbolLocation":32,"imageIndex":6},{"imageOffset":261780,"symbol":"__29-[MKMapView _canShowControls]_block_invoke","symbolLocation":32,"imageIndex":7},{"imageOffset":16044,"symbol":"_dispatch_client_callout","symbolLocation":20,"imageIndex":4},{"imageOffset":22252,"symbol":"_dispatch_once_callout","symbolLocation":32,"imageIndex":4},{"imageOffset":27952,"symbol":"-[MKMapView _canShowControls]","symbolLocation":176,"imageIndex":7},{"imageOffset":27152,"symbol":"-[MKMapView _updateCompassVisibility]","symbolLocation":64,"imageIndex":7},{"imageOffset":81904,"symbol":"-[MKMapView _setEdgeInsets:explicit:]","symbolLocation":644,"imageIndex":7},{"imageOffset":79484,"symbol":"-[MKMapView setFrame:]","symbolLocation":220,"imageIndex":7},{"imageOffset":787668,"symbol":"UIViewCommonInitWithFrame","symbolLocation":1896,"imageIndex":8},{"imageOffset":597680,"symbol":"-[UIView initWithFrame:]","symbolLocation":132,"imageIndex":8},{"imageOffset":381520,"symbol":"-[MKMapView _initWithFrame:allowsAntialiasing:]","symbolLocation":124,"imageIndex":7},{"imageOffset":2109632,"imageIndex":0},{"imageOffset":2126956,"imageIndex":0},{"imageOffset":781888,"imageIndex":0},{"imageOffset":1102288,"imageIndex":0},{"imageOffset":8992,"symbol":"_dispatch_call_block_and_release","symbolLocation":32,"imageIndex":4},{"imageOffset":16044,"symbol":"_dispatch_client_callout","symbolLocation":20,"imageIndex":4},{"imageOffset":75428,"symbol":"_dispatch_main_queue_drain","symbolLocation":928,"imageIndex":4},{"imageOffset":74484,"symbol":"_dispatch_main_queue_callback_4CF","symbolLocation":44,"imageIndex":4},{"imageOffset":625704,"symbol":"__CFRUNLOOP_IS_SERVICING_THE_MAIN_DISPATCH_QUEUE__","symbolLocation":16,"imageIndex":9},{"imageOffset":501088,"symbol":"__CFRunLoopRun","symbolLocation":1992,"imageIndex":9},{"imageOffset":521196,"symbol":"CFRunLoopRunSpecific","symbolLocation":612,"imageIndex":9},{"imageOffset":4956,"symbol":"GSEventRunModal","symbolLocation":164,"imageIndex":10},{"imageOffset":3790568,"symbol":"-[UIApplication _run]","symbolLocation":888,"imageIndex":8},{"imageOffset":3789644,"symbol":"UIApplicationMain","symbolLocation":340,"imageIndex":8},{"imageOffset":26012,"imageIndex":0},{"imageOffset":89580,"symbol":"start","symbolLocation":2220,"imageIndex":11}]},{"triggered":true,"id":460459,"threadState":{"x":[{"value":0},{"value":0},{"value":0},{"value":0},{"value":9279125063},{"value":6103214160},{"value":110},{"value":1280},{"value":1026604933880236379},{"value":1026604931108305243},{"value":512},{"value":11},{"value":11},{"value":2095104},{"value":2043},{"value":3001106507},{"value":328},{"value":6103216128},{"value":0},{"value":6},{"value":3335},{"value":6103216352},{"value":0},{"value":6103216352},{"value":10781615464},{"value":0},{"value":276},{"value":0},{"value":10755352576}],"flavor":"ARM_THREAD_STATE64","lr":{"value":9279901976},"cpsr":{"value":1073741824},"fp":{"value":6103214016},"sp":{"value":6103213984},"esr":{"value":1442840704,"description":" Address size fault"},"pc":{"value":8729605464,"matchesCrashFrame":1},"far":{"value":9083746008}},"queue":"com.facebook.react.ExceptionsManagerQueue","frames":[{"imageOffset":30040,"symbol":"__pthread_kill","symbolLocation":8,"imageIndex":3},{"imageOffset":28952,"symbol":"pthread_kill","symbolLocation":268,"imageIndex":12},{"imageOffset":119160,"symbol":"abort","symbolLocation":180,"imageIndex":13},{"imageOffset":72696,"symbol":"abort_message","symbolLocation":132,"imageIndex":14},{"imageOffset":5188,"symbol":"demangling_terminate_handler()","symbolLocation":348,"imageIndex":14},{"imageOffset":122532,"symbol":"_objc_terminate()","symbolLocation":144,"imageIndex":15},{"imageOffset":69564,"symbol":"std::__terminate(void (*)())","symbolLocation":16,"imageIndex":14},{"imageOffset":69472,"symbol":"std::terminate()","symbolLocation":56,"imageIndex":14},{"imageOffset":16064,"symbol":"_dispatch_client_callout","symbolLocation":40,"imageIndex":4},{"imageOffset":46388,"symbol":"_dispatch_lane_serial_drain","symbolLocation":668,"imageIndex":4},{"imageOffset":49316,"symbol":"_dispatch_lane_invoke","symbolLocation":384,"imageIndex":4},{"imageOffset":93404,"symbol":"_dispatch_workloop_worker_thread","symbolLocation":648,"imageIndex":4},{"imageOffset":3548,"symbol":"_pthread_wqthread","symbolLocation":288,"imageIndex":12},{"imageOffset":2940,"symbol":"start_wqthread","symbolLocation":8,"imageIndex":12}]},{"id":460460,"frames":[{"imageOffset":2932,"symbol":"start_wqthread","symbolLocation":0,"imageIndex":12}]},{"id":460461,"frames":[{"imageOffset":2932,"symbol":"start_wqthread","symbolLocation":0,"imageIndex":12}]},{"id":460462,"frames":[{"imageOffset":2932,"symbol":"start_wqthread","symbolLocation":0,"imageIndex":12}]},{"id":460463,"name":"com.apple.uikit.eventfetch-thread","frames":[{"imageOffset":3204,"symbol":"mach_msg2_trap","symbolLocation":8,"imageIndex":3},{"imageOffset":80724,"symbol":"mach_msg2_internal","symbolLocation":80,"imageIndex":3},{"imageOffset":81452,"symbol":"mach_msg_overwrite","symbolLocation":540,"imageIndex":3},{"imageOffset":4552,"symbol":"mach_msg","symbolLocation":24,"imageIndex":3},{"imageOffset":495652,"symbol":"__CFRunLoopServiceMachPort","symbolLocation":160,"imageIndex":9},{"imageOffset":500304,"symbol":"__CFRunLoopRun","symbolLocation":1208,"imageIndex":9},{"imageOffset":521196,"symbol":"CFRunLoopRunSpecific","symbolLocation":612,"imageIndex":9},{"imageOffset":270292,"symbol":"-[NSRunLoop(NSRunLoop) runMode:beforeDate:]","symbolLocation":212,"imageIndex":16},{"imageOffset":270012,"symbol":"-[NSRunLoop(NSRunLoop) runUntilDate:]","symbolLocation":64,"imageIndex":16},{"imageOffset":5047292,"symbol":"-[UIEventFetcher threadMain]","symbolLocation":416,"imageIndex":8},{"imageOffset":374084,"symbol":"__NSThread__start__","symbolLocation":716,"imageIndex":16},{"imageOffset":5816,"symbol":"_pthread_start","symbolLocation":148,"imageIndex":12},{"imageOffset":2952,"symbol":"thread_start","symbolLocation":8,"imageIndex":12}]},{"id":460464,"frames":[{"imageOffset":2932,"symbol":"start_wqthread","symbolLocation":0,"imageIndex":12}]},{"id":460465,"frames":[{"imageOffset":2932,"symbol":"start_wqthread","symbolLocation":0,"imageIndex":12}]},{"id":460466,"frames":[{"imageOffset":2932,"symbol":"start_wqthread","symbolLocation":0,"imageIndex":12}]},{"id":460467,"name":"com.facebook.react.JavaScript","frames":[{"imageOffset":3204,"symbol":"mach_msg2_trap","symbolLocation":8,"imageIndex":3},{"imageOffset":80724,"symbol":"mach_msg2_internal","symbolLocation":80,"imageIndex":3},{"imageOffset":81452,"symbol":"mach_msg_overwrite","symbolLocation":540,"imageIndex":3},{"imageOffset":4552,"symbol":"mach_msg","symbolLocation":24,"imageIndex":3},{"imageOffset":495652,"symbol":"__CFRunLoopServiceMachPort","symbolLocation":160,"imageIndex":9},{"imageOffset":500304,"symbol":"__CFRunLoopRun","symbolLocation":1208,"imageIndex":9},{"imageOffset":521196,"symbol":"CFRunLoopRunSpecific","symbolLocation":612,"imageIndex":9},{"imageOffset":836700,"imageIndex":0},{"imageOffset":374084,"symbol":"__NSThread__start__","symbolLocation":716,"imageIndex":16},{"imageOffset":5816,"symbol":"_pthread_start","symbolLocation":148,"imageIndex":12},{"imageOffset":2952,"symbol":"thread_start","symbolLocation":8,"imageIndex":12}]},{"id":460469,"name":"hades","frames":[{"imageOffset":5464,"symbol":"__psynch_cvwait","symbolLocation":8,"imageIndex":3},{"imageOffset":32888,"symbol":"_pthread_cond_wait","symbolLocation":1232,"imageIndex":12},{"imageOffset":77560,"symbol":"std::__1::condition_variable::wait(std::__1::unique_lock<std::__1::mutex>&)","symbolLocation":28,"imageIndex":17},{"imageOffset":1166504,"imageIndex":1},{"imageOffset":1165916,"imageIndex":1},{"imageOffset":5816,"symbol":"_pthread_start","symbolLocation":148,"imageIndex":12},{"imageOffset":2952,"symbol":"thread_start","symbolLocation":8,"imageIndex":12}]},{"id":460470,"name":"hermes-chrome-inspector-conn","frames":[{"imageOffset":5464,"symbol":"__psynch_cvwait","symbolLocation":8,"imageIndex":3},{"imageOffset":32888,"symbol":"_pthread_cond_wait","symbolLocation":1232,"imageIndex":12},{"imageOffset":77560,"symbol":"std::__1::condition_variable::wait(std::__1::unique_lock<std::__1::mutex>&)","symbolLocation":28,"imageIndex":17},{"imageOffset":1922928,"imageIndex":0},{"imageOffset":1630104,"imageIndex":0},{"imageOffset":5816,"symbol":"_pthread_start","symbolLocation":148,"imageIndex":12},{"imageOffset":2952,"symbol":"thread_start","symbolLocation":8,"imageIndex":12}]},{"id":460471,"name":"hermes-inspector","frames":[{"imageOffset":5464,"symbol":"__psynch_cvwait","symbolLocation":8,"imageIndex":3},{"imageOffset":32888,"symbol":"_pthread_cond_wait","symbolLocation":1232,"imageIndex":12},{"imageOffset":77560,"symbol":"std::__1::condition_variable::wait(std::__1::unique_lock<std::__1::mutex>&)","symbolLocation":28,"imageIndex":17},{"imageOffset":1922928,"imageIndex":0},{"imageOffset":1630104,"imageIndex":0},{"imageOffset":5816,"symbol":"_pthread_start","symbolLocation":148,"imageIndex":12},{"imageOffset":2952,"symbol":"thread_start","symbolLocation":8,"imageIndex":12}]}],
  "usedImages" : [
  {
    "source" : "P",
    "arch" : "arm64",
    "base" : 4364222464,
    "size" : 2998272,
    "uuid" : "c948a991-c5f1-3696-b3e3-9282dcb0609e",
    "path" : "/private/var/containers/Bundle/Application/5191B255-ACE4-4921-83C5-49AD676CEF8F/Rippe.app/Rippe",
    "name" : "Rippe"
  },
  {
    "source" : "P",
    "arch" : "arm64",
    "base" : 4374691840,
    "size" : 2998272,
    "uuid" : "dfc2559d-8dda-3d2d-9924-5d5bd62a1218",
    "path" : "/private/var/containers/Bundle/Application/5191B255-ACE4-4921-83C5-49AD676CEF8F/Rippe.app/Frameworks/hermes.framework/hermes",
    "name" : "hermes"
  },
  {
    "source" : "P",
    "arch" : "arm64e",
    "base" : 4373938176,
    "size" : 49152,
    "uuid" : "695a8449-aae8-38b6-851c-ced0b1176f03",
    "path" : "/private/preboot/Cryptexes/OS/usr/lib/libobjc-trampolines.dylib",
    "name" : "libobjc-trampolines.dylib"
  },
  {
    "source" : "P",
    "arch" : "arm64e",
    "base" : 8729575424,
    "size" : 229368,
    "uuid" : "75da6452-934e-3f80-b181-d47074378e83",
    "path" : "/usr/lib/system/libsystem_kernel.dylib",
    "name" : "libsystem_kernel.dylib"
  },
  {
    "source" : "P",
    "arch" : "arm64e",
    "base" : 7805300736,
    "size" : 290816,
    "uuid" : "bb347f0e-f21c-3607-82e6-c8d750fdbf8c",
    "path" : "/usr/lib/system/libdispatch.dylib",
    "name" : "libdispatch.dylib"
  },
  {
    "source" : "P",
    "arch" : "arm64e",
    "base" : 9280147456,
    "size" : 270336,
    "uuid" : "e999664a-4868-3766-8787-f501fde376e3",
    "path" : "/usr/lib/system/libxpc.dylib",
    "name" : "libxpc.dylib"
  },
  {
    "source" : "P",
    "arch" : "arm64e",
    "base" : 7777320960,
    "size" : 27979776,
    "uuid" : "29397f67-f971-3720-92ee-6626eba91375",
    "path" : "/System/Library/PrivateFrameworks/GeoServices.framework/GeoServices",
    "name" : "GeoServices"
  },
  {
    "source" : "P",
    "arch" : "arm64e",
    "base" : 7820439552,
    "size" : 3018752,
    "uuid" : "0945ffff-870b-3bd4-a619-1e5dbe1680b9",
    "path" : "/System/Library/Frameworks/MapKit.framework/MapKit",
    "name" : "MapKit"
  },
  {
    "source" : "P",
    "arch" : "arm64e",
    "base" : 7716855808,
    "size" : 25317376,
    "uuid" : "b3834960-244b-34e4-9ea0-ca4bb44ef0f3",
    "path" : "/System/Library/PrivateFrameworks/UIKitCore.framework/UIKitCore",
    "name" : "UIKitCore"
  },
  {
    "source" : "P",
    "arch" : "arm64e",
    "base" : 7682846720,
    "size" : 4096000,
    "uuid" : "4230c122-42e8-383b-beec-ee7b61f8bb61",
    "path" : "/System/Library/Frameworks/CoreFoundation.framework/CoreFoundation",
    "name" : "CoreFoundation"
  },
  {
    "source" : "P",
    "arch" : "arm64e",
    "base" : 8668585984,
    "size" : 36864,
    "uuid" : "e830ad84-d612-3b6b-8de7-ea61a786d132",
    "path" : "/System/Library/PrivateFrameworks/GraphicsServices.framework/GraphicsServices",
    "name" : "GraphicsServices"
  },
  {
    "source" : "P",
    "arch" : "arm64e",
    "base" : 8208388096,
    "size" : 547364,
    "uuid" : "6987370a-c385-3135-a27f-6731706bcbd8",
    "path" : "/usr/lib/dyld",
    "name" : "dyld"
  },
  {
    "source" : "P",
    "arch" : "arm64e",
    "base" : 9279873024,
    "size" : 49140,
    "uuid" : "56698309-210a-3137-97d4-14e4604b1117",
    "path" : "/usr/lib/system/libsystem_pthread.dylib",
    "name" : "libsystem_pthread.dylib"
  },
  {
    "source" : "P",
    "arch" : "arm64e",
    "base" : 7805591552,
    "size" : 516084,
    "uuid" : "3548f8ee-7a07-3b67-8d69-9c7d42096513",
    "path" : "/usr/lib/system/libsystem_c.dylib",
    "name" : "libsystem_c.dylib"
  },
  {
    "source" : "P",
    "arch" : "arm64e",
    "base" : 9279037440,
    "size" : 98304,
    "uuid" : "b65049d9-dda4-3d03-9e13-0b4795138702",
    "path" : "/usr/lib/libc++abi.dylib",
    "name" : "libc++abi.dylib"
  },
  {
    "source" : "P",
    "arch" : "arm64e",
    "base" : 7566524416,
    "size" : 278432,
    "uuid" : "085a190c-6214-38ea-accb-428c3e8afa65",
    "path" : "/usr/lib/libobjc.A.dylib",
    "name" : "libobjc.A.dylib"
  },
  {
    "source" : "P",
    "arch" : "arm64e",
    "base" : 7585583104,
    "size" : 9297920,
    "uuid" : "6e76dc96-11af-3b2e-b71e-215f9cc6e822",
    "path" : "/System/Library/Frameworks/Foundation.framework/Foundation",
    "name" : "Foundation"
  },
  {
    "source" : "P",
    "arch" : "arm64e",
    "base" : 7924224000,
    "size" : 577528,
    "uuid" : "ffa7a30d-b520-3cda-8a7f-63c6cd922df9",
    "path" : "/usr/lib/libc++.1.dylib",
    "name" : "libc++.1.dylib"
  }
],
  "sharedCache" : {
  "base" : 7565803520,
  "size" : 2951200768,
  "uuid" : "5092a123-2b49-326b-a1dc-4bc5fe375d8b"
},
  "vmSummary" : "ReadOnly portion of Libraries: Total=860.8M resident=0K(0%) swapped_out_or_unallocated=860.8M(100%)nWritable regions: Total=600.2M written=0K(0%) resident=0K(0%) swapped_out=0K(0%) unallocated=600.2M(100%)nn                                VIRTUAL   REGION nREGION TYPE                        SIZE    COUNT (non-coalesced) n===========                     =======  ======= nActivity Tracing                   256K        1 nColorSync                           64K        4 nCoreAnimation                       16K        1 nFoundation                          16K        1 nKernel Alloc Once                   32K        1 nMALLOC                           582.6M       45 nMALLOC guard page                  128K        8 nSTACK GUARD                        208K       13 nStack                             7536K       13 nVM_ALLOCATE                       9360K        8 n__AUTH                            1639K      172 n__AUTH_CONST                      22.6M      504 n__CTF                               824        1 n__DATA                            6833K      501 n__DATA_CONST                      26.5M      511 n__DATA_DIRTY                      5478K      472 n__FONT_DATA                        2352        1 n__INFO_FILTER                         8        1 n__LINKEDIT                       312.4M        4 n__OBJC_RO                         79.3M        1 n__OBJC_RW                         2432K        1 n__TEXT                           548.4M      523 ndyld private memory                272K        2 nmapped file                       37.1M        5 nshared memory                       48K        3 n===========                     =======  ======= nTOTAL                              1.6G     2797 n",
  "legacyInfo" : {
  "threadTriggered" : {
    "queue" : "com.facebook.react.ExceptionsManagerQueue"
  }
},
  "logWritingSignature" : "2c2b1e84a5db0fd70fc9f19047364738dfa3310a",
  "trialInfo" : {
  "rollouts" : [
    {
      "rolloutId" : "62c74108bcb0435c2153f963",
      "factorPackIds" : {
        "SIRI_TEXT_TO_SPEECH" : "6487a5ac8ec1191f379b908b"
      },
      "deploymentId" : 240000236
    },
    {
      "rolloutId" : "62c73fd17cce0d1b0bcb8a02",
      "factorPackIds" : {
        "SIRI_DIALOG_ASSETS" : "645e39c59e69a025b0a37ea1"
      },
      "deploymentId" : 240000110
    }
  ],
  "experiments" : [
    {
      "treatmentId" : "c28e4ee6-1b08-4f90-8e05-2809e78310a3",
      "experimentId" : "6317d2003d24842ff850182a",
      "deploymentId" : 400000013
    },
    {
      "treatmentId" : "d3835ae6-d7dd-4c39-8e74-f3fead549120",
      "experimentId" : "631fac54de559130376df80f",
      "deploymentId" : 400000038
    }
  ]
}
}

Getting nextSibling of element using xpath and puppeteer

I am trying to get the sibling text using xpath and puppeteer. I am able to get the parent just fine but I keep getting an object or unable to properly parse what is getting grabbed from page. Some of the elements aren’t always available on every page.

Layout of html

What I am trying to grab

what I am trying to get

const puppeteer = require('puppeteer');
const C = require('./login');
const {listenPageErrors} = require('./console');
const USERNAME_SELECTOR = 'input[name="login"]';
const PASSWORD_SELECTOR = 'input[name="password"]';
const CTA_SELECTOR = 'button[type="submit"]';
const fs = require('fs').promises;

async function startBrowser() {
    const browser = await puppeteer.launch({headless: 'new'});
    const page = await browser.newPage();
    return { browser, page };
}

async function closeBrowser(browser) {
    return browser.close();
}

async function playTest(url) {
    const { browser, page } = await startBrowser();
    page.setViewport({ width: 1980, height: 1024 });
    await page.setUserAgent('Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36');
    await page.goto('https://f95zone.to/login');
    await page.click(USERNAME_SELECTOR);
    await page.keyboard.type(C.username);
    await page.click(PASSWORD_SELECTOR);
    await page.keyboard.type(C.password);
    await page.click(CTA_SELECTOR);
    await page.waitForNavigation();
    await page.goto(url);

    const parent = await page.$x("//b[contains(.,'Voiced')]");
    const text = await page.evaluateHandle(el => el.nextSibling, parent[0]);
    console.log(vctxt);

}

(async () => {
    const data = await playTest("https://f95zone.to/threads/amairo-chocolate-2-final-cabbage-soft.165431/");
    // console.log(data)
    process.exit(1);
})();

Output of console

CDPElementHandle { handle: CDPJSHandle {} }

Uncaught ReferenceError: wins is not defined

I’m trying to make a code for a rock paper scissors game and even though I defined all the variables I need, none of them are getting defined according to the console. I declared all of my 3 variables, wins, ties and losses in an object, and they aren’t registering. This is my object:

      const score={
        wins:0,
        losses:0,
        ties:0
      };

This is the if statement where the error is occurring:

if(result==='You win!'){
        score.wins=wins++;
      } else if(result==='Tie.'){
        score.ties=ties++;
      } else if(result==='You lose.'){
        score.losses=losses++;
      }

And the is the alert that i’m trying to pass through:

      alert(`You picked ${playerMove}. Computer picked ${computerMove}. ${result}.n  Wins: ${score.wins}. n  Ties: ${score.ties}. n  Losses: ${score.losses}.`);

Can someone please help me with this.

credits to SuperSimpleDev for the tutorial and the course.

      const score={
        wins:0,
        losses:0,
        ties:0
      };

This is the if statement where the error is occurring:

if(result==='You win!'){
        score.wins=wins++;
      } else if(result==='Tie.'){
        score.ties=ties++;
      } else if(result==='You lose.'){
        score.losses=losses++;
      }

And the is the alert that i’m trying to pass through:

      alert(`You picked ${playerMove}. Computer picked ${computerMove}. ${result}.n  Wins: ${score.wins}. n  Ties: ${score.ties}. n  Losses: ${score.losses}.`);

Can someone please help me with this.

credits to SuperSimpleDev for the tutorial and the course.