mathjs 9.3.2 → 9.4.0
Sign up to get free protection for your applications and to get access to all the features.
- package/HISTORY.md +22 -0
- package/README.md +1 -0
- package/bin/cli.js +11 -11
- package/docs/expressions/parsing.md +21 -4
- package/docs/reference/functions/complex.md +5 -49
- package/docs/reference/functions/eigs.md +12 -12
- package/docs/reference/functions/flatten.md +1 -0
- package/docs/reference/functions/matrixFromColumns.md +1 -1
- package/docs/reference/functions/matrixFromFunction.md +12 -0
- package/docs/reference/functions/matrixFromRows.md +1 -1
- package/docs/reference/functions.md +4 -1
- package/examples/advanced/custom_scope_objects.js +115 -0
- package/lib/browser/math.js +10 -10
- package/lib/browser/math.js.map +1 -1
- package/lib/cjs/core/create.js +8 -7
- package/lib/cjs/core/function/import.js +9 -7
- package/lib/cjs/core/function/typed.js +6 -1
- package/lib/cjs/defaultInstance.js +3 -3
- package/lib/cjs/entry/allFactoriesAny.js +3 -3
- package/lib/cjs/entry/allFactoriesNumber.js +3 -3
- package/lib/cjs/entry/configReadonly.js +5 -4
- package/lib/cjs/entry/dependenciesAny/dependenciesEigs.generated.js +51 -0
- package/lib/cjs/entry/dependenciesAny/dependenciesMatrixFromColumns.generated.js +29 -0
- package/lib/cjs/entry/dependenciesAny/dependenciesMatrixFromFunction.generated.js +26 -0
- package/lib/cjs/entry/dependenciesAny/dependenciesMatrixFromRows.generated.js +29 -0
- package/lib/cjs/entry/dependenciesAny.generated.js +24 -0
- package/lib/cjs/entry/impureFunctionsAny.generated.js +22 -17
- package/lib/cjs/entry/impureFunctionsNumber.generated.js +11 -9
- package/lib/cjs/entry/pureFunctionsAny.generated.js +78 -41
- package/lib/cjs/expression/Parser.js +22 -15
- package/lib/cjs/expression/embeddedDocs/embeddedDocs.js +9 -0
- package/lib/cjs/expression/embeddedDocs/function/matrix/column.js +1 -1
- package/lib/cjs/expression/embeddedDocs/function/matrix/matrixFromColumns.js +15 -0
- package/lib/cjs/expression/embeddedDocs/function/matrix/matrixFromFunction.js +15 -0
- package/lib/cjs/expression/embeddedDocs/function/matrix/matrixFromRows.js +15 -0
- package/lib/cjs/expression/embeddedDocs/function/matrix/row.js +1 -1
- package/lib/cjs/expression/function/evaluate.js +6 -4
- package/lib/cjs/expression/keywords.js +1 -3
- package/lib/cjs/expression/node/AccessorNode.js +1 -0
- package/lib/cjs/expression/node/AssignmentNode.js +6 -3
- package/lib/cjs/expression/node/FunctionAssignmentNode.js +2 -4
- package/lib/cjs/expression/node/FunctionNode.js +76 -46
- package/lib/cjs/expression/node/IndexNode.js +5 -13
- package/lib/cjs/expression/node/Node.js +15 -9
- package/lib/cjs/expression/node/ObjectNode.js +5 -3
- package/lib/cjs/expression/node/SymbolNode.js +2 -2
- package/lib/cjs/expression/node/utils/access.js +5 -3
- package/lib/cjs/expression/node/utils/assign.js +5 -3
- package/lib/cjs/expression/parse.js +10 -14
- package/lib/cjs/expression/transform/utils/compileInlineExpression.js +5 -3
- package/lib/cjs/factoriesAny.js +24 -0
- package/lib/cjs/function/algebra/decomposition/qr.js +5 -3
- package/lib/cjs/function/algebra/simplify/resolve.js +7 -1
- package/lib/cjs/function/algebra/simplify.js +20 -14
- package/lib/cjs/function/algebra/solver/lsolveAll.js +6 -16
- package/lib/cjs/function/algebra/solver/usolveAll.js +6 -16
- package/lib/cjs/function/arithmetic/ceil.js +6 -16
- package/lib/cjs/function/arithmetic/floor.js +6 -16
- package/lib/cjs/function/arithmetic/norm.js +2 -2
- package/lib/cjs/function/arithmetic/pow.js +9 -7
- package/lib/cjs/function/arithmetic/round.js +7 -5
- package/lib/cjs/function/complex/im.js +3 -0
- package/lib/cjs/function/complex/re.js +3 -0
- package/lib/cjs/function/matrix/eigs/complexEigs.js +631 -0
- package/lib/cjs/function/matrix/eigs/realSymetric.js +341 -0
- package/lib/cjs/function/matrix/eigs.js +188 -334
- package/lib/cjs/function/matrix/flatten.js +1 -0
- package/lib/cjs/function/matrix/matrixFromColumns.js +118 -0
- package/lib/cjs/function/matrix/matrixFromFunction.js +85 -0
- package/lib/cjs/function/matrix/matrixFromRows.js +108 -0
- package/lib/cjs/function/probability/pickRandom.js +1 -1
- package/lib/cjs/function/probability/util/seededRNG.js +2 -2
- package/lib/cjs/function/relational/compareNatural.js +2 -2
- package/lib/cjs/header.js +2 -2
- package/lib/cjs/plain/bignumber/index.js +2 -2
- package/lib/cjs/type/bignumber/BigNumber.js +2 -2
- package/lib/cjs/type/complex/Complex.js +5 -5
- package/lib/cjs/type/fraction/Fraction.js +2 -2
- package/lib/cjs/type/matrix/DenseMatrix.js +138 -0
- package/lib/cjs/type/matrix/Matrix.js +10 -0
- package/lib/cjs/type/matrix/SparseMatrix.js +77 -3
- package/lib/cjs/type/matrix/function/matrix.js +2 -1
- package/lib/cjs/type/unit/Unit.js +15 -13
- package/lib/cjs/utils/array.js +1 -1
- package/lib/cjs/utils/customs.js +18 -4
- package/lib/cjs/utils/emitter.js +2 -2
- package/lib/cjs/utils/function.js +6 -2
- package/lib/cjs/utils/is.js +7 -5
- package/lib/cjs/utils/latex.js +2 -2
- package/lib/cjs/utils/map.js +197 -0
- package/lib/cjs/utils/object.js +6 -5
- package/lib/cjs/utils/scope.js +33 -0
- package/lib/cjs/utils/snapshot.js +17 -16
- package/lib/cjs/utils/string.js +6 -4
- package/lib/cjs/version.js +1 -1
- package/lib/esm/constants.js +15 -15
- package/lib/esm/core/create.js +1 -2
- package/lib/esm/core/function/typed.js +5 -1
- package/lib/esm/entry/configReadonly.js +1 -2
- package/lib/esm/entry/dependenciesAny/dependenciesEigs.generated.js +34 -0
- package/lib/esm/entry/dependenciesAny/dependenciesMatrixFromColumns.generated.js +16 -0
- package/lib/esm/entry/dependenciesAny/dependenciesMatrixFromFunction.generated.js +14 -0
- package/lib/esm/entry/dependenciesAny/dependenciesMatrixFromRows.generated.js +16 -0
- package/lib/esm/entry/dependenciesAny.generated.js +3 -0
- package/lib/esm/entry/impureFunctionsAny.generated.js +13 -10
- package/lib/esm/entry/impureFunctionsNumber.generated.js +1 -1
- package/lib/esm/entry/pureFunctionsAny.generated.js +66 -32
- package/lib/esm/expression/Help.js +1 -1
- package/lib/esm/expression/Parser.js +23 -15
- package/lib/esm/expression/embeddedDocs/embeddedDocs.js +6 -0
- package/lib/esm/expression/embeddedDocs/function/matrix/column.js +1 -1
- package/lib/esm/expression/embeddedDocs/function/matrix/matrixFromColumns.js +8 -0
- package/lib/esm/expression/embeddedDocs/function/matrix/matrixFromFunction.js +8 -0
- package/lib/esm/expression/embeddedDocs/function/matrix/matrixFromRows.js +8 -0
- package/lib/esm/expression/embeddedDocs/function/matrix/row.js +1 -1
- package/lib/esm/expression/function/compile.js +1 -1
- package/lib/esm/expression/function/evaluate.js +6 -5
- package/lib/esm/expression/function/help.js +1 -1
- package/lib/esm/expression/function/parser.js +1 -1
- package/lib/esm/expression/keywords.js +1 -3
- package/lib/esm/expression/node/AccessorNode.js +2 -1
- package/lib/esm/expression/node/ArrayNode.js +1 -1
- package/lib/esm/expression/node/AssignmentNode.js +7 -4
- package/lib/esm/expression/node/BlockNode.js +1 -1
- package/lib/esm/expression/node/ConditionalNode.js +1 -1
- package/lib/esm/expression/node/ConstantNode.js +1 -1
- package/lib/esm/expression/node/FunctionAssignmentNode.js +3 -4
- package/lib/esm/expression/node/FunctionNode.js +57 -39
- package/lib/esm/expression/node/IndexNode.js +1 -1
- package/lib/esm/expression/node/Node.js +7 -8
- package/lib/esm/expression/node/ObjectNode.js +1 -1
- package/lib/esm/expression/node/OperatorNode.js +1 -1
- package/lib/esm/expression/node/ParenthesisNode.js +1 -1
- package/lib/esm/expression/node/RangeNode.js +1 -1
- package/lib/esm/expression/node/RelationalNode.js +1 -1
- package/lib/esm/expression/node/SymbolNode.js +3 -3
- package/lib/esm/expression/parse.js +2 -3
- package/lib/esm/expression/transform/apply.transform.js +1 -1
- package/lib/esm/expression/transform/column.transform.js +1 -1
- package/lib/esm/expression/transform/concat.transform.js +1 -1
- package/lib/esm/expression/transform/diff.transform.js +1 -1
- package/lib/esm/expression/transform/filter.transform.js +1 -1
- package/lib/esm/expression/transform/forEach.transform.js +1 -1
- package/lib/esm/expression/transform/index.transform.js +1 -1
- package/lib/esm/expression/transform/map.transform.js +1 -1
- package/lib/esm/expression/transform/max.transform.js +1 -1
- package/lib/esm/expression/transform/mean.transform.js +1 -1
- package/lib/esm/expression/transform/min.transform.js +1 -1
- package/lib/esm/expression/transform/range.transform.js +1 -1
- package/lib/esm/expression/transform/row.transform.js +1 -1
- package/lib/esm/expression/transform/std.transform.js +1 -1
- package/lib/esm/expression/transform/subset.transform.js +1 -1
- package/lib/esm/expression/transform/sum.transform.js +1 -1
- package/lib/esm/expression/transform/utils/compileInlineExpression.js +4 -3
- package/lib/esm/expression/transform/variance.transform.js +1 -1
- package/lib/esm/factoriesAny.js +3 -0
- package/lib/esm/factoriesNumber.js +1 -1
- package/lib/esm/function/algebra/decomposition/lup.js +1 -1
- package/lib/esm/function/algebra/decomposition/qr.js +2 -3
- package/lib/esm/function/algebra/decomposition/slu.js +1 -1
- package/lib/esm/function/algebra/derivative.js +1 -1
- package/lib/esm/function/algebra/rationalize.js +1 -1
- package/lib/esm/function/algebra/simplify/resolve.js +7 -2
- package/lib/esm/function/algebra/simplify/simplifyConstant.js +1 -1
- package/lib/esm/function/algebra/simplify/simplifyCore.js +1 -1
- package/lib/esm/function/algebra/simplify/util.js +1 -1
- package/lib/esm/function/algebra/simplify.js +16 -12
- package/lib/esm/function/algebra/solver/lsolve.js +1 -1
- package/lib/esm/function/algebra/solver/lsolveAll.js +1 -1
- package/lib/esm/function/algebra/solver/lusolve.js +1 -1
- package/lib/esm/function/algebra/solver/usolve.js +1 -1
- package/lib/esm/function/algebra/solver/usolveAll.js +1 -1
- package/lib/esm/function/algebra/sparse/csAmd.js +1 -1
- package/lib/esm/function/algebra/sparse/csChol.js +1 -1
- package/lib/esm/function/algebra/sparse/csCounts.js +1 -1
- package/lib/esm/function/algebra/sparse/csLu.js +1 -1
- package/lib/esm/function/algebra/sparse/csSpsolve.js +1 -1
- package/lib/esm/function/algebra/sparse/csSqr.js +1 -1
- package/lib/esm/function/algebra/sparse/csSymperm.js +1 -1
- package/lib/esm/function/arithmetic/abs.js +1 -1
- package/lib/esm/function/arithmetic/add.js +1 -1
- package/lib/esm/function/arithmetic/addScalar.js +1 -1
- package/lib/esm/function/arithmetic/cbrt.js +1 -1
- package/lib/esm/function/arithmetic/ceil.js +1 -1
- package/lib/esm/function/arithmetic/cube.js +1 -1
- package/lib/esm/function/arithmetic/divide.js +1 -1
- package/lib/esm/function/arithmetic/divideScalar.js +1 -1
- package/lib/esm/function/arithmetic/dotDivide.js +1 -1
- package/lib/esm/function/arithmetic/dotMultiply.js +1 -1
- package/lib/esm/function/arithmetic/dotPow.js +1 -1
- package/lib/esm/function/arithmetic/exp.js +1 -1
- package/lib/esm/function/arithmetic/expm1.js +1 -1
- package/lib/esm/function/arithmetic/fix.js +1 -1
- package/lib/esm/function/arithmetic/floor.js +1 -1
- package/lib/esm/function/arithmetic/gcd.js +1 -1
- package/lib/esm/function/arithmetic/hypot.js +1 -1
- package/lib/esm/function/arithmetic/lcm.js +1 -1
- package/lib/esm/function/arithmetic/log.js +1 -1
- package/lib/esm/function/arithmetic/log10.js +1 -1
- package/lib/esm/function/arithmetic/log1p.js +1 -1
- package/lib/esm/function/arithmetic/log2.js +1 -1
- package/lib/esm/function/arithmetic/mod.js +1 -1
- package/lib/esm/function/arithmetic/multiply.js +1 -1
- package/lib/esm/function/arithmetic/multiplyScalar.js +1 -1
- package/lib/esm/function/arithmetic/norm.js +3 -3
- package/lib/esm/function/arithmetic/nthRoot.js +2 -2
- package/lib/esm/function/arithmetic/nthRoots.js +1 -1
- package/lib/esm/function/arithmetic/pow.js +10 -8
- package/lib/esm/function/arithmetic/round.js +6 -6
- package/lib/esm/function/arithmetic/sign.js +1 -1
- package/lib/esm/function/arithmetic/sqrt.js +1 -1
- package/lib/esm/function/arithmetic/square.js +1 -1
- package/lib/esm/function/arithmetic/subtract.js +1 -1
- package/lib/esm/function/arithmetic/unaryMinus.js +1 -1
- package/lib/esm/function/arithmetic/unaryPlus.js +1 -1
- package/lib/esm/function/arithmetic/xgcd.js +1 -1
- package/lib/esm/function/bitwise/bitAnd.js +1 -1
- package/lib/esm/function/bitwise/bitNot.js +1 -1
- package/lib/esm/function/bitwise/bitOr.js +1 -1
- package/lib/esm/function/bitwise/bitXor.js +1 -1
- package/lib/esm/function/bitwise/leftShift.js +1 -1
- package/lib/esm/function/bitwise/rightArithShift.js +1 -1
- package/lib/esm/function/bitwise/rightLogShift.js +1 -1
- package/lib/esm/function/combinatorics/bellNumbers.js +1 -1
- package/lib/esm/function/combinatorics/catalan.js +1 -1
- package/lib/esm/function/combinatorics/composition.js +1 -1
- package/lib/esm/function/combinatorics/stirlingS2.js +1 -1
- package/lib/esm/function/complex/arg.js +1 -1
- package/lib/esm/function/complex/conj.js +1 -1
- package/lib/esm/function/complex/im.js +4 -1
- package/lib/esm/function/complex/re.js +4 -1
- package/lib/esm/function/geometry/distance.js +1 -1
- package/lib/esm/function/geometry/intersect.js +1 -1
- package/lib/esm/function/logical/and.js +1 -1
- package/lib/esm/function/logical/not.js +1 -1
- package/lib/esm/function/logical/or.js +1 -1
- package/lib/esm/function/logical/xor.js +1 -1
- package/lib/esm/function/matrix/apply.js +1 -1
- package/lib/esm/function/matrix/column.js +1 -1
- package/lib/esm/function/matrix/concat.js +1 -1
- package/lib/esm/function/matrix/count.js +1 -1
- package/lib/esm/function/matrix/cross.js +1 -1
- package/lib/esm/function/matrix/ctranspose.js +1 -1
- package/lib/esm/function/matrix/det.js +1 -1
- package/lib/esm/function/matrix/diag.js +1 -1
- package/lib/esm/function/matrix/diff.js +1 -1
- package/lib/esm/function/matrix/dot.js +1 -1
- package/lib/esm/function/matrix/eigs/complexEigs.js +586 -0
- package/lib/esm/function/matrix/eigs/realSymetric.js +335 -0
- package/lib/esm/function/matrix/eigs.js +187 -335
- package/lib/esm/function/matrix/expm.js +1 -1
- package/lib/esm/function/matrix/filter.js +1 -1
- package/lib/esm/function/matrix/flatten.js +2 -1
- package/lib/esm/function/matrix/forEach.js +1 -1
- package/lib/esm/function/matrix/getMatrixDataType.js +1 -1
- package/lib/esm/function/matrix/identity.js +1 -1
- package/lib/esm/function/matrix/inv.js +1 -1
- package/lib/esm/function/matrix/kron.js +1 -1
- package/lib/esm/function/matrix/map.js +1 -1
- package/lib/esm/function/matrix/matrixFromColumns.js +93 -0
- package/lib/esm/function/matrix/matrixFromFunction.js +78 -0
- package/lib/esm/function/matrix/matrixFromRows.js +83 -0
- package/lib/esm/function/matrix/ones.js +1 -1
- package/lib/esm/function/matrix/partitionSelect.js +1 -1
- package/lib/esm/function/matrix/range.js +1 -1
- package/lib/esm/function/matrix/reshape.js +1 -1
- package/lib/esm/function/matrix/resize.js +1 -1
- package/lib/esm/function/matrix/rotate.js +1 -1
- package/lib/esm/function/matrix/rotationMatrix.js +1 -1
- package/lib/esm/function/matrix/row.js +1 -1
- package/lib/esm/function/matrix/size.js +1 -1
- package/lib/esm/function/matrix/sort.js +1 -1
- package/lib/esm/function/matrix/sqrtm.js +1 -1
- package/lib/esm/function/matrix/squeeze.js +1 -1
- package/lib/esm/function/matrix/subset.js +1 -1
- package/lib/esm/function/matrix/trace.js +1 -1
- package/lib/esm/function/matrix/transpose.js +1 -1
- package/lib/esm/function/matrix/zeros.js +1 -1
- package/lib/esm/function/probability/combinations.js +1 -1
- package/lib/esm/function/probability/combinationsWithRep.js +1 -1
- package/lib/esm/function/probability/factorial.js +1 -1
- package/lib/esm/function/probability/gamma.js +1 -1
- package/lib/esm/function/probability/kldivergence.js +1 -1
- package/lib/esm/function/probability/multinomial.js +1 -1
- package/lib/esm/function/probability/permutations.js +1 -1
- package/lib/esm/function/probability/pickRandom.js +2 -2
- package/lib/esm/function/probability/random.js +2 -2
- package/lib/esm/function/probability/randomInt.js +1 -1
- package/lib/esm/function/relational/compare.js +2 -2
- package/lib/esm/function/relational/compareNatural.js +1 -1
- package/lib/esm/function/relational/compareText.js +2 -2
- package/lib/esm/function/relational/deepEqual.js +1 -1
- package/lib/esm/function/relational/equal.js +2 -2
- package/lib/esm/function/relational/equalScalar.js +2 -2
- package/lib/esm/function/relational/equalText.js +1 -1
- package/lib/esm/function/relational/larger.js +2 -2
- package/lib/esm/function/relational/largerEq.js +2 -2
- package/lib/esm/function/relational/smaller.js +2 -2
- package/lib/esm/function/relational/smallerEq.js +2 -2
- package/lib/esm/function/relational/unequal.js +2 -2
- package/lib/esm/function/set/setCartesian.js +1 -1
- package/lib/esm/function/set/setDifference.js +1 -1
- package/lib/esm/function/set/setDistinct.js +1 -1
- package/lib/esm/function/set/setIntersect.js +1 -1
- package/lib/esm/function/set/setIsSubset.js +1 -1
- package/lib/esm/function/set/setMultiplicity.js +1 -1
- package/lib/esm/function/set/setPowerset.js +1 -1
- package/lib/esm/function/set/setSize.js +1 -1
- package/lib/esm/function/set/setSymDifference.js +1 -1
- package/lib/esm/function/set/setUnion.js +1 -1
- package/lib/esm/function/special/erf.js +1 -1
- package/lib/esm/function/statistics/mad.js +1 -1
- package/lib/esm/function/statistics/max.js +1 -1
- package/lib/esm/function/statistics/mean.js +1 -1
- package/lib/esm/function/statistics/median.js +1 -1
- package/lib/esm/function/statistics/min.js +1 -1
- package/lib/esm/function/statistics/mode.js +1 -1
- package/lib/esm/function/statistics/prod.js +1 -1
- package/lib/esm/function/statistics/quantileSeq.js +1 -1
- package/lib/esm/function/statistics/std.js +1 -1
- package/lib/esm/function/statistics/sum.js +1 -1
- package/lib/esm/function/statistics/variance.js +1 -1
- package/lib/esm/function/string/bin.js +1 -1
- package/lib/esm/function/string/format.js +1 -1
- package/lib/esm/function/string/hex.js +1 -1
- package/lib/esm/function/string/oct.js +1 -1
- package/lib/esm/function/string/print.js +1 -1
- package/lib/esm/function/trigonometry/acos.js +1 -1
- package/lib/esm/function/trigonometry/acosh.js +1 -1
- package/lib/esm/function/trigonometry/acot.js +1 -1
- package/lib/esm/function/trigonometry/acoth.js +1 -1
- package/lib/esm/function/trigonometry/acsc.js +1 -1
- package/lib/esm/function/trigonometry/acsch.js +1 -1
- package/lib/esm/function/trigonometry/asec.js +1 -1
- package/lib/esm/function/trigonometry/asech.js +1 -1
- package/lib/esm/function/trigonometry/asin.js +1 -1
- package/lib/esm/function/trigonometry/asinh.js +1 -1
- package/lib/esm/function/trigonometry/atan.js +1 -1
- package/lib/esm/function/trigonometry/atan2.js +1 -1
- package/lib/esm/function/trigonometry/atanh.js +1 -1
- package/lib/esm/function/trigonometry/cos.js +1 -1
- package/lib/esm/function/trigonometry/cosh.js +1 -1
- package/lib/esm/function/trigonometry/cot.js +1 -1
- package/lib/esm/function/trigonometry/coth.js +1 -1
- package/lib/esm/function/trigonometry/csc.js +1 -1
- package/lib/esm/function/trigonometry/csch.js +1 -1
- package/lib/esm/function/trigonometry/sec.js +1 -1
- package/lib/esm/function/trigonometry/sech.js +1 -1
- package/lib/esm/function/trigonometry/sin.js +1 -1
- package/lib/esm/function/trigonometry/sinh.js +1 -1
- package/lib/esm/function/trigonometry/tan.js +1 -1
- package/lib/esm/function/trigonometry/tanh.js +1 -1
- package/lib/esm/function/unit/to.js +1 -1
- package/lib/esm/function/utils/clone.js +1 -1
- package/lib/esm/function/utils/hasNumericValue.js +1 -1
- package/lib/esm/function/utils/isInteger.js +1 -1
- package/lib/esm/function/utils/isNaN.js +1 -1
- package/lib/esm/function/utils/isNegative.js +1 -1
- package/lib/esm/function/utils/isNumeric.js +1 -1
- package/lib/esm/function/utils/isPositive.js +1 -1
- package/lib/esm/function/utils/isPrime.js +1 -1
- package/lib/esm/function/utils/isZero.js +1 -1
- package/lib/esm/function/utils/numeric.js +1 -1
- package/lib/esm/function/utils/typeOf.js +1 -1
- package/lib/esm/json/reviver.js +1 -1
- package/lib/esm/type/bignumber/BigNumber.js +1 -1
- package/lib/esm/type/bignumber/function/bignumber.js +1 -1
- package/lib/esm/type/boolean.js +1 -1
- package/lib/esm/type/chain/Chain.js +1 -1
- package/lib/esm/type/chain/function/chain.js +1 -1
- package/lib/esm/type/complex/function/complex.js +1 -1
- package/lib/esm/type/fraction/function/fraction.js +1 -1
- package/lib/esm/type/matrix/DenseMatrix.js +75 -1
- package/lib/esm/type/matrix/FibonacciHeap.js +1 -1
- package/lib/esm/type/matrix/ImmutableDenseMatrix.js +1 -1
- package/lib/esm/type/matrix/Matrix.js +10 -0
- package/lib/esm/type/matrix/MatrixIndex.js +1 -1
- package/lib/esm/type/matrix/Spa.js +1 -1
- package/lib/esm/type/matrix/SparseMatrix.js +37 -3
- package/lib/esm/type/matrix/function/index.js +1 -1
- package/lib/esm/type/matrix/function/matrix.js +3 -2
- package/lib/esm/type/matrix/function/sparse.js +1 -1
- package/lib/esm/type/matrix/utils/algorithm01.js +1 -1
- package/lib/esm/type/matrix/utils/algorithm02.js +1 -1
- package/lib/esm/type/matrix/utils/algorithm03.js +1 -1
- package/lib/esm/type/matrix/utils/algorithm04.js +1 -1
- package/lib/esm/type/matrix/utils/algorithm05.js +1 -1
- package/lib/esm/type/matrix/utils/algorithm06.js +1 -1
- package/lib/esm/type/matrix/utils/algorithm07.js +1 -1
- package/lib/esm/type/matrix/utils/algorithm08.js +1 -1
- package/lib/esm/type/matrix/utils/algorithm09.js +1 -1
- package/lib/esm/type/matrix/utils/algorithm10.js +1 -1
- package/lib/esm/type/matrix/utils/algorithm11.js +1 -1
- package/lib/esm/type/matrix/utils/algorithm12.js +1 -1
- package/lib/esm/type/matrix/utils/algorithm13.js +1 -1
- package/lib/esm/type/matrix/utils/algorithm14.js +1 -1
- package/lib/esm/type/number.js +1 -1
- package/lib/esm/type/string.js +1 -1
- package/lib/esm/type/unit/Unit.js +4 -5
- package/lib/esm/type/unit/function/createUnit.js +1 -1
- package/lib/esm/type/unit/function/splitUnit.js +1 -1
- package/lib/esm/type/unit/function/unit.js +1 -1
- package/lib/esm/type/unit/physicalConstants.js +2 -2
- package/lib/esm/utils/array.js +1 -1
- package/lib/esm/utils/customs.js +10 -0
- package/lib/esm/utils/map.js +135 -0
- package/lib/esm/utils/scope.js +26 -0
- package/lib/esm/utils/snapshot.js +3 -4
- package/lib/esm/version.js +1 -1
- package/package.json +18 -9
@@ -1,10 +1,14 @@
|
|
1
1
|
"use strict";
|
2
2
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
4
|
+
|
3
5
|
Object.defineProperty(exports, "__esModule", {
|
4
6
|
value: true
|
5
7
|
});
|
6
8
|
exports.createSparseMatrixClass = void 0;
|
7
9
|
|
10
|
+
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
11
|
+
|
8
12
|
var _is = require("../../utils/is.js");
|
9
13
|
|
10
14
|
var _number = require("../../utils/number.js");
|
@@ -27,8 +31,9 @@ var createSparseMatrixClass = /* #__PURE__ */(0, _factory.factory)(name, depende
|
|
27
31
|
Matrix = _ref.Matrix;
|
28
32
|
|
29
33
|
/**
|
30
|
-
* Sparse Matrix implementation. This type implements
|
31
|
-
*
|
34
|
+
* Sparse Matrix implementation. This type implements
|
35
|
+
* a [Compressed Column Storage](https://en.wikipedia.org/wiki/Sparse_matrix#Compressed_sparse_column_(CSC_or_CCS))
|
36
|
+
* format for two-dimensional sparse matrices.
|
32
37
|
* @class SparseMatrix
|
33
38
|
*/
|
34
39
|
function SparseMatrix(data, datatype) {
|
@@ -610,6 +615,8 @@ var createSparseMatrixClass = /* #__PURE__ */(0, _factory.factory)(name, depende
|
|
610
615
|
*
|
611
616
|
* @memberof SparseMatrix
|
612
617
|
* @param {number[] | Matrix} size The new size the matrix should have.
|
618
|
+
* Since sparse matrices are always two-dimensional,
|
619
|
+
* size must be two numbers in either an array or a matrix
|
613
620
|
* @param {*} [defaultValue=0] Default value, filled in on new entries.
|
614
621
|
* If not provided, the matrix elements will
|
615
622
|
* be filled with zeros.
|
@@ -780,6 +787,8 @@ var createSparseMatrixClass = /* #__PURE__ */(0, _factory.factory)(name, depende
|
|
780
787
|
*
|
781
788
|
* @memberof SparseMatrix
|
782
789
|
* @param {number[]} sizes The new size the matrix should have.
|
790
|
+
* Since sparse matrices are always two-dimensional,
|
791
|
+
* size must be two numbers in either an array or a matrix
|
783
792
|
* @param {boolean} [copy] Return a reshaped copy of the matrix
|
784
793
|
*
|
785
794
|
* @return {Matrix} The reshaped matrix
|
@@ -1020,6 +1029,8 @@ var createSparseMatrixClass = /* #__PURE__ */(0, _factory.factory)(name, depende
|
|
1020
1029
|
* parameters: the value of the element, the index
|
1021
1030
|
* of the element, and the Matrix being traversed.
|
1022
1031
|
* @param {boolean} [skipZeros] Invoke callback function for non-zero values only.
|
1032
|
+
* If false, the indices are guaranteed to be in order,
|
1033
|
+
* if true, the indices can be unordered.
|
1023
1034
|
*/
|
1024
1035
|
|
1025
1036
|
|
@@ -1066,13 +1077,76 @@ var createSparseMatrixClass = /* #__PURE__ */(0, _factory.factory)(name, depende
|
|
1066
1077
|
}
|
1067
1078
|
}
|
1068
1079
|
};
|
1080
|
+
/**
|
1081
|
+
* Iterate over the matrix elements, skipping zeros
|
1082
|
+
* @return {Iterable<{ value, index: number[] }>}
|
1083
|
+
*/
|
1084
|
+
|
1085
|
+
|
1086
|
+
SparseMatrix.prototype[Symbol.iterator] = /*#__PURE__*/_regenerator["default"].mark(function _callee() {
|
1087
|
+
var columns, j, k0, k1, k, i;
|
1088
|
+
return _regenerator["default"].wrap(function _callee$(_context) {
|
1089
|
+
while (1) {
|
1090
|
+
switch (_context.prev = _context.next) {
|
1091
|
+
case 0:
|
1092
|
+
if (this._values) {
|
1093
|
+
_context.next = 2;
|
1094
|
+
break;
|
1095
|
+
}
|
1096
|
+
|
1097
|
+
throw new Error('Cannot iterate a Pattern only matrix');
|
1098
|
+
|
1099
|
+
case 2:
|
1100
|
+
columns = this._size[1];
|
1101
|
+
j = 0;
|
1102
|
+
|
1103
|
+
case 4:
|
1104
|
+
if (!(j < columns)) {
|
1105
|
+
_context.next = 18;
|
1106
|
+
break;
|
1107
|
+
}
|
1108
|
+
|
1109
|
+
k0 = this._ptr[j];
|
1110
|
+
k1 = this._ptr[j + 1];
|
1111
|
+
k = k0;
|
1112
|
+
|
1113
|
+
case 8:
|
1114
|
+
if (!(k < k1)) {
|
1115
|
+
_context.next = 15;
|
1116
|
+
break;
|
1117
|
+
}
|
1118
|
+
|
1119
|
+
// row index
|
1120
|
+
i = this._index[k];
|
1121
|
+
_context.next = 12;
|
1122
|
+
return {
|
1123
|
+
value: this._values[k],
|
1124
|
+
index: [i, j]
|
1125
|
+
};
|
1126
|
+
|
1127
|
+
case 12:
|
1128
|
+
k++;
|
1129
|
+
_context.next = 8;
|
1130
|
+
break;
|
1131
|
+
|
1132
|
+
case 15:
|
1133
|
+
j++;
|
1134
|
+
_context.next = 4;
|
1135
|
+
break;
|
1136
|
+
|
1137
|
+
case 18:
|
1138
|
+
case "end":
|
1139
|
+
return _context.stop();
|
1140
|
+
}
|
1141
|
+
}
|
1142
|
+
}, _callee, this);
|
1143
|
+
});
|
1069
1144
|
/**
|
1070
1145
|
* Create an Array with a copy of the data of the SparseMatrix
|
1071
1146
|
* @memberof SparseMatrix
|
1072
1147
|
* @returns {Array} array
|
1073
1148
|
*/
|
1074
1149
|
|
1075
|
-
|
1076
1150
|
SparseMatrix.prototype.toArray = function () {
|
1077
1151
|
return _toArray(this._values, this._index, this._ptr, this._size, true);
|
1078
1152
|
};
|
@@ -43,7 +43,8 @@ var createMatrix = /* #__PURE__ */(0, _factory.factory)(name, dependencies, func
|
|
43
43
|
* bignumber, boolean, complex, index, number, string, unit, sparse
|
44
44
|
*
|
45
45
|
* @param {Array | Matrix} [data] A multi dimensional array
|
46
|
-
* @param {string} [format] The Matrix storage format
|
46
|
+
* @param {string} [format] The Matrix storage format, either `'dense'` or `'sparse'`
|
47
|
+
* @param {string} [datatype] Type of the values
|
47
48
|
*
|
48
49
|
* @return {Matrix} The created matrix
|
49
50
|
*/
|
@@ -1,10 +1,18 @@
|
|
1
1
|
"use strict";
|
2
2
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
4
|
+
|
3
5
|
Object.defineProperty(exports, "__esModule", {
|
4
6
|
value: true
|
5
7
|
});
|
6
8
|
exports.createUnitClass = void 0;
|
7
9
|
|
10
|
+
var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
|
11
|
+
|
12
|
+
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
13
|
+
|
14
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
15
|
+
|
8
16
|
var _is = require("../../utils/is.js");
|
9
17
|
|
10
18
|
var _factory = require("../../utils/factory.js");
|
@@ -17,15 +25,9 @@ var _object = require("../../utils/object.js");
|
|
17
25
|
|
18
26
|
var _constants = require("../../utils/bignumber/constants.js");
|
19
27
|
|
20
|
-
function
|
21
|
-
|
22
|
-
function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
|
23
|
-
|
24
|
-
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
|
25
|
-
|
26
|
-
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
28
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
|
27
29
|
|
28
|
-
function
|
30
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
29
31
|
|
30
32
|
var name = 'Unit';
|
31
33
|
var dependencies = ['?on', 'config', 'addScalar', 'subtract', 'multiplyScalar', 'divideScalar', 'pow', 'abs', 'fix', 'round', 'equal', 'isNumeric', 'format', 'number', 'Complex', 'BigNumber', 'Fraction'];
|
@@ -1949,9 +1951,9 @@ var createUnitClass = /* #__PURE__ */(0, _factory.factory)(name, dependencies, f
|
|
1949
1951
|
}
|
1950
1952
|
}
|
1951
1953
|
};
|
1952
|
-
PREFIXES.SHORTLONG =
|
1953
|
-
PREFIXES.BINARY_SHORT =
|
1954
|
-
PREFIXES.BINARY_LONG =
|
1954
|
+
PREFIXES.SHORTLONG = (0, _extends2["default"])({}, PREFIXES.SHORT, PREFIXES.LONG);
|
1955
|
+
PREFIXES.BINARY_SHORT = (0, _extends2["default"])({}, PREFIXES.BINARY_SHORT_SI, PREFIXES.BINARY_SHORT_IEC);
|
1956
|
+
PREFIXES.BINARY_LONG = (0, _extends2["default"])({}, PREFIXES.BINARY_LONG_SI, PREFIXES.BINARY_LONG_IEC);
|
1955
1957
|
/* Internally, each unit is represented by a value and a dimension array. The elements of the dimensions array have the following meaning:
|
1956
1958
|
* Index Dimension
|
1957
1959
|
* ----- ---------
|
@@ -3743,7 +3745,7 @@ var createUnitClass = /* #__PURE__ */(0, _factory.factory)(name, dependencies, f
|
|
3743
3745
|
|
3744
3746
|
|
3745
3747
|
Unit.createUnit = function (obj, options) {
|
3746
|
-
if (
|
3748
|
+
if ((0, _typeof2["default"])(obj) !== 'object') {
|
3747
3749
|
throw new TypeError("createUnit expects first parameter to be of type 'Object'");
|
3748
3750
|
} // Remove all units and aliases we are overriding
|
3749
3751
|
|
@@ -3833,7 +3835,7 @@ var createUnitClass = /* #__PURE__ */(0, _factory.factory)(name, dependencies, f
|
|
3833
3835
|
if (obj !== '') {
|
3834
3836
|
definition = obj;
|
3835
3837
|
}
|
3836
|
-
} else if (
|
3838
|
+
} else if ((0, _typeof2["default"])(obj) === 'object') {
|
3837
3839
|
definition = obj.definition;
|
3838
3840
|
prefixes = obj.prefixes;
|
3839
3841
|
offset = obj.offset;
|
package/lib/cjs/utils/array.js
CHANGED
@@ -616,7 +616,7 @@ function generalize(a) {
|
|
616
616
|
* This method does not validate Array Matrix shape
|
617
617
|
* @param {Array} array
|
618
618
|
* @param {function} typeOf Callback function to use to determine the type of a value
|
619
|
-
* @return string
|
619
|
+
* @return {string}
|
620
620
|
*/
|
621
621
|
|
622
622
|
|
package/lib/cjs/utils/customs.js
CHANGED
@@ -1,18 +1,22 @@
|
|
1
1
|
"use strict";
|
2
2
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
4
|
+
|
3
5
|
Object.defineProperty(exports, "__esModule", {
|
4
6
|
value: true
|
5
7
|
});
|
6
8
|
exports.getSafeProperty = getSafeProperty;
|
7
9
|
exports.setSafeProperty = setSafeProperty;
|
8
10
|
exports.isSafeProperty = isSafeProperty;
|
11
|
+
exports.hasSafeProperty = hasSafeProperty;
|
12
|
+
exports.getSafeProperties = getSafeProperties;
|
9
13
|
exports.validateSafeMethod = validateSafeMethod;
|
10
14
|
exports.isSafeMethod = isSafeMethod;
|
11
15
|
exports.isPlainObject = isPlainObject;
|
12
16
|
|
13
|
-
var
|
17
|
+
var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
|
14
18
|
|
15
|
-
|
19
|
+
var _object = require("./object.js");
|
16
20
|
|
17
21
|
/**
|
18
22
|
* Get a property of a plain object
|
@@ -55,6 +59,16 @@ function setSafeProperty(object, prop, value) {
|
|
55
59
|
|
56
60
|
throw new Error('No access to property "' + prop + '"');
|
57
61
|
}
|
62
|
+
|
63
|
+
function getSafeProperties(object) {
|
64
|
+
return Object.keys(object).filter(function (prop) {
|
65
|
+
return (0, _object.hasOwnProperty)(object, prop);
|
66
|
+
});
|
67
|
+
}
|
68
|
+
|
69
|
+
function hasSafeProperty(object, prop) {
|
70
|
+
return prop in object;
|
71
|
+
}
|
58
72
|
/**
|
59
73
|
* Test whether a property is safe to use for an object.
|
60
74
|
* For example .toString and .constructor are not safe
|
@@ -64,7 +78,7 @@ function setSafeProperty(object, prop, value) {
|
|
64
78
|
|
65
79
|
|
66
80
|
function isSafeProperty(object, prop) {
|
67
|
-
if (!object ||
|
81
|
+
if (!object || (0, _typeof2["default"])(object) !== 'object') {
|
68
82
|
return false;
|
69
83
|
} // SAFE: whitelisted
|
70
84
|
// e.g length
|
@@ -157,7 +171,7 @@ function isSafeMethod(object, method) {
|
|
157
171
|
}
|
158
172
|
|
159
173
|
function isPlainObject(object) {
|
160
|
-
return
|
174
|
+
return (0, _typeof2["default"])(object) === 'object' && object && object.constructor === Object;
|
161
175
|
}
|
162
176
|
|
163
177
|
var safeNativeProperties = {
|
package/lib/cjs/utils/emitter.js
CHANGED
@@ -1,5 +1,7 @@
|
|
1
1
|
"use strict";
|
2
2
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
4
|
+
|
3
5
|
Object.defineProperty(exports, "__esModule", {
|
4
6
|
value: true
|
5
7
|
});
|
@@ -7,8 +9,6 @@ exports.mixin = mixin;
|
|
7
9
|
|
8
10
|
var _tinyEmitter = _interopRequireDefault(require("tiny-emitter"));
|
9
11
|
|
10
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
|
11
|
-
|
12
12
|
/**
|
13
13
|
* Extend given object with emitter functions `on`, `off`, `once`, `emit`
|
14
14
|
* @param {Object} obj
|
@@ -1,5 +1,7 @@
|
|
1
1
|
"use strict";
|
2
2
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
4
|
+
|
3
5
|
Object.defineProperty(exports, "__esModule", {
|
4
6
|
value: true
|
5
7
|
});
|
@@ -7,9 +9,11 @@ exports.memoize = memoize;
|
|
7
9
|
exports.memoizeCompare = memoizeCompare;
|
8
10
|
exports.maxArgumentCount = maxArgumentCount;
|
9
11
|
|
12
|
+
var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
|
13
|
+
|
10
14
|
var _lruQueue = require("./lruQueue.js");
|
11
15
|
|
12
|
-
|
16
|
+
// function utils
|
13
17
|
|
14
18
|
/**
|
15
19
|
* Memoize a given function by caching the computed result.
|
@@ -34,7 +38,7 @@ function memoize(fn) {
|
|
34
38
|
limit = limit == null ? Number.POSITIVE_INFINITY : limit;
|
35
39
|
hasher = hasher == null ? JSON.stringify : hasher;
|
36
40
|
return function memoize() {
|
37
|
-
if (
|
41
|
+
if ((0, _typeof2["default"])(memoize.cache) !== 'object') {
|
38
42
|
memoize.cache = {
|
39
43
|
values: new Map(),
|
40
44
|
lru: (0, _lruQueue.lruQueue)(limit || Number.POSITIVE_INFINITY)
|
package/lib/cjs/utils/is.js
CHANGED
@@ -1,5 +1,7 @@
|
|
1
1
|
"use strict";
|
2
2
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
4
|
+
|
3
5
|
Object.defineProperty(exports, "__esModule", {
|
4
6
|
value: true
|
5
7
|
});
|
@@ -43,7 +45,7 @@ exports.isChain = isChain;
|
|
43
45
|
exports.typeOf = typeOf;
|
44
46
|
exports.isArray = void 0;
|
45
47
|
|
46
|
-
|
48
|
+
var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
|
47
49
|
|
48
50
|
// type checks for all known types
|
49
51
|
//
|
@@ -67,11 +69,11 @@ function isBigNumber(x) {
|
|
67
69
|
}
|
68
70
|
|
69
71
|
function isComplex(x) {
|
70
|
-
return x &&
|
72
|
+
return x && (0, _typeof2["default"])(x) === 'object' && Object.getPrototypeOf(x).isComplex === true || false;
|
71
73
|
}
|
72
74
|
|
73
75
|
function isFraction(x) {
|
74
|
-
return x &&
|
76
|
+
return x && (0, _typeof2["default"])(x) === 'object' && Object.getPrototypeOf(x).isFraction === true || false;
|
75
77
|
}
|
76
78
|
|
77
79
|
function isUnit(x) {
|
@@ -140,7 +142,7 @@ function isRegExp(x) {
|
|
140
142
|
}
|
141
143
|
|
142
144
|
function isObject(x) {
|
143
|
-
return !!(x &&
|
145
|
+
return !!(x && (0, _typeof2["default"])(x) === 'object' && x.constructor === Object && !isComplex(x) && !isFraction(x));
|
144
146
|
}
|
145
147
|
|
146
148
|
function isNull(x) {
|
@@ -216,7 +218,7 @@ function isChain(x) {
|
|
216
218
|
}
|
217
219
|
|
218
220
|
function typeOf(x) {
|
219
|
-
var t =
|
221
|
+
var t = (0, _typeof2["default"])(x);
|
220
222
|
|
221
223
|
if (t === 'object') {
|
222
224
|
// JavaScript types
|
package/lib/cjs/utils/latex.js
CHANGED
@@ -1,5 +1,7 @@
|
|
1
1
|
"use strict";
|
2
2
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
4
|
+
|
3
5
|
Object.defineProperty(exports, "__esModule", {
|
4
6
|
value: true
|
5
7
|
});
|
@@ -11,8 +13,6 @@ var _escapeLatex = _interopRequireDefault(require("escape-latex"));
|
|
11
13
|
|
12
14
|
var _object = require("./object.js");
|
13
15
|
|
14
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
|
15
|
-
|
16
16
|
/* eslint no-template-curly-in-string: "off" */
|
17
17
|
var latexSymbols = {
|
18
18
|
// GREEK LETTERS
|
@@ -0,0 +1,197 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
4
|
+
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
6
|
+
value: true
|
7
|
+
});
|
8
|
+
exports.createEmptyMap = createEmptyMap;
|
9
|
+
exports.createMap = createMap;
|
10
|
+
exports.toObject = toObject;
|
11
|
+
exports.isMap = isMap;
|
12
|
+
exports.assign = assign;
|
13
|
+
exports.ObjectWrappingMap = void 0;
|
14
|
+
|
15
|
+
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
16
|
+
|
17
|
+
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
18
|
+
|
19
|
+
var _customs = require("./customs.js");
|
20
|
+
|
21
|
+
var _is = require("./is.js");
|
22
|
+
|
23
|
+
function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
|
24
|
+
|
25
|
+
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
26
|
+
|
27
|
+
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
|
28
|
+
|
29
|
+
/**
|
30
|
+
* A map facade on a bare object.
|
31
|
+
*
|
32
|
+
* The small number of methods needed to implement a scope,
|
33
|
+
* forwarding on to the SafeProperty functions. Over time, the codebase
|
34
|
+
* will stop using this method, as all objects will be Maps, rather than
|
35
|
+
* more security prone objects.
|
36
|
+
*/
|
37
|
+
var ObjectWrappingMap = /*#__PURE__*/function () {
|
38
|
+
function ObjectWrappingMap(object) {
|
39
|
+
(0, _classCallCheck2["default"])(this, ObjectWrappingMap);
|
40
|
+
this.wrappedObject = object;
|
41
|
+
}
|
42
|
+
|
43
|
+
(0, _createClass2["default"])(ObjectWrappingMap, [{
|
44
|
+
key: "keys",
|
45
|
+
value: function keys() {
|
46
|
+
return Object.keys(this.wrappedObject);
|
47
|
+
}
|
48
|
+
}, {
|
49
|
+
key: "get",
|
50
|
+
value: function get(key) {
|
51
|
+
return (0, _customs.getSafeProperty)(this.wrappedObject, key);
|
52
|
+
}
|
53
|
+
}, {
|
54
|
+
key: "set",
|
55
|
+
value: function set(key, value) {
|
56
|
+
(0, _customs.setSafeProperty)(this.wrappedObject, key, value);
|
57
|
+
return this;
|
58
|
+
}
|
59
|
+
}, {
|
60
|
+
key: "has",
|
61
|
+
value: function has(key) {
|
62
|
+
return (0, _customs.hasSafeProperty)(this.wrappedObject, key);
|
63
|
+
}
|
64
|
+
}]);
|
65
|
+
return ObjectWrappingMap;
|
66
|
+
}();
|
67
|
+
/**
|
68
|
+
* Creates an empty map, or whatever your platform's polyfill is.
|
69
|
+
*
|
70
|
+
* @returns an empty Map or Map like object.
|
71
|
+
*/
|
72
|
+
|
73
|
+
|
74
|
+
exports.ObjectWrappingMap = ObjectWrappingMap;
|
75
|
+
|
76
|
+
function createEmptyMap() {
|
77
|
+
return new Map();
|
78
|
+
}
|
79
|
+
/**
|
80
|
+
* Creates a Map from the given object.
|
81
|
+
*
|
82
|
+
* @param { Map | { [key: string]: unknown } | undefined } mapOrObject
|
83
|
+
* @returns
|
84
|
+
*/
|
85
|
+
|
86
|
+
|
87
|
+
function createMap(mapOrObject) {
|
88
|
+
if (!mapOrObject) {
|
89
|
+
return createEmptyMap();
|
90
|
+
}
|
91
|
+
|
92
|
+
if (isMap(mapOrObject)) {
|
93
|
+
return mapOrObject;
|
94
|
+
}
|
95
|
+
|
96
|
+
if ((0, _is.isObject)(mapOrObject)) {
|
97
|
+
return new ObjectWrappingMap(mapOrObject);
|
98
|
+
}
|
99
|
+
|
100
|
+
throw new Error('createMap can create maps from objects or Maps');
|
101
|
+
}
|
102
|
+
/**
|
103
|
+
* Unwraps a map into an object.
|
104
|
+
*
|
105
|
+
* @param {Map} map
|
106
|
+
* @returns { [key: string]: unknown }
|
107
|
+
*/
|
108
|
+
|
109
|
+
|
110
|
+
function toObject(map) {
|
111
|
+
if (map instanceof ObjectWrappingMap) {
|
112
|
+
return map.wrappedObject;
|
113
|
+
}
|
114
|
+
|
115
|
+
var object = {};
|
116
|
+
|
117
|
+
var _iterator = _createForOfIteratorHelper(map.keys()),
|
118
|
+
_step;
|
119
|
+
|
120
|
+
try {
|
121
|
+
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
122
|
+
var key = _step.value;
|
123
|
+
var value = map.get(key);
|
124
|
+
(0, _customs.setSafeProperty)(object, key, value);
|
125
|
+
}
|
126
|
+
} catch (err) {
|
127
|
+
_iterator.e(err);
|
128
|
+
} finally {
|
129
|
+
_iterator.f();
|
130
|
+
}
|
131
|
+
|
132
|
+
return object;
|
133
|
+
}
|
134
|
+
/**
|
135
|
+
* Returns `true` if the passed object appears to be a Map (i.e. duck typing).
|
136
|
+
*
|
137
|
+
* Methods looked for are `get`, `set`, `keys` and `has`.
|
138
|
+
*
|
139
|
+
* @param {Map | object} object
|
140
|
+
* @returns
|
141
|
+
*/
|
142
|
+
|
143
|
+
|
144
|
+
function isMap(object) {
|
145
|
+
// We can use the fast instanceof, or a slower duck typing check.
|
146
|
+
// The duck typing method needs to cover enough methods to not be confused with DenseMatrix.
|
147
|
+
if (!object) {
|
148
|
+
return false;
|
149
|
+
}
|
150
|
+
|
151
|
+
return object instanceof Map || object instanceof ObjectWrappingMap || typeof object.set === 'function' && typeof object.get === 'function' && typeof object.keys === 'function' && typeof object.has === 'function';
|
152
|
+
}
|
153
|
+
/**
|
154
|
+
* Copies the contents of key-value pairs from each `objects` in to `map`.
|
155
|
+
*
|
156
|
+
* Object is `objects` can be a `Map` or object.
|
157
|
+
*
|
158
|
+
* This is the `Map` analog to `Object.assign`.
|
159
|
+
*/
|
160
|
+
|
161
|
+
|
162
|
+
function assign(map) {
|
163
|
+
for (var _len = arguments.length, objects = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
|
164
|
+
objects[_key - 1] = arguments[_key];
|
165
|
+
}
|
166
|
+
|
167
|
+
for (var _i = 0, _objects = objects; _i < _objects.length; _i++) {
|
168
|
+
var args = _objects[_i];
|
169
|
+
|
170
|
+
if (!args) {
|
171
|
+
continue;
|
172
|
+
}
|
173
|
+
|
174
|
+
if (isMap(args)) {
|
175
|
+
var _iterator2 = _createForOfIteratorHelper(args.keys()),
|
176
|
+
_step2;
|
177
|
+
|
178
|
+
try {
|
179
|
+
for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
|
180
|
+
var key = _step2.value;
|
181
|
+
map.set(key, args.get(key));
|
182
|
+
}
|
183
|
+
} catch (err) {
|
184
|
+
_iterator2.e(err);
|
185
|
+
} finally {
|
186
|
+
_iterator2.f();
|
187
|
+
}
|
188
|
+
} else if ((0, _is.isObject)(args)) {
|
189
|
+
for (var _i2 = 0, _Object$keys = Object.keys(args); _i2 < _Object$keys.length; _i2++) {
|
190
|
+
var _key2 = _Object$keys[_i2];
|
191
|
+
map.set(_key2, args[_key2]);
|
192
|
+
}
|
193
|
+
}
|
194
|
+
}
|
195
|
+
|
196
|
+
return map;
|
197
|
+
}
|
package/lib/cjs/utils/object.js
CHANGED
@@ -1,5 +1,7 @@
|
|
1
1
|
"use strict";
|
2
2
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
4
|
+
|
3
5
|
Object.defineProperty(exports, "__esModule", {
|
4
6
|
value: true
|
5
7
|
});
|
@@ -20,9 +22,9 @@ exports.pick = pick;
|
|
20
22
|
exports.pickShallow = pickShallow;
|
21
23
|
exports.values = values;
|
22
24
|
|
23
|
-
var
|
25
|
+
var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
|
24
26
|
|
25
|
-
|
27
|
+
var _is = require("./is.js");
|
26
28
|
|
27
29
|
/**
|
28
30
|
* Clone an object
|
@@ -36,8 +38,7 @@ function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "functi
|
|
36
38
|
* @return {*} clone
|
37
39
|
*/
|
38
40
|
function clone(x) {
|
39
|
-
var type =
|
40
|
-
|
41
|
+
var type = (0, _typeof2["default"])(x); // immutable primitive types
|
41
42
|
|
42
43
|
if (type === 'number' || type === 'string' || type === 'boolean' || x === null || x === undefined) {
|
43
44
|
return x;
|
@@ -212,7 +213,7 @@ function _deepFlatten(nestedObject, flattenedObject) {
|
|
212
213
|
if (hasOwnProperty(nestedObject, prop)) {
|
213
214
|
var value = nestedObject[prop];
|
214
215
|
|
215
|
-
if (
|
216
|
+
if ((0, _typeof2["default"])(value) === 'object' && value !== null) {
|
216
217
|
_deepFlatten(value, flattenedObject);
|
217
218
|
} else {
|
218
219
|
flattenedObject[prop] = value;
|
@@ -0,0 +1,33 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
4
|
+
value: true
|
5
|
+
});
|
6
|
+
exports.createSubScope = createSubScope;
|
7
|
+
|
8
|
+
var _map = require("./map.js");
|
9
|
+
|
10
|
+
/**
|
11
|
+
* Create a new scope which can access the parent scope,
|
12
|
+
* but does not affect it when written. This is suitable for variable definitions
|
13
|
+
* within a block node, or function definition.
|
14
|
+
*
|
15
|
+
* If parent scope has a createSubScope method, it delegates to that. Otherwise,
|
16
|
+
* creates an empty map, and copies the parent scope to it, adding in
|
17
|
+
* the remaining `args`.
|
18
|
+
*
|
19
|
+
* @param {Map} parentScope
|
20
|
+
* @param {...any} args
|
21
|
+
* @returns {Map}
|
22
|
+
*/
|
23
|
+
function createSubScope(parentScope) {
|
24
|
+
for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
|
25
|
+
args[_key - 1] = arguments[_key];
|
26
|
+
}
|
27
|
+
|
28
|
+
if (typeof parentScope.createSubScope === 'function') {
|
29
|
+
return _map.assign.apply(void 0, [parentScope.createSubScope()].concat(args));
|
30
|
+
}
|
31
|
+
|
32
|
+
return _map.assign.apply(void 0, [(0, _map.createEmptyMap)(), parentScope].concat(args));
|
33
|
+
}
|