Skip to content

Commit

Permalink
refactor: sync with upstream common.js
Browse files Browse the repository at this point in the history
  • Loading branch information
dsrkafuu committed Dec 7, 2021
1 parent e6d0117 commit df88e19
Show file tree
Hide file tree
Showing 11 changed files with 195 additions and 242 deletions.
71 changes: 23 additions & 48 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
![BADGE](https://img.shields.io/npm/dm/ffxiv-overlay-api)
![BADGE](https://img.shields.io/npm/l/ffxiv-overlay-api)

Build your own modern FFXIV overlay with npm.
Build your own modern FFXIV overlay with npm & TypeScript support.

This library needs to be used along with [ngld/OverlayPlugin](https://github.com/ngld/OverlayPlugin).

Expand All @@ -32,10 +32,7 @@ Or import the library from jsDelivr CDN:
```html
<script src="https://cdn.jsdelivr.net/npm/ffxiv-overlay-api@4/lib/overlay.min.js"></script>
<script>
const overlay = new OverlayAPI({
extendData: true,
silentMode: false,
});
const overlay = new window.OverlayAPI();
</script>
```

Expand All @@ -48,21 +45,9 @@ import OverlayAPI from 'ffxiv-overlay-api';
const overlay = new OverlayAPI();
```

Note that this library only works in browser.

You can also pass options to constructor (default option below):

```js
const overlay = new OverlayAPI({
extendData: true,
silentMode: false,
});
```

Then you can add bunch of different listeners.

```js
const overlay = new OverlayAPI();
overlay.addListener('CombatData', (data) => {
console.log('listener of `CombatData`', data);
});
Expand All @@ -83,74 +68,64 @@ After that, put the URL of your overlay into OverlayPlugin, or use the WebSocket

Checkout [Development](#development) section for more details and my new overlay [Skyline Overlay](https://github.com/dsrkafuu/skyline-overlay) for example.

## Options

| Option | Default | Description |
| ------------ | ------- | ------------------------------------------------------- |
| `extendData` | `true` | Parse and add cleaner data to listeners of `CombatData` |
| `silentMode` | `false` | For production use, do not log all API stats info |
| `seperateLB` | `false` | Separate Limit Break data from Combatant data |

## API

You can find all events available in <https://ngld.github.io/OverlayPlugin/devs/event_types>.

### `new OverlayAPI().addListener(event, cb)`
### `addListener`

`addListener(event: EventType, cb: EventCallback): void;`

add an event listener

- `@param {EventType} event` event to listen
- `@param {Function} cb` callback function
### `removeListener`

### `new OverlayAPI().removeListener(event, cb)`
`removeListener(event: EventType, cb: EventCallback): void;`

remove a listener

- `@param {EventType} event` event type which listener belongs to
- `@param {Function} cb` function which listener to remove
### `removeAllListener`

### `new OverlayAPI().removeAllListener(event)`
`removeAllListener(event: EventType): void;`

remove all listener of one event type

- `@param {EventType} event` event type which listener belongs to
### `getAllListener`

### `new OverlayAPI().getAllListener(event)`
`getAllListener(event: EventType): EventCallback[];`

get all listeners of a event

- `@param {EventType} event` event type which listener belongs to
- `@return {Array<Function>}`
### `startEvent`

### `new OverlayAPI().startEvent()`
`startEvent(): void;`

start listening event

### `new OverlayAPI().endEncounter()`
### `endEncounter`

`endEncounter(): Promise<void>;`

ends current encounter and save it

- `@return {Promise<any>}`
### `callHandler`

### `new OverlayAPI().callHandler(msg)`
`callHandler(msg: any): Promise<any>;`

this function allows you to call an overlay handler, these handlers are declared by Event Sources, either built into OverlayPlugin or loaded through addons like Cactbot
This function allows you to call an overlay handler, these handlers are declared by Event Sources, either built into OverlayPlugin or loaded through addons like Cactbot.

- `@param {HandlerMessage} msg` message send to OverlayPlugin
- `@return {Promise<EventMessage>}`
### `simulateData`

### `new OverlayAPI().simulateData(msg)`
`simulateData(data: EventData): void;`

simulate triggering event once

- `@param {EventMessage} msg` data same as those from OverlayPluginApi like in <https://github.com/dsrkafuu/ffxiv-overlay-api/tree/master/test>
### `OverlayAPI.mergeCombatant`

### `OverlayAPI.mergeCombatant(...args)`
`mergeCombatant(...args: CombatantData[]): CombatantData | null;`

static function for merging combatant like pets into first player arg

- `@param {...CombatantData} args`

## Development

Clone this repo, then:
Expand Down
4 changes: 2 additions & 2 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 3 additions & 3 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "ffxiv-overlay-api",
"version": "4.1.0-beta.6",
"description": "Build your own modern FFXIV overlay with npm.",
"version": "4.1.0-beta.7",
"description": "Build your own modern FFXIV overlay with npm & TypeScript support.",
"keywords": [
"ffxiv",
"act",
Expand Down Expand Up @@ -30,7 +30,7 @@
"eslint": "eslint --ext \".js,.ts\" \"./src\"",
"prettier": "prettier --write .",
"typecheck": "tsc",
"compile:esm": "esbuild \"./src/index.ts\" --bundle --outfile=\"./lib/index.js\" --format=esm --sourcemap --target=esnext",
"compile:esm": "esbuild \"./src/index.ts\" --bundle --outfile=\"./lib/index.js\" --format=esm --sourcemap --target=es6",
"compile:iife": "esbuild \"./src/index.ts\" --bundle --outfile=\"./lib/overlay.min.js\" --format=iife --sourcemap --minify --target=es6",
"compile": "run-p compile:esm compile:iife",
"dev:build": "esbuild \"./src/index.ts\" --bundle --outfile=\"./lib/overlay.min.js\" --format=iife --sourcemap --target=es6 --watch",
Expand Down
2 changes: 1 addition & 1 deletion src/common.js
Original file line number Diff line number Diff line change
Expand Up @@ -119,7 +119,7 @@ Please register your listeners before calling startOverlayEvents().`);

if (ws) {
msg.rseq = rseqCounter++;
p = new Promise((resolve, reject) => {
p = new Promise((resolve) => {
responsePromises[msg.rseq] = resolve;
});

Expand Down
7 changes: 2 additions & 5 deletions src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,15 +8,12 @@ export { OverlayAPI };
export default OverlayAPI;

export type {
OverlayOptions,
JobType,
EncounterData,
LimitBreakData,
CombatantData,
ExtendData,
EventType,
EventMessage,
EventData,
EventCallback,
HandlerType,
HandlerMessage,
JobType,
} from './types';
18 changes: 5 additions & 13 deletions src/modules/extendData.ts → src/modules/injectExtendData.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import {
CombatantData,
EncounterData,
LimitBreakData,
EventMessage,
EventData,
ExtendData,
} from '../types';
import { getPctNum } from '../utils/getter';
Expand Down Expand Up @@ -197,7 +197,7 @@ function parseLimitBreak(data: any): LimitBreakData {
/**
* inject extended data
*/
function extendData(data: EventMessage, seperateLB: boolean): EventMessage {
function injectExtendData(data: EventData): EventData {
if (data.type === 'CombatData') {
// common data
const parsedData: ExtendData = {
Expand All @@ -213,17 +213,9 @@ function extendData(data: EventMessage, seperateLB: boolean): EventMessage {
);
combatantValidKeys.forEach((key) => {
if (key === 'Limit Break') {
const cbt = parseLimitBreak(data.Combatant[key]);
if (!Number.isNaN(cbt.dps) && !Number.isNaN(cbt.hps)) {
seperateLB
? (parsedData.limitBreak = cbt)
: parsedData.combatant.push(cbt);
}
parsedData.limitBreak = parseLimitBreak(data.Combatant[key]);
} else {
const cbt = parsePlayer(data.Combatant[key]);
if (!Number.isNaN(cbt.dps) && !Number.isNaN(cbt.hps)) {
parsedData.combatant.push(cbt);
}
parsedData.combatant.push(parsePlayer(data.Combatant[key]));
}
});

Expand All @@ -232,4 +224,4 @@ function extendData(data: EventMessage, seperateLB: boolean): EventMessage {
return data;
}

export default extendData;
export default injectExtendData;
Loading

0 comments on commit df88e19

Please sign in to comment.