Reorganize internal dependencies

The actual code base doesn’t import features but fully relies on Chart.* (e.g. Chart.helpers, Chart.defaults, etc…). Files are imported in chart.js in the order they are supposed to depend from each other. As far as I tried, this makes very complicated to safely and properly import a subset of the library.

We could reorganize the library to use require('path/to/features') instead of Chart.{feature} and so remove all function export and Chart.* references.

var helpers = require('../helpers');    // instead of = Chart.helpers
var defaults = require('../defaults');  // instead of = Chart.defaults
//...

The Chart namespace would be fully populated in chart.js:

// chart.js
var Chart = require('./core/core.controller');
Chart.defaults = require('./core/core.defaults');
Chart.helpers = require('./helpers/index');
Chart.controllers = require('./controllers/index');
// ...

Removing the “function export” impacts a lot of lines (remove one tab almost everywhere), so we could do that step by step to avoid huge and painful reviews and limit conflicts with open PRs. I would sequentially split the work as follows:

This is a preliminary work in order to migrate to ES6 modules (discussed in #2466, #4461, #4303, etc.). Awesome work as been done by @salzhrani but I believe that trying to do everything in one step (including ES6 new features) will take time, be hard or even impossible to review / handle conflicts with incoming contributions and finally takes forever to land in master.

Thoughts?

Author: Fantashit

2 thoughts on “Reorganize internal dependencies

Comments are closed.