kernel/mathjs.js

/*!
 * MathGraph32 Javascript : Software for animating online dynamic mathematics figures
 * https://www.mathgraph32.org/
 * @Author Yves Biton (yves.biton@sesamath.net)
 * @License: GNU AGPLv3 https://www.gnu.org/licenses/agpl-3.0.html
 */

// cf https://mathjs.org/docs/custom_bundling.html
// Attention, il faudra alors aussi faire passer les js de mathjs par babel
// (notre config exclue tous les node_modules par défaut)
import {
  create,
  addDependencies,
  detDependencies,
  invDependencies,
  matrixDependencies,
  multiplyDependencies
} from 'mathjs'

const { add, det, inv, matrix, multiply } = create({
  addDependencies,
  detDependencies,
  invDependencies,
  matrixDependencies,
  multiplyDependencies
}, {})

// un export par défaut qui les exporte tous
export default { add, det, inv, matrix, multiply }

// pour éviter de récupérer tous les contenus de mathjs/types/index.d.ts dans notre types.d.ts
// (et ceux decimal.js qu'il importe)
// on définit ici un résumé du typeMathJsChain (cf commit e999dadb pour ajouter l'import des types
// de mathjs dans notre types.d.ts, mais ça fonctionne plus si on copie ce fichier de types ailleurs
// sans importer mathgraph et ses dépendances, on laisse tomber).

/**
 * Objet mathjs retourné par ses fonctions, on ne décrit ici que les méthodes qu'on utilise, il y en a plein d'autres
 * @typedef MathJsChain
 * @property {mathJsGet} get
 * @property {mathJsSize} size
 */
/**
 * @callback mathJsGet
 * @param {number|number[]} index
 * @returns {*}
 */
/**
 * @callback mathJsSize
 * @returns {number[]}
 */