tools-shadowrealm-api
v0.8.3
Published
ShadowRealm polyfill for browser
Downloads
20
Maintainers
Readme
ShadowRealm API Polyfill
A implementation of the ShadowRealm API Proposal, a JavaScript sandbox, test with TC39 Test262 cases.
简体中文 | English
declare class ShadowRealm {
constructor();
evaluate(sourceText: string): Primitive | Function;
importValue(specifier: string, bindingName: string): Promise<Primitive | Function>;
}Try it now 🎉
Install
npm i -S shadowrealm-apiUsage
Ponyfill: non-invasive
import ShadowRealm from 'tools-shadowrealm-api'
const realm = new ShadowRealm();Debugging
Print internal info for debugging
ShadowRealm.__debug = true;Limitations
- All code evaluated inside a ShadowRealm runs in strict mode;
- The ESM statement must not contain redundant comments;
// ❌
import/* */defaultExport from "module-name";
export default/* */'xxx';
// ✅
import defaultExport from "module-name";
export default 'xxx';- Exporting variable declarations is not supported;
// ❌
export const obj = {...}, fn = () => {...};
// ✅
const obj = {...}, fn = () => {...};
export { obj, fn };Compatibility
|IE|Edge|Firefox|Chrome|Safari|Opera| |:-:|:-:|:-:|:-:|:-:|:-:| ||14|29[1][2]|32[1][2]|8[2][3]|19[1][2]| |||41|49|10.1[3]|36| |||||14.1||
Notes:
- Don't support destructuring assignment in ESM statement;
- Need
fetchpolyfill in top window;- Need
URLpolyfill in top window;
Use polyfills:
import "fetch polyfill";
import "URL polyfill";
import "shadowrealm-api/dist/polyfill";
// Your codesContact
- WeChat: cai_fanwei
- QQ Group: 663286147
- E-mail: [email protected]
