Coordinates of point on cubic bezier in Javascript

I’m trying to create a JS function that will return a Y coordinate on a cubic bezier given the X coordinate. Here’s what I have:

function pointOnBezier(t, p0, p1, p2, p3) {
   var x = Math.pow(1-t,3) * p0[0] + 3 * t * Math.pow(1 - t, 2) * p1[0] + 3 * t * t * (1 - t) * p2[0] + t * t * t * p3[0];
   var y = Math.pow(1-t,3) * p0[1] + 3 * t * Math.pow(1 - t, 2) * p1[1] + 3 * t * t * (1 - t) * p2[1] + t * t * t * p3[1];
  return [x, y];
}

console.log(0.25, pointOnBezier(0.25, [0,0], [0.5, 0.5], [0.5, 0.5], [1.0, 1.0]));
console.log(0.5, pointOnBezier(0.5, [0,0], [0.5, 0.5], [0.5, 0.5], [1.0, 1.0]));
console.log(0.75, pointOnBezier(0.75, [0,0], [0.5, 0.5], [0.5, 0.5], [1.0, 1.0]));

I included the three test values. If you run the code, the expected results of t=0.25 and t=0.75 is a value of 0.25 and 0.75 but it’s returning 0.3 and 0.7.

Can anyone see the problem with the calculations?

Does express.json() for parsing json request body returns middleware with synchronous calls?

In express.js’ documentation, especially from this part: Don’t use synchronous functions, it is advised not to use synchronous functions whenever possible because in high-traffic websites, synchronous calls add up and can reduce application’s performance.

I use --trace-sync-io in my express app starting command to trace sync calls in my application, and below is my code snippet:

const express = require("express")

const app = express()

app.use(compression())
app.use(express.json())
app.use(express.urlencoded({extended: true}))

app.post('/', (req, res, next) => {
    res.status(200).json({message: 'ok', result: req.body})
})

app.get('/', (req, res, next) => {
    res.status(200).json({message: 'ok', result: null})
})

app.listen(3000, () => console.log('Server started on port 3000'))

I believe that if an endpoint needs to parse incoming JSON request body, it needs to use either the built-in request body parser such as the one from express, but every time I hit my endpoint from Postman, it seems like Node detected that this snippet code is using sync functions, with the stack trace as follows:

(node:21552) WARNING: Detected use of sync API
    at realpathSync (node:fs:2537:13)
    at toRealPath (node:internal/modules/cjs/loader:477:13)
    at tryFile (node:internal/modules/cjs/loader:473:10)
    at tryExtensions (node:internal/modules/cjs/loader:485:22)
    at tryPackage (node:internal/modules/cjs/loader:425:12)
    at Module._findPath (node:internal/modules/cjs/loader:678:18)
    at Module._resolveFilename (node:internal/modules/cjs/loader:1061:27)
    at Module._load (node:internal/modules/cjs/loader:920:27)
    at Module.require (node:internal/modules/cjs/loader:1141:19)
    at require (node:internal/modules/cjs/helpers:110:18)
(node:21552) WARNING: Detected use of sync API
    at realpathSync (node:fs:2579:29)
    at toRealPath (node:internal/modules/cjs/loader:477:13)
    at tryFile (node:internal/modules/cjs/loader:473:10)
    at tryExtensions (node:internal/modules/cjs/loader:485:22)
    at tryPackage (node:internal/modules/cjs/loader:425:12)
    at Module._findPath (node:internal/modules/cjs/loader:678:18)
    at Module._resolveFilename (node:internal/modules/cjs/loader:1061:27)
    at Module._load (node:internal/modules/cjs/loader:920:27)
    at Module.require (node:internal/modules/cjs/loader:1141:19)
    at require (node:internal/modules/cjs/helpers:110:18)
(node:21552) WARNING: Detected use of sync API
    at realpathSync (node:fs:2579:29)
    at toRealPath (node:internal/modules/cjs/loader:477:13)
    at tryFile (node:internal/modules/cjs/loader:473:10)
    at tryExtensions (node:internal/modules/cjs/loader:485:22)
    at tryPackage (node:internal/modules/cjs/loader:425:12)
    at Module._findPath (node:internal/modules/cjs/loader:678:18)
    at Module._resolveFilename (node:internal/modules/cjs/loader:1061:27)
    at Module._load (node:internal/modules/cjs/loader:920:27)
    at Module.require (node:internal/modules/cjs/loader:1141:19)
    at require (node:internal/modules/cjs/helpers:110:18)
(node:21552) WARNING: Detected use of sync API
    at openSync (node:fs:598:26)
    at readFileSync (node:fs:469:35)
    at Module._extensions..js (node:internal/modules/cjs/loader:1271:18)
    at Module.load (node:internal/modules/cjs/loader:1117:32)
    at Module._load (node:internal/modules/cjs/loader:958:12)
    at Module.require (node:internal/modules/cjs/loader:1141:19)
    at require (node:internal/modules/cjs/helpers:110:18)
    at getCodec (C:ProjectJavaScriptnodejs-playgroundnode_modulesiconv-litelibindex.js:65:27)
    at getDecoder (C:ProjectJavaScriptnodejs-playgroundnode_modulesiconv-litelibindex.js:127:23)
    at getDecoder (C:ProjectJavaScriptnodejs-playgroundnode_modulesraw-bodyindex.js:46:18)
(node:21552) WARNING: Detected use of sync API
    at tryStatSync (node:fs:422:25)
    at readFileSync (node:fs:471:17)
    at Module._extensions..js (node:internal/modules/cjs/loader:1271:18)
    at Module.load (node:internal/modules/cjs/loader:1117:32)
    at Module._load (node:internal/modules/cjs/loader:958:12)
    at Module.require (node:internal/modules/cjs/loader:1141:19)
    at require (node:internal/modules/cjs/helpers:110:18)
    at getCodec (C:ProjectJavaScriptnodejs-playgroundnode_modulesiconv-litelibindex.js:65:27)
    at getDecoder (C:ProjectJavaScriptnodejs-playgroundnode_modulesiconv-litelibindex.js:127:23)
    at getDecoder (C:ProjectJavaScriptnodejs-playgroundnode_modulesraw-bodyindex.js:46:18)
(node:21552) WARNING: Detected use of sync API
    at readSync (node:fs:747:26)
    at tryReadSync (node:fs:449:20)
    at readFileSync (node:fs:487:19)
    at Module._extensions..js (node:internal/modules/cjs/loader:1271:18)
    at Module.load (node:internal/modules/cjs/loader:1117:32)
    at Module._load (node:internal/modules/cjs/loader:958:12)
    at Module.require (node:internal/modules/cjs/loader:1141:19)
    at require (node:internal/modules/cjs/helpers:110:18)
    at getCodec (C:ProjectJavaScriptnodejs-playgroundnode_modulesiconv-litelibindex.js:65:27)
    at getDecoder (C:ProjectJavaScriptnodejs-playgroundnode_modulesiconv-litelibindex.js:127:23)
(node:21552) WARNING: Detected use of sync API
    at closeSync (node:fs:546:11)
    at readFileSync (node:fs:504:8)
    at Module._extensions..js (node:internal/modules/cjs/loader:1271:18)
    at Module.load (node:internal/modules/cjs/loader:1117:32)
    at Module._load (node:internal/modules/cjs/loader:958:12)
    at Module.require (node:internal/modules/cjs/loader:1141:19)
    at require (node:internal/modules/cjs/helpers:110:18)
    at getCodec (C:ProjectJavaScriptnodejs-playgroundnode_modulesiconv-litelibindex.js:65:27)
    at getDecoder (C:ProjectJavaScriptnodejs-playgroundnode_modulesiconv-litelibindex.js:127:23)
    at getDecoder (C:ProjectJavaScriptnodejs-playgroundnode_modulesraw-bodyindex.js:46:18)
(node:21552) WARNING: Detected use of sync API
    at realpathSync (node:fs:2537:13)
    at toRealPath (node:internal/modules/cjs/loader:477:13)
    at tryFile (node:internal/modules/cjs/loader:473:10)
    at tryExtensions (node:internal/modules/cjs/loader:485:22)
    at Module._findPath (node:internal/modules/cjs/loader:670:20)
    at Module._resolveFilename (node:internal/modules/cjs/loader:1061:27)
    at Module._load (node:internal/modules/cjs/loader:920:27)
    at Module.require (node:internal/modules/cjs/loader:1141:19)
    at require (node:internal/modules/cjs/helpers:110:18)
    at C:ProjectJavaScriptnodejs-playgroundnode_modulesiconv-liteencodingsindex.js:6:5
(node:21552) WARNING: Detected use of sync API
    at realpathSync (node:fs:2579:29)
    at toRealPath (node:internal/modules/cjs/loader:477:13)
    at tryFile (node:internal/modules/cjs/loader:473:10)
    at tryExtensions (node:internal/modules/cjs/loader:485:22)
    at Module._findPath (node:internal/modules/cjs/loader:670:20)
    at Module._resolveFilename (node:internal/modules/cjs/loader:1061:27)
    at Module._load (node:internal/modules/cjs/loader:920:27)
    at Module.require (node:internal/modules/cjs/loader:1141:19)
    at require (node:internal/modules/cjs/helpers:110:18)
    at C:ProjectJavaScriptnodejs-playgroundnode_modulesiconv-liteencodingsindex.js:6:5
(node:21552) WARNING: Detected use of sync API
    at openSync (node:fs:598:26)
    at readFileSync (node:fs:469:35)
    at Module._extensions..js (node:internal/modules/cjs/loader:1271:18)
    at Module.load (node:internal/modules/cjs/loader:1117:32)
    at Module._load (node:internal/modules/cjs/loader:958:12)
    at Module.require (node:internal/modules/cjs/loader:1141:19)
    at require (node:internal/modules/cjs/helpers:110:18)
    at C:ProjectJavaScriptnodejs-playgroundnode_modulesiconv-liteencodingsindex.js:6:5
    at Module._compile (node:internal/modules/cjs/loader:1254:14)
    at Module._extensions..js (node:internal/modules/cjs/loader:1308:10)
(node:21552) WARNING: Detected use of sync API
    at tryStatSync (node:fs:422:25)
    at readFileSync (node:fs:471:17)
    at Module._extensions..js (node:internal/modules/cjs/loader:1271:18)
    at Module.load (node:internal/modules/cjs/loader:1117:32)
    at Module._load (node:internal/modules/cjs/loader:958:12)
    at Module.require (node:internal/modules/cjs/loader:1141:19)
    at require (node:internal/modules/cjs/helpers:110:18)
    at C:ProjectJavaScriptnodejs-playgroundnode_modulesiconv-liteencodingsindex.js:6:5
    at Module._compile (node:internal/modules/cjs/loader:1254:14)
    at Module._extensions..js (node:internal/modules/cjs/loader:1308:10)
(node:21552) WARNING: Detected use of sync API
    at readSync (node:fs:747:26)
    at tryReadSync (node:fs:449:20)
    at readFileSync (node:fs:487:19)
    at Module._extensions..js (node:internal/modules/cjs/loader:1271:18)
    at Module.load (node:internal/modules/cjs/loader:1117:32)
    at Module._load (node:internal/modules/cjs/loader:958:12)
    at Module.require (node:internal/modules/cjs/loader:1141:19)
    at require (node:internal/modules/cjs/helpers:110:18)
    at C:ProjectJavaScriptnodejs-playgroundnode_modulesiconv-liteencodingsindex.js:6:5
    at Module._compile (node:internal/modules/cjs/loader:1254:14)
(node:21552) WARNING: Detected use of sync API
    at closeSync (node:fs:546:11)
    at readFileSync (node:fs:504:8)
    at Module._extensions..js (node:internal/modules/cjs/loader:1271:18)
    at Module.load (node:internal/modules/cjs/loader:1117:32)
    at Module._load (node:internal/modules/cjs/loader:958:12)
    at Module.require (node:internal/modules/cjs/loader:1141:19)
    at require (node:internal/modules/cjs/helpers:110:18)
    at C:ProjectJavaScriptnodejs-playgroundnode_modulesiconv-liteencodingsindex.js:6:5
    at Module._compile (node:internal/modules/cjs/loader:1254:14)
    at Module._extensions..js (node:internal/modules/cjs/loader:1308:10)
(node:21552) WARNING: Detected use of sync API
    at realpathSync (node:fs:2537:13)
    at toRealPath (node:internal/modules/cjs/loader:477:13)
    at tryFile (node:internal/modules/cjs/loader:473:10)
    at tryExtensions (node:internal/modules/cjs/loader:485:22)
    at Module._findPath (node:internal/modules/cjs/loader:670:20)
    at Module._resolveFilename (node:internal/modules/cjs/loader:1061:27)
    at Module._load (node:internal/modules/cjs/loader:920:27)
    at Module.require (node:internal/modules/cjs/loader:1141:19)
    at require (node:internal/modules/cjs/helpers:110:18)
    at C:ProjectJavaScriptnodejs-playgroundnode_modulesiconv-liteencodingsindex.js:7:5
(node:21552) WARNING: Detected use of sync API
    at realpathSync (node:fs:2579:29)
    at toRealPath (node:internal/modules/cjs/loader:477:13)
    at tryFile (node:internal/modules/cjs/loader:473:10)
    at tryExtensions (node:internal/modules/cjs/loader:485:22)
    at Module._findPath (node:internal/modules/cjs/loader:670:20)
    at Module._resolveFilename (node:internal/modules/cjs/loader:1061:27)
    at Module._load (node:internal/modules/cjs/loader:920:27)
    at Module.require (node:internal/modules/cjs/loader:1141:19)
    at require (node:internal/modules/cjs/helpers:110:18)
    at C:ProjectJavaScriptnodejs-playgroundnode_modulesiconv-liteencodingsindex.js:7:5
(node:21552) WARNING: Detected use of sync API
    at openSync (node:fs:598:26)
    at readFileSync (node:fs:469:35)
    at Module._extensions..js (node:internal/modules/cjs/loader:1271:18)
    at Module.load (node:internal/modules/cjs/loader:1117:32)
    at Module._load (node:internal/modules/cjs/loader:958:12)
    at Module.require (node:internal/modules/cjs/loader:1141:19)
    at require (node:internal/modules/cjs/helpers:110:18)
    at C:ProjectJavaScriptnodejs-playgroundnode_modulesiconv-liteencodingsindex.js:7:5
    at Module._compile (node:internal/modules/cjs/loader:1254:14)
    at Module._extensions..js (node:internal/modules/cjs/loader:1308:10)
(node:21552) WARNING: Detected use of sync API
    at tryStatSync (node:fs:422:25)
    at readFileSync (node:fs:471:17)
    at Module._extensions..js (node:internal/modules/cjs/loader:1271:18)
    at Module.load (node:internal/modules/cjs/loader:1117:32)
    at Module._load (node:internal/modules/cjs/loader:958:12)
    at Module.require (node:internal/modules/cjs/loader:1141:19)
    at require (node:internal/modules/cjs/helpers:110:18)
    at C:ProjectJavaScriptnodejs-playgroundnode_modulesiconv-liteencodingsindex.js:7:5
    at Module._compile (node:internal/modules/cjs/loader:1254:14)
    at Module._extensions..js (node:internal/modules/cjs/loader:1308:10)
(node:21552) WARNING: Detected use of sync API
    at readSync (node:fs:747:26)
    at tryReadSync (node:fs:449:20)
    at readFileSync (node:fs:487:19)
    at Module._extensions..js (node:internal/modules/cjs/loader:1271:18)
    at Module.load (node:internal/modules/cjs/loader:1117:32)
    at Module._load (node:internal/modules/cjs/loader:958:12)
    at Module.require (node:internal/modules/cjs/loader:1141:19)
    at require (node:internal/modules/cjs/helpers:110:18)
    at C:ProjectJavaScriptnodejs-playgroundnode_modulesiconv-liteencodingsindex.js:7:5
    at Module._compile (node:internal/modules/cjs/loader:1254:14)
(node:21552) WARNING: Detected use of sync API
    at closeSync (node:fs:546:11)
    at readFileSync (node:fs:504:8)
    at Module._extensions..js (node:internal/modules/cjs/loader:1271:18)
    at Module.load (node:internal/modules/cjs/loader:1117:32)
    at Module._load (node:internal/modules/cjs/loader:958:12)
    at Module.require (node:internal/modules/cjs/loader:1141:19)
    at require (node:internal/modules/cjs/helpers:110:18)
    at C:ProjectJavaScriptnodejs-playgroundnode_modulesiconv-liteencodingsindex.js:7:5
    at Module._compile (node:internal/modules/cjs/loader:1254:14)
    at Module._extensions..js (node:internal/modules/cjs/loader:1308:10)
(node:21552) WARNING: Detected use of sync API
    at realpathSync (node:fs:2537:13)
    at toRealPath (node:internal/modules/cjs/loader:477:13)
    at tryFile (node:internal/modules/cjs/loader:473:10)
    at tryExtensions (node:internal/modules/cjs/loader:485:22)
    at Module._findPath (node:internal/modules/cjs/loader:670:20)
    at Module._resolveFilename (node:internal/modules/cjs/loader:1061:27)
    at Module._load (node:internal/modules/cjs/loader:920:27)
    at Module.require (node:internal/modules/cjs/loader:1141:19)
    at require (node:internal/modules/cjs/helpers:110:18)
    at C:ProjectJavaScriptnodejs-playgroundnode_modulesiconv-liteencodingsindex.js:8:5
(node:21552) WARNING: Detected use of sync API
    at realpathSync (node:fs:2579:29)
    at toRealPath (node:internal/modules/cjs/loader:477:13)
    at tryFile (node:internal/modules/cjs/loader:473:10)
    at tryExtensions (node:internal/modules/cjs/loader:485:22)
    at Module._findPath (node:internal/modules/cjs/loader:670:20)
    at Module._resolveFilename (node:internal/modules/cjs/loader:1061:27)
    at Module._load (node:internal/modules/cjs/loader:920:27)
    at Module.require (node:internal/modules/cjs/loader:1141:19)
    at require (node:internal/modules/cjs/helpers:110:18)
    at C:ProjectJavaScriptnodejs-playgroundnode_modulesiconv-liteencodingsindex.js:8:5
(node:21552) WARNING: Detected use of sync API
    at openSync (node:fs:598:26)
    at readFileSync (node:fs:469:35)
    at Module._extensions..js (node:internal/modules/cjs/loader:1271:18)
    at Module.load (node:internal/modules/cjs/loader:1117:32)
    at Module._load (node:internal/modules/cjs/loader:958:12)
    at Module.require (node:internal/modules/cjs/loader:1141:19)
    at require (node:internal/modules/cjs/helpers:110:18)
    at C:ProjectJavaScriptnodejs-playgroundnode_modulesiconv-liteencodingsindex.js:8:5
    at Module._compile (node:internal/modules/cjs/loader:1254:14)
    at Module._extensions..js (node:internal/modules/cjs/loader:1308:10)
(node:21552) WARNING: Detected use of sync API
    at tryStatSync (node:fs:422:25)
    at readFileSync (node:fs:471:17)
    at Module._extensions..js (node:internal/modules/cjs/loader:1271:18)
    at Module.load (node:internal/modules/cjs/loader:1117:32)
    at Module._load (node:internal/modules/cjs/loader:958:12)
    at Module.require (node:internal/modules/cjs/loader:1141:19)
    at require (node:internal/modules/cjs/helpers:110:18)
    at C:ProjectJavaScriptnodejs-playgroundnode_modulesiconv-liteencodingsindex.js:8:5
    at Module._compile (node:internal/modules/cjs/loader:1254:14)
    at Module._extensions..js (node:internal/modules/cjs/loader:1308:10)
(node:21552) WARNING: Detected use of sync API
    at readSync (node:fs:747:26)
    at tryReadSync (node:fs:449:20)
    at readFileSync (node:fs:487:19)
    at Module._extensions..js (node:internal/modules/cjs/loader:1271:18)
    at Module.load (node:internal/modules/cjs/loader:1117:32)
    at Module._load (node:internal/modules/cjs/loader:958:12)
    at Module.require (node:internal/modules/cjs/loader:1141:19)
    at require (node:internal/modules/cjs/helpers:110:18)
    at C:ProjectJavaScriptnodejs-playgroundnode_modulesiconv-liteencodingsindex.js:8:5
    at Module._compile (node:internal/modules/cjs/loader:1254:14)
(node:21552) WARNING: Detected use of sync API
    at closeSync (node:fs:546:11)
    at readFileSync (node:fs:504:8)
    at Module._extensions..js (node:internal/modules/cjs/loader:1271:18)
    at Module.load (node:internal/modules/cjs/loader:1117:32)
    at Module._load (node:internal/modules/cjs/loader:958:12)
    at Module.require (node:internal/modules/cjs/loader:1141:19)
    at require (node:internal/modules/cjs/helpers:110:18)
    at C:ProjectJavaScriptnodejs-playgroundnode_modulesiconv-liteencodingsindex.js:8:5
    at Module._compile (node:internal/modules/cjs/loader:1254:14)
    at Module._extensions..js (node:internal/modules/cjs/loader:1308:10)
(node:21552) WARNING: Detected use of sync API
    at realpathSync (node:fs:2537:13)
    at toRealPath (node:internal/modules/cjs/loader:477:13)
    at tryFile (node:internal/modules/cjs/loader:473:10)
    at tryExtensions (node:internal/modules/cjs/loader:485:22)
    at Module._findPath (node:internal/modules/cjs/loader:670:20)
    at Module._resolveFilename (node:internal/modules/cjs/loader:1061:27)
    at Module._load (node:internal/modules/cjs/loader:920:27)
    at Module.require (node:internal/modules/cjs/loader:1141:19)
    at require (node:internal/modules/cjs/helpers:110:18)
    at C:ProjectJavaScriptnodejs-playgroundnode_modulesiconv-liteencodingsindex.js:9:5
(node:21552) WARNING: Detected use of sync API
    at realpathSync (node:fs:2579:29)
    at toRealPath (node:internal/modules/cjs/loader:477:13)
    at tryFile (node:internal/modules/cjs/loader:473:10)
    at tryExtensions (node:internal/modules/cjs/loader:485:22)
    at Module._findPath (node:internal/modules/cjs/loader:670:20)
    at Module._resolveFilename (node:internal/modules/cjs/loader:1061:27)
    at Module._load (node:internal/modules/cjs/loader:920:27)
    at Module.require (node:internal/modules/cjs/loader:1141:19)
    at require (node:internal/modules/cjs/helpers:110:18)
    at C:ProjectJavaScriptnodejs-playgroundnode_modulesiconv-liteencodingsindex.js:9:5
(node:21552) WARNING: Detected use of sync API
    at openSync (node:fs:598:26)
    at readFileSync (node:fs:469:35)
    at Module._extensions..js (node:internal/modules/cjs/loader:1271:18)
    at Module.load (node:internal/modules/cjs/loader:1117:32)
    at Module._load (node:internal/modules/cjs/loader:958:12)
    at Module.require (node:internal/modules/cjs/loader:1141:19)
    at require (node:internal/modules/cjs/helpers:110:18)
    at C:ProjectJavaScriptnodejs-playgroundnode_modulesiconv-liteencodingsindex.js:9:5
    at Module._compile (node:internal/modules/cjs/loader:1254:14)
    at Module._extensions..js (node:internal/modules/cjs/loader:1308:10)
(node:21552) WARNING: Detected use of sync API
    at tryStatSync (node:fs:422:25)
    at readFileSync (node:fs:471:17)
    at Module._extensions..js (node:internal/modules/cjs/loader:1271:18)
    at Module.load (node:internal/modules/cjs/loader:1117:32)
    at Module._load (node:internal/modules/cjs/loader:958:12)
    at Module.require (node:internal/modules/cjs/loader:1141:19)
    at require (node:internal/modules/cjs/helpers:110:18)
    at C:ProjectJavaScriptnodejs-playgroundnode_modulesiconv-liteencodingsindex.js:9:5
    at Module._compile (node:internal/modules/cjs/loader:1254:14)
    at Module._extensions..js (node:internal/modules/cjs/loader:1308:10)
(node:21552) WARNING: Detected use of sync API
    at readSync (node:fs:747:26)
    at tryReadSync (node:fs:449:20)
    at readFileSync (node:fs:487:19)
    at Module._extensions..js (node:internal/modules/cjs/loader:1271:18)
    at Module.load (node:internal/modules/cjs/loader:1117:32)
    at Module._load (node:internal/modules/cjs/loader:958:12)
    at Module.require (node:internal/modules/cjs/loader:1141:19)
    at require (node:internal/modules/cjs/helpers:110:18)
    at C:ProjectJavaScriptnodejs-playgroundnode_modulesiconv-liteencodingsindex.js:9:5
    at Module._compile (node:internal/modules/cjs/loader:1254:14)
(node:21552) WARNING: Detected use of sync API
    at closeSync (node:fs:546:11)
    at readFileSync (node:fs:504:8)
    at Module._extensions..js (node:internal/modules/cjs/loader:1271:18)
    at Module.load (node:internal/modules/cjs/loader:1117:32)
    at Module._load (node:internal/modules/cjs/loader:958:12)
    at Module.require (node:internal/modules/cjs/loader:1141:19)
    at require (node:internal/modules/cjs/helpers:110:18)
    at C:ProjectJavaScriptnodejs-playgroundnode_modulesiconv-liteencodingsindex.js:9:5
    at Module._compile (node:internal/modules/cjs/loader:1254:14)
    at Module._extensions..js (node:internal/modules/cjs/loader:1308:10)
(node:21552) WARNING: Detected use of sync API
    at realpathSync (node:fs:2537:13)
    at toRealPath (node:internal/modules/cjs/loader:477:13)
    at tryFile (node:internal/modules/cjs/loader:473:10)
    at tryExtensions (node:internal/modules/cjs/loader:485:22)
    at Module._findPath (node:internal/modules/cjs/loader:670:20)
    at Module._resolveFilename (node:internal/modules/cjs/loader:1061:27)
    at Module._load (node:internal/modules/cjs/loader:920:27)
    at Module.require (node:internal/modules/cjs/loader:1141:19)
    at require (node:internal/modules/cjs/helpers:110:18)
    at C:ProjectJavaScriptnodejs-playgroundnode_modulesiconv-liteencodingsindex.js:10:5
(node:21552) WARNING: Detected use of sync API
    at realpathSync (node:fs:2579:29)
    at toRealPath (node:internal/modules/cjs/loader:477:13)
    at tryFile (node:internal/modules/cjs/loader:473:10)
    at tryExtensions (node:internal/modules/cjs/loader:485:22)
    at Module._findPath (node:internal/modules/cjs/loader:670:20)
    at Module._resolveFilename (node:internal/modules/cjs/loader:1061:27)
    at Module._load (node:internal/modules/cjs/loader:920:27)
    at Module.require (node:internal/modules/cjs/loader:1141:19)
    at require (node:internal/modules/cjs/helpers:110:18)
    at C:ProjectJavaScriptnodejs-playgroundnode_modulesiconv-liteencodingsindex.js:10:5
(node:21552) WARNING: Detected use of sync API
    at openSync (node:fs:598:26)
    at readFileSync (node:fs:469:35)
    at Module._extensions..js (node:internal/modules/cjs/loader:1271:18)
    at Module.load (node:internal/modules/cjs/loader:1117:32)
    at Module._load (node:internal/modules/cjs/loader:958:12)
    at Module.require (node:internal/modules/cjs/loader:1141:19)
    at require (node:internal/modules/cjs/helpers:110:18)
    at C:ProjectJavaScriptnodejs-playgroundnode_modulesiconv-liteencodingsindex.js:10:5
    at Module._compile (node:internal/modules/cjs/loader:1254:14)
    at Module._extensions..js (node:internal/modules/cjs/loader:1308:10)
(node:21552) WARNING: Detected use of sync API
    at tryStatSync (node:fs:422:25)
    at readFileSync (node:fs:471:17)
    at Module._extensions..js (node:internal/modules/cjs/loader:1271:18)
    at Module.load (node:internal/modules/cjs/loader:1117:32)
    at Module._load (node:internal/modules/cjs/loader:958:12)
    at Module.require (node:internal/modules/cjs/loader:1141:19)
    at require (node:internal/modules/cjs/helpers:110:18)
    at C:ProjectJavaScriptnodejs-playgroundnode_modulesiconv-liteencodingsindex.js:10:5
    at Module._compile (node:internal/modules/cjs/loader:1254:14)
    at Module._extensions..js (node:internal/modules/cjs/loader:1308:10)
(node:21552) WARNING: Detected use of sync API
    at readSync (node:fs:747:26)
    at tryReadSync (node:fs:449:20)
    at readFileSync (node:fs:487:19)
    at Module._extensions..js (node:internal/modules/cjs/loader:1271:18)
    at Module.load (node:internal/modules/cjs/loader:1117:32)
    at Module._load (node:internal/modules/cjs/loader:958:12)
    at Module.require (node:internal/modules/cjs/loader:1141:19)
    at require (node:internal/modules/cjs/helpers:110:18)
    at C:ProjectJavaScriptnodejs-playgroundnode_modulesiconv-liteencodingsindex.js:10:5
    at Module._compile (node:internal/modules/cjs/loader:1254:14)
(node:21552) WARNING: Detected use of sync API
    at closeSync (node:fs:546:11)
    at readFileSync (node:fs:504:8)
    at Module._extensions..js (node:internal/modules/cjs/loader:1271:18)
    at Module.load (node:internal/modules/cjs/loader:1117:32)
    at Module._load (node:internal/modules/cjs/loader:958:12)
    at Module.require (node:internal/modules/cjs/loader:1141:19)
    at require (node:internal/modules/cjs/helpers:110:18)
    at C:ProjectJavaScriptnodejs-playgroundnode_modulesiconv-liteencodingsindex.js:10:5
    at Module._compile (node:internal/modules/cjs/loader:1254:14)
    at Module._extensions..js (node:internal/modules/cjs/loader:1308:10)
(node:21552) WARNING: Detected use of sync API
    at realpathSync (node:fs:2537:13)
    at toRealPath (node:internal/modules/cjs/loader:477:13)
    at tryFile (node:internal/modules/cjs/loader:473:10)
    at tryExtensions (node:internal/modules/cjs/loader:485:22)
    at Module._findPath (node:internal/modules/cjs/loader:670:20)
    at Module._resolveFilename (node:internal/modules/cjs/loader:1061:27)
    at Module._load (node:internal/modules/cjs/loader:920:27)
    at Module.require (node:internal/modules/cjs/loader:1141:19)
    at require (node:internal/modules/cjs/helpers:110:18)
    at C:ProjectJavaScriptnodejs-playgroundnode_modulesiconv-liteencodingsindex.js:11:5
(node:21552) WARNING: Detected use of sync API
    at realpathSync (node:fs:2579:29)
    at toRealPath (node:internal/modules/cjs/loader:477:13)
    at tryFile (node:internal/modules/cjs/loader:473:10)
    at tryExtensions (node:internal/modules/cjs/loader:485:22)
    at Module._findPath (node:internal/modules/cjs/loader:670:20)
    at Module._resolveFilename (node:internal/modules/cjs/loader:1061:27)
    at Module._load (node:internal/modules/cjs/loader:920:27)
    at Module.require (node:internal/modules/cjs/loader:1141:19)
    at require (node:internal/modules/cjs/helpers:110:18)
    at C:ProjectJavaScriptnodejs-playgroundnode_modulesiconv-liteencodingsindex.js:11:5
(node:21552) WARNING: Detected use of sync API
    at openSync (node:fs:598:26)
    at readFileSync (node:fs:469:35)
    at Module._extensions..js (node:internal/modules/cjs/loader:1271:18)
    at Module.load (node:internal/modules/cjs/loader:1117:32)
    at Module._load (node:internal/modules/cjs/loader:958:12)
    at Module.require (node:internal/modules/cjs/loader:1141:19)
    at require (node:internal/modules/cjs/helpers:110:18)
    at C:ProjectJavaScriptnodejs-playgroundnode_modulesiconv-liteencodingsindex.js:11:5
    at Module._compile (node:internal/modules/cjs/loader:1254:14)
    at Module._extensions..js (node:internal/modules/cjs/loader:1308:10)
(node:21552) WARNING: Detected use of sync API
    at tryStatSync (node:fs:422:25)
    at readFileSync (node:fs:471:17)
    at Module._extensions..js (node:internal/modules/cjs/loader:1271:18)
    at Module.load (node:internal/modules/cjs/loader:1117:32)
    at Module._load (node:internal/modules/cjs/loader:958:12)
    at Module.require (node:internal/modules/cjs/loader:1141:19)
    at require (node:internal/modules/cjs/helpers:110:18)
    at C:ProjectJavaScriptnodejs-playgroundnode_modulesiconv-liteencodingsindex.js:11:5
    at Module._compile (node:internal/modules/cjs/loader:1254:14)
    at Module._extensions..js (node:internal/modules/cjs/loader:1308:10)

The question is, does express.json() returns a middleware with sync calls in it? At first I thought this won’t cause a problem, because the middleware is only registered once during server start up, but I think the sync api usage is detected EVERYTIME the endpoint is hit.

Do I need to worry about whether this will affects my application performance or not?

Minecraft Bedrock Scripting API Error world.beforeEvents.chatSend.subscribe

When i load my world or /reload i’ve got this error

[Scripting][error]-Plugin [MinolyaReborn - 1.0.0] - [main.js] ran with error: [TypeError: cannot read property 'subscribe' of undefined    at <anonymous> (events/sendMessageWithTag.js:2)]

this my main.js :

import "./Sticks/healthStick.js";
import "./events/sendMessageWithTag.js";

console.warn("§6[Addon]§r all files loaded");

and this is my sendMessageWithTag.js:

import { world } from '@minecraft/server';
world.beforeEvents.chatSend.subscribe((eventData) => {
    const player = eventData.sender;
    switch (eventData.message) {
        case '!creative':
            eventData.cancel = true;
            player.runCommandAsync('gamemode c');
            break;
        case '!survival':
            eventData.cancel = true;
            player.runCommandAsync('gamemode s');
            break;
        default: break;
    }
});

my manifest use this dependencies:

                {
            "module_name": "@minecraft/server",
            "version": "1.9.0"
        },
        {
            "module_name": "@minecraft/server-gametest",
            "version": "1.0.0-beta"
        },
        {
            "module_name": "@minecraft/server-ui",
            "version": "1.2.0-beta"
        },
        {
            "module_name": "@minecraft/server-admin",
            "version": "1.0.0-beta"
        }

i would add chat event so i went in this web page :
https://wiki.bedrock.dev/scripting/custom-command.html
the only (except Microsoft page) who use

world.beforeEvents.chatSend.subscribe

can someone help me please (thx for reading)

Next js session

I have a project on Next.js which is using some endpoints with token authorization. I am getting the token from Next’s useSession, and my provider is Keycloak.
The issue is that when I stay on one page without navigating to another for more than one hour, which is the expiry duration of my token, I have a session with an expired access token. This situation causes my endpoints to return a 401 error. To get a new refreshed token, I have to switch to a different tab and then return to the tab I was on. Sometimes, when I do that, the token is undefined.My token rotation has been done on next auth.I guess I need a way to trigger it automatically from the client.

Tailwind merge is not working with CSS modules

I have a Next.js project and I’m using Tailwind for styling elements. I use Tailwind’s merge feature to solve class precedence issues in my components. However, it seems that Tailwind’s merge feature doesn’t work properly with CSS modules (I used the Tailwind apply approach).

this is my component

import classes from './styles.module.scss';
import type { FC, PropsWithChildren } from 'react';
import type { TextProps } from './props';
import {twMerge} from "tailwind-merge";

const Text: FC<PropsWithChildren & TextProps> = ({
    color,
    variant = 'p',
    className,
    children,
}) => {
    const HTMLTAG = variant;
    return (
        <HTMLTAG
            className={twMerge(`${classes[variant]} ${classes[color || '']}`, className)}
        >
            {children}
        </HTMLTAG>
    );
};

export default Text;

this is styling file

.h1 {
    @apply text-6xl font-semibold text-text-hover sm:text-2xl;
}

.h2 {
    @apply text-4xl font-semibold text-text-hover sm:text-xl;
}

.h3 {
    @apply text-3xl font-semibold sm:text-base;
}

.h4 {
    @apply text-xl font-semibold;
}

.h5 {
    @apply text-lg font-semibold;
}

.h6 {
    @apply text-base font-semibold;
}

.p,
.span {
    @apply text-base text-text-main;
}

.primary{
    @apply text-primary-main;
}

.text {
    @apply text-text-main;
}

this is type of props of this component

export interface TextProps {
    variant?: 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6' | 'p' | 'span';
    color?: 'primary' | 'text';
    className?: string;
}

and this is my tailwind config file

import type { Config } from "tailwindcss";

const config: Config = {
  content: [
    "./pages/**/*.{js,ts,jsx,tsx,mdx}",
    "./components/**/*.{js,ts,jsx,tsx,mdx}",
    "./app/**/*.{js,ts,jsx,tsx,mdx}",
  ],
  theme: {
    colors: {
      white: '#fff',
      transparent:'transparent',
      primary: {
        main: '#FBBF24',
        hover: '#F59E0B',
        light: '#FDE68A',
        pale: '#FFFBEB'
      },
      secondary: {
        main: '#8B5CF6',
        hover: '#6D28D9',
        light: '#C4B5FD',
        pale:'#EDE9FE'
      },
      success:{
        main: '#25984E',
        hover: '#166534',
        light: '#DCFCE7',
        pale: '#F0FDF4'
      },
      error: {
        main: '#FCA5A5',
        hover: '#DC2626',
        light: '#FEE2E2',
        pale: '#FEF2F2'
      },
      overlay: '#1E1E1E52',
      text: {
          hover: '#1E293B',
          dark: '#334155',
          main: '#475569',
          light: '#64748B',
          pale: '#94A3B8'
      },
      border: {
          dark: '#CBD5E1',
          light: '#F3F4F6',
          input: '#E2E8F0',
          focused: '#C7D2FE',
          disabled: '#FEE2E2'
      },
      bg: {
          dark: '#F8FAFC',
          light: '#FEFEFE'
      },
    },
    boxShadow:{
      'softSmall': '0px 8px 16px 0px #1111111F',
      'softMedium': '0px 20px 24px 0px #1111111F',
      'softLarge': '0px 32px 64px 0px #1111111F',
      'strokeSmall': '0px 0px 1px 0px #091E424F, 0px 3px 8px 0px #091E4229',
      'strokeMedium': '0px 0px 1px 0px #091E424F, 0px 9px 12px 0px #091E4226',
      'strokeLarge': '0px 0px 1px 0px #091E424F, 0px 14px 18px 0px #091E4226',
      'indigoSmall': '0px 8px 16px 0px #FFF6D3CC',
      'indigoMedium': '0px 20px 24px 0px #FBBF2433',
      'indigoLarge': '0px 32px 64px 0px #FBBF2433'
    },
    screens: {
      xl: { max: "1279px" },
      // => @media (max-width: 1279px) { ... }

      lg: { max: "1023px" },
      // => @media (max-width: 1023px) { ... }

      md: { max: "767px" },
      // => @media (max-width: 767px) { ... }

      sm: { max: "639px" },
      // => @media (max-width: 639px) { ... }
    },
    extend: {
      backgroundImage: {
        "gradient-radial": "radial-gradient(var(--tw-gradient-stops))",
        "gradient-conic":
          "conic-gradient(from 180deg at 50% 50%, var(--tw-gradient-stops))",
      },
      flex: {
        '2': '2 2 0%'
      }
    },
  },
  plugins: [],
};
export default config;

Thanks in advance for any help.

I using Typescript to update in mysql database

I am using typescript to update in database but Prior to executing an update, I validate that the data types align correctly. Only the values that have changed are updated, and certain fields are restricted from being modified.

But I am gettting some error:-

Type 'string | number | boolean' is not assignable to type 'never'.
  Type 'string' is not assignable to type 'never'.ts(2322)
const changedFields: Partial<User>

on line :-  changedFields[key as keyof Partial<User>] = newValue;
// Determine which fields have changed and validate data types
      const changedFields: Partial<User> = {};
      const validationErrors: Error[] = [];
      for (const key in values) {
          if (!restrictedFieldsToUpdate.includes(key)) {
              const newValue = values[key as keyof Partial<User>]; // Type assertion here
              const existingValue = existingUser[key as keyof Partial<User>]; // Type assertion here
              if (newValue !== existingValue) {
                  if (typeof newValue !== typeof existingValue) {
                      validationErrors.push(new Error(`Data type mismatch for field ${key}`));
                  } else {
                    
                      changedFields[key as keyof Partial<User>] = newValue; // Type assertion here
                      
                  }
              }
          } else {
              validationErrors.push(new Error(`Field '${key}' cannot be updated`));
          }
      }

Syntax for string interpolation in Vue 3 template attribute with quotes

I’m trying to get the method buildAbbrToolTip() to use the dynamic data of column.m_parse_hi so that it displays the correct text definition for an abbreviation in the tooltip.

Currently, it’s giving me TypeError: key is undefined in the console. I know that the function works, because if I replace column.m_parse_hi with 'VAI', it works correctly. I think the problem is that the function needs quotes around column.m_parse_hi because using VAI without quotes is undefined, but I can’t figure out how to get it to interpret a string literal in attributes.

Codepen: https://codepen.io/holdenmad/pen/mdgEaOm

How I’m writing the function in the title attribute:

<abbr
  class="analysis row text-secondary text-nowrap"
  v-b-tooltip.hover
  :title="buildAbbrTooltip(column.m_parse_hi)"
>
  {{ column.m_parse_hi }}
</abbr>

The method:

buildAbbrTooltip(key) {
      if (this.abbreviations.hasOwnProperty(key)) {
        return this.abbreviations[key];
      } else {
        let substrings = key.split(/[' ',(,),>]/);
        let newString = "";

        for (let i = 0; i < substrings.length; i++) {
          if (this.abbreviations[substrings[i]] === undefined) {
            newString += " ";
          } else {
            newString += this.abbreviations[substrings[i]];
          }
        }
        return newString;
      }
    }

Webpack-dev-server issues

Webpack-dev-server not working. When I do npm run serve it opens the chrome but throws an error Cannot Get /. This is my directory path:

webpack-demo {
  node_modules
  dist/ {
    index.html,
    bundle.js
  }
  src/ {
    main.js
  }
  webpack.config.js
  package.json
  package-lock.json
}

I am inside the webpack-demo directory when I am executing this command.

//package.json file
{
    "name": "webpack-demo",
    "version": "1.0.0",
    "description": "",
    "private": true,
    "scripts": {
        "test": "echo "Error: no test specified" && exit 1",
        "build": "webpack --progress --mode=production",
        "watch": "webpack --progress --watch",
        "serv": "webpack-dev-server --open"
    },
    "keywords": [],
    "author": "",
    "license": "ISC",
    "devDependencies": {
        "css-loader": "^6.10.0",
        "style-loader": "^3.3.4",
        "webpack": "^5.91.0",
        "webpack-cli": "^5.1.4",
        "webpack-dev-server": "^5.0.4"
    },
    "dependencies": {
        "lodash": "^4.17.21"
    }
}

Wrong result for left bit shift in JS

I have a script where I perform some operations on bits. It is actually an attempt to display the operations performed in round 3, in the MD4 hashare algorithm. But I don’t think this is very important.

The problem is that, in some cases, operations like XOR or shifting bits to the left, generate me signed(negative) results.

For example, I had the initial version of code . Here, in interaction 9 I get F as a binary number, but with sign in front, which apparently is not correct and possible.

let A = 0x44496174;
console.log(`A = ${A.toString(2)}, ${A}`);
let B = 0x65737461;
console.log(`B = ${B.toString(2)}, ${B}`);
let C = 0x72655243;
console.log(`C = ${C.toString(2)}, ${C}`);
let D = 0x32303234;
console.log(`D = ${D.toString(2)}, ${D}`);

for (var i = 0; i < 16; i++) {

  var AA = A;
  var BB = B;
  var CC = C;
  var DD = D;
  var F;
  if (i % 4 === 0) {
    F = B ^ C ^ D ;
  } else if (i % 4 === 1) {
    F = A ^ B ^ C;
  } else if (i % 4 === 2) {
    F = D ^ A ^ B;
  } else {
    F = C ^ D ^ A;
  }

  var P = (A + F) >>> 0; 

  var P2 = (P + i) >>> 0; 

  var result;
   if (i % 4 === 0) {
   result = ((P2 << 3) >>> 0)
  } else if (i % 4 === 1) {
     result = ((P2 << 7) >>> 0)
  } else if (i % 4 === 2) {
     result = ((P2 << 11) >>> 0);
  } else {
     result = ((P2 << 19) >>> 0)
  }
  
  A = DD;
  D = CC;
  C = BB;
  B = result;

  console.log(`Iteration ${i + 1}:`);
  console.log(`F = ${F.toString(2)}, ${F}`); 
  console.log(`P = ${P.toString(2)}, ${P}`); 
  console.log(`P2 = ${P2.toString(2)}, ${P2}`);
  console.log(`Result = ${result.toString(2)}, ${result}`);
  console.log(`A = D binar = ${A.toString(2)}, A decimal ${A}`);
  console.log(`B = A(F) binar = ${B.toString(2)}, B decimal ${B}`);
  console.log(`C = B binar = ${C.toString(2)}, C decimal ${C}`);
  console.log(`D = C binar = ${D.toString(2)}, D decimal ${D}`);
  console.log("*************************************************");
}
Iteration 9:
F = -1101100100010011001110110000000, -1820958080
P = 10010001101111001110110100100000, 2445077792
P2 = 10010001101111001110110100101000, 2445077800
Result = 10001101111001110110100101000000, 2380753216
A = D binar = 1110111010110100101001010000000, A decimal 2002408064
B = A(F) binar = 10001101111001110110100101000000, B decimal 2380753216
C = B binar = 11000001001110000000000000000000, C decimal 3241672704
D = C binar = 100101000101000011000000000000, D decimal 622080000

According to the algorithm, at iteration 9 F is calculated according to the formula F = B ^ C ^ D, A, B,C, D are taken from the previous iteration*

So we have

A = 11111110010001101000101010100000
B = 11000001001110000000000000000000
C = 100101000101000011000000000000
D = 1110111010110100101001010000000

According to the windows calculator, 11000001001110000000000000000000 XOR 100101000101000011000000000000 XOR 1110111010110100101001010000000 = 10010011011101100110001010000000, but my code gives me -1101100100010011001110110000000 (-1820958080 in decimal)
Reading on the internet, I saw that it is recommended to move the bits to the right. without sign, i.e. > > > 0, modifying the code like this

if (i % 4 === 0) {
    F = (B ^ C ^ D) >>> 0 ;
  } else if (i % 4 === 1) {
    F = (A ^ B ^ C) >>> 0; 
  } else if (i % 4 === 2) {
    F = (D ^ A ^ B) >>> 0;
  } else {
    F = (C ^ D ^ A) >>> 0;
  }

Apparently, it worked, but now I have another problem. The last calculation in the algorithm, involves a bit shift to the left, with 3, 7, 11 or 19. Well, here in some cases also negative results appear (with sign – in front), but already > > > 0 no longer works.
For example, iteration 3 implies an 11 bit left shift of the variable P2. So we have
P2 <<< 11 = 10010101111111011000110101100111 < < < 11 = 01001010111111101100011010110011100000000000
according to the windows calculator, instead the result in the script is 11101100011010110011100000000000, which is not the result I expected
How could I fix this, so that the calculations are done correctly ?

Prevent Image Flicker During Loading in React Component

I’m working on a React component that receives an imageUrl and visualizes it on a canvas. The component intentionally adds a 2-second delay to simulate loading time for large images. However, I’m facing an issue: when the imageUrl changes in the parent component and while the image is loading, the previous image disappears from the browser momentarily then the new image is shown, causing a flicker effect. The behavior I am looking for is the component keeps showing the previous image until the new image is fully loaded and the swaps them.

How can I modify my existing code to ensure that the transition between images is smooth without any flicker?
Here’s my current implementation:

class ImageViewer extends React.Component {
  constructor(props) {
    super(props);
    this.imagecanvas = React.createRef();
  }
  componentDidMount() {
    this.drawCanvas();
  }
  componentDidUpdate(prevProps) {
    if (prevProps.imageUrl !== this.props.imageUrl) {
      this.drawCanvas();
    }
  }
  drawCanvas() {
    const canvas = this.imagecanvas.current;
    const context = canvas.getContext('2d');
    const image = new Image();
    // Clearing previous image
    context.clearRect(0, 0, canvas.width, canvas.height);
    // Load new image
    image.onload = () => {
      setTimeout(() => {
        context.drawImage(image, 0, 0);
      }, 2000);
    };
    image.src = this.props.imageUrl;
  }
  render() {
    return (
      <canvas id="imageView" ref={this.imagecanvas}></canvas>
    );
  }
}

Any suggestions or improvements to prevent the flicker during image loading would be greatly appreciated!

I have searched the internet and found the structure provide above is very common, however, I have not seen any mention of the flickering issue and how to alleviate it.

How to formate javascript code in ngx-monaco-editor-v2 in angular 17 by calling a function?

Hi my requirement is to make a function that format the JavaScript code, currently using “ngx-monaco-editor-v2” because its support angular 17, issue here is there is not inbuild method for format the code till today, as for monaco-editor its there but not in “ngx-monaco-editor-v2”,i checked all the sources available can’t find.

Searched all the sources available in internet can’t get enough information possibly very new released.

How to display random image when loading a page?

Ok, first of all. I’m a complete beginner with HTML, CSS and JS, so I am aware that this might be a little too ambitious of me, don’t hate me ok? I just have ideas and look for tutorials for that specific thing instead of learning code from the beginning like a normal person.
For this specific thing I have looked at several tutorials (w3schools, htmlcheatsheet, htmldog, etc) AND several questions here on stackoverflow. I’ve read them all and tried different ways of approaching the same thing and nothing works… at this point I’m desperate so I decided to create my own account so I can ask for myself.
For more context, I am a mod for a small community and wanted to do a fun activity for easter so I created a page to do a little egg hunt. This is not crucial to the game, but I wanted to have 4 images for the “not found” page, and have the players see a random one out of the 4. If I can’t do it it’s not the end of the world but now I’m just angry that I can’t get it right and I’m determined to learn to do this thing in case that I might want to do something like this again in the future.

So this is my JS code for now (not sure if this is relevant but those aren’t the actual names of the files, I’m just censoring them in case someone from my community sees this, highly unlikely but not impossible):

<script>

window.onload = displayImage()

var images = new Array(
  "image1.png", 
  "image2.png", 
  "image3.png", 
  "image4.png");

function displayImage(){
var num = Math.floor(Math.random() * images.length);
document.getElementById("myPicture").src = images[num];

</script> 

Right? and my HTML looks like this:


<div class="centered"><img src="idk.png" id="myPicture" style="width:500px"/></div>

I tried putting the JS before the div, after the div, inside the head, EVERYTHING. I think what might be the cause of my problem is the src=”idk.png” because it just displays that placeholder (it’s just a transparent png), and doesn’t display the pictures from the array but I really don’t know what else to do. Again, sorry if this is too dumb and too much of a beginner-level mistake… And thank you if you took the time to read all this!

Assign SVG coordinates based on visibility of other element, using jQuery or JavaScript

I have 12 circular divs, made up of 3 vertical lines of 4 circles (A, B, C and D).

Image 01

Only 6 circles will ever be visible at the same time in total, and only 2 circles will ever be visible on each vertical line at the same time (1 red and 1 green), e.g. like this…

Image 02

I would like to place a blue SVG shape behind these circles, whose coordinates matches the shape of the visible circles, like this:

Image 03

Here is my SVG code for the static blue shape:

<?xml version="1.0" encoding="utf-8"?>
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
     viewBox="0 0 800 800" style="enable-background:new 0 0 800 800;" xml:space="preserve">
<style type="text/css">
    .st0{fill:#88C9FF;}
</style>
<polygon class="st0" points="100,217.62 400,97.5 700,215.09 700,559.12 400,702.53 100,702.53 "/>
</svg>

Is there a way to make the SVG shape dynamic, and input X and Y coordinates for the shape’s points, based on the visibility of the circles, preferably using jQuery or JavaScript ?

I am thinking something along the lines of:

If ‘circle-1’ is visible, insert ‘this’ X and Y coordinate as the first SVG point, and so on for each of the 6 circles…