From 0862989b2e40c3b9c49cc981b6bece5b6b9830c1 Mon Sep 17 00:00:00 2001 From: Daniel Lockyer Date: Thu, 10 Oct 2024 09:37:24 +0100 Subject: [PATCH] Lazyloaded dependencies - these dependencies do not need to be eagerly loaded so we can move them down to where they are used --- ghost/core/core/frontend/meta/generate-excerpt.js | 3 +-- ghost/core/core/server/models/member.js | 2 +- ghost/stripe/lib/StripeAPI.js | 6 ++++-- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/ghost/core/core/frontend/meta/generate-excerpt.js b/ghost/core/core/frontend/meta/generate-excerpt.js index 51292cefd7..50f551f3de 100644 --- a/ghost/core/core/frontend/meta/generate-excerpt.js +++ b/ghost/core/core/frontend/meta/generate-excerpt.js @@ -1,5 +1,3 @@ -const downsize = require('downsize'); - function generateExcerpt(excerpt, truncateOptions) { truncateOptions = truncateOptions || {}; @@ -8,6 +6,7 @@ function generateExcerpt(excerpt, truncateOptions) { } // Just uses downsize to truncate, not format + const downsize = require('downsize'); return downsize(excerpt, truncateOptions); } diff --git a/ghost/core/core/server/models/member.js b/ghost/core/core/server/models/member.js index 9138ddd37f..f4f5f6aa44 100644 --- a/ghost/core/core/server/models/member.js +++ b/ghost/core/core/server/models/member.js @@ -2,7 +2,6 @@ const ghostBookshelf = require('./base'); const crypto = require('crypto'); const _ = require('lodash'); const config = require('../../shared/config'); -const {gravatar} = require('../lib/image'); const Member = ghostBookshelf.Model.extend({ tableName: 'members', @@ -397,6 +396,7 @@ const Member = ghostBookshelf.Model.extend({ // Will not use gravatar if privacy.useGravatar is false in config attrs.avatar_image = null; if (attrs.email && !config.isPrivacyDisabled('useGravatar')) { + const {gravatar} = require('../lib/image'); attrs.avatar_image = gravatar.url(attrs.email, {size: 250, default: 'blank'}); } diff --git a/ghost/stripe/lib/StripeAPI.js b/ghost/stripe/lib/StripeAPI.js index 9dc29725e4..2977422925 100644 --- a/ghost/stripe/lib/StripeAPI.js +++ b/ghost/stripe/lib/StripeAPI.js @@ -3,8 +3,6 @@ const {VersionMismatchError} = require('@tryghost/errors'); // @ts-ignore const debug = require('@tryghost/debug')('stripe'); const Stripe = require('stripe').Stripe; -// @ts-ignore -const LeakyBucket = require('leaky-bucket'); /* Stripe has the following rate limits: * - For most APIs, 100 read requests per second in live mode, 25 read requests per second in test mode @@ -78,6 +76,10 @@ module.exports = class StripeAPI { this._configured = false; return; } + + // Lazyloaded to protect sites without Stripe configured + const LeakyBucket = require('leaky-bucket'); + this._stripe = new Stripe(config.secretKey, { apiVersion: STRIPE_API_VERSION });