aboutsummaryrefslogtreecommitdiffstats
path: root/server/sonar-web/src/main/js/helpers/extensions.ts
diff options
context:
space:
mode:
authorGrégoire Aubert <gregoire.aubert@sonarsource.com>2019-05-23 13:59:45 +0200
committerSonarTech <sonartech@sonarsource.com>2019-05-24 20:21:09 +0200
commitd98ea4bead105ce8f79b2072f45f050d5da37d1e (patch)
tree1416df0086c9159ae7015995f539eefd9d87df23 /server/sonar-web/src/main/js/helpers/extensions.ts
parentbcd1bf53c45459ec754270a0c6408e3d68144442 (diff)
downloadsonarqube-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.ts37
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);