Skip to content

Latest commit

 

History

History
91 lines (80 loc) · 4.51 KB

CONTRIBUTING.md

File metadata and controls

91 lines (80 loc) · 4.51 KB

Contributing

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

How to add a new polyfill

Style and standards

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 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, web for another web standards and core for helpers.

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 unit-tests
  • pure version unit tests:
$ npm run unit-tests-pure
$ npm run promises-tests
$ npm run observables-tests
  • CommonJS entry points tests:
$ npm run commonjs-tests

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

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

and after that use this file:

tests/promises-aplus.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.js.
  • 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.js.
  • Add a pull request to core-js repo.