JavaScript
31.9K subscribers
1.02K photos
9 videos
33 files
701 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 userInput = "<script>alert('xss')</script>";
const sanitized = userInput.replace(/<script[^>]*>.*?<\/script>/gi, '');

const users = new Map();
users.set('admin', { password: 'secret123', role: 'admin' });
users.set('guest', { password: 'guest', role: 'user' });

function authenticate(username, password) {
const user = users.get(username);
return user && user.password === password ? user.role : null;
}

const role1 = authenticate('admin', 'secret123');
const role2 = authenticate('guest', 'wrong');
const role3 = authenticate('hacker', 'secret123');

console.log(sanitized);
console.log(role1, role2, role3);
❀4πŸ‘3πŸ”₯1
πŸ“Έ The Hidden Costs of Angular Updates.

πŸ“… September 3, 4 PM UTC
πŸŽ™ Host: Armen Vardanyan
🎀 Guest: Gérôme Grignon

We’ll cover:
- What ng update does well
- Where the hidden costs appear in real projects
- Refactoring & dependency pitfalls
- How upgrades affect teams & long-term maintainability

Check the Linkedin post to learn more.
Please open Telegram to view this post
VIEW IN TELEGRAM
❀7πŸ‘2πŸ”₯1
CHALLENGE

const obj = {
name: 'Sarah',
getName() { return this.name; },
getNameArrow: () => this.name
};

const { getName, getNameArrow } = obj;
const boundGetName = obj.getName.bind(obj);

console.log(getName());
console.log(getNameArrow());
console.log(boundGetName());
console.log(obj.getName());
console.log(obj.getNameArrow());
❀1
🀩 Cornerstone3D 4.0: Build Web-Based Medical Imaging Apps

A set of JavaScript libraries to build things like this 3D CT scan viewer, PET-CT scan viewer, and much more besides. There’s a lot to this project, along with numerous tutorials.

Open Health Imaging Foundation
Please open Telegram to view this post
VIEW IN TELEGRAM
❀3πŸ‘3πŸ”₯2
CHALLENGE

function processData() {
try {
console.log('start');
throw new Error('oops');
console.log('after throw');
} catch (e) {
console.log('catch');
return 'caught';
} finally {
console.log('finally');
}
console.log('end');
}

const result = processData();
console.log(result);
❀3πŸ‘2
Please open Telegram to view this post
VIEW IN TELEGRAM
❀6πŸ‘2πŸ”₯2
CHALLENGE

function highlight(strings, ...values) {
return strings.reduce((result, string, i) => {
const value = values[i] ? `<mark>${values[i]}</mark>` : '';
return result + string + value;
}, '');
}

const name = 'Sarah';
const age = 25;
const template = highlight`Hello ${name}, you are ${age} years old!`;
console.log(template);

const empty = highlight`No interpolation here`;
console.log(empty);
1❀8
CHALLENGE

class EventManager {
constructor() {
this.listeners = new Map();
}

addListener(event, callback) {
if (!this.listeners.has(event)) {
this.listeners.set(event, new Set());
}
this.listeners.get(event).add(callback);
}

removeListener(event, callback) {
this.listeners.get(event)?.delete(callback);
}
}

const manager = new EventManager();
const handler = () => console.log('handled');
manager.addListener('click', handler);
manager.removeListener('click', () => console.log('handled'));
console.log(manager.listeners.get('click').size);
❀3πŸ‘3πŸ”₯1
πŸ™‚ Mediabunny: A Complete Media Toolkit for JavaScript

Supporting both browsers and Node.js, this library lets you read, write and convert popular media file formats (e.g. MP4, MP3, and more) without needing to lean on dependencies like FFmpeg. You can make thumbnails, extract metadata, write code that gets converted into a video, and more. GitHub repo.

Vanilagy
Please open Telegram to view this post
VIEW IN TELEGRAM
❀5πŸ”₯3πŸ‘2
CHALLENGE

const data = { a: 1, b: 2, c: 3 };
const { a, ...rest } = data;
const newObj = { ...rest, a, d: 4 };

const arr = [1, 2, 3, 4, 5];
const [first, , third, ...remaining] = arr;
const result = [...remaining, third, first];

console.log(newObj);
console.log(result);