JavaScript
31.9K subscribers
1.01K photos
9 videos
33 files
691 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
🌲 Monorepo: From Hate to Love

A monorepo is like a BMW: it requires constant maintenance and attention. You can’t just set it up once and expect it to work smoothly for the next five years.

nairihar
Please open Telegram to view this post
VIEW IN TELEGRAM
❀10🀣3
CHALLENGE

function createCounter() {
let count = 0;
return {
increment: () => ++count,
getCount: () => count
};
}

function compose(...fns) {
return (x) => fns.reduceRight((acc, fn) => fn(acc), x);
}

const counter = createCounter();
const double = x => x * 2;
const addOne = x => x + 1;

const incrementAndProcess = compose(double, addOne, counter.increment);

counter.increment();
const result = incrementAndProcess();
console.log(result);
πŸ‘9πŸ”₯1
What is the output?
Anonymous Quiz
34%
6
31%
5
25%
3
10%
4
🀣9πŸ”₯6❀5πŸ‘2πŸ€”1
TypeScript 5.5 introduces support for new ECMAScript methods on the Set object: union, intersection, difference, and symmetricDifference. These methods allow for more intuitive and readable operations on sets.
πŸ‘10❀4πŸ”₯4🀣1
CHALLENGE

const products = [
{ id: 1, name: 'Laptop', price: 1200, category: 'Electronics' },
{ id: 2, name: 'Headphones', price: 100, category: 'Electronics' },
{ id: 3, name: 'Book', price: 15, category: 'Books' },
{ id: 4, name: 'Shirt', price: 25, category: 'Clothing' },
{ id: 5, name: 'Coffee Mug', price: 10, category: 'Kitchen' }
];

const result = products
.filter(p => p.price > 20)
.map(p => ({ name: p.name, value: p.price * 0.9 }))
.reduce((acc, item) => {
acc.names.push(item.name);
acc.total += item.value;
return acc;
}, { names: [], total: 0 });

console.log(result);
❀9πŸ‘2πŸ”₯1
CHALLENGE

const person = {
name: 'Alice',
greet() {
return `Hello, I'm ${this.name}`;
},
farewell: () => `Goodbye from ${this.name}`
};

const greetFn = person.greet;
const farewellFn = person.farewell;

console.log(person.greet());
console.log(greetFn());
console.log(farewellFn());
❀5
🌲 PSA: Beware of End-of-Life Node.js Versions

Matteo Collina notes the Node.js ecosystem is β€œat a critical juncture”, with v18 and earlier now β€˜End-of-Life’. He breaks down what that really means for users of legacy versions, and why you should skip Active LTS v20 and leap straight to v22 for maximum future-proofing. If you have to stay on older versions, though, Matteo shares an option to consider.

Matteo Collina
Please open Telegram to view this post
VIEW IN TELEGRAM
❀8πŸ‘2πŸ”₯1
CHALLENGE

function task1() {
console.log('A');
setTimeout(() => console.log('B'), 0);
Promise.resolve().then(() => console.log('C'));
Promise.resolve().then(() => setTimeout(() => console.log('D'), 0));
Promise.resolve().then(() => console.log('E'));
setTimeout(() => console.log('F'), 0);
console.log('G');
}

task1();
// What is the order of the console output?
πŸ‘8🀣3❀2πŸ”₯2
πŸ˜†
Please open Telegram to view this post
VIEW IN TELEGRAM
🀣27❀17πŸ‘1
CHALLENGE

function* fibonacci() {
let [a, b] = [0, 1];
while (true) {
yield a;
[a, b] = [b, a + b];
}
}

const fib = fibonacci();

const result = [];
for (let i = 0; i < 4; i++) {
result.push(fib.next().value);
}

const sum = result.reduce((total, num) => total + num, 0);
console.log(sum);
πŸ‘5❀3
What is the output?
Anonymous Quiz
27%
3
26%
2
32%
4
15%
6
❀5πŸ‘4πŸ”₯1πŸ€”1
CHALLENGE

const date = new Date('2023-05-15T12:30:00Z');  // A specific UTC date

const formatter = new Intl.DateTimeFormat('en-US', {
year: 'numeric',
month: 'long',
day: 'numeric',
hour: '2-digit',
minute: '2-digit',
timeZone: 'America/New_York'
});

const parts = formatter.formatToParts(date);
const month = parts.find(part => part.type === 'month').value;
const day = parts.find(part => part.type === 'day').value;
const hour = parts.find(part => part.type === 'hour').value;

console.log(`${month} ${day}, at ${hour}`);
❀4
πŸ‘6❀1πŸ€”1
πŸ”΅ The State of React and the Community in 2025

React continues to be a major dependency in the JavaScript world but recent innovations have led to much discussion about how it should move forward. Redux maintainer Mark Erikson gives an overview of React’s development over time, what led to some of its innovations, and dispels some β€˜FUD and confusion’ about where it's headed.

Mark Erikson
Please open Telegram to view this post
VIEW IN TELEGRAM
❀9πŸ‘4πŸ”₯2
CHALLENGE

function processData(input) {
try {
if (typeof input !== 'string') {
throw new TypeError('Input must be a string');
}

if (input.length === 0) {
throw new Error('Input cannot be empty');
}

return input.toUpperCase();
} catch (error) {
if (error instanceof TypeError) {
return `Type error: ${error.message}`;
}
return `Error: ${error.message}`;
}
}

console.log(processData(''));
❀10πŸ‘1
⛽️ npmgraph: A Tool to Visualize npm Module Dependencies

Give this Web-based tool one or more npm package names (or even your package.json file) and you can see a visualization of the dependency graphs for those packages, including where they intersect. Packages can be colored by various criteria (such as number of maintainers) and you can download SVGs of the graphs.

Kieffer, Brigante, et al.
Please open Telegram to view this post
VIEW IN TELEGRAM
πŸ‘8❀4πŸ”₯2🀣1