Class: Root

Root

Root namespace wrapping all types, enums, services, sub-namespaces etc. that belong together.

new Root(options)

Constructs a new root namespace instance.

Name Type Description
options Object.<string, *> optional

Top level options

Extends

Members

comment { string | null }

Comment text, if any.

deferred { Field[] }

Deferred extension fields.

filename { string | null }

Defining file name.

files { string[] }

Resolved file names of loaded files.

fullName readonly{ string }

Full name including leading dot.

name { string }

Unique name within its namespace.

nested { Object<string, ReflectionObject> | undefined }

Nested objects by name.

nestedArray readonly{ ReflectionObject[] }

Nested objects of this namespace as an array for iteration.

options { Object<string, *> | undefined }

Options.

parent { Namespace | null }

Parent namespace.

resolved { boolean }

Whether already resolved or not.

root readonly{ Root }

Reference to the root namespace.

Methods

Root.fromJSON(json, root){ Root }

Loads a namespace descriptor into a root namespace.

Name Type Description
json INamespace

Nameespace descriptor

root Root optional

Root namespace, defaults to create a new one if omitted

Returns:
Type Description
Root Root namespace

Adds a nested object to this namespace.

Name Type Description
object ReflectionObject

Nested object to add

Throws:
  • Type Description
    TypeError

    If arguments are invalid

  • Type Description
    Error

    If there is already a nested object with this name

Returns:
Type Description
Namespace this

inherited addJSON(nestedJson){ Namespace }

Adds nested objects to this namespace from nested object descriptors.

Name Type Description
nestedJson Object.<string, AnyNestedObject>

Any nested object descriptors

Returns:
Type Description
Namespace this

inherited define(path, json){ Namespace }

Defines additial namespaces within this one if not yet existing.

Name Type Description
path string | Array.<string>

Path to create

json * optional

Nested types to create from JSON

Returns:
Type Description
Namespace Pointer to the last namespace created or this if path is empty

Gets the nested object of the specified name.

Name Type Description
name string

Nested object name

Returns:
Type Description
ReflectionObject | null The reflection object or null if it doesn't exist

inherited getEnum(name){ Object<string, number> }

Gets the values of the nested enum of the specified name.
This methods differs from get in that it returns an enum's values directly and throws instead of returning null.

Name Type Description
name string

Nested enum name

Throws:
Type Description
Error

If there is no such enum

Returns:
Type Description
Object.<string, number> Enum values

inherited getOption(name){ * }

Gets an option value.

Name Type Description
name string

Option name

Returns:
Type Description
* Option value or undefined if not set

load(filename, options, callback){ undefined }

Loads one or multiple .proto or preprocessed .json files into this root namespace and calls the callback.

Name Type Description
filename string | Array.<string>

Names of one or multiple files to load

options IParseOptions

Parse options

callback LoadCallback

Callback function

Returns:
Type Description
undefined

load(filename, callback){ undefined }

Loads one or multiple .proto or preprocessed .json files into this root namespace and calls the callback.

Name Type Description
filename string | Array.<string>

Names of one or multiple files to load

callback LoadCallback

Callback function

Returns:
Type Description
undefined

load(filename, options){ Promise<Root> }

Loads one or multiple .proto or preprocessed .json files into this root namespace and returns a promise.

Name Type Description
filename string | Array.<string>

Names of one or multiple files to load

options IParseOptions optional

Parse options. Defaults to parse.defaults when omitted.

Returns:
Type Description
Promise.<Root> Promise

loadSync(filename, options){ Root }

Synchronously loads one or multiple .proto or preprocessed .json files into this root namespace (node only).

Name Type Description
filename string | Array.<string>

Names of one or multiple files to load

options IParseOptions optional

Parse options. Defaults to parse.defaults when omitted.

Throws:
Type Description
Error

If synchronous fetching is not supported (i.e. in browsers) or if a file's syntax is invalid

Returns:
Type Description
Root Root namespace

inherited lookup(path, filterTypes, parentAlreadyChecked){ ReflectionObject | null }

Recursively looks up the reflection object matching the specified path in the scope of this namespace.

Name Type Default Description
path string | Array.<string>

Path to look up

filterTypes * | Array.<*>

Filter types, any combination of the constructors of protobuf.Type, protobuf.Enum, protobuf.Service etc.

parentAlreadyChecked boolean false optional

If known, whether the parent has already been checked

Returns:
Type Description
ReflectionObject | null Looked up object or null if none could be found

inherited lookup(path, parentAlreadyChecked){ ReflectionObject | null }

Looks up the reflection object at the specified path, relative to this namespace.

Name Type Default Description
path string | Array.<string>

Path to look up

parentAlreadyChecked boolean false optional

Whether the parent has already been checked

Returns:
Type Description
ReflectionObject | null Looked up object or null if none could be found

inherited lookupEnum(path){ Enum }

Looks up the values of the enum at the specified path, relative to this namespace.
Besides its signature, this methods differs from lookup in that it throws instead of returning null.

Name Type Description
path string | Array.<string>

Path to look up

Throws:
Type Description
Error

If path does not point to an enum

Returns:
Type Description
Enum Looked up enum

inherited lookupService(path){ Service }

Looks up the service at the specified path, relative to this namespace.
Besides its signature, this methods differs from lookup in that it throws instead of returning null.

Name Type Description
path string | Array.<string>

Path to look up

Throws:
Type Description
Error

If path does not point to a service

Returns:
Type Description
Service Looked up service

inherited lookupType(path){ Type }

Looks up the type at the specified path, relative to this namespace.
Besides its signature, this methods differs from lookup in that it throws instead of returning null.

Name Type Description
path string | Array.<string>

Path to look up

Throws:
Type Description
Error

If path does not point to a type

Returns:
Type Description
Type Looked up type

inherited lookupTypeOrEnum(path){ Type }

Looks up the type or enum at the specified path, relative to this namespace.
Besides its signature, this methods differs from lookup in that it throws instead of returning null.

Name Type Description
path string | Array.<string>

Path to look up

Throws:
Type Description
Error

If path does not point to a type or enum

Returns:
Type Description
Type Looked up type or enum

inherited onAdd(parent){ undefined }

Called when this object is added to a parent.

Name Type Description
parent ReflectionObject

Parent added to

Returns:
Type Description
undefined

inherited onRemove(parent){ undefined }

Called when this object is removed from a parent.

Name Type Description
parent ReflectionObject

Parent removed from

Returns:
Type Description
undefined

Removes a nested object from this namespace.

Name Type Description
object ReflectionObject

Nested object to remove

Throws:
  • Type Description
    TypeError

    If arguments are invalid

  • Type Description
    Error

    If object is not a member of this namespace

Returns:
Type Description
Namespace this

Resolves this objects type references.

Returns:
Type Description
ReflectionObject this

Resolves this namespace's and all its nested objects' type references. Useful to validate a reflection tree, but comes at a cost.

Returns:
Type Description
Namespace this

resolvePath(origin, target){ string | null }

Resolves the path of an imported file, relative to the importing origin.
This method exists so you can override it with your own logic in case your imports are scattered over multiple directories.

Name Type Description
origin string

The file name of the importing file

target string

The file name being imported

Returns:
Type Description
string | null Resolved path to target or null to skip the file

inherited setOption(name, value, ifNotSet){ ReflectionObject }

Sets an option.

Name Type Description
name string

Option name

value *

Option value

ifNotSet boolean optional

Sets the option only if it isn't currently set

Returns:
Type Description
ReflectionObject this

inherited setOptions(options, ifNotSet){ ReflectionObject }

Sets multiple options.

Name Type Description
options Object.<string, *>

Options to set

ifNotSet boolean optional

Sets an option only if it isn't currently set

Returns:
Type Description
ReflectionObject this

Converts this namespace to a namespace descriptor.

Returns:
Type Description
INamespace Namespace descriptor

inherited toString(){ string }

Converts this instance to its string representation.

Returns:
Type Description
string Class name[, space, full name]