new.js
1 import { cli, Strategy } from '@jackwener/opencli/registry'; 2 import { DOMAIN, SITE, gqlRequest } from './_helpers.js'; 3 cli({ 4 site: SITE, 5 name: 'new', 6 description: 'Latest posts', 7 domain: DOMAIN, 8 strategy: Strategy.PUBLIC, 9 browser: false, 10 args: [{ name: 'limit', type: 'int', default: 10, help: 'Number of results' }], 11 columns: ['rank', 'title', 'author', 'karma', 'comments', 'url'], 12 func: async (_page, kwargs) => { 13 const limit = Number(kwargs.limit ?? 10); 14 const query = `query PostsList { 15 posts(input: {terms: {view: "new", limit: ${limit}}}) { 16 results { _id title user { displayName } baseScore commentCount slug postedAt tags { name } } 17 } 18 }`; 19 const data = await gqlRequest(query); 20 const posts = (data?.posts?.results ?? []); 21 return posts.map((item, i) => ({ 22 rank: i + 1, 23 title: item.title ?? '', 24 author: item.user?.displayName ?? 'Unknown', 25 karma: item.baseScore ?? 0, 26 comments: item.commentCount ?? 0, 27 url: `https://${DOMAIN}/posts/${item._id}/${item.slug}`, 28 })); 29 }, 30 });