Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion ghost/core/core/server/api/endpoints/authentication.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ const invitations = require('../../services/invitations');
const dbBackup = require('../../data/db/backup');
const apiMail = require('./index').mail;
const apiSettings = require('./index').settings;
const UsersService = require('../../services/Users');
const UsersService = require('../../services/users');
const userService = new UsersService({dbBackup, models, auth, apiMail, apiSettings});
const {deleteAllSessions} = require('../../services/auth/session');

Expand Down
2 changes: 1 addition & 1 deletion ghost/core/core/server/api/endpoints/users.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ const dbBackup = require('../../data/db/backup');
const auth = require('../../services/auth');
const apiMail = require('./index').mail;
const apiSettings = require('./index').settings;
const UsersService = require('../../services/Users');
const UsersService = require('../../services/users');
const userService = new UsersService({dbBackup, models, auth, apiMail, apiSettings});
const ALLOWED_INCLUDES = ['count.posts', 'permissions', 'roles', 'roles.permissions'];
const UNSAFE_ATTRS = ['status', 'roles'];
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ const _ = require('lodash');
const {ValidationError} = require('@tryghost/errors');
const validator = require('@tryghost/validator');
const tpl = require('@tryghost/tpl');
const AnnouncementBarSettings = require('../../../../../services/announcement-bar-service/AnnouncementBarSettings');
const AnnouncementBarSettings = require('../../../../../services/announcement-bar-service/announcement-bar-settings');

const messages = {
invalidEmailReceived: 'Please send a valid email',
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import ObjectID from 'bson-objectid';
import {Knex} from 'knex';
import {IdentityTokenService} from '../identity-tokens/IdentityTokenService';
import {IdentityTokenService} from '../identity-tokens/identity-token-service';
import fetch from 'node-fetch';

type ExpectedWebhook = {
Expand Down
2 changes: 1 addition & 1 deletion ghost/core/core/server/services/adapter-manager/index.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
const AdapterManager = require('./AdapterManager');
const AdapterManager = require('./adapter-manager');
const getAdapterServiceConfig = require('./config');
const resolveAdapterOptions = require('./options-resolver');
const config = require('../../../shared/config');
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
const AnnouncementVisibilityValues = require('./AnnouncementVisibilityValues');
const AnnouncementVisibilityValues = require('./announcement-visibility-values');

class AnnouncementBarSettings {
#getAnnouncementSettings;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
const settingsCache = require('../../../shared/settings-cache');
const AnnouncementBarSettings = require('./AnnouncementBarSettings');
const AnnouncementBarSettings = require('./announcement-bar-settings');

const announcementBarService = new AnnouncementBarSettings({
getAnnouncementSettings: () => ({
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
const Feedback = require('./Feedback');
const Feedback = require('./feedback');
const errors = require('@tryghost/errors');
const tpl = require('@tryghost/tpl');

Expand Down Expand Up @@ -74,8 +74,8 @@ class AudienceFeedbackController {
}

const feedback = new Feedback({
memberId: member.id,
postId: post.id,
memberId: member.id,
postId: post.id,
score
});
await this.#repository.add(feedback);
Expand Down
8 changes: 4 additions & 4 deletions ghost/core/core/server/services/audience-feedback/index.js
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
const urlUtils = require('../../../shared/url-utils');
const urlService = require('../../services/url');

const AudienceFeedbackService = require('./AudienceFeedbackService');
const AudienceFeedbackController = require('./AudienceFeedbackController');
const Feedback = require('./Feedback');
const FeedbackRepository = require('./FeedbackRepository');
const AudienceFeedbackService = require('./audience-feedback-service');
const AudienceFeedbackController = require('./audience-feedback-controller');
const Feedback = require('./feedback');
const FeedbackRepository = require('./feedback-repository');

class AudienceFeedbackServiceWrapper {
async init() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ const settingsCache = require('../../../../shared/settings-cache');
const models = require('../../../models');
const urlUtils = require('../../../../shared/url-utils');

const SessionStore = require('./SessionStore');
const SessionStore = require('./session-store');
const sessionStore = new SessionStore(models.Session);

let unoExpressSessionMiddleware;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,8 @@ const messages = {

module.exports = class CommentsController {
/**
* @param {import('./CommentsService')} service
* @param {import('./CommentsStatsService')} stats
* @param {import('./comments-service')} service
* @param {import('./comments-stats-service')} stats
*/
constructor(service, stats) {
this.service = service;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
const moment = require('moment');
const htmlToPlaintext = require('@tryghost/html-to-plaintext');
const emailService = require('../email-service');
const CommentsServiceEmailRenderer = require('./CommentsServiceEmailRenderer');
const CommentsServiceEmailRenderer = require('./comments-service-email-renderer');
const {t} = require('../i18n');

class CommentsServiceEmails {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ class CommentsService {
/** @private */
this.contentGating = contentGating;

const Emails = require('./CommentsServiceEmails');
const Emails = require('./comments-service-emails');
/** @private */
this.emails = new Emails({
config,
Expand Down
6 changes: 3 additions & 3 deletions ghost/core/core/server/services/comments/index.js
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
class CommentsServiceWrapper {
init() {
const CommentsService = require('./CommentsService');
const CommentsController = require('./CommentsController');
const CommentsStats = require('./CommentsStatsService');
const CommentsService = require('./comments-service');
const CommentsController = require('./comments-controller');
const CommentsStats = require('./comments-stats-service');

const config = require('../../../shared/config');
const logging = require('@tryghost/logging');
Expand Down
4 changes: 2 additions & 2 deletions ghost/core/core/server/services/custom-redirects/index.js
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
const config = require('../../../shared/config');
const urlUtils = require('../../../shared/url-utils');

const DynamicRedirectManager = require('../lib/DynamicRedirectManager');
const CustomRedirectsAPI = require('./CustomRedirectsAPI');
const DynamicRedirectManager = require('../lib/dynamic-redirect-manager');
const CustomRedirectsAPI = require('./custom-redirects-api');
const validation = require('./validation');
const {getBackupRedirectsFilePath} = require('./utils');

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import {DonationPaymentEvent} from './DonationPaymentEvent';
import {DonationPaymentEvent} from './donation-payment-event';

type DonationRepository = {
save(event: DonationPaymentEvent): Promise<void>;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ class DonationServiceWrapper {
return;
}

const {DonationBookshelfRepository} = require('./DonationBookshelfRepository');
const {DonationBookshelfRepository} = require('./donation-bookshelf-repository');

this.repository = new DonationBookshelfRepository({
DonationPaymentEventModel
Expand Down
2 changes: 1 addition & 1 deletion ghost/core/core/server/services/donations/index.js
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
const DonationServiceWrapper = require('./DonationServiceWrapper');
const DonationServiceWrapper = require('./donation-service-wrapper');

module.exports = new DonationServiceWrapper();
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
const MailgunClient = require('../lib/MailgunClient');
const MailgunClient = require('../lib/mailgun-client');

const DEFAULT_EVENT_FILTER = 'delivered OR opened OR failed OR unsubscribed OR complained';
const PAGE_LIMIT = 300;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,12 +8,12 @@ class EmailAnalyticsServiceWrapper {
return;
}

const EmailAnalyticsService = require('./EmailAnalyticsService');
const EmailAnalyticsService = require('./email-analytics-service');
const EmailEventStorage = require('../email-service/EmailEventStorage');
const EmailEventProcessor = require('../email-service/EmailEventProcessor');
const MailgunProvider = require('./EmailAnalyticsProviderMailgun');
const MailgunProvider = require('./email-analytics-provider-mailgun');
const {EmailRecipientFailure, EmailSpamComplaintEvent, Email} = require('../../models');
const StartEmailAnalyticsJobEvent = require('./events/StartEmailAnalyticsJobEvent');
const StartEmailAnalyticsJobEvent = require('./events/start-email-analytics-job-event');
const domainEvents = require('@tryghost/domain-events');
const settings = require('../../../shared/settings-cache');
const labs = require('../../../shared/labs');
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
const EventProcessingResult = require('./EventProcessingResult');
const EventProcessingResult = require('./event-processing-result');
const logging = require('@tryghost/logging');
const errors = require('@tryghost/errors');

Expand Down
2 changes: 1 addition & 1 deletion ghost/core/core/server/services/email-analytics/index.js
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
const EmailAnalyticsServiceWrapper = require('./EmailAnalyticsServiceWrapper');
const EmailAnalyticsServiceWrapper = require('./email-analytics-service-wrapper');

module.exports = new EmailAnalyticsServiceWrapper();
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
const {parentPort} = require('worker_threads');
const StartEmailAnalyticsJobEvent = require('../../events/StartEmailAnalyticsJobEvent');
const StartEmailAnalyticsJobEvent = require('../../events/start-email-analytics-job-event');

// recurring job to fetch analytics since the most recently seen event timestamp

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ class EmailServiceWrapper {
const {DomainWarmingService} = require('./DomainWarmingService');

const {Post, Newsletter, Email, EmailBatch, EmailRecipient, Member} = require('../../models');
const MailgunClient = require('../lib/MailgunClient');
const MailgunClient = require('../lib/mailgun-client');
const configService = require('../../../shared/config');
const settingsCache = require('../../../shared/settings-cache');
const settingsHelpers = require('../settings-helpers');
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
const {AbstractEmailSuppressionList, EmailSuppressionData} = require('./EmailSuppressionList');
const {AbstractEmailSuppressionList, EmailSuppressionData} = require('./email-suppression-list');

module.exports = class InMemoryEmailSuppressionList extends AbstractEmailSuppressionList {
store = ['spam@member.test', 'fail@member.test'];
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
const {AbstractEmailSuppressionList, EmailSuppressionData, EmailSuppressedEvent} = require('./EmailSuppressionList');
const {AbstractEmailSuppressionList, EmailSuppressionData, EmailSuppressedEvent} = require('./email-suppression-list');
const SpamComplaintEvent = require('../email-service/events/SpamComplaintEvent');
const EmailBouncedEvent = require('../email-service/events/EmailBouncedEvent');
const DomainEvents = require('@tryghost/domain-events');
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@ const models = require('../../models');
const configService = require('../../../shared/config');
const settingsCache = require('../../../shared/settings-cache');
const labs = require('../../../shared/labs');
const MailgunClient = require('../lib/MailgunClient');
const MailgunEmailSuppressionList = require('./MailgunEmailSuppressionList');
const MailgunClient = require('../lib/mailgun-client');
const MailgunEmailSuppressionList = require('./mailgun-email-suppression-list');

const mailgunClient = new MailgunClient({
config: configService,
Expand Down
2 changes: 1 addition & 1 deletion ghost/core/core/server/services/explore-ping/index.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
const ExplorePingService = require('./ExplorePingService');
const ExplorePingService = require('./explore-ping-service');
const config = require('../../../shared/config');
const labs = require('../../../shared/labs');
const logging = require('@tryghost/logging');
Expand Down
2 changes: 1 addition & 1 deletion ghost/core/core/server/services/explore/index.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
const ExploreService = require('./ExploreService');
const ExploreService = require('./explore-service');

const MembersService = require('../members');
const PostsService = require('../posts/posts-service-instance')();
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
const models = require('../../models');
const FrontendDataService = require('./FrontendDataService');
const FrontendDataService = require('./front-end-data-service');

module.exports.init = () => {
return new FrontendDataService({IntegrationModel: models.Integration});
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
const {IdentityTokenService} = require('./IdentityTokenService');
const {IdentityTokenService} = require('./identity-token-service');

module.exports = class IdentityTokenServiceWrapper {
/** @type IdentityTokenService */
Expand Down
2 changes: 1 addition & 1 deletion ghost/core/core/server/services/identity-tokens/index.js
Original file line number Diff line number Diff line change
@@ -1 +1 @@
module.exports = require('./IdentityTokenServiceWrapper');
module.exports = require('./identity-token-service-wrapper');
2 changes: 1 addition & 1 deletion ghost/core/core/server/services/invites/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ const settingsCache = require('../../../shared/settings-cache');
const settingsHelpers = require('../settings-helpers');
const mailService = require('../../services/mail');
const urlUtils = require('../../../shared/url-utils');
const Invites = require('./Invites');
const Invites = require('./invites');

module.exports = new Invites({
settingsCache,
Expand Down
4 changes: 2 additions & 2 deletions ghost/core/core/server/services/mail/index.js
Original file line number Diff line number Diff line change
@@ -1,15 +1,15 @@
const path = require('path');
const urlUtils = require('../../../shared/url-utils');
const settingsCache = require('../../../shared/settings-cache');
const EmailContentGenerator = require('../lib/EmailContentGenerator');
const EmailContentGenerator = require('../lib/email-content-generator');

const emailContentGenerator = new EmailContentGenerator({
getSiteUrl: () => urlUtils.urlFor('home', true),
getSiteTitle: () => settingsCache.get('title'),
templatesDir: path.resolve(__dirname, '..', 'mail', 'templates')
});

exports.GhostMailer = require('./GhostMailer');
exports.GhostMailer = require('./ghost-mailer');
exports.utils = {
generateContent: emailContentGenerator.getContent.bind(emailContentGenerator)
};
2 changes: 1 addition & 1 deletion ghost/core/core/server/services/media-inliner/service.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
module.exports = {
async init() {
const debug = require('@tryghost/debug')('mediaInliner');
const MediaInliner = require('./ExternalMediaInliner');
const MediaInliner = require('./external-media-inliner');
const models = require('../../models');
const jobsService = require('../jobs');

Expand Down
12 changes: 6 additions & 6 deletions ghost/core/core/server/services/member-attribution/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -40,26 +40,26 @@ graph TD

### Components

#### 1. **MemberAttributionService** (`MemberAttributionService.js`)
#### 1. **MemberAttributionService** (`member-attribution-service.js`)
Main service interface that coordinates all attribution logic.

#### 2. **AttributionBuilder** (`AttributionBuilder.js`)
#### 2. **AttributionBuilder** (`attribution-builder.js`)
Converts URL history into attribution resources using the "Last Post Algorithm™️".

**Key Classes:**
- `Attribution`: Represents attribution data with methods to fetch and enrich resources
- `AttributionBuilder`: Factory for creating `Attribution` instances

#### 3. **UrlHistory** (`UrlHistory.js`)
#### 3. **UrlHistory** (`url-history.js`)
Validated container for URL history arrays from the frontend.

#### 4. **UrlTranslator** (`UrlTranslator.js`)
#### 4. **UrlTranslator** (`url-translator.js`)
Translates between URLs and Ghost resources.

#### 5. **ReferrerTranslator** (`ReferrerTranslator.js`)
#### 5. **ReferrerTranslator** (`referrer-translator.js`)
Parses referrer information into source and medium classifications.

#### 6. **OutboundLinkTagger** (`OutboundLinkTagger.js`)
#### 6. **OutboundLinkTagger** (`outbound-link-tagger.js`)
Adds `?ref=` parameters to external links in newsletters.

#### 7. **Frontend Script** (`member-attribution.js`)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
*/

class Attribution {
/** @type {import('./UrlTranslator')} */
/** @type {import('./url-translator')} */
#urlTranslator;

/**
Expand Down Expand Up @@ -133,9 +133,9 @@ class Attribution {
* Convert a UrlHistory to an attribution object
*/
class AttributionBuilder {
/** @type {import('./UrlTranslator')} */
/** @type {import('./url-translator')} */
urlTranslator;
/** @type {import('./ReferrerTranslator')} */
/** @type {import('./referrer-translator')} */
referrerTranslator;

/**
Expand Down Expand Up @@ -166,7 +166,7 @@ class AttributionBuilder {

/**
* Last Post Algorithm™️
* @param {import('./UrlHistory').UrlHistoryArray} history
* @param {import('./url-history').UrlHistoryArray} history
* @returns {Promise<Attribution>}
*/
async getAttribution(history) {
Expand Down
10 changes: 5 additions & 5 deletions ghost/core/core/server/services/member-attribution/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -11,11 +11,11 @@ class MemberAttributionServiceWrapper {
}

// Wire up all the dependencies
const MemberAttributionService = require('./MemberAttributionService');
const UrlTranslator = require('./UrlTranslator');
const ReferrerTranslator = require('./ReferrerTranslator');
const AttributionBuilder = require('./AttributionBuilder');
const OutboundLinkTagger = require('./OutboundLinkTagger');
const MemberAttributionService = require('./member-attribution-service');
const UrlTranslator = require('./url-translator');
const ReferrerTranslator = require('./referrer-translator');
const AttributionBuilder = require('./attribution-builder');
const OutboundLinkTagger = require('./outbound-link-tagger');
const models = require('../../models');

const urlTranslator = new UrlTranslator({
Expand Down
Loading