Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

rurico/shadowrealm-api

Repository files navigation

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-api

Usage

Ponyfill: non-invasive

import ShadowRealm from 'shadowrealm-api'
const realm = new ShadowRealm();

Polyfill: patch up the global object

import 'shadowrealm-api/dist/polyfill'
const realm = new ShadowRealm();

Debugging

Print internal info for debugging

ShadowRealm.__debug = true;

Limitations

  1. All code evaluated inside a ShadowRealm runs in strict mode;
  2. The ESM statement must not contain redundant comments;
// ❌
import/* */defaultExport from "module-name";
export default/* */'xxx';
// ✅
import defaultExport from "module-name";
export default 'xxx';
  1. 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:

  1. Don't support destructuring assignment in ESM statement;
  2. Need fetch polyfill in top window;
  3. Need URL polyfill in top window;

Use polyfills:

import "fetch polyfill";
import "URL polyfill";
import "shadowrealm-api/dist/polyfill";
// Your codes

Contact

  1. WeChat: cai_fanwei
  2. QQ Group: 663286147
  3. E-mail: ambit_tsai@qq.com

About

🗳️ A implementation of the ShadowRealm API Proposal, a JavaScript sandbox, test with TC39 Test262 cases.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

Contributors

Languages

  • TypeScript 61.7%
  • JavaScript 36.3%
  • Other 2.0%

AltStyle によって変換されたページ (->オリジナル) /