ts-nodecg

v0.3.1
Type your nodecg with bundle specific defintion
nodecg typescript

ts-nodecg

CircleCI

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

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.

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)

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.

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™

License

MIT © Keiichiro Amemiya

npm i ts-nodecg

Metadata

  • MIT
  • Whatever
  • Keiichiro Amemiya
  • released 2/20/2020

Downloads

Maintainers