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
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
- run command:
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
.