UNPKG

talib-web

Version:

TA-Lib C code ported to WebAssembly

138 lines (91 loc) 3.67 kB
# talib-web [TA-Lib](https://ta-lib.org/), 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](https://github.com/hackape/talib.js),and make some changes to using it easier. ## Installation ``` npm install --save talib-web ``` ## Usage ### Normal ```js 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: ```js 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: ```js { output: [ 2, 4, 6, 8, 10, 12, 14, 16, 18, 20 ] } ``` ### Use TAFuncs object ```js 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](https://github.com/TypeStrong/typedoc) and hosted on [GitHub Pages](https://github.com/ancheGT/talib-web/tree/gh-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](https://emscripten.org/docs/getting_started/downloads.html) - npm ```sh npm install typescript -g npm install ``` **build:** ```sh 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`.