Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
HTMLHeadElement.prototype.appendChild = function appendChild(this: any, newChild: T) {
const element = newChild as any;
if (element.tagName) {
switch (element.tagName) {
case LINK_TAG_NAME:
case STYLE_TAG_NAME: {
const stylesheetElement: HTMLLinkElement | HTMLStyleElement = newChild as any;
// check if the currently specified application is active
// While we switch page from qiankun app to a normal react routing page, the normal one may load stylesheet dynamically while page rendering,
// but the url change listener must to wait until the current call stack is flushed.
// This scenario may cause we record the stylesheet from react routing page dynamic injection,
// and remove them after the url change triggered and qiankun app is unmouting
// see https://github.com/ReactTraining/history/blob/master/modules/createHashHistory.js#L222-L230
const activated = checkActivityFunctions(window.location).some(name => name === appName);
// only hijack dynamic style injection when app activated
if (activated) {
dynamicStyleSheetElements.push(stylesheetElement);
}
break;
}
case SCRIPT_TAG_NAME: {
const { src, text } = element as HTMLScriptElement;
if (src) {
execScripts(null, [src], proxy).then(
() => {
// we need to invoke the onload event manually to notify the event listener that the script was completed
// here are the two typical ways of dynamic script loading
it(`returns both when the locationContains both`, () => {
const wLocation = mockWindowLocation('something.com/two/one')
expect(singleSpa.checkActivityFunctions(wLocation)).toEqual(['test1', 'test2'])
})
})