JavaScript
31.6K subscribers
1.17K photos
10 videos
33 files
844 links
A resourceful newsletter featuring the latest and most important news, articles, books and updates in the world of #javascript πŸš€ Don't miss our Quizzes!

Let's chat: @nairihar
Download Telegram
CHALLENGE

const name = "Taylor";
const age = 28;
const role = "engineer";

const user = {
name,
age,
role,
greet() {
return `Hi, I'm ${this.name}, age ${this.age}`;
},
get info() {
return `${this.role.toUpperCase()} @ ${this.age}`;
}
};

const { name: userName, info, greet } = user;

console.log(userName);
console.log(info);
console.log(greet.call({ name: "Jordan", age: 35 }));
πŸ”₯2
🌟 Bun v1.3.14 Adds Image Processing, HTTP/3, HTTP/2 Fetch and More

Another mammoth Bun release. Bun.Image is a new built-in image processing API which can replace Sharp in many cases. Bun’s package manager has added a global virtual store (akin to pnpm’s), Bun.serve has experimental HTTP/3 over QUIC support, and fetch gets HTTP/2 and HTTP/3 support. Plus the usual raft of Node.js compatibility improvements.

Jarred Sumner
Please open Telegram to view this post
VIEW IN TELEGRAM
❀5πŸ‘4πŸ€”1
CHALLENGE

const handler = {
get(target, prop, receiver) {
if (prop in target) {
const value = Reflect.get(target, prop, receiver);
return typeof value === "number" ? value * 2 : value;
}
return `Property "${prop}" not found`;
},
set(target, prop, value) {
if (typeof value !== "number") {
throw new TypeError("Only numbers allowed");
}
Reflect.set(target, prop, value ** 2);
return true;
},
has(target, prop) {
return prop.startsWith("_") ? false : prop in target;
},
};

const store = new Proxy({ _secret: 99, score: 5 }, handler);

store.level = 3;

console.log(store.score);
console.log(store.level);
console.log("_secret" in store);
console.log("score" in store);
console.log(store._secret);
πŸ”₯2
CHALLENGE


class Range {
constructor(start, end, step = 1) {
this.start = start;
this.end = end;
this.step = step;
}

[Symbol.iterator]() {
let current = this.start;
const { end, step } = this;
return {
next() {
if (current <= end) {
const value = current;
current += step;
return { value, done: false };
}
return { value: undefined, done: true };
}
};
}
}

const range = new Range(1, 10, 3);
const result = [...range].map(n => n ** 2);
console.log(result);
❀4
❀4πŸ€”1
CHALLENGE


const p1 = new Promise((resolve) => {
console.log("A");
resolve("B");
});

const p2 = p1.then((val) => {
console.log(val);
return "C";
});

p2.then((val) => console.log(val));

console.log("D");
What is the output?
Anonymous Quiz
28%
D A B C
33%
A B D C
24%
A D B C
14%
A B C D
❀4πŸ€”2
CHALLENGE


class EventEmitter {
#listeners = new Map();

on(event, listener) {
if (!this.#listeners.has(event)) {
this.#listeners.set(event, []);
}
this.#listeners.get(event).push(listener);
return this;
}

emit(event, ...args) {
const handlers = this.#listeners.get(event) ?? [];
handlers.forEach(fn => fn(...args));
return this;
}
}

const emitter = new EventEmitter();
const log = [];

emitter
.on("data", val => log.push(`A:${val}`))
.on("data", val => log.push(`B:${val * 2}`))
.on("end", () => log.push("done"));

emitter.emit("data", 5).emit("data", 3).emit("end");

console.log(log.join(","));
Please open Telegram to view this post
VIEW IN TELEGRAM
❀4πŸ‘1πŸ”₯1
⛽️ RFC: It’s Time for npm to Make Install Scripts Opt-In

npm is the only major package manager that runs dependency install scripts (e.g. postinstall) by default, and they’ve become too much of a security weakness, says Jamie, who works for GitHub (maintainers of npm). This RFC features further discussion of the idea and the tradeoffs involved.

Jamie Magee
Please open Telegram to view this post
VIEW IN TELEGRAM