JavaScript
32.1K subscribers
1.06K photos
10 videos
33 files
740 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

class EventEmitter {
constructor() {
this.events = {};
}

on(event, callback) {
this.events[event] = this.events[event] || [];
this.events[event].push(callback);
return this;
}

emit(event, data) {
if (this.events[event]) {
this.events[event].forEach(cb => cb(data));
}
return this;
}
}

class Logger {
log(msg) { console.log(`[LOG]: ${msg}`); }
}

class DataProcessor {
constructor(emitter, logger) {
this.emitter = emitter;
this.logger = logger;
this.emitter.on('process', (data) => {
this.logger.log(data.toUpperCase());
});
}

process(data) {
this.emitter.emit('process', data);
}
}

const emitter = new EventEmitter();
const logger = new Logger();
const processor = new DataProcessor(emitter, logger);

processor.process('hello world');
emitter.emit('process', 'composition rocks');
1๐Ÿ‘4โค1
๐ŸคŸ Node.js Security Best Practices

Did you know the Node.js project maintains a page about security best practices organized around how to mitigate ten of the most significant vectors? Topics include networking weaknesses, timing attacks, supply chain attacks, and the monkey patching of intrinsics.

Node Documentation
Please open Telegram to view this post
VIEW IN TELEGRAM
โค3๐Ÿ‘1๐Ÿ”ฅ1
CHALLENGE

const obj = { count: 0 };
const arr = [obj, obj, obj];

function increment(item) {
item.count++;
return item;
}

const results = arr.map(increment);
console.log(obj.count);
console.log(results[0] === results[1]);
console.log(results.length);
console.log(arr[0].count);
3โค6
โค8๐Ÿ‘3๐Ÿค”3
๐Ÿ‘€ Umami 3.0: A Self-Hosted, Privacy-Focused Google Analytics Alternative

Think something like Plausible or Google Analytics, but built in Node and ready for you to host yourself. Hereโ€™s the full feature list. MIT licensed but also available as a paid hosted service.

Umami Software, Inc.
Please open Telegram to view this post
VIEW IN TELEGRAM
โค7๐Ÿ”ฅ1
๐Ÿ˜ฎ Render.js: A Raytracing Renderer with RenderMan Format Support

Created at Pixar in the 80s, the RenderMan Interface Specification was an early API for building 3D scenes. Anders has been building a Node-based, 90s-style renderer for the format โ€œas a stroll down amnesia laneโ€ in pure JavaScript.

Anders Brownworth
Please open Telegram to view this post
VIEW IN TELEGRAM
๐Ÿ‘2โค1๐Ÿ”ฅ1