diff --git a/package-lock.json b/package-lock.json index aeaa9d2..3c04128 100644 --- a/package-lock.json +++ b/package-lock.json @@ -902,8 +902,7 @@ "@types/node": { "version": "12.0.0", "resolved": "https://registry.npmjs.org/@types/node/-/node-12.0.0.tgz", - "integrity": "sha512-Jrb/x3HT4PTJp6a4avhmJCDEVrPdqLfl3e8GGMbpkGGdwAV5UGlIs4vVEfsHHfylZVOKZWpOqmqFH8CbfOZ6kg==", - "dev": true + "integrity": "sha512-Jrb/x3HT4PTJp6a4avhmJCDEVrPdqLfl3e8GGMbpkGGdwAV5UGlIs4vVEfsHHfylZVOKZWpOqmqFH8CbfOZ6kg==" }, "@types/q": { "version": "1.5.2", @@ -911,6 +910,11 @@ "integrity": "sha512-ce5d3q03Ex0sy4R14722Rmt6MT07Ua+k4FwDfdcToYJcMKNtRVQvJ6JCAPdAmAnbRb6CsX6aYb9m96NGod9uTw==", "dev": true }, + "@types/zen-observable": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@types/zen-observable/-/zen-observable-0.8.0.tgz", + "integrity": "sha512-te5lMAWii1uEJ4FwLjzdlbw3+n0FZNOvFXHxQDKeT0dilh7HOzdMzV2TrJVUzq8ep7J4Na8OUYPRLSQkJHAlrg==" + }, "@vue/component-compiler-utils": { "version": "2.6.0", "resolved": "https://registry.npmjs.org/@vue/component-compiler-utils/-/component-compiler-utils-2.6.0.tgz", @@ -1128,6 +1132,23 @@ "@xtuc/long": "4.2.2" } }, + "@wry/context": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/@wry/context/-/context-0.4.4.tgz", + "integrity": "sha512-LrKVLove/zw6h2Md/KZyWxIkFM6AoyKp71OqpH9Hiip1csjPVoD3tPxlbQUNxEnHENks3UGgNpSBCAfq9KWuag==", + "requires": { + "@types/node": "12.0.0", + "tslib": "1.9.3" + } + }, + "@wry/equality": { + "version": "0.1.9", + "resolved": "https://registry.npmjs.org/@wry/equality/-/equality-0.1.9.tgz", + "integrity": "sha512-mB6ceGjpMGz1ZTza8HYnrPGos2mC6So4NhS1PtZ8s4Qt0K7fBiIGhpSxUbQmhwcSWE3no+bYxmI2OL6KuXYmoQ==", + "requires": { + "tslib": "1.9.3" + } + }, "@xtuc/ieee754": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", @@ -1278,6 +1299,93 @@ "normalize-path": "2.1.1" } }, + "apollo-cache": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/apollo-cache/-/apollo-cache-1.3.2.tgz", + "integrity": "sha512-+KA685AV5ETEJfjZuviRTEImGA11uNBp/MJGnaCvkgr+BYRrGLruVKBv6WvyFod27WEB2sp7SsG8cNBKANhGLg==", + "requires": { + "apollo-utilities": "1.3.2", + "tslib": "1.9.3" + } + }, + "apollo-cache-inmemory": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/apollo-cache-inmemory/-/apollo-cache-inmemory-1.6.2.tgz", + "integrity": "sha512-AyCl3PGFv5Qv1w4N9vlg63GBPHXgMCekZy5mhlS042ji0GW84uTySX+r3F61ZX3+KM1vA4m9hQyctrEGiv5XjQ==", + "requires": { + "apollo-cache": "1.3.2", + "apollo-utilities": "1.3.2", + "optimism": "0.9.6", + "ts-invariant": "0.4.4", + "tslib": "1.9.3" + } + }, + "apollo-client": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/apollo-client/-/apollo-client-2.6.3.tgz", + "integrity": "sha512-DS8pmF5CGiiJ658dG+mDn8pmCMMQIljKJSTeMNHnFuDLV0uAPZoeaAwVFiAmB408Ujqt92oIZ/8yJJAwSIhd4A==", + "requires": { + "@types/zen-observable": "0.8.0", + "apollo-cache": "1.3.2", + "apollo-link": "1.2.12", + "apollo-utilities": "1.3.2", + "symbol-observable": "1.2.0", + "ts-invariant": "0.4.4", + "tslib": "1.9.3", + "zen-observable": "0.8.14" + } + }, + "apollo-link": { + "version": "1.2.12", + "resolved": "https://registry.npmjs.org/apollo-link/-/apollo-link-1.2.12.tgz", + "integrity": "sha512-fsgIAXPKThyMVEMWQsUN22AoQI+J/pVXcjRGAShtk97h7D8O+SPskFinCGEkxPeQpE83uKaqafB2IyWdjN+J3Q==", + "requires": { + "apollo-utilities": "1.3.2", + "ts-invariant": "0.4.4", + "tslib": "1.9.3", + "zen-observable-ts": "0.8.19" + } + }, + "apollo-link-context": { + "version": "1.0.18", + "resolved": "https://registry.npmjs.org/apollo-link-context/-/apollo-link-context-1.0.18.tgz", + "integrity": "sha512-aG5cbUp1zqOHHQjAJXG7n/izeMQ6LApd/whEF5z6qZp5ATvcyfSNkCfy3KRJMMZZ3iNfVTs6jF+IUA8Zvf+zeg==", + "requires": { + "apollo-link": "1.2.12", + "tslib": "1.9.3" + } + }, + "apollo-link-http": { + "version": "1.5.15", + "resolved": "https://registry.npmjs.org/apollo-link-http/-/apollo-link-http-1.5.15.tgz", + "integrity": "sha512-epZFhCKDjD7+oNTVK3P39pqWGn4LEhShAoA1Q9e2tDrBjItNfviiE33RmcLcCURDYyW5JA6SMgdODNI4Is8tvQ==", + "requires": { + "apollo-link": "1.2.12", + "apollo-link-http-common": "0.2.14", + "tslib": "1.9.3" + } + }, + "apollo-link-http-common": { + "version": "0.2.14", + "resolved": "https://registry.npmjs.org/apollo-link-http-common/-/apollo-link-http-common-0.2.14.tgz", + "integrity": "sha512-v6mRU1oN6XuX8beVIRB6OpF4q1ULhSnmy7ScnHnuo1qV6GaFmDcbdvXqxIkAV1Q8SQCo2lsv4HeqJOWhFfApOg==", + "requires": { + "apollo-link": "1.2.12", + "ts-invariant": "0.4.4", + "tslib": "1.9.3" + } + }, + "apollo-utilities": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/apollo-utilities/-/apollo-utilities-1.3.2.tgz", + "integrity": "sha512-JWNHj8XChz7S4OZghV6yc9FNnzEXj285QYp/nLNh943iObycI5GTDO3NGR9Dth12LRrSFMeDOConPfPln+WGfg==", + "requires": { + "@wry/equality": "0.1.9", + "fast-json-stable-stringify": "2.0.0", + "ts-invariant": "0.4.4", + "tslib": "1.9.3" + } + }, "aproba": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", @@ -4909,6 +5017,19 @@ "integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==", "dev": true }, + "graphql": { + "version": "14.4.2", + "resolved": "https://registry.npmjs.org/graphql/-/graphql-14.4.2.tgz", + "integrity": "sha512-6uQadiRgnpnSS56hdZUSvFrVcQ6OF9y6wkxJfKquFtHlnl7+KSuWwSJsdwiK1vybm1HgcdbpGkCpvhvsVQ0UZQ==", + "requires": { + "iterall": "1.2.2" + } + }, + "graphql-tag": { + "version": "2.10.1", + "resolved": "https://registry.npmjs.org/graphql-tag/-/graphql-tag-2.10.1.tgz", + "integrity": "sha512-jApXqWBzNXQ8jYa/HLkZJaVw9jgwNqZkywa2zfFn16Iv1Zb7ELNHkJaXHR7Quvd5SIGsy6Ny7SUKATgnu05uEg==" + }, "growly": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/growly/-/growly-1.3.0.tgz", @@ -5845,6 +5966,11 @@ "is-object": "1.0.1" } }, + "iterall": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/iterall/-/iterall-1.2.2.tgz", + "integrity": "sha512-yynBb1g+RFUPY64fTrFv7nsjRrENBQJaX2UL+2Szc9REFrSNm1rpSXHGzhmAy7a9uv3vlvgBlXnf9RqmPH1/DA==" + }, "jquery": { "version": "3.4.1", "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.4.1.tgz", @@ -6147,8 +6273,7 @@ "lodash.debounce": { "version": "4.0.8", "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", - "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=", - "dev": true + "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=" }, "lodash.isplainobject": { "version": "4.0.6", @@ -6162,12 +6287,22 @@ "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=", "dev": true }, + "lodash.omit": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.omit/-/lodash.omit-4.5.0.tgz", + "integrity": "sha1-brGa5aHuHdnfC5aeZs4Lf6MLXmA=" + }, "lodash.tail": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/lodash.tail/-/lodash.tail-4.1.1.tgz", "integrity": "sha1-0jM6NtnncXyK0vfKyv7HwytERmQ=", "dev": true }, + "lodash.throttle": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.throttle/-/lodash.throttle-4.1.1.tgz", + "integrity": "sha1-wj6RtxAkKscMN/HhzaknTMOb8vQ=" + }, "lodash.uniq": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", @@ -7075,6 +7210,14 @@ "is-wsl": "1.1.0" } }, + "optimism": { + "version": "0.9.6", + "resolved": "https://registry.npmjs.org/optimism/-/optimism-0.9.6.tgz", + "integrity": "sha512-bWr/ZP32UgFCQAoSkz33XctHwpq2via2sBvGvO5JIlrU8gaiM0LvoKj3QMle9LWdSKlzKik8XGSerzsdfYLNxA==", + "requires": { + "@wry/context": "0.4.4" + } + }, "optimize-css-assets-webpack-plugin": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/optimize-css-assets-webpack-plugin/-/optimize-css-assets-webpack-plugin-5.0.1.tgz", @@ -9800,6 +9943,11 @@ "util.promisify": "1.0.0" } }, + "symbol-observable": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.2.0.tgz", + "integrity": "sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==" + }, "tapable": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", @@ -10028,11 +10176,18 @@ "glob": "7.1.3" } }, + "ts-invariant": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/ts-invariant/-/ts-invariant-0.4.4.tgz", + "integrity": "sha512-uEtWkFM/sdZvRNNDL3Ehu4WVpwaulhwQszV8mrtcdeE8nN00BV9mAmQ88RkrBhFgl9gMgvjJLAQcZbnPXI9mlA==", + "requires": { + "tslib": "1.9.3" + } + }, "tslib": { "version": "1.9.3", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.3.tgz", - "integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==", - "dev": true + "integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==" }, "tty-browserify": { "version": "0.0.0", @@ -10431,6 +10586,16 @@ "integrity": "sha512-ImThpeNU9HbdZL3utgMCq0oiMzAkt1mcgy3/E6zWC/G6AaQoeuFdsl9nDhTDU3X1R6FK7nsIUuRACVcjI+A2GQ==", "dev": true }, + "vue-apollo": { + "version": "3.0.0-alpha.3", + "resolved": "https://registry.npmjs.org/vue-apollo/-/vue-apollo-3.0.0-alpha.3.tgz", + "integrity": "sha512-jYpzPgFraJirykH44q9qCqhL0rukPXnH2lfbdw1uQR+R9/uOrwB6cy1qXyX8B0geb3XjZCY1KEPG8LJKe4JNBg==", + "requires": { + "lodash.debounce": "4.0.8", + "lodash.omit": "4.5.0", + "lodash.throttle": "4.1.1" + } + }, "vue-chartjs": { "version": "3.4.0", "resolved": "https://registry.npmjs.org/vue-chartjs/-/vue-chartjs-3.4.0.tgz", @@ -10974,6 +11139,20 @@ "camelcase": "5.3.1", "decamelize": "1.2.0" } + }, + "zen-observable": { + "version": "0.8.14", + "resolved": "https://registry.npmjs.org/zen-observable/-/zen-observable-0.8.14.tgz", + "integrity": "sha512-kQz39uonEjEESwh+qCi83kcC3rZJGh4mrZW7xjkSQYXkq//JZHTtKo+6yuVloTgMtzsIWOJrjIrKvk/dqm0L5g==" + }, + "zen-observable-ts": { + "version": "0.8.19", + "resolved": "https://registry.npmjs.org/zen-observable-ts/-/zen-observable-ts-0.8.19.tgz", + "integrity": "sha512-u1a2rpE13G+jSzrg3aiCqXU5tN2kw41b+cBZGmnc+30YimdkKiDj9bTowcB41eL77/17RF/h+393AuVgShyheQ==", + "requires": { + "tslib": "1.9.3", + "zen-observable": "0.8.14" + } } } } diff --git a/package.json b/package.json index 849d227..8930cd2 100644 --- a/package.json +++ b/package.json @@ -12,12 +12,20 @@ "dependencies": { "@fortawesome/fontawesome-free": "^5.5.0", "ajv": "^6.10.0", + "apollo-cache-inmemory": "^1.6.2", + "apollo-client": "^2.6.3", + "apollo-link": "^1.2.12", + "apollo-link-context": "^1.0.18", + "apollo-link-http": "^1.5.15", "axios": "^0.18.0", "bootstrap": "^4.1.3", "bootstrap-select": "^1.13.3", "bootstrap-v4-rtl": "^4.1.1-0", "bootstrap-vue": "^2.0.0-rc.19", "chart.js": "^2.7.3", + "graphql": "^14.4.2", + "graphql-tag": "^2.10.1", + "vue-apollo": "^3.0.0-alpha.3", "vue-chartjs": "^3.4.0", "vue-router": "^3.0.2", "vue-scroll-reveal": "^1.0.11", diff --git a/public/mix-manifest.json b/public/mix-manifest.json index 3684805..171ee50 100644 --- a/public/mix-manifest.json +++ b/public/mix-manifest.json @@ -1,6 +1,6 @@ { - "/js/vue/Authentication/app.js": "/js/vue/Authentication/app.js?id=ada36e14123738cce4a1", - "/js/vue/Home/app.js": "/js/vue/Home/app.js?id=4389447314d810908e49", - "/js/vue/Modules/CRM/app.js": "/js/vue/Modules/CRM/app.js?id=59997cc242d94438537d", - "/js/vue/User/app.js": "/js/vue/User/app.js?id=32e40e7920eba25a4bb2" + "/js/vue/Authentication/app.js": "/js/vue/Authentication/app.js?id=e11c94b631fa8e23411d", + "/js/vue/Home/app.js": "/js/vue/Home/app.js?id=8a41fb4476589b3a6cff", + "/js/vue/Modules/CRM/app.js": "/js/vue/Modules/CRM/app.js?id=26118082661767a7bdc6", + "/js/vue/User/app.js": "/js/vue/User/app.js?id=4d34a4ac917830fbaa36" } diff --git a/resources/js/Global/mixins/api.js b/resources/js/Global/mixins/api.js index c8483ee..0082ff1 100644 --- a/resources/js/Global/mixins/api.js +++ b/resources/js/Global/mixins/api.js @@ -1,13 +1,23 @@ import axiosApi from '@Global/utils/api/factory/axios/axiosApi' -import apolloApi from '@Global/utils/api/factory/axios/axiosApi' +import apolloApi from '@Global/utils/api/factory/apollo/apolloApi' import apiHandler from '@Global/utils/api/apiHandler' export const api = (url) => { - apiHandler.request(new url['type']+'Api'(url)); + let apiClass; + if (url['type'] == 'apollo') { + apiClass = new apolloApi (url); + } else if (url['type'] == 'axios') { + apiClass = new axiosApi (url); + } else { + throw 'parameter "' + url['type'] + '" must be axios or apollo.'; + } + + let APIHandler = new apiHandler(); + return APIHandler.request(apiClass); } export default { methods: { - $_api: api(url) + $_api: api }, } \ No newline at end of file diff --git a/resources/js/Global/utils/api/config/apollo.js b/resources/js/Global/utils/api/config/apollo.js new file mode 100644 index 0000000..e69de29 diff --git a/resources/js/Global/utils/api/config/axios.js b/resources/js/Global/utils/api/config/axios.js new file mode 100644 index 0000000..b96509b --- /dev/null +++ b/resources/js/Global/utils/api/config/axios.js @@ -0,0 +1,18 @@ +import { ApolloClient } from 'apollo-client' +import { HttpLink } from 'apollo-link-http' +import { InMemoryCache } from 'apollo-cache-inmemory' +import VueApollo from 'vue-apollo' + +const httpLink = new HttpLink({ + // URL to graphql server, you should use an absolute URL here + uri: '/graphql' +}) + +// create the apollo client +const apolloClient = new ApolloClient({ + link: httpLink, + cache: new InMemoryCache() +}) + +// install the vue plugin +Vue.use(VueApollo) \ No newline at end of file