- 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/compodocfor API documentation - https://compodoc.app/Jasminefor test cases - https://jasmine.github.io/Karmafor running test cases in browsers - http://karma-runner.github.io/rollupfor bundling - 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
<Project Folder>
├── LICENSE.md
├── README.md
├── bin/ -- Scripts invoked from `npm` tasks
├── bundles/ -- Generated UMD bundles for browsers (generated)
├── esm6/ -- Generated ES2020 modules (generated)
├── index.d.ts
├── package-lock.json
├── package.json
├── rabbitmq/
│ └── Dockerfile -- Builds a Docker image used to run tests
├── rollup.config.mjs -- Rollup bundler configuration
├── spec/ -- Test cases
│ ├── helpers/ -- Shared test utilities and factory functions
│ ├── karma.conf.js -- Karma test runner configuration
│ └── unit/ -- Test cases using Jasmine
├── src/ -- TypeScript sources
└── tsconfig.json
- A Stomp broker is used for running the tests. I have been using RabbitMQ.
- Edit
spec/helpers/rx-stomp-factory.tsas per your setup. Defaults should work for as 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 a text, you will need to tell
it is 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 build artifacts (bundles/, esm6/)
build - Compile TypeScript to esm6/ and bundle to bundles/
karma - Run tests in browsers (Chrome and Firefox headless)
lint - Run eslint
prettier - Format source files
- Checkout a new branch of
develop. - Make code changes (src/specs)
- Build:
$ npm run build
- Run tests:
- To run tests using Headless Chrome:
$ npm run karma
- To run code style check
$ npm run lint
- To run tests using Headless Chrome:
- Documentation is generated centrally for
stompjsandrx-stomp. Follow required https://compodoc.app/ standards in comments.
- Please exclude generated files from the commit
(
bundlesandesm6folders). These will be generated during merge and release process. - Please ensure that following passes successfully:
$ npm run lint $ npm run karma
- Please follow GitHub guidelines to raise a PR against
developbranch. - GitHub actions will run tests against a freshly installed RabbitMQ.
- Raise an issue if you are unclear.