JavaScript
31.4K subscribers
1.18K photos
10 videos
33 files
858 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 prefix = "get";
const suffix = "Name";

const registry = {
[`${prefix}Full${suffix}`]: function () {
return `${this.first} ${this.last}`;
},
[`${prefix}Short${suffix}`]: function () {
return this.first[0] + ". " + this.last;
},
};

const person = {
first: "Leonardo",
last: "Fibonacci",
...registry,
};

const key = ["Full", "Short"][1];
console.log(person[`${prefix}${key}${suffix}`]());
❀1πŸ‘1
❀3πŸ”₯1
🀟 An Official Codemod to Migrate from Axios to fetch

A codemod (used via npx codemod) that transforms code using Axios to leverage the WHATWG Fetch API, which is now natively available in Node.js. For some reason they don’t link to it in the post, but it’s here if you want to try it out (and here’s the underlying code).

Augustin Mauroy
Please open Telegram to view this post
VIEW IN TELEGRAM
❀5πŸ‘3🀩1🀣1
CHALLENGE


const config = {
db: { host: "localhost", port: 5432 },
cache: { ttl: 300 },
};

Object.freeze(config);

config.debug = true;
config.db.port = 9999;
config.cache = { ttl: 600 };

const sealed = Object.seal({ version: "1.0", meta: { build: 42 } });

sealed.version = "2.0";
sealed.author = "devteam";
sealed.meta.build = 99;

console.log(
config.debug,
config.db.port,
config.cache.ttl,
sealed.version,
sealed.author,
sealed.meta.build
);
❀5
😱 Bun's Zig-to-Rust porting saga continues, but what about Node...? The Rust-based rewrite of Bun has been merged, though there are questions over the quality of the AI-ported code. Matteo Collina and Luca Maraschi got together to πŸ˜‰ discuss the story and speculate whether Node could follow...
Please open Telegram to view this post
VIEW IN TELEGRAM
πŸ”₯6πŸ‘4❀2🀣2πŸ€”1
CHALLENGE


const flags = {
READ: 0b0001,
WRITE: 0b0010,
EXECUTE: 0b0100,
DELETE: 0b1000,
};

const userPermissions = flags.READ | flags.WRITE | flags.EXECUTE;
const adminPermissions = userPermissions | flags.DELETE;

const canDelete = (adminPermissions & flags.DELETE) !== 0;
const canExecute = (userPermissions & flags.EXECUTE) !== 0;
const readOnly = userPermissions ^ flags.WRITE;

console.log(canDelete, canExecute, readOnly, adminPermissions >> 1);
❀2πŸ‘1πŸ”₯1
πŸ‘4❀3
CHALLENGE


const team = {
name: "Alpha",
members: ["Carlos", "Diana", "Eve"],

listMembers() {
return this.members.map(function (member) {
return `${this.name}: ${member}`;
});
},

listMembersArrow() {
return this.members.map((member) => {
return `${this.name}: ${member}`;
});
},
};

console.log(team.listMembers()[0]);
console.log(team.listMembersArrow()[0]);
❀7πŸ”₯3πŸ‘1
CHALLENGE

function makeCounter(start = 0, step = 1) {
let count = start;
const history = [];

return {
increment() {
count += step;
history.push(count);
return this;
},
decrement() {
count -= step;
history.push(count);
return this;
},
getHistory: () => history,
getCount: () => count,
};
}

const counter = makeCounter(10, 3);
counter.increment().increment().decrement();

console.log(counter.getCount());
console.log(counter.getHistory());
πŸ‘3❀1
πŸ‘4❀2
CHALLENGE


const inventory = new Map([
["sword", { qty: 3, value: 150 }],
["shield", { qty: 1, value: 200 }],
["potion", { qty: 5, value: 30 }],
]);

const upgraded = new Map(
[...inventory.entries()]
.filter(([, item]) => item.value >= 100)
.map(([key, item]) => [key, { ...item, value: item.value * 2 }])
);

console.log(upgraded.size);
console.log(upgraded.get("sword").value);
console.log(upgraded.has("potion"));
console.log([...upgraded.keys()].join(", "));
❀2πŸ‘2πŸ”₯2
CHALLENGE

const log = [];

const handler = {
set(target, key, value) {
log.push(`set:${key}=${value}`);
target[key] = value;
return true;
},
get(target, key) {
log.push(`get:${key}`);
return target[key];
}
};

const state = new Proxy({}, handler);

state.count = 0;
state.count = state.count + 1;
state.count = state.count + 1;

console.log(log.join(" | "));
❀3πŸ‘2πŸ”₯1
Somewhere in Yerevan πŸ‡¦πŸ‡²πŸ˜†
Please open Telegram to view this post
VIEW IN TELEGRAM
❀33🀣7πŸ‘3πŸ”₯1
CHALLENGE

const obj = {
name: "Nikola",
greetArrow: () => {
return `Hello, ${this?.name ?? "stranger"}!`;
},
greetRegular() {
return `Hello, ${this.name}!`;
},
greetNested() {
const inner = () => `Hi, ${this.name}!`;
return inner();
}
};

console.log(obj.greetArrow());
console.log(obj.greetRegular());
console.log(obj.greetNested());
πŸ‘6❀3πŸ”₯1
CHALLENGE

const a = 9007199254740991n;
const b = BigInt(Number.MAX_SAFE_INTEGER);

console.log(a === b);
console.log(a + 1n);
console.log(typeof a);
console.log(a === 9007199254740991);
πŸ‘4πŸ”₯1