diff --git a/javascript/README.md b/javascript/README.md index 143867b460ba9b5d09d9fff6e5d15048e964e5ea..8975e3067668d19ece9096466f791fd4572c9667 100644 --- a/javascript/README.md +++ b/javascript/README.md @@ -12,4 +12,3 @@ Project uses ESLint to maintain code quality. Setup instructions: #### IDEA - Enable ESLint in `Preferences -> Languages and frameworks -> JavaScript -> Code Quality Tools` - diff --git a/javascript/package.json b/javascript/package.json index bab32fc9af6cad2dda7cab5aa4307bebd8a0a301..dd5e3a5305e5b53e23f678b76aa094a57ad7da96 100644 --- a/javascript/package.json +++ b/javascript/package.json @@ -23,6 +23,8 @@ }, "license": "MIT", "dependencies": { + "add-asset-html-webpack-plugin": "^3.1.3", + "asmcrypto.js": "^2.3.2", "asn1js": "^2.0.21", "axios": "0.18.0", "data-uri-to-blob": "^0.0.4", @@ -32,13 +34,14 @@ "penpal": "^3.0.3", "pkijs": "^2.1.69", "pvutils": "^1.0.16", - "qrcode": "^1.3.0" + "qrcode": "^1.3.0", + "webcrypto-liner": "^1.1.4" }, "devDependencies": { - "@babel/core": "^7.1.2", + "@babel/core": "^7.8.3", + "@babel/polyfill": "^7.8.3", "@babel/preset-env": "^7.1.0", "babel-loader": "^8.0.4", - "babel-polyfill": "^6.26.0", "clean-webpack-plugin": "^0.1.19", "core-js": "^2.5.7", "eslint": "^5.3.0", diff --git a/javascript/src/iframe/viamapi-iframe.js b/javascript/src/iframe/viamapi-iframe.js index 61ae7e489b8b2ccad380728e1682ce24d4b52b9f..f82a7e7bc1b6c1896f20cc7703d4c0f16569f5a7 100644 --- a/javascript/src/iframe/viamapi-iframe.js +++ b/javascript/src/iframe/viamapi-iframe.js @@ -1,3 +1,4 @@ +import '../lib/textencoder.polyfill'; import { parseSMIME, prepareVCardParts } from "../utilities/emailUtilities"; import { stringToUtf8ByteArray, @@ -45,7 +46,7 @@ const WopiAPI = require("./wopiapi-iframe"); const CollaboraAPI = require("./collaboraapi-iframe"); const ViamAPI = require("../../temp/viamapi"); -let identityColors = ["#994392", "#cb0767", "#e51d31", "#ec671b", "#fab610"]; +const identityColors = ["#994392", "#cb0767", "#e51d31", "#ec671b", "#fab610"]; function getNextColor() { let colorIndex = localStorage.getItem("colorIndex"); @@ -53,7 +54,7 @@ function getNextColor() { colorIndex = 0; } - let color = identityColors[colorIndex]; + const color = identityColors[colorIndex]; colorIndex++; @@ -65,7 +66,7 @@ function getNextColor() { } function setKeyForUUID(uuid, key) { - let storedIdentityForUuid = localStorage.getItem("keyperuuid/" + uuid); + const storedIdentityForUuid = localStorage.getItem("keyperuuid/" + uuid); if ( storedIdentityForUuid !== key && storedIdentityForUuid != null && @@ -109,8 +110,8 @@ function setIdentityInLocalStorage(identityToStore, extendKey = true) { } if (success === true) { localStorage.setItem(key, encryptedIdentity); - let serializedIdentitiesList = localStorage.getItem("identities"); - let identities = JSON.parse(serializedIdentitiesList); + const serializedIdentitiesList = localStorage.getItem("identities"); + const identities = JSON.parse(serializedIdentitiesList); identities[key] = true; localStorage.setItem("identities", JSON.stringify(identities)); @@ -130,7 +131,7 @@ function getProfileData(identity) { null ).then(executeResult => { if (executeResult.code === "200") { - let listItem = {}; + const listItem = {}; listItem.identityColor = getColorForIdentity( identity.authentication.publicKey @@ -177,19 +178,19 @@ async function getIdentityFromLocalStorage(key, pinCode, extendTtl = true) { function extendPinCodeTtl(key, pinCode) { if (pinCode == null || pinCode === "") { - let now = new Date(); - let nowMillis = now.getTime(); - let ttl = window.sessionStorage.getItem("pincodettls/" + key); + const now = new Date(); + const nowMillis = now.getTime(); + const ttl = window.sessionStorage.getItem("pincodettls/" + key); if (ttl == null || ttl === "" || nowMillis >= parseInt(ttl)) { clearPinCodeTtl(key); return false; } else { - let ttl = now.getTime() + 4 * 60 * 60 * 1000; + const ttl = now.getTime() + 4 * 60 * 60 * 1000; window.sessionStorage.setItem("pincodettls/" + key, ttl); } } else { - let now = new Date(); - let ttl = now.getTime() + 4 * 60 * 60 * 1000; + const now = new Date(); + const ttl = now.getTime() + 4 * 60 * 60 * 1000; window.sessionStorage.setItem("pincodettls/" + key, ttl); window.sessionStorage.setItem("pincodes/" + key, pinCode); } @@ -205,9 +206,9 @@ function clearPinCodeTtl(key) { } function getPincode(key) { - let now = new Date(); - let nowMillis = now.getTime(); - let ttl = window.sessionStorage.getItem("pincodettls/" + key); + const now = new Date(); + const nowMillis = now.getTime(); + const ttl = window.sessionStorage.getItem("pincodettls/" + key); if (ttl == null || ttl === "") { return null; } else { @@ -223,9 +224,9 @@ function getPincode(key) { function createEvent(actionId, type, payloads) { return { actionID: actionId, - type: type, + type, stamp: new Date().getTime(), - payloads: payloads + payloads }; } @@ -338,13 +339,13 @@ async function executeRestfulFunction(type, that, fn, config, ...args) { identity && code === "400" && status === "Bad session"; - if (!badSession) return response.data; + if (!badSession) { return response.data; } const loginResponse = await viamApi.identityLogin( null, "previousaddeddevice" ); - if (loginResponse.data.code !== "200") return loginResponse.data; + if (loginResponse.data.code !== "200") { return loginResponse.data; } const uuid = loginResponse.data.data["Uuid"]; const token = loginResponse.data.data["Session"]; @@ -416,17 +417,19 @@ function loadIdentityInternal(identityKey, pinCode) { function getCertificateForPassport(passportUUID, internal) { return new Penpal.Promise(certificateResult => { if (window.currentlyAuthenticatedIdentity === null) { - return { data: "", code: "400", status: "Identity not authenticated" }; + return { data: "", + code: "400", + status: "Identity not authenticated" }; } const passportIdentity = window.currentlyAuthenticatedIdentity; - let passport = passportIdentity.getPassport(passportUUID); + const passport = passportIdentity.getPassport(passportUUID); if (passport === undefined || passport === null) { - createPassportCertificate(passportUUID).then(function(keys) { - let cryptoData = new CryptoData(); + createPassportCertificate(passportUUID).then(function (keys) { + const cryptoData = new CryptoData(); cryptoData.setPublicKey(keys["publicKeyPEM"]); cryptoData.setPrivateKey(keys["privateKeyPEM"]); - let certificate = keys["certificatePEM"]; + const certificate = keys["certificatePEM"]; //download("passportCertificateBeforeSigning.crt", "text/plain", certificate) //cryptoData.setx509Certificate(keys["certificate"]) executeRestfulFunction( @@ -438,15 +441,15 @@ function getCertificateForPassport(passportUUID, internal) { passportUUID ).then(executeResult => { if (executeResult.code === "200") { - let signedCertificate = atob( + const signedCertificate = atob( executeResult.data["SignedCertificate"] ); //download("passportCertificateAfterSigning.crt", "text/plain", signedCertificate) - let keyUUID = executeResult.data["CertificateUUID"]; - let encodedChain = executeResult.data["Chain"]; + const keyUUID = executeResult.data["CertificateUUID"]; + const encodedChain = executeResult.data["Chain"]; //download("rootCertificate.crt", "text/plain", atob(encodedChain[0])) - let chain = []; + const chain = []; for (let i = 0; i < encodedChain.length; i++) { chain.push(atob(encodedChain[i])); @@ -492,7 +495,7 @@ function getCertificateForPassport(passportUUID, internal) { }); }); } else { - let copyOfCryptoData = JSON.parse(JSON.stringify(passport)); + const copyOfCryptoData = JSON.parse(JSON.stringify(passport)); if (internal === false) { copyOfCryptoData["privateKey"] = ""; @@ -533,16 +536,16 @@ const connection = Penpal.connectToParent({ window.WOPI_URL = wopiUrl.charAt(wopiUrl.length - 1) === "/" ? wopiUrl : wopiUrl + "/"; window.COLLABORA_URL = - collaboraUrl.charAt(collaboraUrl.length - 1) === "/" - ? collaboraUrl - : collaboraUrl + "/"; + collaboraUrl.charAt(collaboraUrl.length - 1) === "/" ? + collaboraUrl : + collaboraUrl + "/"; }, ...penpalMethods, createIdentity(pinCode) { return new Penpal.Promise(result => { - createPassportCertificate(makeid()).then(function(keys) { - let newIdentity = new Identity(); - let cryptoData = new CryptoData(); + createPassportCertificate(makeid()).then(function (keys) { + const newIdentity = new Identity(); + const cryptoData = new CryptoData(); cryptoData.setPublicKey(keys["publicKeyPEM"]); cryptoData.setPrivateKey(keys["privateKeyPEM"]); cryptoData.setx509Certificate(keys["certificatePEM"]); @@ -574,8 +577,10 @@ const connection = Penpal.connectToParent({ }, listIdentities() { return new Penpal.Promise(result => { - let identities = listIdentitiesFromLocalStorage(); - result({ data: identities, code: "200", status: "Identities listed" }); + const identities = listIdentitiesFromLocalStorage(); + result({ data: identities, + code: "200", + status: "Identities listed" }); }); }, loadIdentity(identityKey, pinCode) { @@ -622,7 +627,9 @@ const connection = Penpal.connectToParent({ "profiles/" + identityKey ); if (serializedProfile === null || serializedProfile === "") { - result({ data: "", code: "400", status: "Profile is empty" }); + result({ data: "", + code: "400", + status: "Profile is empty" }); } else { result({ data: JSON.parse(serializedProfile), @@ -829,7 +836,7 @@ const connection = Penpal.connectToParent({ }); } - let success = extendPinCodeTtl(authenticationPublicKey); + const success = extendPinCodeTtl(authenticationPublicKey); if (success === false) { result({ @@ -846,9 +853,9 @@ const connection = Penpal.connectToParent({ null ).then(executeResult => { if (executeResult.code === "200") { - let actionID = executeResult.data["ActionID"]; - let QrCode = executeResult.data["QrCode"]; - QRCode.toDataURL(actionID + "," + QrCode, function(err, url) { + const actionID = executeResult.data["ActionID"]; + const QrCode = executeResult.data["QrCode"]; + QRCode.toDataURL(actionID + "," + QrCode, function (err, url) { executeResult.data["image"] = url; result(executeResult); }); @@ -878,7 +885,7 @@ const connection = Penpal.connectToParent({ }); } - let success = extendPinCodeTtl(authenticationPublicKey); + const success = extendPinCodeTtl(authenticationPublicKey); if (success === false) { result({ @@ -960,13 +967,17 @@ const connection = Penpal.connectToParent({ "authenticatedIdentity" ); if (authenticationPublicKey === null) { - return { data: "", code: "400", status: "Identity not loaded" }; + return { data: "", + code: "400", + status: "Identity not loaded" }; } if (window.loadedIdentities[authenticationPublicKey] === null) { - return { data: "", code: "400", status: "Identity not loaded" }; + return { data: "", + code: "400", + status: "Identity not loaded" }; } - let success = extendPinCodeTtl(authenticationPublicKey); + const success = extendPinCodeTtl(authenticationPublicKey); if (success === false) { result({ @@ -977,7 +988,9 @@ const connection = Penpal.connectToParent({ } if (localStorage.getItem("uuid") === null) { - result({ data: "", code: "400", status: "Not logged in UUID" }); + result({ data: "", + code: "400", + status: "Not logged in UUID" }); } result({ data: localStorage.getItem("uuid"), @@ -992,13 +1005,17 @@ const connection = Penpal.connectToParent({ "authenticatedIdentity" ); if (authenticationPublicKey === null) { - return { data: "", code: "400", status: "Identity not loaded" }; + return { data: "", + code: "400", + status: "Identity not loaded" }; } if (window.loadedIdentities[authenticationPublicKey] === null) { - return { data: "", code: "400", status: "Identity not loaded" }; + return { data: "", + code: "400", + status: "Identity not loaded" }; } - let success = extendPinCodeTtl(authenticationPublicKey); + const success = extendPinCodeTtl(authenticationPublicKey); if (success === false) { result({ @@ -1021,13 +1038,17 @@ const connection = Penpal.connectToParent({ "authenticatedIdentity" ); if (authenticationPublicKey === null) { - return { data: "", code: "400", status: "Identity not loaded" }; + return { data: "", + code: "400", + status: "Identity not loaded" }; } if (window.loadedIdentities[authenticationPublicKey] === null) { - return { data: "", code: "400", status: "Identity not loaded" }; + return { data: "", + code: "400", + status: "Identity not loaded" }; } - let success = extendPinCodeTtl(authenticationPublicKey); + const success = extendPinCodeTtl(authenticationPublicKey); if (success === false) { result({ @@ -1040,23 +1061,23 @@ const connection = Penpal.connectToParent({ getCertificateForPassport(passportUUID, true).then( certificateResult => { if (certificateResult.code === "200") { - let passportCertificate = + const passportCertificate = certificateResult.data["x509Certificate"]; - let passportPrivateKey = certificateResult.data["privateKey"]; - let passportChain = certificateResult.data["chain"]; + const passportPrivateKey = certificateResult.data["privateKey"]; + const passportChain = certificateResult.data["chain"]; createOneTimePassportCertificate( makeid() + "-" + passportUUID, emailArg, passportPrivateKey, passportCertificate - ).then(function(keys) { - let publicKeyOneTime = keys["publicKeyPEM"]; - let privateKeyOneTime = keys["privateKeyPEM"]; - let certificateOneTime = keys["certificatePEM"]; + ).then(function (keys) { + const publicKeyOneTime = keys["publicKeyPEM"]; + const privateKeyOneTime = keys["privateKeyPEM"]; + const certificateOneTime = keys["certificatePEM"]; passportChain.push(passportCertificate); - let oneTimeCryptoData = new CryptoData(); + const oneTimeCryptoData = new CryptoData(); oneTimeCryptoData.setx509Certificate(certificateOneTime); oneTimeCryptoData.setPrivateKey(privateKeyOneTime); oneTimeCryptoData.setPublicKey(publicKeyOneTime); @@ -1806,7 +1827,7 @@ const connection = Penpal.connectToParent({ }); } - let success = extendPinCodeTtl(authenticationPublicKey); + const success = extendPinCodeTtl(authenticationPublicKey); if (success === false) { result({ @@ -2152,7 +2173,7 @@ connection.promise.then(parent => { let previousLocalStorageToken; let previousLocalStorageIdentity; - setInterval(async function() { + setInterval(async function () { if (window.currentlyAuthenticatedIdentity) { const { authentication } = window.currentlyAuthenticatedIdentity; const pinCode = getPincode(authentication.publicKey); @@ -2285,7 +2306,7 @@ connection.promise.then(parent => { const eventCopy = JSON.parse(JSON.stringify(event)); - QRCode.toDataURL(actionID + "," + QrCode, function(err, url) { + QRCode.toDataURL(actionID + "," + QrCode, function (err, url) { eventCopy["payloads"].push(url); parent.onEvent(eventCopy); }); @@ -2358,7 +2379,7 @@ connection.promise.then(parent => { const eventCopy = JSON.parse(JSON.stringify(event)); - QRCode.toDataURL(actionID + "," + QrCode, function(err, url) { + QRCode.toDataURL(actionID + "," + QrCode, function (err, url) { eventCopy["payloads"].push(url); parent.onEvent(eventCopy); }); @@ -2406,7 +2427,7 @@ connection.promise.then(parent => { const eventCopy = JSON.parse(JSON.stringify(event)); - QRCode.toDataURL(actionID + "," + QrCode, function(err, url) { + QRCode.toDataURL(actionID + "," + QrCode, function (err, url) { eventCopy["payloads"].push(url); parent.onEvent(eventCopy); }); diff --git a/javascript/src/lib/textencoder.polyfill.js b/javascript/src/lib/textencoder.polyfill.js new file mode 100644 index 0000000000000000000000000000000000000000..461089a7607e798226cab949f9de7d814fd5ef7a --- /dev/null +++ b/javascript/src/lib/textencoder.polyfill.js @@ -0,0 +1,58 @@ +if (typeof window.TextEncoder === "undefined") { + window.TextEncoder = function TextEncoder(){}; + TextEncoder.prototype.encode = function encode(str) { + "use strict"; + var Len = str.length, resPos = -1; + // The Uint8Array's length must be at least 3x the length of the string because an invalid UTF-16 + // takes up the equivelent space of 3 UTF-8 characters to encode it properly. However, Array's + // have an auto expanding length and 1.5x should be just the right balance for most uses. + var resArr = typeof Uint8Array === "undefined" ? new Array(Len * 1.5) : new Uint8Array(Len * 3); + for (var point=0, nextcode=0, i = 0; i !== Len; ) { + point = str.charCodeAt(i), i += 1; + if (point >= 0xD800 && point <= 0xDBFF) { + if (i === Len) { + resArr[resPos += 1] = 0xef/*0b11101111*/; resArr[resPos += 1] = 0xbf/*0b10111111*/; + resArr[resPos += 1] = 0xbd/*0b10111101*/; break; + } + // https://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae + nextcode = str.charCodeAt(i); + if (nextcode >= 0xDC00 && nextcode <= 0xDFFF) { + point = (point - 0xD800) * 0x400 + nextcode - 0xDC00 + 0x10000; + i += 1; + if (point > 0xffff) { + resArr[resPos += 1] = (0x1e/*0b11110*/<<3) | (point>>>18); + resArr[resPos += 1] = (0x2/*0b10*/<<6) | ((point>>>12)&0x3f/*0b00111111*/); + resArr[resPos += 1] = (0x2/*0b10*/<<6) | ((point>>>6)&0x3f/*0b00111111*/); + resArr[resPos += 1] = (0x2/*0b10*/<<6) | (point&0x3f/*0b00111111*/); + continue; + } + } else { + resArr[resPos += 1] = 0xef/*0b11101111*/; resArr[resPos += 1] = 0xbf/*0b10111111*/; + resArr[resPos += 1] = 0xbd/*0b10111101*/; continue; + } + } + if (point <= 0x007f) { + resArr[resPos += 1] = (0x0/*0b0*/<<7) | point; + } else if (point <= 0x07ff) { + resArr[resPos += 1] = (0x6/*0b110*/<<5) | (point>>>6); + resArr[resPos += 1] = (0x2/*0b10*/<<6) | (point&0x3f/*0b00111111*/); + } else { + resArr[resPos += 1] = (0xe/*0b1110*/<<4) | (point>>>12); + resArr[resPos += 1] = (0x2/*0b10*/<<6) | ((point>>>6)&0x3f/*0b00111111*/); + resArr[resPos += 1] = (0x2/*0b10*/<<6) | (point&0x3f/*0b00111111*/); + } + } + if (typeof Uint8Array !== "undefined") return resArr.subarray(0, resPos + 1); + // else // IE 6-9 + resArr.length = resPos + 1; // trim off extra weight + return resArr; + }; + TextEncoder.prototype.toString = function(){return "[object TextEncoder]"}; + try { // Object.defineProperty only works on DOM prototypes in IE8 + Object.defineProperty(TextEncoder.prototype,"encoding",{ + get:function(){if(TextEncoder.prototype.isPrototypeOf(this)) return"utf-8"; + else throw TypeError("Illegal invocation");} + }); + } catch(e) { /*IE6-8 fallback*/ TextEncoder.prototype.encoding = "utf-8"; } + if(typeof Symbol!=="undefined")TextEncoder.prototype[Symbol.toStringTag]="TextEncoder"; +} \ No newline at end of file diff --git a/javascript/src/utilities/signingUtilities.js b/javascript/src/utilities/signingUtilities.js index 1c94f7c2e78603e7e6cad83cb40dd7a5887b28eb..0151eac0d6156640a7b22fb424449bb2d8929a52 100644 --- a/javascript/src/utilities/signingUtilities.js +++ b/javascript/src/utilities/signingUtilities.js @@ -35,7 +35,14 @@ import { byteArrayToBase64 } from "../utilities/stringUtilities"; const libmime = require("libmime"); +const webcryptoLiner = require("webcrypto-liner/build/index"); const pkijs = require("pkijs"); + +pkijs.setEngine( + "webcrypto-liner", + webcryptoLiner.crypto, + new pkijs.CryptoEngine({ name: "webcrypto-liner", crypto: webcryptoLiner.crypto, subtle: webcryptoLiner.crypto.subtle }) +); const asn1js = require("asn1js"); const pvutils = require("pvutils"); @@ -314,9 +321,9 @@ function fixPkijsRDN() { //region Decode stored TBS value if (this.valueBeforeDecode.byteLength === 0) // No stored encoded array, create "from scratch" { - return (new asn1js.Sequence({ + return new asn1js.Sequence({ value: Array.from(this.typesAndValues, element => new asn1js.Set({value: [element.toSchema()]})) - })); + }); } const asn1 = asn1js.fromBER(this.valueBeforeDecode); @@ -330,7 +337,6 @@ function fixPkijsRDN() { //********************************************************************************* function createCertificate(certData, issuerData = null) { - if (typeof certData === "undefined" || certData === null) { return Promise.reject("No Certificate data provided"); } @@ -381,6 +387,7 @@ function createCertificate(certData, issuerData = null) { //region Store new key in an interim variables sequence = sequence.then( keyPair => { + console.log('generation key',keyPair); publicKey = keyPair.publicKey; privateKey = keyPair.privateKey; }, @@ -395,11 +402,15 @@ function createCertificate(certData, issuerData = null) { //endregion Exporting public key into "subjectPublicKeyInfo" value of certificate sequence = sequence.then( - () => - crypto.digest( + () =>{ + console.log('importing public key'); + //IN IE11 this is NOT a PROMISE !!! but a Crypto Opearation Object + return crypto.digest( { name: "SHA-1" }, certificate.subjectPublicKeyInfo.subjectPublicKey.valueBlock.valueHex - ), + ) + ; + }, error => Promise.reject(`Error during importing public key: ${error}`) ); @@ -596,9 +607,9 @@ function createCertificate(certData, issuerData = null) { const keyUsageBuffer = new ArrayBuffer(1); const keyUsageBitView = new Uint8Array(keyUsageBuffer); - keyUsageBitView[0] = !!certData.isCA - ? KEY_USAGE_CertificateAuthority - : KEY_USAGE_LeafCertificate; + keyUsageBitView[0] = certData.isCA ? + KEY_USAGE_CertificateAuthority : + KEY_USAGE_LeafCertificate; // noinspection JSUnresolvedFunction const keyUsage = new asn1js.BitString({ valueHex: keyUsageBuffer }); @@ -625,7 +636,7 @@ function createCertificate(certData, issuerData = null) { keyPurposes.push(OID_ID_PKIX_TimeStamping); const extKeyUsage = new pkijs.ExtKeyUsage({ - keyPurposes: keyPurposes + keyPurposes }); certificate.extensions.push( @@ -662,7 +673,7 @@ function createCertificate(certData, issuerData = null) { } const subjAltNames = new pkijs.GeneralNames({ - names: names + names }); certificate.extensions.push( @@ -733,21 +744,27 @@ function createCertificate(certData, issuerData = null) { //endregion "AuthorityKeyIdentifier" extension */ //endregion Extensions - }); + },error => Promise.reject(`Error calculating hash of public key: ${error}`)); //region Fill in cert data //region Signing final certificate sequence = sequence.then( () => { - let signerKey = - issuerData && issuerData.privateKey - ? issuerData.privateKey - : privateKey; + const signerKey = + issuerData && issuerData.privateKey ? + issuerData.privateKey : + privateKey; + + console.log({issuerData}); + console.log({signerKey}); + console.log({certData}); + console.log({defaultAlgorithms}); + return certificate.sign( signerKey, - certData.algorithms && certData.algorithms.hashAlg - ? certData.algorithms.hashAlg - : defaultAlgorithms.hashAlg + certData.algorithms && certData.algorithms.hashAlg ? + certData.algorithms.hashAlg : + defaultAlgorithms.hashAlg ); }, error => Promise.reject(`Error during exporting public key: ${error}`) @@ -757,6 +774,7 @@ function createCertificate(certData, issuerData = null) { //region Encode and store certificate sequence = sequence.then( () => { + console.log('signing',certificate); certificateBuffer = certificate.toSchema(true).toBER(false); }, error => Promise.reject(`Error during signing: ${error}`) @@ -764,12 +782,14 @@ function createCertificate(certData, issuerData = null) { //endregion //region Exporting public key + console.log('before export skpi'); sequence = sequence.then(() => crypto.exportKey("spki", publicKey)); //endregion //region Store exported public key on Web page sequence = sequence.then( result => { + console.log('exporting public key',result); publicKeyBuffer = result; }, error => Promise.reject(`Error during exporting of public key: ${error}`) @@ -777,12 +797,14 @@ function createCertificate(certData, issuerData = null) { //endregion //region Exporting private key + console.log('before exporting private key'); sequence = sequence.then(() => crypto.exportKey("pkcs8", privateKey)); //endregion //region Store exported key on Web page sequence = sequence.then( result => { + console.log('exporting private key', result); privateKeyBuffer = result; }, error => Promise.reject(`Error during exporting of private key: ${error}`) @@ -791,11 +813,11 @@ function createCertificate(certData, issuerData = null) { return sequence.then(() => { const result = { - certificate: certificate, + certificate, certificatePEM: encodePEM(certificateBuffer, "CERTIFICATE"), - publicKey: publicKey, + publicKey, publicKeyPEM: encodePEM(publicKeyBuffer, "PUBLIC KEY"), - privateKey: privateKey, + privateKey, privateKeyPEM: encodePEM(privateKeyBuffer, "PRIVATE KEY") }; return result; @@ -1042,7 +1064,7 @@ Vereign - Authentic Communication const hashAlg = "SHA-256"; let cmsSignedSimpl; - let mimeHeadersTitles = [ + const mimeHeadersTitles = [ "Content-Type", "Content-Transfer-Encoding", "Content-ID", @@ -1055,26 +1077,26 @@ Vereign - Authentic Communication mime = mime.replace(newline, "\r\n"); let newHeaderLines = ""; - let headersEnd = mime.indexOf("\r\n\r\n"); //the first empty line + const headersEnd = mime.indexOf("\r\n\r\n"); //the first empty line if (headersEnd < 0 && mime.startsWith("\r\n")) { mime = mime.substring(2); //should not happen } else if (headersEnd >= 0) { - let mimeHeaders = {}; - let mimeBody = mime.substring(headersEnd + 4); + const mimeHeaders = {}; + const mimeBody = mime.substring(headersEnd + 4); - let mimeHeadersStr = mime.substring(0, headersEnd); + const mimeHeadersStr = mime.substring(0, headersEnd); - let headers = libmime.decodeHeaders(mimeHeadersStr); + const headers = libmime.decodeHeaders(mimeHeadersStr); for (let i = 0; i < mimeHeadersTitles.length; i++) { - let key = mimeHeadersTitles[i].toLowerCase(); + const key = mimeHeadersTitles[i].toLowerCase(); if (key in headers) { mimeHeaders[key] = headers[key]; delete headers[key]; } } - for (let key in headers) { + for (const key in headers) { if (!(key === "" || key === "MIME-Version".toLowerCase())) { //we have MIME-Version in the template newHeaderLines += capitalizeHeader(key) + ": " + headers[key] + "\r\n"; @@ -1082,7 +1104,7 @@ Vereign - Authentic Communication } let newMimeHeaderLines = ""; - for (let key in mimeHeaders) { + for (const key in mimeHeaders) { if (!(key === "")) { newMimeHeaderLines += capitalizeHeader(key) + ": " + mimeHeaders[key] + "\r\n"; @@ -1096,7 +1118,7 @@ Vereign - Authentic Communication mime = newMimeHeaderLines + "\r\n" + mimeBody; } - let dataBuffer = Buffer.from(mime, "utf-8"); + const dataBuffer = Buffer.from(mime, "utf-8"); let sequence = Promise.resolve(); @@ -1235,8 +1257,8 @@ Vereign - Authentic Communication //endregion sequence = sequence.then(cmsSignedBuffer => { - let signature = arrayBufferToBase64Formatted(cmsSignedBuffer); - let boundary = makeBoundary(); + const signature = arrayBufferToBase64Formatted(cmsSignedBuffer); + const boundary = makeBoundary(); template = template.replace(/{{boundary}}/g, boundary); template = template.replace("{{signature}}", signature); @@ -1278,7 +1300,7 @@ function capitalizeHeader(string) { } function makeBoundary() { - let len = 20 + Math.random() * 20; + const len = 20 + Math.random() * 20; return "W0RyLiBEYW15YW4gTWl0ZXZd--" + makeid(len); } @@ -1472,7 +1494,6 @@ export const verifySMIME = (smimeString, rootCaPem) => { }; export class ImageData { - /** * Constructor for ImageData class * @param {Object} [parameters] Object in format diff --git a/javascript/webpack.config.dev.js b/javascript/webpack.config.dev.js index 6883e83cea072ba26ed0a403accb9db2f5c23a37..c895fac6b8a4bf6de1ec5851e8548f0e48eac2e9 100644 --- a/javascript/webpack.config.dev.js +++ b/javascript/webpack.config.dev.js @@ -10,6 +10,13 @@ module.exports = merge(common, { port: 9000, headers: { 'Access-Control-Allow-Origin': '*' + }, + proxy: { + '/api': { + target: 'https://alexeylunin.dev.vereign.com', + secure: false, + changeOrigin: true + } } }, plugins: [ diff --git a/javascript/webpack.config.js b/javascript/webpack.config.js index aa73aaeb1b9bb7b4aabf324201aaf2f7d6d4d7fa..641729d75365d95c2e16a250069c714dc887cd67 100644 --- a/javascript/webpack.config.js +++ b/javascript/webpack.config.js @@ -1,18 +1,23 @@ -const HtmlWebpackPlugin = require('html-webpack-plugin'); -const HtmlWebpackInlineSourcePlugin = require('html-webpack-inline-source-plugin'); -const CleanWebpackPlugin = require('clean-webpack-plugin') +const HtmlWebpackPlugin = require("html-webpack-plugin"); +const HtmlWebpackInlineSourcePlugin = require("html-webpack-inline-source-plugin"); +const CleanWebpackPlugin = require("clean-webpack-plugin"); module.exports = { entry: { - 'viamapi-client': ['core-js/fn/promise', './src/viamapi-client.js'], - 'viamapi-iframe': ['babel-polyfill', './src/iframe/viamapi-iframe.js'], + "viamapi-client": ["core-js/fn/promise", "./src/viamapi-client.js"], + "viamapi-iframe": [ + 'core-js', + 'regenerator-runtime/runtime', + "./src/iframe/viamapi-iframe.js" + ] }, plugins: [ - new HtmlWebpackPlugin({ // Also generate a test.html - filename: 'viamapi-iframe.html', - template: 'src/iframe/viamapi-iframe.html', - chunks: ['viamapi-iframe'], - inlineSource: '.(js)$' + new HtmlWebpackPlugin({ + // Also generate a test.html + filename: "viamapi-iframe.html", + template: "src/iframe/viamapi-iframe.html", + chunks: ["viamapi-iframe"], + inlineSource: ".(js)$" }), new CleanWebpackPlugin(), new HtmlWebpackInlineSourcePlugin() @@ -24,9 +29,9 @@ module.exports = { // We have to transpile every dependency to make it work for older browsers. (IE 11) //exclude: /node_modules/, use: { - loader: 'babel-loader', + loader: "babel-loader", options: { - presets: ['@babel/preset-env'] + presets: ["@babel/preset-env"] } } } diff --git a/javascript/yarn.lock b/javascript/yarn.lock index e1ea2f56622300f72230db5db0cfa7c949639441..3d2e3f48da2b9f625782e83233af552000b5275b 100644 --- a/javascript/yarn.lock +++ b/javascript/yarn.lock @@ -8,26 +8,35 @@ dependencies: "@babel/highlight" "^7.0.0" -"@babel/core@^7.1.2": - version "7.1.2" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.1.2.tgz#f8d2a9ceb6832887329a7b60f9d035791400ba4e" - dependencies: - "@babel/code-frame" "^7.0.0" - "@babel/generator" "^7.1.2" - "@babel/helpers" "^7.1.2" - "@babel/parser" "^7.1.2" - "@babel/template" "^7.1.2" - "@babel/traverse" "^7.1.0" - "@babel/types" "^7.1.2" - convert-source-map "^1.1.0" - debug "^3.1.0" - json5 "^0.5.0" - lodash "^4.17.10" +"@babel/code-frame@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.8.3.tgz#33e25903d7481181534e12ec0a25f16b6fcf419e" + integrity sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g== + dependencies: + "@babel/highlight" "^7.8.3" + +"@babel/core@^7.8.3": + version "7.8.4" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.8.4.tgz#d496799e5c12195b3602d0fddd77294e3e38e80e" + integrity sha512-0LiLrB2PwrVI+a2/IEskBopDYSd8BCb3rOvH7D5tzoWd696TBEduBvuLVm4Nx6rltrLZqvI3MCalB2K2aVzQjA== + dependencies: + "@babel/code-frame" "^7.8.3" + "@babel/generator" "^7.8.4" + "@babel/helpers" "^7.8.4" + "@babel/parser" "^7.8.4" + "@babel/template" "^7.8.3" + "@babel/traverse" "^7.8.4" + "@babel/types" "^7.8.3" + convert-source-map "^1.7.0" + debug "^4.1.0" + gensync "^1.0.0-beta.1" + json5 "^2.1.0" + lodash "^4.17.13" resolve "^1.3.2" semver "^5.4.1" source-map "^0.5.0" -"@babel/generator@^7.1.2", "@babel/generator@^7.1.3": +"@babel/generator@^7.1.3": version "7.1.3" resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.1.3.tgz#2103ec9c42d9bdad9190a6ad5ff2d456fd7b8673" dependencies: @@ -37,6 +46,16 @@ source-map "^0.5.0" trim-right "^1.0.1" +"@babel/generator@^7.8.4": + version "7.8.4" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.8.4.tgz#35bbc74486956fe4251829f9f6c48330e8d0985e" + integrity sha512-PwhclGdRpNAf3IxZb0YVuITPZmmrXz9zf6fH8lT4XbrmfQKr6ryBzhv593P5C6poJRciFCL/eHGW2NuGrgEyxA== + dependencies: + "@babel/types" "^7.8.3" + jsesc "^2.5.1" + lodash "^4.17.13" + source-map "^0.5.0" + "@babel/helper-annotate-as-pure@^7.0.0": version "7.0.0" resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.0.0.tgz#323d39dd0b50e10c7c06ca7d7638e6864d8c5c32" @@ -81,12 +100,28 @@ "@babel/template" "^7.1.0" "@babel/types" "^7.0.0" +"@babel/helper-function-name@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.8.3.tgz#eeeb665a01b1f11068e9fb86ad56a1cb1a824cca" + integrity sha512-BCxgX1BC2hD/oBlIFUgOCQDOPV8nSINxCwM3o93xP4P9Fq6aV5sgv2cOOITDMtCfQ+3PvHp3l689XZvAM9QyOA== + dependencies: + "@babel/helper-get-function-arity" "^7.8.3" + "@babel/template" "^7.8.3" + "@babel/types" "^7.8.3" + "@babel/helper-get-function-arity@^7.0.0": version "7.0.0" resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0.tgz#83572d4320e2a4657263734113c42868b64e49c3" dependencies: "@babel/types" "^7.0.0" +"@babel/helper-get-function-arity@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.8.3.tgz#b894b947bd004381ce63ea1db9f08547e920abd5" + integrity sha512-FVDR+Gd9iLjUMY1fzE2SR0IuaJToR4RkCDARVfsBBPSP53GEqSFjD8gNyxg246VUyc/ALRxFaAK8rVG7UT7xRA== + dependencies: + "@babel/types" "^7.8.3" + "@babel/helper-hoist-variables@^7.0.0": version "7.0.0" resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.0.0.tgz#46adc4c5e758645ae7a45deb92bab0918c23bb88" @@ -164,6 +199,13 @@ dependencies: "@babel/types" "^7.0.0" +"@babel/helper-split-export-declaration@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.8.3.tgz#31a9f30070f91368a7182cf05f831781065fc7a9" + integrity sha512-3x3yOeyBhW851hroze7ElzdkeRXQYQbFIb7gLK1WQYsw2GWDay5gAJNw1sWJ0VFP6z5J1whqeXH/WCdCjZv6dA== + dependencies: + "@babel/types" "^7.8.3" + "@babel/helper-wrap-function@^7.1.0": version "7.1.0" resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.1.0.tgz#8cf54e9190706067f016af8f75cb3df829cc8c66" @@ -173,13 +215,14 @@ "@babel/traverse" "^7.1.0" "@babel/types" "^7.0.0" -"@babel/helpers@^7.1.2": - version "7.1.2" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.1.2.tgz#ab752e8c35ef7d39987df4e8586c63b8846234b5" +"@babel/helpers@^7.8.4": + version "7.8.4" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.8.4.tgz#754eb3ee727c165e0a240d6c207de7c455f36f73" + integrity sha512-VPbe7wcQ4chu4TDQjimHv/5tj73qz88o12EPkO2ValS2QiQS/1F2SsjyIGNnAD0vF/nZS6Cf9i+vW6HIlnaR8w== dependencies: - "@babel/template" "^7.1.2" - "@babel/traverse" "^7.1.0" - "@babel/types" "^7.1.2" + "@babel/template" "^7.8.3" + "@babel/traverse" "^7.8.4" + "@babel/types" "^7.8.3" "@babel/highlight@^7.0.0": version "7.0.0" @@ -189,10 +232,24 @@ esutils "^2.0.2" js-tokens "^4.0.0" +"@babel/highlight@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.8.3.tgz#28f173d04223eaaa59bc1d439a3836e6d1265797" + integrity sha512-PX4y5xQUvy0fnEVHrYOarRPXVWafSjTW9T0Hab8gVIawpl2Sj0ORyrygANq+KjcNlSSTw0YCLSNA8OyZ1I4yEg== + dependencies: + chalk "^2.0.0" + esutils "^2.0.2" + js-tokens "^4.0.0" + "@babel/parser@^7.1.2", "@babel/parser@^7.1.3": version "7.1.3" resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.1.3.tgz#2c92469bac2b7fbff810b67fca07bd138b48af77" +"@babel/parser@^7.8.3", "@babel/parser@^7.8.4": + version "7.8.4" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.8.4.tgz#d1dbe64691d60358a974295fa53da074dd2ce8e8" + integrity sha512-0fKu/QqildpXmPVaRBoXOlyBb3MC+J0A66x97qEfLOMkn3u6nfY5esWogQwi/K0BjASYy4DbnsEWnpNL6qT5Mw== + "@babel/plugin-proposal-async-generator-functions@^7.1.0": version "7.1.0" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.1.0.tgz#41c1a702e10081456e23a7b74d891922dd1bb6ce" @@ -442,6 +499,14 @@ "@babel/helper-regex" "^7.0.0" regexpu-core "^4.1.3" +"@babel/polyfill@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/polyfill/-/polyfill-7.8.3.tgz#2333fc2144a542a7c07da39502ceeeb3abe4debd" + integrity sha512-0QEgn2zkCzqGIkSWWAEmvxD7e00Nm9asTtQvi7HdlYvMhjy/J38V/1Y9ode0zEJeIuxAI0uftiAzqc7nVeWUGg== + dependencies: + core-js "^2.6.5" + regenerator-runtime "^0.13.2" + "@babel/preset-env@^7.1.0": version "7.1.0" resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.1.0.tgz#e67ea5b0441cfeab1d6f41e9b5c79798800e8d11" @@ -488,7 +553,7 @@ js-levenshtein "^1.1.3" semver "^5.3.0" -"@babel/template@^7.1.0", "@babel/template@^7.1.2": +"@babel/template@^7.1.0": version "7.1.2" resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.1.2.tgz#090484a574fef5a2d2d7726a674eceda5c5b5644" dependencies: @@ -496,6 +561,15 @@ "@babel/parser" "^7.1.2" "@babel/types" "^7.1.2" +"@babel/template@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.8.3.tgz#e02ad04fe262a657809327f578056ca15fd4d1b8" + integrity sha512-04m87AcQgAFdvuoyiQ2kgELr2tV8B4fP/xJAVUL3Yb3bkNdMedD3d0rlSQr3PegP0cms3eHjl1F7PWlvWbU8FQ== + dependencies: + "@babel/code-frame" "^7.8.3" + "@babel/parser" "^7.8.3" + "@babel/types" "^7.8.3" + "@babel/traverse@^7.1.0": version "7.1.4" resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.1.4.tgz#f4f83b93d649b4b2c91121a9087fa2fa949ec2b4" @@ -510,6 +584,21 @@ globals "^11.1.0" lodash "^4.17.10" +"@babel/traverse@^7.8.4": + version "7.8.4" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.8.4.tgz#f0845822365f9d5b0e312ed3959d3f827f869e3c" + integrity sha512-NGLJPZwnVEyBPLI+bl9y9aSnxMhsKz42so7ApAv9D+b4vAFPpY013FTS9LdKxcABoIYFU52HcYga1pPlx454mg== + dependencies: + "@babel/code-frame" "^7.8.3" + "@babel/generator" "^7.8.4" + "@babel/helper-function-name" "^7.8.3" + "@babel/helper-split-export-declaration" "^7.8.3" + "@babel/parser" "^7.8.4" + "@babel/types" "^7.8.3" + debug "^4.1.0" + globals "^11.1.0" + lodash "^4.17.13" + "@babel/types@^7.0.0", "@babel/types@^7.1.2", "@babel/types@^7.1.3": version "7.1.3" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.1.3.tgz#3a767004567060c2f40fca49a304712c525ee37d" @@ -518,6 +607,67 @@ lodash "^4.17.10" to-fast-properties "^2.0.0" +"@babel/types@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.8.3.tgz#5a383dffa5416db1b73dedffd311ffd0788fb31c" + integrity sha512-jBD+G8+LWpMBBWvVcdr4QysjUE4mU/syrhN17o1u3gx0/WzJB1kwiVZAXRtWbsIPOwW8pF/YJV5+nmetPzepXg== + dependencies: + esutils "^2.0.2" + lodash "^4.17.13" + to-fast-properties "^2.0.0" + +"@mrmlnc/readdir-enhanced@^2.2.1": + version "2.2.1" + resolved "https://registry.yarnpkg.com/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz#524af240d1a360527b730475ecfa1344aa540dde" + integrity sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g== + dependencies: + call-me-maybe "^1.0.1" + glob-to-regexp "^0.3.0" + +"@nodelib/fs.stat@^1.1.2": + version "1.1.3" + resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz#2b5a3ab3f918cca48a8c754c08168e3f03eba61b" + integrity sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw== + +"@peculiar/asn1-schema@^1.0.3": + version "1.0.3" + resolved "https://registry.yarnpkg.com/@peculiar/asn1-schema/-/asn1-schema-1.0.3.tgz#e55ff9e98a1cf31832629aabacf85be3edf13a48" + integrity sha512-Tfgj9eNJ6cTKEtEuidKenLHMx/Q5M8KEE9hnohHqvdpqHJXWYr5RlT3GjAHPjGXy5+mr7sSfuXfzE6aAkEGN7A== + dependencies: + asn1js "^2.0.22" + tslib "^1.9.3" + +"@peculiar/json-schema@^1.1.9": + version "1.1.9" + resolved "https://registry.yarnpkg.com/@peculiar/json-schema/-/json-schema-1.1.9.tgz#b746e046b787607a1b2804f64437fda2527b3e62" + integrity sha512-F2ST2y/IQPgY+1QMw1Q33sqJbGDCeO3lGqI69SL3Hgo0++7iHqprUB1QyxB/A7bN3tuM65MBxoM2JLbwh42lsQ== + dependencies: + tslib "^1.10.0" + +"@types/events@*": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@types/events/-/events-3.0.0.tgz#2862f3f58a9a7f7c3e78d79f130dd4d71c25c2a7" + integrity sha512-EaObqwIvayI5a8dCzhFrjKzVwKLxjoG9T6Ppd5CEo07LRKfQ8Yokw54r5+Wq7FaBQ+yXRvQAYPrHwya1/UFt9g== + +"@types/glob@^7.1.1": + version "7.1.1" + resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.1.1.tgz#aa59a1c6e3fbc421e07ccd31a944c30eba521575" + integrity sha512-1Bh06cbWJUHMC97acuD6UMG29nMt0Aqz1vF3guLfG+kHHJhy3AyohZFFxYk2f7Q1SQIrNwvncxAE0N/9s70F2w== + dependencies: + "@types/events" "*" + "@types/minimatch" "*" + "@types/node" "*" + +"@types/minimatch@*": + version "3.0.3" + resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.3.tgz#3dca0e3f33b200fc7d1139c0cd96c1268cadfd9d" + integrity sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA== + +"@types/node@*": + version "13.7.0" + resolved "https://registry.yarnpkg.com/@types/node/-/node-13.7.0.tgz#b417deda18cf8400f278733499ad5547ed1abec4" + integrity sha512-GnZbirvmqZUzMgkFn70c74OQpTTUcCzlhQliTzYjQMqg+hVKcDnxdL19Ne3UdYzdMA/+W3eb646FWn/ZaT1NfQ== + "@webassemblyjs/ast@1.7.10": version "1.7.10" resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.7.10.tgz#0cfc61d61286240b72fc522cb755613699eea40a" @@ -680,6 +830,15 @@ acorn@^6.0.2: version "6.0.4" resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.0.4.tgz#77377e7353b72ec5104550aa2d2097a2fd40b754" +add-asset-html-webpack-plugin@^3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/add-asset-html-webpack-plugin/-/add-asset-html-webpack-plugin-3.1.3.tgz#bec77dc8182644a58a0eebcae7d1f9eb162dafdf" + integrity sha512-VSimIES8z4Y30QSYyURPwpzM2yHe25vVq2FMjrg1x/USoYRyhBFEjIW/VIXmYfQ5NkCFPYoDj4zT+rtAd4BVWw== + dependencies: + globby "^9.0.0" + micromatch "^3.1.3" + p-each-series "^1.0.0" + ajv-errors@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/ajv-errors/-/ajv-errors-1.0.0.tgz#ecf021fa108fd17dfb5e6b383f2dd233e31ffc59" @@ -794,7 +953,7 @@ array-includes@^3.0.3: define-properties "^1.1.2" es-abstract "^1.7.0" -array-union@^1.0.1: +array-union@^1.0.1, array-union@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" dependencies: @@ -808,6 +967,11 @@ array-unique@^0.3.2: version "0.3.2" resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" +asmcrypto.js@^2.3.2: + version "2.3.2" + resolved "https://registry.yarnpkg.com/asmcrypto.js/-/asmcrypto.js-2.3.2.tgz#b9f84bd0a1fb82f21f8c29cc284a707ad17bba2e" + integrity sha512-3FgFARf7RupsZETQ1nHnhLUUvpcttcCq1iZCaVAbJZbCZ5VNRrNyvpDyHTOb0KC3llFcsyOT/a99NZcCbeiEsA== + asn1.js@^4.0.0: version "4.10.1" resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-4.10.1.tgz#b9c2bf5805f1e64aadeed6df3a2bfafb5a73f5a0" @@ -822,6 +986,13 @@ asn1js@^2.0.21, asn1js@latest: dependencies: pvutils latest +asn1js@^2.0.22, asn1js@^2.0.26: + version "2.0.26" + resolved "https://registry.yarnpkg.com/asn1js/-/asn1js-2.0.26.tgz#0a6d435000f556a96c6012969d9704d981b71251" + integrity sha512-yG89F0j9B4B0MKIcFyWWxnpZPLaNTjCj4tkE3fjbAoo0qmpGw0PYYqSbX/4ebnd9Icn8ZgK4K1fvDyEtW1JYtQ== + dependencies: + pvutils latest + assert@^1.1.1: version "1.4.1" resolved "https://registry.yarnpkg.com/assert/-/assert-1.4.1.tgz#99912d591836b5a6f5b345c0f07eefc08fc65d91" @@ -878,21 +1049,6 @@ babel-loader@^8.0.4: mkdirp "^0.5.1" util.promisify "^1.0.0" -babel-polyfill@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-polyfill/-/babel-polyfill-6.26.0.tgz#379937abc67d7895970adc621f284cd966cf2153" - dependencies: - babel-runtime "^6.26.0" - core-js "^2.5.0" - regenerator-runtime "^0.10.5" - -babel-runtime@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe" - dependencies: - core-js "^2.4.0" - regenerator-runtime "^0.11.0" - balanced-match@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" @@ -1118,6 +1274,11 @@ cache-base@^1.0.1: union-value "^1.0.0" unset-value "^1.0.0" +call-me-maybe@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/call-me-maybe/-/call-me-maybe-1.0.1.tgz#26d208ea89e37b5cbde60250a15f031c16a4d66b" + integrity sha1-JtII6onje1y95gJQoV8DHBak1ms= + caller-path@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-0.1.0.tgz#94085ef63581ecd3daa92444a8fe94e82577751f" @@ -1354,9 +1515,10 @@ content-type@~1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" -convert-source-map@^1.1.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.6.0.tgz#51b537a8c43e0f04dec1993bffcdd504e758ac20" +convert-source-map@^1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.7.0.tgz#17a2cb882d7f77d3490585e2ce6c524424a3a442" + integrity sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA== dependencies: safe-buffer "~5.1.1" @@ -1383,10 +1545,20 @@ copy-descriptor@^0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" -core-js@^2.4.0, core-js@^2.5.0, core-js@^2.5.7: +core-js@^2.5.7: version "2.5.7" resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.5.7.tgz#f972608ff0cead68b841a16a932d0b183791814e" +core-js@^2.6.5: + version "2.6.11" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.11.tgz#38831469f9922bded8ee21c9dc46985e0399308c" + integrity sha512-5wjnpaT/3dV+XB4borEsnAYQchn00XSgTAWKDkEqv+K8KevjbzmofK6hfJ9TZIlpj2N0xQpazy7PiRQiWHqzWg== + +core-js@^3.5.0: + version "3.6.4" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.6.4.tgz#440a83536b458114b9cb2ac1580ba377dc470647" + integrity sha512-4paDGScNgZP2IXXilaffL9X7968RuvwlkK3xWtZRVqgd8SYNiVKRJvkFd1aqqEuPfN7E68ZHEp9hDj6lHj4Hyw== + core-util-is@~1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" @@ -1510,6 +1682,13 @@ debug@^4.0.1: dependencies: ms "^2.1.1" +debug@^4.1.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791" + integrity sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw== + dependencies: + ms "^2.1.1" + decamelize@^1.1.1: version "1.2.0" resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" @@ -1594,6 +1773,14 @@ des.js@^1.0.0: inherits "^2.0.1" minimalistic-assert "^1.0.0" +des.js@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.1.tgz#5382142e1bdc53f85d86d53e5f4aa7deb91e0843" + integrity sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA== + dependencies: + inherits "^2.0.1" + minimalistic-assert "^1.0.0" + destroy@~1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" @@ -1618,6 +1805,13 @@ dijkstrajs@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/dijkstrajs/-/dijkstrajs-1.0.1.tgz#d3cd81221e3ea40742cfcde556d4e99e98ddc71b" +dir-glob@^2.2.2: + version "2.2.2" + resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-2.2.2.tgz#fa09f0694153c8918b18ba0deafae94769fc50c4" + integrity sha512-f9LBi5QWzIW3I6e//uxZoLBlUt9kcp66qo0sSCxL6YZKc75R1c4MFCoe/LaZiBGmgujvQdxc5Bn3QhfyvK5Hsw== + dependencies: + path-type "^3.0.0" + dns-equal@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/dns-equal/-/dns-equal-1.0.0.tgz#b39e7f1da6eb0a75ba9c17324b34753c47e0654d" @@ -1721,6 +1915,19 @@ elliptic@^6.0.0: minimalistic-assert "^1.0.0" minimalistic-crypto-utils "^1.0.0" +elliptic@^6.5.2: + version "6.5.2" + resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.2.tgz#05c5678d7173c049d8ca433552224a495d0e3762" + integrity sha512-f4x70okzZbIQl/NSRLkI/+tteV/9WqL98zx+SQ69KbXxmVrmjwsNUPn/gYJJ0sHvEak24cZgHIPegRePAtA/xw== + dependencies: + bn.js "^4.4.0" + brorand "^1.0.1" + hash.js "^1.0.0" + hmac-drbg "^1.0.0" + inherits "^2.0.1" + minimalistic-assert "^1.0.0" + minimalistic-crypto-utils "^1.0.0" + emoji-regex@^6.5.1: version "6.5.1" resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-6.5.1.tgz#9baea929b155565c11ea41c6626eaa65cef992c2" @@ -2059,6 +2266,18 @@ fast-deep-equal@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz#7b05218ddf9667bf7f370bf7fdb2cb15fdd0aa49" +fast-glob@^2.2.6: + version "2.2.7" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-2.2.7.tgz#6953857c3afa475fff92ee6015d52da70a4cd39d" + integrity sha512-g1KuQwHOZAmOZMuBtHdxDtju+T2RT8jgCC9aANsbpdiDDTSnjgfuVsIBNKbUeJI3oKMRExcfNDtJl4OhbffMsw== + dependencies: + "@mrmlnc/readdir-enhanced" "^2.2.1" + "@nodelib/fs.stat" "^1.1.2" + glob-parent "^3.1.0" + is-glob "^4.0.0" + merge2 "^1.2.3" + micromatch "^3.1.10" + fast-json-stable-stringify@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz#d5142c0caee6b1189f87d3a76111064f86c8bbf2" @@ -2246,6 +2465,11 @@ gauge@~2.7.3: strip-ansi "^3.0.1" wide-align "^1.1.0" +gensync@^1.0.0-beta.1: + version "1.0.0-beta.1" + resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.1.tgz#58f4361ff987e5ff6e1e7a210827aa371eaac269" + integrity sha512-r8EC6NO1sngH/zdD9fiRDLdcgnbayXah+mLgManTaIZJqEC1MZstmnox8KpnI2/fxQwrp5OpCOYWLp4rBl4Jcg== + get-caller-file@^1.0.1: version "1.0.3" resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.3.tgz#f978fa4c90d1dfe7ff2d6beda2a515e713bdcf4a" @@ -2265,6 +2489,11 @@ glob-parent@^3.1.0: is-glob "^3.1.0" path-dirname "^1.0.0" +glob-to-regexp@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz#8c5a1494d2066c570cc3bfe4496175acc4d502ab" + integrity sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs= + glob@^7.0.3, glob@^7.0.5, glob@^7.1.2: version "7.1.3" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.3.tgz#3960832d3f1574108342dafd3a67b332c0969df1" @@ -2276,6 +2505,18 @@ glob@^7.0.3, glob@^7.0.5, glob@^7.1.2: once "^1.3.0" path-is-absolute "^1.0.0" +glob@^7.1.3: + version "7.1.6" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" + integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.4" + once "^1.3.0" + path-is-absolute "^1.0.0" + global-modules-path@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/global-modules-path/-/global-modules-path-2.3.0.tgz#b0e2bac6beac39745f7db5c59d26a36a0b94f7dc" @@ -2298,6 +2539,20 @@ globby@^6.1.0: pify "^2.0.0" pinkie-promise "^2.0.0" +globby@^9.0.0: + version "9.2.0" + resolved "https://registry.yarnpkg.com/globby/-/globby-9.2.0.tgz#fd029a706c703d29bdd170f4b6db3a3f7a7cb63d" + integrity sha512-ollPHROa5mcxDEkwg6bPt3QbEf4pDQSNtd6JPL1YvOvAo/7/0VAm9TccUeoTmarjPw4pfUthSCqcyfNB1I3ZSg== + dependencies: + "@types/glob" "^7.1.1" + array-union "^1.0.2" + dir-glob "^2.2.2" + fast-glob "^2.2.6" + glob "^7.1.3" + ignore "^4.0.3" + pify "^4.0.1" + slash "^2.0.0" + graceful-fs@^4.1.11, graceful-fs@^4.1.2: version "4.1.11" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658" @@ -2503,7 +2758,7 @@ ignore-walk@^3.0.1: dependencies: minimatch "^3.0.4" -ignore@^4.0.6: +ignore@^4.0.3, ignore@^4.0.6: version "4.0.6" resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" @@ -2837,6 +3092,13 @@ json5@^0.5.0: version "0.5.1" resolved "http://registry.npmjs.org/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821" +json5@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/json5/-/json5-2.1.1.tgz#81b6cb04e9ba496f1c7005d07b4368a2638f90b6" + integrity sha512-l+3HXD0GEI3huGq1njuqtzYK8OYJyXMkOLtQ53pjWh89tvWS2h6l+1zMkYWqlb57+SiQodKZyvMEFb2X+KrFhQ== + dependencies: + minimist "^1.2.0" + jsonfile@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" @@ -2960,6 +3222,11 @@ lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.3, lodash@^4.17.4, lodash@^4.17.5 version "4.17.11" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.11.tgz#b39ea6229ef607ecd89e2c8df12536891cac9b8d" +lodash@^4.17.13: + version "4.17.15" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548" + integrity sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A== + loglevel@^1.4.1: version "1.6.1" resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.6.1.tgz#e0fc95133b6ef276cdc8887cdaf24aa6f156f8fa" @@ -3040,11 +3307,16 @@ merge-descriptors@1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" +merge2@^1.2.3: + version "1.3.0" + resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.3.0.tgz#5b366ee83b2f1582c48f87e47cf1a9352103ca81" + integrity sha512-2j4DAdlBOkiSZIsaXk4mTE3sRS02yBHAtfy127xRV3bQUFqXkjHCHLW6Scv7DwNRbIWNHH8zpnz9zMaKXIdvYw== + methods@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" -micromatch@^3.1.10, micromatch@^3.1.4, micromatch@^3.1.8, micromatch@^3.1.9: +micromatch@^3.1.10, micromatch@^3.1.3, micromatch@^3.1.4, micromatch@^3.1.8, micromatch@^3.1.9: version "3.1.10" resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" dependencies: @@ -3472,6 +3744,13 @@ p-defer@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/p-defer/-/p-defer-1.0.0.tgz#9f6eb182f6c9aa8cd743004a7d4f96b196b0fb0c" +p-each-series@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-each-series/-/p-each-series-1.0.0.tgz#930f3d12dd1f50e7434457a22cd6f04ac6ad7f71" + integrity sha1-kw89Et0fUOdDRFeiLNbwSsatf3E= + dependencies: + p-reduce "^1.0.0" + p-finally@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" @@ -3508,6 +3787,11 @@ p-map@^1.1.1: version "1.2.0" resolved "https://registry.yarnpkg.com/p-map/-/p-map-1.2.0.tgz#e4e94f311eabbc8633a1e79908165fca26241b6b" +p-reduce@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-reduce/-/p-reduce-1.0.0.tgz#18c2b0dd936a4690a529f8231f58a0fdb6a47dfa" + integrity sha1-GMKw3ZNqRpClKfgjH1ig/bakffo= + p-try@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" @@ -3602,6 +3886,13 @@ path-type@^2.0.0: dependencies: pify "^2.0.0" +path-type@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-3.0.0.tgz#cef31dc8e0a1a3bb0d105c0cd97cf3bf47f4e36f" + integrity sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg== + dependencies: + pify "^3.0.0" + pbkdf2@^3.0.3: version "3.0.17" resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.0.17.tgz#976c206530617b14ebb32114239f7b09336e93a6" @@ -3624,6 +3915,11 @@ pify@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" +pify@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231" + integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== + pinkie-promise@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" @@ -3764,6 +4060,13 @@ punycode@^2.1.0: version "2.1.1" resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" +pvtsutils@^1.0.9: + version "1.0.9" + resolved "https://registry.yarnpkg.com/pvtsutils/-/pvtsutils-1.0.9.tgz#0eb6106f27878ccaa55e7dfbf6bd2c75af461dee" + integrity sha512-/kDsuCKPqJuIzn37w6+iN+TiSrN+zrwPEd7FjT61oNbRvceGdsS94fMEWZ4/h6QZU5EZhBMiV+79IYedroP/Yw== + dependencies: + tslib "^1.10.0" + pvutils@^1.0.16, pvutils@latest: version "1.0.16" resolved "https://registry.yarnpkg.com/pvutils/-/pvutils-1.0.16.tgz#b85984388e4d2770686712a2246202d11750d083" @@ -3883,13 +4186,10 @@ regenerate@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.0.tgz#4a856ec4b56e4077c557589cae85e7a4c8869a11" -regenerator-runtime@^0.10.5: - version "0.10.5" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz#336c3efc1220adcedda2c9fab67b5a7955a33658" - -regenerator-runtime@^0.11.0: - version "0.11.1" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9" +regenerator-runtime@^0.13.2: + version "0.13.3" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.3.tgz#7cf6a77d8f5c6f60eb73c5fc1955b2ceb01e6bf5" + integrity sha512-naKIZz2GQ8JWh///G7L3X6LaQUAMp2lvb1rvwwsURe/VXwD6VMfr+/1NuNw3ag8v2kY1aQ/go5SNn79O9JU7yw== regenerator-transform@^0.13.3: version "0.13.3" @@ -4185,6 +4485,11 @@ slash@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55" +slash@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-2.0.0.tgz#de552851a1759df3a8f206535442f5ec4ddeab44" + integrity sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A== + slice-ansi@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-2.0.0.tgz#5373bdb8559b45676e8541c66916cdd6251612e7" @@ -4527,6 +4832,11 @@ trim-right@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003" +tslib@^1.10.0, tslib@^1.9.3: + version "1.10.0" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.10.0.tgz#c3c19f95973fb0a62973fb09d90d961ee43e5c8a" + integrity sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ== + tslib@^1.9.0: version "1.9.3" resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.9.3.tgz#d7e4dd79245d85428c4d7e4822a79917954ca286" @@ -4740,6 +5050,30 @@ wbuf@^1.1.0, wbuf@^1.7.2: dependencies: minimalistic-assert "^1.0.0" +webcrypto-core@^1.0.17: + version "1.0.17" + resolved "https://registry.yarnpkg.com/webcrypto-core/-/webcrypto-core-1.0.17.tgz#a9354bc0b1ba6735e882f4137ede2c4366e6ad9b" + integrity sha512-7jxTLgtM+TahBPErx/Dd2XvxFDfWJrHxjVeTSvIa4LSgiYrmCPlC2INiAMAfb8MbtHiwJKKqF5sPS0AWNjBbXw== + dependencies: + pvtsutils "^1.0.9" + tslib "^1.10.0" + +webcrypto-liner@^1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/webcrypto-liner/-/webcrypto-liner-1.1.4.tgz#a02e587cd772ca0bad2b862528ef4abbaf40d34e" + integrity sha512-p4ovRsS8hIyG8KnW2FyrWZG4rZY5eHow5IlNiyOXeisE4gbX3FMZzJPej1dhdxL67111yf0zW2H24qt0ny+JHQ== + dependencies: + "@peculiar/asn1-schema" "^1.0.3" + "@peculiar/json-schema" "^1.1.9" + asmcrypto.js "^2.3.2" + asn1js "^2.0.26" + core-js "^3.5.0" + des.js "^1.0.1" + elliptic "^6.5.2" + pvtsutils "^1.0.9" + tslib "^1.10.0" + webcrypto-core "^1.0.17" + webpack-clean@^1.2.3: version "1.2.3" resolved "https://registry.yarnpkg.com/webpack-clean/-/webpack-clean-1.2.3.tgz#857f4a432f0267c0424d05e061aa246b0b9d3ba9"