JSPM

talib-web

0.1.3
  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 22
  • Score
    100M100P100Q54898F
  • License BSD-3-Clause

TA-Lib C code ported to WebAssembly

Package Exports

  • talib-web
  • talib-web/lib/index.cjs.js
  • talib-web/lib/index.esm.js

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (talib-web) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

talib-web

TA-Lib, the technical analysis library written in C, ported to WebAssembly. Plus a nice API wrapper layer, typescript support and docs.

talib-web is based on talib.js,and make some changes to using it easier.

Installation

npm install --save talib-web

Usage

Normal

const talib = require("talib-web");

const inReal = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];

async function main() {
  await init(/* optionally pass in .wasm file path here */);
  console.log(talib.ADD({ inReal0: inReal, inReal1: inReal }));
}

main();

Or:

import { init, ADD } from "talib-web";

async function main() {
  await init(/* optionally pass in .wasm file path here */);
  const inReal = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
  console.log("talib.ADD result:", ADD({ inReal0: inReal, inReal1: inReal }));
}

main();

output:

{ output: [
    2,  4,  6,  8, 10,
  12, 14, 16, 18, 20
] }

Use TAFuncs object

import { init,  TAFuncs } from "talib-web";

async function main() {
  await init(/* optionally pass in .wasm file path here */);
  const inReal = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
  console.log("TAFuncs.ADD result:", TAFuncs.ADD({ inReal0: inReal, inReal1: inReal }));

  //you can call other talib function easily without import,just like TAFuncs.MA()
}

Documentation

Visit https://ancheGT.github.io/talib-web/

Docs are generated using typedoc and hosted on GitHub Pages.

Develop

develop environment:

  • OS: CentOS 7
  • node: v14.15.5
  • NPM: 6.14.11
  • emscripten: 2.0.34
  • tsc: 4.5.2

dependencies installation

  • emscripten

  • npm

    npm install typescript -g
    npm install

build:

make clean # clean temp
make

branchs

  • master-hackape: original repo of talib.js

  • master-new: current repo

  • gh-pages: github pages, after make branch master-new, copy the docs dir to this branch.It's relies on the setting of GitHub Pages -> Source

Troubleshooting:

  • in terminal, run make got: error while loading shared libraries: libatomic.so.1: cannot open shared obj

    • run command: yum -y install libatomic
  • in browser console,got:

    index.esm.js?80e5:561 
            
        Uncaught (in promise) RuntimeError: abort(CompileError: WebAssembly.instantiate(): expected magic word 00 61 73 6d, found 3c 21 44 4f @+0). Build with -s ASSERTIONS=1 for more info.
        at abort (webpack-internal:///./node_modules/talib-web/lib/index.esm.js:886)
        at eval (webpack-internal:///./node_modules/talib-web/lib/index.esm.js:962)
    index.esm.js?80e5:2146 
            
        Uncaught (in promise) Error: TA-Lib WASM runtime init fail.
    Error: 
    abort(CompileError: WebAssembly.instantiate(): expected magic word 00 61 73 6d, found 3c 21 44 4f @+0). Build with -s ASSERTIONS=1 for more info.
        at eval (webpack-internal:///./node_modules/talib-web/lib/index.esm.js:2471)
    • Pass a URL param to init,like this: await init("https://unpkg.com/talib-web@0.1.2/lib/talib.wasm");

    • You can host this file yourself if you like. It’s just a static asset, like a picture, nothing magical.

    • If you decide to host it, 2 things to check:

      • Make sure the URL is accessible from your origin, e.g. double check CORS config if involved.
      • Make sure the MIME type is correctly set to application/wasm.