[READ-ONLY] Mirror of https://github.com/danielroe/vue-sanity. Sanity integration for Vue Composition API
composition-api hacktoberfest javascript nuxt sanity typescript vue vuejs
0

Configure Feed

Select the types of activity you want to include in your feed.

chore: init

author
Daniel Roe
date (Mar 26, 2020, 10:37 AM UTC) commit 42b2ec50
+647
+2
.gitignore
··· 1 + lib/* 2 + node_modules
+31
package.json
··· 1 + { 2 + "name": "vue-sanity", 3 + "version": "0.1.0", 4 + "description": "Composition API methods to incorporate Sanity into a Vue project.", 5 + "license": "MIT", 6 + "main": "lib/index.js", 7 + "types": "lib/index.d.ts", 8 + "files": [ 9 + "lib/**/*", 10 + "lib/index.d.ts", 11 + "!**/*.map" 12 + ], 13 + "scripts": { 14 + "clean": "rm -rf lib/*", 15 + "build": "yarn clean && yarn compile", 16 + "compile": "tsc" 17 + }, 18 + "dependencies": { 19 + "@sanity/client": "^1.149.2", 20 + "@sanity/image-url": "^0.140.17", 21 + "minify-groq": "^1.0.0" 22 + }, 23 + "devDependencies": { 24 + "@vue/composition-api": "^0.5.0", 25 + "vue": "2" 26 + }, 27 + "peerDependencies": { 28 + "@vue/composition-api": "^0.5.0", 29 + "vue": "^2" 30 + } 31 + }
+80
src/cache.ts
··· 1 + import Vue from 'vue' 2 + import CompositionApi, { 3 + Ref, 4 + ref, 5 + reactive, 6 + watch, 7 + computed, 8 + onServerPrefetch, 9 + } from '@vue/composition-api' 10 + 11 + Vue.use(CompositionApi) 12 + 13 + const cache = reactive<Record<string, any>>({}) 14 + 15 + export type FetchStatus = 16 + | 'server loaded' 17 + | 'loading' 18 + | 'client loaded' 19 + | 'error' 20 + 21 + interface CacheOptions<K> { 22 + initialValue?: K 23 + clientOnly?: boolean 24 + } 25 + 26 + export function useCache<T, K = null>( 27 + key: Ref<string>, 28 + fetcher: (key: string) => Promise<T>, 29 + options: CacheOptions<K> = {} 30 + ) { 31 + function initialiseKey(key: string) { 32 + if (!cache[key]) Vue.set(cache, key, options.initialValue || null) 33 + } 34 + async function fetch(query = key.value) { 35 + Vue.set( 36 + cache, 37 + query, 38 + (await fetcher(query)) || options.initialValue || null 39 + ) 40 + } 41 + 42 + const status = ref<FetchStatus>('loading') 43 + const refetching = ref(false) 44 + 45 + async function triggerFetch(query?: string) { 46 + if (refetching.value) return 47 + refetching.value = true 48 + await fetch(query) 49 + status.value = 'client loaded' 50 + } 51 + 52 + if (!options.clientOnly) { 53 + onServerPrefetch(async () => { 54 + await fetch() 55 + status.value = 'server loaded' 56 + }) 57 + } 58 + 59 + watch(key, async key => { 60 + if (status.value === 'client loaded') return 61 + try { 62 + await fetch(key) 63 + status.value = 'client loaded' 64 + } catch (_) { 65 + status.value = 'error' 66 + } 67 + }) 68 + 69 + const data = computed(() => { 70 + initialiseKey(key.value) 71 + return (cache[key.value] || options.initialValue || null) as T | K 72 + }) 73 + 74 + return { 75 + triggerFetch, 76 + fetch, 77 + data, 78 + status, 79 + } 80 + }
+142
src/index.ts
··· 1 + import Vue from 'vue' 2 + import CompositionApi, { 3 + provide, 4 + getCurrentInstance, 5 + inject, 6 + InjectionKey, 7 + computed, 8 + Ref, 9 + } from '@vue/composition-api' 10 + 11 + import sanityClient, { SanityClient, ClientConfig } from '@sanity/client' 12 + import imageUrlBuilder from '@sanity/image-url' 13 + import { ImageUrlBuilder } from '@sanity/image-url/lib/types/builder' 14 + import { 15 + FitMode, 16 + SanityImageDimensions, 17 + } from '@sanity/image-url/lib/types/types' 18 + 19 + import minifier from 'minify-groq' 20 + 21 + import { useCache } from './cache' 22 + 23 + Vue.use(CompositionApi) 24 + 25 + const clientSymbol: InjectionKey<SanityClient> = Symbol('Sanity client') 26 + const imageBuilderSymbol: InjectionKey<ImageUrlBuilder> = Symbol( 27 + 'Sanity image URL builder' 28 + ) 29 + 30 + function ensureInstance() { 31 + const instance = getCurrentInstance() 32 + if (!instance) throw new Error('You must call this from within a component') 33 + return instance 34 + } 35 + 36 + interface SanityProjectDetails { 37 + projectId: string 38 + dataset: string 39 + } 40 + 41 + export function provideSanityClient(client: SanityClient) { 42 + ensureInstance() 43 + 44 + const imageBuilder = imageUrlBuilder(client.config() as any) 45 + 46 + provide(clientSymbol, client) 47 + provide(imageBuilderSymbol, imageBuilder) 48 + } 49 + 50 + export function useSanityClient(config: ClientConfig & SanityProjectDetails) { 51 + ensureInstance() 52 + 53 + const client = sanityClient(config) 54 + const imageBuilder = imageUrlBuilder(config) 55 + 56 + provide(clientSymbol, client) 57 + provide(imageBuilderSymbol, imageBuilder) 58 + } 59 + 60 + export interface ResolvedSanityImage { 61 + url: string 62 + dimensions?: SanityImageDimensions 63 + } 64 + 65 + interface ImageOptions { 66 + dpr?: number 67 + quality?: number 68 + fit?: FitMode 69 + } 70 + 71 + export function useSanityImage( 72 + image: Ref<ResolvedSanityImage>, 73 + options?: Partial<ImageOptions>, 74 + widths = [300, 600, 1200, 1920] 75 + ) { 76 + const builder = inject(imageBuilderSymbol) 77 + 78 + function getImageUrl( 79 + image: Required<ResolvedSanityImage>, 80 + width: number, 81 + { quality = 82, fit = 'min' }: ImageOptions 82 + ) { 83 + if (!builder) 84 + throw new Error( 85 + 'You must call useSanityClient before using sanity resources in this project.' 86 + ) 87 + 88 + return builder 89 + .image(image.url) 90 + .width(Math.round(width)) 91 + .height(Math.round(Number(width / image.dimensions.aspectRatio))) 92 + .quality(quality) 93 + .fit(fit) 94 + .url() 95 + } 96 + 97 + const result = computed(() => ({ 98 + src: image.value.url, 99 + ...(image.value.dimensions 100 + ? { 101 + srcset: [ 102 + ...widths.map( 103 + width => 104 + `${getImageUrl( 105 + image.value as Required<ResolvedSanityImage>, 106 + width, 107 + options || {} 108 + )} ${width}w` 109 + ), 110 + `${image.value.url} ${image.value.dimensions.width}w`, 111 + ].join(', '), 112 + placeholder: '', 113 + sizes: [ 114 + ...widths.map(width => `(max-width: ${width + 100}px) ${width}px`), 115 + `${image.value.dimensions.width}px`, 116 + ].join(', '), 117 + } 118 + : {}), 119 + })) 120 + 121 + return result 122 + } 123 + 124 + export function useSanityFetcher<T, I = null, K = T>( 125 + query: () => string, 126 + map = (result: T) => (result as unknown) as K, 127 + initialValue?: I 128 + ) { 129 + const client = inject(clientSymbol) 130 + if (!client) 131 + throw new Error( 132 + 'You must call useSanityClient before using sanity resources in this project.' 133 + ) 134 + 135 + const { data, status } = useCache<K, I>( 136 + computed(query), 137 + query => client.fetch(minifier(query)).then(map), 138 + initialValue 139 + ) 140 + 141 + return { data, status } 142 + }
+16
tsconfig.json
··· 1 + { 2 + "compilerOptions": { 3 + "strict": true, 4 + "sourceMap": true, 5 + "target": "esnext", 6 + "module": "esnext", 7 + "lib": ["esnext"], 8 + "moduleResolution": "node", 9 + "rootDir": "src", 10 + "outDir": "lib", 11 + "declaration": true, 12 + "skipLibCheck": true, 13 + "allowSyntheticDefaultImports": true 14 + }, 15 + "exclude": ["node_modules", "lib", "test"] 16 + }
+376
yarn.lock
··· 1 + # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 + # yarn lockfile v1 3 + 4 + 5 + "@sanity/client@^1.149.2": 6 + version "1.149.2" 7 + resolved "https://registry.yarnpkg.com/@sanity/client/-/client-1.149.2.tgz#fc47fe08e39d79b1099d1a9712d7e7bec12288ec" 8 + integrity sha512-sNgVQAwbFdzthXYedZ2g8UnC8+eyZ+alxqyo9EePrTkq06L3gBFjokdzLsgwPExAczEbrvAnIYR374SOXVAeCQ== 9 + dependencies: 10 + "@sanity/eventsource" "1.149.0" 11 + "@sanity/generate-help-url" "1.149.0" 12 + "@sanity/observable" "1.149.0" 13 + deep-assign "^2.0.0" 14 + get-it "^5.0.0" 15 + make-error "^1.3.0" 16 + object-assign "^4.1.1" 17 + 18 + "@sanity/eventsource@1.149.0": 19 + version "1.149.0" 20 + resolved "https://registry.yarnpkg.com/@sanity/eventsource/-/eventsource-1.149.0.tgz#ac4b517268976980e958223ba537a15ac6339f50" 21 + integrity sha512-Ve7jwxXwYqLXuqB2ZqcsglWp7TqMHmzIsj2FCfcywnGu6DXpP5vbmnRCL6eDi6S3fKlr/9uWdTC3tmzWSh0G5w== 22 + dependencies: 23 + eventsource "^1.0.6" 24 + eventsource-polyfill "^0.9.6" 25 + 26 + "@sanity/generate-help-url@1.149.0": 27 + version "1.149.0" 28 + resolved "https://registry.yarnpkg.com/@sanity/generate-help-url/-/generate-help-url-1.149.0.tgz#765c2803ae67da16b8349f71317873b67f04b486" 29 + integrity sha512-8KKryNJGP/AKQOvziu6hdah7s9analAsQ1YZCHYyybdRRxDoaZ8QoBZ/If2vyQFBIl2+EXK9Z+x4qVmNa17umQ== 30 + 31 + "@sanity/image-url@^0.140.17": 32 + version "0.140.17" 33 + resolved "https://registry.yarnpkg.com/@sanity/image-url/-/image-url-0.140.17.tgz#fa4feecab1441fde6e95766b4bf721ca1a842872" 34 + integrity sha512-RWyrTXmdDwujYZ2Rpd7eqKTfbr+rAcZ6zWlCqEtGG0mQwV/O22AoiL++lKq6YHsOn/etl6CsqrQAsEQNMF4r1A== 35 + 36 + "@sanity/observable@1.149.0": 37 + version "1.149.0" 38 + resolved "https://registry.yarnpkg.com/@sanity/observable/-/observable-1.149.0.tgz#8636f7f3f3d39c3ff106f871c01b9258f5fb6370" 39 + integrity sha512-Qh5q4DkgV5X3Yub+Nr3akKkjXGGtUPw9UtAwlPBa7jDBrKPBIzqD/vb7dDlNs+7JhfFKPwzaDqV36I7kbzPL0w== 40 + dependencies: 41 + object-assign "^4.1.1" 42 + rxjs "^6.5.3" 43 + 44 + "@sanity/timed-out@^4.0.2": 45 + version "4.0.2" 46 + resolved "https://registry.yarnpkg.com/@sanity/timed-out/-/timed-out-4.0.2.tgz#c9f61f9a1609baa1eb3e4235a24ea2a775022cdf" 47 + integrity sha512-NBDKGj14g9Z+bopIvZcQKWCzJq5JSrdmzRR1CS+iyA3Gm8SnIWBfZa7I3mTg2X6Nu8LQXG0EPKXdOGozLS4i3w== 48 + 49 + "@vue/composition-api@^0.5.0": 50 + version "0.5.0" 51 + resolved "https://registry.yarnpkg.com/@vue/composition-api/-/composition-api-0.5.0.tgz#2dbaa02a5d1f5d0d407d53d5529fe444aa8362f3" 52 + integrity sha512-9QDFWq7q839G1CTTaxeruPOTrrVOPSaVipJ2TxxK9QAruePNTHOGbOOFRpc8WLl4YPsu1/c29yBhMVmrXz8BZw== 53 + dependencies: 54 + tslib "^1.9.3" 55 + 56 + capture-stack-trace@^1.0.0: 57 + version "1.0.1" 58 + resolved "https://registry.yarnpkg.com/capture-stack-trace/-/capture-stack-trace-1.0.1.tgz#a6c0bbe1f38f3aa0b92238ecb6ff42c344d4135d" 59 + integrity sha512-mYQLZnx5Qt1JgB1WEiMCf2647plpGeQ2NMR/5L0HNZzGQo4fuSPnK+wjfPnKZV0aiJDgzmWqqkV/g7JD+DW0qw== 60 + 61 + core-util-is@~1.0.0: 62 + version "1.0.2" 63 + resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" 64 + integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= 65 + 66 + create-error-class@^3.0.2: 67 + version "3.0.2" 68 + resolved "https://registry.yarnpkg.com/create-error-class/-/create-error-class-3.0.2.tgz#06be7abef947a3f14a30fd610671d401bca8b7b6" 69 + integrity sha1-Br56vvlHo/FKMP1hBnHUAbyot7Y= 70 + dependencies: 71 + capture-stack-trace "^1.0.0" 72 + 73 + debug@^2.6.8: 74 + version "2.6.9" 75 + resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" 76 + integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== 77 + dependencies: 78 + ms "2.0.0" 79 + 80 + debug@^3.0.0: 81 + version "3.2.6" 82 + resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b" 83 + integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ== 84 + dependencies: 85 + ms "^2.1.1" 86 + 87 + decompress-response@^3.3.0: 88 + version "3.3.0" 89 + resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-3.3.0.tgz#80a4dd323748384bfa248083622aedec982adff3" 90 + integrity sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M= 91 + dependencies: 92 + mimic-response "^1.0.0" 93 + 94 + deep-assign@^2.0.0: 95 + version "2.0.0" 96 + resolved "https://registry.yarnpkg.com/deep-assign/-/deep-assign-2.0.0.tgz#ebe06b1f07f08dae597620e3dd1622f371a1c572" 97 + integrity sha1-6+BrHwfwja5ZdiDj3RYi83GhxXI= 98 + dependencies: 99 + is-obj "^1.0.0" 100 + 101 + eventsource-polyfill@^0.9.6: 102 + version "0.9.6" 103 + resolved "https://registry.yarnpkg.com/eventsource-polyfill/-/eventsource-polyfill-0.9.6.tgz#10e0d187f111b167f28fdab918843ce7d818f13c" 104 + integrity sha1-EODRh/ERsWfyj9q5GIQ859gY8Tw= 105 + 106 + eventsource@^1.0.6: 107 + version "1.0.7" 108 + resolved "https://registry.yarnpkg.com/eventsource/-/eventsource-1.0.7.tgz#8fbc72c93fcd34088090bc0a4e64f4b5cee6d8d0" 109 + integrity sha512-4Ln17+vVT0k8aWq+t/bF5arcS3EpT9gYtW66EPacdj/mAFevznsnyoHLPy2BA8gbIQeIHoPsvwmfBftfcG//BQ== 110 + dependencies: 111 + original "^1.0.0" 112 + 113 + follow-redirects@^1.2.4: 114 + version "1.10.0" 115 + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.10.0.tgz#01f5263aee921c6a54fb91667f08f4155ce169eb" 116 + integrity sha512-4eyLK6s6lH32nOvLLwlIOnr9zrL8Sm+OvW4pVTJNoXeGzYIkHVf+pADQi+OJ0E67hiuSLezPVPyBcIZO50TmmQ== 117 + dependencies: 118 + debug "^3.0.0" 119 + 120 + form-urlencoded@^2.0.7: 121 + version "2.0.9" 122 + resolved "https://registry.yarnpkg.com/form-urlencoded/-/form-urlencoded-2.0.9.tgz#ea07c5dbd9aa739275d53ec5c671ea069fe7d597" 123 + integrity sha512-fWUzNiOnYa126vFAT6TFXd1mhJrvD8IqmQ9ilZPjkLYQfaRreBr5fIUoOpPlWtqaAG64nzoE7u5zSetifab9IA== 124 + 125 + from2@^2.1.1: 126 + version "2.3.0" 127 + resolved "https://registry.yarnpkg.com/from2/-/from2-2.3.0.tgz#8bfb5502bde4a4d36cfdeea007fcca21d7e382af" 128 + integrity sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8= 129 + dependencies: 130 + inherits "^2.0.1" 131 + readable-stream "^2.0.0" 132 + 133 + get-it@^5.0.0: 134 + version "5.0.2" 135 + resolved "https://registry.yarnpkg.com/get-it/-/get-it-5.0.2.tgz#4839e7160d206fbd1353950ebce721b47292eb9c" 136 + integrity sha512-nEbFn2HvKFWSl8CNmiMZs7prWSwQELCmFak+4NMaTtrB23ePpVKf3/bpjdTjsjWMc/W2a4SrChvmgqwa8fO8UQ== 137 + dependencies: 138 + "@sanity/timed-out" "^4.0.2" 139 + create-error-class "^3.0.2" 140 + debug "^2.6.8" 141 + decompress-response "^3.3.0" 142 + follow-redirects "^1.2.4" 143 + form-urlencoded "^2.0.7" 144 + in-publish "^2.0.0" 145 + into-stream "^3.1.0" 146 + is-plain-object "^2.0.4" 147 + is-retry-allowed "^1.1.0" 148 + is-stream "^1.1.0" 149 + nano-pubsub "^1.0.2" 150 + object-assign "^4.1.1" 151 + parse-headers "^2.0.1" 152 + progress-stream "^2.0.0" 153 + same-origin "^0.1.1" 154 + simple-concat "^1.0.0" 155 + tunnel-agent "^0.6.0" 156 + url-parse "^1.1.9" 157 + 158 + in-publish@^2.0.0: 159 + version "2.0.1" 160 + resolved "https://registry.yarnpkg.com/in-publish/-/in-publish-2.0.1.tgz#948b1a535c8030561cea522f73f78f4be357e00c" 161 + integrity sha512-oDM0kUSNFC31ShNxHKUyfZKy8ZeXZBWMjMdZHKLOk13uvT27VTL/QzRGfRUcevJhpkZAvlhPYuXkF7eNWrtyxQ== 162 + 163 + inherits@^2.0.1, inherits@~2.0.3: 164 + version "2.0.4" 165 + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" 166 + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== 167 + 168 + into-stream@^3.1.0: 169 + version "3.1.0" 170 + resolved "https://registry.yarnpkg.com/into-stream/-/into-stream-3.1.0.tgz#96fb0a936c12babd6ff1752a17d05616abd094c6" 171 + integrity sha1-lvsKk2wSur1v8XUqF9BWFqvQlMY= 172 + dependencies: 173 + from2 "^2.1.1" 174 + p-is-promise "^1.1.0" 175 + 176 + is-obj@^1.0.0: 177 + version "1.0.1" 178 + resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" 179 + integrity sha1-PkcprB9f3gJc19g6iW2rn09n2w8= 180 + 181 + is-plain-object@^2.0.4: 182 + version "2.0.4" 183 + resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" 184 + integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== 185 + dependencies: 186 + isobject "^3.0.1" 187 + 188 + is-retry-allowed@^1.1.0: 189 + version "1.2.0" 190 + resolved "https://registry.yarnpkg.com/is-retry-allowed/-/is-retry-allowed-1.2.0.tgz#d778488bd0a4666a3be8a1482b9f2baafedea8b4" 191 + integrity sha512-RUbUeKwvm3XG2VYamhJL1xFktgjvPzL0Hq8C+6yrWIswDy3BIXGqCxhxkc30N9jqK311gVU137K8Ei55/zVJRg== 192 + 193 + is-stream@^1.1.0: 194 + version "1.1.0" 195 + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" 196 + integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ= 197 + 198 + isarray@~1.0.0: 199 + version "1.0.0" 200 + resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" 201 + integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= 202 + 203 + isobject@^3.0.1: 204 + version "3.0.1" 205 + resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" 206 + integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8= 207 + 208 + make-error@^1.3.0: 209 + version "1.3.6" 210 + resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" 211 + integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== 212 + 213 + mimic-response@^1.0.0: 214 + version "1.0.1" 215 + resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-1.0.1.tgz#4923538878eef42063cb8a3e3b0798781487ab1b" 216 + integrity sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ== 217 + 218 + minify-groq@^1.0.0: 219 + version "1.0.0" 220 + resolved "https://registry.yarnpkg.com/minify-groq/-/minify-groq-1.0.0.tgz#7a0d8af8d3db351e2c9a4ea90d460cb1bfa12bac" 221 + integrity sha512-+qEUnn1qUE5aEKPFYjJ5KNhYERd3DcH7KafaCorMpWSfaDwqZ3msSQrsED65zZQaZJsFCLdUl9FaS61CIdmlpw== 222 + 223 + ms@2.0.0: 224 + version "2.0.0" 225 + resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" 226 + integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= 227 + 228 + ms@^2.1.1: 229 + version "2.1.2" 230 + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" 231 + integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== 232 + 233 + nano-pubsub@^1.0.2: 234 + version "1.0.2" 235 + resolved "https://registry.yarnpkg.com/nano-pubsub/-/nano-pubsub-1.0.2.tgz#34ce776f7af959915b8f7acfe8dd6b9c66f3bde9" 236 + integrity sha1-NM53b3r5WZFbj3rP6N1rnGbzvek= 237 + 238 + object-assign@^4.1.1: 239 + version "4.1.1" 240 + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" 241 + integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= 242 + 243 + original@^1.0.0: 244 + version "1.0.2" 245 + resolved "https://registry.yarnpkg.com/original/-/original-1.0.2.tgz#e442a61cffe1c5fd20a65f3261c26663b303f25f" 246 + integrity sha512-hyBVl6iqqUOJ8FqRe+l/gS8H+kKYjrEndd5Pm1MfBtsEKA038HkkdbAl/72EAXGyonD/PFsvmVG+EvcIpliMBg== 247 + dependencies: 248 + url-parse "^1.4.3" 249 + 250 + p-is-promise@^1.1.0: 251 + version "1.1.0" 252 + resolved "https://registry.yarnpkg.com/p-is-promise/-/p-is-promise-1.1.0.tgz#9c9456989e9f6588017b0434d56097675c3da05e" 253 + integrity sha1-nJRWmJ6fZYgBewQ01WCXZ1w9oF4= 254 + 255 + parse-headers@^2.0.1: 256 + version "2.0.3" 257 + resolved "https://registry.yarnpkg.com/parse-headers/-/parse-headers-2.0.3.tgz#5e8e7512383d140ba02f0c7aa9f49b4399c92515" 258 + integrity sha512-QhhZ+DCCit2Coi2vmAKbq5RGTRcQUOE2+REgv8vdyu7MnYx2eZztegqtTx99TZ86GTIwqiy3+4nQTWZ2tgmdCA== 259 + 260 + process-nextick-args@~2.0.0: 261 + version "2.0.1" 262 + resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" 263 + integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== 264 + 265 + progress-stream@^2.0.0: 266 + version "2.0.0" 267 + resolved "https://registry.yarnpkg.com/progress-stream/-/progress-stream-2.0.0.tgz#fac63a0b3d11deacbb0969abcc93b214bce19ed5" 268 + integrity sha1-+sY6Cz0R3qy7CWmrzJOyFLzhntU= 269 + dependencies: 270 + speedometer "~1.0.0" 271 + through2 "~2.0.3" 272 + 273 + querystringify@^2.1.1: 274 + version "2.1.1" 275 + resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.1.1.tgz#60e5a5fd64a7f8bfa4d2ab2ed6fdf4c85bad154e" 276 + integrity sha512-w7fLxIRCRT7U8Qu53jQnJyPkYZIaR4n5151KMfcJlO/A9397Wxb1amJvROTK6TOnp7PfoAmg/qXiNHI+08jRfA== 277 + 278 + readable-stream@^2.0.0, readable-stream@~2.3.6: 279 + version "2.3.7" 280 + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" 281 + integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== 282 + dependencies: 283 + core-util-is "~1.0.0" 284 + inherits "~2.0.3" 285 + isarray "~1.0.0" 286 + process-nextick-args "~2.0.0" 287 + safe-buffer "~5.1.1" 288 + string_decoder "~1.1.1" 289 + util-deprecate "~1.0.1" 290 + 291 + requires-port@^1.0.0: 292 + version "1.0.0" 293 + resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" 294 + integrity sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8= 295 + 296 + rxjs@^6.5.3: 297 + version "6.5.4" 298 + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.5.4.tgz#e0777fe0d184cec7872df147f303572d414e211c" 299 + integrity sha512-naMQXcgEo3csAEGvw/NydRA0fuS2nDZJiw1YUWFKU7aPPAPGZEsD4Iimit96qwCieH6y614MCLYwdkrWx7z/7Q== 300 + dependencies: 301 + tslib "^1.9.0" 302 + 303 + safe-buffer@^5.0.1: 304 + version "5.2.0" 305 + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.0.tgz#b74daec49b1148f88c64b68d49b1e815c1f2f519" 306 + integrity sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg== 307 + 308 + safe-buffer@~5.1.0, safe-buffer@~5.1.1: 309 + version "5.1.2" 310 + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" 311 + integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== 312 + 313 + same-origin@^0.1.1: 314 + version "0.1.1" 315 + resolved "https://registry.yarnpkg.com/same-origin/-/same-origin-0.1.1.tgz#c2287d3192577df517acbbd6d1451a9c3c3914f5" 316 + integrity sha1-wih9MZJXffUXrLvW0UUanDw5FPU= 317 + 318 + simple-concat@^1.0.0: 319 + version "1.0.0" 320 + resolved "https://registry.yarnpkg.com/simple-concat/-/simple-concat-1.0.0.tgz#7344cbb8b6e26fb27d66b2fc86f9f6d5997521c6" 321 + integrity sha1-c0TLuLbib7J9ZrL8hvn21Zl1IcY= 322 + 323 + speedometer@~1.0.0: 324 + version "1.0.0" 325 + resolved "https://registry.yarnpkg.com/speedometer/-/speedometer-1.0.0.tgz#cd671cb06752c22bca3370e2f334440be4fc62e2" 326 + integrity sha1-zWccsGdSwivKM3Di8zREC+T8YuI= 327 + 328 + string_decoder@~1.1.1: 329 + version "1.1.1" 330 + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" 331 + integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== 332 + dependencies: 333 + safe-buffer "~5.1.0" 334 + 335 + through2@~2.0.3: 336 + version "2.0.5" 337 + resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd" 338 + integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ== 339 + dependencies: 340 + readable-stream "~2.3.6" 341 + xtend "~4.0.1" 342 + 343 + tslib@^1.9.0, tslib@^1.9.3: 344 + version "1.11.1" 345 + resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.11.1.tgz#eb15d128827fbee2841549e171f45ed338ac7e35" 346 + integrity sha512-aZW88SY8kQbU7gpV19lN24LtXh/yD4ZZg6qieAJDDg+YBsJcSmLGK9QpnUjAKVG/xefmvJGd1WUmfpT/g6AJGA== 347 + 348 + tunnel-agent@^0.6.0: 349 + version "0.6.0" 350 + resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" 351 + integrity sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0= 352 + dependencies: 353 + safe-buffer "^5.0.1" 354 + 355 + url-parse@^1.1.9, url-parse@^1.4.3: 356 + version "1.4.7" 357 + resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.4.7.tgz#a8a83535e8c00a316e403a5db4ac1b9b853ae278" 358 + integrity sha512-d3uaVyzDB9tQoSXFvuSUNFibTd9zxd2bkVrDRvF5TmvWWQwqE4lgYJ5m+x1DbecWkw+LK4RNl2CU1hHuOKPVlg== 359 + dependencies: 360 + querystringify "^2.1.1" 361 + requires-port "^1.0.0" 362 + 363 + util-deprecate@~1.0.1: 364 + version "1.0.2" 365 + resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" 366 + integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= 367 + 368 + vue@2: 369 + version "2.6.11" 370 + resolved "https://registry.yarnpkg.com/vue/-/vue-2.6.11.tgz#76594d877d4b12234406e84e35275c6d514125c5" 371 + integrity sha512-VfPwgcGABbGAue9+sfrD4PuwFar7gPb1yl1UK1MwXoQPAw0BKSqWfoYCT/ThFrdEVWoI51dBuyCoiNU9bZDZxQ== 372 + 373 + xtend@~4.0.1: 374 + version "4.0.2" 375 + resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" 376 + integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==