CHALLENGE
class EventBus {
constructor() {
this.events = new Map();
}
on(event, callback) {
if (!this.events.has(event)) {
this.events.set(event, []);
}
this.events.get(event).push(callback);
}
emit(event, data) {
if (this.events.has(event)) {
this.events.get(event).forEach(callback => callback(data));
}
}
}
const bus = new EventBus();
bus.on('user', name => console.log(`Hello ${name}`));
bus.on('user', name => console.log(`Welcome ${name}`));
bus.emit('user', 'Sarah');
bus.emit('admin', 'John');
β€4π€3
What is the output?
Anonymous Quiz
39%
Hello Sarah Welcome Sarah
19%
Welcome Sarah
35%
Hello Sarah Welcome Sarah Hello John Welcome John
7%
Hello Sarah
β€7π1π₯1
Since v23.6 (and in LTS since v22.18.0), Node has supported running (most) TypeScript code by stripping the types out first. The Calm team was excited about the potential for improving productivity and DX, and set a migration in process. Hereβs a look at the challenges encountered and what the end results were.
Stuart Dotson (Calm)
Please open Telegram to view this post
VIEW IN TELEGRAM
π₯5β€2π1
CHALLENGE
const original = { a: 1, b: { c: 2 } };
const shallow = { ...original };
const deep = JSON.parse(JSON.stringify(original));
shallow.a = 10;
shallow.b.c = 20;
deep.a = 100;
deep.b.c = 200;
const frozen = Object.freeze({ x: 1, y: { z: 2 } });
frozen.x = 99;
frozen.y.z = 99;
console.log(original.a, original.b.c, frozen.x, frozen.y.z);
β€2π₯2
β€4π2
Please open Telegram to view this post
VIEW IN TELEGRAM
β€4π2π₯2π€2
CHALLENGE
async function fetchData() {
console.log('1');
return Promise.resolve('data');
}
async function processData() {
console.log('2');
const result = await fetchData();
console.log('3');
return result;
}
console.log('4');
processData().then(() => console.log('5'));
console.log('6');
β€6π€3π2
Describing itself as βa fancy cron replacementβ, Cronicle is a distributed task scheduler and runner, built around a Node app with a web based UI. GitHub repo.
Joseph Huckaby
Please open Telegram to view this post
VIEW IN TELEGRAM
β€5π5π₯1
CHALLENGE
const arr = new Array(1000000).fill(0).map((_, i) => i);
const results = [];
function method1() {
return arr.filter(x => x % 2 === 0).map(x => x * 2).slice(0, 3);
}
function method2() {
const result = [];
for (let i = 0; i < arr.length && result.length < 3; i++) {
if (arr[i] % 2 === 0) {
result.push(arr[i] * 2);
}
}
return result;
}
console.log(method1().join(','));
console.log(method2().join(','));
β€1π1π₯1
Please open Telegram to view this post
VIEW IN TELEGRAM
β€8π4π₯1
CHALLENGE
const obj = { a: 1, b: { c: 2 } };
const frozen = Object.freeze(obj);
frozen.a = 99;
frozen.b.c = 88;
frozen.d = 77;
const sealed = Object.seal({ x: 10, y: 20 });
sealed.x = 30;
sealed.z = 40;
delete sealed.y;
console.log(obj.a, obj.b.c, obj.d);
console.log(sealed.x, sealed.y, sealed.z);
β€1
What is the output?
Anonymous Quiz
24%
99 88 77, 30 20 40
47%
1 88 undefined, 30 20 undefined
20%
1 2 undefined, 10 20 undefined
8%
99 2 77, 30 undefined 40
β€5π2π₯1
CHALLENGE
class StateMachine {
constructor() {
this.state = 'idle';
this.transitions = {
idle: { start: 'running' },
running: { pause: 'paused', stop: 'idle' },
paused: { resume: 'running', stop: 'idle' }
};
}
transition(action) {
const validTransitions = this.transitions[this.state];
if (validTransitions && validTransitions[action]) {
this.state = validTransitions[action];
return true;
}
return false;
}
}
const machine = new StateMachine();
console.log(machine.transition('pause'));
console.log(machine.state);
console.log(machine.transition('start'));
console.log(machine.state);
π1π€©1
What is the output?
Anonymous Quiz
22%
true paused false paused
45%
false idle true running
21%
false paused true running
13%
true running false running
β€2π2π₯1
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
What is the output?
Anonymous Quiz
18%
'' null null null
36%
admin null null
24%
'' admin null null
23%
<script>alert('xss')</script> admin null null
π 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
What is the output?
Anonymous Quiz
26%
undefined undefined Sarah Sarah undefined
38%
Sarah Sarah Sarah Sarah Sarah
26%
Sarah undefined undefined Sarah Sarah
9%
undefined Sarah Sarah Sarah undefined
β€5π₯2π1