blob: 4b5288ed5142dfe5b4d7a2d67971554bb4b7f067 [file] [log] [blame]
// Copyright 2015 The Vanadium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
/**
* @summary Namespace vdl defines the Vanadium Definition Language type and
* value system.
*
* @description
* <p>Namespace vdl defines the Vanadium Definition Language type and value
* system.</p>
*
* <p>VDL is an interface definition language designed to enable interoperation
* between clients and servers executing in heterogeneous environments. E.g. it
* enables a frontend written in Javascript running on a phone to communicate
* with a backend written in Go running on a server. VDL is compiled into an
* intermediate representation that is used to generate code in each target
* environment.</p>
*
* <p>The concepts in VDL are similar to the concepts used in general-purpose
* languages to specify interfaces and communication protocols.</p>
*
* @namespace
* @name vdl
* @memberof module:vanadium
*/
module.exports = {
Kind: require('./kind'),
Types: require('./types'),
BigInt: require('./big-int'),
/**
* Namespace of utilities to canonicalize vdl types
* for use in encoding and decoding values.
* @namespace
* @memberof module:vanadium.vdl
*/
Canonicalize: require('./canonicalize'),
Complex: require('./complex'),
/**
* Type registry that contains a mapping of vdl types
* to constructors
* @property {module:vanadium.vdl~Registry}
* @memberof module:vanadium.vdl
*/
Registry: require('./registry'),
Type: require('./type'),
};
/**
* @namespace
* @name signature
* @memberof module:vanadium.vdl
*/
module.exports.signature = require('../gen-vdl/v.io/v23/vdlroot/signature');
/**
* @namespace
* @name time
* @memberof module:vanadium.vdl
*/
module.exports.time = require('../gen-vdl/v.io/v23/vdlroot/time');
require('./es6-shim.js'); // If necessary, adds ES6 Map, Set, etc.