├── .gitignore ├── README.md ├── build.config.ts ├── dist ├── index.cjs ├── index.d.ts ├── index.mjs ├── plugin.cjs ├── plugin.d.ts └── plugin.mjs ├── index.cjs ├── package.json ├── pnpm-lock.yaml ├── src ├── index.ts └── plugin.ts └── tsconfig.json /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | *.log 3 | .output 4 | .nuxt 5 | .env 6 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # @nuxt3/apollo-module 2 | 3 | Apollo module for nuxt3 4 | 5 | ## Demo 6 | [nuxt3-apollo-starter](https://github.com/newbeea/nuxt3-apollo-starter) 7 | 8 | ## Installation 9 | 10 | ```bash 11 | npm i -D @nuxt3/apollo-module 12 | ``` 13 | 14 | ## Configuration 15 | ```js 16 | // nuxt.config.js 17 | import '@nuxt3/apollo-module' // import to remove config warning, not necessary 18 | export default { 19 | buildModules: [ 20 | '@nuxt3/apollo-module' 21 | ], 22 | apollo: { 23 | clientConfigs: { 24 | default: { 25 | // see https://www.apollographql.com/docs/react/api/core/ApolloClient/#ApolloClient.constructor 26 | }, 27 | client1: { 28 | // another client 29 | }, 30 | client2: { 31 | // authentication type 32 | authenticationType: 'Bearer', // default 'Bearer' 33 | } 34 | }, 35 | // Cookie parameters used to store authentication token 36 | cookieAttributes: { 37 | /** 38 | * Define when the cookie will be removed. Value can be a Number 39 | * which will be interpreted as days from time of creation or a 40 | * Date instance. If omitted, the cookie becomes a session cookie. 41 | */ 42 | expires: 7, 43 | 44 | /** 45 | * Define the path where the cookie is available. Defaults to '/' 46 | */ 47 | path: '/', 48 | 49 | /** 50 | * Define the domain where the cookie is available. Defaults to 51 | * the domain of the page where the cookie was created. 52 | */ 53 | domain: 'example.com', 54 | 55 | /** 56 | * A Boolean indicating if the cookie transmission requires a 57 | * secure protocol (https). Defaults to false. 58 | */ 59 | secure: false, 60 | }, 61 | } 62 | } 63 | ``` 64 | 65 | ## Usage 66 | Query code(You can use[@nuxt3/graphql-codegen-module](https://github.com/newbeea/nuxt3-graphql-codegen-module) to generate code) 67 | ``` 68 | import gql from 'graphql-tag' 69 | import * as VueApolloComposable from '@vue/apollo-composable' 70 | 71 | export const HelloDocument = gql` 72 | query Hello { 73 | world 74 | } 75 | 76 | ` 77 | 78 | export function useHelloQuery() { 79 | return VueApolloComposable.useQuery(HelloDocument, {}, { 80 | // prefetch: false, // prefetch: false will fetch on client 81 | }) 82 | } 83 | ``` 84 | 85 | Fetch in setup 86 | ``` 87 | 106 | ``` 107 | 108 | Authentication 109 | You have following methods for authentication available: 110 | ```js 111 | // set your graphql-token 112 | $apolloHelpers.onLogin(token /* if not default you can pass in clientId as second argument, you can set custom cookies attributes object as the third argument, and you can skip reset store as the fourth argument */) 113 | // unset your graphql-token 114 | $apolloHelpers.onLogout(/* if not default you can pass in clientId as first argument, and you can skip reset store as the second argument */) 115 | // get your current token (we persist token in a cookie) 116 | $apolloHelpers.getToken(/* you can provide clientId */) 117 | ``` 118 | 119 | User login 120 | ```js 121 | import { useLoginMutation } from '@/generated/operations' // generated by @nuxt3/graphql-codegen-module 122 | const { mutate: login, onDone } = useLoginMutation({ 123 | }) 124 | const { $apolloHelpers } = useNuxtApp() 125 | onDone((res) => { 126 | const token = res.data.login.token // based on your resolver 127 | $apolloHelpers.onLogin(token) 128 | }) 129 | ``` 130 | 131 | User logout 132 | ```js 133 | // ~/components/my-component.js 134 | 135 | const { $apolloHelpers } = useNuxtApp() 136 | const logout = () => { 137 | $apolloHelpers.onLogout() 138 | } 139 | ``` 140 | 141 | ## Dev 142 | 143 | ``` 144 | pnpm i 145 | ``` 146 | 147 | ``` 148 | pnpm run build 149 | ``` 150 | 151 | 152 | 153 | ## License 154 | 155 | MIT License © 2021-PRESENT [Phil xu](https://github.com/newbeea) 156 | -------------------------------------------------------------------------------- /build.config.ts: -------------------------------------------------------------------------------- 1 | import { defineBuildConfig } from 'unbuild' 2 | 3 | export default defineBuildConfig({ 4 | entries: [ 5 | './src/index', 6 | './src/plugin', 7 | ], 8 | clean: true, 9 | declaration: true, 10 | externals: ["@nuxt/schema", "#app", "#build", "#build/apollo.options.mjs"], 11 | }) 12 | -------------------------------------------------------------------------------- /dist/index.cjs: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | const pathe = require('pathe'); 4 | const url = require('url'); 5 | const kit = require('@nuxt/kit'); 6 | 7 | const index = kit.defineNuxtModule({ 8 | meta: { 9 | name: "@nuxt3/apollo-module", 10 | configKey: "apollo" 11 | }, 12 | setup(options, nuxt) { 13 | nuxt.options.build.transpile = nuxt.options.build.transpile || []; 14 | nuxt.options.build.transpile.push("@apollo/client", "@vue/apollo-composable", "ts-invariant/process"); 15 | const __dirname__ = pathe.dirname(url.fileURLToPath((typeof document === 'undefined' ? new (require('u' + 'rl').URL)('file:' + __filename).href : (document.currentScript && document.currentScript.src || new URL('index.cjs', document.baseURI).href)))); 16 | kit.addTemplate({ 17 | filename: "apollo.options.mjs", 18 | getContents: () => `export default ${JSON.stringify(options)}` 19 | }); 20 | kit.addPluginTemplate({ 21 | src: pathe.resolve(__dirname__, "./plugin.mjs"), 22 | mode: "all" 23 | }); 24 | } 25 | }); 26 | 27 | module.exports = index; 28 | -------------------------------------------------------------------------------- /dist/index.d.ts: -------------------------------------------------------------------------------- 1 | import * as _nuxt_schema from '@nuxt/schema'; 2 | import { ApolloClientOptions } from '@apollo/client/core'; 3 | 4 | declare type ClientConfig = Partial> & { 5 | authenticationType?: string; 6 | }; 7 | interface ApolloModuleOptions { 8 | [name: string]: ClientConfig | any; 9 | default?: ClientConfig; 10 | clientConfigs?: { 11 | default: ClientConfig; 12 | [name: string]: ClientConfig; 13 | }; 14 | cookieAttributes?: { 15 | expires?: number; 16 | path?: string; 17 | domain?: string; 18 | secure?: boolean; 19 | }; 20 | } 21 | declare const _default: _nuxt_schema.NuxtModule; 22 | 23 | declare module '@nuxt/schema' { 24 | interface NuxtConfig { 25 | apollo?: ApolloModuleOptions; 26 | } 27 | interface NuxtOptions { 28 | apollo?: ApolloModuleOptions; 29 | } 30 | } 31 | 32 | export { ApolloModuleOptions, _default as default }; 33 | -------------------------------------------------------------------------------- /dist/index.mjs: -------------------------------------------------------------------------------- 1 | import { dirname, resolve } from 'pathe'; 2 | import { fileURLToPath } from 'url'; 3 | import { defineNuxtModule, addTemplate, addPluginTemplate } from '@nuxt/kit'; 4 | 5 | const index = defineNuxtModule({ 6 | meta: { 7 | name: "@nuxt3/apollo-module", 8 | configKey: "apollo" 9 | }, 10 | setup(options, nuxt) { 11 | nuxt.options.build.transpile = nuxt.options.build.transpile || []; 12 | nuxt.options.build.transpile.push("@apollo/client", "@vue/apollo-composable", "ts-invariant/process"); 13 | const __dirname__ = dirname(fileURLToPath(import.meta.url)); 14 | addTemplate({ 15 | filename: "apollo.options.mjs", 16 | getContents: () => `export default ${JSON.stringify(options)}` 17 | }); 18 | addPluginTemplate({ 19 | src: resolve(__dirname__, "./plugin.mjs"), 20 | mode: "all" 21 | }); 22 | } 23 | }); 24 | 25 | export { index as default }; 26 | -------------------------------------------------------------------------------- /dist/plugin.cjs: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | const core = require('@apollo/client/core'); 4 | const _app = require('#app'); 5 | const apolloComposable = require('@vue/apollo-composable'); 6 | const context = require('@apollo/client/link/context'); 7 | const cookieEs = require('cookie-es'); 8 | const apolloOptions = require('#build/apollo.options.mjs'); 9 | 10 | function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e["default"] : e; } 11 | 12 | const apolloOptions__default = /*#__PURE__*/_interopDefaultLegacy(apolloOptions); 13 | 14 | const apolloModuleOptions = apolloOptions__default; 15 | const DEFAULT_CLIENT_ID = "default"; 16 | const plugin = _app.defineNuxtPlugin((nuxt) => { 17 | const apolloClients = {}; 18 | const clientConfigs = apolloModuleOptions.clientConfigs ? apolloModuleOptions.clientConfigs : apolloModuleOptions; 19 | const defaultCookieAttributes = apolloModuleOptions.cookieAttributes; 20 | function getTokenName(clientId) { 21 | return "apollo_" + clientId + "_token"; 22 | } 23 | function getToken(name, opts = {}) { 24 | if (process.server) { 25 | const cookies = cookieEs.parse(nuxt.ssrContext?.req.headers.cookie || "", opts); 26 | return cookies[name]; 27 | } else if (process.client) { 28 | const cookies = cookieEs.parse(document.cookie, opts); 29 | return cookies[name]; 30 | } 31 | } 32 | function getAuthLink(clientId, authenticationType = "Bearer") { 33 | const authLink = context.setContext(async (_, { headers }) => { 34 | const token = getToken(getTokenName(clientId)); 35 | const authorizationHeader = token ? { Authorization: authenticationType ? "Bearer " + token : token } : {}; 36 | return { 37 | headers: { 38 | ...headers, 39 | ...authorizationHeader 40 | } 41 | }; 42 | }); 43 | return authLink; 44 | } 45 | function serializeCookie(name, value, opts = {}) { 46 | if (value == null) { 47 | return cookieEs.serialize(name, "", { ...opts, maxAge: -1 }); 48 | } 49 | return cookieEs.serialize(name, value, opts); 50 | } 51 | function writeClientCookie(name, value, opts = {}) { 52 | if (process.client) { 53 | document.cookie = serializeCookie(name, value, opts); 54 | } 55 | } 56 | for (const clientId in clientConfigs) { 57 | const options = clientConfigs[clientId]; 58 | const authLink = getAuthLink(clientId, options.authenticationType); 59 | const httpLink = core.createHttpLink(options); 60 | const cache = new core.InMemoryCache(); 61 | if (process.server) { 62 | const apolloClient = new core.ApolloClient(Object.assign(options, { 63 | ssrMode: true, 64 | link: core.concat(authLink, httpLink), 65 | cache: new core.InMemoryCache() 66 | })); 67 | nuxt.hook("app:rendered", () => { 68 | nuxt.payload.data["apollo-" + clientId] = apolloClient.extract(); 69 | }); 70 | apolloClients[clientId] = apolloClient; 71 | } else { 72 | cache.restore(JSON.parse(JSON.stringify(nuxt.payload.data["apollo-" + clientId]))); 73 | const apolloClient = new core.ApolloClient(Object.assign(options, { 74 | link: core.concat(authLink, httpLink), 75 | cache, 76 | ssrForceFetchDelay: 100 77 | })); 78 | apolloClients[clientId] = apolloClient; 79 | } 80 | } 81 | const apolloHelpers = { 82 | onLogin: async (token, clientId, cookieAttributes, skipResetStore = false) => { 83 | clientId = clientId || DEFAULT_CLIENT_ID; 84 | cookieAttributes = cookieAttributes || defaultCookieAttributes; 85 | if (typeof cookieAttributes === "number") 86 | cookieAttributes = { expires: cookieAttributes }; 87 | if (typeof cookieAttributes.expires === "number") { 88 | cookieAttributes.expires = new Date(Date.now() + 86400 * 1e3 * cookieAttributes.expires); 89 | } 90 | writeClientCookie(getTokenName(clientId), token, cookieAttributes); 91 | if (!skipResetStore) { 92 | try { 93 | await apolloClients[clientId].resetStore(); 94 | } catch (e) { 95 | console.log("%cError on cache reset (setToken)", "color: orange;", e.message); 96 | } 97 | } 98 | }, 99 | onLogout: async (clientId = DEFAULT_CLIENT_ID, skipResetStore = false) => { 100 | writeClientCookie(getTokenName(clientId), null); 101 | if (!skipResetStore) { 102 | try { 103 | await apolloClients[clientId].resetStore(); 104 | } catch (e) { 105 | console.log("%cError on cache reset (logout)", "color: orange;", e.message); 106 | } 107 | } 108 | }, 109 | getToken: (clientId = DEFAULT_CLIENT_ID) => { 110 | return getToken(getTokenName(clientId)); 111 | } 112 | }; 113 | nuxt.vueApp.provide(apolloComposable.ApolloClients, apolloClients); 114 | nuxt.provide("apollo", apolloClients); 115 | nuxt.provide("apolloHelpers", apolloHelpers); 116 | }); 117 | 118 | module.exports = plugin; 119 | -------------------------------------------------------------------------------- /dist/plugin.d.ts: -------------------------------------------------------------------------------- 1 | import { ApolloClient } from '@apollo/client/core'; 2 | 3 | declare const _default: any; 4 | 5 | declare module '#app' { 6 | interface NuxtApp { 7 | $apollo: { 8 | [key: string]: ApolloClient; 9 | }; 10 | } 11 | } 12 | 13 | export { _default as default }; 14 | -------------------------------------------------------------------------------- /dist/plugin.mjs: -------------------------------------------------------------------------------- 1 | import { createHttpLink, InMemoryCache, ApolloClient, concat } from '@apollo/client/core'; 2 | import { defineNuxtPlugin } from '#app'; 3 | import { ApolloClients } from '@vue/apollo-composable'; 4 | import { setContext } from '@apollo/client/link/context'; 5 | import { parse, serialize } from 'cookie-es'; 6 | import apolloOptions from '#build/apollo.options.mjs'; 7 | 8 | const apolloModuleOptions = apolloOptions; 9 | const DEFAULT_CLIENT_ID = "default"; 10 | const plugin = defineNuxtPlugin((nuxt) => { 11 | const apolloClients = {}; 12 | const clientConfigs = apolloModuleOptions.clientConfigs ? apolloModuleOptions.clientConfigs : apolloModuleOptions; 13 | const defaultCookieAttributes = apolloModuleOptions.cookieAttributes; 14 | function getTokenName(clientId) { 15 | return "apollo_" + clientId + "_token"; 16 | } 17 | function getToken(name, opts = {}) { 18 | if (process.server) { 19 | const cookies = parse(nuxt.ssrContext?.req.headers.cookie || "", opts); 20 | return cookies[name]; 21 | } else if (process.client) { 22 | const cookies = parse(document.cookie, opts); 23 | return cookies[name]; 24 | } 25 | } 26 | function getAuthLink(clientId, authenticationType = "Bearer") { 27 | const authLink = setContext(async (_, { headers }) => { 28 | const token = getToken(getTokenName(clientId)); 29 | const authorizationHeader = token ? { Authorization: authenticationType ? "Bearer " + token : token } : {}; 30 | return { 31 | headers: { 32 | ...headers, 33 | ...authorizationHeader 34 | } 35 | }; 36 | }); 37 | return authLink; 38 | } 39 | function serializeCookie(name, value, opts = {}) { 40 | if (value == null) { 41 | return serialize(name, "", { ...opts, maxAge: -1 }); 42 | } 43 | return serialize(name, value, opts); 44 | } 45 | function writeClientCookie(name, value, opts = {}) { 46 | if (process.client) { 47 | document.cookie = serializeCookie(name, value, opts); 48 | } 49 | } 50 | for (const clientId in clientConfigs) { 51 | const options = clientConfigs[clientId]; 52 | const authLink = getAuthLink(clientId, options.authenticationType); 53 | const httpLink = createHttpLink(options); 54 | const cache = new InMemoryCache(); 55 | if (process.server) { 56 | const apolloClient = new ApolloClient(Object.assign(options, { 57 | ssrMode: true, 58 | link: concat(authLink, httpLink), 59 | cache: new InMemoryCache() 60 | })); 61 | nuxt.hook("app:rendered", () => { 62 | nuxt.payload.data["apollo-" + clientId] = apolloClient.extract(); 63 | }); 64 | apolloClients[clientId] = apolloClient; 65 | } else { 66 | cache.restore(JSON.parse(JSON.stringify(nuxt.payload.data["apollo-" + clientId]))); 67 | const apolloClient = new ApolloClient(Object.assign(options, { 68 | link: concat(authLink, httpLink), 69 | cache, 70 | ssrForceFetchDelay: 100 71 | })); 72 | apolloClients[clientId] = apolloClient; 73 | } 74 | } 75 | const apolloHelpers = { 76 | onLogin: async (token, clientId, cookieAttributes, skipResetStore = false) => { 77 | clientId = clientId || DEFAULT_CLIENT_ID; 78 | cookieAttributes = cookieAttributes || defaultCookieAttributes; 79 | if (typeof cookieAttributes === "number") 80 | cookieAttributes = { expires: cookieAttributes }; 81 | if (typeof cookieAttributes.expires === "number") { 82 | cookieAttributes.expires = new Date(Date.now() + 86400 * 1e3 * cookieAttributes.expires); 83 | } 84 | writeClientCookie(getTokenName(clientId), token, cookieAttributes); 85 | if (!skipResetStore) { 86 | try { 87 | await apolloClients[clientId].resetStore(); 88 | } catch (e) { 89 | console.log("%cError on cache reset (setToken)", "color: orange;", e.message); 90 | } 91 | } 92 | }, 93 | onLogout: async (clientId = DEFAULT_CLIENT_ID, skipResetStore = false) => { 94 | writeClientCookie(getTokenName(clientId), null); 95 | if (!skipResetStore) { 96 | try { 97 | await apolloClients[clientId].resetStore(); 98 | } catch (e) { 99 | console.log("%cError on cache reset (logout)", "color: orange;", e.message); 100 | } 101 | } 102 | }, 103 | getToken: (clientId = DEFAULT_CLIENT_ID) => { 104 | return getToken(getTokenName(clientId)); 105 | } 106 | }; 107 | nuxt.vueApp.provide(ApolloClients, apolloClients); 108 | nuxt.provide("apollo", apolloClients); 109 | nuxt.provide("apolloHelpers", apolloHelpers); 110 | }); 111 | 112 | export { plugin as default }; 113 | -------------------------------------------------------------------------------- /index.cjs: -------------------------------------------------------------------------------- 1 | module.exports = function(...args) { 2 | return import('./dist/index.mjs').then(m => m.default.call(this, ...args)) 3 | } 4 | 5 | module.exports.meta = require('./package.json') 6 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@nuxt3/apollo-module", 3 | "version": "0.1.1", 4 | "description": "Nuxt3 module for Apollo client", 5 | "keywords": [ 6 | "nuxt", 7 | "nuxt3", 8 | "apollo", 9 | "nuxt-module", 10 | "apollo-module", 11 | "apollo-client" 12 | ], 13 | "homepage": "https://github.com/newbeea/nuxt3-apollo-module#readme", 14 | "bugs": { 15 | "url": "https://github.com/newbeea/nuxt3-apollo-module/issues" 16 | }, 17 | "repository": { 18 | "type": "git", 19 | "url": "git+https://github.com/newbeea/nuxt3-apollo-module.git" 20 | }, 21 | "license": "MIT", 22 | "author": "Phil xu ", 23 | "sideEffects": false, 24 | "exports": { 25 | ".": { 26 | "require": "./index.cjs", 27 | "import": "./dist/index.mjs" 28 | }, 29 | "./plugin": { 30 | "require": "./dist/plugin.cjs", 31 | "import": "./dist/plugin.mjs" 32 | } 33 | }, 34 | "main": "./index.cjs", 35 | "module": "./dist/index.mjs", 36 | "types": "./dist/index.d.ts", 37 | "files": [ 38 | "dist", 39 | "index.cjs" 40 | ], 41 | "scripts": { 42 | "build": "unbuild", 43 | "stub": "unbuild --stub" 44 | }, 45 | "dependencies": { 46 | "@apollo/client": "^3.5.6", 47 | "@nuxt/kit": "npm:@nuxt/kit-edge@3.0.0-27338323.1e98259", 48 | "@nuxt/types": "^2.15.8", 49 | "@vue/apollo-composable": "^4.0.0-alpha.16", 50 | "consola": "^2.15.3", 51 | "cookie-es": "^0.5.0", 52 | "pathe": "^0.2.0" 53 | }, 54 | "devDependencies": { 55 | "@nuxt/schema": "npm:@nuxt/schema-edge@3.0.0-27338323.1e98259", 56 | "unbuild": "0.5.11" 57 | } 58 | } 59 | -------------------------------------------------------------------------------- /pnpm-lock.yaml: -------------------------------------------------------------------------------- 1 | lockfileVersion: 5.3 2 | 3 | specifiers: 4 | '@apollo/client': ^3.5.6 5 | '@nuxt/kit': npm:@nuxt/kit-edge@3.0.0-27338323.1e98259 6 | '@nuxt/schema': npm:@nuxt/schema-edge@3.0.0-27338323.1e98259 7 | '@nuxt/types': ^2.15.8 8 | '@vue/apollo-composable': ^4.0.0-alpha.16 9 | consola: ^2.15.3 10 | cookie-es: ^0.5.0 11 | pathe: ^0.2.0 12 | unbuild: 0.5.11 13 | 14 | dependencies: 15 | '@apollo/client': 3.5.6 16 | '@nuxt/kit': /@nuxt/kit-edge/3.0.0-27338323.1e98259 17 | '@nuxt/types': 2.15.8 18 | '@vue/apollo-composable': 4.0.0-alpha.16_@apollo+client@3.5.6 19 | consola: 2.15.3 20 | cookie-es: 0.5.0 21 | pathe: 0.2.0 22 | 23 | devDependencies: 24 | '@nuxt/schema': /@nuxt/schema-edge/3.0.0-27338323.1e98259 25 | unbuild: 0.5.11 26 | 27 | packages: 28 | 29 | /@apollo/client/3.5.6: 30 | resolution: {integrity: sha512-XHoouuEJ4L37mtfftcHHO1caCRrKKAofAwqRoq28UQIPMJk+e7n3X9OtRRNXKk/9tmhNkwelSary+EilfPwI7A==} 31 | peerDependencies: 32 | graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 33 | react: ^16.8.0 || ^17.0.0 34 | subscriptions-transport-ws: ^0.9.0 || ^0.11.0 35 | peerDependenciesMeta: 36 | react: 37 | optional: true 38 | subscriptions-transport-ws: 39 | optional: true 40 | dependencies: 41 | '@graphql-typed-document-node/core': 3.1.1 42 | '@wry/context': 0.6.1 43 | '@wry/equality': 0.5.2 44 | '@wry/trie': 0.3.1 45 | graphql-tag: 2.12.6 46 | hoist-non-react-statics: 3.3.2 47 | optimism: 0.16.1 48 | prop-types: 15.8.0 49 | symbol-observable: 4.0.0 50 | ts-invariant: 0.9.4 51 | tslib: 2.3.1 52 | zen-observable-ts: 1.2.3 53 | dev: false 54 | 55 | /@babel/code-frame/7.16.0: 56 | resolution: {integrity: sha512-IF4EOMEV+bfYwOmNxGzSnjR2EmQod7f1UXOpZM3l4i4o4QNwzjtJAu/HxdjHq0aYBvdqMuQEY1eg0nqW9ZPORA==} 57 | engines: {node: '>=6.9.0'} 58 | requiresBuild: true 59 | dependencies: 60 | '@babel/highlight': 7.16.0 61 | dev: true 62 | optional: true 63 | 64 | /@babel/helper-validator-identifier/7.15.7: 65 | resolution: {integrity: sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==} 66 | engines: {node: '>=6.9.0'} 67 | 68 | /@babel/highlight/7.16.0: 69 | resolution: {integrity: sha512-t8MH41kUQylBtu2+4IQA3atqevA2lRgqA2wyVB/YiWmsDSuylZZuXOUy9ric30hfzauEFfdsuk/eXTRrGrfd0g==} 70 | engines: {node: '>=6.9.0'} 71 | dependencies: 72 | '@babel/helper-validator-identifier': 7.15.7 73 | chalk: 2.4.2 74 | js-tokens: 4.0.0 75 | dev: true 76 | optional: true 77 | 78 | /@babel/parser/7.16.6: 79 | resolution: {integrity: sha512-Gr86ujcNuPDnNOY8mi383Hvi8IYrJVJYuf3XcuBM/Dgd+bINn/7tHqsj+tKkoreMbmGsFLsltI/JJd8fOFWGDQ==} 80 | engines: {node: '>=6.0.0'} 81 | hasBin: true 82 | dev: false 83 | 84 | /@babel/types/7.16.0: 85 | resolution: {integrity: sha512-PJgg/k3SdLsGb3hhisFvtLOw5ts113klrpLuIPtCJIU+BB24fqq6lf8RWqKJEjzqXR9AEH1rIb5XTqwBHB+kQg==} 86 | engines: {node: '>=6.9.0'} 87 | dependencies: 88 | '@babel/helper-validator-identifier': 7.15.7 89 | to-fast-properties: 2.0.0 90 | dev: false 91 | 92 | /@graphql-typed-document-node/core/3.1.1: 93 | resolution: {integrity: sha512-NQ17ii0rK1b34VZonlmT2QMJFI70m0TRwbknO/ihlbatXyaktDhN/98vBiUU6kNBPljqGqyIrl2T4nY2RpFANg==} 94 | peerDependencies: 95 | graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 96 | dev: false 97 | 98 | /@nodelib/fs.scandir/2.1.5: 99 | resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} 100 | engines: {node: '>= 8'} 101 | dependencies: 102 | '@nodelib/fs.stat': 2.0.5 103 | run-parallel: 1.2.0 104 | 105 | /@nodelib/fs.stat/2.0.5: 106 | resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} 107 | engines: {node: '>= 8'} 108 | 109 | /@nodelib/fs.walk/1.2.8: 110 | resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} 111 | engines: {node: '>= 8'} 112 | dependencies: 113 | '@nodelib/fs.scandir': 2.1.5 114 | fastq: 1.13.0 115 | 116 | /@nuxt/kit-edge/3.0.0-27338323.1e98259: 117 | resolution: {integrity: sha512-lABruok/JkKOoEJNpkZ2M6YMSKBgOaWAyWjDq+Ekk4Ga/FZgok+epTcN3cQBOP/MpH3PXsM2L3zdM8DoEMxeug==} 118 | engines: {node: ^14.16.0 || ^16.11.0 || ^17.0.0} 119 | dependencies: 120 | '@nuxt/schema': /@nuxt/schema-edge/3.0.0-27338323.1e98259 121 | consola: 2.15.3 122 | defu: 5.0.0 123 | dotenv: 10.0.0 124 | globby: 11.0.4 125 | hash-sum: 2.0.0 126 | jiti: 1.12.9 127 | lodash.template: 4.5.0 128 | mlly: 0.3.16 129 | pathe: 0.2.0 130 | pkg-types: 0.3.2 131 | rc9: 1.2.0 132 | scule: 0.2.1 133 | semver: 7.3.5 134 | unctx: 1.0.2 135 | untyped: 0.3.0 136 | dev: false 137 | 138 | /@nuxt/schema-edge/3.0.0-27338323.1e98259: 139 | resolution: {integrity: sha512-TV8HMFEkD2cMLnsYBE0+wQcOSwElw6SW4rnDOFoDhHI61GeflpGZOfXLQRJS2FLAyMv/QVeBHdd+PWWOxDqGgA==} 140 | engines: {node: ^14.16.0 || ^16.11.0 || ^17.0.0} 141 | dependencies: 142 | create-require: 1.1.1 143 | defu: 5.0.0 144 | jiti: 1.12.9 145 | pathe: 0.2.0 146 | scule: 0.2.1 147 | std-env: 3.0.1 148 | ufo: 0.7.9 149 | 150 | /@nuxt/types/2.15.8: 151 | resolution: {integrity: sha512-zBAG5Fy+SIaZIerOVF1vxy1zz16ZK07QSbsuQAjdtEFlvr+vKK+0AqCv8r8DBY5IVqdMIaw5FgNUz5py0xWdPg==} 152 | dependencies: 153 | '@types/autoprefixer': 9.7.2 154 | '@types/babel__core': 7.1.14 155 | '@types/compression': 1.7.0 156 | '@types/connect': 3.4.34 157 | '@types/etag': 1.8.0 158 | '@types/file-loader': 5.0.0 159 | '@types/html-minifier': 4.0.0 160 | '@types/less': 3.0.2 161 | '@types/node': 12.20.12 162 | '@types/optimize-css-assets-webpack-plugin': 5.0.3 163 | '@types/pug': 2.0.4 164 | '@types/sass-loader': 8.0.1 165 | '@types/serve-static': 1.13.9 166 | '@types/terser-webpack-plugin': 4.2.1 167 | '@types/webpack': 4.41.28 168 | '@types/webpack-bundle-analyzer': 3.9.3 169 | '@types/webpack-dev-middleware': 4.1.2 170 | '@types/webpack-hot-middleware': 2.25.4 171 | sass-loader: 10.1.1 172 | transitivePeerDependencies: 173 | - fibers 174 | - node-sass 175 | - sass 176 | - webpack 177 | dev: false 178 | 179 | /@rollup/plugin-alias/3.1.8_rollup@2.61.1: 180 | resolution: {integrity: sha512-tf7HeSs/06wO2LPqKNY3Ckbvy0JRe7Jyn98bXnt/gfrxbe+AJucoNJlsEVi9sdgbQtXemjbakCpO/76JVgnHpA==} 181 | engines: {node: '>=8.0.0'} 182 | peerDependencies: 183 | rollup: ^1.20.0||^2.0.0 184 | dependencies: 185 | rollup: 2.61.1 186 | slash: 3.0.0 187 | dev: true 188 | 189 | /@rollup/plugin-commonjs/21.0.1_rollup@2.61.1: 190 | resolution: {integrity: sha512-EA+g22lbNJ8p5kuZJUYyhhDK7WgJckW5g4pNN7n4mAFUM96VuwUnNT3xr2Db2iCZPI1pJPbGyfT5mS9T1dHfMg==} 191 | engines: {node: '>= 8.0.0'} 192 | peerDependencies: 193 | rollup: ^2.38.3 194 | dependencies: 195 | '@rollup/pluginutils': 3.1.0_rollup@2.61.1 196 | commondir: 1.0.1 197 | estree-walker: 2.0.2 198 | glob: 7.2.0 199 | is-reference: 1.2.1 200 | magic-string: 0.25.7 201 | resolve: 1.20.0 202 | rollup: 2.61.1 203 | dev: true 204 | 205 | /@rollup/plugin-json/4.1.0_rollup@2.61.1: 206 | resolution: {integrity: sha512-yfLbTdNS6amI/2OpmbiBoW12vngr5NW2jCJVZSBEz+H5KfUJZ2M7sDjk0U6GOOdCWFVScShte29o9NezJ53TPw==} 207 | peerDependencies: 208 | rollup: ^1.20.0 || ^2.0.0 209 | dependencies: 210 | '@rollup/pluginutils': 3.1.0_rollup@2.61.1 211 | rollup: 2.61.1 212 | dev: true 213 | 214 | /@rollup/plugin-node-resolve/13.1.1_rollup@2.61.1: 215 | resolution: {integrity: sha512-6QKtRevXLrmEig9UiMYt2fSvee9TyltGRfw+qSs6xjUnxwjOzTOqy+/Lpxsgjb8mJn1EQNbCDAvt89O4uzL5kw==} 216 | engines: {node: '>= 10.0.0'} 217 | peerDependencies: 218 | rollup: ^2.42.0 219 | dependencies: 220 | '@rollup/pluginutils': 3.1.0_rollup@2.61.1 221 | '@types/resolve': 1.17.1 222 | builtin-modules: 3.2.0 223 | deepmerge: 4.2.2 224 | is-module: 1.0.0 225 | resolve: 1.20.0 226 | rollup: 2.61.1 227 | dev: true 228 | 229 | /@rollup/plugin-replace/3.0.0_rollup@2.61.1: 230 | resolution: {integrity: sha512-3c7JCbMuYXM4PbPWT4+m/4Y6U60SgsnDT/cCyAyUKwFHg7pTSfsSQzIpETha3a3ig6OdOKzZz87D9ZXIK3qsDg==} 231 | peerDependencies: 232 | rollup: ^1.20.0 || ^2.0.0 233 | dependencies: 234 | '@rollup/pluginutils': 3.1.0_rollup@2.61.1 235 | magic-string: 0.25.7 236 | rollup: 2.61.1 237 | dev: true 238 | 239 | /@rollup/pluginutils/3.1.0_rollup@2.61.1: 240 | resolution: {integrity: sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==} 241 | engines: {node: '>= 8.0.0'} 242 | peerDependencies: 243 | rollup: ^1.20.0||^2.0.0 244 | dependencies: 245 | '@types/estree': 0.0.39 246 | estree-walker: 1.0.1 247 | picomatch: 2.3.0 248 | rollup: 2.61.1 249 | dev: true 250 | 251 | /@rollup/pluginutils/4.1.2: 252 | resolution: {integrity: sha512-ROn4qvkxP9SyPeHaf7uQC/GPFY6L/OWy9+bd9AwcjOAWQwxRscoEyAUD8qCY5o5iL4jqQwoLk2kaTKJPb/HwzQ==} 253 | engines: {node: '>= 8.0.0'} 254 | dependencies: 255 | estree-walker: 2.0.2 256 | picomatch: 2.3.0 257 | dev: true 258 | 259 | /@types/anymatch/3.0.0: 260 | resolution: {integrity: sha512-qLChUo6yhpQ9k905NwL74GU7TxH+9UODwwQ6ICNI+O6EDMExqH/Cv9NsbmcZ7yC/rRXJ/AHCzfgjsFRY5fKjYw==} 261 | deprecated: This is a stub types definition. anymatch provides its own type definitions, so you do not need this installed. 262 | dependencies: 263 | anymatch: 3.1.2 264 | dev: false 265 | 266 | /@types/autoprefixer/9.7.2: 267 | resolution: {integrity: sha512-QX7U7YW3zX3ex6MECtWO9folTGsXeP4b8bSjTq3I1ODM+H+sFHwGKuof+T+qBcDClGlCGtDb3SVfiTVfmcxw4g==} 268 | dependencies: 269 | '@types/browserslist': 4.15.0 270 | postcss: 7.0.39 271 | dev: false 272 | 273 | /@types/babel__core/7.1.14: 274 | resolution: {integrity: sha512-zGZJzzBUVDo/eV6KgbE0f0ZI7dInEYvo12Rb70uNQDshC3SkRMb67ja0GgRHZgAX3Za6rhaWlvbDO8rrGyAb1g==} 275 | dependencies: 276 | '@babel/parser': 7.16.6 277 | '@babel/types': 7.16.0 278 | '@types/babel__generator': 7.6.3 279 | '@types/babel__template': 7.4.1 280 | '@types/babel__traverse': 7.14.2 281 | dev: false 282 | 283 | /@types/babel__generator/7.6.3: 284 | resolution: {integrity: sha512-/GWCmzJWqV7diQW54smJZzWbSFf4QYtF71WCKhcx6Ru/tFyQIY2eiiITcCAeuPbNSvT9YCGkVMqqvSk2Z0mXiA==} 285 | dependencies: 286 | '@babel/types': 7.16.0 287 | dev: false 288 | 289 | /@types/babel__template/7.4.1: 290 | resolution: {integrity: sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==} 291 | dependencies: 292 | '@babel/parser': 7.16.6 293 | '@babel/types': 7.16.0 294 | dev: false 295 | 296 | /@types/babel__traverse/7.14.2: 297 | resolution: {integrity: sha512-K2waXdXBi2302XUdcHcR1jCeU0LL4TD9HRs/gk0N2Xvrht+G/BfJa4QObBQZfhMdxiCpV3COl5Nfq4uKTeTnJA==} 298 | dependencies: 299 | '@babel/types': 7.16.0 300 | dev: false 301 | 302 | /@types/body-parser/1.19.2: 303 | resolution: {integrity: sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==} 304 | dependencies: 305 | '@types/connect': 3.4.34 306 | '@types/node': 12.20.12 307 | dev: false 308 | 309 | /@types/browserslist/4.15.0: 310 | resolution: {integrity: sha512-h9LyKErRGZqMsHh9bd+FE8yCIal4S0DxKTOeui56VgVXqa66TKiuaIUxCAI7c1O0LjaUzOTcsMyOpO9GetozRA==} 311 | deprecated: This is a stub types definition. browserslist provides its own type definitions, so you do not need this installed. 312 | dependencies: 313 | browserslist: 4.19.1 314 | dev: false 315 | 316 | /@types/clean-css/4.2.5: 317 | resolution: {integrity: sha512-NEzjkGGpbs9S9fgC4abuBvTpVwE3i+Acu9BBod3PUyjDVZcNsGx61b8r2PphR61QGPnn0JHVs5ey6/I4eTrkxw==} 318 | dependencies: 319 | '@types/node': 12.20.12 320 | source-map: 0.6.1 321 | dev: false 322 | 323 | /@types/compression/1.7.0: 324 | resolution: {integrity: sha512-3LzWUM+3k3XdWOUk/RO+uSjv7YWOatYq2QADJntK1pjkk4DfVP0KrIEPDnXRJxAAGKe0VpIPRmlINLDuCedZWw==} 325 | dependencies: 326 | '@types/express': 4.17.13 327 | dev: false 328 | 329 | /@types/connect/3.4.34: 330 | resolution: {integrity: sha512-ePPA/JuI+X0vb+gSWlPKOY0NdNAie/rPUqX2GUPpbZwiKTkSPhjXWuee47E4MtE54QVzGCQMQkAL6JhV2E1+cQ==} 331 | dependencies: 332 | '@types/node': 12.20.12 333 | dev: false 334 | 335 | /@types/estree/0.0.39: 336 | resolution: {integrity: sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==} 337 | dev: true 338 | 339 | /@types/estree/0.0.50: 340 | resolution: {integrity: sha512-C6N5s2ZFtuZRj54k2/zyRhNDjJwwcViAM3Nbm8zjBpbqAdZ00mr0CFxvSKeO8Y/e03WVFLpQMdHYVfUd6SB+Hw==} 341 | dev: true 342 | 343 | /@types/etag/1.8.0: 344 | resolution: {integrity: sha512-EdSN0x+Y0/lBv7YAb8IU4Jgm6DWM+Bqtz7o5qozl96fzaqdqbdfHS5qjdpFeIv7xQ8jSLyjMMNShgYtMajEHyQ==} 345 | dependencies: 346 | '@types/node': 12.20.12 347 | dev: false 348 | 349 | /@types/express-serve-static-core/4.17.26: 350 | resolution: {integrity: sha512-zeu3tpouA043RHxW0gzRxwCHchMgftE8GArRsvYT0ByDMbn19olQHx5jLue0LxWY6iYtXb7rXmuVtSkhy9YZvQ==} 351 | dependencies: 352 | '@types/node': 12.20.12 353 | '@types/qs': 6.9.7 354 | '@types/range-parser': 1.2.4 355 | dev: false 356 | 357 | /@types/express/4.17.13: 358 | resolution: {integrity: sha512-6bSZTPaTIACxn48l50SR+axgrqm6qXFIxrdAKaG6PaJk3+zuUr35hBlgT7vOmJcum+OEaIBLtHV/qloEAFITeA==} 359 | dependencies: 360 | '@types/body-parser': 1.19.2 361 | '@types/express-serve-static-core': 4.17.26 362 | '@types/qs': 6.9.7 363 | '@types/serve-static': 1.13.9 364 | dev: false 365 | 366 | /@types/file-loader/5.0.0: 367 | resolution: {integrity: sha512-evodFzM0PLOXmMZy8DhPN+toP6QgJiIteF6e8iD9T0xGBUllQA/DAb1nZwCIoNh7vuLvqCGPUdsLf3GSbcHd4g==} 368 | dependencies: 369 | '@types/webpack': 4.41.28 370 | dev: false 371 | 372 | /@types/html-minifier/4.0.0: 373 | resolution: {integrity: sha512-eFnGhrKmjWBlnSGNtunetE3UU2Tc/LUl92htFslSSTmpp9EKHQVcYQadCyYfnzUEFB5G/3wLWo/USQS/mEPKrA==} 374 | dependencies: 375 | '@types/clean-css': 4.2.5 376 | '@types/relateurl': 0.2.29 377 | '@types/uglify-js': 3.13.1 378 | dev: false 379 | 380 | /@types/json-schema/7.0.9: 381 | resolution: {integrity: sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ==} 382 | dev: false 383 | 384 | /@types/less/3.0.2: 385 | resolution: {integrity: sha512-62vfe65cMSzYaWmpmhqCMMNl0khen89w57mByPi1OseGfcV/LV03fO8YVrNj7rFQsRWNJo650WWyh6m7p8vZmA==} 386 | dev: false 387 | 388 | /@types/mime/1.3.2: 389 | resolution: {integrity: sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==} 390 | dev: false 391 | 392 | /@types/node-sass/4.11.2: 393 | resolution: {integrity: sha512-pOFlTw/OtZda4e+yMjq6/QYuvY0RDMQ+mxXdWj7rfSyf18V8hS4SfgurO+MasAkQsv6Wt6edOGlwh5QqJml9gw==} 394 | dependencies: 395 | '@types/node': 12.20.12 396 | dev: false 397 | 398 | /@types/node/12.20.12: 399 | resolution: {integrity: sha512-KQZ1al2hKOONAs2MFv+yTQP1LkDWMrRJ9YCVRalXltOfXsBmH5IownLxQaiq0lnAHwAViLnh2aTYqrPcRGEbgg==} 400 | dev: false 401 | 402 | /@types/node/17.0.3: 403 | resolution: {integrity: sha512-bAKB1GcA28FR/D8HHQ5U4FYk7nvoZdp7TZSy9oIyQ8gpYCzpeESa3LCK2TbeocXic7GwIXCkCItJg0DttO3ZaQ==} 404 | dev: true 405 | 406 | /@types/optimize-css-assets-webpack-plugin/5.0.3: 407 | resolution: {integrity: sha512-PJgbI4KplJfyxKWVrBbEL+rePEBqeozJRMT0mBL3ynhvngASBV/XJ+BneLuJN74RjjMzO0gA5ns80mgubQdZAA==} 408 | dependencies: 409 | '@types/webpack': 4.41.28 410 | dev: false 411 | 412 | /@types/pug/2.0.4: 413 | resolution: {integrity: sha1-h3L80EGOPNLMFxVV1zAHQVBR9LI=} 414 | dev: false 415 | 416 | /@types/qs/6.9.7: 417 | resolution: {integrity: sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==} 418 | dev: false 419 | 420 | /@types/range-parser/1.2.4: 421 | resolution: {integrity: sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==} 422 | dev: false 423 | 424 | /@types/relateurl/0.2.29: 425 | resolution: {integrity: sha512-QSvevZ+IRww2ldtfv1QskYsqVVVwCKQf1XbwtcyyoRvLIQzfyPhj/C+3+PKzSDRdiyejaiLgnq//XTkleorpLg==} 426 | dev: false 427 | 428 | /@types/resolve/1.17.1: 429 | resolution: {integrity: sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==} 430 | dependencies: 431 | '@types/node': 17.0.3 432 | dev: true 433 | 434 | /@types/sass-loader/8.0.1: 435 | resolution: {integrity: sha512-kum0/5Im5K2WdDTRsLtrXXvX2VJc3rgq9favK+vIdWLn35miWUIYuPkiQlLCHks9//sZ3GWYs4uYzCdmoKKLcQ==} 436 | dependencies: 437 | '@types/node-sass': 4.11.2 438 | '@types/sass': 1.43.1 439 | '@types/webpack': 4.41.28 440 | dev: false 441 | 442 | /@types/sass/1.43.1: 443 | resolution: {integrity: sha512-BPdoIt1lfJ6B7rw35ncdwBZrAssjcwzI5LByIrYs+tpXlj/CAkuVdRsgZDdP4lq5EjyWzwxZCqAoFyHKFwp32g==} 444 | dependencies: 445 | '@types/node': 12.20.12 446 | dev: false 447 | 448 | /@types/serve-static/1.13.9: 449 | resolution: {integrity: sha512-ZFqF6qa48XsPdjXV5Gsz0Zqmux2PerNd3a/ktL45mHpa19cuMi/cL8tcxdAx497yRh+QtYPuofjT9oWw9P7nkA==} 450 | dependencies: 451 | '@types/mime': 1.3.2 452 | '@types/node': 12.20.12 453 | dev: false 454 | 455 | /@types/source-list-map/0.1.2: 456 | resolution: {integrity: sha512-K5K+yml8LTo9bWJI/rECfIPrGgxdpeNbj+d53lwN4QjW1MCwlkhUms+gtdzigTeUyBr09+u8BwOIY3MXvHdcsA==} 457 | dev: false 458 | 459 | /@types/tapable/1.0.8: 460 | resolution: {integrity: sha512-ipixuVrh2OdNmauvtT51o3d8z12p6LtFW9in7U79der/kwejjdNchQC5UMn5u/KxNoM7VHHOs/l8KS8uHxhODQ==} 461 | dev: false 462 | 463 | /@types/terser-webpack-plugin/4.2.1: 464 | resolution: {integrity: sha512-x688KsgQKJF8PPfv4qSvHQztdZNHLlWJdolN9/ptAGimHVy3rY+vHdfglQDFh1Z39h7eMWOd6fQ7ke3PKQcdyA==} 465 | dependencies: 466 | '@types/webpack': 4.41.28 467 | terser: 4.8.0 468 | dev: false 469 | 470 | /@types/uglify-js/3.13.1: 471 | resolution: {integrity: sha512-O3MmRAk6ZuAKa9CHgg0Pr0+lUOqoMLpc9AS4R8ano2auvsg7IE8syF3Xh/NPr26TWklxYcqoEEFdzLLs1fV9PQ==} 472 | dependencies: 473 | source-map: 0.6.1 474 | dev: false 475 | 476 | /@types/webpack-bundle-analyzer/3.9.3: 477 | resolution: {integrity: sha512-l/vaDMWGcXiMB3CbczpyICivLTB07/JNtn1xebsRXE9tPaUDEHgX3x7YP6jfznG5TOu7I4w0Qx1tZz61znmPmg==} 478 | dependencies: 479 | '@types/webpack': 4.41.28 480 | dev: false 481 | 482 | /@types/webpack-dev-middleware/4.1.2: 483 | resolution: {integrity: sha512-SxXzPCqeZ03fJ2dg3iD7cSXvqZymmS5/2GD9fANRcyWN7HYK1H3ty6q7IInXZKvPrdUqij831G3RLIeKK6aGdw==} 484 | dependencies: 485 | '@types/connect': 3.4.34 486 | '@types/webpack': 4.41.28 487 | dev: false 488 | 489 | /@types/webpack-hot-middleware/2.25.4: 490 | resolution: {integrity: sha512-6tQb9EBKIANZYUVLQYWiWfDFVe7FhXSj4bB2EF5QB7VtYWL3HDR+y/zqjZPAnCorv0spLqVMRqjRK8AmhfocMw==} 491 | dependencies: 492 | '@types/connect': 3.4.34 493 | '@types/webpack': 4.41.28 494 | dev: false 495 | 496 | /@types/webpack-sources/3.2.0: 497 | resolution: {integrity: sha512-Ft7YH3lEVRQ6ls8k4Ff1oB4jN6oy/XmU6tQISKdhfh+1mR+viZFphS6WL0IrtDOzvefmJg5a0s7ZQoRXwqTEFg==} 498 | dependencies: 499 | '@types/node': 12.20.12 500 | '@types/source-list-map': 0.1.2 501 | source-map: 0.7.3 502 | dev: false 503 | 504 | /@types/webpack/4.41.28: 505 | resolution: {integrity: sha512-Nn84RAiJjKRfPFFCVR8LC4ueTtTdfWAMZ03THIzZWRJB+rX24BD3LqPSFnbMscWauEsT4segAsylPDIaZyZyLQ==} 506 | dependencies: 507 | '@types/anymatch': 3.0.0 508 | '@types/node': 12.20.12 509 | '@types/tapable': 1.0.8 510 | '@types/uglify-js': 3.13.1 511 | '@types/webpack-sources': 3.2.0 512 | source-map: 0.6.1 513 | dev: false 514 | 515 | /@vue/apollo-composable/4.0.0-alpha.16_@apollo+client@3.5.6: 516 | resolution: {integrity: sha512-P0Zxip0idW7HAkLAmvtso+UNdTNCm+mwAKvw9Nup4MzESDvfuvhXfOxYPZCKtd4Y8fS1FZ0dBGbOrxeQHYyfwQ==} 517 | peerDependencies: 518 | '@apollo/client': ^3.4.13 519 | '@vue/composition-api': ^1.0.0 520 | graphql: '>=15' 521 | vue: ^2.6.0 || ^3.1.0 522 | peerDependenciesMeta: 523 | '@vue/composition-api': 524 | optional: true 525 | dependencies: 526 | '@apollo/client': 3.5.6 527 | throttle-debounce: 3.0.1 528 | ts-essentials: 9.1.0 529 | vue-demi: 0.12.1 530 | transitivePeerDependencies: 531 | - typescript 532 | dev: false 533 | 534 | /@wry/context/0.6.1: 535 | resolution: {integrity: sha512-LOmVnY1iTU2D8tv4Xf6MVMZZ+juIJ87Kt/plMijjN20NMAXGmH4u8bS1t0uT74cZ5gwpocYueV58YwyI8y+GKw==} 536 | engines: {node: '>=8'} 537 | dependencies: 538 | tslib: 2.3.1 539 | dev: false 540 | 541 | /@wry/equality/0.5.2: 542 | resolution: {integrity: sha512-oVMxbUXL48EV/C0/M7gLVsoK6qRHPS85x8zECofEZOVvxGmIPLA9o5Z27cc2PoAyZz1S2VoM2A7FLAnpfGlneA==} 543 | engines: {node: '>=8'} 544 | dependencies: 545 | tslib: 2.3.1 546 | dev: false 547 | 548 | /@wry/trie/0.3.1: 549 | resolution: {integrity: sha512-WwB53ikYudh9pIorgxrkHKrQZcCqNM/Q/bDzZBffEaGUKGuHrRb3zZUT9Sh2qw9yogC7SsdRmQ1ER0pqvd3bfw==} 550 | engines: {node: '>=8'} 551 | dependencies: 552 | tslib: 2.3.1 553 | dev: false 554 | 555 | /ajv-keywords/3.5.2_ajv@6.12.6: 556 | resolution: {integrity: sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==} 557 | peerDependencies: 558 | ajv: ^6.9.1 559 | dependencies: 560 | ajv: 6.12.6 561 | dev: false 562 | 563 | /ajv/6.12.6: 564 | resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} 565 | dependencies: 566 | fast-deep-equal: 3.1.3 567 | fast-json-stable-stringify: 2.1.0 568 | json-schema-traverse: 0.4.1 569 | uri-js: 4.4.1 570 | dev: false 571 | 572 | /ansi-styles/3.2.1: 573 | resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} 574 | engines: {node: '>=4'} 575 | dependencies: 576 | color-convert: 1.9.3 577 | dev: true 578 | optional: true 579 | 580 | /ansi-styles/4.3.0: 581 | resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} 582 | engines: {node: '>=8'} 583 | dependencies: 584 | color-convert: 2.0.1 585 | dev: true 586 | 587 | /anymatch/3.1.2: 588 | resolution: {integrity: sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==} 589 | engines: {node: '>= 8'} 590 | dependencies: 591 | normalize-path: 3.0.0 592 | picomatch: 2.3.0 593 | dev: false 594 | 595 | /array-union/2.1.0: 596 | resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} 597 | engines: {node: '>=8'} 598 | 599 | /balanced-match/1.0.2: 600 | resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} 601 | dev: true 602 | 603 | /big.js/5.2.2: 604 | resolution: {integrity: sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==} 605 | dev: false 606 | 607 | /brace-expansion/1.1.11: 608 | resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} 609 | dependencies: 610 | balanced-match: 1.0.2 611 | concat-map: 0.0.1 612 | dev: true 613 | 614 | /braces/3.0.2: 615 | resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} 616 | engines: {node: '>=8'} 617 | dependencies: 618 | fill-range: 7.0.1 619 | 620 | /browserslist/4.19.1: 621 | resolution: {integrity: sha512-u2tbbG5PdKRTUoctO3NBD8FQ5HdPh1ZXPHzp1rwaa5jTc+RV9/+RlWiAIKmjRPQF+xbGM9Kklj5bZQFa2s/38A==} 622 | engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} 623 | hasBin: true 624 | dependencies: 625 | caniuse-lite: 1.0.30001292 626 | electron-to-chromium: 1.4.27 627 | escalade: 3.1.1 628 | node-releases: 2.0.1 629 | picocolors: 1.0.0 630 | dev: false 631 | 632 | /buffer-from/1.1.2: 633 | resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} 634 | dev: false 635 | 636 | /builtin-modules/3.2.0: 637 | resolution: {integrity: sha512-lGzLKcioL90C7wMczpkY0n/oART3MbBa8R9OFGE1rJxoVI86u4WAGfEk8Wjv10eKSyTHVGkSo3bvBylCEtk7LA==} 638 | engines: {node: '>=6'} 639 | dev: true 640 | 641 | /caniuse-lite/1.0.30001292: 642 | resolution: {integrity: sha512-jnT4Tq0Q4ma+6nncYQVe7d73kmDmE9C3OGTx3MvW7lBM/eY1S1DZTMBON7dqV481RhNiS5OxD7k9JQvmDOTirw==} 643 | dev: false 644 | 645 | /chalk/2.4.2: 646 | resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} 647 | engines: {node: '>=4'} 648 | dependencies: 649 | ansi-styles: 3.2.1 650 | escape-string-regexp: 1.0.5 651 | supports-color: 5.5.0 652 | dev: true 653 | optional: true 654 | 655 | /chalk/4.1.2: 656 | resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} 657 | engines: {node: '>=10'} 658 | dependencies: 659 | ansi-styles: 4.3.0 660 | supports-color: 7.2.0 661 | dev: true 662 | 663 | /color-convert/1.9.3: 664 | resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} 665 | dependencies: 666 | color-name: 1.1.3 667 | dev: true 668 | optional: true 669 | 670 | /color-convert/2.0.1: 671 | resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} 672 | engines: {node: '>=7.0.0'} 673 | dependencies: 674 | color-name: 1.1.4 675 | dev: true 676 | 677 | /color-name/1.1.3: 678 | resolution: {integrity: sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=} 679 | dev: true 680 | optional: true 681 | 682 | /color-name/1.1.4: 683 | resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} 684 | dev: true 685 | 686 | /commander/2.20.3: 687 | resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} 688 | dev: false 689 | 690 | /commondir/1.0.1: 691 | resolution: {integrity: sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=} 692 | dev: true 693 | 694 | /concat-map/0.0.1: 695 | resolution: {integrity: sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=} 696 | dev: true 697 | 698 | /consola/2.15.3: 699 | resolution: {integrity: sha512-9vAdYbHj6x2fLKC4+oPH0kFzY/orMZyG2Aj+kNylHxKGJ/Ed4dpNyAQYwJOdqO4zdM7XpVHmyejQDcQHrnuXbw==} 700 | 701 | /cookie-es/0.5.0: 702 | resolution: {integrity: sha512-RyZrFi6PNpBFbIaQjXDlFIhFVqV42QeKSZX1yQIl6ihImq6vcHNGMtqQ/QzY3RMPuYSkvsRwtnt5M9NeYxKt0g==} 703 | dev: false 704 | 705 | /create-require/1.1.1: 706 | resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} 707 | 708 | /deepmerge/4.2.2: 709 | resolution: {integrity: sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==} 710 | engines: {node: '>=0.10.0'} 711 | dev: true 712 | 713 | /defu/2.0.4: 714 | resolution: {integrity: sha512-G9pEH1UUMxShy6syWk01VQSRVs3CDWtlxtZu7A+NyqjxaCA4gSlWAKDBx6QiUEKezqS8+DUlXLI14Fp05Hmpwg==} 715 | dev: false 716 | 717 | /defu/5.0.0: 718 | resolution: {integrity: sha512-VHg73EDeRXlu7oYWRmmrNp/nl7QkdXUxkQQKig0Zk8daNmm84AbGoC8Be6/VVLJEKxn12hR0UBmz8O+xQiAPKQ==} 719 | 720 | /destr/1.1.0: 721 | resolution: {integrity: sha512-Ev/sqS5AzzDwlpor/5wFCDu0dYMQu/0x2D6XfAsQ0E7uQmamIgYJ6Dppo2T2EOFVkeVYWjc+PCLKaqZZ57qmLg==} 722 | dev: false 723 | 724 | /dir-glob/3.0.1: 725 | resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} 726 | engines: {node: '>=8'} 727 | dependencies: 728 | path-type: 4.0.0 729 | 730 | /dotenv/10.0.0: 731 | resolution: {integrity: sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q==} 732 | engines: {node: '>=10'} 733 | dev: false 734 | 735 | /electron-to-chromium/1.4.27: 736 | resolution: {integrity: sha512-uZ95szi3zUbzRDx1zx/xnsCG+2xgZyy57pDOeaeO4r8zx5Dqe8Jv1ti8cunvBwJHVI5LzPuw8umKwZb3WKYxSQ==} 737 | dev: false 738 | 739 | /emojis-list/3.0.0: 740 | resolution: {integrity: sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==} 741 | engines: {node: '>= 4'} 742 | dev: false 743 | 744 | /esbuild-android-arm64/0.13.15: 745 | resolution: {integrity: sha512-m602nft/XXeO8YQPUDVoHfjyRVPdPgjyyXOxZ44MK/agewFFkPa8tUo6lAzSWh5Ui5PB4KR9UIFTSBKh/RrCmg==} 746 | cpu: [arm64] 747 | os: [android] 748 | requiresBuild: true 749 | dev: true 750 | optional: true 751 | 752 | /esbuild-darwin-64/0.13.15: 753 | resolution: {integrity: sha512-ihOQRGs2yyp7t5bArCwnvn2Atr6X4axqPpEdCFPVp7iUj4cVSdisgvEKdNR7yH3JDjW6aQDw40iQFoTqejqxvQ==} 754 | cpu: [x64] 755 | os: [darwin] 756 | requiresBuild: true 757 | dev: true 758 | optional: true 759 | 760 | /esbuild-darwin-arm64/0.13.15: 761 | resolution: {integrity: sha512-i1FZssTVxUqNlJ6cBTj5YQj4imWy3m49RZRnHhLpefFIh0To05ow9DTrXROTE1urGTQCloFUXTX8QfGJy1P8dQ==} 762 | cpu: [arm64] 763 | os: [darwin] 764 | requiresBuild: true 765 | dev: true 766 | optional: true 767 | 768 | /esbuild-freebsd-64/0.13.15: 769 | resolution: {integrity: sha512-G3dLBXUI6lC6Z09/x+WtXBXbOYQZ0E8TDBqvn7aMaOCzryJs8LyVXKY4CPnHFXZAbSwkCbqiPuSQ1+HhrNk7EA==} 770 | cpu: [x64] 771 | os: [freebsd] 772 | requiresBuild: true 773 | dev: true 774 | optional: true 775 | 776 | /esbuild-freebsd-arm64/0.13.15: 777 | resolution: {integrity: sha512-KJx0fzEDf1uhNOZQStV4ujg30WlnwqUASaGSFPhznLM/bbheu9HhqZ6mJJZM32lkyfGJikw0jg7v3S0oAvtvQQ==} 778 | cpu: [arm64] 779 | os: [freebsd] 780 | requiresBuild: true 781 | dev: true 782 | optional: true 783 | 784 | /esbuild-linux-32/0.13.15: 785 | resolution: {integrity: sha512-ZvTBPk0YWCLMCXiFmD5EUtB30zIPvC5Itxz0mdTu/xZBbbHJftQgLWY49wEPSn2T/TxahYCRDWun5smRa0Tu+g==} 786 | cpu: [ia32] 787 | os: [linux] 788 | requiresBuild: true 789 | dev: true 790 | optional: true 791 | 792 | /esbuild-linux-64/0.13.15: 793 | resolution: {integrity: sha512-eCKzkNSLywNeQTRBxJRQ0jxRCl2YWdMB3+PkWFo2BBQYC5mISLIVIjThNtn6HUNqua1pnvgP5xX0nHbZbPj5oA==} 794 | cpu: [x64] 795 | os: [linux] 796 | requiresBuild: true 797 | dev: true 798 | optional: true 799 | 800 | /esbuild-linux-arm/0.13.15: 801 | resolution: {integrity: sha512-wUHttDi/ol0tD8ZgUMDH8Ef7IbDX+/UsWJOXaAyTdkT7Yy9ZBqPg8bgB/Dn3CZ9SBpNieozrPRHm0BGww7W/jA==} 802 | cpu: [arm] 803 | os: [linux] 804 | requiresBuild: true 805 | dev: true 806 | optional: true 807 | 808 | /esbuild-linux-arm64/0.13.15: 809 | resolution: {integrity: sha512-bYpuUlN6qYU9slzr/ltyLTR9YTBS7qUDymO8SV7kjeNext61OdmqFAzuVZom+OLW1HPHseBfJ/JfdSlx8oTUoA==} 810 | cpu: [arm64] 811 | os: [linux] 812 | requiresBuild: true 813 | dev: true 814 | optional: true 815 | 816 | /esbuild-linux-mips64le/0.13.15: 817 | resolution: {integrity: sha512-KlVjIG828uFPyJkO/8gKwy9RbXhCEUeFsCGOJBepUlpa7G8/SeZgncUEz/tOOUJTcWMTmFMtdd3GElGyAtbSWg==} 818 | cpu: [mips64el] 819 | os: [linux] 820 | requiresBuild: true 821 | dev: true 822 | optional: true 823 | 824 | /esbuild-linux-ppc64le/0.13.15: 825 | resolution: {integrity: sha512-h6gYF+OsaqEuBjeesTBtUPw0bmiDu7eAeuc2OEH9S6mV9/jPhPdhOWzdeshb0BskRZxPhxPOjqZ+/OqLcxQwEQ==} 826 | cpu: [ppc64] 827 | os: [linux] 828 | requiresBuild: true 829 | dev: true 830 | optional: true 831 | 832 | /esbuild-netbsd-64/0.13.15: 833 | resolution: {integrity: sha512-3+yE9emwoevLMyvu+iR3rsa+Xwhie7ZEHMGDQ6dkqP/ndFzRHkobHUKTe+NCApSqG5ce2z4rFu+NX/UHnxlh3w==} 834 | cpu: [x64] 835 | os: [netbsd] 836 | requiresBuild: true 837 | dev: true 838 | optional: true 839 | 840 | /esbuild-openbsd-64/0.13.15: 841 | resolution: {integrity: sha512-wTfvtwYJYAFL1fSs8yHIdf5GEE4NkbtbXtjLWjM3Cw8mmQKqsg8kTiqJ9NJQe5NX/5Qlo7Xd9r1yKMMkHllp5g==} 842 | cpu: [x64] 843 | os: [openbsd] 844 | requiresBuild: true 845 | dev: true 846 | optional: true 847 | 848 | /esbuild-sunos-64/0.13.15: 849 | resolution: {integrity: sha512-lbivT9Bx3t1iWWrSnGyBP9ODriEvWDRiweAs69vI+miJoeKwHWOComSRukttbuzjZ8r1q0mQJ8Z7yUsDJ3hKdw==} 850 | cpu: [x64] 851 | os: [sunos] 852 | requiresBuild: true 853 | dev: true 854 | optional: true 855 | 856 | /esbuild-windows-32/0.13.15: 857 | resolution: {integrity: sha512-fDMEf2g3SsJ599MBr50cY5ve5lP1wyVwTe6aLJsM01KtxyKkB4UT+fc5MXQFn3RLrAIAZOG+tHC+yXObpSn7Nw==} 858 | cpu: [ia32] 859 | os: [win32] 860 | requiresBuild: true 861 | dev: true 862 | optional: true 863 | 864 | /esbuild-windows-64/0.13.15: 865 | resolution: {integrity: sha512-9aMsPRGDWCd3bGjUIKG/ZOJPKsiztlxl/Q3C1XDswO6eNX/Jtwu4M+jb6YDH9hRSUflQWX0XKAfWzgy5Wk54JQ==} 866 | cpu: [x64] 867 | os: [win32] 868 | requiresBuild: true 869 | dev: true 870 | optional: true 871 | 872 | /esbuild-windows-arm64/0.13.15: 873 | resolution: {integrity: sha512-zzvyCVVpbwQQATaf3IG8mu1IwGEiDxKkYUdA4FpoCHi1KtPa13jeScYDjlW0Qh+ebWzpKfR2ZwvqAQkSWNcKjA==} 874 | cpu: [arm64] 875 | os: [win32] 876 | requiresBuild: true 877 | dev: true 878 | optional: true 879 | 880 | /esbuild/0.13.15: 881 | resolution: {integrity: sha512-raCxt02HBKv8RJxE8vkTSCXGIyKHdEdGfUmiYb8wnabnaEmHzyW7DCHb5tEN0xU8ryqg5xw54mcwnYkC4x3AIw==} 882 | hasBin: true 883 | requiresBuild: true 884 | optionalDependencies: 885 | esbuild-android-arm64: 0.13.15 886 | esbuild-darwin-64: 0.13.15 887 | esbuild-darwin-arm64: 0.13.15 888 | esbuild-freebsd-64: 0.13.15 889 | esbuild-freebsd-arm64: 0.13.15 890 | esbuild-linux-32: 0.13.15 891 | esbuild-linux-64: 0.13.15 892 | esbuild-linux-arm: 0.13.15 893 | esbuild-linux-arm64: 0.13.15 894 | esbuild-linux-mips64le: 0.13.15 895 | esbuild-linux-ppc64le: 0.13.15 896 | esbuild-netbsd-64: 0.13.15 897 | esbuild-openbsd-64: 0.13.15 898 | esbuild-sunos-64: 0.13.15 899 | esbuild-windows-32: 0.13.15 900 | esbuild-windows-64: 0.13.15 901 | esbuild-windows-arm64: 0.13.15 902 | dev: true 903 | 904 | /escalade/3.1.1: 905 | resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} 906 | engines: {node: '>=6'} 907 | dev: false 908 | 909 | /escape-string-regexp/1.0.5: 910 | resolution: {integrity: sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=} 911 | engines: {node: '>=0.8.0'} 912 | dev: true 913 | optional: true 914 | 915 | /estree-walker/1.0.1: 916 | resolution: {integrity: sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==} 917 | dev: true 918 | 919 | /estree-walker/2.0.2: 920 | resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} 921 | dev: true 922 | 923 | /fast-deep-equal/3.1.3: 924 | resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} 925 | dev: false 926 | 927 | /fast-glob/3.2.7: 928 | resolution: {integrity: sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q==} 929 | engines: {node: '>=8'} 930 | dependencies: 931 | '@nodelib/fs.stat': 2.0.5 932 | '@nodelib/fs.walk': 1.2.8 933 | glob-parent: 5.1.2 934 | merge2: 1.4.1 935 | micromatch: 4.0.4 936 | 937 | /fast-json-stable-stringify/2.1.0: 938 | resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} 939 | dev: false 940 | 941 | /fastq/1.13.0: 942 | resolution: {integrity: sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==} 943 | dependencies: 944 | reusify: 1.0.4 945 | 946 | /fill-range/7.0.1: 947 | resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} 948 | engines: {node: '>=8'} 949 | dependencies: 950 | to-regex-range: 5.0.1 951 | 952 | /flat/5.0.2: 953 | resolution: {integrity: sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==} 954 | hasBin: true 955 | dev: false 956 | 957 | /fs-extra/10.0.0: 958 | resolution: {integrity: sha512-C5owb14u9eJwizKGdchcDUQeFtlSHHthBk8pbX9Vc1PFZrLombudjDnNns88aYslCyF6IY5SUw3Roz6xShcEIQ==} 959 | engines: {node: '>=12'} 960 | dependencies: 961 | graceful-fs: 4.2.8 962 | jsonfile: 6.1.0 963 | universalify: 2.0.0 964 | dev: true 965 | 966 | /fs.realpath/1.0.0: 967 | resolution: {integrity: sha1-FQStJSMVjKpA20onh8sBQRmU6k8=} 968 | dev: true 969 | 970 | /fsevents/2.3.2: 971 | resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} 972 | engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} 973 | os: [darwin] 974 | requiresBuild: true 975 | dev: true 976 | optional: true 977 | 978 | /function-bind/1.1.1: 979 | resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} 980 | dev: true 981 | 982 | /glob-parent/5.1.2: 983 | resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} 984 | engines: {node: '>= 6'} 985 | dependencies: 986 | is-glob: 4.0.3 987 | 988 | /glob/7.2.0: 989 | resolution: {integrity: sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==} 990 | dependencies: 991 | fs.realpath: 1.0.0 992 | inflight: 1.0.6 993 | inherits: 2.0.4 994 | minimatch: 3.0.4 995 | once: 1.4.0 996 | path-is-absolute: 1.0.1 997 | dev: true 998 | 999 | /globby/11.0.4: 1000 | resolution: {integrity: sha512-9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg==} 1001 | engines: {node: '>=10'} 1002 | dependencies: 1003 | array-union: 2.1.0 1004 | dir-glob: 3.0.1 1005 | fast-glob: 3.2.7 1006 | ignore: 5.2.0 1007 | merge2: 1.4.1 1008 | slash: 3.0.0 1009 | 1010 | /graceful-fs/4.2.8: 1011 | resolution: {integrity: sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==} 1012 | dev: true 1013 | 1014 | /graphql-tag/2.12.6: 1015 | resolution: {integrity: sha512-FdSNcu2QQcWnM2VNvSCCDCVS5PpPqpzgFT8+GXzqJuoDd0CBncxCY278u4mhRO7tMgo2JjgJA5aZ+nWSQ/Z+xg==} 1016 | engines: {node: '>=10'} 1017 | peerDependencies: 1018 | graphql: ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 1019 | dependencies: 1020 | tslib: 2.3.1 1021 | dev: false 1022 | 1023 | /has-flag/3.0.0: 1024 | resolution: {integrity: sha1-tdRU3CGZriJWmfNGfloH87lVuv0=} 1025 | engines: {node: '>=4'} 1026 | dev: true 1027 | optional: true 1028 | 1029 | /has-flag/4.0.0: 1030 | resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} 1031 | engines: {node: '>=8'} 1032 | dev: true 1033 | 1034 | /has/1.0.3: 1035 | resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} 1036 | engines: {node: '>= 0.4.0'} 1037 | dependencies: 1038 | function-bind: 1.1.1 1039 | dev: true 1040 | 1041 | /hash-sum/2.0.0: 1042 | resolution: {integrity: sha512-WdZTbAByD+pHfl/g9QSsBIIwy8IT+EsPiKDs0KNX+zSHhdDLFKdZu0BQHljvO+0QI/BasbMSUa8wYNCZTvhslg==} 1043 | dev: false 1044 | 1045 | /hoist-non-react-statics/3.3.2: 1046 | resolution: {integrity: sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==} 1047 | dependencies: 1048 | react-is: 16.13.1 1049 | dev: false 1050 | 1051 | /ignore/5.2.0: 1052 | resolution: {integrity: sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==} 1053 | engines: {node: '>= 4'} 1054 | 1055 | /inflight/1.0.6: 1056 | resolution: {integrity: sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=} 1057 | dependencies: 1058 | once: 1.4.0 1059 | wrappy: 1.0.2 1060 | dev: true 1061 | 1062 | /inherits/2.0.4: 1063 | resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} 1064 | dev: true 1065 | 1066 | /is-core-module/2.8.0: 1067 | resolution: {integrity: sha512-vd15qHsaqrRL7dtH6QNuy0ndJmRDrS9HAM1CAiSifNUFv4x1a0CCVsj18hJ1mShxIG6T2i1sO78MkP56r0nYRw==} 1068 | dependencies: 1069 | has: 1.0.3 1070 | dev: true 1071 | 1072 | /is-extglob/2.1.1: 1073 | resolution: {integrity: sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=} 1074 | engines: {node: '>=0.10.0'} 1075 | 1076 | /is-glob/4.0.3: 1077 | resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} 1078 | engines: {node: '>=0.10.0'} 1079 | dependencies: 1080 | is-extglob: 2.1.1 1081 | 1082 | /is-module/1.0.0: 1083 | resolution: {integrity: sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=} 1084 | dev: true 1085 | 1086 | /is-number/7.0.0: 1087 | resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} 1088 | engines: {node: '>=0.12.0'} 1089 | 1090 | /is-reference/1.2.1: 1091 | resolution: {integrity: sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==} 1092 | dependencies: 1093 | '@types/estree': 0.0.50 1094 | dev: true 1095 | 1096 | /jiti/1.12.9: 1097 | resolution: {integrity: sha512-TdcJywkQtcwLxogc4rSMAi479G2eDPzfW0fLySks7TPhgZZ4s/tM6stnzayIh3gS/db3zExWJyUx4cNWrwAmoQ==} 1098 | hasBin: true 1099 | 1100 | /joycon/3.1.1: 1101 | resolution: {integrity: sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==} 1102 | engines: {node: '>=10'} 1103 | dev: true 1104 | 1105 | /js-tokens/4.0.0: 1106 | resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} 1107 | 1108 | /json-schema-traverse/0.4.1: 1109 | resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} 1110 | dev: false 1111 | 1112 | /json5/2.2.0: 1113 | resolution: {integrity: sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==} 1114 | engines: {node: '>=6'} 1115 | hasBin: true 1116 | dependencies: 1117 | minimist: 1.2.5 1118 | dev: false 1119 | 1120 | /jsonc-parser/3.0.0: 1121 | resolution: {integrity: sha512-fQzRfAbIBnR0IQvftw9FJveWiHp72Fg20giDrHz6TdfB12UH/uue0D3hm57UB5KgAVuniLMCaS8P1IMj9NR7cA==} 1122 | 1123 | /jsonfile/6.1.0: 1124 | resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} 1125 | dependencies: 1126 | universalify: 2.0.0 1127 | optionalDependencies: 1128 | graceful-fs: 4.2.8 1129 | dev: true 1130 | 1131 | /klona/2.0.5: 1132 | resolution: {integrity: sha512-pJiBpiXMbt7dkzXe8Ghj/u4FfXOOa98fPW+bihOJ4SjnoijweJrNThJfd3ifXpXhREjpoF2mZVH1GfS9LV3kHQ==} 1133 | engines: {node: '>= 8'} 1134 | dev: false 1135 | 1136 | /loader-utils/2.0.2: 1137 | resolution: {integrity: sha512-TM57VeHptv569d/GKh6TAYdzKblwDNiumOdkFnejjD0XwTH87K90w3O7AiJRqdQoXygvi1VQTJTLGhJl7WqA7A==} 1138 | engines: {node: '>=8.9.0'} 1139 | dependencies: 1140 | big.js: 5.2.2 1141 | emojis-list: 3.0.0 1142 | json5: 2.2.0 1143 | dev: false 1144 | 1145 | /lodash._reinterpolate/3.0.0: 1146 | resolution: {integrity: sha512-xYHt68QRoYGjeeM/XOE1uJtvXQAgvszfBhjV4yvsQH0u2i9I6cI6c6/eG4Hh3UAOVn0y/xAXwmTzEay49Q//HA==} 1147 | dev: false 1148 | 1149 | /lodash.template/4.5.0: 1150 | resolution: {integrity: sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A==} 1151 | dependencies: 1152 | lodash._reinterpolate: 3.0.0 1153 | lodash.templatesettings: 4.2.0 1154 | dev: false 1155 | 1156 | /lodash.templatesettings/4.2.0: 1157 | resolution: {integrity: sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ==} 1158 | dependencies: 1159 | lodash._reinterpolate: 3.0.0 1160 | dev: false 1161 | 1162 | /loose-envify/1.4.0: 1163 | resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} 1164 | hasBin: true 1165 | dependencies: 1166 | js-tokens: 4.0.0 1167 | dev: false 1168 | 1169 | /lru-cache/6.0.0: 1170 | resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} 1171 | engines: {node: '>=10'} 1172 | dependencies: 1173 | yallist: 4.0.0 1174 | dev: false 1175 | 1176 | /magic-string/0.25.7: 1177 | resolution: {integrity: sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==} 1178 | dependencies: 1179 | sourcemap-codec: 1.4.8 1180 | dev: true 1181 | 1182 | /merge2/1.4.1: 1183 | resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} 1184 | engines: {node: '>= 8'} 1185 | 1186 | /micromatch/4.0.4: 1187 | resolution: {integrity: sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==} 1188 | engines: {node: '>=8.6'} 1189 | dependencies: 1190 | braces: 3.0.2 1191 | picomatch: 2.3.0 1192 | 1193 | /minimatch/3.0.4: 1194 | resolution: {integrity: sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==} 1195 | dependencies: 1196 | brace-expansion: 1.1.11 1197 | dev: true 1198 | 1199 | /minimist/1.2.5: 1200 | resolution: {integrity: sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==} 1201 | dev: false 1202 | 1203 | /mkdirp/1.0.4: 1204 | resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} 1205 | engines: {node: '>=10'} 1206 | hasBin: true 1207 | dev: true 1208 | 1209 | /mkdist/0.3.8_typescript@4.5.4: 1210 | resolution: {integrity: sha512-XPfx3KkJPpxPE17csksGoJkTerOcVIoBpJQATiwn5kZ3pwb9wPmeAoAbShm0WwPfzGvv4k8pZyA9/SFf+BF+Jg==} 1211 | hasBin: true 1212 | peerDependencies: 1213 | typescript: '>=3.7' 1214 | peerDependenciesMeta: 1215 | typescript: 1216 | optional: true 1217 | dependencies: 1218 | defu: 5.0.0 1219 | esbuild: 0.13.15 1220 | fs-extra: 10.0.0 1221 | globby: 11.0.4 1222 | jiti: 1.12.9 1223 | mri: 1.2.0 1224 | pathe: 0.2.0 1225 | typescript: 4.5.4 1226 | dev: true 1227 | 1228 | /mlly/0.3.16: 1229 | resolution: {integrity: sha512-DVydmuR8fmiMetH39kp8VXYslN0XDh+OxULuU/ov8TMwVIxDGQ8PsJIrNi6cZZaHiIYL6wtO6+sjGpVc7msKUg==} 1230 | 1231 | /mri/1.2.0: 1232 | resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} 1233 | engines: {node: '>=4'} 1234 | dev: true 1235 | 1236 | /neo-async/2.6.2: 1237 | resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} 1238 | dev: false 1239 | 1240 | /node-releases/2.0.1: 1241 | resolution: {integrity: sha512-CqyzN6z7Q6aMeF/ktcMVTzhAHCEpf8SOarwpzpf8pNBY2k5/oM34UHldUwp8VKI7uxct2HxSRdJjBaZeESzcxA==} 1242 | dev: false 1243 | 1244 | /normalize-path/3.0.0: 1245 | resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} 1246 | engines: {node: '>=0.10.0'} 1247 | dev: false 1248 | 1249 | /object-assign/4.1.1: 1250 | resolution: {integrity: sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=} 1251 | engines: {node: '>=0.10.0'} 1252 | dev: false 1253 | 1254 | /once/1.4.0: 1255 | resolution: {integrity: sha1-WDsap3WWHUsROsF9nFC6753Xa9E=} 1256 | dependencies: 1257 | wrappy: 1.0.2 1258 | dev: true 1259 | 1260 | /optimism/0.16.1: 1261 | resolution: {integrity: sha512-64i+Uw3otrndfq5kaoGNoY7pvOhSsjFEN4bdEFh80MWVk/dbgJfMv7VFDeCT8LxNAlEVhQmdVEbfE7X2nWNIIg==} 1262 | dependencies: 1263 | '@wry/context': 0.6.1 1264 | '@wry/trie': 0.3.1 1265 | dev: false 1266 | 1267 | /path-is-absolute/1.0.1: 1268 | resolution: {integrity: sha1-F0uSaHNVNP+8es5r9TpanhtcX18=} 1269 | engines: {node: '>=0.10.0'} 1270 | dev: true 1271 | 1272 | /path-parse/1.0.7: 1273 | resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} 1274 | dev: true 1275 | 1276 | /path-type/4.0.0: 1277 | resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} 1278 | engines: {node: '>=8'} 1279 | 1280 | /pathe/0.2.0: 1281 | resolution: {integrity: sha512-sTitTPYnn23esFR3RlqYBWn4c45WGeLcsKzQiUpXJAyfcWkolvlYpV8FLo7JishK946oQwMFUCHXQ9AjGPKExw==} 1282 | 1283 | /picocolors/0.2.1: 1284 | resolution: {integrity: sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==} 1285 | dev: false 1286 | 1287 | /picocolors/1.0.0: 1288 | resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} 1289 | dev: false 1290 | 1291 | /picomatch/2.3.0: 1292 | resolution: {integrity: sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==} 1293 | engines: {node: '>=8.6'} 1294 | 1295 | /pkg-types/0.3.2: 1296 | resolution: {integrity: sha512-eBYzX/7NYsQEOR2alWY4rnQB49G62oHzFpoi9Som56aUr8vB8UGcmcIia9v8fpBeuhH3Ltentuk2OGpp4IQV3Q==} 1297 | dependencies: 1298 | jsonc-parser: 3.0.0 1299 | mlly: 0.3.16 1300 | pathe: 0.2.0 1301 | dev: false 1302 | 1303 | /postcss/7.0.39: 1304 | resolution: {integrity: sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==} 1305 | engines: {node: '>=6.0.0'} 1306 | dependencies: 1307 | picocolors: 0.2.1 1308 | source-map: 0.6.1 1309 | dev: false 1310 | 1311 | /pretty-bytes/5.6.0: 1312 | resolution: {integrity: sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==} 1313 | engines: {node: '>=6'} 1314 | dev: true 1315 | 1316 | /prop-types/15.8.0: 1317 | resolution: {integrity: sha512-fDGekdaHh65eI3lMi5OnErU6a8Ighg2KjcjQxO7m8VHyWjcPyj5kiOgV1LQDOOOgVy3+5FgjXvdSSX7B8/5/4g==} 1318 | dependencies: 1319 | loose-envify: 1.4.0 1320 | object-assign: 4.1.1 1321 | react-is: 16.13.1 1322 | dev: false 1323 | 1324 | /punycode/2.1.1: 1325 | resolution: {integrity: sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==} 1326 | engines: {node: '>=6'} 1327 | dev: false 1328 | 1329 | /queue-microtask/1.2.3: 1330 | resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} 1331 | 1332 | /rc9/1.2.0: 1333 | resolution: {integrity: sha512-/jknmhG0USFAx5uoKkAKhtG40sONds9RWhFHrP1UzJ3OvVfqFWOypSUpmsQD0fFwAV7YtzHhsn3QNasfAoxgcQ==} 1334 | dependencies: 1335 | defu: 2.0.4 1336 | destr: 1.1.0 1337 | flat: 5.0.2 1338 | dev: false 1339 | 1340 | /react-is/16.13.1: 1341 | resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} 1342 | dev: false 1343 | 1344 | /resolve/1.20.0: 1345 | resolution: {integrity: sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==} 1346 | dependencies: 1347 | is-core-module: 2.8.0 1348 | path-parse: 1.0.7 1349 | dev: true 1350 | 1351 | /reusify/1.0.4: 1352 | resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} 1353 | engines: {iojs: '>=1.0.0', node: '>=0.10.0'} 1354 | 1355 | /rimraf/3.0.2: 1356 | resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} 1357 | hasBin: true 1358 | dependencies: 1359 | glob: 7.2.0 1360 | dev: true 1361 | 1362 | /rollup-plugin-dts/4.0.1_rollup@2.61.1+typescript@4.5.4: 1363 | resolution: {integrity: sha512-DNv5F8pro/r0Hkx3JWKRtJZocDnqXfgypoajeiaNq134rYaFcEIl/oas5PogD1qexMadVijsHyVko1Chig0OOQ==} 1364 | engines: {node: '>=v12.22.6'} 1365 | peerDependencies: 1366 | rollup: ^2.56.3 1367 | typescript: ^4.4.2 1368 | dependencies: 1369 | magic-string: 0.25.7 1370 | rollup: 2.61.1 1371 | typescript: 4.5.4 1372 | optionalDependencies: 1373 | '@babel/code-frame': 7.16.0 1374 | dev: true 1375 | 1376 | /rollup-plugin-esbuild/4.7.2_esbuild@0.13.15+rollup@2.61.1: 1377 | resolution: {integrity: sha512-rBS2hTedtG+wL/yyIWQ84zju5rtfF15gkaCLN0vsWGmBdRd0UPm52meAwkmrsPQf3mB/H2o+k9Q8Ce8A66SE5A==} 1378 | engines: {node: '>=12'} 1379 | peerDependencies: 1380 | esbuild: '>=0.10.1' 1381 | rollup: ^1.20.0 || ^2.0.0 1382 | dependencies: 1383 | '@rollup/pluginutils': 4.1.2 1384 | esbuild: 0.13.15 1385 | joycon: 3.1.1 1386 | jsonc-parser: 3.0.0 1387 | rollup: 2.61.1 1388 | dev: true 1389 | 1390 | /rollup/2.61.1: 1391 | resolution: {integrity: sha512-BbTXlEvB8d+XFbK/7E5doIcRtxWPRiqr0eb5vQ0+2paMM04Ye4PZY5nHOQef2ix24l/L0SpLd5hwcH15QHPdvA==} 1392 | engines: {node: '>=10.0.0'} 1393 | hasBin: true 1394 | optionalDependencies: 1395 | fsevents: 2.3.2 1396 | dev: true 1397 | 1398 | /run-parallel/1.2.0: 1399 | resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} 1400 | dependencies: 1401 | queue-microtask: 1.2.3 1402 | 1403 | /sass-loader/10.1.1: 1404 | resolution: {integrity: sha512-W6gVDXAd5hR/WHsPicvZdjAWHBcEJ44UahgxcIE196fW2ong0ZHMPO1kZuI5q0VlvMQZh32gpv69PLWQm70qrw==} 1405 | engines: {node: '>= 10.13.0'} 1406 | peerDependencies: 1407 | fibers: '>= 3.1.0' 1408 | node-sass: ^4.0.0 || ^5.0.0 1409 | sass: ^1.3.0 1410 | webpack: ^4.36.0 || ^5.0.0 1411 | peerDependenciesMeta: 1412 | fibers: 1413 | optional: true 1414 | node-sass: 1415 | optional: true 1416 | sass: 1417 | optional: true 1418 | dependencies: 1419 | klona: 2.0.5 1420 | loader-utils: 2.0.2 1421 | neo-async: 2.6.2 1422 | schema-utils: 3.1.1 1423 | semver: 7.3.5 1424 | dev: false 1425 | 1426 | /schema-utils/3.1.1: 1427 | resolution: {integrity: sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==} 1428 | engines: {node: '>= 10.13.0'} 1429 | dependencies: 1430 | '@types/json-schema': 7.0.9 1431 | ajv: 6.12.6 1432 | ajv-keywords: 3.5.2_ajv@6.12.6 1433 | dev: false 1434 | 1435 | /scule/0.2.1: 1436 | resolution: {integrity: sha512-M9gnWtn3J0W+UhJOHmBxBTwv8mZCan5i1Himp60t6vvZcor0wr+IM0URKmIglsWJ7bRujNAVVN77fp+uZaWoKg==} 1437 | 1438 | /semver/7.3.5: 1439 | resolution: {integrity: sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==} 1440 | engines: {node: '>=10'} 1441 | hasBin: true 1442 | dependencies: 1443 | lru-cache: 6.0.0 1444 | dev: false 1445 | 1446 | /slash/3.0.0: 1447 | resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} 1448 | engines: {node: '>=8'} 1449 | 1450 | /source-map-support/0.5.21: 1451 | resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} 1452 | dependencies: 1453 | buffer-from: 1.1.2 1454 | source-map: 0.6.1 1455 | dev: false 1456 | 1457 | /source-map/0.6.1: 1458 | resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} 1459 | engines: {node: '>=0.10.0'} 1460 | dev: false 1461 | 1462 | /source-map/0.7.3: 1463 | resolution: {integrity: sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==} 1464 | engines: {node: '>= 8'} 1465 | dev: false 1466 | 1467 | /sourcemap-codec/1.4.8: 1468 | resolution: {integrity: sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==} 1469 | dev: true 1470 | 1471 | /std-env/3.0.1: 1472 | resolution: {integrity: sha512-mC1Ps9l77/97qeOZc+HrOL7TIaOboHqMZ24dGVQrlxFcpPpfCHpH+qfUT7Dz+6mlG8+JPA1KfBQo19iC/+Ngcw==} 1473 | 1474 | /supports-color/5.5.0: 1475 | resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} 1476 | engines: {node: '>=4'} 1477 | dependencies: 1478 | has-flag: 3.0.0 1479 | dev: true 1480 | optional: true 1481 | 1482 | /supports-color/7.2.0: 1483 | resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} 1484 | engines: {node: '>=8'} 1485 | dependencies: 1486 | has-flag: 4.0.0 1487 | dev: true 1488 | 1489 | /symbol-observable/4.0.0: 1490 | resolution: {integrity: sha512-b19dMThMV4HVFynSAM1++gBHAbk2Tc/osgLIBZMKsyqh34jb2e8Os7T6ZW/Bt3pJFdBTd2JwAnAAEQV7rSNvcQ==} 1491 | engines: {node: '>=0.10'} 1492 | dev: false 1493 | 1494 | /terser/4.8.0: 1495 | resolution: {integrity: sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw==} 1496 | engines: {node: '>=6.0.0'} 1497 | hasBin: true 1498 | dependencies: 1499 | commander: 2.20.3 1500 | source-map: 0.6.1 1501 | source-map-support: 0.5.21 1502 | dev: false 1503 | 1504 | /throttle-debounce/3.0.1: 1505 | resolution: {integrity: sha512-dTEWWNu6JmeVXY0ZYoPuH5cRIwc0MeGbJwah9KUNYSJwommQpCzTySTpEe8Gs1J23aeWEuAobe4Ag7EHVt/LOg==} 1506 | engines: {node: '>=10'} 1507 | dev: false 1508 | 1509 | /to-fast-properties/2.0.0: 1510 | resolution: {integrity: sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=} 1511 | engines: {node: '>=4'} 1512 | dev: false 1513 | 1514 | /to-regex-range/5.0.1: 1515 | resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} 1516 | engines: {node: '>=8.0'} 1517 | dependencies: 1518 | is-number: 7.0.0 1519 | 1520 | /ts-essentials/9.1.0: 1521 | resolution: {integrity: sha512-L0ggCct1zrW4qoVs3+sVZvT3upDdbPGJTsfIau9kiZxlyRFaMWDZxAI/VsM1HX9fCJWgoNoynxYm2GcxwQtDMg==} 1522 | peerDependencies: 1523 | typescript: '>=4.1.0' 1524 | dev: false 1525 | 1526 | /ts-invariant/0.9.4: 1527 | resolution: {integrity: sha512-63jtX/ZSwnUNi/WhXjnK8kz4cHHpYS60AnmA6ixz17l7E12a5puCWFlNpkne5Rl0J8TBPVHpGjsj4fxs8ObVLQ==} 1528 | engines: {node: '>=8'} 1529 | dependencies: 1530 | tslib: 2.3.1 1531 | dev: false 1532 | 1533 | /tslib/2.3.1: 1534 | resolution: {integrity: sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==} 1535 | dev: false 1536 | 1537 | /typescript/4.5.4: 1538 | resolution: {integrity: sha512-VgYs2A2QIRuGphtzFV7aQJduJ2gyfTljngLzjpfW9FoYZF6xuw1W0vW9ghCKLfcWrCFxK81CSGRAvS1pn4fIUg==} 1539 | engines: {node: '>=4.2.0'} 1540 | hasBin: true 1541 | dev: true 1542 | 1543 | /ufo/0.7.9: 1544 | resolution: {integrity: sha512-6t9LrLk3FhqTS+GW3IqlITtfRB5JAVr5MMNjpBECfK827W+Vh5Ilw/LhTcHWrt6b3hkeBvcbjx4Ti7QVFzmcww==} 1545 | deprecated: 'security: please use latest version' 1546 | 1547 | /unbuild/0.5.11: 1548 | resolution: {integrity: sha512-FR+9WwE5Y4XGdITr6dWplfmyXhFYuSF+GSd/ejuND144Uz6c2wwyxtUd+PUD9xAqMj4ZsahO1HjX/BSsgDtfVA==} 1549 | hasBin: true 1550 | dependencies: 1551 | '@rollup/plugin-alias': 3.1.8_rollup@2.61.1 1552 | '@rollup/plugin-commonjs': 21.0.1_rollup@2.61.1 1553 | '@rollup/plugin-json': 4.1.0_rollup@2.61.1 1554 | '@rollup/plugin-node-resolve': 13.1.1_rollup@2.61.1 1555 | '@rollup/plugin-replace': 3.0.0_rollup@2.61.1 1556 | chalk: 4.1.2 1557 | consola: 2.15.3 1558 | defu: 5.0.0 1559 | esbuild: 0.13.15 1560 | jiti: 1.12.9 1561 | magic-string: 0.25.7 1562 | mkdirp: 1.0.4 1563 | mkdist: 0.3.8_typescript@4.5.4 1564 | mlly: 0.3.16 1565 | mri: 1.2.0 1566 | pathe: 0.2.0 1567 | pretty-bytes: 5.6.0 1568 | rimraf: 3.0.2 1569 | rollup: 2.61.1 1570 | rollup-plugin-dts: 4.0.1_rollup@2.61.1+typescript@4.5.4 1571 | rollup-plugin-esbuild: 4.7.2_esbuild@0.13.15+rollup@2.61.1 1572 | scule: 0.2.1 1573 | typescript: 4.5.4 1574 | untyped: 0.2.13 1575 | dev: true 1576 | 1577 | /unctx/1.0.2: 1578 | resolution: {integrity: sha512-qxRfnQZWJqkg180JeOCJEvtjj5/7wnWVqkNHln8muY5/z8kMWBFqikFBPwIPCQrZJ+jtaSWkVHJkuHUAXls6zw==} 1579 | dev: false 1580 | 1581 | /universalify/2.0.0: 1582 | resolution: {integrity: sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==} 1583 | engines: {node: '>= 10.0.0'} 1584 | dev: true 1585 | 1586 | /untyped/0.2.13: 1587 | resolution: {integrity: sha512-dnvCmDKTb+zg504JyQ9h1sWINAyxnP6KgmvUH6s6BjLV+3fvjZTiUklL15VvEqpDjy4Leq/xzlZ+JxskeoM5mg==} 1588 | dev: true 1589 | 1590 | /untyped/0.3.0: 1591 | resolution: {integrity: sha512-n4M5/T1wWlHFmohk0EhS+yM7W/h5dOtQldOV3MVEbZY1fTy5A47UL8+d8GLW1iwmaAwNrM5ERy3qe1k0T/Yc7A==} 1592 | dev: false 1593 | 1594 | /uri-js/4.4.1: 1595 | resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} 1596 | dependencies: 1597 | punycode: 2.1.1 1598 | dev: false 1599 | 1600 | /vue-demi/0.12.1: 1601 | resolution: {integrity: sha512-QL3ny+wX8c6Xm1/EZylbgzdoDolye+VpCXRhI2hug9dJTP3OUJ3lmiKN3CsVV3mOJKwFi0nsstbgob0vG7aoIw==} 1602 | engines: {node: '>=12'} 1603 | hasBin: true 1604 | requiresBuild: true 1605 | peerDependencies: 1606 | '@vue/composition-api': ^1.0.0-rc.1 1607 | vue: ^3.0.0-0 || ^2.6.0 1608 | peerDependenciesMeta: 1609 | '@vue/composition-api': 1610 | optional: true 1611 | dev: false 1612 | 1613 | /wrappy/1.0.2: 1614 | resolution: {integrity: sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=} 1615 | dev: true 1616 | 1617 | /yallist/4.0.0: 1618 | resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} 1619 | dev: false 1620 | 1621 | /zen-observable-ts/1.2.3: 1622 | resolution: {integrity: sha512-hc/TGiPkAWpByykMwDcem3SdUgA4We+0Qb36bItSuJC9xD0XVBZoFHYoadAomDSNf64CG8Ydj0Qb8Od8BUWz5g==} 1623 | dependencies: 1624 | zen-observable: 0.8.15 1625 | dev: false 1626 | 1627 | /zen-observable/0.8.15: 1628 | resolution: {integrity: sha512-PQ2PC7R9rslx84ndNBZB/Dkv8V8fZEpk83RLgXtYd0fwUgEjseMn1Dgajh2x6S8QbZAFa9p2qVCEuYZNgve0dQ==} 1629 | dev: false 1630 | -------------------------------------------------------------------------------- /src/index.ts: -------------------------------------------------------------------------------- 1 | import { dirname, resolve } from "pathe"; 2 | import { fileURLToPath } from "url"; 3 | import { defineNuxtModule, addTemplate, addPluginTemplate } from '@nuxt/kit' 4 | 5 | import type { 6 | InMemoryCache, 7 | ApolloClientOptions, 8 | } from '@apollo/client/core' 9 | // @ts-expect-error #app resolved by Nuxt3 10 | import { NuxtApp } from '#app' 11 | 12 | type ClientConfig = Partial> & { 13 | authenticationType?: string 14 | } 15 | export interface ApolloModuleOptions { 16 | [name: string]: ClientConfig | any // <= 0.0.9 17 | default?: ClientConfig // <= 0.0.9 18 | clientConfigs?: { // > 0.0.9 19 | default: ClientConfig 20 | [name: string]: ClientConfig 21 | } 22 | cookieAttributes?: { 23 | expires?: number 24 | path?: string 25 | domain?: string 26 | secure?: boolean 27 | } 28 | } 29 | export default defineNuxtModule({ 30 | 31 | meta: { 32 | name: '@nuxt3/apollo-module', 33 | configKey: 'apollo', 34 | }, 35 | setup(options, nuxt) { 36 | nuxt.options.build.transpile = nuxt.options.build.transpile || [] 37 | nuxt.options.build.transpile.push('@apollo/client', '@vue/apollo-composable', 'ts-invariant/process') 38 | 39 | const __dirname__ = dirname(fileURLToPath(import.meta.url)); 40 | 41 | // save options to apollo.options.mjs 42 | addTemplate({ 43 | filename: 'apollo.options.mjs', 44 | getContents: () => `export default ${JSON.stringify(options)}`, 45 | }) 46 | 47 | // add apollo plugin ( see plugin.ts ) to server and client 48 | addPluginTemplate({ 49 | src: resolve(__dirname__, "./plugin.mjs"), 50 | mode: 'all' 51 | }); 52 | 53 | }, 54 | }) 55 | 56 | declare module '@nuxt/schema' { 57 | interface NuxtConfig { 58 | apollo?: ApolloModuleOptions 59 | } 60 | interface NuxtOptions { 61 | apollo?: ApolloModuleOptions 62 | } 63 | } -------------------------------------------------------------------------------- /src/plugin.ts: -------------------------------------------------------------------------------- 1 | import { 2 | ApolloClient, 3 | InMemoryCache, 4 | createHttpLink, 5 | concat, 6 | } from '@apollo/client/core' 7 | // @ts-expect-error #app resolved by Nuxt3 8 | import { defineNuxtPlugin, NuxtApp } from '#app' 9 | import { ApolloClients, provideApolloClient } from '@vue/apollo-composable' 10 | import { setContext } from '@apollo/client/link/context'; 11 | import { parse, serialize } from "cookie-es"; 12 | import { ApolloModuleOptions } from './index' 13 | // @ts-expect-error #build resolved by Nuxt3 14 | import apolloOptions from '#build/apollo.options.mjs' // generated by index.ts 15 | 16 | const apolloModuleOptions: ApolloModuleOptions = apolloOptions; 17 | 18 | const DEFAULT_CLIENT_ID = 'default' 19 | 20 | export default defineNuxtPlugin((nuxt: NuxtApp) => { 21 | const apolloClients: { 22 | [key: string]: ApolloClient 23 | } = {}; 24 | const tokenNames: Record = {}; 25 | const clientConfigs = apolloModuleOptions.clientConfigs ? apolloModuleOptions.clientConfigs : apolloModuleOptions 26 | const defaultCookieAttributes = apolloModuleOptions.cookieAttributes 27 | 28 | function getTokenName(clientId: string) { 29 | return 'apollo_' + clientId + '_token' 30 | } 31 | function getToken(name: string, opts = {}) { 32 | if (process.server) { 33 | const cookies = parse(nuxt.ssrContext?.req.headers.cookie || "", opts) as Record 34 | return cookies[name] 35 | } else if (process.client) { 36 | const cookies = parse(document.cookie, opts) as Record 37 | return cookies[name] 38 | } 39 | } 40 | 41 | function getAuthLink(clientId: string, authenticationType = 'Bearer') { 42 | const authLink = setContext(async (_, { headers }) => { 43 | const token = getToken(getTokenName(clientId)) 44 | const authorizationHeader = token ? { Authorization: authenticationType ? 'Bearer ' + token : token } : {} 45 | return { 46 | headers: { 47 | ...headers, 48 | ...authorizationHeader, 49 | }, 50 | } 51 | }) 52 | return authLink 53 | } 54 | 55 | function serializeCookie(name:string, value: string | null, opts = {}) { 56 | if (value == null) { 57 | return serialize(name, '', { ...opts, maxAge: -1 }); 58 | } 59 | return serialize(name, value, opts); 60 | } 61 | function writeClientCookie(name:string, value: string | null, opts = {}) { 62 | if (process.client) { 63 | document.cookie = serializeCookie(name, value, opts); 64 | } 65 | } 66 | 67 | for (const clientId in clientConfigs) { 68 | const options = clientConfigs[clientId] 69 | const authLink = getAuthLink(clientId, options.authenticationType) 70 | 71 | const httpLink = createHttpLink(options) 72 | const cache = new InMemoryCache(); 73 | if (process.server) { 74 | const apolloClient = new ApolloClient(Object.assign(options, { 75 | ssrMode: true, 76 | link: concat(authLink, httpLink), 77 | cache: new InMemoryCache() 78 | })) 79 | nuxt.hook("app:rendered", () => { 80 | // store the result 81 | nuxt.payload.data['apollo-' + clientId] = apolloClient.extract(); 82 | }); 83 | apolloClients[clientId] = apolloClient; 84 | } else { 85 | // restore to cache, so the client won't request 86 | cache.restore(JSON.parse(JSON.stringify(nuxt.payload.data['apollo-' + clientId]))) 87 | const apolloClient = new ApolloClient(Object.assign(options, { 88 | link: concat(authLink, httpLink), 89 | cache: cache, 90 | ssrForceFetchDelay: 100, 91 | })) 92 | apolloClients[clientId] = apolloClient; 93 | } 94 | 95 | } 96 | 97 | const apolloHelpers = { 98 | onLogin: async (token: string, clientId: string, cookieAttributes: any, skipResetStore = false) => { 99 | clientId = clientId || DEFAULT_CLIENT_ID 100 | cookieAttributes = cookieAttributes || defaultCookieAttributes 101 | 102 | // Fallback for tokenExpires param 103 | if (typeof cookieAttributes === 'number') cookieAttributes = { expires: cookieAttributes } 104 | 105 | if (typeof cookieAttributes.expires === 'number') { 106 | cookieAttributes.expires = new Date(Date.now()+ 86400*1000*cookieAttributes.expires) 107 | } 108 | 109 | writeClientCookie(getTokenName(clientId), token, cookieAttributes) 110 | 111 | if (!skipResetStore) { 112 | try { 113 | await apolloClients[clientId].resetStore() 114 | } catch (e: any) { 115 | console.log('%cError on cache reset (setToken)', 'color: orange;', e.message) 116 | } 117 | } 118 | }, 119 | onLogout: async (clientId = DEFAULT_CLIENT_ID, skipResetStore = false) => { 120 | writeClientCookie(getTokenName(clientId), null) 121 | 122 | if (!skipResetStore) { 123 | try { 124 | await apolloClients[clientId].resetStore() 125 | } catch (e: any) { 126 | console.log('%cError on cache reset (logout)', 'color: orange;', e.message) 127 | } 128 | } 129 | }, 130 | getToken: (clientId = DEFAULT_CLIENT_ID) => { 131 | return getToken(getTokenName(clientId)) 132 | } 133 | } 134 | 135 | // provide client, used in useQuery() 136 | nuxt.vueApp.provide(ApolloClients, apolloClients) 137 | // provide $apollo, used directly: $apollo.default 138 | nuxt.provide("apollo", apolloClients) 139 | nuxt.provide("apolloHelpers", apolloHelpers); 140 | }) 141 | // @ts-expect-error #app resolved by Nuxt3 142 | declare module '#app' { 143 | interface NuxtApp { 144 | $apollo: { 145 | [key: string]: ApolloClient 146 | } 147 | } 148 | } -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "ESNext", 4 | "module": "ESNext", 5 | "moduleResolution": "Node", 6 | "outDir": "dist", 7 | "declaration": true, 8 | "esModuleInterop": true, 9 | "strict": true, 10 | "resolveJsonModule": true, 11 | "skipLibCheck": true, 12 | "types": [ 13 | "@nuxt/types" 14 | ] 15 | }, 16 | "exclude": [ 17 | "**/dist/**", 18 | "**/.output/**" 19 | ] 20 | } --------------------------------------------------------------------------------