diff --git a/frontend/package.json b/frontend/package.json index d88430474..3bd975798 100755 --- a/frontend/package.json +++ b/frontend/package.json @@ -47,7 +47,7 @@ "particles-bg-vue": "1.2.3", "portal-vue": "^2.1.7", "prettier": "^2.2.1", - "qrcode": "^1.4.4", + "qrcanvas-vue": "2.1.1", "regenerator-runtime": "^0.13.7", "vee-validate": "^3.4.5", "vue": "2.6.12", @@ -58,8 +58,6 @@ "vue-jest": "^3.0.7", "vue-loading-overlay": "^3.4.2", "vue-moment": "^4.1.0", - "vue-qrcode": "^0.3.5", - "vue-qrcode-reader": "^2.3.16", "vue-router": "^3.0.6", "vue2-transitions": "^0.2.3", "vuex": "^3.6.0", diff --git a/frontend/public/img/gdd-coin.png b/frontend/public/img/gdd-coin.png new file mode 100644 index 000000000..32cb8b2b2 Binary files /dev/null and b/frontend/public/img/gdd-coin.png differ diff --git a/frontend/public/img/svg/qr-code.svg b/frontend/public/img/svg/qr-code.svg new file mode 100644 index 000000000..3cbd987c4 --- /dev/null +++ b/frontend/public/img/svg/qr-code.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/frontend/src/components/ClipboardCopy.vue b/frontend/src/components/ClipboardCopy.vue index b952dbd8c..810f73fe1 100644 --- a/frontend/src/components/ClipboardCopy.vue +++ b/frontend/src/components/ClipboardCopy.vue @@ -1,7 +1,7 @@ - + {{ $t('gdd_per_link.copy') }} @@ -14,12 +14,7 @@ export default { name: 'ClipboardCopy', props: { - code: { type: String, required: true }, - }, - data() { - return { - url: `${window.location.origin}/redeem/${this.code}`, - } + text: { type: String, required: true }, }, methods: { CopyLink() { diff --git a/frontend/src/components/GddSend/QrCode.spec.js b/frontend/src/components/GddSend/QrCode.spec.js deleted file mode 100644 index 66da5748d..000000000 --- a/frontend/src/components/GddSend/QrCode.spec.js +++ /dev/null @@ -1,70 +0,0 @@ -import { mount } from '@vue/test-utils' -import QrCode from './QrCode' - -const localVue = global.localVue - -describe('QrCode', () => { - let wrapper - - const mocks = { - $t: jest.fn((t) => t), - } - - const stubs = { - QrcodeStream: true, - QrcodeCapture: true, - } - - const Wrapper = () => { - return mount(QrCode, { localVue, mocks, stubs }) - } - - describe('mount', () => { - beforeEach(() => { - wrapper = Wrapper() - }) - - it('renders the component', () => { - expect(wrapper.find('div.alert').exists()).toBeTruthy() - }) - - describe('scanning', () => { - beforeEach(async () => { - wrapper.find('a').trigger('click') - }) - - it('has a scanning stream', () => { - expect(wrapper.findComponent({ name: 'QrcodeStream' }).exists()).toBeTruthy() - }) - - describe('decode', () => { - beforeEach(async () => { - await wrapper - .findComponent({ name: 'QrcodeStream' }) - .vm.$emit('decode', '[{"email": "user@example.org", "amount": 10.0}]') - }) - - it('emits set transaction', () => { - expect(wrapper.emitted()['set-transaction']).toEqual([ - [ - { - email: 'user@example.org', - amount: 10, - }, - ], - ]) - }) - }) - - describe('detect', () => { - beforeEach(async () => { - await wrapper.find('div.row > *').vm.$emit('detect') - }) - - it('calls onDetect', () => { - expect(wrapper.vm.detect).toBeTruthy() - }) - }) - }) - }) -}) diff --git a/frontend/src/components/GddSend/QrCode.vue b/frontend/src/components/GddSend/QrCode.vue deleted file mode 100644 index 32e527cfe..000000000 --- a/frontend/src/components/GddSend/QrCode.vue +++ /dev/null @@ -1,72 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - {{ $t('form.cancel') }} - - - - - - - diff --git a/frontend/src/components/GddSend/TransactionResultLink.vue b/frontend/src/components/GddSend/TransactionResultLink.vue index 66b5529d6..ee65b159a 100644 --- a/frontend/src/components/GddSend/TransactionResultLink.vue +++ b/frontend/src/components/GddSend/TransactionResultLink.vue @@ -1,27 +1,31 @@ - - - - - - {{ $t('gdd_per_link.created') }} - - - - {{ $t('form.close') }} - - - - - + + + + {{ $t('gdd_per_link.created') }} + + + + + + + + {{ $t('form.close') }} + + + + + diff --git a/frontend/src/components/QrCode/FigureQrCode.spec.js b/frontend/src/components/QrCode/FigureQrCode.spec.js new file mode 100644 index 000000000..d19d806d3 --- /dev/null +++ b/frontend/src/components/QrCode/FigureQrCode.spec.js @@ -0,0 +1,30 @@ +import { mount } from '@vue/test-utils' +import FigureQrCode from './FigureQrCode' + +const localVue = global.localVue + +const propsData = { + text: '', +} + +describe('FigureQrCode', () => { + let wrapper + + const Wrapper = () => { + return mount(FigureQrCode, { localVue, propsData }) + } + + describe('mount', () => { + beforeEach(() => { + wrapper = Wrapper() + }) + + it('renders the Div Element ".figure-qr-code"', () => { + expect(wrapper.find('div.figure-qr-code').exists()).toBeTruthy() + }) + + it('renders the Div Element "q-r-canvas"', () => { + expect(wrapper.find('q-r-canvas')) + }) + }) +}) diff --git a/frontend/src/components/QrCode/FigureQrCode.vue b/frontend/src/components/QrCode/FigureQrCode.vue new file mode 100644 index 000000000..df450a52e --- /dev/null +++ b/frontend/src/components/QrCode/FigureQrCode.vue @@ -0,0 +1,51 @@ + + + + + + + + + diff --git a/frontend/src/components/TransactionLinks/TransactionLink.spec.js b/frontend/src/components/TransactionLinks/TransactionLink.spec.js index 4a2bb7b3c..ec2f657c3 100644 --- a/frontend/src/components/TransactionLinks/TransactionLink.spec.js +++ b/frontend/src/components/TransactionLinks/TransactionLink.spec.js @@ -25,7 +25,7 @@ const propsData = { code: 'c00000000c000000c0000', holdAvailableAmount: '5.13109484759482747111', id: 12, - memo: 'Wie schön hier etwas Quatsch zu lesen!', + memo: 'Katzenauge, Eulenschrei, was verschwunden komm herbei!', validUntil: '2022-03-30T14:22:40.000Z', } @@ -57,22 +57,36 @@ describe('TransactionLink', () => { describe('copy with success', () => { beforeEach(async () => { navigatorClipboardMock.mockResolvedValue() - await wrapper.findAll('button').at(0).trigger('click') + await wrapper.find('.test-copy-link').trigger('click') + }) + it('should call clipboard.writeText', () => { + expect(navigator.clipboard.writeText).toHaveBeenCalledWith( + 'http://localhost/redeem/c00000000c000000c0000', + ) }) - it('toasts success message', () => { expect(toastSuccessSpy).toBeCalledWith('gdd_per_link.link-copied') }) }) + }) - describe('copy with error', () => { + describe('qr code modal', () => { + let spy + + beforeEach(() => { + jest.clearAllMocks() + }) + + describe('with success', () => { beforeEach(async () => { - navigatorClipboardMock.mockRejectedValue() - await wrapper.findAll('button').at(0).trigger('click') + spy = jest.spyOn(wrapper.vm.$bvModal, 'show') + // spy.mockImplementation(() => Promise.resolve('some value')) + // mockAPIcall.mockResolvedValue() + await wrapper.find('.test-qr-code').trigger('click') }) - it('toasts error message', () => { - expect(toastErrorSpy).toBeCalledWith('gdd_per_link.not-copied') + it('qr-code Modal if show', () => { + expect(spy).toBeCalled() }) }) }) @@ -89,7 +103,7 @@ describe('TransactionLink', () => { spy = jest.spyOn(wrapper.vm.$bvModal, 'msgBoxConfirm') spy.mockImplementation(() => Promise.resolve('some value')) mockAPIcall.mockResolvedValue() - await wrapper.findAll('button').at(1).trigger('click') + await wrapper.find('.test-delete-link').trigger('click') }) it('test Modal if confirm true', () => { @@ -121,7 +135,7 @@ describe('TransactionLink', () => { spy = jest.spyOn(wrapper.vm.$bvModal, 'msgBoxConfirm') spy.mockImplementation(() => Promise.resolve('some value')) mockAPIcall.mockRejectedValue({ message: 'Something went wrong :(' }) - await wrapper.findAll('button').at(1).trigger('click') + await wrapper.find('.test-delete-link').trigger('click') }) it('toasts an error message', () => { @@ -134,7 +148,7 @@ describe('TransactionLink', () => { spy = jest.spyOn(wrapper.vm.$bvModal, 'msgBoxConfirm') spy.mockImplementation(() => Promise.resolve(false)) mockAPIcall.mockResolvedValue() - await wrapper.findAll('button').at(1).trigger('click') + await wrapper.find('.test-delete-link').trigger('click') }) it('does not call the API', () => { diff --git a/frontend/src/components/TransactionLinks/TransactionLink.vue b/frontend/src/components/TransactionLinks/TransactionLink.vue index 9cbfdfb93..66f9f2f92 100644 --- a/frontend/src/components/TransactionLinks/TransactionLink.vue +++ b/frontend/src/components/TransactionLinks/TransactionLink.vue @@ -1,20 +1,33 @@ - + - - - - - + + + + + + + + + + + + + + - + @@ -33,6 +45,12 @@ + + + + {{ link }} + + + diff --git a/frontend/src/components/UserCard.spec.js b/frontend/src/components/UserCard.spec.js index 0fe13c416..6977917f5 100644 --- a/frontend/src/components/UserCard.spec.js +++ b/frontend/src/components/UserCard.spec.js @@ -11,7 +11,8 @@ describe('UserCard', () => { $n: jest.fn((n) => String(n)), $store: { state: { - email: 'user@example.org', + firstName: 'Bibi', + lastName: 'Bloxberg', }, }, } @@ -28,9 +29,12 @@ describe('UserCard', () => { it('renders the Div Element ".userdata-card"', () => { expect(wrapper.find('div.userdata-card').exists()).toBeTruthy() }) + it('renders the SPAN Element ".b-avatar"', () => { + expect(wrapper.find('span.b-avatar').exists()).toBeTruthy() + }) - it('renders the Div Element "vue-qrcode"', () => { - expect(wrapper.find('vue-qrcode')) + it('find the first letters of the firstName and lastName', () => { + expect(wrapper.find('span.b-avatar').text()).toBe('B B') }) }) }) diff --git a/frontend/src/components/UserCard.vue b/frontend/src/components/UserCard.vue index beca89532..2ed17403b 100755 --- a/frontend/src/components/UserCard.vue +++ b/frontend/src/components/UserCard.vue @@ -2,11 +2,7 @@ - + @@ -37,16 +33,16 @@ diff --git a/frontend/test/testSetup.js b/frontend/test/testSetup.js index 0ceb5affd..614621a09 100644 --- a/frontend/test/testSetup.js +++ b/frontend/test/testSetup.js @@ -8,7 +8,6 @@ import * as rules from 'vee-validate/dist/rules' import { messages } from 'vee-validate/dist/locale/en.json' import RegeneratorRuntime from 'regenerator-runtime' -import VueQrcode from 'vue-qrcode' import VueMoment from 'vue-moment' @@ -46,7 +45,6 @@ global.localVue.use(BootstrapVue) global.localVue.use(Vuex) global.localVue.use(IconsPlugin) global.localVue.use(RegeneratorRuntime) -global.localVue.use(VueQrcode) global.localVue.use(VueMoment) global.localVue.component('validation-provider', ValidationProvider) global.localVue.component('validation-observer', ValidationObserver) diff --git a/frontend/yarn.lock b/frontend/yarn.lock index cd833a3df..cc7868ce3 100644 --- a/frontend/yarn.lock +++ b/frontend/yarn.lock @@ -1726,6 +1726,13 @@ dependencies: regenerator-runtime "^0.13.4" +"@babel/runtime@^7.11.2", "@babel/runtime@^7.16.0": + version "7.17.9" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.17.9.tgz#d19fbf802d01a8cb6cf053a64e472d42c434ba72" + integrity sha512-lSiBBvodq29uShpWGNbgFdKYNiFDo5/HIYsaCEY9ff4sb10x9jizo2+pRrSyF4jKZCXqgzuqBOQKbUm90gQwJg== + dependencies: + regenerator-runtime "^0.13.4" + "@babel/runtime@^7.14.0": version "7.17.7" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.17.7.tgz#a5f3328dc41ff39d803f311cfe17703418cf9825" @@ -4120,7 +4127,7 @@ balanced-match@^2.0.0: resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-2.0.0.tgz#dc70f920d78db8b858535795867bf48f820633d9" integrity sha512-1ugUSr8BHXRnK23KfuYS+gVMC3LB8QGH9W1iGtDPsNWoQbgtXSExkBu2aDR4epiGWZOjZsj6lDl/N/AqqTC3UA== -base64-js@^1.0.2, base64-js@^1.3.1: +base64-js@^1.0.2: version "1.5.1" resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== @@ -4407,30 +4414,12 @@ bser@2.1.1: dependencies: node-int64 "^0.4.0" -buffer-alloc-unsafe@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz#bd7dc26ae2972d0eda253be061dba992349c19f0" - integrity sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg== - -buffer-alloc@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/buffer-alloc/-/buffer-alloc-1.2.0.tgz#890dd90d923a873e08e10e5fd51a57e5b7cce0ec" - integrity sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow== - dependencies: - buffer-alloc-unsafe "^1.1.0" - buffer-fill "^1.0.0" - -buffer-fill@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/buffer-fill/-/buffer-fill-1.0.0.tgz#f8f78b76789888ef39f205cd637f68e702122b2c" - integrity sha1-+PeLdniYiO858gXNY39o5wISKyw= - buffer-from@1.x: version "1.1.2" resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== -buffer-from@^1.0.0, buffer-from@^1.1.1: +buffer-from@^1.0.0: version "1.1.1" resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== @@ -4454,14 +4443,6 @@ buffer@^4.3.0: ieee754 "^1.1.4" isarray "^1.0.0" -buffer@^5.4.3: - version "5.7.1" - resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0" - integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== - dependencies: - base64-js "^1.3.1" - ieee754 "^1.1.13" - builtin-status-codes@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8" @@ -4577,11 +4558,6 @@ caller-path@^2.0.0: dependencies: caller-callsite "^2.0.0" -callforth@^0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/callforth/-/callforth-0.3.1.tgz#d40f610c7dd47d0011fd84bac32b3fe11cff1785" - integrity sha512-Q2zPfqnwoKsb1DTVCr4lmhe49wKNBsMmNlbudjleu3/co+Nw1pOqFHYJHrW3VZ253ou9AAr+xauQR0C55NPdzA== - callsites@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/callsites/-/callsites-0.2.0.tgz#afab96262910a7f33c19a5775825c69f34e350ca" @@ -5243,11 +5219,6 @@ core-js@^3.20.2: resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.20.3.tgz#c710d0a676e684522f3db4ee84e5e18a9d11d69a" integrity sha512-vVl8j8ph6tRS3B8qir40H7yw7voy17xL0piAjlbBUsH7WIfzoedL/ZOr1OV9FyZQLWXsayOJyV4tnRyXR85/ag== -core-js@^3.6.5: - version "3.9.0" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.9.0.tgz#790b1bb11553a2272b36e2625c7179db345492f8" - integrity sha512-PyFBJaLq93FlyYdsndE5VaueA9K5cNB7CGzeCj191YYLhkQM0gdZR2SKihM70oF0wdqKSKClv/tEBOpoRmdOVQ== - core-util-is@1.0.2, 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" @@ -5805,11 +5776,6 @@ diffie-hellman@^5.0.0: miller-rabin "^4.0.0" randombytes "^2.0.0" -dijkstrajs@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/dijkstrajs/-/dijkstrajs-1.0.1.tgz#d3cd81221e3ea40742cfcde556d4e99e98ddc71b" - integrity sha1-082BIh4+pAdCz83lVtTpnpjdxxs= - dir-glob@^2.0.0, dir-glob@^2.2.2: version "2.2.2" resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-2.2.2.tgz#fa09f0694153c8918b18ba0deafae94769fc50c4" @@ -8057,7 +8023,7 @@ identity-obj-proxy@^3.0.0: dependencies: harmony-reflect "^1.4.6" -ieee754@^1.1.13, ieee754@^1.1.4: +ieee754@^1.1.4: version "1.2.1" resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== @@ -8658,11 +8624,6 @@ isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= -isarray@^2.0.1: - version "2.0.5" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.5.tgz#8af1e4c1221244cc62459faf38940d4e644a5723" - integrity sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw== - isexe@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" @@ -11491,11 +11452,6 @@ pn@^1.1.0: resolved "https://registry.yarnpkg.com/pn/-/pn-1.1.0.tgz#e2f4cef0e219f463c179ab37463e4e1ecdccbafb" integrity sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA== -pngjs@^3.3.0: - version "3.4.0" - resolved "https://registry.yarnpkg.com/pngjs/-/pngjs-3.4.0.tgz#99ca7d725965fb655814eaf65f38f12bbdbf555f" - integrity sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w== - popper.js@^1.16.1: version "1.16.1" resolved "https://registry.yarnpkg.com/popper.js/-/popper.js-1.16.1.tgz#2a223cb3dc7b6213d740e40372be40de43e65b1b" @@ -12101,18 +12057,26 @@ q@^1.1.2: resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7" integrity sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc= -qrcode@^1.4.4: - version "1.4.4" - resolved "https://registry.yarnpkg.com/qrcode/-/qrcode-1.4.4.tgz#f0c43568a7e7510a55efc3b88d9602f71963ea83" - integrity sha512-oLzEC5+NKFou9P0bMj5+v6Z40evexeE29Z9cummZXZ9QXyMr3lphkURzxjXgPJC5azpxcshoDWV1xE46z+/c3Q== +qrcanvas-vue@2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/qrcanvas-vue/-/qrcanvas-vue-2.1.1.tgz#27b449f99eaf46f324b300215469bfdf8ef77d88" + integrity sha512-86NMjOJ5XJGrrqrD2t+zmZxZKNuW1Is7o88UOiM8qFxDBjuTyfq9VJE9/2rN5XxThsjBuY4bRrQqL9blVwnI9w== dependencies: - buffer "^5.4.3" - buffer-alloc "^1.2.0" - buffer-from "^1.1.1" - dijkstrajs "^1.0.1" - isarray "^2.0.1" - pngjs "^3.3.0" - yargs "^13.2.4" + "@babel/runtime" "^7.16.0" + qrcanvas "^3.1.2" + +qrcanvas@^3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/qrcanvas/-/qrcanvas-3.1.2.tgz#81a25e91b2c27e9ace91da95591cbfb100d68702" + integrity sha512-lNcAyCHN0Eno/mJ5eBc7lHV/5ejAJxII0UELthG3bNnlLR+u8hCc7CR+hXBawbYUf96kNIosXfG2cJzx92ZWKg== + dependencies: + "@babel/runtime" "^7.11.2" + qrcode-generator "^1.4.4" + +qrcode-generator@^1.4.4: + version "1.4.4" + resolved "https://registry.yarnpkg.com/qrcode-generator/-/qrcode-generator-1.4.4.tgz#63f771224854759329a99048806a53ed278740e7" + integrity sha512-HM7yY8O2ilqhmULxGMpcHSF1EhJJ9yBj8gvDEuZ6M+KGJ0YY2hKpnXvRD+hZPLrDVck3ExIGhmPtSdcjC+guuw== qs@6.7.0: version "6.7.0" @@ -12631,13 +12595,6 @@ rsvp@^4.8.4: resolved "https://registry.yarnpkg.com/rsvp/-/rsvp-4.8.5.tgz#c8f155311d167f68f21e168df71ec5b083113734" integrity sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA== -rtcpeerconnection-shim@^1.2.15: - version "1.2.15" - resolved "https://registry.yarnpkg.com/rtcpeerconnection-shim/-/rtcpeerconnection-shim-1.2.15.tgz#e7cc189a81b435324c4949aa3dfb51888684b243" - integrity sha512-C6DxhXt7bssQ1nHb154lqeL0SXz5Dx4RczXZu2Aa/L1NJFnEVDxFwCBo3fqtuljhHIGceg5JKBV4XJ0gW5JKyw== - dependencies: - sdp "^2.6.0" - run-async@^2.2.0: version "2.4.1" resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.4.1.tgz#8440eccf99ea3e70bd409d49aab88e10c189a455" @@ -12770,11 +12727,6 @@ schema-utils@^3.0.0: ajv "^6.12.5" ajv-keywords "^3.5.2" -sdp@^2.12.0, sdp@^2.6.0: - version "2.12.0" - resolved "https://registry.yarnpkg.com/sdp/-/sdp-2.12.0.tgz#338a106af7560c86e4523f858349680350d53b22" - integrity sha512-jhXqQAQVM+8Xj5EjJGVweuEzgtGWb3tmEEpl3CLP3cStInSbVHSg0QWOGQzNq8pSID4JkpeV2mPqlMDLrm0/Vw== - select-hose@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/select-hose/-/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca" @@ -14609,21 +14561,6 @@ vue-moment@^4.1.0: dependencies: moment "^2.19.2" -vue-qrcode-reader@^2.3.16: - version "2.3.16" - resolved "https://registry.yarnpkg.com/vue-qrcode-reader/-/vue-qrcode-reader-2.3.16.tgz#600f24d0b652bfded29c50a7695c7f521b71c7bb" - integrity sha512-sxw4761nxyIPNCNyqWeZqYLf+PHa3CBd/2ls0J2w5ExIeIJEGWugDq+gGtc9Kj2OJjfcWvlWax1AGa8AMe/SCA== - dependencies: - callforth "^0.3.1" - core-js "^3.6.5" - vue "^2.6.11" - webrtc-adapter "7.7.0" - -vue-qrcode@^0.3.5: - version "0.3.5" - resolved "https://registry.yarnpkg.com/vue-qrcode/-/vue-qrcode-0.3.5.tgz#d95bd81fea0c7f007f4e69244203d0eee2d573a5" - integrity sha512-AZJ+HzhOFokHuMVVwUIjG1FCWT1vJqn/Ro8XnQbyNlZTlQ8l4040JawVqUvTql3AdjJnI9bXaCTPplN502SnFw== - vue-router@^3.0.6: version "3.5.1" resolved "https://registry.yarnpkg.com/vue-router/-/vue-router-3.5.1.tgz#edf3cf4907952d1e0583e079237220c5ff6eb6c9" @@ -14899,14 +14836,6 @@ webpack@^4.0.0: watchpack "^1.7.4" webpack-sources "^1.4.1" -webrtc-adapter@7.7.0: - version "7.7.0" - resolved "https://registry.yarnpkg.com/webrtc-adapter/-/webrtc-adapter-7.7.0.tgz#e56ff25f925177ac553a7c49323ca4108d2b5f4d" - integrity sha512-7Bp9OBnx642oJRkom1tNAbeJjUadAq2rh5xLL9YXPw5hVyt2h4hHr5bcoPYDs1stp/mZHSPSQA34YISdnr0DBQ== - dependencies: - rtcpeerconnection-shim "^1.2.15" - sdp "^2.12.0" - websocket-driver@>=0.5.1, websocket-driver@^0.7.4: version "0.7.4" resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.7.4.tgz#89ad5295bbf64b480abcba31e4953aca706f5760" @@ -15201,7 +15130,7 @@ yargs-parser@^20.2.3: resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== -yargs@^13.2.2, yargs@^13.2.4, yargs@^13.3.0, yargs@^13.3.2: +yargs@^13.2.2, yargs@^13.3.0, yargs@^13.3.2: version "13.3.2" resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.3.2.tgz#ad7ffefec1aa59565ac915f82dccb38a9c31a2dd" integrity sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==
- {{ $t('form.close') }} -
{{ link }}