Skip to content

Latest commit

 

History

History
83 lines (72 loc) · 4.36 KB

CONTRIBUTING.md

File metadata and controls

83 lines (72 loc) · 4.36 KB

Contributing

Contributions are always welcome. If you don't know how you can help, you can check issues or ask @zloirock.

How to add a new polyfill

Style and standards

The coding style should follow our .eslintrc. You can test it by calling npm run lint. Different places have different syntax and standard library limitations:

  • Polyfill implementations should use only ES3 syntax and standard library. Polyfills should not use another polyfill from the global namespace.
  • In unit tests should be used modern syntax with our minimalistic Babel config. Unit tests for the pure version should not use any modern standard library features.
  • In building tools and tests, performed in Node.js, should be used only available in Node.js 4 syntax and standard library.

File names should be in the kebab-case. Name of files with polyfills should follow naming convention namespace.subnamespase-where-required.feature-name, for example, esnext.promise.try. Top-level namespace could be es for stable ECMAScript features, esnext for ECMAScript proposals and web for other web standards.

Testing

Before testing, you should install dependencies:

$ npm i

You can run all tests by

$ npm run test

You can run parts of the test case separately:

  • Linting:
$ npm run lint
  • Global version unit tests:
$ npm run test-unit-global-standalone
  • pure version unit tests:
$ npm run test-unit-pure-standalone
$ npm run test-promises-standalone
$ npm run test-observables-standalone
  • CommonJS entry points tests:
$ npm run test-entries-standalone

If you want to run tests in a certain browser at first you should build packages and test bundles:

$ npm run build
  • For running the global version of the unit test case use this file:
tests/tests.html
  • For running the pure version of the unit test case use this file:
tests/pure.html

Updating core-js-compat data

For updating core-js-compat data:

  • Clone core-js repo.
  • If you wanna add new data for a browser, run in this browser tests/compat/index.html and you will see which core-js modules required for this browser.
  • If you wanna add new data for Node.js, run tests/compat/node-runner.js in required Node.js version and you will see results in the console.
  • After getting this data, add it to packages/core-js-compat/src/data.mjs.
  • If you wanna add new mapping (for example, add a new iOS Safari version based on Safari or Node.js based on Chrome), add it to packages/core-js-compat/src/mapping.mjs.
  • Add a pull request to core-js repo.