mirror of
https://github.com/whscullin/apple2js.git
synced 2024-01-12 14:14:38 +00:00
1e79d9d59d
* Enabled prettier * Update lint, fix issues * Restore some array formatting
36 lines
1.4 KiB
JavaScript
36 lines
1.4 KiB
JavaScript
/**
|
|
* This is a total and terrible hack that allows us to create otherwise
|
|
* uninstantiable jsdom objects. Currently this exposes a way to create
|
|
* `FileList` objects.
|
|
*
|
|
* This was inspired by felipochoa's implementation in GitHub issue:
|
|
* https://github.com/jsdom/jsdom/issues/1272. This implementation is
|
|
* "better" because it does all of the dirty work during environment
|
|
* setup. It still requires typing.
|
|
*/
|
|
|
|
import JsdomEnvironment from 'jest-environment-jsdom';
|
|
|
|
export default class JsdomEnvironmentWithBackDoors extends JsdomEnvironment {
|
|
async setup() {
|
|
await super.setup();
|
|
const jsdomUtils = require('jsdom/lib/jsdom/living/generated/utils');
|
|
const jsdomFileList = require('jsdom/lib/jsdom/living/generated/FileList');
|
|
|
|
this.global.backdoors = {
|
|
newFileList: (...files) => {
|
|
const impl = jsdomFileList.createImpl(this.global);
|
|
const fileList = Object.assign([...files], {
|
|
item: (i) => fileList[i],
|
|
[jsdomUtils.implSymbol]: impl,
|
|
});
|
|
impl[jsdomUtils.wrapperSymbol] = fileList;
|
|
const fileListCtor =
|
|
this.global[jsdomUtils.ctorRegistrySymbol].FileList;
|
|
Object.setPrototypeOf(fileList, fileListCtor.prototype);
|
|
return fileList;
|
|
},
|
|
};
|
|
}
|
|
}
|