mirror of
https://github.com/github/codeql-action.git
synced 2025-12-27 17:50:07 +08:00
Co-authored-by: Andrew Eisenberg <aeisenberg@github.com> Co-authored-by: Henry Mercer <henrymercer@github.com>
159 lines
6.2 KiB
JavaScript
159 lines
6.2 KiB
JavaScript
"use strict";
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
exports.readMessageOption = exports.readFieldOption = exports.readFieldOptions = exports.normalizeFieldInfo = exports.RepeatType = exports.LongType = exports.ScalarType = void 0;
|
|
const lower_camel_case_1 = require("./lower-camel-case");
|
|
/**
|
|
* Scalar value types. This is a subset of field types declared by protobuf
|
|
* enum google.protobuf.FieldDescriptorProto.Type The types GROUP and MESSAGE
|
|
* are omitted, but the numerical values are identical.
|
|
*/
|
|
var ScalarType;
|
|
(function (ScalarType) {
|
|
// 0 is reserved for errors.
|
|
// Order is weird for historical reasons.
|
|
ScalarType[ScalarType["DOUBLE"] = 1] = "DOUBLE";
|
|
ScalarType[ScalarType["FLOAT"] = 2] = "FLOAT";
|
|
// Not ZigZag encoded. Negative numbers take 10 bytes. Use TYPE_SINT64 if
|
|
// negative values are likely.
|
|
ScalarType[ScalarType["INT64"] = 3] = "INT64";
|
|
ScalarType[ScalarType["UINT64"] = 4] = "UINT64";
|
|
// Not ZigZag encoded. Negative numbers take 10 bytes. Use TYPE_SINT32 if
|
|
// negative values are likely.
|
|
ScalarType[ScalarType["INT32"] = 5] = "INT32";
|
|
ScalarType[ScalarType["FIXED64"] = 6] = "FIXED64";
|
|
ScalarType[ScalarType["FIXED32"] = 7] = "FIXED32";
|
|
ScalarType[ScalarType["BOOL"] = 8] = "BOOL";
|
|
ScalarType[ScalarType["STRING"] = 9] = "STRING";
|
|
// Tag-delimited aggregate.
|
|
// Group type is deprecated and not supported in proto3. However, Proto3
|
|
// implementations should still be able to parse the group wire format and
|
|
// treat group fields as unknown fields.
|
|
// TYPE_GROUP = 10,
|
|
// TYPE_MESSAGE = 11, // Length-delimited aggregate.
|
|
// New in version 2.
|
|
ScalarType[ScalarType["BYTES"] = 12] = "BYTES";
|
|
ScalarType[ScalarType["UINT32"] = 13] = "UINT32";
|
|
// TYPE_ENUM = 14,
|
|
ScalarType[ScalarType["SFIXED32"] = 15] = "SFIXED32";
|
|
ScalarType[ScalarType["SFIXED64"] = 16] = "SFIXED64";
|
|
ScalarType[ScalarType["SINT32"] = 17] = "SINT32";
|
|
ScalarType[ScalarType["SINT64"] = 18] = "SINT64";
|
|
})(ScalarType = exports.ScalarType || (exports.ScalarType = {}));
|
|
/**
|
|
* JavaScript representation of 64 bit integral types. Equivalent to the
|
|
* field option "jstype".
|
|
*
|
|
* By default, protobuf-ts represents 64 bit types as `bigint`.
|
|
*
|
|
* You can change the default behaviour by enabling the plugin parameter
|
|
* `long_type_string`, which will represent 64 bit types as `string`.
|
|
*
|
|
* Alternatively, you can change the behaviour for individual fields
|
|
* with the field option "jstype":
|
|
*
|
|
* ```protobuf
|
|
* uint64 my_field = 1 [jstype = JS_STRING];
|
|
* uint64 other_field = 2 [jstype = JS_NUMBER];
|
|
* ```
|
|
*/
|
|
var LongType;
|
|
(function (LongType) {
|
|
/**
|
|
* Use JavaScript `bigint`.
|
|
*
|
|
* Field option `[jstype = JS_NORMAL]`.
|
|
*/
|
|
LongType[LongType["BIGINT"] = 0] = "BIGINT";
|
|
/**
|
|
* Use JavaScript `string`.
|
|
*
|
|
* Field option `[jstype = JS_STRING]`.
|
|
*/
|
|
LongType[LongType["STRING"] = 1] = "STRING";
|
|
/**
|
|
* Use JavaScript `number`.
|
|
*
|
|
* Large values will loose precision.
|
|
*
|
|
* Field option `[jstype = JS_NUMBER]`.
|
|
*/
|
|
LongType[LongType["NUMBER"] = 2] = "NUMBER";
|
|
})(LongType = exports.LongType || (exports.LongType = {}));
|
|
/**
|
|
* Protobuf 2.1.0 introduced packed repeated fields.
|
|
* Setting the field option `[packed = true]` enables packing.
|
|
*
|
|
* In proto3, all repeated fields are packed by default.
|
|
* Setting the field option `[packed = false]` disables packing.
|
|
*
|
|
* Packed repeated fields are encoded with a single tag,
|
|
* then a length-delimiter, then the element values.
|
|
*
|
|
* Unpacked repeated fields are encoded with a tag and
|
|
* value for each element.
|
|
*
|
|
* `bytes` and `string` cannot be packed.
|
|
*/
|
|
var RepeatType;
|
|
(function (RepeatType) {
|
|
/**
|
|
* The field is not repeated.
|
|
*/
|
|
RepeatType[RepeatType["NO"] = 0] = "NO";
|
|
/**
|
|
* The field is repeated and should be packed.
|
|
* Invalid for `bytes` and `string`, they cannot be packed.
|
|
*/
|
|
RepeatType[RepeatType["PACKED"] = 1] = "PACKED";
|
|
/**
|
|
* The field is repeated but should not be packed.
|
|
* The only valid repeat type for repeated `bytes` and `string`.
|
|
*/
|
|
RepeatType[RepeatType["UNPACKED"] = 2] = "UNPACKED";
|
|
})(RepeatType = exports.RepeatType || (exports.RepeatType = {}));
|
|
/**
|
|
* Turns PartialFieldInfo into FieldInfo.
|
|
*/
|
|
function normalizeFieldInfo(field) {
|
|
var _a, _b, _c, _d;
|
|
field.localName = (_a = field.localName) !== null && _a !== void 0 ? _a : lower_camel_case_1.lowerCamelCase(field.name);
|
|
field.jsonName = (_b = field.jsonName) !== null && _b !== void 0 ? _b : lower_camel_case_1.lowerCamelCase(field.name);
|
|
field.repeat = (_c = field.repeat) !== null && _c !== void 0 ? _c : RepeatType.NO;
|
|
field.opt = (_d = field.opt) !== null && _d !== void 0 ? _d : (field.repeat ? false : field.oneof ? false : field.kind == "message");
|
|
return field;
|
|
}
|
|
exports.normalizeFieldInfo = normalizeFieldInfo;
|
|
/**
|
|
* Read custom field options from a generated message type.
|
|
*
|
|
* @deprecated use readFieldOption()
|
|
*/
|
|
function readFieldOptions(messageType, fieldName, extensionName, extensionType) {
|
|
var _a;
|
|
const options = (_a = messageType.fields.find((m, i) => m.localName == fieldName || i == fieldName)) === null || _a === void 0 ? void 0 : _a.options;
|
|
return options && options[extensionName] ? extensionType.fromJson(options[extensionName]) : undefined;
|
|
}
|
|
exports.readFieldOptions = readFieldOptions;
|
|
function readFieldOption(messageType, fieldName, extensionName, extensionType) {
|
|
var _a;
|
|
const options = (_a = messageType.fields.find((m, i) => m.localName == fieldName || i == fieldName)) === null || _a === void 0 ? void 0 : _a.options;
|
|
if (!options) {
|
|
return undefined;
|
|
}
|
|
const optionVal = options[extensionName];
|
|
if (optionVal === undefined) {
|
|
return optionVal;
|
|
}
|
|
return extensionType ? extensionType.fromJson(optionVal) : optionVal;
|
|
}
|
|
exports.readFieldOption = readFieldOption;
|
|
function readMessageOption(messageType, extensionName, extensionType) {
|
|
const options = messageType.options;
|
|
const optionVal = options[extensionName];
|
|
if (optionVal === undefined) {
|
|
return optionVal;
|
|
}
|
|
return extensionType ? extensionType.fromJson(optionVal) : optionVal;
|
|
}
|
|
exports.readMessageOption = readMessageOption;
|