1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
import { hnStoryPure } from "https://esm.town/v/akkartik/hnStoryPure";
import { hnPostsCached } from "https://esm.town/v/akkartik/hnPostsCached";
export let hnPostsWithStoriesNoBylineCached = async (posts) => {
// crawl parents of each post up to stories
var remaining = posts
.map((post) => post.parent)
.filter((x) => x !== undefined);
while (remaining.length > 0) {
var remainingPosts = await hnPostsCached(remaining);
remaining = remainingPosts
.map((post) => post.parent)
.filter((x) => x !== undefined);
}
// now traverse each post to story
for (i = 0; i < posts.length; i++) {
var post = posts[i];
post.story = (await hnStoryPure(post)).title;
delete post.kids;
delete post.parent;
delete post.time;
delete post.type;
delete post.parent;
delete post.by;
delete post.id;
}
return posts;
};
👆 This is a val. Vals are TypeScript snippets of code, written in the browser and run on our servers. Create scheduled functions, email yourself, and persist small pieces of data — all from the browser.