CoolFace
Datasetpublic

basant307/AI_Governance_Project

sourceHugging Faceapache-2.0updated 2mo agoView on Hugging Face
0likes48downloads
wrappers.js108 linesDownload Raw Back to src
1"use strict";2 3/**4 * Wrappers for common types.5 * @type {Object.<string,IWrapper>}6 * @const7 */8var wrappers = exports;9 10var Message = require("./message"),11    util    = require("./util/minimal");12 13/**14 * From object converter part of an {@link IWrapper}.15 * @typedef WrapperFromObjectConverter16 * @type {function}17 * @param {Object.<string,*>} object Plain object18 * @returns {Message<{}>} Message instance19 * @this Type20 */21 22/**23 * To object converter part of an {@link IWrapper}.24 * @typedef WrapperToObjectConverter25 * @type {function}26 * @param {Message<{}>} message Message instance27 * @param {IConversionOptions} [options] Conversion options28 * @returns {Object.<string,*>} Plain object29 * @this Type30 */31 32/**33 * Common type wrapper part of {@link wrappers}.34 * @interface IWrapper35 * @property {WrapperFromObjectConverter} [fromObject] From object converter36 * @property {WrapperToObjectConverter} [toObject] To object converter37 */38 39// Custom wrapper for Any40wrappers[".google.protobuf.Any"] = {41 42    fromObject: function(object, depth) {43 44        // unwrap value type if mapped45        if (object && object["@type"]) {46             // Only use fully qualified type name after the last '/'47            var name = object["@type"].substring(object["@type"].lastIndexOf("/") + 1);48            var type = this.lookup(name);49            /* istanbul ignore else */50            if (type) {51                // type_url does not accept leading "."52                var type_url = object["@type"].charAt(0) === "." ?53                    object["@type"].slice(1) : object["@type"];54                // type_url prefix is optional, but path seperator is required55                if (type_url.indexOf("/") === -1) {56                    type_url = "/" + type_url;57                }58                return this.create({59                    type_url: type_url,60                    value: type.encode(type.fromObject(object, depth === undefined ? 1 : depth + 1)).finish()61                });62            }63        }64 65        return this.fromObject(object, depth);66    },67 68    toObject: function(message, options, depth) {69        if (depth === undefined)70            depth = 0;71        if (depth > util.recursionLimit)72            throw Error("max depth exceeded");73 74        // Default prefix75        var googleApi = "type.googleapis.com/";76        var prefix = "";77        var name = "";78 79        // decode value if requested and unmapped80        if (options && options.json && message.type_url && message.value) {81            // Only use fully qualified type name after the last '/'82            name = message.type_url.substring(message.type_url.lastIndexOf("/") + 1);83            // Separate the prefix used84            prefix = message.type_url.substring(0, message.type_url.lastIndexOf("/") + 1);85            var type = this.lookup(name);86            /* istanbul ignore else */87            if (type)88                message = type.decode(message.value, undefined, undefined, depth + 1);89        }90 91        // wrap value if unmapped92        if (!(message instanceof this.ctor) && message instanceof Message) {93            var object = message.$type.toObject(message, options, depth + 1);94            var messageName = message.$type.fullName[0] === "." ?95                message.$type.fullName.slice(1) : message.$type.fullName;96            // Default to type.googleapis.com prefix if no prefix is used97            if (prefix === "") {98                prefix = googleApi;99            }100            name = prefix + messageName;101            object["@type"] = name;102            return object;103        }104 105        return this.toObject(message, options, depth);106    }107};108 
basant307/AI_Governance_Project · CoolFace