From 5d156680ffe5c68a2b018cd1129b4252cf15c33b Mon Sep 17 00:00:00 2001 From: Tom Ruttle Date: Wed, 14 Feb 2018 20:29:10 +0000 Subject: [PATCH] new 'missing scripts' event type --- lib/app-manager.js | 4 ++-- lib/constants.js | 1 + lib/utils/lifecycle.js | 2 +- package.json | 2 +- test/app-manager.test.js | 4 ++-- 5 files changed, 7 insertions(+), 6 deletions(-) diff --git a/lib/app-manager.js b/lib/app-manager.js index 18224fe..854874e 100644 --- a/lib/app-manager.js +++ b/lib/app-manager.js @@ -156,8 +156,8 @@ export default function initAppManager(w: Window) { events.emit(eventTitles.STATUS_CHANGE, getDefaultStatusDetails()); - if (!haveScripts) { - events.emit(eventTitles.EXTERNAL_LINK); + if (!haveScripts && !initialRender) { + events.emit(eventTitles.MISSING_SCRIPTS); return; } } catch (err) { diff --git a/lib/constants.js b/lib/constants.js index 19ab4a6..6640d96 100644 --- a/lib/constants.js +++ b/lib/constants.js @@ -27,4 +27,5 @@ export const eventTitles = { STATUS_CHANGE: `${APP_MANAGER_NAMESPACE}-statuschange`, ERROR: `${APP_MANAGER_NAMESPACE}-error`, EXTERNAL_LINK: `${APP_MANAGER_NAMESPACE}-external-link`, + MISSING_SCRIPTS: `${APP_MANAGER_NAMESPACE}-missing-scripts`, }; diff --git a/lib/utils/lifecycle.js b/lib/utils/lifecycle.js index 6f65c60..43af55b 100644 --- a/lib/utils/lifecycle.js +++ b/lib/utils/lifecycle.js @@ -196,7 +196,7 @@ export default function initGetLifecycle(fragments: FragmentsMapType, loadScript } catch (err) { await handleLifecycleError(slotName, err); onError(err); - return true; + return false; } }); diff --git a/package.json b/package.json index 41033f0..74fd14d 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "app-manager", - "version": "0.21.0", + "version": "0.21.1", "description": "Script for managing the lifecycles of multiple apps on a single page", "main": "es5/index.js", "scripts": { diff --git a/test/app-manager.test.js b/test/app-manager.test.js index b3b7997..e57b2c9 100644 --- a/test/app-manager.test.js +++ b/test/app-manager.test.js @@ -191,10 +191,10 @@ describe('app-manager', () => { expect(mockB.onUpdateStatus.callCount).to.equals(10); }); - it('If a fragment does not have a loadScript function, treat the app as an external link', async () => { + it('If a fragment does not have a loadScript function, emit a missing-scripts event', async () => { windowStub.history.pushState(null, null, '/app-c'); - await awaitEvent(events, 'am-external-link'); + await awaitEvent(events, 'am-missing-scripts'); expect((_getState(): any).app.name).to.equals('APP_C');