posts-stats-service.js
Network destination assigned from callCommonJS local-module require call
SHA-256cd5afe568a48382a0ba9b72aa59ca069ea37db5131beb8e2f0b6507c42026215
MaleculeH₄(CmDb₃OsPo)
Evidence
1const logging = require('@tryghost/logging');
2const errors = require('@tryghost/errors');
3const urlUtils = require('../../../shared/url-utils');
4
5// Import source normalization from ReferrersStatsService
6const {normalizeSource} = require('./referrers-stats-service');
7// Import centralized date utilities
8const {getDateBoundaries, applyDateFilter} = require('./utils/date-utils');
9
10/**
11 * @typedef {Object} StatsServiceOptions
12 * @property {string} [order='free_members desc'] - field to order by (free_members, paid_members, or mrr) and direction
13 * @property {number|string} [limit=20] - maximum number of results to return
14 * @pro …
103:37… inite(limitRaw) && limitRaw > 0 ? limitRaw : 20;
104 const [orderField, orderDirection = 'desc'] = order.split(' ');
105 const {dateFrom, dateTo} = getDateBoundaries(options);
106
107 if (!['free_members', 'paid_members', 'mrr'].includes(orderField)) {
108 throw new errors.BadRequestError({
109 message: `Invalid order field: ${orderFiel …
259:11… return 'Homepage';
260 }
261 if (path.startsWith('/tag/')) {
262 const segments = path.split('/');
263 return segments.length > 2 && segments[2] ? `tag/${segments[2]}` : 'tag/unknown';
264 }
265 if (path. …
384:34… Array.from(normalizedResults.values());
385 finalResults.sort((a, b) => {
386 if (orderDirection === 'desc') {
387 return b[orderField] - a[orderField];
388 …
455:24… , dateTo} = getDateBoundaries(options);
456
457 let subquery = knex('members_created_events as mce')
458 .select(selectField)
459 .countDistinct('mce.member_id as free_members')
460 …