initial commit of actions
This commit is contained in:
commit
949ece5785
44660 changed files with 12034344 additions and 0 deletions
73
github/codeql-action-v2/node_modules/@protobuf-ts/runtime/build/es2015/reflection-equals.js
generated
vendored
Normal file
73
github/codeql-action-v2/node_modules/@protobuf-ts/runtime/build/es2015/reflection-equals.js
generated
vendored
Normal file
|
|
@ -0,0 +1,73 @@
|
|||
import { ScalarType } from "./reflection-info";
|
||||
/**
|
||||
* Determines whether two message of the same type have the same field values.
|
||||
* Checks for deep equality, traversing repeated fields, oneof groups, maps
|
||||
* and messages recursively.
|
||||
* Will also return true if both messages are `undefined`.
|
||||
*/
|
||||
export function reflectionEquals(info, a, b) {
|
||||
if (a === b)
|
||||
return true;
|
||||
if (!a || !b)
|
||||
return false;
|
||||
for (let field of info.fields) {
|
||||
let localName = field.localName;
|
||||
let val_a = field.oneof ? a[field.oneof][localName] : a[localName];
|
||||
let val_b = field.oneof ? b[field.oneof][localName] : b[localName];
|
||||
switch (field.kind) {
|
||||
case "enum":
|
||||
case "scalar":
|
||||
let t = field.kind == "enum" ? ScalarType.INT32 : field.T;
|
||||
if (!(field.repeat
|
||||
? repeatedPrimitiveEq(t, val_a, val_b)
|
||||
: primitiveEq(t, val_a, val_b)))
|
||||
return false;
|
||||
break;
|
||||
case "map":
|
||||
if (!(field.V.kind == "message"
|
||||
? repeatedMsgEq(field.V.T(), objectValues(val_a), objectValues(val_b))
|
||||
: repeatedPrimitiveEq(field.V.kind == "enum" ? ScalarType.INT32 : field.V.T, objectValues(val_a), objectValues(val_b))))
|
||||
return false;
|
||||
break;
|
||||
case "message":
|
||||
let T = field.T();
|
||||
if (!(field.repeat
|
||||
? repeatedMsgEq(T, val_a, val_b)
|
||||
: T.equals(val_a, val_b)))
|
||||
return false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
const objectValues = Object.values;
|
||||
function primitiveEq(type, a, b) {
|
||||
if (a === b)
|
||||
return true;
|
||||
if (type !== ScalarType.BYTES)
|
||||
return false;
|
||||
let ba = a;
|
||||
let bb = b;
|
||||
if (ba.length !== bb.length)
|
||||
return false;
|
||||
for (let i = 0; i < ba.length; i++)
|
||||
if (ba[i] != bb[i])
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
function repeatedPrimitiveEq(type, a, b) {
|
||||
if (a.length !== b.length)
|
||||
return false;
|
||||
for (let i = 0; i < a.length; i++)
|
||||
if (!primitiveEq(type, a[i], b[i]))
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
function repeatedMsgEq(type, a, b) {
|
||||
if (a.length !== b.length)
|
||||
return false;
|
||||
for (let i = 0; i < a.length; i++)
|
||||
if (!type.equals(a[i], b[i]))
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue