From dc2c8330af84efad8899ba2a3e52bcb9ebbb7c63 Mon Sep 17 00:00:00 2001
From: Daniel Lockyer <hi@daniellockyer.com>
Date: Mon, 17 Jul 2023 10:48:08 +0200
Subject: [PATCH] Configured Admin to use CDN URLs for lazy-loaded assets

refs https://github.com/TryGhost/DevOps/issues/47

- this allows Ghost to use a different URL for lazy-loaded assets, so it
  can be loaded from a CDN
---
 ghost/admin/app/services/lazy-loader.js | 6 ++----
 ghost/admin/config/environment.js       | 3 ++-
 2 files changed, 4 insertions(+), 5 deletions(-)

diff --git a/ghost/admin/app/services/lazy-loader.js b/ghost/admin/app/services/lazy-loader.js
index 454141f323..0f1f14a4c0 100644
--- a/ghost/admin/app/services/lazy-loader.js
+++ b/ghost/admin/app/services/lazy-loader.js
@@ -32,12 +32,10 @@ export default class LazyLoaderService extends Service {
         }
 
         let scriptPromise = new RSVP.Promise((resolve, reject) => {
-            let {adminRoot} = this.ghostPaths;
-
             let script = document.createElement('script');
             script.type = 'text/javascript';
             script.async = true;
-            script.src = `${adminRoot}${url}`;
+            script.src = `${config.cdnUrl || this.ghostPaths.adminRoot}${url}`;
 
             let el = document.getElementsByTagName('script')[0];
             el.parentNode.insertBefore(script, el);
@@ -65,7 +63,7 @@ export default class LazyLoaderService extends Service {
             let link = document.createElement('link');
             link.id = `${key}-styles`;
             link.rel = alternate ? 'alternate stylesheet' : 'stylesheet';
-            link.href = `${this.ghostPaths.adminRoot}${url}`;
+            link.href = `${config.cdnUrl || this.ghostPaths.adminRoot}${url}`;
             link.onload = () => {
                 link.onload = null;
                 if (alternate) {
diff --git a/ghost/admin/config/environment.js b/ghost/admin/config/environment.js
index 47d5498668..adf7305e19 100644
--- a/ghost/admin/config/environment.js
+++ b/ghost/admin/config/environment.js
@@ -5,6 +5,7 @@ module.exports = function (environment) {
     let ENV = {
         modulePrefix: 'ghost-admin',
         environment,
+        cdnUrl: process.env.GHOST_CDN_URL || '',
         rootURL: '',
         locationType: 'trailing-hash',
         EmberENV: {
@@ -33,7 +34,7 @@ module.exports = function (environment) {
 
         'ember-simple-auth': { },
 
-        'ember-websockets': { 
+        'ember-websockets': {
             socketIO: true
         },