Skip to main content

NodeCG

new NodeCG(bundle, socket)

Creates a new NodeCG API instance. It should never be necessary to use this constructor in a bundle, as NodeCG automatically injects a pre-made API instance.

NameTypeDescription
bundleobjectThe bundle object to build an API instance from.
socketobjectThe Socket.IO socket instance to communicate with.

Members​

(static) declaredReplicants​

An object containing references to all Replicants that have been declared in this window, sorted by bundle. E.g., NodeCG.declaredReplicants.myBundle.myRep

bundleConfig​

An object containing the parsed content of cfg/<bundle-name>.json, the contents of which are read once when NodeCG starts up. Used to quickly access per-bundle configuration properties.

(readonly) bundleGit​

Provides information about the current git status of this bundle, if found.

Properties​

NameTypeAttributesDescription
branchStringWhat branch this bundle is on.
hashStringThe full hash of the commit this bundle is on.
shortHashStringThe short hash of the commit this bundle is on.
dateDate<optional>The date of the commit this bundle is on.
messageString<optional>The message of the commit this bundle is on.

bundleName​

The name of the bundle which this NodeCG API instance is for.

bundleVersion​

The version (from package.json) of the bundle which this NodeCG API instance is for.

extensions​

Extension Only

This can only be used in code which runs on the server.

Object containing references to all other loaded extensions. To access another bundle's extension, it must be declared as a bundleDependency in your bundle's manifest.

bundles/my-bundle/package.json
{
"name": "my-bundle"
...
"bundleDependencies": {
"other-bundle": "^1.0.0"
}
}
bundles/my-bundle/extension.js
module.exports = function(nodecg) {
const otherBundle = nodecg.extensions['other-bundle'];
// Now I can use `otherBundle`!
}

Logger​

Type: Object

Provides easy access to the Logger class. Useful in cases where you want to create your own custom logger.

Events​

Extension Only

This can only be used in code which runs on the server.

In your extension code, there are several events emitted on the nodecg object that are available to listen to:

module.exports = function(nodecg) {
nodecg.on('extensionsLoaded', () => {
// all bundle extensions have finished loading
// this event is probably not that necessary because serverStarted is emitted shortly after
})

nodecg.on('serverStarted', () => {
// the web and socket.io servers have started and will accept connections
})

nodecg.on('serverStopping', () => {
// the server is shutting down and you can perform cleanup operations here
})

nodecg.on('login', (user) => {
// a user has logged in
// use Intellisense (autocomplete) to explore the other properties available on the `user` object
console.log(user.id, user.name);
});

nodecg.on('logout', (user) => {
// a user has logged out
// use Intellisense (autocomplete) to explore the other properties available on the `user` object
console.log(user.id, user.name);
});
}