Package Exports
- onigasm
- onigasm/lib/onigasm.wasm
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 (onigasm) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
Onigasm (OnigurumaASM)
WebAssembly
port of Oniguruma regex library.
Usage/API/Behaviour 100% same as node-oniguruma
port, tests are literally imported from node-oniguruma
repository for maximum compliance.
Of course, unlike node-oniguruma
, this library can't hook into roots of V8
and is therefore ~2 times slower than latter.
But don't loose faith! Searching for a string in a file* with 5839708 characters it only takes about ~260ms to process. Not bad if you ask me ;P
* File was taken from Microsoft/TypeScript/lib/typescriptServices.js
Instructions for porting your app to web
Install
npm i onigasm
Light it up
WASM must be loaded before you use any other feature like
OnigRegExp
orOnigScanner
// index.js (entry point)
import { loadWASM } from 'onigasm'
import App from './App'
(async () => {
await loadWASM('path/to/onigasm.wasm') // You can also pass ArrayBuffer of onigasm.wasm file
App.start()
})()
// `onigasm.wasm` file will be available at `onigasm/lib/onigasm.wasm` in `node_modules` of your project directory
Once loaded
onigasm
is a drop-in replacement foroniguruma
// app.js (rest of the app)
/** replace this */ import { OnigRegExp } from 'oniguruma'
/** with this */ import { OnigRegExp } from 'onigasm'
That's it!
To do
Passnode-oniguruma
tests- Code cleanup wherever possible
- Optimizations wherever possible
- Improve internal and public documentation