diff options
author | Grégoire Aubert <gregoire.aubert@sonarsource.com> | 2019-05-23 13:59:45 +0200 |
---|---|---|
committer | SonarTech <sonartech@sonarsource.com> | 2019-05-24 20:21:09 +0200 |
commit | d98ea4bead105ce8f79b2072f45f050d5da37d1e (patch) | |
tree | 1416df0086c9159ae7015995f539eefd9d87df23 /server/sonar-web/src/main/js/helpers/extensions.ts | |
parent | bcd1bf53c45459ec754270a0c6408e3d68144442 (diff) | |
download | sonarqube-d98ea4bead105ce8f79b2072f45f050d5da37d1e.tar.gz sonarqube-d98ea4bead105ce8f79b2072f45f050d5da37d1e.zip |
SONAR-12109 Fix initial vendor bundle size, and re-activate bundle size checking on CI
Diffstat (limited to 'server/sonar-web/src/main/js/helpers/extensions.ts')
-rw-r--r-- | server/sonar-web/src/main/js/helpers/extensions.ts | 37 |
1 files changed, 9 insertions, 28 deletions
diff --git a/server/sonar-web/src/main/js/helpers/extensions.ts b/server/sonar-web/src/main/js/helpers/extensions.ts index 66a56cf3ed0..6d40d843625 100644 --- a/server/sonar-web/src/main/js/helpers/extensions.ts +++ b/server/sonar-web/src/main/js/helpers/extensions.ts @@ -18,34 +18,9 @@ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ import { getBaseUrl } from './urls'; -import exposeLibraries from '../app/components/extensions/exposeLibraries'; +import { getExtensionFromCache } from './extensionsHandler'; -const WEB_ANALYTICS_EXTENSION = 'sq-web-analytics'; -const extensions: T.Dict<Function> = {}; - -function registerExtension(key: string, start: Function) { - extensions[key] = start; -} - -function setWebAnalyticsPageChangeHandler(pageHandler: (pathname: string) => void) { - registerExtension(WEB_ANALYTICS_EXTENSION, pageHandler); -} - -export function installExtensionsHandler() { - (window as any).registerExtension = registerExtension; -} - -export function installWebAnalyticsHandler() { - (window as any).setWebAnalyticsPageChangeHandler = setWebAnalyticsPageChangeHandler; -} - -export function getExtensionFromCache(key: string): Function | undefined { - return extensions[key]; -} - -export function getWebAnalyticsPageHandlerFromCache(): Function | undefined { - return extensions[WEB_ANALYTICS_EXTENSION]; -} +let librariesExposed = false; export function installScript(url: string, target: 'body' | 'head' = 'body'): Promise<any> { return new Promise(resolve => { @@ -62,7 +37,13 @@ export async function getExtensionStart(key: string) { return Promise.resolve(fromCache); } - exposeLibraries(); + if (!librariesExposed) { + // Async import allows to reduce initial vendor bundle size + const exposeLibraries = (await import('../app/components/extensions/exposeLibraries')).default; + exposeLibraries(); + librariesExposed = true; + } + await installScript(`/static/${key}.js`); const start = getExtensionFromCache(key); |