* setup linting with eslint-config-standard, prettier
* [autofix] npm run lint -- --fix with new setup
* [manual] fix types/ directory errors
* [manual] fix linting errors in test/ directory
* [manual] fix single linting error in src/
* revert ts-expect-error comment change
* error on .only in mocha tests
* fix test description typo
* move some short objects to single line
* add and gitignore eslintcache
* individually suppress ts any
* set --max-warnings to 0
* extract matrices to constants
* update ts-expect-error comments
* Fix#2532: matrix index symbol `end` not working when used inside a sub-expression
* Refactor IndexNode.prototype._compile: remove redundant logic
* Throw a runtime exception when the context of an IndexNode is not a Matrix, Array, or string
* Describe the behavior of variable `end` nested indices
* Oopsie, fix linting issues
* Add a unit test to validate that `end` resolves to the inner context in case of nested indices
* fix(FunctionNode): Improve error message when a non-function is called
Also adds tests for as many different varieties of function calls
and their associate messages when the entity being called is not
a function as I could come up with.
Resolves#2493.
* feat(format): Add a truncate option to limit result length.
Also uses the new option in FunctionNode.js to limit the length of the value
portion of its new error messages. (As requested in review)
* docs: Add 'truncate' option to the list in the exported version of 'format'
* feat(FunctionNode): allow function parameters to be called
This change is implemented by checking if a function symbol is in
the arg list, and if so delaying its analysis until evaluation time,
at which point it is extracted from the arguments and called as
appropriate depending on its rawArgs property.
Also adds a few tests, documents the new facility, and documents the
handling of free variables in a function definition, which was previously
left undescribed.
Resolves#2441.
Resolves#2442.
* chore: correct lint violations (sorry)
Co-authored-by: Jos de Jong <wjosdejong@gmail.com>
* Support for Percentage Operation
* Fixed Style issue
* Added Test case to check for modulo followed by pi
* Support for % addition and % subtraction
* Fixed Documentation comment
* Support - Should not calculate mod for negative divisor
* Updated Docs
Co-authored-by: Jos de Jong <wjosdejong@gmail.com>
* fix toTex(): remove row delimiter on the last row
* remove row delimiter on the last row (use map and join instead of forEach)
* fix ArrayNode.toTex() unit tests incorrectly expecting a row delimiter on the last row
* added toTex() tests for nested cases
* fixed ArrayNode.toTex() for nested cases
* removed redunant variable
* Add support for scopes with get and set methods
* Fix build for node v12
* Fixup cli and parser tests
* Add tests for simplify and evaluate
* Add example for a custom scope object
* Function calls need child scopes
* Transitionary step: Separate Safe and Scope Property calls
* Renamed identifiers in FunctionNode
* Evaluate with ObjectScopeWrapper
* Simplify tests passing
* Assume all scopes are map-like. Except parser
* Remove isMapLike check in customs.*SafeProperty() methods
* Change MapLike to Map
* Move keywords from an Object to a Set
* Move ScopeProperty functions in to scope.js
* Removed deprecation warning
* Rename scope.js to map.js
* Rename ScopeProperty to MapProperty
* Add tests and docs for map.js
* Put back the micro-optimization of function calls
* Use Map in the parser
* Called scope methods directly in cli.js
* Coercing of scope into a Map is done in Node, not evaluate
* Move createSubScope to its own file
* Fixup following self-review
* Add scope docs
* Final self-review changes
* Address reviewer comments
* Remove MapProperty witness marks
* Converted broken benchmark possibly lost in a rebase
* Use bare map as scope in benchmark
Co-authored-by: Jos de Jong <wjosdejong@gmail.com>
* Add `.js` extension to source file imports
* Specify package `exports` in `package.json`
Specify package type as `commonjs` (It's good to be specific)
* Move all compiled scripts into `lib` directory
Remove ./number.js (You can use the compiled ones in `./lib/*`)
Tell node that the `esm` directory is type `module` and enable tree shaking.
Remove unused files from packages `files` property
* Allow importing of package.json
* Make library ESM first
* - Fix merge conflicts
- Refactor `bundleAny` into `defaultInstance.js` and `browserBundle.cjs`
- Refactor unit tests to be able to run with plain nodejs (no transpiling)
- Fix browser examples
* Fix browser and browserstack tests
* Fix running unit tests on Node 10 (which has no support for modules)
* Fix node.js examples (those are still commonjs)
* Remove the need for `browserBundle.cjs`
* Generate minified bundle only
* [Security] Bump node-fetch from 2.6.0 to 2.6.1 (#1963)
Bumps [node-fetch](https://github.com/bitinn/node-fetch) from 2.6.0 to 2.6.1. **This update includes a security fix.**
- [Release notes](https://github.com/bitinn/node-fetch/releases)
- [Changelog](https://github.com/node-fetch/node-fetch/blob/master/docs/CHANGELOG.md)
- [Commits](https://github.com/bitinn/node-fetch/compare/v2.6.0...v2.6.1)
Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
* Cleanup console.log
* Add integration tests to test the entry points (commonjs/esm, full/number only)
* Create backward compatibility error messages in the files moved/removed since v8
* Describe breaking changes in HISTORY.md
* Bump karma from 5.2.1 to 5.2.2 (#1965)
Bumps [karma](https://github.com/karma-runner/karma) from 5.2.1 to 5.2.2.
- [Release notes](https://github.com/karma-runner/karma/releases)
- [Changelog](https://github.com/karma-runner/karma/blob/master/CHANGELOG.md)
- [Commits](https://github.com/karma-runner/karma/compare/v5.2.1...v5.2.2)
Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Co-authored-by: Lee Langley-Rees <lee@greenimp.co.uk>
Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com>
Mathjs latex uses same syntax as template literals, thus we need to
ignore some otherwise helpful rules that look for template literal
syntax in normal strings.