From 898b55265c555c195d80caed7a58e1d7b705b07f Mon Sep 17 00:00:00 2001 From: Daniel Lockyer Date: Tue, 9 May 2023 14:30:38 +0200 Subject: [PATCH] Lazyloaded `@extractus/oembed-extractor` dependency - this dependency seems a pretty heavy one to require upon boot and given most sites don't need it to function as normal, this saves several MB of RAM per instance --- .../core/server/services/oembed/TwitterOEmbedProvider.js | 3 ++- ghost/oembed-service/lib/OEmbedService.js | 5 ++++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/ghost/core/core/server/services/oembed/TwitterOEmbedProvider.js b/ghost/core/core/server/services/oembed/TwitterOEmbedProvider.js index ac6a8b9f20..ca689c42d2 100644 --- a/ghost/core/core/server/services/oembed/TwitterOEmbedProvider.js +++ b/ghost/core/core/server/services/oembed/TwitterOEmbedProvider.js @@ -1,4 +1,3 @@ -const {extract} = require('@extractus/oembed-extractor'); const logging = require('@tryghost/logging'); /** @@ -39,6 +38,8 @@ class TwitterOEmbedProvider { return null; } + const {extract} = require('@extractus/oembed-extractor'); + /** @type {object} */ const oembedData = await extract(url.href); diff --git a/ghost/oembed-service/lib/OEmbedService.js b/ghost/oembed-service/lib/OEmbedService.js index ceb1d300a6..7fe6b5eca5 100644 --- a/ghost/oembed-service/lib/OEmbedService.js +++ b/ghost/oembed-service/lib/OEmbedService.js @@ -1,7 +1,6 @@ const errors = require('@tryghost/errors'); const tpl = require('@tryghost/tpl'); const logging = require('@tryghost/logging'); -const {extract, hasProvider} = require('@extractus/oembed-extractor'); const cheerio = require('cheerio'); const _ = require('lodash'); const charset = require('charset'); @@ -19,6 +18,8 @@ const messages = { * @returns {{url: string, provider: boolean}} */ const findUrlWithProvider = (url) => { + const {hasProvider} = require('@extractus/oembed-extractor'); + let provider; // build up a list of URL variations to test against because the oembed @@ -95,6 +96,8 @@ class OEmbedService { * @param {string} url */ async knownProvider(url) { + const {extract} = require('@extractus/oembed-extractor'); + try { return await extract(url); } catch (err) {