- File issues.
- Edit/write documentation.
- Submit pull requests.
- Test in different environments.
- Raise awareness.
Following tools are getting used:
TypeScriptas primary language - https://www.typescriptlang.org/Jasminefor test cases - https://jasmine.github.io/Karmafor running test cases in browsers - http://karma-runner.github.io/Rollupfor build - https://rollupjs.org/nodejsduring development - https://nodejs.org/npmfor dependency management, packaging and distribution - https://www.npmjs.com/gitfor version control - https://git-scm.com/
Instructions on setting up development environment:
- Install
nodeandnpm- https://nodejs.org/ - Checkout code from GitHub - you may fork the code first into your GitHub account.
- Use
npm ito install dependencies:$ npm i
Important files and folders:
<Project Folder>
├── LICENSE
├── README.md
├── bin/ -- Scripts invoked from `npm` tasks
├── esm6/ -- Generated ES6 modules
├── karma.conf.js
├── package-lock.json
├── package.json
├── rabbitmq/
│ └── Dockerfile -- This builds a docker image that is used to run test cases
├── spec/ -- These test cases run both for nodejs (using just Jasmine) and Chrome (Jasmine/Karma)
│ ├── config/ -- Slightly different setups for nodejs and Karma
│ ├── helpers/
│ ├── support/
│ │ └── jasmine.json -- Used only while running for nodejs
│ └── unit/ -- Test cases using Jasmine
│ └── compatibility/ -- Test cases to check compatibility mode
├── src/ -- Typescript sources
│ └── compatibility/ -- Code for compatibility mode
├── tsconfig.json
└── rollup.config.mjs
- A Stomp broker is used for running the tests. I have been using RabbitMQ.
- Edit
spec/config/browser-config.jsandspec/config/node-config.jsas per your setup. Defaults should work for RabbitMQ default setup on localhost. - Please note that in RabbitMQ you will need to enable Stomp and WebStomp plugins.
- By default RabbitMQ WebStomp will treat messages as text, you will need to tell
it to use binary frames:
$ echo 'web_stomp.ws_frame = binary' >> /etc/rabbitmq/rabbitmq.conf
- A RabbitMQ Dockerfile is provided with necessary plugins and configuration. To use it, run:
$ docker build -t myrabbitmq rabbitmq/ # Needed only once $ docker run -d -p 15674:15674 myrabbitmq # to start the broker
Key npm tasks:
- clean - Remove generated built artifacts
- build-tsc - Internally used by
npm run build - rollup - Internally used by
npm run build - build - Build two variants - ES Modules and UMD
- test - Run tests in NodeJS
- karma - Rune test in browsers
- Checkout a new branch.
- Make code changes (src/specs)
- Build:
$ npm run build
- Run tests:
- To run tests using nodejs:
$ npm run test - To run tests using Chrome:
$ npm run karma
- Caution: As both browser and nodejs use same set of test cases and same queue names. So, running both together may cause unexpected failures.
- To run tests using nodejs:
- Update documentation - do update Change-log.md
- Please follow GitHub guidelines. Raise an issue if you are unclear.