diff --git a/package-lock.json b/package-lock.json index 38d202a..89f4cf3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,6 +8,9 @@ "name": "@baloise/vue-keycloak", "version": "1.4.0", "license": "Apache-2.0", + "dependencies": { + "vue-demi": "^0.13" + }, "devDependencies": { "@semantic-release/changelog": "^5.0.1", "@semantic-release/git": "^9.0.0", @@ -16,6 +19,7 @@ "@types/jest": "^26.0.22", "@typescript-eslint/eslint-plugin": "^4.19.0", "@typescript-eslint/parser": "^4.19.0", + "@vue/composition-api": "^1.3.0", "@vue/eslint-config-prettier": "^6.0.0", "@vue/eslint-config-typescript": "^7.0.0", "eslint": "^7.23.0", @@ -30,12 +34,20 @@ "semantic-release": "^17.4.2", "ts-jest": "^26.5.4", "typescript": "^4.2.3", - "vue": "^3.0.8" + "vue2": "npm:vue@<2.7", + "vue27": "npm:vue@^2.7", + "vue3": "npm:vue@^3" }, "peerDependencies": { + "@vue/composition-api": "^1.3.0", "jwt-decode": "^3.1.2", "keycloak-js": "^12.0.4", - "vue": "^3.0.8" + "vue": "^2 || ^3" + }, + "peerDependenciesMeta": { + "@vue/composition-api": { + "optional": true + } } }, "node_modules/@babel/code-frame": { @@ -398,9 +410,9 @@ } }, "node_modules/@babel/parser": { - "version": "7.16.10", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.16.10.tgz", - "integrity": "sha512-Sm/S9Or6nN8uiFsQU1yodyDW3MWXQhFeqzMPM+t8MJjM+pLsnFVxFZzkpXKvUXh+Gz9cbMoYYs484+Jw/NTEFQ==", + "version": "7.19.1", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.19.1.tgz", + "integrity": "sha512-h7RCSorm1DdTVGJf3P2Mhj3kdnkmF/EiysUkzS2TdgAYqyjFdMQJbVuXOBej2SBJaXan/lIVtT6KkGbyyq753A==", "dev": true, "bin": { "parser": "bin/babel-parser.js" @@ -1662,39 +1674,39 @@ } }, "node_modules/@vue/compiler-core": { - "version": "3.2.28", - "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.2.28.tgz", - "integrity": "sha512-mQpfEjmHVxmWKaup0HL6tLMv2HqjjJu7XT4/q0IoUXYXC4xKG8lIVn5YChJqxBTLPuQjzas7u7i9L4PAWJZRtA==", + "version": "3.2.39", + "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.2.39.tgz", + "integrity": "sha512-mf/36OWXqWn0wsC40nwRRGheR/qoID+lZXbIuLnr4/AngM0ov8Xvv8GHunC0rKRIkh60bTqydlqTeBo49rlbqw==", "dev": true, "dependencies": { "@babel/parser": "^7.16.4", - "@vue/shared": "3.2.28", + "@vue/shared": "3.2.39", "estree-walker": "^2.0.2", "source-map": "^0.6.1" } }, "node_modules/@vue/compiler-dom": { - "version": "3.2.28", - "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.2.28.tgz", - "integrity": "sha512-KA4yXceLteKC7VykvPnViUixemQw3A+oii+deSbZJOQKQKVh1HLosI10qxa8ImPCyun41+wG3uGR+tW7eu1W6Q==", + "version": "3.2.39", + "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.2.39.tgz", + "integrity": "sha512-HMFI25Be1C8vLEEv1hgEO1dWwG9QQ8LTTPmCkblVJY/O3OvWx6r1+zsox5mKPMGvqYEZa6l8j+xgOfUspgo7hw==", "dev": true, "dependencies": { - "@vue/compiler-core": "3.2.28", - "@vue/shared": "3.2.28" + "@vue/compiler-core": "3.2.39", + "@vue/shared": "3.2.39" } }, "node_modules/@vue/compiler-sfc": { - "version": "3.2.28", - "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.2.28.tgz", - "integrity": "sha512-zB0WznfEBb4CbGBHzhboHDKVO5nxbkbxxFo9iVlxObP7a9/qvA5kkZEuT7nXP52f3b3qEfmVTjIT23Lo1ndZdQ==", + "version": "3.2.39", + "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.2.39.tgz", + "integrity": "sha512-fqAQgFs1/BxTUZkd0Vakn3teKUt//J3c420BgnYgEOoVdTwYpBTSXCMJ88GOBCylmUBbtquGPli9tVs7LzsWIA==", "dev": true, "dependencies": { "@babel/parser": "^7.16.4", - "@vue/compiler-core": "3.2.28", - "@vue/compiler-dom": "3.2.28", - "@vue/compiler-ssr": "3.2.28", - "@vue/reactivity-transform": "3.2.28", - "@vue/shared": "3.2.28", + "@vue/compiler-core": "3.2.39", + "@vue/compiler-dom": "3.2.39", + "@vue/compiler-ssr": "3.2.39", + "@vue/reactivity-transform": "3.2.39", + "@vue/shared": "3.2.39", "estree-walker": "^2.0.2", "magic-string": "^0.25.7", "postcss": "^8.1.10", @@ -1702,13 +1714,22 @@ } }, "node_modules/@vue/compiler-ssr": { - "version": "3.2.28", - "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.2.28.tgz", - "integrity": "sha512-z8rck1PDTu20iLyip9lAvIhaO40DUJrw3Zv0mS4Apfh3PlfWpF5dhsO5g0dgt213wgYsQIYVIlU9cfrYapqRgg==", + "version": "3.2.39", + "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.2.39.tgz", + "integrity": "sha512-EoGCJ6lincKOZGW+0Ky4WOKsSmqL7hp1ZYgen8M7u/mlvvEQUaO9tKKOy7K43M9U2aA3tPv0TuYYQFrEbK2eFQ==", "dev": true, "dependencies": { - "@vue/compiler-dom": "3.2.28", - "@vue/shared": "3.2.28" + "@vue/compiler-dom": "3.2.39", + "@vue/shared": "3.2.39" + } + }, + "node_modules/@vue/composition-api": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/@vue/composition-api/-/composition-api-1.7.0.tgz", + "integrity": "sha512-hxOgLYR+wjuPX9bkP2pAPlqUs98XxBoa9DSLyp1z6+YR92wC42PZcZKs4d+VRtcv4udOv041Kss+F6ap5nj8YA==", + "devOptional": true, + "peerDependencies": { + "vue": ">= 2.5 < 2.7" } }, "node_modules/@vue/eslint-config-prettier": { @@ -1759,65 +1780,52 @@ } }, "node_modules/@vue/reactivity": { - "version": "3.2.28", - "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.2.28.tgz", - "integrity": "sha512-WamM5LGv7JIarW+EYAzYFqYonZXjTnOjNW0sBO93jRE9I1ReAwfH8NvQXkPA3JZ3fuF6SGDdG8Y9/+dKjd/1Gw==", + "version": "3.2.39", + "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.2.39.tgz", + "integrity": "sha512-vlaYX2a3qMhIZfrw3Mtfd+BuU+TZmvDrPMa+6lpfzS9k/LnGxkSuf0fhkP0rMGfiOHPtyKoU9OJJJFGm92beVQ==", "dev": true, "dependencies": { - "@vue/shared": "3.2.28" + "@vue/shared": "3.2.39" } }, "node_modules/@vue/reactivity-transform": { - "version": "3.2.28", - "resolved": "https://registry.npmjs.org/@vue/reactivity-transform/-/reactivity-transform-3.2.28.tgz", - "integrity": "sha512-zE8idNkOPnBDd2tKSIk84hOQZ+jXKvSy5FoIIVlcNEJHnCFnQ3maqeSJ9KoB2Rf6EXUhFTiTDNRlYlXmT2uHbQ==", + "version": "3.2.39", + "resolved": "https://registry.npmjs.org/@vue/reactivity-transform/-/reactivity-transform-3.2.39.tgz", + "integrity": "sha512-HGuWu864zStiWs9wBC6JYOP1E00UjMdDWIG5W+FpUx28hV3uz9ODOKVNm/vdOy/Pvzg8+OcANxAVC85WFBbl3A==", "dev": true, "dependencies": { "@babel/parser": "^7.16.4", - "@vue/compiler-core": "3.2.28", - "@vue/shared": "3.2.28", + "@vue/compiler-core": "3.2.39", + "@vue/shared": "3.2.39", "estree-walker": "^2.0.2", "magic-string": "^0.25.7" } }, "node_modules/@vue/runtime-core": { - "version": "3.2.28", - "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.2.28.tgz", - "integrity": "sha512-sVbBMFUt42JatTlXbdH6tVcLPw1eEOrrVQWI+j6/nJVzR852RURaT6DhdR0azdYscxq4xmmBctE0VQmlibBOFw==", + "version": "3.2.39", + "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.2.39.tgz", + "integrity": "sha512-xKH5XP57JW5JW+8ZG1khBbuLakINTgPuINKL01hStWLTTGFOrM49UfCFXBcFvWmSbci3gmJyLl2EAzCaZWsx8g==", "dev": true, "dependencies": { - "@vue/reactivity": "3.2.28", - "@vue/shared": "3.2.28" + "@vue/reactivity": "3.2.39", + "@vue/shared": "3.2.39" } }, "node_modules/@vue/runtime-dom": { - "version": "3.2.28", - "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.2.28.tgz", - "integrity": "sha512-Jg7cxZanEXXGu1QnZILFLnDrM+MIFN8VAullmMZiJEZziHvhygRMpi0ahNy/8OqGwtTze1JNhLdHRBO+q2hbmg==", + "version": "3.2.39", + "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.2.39.tgz", + "integrity": "sha512-4G9AEJP+sLhsqf5wXcyKVWQKUhI+iWfy0hWQgea+CpaTD7BR0KdQzvoQdZhwCY6B3oleSyNLkLAQwm0ya/wNoA==", "dev": true, "dependencies": { - "@vue/runtime-core": "3.2.28", - "@vue/shared": "3.2.28", + "@vue/runtime-core": "3.2.39", + "@vue/shared": "3.2.39", "csstype": "^2.6.8" } }, - "node_modules/@vue/server-renderer": { - "version": "3.2.28", - "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.2.28.tgz", - "integrity": "sha512-S+MhurgkPabRvhdDl8R6efKBmniJqBbbWIYTXADaJIKFLFLQCW4gcYUTbxuebzk6j3z485vpekhrHHymTF52Pg==", - "dev": true, - "dependencies": { - "@vue/compiler-ssr": "3.2.28", - "@vue/shared": "3.2.28" - }, - "peerDependencies": { - "vue": "3.2.28" - } - }, "node_modules/@vue/shared": { - "version": "3.2.28", - "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.2.28.tgz", - "integrity": "sha512-eMQ8s9j8FpbGHlgUAaj/coaG3Q8YtMsoWL/RIHTsE3Ex7PUTyr7V91vB5HqWB5Sn8m4RXTHGO22/skoTUYvp0A==", + "version": "3.2.39", + "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.2.39.tgz", + "integrity": "sha512-D3dl2ZB9qE6mTuWPk9RlhDeP1dgNRUKC3NJxji74A4yL8M2MwlhLKUC/49WHjrNzSPug58fWx/yFbaTzGAQSBw==", "dev": true }, "node_modules/abab": { @@ -2873,9 +2881,9 @@ "dev": true }, "node_modules/csstype": { - "version": "2.6.19", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.19.tgz", - "integrity": "sha512-ZVxXaNy28/k3kJg0Fou5MiYpp88j7H9hLZp8PDC3jV0WFjfH5E9xHb56L0W59cPbKbcHXeP4qyT8PrHp8t6LcQ==", + "version": "2.6.21", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.21.tgz", + "integrity": "sha512-Z1PhmomIfypOpoMjRQB70jfvy/wxT50qW08YXO5lMIJkrdq4yOTR+AW7FqutScmB9NkLwxo+jU+kZLbofZZq/w==", "dev": true }, "node_modules/data-urls": { @@ -5913,12 +5921,12 @@ } }, "node_modules/magic-string": { - "version": "0.25.7", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz", - "integrity": "sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==", + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz", + "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==", "dev": true, "dependencies": { - "sourcemap-codec": "^1.4.4" + "sourcemap-codec": "^1.4.8" } }, "node_modules/make-dir": { @@ -6238,9 +6246,9 @@ "dev": true }, "node_modules/nanoid": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.2.0.tgz", - "integrity": "sha512-fmsZYa9lpn69Ad5eDn7FMcnnSR+8R34W9qJEijxYhTbfOWzr22n1QxCMzXLK+ODyW2973V3Fux959iQoUxzUIA==", + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", + "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==", "dev": true, "bin": { "nanoid": "bin/nanoid.cjs" @@ -9825,21 +9833,27 @@ } }, "node_modules/postcss": { - "version": "8.4.5", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.5.tgz", - "integrity": "sha512-jBDboWM8qpaqwkMwItqTQTiFikhs/67OYVvblFFTM7MrZjt6yMKd6r2kgXizEbTTljacm4NldIlZnhbjr84QYg==", + "version": "8.4.16", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.16.tgz", + "integrity": "sha512-ipHE1XBvKzm5xI7hiHCZJCSugxvsdq2mPnsq5+UF+VHCjiBvtDrlxJfMBToWaP9D5XlgNmcFGqoHmUn0EYEaRQ==", "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + } + ], "dependencies": { - "nanoid": "^3.1.30", + "nanoid": "^3.3.4", "picocolors": "^1.0.0", - "source-map-js": "^1.0.1" + "source-map-js": "^1.0.2" }, "engines": { "node": "^10 || ^12 || >=14" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" } }, "node_modules/prelude-ls": { @@ -12227,16 +12241,34 @@ } }, "node_modules/vue": { - "version": "3.2.28", - "resolved": "https://registry.npmjs.org/vue/-/vue-3.2.28.tgz", - "integrity": "sha512-U+jBwVh3RQ9AgceLFdT7i2FFujoC+kYuGrKo5y8aLluWKZWPS40WgA2pyYHaiSX9ydCbEGr3rc/JzdqskzD95g==", - "dev": true, - "dependencies": { - "@vue/compiler-dom": "3.2.28", - "@vue/compiler-sfc": "3.2.28", - "@vue/runtime-dom": "3.2.28", - "@vue/server-renderer": "3.2.28", - "@vue/shared": "3.2.28" + "version": "2.6.14", + "resolved": "https://registry.npmjs.org/vue/-/vue-2.6.14.tgz", + "integrity": "sha512-x2284lgYvjOMj3Za7kqzRcUSxBboHqtgRE2zlos1qWaOye5yUmHn42LB1250NJBLRwEcdrB0JRwyPTEPhfQjiQ==", + "peer": true + }, + "node_modules/vue-demi": { + "version": "0.13.11", + "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.13.11.tgz", + "integrity": "sha512-IR8HoEEGM65YY3ZJYAjMlKygDQn25D5ajNFNoKh9RSDMQtlzCxtfQjdQgv9jjK+m3377SsJXY8ysq8kLCZL25A==", + "hasInstallScript": true, + "bin": { + "vue-demi-fix": "bin/vue-demi-fix.js", + "vue-demi-switch": "bin/vue-demi-switch.js" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "@vue/composition-api": "^1.0.0-rc.1", + "vue": "^3.0.0-0 || ^2.6.0" + }, + "peerDependenciesMeta": { + "@vue/composition-api": { + "optional": true + } } }, "node_modules/vue-eslint-parser": { @@ -12295,6 +12327,82 @@ "semver": "bin/semver.js" } }, + "node_modules/vue2": { + "name": "vue", + "version": "2.6.14", + "resolved": "https://registry.npmjs.org/vue/-/vue-2.6.14.tgz", + "integrity": "sha512-x2284lgYvjOMj3Za7kqzRcUSxBboHqtgRE2zlos1qWaOye5yUmHn42LB1250NJBLRwEcdrB0JRwyPTEPhfQjiQ==", + "dev": true + }, + "node_modules/vue27": { + "name": "vue", + "version": "2.7.10", + "resolved": "https://registry.npmjs.org/vue/-/vue-2.7.10.tgz", + "integrity": "sha512-HmFC70qarSHPXcKtW8U8fgIkF6JGvjEmDiVInTkKZP0gIlEPhlVlcJJLkdGIDiNkIeA2zJPQTWJUI4iWe+AVfg==", + "dev": true, + "dependencies": { + "@vue/compiler-sfc": "2.7.10", + "csstype": "^3.1.0" + } + }, + "node_modules/vue27/node_modules/@vue/compiler-sfc": { + "version": "2.7.10", + "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-2.7.10.tgz", + "integrity": "sha512-55Shns6WPxlYsz4WX7q9ZJBL77sKE1ZAYNYStLs6GbhIOMrNtjMvzcob6gu3cGlfpCR4bT7NXgyJ3tly2+Hx8Q==", + "dev": true, + "dependencies": { + "@babel/parser": "^7.18.4", + "postcss": "^8.4.14", + "source-map": "^0.6.1" + } + }, + "node_modules/vue27/node_modules/csstype": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.1.tgz", + "integrity": "sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw==", + "dev": true + }, + "node_modules/vue3": { + "name": "vue", + "version": "3.2.39", + "resolved": "https://registry.npmjs.org/vue/-/vue-3.2.39.tgz", + "integrity": "sha512-tRkguhRTw9NmIPXhzk21YFBqXHT2t+6C6wPOgQ50fcFVWnPdetmRqbmySRHznrYjX2E47u0cGlKGcxKZJ38R/g==", + "dev": true, + "dependencies": { + "@vue/compiler-dom": "3.2.39", + "@vue/compiler-sfc": "3.2.39", + "@vue/runtime-dom": "3.2.39", + "@vue/server-renderer": "3.2.39", + "@vue/shared": "3.2.39" + } + }, + "node_modules/vue3/node_modules/@vue/server-renderer": { + "version": "3.2.39", + "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.2.39.tgz", + "integrity": "sha512-1yn9u2YBQWIgytFMjz4f/t0j43awKytTGVptfd3FtBk76t1pd8mxbek0G/DrnjJhd2V7mSTb5qgnxMYt8Z5iSQ==", + "dev": true, + "dependencies": { + "@vue/compiler-ssr": "3.2.39", + "@vue/shared": "3.2.39" + }, + "peerDependencies": { + "vue": "3.2.39" + } + }, + "node_modules/vue3/node_modules/vue": { + "version": "3.2.39", + "resolved": "https://registry.npmjs.org/vue/-/vue-3.2.39.tgz", + "integrity": "sha512-tRkguhRTw9NmIPXhzk21YFBqXHT2t+6C6wPOgQ50fcFVWnPdetmRqbmySRHznrYjX2E47u0cGlKGcxKZJ38R/g==", + "dev": true, + "peer": true, + "dependencies": { + "@vue/compiler-dom": "3.2.39", + "@vue/compiler-sfc": "3.2.39", + "@vue/runtime-dom": "3.2.39", + "@vue/server-renderer": "3.2.39", + "@vue/shared": "3.2.39" + } + }, "node_modules/w3c-hr-time": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", @@ -12820,9 +12928,9 @@ } }, "@babel/parser": { - "version": "7.16.10", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.16.10.tgz", - "integrity": "sha512-Sm/S9Or6nN8uiFsQU1yodyDW3MWXQhFeqzMPM+t8MJjM+pLsnFVxFZzkpXKvUXh+Gz9cbMoYYs484+Jw/NTEFQ==", + "version": "7.19.1", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.19.1.tgz", + "integrity": "sha512-h7RCSorm1DdTVGJf3P2Mhj3kdnkmF/EiysUkzS2TdgAYqyjFdMQJbVuXOBej2SBJaXan/lIVtT6KkGbyyq753A==", "dev": true }, "@babel/plugin-syntax-async-generators": { @@ -13831,39 +13939,39 @@ } }, "@vue/compiler-core": { - "version": "3.2.28", - "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.2.28.tgz", - "integrity": "sha512-mQpfEjmHVxmWKaup0HL6tLMv2HqjjJu7XT4/q0IoUXYXC4xKG8lIVn5YChJqxBTLPuQjzas7u7i9L4PAWJZRtA==", + "version": "3.2.39", + "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.2.39.tgz", + "integrity": "sha512-mf/36OWXqWn0wsC40nwRRGheR/qoID+lZXbIuLnr4/AngM0ov8Xvv8GHunC0rKRIkh60bTqydlqTeBo49rlbqw==", "dev": true, "requires": { "@babel/parser": "^7.16.4", - "@vue/shared": "3.2.28", + "@vue/shared": "3.2.39", "estree-walker": "^2.0.2", "source-map": "^0.6.1" } }, "@vue/compiler-dom": { - "version": "3.2.28", - "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.2.28.tgz", - "integrity": "sha512-KA4yXceLteKC7VykvPnViUixemQw3A+oii+deSbZJOQKQKVh1HLosI10qxa8ImPCyun41+wG3uGR+tW7eu1W6Q==", + "version": "3.2.39", + "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.2.39.tgz", + "integrity": "sha512-HMFI25Be1C8vLEEv1hgEO1dWwG9QQ8LTTPmCkblVJY/O3OvWx6r1+zsox5mKPMGvqYEZa6l8j+xgOfUspgo7hw==", "dev": true, "requires": { - "@vue/compiler-core": "3.2.28", - "@vue/shared": "3.2.28" + "@vue/compiler-core": "3.2.39", + "@vue/shared": "3.2.39" } }, "@vue/compiler-sfc": { - "version": "3.2.28", - "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.2.28.tgz", - "integrity": "sha512-zB0WznfEBb4CbGBHzhboHDKVO5nxbkbxxFo9iVlxObP7a9/qvA5kkZEuT7nXP52f3b3qEfmVTjIT23Lo1ndZdQ==", + "version": "3.2.39", + "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.2.39.tgz", + "integrity": "sha512-fqAQgFs1/BxTUZkd0Vakn3teKUt//J3c420BgnYgEOoVdTwYpBTSXCMJ88GOBCylmUBbtquGPli9tVs7LzsWIA==", "dev": true, "requires": { "@babel/parser": "^7.16.4", - "@vue/compiler-core": "3.2.28", - "@vue/compiler-dom": "3.2.28", - "@vue/compiler-ssr": "3.2.28", - "@vue/reactivity-transform": "3.2.28", - "@vue/shared": "3.2.28", + "@vue/compiler-core": "3.2.39", + "@vue/compiler-dom": "3.2.39", + "@vue/compiler-ssr": "3.2.39", + "@vue/reactivity-transform": "3.2.39", + "@vue/shared": "3.2.39", "estree-walker": "^2.0.2", "magic-string": "^0.25.7", "postcss": "^8.1.10", @@ -13871,15 +13979,22 @@ } }, "@vue/compiler-ssr": { - "version": "3.2.28", - "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.2.28.tgz", - "integrity": "sha512-z8rck1PDTu20iLyip9lAvIhaO40DUJrw3Zv0mS4Apfh3PlfWpF5dhsO5g0dgt213wgYsQIYVIlU9cfrYapqRgg==", + "version": "3.2.39", + "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.2.39.tgz", + "integrity": "sha512-EoGCJ6lincKOZGW+0Ky4WOKsSmqL7hp1ZYgen8M7u/mlvvEQUaO9tKKOy7K43M9U2aA3tPv0TuYYQFrEbK2eFQ==", "dev": true, "requires": { - "@vue/compiler-dom": "3.2.28", - "@vue/shared": "3.2.28" + "@vue/compiler-dom": "3.2.39", + "@vue/shared": "3.2.39" } }, + "@vue/composition-api": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/@vue/composition-api/-/composition-api-1.7.0.tgz", + "integrity": "sha512-hxOgLYR+wjuPX9bkP2pAPlqUs98XxBoa9DSLyp1z6+YR92wC42PZcZKs4d+VRtcv4udOv041Kss+F6ap5nj8YA==", + "devOptional": true, + "requires": {} + }, "@vue/eslint-config-prettier": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/@vue/eslint-config-prettier/-/eslint-config-prettier-6.0.0.tgz", @@ -13910,62 +14025,52 @@ } }, "@vue/reactivity": { - "version": "3.2.28", - "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.2.28.tgz", - "integrity": "sha512-WamM5LGv7JIarW+EYAzYFqYonZXjTnOjNW0sBO93jRE9I1ReAwfH8NvQXkPA3JZ3fuF6SGDdG8Y9/+dKjd/1Gw==", + "version": "3.2.39", + "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.2.39.tgz", + "integrity": "sha512-vlaYX2a3qMhIZfrw3Mtfd+BuU+TZmvDrPMa+6lpfzS9k/LnGxkSuf0fhkP0rMGfiOHPtyKoU9OJJJFGm92beVQ==", "dev": true, "requires": { - "@vue/shared": "3.2.28" + "@vue/shared": "3.2.39" } }, "@vue/reactivity-transform": { - "version": "3.2.28", - "resolved": "https://registry.npmjs.org/@vue/reactivity-transform/-/reactivity-transform-3.2.28.tgz", - "integrity": "sha512-zE8idNkOPnBDd2tKSIk84hOQZ+jXKvSy5FoIIVlcNEJHnCFnQ3maqeSJ9KoB2Rf6EXUhFTiTDNRlYlXmT2uHbQ==", + "version": "3.2.39", + "resolved": "https://registry.npmjs.org/@vue/reactivity-transform/-/reactivity-transform-3.2.39.tgz", + "integrity": "sha512-HGuWu864zStiWs9wBC6JYOP1E00UjMdDWIG5W+FpUx28hV3uz9ODOKVNm/vdOy/Pvzg8+OcANxAVC85WFBbl3A==", "dev": true, "requires": { "@babel/parser": "^7.16.4", - "@vue/compiler-core": "3.2.28", - "@vue/shared": "3.2.28", + "@vue/compiler-core": "3.2.39", + "@vue/shared": "3.2.39", "estree-walker": "^2.0.2", "magic-string": "^0.25.7" } }, "@vue/runtime-core": { - "version": "3.2.28", - "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.2.28.tgz", - "integrity": "sha512-sVbBMFUt42JatTlXbdH6tVcLPw1eEOrrVQWI+j6/nJVzR852RURaT6DhdR0azdYscxq4xmmBctE0VQmlibBOFw==", + "version": "3.2.39", + "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.2.39.tgz", + "integrity": "sha512-xKH5XP57JW5JW+8ZG1khBbuLakINTgPuINKL01hStWLTTGFOrM49UfCFXBcFvWmSbci3gmJyLl2EAzCaZWsx8g==", "dev": true, "requires": { - "@vue/reactivity": "3.2.28", - "@vue/shared": "3.2.28" + "@vue/reactivity": "3.2.39", + "@vue/shared": "3.2.39" } }, "@vue/runtime-dom": { - "version": "3.2.28", - "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.2.28.tgz", - "integrity": "sha512-Jg7cxZanEXXGu1QnZILFLnDrM+MIFN8VAullmMZiJEZziHvhygRMpi0ahNy/8OqGwtTze1JNhLdHRBO+q2hbmg==", + "version": "3.2.39", + "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.2.39.tgz", + "integrity": "sha512-4G9AEJP+sLhsqf5wXcyKVWQKUhI+iWfy0hWQgea+CpaTD7BR0KdQzvoQdZhwCY6B3oleSyNLkLAQwm0ya/wNoA==", "dev": true, "requires": { - "@vue/runtime-core": "3.2.28", - "@vue/shared": "3.2.28", + "@vue/runtime-core": "3.2.39", + "@vue/shared": "3.2.39", "csstype": "^2.6.8" } }, - "@vue/server-renderer": { - "version": "3.2.28", - "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.2.28.tgz", - "integrity": "sha512-S+MhurgkPabRvhdDl8R6efKBmniJqBbbWIYTXADaJIKFLFLQCW4gcYUTbxuebzk6j3z485vpekhrHHymTF52Pg==", - "dev": true, - "requires": { - "@vue/compiler-ssr": "3.2.28", - "@vue/shared": "3.2.28" - } - }, "@vue/shared": { - "version": "3.2.28", - "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.2.28.tgz", - "integrity": "sha512-eMQ8s9j8FpbGHlgUAaj/coaG3Q8YtMsoWL/RIHTsE3Ex7PUTyr7V91vB5HqWB5Sn8m4RXTHGO22/skoTUYvp0A==", + "version": "3.2.39", + "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.2.39.tgz", + "integrity": "sha512-D3dl2ZB9qE6mTuWPk9RlhDeP1dgNRUKC3NJxji74A4yL8M2MwlhLKUC/49WHjrNzSPug58fWx/yFbaTzGAQSBw==", "dev": true }, "abab": { @@ -14789,9 +14894,9 @@ } }, "csstype": { - "version": "2.6.19", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.19.tgz", - "integrity": "sha512-ZVxXaNy28/k3kJg0Fou5MiYpp88j7H9hLZp8PDC3jV0WFjfH5E9xHb56L0W59cPbKbcHXeP4qyT8PrHp8t6LcQ==", + "version": "2.6.21", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.21.tgz", + "integrity": "sha512-Z1PhmomIfypOpoMjRQB70jfvy/wxT50qW08YXO5lMIJkrdq4yOTR+AW7FqutScmB9NkLwxo+jU+kZLbofZZq/w==", "dev": true }, "data-urls": { @@ -17133,12 +17238,12 @@ } }, "magic-string": { - "version": "0.25.7", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz", - "integrity": "sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==", + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz", + "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==", "dev": true, "requires": { - "sourcemap-codec": "^1.4.4" + "sourcemap-codec": "^1.4.8" } }, "make-dir": { @@ -17372,9 +17477,9 @@ "dev": true }, "nanoid": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.2.0.tgz", - "integrity": "sha512-fmsZYa9lpn69Ad5eDn7FMcnnSR+8R34W9qJEijxYhTbfOWzr22n1QxCMzXLK+ODyW2973V3Fux959iQoUxzUIA==", + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", + "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==", "dev": true }, "nanomatch": { @@ -19979,14 +20084,14 @@ "dev": true }, "postcss": { - "version": "8.4.5", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.5.tgz", - "integrity": "sha512-jBDboWM8qpaqwkMwItqTQTiFikhs/67OYVvblFFTM7MrZjt6yMKd6r2kgXizEbTTljacm4NldIlZnhbjr84QYg==", + "version": "8.4.16", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.16.tgz", + "integrity": "sha512-ipHE1XBvKzm5xI7hiHCZJCSugxvsdq2mPnsq5+UF+VHCjiBvtDrlxJfMBToWaP9D5XlgNmcFGqoHmUn0EYEaRQ==", "dev": true, "requires": { - "nanoid": "^3.1.30", + "nanoid": "^3.3.4", "picocolors": "^1.0.0", - "source-map-js": "^1.0.1" + "source-map-js": "^1.0.2" } }, "prelude-ls": { @@ -21855,17 +21960,16 @@ } }, "vue": { - "version": "3.2.28", - "resolved": "https://registry.npmjs.org/vue/-/vue-3.2.28.tgz", - "integrity": "sha512-U+jBwVh3RQ9AgceLFdT7i2FFujoC+kYuGrKo5y8aLluWKZWPS40WgA2pyYHaiSX9ydCbEGr3rc/JzdqskzD95g==", - "dev": true, - "requires": { - "@vue/compiler-dom": "3.2.28", - "@vue/compiler-sfc": "3.2.28", - "@vue/runtime-dom": "3.2.28", - "@vue/server-renderer": "3.2.28", - "@vue/shared": "3.2.28" - } + "version": "2.6.14", + "resolved": "https://registry.npmjs.org/vue/-/vue-2.6.14.tgz", + "integrity": "sha512-x2284lgYvjOMj3Za7kqzRcUSxBboHqtgRE2zlos1qWaOye5yUmHn42LB1250NJBLRwEcdrB0JRwyPTEPhfQjiQ==", + "peer": true + }, + "vue-demi": { + "version": "0.13.11", + "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.13.11.tgz", + "integrity": "sha512-IR8HoEEGM65YY3ZJYAjMlKygDQn25D5ajNFNoKh9RSDMQtlzCxtfQjdQgv9jjK+m3377SsJXY8ysq8kLCZL25A==", + "requires": {} }, "vue-eslint-parser": { "version": "7.11.0", @@ -21907,6 +22011,80 @@ } } }, + "vue2": { + "version": "npm:vue@2.6.14", + "resolved": "https://registry.npmjs.org/vue/-/vue-2.6.14.tgz", + "integrity": "sha512-x2284lgYvjOMj3Za7kqzRcUSxBboHqtgRE2zlos1qWaOye5yUmHn42LB1250NJBLRwEcdrB0JRwyPTEPhfQjiQ==", + "dev": true + }, + "vue27": { + "version": "npm:vue@2.7.10", + "resolved": "https://registry.npmjs.org/vue/-/vue-2.7.10.tgz", + "integrity": "sha512-HmFC70qarSHPXcKtW8U8fgIkF6JGvjEmDiVInTkKZP0gIlEPhlVlcJJLkdGIDiNkIeA2zJPQTWJUI4iWe+AVfg==", + "dev": true, + "requires": { + "@vue/compiler-sfc": "2.7.10", + "csstype": "^3.1.0" + }, + "dependencies": { + "@vue/compiler-sfc": { + "version": "2.7.10", + "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-2.7.10.tgz", + "integrity": "sha512-55Shns6WPxlYsz4WX7q9ZJBL77sKE1ZAYNYStLs6GbhIOMrNtjMvzcob6gu3cGlfpCR4bT7NXgyJ3tly2+Hx8Q==", + "dev": true, + "requires": { + "@babel/parser": "^7.18.4", + "postcss": "^8.4.14", + "source-map": "^0.6.1" + } + }, + "csstype": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.1.tgz", + "integrity": "sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw==", + "dev": true + } + } + }, + "vue3": { + "version": "npm:vue@3.2.39", + "resolved": "https://registry.npmjs.org/vue/-/vue-3.2.39.tgz", + "integrity": "sha512-tRkguhRTw9NmIPXhzk21YFBqXHT2t+6C6wPOgQ50fcFVWnPdetmRqbmySRHznrYjX2E47u0cGlKGcxKZJ38R/g==", + "dev": true, + "requires": { + "@vue/compiler-dom": "3.2.39", + "@vue/compiler-sfc": "3.2.39", + "@vue/runtime-dom": "3.2.39", + "@vue/server-renderer": "3.2.39", + "@vue/shared": "3.2.39" + }, + "dependencies": { + "@vue/server-renderer": { + "version": "3.2.39", + "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.2.39.tgz", + "integrity": "sha512-1yn9u2YBQWIgytFMjz4f/t0j43awKytTGVptfd3FtBk76t1pd8mxbek0G/DrnjJhd2V7mSTb5qgnxMYt8Z5iSQ==", + "dev": true, + "requires": { + "@vue/compiler-ssr": "3.2.39", + "@vue/shared": "3.2.39" + } + }, + "vue": { + "version": "3.2.39", + "resolved": "https://registry.npmjs.org/vue/-/vue-3.2.39.tgz", + "integrity": "sha512-tRkguhRTw9NmIPXhzk21YFBqXHT2t+6C6wPOgQ50fcFVWnPdetmRqbmySRHznrYjX2E47u0cGlKGcxKZJ38R/g==", + "dev": true, + "peer": true, + "requires": { + "@vue/compiler-dom": "3.2.39", + "@vue/compiler-sfc": "3.2.39", + "@vue/runtime-dom": "3.2.39", + "@vue/server-renderer": "3.2.39", + "@vue/shared": "3.2.39" + } + } + } + }, "w3c-hr-time": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", diff --git a/package.json b/package.json index 3c37f83..5d67f67 100644 --- a/package.json +++ b/package.json @@ -13,12 +13,12 @@ "url": "https://github.com/baloise/vue-keycloak.git" }, "scripts": { - "test": "jest", + "test": "vue-demi-switch 3 vue3 && jest && vue-demi-switch 2.7 vue27 && jest && vue-demi-switch 2 vue2 && jest && vue-demi-switch 3 vue3", "test:watch": "jest --watchAll", "build": "npm run build:clean && npm run build:compile && npm run build:bundle", "build:clean": "rimraf dist && rimraf dist-transpiled", - "build:compile": "tsc -p .", - "build:bundle": "rollup --config rollup.config.js", + "build:compile": "vue-demi-switch 3 vue3 && tsc -p .", + "build:bundle": "vue-demi-switch 3 vue3 && rollup --config rollup.config.js", "lint": "eslint src --ext .ts,vue", "format": "npm run prettier:write", "prettier:write": "prettier --write \"./src\"", @@ -37,10 +37,19 @@ "composition-api" ], "license": "Apache-2.0", + "dependencies": { + "vue-demi": "^0.13" + }, "peerDependencies": { + "@vue/composition-api": "^1.3.0", "jwt-decode": "^3.1.2", "keycloak-js": "^12.0.4", - "vue": "^3.0.8" + "vue": "^2 || ^3" + }, + "peerDependenciesMeta": { + "@vue/composition-api": { + "optional": true + } }, "devDependencies": { "@semantic-release/changelog": "^5.0.1", @@ -50,6 +59,7 @@ "@types/jest": "^26.0.22", "@typescript-eslint/eslint-plugin": "^4.19.0", "@typescript-eslint/parser": "^4.19.0", + "@vue/composition-api": "^1.3.0", "@vue/eslint-config-prettier": "^6.0.0", "@vue/eslint-config-typescript": "^7.0.0", "eslint": "^7.23.0", @@ -64,7 +74,8 @@ "semantic-release": "^17.4.2", "ts-jest": "^26.5.4", "typescript": "^4.2.3", - "vue": "^3.0.8" - }, - "dependencies": {} + "vue27": "npm:vue@^2.7", + "vue2": "npm:vue@<2.7", + "vue3": "npm:vue@^3" + } } diff --git a/rollup.config.js b/rollup.config.js index 06b4d2b..8f0e235 100644 --- a/rollup.config.js +++ b/rollup.config.js @@ -12,8 +12,8 @@ export default { dir: 'dist/', format: 'commonjs', preferConst: true, - sourcemap: true, - }, + sourcemap: true + } ], - external: ['keycloak-js', 'jwt-decode', 'vue'], + external: ['keycloak-js', 'jwt-decode', 'vue-demi', 'vue'] } diff --git a/src/composable.ts b/src/composable.ts index f70c597..648d367 100644 --- a/src/composable.ts +++ b/src/composable.ts @@ -1,5 +1,5 @@ import { KeycloakInstance } from 'keycloak-js' -import { toRefs, Ref } from 'vue' +import { toRefs, Ref } from 'vue-demi' import { getKeycloak } from './keycloak' import { KeycloakState, state } from './state' import { isNil } from './utils' diff --git a/src/plugin.test.ts b/src/plugin.test.ts index cbc5f31..9400c90 100644 --- a/src/plugin.test.ts +++ b/src/plugin.test.ts @@ -1,8 +1,12 @@ +import { isVue2, isVue3, Vue2 } from 'vue-demi' import { KeycloakConfig } from 'keycloak-js' import { vueKeycloak } from './plugin' import { createKeycloak, initKeycloak } from './keycloak' import { defaultInitConfig } from './const' +const testVue3 = isVue3 ? test : test.skip +const testVue2 = isVue2 ? test : test.skip + jest.mock('./keycloak', () => { return { initKeycloak: jest.fn(), @@ -64,7 +68,7 @@ describe('vueKeycloak', () => { } }) - test('should set globalProperties', async () => { + testVue3('should set $keycloak in globalProperties', async () => { await vueKeycloak.install(appMock, { config: keycloakConfig }) expect(appMock.config.globalProperties.$keycloak).toBeDefined() @@ -72,6 +76,14 @@ describe('vueKeycloak', () => { expect(initKeycloak as jest.Mock).toBeCalled() }) + testVue2('should set $keycloak in prototype', async () => { + await vueKeycloak.install(appMock, { config: keycloakConfig }) + + expect(Vue2.prototype.$keycloak).toBeDefined() + expect(createKeycloak as jest.Mock).toBeCalled() + expect(initKeycloak as jest.Mock).toBeCalled() + }) + test('should call init with the default config', async () => { await vueKeycloak.install(appMock, { config: keycloakConfig }) diff --git a/src/plugin.ts b/src/plugin.ts index 74e311d..47148c9 100644 --- a/src/plugin.ts +++ b/src/plugin.ts @@ -1,4 +1,4 @@ -import { Plugin } from 'vue' +import { Plugin, isVue3, Vue2 } from 'vue-demi' import Keycloak from 'keycloak-js' import { defaultInitConfig } from './const' import { createKeycloak, initKeycloak } from './keycloak' @@ -36,7 +36,11 @@ export const vueKeycloak: Plugin = { : defaultInitConfig const _keycloak = createKeycloak(keycloakConfig) - app.config.globalProperties.$keycloak = _keycloak + if (isVue3) { + app.config.globalProperties.$keycloak = _keycloak + } else { + Vue2.prototype.$keycloak = _keycloak + } await initKeycloak(keycloakInitOptions) }, diff --git a/src/state.test.ts b/src/state.test.ts index bb93254..0822d0c 100644 --- a/src/state.test.ts +++ b/src/state.test.ts @@ -11,7 +11,7 @@ describe('state', () => { expect(state.token).toBe('') expect(state.username).toBe('') expect(state.roles).toStrictEqual([]) - expect(state.resourceRoles).toStrictEqual({}); + expect(state.resourceRoles).toStrictEqual({}) }) test('should update the state', () => { diff --git a/src/state.ts b/src/state.ts index 11246cb..e372106 100644 --- a/src/state.ts +++ b/src/state.ts @@ -1,4 +1,4 @@ -import { reactive } from 'vue' +import { reactive } from 'vue-demi' import jwtDecode from 'jwt-decode' export interface KeycloakState { @@ -37,9 +37,9 @@ export const setToken = (token: string): void => { state.decodedToken = content state.roles = content.realm_access.roles state.username = content.preferred_username - state.resourceRoles = content.resource_access ? Object.fromEntries( - Object.entries(content.resource_access).map(([key, value]) => [key, value.roles]), - ) : {}; + state.resourceRoles = content.resource_access + ? Object.fromEntries(Object.entries(content.resource_access).map(([key, value]) => [key, value.roles])) + : {} } export const hasFailed = (value: boolean): void => {