diff --git a/__tests__/QrCodeDataService.test.ts b/__tests__/QrCodeDataService.test.ts index 4eb55f0448b2266a8fcaea57768a42e162ecc94e..365183d897744b8a59035ee68166d465300ef160 100644 --- a/__tests__/QrCodeDataService.test.ts +++ b/__tests__/QrCodeDataService.test.ts @@ -5,10 +5,9 @@ import Utils, { base64ToArrayBuffer, arrayBufferToBase64, } from "../src/utils/common"; -import { MessageData } from "../src"; +import { MessageData, DocumentData } from "../src"; const emailData: MessageData = { - statusId: "123", sender: { name: "Arty", email: "arty@mail.ru", @@ -42,118 +41,230 @@ const emailData: MessageData = { senderPublicKeyUuid: "<uuid>", }; +const documentData: DocumentData = { + author: "Craig McCracken", + documentTitle: "The_Powerpuff_Girls", + creationDate: new Date().toDateString(), + lastModDate: new Date().toDateString(), + documentPages: 2, +}; + /** * Algorithm spec * https://code.vereign.com/internal/product/-/issues/70#note_56356 */ describe("QrCodeDataService", () => { - it("performs the whole QR code data breakage/assembling routine", async () => { - /** - * Encode - */ - const encodedEmailData = QrCodeDataService.encodeEmailData(emailData); - const compressedEmailData = Utils.compressData(encodedEmailData); - const { - data, - iv: sessionIv, - key: sessionKey, - } = await CryptoService.encryptAESGCM( - arrayBufferToBase64(compressedEmailData) - ); - - // 32 is a head bytes size. It's the minimum, and the bigger is better. - // Increase it as long as you can maintain good appearance of the QR code - const { head, tail } = QrCodeDataService.breakQrCodeData(data, 32); - - const encodedSessionKey = QrCodeDataService.encodeKeyDataPair({ - key: arrayBufferToBase64(sessionKey), - data: arrayBufferToBase64(sessionIv), - }); + describe("Email", () => { + it("performs the whole QR code data breakage/assembling routine", async () => { + /** + * Encode + */ + const encodedEmailData = QrCodeDataService.encodeEmailData(emailData); + const compressedEmailData = Utils.compressData(encodedEmailData); + const { + data, + iv: sessionIv, + key: sessionKey, + } = await CryptoService.encryptAESGCM( + arrayBufferToBase64(compressedEmailData) + ); + + // 32 is a head bytes size. It's the minimum, and the bigger is better. + // Increase it as long as you can maintain good appearance of the QR code + const { head, tail } = QrCodeDataService.breakQrCodeData(data, 32); + + const encodedSessionKey = QrCodeDataService.encodeKeyDataPair({ + key: arrayBufferToBase64(sessionKey), + data: arrayBufferToBase64(sessionIv), + }); + + // In client apps, RSA encryption happens using HSM service. + const { privateKeyPEM, publicKeyPEM } = + await CryptoService.generateRSAKeys(); + + const encryptedSessionKey = await CryptoService.encryptRSA( + publicKeyPEM, + base64ToArrayBuffer(encodedSessionKey) + ); + + const { + data: doubleEncryptedSessionKey, + iv: storageIv, + key: storageKey, + } = await CryptoService.encryptAESGCM( + arrayBufferToBase64(encryptedSessionKey) + ); + + // Put base64 of this into QR code data as `?q=` param + const encodedStorageKeyAndHead = QrCodeDataService.encodeKeyDataPair({ + key: arrayBufferToBase64(storageKey), + data: arrayBufferToBase64(head), + }); + + const encodedDoubleEncryptedSessionKey = + QrCodeDataService.encodeKeyDataPair({ + key: arrayBufferToBase64(doubleEncryptedSessionKey), + data: arrayBufferToBase64(storageIv), + }); - // In client apps, RSA encryption happens using HSM service. - const { - privateKeyPEM, - publicKeyPEM, - } = await CryptoService.generateRSAKeys(); - - const encryptedSessionKey = await CryptoService.encryptRSA( - publicKeyPEM, - base64ToArrayBuffer(encodedSessionKey) - ); - - const { - data: doubleEncryptedSessionKey, - iv: storageIv, - key: storageKey, - } = await CryptoService.encryptAESGCM( - arrayBufferToBase64(encryptedSessionKey) - ); - - // Put base64 of this into QR code data as `?q=` param - const encodedStorageKeyAndHead = QrCodeDataService.encodeKeyDataPair({ - key: arrayBufferToBase64(storageKey), - data: arrayBufferToBase64(head), + // Send this to putQRCodeData api + const backblazeData = { + sessionKey: encodedDoubleEncryptedSessionKey, + tail: arrayBufferToBase64(tail), + }; + + /** + * Decode + */ + + // Retrieve base64 of this from QR code URL + const decodedStorageKeyAndHead = QrCodeDataService.decodeKeyDataPair( + encodedStorageKeyAndHead + ); + + // decode this from backblaze data + const { key: doubleEncryptedSessionKeyDecoded, data: storageIvDecoded } = + QrCodeDataService.decodeKeyDataPair(backblazeData.sessionKey); + + const doubleDecryptedSessionKey = await CryptoService.decryptAESGCM( + base64ToArrayBuffer(doubleEncryptedSessionKeyDecoded), + base64ToArrayBuffer(decodedStorageKeyAndHead.key), + base64ToArrayBuffer(storageIvDecoded) + ); + + // In client apps, RSA decryption happens using HSM service. + const decryptedSessionKey = await CryptoService.decryptRSA( + privateKeyPEM, + base64ToArrayBuffer(doubleDecryptedSessionKey) + ); + + const decodedSessionKey = + QrCodeDataService.decodeKeyDataPair(decryptedSessionKey); + + const assembledData = QrCodeDataService.assembleQrCodeData( + base64ToArrayBuffer(decodedStorageKeyAndHead.data), + base64ToArrayBuffer(backblazeData.tail) + ); + + const decryptedEmailData = await CryptoService.decryptAESGCM( + assembledData, + base64ToArrayBuffer(decodedSessionKey.key), + base64ToArrayBuffer(decodedSessionKey.data) + ); + + const decompressedEmailData = Utils.decompressData(decryptedEmailData); + const decodedEmailData = QrCodeDataService.decodeEmailData( + decompressedEmailData + ); + expect(decodedEmailData).toEqual(emailData); }); + }); - const encodedDoubleEncryptedSessionKey = QrCodeDataService.encodeKeyDataPair( - { - key: arrayBufferToBase64(doubleEncryptedSessionKey), - data: arrayBufferToBase64(storageIv), - } - ); - - // Send this to putQRCodeData api - const backblazeData = { - sessionKey: encodedDoubleEncryptedSessionKey, - tail: arrayBufferToBase64(tail), - }; - - /** - * Decode - */ - - // Retrieve base64 of this from QR code URL - const decodedStorageKeyAndHead = QrCodeDataService.decodeKeyDataPair( - encodedStorageKeyAndHead - ); - - // decode this from backblaze data - const { - key: doubleEncryptedSessionKeyDecoded, - data: storageIvDecoded, - } = QrCodeDataService.decodeKeyDataPair(backblazeData.sessionKey); - - const doubleDecryptedSessionKey = await CryptoService.decryptAESGCM( - base64ToArrayBuffer(doubleEncryptedSessionKeyDecoded), - base64ToArrayBuffer(decodedStorageKeyAndHead.key), - base64ToArrayBuffer(storageIvDecoded) - ); - - // In client apps, RSA decryption happens using HSM service. - const decryptedSessionKey = await CryptoService.decryptRSA( - privateKeyPEM, - base64ToArrayBuffer(doubleDecryptedSessionKey) - ); - - const decodedSessionKey = QrCodeDataService.decodeKeyDataPair( - decryptedSessionKey - ); - - const assembledData = QrCodeDataService.assembleQrCodeData( - base64ToArrayBuffer(decodedStorageKeyAndHead.data), - base64ToArrayBuffer(backblazeData.tail) - ); - - const decryptedEmailData = await CryptoService.decryptAESGCM( - assembledData, - base64ToArrayBuffer(decodedSessionKey.key), - base64ToArrayBuffer(decodedSessionKey.data) - ); - - const decompressedEmailData = Utils.decompressData(decryptedEmailData); - const decodedEmailData = QrCodeDataService.decodeEmailData( - decompressedEmailData - ); - expect(decodedEmailData).toEqual(emailData); + describe("Documents", () => { + it("performs the whole QR code data breakage/assembling routine ", async () => { + /** + * Encode + */ + const encodedDocumentData = + QrCodeDataService.encodeDocumentData(documentData); + const compressedDocumentData = Utils.compressData(encodedDocumentData); + const { + data, + iv: sessionIv, + key: sessionKey, + } = await CryptoService.encryptAESGCM( + arrayBufferToBase64(compressedDocumentData) + ); + + const { head, tail } = QrCodeDataService.breakQrCodeData(data, 32); + + const encodedSessionKey = QrCodeDataService.encodeKeyDataPair({ + key: arrayBufferToBase64(sessionKey), + data: arrayBufferToBase64(sessionIv), + }); + + // In client apps, RSA encryption happens using HSM service. + const { privateKeyPEM, publicKeyPEM } = + await CryptoService.generateRSAKeys(); + + const encryptedSessionKey = await CryptoService.encryptRSA( + publicKeyPEM, + base64ToArrayBuffer(encodedSessionKey) + ); + + const { + data: doubleEncryptedSessionKey, + iv: storageIv, + key: storageKey, + } = await CryptoService.encryptAESGCM( + arrayBufferToBase64(encryptedSessionKey) + ); + + // Put base64 of this into QR code data as `?q=` param + const encodedStorageKeyAndHead = QrCodeDataService.encodeKeyDataPair({ + key: arrayBufferToBase64(storageKey), + data: arrayBufferToBase64(head), + }); + + const encodedDoubleEncryptedSessionKey = + QrCodeDataService.encodeKeyDataPair({ + key: arrayBufferToBase64(doubleEncryptedSessionKey), + data: arrayBufferToBase64(storageIv), + }); + + // Send this to putQRCodeData api + const backblazeData = { + sessionKey: encodedDoubleEncryptedSessionKey, + tail: arrayBufferToBase64(tail), + }; + + /** + * Decode Document + */ + + // Retrieve base64 of this from QR code URL + const decodedStorageKeyAndHead = QrCodeDataService.decodeKeyDataPair( + encodedStorageKeyAndHead + ); + + // decode this from backblaze data + const { key: doubleEncryptedSessionKeyDecoded, data: storageIvDecoded } = + QrCodeDataService.decodeKeyDataPair(backblazeData.sessionKey); + + const doubleDecryptedSessionKey = await CryptoService.decryptAESGCM( + base64ToArrayBuffer(doubleEncryptedSessionKeyDecoded), + base64ToArrayBuffer(decodedStorageKeyAndHead.key), + base64ToArrayBuffer(storageIvDecoded) + ); + + // In client apps, RSA decryption happens using HSM service. + const decryptedSessionKey = await CryptoService.decryptRSA( + privateKeyPEM, + base64ToArrayBuffer(doubleDecryptedSessionKey) + ); + + const decodedSessionKey = + QrCodeDataService.decodeKeyDataPair(decryptedSessionKey); + + const assembledData = QrCodeDataService.assembleQrCodeData( + base64ToArrayBuffer(decodedStorageKeyAndHead.data), + base64ToArrayBuffer(backblazeData.tail) + ); + + const decryptedDocumentData = await CryptoService.decryptAESGCM( + assembledData, + base64ToArrayBuffer(decodedSessionKey.key), + base64ToArrayBuffer(decodedSessionKey.data) + ); + + const decompressedDocumentData = Utils.decompressData( + decryptedDocumentData + ); + const decodedDocumentData = QrCodeDataService.decodeDocumentData( + decompressedDocumentData + ); + + expect(decodedDocumentData).toEqual(documentData); + }); }); }); diff --git a/dist/generated/qrcode_data_pb.js b/dist/generated/qrcode_data_pb.js index e903a4aea9805dde1a3e87e2cbbc287f411fef3c..ec425f7ca7b9225db5461cc16560dfe25467572d 100644 --- a/dist/generated/qrcode_data_pb.js +++ b/dist/generated/qrcode_data_pb.js @@ -760,9 +760,10 @@ $root.vereign = (function () { * Properties of an IpfsContentData_V1. * @memberof vereign.protobuf.qrcode_data * @interface IIpfsContentData_V1 - * @property {string|null} [cid] IpfsContentData_V1 cid - * @property {string|null} [key] IpfsContentData_V1 key * @property {string|null} [head] IpfsContentData_V1 head + * @property {string|null} [key] IpfsContentData_V1 key + * @property {string|null} [cid] IpfsContentData_V1 cid + * @property {string|null} [ipnsKeyId] IpfsContentData_V1 ipnsKeyId */ /** * Constructs a new IpfsContentData_V1. @@ -779,12 +780,12 @@ $root.vereign = (function () { this[keys[i]] = properties[keys[i]]; } /** - * IpfsContentData_V1 cid. - * @member {string} cid + * IpfsContentData_V1 head. + * @member {string} head * @memberof vereign.protobuf.qrcode_data.IpfsContentData_V1 * @instance */ - IpfsContentData_V1.prototype.cid = ""; + IpfsContentData_V1.prototype.head = ""; /** * IpfsContentData_V1 key. * @member {string} key @@ -793,12 +794,19 @@ $root.vereign = (function () { */ IpfsContentData_V1.prototype.key = ""; /** - * IpfsContentData_V1 head. - * @member {string} head + * IpfsContentData_V1 cid. + * @member {string} cid * @memberof vereign.protobuf.qrcode_data.IpfsContentData_V1 * @instance */ - IpfsContentData_V1.prototype.head = ""; + IpfsContentData_V1.prototype.cid = ""; + /** + * IpfsContentData_V1 ipnsKeyId. + * @member {string} ipnsKeyId + * @memberof vereign.protobuf.qrcode_data.IpfsContentData_V1 + * @instance + */ + IpfsContentData_V1.prototype.ipnsKeyId = ""; /** * Creates a new IpfsContentData_V1 instance using the specified properties. * @function create @@ -822,12 +830,14 @@ $root.vereign = (function () { IpfsContentData_V1.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.cid != null && Object.hasOwnProperty.call(message, "cid")) - writer.uint32(/* id 1, wireType 2 =*/ 10).string(message.cid); + if (message.head != null && Object.hasOwnProperty.call(message, "head")) + writer.uint32(/* id 1, wireType 2 =*/ 10).string(message.head); if (message.key != null && Object.hasOwnProperty.call(message, "key")) writer.uint32(/* id 2, wireType 2 =*/ 18).string(message.key); - if (message.head != null && Object.hasOwnProperty.call(message, "head")) - writer.uint32(/* id 3, wireType 2 =*/ 26).string(message.head); + if (message.cid != null && Object.hasOwnProperty.call(message, "cid")) + writer.uint32(/* id 3, wireType 2 =*/ 26).string(message.cid); + if (message.ipnsKeyId != null && Object.hasOwnProperty.call(message, "ipnsKeyId")) + writer.uint32(/* id 4, wireType 2 =*/ 34).string(message.ipnsKeyId); return writer; }; /** @@ -861,13 +871,16 @@ $root.vereign = (function () { var tag = reader.uint32(); switch (tag >>> 3) { case 1: - message.cid = reader.string(); + message.head = reader.string(); break; case 2: message.key = reader.string(); break; case 3: - message.head = reader.string(); + message.cid = reader.string(); + break; + case 4: + message.ipnsKeyId = reader.string(); break; default: reader.skipType(tag & 7); @@ -902,15 +915,18 @@ $root.vereign = (function () { IpfsContentData_V1.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; - if (message.cid != null && message.hasOwnProperty("cid")) - if (!$util.isString(message.cid)) - return "cid: string expected"; - if (message.key != null && message.hasOwnProperty("key")) - if (!$util.isString(message.key)) - return "key: string expected"; if (message.head != null && message.hasOwnProperty("head")) if (!$util.isString(message.head)) return "head: string expected"; + if (message.key != null && message.hasOwnProperty("key")) + if (!$util.isString(message.key)) + return "key: string expected"; + if (message.cid != null && message.hasOwnProperty("cid")) + if (!$util.isString(message.cid)) + return "cid: string expected"; + if (message.ipnsKeyId != null && message.hasOwnProperty("ipnsKeyId")) + if (!$util.isString(message.ipnsKeyId)) + return "ipnsKeyId: string expected"; return null; }; /** @@ -925,12 +941,14 @@ $root.vereign = (function () { if (object instanceof $root.vereign.protobuf.qrcode_data.IpfsContentData_V1) return object; var message = new $root.vereign.protobuf.qrcode_data.IpfsContentData_V1(); - if (object.cid != null) - message.cid = String(object.cid); - if (object.key != null) - message.key = String(object.key); if (object.head != null) message.head = String(object.head); + if (object.key != null) + message.key = String(object.key); + if (object.cid != null) + message.cid = String(object.cid); + if (object.ipnsKeyId != null) + message.ipnsKeyId = String(object.ipnsKeyId); return message; }; /** @@ -947,16 +965,19 @@ $root.vereign = (function () { options = {}; var object = {}; if (options.defaults) { - object.cid = ""; - object.key = ""; object.head = ""; + object.key = ""; + object.cid = ""; + object.ipnsKeyId = ""; } - if (message.cid != null && message.hasOwnProperty("cid")) - object.cid = message.cid; - if (message.key != null && message.hasOwnProperty("key")) - object.key = message.key; if (message.head != null && message.hasOwnProperty("head")) object.head = message.head; + if (message.key != null && message.hasOwnProperty("key")) + object.key = message.key; + if (message.cid != null && message.hasOwnProperty("cid")) + object.cid = message.cid; + if (message.ipnsKeyId != null && message.hasOwnProperty("ipnsKeyId")) + object.ipnsKeyId = message.ipnsKeyId; return object; }; /** @@ -2294,6 +2315,2256 @@ $root.vereign = (function () { }; return WrapperData; })(); + qrcode_data.CertIssuer = (function () { + /** + * Properties of a CertIssuer. + * @memberof vereign.protobuf.qrcode_data + * @interface ICertIssuer + * @property {string|null} [countryName] CertIssuer countryName + * @property {string|null} [organizationName] CertIssuer organizationName + * @property {string|null} [commonName] CertIssuer commonName + */ + /** + * Constructs a new CertIssuer. + * @memberof vereign.protobuf.qrcode_data + * @classdesc Represents a CertIssuer. + * @implements ICertIssuer + * @constructor + * @param {vereign.protobuf.qrcode_data.ICertIssuer=} [properties] Properties to set + */ + function CertIssuer(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + /** + * CertIssuer countryName. + * @member {string} countryName + * @memberof vereign.protobuf.qrcode_data.CertIssuer + * @instance + */ + CertIssuer.prototype.countryName = ""; + /** + * CertIssuer organizationName. + * @member {string} organizationName + * @memberof vereign.protobuf.qrcode_data.CertIssuer + * @instance + */ + CertIssuer.prototype.organizationName = ""; + /** + * CertIssuer commonName. + * @member {string} commonName + * @memberof vereign.protobuf.qrcode_data.CertIssuer + * @instance + */ + CertIssuer.prototype.commonName = ""; + /** + * Creates a new CertIssuer instance using the specified properties. + * @function create + * @memberof vereign.protobuf.qrcode_data.CertIssuer + * @static + * @param {vereign.protobuf.qrcode_data.ICertIssuer=} [properties] Properties to set + * @returns {vereign.protobuf.qrcode_data.CertIssuer} CertIssuer instance + */ + CertIssuer.create = function create(properties) { + return new CertIssuer(properties); + }; + /** + * Encodes the specified CertIssuer message. Does not implicitly {@link vereign.protobuf.qrcode_data.CertIssuer.verify|verify} messages. + * @function encode + * @memberof vereign.protobuf.qrcode_data.CertIssuer + * @static + * @param {vereign.protobuf.qrcode_data.ICertIssuer} message CertIssuer message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + CertIssuer.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.countryName != null && Object.hasOwnProperty.call(message, "countryName")) + writer.uint32(/* id 1, wireType 2 =*/ 10).string(message.countryName); + if (message.organizationName != null && Object.hasOwnProperty.call(message, "organizationName")) + writer.uint32(/* id 2, wireType 2 =*/ 18).string(message.organizationName); + if (message.commonName != null && Object.hasOwnProperty.call(message, "commonName")) + writer.uint32(/* id 3, wireType 2 =*/ 26).string(message.commonName); + return writer; + }; + /** + * Encodes the specified CertIssuer message, length delimited. Does not implicitly {@link vereign.protobuf.qrcode_data.CertIssuer.verify|verify} messages. + * @function encodeDelimited + * @memberof vereign.protobuf.qrcode_data.CertIssuer + * @static + * @param {vereign.protobuf.qrcode_data.ICertIssuer} message CertIssuer message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + CertIssuer.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + /** + * Decodes a CertIssuer message from the specified reader or buffer. + * @function decode + * @memberof vereign.protobuf.qrcode_data.CertIssuer + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {vereign.protobuf.qrcode_data.CertIssuer} CertIssuer + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + CertIssuer.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.vereign.protobuf.qrcode_data.CertIssuer(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.countryName = reader.string(); + break; + case 2: + message.organizationName = reader.string(); + break; + case 3: + message.commonName = reader.string(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + /** + * Decodes a CertIssuer message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof vereign.protobuf.qrcode_data.CertIssuer + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {vereign.protobuf.qrcode_data.CertIssuer} CertIssuer + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + CertIssuer.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + /** + * Verifies a CertIssuer message. + * @function verify + * @memberof vereign.protobuf.qrcode_data.CertIssuer + * @static + * @param {Object.<string,*>} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + CertIssuer.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.countryName != null && message.hasOwnProperty("countryName")) + if (!$util.isString(message.countryName)) + return "countryName: string expected"; + if (message.organizationName != null && message.hasOwnProperty("organizationName")) + if (!$util.isString(message.organizationName)) + return "organizationName: string expected"; + if (message.commonName != null && message.hasOwnProperty("commonName")) + if (!$util.isString(message.commonName)) + return "commonName: string expected"; + return null; + }; + /** + * Creates a CertIssuer message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof vereign.protobuf.qrcode_data.CertIssuer + * @static + * @param {Object.<string,*>} object Plain object + * @returns {vereign.protobuf.qrcode_data.CertIssuer} CertIssuer + */ + CertIssuer.fromObject = function fromObject(object) { + if (object instanceof $root.vereign.protobuf.qrcode_data.CertIssuer) + return object; + var message = new $root.vereign.protobuf.qrcode_data.CertIssuer(); + if (object.countryName != null) + message.countryName = String(object.countryName); + if (object.organizationName != null) + message.organizationName = String(object.organizationName); + if (object.commonName != null) + message.commonName = String(object.commonName); + return message; + }; + /** + * Creates a plain object from a CertIssuer message. Also converts values to other types if specified. + * @function toObject + * @memberof vereign.protobuf.qrcode_data.CertIssuer + * @static + * @param {vereign.protobuf.qrcode_data.CertIssuer} message CertIssuer + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.<string,*>} Plain object + */ + CertIssuer.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.countryName = ""; + object.organizationName = ""; + object.commonName = ""; + } + if (message.countryName != null && message.hasOwnProperty("countryName")) + object.countryName = message.countryName; + if (message.organizationName != null && message.hasOwnProperty("organizationName")) + object.organizationName = message.organizationName; + if (message.commonName != null && message.hasOwnProperty("commonName")) + object.commonName = message.commonName; + return object; + }; + /** + * Converts this CertIssuer to JSON. + * @function toJSON + * @memberof vereign.protobuf.qrcode_data.CertIssuer + * @instance + * @returns {Object.<string,*>} JSON object + */ + CertIssuer.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + return CertIssuer; + })(); + qrcode_data.CertIssedTo = (function () { + /** + * Properties of a CertIssedTo. + * @memberof vereign.protobuf.qrcode_data + * @interface ICertIssedTo + * @property {string|null} [countryName] CertIssedTo countryName + * @property {string|null} [organizationalUnitName] CertIssedTo organizationalUnitName + * @property {string|null} [organizationName] CertIssedTo organizationName + * @property {string|null} [commonName] CertIssedTo commonName + */ + /** + * Constructs a new CertIssedTo. + * @memberof vereign.protobuf.qrcode_data + * @classdesc Represents a CertIssedTo. + * @implements ICertIssedTo + * @constructor + * @param {vereign.protobuf.qrcode_data.ICertIssedTo=} [properties] Properties to set + */ + function CertIssedTo(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + /** + * CertIssedTo countryName. + * @member {string} countryName + * @memberof vereign.protobuf.qrcode_data.CertIssedTo + * @instance + */ + CertIssedTo.prototype.countryName = ""; + /** + * CertIssedTo organizationalUnitName. + * @member {string} organizationalUnitName + * @memberof vereign.protobuf.qrcode_data.CertIssedTo + * @instance + */ + CertIssedTo.prototype.organizationalUnitName = ""; + /** + * CertIssedTo organizationName. + * @member {string} organizationName + * @memberof vereign.protobuf.qrcode_data.CertIssedTo + * @instance + */ + CertIssedTo.prototype.organizationName = ""; + /** + * CertIssedTo commonName. + * @member {string} commonName + * @memberof vereign.protobuf.qrcode_data.CertIssedTo + * @instance + */ + CertIssedTo.prototype.commonName = ""; + /** + * Creates a new CertIssedTo instance using the specified properties. + * @function create + * @memberof vereign.protobuf.qrcode_data.CertIssedTo + * @static + * @param {vereign.protobuf.qrcode_data.ICertIssedTo=} [properties] Properties to set + * @returns {vereign.protobuf.qrcode_data.CertIssedTo} CertIssedTo instance + */ + CertIssedTo.create = function create(properties) { + return new CertIssedTo(properties); + }; + /** + * Encodes the specified CertIssedTo message. Does not implicitly {@link vereign.protobuf.qrcode_data.CertIssedTo.verify|verify} messages. + * @function encode + * @memberof vereign.protobuf.qrcode_data.CertIssedTo + * @static + * @param {vereign.protobuf.qrcode_data.ICertIssedTo} message CertIssedTo message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + CertIssedTo.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.countryName != null && Object.hasOwnProperty.call(message, "countryName")) + writer.uint32(/* id 1, wireType 2 =*/ 10).string(message.countryName); + if (message.organizationalUnitName != null && Object.hasOwnProperty.call(message, "organizationalUnitName")) + writer.uint32(/* id 2, wireType 2 =*/ 18).string(message.organizationalUnitName); + if (message.organizationName != null && Object.hasOwnProperty.call(message, "organizationName")) + writer.uint32(/* id 3, wireType 2 =*/ 26).string(message.organizationName); + if (message.commonName != null && Object.hasOwnProperty.call(message, "commonName")) + writer.uint32(/* id 4, wireType 2 =*/ 34).string(message.commonName); + return writer; + }; + /** + * Encodes the specified CertIssedTo message, length delimited. Does not implicitly {@link vereign.protobuf.qrcode_data.CertIssedTo.verify|verify} messages. + * @function encodeDelimited + * @memberof vereign.protobuf.qrcode_data.CertIssedTo + * @static + * @param {vereign.protobuf.qrcode_data.ICertIssedTo} message CertIssedTo message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + CertIssedTo.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + /** + * Decodes a CertIssedTo message from the specified reader or buffer. + * @function decode + * @memberof vereign.protobuf.qrcode_data.CertIssedTo + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {vereign.protobuf.qrcode_data.CertIssedTo} CertIssedTo + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + CertIssedTo.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.vereign.protobuf.qrcode_data.CertIssedTo(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.countryName = reader.string(); + break; + case 2: + message.organizationalUnitName = reader.string(); + break; + case 3: + message.organizationName = reader.string(); + break; + case 4: + message.commonName = reader.string(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + /** + * Decodes a CertIssedTo message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof vereign.protobuf.qrcode_data.CertIssedTo + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {vereign.protobuf.qrcode_data.CertIssedTo} CertIssedTo + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + CertIssedTo.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + /** + * Verifies a CertIssedTo message. + * @function verify + * @memberof vereign.protobuf.qrcode_data.CertIssedTo + * @static + * @param {Object.<string,*>} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + CertIssedTo.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.countryName != null && message.hasOwnProperty("countryName")) + if (!$util.isString(message.countryName)) + return "countryName: string expected"; + if (message.organizationalUnitName != null && message.hasOwnProperty("organizationalUnitName")) + if (!$util.isString(message.organizationalUnitName)) + return "organizationalUnitName: string expected"; + if (message.organizationName != null && message.hasOwnProperty("organizationName")) + if (!$util.isString(message.organizationName)) + return "organizationName: string expected"; + if (message.commonName != null && message.hasOwnProperty("commonName")) + if (!$util.isString(message.commonName)) + return "commonName: string expected"; + return null; + }; + /** + * Creates a CertIssedTo message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof vereign.protobuf.qrcode_data.CertIssedTo + * @static + * @param {Object.<string,*>} object Plain object + * @returns {vereign.protobuf.qrcode_data.CertIssedTo} CertIssedTo + */ + CertIssedTo.fromObject = function fromObject(object) { + if (object instanceof $root.vereign.protobuf.qrcode_data.CertIssedTo) + return object; + var message = new $root.vereign.protobuf.qrcode_data.CertIssedTo(); + if (object.countryName != null) + message.countryName = String(object.countryName); + if (object.organizationalUnitName != null) + message.organizationalUnitName = String(object.organizationalUnitName); + if (object.organizationName != null) + message.organizationName = String(object.organizationName); + if (object.commonName != null) + message.commonName = String(object.commonName); + return message; + }; + /** + * Creates a plain object from a CertIssedTo message. Also converts values to other types if specified. + * @function toObject + * @memberof vereign.protobuf.qrcode_data.CertIssedTo + * @static + * @param {vereign.protobuf.qrcode_data.CertIssedTo} message CertIssedTo + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.<string,*>} Plain object + */ + CertIssedTo.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.countryName = ""; + object.organizationalUnitName = ""; + object.organizationName = ""; + object.commonName = ""; + } + if (message.countryName != null && message.hasOwnProperty("countryName")) + object.countryName = message.countryName; + if (message.organizationalUnitName != null && message.hasOwnProperty("organizationalUnitName")) + object.organizationalUnitName = message.organizationalUnitName; + if (message.organizationName != null && message.hasOwnProperty("organizationName")) + object.organizationName = message.organizationName; + if (message.commonName != null && message.hasOwnProperty("commonName")) + object.commonName = message.commonName; + return object; + }; + /** + * Converts this CertIssedTo to JSON. + * @function toJSON + * @memberof vereign.protobuf.qrcode_data.CertIssedTo + * @instance + * @returns {Object.<string,*>} JSON object + */ + CertIssedTo.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + return CertIssedTo; + })(); + qrcode_data.CertValidity = (function () { + /** + * Properties of a CertValidity. + * @memberof vereign.protobuf.qrcode_data + * @interface ICertValidity + * @property {string|null} [notBefore] CertValidity notBefore + * @property {string|null} [notAfter] CertValidity notAfter + */ + /** + * Constructs a new CertValidity. + * @memberof vereign.protobuf.qrcode_data + * @classdesc Represents a CertValidity. + * @implements ICertValidity + * @constructor + * @param {vereign.protobuf.qrcode_data.ICertValidity=} [properties] Properties to set + */ + function CertValidity(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + /** + * CertValidity notBefore. + * @member {string} notBefore + * @memberof vereign.protobuf.qrcode_data.CertValidity + * @instance + */ + CertValidity.prototype.notBefore = ""; + /** + * CertValidity notAfter. + * @member {string} notAfter + * @memberof vereign.protobuf.qrcode_data.CertValidity + * @instance + */ + CertValidity.prototype.notAfter = ""; + /** + * Creates a new CertValidity instance using the specified properties. + * @function create + * @memberof vereign.protobuf.qrcode_data.CertValidity + * @static + * @param {vereign.protobuf.qrcode_data.ICertValidity=} [properties] Properties to set + * @returns {vereign.protobuf.qrcode_data.CertValidity} CertValidity instance + */ + CertValidity.create = function create(properties) { + return new CertValidity(properties); + }; + /** + * Encodes the specified CertValidity message. Does not implicitly {@link vereign.protobuf.qrcode_data.CertValidity.verify|verify} messages. + * @function encode + * @memberof vereign.protobuf.qrcode_data.CertValidity + * @static + * @param {vereign.protobuf.qrcode_data.ICertValidity} message CertValidity message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + CertValidity.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.notBefore != null && Object.hasOwnProperty.call(message, "notBefore")) + writer.uint32(/* id 1, wireType 2 =*/ 10).string(message.notBefore); + if (message.notAfter != null && Object.hasOwnProperty.call(message, "notAfter")) + writer.uint32(/* id 2, wireType 2 =*/ 18).string(message.notAfter); + return writer; + }; + /** + * Encodes the specified CertValidity message, length delimited. Does not implicitly {@link vereign.protobuf.qrcode_data.CertValidity.verify|verify} messages. + * @function encodeDelimited + * @memberof vereign.protobuf.qrcode_data.CertValidity + * @static + * @param {vereign.protobuf.qrcode_data.ICertValidity} message CertValidity message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + CertValidity.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + /** + * Decodes a CertValidity message from the specified reader or buffer. + * @function decode + * @memberof vereign.protobuf.qrcode_data.CertValidity + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {vereign.protobuf.qrcode_data.CertValidity} CertValidity + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + CertValidity.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.vereign.protobuf.qrcode_data.CertValidity(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.notBefore = reader.string(); + break; + case 2: + message.notAfter = reader.string(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + /** + * Decodes a CertValidity message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof vereign.protobuf.qrcode_data.CertValidity + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {vereign.protobuf.qrcode_data.CertValidity} CertValidity + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + CertValidity.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + /** + * Verifies a CertValidity message. + * @function verify + * @memberof vereign.protobuf.qrcode_data.CertValidity + * @static + * @param {Object.<string,*>} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + CertValidity.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.notBefore != null && message.hasOwnProperty("notBefore")) + if (!$util.isString(message.notBefore)) + return "notBefore: string expected"; + if (message.notAfter != null && message.hasOwnProperty("notAfter")) + if (!$util.isString(message.notAfter)) + return "notAfter: string expected"; + return null; + }; + /** + * Creates a CertValidity message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof vereign.protobuf.qrcode_data.CertValidity + * @static + * @param {Object.<string,*>} object Plain object + * @returns {vereign.protobuf.qrcode_data.CertValidity} CertValidity + */ + CertValidity.fromObject = function fromObject(object) { + if (object instanceof $root.vereign.protobuf.qrcode_data.CertValidity) + return object; + var message = new $root.vereign.protobuf.qrcode_data.CertValidity(); + if (object.notBefore != null) + message.notBefore = String(object.notBefore); + if (object.notAfter != null) + message.notAfter = String(object.notAfter); + return message; + }; + /** + * Creates a plain object from a CertValidity message. Also converts values to other types if specified. + * @function toObject + * @memberof vereign.protobuf.qrcode_data.CertValidity + * @static + * @param {vereign.protobuf.qrcode_data.CertValidity} message CertValidity + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.<string,*>} Plain object + */ + CertValidity.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.notBefore = ""; + object.notAfter = ""; + } + if (message.notBefore != null && message.hasOwnProperty("notBefore")) + object.notBefore = message.notBefore; + if (message.notAfter != null && message.hasOwnProperty("notAfter")) + object.notAfter = message.notAfter; + return object; + }; + /** + * Converts this CertValidity to JSON. + * @function toJSON + * @memberof vereign.protobuf.qrcode_data.CertValidity + * @instance + * @returns {Object.<string,*>} JSON object + */ + CertValidity.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + return CertValidity; + })(); + qrcode_data.Cert_V1 = (function () { + /** + * Properties of a Cert_V1. + * @memberof vereign.protobuf.qrcode_data + * @interface ICert_V1 + * @property {boolean|null} [clientCertificate] Cert_V1 clientCertificate + * @property {vereign.protobuf.qrcode_data.ICertIssuer|null} [issuedBy] Cert_V1 issuedBy + * @property {vereign.protobuf.qrcode_data.ICertIssedTo|null} [issuedTo] Cert_V1 issuedTo + * @property {vereign.protobuf.qrcode_data.ICertValidity|null} [validityPeriod] Cert_V1 validityPeriod + * @property {string|null} [pemCertificate] Cert_V1 pemCertificate + */ + /** + * Constructs a new Cert_V1. + * @memberof vereign.protobuf.qrcode_data + * @classdesc Represents a Cert_V1. + * @implements ICert_V1 + * @constructor + * @param {vereign.protobuf.qrcode_data.ICert_V1=} [properties] Properties to set + */ + function Cert_V1(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + /** + * Cert_V1 clientCertificate. + * @member {boolean} clientCertificate + * @memberof vereign.protobuf.qrcode_data.Cert_V1 + * @instance + */ + Cert_V1.prototype.clientCertificate = false; + /** + * Cert_V1 issuedBy. + * @member {vereign.protobuf.qrcode_data.ICertIssuer|null|undefined} issuedBy + * @memberof vereign.protobuf.qrcode_data.Cert_V1 + * @instance + */ + Cert_V1.prototype.issuedBy = null; + /** + * Cert_V1 issuedTo. + * @member {vereign.protobuf.qrcode_data.ICertIssedTo|null|undefined} issuedTo + * @memberof vereign.protobuf.qrcode_data.Cert_V1 + * @instance + */ + Cert_V1.prototype.issuedTo = null; + /** + * Cert_V1 validityPeriod. + * @member {vereign.protobuf.qrcode_data.ICertValidity|null|undefined} validityPeriod + * @memberof vereign.protobuf.qrcode_data.Cert_V1 + * @instance + */ + Cert_V1.prototype.validityPeriod = null; + /** + * Cert_V1 pemCertificate. + * @member {string} pemCertificate + * @memberof vereign.protobuf.qrcode_data.Cert_V1 + * @instance + */ + Cert_V1.prototype.pemCertificate = ""; + /** + * Creates a new Cert_V1 instance using the specified properties. + * @function create + * @memberof vereign.protobuf.qrcode_data.Cert_V1 + * @static + * @param {vereign.protobuf.qrcode_data.ICert_V1=} [properties] Properties to set + * @returns {vereign.protobuf.qrcode_data.Cert_V1} Cert_V1 instance + */ + Cert_V1.create = function create(properties) { + return new Cert_V1(properties); + }; + /** + * Encodes the specified Cert_V1 message. Does not implicitly {@link vereign.protobuf.qrcode_data.Cert_V1.verify|verify} messages. + * @function encode + * @memberof vereign.protobuf.qrcode_data.Cert_V1 + * @static + * @param {vereign.protobuf.qrcode_data.ICert_V1} message Cert_V1 message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Cert_V1.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.clientCertificate != null && Object.hasOwnProperty.call(message, "clientCertificate")) + writer.uint32(/* id 1, wireType 0 =*/ 8).bool(message.clientCertificate); + if (message.issuedBy != null && Object.hasOwnProperty.call(message, "issuedBy")) + $root.vereign.protobuf.qrcode_data.CertIssuer.encode(message.issuedBy, writer.uint32(/* id 2, wireType 2 =*/ 18).fork()).ldelim(); + if (message.issuedTo != null && Object.hasOwnProperty.call(message, "issuedTo")) + $root.vereign.protobuf.qrcode_data.CertIssedTo.encode(message.issuedTo, writer.uint32(/* id 3, wireType 2 =*/ 26).fork()).ldelim(); + if (message.validityPeriod != null && Object.hasOwnProperty.call(message, "validityPeriod")) + $root.vereign.protobuf.qrcode_data.CertValidity.encode(message.validityPeriod, writer.uint32(/* id 4, wireType 2 =*/ 34).fork()).ldelim(); + if (message.pemCertificate != null && Object.hasOwnProperty.call(message, "pemCertificate")) + writer.uint32(/* id 5, wireType 2 =*/ 42).string(message.pemCertificate); + return writer; + }; + /** + * Encodes the specified Cert_V1 message, length delimited. Does not implicitly {@link vereign.protobuf.qrcode_data.Cert_V1.verify|verify} messages. + * @function encodeDelimited + * @memberof vereign.protobuf.qrcode_data.Cert_V1 + * @static + * @param {vereign.protobuf.qrcode_data.ICert_V1} message Cert_V1 message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Cert_V1.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + /** + * Decodes a Cert_V1 message from the specified reader or buffer. + * @function decode + * @memberof vereign.protobuf.qrcode_data.Cert_V1 + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {vereign.protobuf.qrcode_data.Cert_V1} Cert_V1 + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Cert_V1.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.vereign.protobuf.qrcode_data.Cert_V1(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.clientCertificate = reader.bool(); + break; + case 2: + message.issuedBy = $root.vereign.protobuf.qrcode_data.CertIssuer.decode(reader, reader.uint32()); + break; + case 3: + message.issuedTo = $root.vereign.protobuf.qrcode_data.CertIssedTo.decode(reader, reader.uint32()); + break; + case 4: + message.validityPeriod = $root.vereign.protobuf.qrcode_data.CertValidity.decode(reader, reader.uint32()); + break; + case 5: + message.pemCertificate = reader.string(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + /** + * Decodes a Cert_V1 message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof vereign.protobuf.qrcode_data.Cert_V1 + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {vereign.protobuf.qrcode_data.Cert_V1} Cert_V1 + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Cert_V1.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + /** + * Verifies a Cert_V1 message. + * @function verify + * @memberof vereign.protobuf.qrcode_data.Cert_V1 + * @static + * @param {Object.<string,*>} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + Cert_V1.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.clientCertificate != null && message.hasOwnProperty("clientCertificate")) + if (typeof message.clientCertificate !== "boolean") + return "clientCertificate: boolean expected"; + if (message.issuedBy != null && message.hasOwnProperty("issuedBy")) { + var error = $root.vereign.protobuf.qrcode_data.CertIssuer.verify(message.issuedBy); + if (error) + return "issuedBy." + error; + } + if (message.issuedTo != null && message.hasOwnProperty("issuedTo")) { + var error = $root.vereign.protobuf.qrcode_data.CertIssedTo.verify(message.issuedTo); + if (error) + return "issuedTo." + error; + } + if (message.validityPeriod != null && message.hasOwnProperty("validityPeriod")) { + var error = $root.vereign.protobuf.qrcode_data.CertValidity.verify(message.validityPeriod); + if (error) + return "validityPeriod." + error; + } + if (message.pemCertificate != null && message.hasOwnProperty("pemCertificate")) + if (!$util.isString(message.pemCertificate)) + return "pemCertificate: string expected"; + return null; + }; + /** + * Creates a Cert_V1 message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof vereign.protobuf.qrcode_data.Cert_V1 + * @static + * @param {Object.<string,*>} object Plain object + * @returns {vereign.protobuf.qrcode_data.Cert_V1} Cert_V1 + */ + Cert_V1.fromObject = function fromObject(object) { + if (object instanceof $root.vereign.protobuf.qrcode_data.Cert_V1) + return object; + var message = new $root.vereign.protobuf.qrcode_data.Cert_V1(); + if (object.clientCertificate != null) + message.clientCertificate = Boolean(object.clientCertificate); + if (object.issuedBy != null) { + if (typeof object.issuedBy !== "object") + throw TypeError(".vereign.protobuf.qrcode_data.Cert_V1.issuedBy: object expected"); + message.issuedBy = $root.vereign.protobuf.qrcode_data.CertIssuer.fromObject(object.issuedBy); + } + if (object.issuedTo != null) { + if (typeof object.issuedTo !== "object") + throw TypeError(".vereign.protobuf.qrcode_data.Cert_V1.issuedTo: object expected"); + message.issuedTo = $root.vereign.protobuf.qrcode_data.CertIssedTo.fromObject(object.issuedTo); + } + if (object.validityPeriod != null) { + if (typeof object.validityPeriod !== "object") + throw TypeError(".vereign.protobuf.qrcode_data.Cert_V1.validityPeriod: object expected"); + message.validityPeriod = $root.vereign.protobuf.qrcode_data.CertValidity.fromObject(object.validityPeriod); + } + if (object.pemCertificate != null) + message.pemCertificate = String(object.pemCertificate); + return message; + }; + /** + * Creates a plain object from a Cert_V1 message. Also converts values to other types if specified. + * @function toObject + * @memberof vereign.protobuf.qrcode_data.Cert_V1 + * @static + * @param {vereign.protobuf.qrcode_data.Cert_V1} message Cert_V1 + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.<string,*>} Plain object + */ + Cert_V1.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.clientCertificate = false; + object.issuedBy = null; + object.issuedTo = null; + object.validityPeriod = null; + object.pemCertificate = ""; + } + if (message.clientCertificate != null && message.hasOwnProperty("clientCertificate")) + object.clientCertificate = message.clientCertificate; + if (message.issuedBy != null && message.hasOwnProperty("issuedBy")) + object.issuedBy = $root.vereign.protobuf.qrcode_data.CertIssuer.toObject(message.issuedBy, options); + if (message.issuedTo != null && message.hasOwnProperty("issuedTo")) + object.issuedTo = $root.vereign.protobuf.qrcode_data.CertIssedTo.toObject(message.issuedTo, options); + if (message.validityPeriod != null && message.hasOwnProperty("validityPeriod")) + object.validityPeriod = $root.vereign.protobuf.qrcode_data.CertValidity.toObject(message.validityPeriod, options); + if (message.pemCertificate != null && message.hasOwnProperty("pemCertificate")) + object.pemCertificate = message.pemCertificate; + return object; + }; + /** + * Converts this Cert_V1 to JSON. + * @function toJSON + * @memberof vereign.protobuf.qrcode_data.Cert_V1 + * @instance + * @returns {Object.<string,*>} JSON object + */ + Cert_V1.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + return Cert_V1; + })(); + qrcode_data.SignatureMeta_V1 = (function () { + /** + * Properties of a SignatureMeta_V1. + * @memberof vereign.protobuf.qrcode_data + * @interface ISignatureMeta_V1 + * @property {Array.<vereign.protobuf.qrcode_data.ICert_V1>|null} [certs] SignatureMeta_V1 certs + * @property {string|null} [reason] SignatureMeta_V1 reason + * @property {string|null} [contactInfo] SignatureMeta_V1 contactInfo + * @property {string|null} [location] SignatureMeta_V1 location + * @property {string|null} [signDate] SignatureMeta_V1 signDate + */ + /** + * Constructs a new SignatureMeta_V1. + * @memberof vereign.protobuf.qrcode_data + * @classdesc Represents a SignatureMeta_V1. + * @implements ISignatureMeta_V1 + * @constructor + * @param {vereign.protobuf.qrcode_data.ISignatureMeta_V1=} [properties] Properties to set + */ + function SignatureMeta_V1(properties) { + this.certs = []; + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + /** + * SignatureMeta_V1 certs. + * @member {Array.<vereign.protobuf.qrcode_data.ICert_V1>} certs + * @memberof vereign.protobuf.qrcode_data.SignatureMeta_V1 + * @instance + */ + SignatureMeta_V1.prototype.certs = $util.emptyArray; + /** + * SignatureMeta_V1 reason. + * @member {string} reason + * @memberof vereign.protobuf.qrcode_data.SignatureMeta_V1 + * @instance + */ + SignatureMeta_V1.prototype.reason = ""; + /** + * SignatureMeta_V1 contactInfo. + * @member {string} contactInfo + * @memberof vereign.protobuf.qrcode_data.SignatureMeta_V1 + * @instance + */ + SignatureMeta_V1.prototype.contactInfo = ""; + /** + * SignatureMeta_V1 location. + * @member {string} location + * @memberof vereign.protobuf.qrcode_data.SignatureMeta_V1 + * @instance + */ + SignatureMeta_V1.prototype.location = ""; + /** + * SignatureMeta_V1 signDate. + * @member {string} signDate + * @memberof vereign.protobuf.qrcode_data.SignatureMeta_V1 + * @instance + */ + SignatureMeta_V1.prototype.signDate = ""; + /** + * Creates a new SignatureMeta_V1 instance using the specified properties. + * @function create + * @memberof vereign.protobuf.qrcode_data.SignatureMeta_V1 + * @static + * @param {vereign.protobuf.qrcode_data.ISignatureMeta_V1=} [properties] Properties to set + * @returns {vereign.protobuf.qrcode_data.SignatureMeta_V1} SignatureMeta_V1 instance + */ + SignatureMeta_V1.create = function create(properties) { + return new SignatureMeta_V1(properties); + }; + /** + * Encodes the specified SignatureMeta_V1 message. Does not implicitly {@link vereign.protobuf.qrcode_data.SignatureMeta_V1.verify|verify} messages. + * @function encode + * @memberof vereign.protobuf.qrcode_data.SignatureMeta_V1 + * @static + * @param {vereign.protobuf.qrcode_data.ISignatureMeta_V1} message SignatureMeta_V1 message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + SignatureMeta_V1.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.certs != null && message.certs.length) + for (var i = 0; i < message.certs.length; ++i) + $root.vereign.protobuf.qrcode_data.Cert_V1.encode(message.certs[i], writer.uint32(/* id 1, wireType 2 =*/ 10).fork()).ldelim(); + if (message.reason != null && Object.hasOwnProperty.call(message, "reason")) + writer.uint32(/* id 2, wireType 2 =*/ 18).string(message.reason); + if (message.contactInfo != null && Object.hasOwnProperty.call(message, "contactInfo")) + writer.uint32(/* id 3, wireType 2 =*/ 26).string(message.contactInfo); + if (message.location != null && Object.hasOwnProperty.call(message, "location")) + writer.uint32(/* id 4, wireType 2 =*/ 34).string(message.location); + if (message.signDate != null && Object.hasOwnProperty.call(message, "signDate")) + writer.uint32(/* id 5, wireType 2 =*/ 42).string(message.signDate); + return writer; + }; + /** + * Encodes the specified SignatureMeta_V1 message, length delimited. Does not implicitly {@link vereign.protobuf.qrcode_data.SignatureMeta_V1.verify|verify} messages. + * @function encodeDelimited + * @memberof vereign.protobuf.qrcode_data.SignatureMeta_V1 + * @static + * @param {vereign.protobuf.qrcode_data.ISignatureMeta_V1} message SignatureMeta_V1 message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + SignatureMeta_V1.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + /** + * Decodes a SignatureMeta_V1 message from the specified reader or buffer. + * @function decode + * @memberof vereign.protobuf.qrcode_data.SignatureMeta_V1 + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {vereign.protobuf.qrcode_data.SignatureMeta_V1} SignatureMeta_V1 + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + SignatureMeta_V1.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.vereign.protobuf.qrcode_data.SignatureMeta_V1(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + if (!(message.certs && message.certs.length)) + message.certs = []; + message.certs.push($root.vereign.protobuf.qrcode_data.Cert_V1.decode(reader, reader.uint32())); + break; + case 2: + message.reason = reader.string(); + break; + case 3: + message.contactInfo = reader.string(); + break; + case 4: + message.location = reader.string(); + break; + case 5: + message.signDate = reader.string(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + /** + * Decodes a SignatureMeta_V1 message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof vereign.protobuf.qrcode_data.SignatureMeta_V1 + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {vereign.protobuf.qrcode_data.SignatureMeta_V1} SignatureMeta_V1 + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + SignatureMeta_V1.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + /** + * Verifies a SignatureMeta_V1 message. + * @function verify + * @memberof vereign.protobuf.qrcode_data.SignatureMeta_V1 + * @static + * @param {Object.<string,*>} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + SignatureMeta_V1.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.certs != null && message.hasOwnProperty("certs")) { + if (!Array.isArray(message.certs)) + return "certs: array expected"; + for (var i = 0; i < message.certs.length; ++i) { + var error = $root.vereign.protobuf.qrcode_data.Cert_V1.verify(message.certs[i]); + if (error) + return "certs." + error; + } + } + if (message.reason != null && message.hasOwnProperty("reason")) + if (!$util.isString(message.reason)) + return "reason: string expected"; + if (message.contactInfo != null && message.hasOwnProperty("contactInfo")) + if (!$util.isString(message.contactInfo)) + return "contactInfo: string expected"; + if (message.location != null && message.hasOwnProperty("location")) + if (!$util.isString(message.location)) + return "location: string expected"; + if (message.signDate != null && message.hasOwnProperty("signDate")) + if (!$util.isString(message.signDate)) + return "signDate: string expected"; + return null; + }; + /** + * Creates a SignatureMeta_V1 message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof vereign.protobuf.qrcode_data.SignatureMeta_V1 + * @static + * @param {Object.<string,*>} object Plain object + * @returns {vereign.protobuf.qrcode_data.SignatureMeta_V1} SignatureMeta_V1 + */ + SignatureMeta_V1.fromObject = function fromObject(object) { + if (object instanceof $root.vereign.protobuf.qrcode_data.SignatureMeta_V1) + return object; + var message = new $root.vereign.protobuf.qrcode_data.SignatureMeta_V1(); + if (object.certs) { + if (!Array.isArray(object.certs)) + throw TypeError(".vereign.protobuf.qrcode_data.SignatureMeta_V1.certs: array expected"); + message.certs = []; + for (var i = 0; i < object.certs.length; ++i) { + if (typeof object.certs[i] !== "object") + throw TypeError(".vereign.protobuf.qrcode_data.SignatureMeta_V1.certs: object expected"); + message.certs[i] = $root.vereign.protobuf.qrcode_data.Cert_V1.fromObject(object.certs[i]); + } + } + if (object.reason != null) + message.reason = String(object.reason); + if (object.contactInfo != null) + message.contactInfo = String(object.contactInfo); + if (object.location != null) + message.location = String(object.location); + if (object.signDate != null) + message.signDate = String(object.signDate); + return message; + }; + /** + * Creates a plain object from a SignatureMeta_V1 message. Also converts values to other types if specified. + * @function toObject + * @memberof vereign.protobuf.qrcode_data.SignatureMeta_V1 + * @static + * @param {vereign.protobuf.qrcode_data.SignatureMeta_V1} message SignatureMeta_V1 + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.<string,*>} Plain object + */ + SignatureMeta_V1.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.arrays || options.defaults) + object.certs = []; + if (options.defaults) { + object.reason = ""; + object.contactInfo = ""; + object.location = ""; + object.signDate = ""; + } + if (message.certs && message.certs.length) { + object.certs = []; + for (var j = 0; j < message.certs.length; ++j) + object.certs[j] = $root.vereign.protobuf.qrcode_data.Cert_V1.toObject(message.certs[j], options); + } + if (message.reason != null && message.hasOwnProperty("reason")) + object.reason = message.reason; + if (message.contactInfo != null && message.hasOwnProperty("contactInfo")) + object.contactInfo = message.contactInfo; + if (message.location != null && message.hasOwnProperty("location")) + object.location = message.location; + if (message.signDate != null && message.hasOwnProperty("signDate")) + object.signDate = message.signDate; + return object; + }; + /** + * Converts this SignatureMeta_V1 to JSON. + * @function toJSON + * @memberof vereign.protobuf.qrcode_data.SignatureMeta_V1 + * @instance + * @returns {Object.<string,*>} JSON object + */ + SignatureMeta_V1.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + return SignatureMeta_V1; + })(); + qrcode_data.Signature_V1 = (function () { + /** + * Properties of a Signature_V1. + * @memberof vereign.protobuf.qrcode_data + * @interface ISignature_V1 + * @property {boolean|null} [isExpired] Signature_V1 isExpired + * @property {vereign.protobuf.qrcode_data.ISignatureMeta_V1|null} [meta] Signature_V1 meta + */ + /** + * Constructs a new Signature_V1. + * @memberof vereign.protobuf.qrcode_data + * @classdesc Represents a Signature_V1. + * @implements ISignature_V1 + * @constructor + * @param {vereign.protobuf.qrcode_data.ISignature_V1=} [properties] Properties to set + */ + function Signature_V1(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + /** + * Signature_V1 isExpired. + * @member {boolean} isExpired + * @memberof vereign.protobuf.qrcode_data.Signature_V1 + * @instance + */ + Signature_V1.prototype.isExpired = false; + /** + * Signature_V1 meta. + * @member {vereign.protobuf.qrcode_data.ISignatureMeta_V1|null|undefined} meta + * @memberof vereign.protobuf.qrcode_data.Signature_V1 + * @instance + */ + Signature_V1.prototype.meta = null; + /** + * Creates a new Signature_V1 instance using the specified properties. + * @function create + * @memberof vereign.protobuf.qrcode_data.Signature_V1 + * @static + * @param {vereign.protobuf.qrcode_data.ISignature_V1=} [properties] Properties to set + * @returns {vereign.protobuf.qrcode_data.Signature_V1} Signature_V1 instance + */ + Signature_V1.create = function create(properties) { + return new Signature_V1(properties); + }; + /** + * Encodes the specified Signature_V1 message. Does not implicitly {@link vereign.protobuf.qrcode_data.Signature_V1.verify|verify} messages. + * @function encode + * @memberof vereign.protobuf.qrcode_data.Signature_V1 + * @static + * @param {vereign.protobuf.qrcode_data.ISignature_V1} message Signature_V1 message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Signature_V1.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.isExpired != null && Object.hasOwnProperty.call(message, "isExpired")) + writer.uint32(/* id 1, wireType 0 =*/ 8).bool(message.isExpired); + if (message.meta != null && Object.hasOwnProperty.call(message, "meta")) + $root.vereign.protobuf.qrcode_data.SignatureMeta_V1.encode(message.meta, writer.uint32(/* id 2, wireType 2 =*/ 18).fork()).ldelim(); + return writer; + }; + /** + * Encodes the specified Signature_V1 message, length delimited. Does not implicitly {@link vereign.protobuf.qrcode_data.Signature_V1.verify|verify} messages. + * @function encodeDelimited + * @memberof vereign.protobuf.qrcode_data.Signature_V1 + * @static + * @param {vereign.protobuf.qrcode_data.ISignature_V1} message Signature_V1 message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Signature_V1.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + /** + * Decodes a Signature_V1 message from the specified reader or buffer. + * @function decode + * @memberof vereign.protobuf.qrcode_data.Signature_V1 + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {vereign.protobuf.qrcode_data.Signature_V1} Signature_V1 + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Signature_V1.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.vereign.protobuf.qrcode_data.Signature_V1(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.isExpired = reader.bool(); + break; + case 2: + message.meta = $root.vereign.protobuf.qrcode_data.SignatureMeta_V1.decode(reader, reader.uint32()); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + /** + * Decodes a Signature_V1 message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof vereign.protobuf.qrcode_data.Signature_V1 + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {vereign.protobuf.qrcode_data.Signature_V1} Signature_V1 + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Signature_V1.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + /** + * Verifies a Signature_V1 message. + * @function verify + * @memberof vereign.protobuf.qrcode_data.Signature_V1 + * @static + * @param {Object.<string,*>} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + Signature_V1.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.isExpired != null && message.hasOwnProperty("isExpired")) + if (typeof message.isExpired !== "boolean") + return "isExpired: boolean expected"; + if (message.meta != null && message.hasOwnProperty("meta")) { + var error = $root.vereign.protobuf.qrcode_data.SignatureMeta_V1.verify(message.meta); + if (error) + return "meta." + error; + } + return null; + }; + /** + * Creates a Signature_V1 message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof vereign.protobuf.qrcode_data.Signature_V1 + * @static + * @param {Object.<string,*>} object Plain object + * @returns {vereign.protobuf.qrcode_data.Signature_V1} Signature_V1 + */ + Signature_V1.fromObject = function fromObject(object) { + if (object instanceof $root.vereign.protobuf.qrcode_data.Signature_V1) + return object; + var message = new $root.vereign.protobuf.qrcode_data.Signature_V1(); + if (object.isExpired != null) + message.isExpired = Boolean(object.isExpired); + if (object.meta != null) { + if (typeof object.meta !== "object") + throw TypeError(".vereign.protobuf.qrcode_data.Signature_V1.meta: object expected"); + message.meta = $root.vereign.protobuf.qrcode_data.SignatureMeta_V1.fromObject(object.meta); + } + return message; + }; + /** + * Creates a plain object from a Signature_V1 message. Also converts values to other types if specified. + * @function toObject + * @memberof vereign.protobuf.qrcode_data.Signature_V1 + * @static + * @param {vereign.protobuf.qrcode_data.Signature_V1} message Signature_V1 + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.<string,*>} Plain object + */ + Signature_V1.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.isExpired = false; + object.meta = null; + } + if (message.isExpired != null && message.hasOwnProperty("isExpired")) + object.isExpired = message.isExpired; + if (message.meta != null && message.hasOwnProperty("meta")) + object.meta = $root.vereign.protobuf.qrcode_data.SignatureMeta_V1.toObject(message.meta, options); + return object; + }; + /** + * Converts this Signature_V1 to JSON. + * @function toJSON + * @memberof vereign.protobuf.qrcode_data.Signature_V1 + * @instance + * @returns {Object.<string,*>} JSON object + */ + Signature_V1.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + return Signature_V1; + })(); + qrcode_data.DocumentData_V1 = (function () { + /** + * Properties of a DocumentData_V1. + * @memberof vereign.protobuf.qrcode_data + * @interface IDocumentData_V1 + * @property {string|null} [author] DocumentData_V1 author + * @property {string|null} [documentTitle] DocumentData_V1 documentTitle + * @property {string|null} [creationDate] DocumentData_V1 creationDate + * @property {string|null} [lastModDate] DocumentData_V1 lastModDate + * @property {number|null} [documentPages] DocumentData_V1 documentPages + * @property {boolean|null} [expired] DocumentData_V1 expired + * @property {Array.<vereign.protobuf.qrcode_data.ISignature_V1>|null} [signatures] DocumentData_V1 signatures + * @property {vereign.protobuf.qrcode_data.IIpfsContentData_V1|null} [ipfs] DocumentData_V1 ipfs + */ + /** + * Constructs a new DocumentData_V1. + * @memberof vereign.protobuf.qrcode_data + * @classdesc Represents a DocumentData_V1. + * @implements IDocumentData_V1 + * @constructor + * @param {vereign.protobuf.qrcode_data.IDocumentData_V1=} [properties] Properties to set + */ + function DocumentData_V1(properties) { + this.signatures = []; + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + /** + * DocumentData_V1 author. + * @member {string} author + * @memberof vereign.protobuf.qrcode_data.DocumentData_V1 + * @instance + */ + DocumentData_V1.prototype.author = ""; + /** + * DocumentData_V1 documentTitle. + * @member {string} documentTitle + * @memberof vereign.protobuf.qrcode_data.DocumentData_V1 + * @instance + */ + DocumentData_V1.prototype.documentTitle = ""; + /** + * DocumentData_V1 creationDate. + * @member {string} creationDate + * @memberof vereign.protobuf.qrcode_data.DocumentData_V1 + * @instance + */ + DocumentData_V1.prototype.creationDate = ""; + /** + * DocumentData_V1 lastModDate. + * @member {string} lastModDate + * @memberof vereign.protobuf.qrcode_data.DocumentData_V1 + * @instance + */ + DocumentData_V1.prototype.lastModDate = ""; + /** + * DocumentData_V1 documentPages. + * @member {number} documentPages + * @memberof vereign.protobuf.qrcode_data.DocumentData_V1 + * @instance + */ + DocumentData_V1.prototype.documentPages = 0; + /** + * DocumentData_V1 expired. + * @member {boolean} expired + * @memberof vereign.protobuf.qrcode_data.DocumentData_V1 + * @instance + */ + DocumentData_V1.prototype.expired = false; + /** + * DocumentData_V1 signatures. + * @member {Array.<vereign.protobuf.qrcode_data.ISignature_V1>} signatures + * @memberof vereign.protobuf.qrcode_data.DocumentData_V1 + * @instance + */ + DocumentData_V1.prototype.signatures = $util.emptyArray; + /** + * DocumentData_V1 ipfs. + * @member {vereign.protobuf.qrcode_data.IIpfsContentData_V1|null|undefined} ipfs + * @memberof vereign.protobuf.qrcode_data.DocumentData_V1 + * @instance + */ + DocumentData_V1.prototype.ipfs = null; + /** + * Creates a new DocumentData_V1 instance using the specified properties. + * @function create + * @memberof vereign.protobuf.qrcode_data.DocumentData_V1 + * @static + * @param {vereign.protobuf.qrcode_data.IDocumentData_V1=} [properties] Properties to set + * @returns {vereign.protobuf.qrcode_data.DocumentData_V1} DocumentData_V1 instance + */ + DocumentData_V1.create = function create(properties) { + return new DocumentData_V1(properties); + }; + /** + * Encodes the specified DocumentData_V1 message. Does not implicitly {@link vereign.protobuf.qrcode_data.DocumentData_V1.verify|verify} messages. + * @function encode + * @memberof vereign.protobuf.qrcode_data.DocumentData_V1 + * @static + * @param {vereign.protobuf.qrcode_data.IDocumentData_V1} message DocumentData_V1 message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + DocumentData_V1.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.author != null && Object.hasOwnProperty.call(message, "author")) + writer.uint32(/* id 1, wireType 2 =*/ 10).string(message.author); + if (message.documentTitle != null && Object.hasOwnProperty.call(message, "documentTitle")) + writer.uint32(/* id 2, wireType 2 =*/ 18).string(message.documentTitle); + if (message.creationDate != null && Object.hasOwnProperty.call(message, "creationDate")) + writer.uint32(/* id 3, wireType 2 =*/ 26).string(message.creationDate); + if (message.lastModDate != null && Object.hasOwnProperty.call(message, "lastModDate")) + writer.uint32(/* id 4, wireType 2 =*/ 34).string(message.lastModDate); + if (message.documentPages != null && Object.hasOwnProperty.call(message, "documentPages")) + writer.uint32(/* id 5, wireType 0 =*/ 40).int32(message.documentPages); + if (message.expired != null && Object.hasOwnProperty.call(message, "expired")) + writer.uint32(/* id 6, wireType 0 =*/ 48).bool(message.expired); + if (message.signatures != null && message.signatures.length) + for (var i = 0; i < message.signatures.length; ++i) + $root.vereign.protobuf.qrcode_data.Signature_V1.encode(message.signatures[i], writer.uint32(/* id 7, wireType 2 =*/ 58).fork()).ldelim(); + if (message.ipfs != null && Object.hasOwnProperty.call(message, "ipfs")) + $root.vereign.protobuf.qrcode_data.IpfsContentData_V1.encode(message.ipfs, writer.uint32(/* id 8, wireType 2 =*/ 66).fork()).ldelim(); + return writer; + }; + /** + * Encodes the specified DocumentData_V1 message, length delimited. Does not implicitly {@link vereign.protobuf.qrcode_data.DocumentData_V1.verify|verify} messages. + * @function encodeDelimited + * @memberof vereign.protobuf.qrcode_data.DocumentData_V1 + * @static + * @param {vereign.protobuf.qrcode_data.IDocumentData_V1} message DocumentData_V1 message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + DocumentData_V1.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + /** + * Decodes a DocumentData_V1 message from the specified reader or buffer. + * @function decode + * @memberof vereign.protobuf.qrcode_data.DocumentData_V1 + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {vereign.protobuf.qrcode_data.DocumentData_V1} DocumentData_V1 + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + DocumentData_V1.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.vereign.protobuf.qrcode_data.DocumentData_V1(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.author = reader.string(); + break; + case 2: + message.documentTitle = reader.string(); + break; + case 3: + message.creationDate = reader.string(); + break; + case 4: + message.lastModDate = reader.string(); + break; + case 5: + message.documentPages = reader.int32(); + break; + case 6: + message.expired = reader.bool(); + break; + case 7: + if (!(message.signatures && message.signatures.length)) + message.signatures = []; + message.signatures.push($root.vereign.protobuf.qrcode_data.Signature_V1.decode(reader, reader.uint32())); + break; + case 8: + message.ipfs = $root.vereign.protobuf.qrcode_data.IpfsContentData_V1.decode(reader, reader.uint32()); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + /** + * Decodes a DocumentData_V1 message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof vereign.protobuf.qrcode_data.DocumentData_V1 + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {vereign.protobuf.qrcode_data.DocumentData_V1} DocumentData_V1 + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + DocumentData_V1.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + /** + * Verifies a DocumentData_V1 message. + * @function verify + * @memberof vereign.protobuf.qrcode_data.DocumentData_V1 + * @static + * @param {Object.<string,*>} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + DocumentData_V1.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.author != null && message.hasOwnProperty("author")) + if (!$util.isString(message.author)) + return "author: string expected"; + if (message.documentTitle != null && message.hasOwnProperty("documentTitle")) + if (!$util.isString(message.documentTitle)) + return "documentTitle: string expected"; + if (message.creationDate != null && message.hasOwnProperty("creationDate")) + if (!$util.isString(message.creationDate)) + return "creationDate: string expected"; + if (message.lastModDate != null && message.hasOwnProperty("lastModDate")) + if (!$util.isString(message.lastModDate)) + return "lastModDate: string expected"; + if (message.documentPages != null && message.hasOwnProperty("documentPages")) + if (!$util.isInteger(message.documentPages)) + return "documentPages: integer expected"; + if (message.expired != null && message.hasOwnProperty("expired")) + if (typeof message.expired !== "boolean") + return "expired: boolean expected"; + if (message.signatures != null && message.hasOwnProperty("signatures")) { + if (!Array.isArray(message.signatures)) + return "signatures: array expected"; + for (var i = 0; i < message.signatures.length; ++i) { + var error = $root.vereign.protobuf.qrcode_data.Signature_V1.verify(message.signatures[i]); + if (error) + return "signatures." + error; + } + } + if (message.ipfs != null && message.hasOwnProperty("ipfs")) { + var error = $root.vereign.protobuf.qrcode_data.IpfsContentData_V1.verify(message.ipfs); + if (error) + return "ipfs." + error; + } + return null; + }; + /** + * Creates a DocumentData_V1 message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof vereign.protobuf.qrcode_data.DocumentData_V1 + * @static + * @param {Object.<string,*>} object Plain object + * @returns {vereign.protobuf.qrcode_data.DocumentData_V1} DocumentData_V1 + */ + DocumentData_V1.fromObject = function fromObject(object) { + if (object instanceof $root.vereign.protobuf.qrcode_data.DocumentData_V1) + return object; + var message = new $root.vereign.protobuf.qrcode_data.DocumentData_V1(); + if (object.author != null) + message.author = String(object.author); + if (object.documentTitle != null) + message.documentTitle = String(object.documentTitle); + if (object.creationDate != null) + message.creationDate = String(object.creationDate); + if (object.lastModDate != null) + message.lastModDate = String(object.lastModDate); + if (object.documentPages != null) + message.documentPages = object.documentPages | 0; + if (object.expired != null) + message.expired = Boolean(object.expired); + if (object.signatures) { + if (!Array.isArray(object.signatures)) + throw TypeError(".vereign.protobuf.qrcode_data.DocumentData_V1.signatures: array expected"); + message.signatures = []; + for (var i = 0; i < object.signatures.length; ++i) { + if (typeof object.signatures[i] !== "object") + throw TypeError(".vereign.protobuf.qrcode_data.DocumentData_V1.signatures: object expected"); + message.signatures[i] = $root.vereign.protobuf.qrcode_data.Signature_V1.fromObject(object.signatures[i]); + } + } + if (object.ipfs != null) { + if (typeof object.ipfs !== "object") + throw TypeError(".vereign.protobuf.qrcode_data.DocumentData_V1.ipfs: object expected"); + message.ipfs = $root.vereign.protobuf.qrcode_data.IpfsContentData_V1.fromObject(object.ipfs); + } + return message; + }; + /** + * Creates a plain object from a DocumentData_V1 message. Also converts values to other types if specified. + * @function toObject + * @memberof vereign.protobuf.qrcode_data.DocumentData_V1 + * @static + * @param {vereign.protobuf.qrcode_data.DocumentData_V1} message DocumentData_V1 + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.<string,*>} Plain object + */ + DocumentData_V1.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.arrays || options.defaults) + object.signatures = []; + if (options.defaults) { + object.author = ""; + object.documentTitle = ""; + object.creationDate = ""; + object.lastModDate = ""; + object.documentPages = 0; + object.expired = false; + object.ipfs = null; + } + if (message.author != null && message.hasOwnProperty("author")) + object.author = message.author; + if (message.documentTitle != null && message.hasOwnProperty("documentTitle")) + object.documentTitle = message.documentTitle; + if (message.creationDate != null && message.hasOwnProperty("creationDate")) + object.creationDate = message.creationDate; + if (message.lastModDate != null && message.hasOwnProperty("lastModDate")) + object.lastModDate = message.lastModDate; + if (message.documentPages != null && message.hasOwnProperty("documentPages")) + object.documentPages = message.documentPages; + if (message.expired != null && message.hasOwnProperty("expired")) + object.expired = message.expired; + if (message.signatures && message.signatures.length) { + object.signatures = []; + for (var j = 0; j < message.signatures.length; ++j) + object.signatures[j] = $root.vereign.protobuf.qrcode_data.Signature_V1.toObject(message.signatures[j], options); + } + if (message.ipfs != null && message.hasOwnProperty("ipfs")) + object.ipfs = $root.vereign.protobuf.qrcode_data.IpfsContentData_V1.toObject(message.ipfs, options); + return object; + }; + /** + * Converts this DocumentData_V1 to JSON. + * @function toJSON + * @memberof vereign.protobuf.qrcode_data.DocumentData_V1 + * @instance + * @returns {Object.<string,*>} JSON object + */ + DocumentData_V1.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + return DocumentData_V1; + })(); + qrcode_data.SealDocumentHeadData_V1 = (function () { + /** + * Properties of a SealDocumentHeadData_V1. + * @memberof vereign.protobuf.qrcode_data + * @interface ISealDocumentHeadData_V1 + * @property {Uint8Array|null} [key] SealDocumentHeadData_V1 key + * @property {Uint8Array|null} [data] SealDocumentHeadData_V1 data + * @property {string|null} [ipfsIndexCid] SealDocumentHeadData_V1 ipfsIndexCid + */ + /** + * Constructs a new SealDocumentHeadData_V1. + * @memberof vereign.protobuf.qrcode_data + * @classdesc Represents a SealDocumentHeadData_V1. + * @implements ISealDocumentHeadData_V1 + * @constructor + * @param {vereign.protobuf.qrcode_data.ISealDocumentHeadData_V1=} [properties] Properties to set + */ + function SealDocumentHeadData_V1(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + /** + * SealDocumentHeadData_V1 key. + * @member {Uint8Array} key + * @memberof vereign.protobuf.qrcode_data.SealDocumentHeadData_V1 + * @instance + */ + SealDocumentHeadData_V1.prototype.key = $util.newBuffer([]); + /** + * SealDocumentHeadData_V1 data. + * @member {Uint8Array} data + * @memberof vereign.protobuf.qrcode_data.SealDocumentHeadData_V1 + * @instance + */ + SealDocumentHeadData_V1.prototype.data = $util.newBuffer([]); + /** + * SealDocumentHeadData_V1 ipfsIndexCid. + * @member {string} ipfsIndexCid + * @memberof vereign.protobuf.qrcode_data.SealDocumentHeadData_V1 + * @instance + */ + SealDocumentHeadData_V1.prototype.ipfsIndexCid = ""; + /** + * Creates a new SealDocumentHeadData_V1 instance using the specified properties. + * @function create + * @memberof vereign.protobuf.qrcode_data.SealDocumentHeadData_V1 + * @static + * @param {vereign.protobuf.qrcode_data.ISealDocumentHeadData_V1=} [properties] Properties to set + * @returns {vereign.protobuf.qrcode_data.SealDocumentHeadData_V1} SealDocumentHeadData_V1 instance + */ + SealDocumentHeadData_V1.create = function create(properties) { + return new SealDocumentHeadData_V1(properties); + }; + /** + * Encodes the specified SealDocumentHeadData_V1 message. Does not implicitly {@link vereign.protobuf.qrcode_data.SealDocumentHeadData_V1.verify|verify} messages. + * @function encode + * @memberof vereign.protobuf.qrcode_data.SealDocumentHeadData_V1 + * @static + * @param {vereign.protobuf.qrcode_data.ISealDocumentHeadData_V1} message SealDocumentHeadData_V1 message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + SealDocumentHeadData_V1.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.key != null && Object.hasOwnProperty.call(message, "key")) + writer.uint32(/* id 1, wireType 2 =*/ 10).bytes(message.key); + if (message.data != null && Object.hasOwnProperty.call(message, "data")) + writer.uint32(/* id 2, wireType 2 =*/ 18).bytes(message.data); + if (message.ipfsIndexCid != null && Object.hasOwnProperty.call(message, "ipfsIndexCid")) + writer.uint32(/* id 3, wireType 2 =*/ 26).string(message.ipfsIndexCid); + return writer; + }; + /** + * Encodes the specified SealDocumentHeadData_V1 message, length delimited. Does not implicitly {@link vereign.protobuf.qrcode_data.SealDocumentHeadData_V1.verify|verify} messages. + * @function encodeDelimited + * @memberof vereign.protobuf.qrcode_data.SealDocumentHeadData_V1 + * @static + * @param {vereign.protobuf.qrcode_data.ISealDocumentHeadData_V1} message SealDocumentHeadData_V1 message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + SealDocumentHeadData_V1.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + /** + * Decodes a SealDocumentHeadData_V1 message from the specified reader or buffer. + * @function decode + * @memberof vereign.protobuf.qrcode_data.SealDocumentHeadData_V1 + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {vereign.protobuf.qrcode_data.SealDocumentHeadData_V1} SealDocumentHeadData_V1 + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + SealDocumentHeadData_V1.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.vereign.protobuf.qrcode_data.SealDocumentHeadData_V1(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.key = reader.bytes(); + break; + case 2: + message.data = reader.bytes(); + break; + case 3: + message.ipfsIndexCid = reader.string(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + /** + * Decodes a SealDocumentHeadData_V1 message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof vereign.protobuf.qrcode_data.SealDocumentHeadData_V1 + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {vereign.protobuf.qrcode_data.SealDocumentHeadData_V1} SealDocumentHeadData_V1 + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + SealDocumentHeadData_V1.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + /** + * Verifies a SealDocumentHeadData_V1 message. + * @function verify + * @memberof vereign.protobuf.qrcode_data.SealDocumentHeadData_V1 + * @static + * @param {Object.<string,*>} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + SealDocumentHeadData_V1.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.key != null && message.hasOwnProperty("key")) + if (!(message.key && typeof message.key.length === "number" || $util.isString(message.key))) + return "key: buffer expected"; + if (message.data != null && message.hasOwnProperty("data")) + if (!(message.data && typeof message.data.length === "number" || $util.isString(message.data))) + return "data: buffer expected"; + if (message.ipfsIndexCid != null && message.hasOwnProperty("ipfsIndexCid")) + if (!$util.isString(message.ipfsIndexCid)) + return "ipfsIndexCid: string expected"; + return null; + }; + /** + * Creates a SealDocumentHeadData_V1 message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof vereign.protobuf.qrcode_data.SealDocumentHeadData_V1 + * @static + * @param {Object.<string,*>} object Plain object + * @returns {vereign.protobuf.qrcode_data.SealDocumentHeadData_V1} SealDocumentHeadData_V1 + */ + SealDocumentHeadData_V1.fromObject = function fromObject(object) { + if (object instanceof $root.vereign.protobuf.qrcode_data.SealDocumentHeadData_V1) + return object; + var message = new $root.vereign.protobuf.qrcode_data.SealDocumentHeadData_V1(); + if (object.key != null) + if (typeof object.key === "string") + $util.base64.decode(object.key, message.key = $util.newBuffer($util.base64.length(object.key)), 0); + else if (object.key.length) + message.key = object.key; + if (object.data != null) + if (typeof object.data === "string") + $util.base64.decode(object.data, message.data = $util.newBuffer($util.base64.length(object.data)), 0); + else if (object.data.length) + message.data = object.data; + if (object.ipfsIndexCid != null) + message.ipfsIndexCid = String(object.ipfsIndexCid); + return message; + }; + /** + * Creates a plain object from a SealDocumentHeadData_V1 message. Also converts values to other types if specified. + * @function toObject + * @memberof vereign.protobuf.qrcode_data.SealDocumentHeadData_V1 + * @static + * @param {vereign.protobuf.qrcode_data.SealDocumentHeadData_V1} message SealDocumentHeadData_V1 + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.<string,*>} Plain object + */ + SealDocumentHeadData_V1.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + if (options.bytes === String) + object.key = ""; + else { + object.key = []; + if (options.bytes !== Array) + object.key = $util.newBuffer(object.key); + } + if (options.bytes === String) + object.data = ""; + else { + object.data = []; + if (options.bytes !== Array) + object.data = $util.newBuffer(object.data); + } + object.ipfsIndexCid = ""; + } + if (message.key != null && message.hasOwnProperty("key")) + object.key = options.bytes === String ? $util.base64.encode(message.key, 0, message.key.length) : options.bytes === Array ? Array.prototype.slice.call(message.key) : message.key; + if (message.data != null && message.hasOwnProperty("data")) + object.data = options.bytes === String ? $util.base64.encode(message.data, 0, message.data.length) : options.bytes === Array ? Array.prototype.slice.call(message.data) : message.data; + if (message.ipfsIndexCid != null && message.hasOwnProperty("ipfsIndexCid")) + object.ipfsIndexCid = message.ipfsIndexCid; + return object; + }; + /** + * Converts this SealDocumentHeadData_V1 to JSON. + * @function toJSON + * @memberof vereign.protobuf.qrcode_data.SealDocumentHeadData_V1 + * @instance + * @returns {Object.<string,*>} JSON object + */ + SealDocumentHeadData_V1.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + return SealDocumentHeadData_V1; + })(); + qrcode_data.SealIndexObject_V1 = (function () { + /** + * Properties of a SealIndexObject_V1. + * @memberof vereign.protobuf.qrcode_data + * @interface ISealIndexObject_V1 + * @property {Uint8Array|null} [sealKey] SealIndexObject_V1 sealKey + * @property {string|null} [sealTailCid] SealIndexObject_V1 sealTailCid + * @property {string|null} [chain] SealIndexObject_V1 chain + * @property {string|null} [currentBlockHeight] SealIndexObject_V1 currentBlockHeight + * @property {string|null} [accountId] SealIndexObject_V1 accountId + */ + /** + * Constructs a new SealIndexObject_V1. + * @memberof vereign.protobuf.qrcode_data + * @classdesc Represents a SealIndexObject_V1. + * @implements ISealIndexObject_V1 + * @constructor + * @param {vereign.protobuf.qrcode_data.ISealIndexObject_V1=} [properties] Properties to set + */ + function SealIndexObject_V1(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + /** + * SealIndexObject_V1 sealKey. + * @member {Uint8Array} sealKey + * @memberof vereign.protobuf.qrcode_data.SealIndexObject_V1 + * @instance + */ + SealIndexObject_V1.prototype.sealKey = $util.newBuffer([]); + /** + * SealIndexObject_V1 sealTailCid. + * @member {string} sealTailCid + * @memberof vereign.protobuf.qrcode_data.SealIndexObject_V1 + * @instance + */ + SealIndexObject_V1.prototype.sealTailCid = ""; + /** + * SealIndexObject_V1 chain. + * @member {string} chain + * @memberof vereign.protobuf.qrcode_data.SealIndexObject_V1 + * @instance + */ + SealIndexObject_V1.prototype.chain = ""; + /** + * SealIndexObject_V1 currentBlockHeight. + * @member {string} currentBlockHeight + * @memberof vereign.protobuf.qrcode_data.SealIndexObject_V1 + * @instance + */ + SealIndexObject_V1.prototype.currentBlockHeight = ""; + /** + * SealIndexObject_V1 accountId. + * @member {string} accountId + * @memberof vereign.protobuf.qrcode_data.SealIndexObject_V1 + * @instance + */ + SealIndexObject_V1.prototype.accountId = ""; + /** + * Creates a new SealIndexObject_V1 instance using the specified properties. + * @function create + * @memberof vereign.protobuf.qrcode_data.SealIndexObject_V1 + * @static + * @param {vereign.protobuf.qrcode_data.ISealIndexObject_V1=} [properties] Properties to set + * @returns {vereign.protobuf.qrcode_data.SealIndexObject_V1} SealIndexObject_V1 instance + */ + SealIndexObject_V1.create = function create(properties) { + return new SealIndexObject_V1(properties); + }; + /** + * Encodes the specified SealIndexObject_V1 message. Does not implicitly {@link vereign.protobuf.qrcode_data.SealIndexObject_V1.verify|verify} messages. + * @function encode + * @memberof vereign.protobuf.qrcode_data.SealIndexObject_V1 + * @static + * @param {vereign.protobuf.qrcode_data.ISealIndexObject_V1} message SealIndexObject_V1 message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + SealIndexObject_V1.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.sealKey != null && Object.hasOwnProperty.call(message, "sealKey")) + writer.uint32(/* id 1, wireType 2 =*/ 10).bytes(message.sealKey); + if (message.sealTailCid != null && Object.hasOwnProperty.call(message, "sealTailCid")) + writer.uint32(/* id 2, wireType 2 =*/ 18).string(message.sealTailCid); + if (message.chain != null && Object.hasOwnProperty.call(message, "chain")) + writer.uint32(/* id 3, wireType 2 =*/ 26).string(message.chain); + if (message.currentBlockHeight != null && Object.hasOwnProperty.call(message, "currentBlockHeight")) + writer.uint32(/* id 4, wireType 2 =*/ 34).string(message.currentBlockHeight); + if (message.accountId != null && Object.hasOwnProperty.call(message, "accountId")) + writer.uint32(/* id 5, wireType 2 =*/ 42).string(message.accountId); + return writer; + }; + /** + * Encodes the specified SealIndexObject_V1 message, length delimited. Does not implicitly {@link vereign.protobuf.qrcode_data.SealIndexObject_V1.verify|verify} messages. + * @function encodeDelimited + * @memberof vereign.protobuf.qrcode_data.SealIndexObject_V1 + * @static + * @param {vereign.protobuf.qrcode_data.ISealIndexObject_V1} message SealIndexObject_V1 message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + SealIndexObject_V1.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + /** + * Decodes a SealIndexObject_V1 message from the specified reader or buffer. + * @function decode + * @memberof vereign.protobuf.qrcode_data.SealIndexObject_V1 + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {vereign.protobuf.qrcode_data.SealIndexObject_V1} SealIndexObject_V1 + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + SealIndexObject_V1.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.vereign.protobuf.qrcode_data.SealIndexObject_V1(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.sealKey = reader.bytes(); + break; + case 2: + message.sealTailCid = reader.string(); + break; + case 3: + message.chain = reader.string(); + break; + case 4: + message.currentBlockHeight = reader.string(); + break; + case 5: + message.accountId = reader.string(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + /** + * Decodes a SealIndexObject_V1 message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof vereign.protobuf.qrcode_data.SealIndexObject_V1 + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {vereign.protobuf.qrcode_data.SealIndexObject_V1} SealIndexObject_V1 + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + SealIndexObject_V1.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + /** + * Verifies a SealIndexObject_V1 message. + * @function verify + * @memberof vereign.protobuf.qrcode_data.SealIndexObject_V1 + * @static + * @param {Object.<string,*>} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + SealIndexObject_V1.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.sealKey != null && message.hasOwnProperty("sealKey")) + if (!(message.sealKey && typeof message.sealKey.length === "number" || $util.isString(message.sealKey))) + return "sealKey: buffer expected"; + if (message.sealTailCid != null && message.hasOwnProperty("sealTailCid")) + if (!$util.isString(message.sealTailCid)) + return "sealTailCid: string expected"; + if (message.chain != null && message.hasOwnProperty("chain")) + if (!$util.isString(message.chain)) + return "chain: string expected"; + if (message.currentBlockHeight != null && message.hasOwnProperty("currentBlockHeight")) + if (!$util.isString(message.currentBlockHeight)) + return "currentBlockHeight: string expected"; + if (message.accountId != null && message.hasOwnProperty("accountId")) + if (!$util.isString(message.accountId)) + return "accountId: string expected"; + return null; + }; + /** + * Creates a SealIndexObject_V1 message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof vereign.protobuf.qrcode_data.SealIndexObject_V1 + * @static + * @param {Object.<string,*>} object Plain object + * @returns {vereign.protobuf.qrcode_data.SealIndexObject_V1} SealIndexObject_V1 + */ + SealIndexObject_V1.fromObject = function fromObject(object) { + if (object instanceof $root.vereign.protobuf.qrcode_data.SealIndexObject_V1) + return object; + var message = new $root.vereign.protobuf.qrcode_data.SealIndexObject_V1(); + if (object.sealKey != null) + if (typeof object.sealKey === "string") + $util.base64.decode(object.sealKey, message.sealKey = $util.newBuffer($util.base64.length(object.sealKey)), 0); + else if (object.sealKey.length) + message.sealKey = object.sealKey; + if (object.sealTailCid != null) + message.sealTailCid = String(object.sealTailCid); + if (object.chain != null) + message.chain = String(object.chain); + if (object.currentBlockHeight != null) + message.currentBlockHeight = String(object.currentBlockHeight); + if (object.accountId != null) + message.accountId = String(object.accountId); + return message; + }; + /** + * Creates a plain object from a SealIndexObject_V1 message. Also converts values to other types if specified. + * @function toObject + * @memberof vereign.protobuf.qrcode_data.SealIndexObject_V1 + * @static + * @param {vereign.protobuf.qrcode_data.SealIndexObject_V1} message SealIndexObject_V1 + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.<string,*>} Plain object + */ + SealIndexObject_V1.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + if (options.bytes === String) + object.sealKey = ""; + else { + object.sealKey = []; + if (options.bytes !== Array) + object.sealKey = $util.newBuffer(object.sealKey); + } + object.sealTailCid = ""; + object.chain = ""; + object.currentBlockHeight = ""; + object.accountId = ""; + } + if (message.sealKey != null && message.hasOwnProperty("sealKey")) + object.sealKey = options.bytes === String ? $util.base64.encode(message.sealKey, 0, message.sealKey.length) : options.bytes === Array ? Array.prototype.slice.call(message.sealKey) : message.sealKey; + if (message.sealTailCid != null && message.hasOwnProperty("sealTailCid")) + object.sealTailCid = message.sealTailCid; + if (message.chain != null && message.hasOwnProperty("chain")) + object.chain = message.chain; + if (message.currentBlockHeight != null && message.hasOwnProperty("currentBlockHeight")) + object.currentBlockHeight = message.currentBlockHeight; + if (message.accountId != null && message.hasOwnProperty("accountId")) + object.accountId = message.accountId; + return object; + }; + /** + * Converts this SealIndexObject_V1 to JSON. + * @function toJSON + * @memberof vereign.protobuf.qrcode_data.SealIndexObject_V1 + * @instance + * @returns {Object.<string,*>} JSON object + */ + SealIndexObject_V1.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + return SealIndexObject_V1; + })(); return qrcode_data; })(); return protobuf; diff --git a/dist/generated/statuses_pb.js b/dist/generated/statuses_pb.js index 8312ac13a598445ee57fdfc5e5b97b632114cfac..4acdc8b57bc03e16bdeebec67af3984ec277efcb 100644 --- a/dist/generated/statuses_pb.js +++ b/dist/generated/statuses_pb.js @@ -1765,6 +1765,225 @@ $root.vereign = (function () { }; return WrapperData; })(); + statuses.DocumentStatusObject = (function () { + /** + * Properties of a DocumentStatusObject. + * @memberof vereign.statuses + * @interface IDocumentStatusObject + * @property {number|Long|null} [timestamp] DocumentStatusObject timestamp + * @property {Uint8Array|null} [sealHash] DocumentStatusObject sealHash + */ + /** + * Constructs a new DocumentStatusObject. + * @memberof vereign.statuses + * @classdesc Represents a DocumentStatusObject. + * @implements IDocumentStatusObject + * @constructor + * @param {vereign.statuses.IDocumentStatusObject=} [properties] Properties to set + */ + function DocumentStatusObject(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + /** + * DocumentStatusObject timestamp. + * @member {number|Long} timestamp + * @memberof vereign.statuses.DocumentStatusObject + * @instance + */ + DocumentStatusObject.prototype.timestamp = $util.Long ? $util.Long.fromBits(0, 0, false) : 0; + /** + * DocumentStatusObject sealHash. + * @member {Uint8Array} sealHash + * @memberof vereign.statuses.DocumentStatusObject + * @instance + */ + DocumentStatusObject.prototype.sealHash = $util.newBuffer([]); + /** + * Creates a new DocumentStatusObject instance using the specified properties. + * @function create + * @memberof vereign.statuses.DocumentStatusObject + * @static + * @param {vereign.statuses.IDocumentStatusObject=} [properties] Properties to set + * @returns {vereign.statuses.DocumentStatusObject} DocumentStatusObject instance + */ + DocumentStatusObject.create = function create(properties) { + return new DocumentStatusObject(properties); + }; + /** + * Encodes the specified DocumentStatusObject message. Does not implicitly {@link vereign.statuses.DocumentStatusObject.verify|verify} messages. + * @function encode + * @memberof vereign.statuses.DocumentStatusObject + * @static + * @param {vereign.statuses.IDocumentStatusObject} message DocumentStatusObject message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + DocumentStatusObject.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.timestamp != null && Object.hasOwnProperty.call(message, "timestamp")) + writer.uint32(/* id 1, wireType 0 =*/ 8).int64(message.timestamp); + if (message.sealHash != null && Object.hasOwnProperty.call(message, "sealHash")) + writer.uint32(/* id 2, wireType 2 =*/ 18).bytes(message.sealHash); + return writer; + }; + /** + * Encodes the specified DocumentStatusObject message, length delimited. Does not implicitly {@link vereign.statuses.DocumentStatusObject.verify|verify} messages. + * @function encodeDelimited + * @memberof vereign.statuses.DocumentStatusObject + * @static + * @param {vereign.statuses.IDocumentStatusObject} message DocumentStatusObject message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + DocumentStatusObject.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + /** + * Decodes a DocumentStatusObject message from the specified reader or buffer. + * @function decode + * @memberof vereign.statuses.DocumentStatusObject + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {vereign.statuses.DocumentStatusObject} DocumentStatusObject + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + DocumentStatusObject.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.vereign.statuses.DocumentStatusObject(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.timestamp = reader.int64(); + break; + case 2: + message.sealHash = reader.bytes(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + /** + * Decodes a DocumentStatusObject message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof vereign.statuses.DocumentStatusObject + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {vereign.statuses.DocumentStatusObject} DocumentStatusObject + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + DocumentStatusObject.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + /** + * Verifies a DocumentStatusObject message. + * @function verify + * @memberof vereign.statuses.DocumentStatusObject + * @static + * @param {Object.<string,*>} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + DocumentStatusObject.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.timestamp != null && message.hasOwnProperty("timestamp")) + if (!$util.isInteger(message.timestamp) && !(message.timestamp && $util.isInteger(message.timestamp.low) && $util.isInteger(message.timestamp.high))) + return "timestamp: integer|Long expected"; + if (message.sealHash != null && message.hasOwnProperty("sealHash")) + if (!(message.sealHash && typeof message.sealHash.length === "number" || $util.isString(message.sealHash))) + return "sealHash: buffer expected"; + return null; + }; + /** + * Creates a DocumentStatusObject message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof vereign.statuses.DocumentStatusObject + * @static + * @param {Object.<string,*>} object Plain object + * @returns {vereign.statuses.DocumentStatusObject} DocumentStatusObject + */ + DocumentStatusObject.fromObject = function fromObject(object) { + if (object instanceof $root.vereign.statuses.DocumentStatusObject) + return object; + var message = new $root.vereign.statuses.DocumentStatusObject(); + if (object.timestamp != null) + if ($util.Long) + (message.timestamp = $util.Long.fromValue(object.timestamp)).unsigned = false; + else if (typeof object.timestamp === "string") + message.timestamp = parseInt(object.timestamp, 10); + else if (typeof object.timestamp === "number") + message.timestamp = object.timestamp; + else if (typeof object.timestamp === "object") + message.timestamp = new $util.LongBits(object.timestamp.low >>> 0, object.timestamp.high >>> 0).toNumber(); + if (object.sealHash != null) + if (typeof object.sealHash === "string") + $util.base64.decode(object.sealHash, message.sealHash = $util.newBuffer($util.base64.length(object.sealHash)), 0); + else if (object.sealHash.length) + message.sealHash = object.sealHash; + return message; + }; + /** + * Creates a plain object from a DocumentStatusObject message. Also converts values to other types if specified. + * @function toObject + * @memberof vereign.statuses.DocumentStatusObject + * @static + * @param {vereign.statuses.DocumentStatusObject} message DocumentStatusObject + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.<string,*>} Plain object + */ + DocumentStatusObject.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + if ($util.Long) { + var long = new $util.Long(0, 0, false); + object.timestamp = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long; + } + else + object.timestamp = options.longs === String ? "0" : 0; + if (options.bytes === String) + object.sealHash = ""; + else { + object.sealHash = []; + if (options.bytes !== Array) + object.sealHash = $util.newBuffer(object.sealHash); + } + } + if (message.timestamp != null && message.hasOwnProperty("timestamp")) + if (typeof message.timestamp === "number") + object.timestamp = options.longs === String ? String(message.timestamp) : message.timestamp; + else + object.timestamp = options.longs === String ? $util.Long.prototype.toString.call(message.timestamp) : options.longs === Number ? new $util.LongBits(message.timestamp.low >>> 0, message.timestamp.high >>> 0).toNumber() : message.timestamp; + if (message.sealHash != null && message.hasOwnProperty("sealHash")) + object.sealHash = options.bytes === String ? $util.base64.encode(message.sealHash, 0, message.sealHash.length) : options.bytes === Array ? Array.prototype.slice.call(message.sealHash) : message.sealHash; + return object; + }; + /** + * Converts this DocumentStatusObject to JSON. + * @function toJSON + * @memberof vereign.statuses.DocumentStatusObject + * @instance + * @returns {Object.<string,*>} JSON object + */ + DocumentStatusObject.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + return DocumentStatusObject; + })(); return statuses; })(); return vereign; diff --git a/dist/services/AeternityService/AeternityService.d.ts b/dist/services/AeternityService/AeternityService.d.ts index 25dfedce056d947df3f3b81bb53a4868e3182da8..d4ba4a5f13da8d1b17e7c1dbad06f8e0f247defd 100644 --- a/dist/services/AeternityService/AeternityService.d.ts +++ b/dist/services/AeternityService/AeternityService.d.ts @@ -1,13 +1,15 @@ import { TxData, DecodedCallData } from "../../types"; import { Request } from "../../utils/requestAdapter"; +import { AeternityAPIBlockData } from "./types"; declare class AeternityService { readonly _nodeUrls: any[]; readonly _compilerUrls: any[]; readonly _contractBytecode: string; + readonly _blockHeightStep: number; requestWrapper: Request; readonly requestNode: Request; readonly requestCompiler: Request; - constructor(nodeUrls: string[] | string, compilerUrls: string[] | string, contractBytecode: string); + constructor(nodeUrls: string[] | string, compilerUrls: string[] | string, contractBytecode: string, blockHeightStep?: number); /** * Function provides retry mechanism if node from the array is failing to respond * @param apiUrls @@ -26,5 +28,6 @@ declare class AeternityService { hash: string; }>; getBlockchainHeight(): Promise<number>; + getBlockHeightRange(startingBlock: number): Promise<Array<AeternityAPIBlockData>>; } export default AeternityService; diff --git a/dist/services/AeternityService/AeternityService.js b/dist/services/AeternityService/AeternityService.js index 898caa877020eef43542b7ed29773b9180d9ccd3..c10616122863cd87e2ad7a25e549ed69d0427d71 100644 --- a/dist/services/AeternityService/AeternityService.js +++ b/dist/services/AeternityService/AeternityService.js @@ -14,7 +14,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) { Object.defineProperty(exports, "__esModule", { value: true }); const requestAdapter_1 = __importDefault(require("../../utils/requestAdapter")); class AeternityService { - constructor(nodeUrls, compilerUrls, contractBytecode) { + constructor(nodeUrls, compilerUrls, contractBytecode, blockHeightStep) { this._nodeUrls = []; this._compilerUrls = []; this._contractBytecode = ""; @@ -65,6 +65,8 @@ class AeternityService { if (!contractBytecode) { throw new Error("Aeternity contract bytecode not defined"); } + //Default value for block height step is 2, based on tests + this._blockHeightStep = typeof blockHeightStep === "number" ? blockHeightStep : 2; this._nodeUrls = typeof nodeUrls === "string" ? [nodeUrls] : nodeUrls; this._compilerUrls = typeof compilerUrls === "string" ? [compilerUrls] : compilerUrls; @@ -139,5 +141,13 @@ class AeternityService { return data.height; }); } + getBlockHeightRange(startingBlock) { + return __awaiter(this, void 0, void 0, function* () { + const endBlockHeight = startingBlock + this._blockHeightStep; + const { data } = yield this.requestNode({ url: `/mdw/v2/blocks?scope=gen${startingBlock}-${endBlockHeight}` }) + .then(({ data }) => data); + return data; + }); + } } exports.default = AeternityService; diff --git a/dist/services/AeternityService/types.d.ts b/dist/services/AeternityService/types.d.ts index 5774a08efbc4925818b96cb6b04e5e0e78f83698..4e618642ed4b961cd1a1aeb1f077cc9ba85bf5af 100644 --- a/dist/services/AeternityService/types.d.ts +++ b/dist/services/AeternityService/types.d.ts @@ -1,15 +1,50 @@ export interface AeternityAPITxData { + "block_hash": string; + "block_height": number; + "hash": string; + "signatures": Array<string>; + "tx": { + "abi_version": number; + "amount": number; + "call_data": string; + "caller_id": string; + "contract_id": string; + "fee": number; + "gas": number; + "gas_price": number; + "nonce": number; + "type": string; + "version": number; + }; +} +export interface AeternityAPIMicroBLock { hash: string; - block_height: number; - block_hash: string; - tx: { - call_data: string; + height: number; + pof_hash: string; + prev_hash: string; + prev_key_hash: string; + signature: string; + state_hash: string; + time: number; + transactions: { + [key: string]: AeternityAPITxData; }; } export interface AeternityAPIBlockData { + beneficiary: string; + hash: string; height: number; + info: string; + microBlock: Array<AeternityAPIMicroBLock>; + miner: string; + nonce: number; + pow: Array<number>; + prev_hash: string; + prev_key_hash: string; + state_hash: string; + target: number; time: number; - hash: string; + version: number; } export interface AeternityAPICurrentHeight { height: number; @@ -30,3 +65,6 @@ export interface AeternityAPIContractData { } ]; } +export interface AeternityAPIBlockRange { + data: Array<AeternityAPIBlockData>; +} diff --git a/dist/services/CryptoService/CryptoServiceNode.d.ts b/dist/services/CryptoService/CryptoServiceNode.d.ts index 9b91b3caabc22a7c3cd53dabfb017c040546a537..882cbc3426402696ae2dfac619dcbdf9ab204e03 100644 --- a/dist/services/CryptoService/CryptoServiceNode.d.ts +++ b/dist/services/CryptoService/CryptoServiceNode.d.ts @@ -1,8 +1,8 @@ /// <reference types="node" /> import { AESGCMOutput, RSAKeys, ICryptoService } from "./ICryptoService"; declare class CryptoServiceNode implements ICryptoService { - encryptAESGCM(data: string): Promise<AESGCMOutput>; - encryptAESGCM(data: ArrayBuffer): Promise<AESGCMOutput>; + encryptAESGCM(data: string, key?: Buffer, iv?: Buffer): Promise<AESGCMOutput>; + encryptAESGCM(data: ArrayBuffer, key?: Buffer, iv?: Buffer): Promise<AESGCMOutput>; decryptAESGCM(data: ArrayBuffer, key: ArrayBuffer, iv: ArrayBuffer): Promise<string>; decryptAESGCM(data: ArrayBuffer, key: ArrayBuffer, iv: ArrayBuffer, returnBuffer: true): Promise<ArrayBuffer>; generateRSAKeys(): Promise<RSAKeys>; diff --git a/dist/services/CryptoService/CryptoServiceNode.js b/dist/services/CryptoService/CryptoServiceNode.js index f789e304e709d2a7f8862a7f6d358e83b8b79f9c..85eef9eb2e5510f8604bd45ab1da5a6b7074d434 100644 --- a/dist/services/CryptoService/CryptoServiceNode.js +++ b/dist/services/CryptoService/CryptoServiceNode.js @@ -48,10 +48,12 @@ const getBytes = (value, encoding) => { return bytes; }; class CryptoServiceNode { - encryptAESGCM(data) { + encryptAESGCM(data, key, iv) { return __awaiter(this, void 0, void 0, function* () { - const key = crypto.randomBytes(32); - const iv = crypto.randomBytes(12); + if (!key && !iv) { + key = crypto.randomBytes(32); + iv = crypto.randomBytes(12); + } const cipher = crypto.createCipheriv(AES_GCM_ALGO, key, iv); let encrypted; if (typeof data === "string") { @@ -67,8 +69,8 @@ class CryptoServiceNode { Buffer.from(authTag), ]); return { - key: key.buffer, - iv: iv.buffer, + key: key, + iv: iv, data: encryptedWithTag, }; }); diff --git a/dist/services/CryptoService/CryptoServiceWeb.d.ts b/dist/services/CryptoService/CryptoServiceWeb.d.ts index 3ab743beca0bad3313a4e703de3d659fcd3aaa02..3db528f5803cc287e7b19ec07847f8765a940306 100644 --- a/dist/services/CryptoService/CryptoServiceWeb.d.ts +++ b/dist/services/CryptoService/CryptoServiceWeb.d.ts @@ -1,7 +1,8 @@ +/// <reference types="node" /> import { AESGCMOutput, ICryptoService, RSAKeys } from "./ICryptoService"; declare class CryptoServiceWeb implements ICryptoService { - encryptAESGCM(data: string): Promise<AESGCMOutput>; - encryptAESGCM(data: ArrayBuffer): Promise<AESGCMOutput>; + encryptAESGCM(data: string, key?: Buffer, iv?: Buffer): Promise<AESGCMOutput>; + encryptAESGCM(data: ArrayBuffer, key?: Buffer, iv?: Buffer): Promise<AESGCMOutput>; decryptAESGCM(data: ArrayBuffer, key: ArrayBuffer, iv: ArrayBuffer): Promise<string>; decryptAESGCM(data: ArrayBuffer, key: ArrayBuffer, iv: ArrayBuffer, returnBuffer: true): Promise<ArrayBuffer>; verifyRSASignature(publicKeyPEM: string, data: ArrayBuffer, signature: ArrayBuffer): Promise<boolean>; diff --git a/dist/services/CryptoService/CryptoServiceWeb.js b/dist/services/CryptoService/CryptoServiceWeb.js index be96a6ee078c2a019054b85e3bf832e26ede3620..04fd945b66b6f3637c493600d63b1d7983f42c98 100644 --- a/dist/services/CryptoService/CryptoServiceWeb.js +++ b/dist/services/CryptoService/CryptoServiceWeb.js @@ -48,12 +48,23 @@ const getBytes = (value, encoding) => { return bytes; }; class CryptoServiceWeb { - encryptAESGCM(data) { + encryptAESGCM(data, key, iv) { return __awaiter(this, void 0, void 0, function* () { - const key = yield crypto.subtle.generateKey({ - name: "AES-GCM", - length: 256, - }, true, ["encrypt", "decrypt"]); + if (!key && !iv) { + key = yield crypto.subtle.generateKey({ + name: "AES-GCM", + length: 256, + }, true, ["encrypt", "decrypt"]); + iv = crypto.getRandomValues(new Buffer(12)); + } + else { + if (key instanceof Buffer) { + key = yield crypto.subtle.importKey("raw", key, "AES-GCM", true, [ + "encrypt", + "decrypt", + ]); + } + } let encoded; if (typeof data === "string") { encoded = new TextEncoder().encode(data); @@ -61,7 +72,6 @@ class CryptoServiceWeb { else { encoded = data; } - const iv = crypto.getRandomValues(new Buffer(12)); const encrypted = yield crypto.subtle.encrypt({ name: "AES-GCM", iv: iv }, key, encoded); return { data: encrypted, key: yield exportKey(key), iv }; }); diff --git a/dist/services/CryptoService/ICryptoService.d.ts b/dist/services/CryptoService/ICryptoService.d.ts index 24dfcd1294c69e9cb0ef9035e48651b8936c8d28..8193da99eafb83c2f4e8268ee450a6cd5b3ad7a7 100644 --- a/dist/services/CryptoService/ICryptoService.d.ts +++ b/dist/services/CryptoService/ICryptoService.d.ts @@ -1,3 +1,4 @@ +/// <reference types="node" /> export interface AESGCMOutput { data: ArrayBuffer; key: ArrayBuffer; @@ -9,8 +10,8 @@ export interface RSAKeys { } export interface ICryptoService { encryptAESGCM: { - (data: string): Promise<AESGCMOutput>; - (data: ArrayBuffer): Promise<AESGCMOutput>; + (data: string, key?: Buffer, iv?: Buffer): Promise<AESGCMOutput>; + (data: ArrayBuffer, key?: Buffer, iv?: Buffer): Promise<AESGCMOutput>; }; decryptAESGCM: { (data: ArrayBuffer, key: ArrayBuffer, iv: ArrayBuffer): Promise<string>; diff --git a/dist/services/QrCodeDataService.d.ts b/dist/services/QrCodeDataService.d.ts index 1babbf049d295d8854ecdcda67ad720e4fc8a1b0..32ddcbe4fe61a7e6d2eab0394a8b36b4ab783882 100644 --- a/dist/services/QrCodeDataService.d.ts +++ b/dist/services/QrCodeDataService.d.ts @@ -1,5 +1,11 @@ -import { KeyDataPair, MessageData } from "../types"; +import { KeyDataPair, MessageData, DocumentData, SealHeadData, SealIndexObject } from "../types"; declare const _default: { + encodeSealHead: (sealHeadData: SealHeadData) => string; + decodeSealHead: (binary: string | ArrayBuffer | Uint8Array) => SealHeadData; + encodeSealIndexObject: (indexObjectData: SealIndexObject) => string; + decodeSealIndexObject: (binary: string | ArrayBuffer | Uint8Array) => SealIndexObject; + encodeDocumentData: (documentData: DocumentData) => string; + decodeDocumentData: (binary: string | ArrayBuffer | Uint8Array) => DocumentData; encodeEmailData: (emailData: MessageData) => string; decodeEmailData: (binary: string | ArrayBuffer | Uint8Array) => MessageData; encodeKeyDataPair: (keyData: KeyDataPair) => string; diff --git a/dist/services/QrCodeDataService.js b/dist/services/QrCodeDataService.js index 1c668db6c7598507da2882538839fcad47506bd2..e455fdbffe0ab5e27d5ced6bb60873a6943bfd4d 100644 --- a/dist/services/QrCodeDataService.js +++ b/dist/services/QrCodeDataService.js @@ -12,10 +12,14 @@ Object.defineProperty(exports, "__esModule", { value: true }); const qrcode_data_pb_1 = require("../generated/qrcode_data_pb"); const common_1 = require("../utils/common"); const index_1 = require("../index"); +const DocumentDataMessageV1 = qrcode_data_pb_1.vereign.protobuf.qrcode_data.DocumentData_V1; const EmailDataMessageV1 = qrcode_data_pb_1.vereign.protobuf.qrcode_data.EmailData_V1; const KeyDataMessageV1 = qrcode_data_pb_1.vereign.protobuf.qrcode_data.KeyData_V1; const WrapperDataMessage = qrcode_data_pb_1.vereign.protobuf.qrcode_data.WrapperData; +const SealIndexObjectMessageV1 = qrcode_data_pb_1.vereign.protobuf.qrcode_data.SealIndexObject_V1; +const SealHeadMessageV1 = qrcode_data_pb_1.vereign.protobuf.qrcode_data.SealDocumentHeadData_V1; const EMAIL_DATA_V1 = "EmailData_V1"; +const DOCUMENT_DATA_V1 = "DocumentData_V1"; const encodeEmailData = (emailData) => { const emailDataMessage = EmailDataMessageV1.fromObject(emailData); const emailDataBuffer = EmailDataMessageV1.encode(emailDataMessage).finish(); @@ -83,7 +87,59 @@ const verifyQrCodeSignature = (publicKey, qrCodeSignature, recipientQRCodeHash) const result = yield index_1.CryptoService.verifyRSASignature(publicKey, recipientQRCodeHashAsBuffer, qrCodeSignatureAsBuffer); return result; }); +const decodeDocumentData = (binary) => { + const wrappedDataMessage = WrapperDataMessage.decode((0, common_1.ensureUint8Array)(binary)); + const wrappedData = WrapperDataMessage.toObject(wrappedDataMessage); + if (wrappedData.className === DOCUMENT_DATA_V1) { + const documentDataMessage = DocumentDataMessageV1.decode((0, common_1.ensureUint8Array)(wrappedData.data)); + const messageData = DocumentDataMessageV1.toObject(documentDataMessage, { + bytes: String, + }); + return messageData; + } + return null; +}; +const encodeDocumentData = (documentData) => { + const documentDataMessage = DocumentDataMessageV1.fromObject(documentData); + const documentDataBuffer = DocumentDataMessageV1.encode(documentDataMessage).finish(); + const wrappedData = { + version: 1, + className: DOCUMENT_DATA_V1, + data: documentDataBuffer, + }; + const wrappedDataMessage = WrapperDataMessage.fromObject(wrappedData); + const wrappedDataBuffer = WrapperDataMessage.encode(wrappedDataMessage).finish(); + return (0, common_1.arrayBufferToBase64)(wrappedDataBuffer); +}; +const encodeSealHead = (sealHeadData) => { + const sealHeadDataMessage = SealHeadMessageV1.fromObject(sealHeadData); + const buffer = SealHeadMessageV1.encode(sealHeadDataMessage).finish(); + return (0, common_1.arrayBufferToBase64)(buffer); +}; +const decodeSealHead = (binary) => { + const sealHeadDataMessage = SealHeadMessageV1.decode((0, common_1.ensureUint8Array)(binary)); + return SealHeadMessageV1.toObject(sealHeadDataMessage, { + bytes: String, + }); +}; +const encodeSealIndexObject = (indexObjectData) => { + const sealIndexDataMessage = SealIndexObjectMessageV1.fromObject(indexObjectData); + const buffer = SealIndexObjectMessageV1.encode(sealIndexDataMessage).finish(); + return (0, common_1.arrayBufferToBase64)(buffer); +}; +const decodeSealIndexObject = (binary) => { + const sealIndexDataMessage = SealIndexObjectMessageV1.decode((0, common_1.ensureUint8Array)(binary)); + return SealIndexObjectMessageV1.toObject(sealIndexDataMessage, { + bytes: String, + }); +}; exports.default = { + encodeSealHead, + decodeSealHead, + encodeSealIndexObject, + decodeSealIndexObject, + encodeDocumentData, + decodeDocumentData, encodeEmailData, decodeEmailData, encodeKeyDataPair, diff --git a/dist/types.d.ts b/dist/types.d.ts index e346f229980231919afc52f9b8194e0af5367087..71dbbf0daf509ec50beda35c1db5b57c5a6b1577 100644 --- a/dist/types.d.ts +++ b/dist/types.d.ts @@ -16,6 +16,12 @@ export interface IpfsContentData { key: string; head: string; } +export interface IpfsDocumentContentData { + head: string; + key: string; + cid?: string; + ipnsKeyId?: string; +} export interface IpfsAttachmentData { cid: string; key: string; @@ -135,3 +141,64 @@ export interface KeyDataPair { key: string; data: string; } +export interface ICert { + clientCertificate: boolean; + issuedBy: { + countryName: string; + organizationName: string; + commonName: string; + }; + issuedTo: { + countryName: string; + organizationalUnitName: string; + organizationName: string; + commonName: string; + }; + validityPeriod: { + notBefore: string; + notAfter: string; + }; + pemCertificate: string; +} +export interface ISignature { + isExpired: boolean; + meta: { + certs: Array<ICert>; + reason: string; + contactInfo: string; + location: string; + signDate: string; + }; +} +export interface DocumentData { + author: string; + documentTitle: string; + creationDate: string; + lastModDate: string; + documentPages: number; + expired?: boolean; + signatures?: Array<ISignature>; + ipfs?: IpfsDocumentContentData; +} +export interface DocumentStatusObject { + timestamp: number; + sealHash: string; +} +export interface SealHeadData { + key: string; + data: string; + ipfsIndexCid: string; +} +export interface SealCoords { + [key: string]: { + x: string; + y: string; + }; +} +export interface SealIndexObject { + sealKey: string; + sealTailCid: string; + chain: string; + currentBlockHeight: number; + accountId: string; +} diff --git a/src/services/AeternityService/AeternityService.ts b/src/services/AeternityService/AeternityService.ts index d9fae929170ff253544bd5647bcdf275b39a7e52..2d9ef1aad269779e68be4da1824331ed04f53e0c 100644 --- a/src/services/AeternityService/AeternityService.ts +++ b/src/services/AeternityService/AeternityService.ts @@ -5,12 +5,14 @@ import { AeternityAPICurrentHeight, AeternityAPIContractData, AeternityAPITxData, + AeternityAPIBlockRange, } from "./types"; class AeternityService { readonly _nodeUrls = []; readonly _compilerUrls = []; readonly _contractBytecode: string = ""; + readonly _blockHeightStep: number; public requestWrapper: Request = defaultRequest; @@ -20,7 +22,8 @@ class AeternityService { constructor( nodeUrls: string[] | string, compilerUrls: string[] | string, - contractBytecode: string + contractBytecode: string, + blockHeightStep?: number ) { if (!nodeUrls?.length) { throw new Error("Invalid node URLs"); @@ -34,6 +37,9 @@ class AeternityService { throw new Error("Aeternity contract bytecode not defined"); } + //Default value for block height step is 2, based on tests + this._blockHeightStep = + typeof blockHeightStep === "number" ? blockHeightStep : 2; this._nodeUrls = typeof nodeUrls === "string" ? [nodeUrls] : nodeUrls; this._compilerUrls = typeof compilerUrls === "string" ? [compilerUrls] : compilerUrls; @@ -152,6 +158,17 @@ class AeternityService { })) as Response<AeternityAPICurrentHeight>; return data.height; } + + async getBlockHeightRange( + startingBlock: number + ): Promise<Array<AeternityAPIBlockData>> { + const endBlockHeight = startingBlock + this._blockHeightStep; + const { data } = await this.requestNode({ + url: `/mdw/v2/blocks?scope=gen${startingBlock}-${endBlockHeight}`, + }).then(({ data }: Response<AeternityAPIBlockRange>) => data); + + return data; + } } export default AeternityService; diff --git a/src/services/AeternityService/types.ts b/src/services/AeternityService/types.ts index c95b4ed45fa8ea39c459a12c8842005ae53ced40..21b69414448ab91f5b4125da36e9183c218215e8 100644 --- a/src/services/AeternityService/types.ts +++ b/src/services/AeternityService/types.ts @@ -1,16 +1,50 @@ export interface AeternityAPITxData { - hash: string; - block_height: number; block_hash: string; + block_height: number; + hash: string; + signatures: Array<string>; tx: { + abi_version: number; + amount: number; call_data: string; + caller_id: string; + contract_id: string; + fee: number; + gas: number; + gas_price: number; + nonce: number; + type: string; + version: number; }; } -export interface AeternityAPIBlockData { +export interface AeternityAPIMicroBLock { + hash: string; height: number; + pof_hash: string; + prev_hash: string; + prev_key_hash: string; + signature: string; + state_hash: string; time: number; + transactions: { [key: string]: AeternityAPITxData }; +} + +export interface AeternityAPIBlockData { + beneficiary: string; hash: string; + height: number; + info: string; + microBlock: Array<AeternityAPIMicroBLock>; + miner: string; + nonce: number; + pow: Array<number>; + prev_hash: string; + prev_key_hash: string; + state_hash: string; + target: number; + time: number; + version: number; } export interface AeternityAPICurrentHeight { @@ -29,3 +63,7 @@ export interface AeternityAPIContractData { } ]; } + +export interface AeternityAPIBlockRange { + data: Array<AeternityAPIBlockData>; +} diff --git a/src/services/CryptoService/CryptoServiceNode.ts b/src/services/CryptoService/CryptoServiceNode.ts index c98ecf2187558d3e30df438d1601e3ed6de46d41..addea23b55e26241494508ceb452d7ee9621bbdb 100644 --- a/src/services/CryptoService/CryptoServiceNode.ts +++ b/src/services/CryptoService/CryptoServiceNode.ts @@ -23,13 +23,26 @@ const getBytes = ( }; class CryptoServiceNode implements ICryptoService { - public async encryptAESGCM(data: string): Promise<AESGCMOutput>; - public async encryptAESGCM(data: ArrayBuffer): Promise<AESGCMOutput>; public async encryptAESGCM( - data: string | ArrayBuffer + data: string, + key?: Buffer, + iv?: Buffer + ): Promise<AESGCMOutput>; + public async encryptAESGCM( + data: ArrayBuffer, + key?: Buffer, + iv?: Buffer + ): Promise<AESGCMOutput>; + public async encryptAESGCM( + data: string | ArrayBuffer, + key?: Buffer, + iv?: Buffer ): Promise<AESGCMOutput> { - const key = crypto.randomBytes(32); - const iv = crypto.randomBytes(12); + if (!key && !iv) { + key = crypto.randomBytes(32); + iv = crypto.randomBytes(12); + } + const cipher = crypto.createCipheriv(AES_GCM_ALGO, key, iv); let encrypted; @@ -41,14 +54,15 @@ class CryptoServiceNode implements ICryptoService { cipher.final(); const authTag = cipher.getAuthTag(); + const encryptedWithTag = Buffer.concat([ Buffer.from(encrypted), Buffer.from(authTag), ]); return { - key: key.buffer, - iv: iv.buffer, + key: key, + iv: iv, data: encryptedWithTag, }; } @@ -77,6 +91,7 @@ class CryptoServiceNode implements ICryptoService { ); const authTag = data.slice(data.byteLength - 16, data.byteLength); + const encrypted = data.slice(0, data.byteLength - 16); if (returnBuffer) { const decrypted: Buffer = decipher.update(ensureUint8Array(encrypted)); diff --git a/src/services/CryptoService/CryptoServiceWeb.ts b/src/services/CryptoService/CryptoServiceWeb.ts index 06534df3aa1ac55180bc501d73b5ee30718fc55d..b11809e18f7303c1556bcd5fc4e89a702f5bf92f 100644 --- a/src/services/CryptoService/CryptoServiceWeb.ts +++ b/src/services/CryptoService/CryptoServiceWeb.ts @@ -39,19 +39,40 @@ const getBytes = (value: string | ArrayBuffer, encoding): ArrayBuffer => { }; class CryptoServiceWeb implements ICryptoService { - public async encryptAESGCM(data: string): Promise<AESGCMOutput>; - public async encryptAESGCM(data: ArrayBuffer): Promise<AESGCMOutput>; public async encryptAESGCM( - data: string | ArrayBuffer + data: string, + key?: Buffer, + iv?: Buffer + ): Promise<AESGCMOutput>; + public async encryptAESGCM( + data: ArrayBuffer, + key?: Buffer, + iv?: Buffer + ): Promise<AESGCMOutput>; + public async encryptAESGCM( + data: string | ArrayBuffer, + key?: Buffer | CryptoKey, + iv?: Buffer ): Promise<AESGCMOutput> { - const key = await crypto.subtle.generateKey( - { - name: "AES-GCM", - length: 256, - }, - true, - ["encrypt", "decrypt"] - ); + if (!key && !iv) { + key = await crypto.subtle.generateKey( + { + name: "AES-GCM", + length: 256, + }, + true, + ["encrypt", "decrypt"] + ); + + iv = crypto.getRandomValues(new Buffer(12)); + } else { + if (key instanceof Buffer) { + key = await crypto.subtle.importKey("raw", key, "AES-GCM", true, [ + "encrypt", + "decrypt", + ]); + } + } let encoded; if (typeof data === "string") { @@ -59,7 +80,7 @@ class CryptoServiceWeb implements ICryptoService { } else { encoded = data; } - const iv = crypto.getRandomValues(new Buffer(12)); + const encrypted = await crypto.subtle.encrypt( { name: "AES-GCM", iv: iv }, key, diff --git a/src/services/CryptoService/ICryptoService.ts b/src/services/CryptoService/ICryptoService.ts index 0dfd66a86ab28a6a4fe1a2138a78628f18c20a06..d0d4dc9da01090ed6bd4e217829bd13dfdeb828a 100644 --- a/src/services/CryptoService/ICryptoService.ts +++ b/src/services/CryptoService/ICryptoService.ts @@ -11,8 +11,8 @@ export interface RSAKeys { export interface ICryptoService { encryptAESGCM: { - (data: string): Promise<AESGCMOutput>; - (data: ArrayBuffer): Promise<AESGCMOutput>; + (data: string, key?: Buffer, iv?: Buffer): Promise<AESGCMOutput>; + (data: ArrayBuffer, key?: Buffer, iv?: Buffer): Promise<AESGCMOutput>; }; decryptAESGCM: { (data: ArrayBuffer, key: ArrayBuffer, iv: ArrayBuffer): Promise<string>; diff --git a/src/services/QrCodeDataService.ts b/src/services/QrCodeDataService.ts index 03bc827ef1452d97d5059839e28c31167d668879..61671350bd2355f51ad5ae6a9f0d94967333da42 100644 --- a/src/services/QrCodeDataService.ts +++ b/src/services/QrCodeDataService.ts @@ -1,4 +1,10 @@ -import { KeyDataPair, MessageData } from "../types"; +import { + KeyDataPair, + MessageData, + DocumentData, + SealHeadData, + SealIndexObject, +} from "../types"; import { vereign } from "../generated/qrcode_data_pb"; import { @@ -9,11 +15,16 @@ import { import { CryptoService } from "../index"; +const DocumentDataMessageV1 = vereign.protobuf.qrcode_data.DocumentData_V1; const EmailDataMessageV1 = vereign.protobuf.qrcode_data.EmailData_V1; const KeyDataMessageV1 = vereign.protobuf.qrcode_data.KeyData_V1; const WrapperDataMessage = vereign.protobuf.qrcode_data.WrapperData; +const SealIndexObjectMessageV1 = + vereign.protobuf.qrcode_data.SealIndexObject_V1; +const SealHeadMessageV1 = vereign.protobuf.qrcode_data.SealDocumentHeadData_V1; const EMAIL_DATA_V1 = "EmailData_V1"; +const DOCUMENT_DATA_V1 = "DocumentData_V1"; interface WrappedData { version: number; @@ -133,7 +144,94 @@ const verifyQrCodeSignature = async ( return result; }; +const decodeDocumentData = ( + binary: string | Uint8Array | ArrayBuffer +): DocumentData => { + const wrappedDataMessage = WrapperDataMessage.decode( + ensureUint8Array(binary) + ); + const wrappedData = WrapperDataMessage.toObject( + wrappedDataMessage + ) as WrappedData; + + if (wrappedData.className === DOCUMENT_DATA_V1) { + const documentDataMessage = DocumentDataMessageV1.decode( + ensureUint8Array(wrappedData.data) + ); + + const messageData = DocumentDataMessageV1.toObject(documentDataMessage, { + bytes: String, + }) as DocumentData; + + return messageData; + } + + return null; +}; + +const encodeDocumentData = (documentData: DocumentData): string => { + const documentDataMessage = DocumentDataMessageV1.fromObject(documentData); + const documentDataBuffer = + DocumentDataMessageV1.encode(documentDataMessage).finish(); + + const wrappedData = { + version: 1, + className: DOCUMENT_DATA_V1, + data: documentDataBuffer, + }; + + const wrappedDataMessage = WrapperDataMessage.fromObject(wrappedData); + const wrappedDataBuffer = + WrapperDataMessage.encode(wrappedDataMessage).finish(); + return arrayBufferToBase64(wrappedDataBuffer); +}; + +const encodeSealHead = (sealHeadData: SealHeadData): string => { + const sealHeadDataMessage = SealHeadMessageV1.fromObject(sealHeadData); + const buffer = SealHeadMessageV1.encode(sealHeadDataMessage).finish(); + + return arrayBufferToBase64(buffer); +}; + +const decodeSealHead = ( + binary: string | Uint8Array | ArrayBuffer +): SealHeadData => { + const sealHeadDataMessage = SealHeadMessageV1.decode( + ensureUint8Array(binary) + ); + + return SealHeadMessageV1.toObject(sealHeadDataMessage, { + bytes: String, + }) as SealHeadData; +}; + +const encodeSealIndexObject = (indexObjectData: SealIndexObject): string => { + const sealIndexDataMessage = + SealIndexObjectMessageV1.fromObject(indexObjectData); + const buffer = SealIndexObjectMessageV1.encode(sealIndexDataMessage).finish(); + + return arrayBufferToBase64(buffer); +}; + +const decodeSealIndexObject = ( + binary: string | Uint8Array | ArrayBuffer +): SealIndexObject => { + const sealIndexDataMessage = SealIndexObjectMessageV1.decode( + ensureUint8Array(binary) + ); + + return SealIndexObjectMessageV1.toObject(sealIndexDataMessage, { + bytes: String, + }) as SealIndexObject; +}; + export default { + encodeSealHead, + decodeSealHead, + encodeSealIndexObject, + decodeSealIndexObject, + encodeDocumentData, + decodeDocumentData, encodeEmailData, decodeEmailData, encodeKeyDataPair, diff --git a/src/types.ts b/src/types.ts index be29d595d9ee722535f70fa3d72f2ef996aa8e6b..2307df34d176465f43e879a512f30818591afda3 100644 --- a/src/types.ts +++ b/src/types.ts @@ -20,6 +20,13 @@ export interface IpfsContentData { head: string; } +export interface IpfsDocumentContentData { + head: string; + key: string; + cid?: string; + ipnsKeyId?: string; +} + export interface IpfsAttachmentData { cid: string; key: string; @@ -152,3 +159,68 @@ export interface KeyDataPair { key: string; data: string; } + +export interface ICert { + clientCertificate: boolean; + issuedBy: { + countryName: string; + organizationName: string; + commonName: string; + }; + issuedTo: { + countryName: string; + organizationalUnitName: string; + organizationName: string; + commonName: string; + }; + validityPeriod: { + notBefore: string; + notAfter: string; + }; + pemCertificate: string; +} + +export interface ISignature { + isExpired: boolean; + meta: { + certs: Array<ICert>; + reason: string; + contactInfo: string; + location: string; + signDate: string; + }; +} + +export interface DocumentData { + author: string; + documentTitle: string; + creationDate: string; + lastModDate: string; + documentPages: number; + expired?: boolean; + signatures?: Array<ISignature>; + ipfs?: IpfsDocumentContentData; +} + +export interface DocumentStatusObject { + timestamp: number; + sealHash: string; +} + +export interface SealHeadData { + key: string; + data: string; + ipfsIndexCid: string; +} + +export interface SealCoords { + [key: string]: { x: string; y: string }; +} + +export interface SealIndexObject { + sealKey: string; + sealTailCid: string; + chain: string; + currentBlockHeight: number; + accountId: string; +} diff --git a/statuses-protocol b/statuses-protocol index e6b969480b7ffa7c4b44448882bbb5459ff2efe6..7eed215ca60a10262c2fe041c6eb4c2612cc24c3 160000 --- a/statuses-protocol +++ b/statuses-protocol @@ -1 +1 @@ -Subproject commit e6b969480b7ffa7c4b44448882bbb5459ff2efe6 +Subproject commit 7eed215ca60a10262c2fe041c6eb4c2612cc24c3 diff --git a/vereign/protobuf/qrcode_data.proto b/vereign/protobuf/qrcode_data.proto index 5e4e07ea749162a28d3b14ffbf75ceb40f5627ae..b46cfba1b13c6b183153c292899e5ff384622364 100644 --- a/vereign/protobuf/qrcode_data.proto +++ b/vereign/protobuf/qrcode_data.proto @@ -23,9 +23,10 @@ message Recipients_V1 { } message IpfsContentData_V1 { - string cid = 1; - string key = 2; - string head = 3; + string head = 1; + string key = 2; + string cid = 3; + string ipnsKeyId = 4; } message IpfsAttachmentData_V1 { @@ -64,3 +65,67 @@ message WrapperData { int32 version = 2; string className = 3; } + +message CertIssuer { + string countryName = 1 ; + string organizationName = 2; + string commonName = 3; +} + +message CertIssedTo { + string countryName = 1; + string organizationalUnitName = 2; + string organizationName = 3; + string commonName = 4; +} + +message CertValidity { + string notBefore = 1; + string notAfter = 2; +} + +message Cert_V1 { + bool clientCertificate = 1; + CertIssuer issuedBy = 2; + CertIssedTo issuedTo = 3; + CertValidity validityPeriod = 4; + string pemCertificate = 5; +} + +message SignatureMeta_V1 { + repeated Cert_V1 certs = 1; + string reason = 2; + string contactInfo = 3; + string location = 4; + string signDate = 5; +} + +message Signature_V1 { + bool isExpired = 1; + SignatureMeta_V1 meta = 2; +}; + +message DocumentData_V1 { + string author = 1; + string documentTitle = 2; + string creationDate = 3; + string lastModDate = 4; + int32 documentPages = 5; + bool expired = 6; + repeated Signature_V1 signatures = 7; + IpfsContentData_V1 ipfs = 8; +} + + message SealDocumentHeadData_V1 { + bytes key = 1; + bytes data = 2; + string ipfsIndexCid = 3; +} + +message SealIndexObject_V1 { + bytes sealKey = 1; + string sealTailCid = 2; + string chain = 3; + string currentBlockHeight = 4; + string accountId = 5; +} diff --git a/yarn.lock b/yarn.lock index 2978c2779dd5067e2d0a46b71bec97aee43a54f9..358eead1d573dbd8322be8ead6fbb666417ac629 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,6 +2,13 @@ # yarn lockfile v1 +"@ampproject/remapping@^2.0.0": + version "2.1.1" + resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.1.1.tgz#7922fb0817bf3166d8d9e258c57477e3fd1c3610" + integrity sha512-Aolwjd7HSC2PyY0fDj/wA/EimQT4HfEnFYNp5s9CQlrdhyvWTtvZ5YzrUPu6R6/1jKiUlxu8bUhkdSnKHNAHMA== + dependencies: + "@jridgewell/trace-mapping" "^0.3.0" + "@babel/code-frame@7.12.11": version "7.12.11" resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.12.11.tgz#f4ad435aa263db935b8f10f2c552d23fb716a63f" @@ -16,38 +23,38 @@ dependencies: "@babel/highlight" "^7.16.7" -"@babel/compat-data@^7.13.11", "@babel/compat-data@^7.16.4": - version "7.16.4" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.16.4.tgz#081d6bbc336ec5c2435c6346b2ae1fb98b5ac68e" - integrity sha512-1o/jo7D+kC9ZjHX5v+EHrdjl3PhxMrLSOTGsOdHJ+KL8HCaEK6ehrVL2RS6oHDZp+L7xLirLrPmQtEng769J/Q== +"@babel/compat-data@^7.13.11", "@babel/compat-data@^7.16.4", "@babel/compat-data@^7.16.8": + version "7.17.0" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.17.0.tgz#86850b8597ea6962089770952075dcaabb8dba34" + integrity sha512-392byTlpGWXMv4FbyWw3sAZ/FrW/DrwqLGXpy0mbyNe9Taqv1mg9yON5/o0cnr8XYCkFTZbC1eV+c+LAROgrng== "@babel/core@^7.1.0", "@babel/core@^7.11.4", "@babel/core@^7.12.3", "@babel/core@^7.7.5": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.16.7.tgz#db990f931f6d40cb9b87a0dc7d2adc749f1dcbcf" - integrity sha512-aeLaqcqThRNZYmbMqtulsetOQZ/5gbR/dWruUCJcpas4Qoyy+QeagfDsPdMrqwsPRDNxJvBlRiZxxX7THO7qtA== + version "7.17.2" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.17.2.tgz#2c77fc430e95139d816d39b113b31bf40fb22337" + integrity sha512-R3VH5G42VSDolRHyUO4V2cfag8WHcZyxdq5Z/m8Xyb92lW/Erm/6kM+XtRFGf3Mulre3mveni2NHfEUws8wSvw== dependencies: + "@ampproject/remapping" "^2.0.0" "@babel/code-frame" "^7.16.7" - "@babel/generator" "^7.16.7" + "@babel/generator" "^7.17.0" "@babel/helper-compilation-targets" "^7.16.7" "@babel/helper-module-transforms" "^7.16.7" - "@babel/helpers" "^7.16.7" - "@babel/parser" "^7.16.7" + "@babel/helpers" "^7.17.2" + "@babel/parser" "^7.17.0" "@babel/template" "^7.16.7" - "@babel/traverse" "^7.16.7" - "@babel/types" "^7.16.7" + "@babel/traverse" "^7.17.0" + "@babel/types" "^7.17.0" convert-source-map "^1.7.0" debug "^4.1.0" gensync "^1.0.0-beta.2" json5 "^2.1.2" semver "^6.3.0" - source-map "^0.5.0" -"@babel/generator@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.16.7.tgz#b42bf46a3079fa65e1544135f32e7958f048adbb" - integrity sha512-/ST3Sg8MLGY5HVYmrjOgL60ENux/HfO/CsUh7y4MalThufhE/Ff/6EibFDHi4jiDCaWfJKoqbE6oTh21c5hrRg== +"@babel/generator@^7.17.0": + version "7.17.0" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.17.0.tgz#7bd890ba706cd86d3e2f727322346ffdbf98f65e" + integrity sha512-I3Omiv6FGOC29dtlZhkfXO6pgkmukJSlT26QjVvS1DGZe/NzSVCPG41X0tS21oZkJYlovfj9qDWgKP+Cn4bXxw== dependencies: - "@babel/types" "^7.16.7" + "@babel/types" "^7.17.0" jsesc "^2.5.1" source-map "^0.5.0" @@ -76,10 +83,10 @@ browserslist "^4.17.5" semver "^6.3.0" -"@babel/helper-create-class-features-plugin@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.16.7.tgz#9c5b34b53a01f2097daf10678d65135c1b9f84ba" - integrity sha512-kIFozAvVfK05DM4EVQYKK+zteWvY85BFdGBRQBytRyY3y+6PX0DkDOn/CZ3lEuczCfrCxEzwt0YtP/87YPTWSw== +"@babel/helper-create-class-features-plugin@^7.16.10", "@babel/helper-create-class-features-plugin@^7.16.7": + version "7.17.1" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.17.1.tgz#9699f14a88833a7e055ce57dcd3ffdcd25186b21" + integrity sha512-JBdSr/LtyYIno/pNnJ75lBcqc3Z1XXujzPanHqjvvrhOA+DTceTFuJi8XjmWTZh4r3fsdfqaCMN0iZemdkxZHQ== dependencies: "@babel/helper-annotate-as-pure" "^7.16.7" "@babel/helper-environment-visitor" "^7.16.7" @@ -90,17 +97,17 @@ "@babel/helper-split-export-declaration" "^7.16.7" "@babel/helper-create-regexp-features-plugin@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.16.7.tgz#0cb82b9bac358eb73bfbd73985a776bfa6b14d48" - integrity sha512-fk5A6ymfp+O5+p2yCkXAu5Kyj6v0xh0RBeNcAkYUMDvvAAoxvSKXn+Jb37t/yWFiQVDFK1ELpUTD8/aLhCPu+g== + version "7.17.0" + resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.17.0.tgz#1dcc7d40ba0c6b6b25618997c5dbfd310f186fe1" + integrity sha512-awO2So99wG6KnlE+TPs6rn83gCz5WlEePJDTnLEqbchMVrBeAujURVphRdigsk094VhvZehFoNOihSlcBjwsXA== dependencies: "@babel/helper-annotate-as-pure" "^7.16.7" - regexpu-core "^4.7.1" + regexpu-core "^5.0.1" -"@babel/helper-define-polyfill-provider@^0.3.0": - version "0.3.0" - resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.0.tgz#c5b10cf4b324ff840140bb07e05b8564af2ae971" - integrity sha512-7hfT8lUljl/tM3h+izTX/pO3W3frz2ok6Pk+gzys8iJqDfZrZy2pXjRTZAvG2YmfHun1X4q8/UZRLatMfqc5Tg== +"@babel/helper-define-polyfill-provider@^0.3.1": + version "0.3.1" + resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.1.tgz#52411b445bdb2e676869e5a74960d2d3826d2665" + integrity sha512-J9hGMpJQmtWmj46B3kBHmL38UhJGhYX7eqkcq+2gsstyYt341HmPeWspihX43yVRA0mS+8GGk2Gckc7bY/HCmA== dependencies: "@babel/helper-compilation-targets" "^7.13.0" "@babel/helper-module-imports" "^7.12.13" @@ -188,14 +195,14 @@ resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz#aa3a8ab4c3cceff8e65eb9e73d87dc4ff320b2f5" integrity sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA== -"@babel/helper-remap-async-to-generator@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.16.7.tgz#5ce2416990d55eb6e099128338848ae8ffa58a9a" - integrity sha512-C3o117GnP/j/N2OWo+oepeWbFEKRfNaay+F1Eo5Mj3A1SRjyx+qaFhm23nlipub7Cjv2azdUUiDH+VlpdwUFRg== +"@babel/helper-remap-async-to-generator@^7.16.8": + version "7.16.8" + resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.16.8.tgz#29ffaade68a367e2ed09c90901986918d25e57e3" + integrity sha512-fm0gH7Flb8H51LqJHy3HJ3wnE1+qtYR2A99K06ahwrawLdOFsCEWjZOrYricXJHoPSudNKxrMBUPEIPxiIIvBw== dependencies: "@babel/helper-annotate-as-pure" "^7.16.7" - "@babel/helper-wrap-function" "^7.16.7" - "@babel/types" "^7.16.7" + "@babel/helper-wrap-function" "^7.16.8" + "@babel/types" "^7.16.8" "@babel/helper-replace-supers@^7.16.7": version "7.16.7" @@ -239,38 +246,38 @@ resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.16.7.tgz#b203ce62ce5fe153899b617c08957de860de4d23" integrity sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ== -"@babel/helper-wrap-function@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.16.7.tgz#8ddf9eaa770ed43de4bc3687f3f3b0d6d5ecf014" - integrity sha512-7a9sABeVwcunnztZZ7WTgSw6jVYLzM1wua0Z4HIXm9S3/HC96WKQTkFgGEaj5W06SHHihPJ6Le6HzS5cGOQMNw== +"@babel/helper-wrap-function@^7.16.8": + version "7.16.8" + resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.16.8.tgz#58afda087c4cd235de92f7ceedebca2c41274200" + integrity sha512-8RpyRVIAW1RcDDGTA+GpPAwV22wXCfKOoM9bet6TLkGIFTkRQSkH1nMQ5Yet4MpoXe1ZwHPVtNasc2w0uZMqnw== dependencies: "@babel/helper-function-name" "^7.16.7" "@babel/template" "^7.16.7" - "@babel/traverse" "^7.16.7" - "@babel/types" "^7.16.7" + "@babel/traverse" "^7.16.8" + "@babel/types" "^7.16.8" -"@babel/helpers@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.16.7.tgz#7e3504d708d50344112767c3542fc5e357fffefc" - integrity sha512-9ZDoqtfY7AuEOt3cxchfii6C7GDyyMBffktR5B2jvWv8u2+efwvpnVKXMWzNehqy68tKgAfSwfdw/lWpthS2bw== +"@babel/helpers@^7.17.2": + version "7.17.2" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.17.2.tgz#23f0a0746c8e287773ccd27c14be428891f63417" + integrity sha512-0Qu7RLR1dILozr/6M0xgj+DFPmi6Bnulgm9M8BVa9ZCWxDqlSnqt3cf8IDPB5m45sVXUZ0kuQAgUrdSFFH79fQ== dependencies: "@babel/template" "^7.16.7" - "@babel/traverse" "^7.16.7" - "@babel/types" "^7.16.7" + "@babel/traverse" "^7.17.0" + "@babel/types" "^7.17.0" "@babel/highlight@^7.10.4", "@babel/highlight@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.16.7.tgz#81a01d7d675046f0d96f82450d9d9578bdfd6b0b" - integrity sha512-aKpPMfLvGO3Q97V0qhw/V2SWNWlwfJknuwAunU7wZLSfrM4xTBvg7E5opUVi1kJTBKihE38CPg4nBiqX83PWYw== + version "7.16.10" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.16.10.tgz#744f2eb81579d6eea753c227b0f570ad785aba88" + integrity sha512-5FnTQLSLswEj6IkgVw5KusNUUFY9ZGqe/TRFnP/BKYHYgfh7tc+C7mwiy95/yNP7Dh9x580Vv8r7u7ZfTBFxdw== dependencies: "@babel/helper-validator-identifier" "^7.16.7" chalk "^2.0.0" js-tokens "^4.0.0" -"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.16.7", "@babel/parser@^7.7.0": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.16.7.tgz#d372dda9c89fcec340a82630a9f533f2fe15877e" - integrity sha512-sR4eaSrnM7BV7QPzGfEX5paG/6wrZM3I0HDzfIAK06ESvo9oy3xBuVBxE3MbQaKNhvg8g/ixjMWo2CGpzpHsDA== +"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.16.7", "@babel/parser@^7.17.0", "@babel/parser@^7.7.0": + version "7.17.0" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.17.0.tgz#f0ac33eddbe214e4105363bb17c3341c5ffcc43c" + integrity sha512-VKXSCQx5D8S04ej+Dqsr1CzYvvWgf20jIw2D+YhQCrIlr2UZGaDds23Y0xg75/skOxpLCRpUZvk/1EAVkGoDOw== "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.16.7": version "7.16.7" @@ -288,13 +295,13 @@ "@babel/helper-skip-transparent-expression-wrappers" "^7.16.0" "@babel/plugin-proposal-optional-chaining" "^7.16.7" -"@babel/plugin-proposal-async-generator-functions@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.16.7.tgz#739adc1212a9e4892de440cd7dfffb06172df78d" - integrity sha512-TTXBT3A5c11eqRzaC6beO6rlFT3Mo9C2e8eB44tTr52ESXSK2CIc2fOp1ynpAwQA8HhBMho+WXhMHWlAe3xkpw== +"@babel/plugin-proposal-async-generator-functions@^7.16.8": + version "7.16.8" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.16.8.tgz#3bdd1ebbe620804ea9416706cd67d60787504bc8" + integrity sha512-71YHIvMuiuqWJQkebWJtdhQTfd4Q4mF76q2IX37uZPkG9+olBxsX+rH1vkhFto4UeJZ9dPY2s+mDvhDm1u2BGQ== dependencies: "@babel/helper-plugin-utils" "^7.16.7" - "@babel/helper-remap-async-to-generator" "^7.16.7" + "@babel/helper-remap-async-to-generator" "^7.16.8" "@babel/plugin-syntax-async-generators" "^7.8.4" "@babel/plugin-proposal-class-properties@^7.16.7": @@ -390,12 +397,12 @@ "@babel/helper-skip-transparent-expression-wrappers" "^7.16.0" "@babel/plugin-syntax-optional-chaining" "^7.8.3" -"@babel/plugin-proposal-private-methods@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.16.7.tgz#e418e3aa6f86edd6d327ce84eff188e479f571e0" - integrity sha512-7twV3pzhrRxSwHeIvFE6coPgvo+exNDOiGUMg39o2LiLo1Y+4aKpfkcLGcg1UHonzorCt7SNXnoMyCnnIOA8Sw== +"@babel/plugin-proposal-private-methods@^7.16.11": + version "7.16.11" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.16.11.tgz#e8df108288555ff259f4527dbe84813aac3a1c50" + integrity sha512-F/2uAkPlXDr8+BHpZvo19w3hLFKge+k75XUprE6jaqKxjGkSYcK+4c+bup5PdW/7W/Rpjwql7FTVEDW+fRAQsw== dependencies: - "@babel/helper-create-class-features-plugin" "^7.16.7" + "@babel/helper-create-class-features-plugin" "^7.16.10" "@babel/helper-plugin-utils" "^7.16.7" "@babel/plugin-proposal-private-property-in-object@^7.16.7": @@ -542,14 +549,14 @@ dependencies: "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-transform-async-to-generator@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.16.7.tgz#646e1262ac341b587ff5449844d4492dbb10ac4b" - integrity sha512-pFEfjnK4DfXCfAlA5I98BYdDJD8NltMzx19gt6DAmfE+2lXRfPUoa0/5SUjT4+TDE1W/rcxU/1lgN55vpAjjdg== +"@babel/plugin-transform-async-to-generator@^7.16.8": + version "7.16.8" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.16.8.tgz#b83dff4b970cf41f1b819f8b49cc0cfbaa53a808" + integrity sha512-MtmUmTJQHCnyJVrScNzNlofQJ3dLFuobYn3mwOTKHnSCMtbNsqvF71GQmJfFjdrXSsAA7iysFmYWw4bXZ20hOg== dependencies: "@babel/helper-module-imports" "^7.16.7" "@babel/helper-plugin-utils" "^7.16.7" - "@babel/helper-remap-async-to-generator" "^7.16.7" + "@babel/helper-remap-async-to-generator" "^7.16.8" "@babel/plugin-transform-block-scoped-functions@^7.16.7": version "7.16.7" @@ -655,10 +662,10 @@ "@babel/helper-plugin-utils" "^7.16.7" babel-plugin-dynamic-import-node "^2.3.3" -"@babel/plugin-transform-modules-commonjs@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.16.7.tgz#fd119e6a433c527d368425b45df361e1e95d3c1a" - integrity sha512-h2RP2kE7He1ZWKyAlanMZrAbdv+Acw1pA8dQZhE025WJZE2z0xzFADAinXA9fxd5bn7JnM+SdOGcndGx1ARs9w== +"@babel/plugin-transform-modules-commonjs@^7.16.8": + version "7.16.8" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.16.8.tgz#cdee19aae887b16b9d331009aa9a219af7c86afe" + integrity sha512-oflKPvsLT2+uKQopesJt3ApiaIS2HW+hzHFcwRNtyDGieAeC/dIHZX8buJQ2J2X1rxGPy4eRcUijm3qcSPjYcA== dependencies: "@babel/helper-module-transforms" "^7.16.7" "@babel/helper-plugin-utils" "^7.16.7" @@ -684,10 +691,10 @@ "@babel/helper-module-transforms" "^7.16.7" "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-transform-named-capturing-groups-regex@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.16.7.tgz#749d90d94e73cf62c60a0cc8d6b94d29305a81f2" - integrity sha512-kFy35VwmwIQwCjwrAQhl3+c/kr292i4KdLPKp5lPH03Ltc51qnFlIADoyPxc/6Naz3ok3WdYKg+KK6AH+D4utg== +"@babel/plugin-transform-named-capturing-groups-regex@^7.16.8": + version "7.16.8" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.16.8.tgz#7f860e0e40d844a02c9dcf9d84965e7dfd666252" + integrity sha512-j3Jw+n5PvpmhRR+mrgIh04puSANCk/T/UA3m3P1MjJkhlK906+ApHhDIqBQDdOgL/r1UYpz4GNclTXxyZrYGSw== dependencies: "@babel/helper-create-regexp-features-plugin" "^7.16.7" @@ -771,9 +778,9 @@ "@babel/helper-plugin-utils" "^7.16.7" "@babel/plugin-transform-typescript@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.16.7.tgz#33f8c2c890fbfdc4ef82446e9abb8de8211a3ff3" - integrity sha512-Hzx1lvBtOCWuCEwMmYOfpQpO7joFeXLgoPuzZZBtTxXqSqUGUubvFGZv2ygo1tB5Bp9q6PXV3H0E/kf7KM0RLA== + version "7.16.8" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.16.8.tgz#591ce9b6b83504903fa9dd3652c357c2ba7a1ee0" + integrity sha512-bHdQ9k7YpBDO2d0NVfkj51DpQcvwIzIusJ7mEUaMlbZq3Kt/U47j24inXZHQ5MDiYpCs+oZiwnXyKedE8+q7AQ== dependencies: "@babel/helper-create-class-features-plugin" "^7.16.7" "@babel/helper-plugin-utils" "^7.16.7" @@ -795,17 +802,17 @@ "@babel/helper-plugin-utils" "^7.16.7" "@babel/preset-env@^7.11.0": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.16.7.tgz#c491088856d0b3177822a2bf06cb74d76327aa56" - integrity sha512-urX3Cee4aOZbRWOSa3mKPk0aqDikfILuo+C7qq7HY0InylGNZ1fekq9jmlr3pLWwZHF4yD7heQooc2Pow2KMyQ== + version "7.16.11" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.16.11.tgz#5dd88fd885fae36f88fd7c8342475c9f0abe2982" + integrity sha512-qcmWG8R7ZW6WBRPZK//y+E3Cli151B20W1Rv7ln27vuPaXU/8TKms6jFdiJtF7UDTxcrb7mZd88tAeK9LjdT8g== dependencies: - "@babel/compat-data" "^7.16.4" + "@babel/compat-data" "^7.16.8" "@babel/helper-compilation-targets" "^7.16.7" "@babel/helper-plugin-utils" "^7.16.7" "@babel/helper-validator-option" "^7.16.7" "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.16.7" "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.16.7" - "@babel/plugin-proposal-async-generator-functions" "^7.16.7" + "@babel/plugin-proposal-async-generator-functions" "^7.16.8" "@babel/plugin-proposal-class-properties" "^7.16.7" "@babel/plugin-proposal-class-static-block" "^7.16.7" "@babel/plugin-proposal-dynamic-import" "^7.16.7" @@ -817,7 +824,7 @@ "@babel/plugin-proposal-object-rest-spread" "^7.16.7" "@babel/plugin-proposal-optional-catch-binding" "^7.16.7" "@babel/plugin-proposal-optional-chaining" "^7.16.7" - "@babel/plugin-proposal-private-methods" "^7.16.7" + "@babel/plugin-proposal-private-methods" "^7.16.11" "@babel/plugin-proposal-private-property-in-object" "^7.16.7" "@babel/plugin-proposal-unicode-property-regex" "^7.16.7" "@babel/plugin-syntax-async-generators" "^7.8.4" @@ -835,7 +842,7 @@ "@babel/plugin-syntax-private-property-in-object" "^7.14.5" "@babel/plugin-syntax-top-level-await" "^7.14.5" "@babel/plugin-transform-arrow-functions" "^7.16.7" - "@babel/plugin-transform-async-to-generator" "^7.16.7" + "@babel/plugin-transform-async-to-generator" "^7.16.8" "@babel/plugin-transform-block-scoped-functions" "^7.16.7" "@babel/plugin-transform-block-scoping" "^7.16.7" "@babel/plugin-transform-classes" "^7.16.7" @@ -849,10 +856,10 @@ "@babel/plugin-transform-literals" "^7.16.7" "@babel/plugin-transform-member-expression-literals" "^7.16.7" "@babel/plugin-transform-modules-amd" "^7.16.7" - "@babel/plugin-transform-modules-commonjs" "^7.16.7" + "@babel/plugin-transform-modules-commonjs" "^7.16.8" "@babel/plugin-transform-modules-systemjs" "^7.16.7" "@babel/plugin-transform-modules-umd" "^7.16.7" - "@babel/plugin-transform-named-capturing-groups-regex" "^7.16.7" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.16.8" "@babel/plugin-transform-new-target" "^7.16.7" "@babel/plugin-transform-object-super" "^7.16.7" "@babel/plugin-transform-parameters" "^7.16.7" @@ -867,11 +874,11 @@ "@babel/plugin-transform-unicode-escapes" "^7.16.7" "@babel/plugin-transform-unicode-regex" "^7.16.7" "@babel/preset-modules" "^0.1.5" - "@babel/types" "^7.16.7" + "@babel/types" "^7.16.8" babel-plugin-polyfill-corejs2 "^0.3.0" - babel-plugin-polyfill-corejs3 "^0.4.0" + babel-plugin-polyfill-corejs3 "^0.5.0" babel-plugin-polyfill-regenerator "^0.3.0" - core-js-compat "^3.19.1" + core-js-compat "^3.20.2" semver "^6.3.0" "@babel/preset-modules@^0.1.5": @@ -895,9 +902,9 @@ "@babel/plugin-transform-typescript" "^7.16.7" "@babel/runtime@^7.8.4": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.16.7.tgz#03ff99f64106588c9c403c6ecb8c3bafbbdff1fa" - integrity sha512-9E9FJowqAsytyOY6LG+1KuueckRL+aQW+mKvXRXnuFGyRAyepJPmEo9vgMfXUA6O9u3IeEdv9MAkppFcaQwogQ== + version "7.17.2" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.17.2.tgz#66f68591605e59da47523c631416b18508779941" + integrity sha512-hzeyJyMA1YGdJTuWU0e/j4wKXrU4OMFvY2MSlaI9B7VQb0r5cxTE3EAIS2Q7Tn2RIcDkRvTA/v2JsAEhxe99uw== dependencies: regenerator-runtime "^0.13.4" @@ -910,26 +917,26 @@ "@babel/parser" "^7.16.7" "@babel/types" "^7.16.7" -"@babel/traverse@^7.1.0", "@babel/traverse@^7.13.0", "@babel/traverse@^7.16.7", "@babel/traverse@^7.7.0": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.16.7.tgz#dac01236a72c2560073658dd1a285fe4e0865d76" - integrity sha512-8KWJPIb8c2VvY8AJrydh6+fVRo2ODx1wYBU2398xJVq0JomuLBZmVQzLPBblJgHIGYG4znCpUZUZ0Pt2vdmVYQ== +"@babel/traverse@^7.1.0", "@babel/traverse@^7.13.0", "@babel/traverse@^7.16.7", "@babel/traverse@^7.16.8", "@babel/traverse@^7.17.0", "@babel/traverse@^7.7.0": + version "7.17.0" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.17.0.tgz#3143e5066796408ccc880a33ecd3184f3e75cd30" + integrity sha512-fpFIXvqD6kC7c7PUNnZ0Z8cQXlarCLtCUpt2S1Dx7PjoRtCFffvOkHHSom+m5HIxMZn5bIBVb71lhabcmjEsqg== dependencies: "@babel/code-frame" "^7.16.7" - "@babel/generator" "^7.16.7" + "@babel/generator" "^7.17.0" "@babel/helper-environment-visitor" "^7.16.7" "@babel/helper-function-name" "^7.16.7" "@babel/helper-hoist-variables" "^7.16.7" "@babel/helper-split-export-declaration" "^7.16.7" - "@babel/parser" "^7.16.7" - "@babel/types" "^7.16.7" + "@babel/parser" "^7.17.0" + "@babel/types" "^7.17.0" debug "^4.1.0" globals "^11.1.0" -"@babel/types@^7.0.0", "@babel/types@^7.16.0", "@babel/types@^7.16.7", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4", "@babel/types@^7.7.0": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.16.7.tgz#4ed19d51f840ed4bd5645be6ce40775fecf03159" - integrity sha512-E8HuV7FO9qLpx6OtoGfUQ2cjIYnbFwvZWYBS+87EwtdMvmUPJSwykpovFB+8insbpF0uJcpr8KMUi64XZntZcg== +"@babel/types@^7.0.0", "@babel/types@^7.16.0", "@babel/types@^7.16.7", "@babel/types@^7.16.8", "@babel/types@^7.17.0", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4", "@babel/types@^7.7.0": + version "7.17.0" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.17.0.tgz#a826e368bccb6b3d84acd76acad5c0d87342390b" + integrity sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw== dependencies: "@babel/helper-validator-identifier" "^7.16.7" to-fast-properties "^2.0.0" @@ -1163,6 +1170,24 @@ "@types/yargs" "^15.0.0" chalk "^4.0.0" +"@jridgewell/resolve-uri@^3.0.3": + version "3.0.5" + resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.0.5.tgz#68eb521368db76d040a6315cdb24bf2483037b9c" + integrity sha512-VPeQ7+wH0itvQxnG+lIzWgkysKIr3L9sslimFW55rHMdGu/qCQ5z5h9zq4gI8uBtqkpHhsF4Z/OwExufUCThew== + +"@jridgewell/sourcemap-codec@^1.4.10": + version "1.4.11" + resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.11.tgz#771a1d8d744eeb71b6adb35808e1a6c7b9b8c8ec" + integrity sha512-Fg32GrJo61m+VqYSdRSjRXMjQ06j8YIYfcTqndLYVAaHmroZHLJZCydsWBOTDqXS2v+mjxohBWEMfg97GXmYQg== + +"@jridgewell/trace-mapping@^0.3.0": + version "0.3.4" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.4.tgz#f6a0832dffd5b8a6aaa633b7d9f8e8e94c83a0c3" + integrity sha512-vFv9ttIedivx0ux3QSjhgtCVjPZd5l46ZOMDSCwnH1yUO2e964gO8LZGyv2QkqcgR6TnBU1v+1IFqmeoG+0UJQ== + dependencies: + "@jridgewell/resolve-uri" "^3.0.3" + "@jridgewell/sourcemap-codec" "^1.4.10" + "@mapbox/node-pre-gyp@^1.0.0": version "1.0.8" resolved "https://registry.yarnpkg.com/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.8.tgz#32abc8a5c624bc4e46c43d84dfb8b26d33a96f58" @@ -1344,9 +1369,9 @@ integrity sha512-5tXH6Bx/kNGd3MgffdmP4dy2Z+G4eaXw0SE81Tq3BNadtnMR5/ySMzX4SLEzHJzSmPNn4HIdpQsBvXMUykr58w== "@types/node@*", "@types/node@>=13.7.0": - version "17.0.7" - resolved "https://registry.yarnpkg.com/@types/node/-/node-17.0.7.tgz#4a53d8332bb65a45470a2f9e2611f1ced637a5cb" - integrity sha512-1QUk+WAUD4t8iR+Oj+UgI8oJa6yyxaB8a8pHaC8uqM6RrS1qbL7bf3Pwl5rHv0psm2CuDErgho6v5N+G+5fwtQ== + version "17.0.18" + resolved "https://registry.yarnpkg.com/@types/node/-/node-17.0.18.tgz#3b4fed5cfb58010e3a2be4b6e74615e4847f1074" + integrity sha512-eKj4f/BsN/qcculZiRSujogjvp5O/k4lOW5m35NopjZM/QwLOR075a8pJW5hD+Rtdm2DaCVPENS6KtSQnUD6BA== "@types/normalize-package-data@^2.4.0": version "2.4.1" @@ -1364,9 +1389,9 @@ integrity sha512-SuT16Q1K51EAVPz1K29DJ/sXjhSQ0zjvsypYJ6tlwVsRV9jwW5Adq2ch8Dq8kDBCkYnELS7N7VNCSB5nC56t/g== "@types/prettier@^2.0.0": - version "2.4.2" - resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.4.2.tgz#4c62fae93eb479660c3bd93f9d24d561597a8281" - integrity sha512-ekoj4qOQYp7CvjX8ZDBgN86w3MqQhLE1hczEJbEIjgFEumDy+na/4AJAbLXfgEWFNB2pKadM5rPFtuSGMWK7xA== + version "2.4.4" + resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.4.4.tgz#5d9b63132df54d8909fce1c3f8ca260fdd693e17" + integrity sha512-ReVR2rLTV1kvtlWFyuot+d1pkpG2Fw/XKE3PDAdj57rbM97ttSp9JZ2UsP+2EHTylra9cUf6JA7tGwW1INzUrA== "@types/stack-utils@^2.0.0": version "2.0.1" @@ -1514,9 +1539,9 @@ ajv@^6.10.0, ajv@^6.12.4: uri-js "^4.2.2" ajv@^8.0.1: - version "8.8.2" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.8.2.tgz#01b4fef2007a28bf75f0b7fc009f62679de4abbb" - integrity sha512-x9VuX+R/jcFj1DHo/fCp99esgGDWiHENrKxaCENuCxpoMCmAt/COCGVDwA7kleEpEzJjDnvh3yGoOuLu0Dtllw== + version "8.10.0" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.10.0.tgz#e573f719bd3af069017e3b66538ab968d040e54d" + integrity sha512-bzqAEZOjkrUMl2afH8dknrq5KEk2SrwdBROR+vH1EKVQTqaUbJVPdc/gEdggTMM0Se+s+Ja4ju4TlNcStKl2Hw== dependencies: fast-deep-equal "^3.1.1" json-schema-traverse "^1.0.0" @@ -1692,28 +1717,28 @@ babel-plugin-jest-hoist@^26.6.2: "@types/babel__traverse" "^7.0.6" babel-plugin-polyfill-corejs2@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.0.tgz#407082d0d355ba565af24126fb6cb8e9115251fd" - integrity sha512-wMDoBJ6uG4u4PNFh72Ty6t3EgfA91puCuAwKIazbQlci+ENb/UU9A3xG5lutjUIiXCIn1CY5L15r9LimiJyrSA== + version "0.3.1" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.1.tgz#440f1b70ccfaabc6b676d196239b138f8a2cfba5" + integrity sha512-v7/T6EQcNfVLfcN2X8Lulb7DjprieyLWJK/zOWH5DUYcAgex9sP3h25Q+DLsX9TloXe3y1O8l2q2Jv9q8UVB9w== dependencies: "@babel/compat-data" "^7.13.11" - "@babel/helper-define-polyfill-provider" "^0.3.0" + "@babel/helper-define-polyfill-provider" "^0.3.1" semver "^6.1.1" -babel-plugin-polyfill-corejs3@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.4.0.tgz#0b571f4cf3d67f911512f5c04842a7b8e8263087" - integrity sha512-YxFreYwUfglYKdLUGvIF2nJEsGwj+RhWSX/ije3D2vQPOXuyMLMtg/cCGMDpOA7Nd+MwlNdnGODbd2EwUZPlsw== +babel-plugin-polyfill-corejs3@^0.5.0: + version "0.5.2" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.5.2.tgz#aabe4b2fa04a6e038b688c5e55d44e78cd3a5f72" + integrity sha512-G3uJih0XWiID451fpeFaYGVuxHEjzKTHtc9uGFEjR6hHrvNzeS/PX+LLLcetJcytsB5m4j+K3o/EpXJNb/5IEQ== dependencies: - "@babel/helper-define-polyfill-provider" "^0.3.0" - core-js-compat "^3.18.0" + "@babel/helper-define-polyfill-provider" "^0.3.1" + core-js-compat "^3.21.0" babel-plugin-polyfill-regenerator@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.3.0.tgz#9ebbcd7186e1a33e21c5e20cae4e7983949533be" - integrity sha512-dhAPTDLGoMW5/84wkgwiLRwMnio2i1fUe53EuvtKMv0pn2p3S8OCoV1xAzfJPl0KOX7IB89s2ib85vbYiea3jg== + version "0.3.1" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.3.1.tgz#2c0678ea47c75c8cc2fbb1852278d8fb68233990" + integrity sha512-Y2B06tvgHYt1x0yz17jGkGeeMr5FeKUu+ASJ+N6nB5lQ8Dapfg42i0OVrf8PNGJ3zKL4A23snMi1IRwrqqND7A== dependencies: - "@babel/helper-define-polyfill-provider" "^0.3.0" + "@babel/helper-define-polyfill-provider" "^0.3.1" babel-preset-current-node-syntax@^1.0.0: version "1.0.1" @@ -1867,17 +1892,17 @@ camelcase@^6.0.0: integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== caniuse-lite@^1.0.30001286: - version "1.0.30001296" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001296.tgz#d99f0f3bee66544800b93d261c4be55a35f1cec8" - integrity sha512-WfrtPEoNSoeATDlf4y3QvkwiELl9GyPLISV5GejTbbQRtQx4LhsXmc9IQ6XCL2d7UxCyEzToEZNMeqR79OUw8Q== + version "1.0.30001312" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001312.tgz#e11eba4b87e24d22697dae05455d5aea28550d5f" + integrity sha512-Wiz1Psk2MEK0pX3rUzWaunLTZzqS2JYZFzNKqAiJGiuxIjRPLgV6+VDPOg6lQOUxmDwhTlh198JsTTi8Hzw6aQ== canvas@^2.8.0: - version "2.8.0" - resolved "https://registry.yarnpkg.com/canvas/-/canvas-2.8.0.tgz#f99ca7f25e6e26686661ffa4fec1239bbef74461" - integrity sha512-gLTi17X8WY9Cf5GZ2Yns8T5lfBOcGgFehDFb+JQwDqdOoBOcECS9ZWMEAqMSVcMYwXD659J8NyzjRY/2aE+C2Q== + version "2.9.0" + resolved "https://registry.yarnpkg.com/canvas/-/canvas-2.9.0.tgz#7df0400b141a7e42e597824f377935ba96880f2a" + integrity sha512-0l93g7uxp7rMyr7H+XRQ28A3ud0dKIUTIEkUe1Dxh4rjUYN7B93+SjC3r1PDKA18xcQN87OFGgUnyw7LSgNLSQ== dependencies: "@mapbox/node-pre-gyp" "^1.0.0" - nan "^2.14.0" + nan "^2.15.0" simple-get "^3.0.3" capture-exit@^2.0.0: @@ -2069,10 +2094,10 @@ copy-descriptor@^0.1.0: resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= -core-js-compat@^3.18.0, core-js-compat@^3.19.1: - version "3.20.2" - resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.20.2.tgz#d1ff6936c7330959b46b2e08b122a8b14e26140b" - integrity sha512-qZEzVQ+5Qh6cROaTPFLNS4lkvQ6mBzE3R6A6EEpssj7Zr2egMHgsy4XapdifqJDGC9CBiNv7s+ejI96rLNQFdg== +core-js-compat@^3.20.2, core-js-compat@^3.21.0: + version "3.21.0" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.21.0.tgz#bcc86aa5a589cee358e7a7fa0a4979d5a76c3885" + integrity sha512-OSXseNPSK2OPJa6GdtkMz/XxeXx8/CJvfhQWTqd6neuUraujcL4jVsjkLQz1OWnax8xVQJnRPe0V2jqNWORA+A== dependencies: browserslist "^4.19.1" semver "7.0.0" @@ -2350,9 +2375,9 @@ easyqrcodejs@^4.3.1: integrity sha512-DEr/Txdyfo0RsKuC0tX6t72GF5oqNFbnKVL9dTLatL5yiLJaId65BSfa5HKl4FaJt71yRX3DF1sf977FwynWtw== electron-to-chromium@^1.4.17: - version "1.4.34" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.34.tgz#7d87dc0e95c2c65cbd0687ae23146a662506d1ef" - integrity sha512-B7g6Y9No9XMYk1VNrQ8KAmSEo1Iltrz/5EjOGxl1DffQAb3z/XbpHRCfYKwV8D+CPXm4Q7Xg1sceSt9osNwRIA== + version "1.4.71" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.71.tgz#17056914465da0890ce00351a3b946fd4cd51ff6" + integrity sha512-Hk61vXXKRb2cd3znPE9F+2pLWdIOmP7GjiTj45y6L3W/lO+hSnUSUhq+6lEaERWBdZOHbk2s3YV5c9xVl3boVw== emittery@^0.7.1: version "0.7.2" @@ -2723,14 +2748,14 @@ flat-cache@^3.0.4: rimraf "^3.0.2" flatted@^3.1.0: - version "3.2.4" - resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.4.tgz#28d9969ea90661b5134259f312ab6aa7929ac5e2" - integrity sha512-8/sOawo8tJ4QOBX8YlQBMxL8+RLZfxMQOif9o0KUKTNTjMYElWPE0r/m5VNFxTRd0NSw8qSy8dajrwX4RYI1Hw== + version "3.2.5" + resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.5.tgz#76c8584f4fc843db64702a6bd04ab7a8bd666da3" + integrity sha512-WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg== follow-redirects@^1.10.0: - version "1.14.6" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.14.6.tgz#8cfb281bbc035b3c067d6cd975b0f6ade6e855cd" - integrity sha512-fhUl5EwSJbbl8AR+uYL2KQDxLkdSjZGR36xy46AO7cOMTrCMON6Sa28FmAnC2tRTDbd/Uuzz3aJBv7EBN7JH8A== + version "1.14.8" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.14.8.tgz#016996fb9a11a100566398b1c6839337d7bfa8fc" + integrity sha512-1x0S9UVJHsQprFcEC/qnNzBLcIxsjAV905f/UkQxbclCsoTWlacCNOpQa/anodLl2uaEKFhfWOvM2Qg77+15zA== for-in@^1.0.2: version "1.0.2" @@ -2884,21 +2909,21 @@ globals@^11.1.0: integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== globals@^13.6.0, globals@^13.9.0: - version "13.12.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-13.12.0.tgz#4d733760304230a0082ed96e21e5c565f898089e" - integrity sha512-uS8X6lSKN2JumVoXrbUz+uG4BYG+eiawqm3qFcT7ammfbUHeCBoJMlHcec/S3krSk73/AE/f0szYFmgAA3kYZg== + version "13.12.1" + resolved "https://registry.yarnpkg.com/globals/-/globals-13.12.1.tgz#ec206be932e6c77236677127577aa8e50bf1c5cb" + integrity sha512-317dFlgY2pdJZ9rspXDks7073GpDmXdfbM3vYYp0HAMKGDh1FfWPleI2ljVNLQX5M5lXcAslTcPTrOrMEFOjyw== dependencies: type-fest "^0.20.2" google-protobuf@^3.13.0: - version "3.19.1" - resolved "https://registry.yarnpkg.com/google-protobuf/-/google-protobuf-3.19.1.tgz#5af5390e8206c446d8f49febaffd4b7f4ac28f41" - integrity sha512-Isv1RlNC+IzZzilcxnlVSf+JvuhxmY7DaxYCBy+zPS9XVuJRtlTTIXR9hnZ1YL1MMusJn/7eSy2swCzZIomQSg== + version "3.19.4" + resolved "https://registry.yarnpkg.com/google-protobuf/-/google-protobuf-3.19.4.tgz#8d32c3e34be9250956f28c0fb90955d13f311888" + integrity sha512-OIPNCxsG2lkIvf+P5FNfJ/Km95CsXOBecS9ZcAU6m2Rq3svc0Apl9nB3GMDNKfQ9asNv4KjyAqGwPQFrVle3Yg== graceful-fs@^4.2.4: - version "4.2.8" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.8.tgz#e412b8d33f5e006593cbd3cee6df9f2cebbe802a" - integrity sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg== + version "4.2.9" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.9.tgz#041b05df45755e587a24942279b9d113146e1c96" + integrity sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ== growly@^1.3.0: version "1.3.0" @@ -3062,9 +3087,9 @@ import-fresh@^3.0.0, import-fresh@^3.2.1: resolve-from "^4.0.0" import-local@^3.0.2: - version "3.0.3" - resolved "https://registry.yarnpkg.com/import-local/-/import-local-3.0.3.tgz#4d51c2c495ca9393da259ec66b62e022920211e0" - integrity sha512-bE9iaUY3CXH8Cwfan/abDKAxe1KGT9kyGsBPqf6DMK/z0a2OzAsrukeYNgIH6cH5Xr452jb1TUL8rSfCLjZ9uA== + version "3.1.0" + resolved "https://registry.yarnpkg.com/import-local/-/import-local-3.1.0.tgz#b4479df8a5fd44f6cdce24070675676063c95cb4" + integrity sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg== dependencies: pkg-dir "^4.2.0" resolve-cwd "^3.0.0" @@ -3123,10 +3148,10 @@ is-ci@^2.0.0: dependencies: ci-info "^2.0.0" -is-core-module@^2.8.0: - version "2.8.0" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.8.0.tgz#0321336c3d0925e497fd97f5d95cb114a5ccd548" - integrity sha512-vd15qHsaqrRL7dtH6QNuy0ndJmRDrS9HAM1CAiSifNUFv4x1a0CCVsj18hJ1mShxIG6T2i1sO78MkP56r0nYRw== +is-core-module@^2.8.1: + version "2.8.1" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.8.1.tgz#f59fdfca701d5879d0a6b100a40aa1560ce27211" + integrity sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA== dependencies: has "^1.0.3" @@ -3334,9 +3359,9 @@ istanbul-lib-source-maps@^4.0.0: source-map "^0.6.1" istanbul-reports@^3.0.2: - version "3.1.3" - resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-3.1.3.tgz#4bcae3103b94518117930d51283690960b50d3c2" - integrity sha512-x9LtDVtfm/t1GFiLl3NffC7hz+I1ragvgX1P/Lg1NlIagifZDKUkuuaAxH/qpwj2IuEfD8G2Bs/UKp+sZ/pKkg== + version "3.1.4" + resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-3.1.4.tgz#1b6f068ecbc6c331040aab5741991273e609e40c" + integrity sha512-r1/DshN4KSE7xWEknZLLLLDn5CJybV3nw01VTkp6D5jzLuELlcbudfj/eSQFvrKsJuTVCGnePO7ho82Nw9zzfw== dependencies: html-escaper "^2.0.0" istanbul-lib-report "^3.0.0" @@ -4075,9 +4100,9 @@ mimic-response@^2.0.0: integrity sha512-wXqjST+SLt7R009ySCglWBCFpjUygmCIfD790/kVbiGmUgfYGuB14PiTd5DwVxSV4NcYHjzMkoj5LjQZwTQLEA== minimatch@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" - integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== + version "3.1.1" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.1.tgz#879ad447200773912898b46cd516a7abbb5e50b0" + integrity sha512-reLxBcKUPNBnc/sVtAbxgRVFSegoGeLaSjmphNhcwcolhYLRgtJscn5mRl6YRZNQv40Y7P6JM2YhSIsbL9OB5A== dependencies: brace-expansion "^1.1.7" @@ -4124,7 +4149,7 @@ ms@2.1.2: resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== -nan@^2.14.0: +nan@^2.15.0: version "2.15.0" resolved "https://registry.yarnpkg.com/nan/-/nan-2.15.0.tgz#3f34a473ff18e15c1b5626b62903b5ad6e665fee" integrity sha512-8ZtvEnA2c5aYCZYd1cvgdnU6cqwixRoYg70xPLWUws5ORTa/lnw+u4amixRS/Ac5U5mQVgp9pnlSUnbNWFaWZQ== @@ -4157,9 +4182,9 @@ nice-try@^1.0.4: integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== node-fetch@^2.6.5: - version "2.6.6" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.6.tgz#1751a7c01834e8e1697758732e9efb6eeadfaf89" - integrity sha512-Z8/6vRlTUChSdIgMa51jxQ4lrw/Jy5SOW10ObaA47/RElsAN2c5Pn8bTgFGWn/ibwzXTE8qwr1Yzx28vsecXEA== + version "2.6.7" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.7.tgz#24de9fba827e3b4ae44dc8b20256a379160052ad" + integrity sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ== dependencies: whatwg-url "^5.0.0" @@ -4181,9 +4206,9 @@ node-notifier@^8.0.0: which "^2.0.2" node-releases@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.1.tgz#3d1d395f204f1f2f29a54358b9fb678765ad2fc5" - integrity sha512-CqyzN6z7Q6aMeF/ktcMVTzhAHCEpf8SOarwpzpf8pNBY2k5/oM34UHldUwp8VKI7uxct2HxSRdJjBaZeESzcxA== + version "2.0.2" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.2.tgz#7139fe71e2f4f11b47d4d2986aaf8c48699e0c01" + integrity sha512-XxYDdcQ6eKqp/YjI+tb2C5WM2LgjnZrfYg4vgQt49EK268b6gYCHsBLrK2qvJo4FmCtqmKezb0WZFK4fkrZNsg== nopt@^5.0.0: version "5.0.0" @@ -4472,9 +4497,9 @@ picomatch@^2.0.4, picomatch@^2.2.3: integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== pirates@^4.0.1: - version "4.0.4" - resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.4.tgz#07df81e61028e402735cdd49db701e4885b4e6e6" - integrity sha512-ZIrVPH+A52Dw84R0L3/VS9Op04PuQ2SEoJL6bkshmiTic/HldyW9Tf7oH5mhJZBK7NmDx27vSMrYEXPXclpDKw== + version "4.0.5" + resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.5.tgz#feec352ea5c3268fb23a37c702ab1699f35a5f3b" + integrity sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ== pkg-dir@^4.2.0: version "4.2.0" @@ -4620,10 +4645,10 @@ readable-stream@^3.6.0: string_decoder "^1.1.1" util-deprecate "^1.0.1" -regenerate-unicode-properties@^9.0.0: - version "9.0.0" - resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-9.0.0.tgz#54d09c7115e1f53dc2314a974b32c1c344efe326" - integrity sha512-3E12UeNSPfjrgwjkR81m5J7Aw/T55Tu7nUyZVQYCKEOs+2dkxEY+DpPtZzO4YruuiPb7NkYLVcyJC4+zCbk5pA== +regenerate-unicode-properties@^10.0.1: + version "10.0.1" + resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-10.0.1.tgz#7f442732aa7934a3740c779bb9b3340dccc1fb56" + integrity sha512-vn5DU6yg6h8hP/2OkQo3K7uVILvY4iu0oI4t3HFa81UPkhGJwkRwM10JEc3upjdhHjs/k8GJY1sRBhk5sr69Bw== dependencies: regenerate "^1.4.2" @@ -4657,27 +4682,27 @@ regexpp@^3.0.0, regexpp@^3.1.0: resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.2.0.tgz#0425a2768d8f23bad70ca4b90461fa2f1213e1b2" integrity sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg== -regexpu-core@^4.7.1: - version "4.8.0" - resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.8.0.tgz#e5605ba361b67b1718478501327502f4479a98f0" - integrity sha512-1F6bYsoYiz6is+oz70NWur2Vlh9KWtswuRuzJOfeYUrfPX2o8n74AnUVaOGDbUqVGO9fNHu48/pjJO4sNVwsOg== +regexpu-core@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-5.0.1.tgz#c531122a7840de743dcf9c83e923b5560323ced3" + integrity sha512-CriEZlrKK9VJw/xQGJpQM5rY88BtuL8DM+AEwvcThHilbxiTAy8vq4iJnd2tqq8wLmjbGZzP7ZcKFjbGkmEFrw== dependencies: regenerate "^1.4.2" - regenerate-unicode-properties "^9.0.0" - regjsgen "^0.5.2" - regjsparser "^0.7.0" + regenerate-unicode-properties "^10.0.1" + regjsgen "^0.6.0" + regjsparser "^0.8.2" unicode-match-property-ecmascript "^2.0.0" unicode-match-property-value-ecmascript "^2.0.0" -regjsgen@^0.5.2: - version "0.5.2" - resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.5.2.tgz#92ff295fb1deecbf6ecdab2543d207e91aa33733" - integrity sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A== +regjsgen@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.6.0.tgz#83414c5354afd7d6627b16af5f10f41c4e71808d" + integrity sha512-ozE883Uigtqj3bx7OhL1KNbCzGyW2NQZPl6Hs09WTvCuZD5sTI4JY58bkbQWa/Y9hxIsvJ3M8Nbf7j54IqeZbA== -regjsparser@^0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.7.0.tgz#a6b667b54c885e18b52554cb4960ef71187e9968" - integrity sha512-A4pcaORqmNMDVwUjWoTzuhwMGpP+NykpfqAsEgI1FSH/EzC7lrN5TMd+kN8YCovX+jMpu8eaqXgXPCa0g8FQNQ== +regjsparser@^0.8.2: + version "0.8.4" + resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.8.4.tgz#8a14285ffcc5de78c5b95d62bbf413b6bc132d5f" + integrity sha512-J3LABycON/VNEu3abOviqGHuB/LOtOQj8SKmfP9anY5GfAVw/SPjwzSjxGjbZXIxbGfqTHtJw58C2Li/WkStmA== dependencies: jsesc "~0.5.0" @@ -4739,11 +4764,11 @@ resolve-url@^0.2.1: integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= resolve@^1.10.0, resolve@^1.12.0, resolve@^1.14.2, resolve@^1.18.1: - version "1.21.0" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.21.0.tgz#b51adc97f3472e6a5cf4444d34bc9d6b9037591f" - integrity sha512-3wCbTpk5WJlyE4mSOtDLhqQmGFi0/TD9VPwmiolnk8U0wRgMEktqCXd3vy5buTO3tljvalNvKrjHEfrd2WpEKA== + version "1.22.0" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.0.tgz#5e0b8c67c15df57a89bdbabe603a002f21731198" + integrity sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw== dependencies: - is-core-module "^2.8.0" + is-core-module "^2.8.1" path-parse "^1.0.7" supports-preserve-symlinks-flag "^1.0.0" @@ -4778,9 +4803,9 @@ rsvp@^4.8.4: integrity sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA== rxjs@^7.5.1: - version "7.5.1" - resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-7.5.1.tgz#af73df343cbcab37628197f43ea0c8256f54b157" - integrity sha512-KExVEeZWxMZnZhUZtsJcFwz8IvPvgu4G2Z2QyqjZQzUGr32KDYuSxrEYO4w3tFFNbfLozcrKUTvTPi+E9ywJkQ== + version "7.5.4" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-7.5.4.tgz#3d6bd407e6b7ce9a123e76b1e770dc5761aa368d" + integrity sha512-h5M3Hk78r6wAheJF0a5YahB1yRQKCsZ4MsGdZ5O9ETbVtjPcScGfrMmoOq7EBsCRzd4BDkvDJ7ogP8Sz5tTFiQ== dependencies: tslib "^2.1.0" @@ -4905,9 +4930,9 @@ shellwords@^0.1.1: integrity sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww== signal-exit@^3.0.0, signal-exit@^3.0.2: - version "3.0.6" - resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.6.tgz#24e630c4b0f03fea446a2bd299e62b4a6ca8d0af" - integrity sha512-sDl4qMFpijcGw22U5w63KmD3cZJfBuFlVNbVMKje2keoKML7X2UzWbc4XrmEbDwg0NXJc3yv4/ox7b+JWb57kQ== + version "3.0.7" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" + integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== simple-concat@^1.0.0: version "1.0.1" @@ -4915,9 +4940,9 @@ simple-concat@^1.0.0: integrity sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q== simple-get@^3.0.3: - version "3.1.0" - resolved "https://registry.yarnpkg.com/simple-get/-/simple-get-3.1.0.tgz#b45be062435e50d159540b576202ceec40b9c6b3" - integrity sha512-bCR6cP+aTdScaQCnQKbPKtJOKDp/hj9EDLJo3Nw4y1QksqaovlW/bnptB6/c1e+qmNIDHRK+oXFDdEqBT8WzUA== + version "3.1.1" + resolved "https://registry.yarnpkg.com/simple-get/-/simple-get-3.1.1.tgz#cc7ba77cfbe761036fbfce3d021af25fc5584d55" + integrity sha512-CQ5LTKGfCpvE1K0n2us+kuMPbk/q0EKl82s4aheV9oXjFEz6W/Y7oQFVJuU6QG77hRT4Ghb5RURteF5vnWjupA== dependencies: decompress-response "^4.2.0" once "^1.3.1" @@ -5189,9 +5214,9 @@ symbol-tree@^3.2.4: integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw== table@^6.0.9: - version "6.7.5" - resolved "https://registry.yarnpkg.com/table/-/table-6.7.5.tgz#f04478c351ef3d8c7904f0e8be90a1b62417d238" - integrity sha512-LFNeryOqiQHqCVKzhkymKwt6ozeRhlm8IL1mE8rNUurkir4heF6PzMyRgaTa4tlyPTGGgXuvVOF/OLWiH09Lqw== + version "6.8.0" + resolved "https://registry.yarnpkg.com/table/-/table-6.8.0.tgz#87e28f14fa4321c3377ba286f07b79b281a3b3ca" + integrity sha512-s/fitrbVeEyHKFa7mFdkuQMWlH1Wgw/yEXMt5xACT4ZpzWFluehAxRtUUQKPuWhaLAWhFcVx6w3oC8VKaUfPGA== dependencies: ajv "^8.0.1" lodash.truncate "^4.4.2" @@ -5377,9 +5402,9 @@ typedarray-to-buffer@^3.1.5: is-typedarray "^1.0.0" typescript@^4.0.2: - version "4.5.4" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.5.4.tgz#a17d3a0263bf5c8723b9c52f43c5084edf13c2e8" - integrity sha512-VgYs2A2QIRuGphtzFV7aQJduJ2gyfTljngLzjpfW9FoYZF6xuw1W0vW9ghCKLfcWrCFxK81CSGRAvS1pn4fIUg== + version "4.5.5" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.5.5.tgz#d8c953832d28924a9e3d37c73d729c846c5896f3" + integrity sha512-TCTIul70LyWe6IJWT8QSYeA54WQe8EjQFU4wY52Fasj5UKx88LNYKCgBEHcOMOrFF1rKGbD8v/xcNWVUq9SymA== unicode-canonical-property-names-ecmascript@^2.0.0: version "2.0.0" @@ -5440,9 +5465,9 @@ urix@^0.1.0: integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI= url-parse@^1.4.7: - version "1.5.4" - resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.5.4.tgz#e4f645a7e2a0852cc8a66b14b292a3e9a11a97fd" - integrity sha512-ITeAByWWoqutFClc/lRZnFplgXgEZr3WJ6XngMM/N9DMIm4K8zXPCZ1Jdu0rERwO84w1WC5wkle2ubwTA4NTBg== + version "1.5.6" + resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.5.6.tgz#b2a41d5a233645f3c31204cc8be60e76a15230a2" + integrity sha512-xj3QdUJ1DttD1LeSfvJlU1eiF1RvBSBfUu8GplFGdUzSO28y5yUtEl7wb//PI4Af6qh0o/K8545vUmucRrfWsw== dependencies: querystringify "^2.1.1" requires-port "^1.0.0" @@ -5651,14 +5676,14 @@ write-file-atomic@^3.0.0: typedarray-to-buffer "^3.1.5" ws@^7.4.6: - version "7.5.6" - resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.6.tgz#e59fc509fb15ddfb65487ee9765c5a51dec5fe7b" - integrity sha512-6GLgCqo2cy2A2rjCNFlxQS6ZljG/coZfZXclldI8FB/1G3CCI36Zd8xy2HrFVACi8tfk5XrgLQEk+P0Tnz9UcA== + version "7.5.7" + resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.7.tgz#9e0ac77ee50af70d58326ecff7e85eb3fa375e67" + integrity sha512-KMvVuFzpKBuiIXW3E4u3mySRO2/mCHSyZDJQM5NQ9Q9KHWHWh0NHgfbRMLLrceUK5qAL4ytALJbpRMjixFZh8A== ws@^8.2.3: - version "8.4.0" - resolved "https://registry.yarnpkg.com/ws/-/ws-8.4.0.tgz#f05e982a0a88c604080e8581576e2a063802bed6" - integrity sha512-IHVsKe2pjajSUIl4KYMQOdlyliovpEPquKkqbwswulszzI7r0SfQrxnXdWAEqOlDCLrVSJzo+O1hAwdog2sKSQ== + version "8.5.0" + resolved "https://registry.yarnpkg.com/ws/-/ws-8.5.0.tgz#bfb4be96600757fe5382de12c670dab984a1ed4f" + integrity sha512-BWX0SWVgLPzYwF8lTzEy1egjhS4S4OEAHfsO8o65WOVsrnSRGaSiUaa9e0ggGlkMTtBlmOpEXiie9RUcBO86qg== xml-name-validator@^3.0.0: version "3.0.0"