wip
This commit is contained in:
		
							parent
							
								
									4fce5d8066
								
							
						
					
					
						commit
						9d81d06853
					
				
					 26 changed files with 844 additions and 174 deletions
				
			
		
							
								
								
									
										34
									
								
								gulpfile.ts
									
										
									
									
									
								
							
							
						
						
									
										34
									
								
								gulpfile.ts
									
										
									
									
									
								
							|  | @ -2,11 +2,13 @@ | |||
|  * Gulp tasks | ||||
|  */ | ||||
| 
 | ||||
| import * as fs from 'fs'; | ||||
| import * as gulp from 'gulp'; | ||||
| import * as ts from 'gulp-typescript'; | ||||
| import * as rimraf from 'rimraf'; | ||||
| import * as rename from 'gulp-rename'; | ||||
| import * as replace from 'gulp-replace'; | ||||
| const terser = require('gulp-terser'); | ||||
| const cssnano = require('gulp-cssnano'); | ||||
| 
 | ||||
| const locales: { [x: string]: any } = require('./locales'); | ||||
| const meta = require('./package.json'); | ||||
|  | @ -25,23 +27,27 @@ gulp.task('build:copy:views', () => | |||
| 	gulp.src('./src/server/web/views/**/*').pipe(gulp.dest('./built/server/web/views')) | ||||
| ); | ||||
| 
 | ||||
| gulp.task('build:copy:locales', cb => { | ||||
| 	fs.mkdirSync('./built/client/assets/locales', { recursive: true }); | ||||
| 
 | ||||
| 	const v = { '_version_': meta.version }; | ||||
| 
 | ||||
| 	for (const [lang, locale] of Object.entries(locales)) { | ||||
| 		fs.writeFileSync(`./built/client/assets/locales/${lang}.${meta.version}.json`, JSON.stringify({ ...locale, ...v }), 'utf-8'); | ||||
| 	} | ||||
| 
 | ||||
| 	cb(); | ||||
| }); | ||||
| 
 | ||||
| gulp.task('build:copy:fonts', () => | ||||
| 	gulp.src('./node_modules/three/examples/fonts/**/*').pipe(gulp.dest('./built/client/assets/fonts/')) | ||||
| ); | ||||
| 
 | ||||
| gulp.task('build:copy', gulp.parallel('build:copy:views', 'build:copy:locales', 'build:copy:fonts', () => | ||||
| gulp.task('build:client:script', () => { | ||||
| 	return gulp.src(['./src/server/web/boot.js']) | ||||
| 		.pipe(replace('VERSION', JSON.stringify(meta.version))) | ||||
| 		.pipe(replace('LANGS', JSON.stringify(Object.keys(locales)))) | ||||
| 		.pipe(terser({ | ||||
| 			toplevel: true | ||||
| 		})) | ||||
| 		.pipe(gulp.dest('./built/server/web/')); | ||||
| }); | ||||
| 
 | ||||
| gulp.task('build:client:style', () => { | ||||
| 	return gulp.src(['./src/server/web/style.css']) | ||||
| 		.pipe(cssnano()) | ||||
| 		.pipe(gulp.dest('./built/server/web/')); | ||||
| }); | ||||
| 
 | ||||
| gulp.task('build:copy', gulp.parallel('build:copy:views', 'build:client:script', 'build:client:style', 'build:copy:fonts', () => | ||||
| 	gulp.src([ | ||||
| 		'./src/emojilist.json', | ||||
| 		'./src/server/web/views/**/*', | ||||
|  |  | |||
|  | @ -141,9 +141,11 @@ | |||
| 		"glob": "7.1.6", | ||||
| 		"got": "11.8.1", | ||||
| 		"gulp": "4.0.2", | ||||
| 		"gulp-cssnano": "2.1.3", | ||||
| 		"gulp-rename": "2.0.0", | ||||
| 		"gulp-replace": "1.0.0", | ||||
| 		"gulp-sourcemaps": "2.6.5", | ||||
| 		"gulp-terser": "2.0.0", | ||||
| 		"gulp-tslint": "8.1.4", | ||||
| 		"gulp-typescript": "6.0.0-alpha.1", | ||||
| 		"hard-source-webpack-plugin": "0.13.1", | ||||
|  |  | |||
|  | @ -1,7 +1,9 @@ | |||
| { | ||||
| 	"globals": { | ||||
| 		"_DEV_": false, | ||||
| 		"_LANG_": false, | ||||
| 		"_LANGS_": false, | ||||
| 		"_LOCALE_": false, | ||||
| 		"_VERSION_": false, | ||||
| 		"_ENV_": false, | ||||
| 		"_PERF_PREFIX_": false, | ||||
|  |  | |||
							
								
								
									
										4
									
								
								src/client/@types/global.d.ts
									
										
									
									
										vendored
									
									
								
							
							
						
						
									
										4
									
								
								src/client/@types/global.d.ts
									
										
									
									
										vendored
									
									
								
							|  | @ -1,4 +1,6 @@ | |||
| declare const _LANGS_: string[]; | ||||
| declare const _LANG_: string; | ||||
| declare const _LANGS_: string[][]; | ||||
| declare const _LOCALE_: Record<string, any>; | ||||
| declare const _VERSION_: string; | ||||
| declare const _ENV_: string; | ||||
| declare const _DEV_: boolean; | ||||
|  |  | |||
|  | @ -2,11 +2,11 @@ | |||
| <XWindow ref="window" :initial-width="400" :initial-height="500" :can-resize="true" @closed="$emit('closed')"> | ||||
| 	<template #header> | ||||
| 		<Fa :icon="faExclamationCircle" style="margin-right: 0.5em;"/> | ||||
| 		<i18n-t keypath="reportAbuseOf" tag="span"> | ||||
| 		<I18n src="reportAbuseOf" tag="span"> | ||||
| 			<template #name> | ||||
| 				<b><MkAcct :user="user"/></b> | ||||
| 			</template> | ||||
| 		</i18n-t> | ||||
| 		</I18n> | ||||
| 	</template> | ||||
| 	<div class="dpvffvvy"> | ||||
| 		<div class="_section"> | ||||
|  |  | |||
|  | @ -6,19 +6,19 @@ | |||
| 		<div class="status"> | ||||
| 			<div> | ||||
| 				<Fa :icon="faUsers" fixed-width/> | ||||
| 				<i18n-t keypath="_channel.usersCount" tag="span" style="margin-left: 4px;"> | ||||
| 				<I18n src="_channel.usersCount" tag="span" style="margin-left: 4px;"> | ||||
| 					<template #n> | ||||
| 						<b>{{ channel.usersCount }}</b> | ||||
| 					</template> | ||||
| 				</i18n-t> | ||||
| 				</I18n> | ||||
| 			</div> | ||||
| 			<div> | ||||
| 				<Fa :icon="faPencilAlt" fixed-width/> | ||||
| 				<i18n-t keypath="_channel.notesCount" tag="span" style="margin-left: 4px;"> | ||||
| 				<I18n src="_channel.notesCount" tag="span" style="margin-left: 4px;"> | ||||
| 					<template #n> | ||||
| 						<b>{{ channel.notesCount }}</b> | ||||
| 					</template> | ||||
| 				</i18n-t> | ||||
| 				</I18n> | ||||
| 			</div> | ||||
| 		</div> | ||||
| 	</div> | ||||
|  |  | |||
							
								
								
									
										15
									
								
								src/client/components/global/i18n.ts
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								src/client/components/global/i18n.ts
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,15 @@ | |||
| import { h, Fragment, defineComponent } from 'vue'; | ||||
| import type { SetupContext, VNodeChild, RenderFunction } from 'vue'; | ||||
| 
 | ||||
| export default defineComponent({ | ||||
| 	props: { | ||||
| 		src: { | ||||
| 			type: String, | ||||
| 			required: true | ||||
| 		}, | ||||
| 	}, | ||||
| 	render() { | ||||
| 		// TODO
 | ||||
| 		return h('span', this.src); | ||||
| 	} | ||||
| }); | ||||
|  | @ -9,6 +9,7 @@ import userName from './global/user-name.vue'; | |||
| import ellipsis from './global/ellipsis.vue'; | ||||
| import time from './global/time.vue'; | ||||
| import url from './global/url.vue'; | ||||
| import i18n from './global/i18n'; | ||||
| import loading from './global/loading.vue'; | ||||
| import error from './global/error.vue'; | ||||
| 
 | ||||
|  | @ -24,4 +25,5 @@ export default function(app: App) { | |||
| 	app.component('MkUrl', url); | ||||
| 	app.component('MkLoading', loading); | ||||
| 	app.component('MkError', error); | ||||
| 	app.component('I18n', i18n); | ||||
| } | ||||
|  |  | |||
|  | @ -16,13 +16,13 @@ | |||
| 	<div class="renote" v-if="isRenote"> | ||||
| 		<MkAvatar class="avatar" :user="note.user"/> | ||||
| 		<Fa :icon="faRetweet"/> | ||||
| 		<i18n-t keypath="renotedBy" tag="span"> | ||||
| 		<I18n src="renotedBy" tag="span"> | ||||
| 			<template #user> | ||||
| 				<MkA class="name" :to="userPage(note.user)" v-user-preview="note.userId"> | ||||
| 					<MkUserName :user="note.user"/> | ||||
| 				</MkA> | ||||
| 			</template> | ||||
| 		</i18n-t> | ||||
| 		</I18n> | ||||
| 		<div class="info"> | ||||
| 			<button class="_button time" @click="showRenoteMenu()" ref="renoteTime"> | ||||
| 				<Fa class="dropdownIcon" v-if="isMyRenote" :icon="faEllipsisH"/> | ||||
|  | @ -90,13 +90,13 @@ | |||
| 	<XSub v-for="note in replies" :key="note.id" :note="note" class="reply" :detail="true"/> | ||||
| </div> | ||||
| <div v-else class="_panel muted" @click="muted = false"> | ||||
| 	<i18n-t keypath="userSaysSomething" tag="small"> | ||||
| 	<I18n src="userSaysSomething" tag="small"> | ||||
| 		<template #name> | ||||
| 			<MkA class="name" :to="userPage(appearNote.user)" v-user-preview="appearNote.userId"> | ||||
| 				<MkUserName :user="appearNote.user"/> | ||||
| 			</MkA> | ||||
| 		</template> | ||||
| 	</i18n-t> | ||||
| 	</I18n> | ||||
| </div> | ||||
| </template> | ||||
| 
 | ||||
|  |  | |||
|  | @ -38,9 +38,9 @@ | |||
| 		</MkInput> | ||||
| 		<label v-if="meta.tosUrl" class="tou"> | ||||
| 			<input type="checkbox" v-model="ToSAgreement"> | ||||
| 			<i18n-t keypath="agreeTo"> | ||||
| 			<I18n src="agreeTo"> | ||||
| 				<a :href="meta.tosUrl" class="_link" target="_blank">{{ $t('tos') }}</a> | ||||
| 			</i18n-t> | ||||
| 			</I18n> | ||||
| 		</label> | ||||
| 		<captcha v-if="meta.enableHcaptcha" class="captcha" provider="hcaptcha" ref="hcaptcha" v-model:value="hCaptchaResponse" :sitekey="meta.hcaptchaSiteKey"/> | ||||
| 		<captcha v-if="meta.enableRecaptcha" class="captcha" provider="grecaptcha" ref="recaptcha" v-model:value="reCaptchaResponse" :sitekey="meta.recaptchaSiteKey"/> | ||||
|  |  | |||
|  | @ -1,5 +1,3 @@ | |||
| import { clientDb, entries } from './db'; | ||||
| 
 | ||||
| const address = new URL(location.href); | ||||
| const siteName = (document.querySelector('meta[property="og:site_name"]') as HTMLMetaElement)?.content; | ||||
| 
 | ||||
|  | @ -8,9 +6,9 @@ export const hostname = address.hostname; | |||
| export const url = address.origin; | ||||
| export const apiUrl = url + '/api'; | ||||
| export const wsUrl = url.replace('http://', 'ws://').replace('https://', 'wss://') + '/streaming'; | ||||
| export const lang = localStorage.getItem('lang'); | ||||
| export const lang = _LANG_; | ||||
| export const langs = _LANGS_; | ||||
| export const getLocale = async () => Object.fromEntries((await entries(clientDb.i18n)) as [string, string][]); | ||||
| export const locale = _LOCALE_; | ||||
| export const version = _VERSION_; | ||||
| export const instanceName = siteName === 'Misskey' ? host : siteName; | ||||
| export const ui = localStorage.getItem('ui'); | ||||
|  |  | |||
|  | @ -1,36 +1,49 @@ | |||
| import { createI18n } from 'vue-i18n'; | ||||
| import { clientDb, get, count } from './db'; | ||||
| import { setI18nContexts } from '@/scripts/set-i18n-contexts'; | ||||
| import { version, langs, getLocale } from '@/config'; | ||||
| import { markRaw } from 'vue'; | ||||
| import { locale } from '@/config'; | ||||
| 
 | ||||
| let _lang = localStorage.getItem('lang'); | ||||
| export class I18n<T extends Record<string, any>> { | ||||
| 	public locale: T; | ||||
| 
 | ||||
| if (_lang == null) { | ||||
| 	if (langs.map(x => x[0]).includes(navigator.language)) { | ||||
| 		_lang = navigator.language; | ||||
| 	} else { | ||||
| 		_lang = langs.map(x => x[0]).find(x => x.split('-')[0] == navigator.language); | ||||
| 	constructor(locale: T) { | ||||
| 		this.locale = locale; | ||||
| 
 | ||||
| 		if (_lang == null) { | ||||
| 			// Fallback
 | ||||
| 			_lang = 'en-US'; | ||||
| 		if (_DEV_) { | ||||
| 			console.log('i18n', this.locale); | ||||
| 		} | ||||
| 
 | ||||
| 		//#region BIND
 | ||||
| 		this.t = this.t.bind(this); | ||||
| 		//#endregion
 | ||||
| 	} | ||||
| 
 | ||||
| 	localStorage.setItem('lang', _lang); | ||||
| 	// string にしているのは、ドット区切りでのパス指定を許可するため
 | ||||
| 	// なるべくこのメソッド使うよりもlocale直接参照の方がvueのキャッシュ効いてパフォーマンスが良いかも
 | ||||
| 	public t(key: string, args?: Record<string, any>): string { | ||||
| 		try { | ||||
| 			let str = key.split('.').reduce((o, i) => o[i], this.locale) as string; | ||||
| 			if (args) { | ||||
| 				for (const [k, v] of Object.entries(args)) { | ||||
| 					str = str.replace(`{${k}}`, v); | ||||
| 				} | ||||
| 			} | ||||
| 			return str; | ||||
| 		} catch (e) { | ||||
| 			if (_DEV_) { | ||||
| 				console.warn(`missing localization '${key}'`); | ||||
| 				return `⚠'${key}'⚠`; | ||||
| 			} | ||||
| 
 | ||||
| 			return key; | ||||
| 		} | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
| export const lang = _lang; | ||||
| export const i18n = markRaw(new I18n(locale)); | ||||
| 
 | ||||
| export const locale = await count(clientDb.i18n).then(async n => { | ||||
| 	if (n === 0) return await setI18nContexts(_lang, version); | ||||
| 	if ((await get('_version_', clientDb.i18n) !== version)) return await setI18nContexts(_lang, version, true); | ||||
| 
 | ||||
| 	return await getLocale(); | ||||
| }); | ||||
| 
 | ||||
| export const i18n = createI18n({ | ||||
| 	sync: false, | ||||
| 	locale: _lang, | ||||
| 	messages: { [_lang]: locale } | ||||
| }); | ||||
| // このファイルに書きたくないけどここに書かないと何故かVeturが認識しない
 | ||||
| declare module '@vue/runtime-core' { | ||||
| 	interface ComponentCustomProperties { | ||||
| 		$t: typeof i18n['t']; | ||||
| 		$ts: typeof i18n['locale']; | ||||
| 	} | ||||
| } | ||||
|  |  | |||
|  | @ -40,11 +40,11 @@ import { FontAwesomeIcon } from '@fortawesome/vue-fontawesome'; | |||
| import widgets from '@/widgets'; | ||||
| import directives from '@/directives'; | ||||
| import components from '@/components'; | ||||
| import { version, ui } from '@/config'; | ||||
| import { version, ui, lang } from '@/config'; | ||||
| import { router } from '@/router'; | ||||
| import { applyTheme } from '@/scripts/theme'; | ||||
| import { isDeviceDarkmode } from '@/scripts/is-device-darkmode'; | ||||
| import { i18n, lang } from '@/i18n'; | ||||
| import { i18n } from '@/i18n'; | ||||
| import { stream, isMobile, dialog } from '@/os'; | ||||
| import * as sound from '@/scripts/sound'; | ||||
| import { $i, refreshAccount, login, updateAccount, signout } from '@/account'; | ||||
|  | @ -53,6 +53,8 @@ import { fetchInstance, instance } from '@/instance'; | |||
| 
 | ||||
| console.info(`Misskey v${version}`); | ||||
| 
 | ||||
| window.clearTimeout(window.mkBootTimer); | ||||
| 
 | ||||
| if (_DEV_) { | ||||
| 	console.warn('Development mode!!!'); | ||||
| 
 | ||||
|  | @ -175,10 +177,11 @@ app.config.globalProperties = { | |||
| 	$i, | ||||
| 	$store: defaultStore, | ||||
| 	$instance: instance, | ||||
| 	$t: i18n.t, | ||||
| 	$ts: i18n.locale, | ||||
| }; | ||||
| 
 | ||||
| app.use(router); | ||||
| app.use(i18n); | ||||
| // eslint-disable-next-line vue/component-definition-name-casing
 | ||||
| app.component('Fa', FontAwesomeIcon); | ||||
| 
 | ||||
|  |  | |||
|  | @ -10,8 +10,8 @@ | |||
| 		</div> | ||||
| 		<div :style="{ backgroundImage: channel.bannerUrl ? `url(${channel.bannerUrl})` : null }" class="banner"> | ||||
| 			<div class="status"> | ||||
| 				<div><Fa :icon="faUsers" fixed-width/><i18n-t keypath="_channel.usersCount" tag="span" style="margin-left: 4px;"><template #n><b>{{ channel.usersCount }}</b></template></i18n-t></div> | ||||
| 				<div><Fa :icon="faPencilAlt" fixed-width/><i18n-t keypath="_channel.notesCount" tag="span" style="margin-left: 4px;"><template #n><b>{{ channel.notesCount }}</b></template></i18n-t></div> | ||||
| 				<div><Fa :icon="faUsers" fixed-width/><I18n src="_channel.usersCount" tag="span" style="margin-left: 4px;"><template #n><b>{{ channel.usersCount }}</b></template></I18n></div> | ||||
| 				<div><Fa :icon="faPencilAlt" fixed-width/><I18n src="_channel.notesCount" tag="span" style="margin-left: 4px;"><template #n><b>{{ channel.notesCount }}</b></template></I18n></div> | ||||
| 			</div> | ||||
| 			<div class="fade"></div> | ||||
| 		</div> | ||||
|  |  | |||
|  | @ -35,18 +35,18 @@ | |||
| 			<div> | ||||
| 				<MkRadio v-model="game.bw" value="random" @update:modelValue="updateSettings('bw')">{{ $t('random') }}</MkRadio> | ||||
| 				<MkRadio v-model="game.bw" :value="'1'" @update:modelValue="updateSettings('bw')"> | ||||
| 					<i18n-t keypath="_reversi.blackIs" tag="span"> | ||||
| 					<I18n src="_reversi.blackIs" tag="span"> | ||||
| 						<template #name> | ||||
| 							<b><MkUserName :user="game.user1"/></b> | ||||
| 						</template> | ||||
| 					</i18n-t> | ||||
| 					</I18n> | ||||
| 				</MkRadio> | ||||
| 				<MkRadio v-model="game.bw" :value="'2'" @update:modelValue="updateSettings('bw')"> | ||||
| 					<i18n-t keypath="_reversi.blackIs" tag="span"> | ||||
| 					<I18n src="_reversi.blackIs" tag="span"> | ||||
| 						<template #name> | ||||
| 							<b><MkUserName :user="game.user2"/></b> | ||||
| 						</template> | ||||
| 					</i18n-t> | ||||
| 					</I18n> | ||||
| 				</MkRadio> | ||||
| 			</div> | ||||
| 		</div> | ||||
|  |  | |||
|  | @ -46,11 +46,11 @@ | |||
| </div> | ||||
| <div class="sazhgisb" v-else> | ||||
| 	<h1> | ||||
| 		<i18n-t keypath="waitingFor" tag="span"> | ||||
| 		<I18n src="waitingFor" tag="span"> | ||||
| 			<template #x> | ||||
| 				<b><MkUserName :user="matching"/></b> | ||||
| 			</template> | ||||
| 		</i18n-t> | ||||
| 		</I18n> | ||||
| 		<MkEllipsis/> | ||||
| 	</h1> | ||||
| 	<div class="cancel"> | ||||
|  |  | |||
|  | @ -45,14 +45,14 @@ | |||
| 		<div v-if="data && !$i.twoFactorEnabled"> | ||||
| 			<ol style="margin: 0; padding: 0 0 0 1em;"> | ||||
| 				<li> | ||||
| 					<i18n-t keypath="_2fa.step1" tag="span"> | ||||
| 					<I18n src="_2fa.step1" tag="span"> | ||||
| 						<template #a> | ||||
| 							<a href="https://authy.com/" rel="noopener" target="_blank" class="_link">Authy</a> | ||||
| 						</template> | ||||
| 						<template #b> | ||||
| 							<a href="https://support.google.com/accounts/answer/1066447" rel="noopener" target="_blank" class="_link">Google Authenticator</a> | ||||
| 						</template> | ||||
| 					</i18n-t> | ||||
| 					</I18n> | ||||
| 				</li> | ||||
| 				<li>{{ $t('_2fa.step2') }}<br><img :src="data.qr"></li> | ||||
| 				<li>{{ $t('_2fa.step3') }}<br> | ||||
|  |  | |||
|  | @ -6,11 +6,11 @@ | |||
| 		<template #label>{{ $t('uiLanguage') }}</template> | ||||
| 		<option v-for="x in langs" :value="x[0]" :key="x[0]">{{ x[1] }}</option> | ||||
| 		<template #caption> | ||||
| 			<i18n-t keypath="i18nInfo" tag="span"> | ||||
| 			<I18n src="i18nInfo" tag="span"> | ||||
| 				<template #link> | ||||
| 					<MkLink url="https://crowdin.com/project/misskey">Crowdin</MkLink> | ||||
| 				</template> | ||||
| 			</i18n-t> | ||||
| 			</I18n> | ||||
| 		</template> | ||||
| 	</FormSelect> | ||||
| 
 | ||||
|  |  | |||
|  | @ -23,14 +23,14 @@ | |||
| 	</div> | ||||
| 	<div class="_content" v-else-if="tutorial === 4"> | ||||
| 		<div>{{ $t('_tutorial.step5_1') }}</div> | ||||
| 		<i18n-t keypath="_tutorial.step5_2" tag="div"> | ||||
| 		<I18n src="_tutorial.step5_2" tag="div"> | ||||
| 			<template #featured> | ||||
| 				<MkA class="_link" to="/featured">{{ $t('featured') }}</MkA> | ||||
| 			</template> | ||||
| 			<template #explore> | ||||
| 				<MkA class="_link" to="/explore">{{ $t('explore') }}</MkA> | ||||
| 			</template> | ||||
| 		</i18n-t> | ||||
| 		</I18n> | ||||
| 		<div>{{ $t('_tutorial.step5_3') }}</div> | ||||
| 		<small>{{ $t('_tutorial.step5_4') }}</small> | ||||
| 	</div> | ||||
|  | @ -41,11 +41,11 @@ | |||
| 	</div> | ||||
| 	<div class="_content" v-else-if="tutorial === 6"> | ||||
| 		<div>{{ $t('_tutorial.step7_1') }}</div> | ||||
| 		<i18n-t keypath="_tutorial.step7_2" tag="div"> | ||||
| 		<I18n src="_tutorial.step7_2" tag="div"> | ||||
| 			<template #help> | ||||
| 				<MkA class="_link" to="/docs">{{ $t('help') }}</MkA> | ||||
| 			</template> | ||||
| 		</i18n-t> | ||||
| 		</I18n> | ||||
| 		<div>{{ $t('_tutorial.step7_3') }}</div> | ||||
| 	</div> | ||||
| 
 | ||||
|  |  | |||
|  | @ -1,15 +0,0 @@ | |||
| import { clientDb, clear, bulkSet } from '../db'; | ||||
| import { deepEntries, delimitEntry } from 'deep-entries'; | ||||
| 
 | ||||
| export function setI18nContexts(lang: string, version: string, cleardb = false) { | ||||
| 	return Promise.all([ | ||||
| 		cleardb ? clear(clientDb.i18n) : Promise.resolve(), | ||||
| 		fetch(`/assets/locales/${lang}.${version}.json`) | ||||
| 	]) | ||||
| 	.then(([, response]) => response.json()) | ||||
| 	.then(locale => { | ||||
| 		const flatLocaleEntries = deepEntries(locale, delimitEntry) as [string, string][]; | ||||
| 		bulkSet(flatLocaleEntries, clientDb.i18n); | ||||
| 		return Object.fromEntries(flatLocaleEntries); | ||||
| 	}); | ||||
| } | ||||
|  | @ -177,7 +177,7 @@ export default defineComponent({ | |||
| 	// TODO: この値を設定で変えられるようにする? | ||||
| 	$columnMargin: 12px; | ||||
| 
 | ||||
| 	$deckMargin: 12px; | ||||
| 	$deckMargin: $columnMargin; | ||||
| 
 | ||||
| 	--margin: var(--marginHalf); | ||||
| 
 | ||||
|  |  | |||
							
								
								
									
										117
									
								
								src/server/web/boot.js
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										117
									
								
								src/server/web/boot.js
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,117 @@ | |||
| /** | ||||
|  * BOOT LOADER | ||||
|  * サーバーからレスポンスされるHTMLに埋め込まれるスクリプトで、以下の役割を持ちます。 | ||||
|  * - バージョンやユーザーの言語に基づいて適切なメインスクリプトを読み込む。 | ||||
|  * - キャッシュされたコンパイル済みテーマを適用する。 | ||||
|  * - クライアントの設定値に基づいて対応するHTMLクラスやCSS変数を設定する。 | ||||
|  * テーマやCSS変数をこの段階で設定するのは、メインスクリプトが読み込まれる間もテーマを適用したいためです。 | ||||
|  * 注: webpackは介さないため、このファイルではrequireやimportは使えません。 | ||||
|  */ | ||||
| 
 | ||||
| 'use strict'; | ||||
| 
 | ||||
| //#region Script
 | ||||
| 
 | ||||
| //#region Detect language
 | ||||
| const supportedLangs = LANGS; | ||||
| let lang = localStorage.getItem('lang'); | ||||
| if (lang == null || !supportedLangs.includes(lang)) { | ||||
| 	if (supportedLangs.includes(navigator.language)) { | ||||
| 		lang = navigator.language; | ||||
| 	} else { | ||||
| 		lang = supportedLangs.find(x => x.split('-')[0] === navigator.language); | ||||
| 
 | ||||
| 		// Fallback
 | ||||
| 		if (lang == null) lang = 'en-US'; | ||||
| 	} | ||||
| } | ||||
| //#endregion
 | ||||
| 
 | ||||
| const ver = localStorage.getItem('v') || VERSION; | ||||
| 
 | ||||
| const salt = localStorage.getItem('salt') | ||||
| 	? `?salt=${localStorage.getItem('salt')}` | ||||
| 	: ''; | ||||
| 
 | ||||
| const head = document.getElementsByTagName('head')[0]; | ||||
| 
 | ||||
| const script = document.createElement('script'); | ||||
| script.setAttribute('src', `/assets/app.${ver}.${lang}.js${salt}`); | ||||
| script.setAttribute('async', 'true'); | ||||
| script.setAttribute('defer', 'true'); | ||||
| head.appendChild(script); | ||||
| 
 | ||||
| // 3秒経ってもスクリプトがロードされない場合はバージョンが古くて
 | ||||
| // 404になっているせいかもしれないので、バージョンを確認して古ければ更新する
 | ||||
| //
 | ||||
| // 読み込まれたスクリプトからこのタイマーを解除できるように、
 | ||||
| // グローバルにタイマーIDを代入しておく
 | ||||
| window.mkBootTimer = window.setTimeout(async () => { | ||||
| 	const res = await fetch('/api/meta', { | ||||
| 		method: 'POST', | ||||
| 		cache: 'no-cache' | ||||
| 	}); | ||||
| 
 | ||||
| 	const meta = await res.json(); | ||||
| 
 | ||||
| 	if (meta.version != ver) { | ||||
| 		localStorage.setItem('v', meta.version); | ||||
| 		alert( | ||||
| 			'Misskeyの新しいバージョンがあります。ページを再度読み込みします。' + | ||||
| 			'\n\n' + | ||||
| 			'New version of Misskey available. The page will be reloaded.'); | ||||
| 		refresh(); | ||||
| 	} | ||||
| }, 3000); | ||||
| //#endregion
 | ||||
| 
 | ||||
| //#region Theme
 | ||||
| const theme = localStorage.getItem('theme'); | ||||
| if (theme) { | ||||
| 	for (const [k, v] of Object.entries(JSON.parse(theme))) { | ||||
| 		document.documentElement.style.setProperty(`--${k}`, v.toString()); | ||||
| 
 | ||||
| 		// HTMLの theme-color 適用
 | ||||
| 		if (k === 'htmlThemeColor') { | ||||
| 			for (const tag of document.head.children) { | ||||
| 				if (tag.tagName === 'META' && tag.getAttribute('name') === 'theme-color') { | ||||
| 					tag.setAttribute('content', v); | ||||
| 					break; | ||||
| 				} | ||||
| 			} | ||||
| 		} | ||||
| 	} | ||||
| } | ||||
| //#endregion
 | ||||
| 
 | ||||
| const fontSize = localStorage.getItem('fontSize'); | ||||
| if (fontSize) { | ||||
| 	document.documentElement.classList.add('f-' + fontSize); | ||||
| } | ||||
| 
 | ||||
| const useSystemFont = localStorage.getItem('useSystemFont'); | ||||
| if (useSystemFont) { | ||||
| 	document.documentElement.classList.add('useSystemFont'); | ||||
| } | ||||
| 
 | ||||
| const wallpaper = localStorage.getItem('wallpaper'); | ||||
| if (wallpaper) { | ||||
| 	document.documentElement.style.backgroundImage = `url(${wallpaper})`; | ||||
| } | ||||
| 
 | ||||
| function refresh() { | ||||
| 	// Random
 | ||||
| 	localStorage.setItem('salt', Math.random().toString().substr(2, 8)); | ||||
| 
 | ||||
| 	// Clear cache (service worker)
 | ||||
| 	try { | ||||
| 		navigator.serviceWorker.controller.postMessage('clear'); | ||||
| 		navigator.serviceWorker.getRegistrations().then(registrations => { | ||||
| 			registrations.forEach(registration => registration.unregister()); | ||||
| 		}); | ||||
| 	} catch (e) { | ||||
| 		console.error(e); | ||||
| 	} | ||||
| 
 | ||||
| 	location.reload(); | ||||
| } | ||||
							
								
								
									
										37
									
								
								src/server/web/style.css
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										37
									
								
								src/server/web/style.css
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,37 @@ | |||
| html { | ||||
| 	background-color: var(--bg); | ||||
| 	color: var(--fg); | ||||
| } | ||||
| 
 | ||||
| #ini { | ||||
| 	position: fixed; | ||||
| 	z-index: 1; | ||||
| 	top: 0; | ||||
| 	left: 0; | ||||
| 	width: 100%; | ||||
| 	height: 100%; | ||||
| 	cursor: wait; | ||||
| } | ||||
| 
 | ||||
| #ini > svg { | ||||
| 	position: absolute; | ||||
| 	top: 0; | ||||
| 	right: 0; | ||||
| 	bottom: 0; | ||||
| 	left: 0; | ||||
| 	margin: auto; | ||||
| 	width: 64px; | ||||
| 	height: 64px; | ||||
| 	animation: ini 0.6s infinite linear; | ||||
| 	color: var(--accent); | ||||
| 	fill: currentColor; | ||||
| } | ||||
| 
 | ||||
| @keyframes ini { | ||||
| 	from { | ||||
| 		transform: rotate(0deg); | ||||
| 	} | ||||
| 	to { | ||||
| 		transform: rotate(360deg); | ||||
| 	} | ||||
| } | ||||
|  | @ -33,76 +33,11 @@ html | |||
| 		block og | ||||
| 			meta(property='og:image' content=img) | ||||
| 
 | ||||
| 		style. | ||||
| 			html { | ||||
| 				background-color: var(--bg); | ||||
| 				color: var(--fg); | ||||
| 			} | ||||
| 		style | ||||
| 			include ../style.css | ||||
| 
 | ||||
| 			#ini { | ||||
| 				position: fixed; | ||||
| 				z-index: 1; | ||||
| 				top: 0; | ||||
| 				left: 0; | ||||
| 				width: 100%; | ||||
| 				height: 100%; | ||||
| 				cursor: wait; | ||||
| 			} | ||||
| 
 | ||||
| 			#ini > svg { | ||||
| 				position: absolute; | ||||
| 				top: 0; | ||||
| 				right: 0; | ||||
| 				bottom: 0; | ||||
| 				left: 0; | ||||
| 				margin: auto; | ||||
| 				width: 64px; | ||||
| 				height: 64px; | ||||
| 				animation: ini 0.6s infinite linear; | ||||
| 				color: var(--accent); | ||||
| 				fill: currentColor; | ||||
| 			} | ||||
| 
 | ||||
| 			@keyframes ini { | ||||
| 				from { | ||||
| 					transform: rotate(0deg); | ||||
| 				} | ||||
| 				to { | ||||
| 					transform: rotate(360deg); | ||||
| 				} | ||||
| 			} | ||||
| 
 | ||||
| 		script(src=`/assets/app.${version}.js` async defer) | ||||
| 		script. | ||||
| 			const theme = localStorage.getItem('theme'); | ||||
| 			if (theme) { | ||||
| 				for (const [k, v] of Object.entries(JSON.parse(theme))) { | ||||
| 					document.documentElement.style.setProperty(`--${k}`, v.toString()); | ||||
| 					if (k === 'htmlThemeColor') { | ||||
| 						for (const tag of document.head.children) { | ||||
| 							if (tag.tagName === 'META' && tag.getAttribute('name') === 'theme-color') { | ||||
| 								tag.setAttribute('content', v); | ||||
| 								break; | ||||
| 							} | ||||
| 						} | ||||
| 					} | ||||
| 				} | ||||
| 			} | ||||
| 
 | ||||
| 			const fontSize = localStorage.getItem('fontSize'); | ||||
| 			if (fontSize) { | ||||
| 				document.documentElement.classList.add('f-' + fontSize); | ||||
| 			} | ||||
| 
 | ||||
| 			const useSystemFont = localStorage.getItem('useSystemFont'); | ||||
| 			if (useSystemFont) { | ||||
| 				document.documentElement.classList.add('useSystemFont'); | ||||
| 			} | ||||
| 
 | ||||
| 			const wallpaper = localStorage.getItem('wallpaper'); | ||||
| 			if (wallpaper) { | ||||
| 				document.documentElement.style.backgroundImage = `url(${wallpaper})`; | ||||
| 			} | ||||
| 		script | ||||
| 			include ../boot.js | ||||
| 
 | ||||
| 	body | ||||
| 		noscript: p | ||||
|  |  | |||
|  | @ -33,7 +33,9 @@ const postcss = { | |||
| 	}, | ||||
| }; | ||||
| 
 | ||||
| module.exports = { | ||||
| module.exports = Object.keys(isProduction ? locales : { | ||||
| 	'ja-JP': locales['ja-JP'] | ||||
| }).map(lang => ({ | ||||
| 	entry: { | ||||
| 		app: './src/client/init.ts', | ||||
| 		sw: './src/client/sw.ts' | ||||
|  | @ -131,7 +133,9 @@ module.exports = { | |||
| 		new webpack.ProgressPlugin({}), | ||||
| 		new webpack.DefinePlugin({ | ||||
| 			_VERSION_: JSON.stringify(meta.version), | ||||
| 			_LANG_: JSON.stringify(lang), | ||||
| 			_LANGS_: JSON.stringify(Object.entries(locales).map(([k, v]: [string, any]) => [k, v._lang_])), | ||||
| 			_LOCALE_: JSON.stringify(locales[lang]), | ||||
| 			_ENV_: JSON.stringify(process.env.NODE_ENV), | ||||
| 			_DEV_: process.env.NODE_ENV !== 'production', | ||||
| 			_PERF_PREFIX_: JSON.stringify('Misskey:'), | ||||
|  | @ -149,7 +153,7 @@ module.exports = { | |||
| 	], | ||||
| 	output: { | ||||
| 		path: __dirname + '/built/client/assets', | ||||
| 		filename: `[name].${meta.version}.js`, | ||||
| 		filename: `[name].${meta.version}.${lang}.js`, | ||||
| 		publicPath: `/assets/` | ||||
| 	}, | ||||
| 	resolve: { | ||||
|  | @ -169,4 +173,4 @@ module.exports = { | |||
| 	}, | ||||
| 	devtool: false, //'source-map',
 | ||||
| 	mode: isProduction ? 'production' : 'development' | ||||
| }; | ||||
| })); | ||||
|  |  | |||
							
								
								
									
										567
									
								
								yarn.lock
									
										
									
									
									
								
							
							
						
						
									
										567
									
								
								yarn.lock
									
										
									
									
									
								
							|  | @ -1400,7 +1400,7 @@ align-text@^0.1.1, align-text@^0.1.3: | |||
|     longest "^1.0.1" | ||||
|     repeat-string "^1.5.2" | ||||
| 
 | ||||
| alphanum-sort@^1.0.0: | ||||
| alphanum-sort@^1.0.0, alphanum-sort@^1.0.1, alphanum-sort@^1.0.2: | ||||
|   version "1.0.2" | ||||
|   resolved "https://registry.yarnpkg.com/alphanum-sort/-/alphanum-sort-1.0.2.tgz#97a1119649b211ad33691d9f9f486a8ec9fbe0a3" | ||||
|   integrity sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM= | ||||
|  | @ -1720,6 +1720,18 @@ autobind-decorator@2.4.0: | |||
|   resolved "https://registry.yarnpkg.com/autobind-decorator/-/autobind-decorator-2.4.0.tgz#ea9e1c98708cf3b5b356f7cf9f10f265ff18239c" | ||||
|   integrity sha512-OGYhWUO72V6DafbF8PM8rm3EPbfuyMZcJhtm5/n26IDwO18pohE4eNazLoCGhPiXOCD0gEGmrbU3849QvM8bbw== | ||||
| 
 | ||||
| autoprefixer@^6.3.1: | ||||
|   version "6.7.7" | ||||
|   resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-6.7.7.tgz#1dbd1c835658e35ce3f9984099db00585c782014" | ||||
|   integrity sha1-Hb0cg1ZY41zj+ZhAmdsAWFx4IBQ= | ||||
|   dependencies: | ||||
|     browserslist "^1.7.6" | ||||
|     caniuse-db "^1.0.30000634" | ||||
|     normalize-range "^0.1.2" | ||||
|     num2fraction "^1.2.2" | ||||
|     postcss "^5.2.16" | ||||
|     postcss-value-parser "^3.2.3" | ||||
| 
 | ||||
| autosize@4.0.2: | ||||
|   version "4.0.2" | ||||
|   resolved "https://registry.yarnpkg.com/autosize/-/autosize-4.0.2.tgz#073cfd07c8bf45da4b9fd153437f5bafbba1e4c9" | ||||
|  | @ -1779,6 +1791,11 @@ bach@^1.0.0: | |||
|     async-settle "^1.0.0" | ||||
|     now-and-later "^2.0.0" | ||||
| 
 | ||||
| balanced-match@^0.4.2: | ||||
|   version "0.4.2" | ||||
|   resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-0.4.2.tgz#cb3f3e3c732dc0f01ee70b403f302e61d7709838" | ||||
|   integrity sha1-yz8+PHMtwPAe5wtAPzAuYddwmDg= | ||||
| 
 | ||||
| balanced-match@^1.0.0: | ||||
|   version "1.0.0" | ||||
|   resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" | ||||
|  | @ -1909,6 +1926,14 @@ browser-stdout@1.3.1: | |||
|   resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.1.tgz#baa559ee14ced73452229bad7326467c61fabd60" | ||||
|   integrity sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw== | ||||
| 
 | ||||
| browserslist@^1.3.6, browserslist@^1.5.2, browserslist@^1.7.6: | ||||
|   version "1.7.7" | ||||
|   resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-1.7.7.tgz#0bd76704258be829b2398bb50e4b62d1a166b0b9" | ||||
|   integrity sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk= | ||||
|   dependencies: | ||||
|     caniuse-db "^1.0.30000639" | ||||
|     electron-to-chromium "^1.2.7" | ||||
| 
 | ||||
| browserslist@^4.0.0, browserslist@^4.14.5: | ||||
|   version "4.14.5" | ||||
|   resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.14.5.tgz#1c751461a102ddc60e40993639b709be7f2c4015" | ||||
|  | @ -2113,6 +2138,16 @@ camelcase@^6.0.0, camelcase@^6.2.0: | |||
|   resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.2.0.tgz#924af881c9d525ac9d87f40d964e5cea982a1809" | ||||
|   integrity sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg== | ||||
| 
 | ||||
| caniuse-api@^1.5.2: | ||||
|   version "1.6.1" | ||||
|   resolved "https://registry.yarnpkg.com/caniuse-api/-/caniuse-api-1.6.1.tgz#b534e7c734c4f81ec5fbe8aca2ad24354b962c6c" | ||||
|   integrity sha1-tTTnxzTE+B7F++isoq0kNUuWLGw= | ||||
|   dependencies: | ||||
|     browserslist "^1.3.6" | ||||
|     caniuse-db "^1.0.30000529" | ||||
|     lodash.memoize "^4.1.2" | ||||
|     lodash.uniq "^4.5.0" | ||||
| 
 | ||||
| caniuse-api@^3.0.0: | ||||
|   version "3.0.0" | ||||
|   resolved "https://registry.yarnpkg.com/caniuse-api/-/caniuse-api-3.0.0.tgz#5e4d90e2274961d46291997df599e3ed008ee4c0" | ||||
|  | @ -2123,6 +2158,11 @@ caniuse-api@^3.0.0: | |||
|     lodash.memoize "^4.1.2" | ||||
|     lodash.uniq "^4.5.0" | ||||
| 
 | ||||
| caniuse-db@^1.0.30000529, caniuse-db@^1.0.30000634, caniuse-db@^1.0.30000639: | ||||
|   version "1.0.30001170" | ||||
|   resolved "https://registry.yarnpkg.com/caniuse-db/-/caniuse-db-1.0.30001170.tgz#3417e94e73536b5bf567e9e9c4b7c1901c408c6a" | ||||
|   integrity sha512-NzQ5cfHv/pCgVbNWl9eIILms/hb57N+8Ku2yf2IOkBCmYSF4pweMtLTbBAwN/LzKPEtxE42hhTz0sb8gBlkPXA== | ||||
| 
 | ||||
| caniuse-lite@^1.0.0: | ||||
|   version "1.0.30001048" | ||||
|   resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001048.tgz#4bb4f1bc2eb304e5e1154da80b93dee3f1cf447e" | ||||
|  | @ -2187,7 +2227,7 @@ chalk@4.1.0, chalk@^4.0.0, chalk@^4.1.0: | |||
|     ansi-styles "^4.1.0" | ||||
|     supports-color "^7.1.0" | ||||
| 
 | ||||
| chalk@^1.1.1: | ||||
| chalk@^1.1.1, chalk@^1.1.3: | ||||
|   version "1.1.3" | ||||
|   resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" | ||||
|   integrity sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg= | ||||
|  | @ -2330,6 +2370,13 @@ clamp@^1.0.1: | |||
|   resolved "https://registry.yarnpkg.com/clamp/-/clamp-1.0.1.tgz#66a0e64011816e37196828fdc8c8c147312c8634" | ||||
|   integrity sha1-ZqDmQBGBbjcZaCj9yMjBRzEshjQ= | ||||
| 
 | ||||
| clap@^1.0.9: | ||||
|   version "1.2.3" | ||||
|   resolved "https://registry.yarnpkg.com/clap/-/clap-1.2.3.tgz#4f36745b32008492557f46412d66d50cb99bce51" | ||||
|   integrity sha512-4CoL/A3hf90V3VIEjeuhSvlGFEHKzOz+Wfc2IVZc+FaUgU0ZQafJTP49fvnULipOPcAfqhyI2duwQyns6xqjYA== | ||||
|   dependencies: | ||||
|     chalk "^1.1.3" | ||||
| 
 | ||||
| class-utils@^0.3.5: | ||||
|   version "0.3.6" | ||||
|   resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" | ||||
|  | @ -2430,6 +2477,11 @@ clone-stats@^1.0.0: | |||
|   resolved "https://registry.yarnpkg.com/clone-stats/-/clone-stats-1.0.0.tgz#b3782dff8bb5474e18b9b6bf0fdfe782f8777680" | ||||
|   integrity sha1-s3gt/4u1R04Yuba/D9/ngvh3doA= | ||||
| 
 | ||||
| clone@^1.0.2: | ||||
|   version "1.0.4" | ||||
|   resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e" | ||||
|   integrity sha1-2jCcwmPfFZlMaIypAheco8fNfH4= | ||||
| 
 | ||||
| clone@^2.1.1: | ||||
|   version "2.1.2" | ||||
|   resolved "https://registry.yarnpkg.com/clone/-/clone-2.1.2.tgz#1b7f4b9f591f1e8f83670401600345a02887435f" | ||||
|  | @ -2483,6 +2535,13 @@ coa@^2.0.2: | |||
|     chalk "^2.4.1" | ||||
|     q "^1.1.2" | ||||
| 
 | ||||
| coa@~1.0.1: | ||||
|   version "1.0.4" | ||||
|   resolved "https://registry.yarnpkg.com/coa/-/coa-1.0.4.tgz#a9ef153660d6a86a8bdec0289a5c684d217432fd" | ||||
|   integrity sha1-qe8VNmDWqGqL3sAomlxoTSF0Mv0= | ||||
|   dependencies: | ||||
|     q "^1.1.2" | ||||
| 
 | ||||
| code-point-at@^1.0.0: | ||||
|   version "1.1.0" | ||||
|   resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" | ||||
|  | @ -2505,7 +2564,7 @@ collection-visit@^1.0.0: | |||
|     map-visit "^1.0.0" | ||||
|     object-visit "^1.0.0" | ||||
| 
 | ||||
| color-convert@^1.9.0, color-convert@^1.9.1, color-convert@^1.9.3: | ||||
| color-convert@^1.3.0, color-convert@^1.9.0, color-convert@^1.9.1, color-convert@^1.9.3: | ||||
|   version "1.9.3" | ||||
|   resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" | ||||
|   integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== | ||||
|  | @ -2529,6 +2588,13 @@ color-name@^1.0.0, color-name@~1.1.4: | |||
|   resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" | ||||
|   integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== | ||||
| 
 | ||||
| color-string@^0.3.0: | ||||
|   version "0.3.0" | ||||
|   resolved "https://registry.yarnpkg.com/color-string/-/color-string-0.3.0.tgz#27d46fb67025c5c2fa25993bfbf579e47841b991" | ||||
|   integrity sha1-J9RvtnAlxcL6JZk7+/V55HhBuZE= | ||||
|   dependencies: | ||||
|     color-name "^1.0.0" | ||||
| 
 | ||||
| color-string@^1.5.2: | ||||
|   version "1.5.3" | ||||
|   resolved "https://registry.yarnpkg.com/color-string/-/color-string-1.5.3.tgz#c9bbc5f01b58b5492f3d6857459cb6590ce204cc" | ||||
|  | @ -2542,6 +2608,15 @@ color-support@^1.1.3: | |||
|   resolved "https://registry.yarnpkg.com/color-support/-/color-support-1.1.3.tgz#93834379a1cc9a0c61f82f52f0d04322251bd5a2" | ||||
|   integrity sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg== | ||||
| 
 | ||||
| color@^0.11.0: | ||||
|   version "0.11.4" | ||||
|   resolved "https://registry.yarnpkg.com/color/-/color-0.11.4.tgz#6d7b5c74fb65e841cd48792ad1ed5e07b904d764" | ||||
|   integrity sha1-bXtcdPtl6EHNSHkq0e1eB7kE12Q= | ||||
|   dependencies: | ||||
|     clone "^1.0.2" | ||||
|     color-convert "^1.3.0" | ||||
|     color-string "^0.3.0" | ||||
| 
 | ||||
| color@^3.0.0, color@^3.1.2: | ||||
|   version "3.1.2" | ||||
|   resolved "https://registry.yarnpkg.com/color/-/color-3.1.2.tgz#68148e7f85d41ad7649c5fa8c8106f098d229e10" | ||||
|  | @ -2555,11 +2630,25 @@ colorette@^1.2.1: | |||
|   resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.2.1.tgz#4d0b921325c14faf92633086a536db6e89564b1b" | ||||
|   integrity sha512-puCDz0CzydiSYOrnXpz/PKd69zRrribezjtE9yd4zvytoRc8+RY/KJPvtPFKZS3E3wP6neGyMe0vOTlHO5L3Pw== | ||||
| 
 | ||||
| colormin@^1.0.5: | ||||
|   version "1.1.2" | ||||
|   resolved "https://registry.yarnpkg.com/colormin/-/colormin-1.1.2.tgz#ea2f7420a72b96881a38aae59ec124a6f7298133" | ||||
|   integrity sha1-6i90IKcrlogaOKrlnsEkpvcpgTM= | ||||
|   dependencies: | ||||
|     color "^0.11.0" | ||||
|     css-color-names "0.0.4" | ||||
|     has "^1.0.1" | ||||
| 
 | ||||
| colors@^1.1.2, colors@^1.3.3: | ||||
|   version "1.4.0" | ||||
|   resolved "https://registry.yarnpkg.com/colors/-/colors-1.4.0.tgz#c50491479d4c1bdaed2c9ced32cf7c7dc2360f78" | ||||
|   integrity sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA== | ||||
| 
 | ||||
| colors@~1.1.2: | ||||
|   version "1.1.2" | ||||
|   resolved "https://registry.yarnpkg.com/colors/-/colors-1.1.2.tgz#168a4701756b6a7f51a12ce0c97bfa28c084ed63" | ||||
|   integrity sha1-FopHAXVran9RoSzgyXv6KMCE7WM= | ||||
| 
 | ||||
| combined-stream@^1.0.6, combined-stream@^1.0.8, combined-stream@~1.0.6: | ||||
|   version "1.0.8" | ||||
|   resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" | ||||
|  | @ -2958,6 +3047,44 @@ cssnano@4.1.10: | |||
|     is-resolvable "^1.0.0" | ||||
|     postcss "^7.0.0" | ||||
| 
 | ||||
| cssnano@^3.0.0: | ||||
|   version "3.10.0" | ||||
|   resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-3.10.0.tgz#4f38f6cea2b9b17fa01490f23f1dc68ea65c1c38" | ||||
|   integrity sha1-Tzj2zqK5sX+gFJDyPx3GjqZcHDg= | ||||
|   dependencies: | ||||
|     autoprefixer "^6.3.1" | ||||
|     decamelize "^1.1.2" | ||||
|     defined "^1.0.0" | ||||
|     has "^1.0.1" | ||||
|     object-assign "^4.0.1" | ||||
|     postcss "^5.0.14" | ||||
|     postcss-calc "^5.2.0" | ||||
|     postcss-colormin "^2.1.8" | ||||
|     postcss-convert-values "^2.3.4" | ||||
|     postcss-discard-comments "^2.0.4" | ||||
|     postcss-discard-duplicates "^2.0.1" | ||||
|     postcss-discard-empty "^2.0.1" | ||||
|     postcss-discard-overridden "^0.1.1" | ||||
|     postcss-discard-unused "^2.2.1" | ||||
|     postcss-filter-plugins "^2.0.0" | ||||
|     postcss-merge-idents "^2.1.5" | ||||
|     postcss-merge-longhand "^2.0.1" | ||||
|     postcss-merge-rules "^2.0.3" | ||||
|     postcss-minify-font-values "^1.0.2" | ||||
|     postcss-minify-gradients "^1.0.1" | ||||
|     postcss-minify-params "^1.0.4" | ||||
|     postcss-minify-selectors "^2.0.4" | ||||
|     postcss-normalize-charset "^1.1.0" | ||||
|     postcss-normalize-url "^3.0.7" | ||||
|     postcss-ordered-values "^2.1.0" | ||||
|     postcss-reduce-idents "^2.2.2" | ||||
|     postcss-reduce-initial "^1.0.0" | ||||
|     postcss-reduce-transforms "^1.0.3" | ||||
|     postcss-svgo "^2.1.1" | ||||
|     postcss-unique-selectors "^2.0.2" | ||||
|     postcss-value-parser "^3.2.3" | ||||
|     postcss-zindex "^2.0.1" | ||||
| 
 | ||||
| csso@^4.0.2: | ||||
|   version "4.0.3" | ||||
|   resolved "https://registry.yarnpkg.com/csso/-/csso-4.0.3.tgz#0d9985dc852c7cc2b2cacfbbe1079014d1a8e903" | ||||
|  | @ -2965,6 +3092,14 @@ csso@^4.0.2: | |||
|   dependencies: | ||||
|     css-tree "1.0.0-alpha.39" | ||||
| 
 | ||||
| csso@~2.3.1: | ||||
|   version "2.3.2" | ||||
|   resolved "https://registry.yarnpkg.com/csso/-/csso-2.3.2.tgz#ddd52c587033f49e94b71fc55569f252e8ff5f85" | ||||
|   integrity sha1-3dUsWHAz9J6Utx/FVWnyUuj/X4U= | ||||
|   dependencies: | ||||
|     clap "^1.0.9" | ||||
|     source-map "^0.5.3" | ||||
| 
 | ||||
| cssom@^0.4.4: | ||||
|   version "0.4.4" | ||||
|   resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.4.4.tgz#5a66cf93d2d0b661d80bf6a44fb65f5c2e4e0a10" | ||||
|  | @ -3058,7 +3193,7 @@ debuglog@^1.0.0: | |||
|   resolved "https://registry.yarnpkg.com/debuglog/-/debuglog-1.0.1.tgz#aa24ffb9ac3df9a2351837cfb2d279360cd78492" | ||||
|   integrity sha1-qiT/uaw9+aI1GDfPstJ5NgzXhJI= | ||||
| 
 | ||||
| decamelize@^1.0.0, decamelize@^1.1.1, decamelize@^1.2.0: | ||||
| decamelize@^1.0.0, decamelize@^1.1.1, decamelize@^1.1.2, decamelize@^1.2.0: | ||||
|   version "1.2.0" | ||||
|   resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" | ||||
|   integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= | ||||
|  | @ -3170,6 +3305,11 @@ define-property@^2.0.2: | |||
|     is-descriptor "^1.0.2" | ||||
|     isobject "^3.0.1" | ||||
| 
 | ||||
| defined@^1.0.0: | ||||
|   version "1.0.0" | ||||
|   resolved "https://registry.yarnpkg.com/defined/-/defined-1.0.0.tgz#c98d9bcef75674188e110969151199e39b1fa693" | ||||
|   integrity sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM= | ||||
| 
 | ||||
| delayed-stream@~1.0.0: | ||||
|   version "1.0.0" | ||||
|   resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" | ||||
|  | @ -3396,6 +3536,11 @@ ee-first@1.1.1: | |||
|   resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" | ||||
|   integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= | ||||
| 
 | ||||
| electron-to-chromium@^1.2.7: | ||||
|   version "1.3.633" | ||||
|   resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.633.tgz#16dd5aec9de03894e8d14a1db4cda8a369b9b7fe" | ||||
|   integrity sha512-bsVCsONiVX1abkWdH7KtpuDAhsQ3N3bjPYhROSAXE78roJKet0Y5wznA14JE9pzbwSZmSMAW6KiKYf1RvbTJkA== | ||||
| 
 | ||||
| electron-to-chromium@^1.3.571: | ||||
|   version "1.3.576" | ||||
|   resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.576.tgz#2e70234484e03d7c7e90310d7d79fd3775379c34" | ||||
|  | @ -3691,6 +3836,11 @@ espree@^7.3.0, espree@^7.3.1: | |||
|     acorn-jsx "^5.3.1" | ||||
|     eslint-visitor-keys "^1.3.0" | ||||
| 
 | ||||
| esprima@^2.6.0: | ||||
|   version "2.7.3" | ||||
|   resolved "https://registry.yarnpkg.com/esprima/-/esprima-2.7.3.tgz#96e3b70d5779f6ad49cd032673d1c312767ba581" | ||||
|   integrity sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE= | ||||
| 
 | ||||
| esprima@^4.0.0, esprima@^4.0.1: | ||||
|   version "4.0.1" | ||||
|   resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" | ||||
|  | @ -4063,6 +4213,11 @@ flatted@^3.1.0: | |||
|   resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.1.0.tgz#a5d06b4a8b01e3a63771daa5cb7a1903e2e57067" | ||||
|   integrity sha512-tW+UkmtNg/jv9CSofAKvgVcO7c2URjhTdW1ZTkcAritblu8tajiYy7YisnIflEwtKssCtOxpnBRoCB7iap0/TA== | ||||
| 
 | ||||
| flatten@^1.0.2: | ||||
|   version "1.0.3" | ||||
|   resolved "https://registry.yarnpkg.com/flatten/-/flatten-1.0.3.tgz#c1283ac9f27b368abc1e36d1ff7b04501a30356b" | ||||
|   integrity sha512-dVsPA/UwQ8+2uoFe5GHtiBMu48dWLTdsuEd7CKGlZlD78r1TTWBvDuFaFGKCo/ZfEr95Uk56vZoX86OsHkUeIg== | ||||
| 
 | ||||
| fluent-ffmpeg@2.1.2: | ||||
|   version "2.1.2" | ||||
|   resolved "https://registry.yarnpkg.com/fluent-ffmpeg/-/fluent-ffmpeg-2.1.2.tgz#c952de2240f812ebda0aa8006d7776ee2acf7d74" | ||||
|  | @ -4419,6 +4574,17 @@ gulp-cli@^2.2.0: | |||
|     v8flags "^3.0.1" | ||||
|     yargs "^7.1.0" | ||||
| 
 | ||||
| gulp-cssnano@2.1.3: | ||||
|   version "2.1.3" | ||||
|   resolved "https://registry.yarnpkg.com/gulp-cssnano/-/gulp-cssnano-2.1.3.tgz#02007e2817af09b3688482b430ad7db807aebf72" | ||||
|   integrity sha512-r8qdX5pTXsBb/IRm9loE8Ijz8UiPW/URMC/bKJe4FPNHRaz4aEx8Bev03L0FYHd/7BSGu/ebmfumAkpGuTdenA== | ||||
|   dependencies: | ||||
|     buffer-from "^1.0.0" | ||||
|     cssnano "^3.0.0" | ||||
|     object-assign "^4.0.1" | ||||
|     plugin-error "^1.0.1" | ||||
|     vinyl-sourcemaps-apply "^0.2.1" | ||||
| 
 | ||||
| gulp-rename@2.0.0: | ||||
|   version "2.0.0" | ||||
|   resolved "https://registry.yarnpkg.com/gulp-rename/-/gulp-rename-2.0.0.tgz#9bbc3962b0c0f52fc67cd5eaff6c223ec5b9cf6c" | ||||
|  | @ -4450,6 +4616,16 @@ gulp-sourcemaps@2.6.5: | |||
|     strip-bom-string "1.X" | ||||
|     through2 "2.X" | ||||
| 
 | ||||
| gulp-terser@2.0.0: | ||||
|   version "2.0.0" | ||||
|   resolved "https://registry.yarnpkg.com/gulp-terser/-/gulp-terser-2.0.0.tgz#07f95ef9121fe9d4970c3c4ee775c9cd658d0474" | ||||
|   integrity sha512-8KxzgUpNeLsSujUCrNKUiSI1ioO5TfW4ODhbM+wzNTWgYp7yCIl1c/5EeOI+SOXaNLi+BzzMqrbb0eYMIThFCQ== | ||||
|   dependencies: | ||||
|     plugin-error "^1.0.1" | ||||
|     terser "5.4.0" | ||||
|     through2 "^4.0.2" | ||||
|     vinyl-sourcemaps-apply "^0.2.1" | ||||
| 
 | ||||
| gulp-tslint@8.1.4: | ||||
|   version "8.1.4" | ||||
|   resolved "https://registry.yarnpkg.com/gulp-tslint/-/gulp-tslint-8.1.4.tgz#8519ee25ff97aa749e691d4af0fdaccce5f01f7a" | ||||
|  | @ -4530,6 +4706,11 @@ has-ansi@^2.0.0: | |||
|   dependencies: | ||||
|     ansi-regex "^2.0.0" | ||||
| 
 | ||||
| has-flag@^1.0.0: | ||||
|   version "1.0.0" | ||||
|   resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-1.0.0.tgz#9d9e793165ce017a00f00418c43f942a7b1d11fa" | ||||
|   integrity sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo= | ||||
| 
 | ||||
| has-flag@^3.0.0: | ||||
|   version "3.0.0" | ||||
|   resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" | ||||
|  | @ -4581,7 +4762,7 @@ has-values@^1.0.0: | |||
|     is-number "^3.0.0" | ||||
|     kind-of "^4.0.0" | ||||
| 
 | ||||
| has@^1.0.0, has@^1.0.3: | ||||
| has@^1.0.0, has@^1.0.1, has@^1.0.3: | ||||
|   version "1.0.3" | ||||
|   resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" | ||||
|   integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== | ||||
|  | @ -5239,6 +5420,13 @@ is-svg@4.2.1: | |||
|   dependencies: | ||||
|     html-comment-regex "^1.1.2" | ||||
| 
 | ||||
| is-svg@^2.0.0: | ||||
|   version "2.1.0" | ||||
|   resolved "https://registry.yarnpkg.com/is-svg/-/is-svg-2.1.0.tgz#cf61090da0d9efbcab8722deba6f032208dbb0e9" | ||||
|   integrity sha1-z2EJDaDZ77yrhyLeum8DIgjbsOk= | ||||
|   dependencies: | ||||
|     html-comment-regex "^1.1.0" | ||||
| 
 | ||||
| is-svg@^3.0.0: | ||||
|   version "3.0.0" | ||||
|   resolved "https://registry.yarnpkg.com/is-svg/-/is-svg-3.0.0.tgz#9321dbd29c212e5ca99c4fa9794c714bcafa2f75" | ||||
|  | @ -5350,6 +5538,11 @@ jpeg-js@^0.4.1: | |||
|   resolved "https://registry.yarnpkg.com/jpeg-js/-/jpeg-js-0.4.1.tgz#937a3ae911eb6427f151760f8123f04c8bfe6ef7" | ||||
|   integrity sha512-jA55yJiB5tCXEddos8JBbvW+IMrqY0y1tjjx9KNVtA+QPmu7ND5j0zkKopClpUTsaETL135uOM2XfcYG4XRjmw== | ||||
| 
 | ||||
| js-base64@^2.1.9: | ||||
|   version "2.6.4" | ||||
|   resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-2.6.4.tgz#f4e686c5de1ea1f867dbcad3d46d969428df98c4" | ||||
|   integrity sha512-pZe//GGmwJndub7ZghVHz7vjb2LgC1m8B07Au3eYqeqv9emhESByMXxaEgkUkEqJe87oBbSniGYoQNIBklc7IQ== | ||||
| 
 | ||||
| js-beautify@^1.6.12: | ||||
|   version "1.11.0" | ||||
|   resolved "https://registry.yarnpkg.com/js-beautify/-/js-beautify-1.11.0.tgz#afb873dc47d58986360093dcb69951e8bcd5ded2" | ||||
|  | @ -5379,6 +5572,14 @@ js-yaml@3.14.0, js-yaml@^3.13.1, js-yaml@^3.14.0: | |||
|     argparse "^1.0.7" | ||||
|     esprima "^4.0.0" | ||||
| 
 | ||||
| js-yaml@~3.7.0: | ||||
|   version "3.7.0" | ||||
|   resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.7.0.tgz#5c967ddd837a9bfdca5f2de84253abe8a1c03b80" | ||||
|   integrity sha1-XJZ93YN6m/3KXy3oQlOr6KHAO4A= | ||||
|   dependencies: | ||||
|     argparse "^1.0.7" | ||||
|     esprima "^2.6.0" | ||||
| 
 | ||||
| jsbn@~0.1.0: | ||||
|   version "0.1.1" | ||||
|   resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" | ||||
|  | @ -6146,6 +6347,11 @@ material-colors@^1.0.0: | |||
|   resolved "https://registry.yarnpkg.com/material-colors/-/material-colors-1.2.6.tgz#6d1958871126992ceecc72f4bcc4d8f010865f46" | ||||
|   integrity sha512-6qE4B9deFBIa9YSpOc9O0Sgc43zTeVYbgDT5veRKSlB2+ZuHNoVVxA1L/ckMUayV9Ay9y7Z/SZCLcGteW9i7bg== | ||||
| 
 | ||||
| math-expression-evaluator@^1.2.14: | ||||
|   version "1.3.7" | ||||
|   resolved "https://registry.yarnpkg.com/math-expression-evaluator/-/math-expression-evaluator-1.3.7.tgz#1b62225db86af06f7ea1fd9576a34af605a5b253" | ||||
|   integrity sha512-nrbaifCl42w37hYd6oRLvoymFK42tWB+WQTMFtksDGQMi5GvlJwnz/CsS30FFAISFLtX+A0csJ0xLiuuyyec7w== | ||||
| 
 | ||||
| matter-js@0.14.2: | ||||
|   version "0.14.2" | ||||
|   resolved "https://registry.yarnpkg.com/matter-js/-/matter-js-0.14.2.tgz#8169af9e06fdc356ba9e72b49624eb329839883b" | ||||
|  | @ -6636,6 +6842,21 @@ normalize-path@^3.0.0, normalize-path@~3.0.0: | |||
|   resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" | ||||
|   integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== | ||||
| 
 | ||||
| normalize-range@^0.1.2: | ||||
|   version "0.1.2" | ||||
|   resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942" | ||||
|   integrity sha1-LRDAa9/TEuqXd2laTShDlFa3WUI= | ||||
| 
 | ||||
| normalize-url@^1.4.0: | ||||
|   version "1.9.1" | ||||
|   resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-1.9.1.tgz#2cc0d66b31ea23036458436e3620d85954c66c3c" | ||||
|   integrity sha1-LMDWazHqIwNkWENuNiDYWVTGbDw= | ||||
|   dependencies: | ||||
|     object-assign "^4.0.1" | ||||
|     prepend-http "^1.0.0" | ||||
|     query-string "^4.1.0" | ||||
|     sort-keys "^1.0.0" | ||||
| 
 | ||||
| normalize-url@^3.0.0: | ||||
|   version "3.3.0" | ||||
|   resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-3.3.0.tgz#b2e1c4dc4f7c6d57743df733a4f5978d18650559" | ||||
|  | @ -6684,6 +6905,11 @@ nth-check@^1.0.2, nth-check@~1.0.1: | |||
|   dependencies: | ||||
|     boolbase "~1.0.0" | ||||
| 
 | ||||
| num2fraction@^1.2.2: | ||||
|   version "1.2.2" | ||||
|   resolved "https://registry.yarnpkg.com/num2fraction/-/num2fraction-1.2.2.tgz#6f682b6a027a4e9ddfa4564cd2589d1d4e669ede" | ||||
|   integrity sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4= | ||||
| 
 | ||||
| number-is-nan@^1.0.0: | ||||
|   version "1.0.1" | ||||
|   resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" | ||||
|  | @ -7309,6 +7535,15 @@ posix-character-classes@^0.1.0: | |||
|   resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" | ||||
|   integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs= | ||||
| 
 | ||||
| postcss-calc@^5.2.0: | ||||
|   version "5.3.1" | ||||
|   resolved "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-5.3.1.tgz#77bae7ca928ad85716e2fda42f261bf7c1d65b5e" | ||||
|   integrity sha1-d7rnypKK2FcW4v2kLyYb98HWW14= | ||||
|   dependencies: | ||||
|     postcss "^5.0.2" | ||||
|     postcss-message-helpers "^2.0.0" | ||||
|     reduce-css-calc "^1.2.6" | ||||
| 
 | ||||
| postcss-calc@^7.0.1: | ||||
|   version "7.0.2" | ||||
|   resolved "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-7.0.2.tgz#504efcd008ca0273120568b0792b16cdcde8aac1" | ||||
|  | @ -7318,6 +7553,15 @@ postcss-calc@^7.0.1: | |||
|     postcss-selector-parser "^6.0.2" | ||||
|     postcss-value-parser "^4.0.2" | ||||
| 
 | ||||
| postcss-colormin@^2.1.8: | ||||
|   version "2.2.2" | ||||
|   resolved "https://registry.yarnpkg.com/postcss-colormin/-/postcss-colormin-2.2.2.tgz#6631417d5f0e909a3d7ec26b24c8a8d1e4f96e4b" | ||||
|   integrity sha1-ZjFBfV8OkJo9fsJrJMio0eT5bks= | ||||
|   dependencies: | ||||
|     colormin "^1.0.5" | ||||
|     postcss "^5.0.13" | ||||
|     postcss-value-parser "^3.2.3" | ||||
| 
 | ||||
| postcss-colormin@^4.0.3: | ||||
|   version "4.0.3" | ||||
|   resolved "https://registry.yarnpkg.com/postcss-colormin/-/postcss-colormin-4.0.3.tgz#ae060bce93ed794ac71264f08132d550956bd381" | ||||
|  | @ -7329,6 +7573,14 @@ postcss-colormin@^4.0.3: | |||
|     postcss "^7.0.0" | ||||
|     postcss-value-parser "^3.0.0" | ||||
| 
 | ||||
| postcss-convert-values@^2.3.4: | ||||
|   version "2.6.1" | ||||
|   resolved "https://registry.yarnpkg.com/postcss-convert-values/-/postcss-convert-values-2.6.1.tgz#bbd8593c5c1fd2e3d1c322bb925dcae8dae4d62d" | ||||
|   integrity sha1-u9hZPFwf0uPRwyK7kl3K6Nrk1i0= | ||||
|   dependencies: | ||||
|     postcss "^5.0.11" | ||||
|     postcss-value-parser "^3.1.2" | ||||
| 
 | ||||
| postcss-convert-values@^4.0.1: | ||||
|   version "4.0.1" | ||||
|   resolved "https://registry.yarnpkg.com/postcss-convert-values/-/postcss-convert-values-4.0.1.tgz#ca3813ed4da0f812f9d43703584e449ebe189a7f" | ||||
|  | @ -7337,6 +7589,13 @@ postcss-convert-values@^4.0.1: | |||
|     postcss "^7.0.0" | ||||
|     postcss-value-parser "^3.0.0" | ||||
| 
 | ||||
| postcss-discard-comments@^2.0.4: | ||||
|   version "2.0.4" | ||||
|   resolved "https://registry.yarnpkg.com/postcss-discard-comments/-/postcss-discard-comments-2.0.4.tgz#befe89fafd5b3dace5ccce51b76b81514be00e3d" | ||||
|   integrity sha1-vv6J+v1bPazlzM5Rt2uBUUvgDj0= | ||||
|   dependencies: | ||||
|     postcss "^5.0.14" | ||||
| 
 | ||||
| postcss-discard-comments@^4.0.2: | ||||
|   version "4.0.2" | ||||
|   resolved "https://registry.yarnpkg.com/postcss-discard-comments/-/postcss-discard-comments-4.0.2.tgz#1fbabd2c246bff6aaad7997b2b0918f4d7af4033" | ||||
|  | @ -7344,6 +7603,13 @@ postcss-discard-comments@^4.0.2: | |||
|   dependencies: | ||||
|     postcss "^7.0.0" | ||||
| 
 | ||||
| postcss-discard-duplicates@^2.0.1: | ||||
|   version "2.1.0" | ||||
|   resolved "https://registry.yarnpkg.com/postcss-discard-duplicates/-/postcss-discard-duplicates-2.1.0.tgz#b9abf27b88ac188158a5eb12abcae20263b91932" | ||||
|   integrity sha1-uavye4isGIFYpesSq8riAmO5GTI= | ||||
|   dependencies: | ||||
|     postcss "^5.0.4" | ||||
| 
 | ||||
| postcss-discard-duplicates@^4.0.2: | ||||
|   version "4.0.2" | ||||
|   resolved "https://registry.yarnpkg.com/postcss-discard-duplicates/-/postcss-discard-duplicates-4.0.2.tgz#3fe133cd3c82282e550fc9b239176a9207b784eb" | ||||
|  | @ -7351,6 +7617,13 @@ postcss-discard-duplicates@^4.0.2: | |||
|   dependencies: | ||||
|     postcss "^7.0.0" | ||||
| 
 | ||||
| postcss-discard-empty@^2.0.1: | ||||
|   version "2.1.0" | ||||
|   resolved "https://registry.yarnpkg.com/postcss-discard-empty/-/postcss-discard-empty-2.1.0.tgz#d2b4bd9d5ced5ebd8dcade7640c7d7cd7f4f92b5" | ||||
|   integrity sha1-0rS9nVztXr2Nyt52QMfXzX9PkrU= | ||||
|   dependencies: | ||||
|     postcss "^5.0.14" | ||||
| 
 | ||||
| postcss-discard-empty@^4.0.1: | ||||
|   version "4.0.1" | ||||
|   resolved "https://registry.yarnpkg.com/postcss-discard-empty/-/postcss-discard-empty-4.0.1.tgz#c8c951e9f73ed9428019458444a02ad90bb9f765" | ||||
|  | @ -7358,6 +7631,13 @@ postcss-discard-empty@^4.0.1: | |||
|   dependencies: | ||||
|     postcss "^7.0.0" | ||||
| 
 | ||||
| postcss-discard-overridden@^0.1.1: | ||||
|   version "0.1.1" | ||||
|   resolved "https://registry.yarnpkg.com/postcss-discard-overridden/-/postcss-discard-overridden-0.1.1.tgz#8b1eaf554f686fb288cd874c55667b0aa3668d58" | ||||
|   integrity sha1-ix6vVU9ob7KIzYdMVWZ7CqNmjVg= | ||||
|   dependencies: | ||||
|     postcss "^5.0.16" | ||||
| 
 | ||||
| postcss-discard-overridden@^4.0.1: | ||||
|   version "4.0.1" | ||||
|   resolved "https://registry.yarnpkg.com/postcss-discard-overridden/-/postcss-discard-overridden-4.0.1.tgz#652aef8a96726f029f5e3e00146ee7a4e755ff57" | ||||
|  | @ -7365,6 +7645,21 @@ postcss-discard-overridden@^4.0.1: | |||
|   dependencies: | ||||
|     postcss "^7.0.0" | ||||
| 
 | ||||
| postcss-discard-unused@^2.2.1: | ||||
|   version "2.2.3" | ||||
|   resolved "https://registry.yarnpkg.com/postcss-discard-unused/-/postcss-discard-unused-2.2.3.tgz#bce30b2cc591ffc634322b5fb3464b6d934f4433" | ||||
|   integrity sha1-vOMLLMWR/8Y0Mitfs0ZLbZNPRDM= | ||||
|   dependencies: | ||||
|     postcss "^5.0.14" | ||||
|     uniqs "^2.0.0" | ||||
| 
 | ||||
| postcss-filter-plugins@^2.0.0: | ||||
|   version "2.0.3" | ||||
|   resolved "https://registry.yarnpkg.com/postcss-filter-plugins/-/postcss-filter-plugins-2.0.3.tgz#82245fdf82337041645e477114d8e593aa18b8ec" | ||||
|   integrity sha512-T53GVFsdinJhgwm7rg1BzbeBRomOg9y5MBVhGcsV0CxurUdVj1UlPdKtn7aqYA/c/QVkzKMjq2bSV5dKG5+AwQ== | ||||
|   dependencies: | ||||
|     postcss "^5.0.4" | ||||
| 
 | ||||
| postcss-loader@4.1.0: | ||||
|   version "4.1.0" | ||||
|   resolved "https://registry.yarnpkg.com/postcss-loader/-/postcss-loader-4.1.0.tgz#4647a6c8dad3cb6b253fbfaa21d62201086f6e39" | ||||
|  | @ -7376,6 +7671,22 @@ postcss-loader@4.1.0: | |||
|     schema-utils "^3.0.0" | ||||
|     semver "^7.3.2" | ||||
| 
 | ||||
| postcss-merge-idents@^2.1.5: | ||||
|   version "2.1.7" | ||||
|   resolved "https://registry.yarnpkg.com/postcss-merge-idents/-/postcss-merge-idents-2.1.7.tgz#4c5530313c08e1d5b3bbf3d2bbc747e278eea270" | ||||
|   integrity sha1-TFUwMTwI4dWzu/PSu8dH4njuonA= | ||||
|   dependencies: | ||||
|     has "^1.0.1" | ||||
|     postcss "^5.0.10" | ||||
|     postcss-value-parser "^3.1.1" | ||||
| 
 | ||||
| postcss-merge-longhand@^2.0.1: | ||||
|   version "2.0.2" | ||||
|   resolved "https://registry.yarnpkg.com/postcss-merge-longhand/-/postcss-merge-longhand-2.0.2.tgz#23d90cd127b0a77994915332739034a1a4f3d658" | ||||
|   integrity sha1-I9kM0Sewp3mUkVMyc5A0oaTz1lg= | ||||
|   dependencies: | ||||
|     postcss "^5.0.4" | ||||
| 
 | ||||
| postcss-merge-longhand@^4.0.11: | ||||
|   version "4.0.11" | ||||
|   resolved "https://registry.yarnpkg.com/postcss-merge-longhand/-/postcss-merge-longhand-4.0.11.tgz#62f49a13e4a0ee04e7b98f42bb16062ca2549e24" | ||||
|  | @ -7386,6 +7697,17 @@ postcss-merge-longhand@^4.0.11: | |||
|     postcss-value-parser "^3.0.0" | ||||
|     stylehacks "^4.0.0" | ||||
| 
 | ||||
| postcss-merge-rules@^2.0.3: | ||||
|   version "2.1.2" | ||||
|   resolved "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-2.1.2.tgz#d1df5dfaa7b1acc3be553f0e9e10e87c61b5f721" | ||||
|   integrity sha1-0d9d+qexrMO+VT8OnhDofGG19yE= | ||||
|   dependencies: | ||||
|     browserslist "^1.5.2" | ||||
|     caniuse-api "^1.5.2" | ||||
|     postcss "^5.0.4" | ||||
|     postcss-selector-parser "^2.2.2" | ||||
|     vendors "^1.0.0" | ||||
| 
 | ||||
| postcss-merge-rules@^4.0.3: | ||||
|   version "4.0.3" | ||||
|   resolved "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-4.0.3.tgz#362bea4ff5a1f98e4075a713c6cb25aefef9a650" | ||||
|  | @ -7398,6 +7720,20 @@ postcss-merge-rules@^4.0.3: | |||
|     postcss-selector-parser "^3.0.0" | ||||
|     vendors "^1.0.0" | ||||
| 
 | ||||
| postcss-message-helpers@^2.0.0: | ||||
|   version "2.0.0" | ||||
|   resolved "https://registry.yarnpkg.com/postcss-message-helpers/-/postcss-message-helpers-2.0.0.tgz#a4f2f4fab6e4fe002f0aed000478cdf52f9ba60e" | ||||
|   integrity sha1-pPL0+rbk/gAvCu0ABHjN9S+bpg4= | ||||
| 
 | ||||
| postcss-minify-font-values@^1.0.2: | ||||
|   version "1.0.5" | ||||
|   resolved "https://registry.yarnpkg.com/postcss-minify-font-values/-/postcss-minify-font-values-1.0.5.tgz#4b58edb56641eba7c8474ab3526cafd7bbdecb69" | ||||
|   integrity sha1-S1jttWZB66fIR0qzUmyv17vey2k= | ||||
|   dependencies: | ||||
|     object-assign "^4.0.1" | ||||
|     postcss "^5.0.4" | ||||
|     postcss-value-parser "^3.0.2" | ||||
| 
 | ||||
| postcss-minify-font-values@^4.0.2: | ||||
|   version "4.0.2" | ||||
|   resolved "https://registry.yarnpkg.com/postcss-minify-font-values/-/postcss-minify-font-values-4.0.2.tgz#cd4c344cce474343fac5d82206ab2cbcb8afd5a6" | ||||
|  | @ -7406,6 +7742,14 @@ postcss-minify-font-values@^4.0.2: | |||
|     postcss "^7.0.0" | ||||
|     postcss-value-parser "^3.0.0" | ||||
| 
 | ||||
| postcss-minify-gradients@^1.0.1: | ||||
|   version "1.0.5" | ||||
|   resolved "https://registry.yarnpkg.com/postcss-minify-gradients/-/postcss-minify-gradients-1.0.5.tgz#5dbda11373703f83cfb4a3ea3881d8d75ff5e6e1" | ||||
|   integrity sha1-Xb2hE3NwP4PPtKPqOIHY11/15uE= | ||||
|   dependencies: | ||||
|     postcss "^5.0.12" | ||||
|     postcss-value-parser "^3.3.0" | ||||
| 
 | ||||
| postcss-minify-gradients@^4.0.2: | ||||
|   version "4.0.2" | ||||
|   resolved "https://registry.yarnpkg.com/postcss-minify-gradients/-/postcss-minify-gradients-4.0.2.tgz#93b29c2ff5099c535eecda56c4aa6e665a663471" | ||||
|  | @ -7416,6 +7760,16 @@ postcss-minify-gradients@^4.0.2: | |||
|     postcss "^7.0.0" | ||||
|     postcss-value-parser "^3.0.0" | ||||
| 
 | ||||
| postcss-minify-params@^1.0.4: | ||||
|   version "1.2.2" | ||||
|   resolved "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-1.2.2.tgz#ad2ce071373b943b3d930a3fa59a358c28d6f1f3" | ||||
|   integrity sha1-rSzgcTc7lDs9kwo/pZo1jCjW8fM= | ||||
|   dependencies: | ||||
|     alphanum-sort "^1.0.1" | ||||
|     postcss "^5.0.2" | ||||
|     postcss-value-parser "^3.0.2" | ||||
|     uniqs "^2.0.0" | ||||
| 
 | ||||
| postcss-minify-params@^4.0.2: | ||||
|   version "4.0.2" | ||||
|   resolved "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-4.0.2.tgz#6b9cef030c11e35261f95f618c90036d680db874" | ||||
|  | @ -7428,6 +7782,16 @@ postcss-minify-params@^4.0.2: | |||
|     postcss-value-parser "^3.0.0" | ||||
|     uniqs "^2.0.0" | ||||
| 
 | ||||
| postcss-minify-selectors@^2.0.4: | ||||
|   version "2.1.1" | ||||
|   resolved "https://registry.yarnpkg.com/postcss-minify-selectors/-/postcss-minify-selectors-2.1.1.tgz#b2c6a98c0072cf91b932d1a496508114311735bf" | ||||
|   integrity sha1-ssapjAByz5G5MtGkllCBFDEXNb8= | ||||
|   dependencies: | ||||
|     alphanum-sort "^1.0.2" | ||||
|     has "^1.0.1" | ||||
|     postcss "^5.0.14" | ||||
|     postcss-selector-parser "^2.0.0" | ||||
| 
 | ||||
| postcss-minify-selectors@^4.0.2: | ||||
|   version "4.0.2" | ||||
|   resolved "https://registry.yarnpkg.com/postcss-minify-selectors/-/postcss-minify-selectors-4.0.2.tgz#e2e5eb40bfee500d0cd9243500f5f8ea4262fbd8" | ||||
|  | @ -7514,6 +7878,13 @@ postcss-modules@^3.2.2: | |||
|     postcss-modules-values "^3.0.0" | ||||
|     string-hash "^1.1.1" | ||||
| 
 | ||||
| postcss-normalize-charset@^1.1.0: | ||||
|   version "1.1.1" | ||||
|   resolved "https://registry.yarnpkg.com/postcss-normalize-charset/-/postcss-normalize-charset-1.1.1.tgz#ef9ee71212d7fe759c78ed162f61ed62b5cb93f1" | ||||
|   integrity sha1-757nEhLX/nWceO0WL2HtYrXLk/E= | ||||
|   dependencies: | ||||
|     postcss "^5.0.5" | ||||
| 
 | ||||
| postcss-normalize-charset@^4.0.1: | ||||
|   version "4.0.1" | ||||
|   resolved "https://registry.yarnpkg.com/postcss-normalize-charset/-/postcss-normalize-charset-4.0.1.tgz#8b35add3aee83a136b0471e0d59be58a50285dd4" | ||||
|  | @ -7577,6 +7948,16 @@ postcss-normalize-unicode@^4.0.1: | |||
|     postcss "^7.0.0" | ||||
|     postcss-value-parser "^3.0.0" | ||||
| 
 | ||||
| postcss-normalize-url@^3.0.7: | ||||
|   version "3.0.8" | ||||
|   resolved "https://registry.yarnpkg.com/postcss-normalize-url/-/postcss-normalize-url-3.0.8.tgz#108f74b3f2fcdaf891a2ffa3ea4592279fc78222" | ||||
|   integrity sha1-EI90s/L82viRov+j6kWSJ5/HgiI= | ||||
|   dependencies: | ||||
|     is-absolute-url "^2.0.0" | ||||
|     normalize-url "^1.4.0" | ||||
|     postcss "^5.0.14" | ||||
|     postcss-value-parser "^3.2.3" | ||||
| 
 | ||||
| postcss-normalize-url@^4.0.1: | ||||
|   version "4.0.1" | ||||
|   resolved "https://registry.yarnpkg.com/postcss-normalize-url/-/postcss-normalize-url-4.0.1.tgz#10e437f86bc7c7e58f7b9652ed878daaa95faae1" | ||||
|  | @ -7595,6 +7976,14 @@ postcss-normalize-whitespace@^4.0.2: | |||
|     postcss "^7.0.0" | ||||
|     postcss-value-parser "^3.0.0" | ||||
| 
 | ||||
| postcss-ordered-values@^2.1.0: | ||||
|   version "2.2.3" | ||||
|   resolved "https://registry.yarnpkg.com/postcss-ordered-values/-/postcss-ordered-values-2.2.3.tgz#eec6c2a67b6c412a8db2042e77fe8da43f95c11d" | ||||
|   integrity sha1-7sbCpntsQSqNsgQud/6NpD+VwR0= | ||||
|   dependencies: | ||||
|     postcss "^5.0.4" | ||||
|     postcss-value-parser "^3.0.1" | ||||
| 
 | ||||
| postcss-ordered-values@^4.1.2: | ||||
|   version "4.1.2" | ||||
|   resolved "https://registry.yarnpkg.com/postcss-ordered-values/-/postcss-ordered-values-4.1.2.tgz#0cf75c820ec7d5c4d280189559e0b571ebac0eee" | ||||
|  | @ -7604,6 +7993,21 @@ postcss-ordered-values@^4.1.2: | |||
|     postcss "^7.0.0" | ||||
|     postcss-value-parser "^3.0.0" | ||||
| 
 | ||||
| postcss-reduce-idents@^2.2.2: | ||||
|   version "2.4.0" | ||||
|   resolved "https://registry.yarnpkg.com/postcss-reduce-idents/-/postcss-reduce-idents-2.4.0.tgz#c2c6d20cc958284f6abfbe63f7609bf409059ad3" | ||||
|   integrity sha1-wsbSDMlYKE9qv75j92Cb9AkFmtM= | ||||
|   dependencies: | ||||
|     postcss "^5.0.4" | ||||
|     postcss-value-parser "^3.0.2" | ||||
| 
 | ||||
| postcss-reduce-initial@^1.0.0: | ||||
|   version "1.0.1" | ||||
|   resolved "https://registry.yarnpkg.com/postcss-reduce-initial/-/postcss-reduce-initial-1.0.1.tgz#68f80695f045d08263a879ad240df8dd64f644ea" | ||||
|   integrity sha1-aPgGlfBF0IJjqHmtJA343WT2ROo= | ||||
|   dependencies: | ||||
|     postcss "^5.0.4" | ||||
| 
 | ||||
| postcss-reduce-initial@^4.0.3: | ||||
|   version "4.0.3" | ||||
|   resolved "https://registry.yarnpkg.com/postcss-reduce-initial/-/postcss-reduce-initial-4.0.3.tgz#7fd42ebea5e9c814609639e2c2e84ae270ba48df" | ||||
|  | @ -7614,6 +8018,15 @@ postcss-reduce-initial@^4.0.3: | |||
|     has "^1.0.0" | ||||
|     postcss "^7.0.0" | ||||
| 
 | ||||
| postcss-reduce-transforms@^1.0.3: | ||||
|   version "1.0.4" | ||||
|   resolved "https://registry.yarnpkg.com/postcss-reduce-transforms/-/postcss-reduce-transforms-1.0.4.tgz#ff76f4d8212437b31c298a42d2e1444025771ae1" | ||||
|   integrity sha1-/3b02CEkN7McKYpC0uFEQCV3GuE= | ||||
|   dependencies: | ||||
|     has "^1.0.1" | ||||
|     postcss "^5.0.8" | ||||
|     postcss-value-parser "^3.0.1" | ||||
| 
 | ||||
| postcss-reduce-transforms@^4.0.2: | ||||
|   version "4.0.2" | ||||
|   resolved "https://registry.yarnpkg.com/postcss-reduce-transforms/-/postcss-reduce-transforms-4.0.2.tgz#17efa405eacc6e07be3414a5ca2d1074681d4e29" | ||||
|  | @ -7624,6 +8037,15 @@ postcss-reduce-transforms@^4.0.2: | |||
|     postcss "^7.0.0" | ||||
|     postcss-value-parser "^3.0.0" | ||||
| 
 | ||||
| postcss-selector-parser@^2.0.0, postcss-selector-parser@^2.2.2: | ||||
|   version "2.2.3" | ||||
|   resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-2.2.3.tgz#f9437788606c3c9acee16ffe8d8b16297f27bb90" | ||||
|   integrity sha1-+UN3iGBsPJrO4W/+jYsWKX8nu5A= | ||||
|   dependencies: | ||||
|     flatten "^1.0.2" | ||||
|     indexes-of "^1.0.1" | ||||
|     uniq "^1.0.1" | ||||
| 
 | ||||
| postcss-selector-parser@^3.0.0: | ||||
|   version "3.1.2" | ||||
|   resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz#b310f5c4c0fdaf76f94902bbaa30db6aa84f5270" | ||||
|  | @ -7643,6 +8065,16 @@ postcss-selector-parser@^6.0.0, postcss-selector-parser@^6.0.2, postcss-selector | |||
|     uniq "^1.0.1" | ||||
|     util-deprecate "^1.0.2" | ||||
| 
 | ||||
| postcss-svgo@^2.1.1: | ||||
|   version "2.1.6" | ||||
|   resolved "https://registry.yarnpkg.com/postcss-svgo/-/postcss-svgo-2.1.6.tgz#b6df18aa613b666e133f08adb5219c2684ac108d" | ||||
|   integrity sha1-tt8YqmE7Zm4TPwittSGcJoSsEI0= | ||||
|   dependencies: | ||||
|     is-svg "^2.0.0" | ||||
|     postcss "^5.0.14" | ||||
|     postcss-value-parser "^3.2.3" | ||||
|     svgo "^0.7.0" | ||||
| 
 | ||||
| postcss-svgo@^4.0.2: | ||||
|   version "4.0.2" | ||||
|   resolved "https://registry.yarnpkg.com/postcss-svgo/-/postcss-svgo-4.0.2.tgz#17b997bc711b333bab143aaed3b8d3d6e3d38258" | ||||
|  | @ -7653,6 +8085,15 @@ postcss-svgo@^4.0.2: | |||
|     postcss-value-parser "^3.0.0" | ||||
|     svgo "^1.0.0" | ||||
| 
 | ||||
| postcss-unique-selectors@^2.0.2: | ||||
|   version "2.0.2" | ||||
|   resolved "https://registry.yarnpkg.com/postcss-unique-selectors/-/postcss-unique-selectors-2.0.2.tgz#981d57d29ddcb33e7b1dfe1fd43b8649f933ca1d" | ||||
|   integrity sha1-mB1X0p3csz57Hf4f1DuGSfkzyh0= | ||||
|   dependencies: | ||||
|     alphanum-sort "^1.0.1" | ||||
|     postcss "^5.0.4" | ||||
|     uniqs "^2.0.0" | ||||
| 
 | ||||
| postcss-unique-selectors@^4.0.1: | ||||
|   version "4.0.1" | ||||
|   resolved "https://registry.yarnpkg.com/postcss-unique-selectors/-/postcss-unique-selectors-4.0.1.tgz#9446911f3289bfd64c6d680f073c03b1f9ee4bac" | ||||
|  | @ -7662,7 +8103,7 @@ postcss-unique-selectors@^4.0.1: | |||
|     postcss "^7.0.0" | ||||
|     uniqs "^2.0.0" | ||||
| 
 | ||||
| postcss-value-parser@^3.0.0: | ||||
| postcss-value-parser@^3.0.0, postcss-value-parser@^3.0.1, postcss-value-parser@^3.0.2, postcss-value-parser@^3.1.1, postcss-value-parser@^3.1.2, postcss-value-parser@^3.2.3, postcss-value-parser@^3.3.0: | ||||
|   version "3.3.1" | ||||
|   resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz#9ff822547e2893213cf1c30efa51ac5fd1ba8281" | ||||
|   integrity sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ== | ||||
|  | @ -7677,6 +8118,15 @@ postcss-value-parser@^4.1.0: | |||
|   resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz#443f6a20ced6481a2bda4fa8532a6e55d789a2cb" | ||||
|   integrity sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ== | ||||
| 
 | ||||
| postcss-zindex@^2.0.1: | ||||
|   version "2.2.0" | ||||
|   resolved "https://registry.yarnpkg.com/postcss-zindex/-/postcss-zindex-2.2.0.tgz#d2109ddc055b91af67fc4cb3b025946639d2af22" | ||||
|   integrity sha1-0hCd3AVbka9n/EyzsCWUZjnSryI= | ||||
|   dependencies: | ||||
|     has "^1.0.1" | ||||
|     postcss "^5.0.4" | ||||
|     uniqs "^2.0.0" | ||||
| 
 | ||||
| postcss@8.2.1, postcss@^8.1.4: | ||||
|   version "8.2.1" | ||||
|   resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.2.1.tgz#eabc5557c4558059b9d9e5b15bce7ffa9089c2a8" | ||||
|  | @ -7686,6 +8136,16 @@ postcss@8.2.1, postcss@^8.1.4: | |||
|     nanoid "^3.1.20" | ||||
|     source-map "^0.6.1" | ||||
| 
 | ||||
| postcss@^5.0.10, postcss@^5.0.11, postcss@^5.0.12, postcss@^5.0.13, postcss@^5.0.14, postcss@^5.0.16, postcss@^5.0.2, postcss@^5.0.4, postcss@^5.0.5, postcss@^5.0.8, postcss@^5.2.16: | ||||
|   version "5.2.18" | ||||
|   resolved "https://registry.yarnpkg.com/postcss/-/postcss-5.2.18.tgz#badfa1497d46244f6390f58b319830d9107853c5" | ||||
|   integrity sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg== | ||||
|   dependencies: | ||||
|     chalk "^1.1.3" | ||||
|     js-base64 "^2.1.9" | ||||
|     source-map "^0.5.6" | ||||
|     supports-color "^3.2.3" | ||||
| 
 | ||||
| postcss@^7.0.0, postcss@^7.0.1, postcss@^7.0.14, postcss@^7.0.27, postcss@^7.0.32, postcss@^7.0.5, postcss@^7.0.6: | ||||
|   version "7.0.32" | ||||
|   resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.32.tgz#4310d6ee347053da3433db2be492883d62cec59d" | ||||
|  | @ -7748,6 +8208,11 @@ prelude-ls@~1.1.2: | |||
|   resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" | ||||
|   integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ= | ||||
| 
 | ||||
| prepend-http@^1.0.0: | ||||
|   version "1.0.4" | ||||
|   resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc" | ||||
|   integrity sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw= | ||||
| 
 | ||||
| pretty-hrtime@^1.0.0: | ||||
|   version "1.0.3" | ||||
|   resolved "https://registry.yarnpkg.com/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz#b7e3ea42435a4c9b2759d99e0f201eb195802ee1" | ||||
|  | @ -8034,6 +8499,14 @@ qs@~6.5.2: | |||
|   resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" | ||||
|   integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA== | ||||
| 
 | ||||
| query-string@^4.1.0: | ||||
|   version "4.3.4" | ||||
|   resolved "https://registry.yarnpkg.com/query-string/-/query-string-4.3.4.tgz#bbb693b9ca915c232515b228b1a02b609043dbeb" | ||||
|   integrity sha1-u7aTucqRXCMlFbIosaArYJBD2+s= | ||||
|   dependencies: | ||||
|     object-assign "^4.1.0" | ||||
|     strict-uri-encode "^1.0.0" | ||||
| 
 | ||||
| querystring@0.2.0: | ||||
|   version "0.2.0" | ||||
|   resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" | ||||
|  | @ -8132,7 +8605,7 @@ readable-stream@1.1.x: | |||
|     isarray "0.0.1" | ||||
|     string_decoder "~0.10.x" | ||||
| 
 | ||||
| "readable-stream@2 || 3", readable-stream@^3.1.1, readable-stream@^3.4.0, readable-stream@^3.6.0: | ||||
| "readable-stream@2 || 3", readable-stream@3, readable-stream@^3.1.1, readable-stream@^3.4.0, readable-stream@^3.6.0: | ||||
|   version "3.6.0" | ||||
|   resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" | ||||
|   integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== | ||||
|  | @ -8232,11 +8705,27 @@ redis@3.0.2: | |||
|     redis-errors "^1.2.0" | ||||
|     redis-parser "^3.0.0" | ||||
| 
 | ||||
| reduce-css-calc@^1.2.6: | ||||
|   version "1.3.0" | ||||
|   resolved "https://registry.yarnpkg.com/reduce-css-calc/-/reduce-css-calc-1.3.0.tgz#747c914e049614a4c9cfbba629871ad1d2927716" | ||||
|   integrity sha1-dHyRTgSWFKTJz7umKYca0dKSdxY= | ||||
|   dependencies: | ||||
|     balanced-match "^0.4.2" | ||||
|     math-expression-evaluator "^1.2.14" | ||||
|     reduce-function-call "^1.0.1" | ||||
| 
 | ||||
| reduce-flatten@^2.0.0: | ||||
|   version "2.0.0" | ||||
|   resolved "https://registry.yarnpkg.com/reduce-flatten/-/reduce-flatten-2.0.0.tgz#734fd84e65f375d7ca4465c69798c25c9d10ae27" | ||||
|   integrity sha512-EJ4UNY/U1t2P/2k6oqotuX2Cc3T6nxJwsM0N0asT7dhrtH1ltUxDn4NalSYmPE2rCkVpcf/X6R0wDwcFpzhd4w== | ||||
| 
 | ||||
| reduce-function-call@^1.0.1: | ||||
|   version "1.0.3" | ||||
|   resolved "https://registry.yarnpkg.com/reduce-function-call/-/reduce-function-call-1.0.3.tgz#60350f7fb252c0a67eb10fd4694d16909971300f" | ||||
|   integrity sha512-Hl/tuV2VDgWgCSEeWMLwxLZqX7OK59eU1guxXsRKTAyeYimivsKdtcV4fu3r710tpG5GmDKDhQ0HSZLExnNmyQ== | ||||
|   dependencies: | ||||
|     balanced-match "^1.0.0" | ||||
| 
 | ||||
| reflect-metadata@0.1.13, reflect-metadata@^0.1.13: | ||||
|   version "0.1.13" | ||||
|   resolved "https://registry.yarnpkg.com/reflect-metadata/-/reflect-metadata-0.1.13.tgz#67ae3ca57c972a2aa1642b10fe363fe32d49dc08" | ||||
|  | @ -8633,7 +9122,7 @@ sax@1.2.1: | |||
|   resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.1.tgz#7b8e656190b228e81a66aea748480d828cd2d37a" | ||||
|   integrity sha1-e45lYZCyKOgaZq6nSEgNgozS03o= | ||||
| 
 | ||||
| sax@>=0.6.0, sax@^1.2.4, sax@~1.2.4: | ||||
| sax@>=0.6.0, sax@^1.2.4, sax@~1.2.1, sax@~1.2.4: | ||||
|   version "1.2.4" | ||||
|   resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" | ||||
|   integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== | ||||
|  | @ -8859,6 +9348,13 @@ snapdragon@^0.8.1: | |||
|     source-map-resolve "^0.5.0" | ||||
|     use "^3.1.0" | ||||
| 
 | ||||
| sort-keys@^1.0.0: | ||||
|   version "1.1.2" | ||||
|   resolved "https://registry.yarnpkg.com/sort-keys/-/sort-keys-1.1.2.tgz#441b6d4d346798f1b4e49e8920adfba0e543f9ad" | ||||
|   integrity sha1-RBttTTRnmPG05J6JIK37oOVD+a0= | ||||
|   dependencies: | ||||
|     is-plain-obj "^1.0.0" | ||||
| 
 | ||||
| sort-keys@^2.0.0: | ||||
|   version "2.0.0" | ||||
|   resolved "https://registry.yarnpkg.com/sort-keys/-/sort-keys-2.0.0.tgz#658535584861ec97d730d6cf41822e1f56684128" | ||||
|  | @ -8905,7 +9401,7 @@ source-map@0.6.1, source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0, sourc | |||
|   resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" | ||||
|   integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== | ||||
| 
 | ||||
| source-map@^0.5.6, source-map@~0.5.1: | ||||
| source-map@^0.5.1, source-map@^0.5.3, source-map@^0.5.6, source-map@~0.5.1: | ||||
|   version "0.5.7" | ||||
|   resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" | ||||
|   integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= | ||||
|  | @ -9052,6 +9548,11 @@ streamsearch@0.1.2: | |||
|   resolved "https://registry.yarnpkg.com/streamsearch/-/streamsearch-0.1.2.tgz#808b9d0e56fc273d809ba57338e929919a1a9f1a" | ||||
|   integrity sha1-gIudDlb8Jz2Am6VzOOkpkZoanxo= | ||||
| 
 | ||||
| strict-uri-encode@^1.0.0: | ||||
|   version "1.1.0" | ||||
|   resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713" | ||||
|   integrity sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM= | ||||
| 
 | ||||
| string-hash@^1.1.1: | ||||
|   version "1.1.3" | ||||
|   resolved "https://registry.yarnpkg.com/string-hash/-/string-hash-1.1.3.tgz#e8aafc0ac1855b4666929ed7dd1275df5d6c811b" | ||||
|  | @ -9266,6 +9767,13 @@ supports-color@^2.0.0: | |||
|   resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" | ||||
|   integrity sha1-U10EXOa2Nj+kARcIRimZXp3zJMc= | ||||
| 
 | ||||
| supports-color@^3.2.3: | ||||
|   version "3.2.3" | ||||
|   resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-3.2.3.tgz#65ac0504b3954171d8a64946b2ae3cbb8a5f54f6" | ||||
|   integrity sha1-ZawFBLOVQXHYpklGsq48u4pfVPY= | ||||
|   dependencies: | ||||
|     has-flag "^1.0.0" | ||||
| 
 | ||||
| supports-color@^5.3.0: | ||||
|   version "5.5.0" | ||||
|   resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" | ||||
|  | @ -9343,6 +9851,19 @@ svg.select.js@^3.0.1: | |||
|   dependencies: | ||||
|     svg.js "^2.6.5" | ||||
| 
 | ||||
| svgo@^0.7.0: | ||||
|   version "0.7.2" | ||||
|   resolved "https://registry.yarnpkg.com/svgo/-/svgo-0.7.2.tgz#9f5772413952135c6fefbf40afe6a4faa88b4bb5" | ||||
|   integrity sha1-n1dyQTlSE1xv779Ar+ak+qiLS7U= | ||||
|   dependencies: | ||||
|     coa "~1.0.1" | ||||
|     colors "~1.1.2" | ||||
|     csso "~2.3.1" | ||||
|     js-yaml "~3.7.0" | ||||
|     mkdirp "~0.5.1" | ||||
|     sax "~1.2.1" | ||||
|     whet.extend "~0.9.9" | ||||
| 
 | ||||
| svgo@^1.0.0: | ||||
|   version "1.3.2" | ||||
|   resolved "https://registry.yarnpkg.com/svgo/-/svgo-1.3.2.tgz#b6dc511c063346c9e415b81e43401145b96d4167" | ||||
|  | @ -9469,6 +9990,15 @@ terser-webpack-plugin@^5.0.3: | |||
|     source-map "^0.6.1" | ||||
|     terser "^5.3.8" | ||||
| 
 | ||||
| terser@5.4.0: | ||||
|   version "5.4.0" | ||||
|   resolved "https://registry.yarnpkg.com/terser/-/terser-5.4.0.tgz#9815c0839072d5c894e22c6fc508fbe9f5e7d7e8" | ||||
|   integrity sha512-3dZunFLbCJis9TAF2VnX+VrQLctRUmt1p3W2kCsJuZE4ZgWqh//+1MZ62EanewrqKoUf4zIaDGZAvml4UDc0OQ== | ||||
|   dependencies: | ||||
|     commander "^2.20.0" | ||||
|     source-map "~0.7.2" | ||||
|     source-map-support "~0.5.19" | ||||
| 
 | ||||
| terser@^5.3.8: | ||||
|   version "5.3.8" | ||||
|   resolved "https://registry.yarnpkg.com/terser/-/terser-5.3.8.tgz#991ae8ba21a3d990579b54aa9af11586197a75dd" | ||||
|  | @ -9535,6 +10065,13 @@ through2@^3.0.1: | |||
|   dependencies: | ||||
|     readable-stream "2 || 3" | ||||
| 
 | ||||
| through2@^4.0.2: | ||||
|   version "4.0.2" | ||||
|   resolved "https://registry.yarnpkg.com/through2/-/through2-4.0.2.tgz#a7ce3ac2a7a8b0b966c80e7c49f0484c3b239764" | ||||
|   integrity sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw== | ||||
|   dependencies: | ||||
|     readable-stream "3" | ||||
| 
 | ||||
| through@2, through@~2.3.8: | ||||
|   version "2.3.8" | ||||
|   resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" | ||||
|  | @ -10152,6 +10689,13 @@ vinyl-sourcemap@^1.1.0: | |||
|     remove-bom-buffer "^3.0.0" | ||||
|     vinyl "^2.0.0" | ||||
| 
 | ||||
| vinyl-sourcemaps-apply@^0.2.1: | ||||
|   version "0.2.1" | ||||
|   resolved "https://registry.yarnpkg.com/vinyl-sourcemaps-apply/-/vinyl-sourcemaps-apply-0.2.1.tgz#ab6549d61d172c2b1b87be5c508d239c8ef87705" | ||||
|   integrity sha1-q2VJ1h0XLCsbh75cUI0jnI74dwU= | ||||
|   dependencies: | ||||
|     source-map "^0.5.1" | ||||
| 
 | ||||
| vinyl@^2.0.0, vinyl@^2.2.0: | ||||
|   version "2.2.0" | ||||
|   resolved "https://registry.yarnpkg.com/vinyl/-/vinyl-2.2.0.tgz#d85b07da96e458d25b2ffe19fece9f2caa13ed86" | ||||
|  | @ -10397,6 +10941,11 @@ whatwg-url@^8.0.0: | |||
|     tr46 "^2.0.0" | ||||
|     webidl-conversions "^5.0.0" | ||||
| 
 | ||||
| whet.extend@~0.9.9: | ||||
|   version "0.9.9" | ||||
|   resolved "https://registry.yarnpkg.com/whet.extend/-/whet.extend-0.9.9.tgz#f877d5bf648c97e5aa542fadc16d6a259b9c11a1" | ||||
|   integrity sha1-+HfVv2SMl+WqVC+twW1qJZucEaE= | ||||
| 
 | ||||
| which-module@^1.0.0: | ||||
|   version "1.0.0" | ||||
|   resolved "https://registry.yarnpkg.com/which-module/-/which-module-1.0.0.tgz#bba63ca861948994ff307736089e3b96026c2a4f" | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue