https://github.com/strg-at/behave.tracking-client-lib
STRG. beHave tracking-client library
https://github.com/strg-at/behave.tracking-client-lib
behave javascript library strg
Last synced: 7 months ago
JSON representation
STRG. beHave tracking-client library
- Host: GitHub
- URL: https://github.com/strg-at/behave.tracking-client-lib
- Owner: strg-at
- License: mit
- Created: 2020-06-18T13:49:49.000Z (over 5 years ago)
- Default Branch: master
- Last Pushed: 2025-01-31T10:41:34.000Z (9 months ago)
- Last Synced: 2025-03-11T06:11:12.763Z (7 months ago)
- Topics: behave, javascript, library, strg
- Language: JavaScript
- Homepage:
- Size: 1010 KB
- Stars: 0
- Watchers: 5
- Forks: 0
- Open Issues: 16
-
Metadata Files:
- Readme: README.md
- License: LICENSE
- Codeowners: CODEOWNERS
Awesome Lists containing this project
README
# BeHave Tracking Client
This library contains the BeHave tracking client, it is intended to use it inside a client application integration and not standalone.## Getting Started
### Prerequisites
- [Node 10](https://nodejs.org/)
- [NPM 6.4.1](https://www.npmjs.com/)## Specification
The tracking client library register in a global namespace and forward all valid events to the BeHave tracking websocket server, invalid events will be droped. The library communicates with [BeHave.tracking-service]().## How to use
### config
```javascript
const config = {
NAMESPACE: 'test',
ENDPOINT: ' wss://behave.test.at/ws/event',
RECONNECT_TIMEOUT: 60000,
CLIENT_STORAGE_NAMESPACE: 'test',
}
```### init
```javascript
import {
TrackerAPI,
TrackerService,
TrackerWS,
ClientStorage,
} from '@strg-behave/tracking-client-lib'const ws = new TrackerWS(config)
const storage = new ClientStorage(config)
const service = new TrackerService(ws, storage, config)
const api = new TrackerAPI(service, config)
```### track
The events can be send to the global namespace defined by `config.NAMESPACE`.
```javascript
// assume global namespace is `data`
data = data || []
let event = {
key: 'test', // required
value: 'test', // required
time: Date.now(), // optional
content: 'https://www.test.at', // optional keys will be passed as plain string
}
data.push(event)
```
Where `time` and `content` are optional parameters, `time` will be set (if not provided) inside tracking service layer. The value of `content` will be hashed as CRC32 checksum and passed to the WebSocket when set.## Development
### Installation
```bash
npm install
```### Testing
```bash
npm run test
```### Coverage Report
Starts an interactive http server on port `8888`.
```bash
npm run coverage```
### ESLint
To check the code syntax integrity according to our ESLint specification run:
```bash
npm run lint
```To autofix code syntax integrity run:
```bash
npm run lint:fix
```## Versioning
We use [SemVer](http://semver.org/) for versioning. For the versions available, see the tags on this repository.
To increase a version and tag in GIT run:
```bash
npm version major|minor|patch
```## Authors
* **Can Atesman** - *first implementation*
* **[Ralf Traunsteiner](mailto:ralf.traunsteiner@strg.at)** - *second implementation, rewritten most of the code parts and lot of improvements, starts decoupeling*
* **[Nils Müller](mailto:nils.mueller@strg.at)** - *reduced to tracking library functionality, reimplementation in layered architecture*