overwolf-async-types
v0.0.11
Published
Async, typed real-time wrapper for the Overwolf API based on the [official type definitions](https://github.com/overwolf/types).
Downloads
178
Readme
overwolf-async-types
Async, typed real-time wrapper for the Overwolf API based on the official type definitions.
Installation
To install, run:
npm install overwolf-async-types
Bear in mind that this will take a while as the new type definitions are generated upon installation.
Usage
- Add the types to your
tsconfig.json
file:
{
"compilerOptions": {
"types": [
"overwolf-async-types"
]
}
}
- Call the
promisify
method before using the Overwolf API:
import { promisify } from 'overwolf-async-types';
promisify();
- Consume the API using Promises:
const res = await overwolf.windows.obtainDeclaredWindow('main');
- (optional) Refetch and rebuild definitions:
npx generateOverwolfAsyncTypes
How Does It Work
- Fetches the latest d.ts files from Overwolf's repo
- Iterates over the types inside
overwolf.d.ts
and updates them to use Promises, also updates JSDoc accordingly. - Generates promisify code into
promisify.js
- this code traverses the Overwolf API during runtime and wraps relevant functions in a Promise. It also changes all const enums into regular enums to increase compatibility.
Notes
- After installing/updating/rebuilding, restart your IDE/Typescript Server/ESLint Server to ensure you're working with the newly built definitions.
- To prevent conflicts, make sure to remove Overwolf's types library (
@overwolf/types
). If you want a solution that uses@overwolf/types
instead of fetching the files, make a PR. - Some Overwolf functions are readonly (e.g.
overwolf.io.dir
) - Those functions are kept intact, and new functions with anAsync
suffix are added (e.g.overwolf.io.dirAsync
) - Currently it seems that the official definitions file is not fully up-to-date with the actual API. If you find any discrepancies, open a PR on Overwolf's repo. I have contacted Overwolf and they are working on a way to generate the types out of their codebase to ensure coherence.
- This repo was created to serve my needs - it's not guaranteed to work for you OOTB. If you encounter any issues, don't hesitate to either open an issue or create a PR.
- Currently I'm only traversing
overwolf.d.ts
, if you feel the need to traverse the other files, open an issue/PR.