A polyfill repository for Web APIs, trying to eliminate the difference when using them. It mainly focuses on the implementation of Web APIs, which is not the same as core-js
, focusing on JavaScript. As a large project, some APIs should be shimmed step by step, and if you have any polyfill or workaround about those APIs, feel free to contribute to this project.
npm install @aleen42/core-web --save
// require all shims
import('@aleen42/core-web');
// require shims for only featured APIs
import('@aleen42/core-web/dist/featured.js');
// require shims for only stable APIs
import('@aleen42/core-web/dist/stable.js');
// require core-js shim for implementing
import('@aleen42/core-web/dist/index.all.js');
import('@aleen42/core-web/dist/featured.all.js');
import('@aleen42/core-web/dist/stable.all.js');
// require minimized code
import('@aleen42/core-web/dist/index.min.js');
import('@aleen42/core-web/dist/featured.min.js');
import('@aleen42/core-web/dist/stable.min.js');
import('@aleen42/core-web/dist/index.all.min.js');
import('@aleen42/core-web/dist/featured.all.min.js');
import('@aleen42/core-web/dist/stable.all.min.js');
Check the following list of supported polyfills and feel free to use it. If there are any compatible problems, please report them. All test cases of those specifications have been tested down to IE9.
stable (natively supported above IE10)
- Blob (constructor, stream, arrayBuffer, text)
- IE9- throws "Access is denied" when fetching blob URL.
- Element (classList)
- Event (constructor, preventDefault, stopPropagation, stopImmediatePropagation, addEventListener, removeEventListener, dispatchEvent)
- File (constructor)
- FileReader (constructor)
- FormData
- Global (atob, btoa, console)
- only avoid NPE exceptions of calling
window.console
under IE8 / IE9.
- only avoid NPE exceptions of calling
- HTMLElement (focus)
- HTMLOptionElement (Option)
- URL (constructor, URLSearchParams)
- XMLHttpRequest (send)
featured (natively unsupported under IE)
- Abort (AbortController, AbortSignal)
- Fetch (Fetch_API, Headers, Request, Response, credentials)
XMLHttpRequest
returns a text rather than aBlob
under IE9-, and it means thatfetch()
cannot handleutf-16le
data.- native
fetch()
won't normalize thepatch
method as uppercase. credentials
is not supported under IE9-.
- Streams (ReadableStream, WritableStream)
- Text (TextEncoder, TextDecoder)
- Using remote machines to test specifications down to IE9.
- Support testing framework under IE8-.
- The basic shim of
Blob
has relied on the shim ofweb-streams
, which has broken under IE8-.
- ==================== 1.0.0 Initial release ====================
- 1.0.1 implement polyfills or patches for Blob, File, FileReader, ReadableStream, WritableStream, TextEncoder, TextDecoder, etc.
- 1.0.2 implement polyfills for Fetch, Event, AbortController, AbortSignal, etc. Also fix some bugs and do some enhancements for CI.
- 1.0.3 implement polyfills for Element classList. Also upgrade some dependencies, and ensure tests under Node 18+.
Have an idea? Found a bug? See How to contribute.
MIT © aleen42