ES2016 async/await (promise) enabled node module for the Holy Quran. Uses the Tanzil corpus: http://tanzil.net.
For detailed documentation, and code samples for how to use this module in your app or service please visit: https://tjaffri.github.io/quran-promise/.
The rest of this README
describes how you can clone this repo to get the source to develop/test locally. Contributions are very welcome!
First, set up your dev tools and node.js:
- Set up your favourite IDE. We use VSCode: https://code.visualstudio.com/ and you can configure this IDE as follows:
- Follow this useful article about JavaScript development in VSCode here, including how to debug.
- Set up linting in VSCode. You can install eslint globally via
npm install -g eslint
and then install the VSCodeeslint
extension. See here for more info. - Install Node.js (version 6.x or higher)
- Install Git: https://git-scm.com/download
Next, clone the repo and install dependencies.
$ git clone https://github.com/tjaffri/quran-promise
$ cd quran-promise
$ npm install
The quran data is in a sqllite database, and a known good version is checked in. Optionally, ff you want to re-generate it, please run:
npm run gendb
Finally, if you're new to Next Generation JavaScript you might want to brush up on the following resources:
- ES6 Training Course by Wes Bos
- You Don't Know JS: ES6 & Beyond by Kyle Simpson (Dec, 2015)
- Understand promises before you start using async/await
Run one, or a combination of the following commands to lint and test your code:
$ npm run lint # Lint the source code with ESLint (runs as part of CI build)
$ npm run lint:fix # Lint the source code with ESLint, using the --fix option to auto-fix some issues
$ npm test # Run unit tests with Mocha
$ npm run test:watch # Run unit tests with Mocha, and watch files for changes
$ npm run test:cover # Run unit tests with code coverage by Istanbul (runs as part of CI build)
$ npm run coveralls # Report code coverage to coveralls.io (runs as part of CI build)
To launch the documentation site, run:
$ npm install -g easystatic
$ npm run start:docs # Launches the docs site locally for testing
$ npm run publish:docs # Optionally, publishes the doc site to GitHub pages (runs as part of CI build)
Finally, to build and publish to npm, you need to run:
npm run build # Builds the source, transpiling via babel (runs as part of CI build)
cd dist # Publish from the dist folder
npm publish # Requires credentials allowed to publish to npm
With thanks, this module acknowledges and depends on the following resources:
- Tanzil project: http://tanzil.net/
- EveryAyah: http://everyayah.com/data/status.php
- The Babel Starter Kit, used to scaffold the initial version of this module: https://github.com/kriasoft/babel-starter-kit/
Finally, a HUGE callout to the similar npm module https://www.npmjs.com/package/quran. We ended up completely rewriting it, to support ES2016 async/await (promises), but got inspired by it. We also tried to keep the calling semantics as compatible as possible to aid anyone who might be migrating from that module.
MIT © 2016 Axis, the Information Professionals.