https://github.com/simonschick/elitedangerousutils
A few scripts for Elite: Dangerous
https://github.com/simonschick/elitedangerousutils
api dangerous elite frontier
Last synced: about 1 year ago
JSON representation
A few scripts for Elite: Dangerous
- Host: GitHub
- URL: https://github.com/simonschick/elitedangerousutils
- Owner: SimonSchick
- License: mit
- Created: 2017-02-18T05:25:25.000Z (over 9 years ago)
- Default Branch: master
- Last Pushed: 2022-12-07T22:01:54.000Z (over 3 years ago)
- Last Synced: 2024-04-14T05:10:54.735Z (about 2 years ago)
- Topics: api, dangerous, elite, frontier
- Language: TypeScript
- Size: 296 KB
- Stars: 4
- Watchers: 4
- Forks: 2
- Open Issues: 5
-
Metadata Files:
- Readme: readme.md
- Changelog: changelog.md
- License: LICENSE
Awesome Lists containing this project
README
# elite-dangerous-utils
[](https://badge.fury.io/js/elite-dangerous-utils)
Collection of components that allow interacting with [Elite: Dangerous JSON Log JSON API](https://forums.frontier.co.uk/attachment.php?attachmentid=112608&d=1477509102])
and the Companion API.
#### I strongly suggest using typescript for consumption of this library.
#### Due to the amount of different objects and log types not all typings may be available, feel free to make a pull request!
# EDLog
EDLog is a basic `EventEmitter` that acts as a wrapper around
that handles log rotation, parsing and handling of their events.
It can also act as a backlog reader.
EDLog is very simple to bootstrap as it takes care of pathing too.
Please mind that events may be delayed by about 100ms as the log is polled.
## Compatibility
**Only runs on Windows right now, sorry.**
### Simple demo
```typescript
import { EDLog, locations } from 'elite-dangerous-utils';
const log = new EDLog();
log.on('event:ReceiveText', event => {
switch (event.Channel) {
case 'npc':
console.log(`Message from: ${event.From_Localised || event.From}: ${event.Message_Localised}`);
break;
case 'player':
console.log(`Direct message from: ${event.From.substr(1)}: ${event.Message}`);
break;
case 'local':
if (event.From_Localised.startsWith('CMDR')) {
console.log(`Message from ${event.From_Localised.replace('Commander ', '')}: ${event.Message}`);
break;
}
console.log(`Message from ${event.From.substr(1)}: ${event.Message}`);
break;
}
});
log.on('event:Bounty', event => {
console.log(`Killed ${event.Target} for ${event.TotalReward} `);
});
log.on('file', ev => console.log(ev.file))
log.on('event', ev => console.log(ev));
log.start();
```
./
For a more complex demo see [demo folder](demo).
### Events
- `event:*`: Emitted for each log event as documented in the [Spec](https://forums.frontier.co.uk/attachment.php?attachmentid=112608&d=1477509102]) and possibly more.
- [TS] Some events may not be explicitly typed, in these cases please us the generic form and create a pull request.
- The `timestamp` property is replaced by a `Date` object for ease of use.
- `event`: Catch-all listener for ALL events.
- `file`: Emitted when a log rotation occurs
- `file`: The file path of the new file.
- `warn`: Emits an error object.
For all other docs please see the `.ts` files.
---
# EDCompanionAPI
EDCompanionAPI is a basic is a basic client wrapper around their companion API that handles login and requests but still requires user credentials.
Please use this with care, avoid too many requests to Frontiers API and avoid logging in too often.
### Simple demo
```typescript
import { EDCompanionAPI } from 'elite-dangerous-utils';
import * as FileCookieStore from 'tough-cookie-filestore';
import { createInterface } from 'readline';
function readLineAsync (prompt: string): Promise {
return new Promise(resolve => {
const int = createInterface(process.stdin, process.stdout);
int.question(prompt, response => {
int.close();
resolve(response);
});
});
}
const api = new EDCompanionAPI(new FileCookieStore('cookies.json'), {
getLogin () {
return {
email: 'my@awesomeemail.com',
password: 'XxXelitehaxxorXxX',
};
},
getCode () {
return readLineAsync('Please enter code: ');
}
});
api.getProfile()
.then(console.log)
.catch(console.error);
```
For a _slighty_ more complex demo see [demo folder](demo).
### Docs
Due to the size of the schema of this API, please refer to the `.ts` files, most types should be documented.