mirror of
https://github.com/titanscouting/tra-analysis.git
synced 2025-01-19 11:25:56 +00:00
400 lines
9.1 KiB
JavaScript
400 lines
9.1 KiB
JavaScript
|
"use strict";
|
||
|
module.exports = common;
|
||
|
|
||
|
var commonRe = /\/|\./;
|
||
|
|
||
|
/**
|
||
|
* Provides common type definitions.
|
||
|
* Can also be used to provide additional google types or your own custom types.
|
||
|
* @param {string} name Short name as in `google/protobuf/[name].proto` or full file name
|
||
|
* @param {Object.<string,*>} json JSON definition within `google.protobuf` if a short name, otherwise the file's root definition
|
||
|
* @returns {undefined}
|
||
|
* @property {INamespace} google/protobuf/any.proto Any
|
||
|
* @property {INamespace} google/protobuf/duration.proto Duration
|
||
|
* @property {INamespace} google/protobuf/empty.proto Empty
|
||
|
* @property {INamespace} google/protobuf/field_mask.proto FieldMask
|
||
|
* @property {INamespace} google/protobuf/struct.proto Struct, Value, NullValue and ListValue
|
||
|
* @property {INamespace} google/protobuf/timestamp.proto Timestamp
|
||
|
* @property {INamespace} google/protobuf/wrappers.proto Wrappers
|
||
|
* @example
|
||
|
* // manually provides descriptor.proto (assumes google/protobuf/ namespace and .proto extension)
|
||
|
* protobuf.common("descriptor", descriptorJson);
|
||
|
*
|
||
|
* // manually provides a custom definition (uses my.foo namespace)
|
||
|
* protobuf.common("my/foo/bar.proto", myFooBarJson);
|
||
|
*/
|
||
|
function common(name, json) {
|
||
|
if (!commonRe.test(name)) {
|
||
|
name = "google/protobuf/" + name + ".proto";
|
||
|
json = { nested: { google: { nested: { protobuf: { nested: json } } } } };
|
||
|
}
|
||
|
common[name] = json;
|
||
|
}
|
||
|
|
||
|
// Not provided because of limited use (feel free to discuss or to provide yourself):
|
||
|
//
|
||
|
// google/protobuf/descriptor.proto
|
||
|
// google/protobuf/source_context.proto
|
||
|
// google/protobuf/type.proto
|
||
|
//
|
||
|
// Stripped and pre-parsed versions of these non-bundled files are instead available as part of
|
||
|
// the repository or package within the google/protobuf directory.
|
||
|
|
||
|
common("any", {
|
||
|
|
||
|
/**
|
||
|
* Properties of a google.protobuf.Any message.
|
||
|
* @interface IAny
|
||
|
* @type {Object}
|
||
|
* @property {string} [typeUrl]
|
||
|
* @property {Uint8Array} [bytes]
|
||
|
* @memberof common
|
||
|
*/
|
||
|
Any: {
|
||
|
fields: {
|
||
|
type_url: {
|
||
|
type: "string",
|
||
|
id: 1
|
||
|
},
|
||
|
value: {
|
||
|
type: "bytes",
|
||
|
id: 2
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
});
|
||
|
|
||
|
var timeType;
|
||
|
|
||
|
common("duration", {
|
||
|
|
||
|
/**
|
||
|
* Properties of a google.protobuf.Duration message.
|
||
|
* @interface IDuration
|
||
|
* @type {Object}
|
||
|
* @property {number|Long} [seconds]
|
||
|
* @property {number} [nanos]
|
||
|
* @memberof common
|
||
|
*/
|
||
|
Duration: timeType = {
|
||
|
fields: {
|
||
|
seconds: {
|
||
|
type: "int64",
|
||
|
id: 1
|
||
|
},
|
||
|
nanos: {
|
||
|
type: "int32",
|
||
|
id: 2
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
});
|
||
|
|
||
|
common("timestamp", {
|
||
|
|
||
|
/**
|
||
|
* Properties of a google.protobuf.Timestamp message.
|
||
|
* @interface ITimestamp
|
||
|
* @type {Object}
|
||
|
* @property {number|Long} [seconds]
|
||
|
* @property {number} [nanos]
|
||
|
* @memberof common
|
||
|
*/
|
||
|
Timestamp: timeType
|
||
|
});
|
||
|
|
||
|
common("empty", {
|
||
|
|
||
|
/**
|
||
|
* Properties of a google.protobuf.Empty message.
|
||
|
* @interface IEmpty
|
||
|
* @memberof common
|
||
|
*/
|
||
|
Empty: {
|
||
|
fields: {}
|
||
|
}
|
||
|
});
|
||
|
|
||
|
common("struct", {
|
||
|
|
||
|
/**
|
||
|
* Properties of a google.protobuf.Struct message.
|
||
|
* @interface IStruct
|
||
|
* @type {Object}
|
||
|
* @property {Object.<string,IValue>} [fields]
|
||
|
* @memberof common
|
||
|
*/
|
||
|
Struct: {
|
||
|
fields: {
|
||
|
fields: {
|
||
|
keyType: "string",
|
||
|
type: "Value",
|
||
|
id: 1
|
||
|
}
|
||
|
}
|
||
|
},
|
||
|
|
||
|
/**
|
||
|
* Properties of a google.protobuf.Value message.
|
||
|
* @interface IValue
|
||
|
* @type {Object}
|
||
|
* @property {string} [kind]
|
||
|
* @property {0} [nullValue]
|
||
|
* @property {number} [numberValue]
|
||
|
* @property {string} [stringValue]
|
||
|
* @property {boolean} [boolValue]
|
||
|
* @property {IStruct} [structValue]
|
||
|
* @property {IListValue} [listValue]
|
||
|
* @memberof common
|
||
|
*/
|
||
|
Value: {
|
||
|
oneofs: {
|
||
|
kind: {
|
||
|
oneof: [
|
||
|
"nullValue",
|
||
|
"numberValue",
|
||
|
"stringValue",
|
||
|
"boolValue",
|
||
|
"structValue",
|
||
|
"listValue"
|
||
|
]
|
||
|
}
|
||
|
},
|
||
|
fields: {
|
||
|
nullValue: {
|
||
|
type: "NullValue",
|
||
|
id: 1
|
||
|
},
|
||
|
numberValue: {
|
||
|
type: "double",
|
||
|
id: 2
|
||
|
},
|
||
|
stringValue: {
|
||
|
type: "string",
|
||
|
id: 3
|
||
|
},
|
||
|
boolValue: {
|
||
|
type: "bool",
|
||
|
id: 4
|
||
|
},
|
||
|
structValue: {
|
||
|
type: "Struct",
|
||
|
id: 5
|
||
|
},
|
||
|
listValue: {
|
||
|
type: "ListValue",
|
||
|
id: 6
|
||
|
}
|
||
|
}
|
||
|
},
|
||
|
|
||
|
NullValue: {
|
||
|
values: {
|
||
|
NULL_VALUE: 0
|
||
|
}
|
||
|
},
|
||
|
|
||
|
/**
|
||
|
* Properties of a google.protobuf.ListValue message.
|
||
|
* @interface IListValue
|
||
|
* @type {Object}
|
||
|
* @property {Array.<IValue>} [values]
|
||
|
* @memberof common
|
||
|
*/
|
||
|
ListValue: {
|
||
|
fields: {
|
||
|
values: {
|
||
|
rule: "repeated",
|
||
|
type: "Value",
|
||
|
id: 1
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
});
|
||
|
|
||
|
common("wrappers", {
|
||
|
|
||
|
/**
|
||
|
* Properties of a google.protobuf.DoubleValue message.
|
||
|
* @interface IDoubleValue
|
||
|
* @type {Object}
|
||
|
* @property {number} [value]
|
||
|
* @memberof common
|
||
|
*/
|
||
|
DoubleValue: {
|
||
|
fields: {
|
||
|
value: {
|
||
|
type: "double",
|
||
|
id: 1
|
||
|
}
|
||
|
}
|
||
|
},
|
||
|
|
||
|
/**
|
||
|
* Properties of a google.protobuf.FloatValue message.
|
||
|
* @interface IFloatValue
|
||
|
* @type {Object}
|
||
|
* @property {number} [value]
|
||
|
* @memberof common
|
||
|
*/
|
||
|
FloatValue: {
|
||
|
fields: {
|
||
|
value: {
|
||
|
type: "float",
|
||
|
id: 1
|
||
|
}
|
||
|
}
|
||
|
},
|
||
|
|
||
|
/**
|
||
|
* Properties of a google.protobuf.Int64Value message.
|
||
|
* @interface IInt64Value
|
||
|
* @type {Object}
|
||
|
* @property {number|Long} [value]
|
||
|
* @memberof common
|
||
|
*/
|
||
|
Int64Value: {
|
||
|
fields: {
|
||
|
value: {
|
||
|
type: "int64",
|
||
|
id: 1
|
||
|
}
|
||
|
}
|
||
|
},
|
||
|
|
||
|
/**
|
||
|
* Properties of a google.protobuf.UInt64Value message.
|
||
|
* @interface IUInt64Value
|
||
|
* @type {Object}
|
||
|
* @property {number|Long} [value]
|
||
|
* @memberof common
|
||
|
*/
|
||
|
UInt64Value: {
|
||
|
fields: {
|
||
|
value: {
|
||
|
type: "uint64",
|
||
|
id: 1
|
||
|
}
|
||
|
}
|
||
|
},
|
||
|
|
||
|
/**
|
||
|
* Properties of a google.protobuf.Int32Value message.
|
||
|
* @interface IInt32Value
|
||
|
* @type {Object}
|
||
|
* @property {number} [value]
|
||
|
* @memberof common
|
||
|
*/
|
||
|
Int32Value: {
|
||
|
fields: {
|
||
|
value: {
|
||
|
type: "int32",
|
||
|
id: 1
|
||
|
}
|
||
|
}
|
||
|
},
|
||
|
|
||
|
/**
|
||
|
* Properties of a google.protobuf.UInt32Value message.
|
||
|
* @interface IUInt32Value
|
||
|
* @type {Object}
|
||
|
* @property {number} [value]
|
||
|
* @memberof common
|
||
|
*/
|
||
|
UInt32Value: {
|
||
|
fields: {
|
||
|
value: {
|
||
|
type: "uint32",
|
||
|
id: 1
|
||
|
}
|
||
|
}
|
||
|
},
|
||
|
|
||
|
/**
|
||
|
* Properties of a google.protobuf.BoolValue message.
|
||
|
* @interface IBoolValue
|
||
|
* @type {Object}
|
||
|
* @property {boolean} [value]
|
||
|
* @memberof common
|
||
|
*/
|
||
|
BoolValue: {
|
||
|
fields: {
|
||
|
value: {
|
||
|
type: "bool",
|
||
|
id: 1
|
||
|
}
|
||
|
}
|
||
|
},
|
||
|
|
||
|
/**
|
||
|
* Properties of a google.protobuf.StringValue message.
|
||
|
* @interface IStringValue
|
||
|
* @type {Object}
|
||
|
* @property {string} [value]
|
||
|
* @memberof common
|
||
|
*/
|
||
|
StringValue: {
|
||
|
fields: {
|
||
|
value: {
|
||
|
type: "string",
|
||
|
id: 1
|
||
|
}
|
||
|
}
|
||
|
},
|
||
|
|
||
|
/**
|
||
|
* Properties of a google.protobuf.BytesValue message.
|
||
|
* @interface IBytesValue
|
||
|
* @type {Object}
|
||
|
* @property {Uint8Array} [value]
|
||
|
* @memberof common
|
||
|
*/
|
||
|
BytesValue: {
|
||
|
fields: {
|
||
|
value: {
|
||
|
type: "bytes",
|
||
|
id: 1
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
});
|
||
|
|
||
|
common("field_mask", {
|
||
|
|
||
|
/**
|
||
|
* Properties of a google.protobuf.FieldMask message.
|
||
|
* @interface IDoubleValue
|
||
|
* @type {Object}
|
||
|
* @property {number} [value]
|
||
|
* @memberof common
|
||
|
*/
|
||
|
FieldMask: {
|
||
|
fields: {
|
||
|
paths: {
|
||
|
rule: "repeated",
|
||
|
type: "string",
|
||
|
id: 1
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
});
|
||
|
|
||
|
/**
|
||
|
* Gets the root definition of the specified common proto file.
|
||
|
*
|
||
|
* Bundled definitions are:
|
||
|
* - google/protobuf/any.proto
|
||
|
* - google/protobuf/duration.proto
|
||
|
* - google/protobuf/empty.proto
|
||
|
* - google/protobuf/field_mask.proto
|
||
|
* - google/protobuf/struct.proto
|
||
|
* - google/protobuf/timestamp.proto
|
||
|
* - google/protobuf/wrappers.proto
|
||
|
*
|
||
|
* @param {string} file Proto file name
|
||
|
* @returns {INamespace|null} Root definition or `null` if not defined
|
||
|
*/
|
||
|
common.get = function get(file) {
|
||
|
return common[file] || null;
|
||
|
};
|