UNPKG

ts-nodecg

Version:

Type your nodecg with bundle specific defintion

91 lines (68 loc) 1.84 kB
# ts-nodecg [![CircleCI](https://circleci.com/gh/Hoishin/ts-nodecg.svg?style=svg)](https://circleci.com/gh/Hoishin/ts-nodecg) Type your bundle with bundle specific definition like replicants and messages. This library replaces the type definition in NodeCG core (`nodecg/types/{browser,server}.d.ts`). If you use this library, don't use the type definition in NodeCG core. ## Install ```sh npm i -D ts-nodecg # or yarn add -D ts-nodecg ``` **TypeScript 3.5 or newer is recommended** ## Usage First, define your bundle's replicant and messages. ```ts type ReplicantMap = { players: Array<{name: string; twitter: string}>; // ... }; type MessageMap = { updateFoo: { // optional value to send with sendMessage / value to receive from listenFor data: number; // optional value to receive from sendMessage / value to send with listenFor callback result: number; // optional error object/value sent from listenFor callback error: CustomError; }; }; ``` ### For server-side (extension) ```ts import {CreateNodecgInstance} from 'ts-nodecg/server'; type NodeCG = CreateNodecgInstance< 'my-bundle', // name of your bundle BundleConfig, ReplicantMap, MessageMap >; export = (nodecg: NodeCG) => { // ... }; ``` ### For client-side (dashboard/graphics) Define the global `nodecg`/`NodeCG` variables somewhere in the project. ```ts import {CreateNodecgInstance, CreateNodecgConstructor} from 'ts-nodecg/browser'; declare global { interface Window { nodecg: CreateNodecgInstance< 'my-bundle', // name of your bundle BundleConfig, ReplicantMap, MessageMap >; NodeCG: CreateNodecgConstructor< 'my-bundle', // name of your bundle BundleConfig, ReplicantMap, MessageMap >; } } ``` ### Exposing your bundle's definition Coming Soon&trade; ## License MIT &copy; Keiichiro Amemiya