chore: Update develop

This commit is contained in:
Mattia Astorino 2018-05-06 19:13:21 +02:00
commit 8f5abbd3a2
No known key found for this signature in database
GPG key ID: 7BE552533AB6D4E2
33 changed files with 992 additions and 1300 deletions

View file

@ -1,8 +1,8 @@
import { IThemeIconsItem } from "./itheme-icons-item"; import {IThemeIconsItem} from './itheme-icons-item';
export interface IThemeIconsAccents { export interface IThemeIconsAccents {
iconDefinitions: { iconDefinitions: {
_folder_open: IThemeIconsItem; _folder_open: IThemeIconsItem;
_folder_open_build: IThemeIconsItem; _folder_open_build: IThemeIconsItem;
} };
} }

View file

@ -1,17 +1,17 @@
import { IThemeIconsItem } from "./itheme-icons-item"; import {IThemeIconsItem} from './itheme-icons-item';
export interface IThemeIconsVariants { export interface IThemeIconsVariants {
iconDefinitions: { iconDefinitions: {
"_folder_dark": IThemeIconsItem; _folder_dark: IThemeIconsItem;
"_folder_dark_build": IThemeIconsItem; _folder_dark_build: IThemeIconsItem;
"_folder_light": IThemeIconsItem; _folder_light: IThemeIconsItem;
"_folder_light_build": IThemeIconsItem; _folder_light_build: IThemeIconsItem;
"_folder_vscode": IThemeIconsItem; _folder_vscode: IThemeIconsItem;
"_folder_gulp": IThemeIconsItem; _folder_gulp: IThemeIconsItem;
"_folder_node": IThemeIconsItem; _folder_node: IThemeIconsItem;
"_folder_images": IThemeIconsItem; _folder_images: IThemeIconsItem;
"_folder_js": IThemeIconsItem; _folder_js: IThemeIconsItem;
"_folder_src": IThemeIconsItem; _folder_src: IThemeIconsItem;
"_folder_assets": IThemeIconsItem; _folder_assets: IThemeIconsItem;
} };
} }

View file

@ -1,11 +1,10 @@
import * as gulp from "gulp";
import * as fs from 'fs'; import * as fs from 'fs';
import { CHARSET } from "../../extensions/consts/files"; import * as gulp from 'gulp';
import {CHARSET} from './../../extensions/consts/files';
export default gulp.task('changelog-title', () => { export default gulp.task('changelog-title', () => {
fs.writeFileSync( fs.writeFileSync(
'./CHANGELOG.md', './CHANGELOG.md',
fs.readFileSync('CHANGELOG.md', CHARSET).replace('# Change Log', '# Material Theme Changelog'), fs.readFileSync('CHANGELOG.md', CHARSET).replace('# Change Log', '# Material Theme Changelog'),
{ encoding: CHARSET }); {encoding: CHARSET});
}); });

View file

@ -3,22 +3,19 @@ import * as gulp from 'gulp';
import * as gutil from 'gulp-util'; import * as gutil from 'gulp-util';
import * as path from 'path'; import * as path from 'path';
import { MESSAGE_GENERATED, MESSAGE_ICON_ACCENTS_ERROR } from "../consts/log"; import {MESSAGE_GENERATED, MESSAGE_ICON_ACCENTS_ERROR} from './../consts/log';
import { CHARSET } from "../../extensions/consts/files"; import {CHARSET} from './../../extensions/consts/files';
import { IDefaults } from "../../extensions/interfaces/idefaults"; import {IThemeIconsAccents} from './../interfaces/itheme-icons-accents';
import { IThemeIconsAccents } from "../interfaces/itheme-icons-accents"; import PATHS from './../../extensions/consts/paths';
import PATHS from '../../extensions/consts/paths' import {IThemeIconsItem} from './../interfaces/itheme-icons-item';
import { IThemeIconsItem } from '../interfaces/itheme-icons-item'; import {getAccentableIcons, getDefaultValues} from './../../extensions/helpers/fs';
import { getAccentableIcons } from '../../extensions/helpers/fs';
const BASE_ICON_THEME_PATH: string = path.join(process.cwd(), PATHS.THEMES, './Material-Theme-Icons.json'); const BASE_ICON_THEME_PATH: string = path.join(process.cwd(), PATHS.THEMES, './Material-Theme-Icons.json');
const DEFAULTS: IDefaults = require('../../extensions/defaults.json'); const DEFAULTS = getDefaultValues();
/** /**
* Normalizes icon path * Normalizes icon path
* @param {string} iconPath
* @returns {string}
*/ */
function normalizeIconPath(iconPath: string): string { function normalizeIconPath(iconPath: string): string {
return path.join(process.cwd(), PATHS.ICONS, iconPath); return path.join(process.cwd(), PATHS.ICONS, iconPath);
@ -26,9 +23,6 @@ function normalizeIconPath(iconPath: string): string {
/** /**
* Replaces a file name with the accented filename * Replaces a file name with the accented filename
* @param {string} name
* @param {string} accentName
* @returns {string}
*/ */
function replaceNameWithAccent(name: string, accentName: string): string { function replaceNameWithAccent(name: string, accentName: string): string {
return name.replace('.svg', `.accent.${ accentName }.svg`); return name.replace('.svg', `.accent.${ accentName }.svg`);
@ -36,24 +30,17 @@ function replaceNameWithAccent(name: string, accentName: string): string {
/** /**
* Replaces a SVG colour * Replaces a SVG colour
*
* @param {string} filecontent
* @param {string} colour
* @returns {string}
*/ */
export function replaceSVGColour(filecontent: string, colour: string): string { export function replaceSVGColour(filecontent: string, colour: string): string {
return filecontent.replace(new RegExp('#(80CBC4)', 'i'), ($0, $1) => { return filecontent.replace(new RegExp('#(80CBC4)', 'i'), ($0, $1) => {
const newColour = colour.replace('#', '');
colour = colour.replace('#', ''); console.log(`Replacing colour ${ $1 } with ${ newColour }`);
console.log(`Replacing colour ${ $1 } with ${ colour }`) return $0.replace($1, newColour);
return $0.replace($1, colour);
}); });
} }
/** /**
* Replaces white spaces in accents' names * Replaces white spaces in accents' names
* @param {string} input
* @returns {string}
*/ */
function replaceWhiteSpaces(input: string): string { function replaceWhiteSpaces(input: string): string {
return input.replace(/\s+/g, '-'); return input.replace(/\s+/g, '-');
@ -61,18 +48,15 @@ function replaceWhiteSpaces(input: string): string {
/** /**
* Writes a new svg file * Writes a new svg file
* @param {string} fromFile
* @param {string} toFile
* @param {string} accentColour
*/ */
function writeSVGIcon(fromFile: string, toFile: string, accent: string): void { function writeSVGIcon(fromFile: string, toFile: string, accent: string): void {
let fileContent: string = fs.readFileSync(normalizeIconPath(fromFile), CHARSET); const fileContent: string = fs.readFileSync(normalizeIconPath(fromFile), CHARSET);
let content: string = replaceSVGColour(fileContent, DEFAULTS.accents[accent]); const content: string = replaceSVGColour(fileContent, DEFAULTS.accents[accent]);
toFile = normalizeIconPath(toFile); const pathToFile = normalizeIconPath(toFile);
gutil.log(gutil.colors.gray(`Accented icon ${toFile} created with colour ${ accent } (${ DEFAULTS.accents[accent] })`)); gutil.log(gutil.colors.gray(`Accented icon ${pathToFile} created with colour ${ accent } (${ DEFAULTS.accents[accent] })`));
fs.writeFileSync(toFile, content); fs.writeFileSync(pathToFile, content);
} }
// Exports task to index.ts // Exports task to index.ts
@ -83,21 +67,21 @@ export default gulp.task('build:icons.accents', cb => {
basetheme = require(BASE_ICON_THEME_PATH); basetheme = require(BASE_ICON_THEME_PATH);
Object.keys(DEFAULTS.accents).forEach(key => { Object.keys(DEFAULTS.accents).forEach(key => {
let iconName = replaceWhiteSpaces(key); const iconName = replaceWhiteSpaces(key);
let themecopy: IThemeIconsAccents = JSON.parse(JSON.stringify(basetheme)); const themecopy: IThemeIconsAccents = JSON.parse(JSON.stringify(basetheme));
let themePath: string = path.join(PATHS.THEMES, `./Material-Theme-Icons-${ key }.json`); const themePath: string = path.join(PATHS.THEMES, `./Material-Theme-Icons-${ key }.json`);
getAccentableIcons().forEach(accentableIconName => { getAccentableIcons().forEach(accentableIconName => {
gutil.log(gutil.colors.gray(`Preparing ${ accentableIconName } accented icon`)); gutil.log(gutil.colors.gray(`Preparing ${ accentableIconName } accented icon`));
let iconOriginDefinition: IThemeIconsItem = (basetheme.iconDefinitions as any)[accentableIconName]; const iconOriginDefinition: IThemeIconsItem = (basetheme.iconDefinitions as any)[accentableIconName];
let iconCopyDefinition: IThemeIconsItem = (themecopy.iconDefinitions as any)[accentableIconName]; const iconCopyDefinition: IThemeIconsItem = (themecopy.iconDefinitions as any)[accentableIconName];
if (iconOriginDefinition !== undefined && typeof iconOriginDefinition.iconPath === 'string' && iconCopyDefinition !== undefined && typeof iconCopyDefinition.iconPath === 'string') { if (iconOriginDefinition !== undefined && typeof iconOriginDefinition.iconPath === 'string' && iconCopyDefinition !== undefined && typeof iconCopyDefinition.iconPath === 'string') {
iconCopyDefinition.iconPath = replaceNameWithAccent(iconOriginDefinition.iconPath, iconName); iconCopyDefinition.iconPath = replaceNameWithAccent(iconOriginDefinition.iconPath, iconName);
writeSVGIcon(iconOriginDefinition.iconPath, iconCopyDefinition.iconPath, key); writeSVGIcon(iconOriginDefinition.iconPath, iconCopyDefinition.iconPath, key);
} else { } else {
gutil.log(gutil.colors.yellow(`Icon ${ accentableIconName } not found`)) gutil.log(gutil.colors.yellow(`Icon ${ accentableIconName } not found`));
} }
}); });

View file

@ -1,44 +1,47 @@
import {getVariantIcons} from '../../extensions/helpers/fs';
import * as gulp from 'gulp'; import * as gulp from 'gulp';
import * as path from 'path'; import * as path from 'path';
import * as fs from 'fs'; import * as fs from 'fs';
import { CHARSET } from "../../extensions/consts/files"; import {IThemeIconsVariants} from '../interfaces/itheme-icons-variants';
import { IPackageJSON } from "../../extensions/interfaces/ipackage.json"; import {CHARSET} from './../../extensions/consts/files';
import { IThemeIconsVariants } from "../interfaces/itheme-icons-variants"; import PATHS from './../../extensions/consts/paths';
import PATHS from '../../extensions/consts/paths' import {getDefaultValues, getVariantIcons, getPackageJSON} from './../../extensions/helpers/fs';
import { getDefaultValues } from "../../extensions/helpers/fs"; import {IDefaultsThemeVariant} from './../../extensions/interfaces/idefaults';
import { IDefaultsThemeVariantColours } from "../../extensions/interfaces/idefaults"; import {IThemeIconsItem} from './../interfaces/itheme-icons-item';
import { IThemeIconsItem } from '../interfaces/itheme-icons-item';
const PACKAGE_JSON: IPackageJSON = require(path.join(process.cwd(), './package.json')); const PACKAGE_JSON = getPackageJSON();
let variants: IDefaultsThemeVariantColours = getDefaultValues().themeVariantsColours; const variants: IDefaultsThemeVariant = getDefaultValues().themeVariantsColours;
function writeIconVariant(filepath: string, destpath: string, colour: string): void {
let regexp = new RegExp('(#4a616c)', 'i')
filepath = path.join(process.cwd(), PATHS.ICONS, filepath);
destpath = path.join(process.cwd(), PATHS.ICONS, destpath);
fs.writeFileSync(destpath, fs.readFileSync(filepath, CHARSET).replace(regexp, ($0, $1) => $0.replace($1, colour)), { encoding: CHARSET }) ;
}
const writeIconVariant = (filepath: string, destpath: string, colour: string): void => {
const regexp = new RegExp('(#4a616c)', 'i');
const finalFilePath = path.join(process.cwd(), PATHS.ICONS, filepath);
const finalDestpath = path.join(process.cwd(), PATHS.ICONS, destpath);
fs.writeFileSync(
finalDestpath,
fs.readFileSync(finalFilePath, CHARSET)
.replace(regexp, ($0, $1) => $0.replace($1, colour)), {encoding: CHARSET}
);
};
export default gulp.task('build:icons.variants', callback => { export default gulp.task('build:icons.variants', callback => {
try { try {
Object.keys(variants).forEach(variantName => { Object.keys(variants).forEach(variantName => {
PACKAGE_JSON.contributes.iconThemes.forEach(contribute => { PACKAGE_JSON.contributes.iconThemes.forEach(contribute => {
let regexpCheck: RegExp = new RegExp(Object.keys(variants).join('|'), 'i'); const regexpCheck: RegExp = new RegExp(Object.keys(variants).join('|'), 'i');
if (regexpCheck.test(contribute.path) || regexpCheck.test(contribute.id)) return; if (regexpCheck.test(contribute.path) || regexpCheck.test(contribute.id)) {
return;
}
let basepath: string = path.join(process.cwd(), contribute.path); const basepath: string = path.join(process.cwd(), contribute.path);
let basetheme: IThemeIconsVariants = require(basepath); const basetheme: IThemeIconsVariants = require(basepath);
let theme: IThemeIconsVariants = JSON.parse(JSON.stringify(basetheme)); const theme: IThemeIconsVariants = JSON.parse(JSON.stringify(basetheme));
let variant = variants[variantName]; const variant = variants[variantName];
getVariantIcons().forEach(_iconName => { getVariantIcons().forEach(iconName => {
let basethemeIcon: IThemeIconsItem = (basetheme.iconDefinitions as any)[_iconName]; const basethemeIcon: IThemeIconsItem = (basetheme.iconDefinitions as any)[iconName];
let themeIcon: IThemeIconsItem = (theme.iconDefinitions as any)[_iconName]; const themeIcon: IThemeIconsItem = (theme.iconDefinitions as any)[iconName];
if (themeIcon !== undefined) { if (themeIcon !== undefined) {
themeIcon.iconPath = themeIcon.iconPath.replace('.svg', `${ variantName }.svg`); themeIcon.iconPath = themeIcon.iconPath.replace('.svg', `${ variantName }.svg`);

View file

@ -4,24 +4,22 @@ import * as gutil from 'gulp-util';
import * as mustache from 'mustache'; import * as mustache from 'mustache';
import * as path from 'path'; import * as path from 'path';
import { HR, MESSAGE_GENERATED, MESSAGE_ICON_ERROR } from './../consts/log'; import {HR, MESSAGE_GENERATED, MESSAGE_ICON_ERROR} from './../consts/log';
import { CHARSET } from "../../extensions/consts/files"; import {CHARSET} from './../../extensions/consts/files';
import { IGenericObject } from "../../extensions/interfaces/igeneric-object"; import {IGenericObject} from './../../extensions/interfaces/igeneric-object';
import { IIcon } from './../interfaces/iicon'; import {IIcon} from './../interfaces/iicon';
import paths from '../../extensions/consts/paths'; import paths from './../../extensions/consts/paths';
import { ensureDir } from '../../extensions/helpers/fs'; import {ensureDir} from './../../extensions/helpers/fs';
/** /**
* Returns an object implementing the IIcon interface * Returns an object implementing the IIcon interface
* @param {string} fileName
* @returns {IIcon}
*/ */
function iconFactory(fileName: string): IIcon { const iconFactory = (fileName: string): IIcon => {
gutil.log(gutil.colors.gray(`Processing icon ${ fileName }`)) gutil.log(gutil.colors.gray(`Processing icon ${ fileName }`));
let name: string = path.basename(fileName, path.extname(fileName)); let name: string = path.basename(fileName, path.extname(fileName));
let filename: string = name; const filename: string = name;
let last: boolean = false; const last: boolean = false;
// renaming icon for vscode // renaming icon for vscode
// if the icon filename starts with a folder prefix, // if the icon filename starts with a folder prefix,
@ -35,8 +33,8 @@ function iconFactory(fileName: string): IIcon {
gutil.log(gutil.colors.gray(`VSCode icon name ${ name } with filename ${ filename }`)); gutil.log(gutil.colors.gray(`VSCode icon name ${ name } with filename ${ filename }`));
return { filename, name, last } as IIcon; return {filename, name, last} as IIcon;
} };
/** /**
* > Build Icons * > Build Icons
@ -44,24 +42,26 @@ function iconFactory(fileName: string): IIcon {
*/ */
export default gulp.task('build:icons', cb => { export default gulp.task('build:icons', cb => {
let contents: string; let contents: string;
let fileNames: string[] = fs.readdirSync(path.join(paths.SRC, `./icons/svgs`)); const fileNames: string[] = fs.readdirSync(path.join(paths.SRC, './icons/svgs'));
let icons: IIcon[] = fileNames.map(fileName => iconFactory(fileName)); const icons: IIcon[] = fileNames.map(fileName => iconFactory(fileName));
let partials: string[] = fs.readdirSync(path.join(paths.SRC, `./icons/partials`)); const partials: string[] = fs.readdirSync(path.join(paths.SRC, './icons/partials'));
let partialsData: IGenericObject<any> = {}; const partialsData: IGenericObject<any> = {};
let pathTemp: string = './themes/.material-theme-icons.tmp'; const pathTemp: string = './themes/.material-theme-icons.tmp';
ensureDir(path.join(paths.THEMES)); ensureDir(path.join(paths.THEMES));
icons[icons.length - 1].last = true; icons[icons.length - 1].last = true;
partials.forEach(partial => { partials.forEach(partial => {
partialsData[path.basename(partial, path.extname(partial))] = fs.readFileSync(path.join(paths.SRC, `./icons/partials`, `./${partial}`), CHARSET); partialsData[path.basename(partial, path.extname(partial))] = fs.readFileSync(
path.join(paths.SRC, './icons/partials', `./${partial}`
), CHARSET);
}); });
contents = mustache.render( contents = mustache.render(
fs.readFileSync(path.join(paths.SRC, `./icons/icons-theme.json`), CHARSET) fs.readFileSync(path.join(paths.SRC, './icons/icons-theme.json'), CHARSET),
, { icons } {icons},
, partialsData partialsData
); );
try { try {
@ -72,7 +72,7 @@ export default gulp.task('build:icons', cb => {
return; return;
} }
fs.writeFileSync(pathTemp, contents, { encoding: CHARSET }); fs.writeFileSync(pathTemp, contents, {encoding: CHARSET});
gutil.log(gutil.colors.gray(HR)); gutil.log(gutil.colors.gray(HR));
gutil.log(MESSAGE_GENERATED, gutil.colors.green(pathTemp)); gutil.log(MESSAGE_GENERATED, gutil.colors.green(pathTemp));

View file

@ -4,25 +4,24 @@ import * as gulpUtil from 'gulp-util';
import * as mustache from 'mustache'; import * as mustache from 'mustache';
import * as path from 'path'; import * as path from 'path';
import { HR, MESSAGE_GENERATED, MESSAGE_THEME_VARIANT_PARSE_ERROR } from './../consts/log'; import {HR, MESSAGE_GENERATED, MESSAGE_THEME_VARIANT_PARSE_ERROR} from './../consts/log';
import { CHARSET } from "../../extensions/consts/files"; import {CHARSET} from './../../extensions/consts/files';
import { IDefaults } from "../../extensions/interfaces/idefaults"; import {IThemeVariant} from './../interfaces/itheme-variant';
import { IThemeVariant } from './../interfaces/itheme-variant'; import paths from './../../extensions/consts/paths';
import paths from '../../extensions/consts/paths'; import {ensureDir, getDefaultValues} from './../../extensions/helpers/fs';
import { ensureDir } from '../../extensions/helpers/fs';
let commons: IDefaults = require('../../extensions/defaults.json'); const commons = getDefaultValues();
let themeTemplateFileContent: string = fs.readFileSync(path.join(paths.SRC, `/themes/theme-template-color-theme.json`), CHARSET); const themeTemplateFileContent: string = fs.readFileSync(path.join(paths.SRC, '/themes/theme-template-color-theme.json'), CHARSET);
let themeVariants: IThemeVariant[] = []; const themeVariants: IThemeVariant[] = [];
let fileNames: string[] = fs.readdirSync(path.join(paths.SRC, `./themes/settings/specific`)); const fileNames: string[] = fs.readdirSync(path.join(paths.SRC, './themes/settings/specific'));
// build theme variants for later use in templating // build theme variants for later use in templating
fileNames.forEach(fileName => { fileNames.forEach(fileName => {
let filePath: string = path.join(paths.SRC, `./themes/settings/specific`, `./${fileName}`); const filePath: string = path.join(paths.SRC, './themes/settings/specific', `./${fileName}`);
let contents: string = fs.readFileSync(filePath, CHARSET); const contents: string = fs.readFileSync(filePath, CHARSET);
try { try {
themeVariants.push(JSON.parse(contents)); themeVariants.push(JSON.parse(contents));
@ -42,12 +41,12 @@ export default gulp.task('build:themes', cb => {
try { try {
themeVariants.forEach(variant => { themeVariants.forEach(variant => {
let filePath = path.join(paths.THEMES, `./${variant.name}.json`); const filePath = path.join(paths.THEMES, `./${variant.name}.json`);
let templateData = { commons, variant }; const templateData = {commons, variant};
let templateJSON: any = JSON.parse(mustache.render(themeTemplateFileContent, templateData)); const templateJSON: any = JSON.parse(mustache.render(themeTemplateFileContent, templateData));
let templateJSONStringified: string = JSON.stringify(templateJSON, null, 2); const templateJSONStringified: string = JSON.stringify(templateJSON, null, 2);
fs.writeFileSync(filePath, templateJSONStringified, { encoding: CHARSET }); fs.writeFileSync(filePath, templateJSONStringified, {encoding: CHARSET});
gulpUtil.log(MESSAGE_GENERATED, gulpUtil.colors.green(filePath)); gulpUtil.log(MESSAGE_GENERATED, gulpUtil.colors.green(filePath));
}); });

View file

@ -1,7 +1,7 @@
import * as gulp from "gulp"; import * as gulp from 'gulp';
import * as path from "path"; import * as path from 'path';
import Paths from "../../extensions/consts/paths"; import Paths from './../../extensions/consts/paths';
/* /*
* > Watcher * > Watcher
@ -10,5 +10,5 @@ import Paths from "../../extensions/consts/paths";
export default gulp.task('watch', () => { export default gulp.task('watch', () => {
// Commented due // Commented due
// gulp.watch(path.join(Paths.SRC, `./themes/**/*.json`), ['build:themes']); // gulp.watch(path.join(Paths.SRC, `./themes/**/*.json`), ['build:themes']);
gulp.watch(path.join(Paths.SRC, `./themes/**/*.json`)); gulp.watch(path.join(Paths.SRC, './themes/**/*.json'));
}); });

6
.travis.yml Normal file
View file

@ -0,0 +1,6 @@
language: node_js
node_js:
- '8'
script:
- yarn test

View file

@ -1,6 +1,7 @@
{ {
"editor.tabSize": 2, "editor.tabSize": 2,
"editor.insertSpaces": true, "editor.insertSpaces": true,
"files.insertFinalNewline": true,
"files.exclude": { "files.exclude": {
"**/.git": true, "**/.git": true,
".git-crypt": true, ".git-crypt": true,

View file

@ -1,57 +1,64 @@
import * as vscode from 'vscode'; import * as vscode from 'vscode';
import {IAccentCustomProperty} from '../../interfaces/iaccent-custom-property'; import {IAccentCustomProperty} from './../../interfaces/iaccent-custom-property';
import { IDefaults } from "../../interfaces/idefaults"; import {IGenericObject} from './../../interfaces/igeneric-object';
import {IGenericObject} from '../../interfaces/igeneric-object'; import {
import { updateAccent, isMaterialTheme, isMaterialThemeIcons } from "../../helpers/settings"; updateAccent,
import { getCurrentThemeID, getCurrentThemeIconsID, reloadWindow } from "../../helpers/vscode"; isMaterialTheme,
import { THEME_ICONS } from "../theme-icons/index"; isMaterialThemeIcons
} from './../../helpers/settings';
import {
getCurrentThemeID,
getCurrentThemeIconsID,
reloadWindow
} from './../../helpers/vscode';
import {getDefaultValues} from './../../helpers/fs';
import {THEME_ICONS} from './../theme-icons/index';
const REGEXP_HEX: RegExp = /^#([0-9A-F]{6}|[0-9A-F]{8})$/i; const REGEXP_HEX: RegExp = /^#([0-9A-F]{6}|[0-9A-F]{8})$/i;
let themeConfigCommon: IDefaults = require('../../defaults.json'); const accentsProperties: IGenericObject <IAccentCustomProperty> = {
let accentsProperties: IGenericObject<IAccentCustomProperty> = { 'activityBarBadge.background': {
"activityBarBadge.background": {
alpha: 100, alpha: 100,
value: undefined value: undefined
}, },
"list.activeSelectionForeground": { 'list.activeSelectionForeground': {
alpha: 100, alpha: 100,
value: undefined value: undefined
}, },
"list.inactiveSelectionForeground": { 'list.inactiveSelectionForeground': {
alpha: 100, alpha: 100,
value: undefined value: undefined
}, },
"list.highlightForeground": { 'list.highlightForeground': {
alpha: 100, alpha: 100,
value: undefined value: undefined
}, },
"scrollbarSlider.activeBackground": { 'scrollbarSlider.activeBackground': {
alpha: 50, alpha: 50,
value: undefined value: undefined
}, },
"editorSuggestWidget.highlightForeground": { 'editorSuggestWidget.highlightForeground': {
alpha: 100, alpha: 100,
value: undefined value: undefined
}, },
"textLink.foreground": { 'textLink.foreground': {
alpha: 100, alpha: 100,
value: undefined value: undefined
}, },
"progressBar.background": { 'progressBar.background': {
alpha: 100, alpha: 100,
value: undefined value: undefined
}, },
"pickerGroup.foreground": { 'pickerGroup.foreground': {
alpha: 100, alpha: 100,
value: undefined value: undefined
}, },
"tab.activeBorder": { 'tab.activeBorder': {
alpha: 100, alpha: 100,
value: undefined value: undefined
}, },
"notificationLink.foreground": { 'notificationLink.foreground': {
alpha: 100, alpha: 100,
value: undefined value: undefined
}, },
@ -63,53 +70,41 @@ let accentsProperties: IGenericObject<IAccentCustomProperty> = {
alpha: 100, alpha: 100,
value: undefined value: undefined
} }
} };
/** /**
* Assigns colours * Assigns colours
* @param {string} colour
* @param {*} config
*/ */
function assignColorCustomizations(colour: string, config: any): void { const assignColorCustomizations = (colour: string, config: any): void => {
if (!isValidColour(colour)) { const newColour = isValidColour(colour) ? colour : undefined;
colour = undefined;
}
Object.keys(accentsProperties).forEach(propertyName => { Object.keys(accentsProperties).forEach(propertyName => {
let accent: IAccentCustomProperty = accentsProperties[propertyName]; const accent: IAccentCustomProperty = accentsProperties[propertyName];
let _colour = colour; let colorProp = newColour;
if (colour && accent.alpha < 100) { if (colour && accent.alpha < 100) {
_colour = `${ colour }${ accent.alpha > 10 ? accent.alpha : `0${ accent.alpha }` }`; colorProp = `${ colour }${ accent.alpha > 10 ? accent.alpha : `0${ accent.alpha }` }`;
} }
if (accent) { if (accent) {
config[propertyName] = _colour; config[propertyName] = colorProp;
} }
}); });
} };
/** /**
* Determines if a string is a valid colour * Determines if a string is a valid colour
* @param {(string | null | undefined)} colour
* @returns {boolean}
*/ */
function isValidColour(colour: string | null | undefined): boolean { const isValidColour = (colour: string | null | undefined): boolean =>
if (typeof colour === 'string' && REGEXP_HEX.test(colour)) { typeof colour === 'string' && REGEXP_HEX.test(colour);
return true;
}
return false;
}
/** /**
* Sets workbench options * Sets workbench options
* @param {string} accentSelected
* @param {*} config
*/ */
function setWorkbenchOptions(accentSelected: string | undefined, config: any): void { const setWorkbenchOptions = (accentSelected: string | undefined, config: any): void => {
vscode.workspace.getConfiguration().update('workbench.colorCustomizations', config, true).then(() => { vscode.workspace.getConfiguration().update('workbench.colorCustomizations', config, true).then(() => {
let themeID = getCurrentThemeID() const themeID = getCurrentThemeID();
let themeIconsID = getCurrentThemeIconsID() const themeIconsID = getCurrentThemeIconsID();
updateAccent(accentSelected).then(() => { updateAccent(accentSelected).then(() => {
if (isMaterialTheme(themeID) && isMaterialThemeIcons(themeIconsID)) { if (isMaterialTheme(themeID) && isMaterialThemeIcons(themeIconsID)) {
@ -119,24 +114,27 @@ function setWorkbenchOptions(accentSelected: string | undefined, config: any): v
}, reason => { }, reason => {
vscode.window.showErrorMessage(reason); vscode.window.showErrorMessage(reason);
}); });
} };
/** /**
* VSCode command * VSCode command
*/ */
export const THEME_ACCENTS_SETTER = () => { export const THEME_ACCENTS_SETTER = () => {
const themeConfigCommon = getDefaultValues();
// shows the quick pick dropdown // shows the quick pick dropdown
let options: string[] = Object.keys(themeConfigCommon.accents); const options: string[] = Object.keys(themeConfigCommon.accents);
let purgeColourKey: string = 'Remove accents'; const purgeColourKey: string = 'Remove accents';
options.push(purgeColourKey); options.push(purgeColourKey);
vscode.window.showQuickPick(options).then(accentSelected => { vscode.window.showQuickPick(options).then(accentSelected => {
if (accentSelected === null || accentSelected === undefined) return; if (accentSelected === null || accentSelected === undefined) {
return;
}
let config: any = vscode.workspace.getConfiguration().get('workbench.colorCustomizations'); const config: any = vscode.workspace.getConfiguration().get('workbench.colorCustomizations');
switch(accentSelected) { switch (accentSelected) {
case purgeColourKey: case purgeColourKey:
assignColorCustomizations(undefined, config); assignColorCustomizations(undefined, config);
setWorkbenchOptions(undefined, config); setWorkbenchOptions(undefined, config);
@ -144,7 +142,6 @@ export const THEME_ACCENTS_SETTER = () => {
default: default:
assignColorCustomizations(themeConfigCommon.accents[accentSelected], config); assignColorCustomizations(themeConfigCommon.accents[accentSelected], config);
setWorkbenchOptions(accentSelected, config); setWorkbenchOptions(accentSelected, config);
break;
} }
}); });
} };

View file

@ -1,28 +1,33 @@
import {getAccentableIcons} from '../../helpers/fs';
import * as fs from 'fs'; import * as fs from 'fs';
import { getAbsolutePath, getDefaultValues, getThemeIconsByContributeID, getThemeIconsContribute, getVariantIcons } from "../../helpers/fs"; import {
import { getCurrentThemeIconsID, getCurrentThemeID } from "../../helpers/vscode"; getAccentableIcons,
import { isAccent, isMaterialThemeIcons, getCustomSettings } from "../../helpers/settings"; getAbsolutePath,
getDefaultValues,
getThemeIconsByContributeID,
getThemeIconsContribute,
getVariantIcons
} from './../../helpers/fs';
import {
isAccent,
isMaterialThemeIcons,
getCustomSettings
} from './../../helpers/settings';
import {getCurrentThemeIconsID, getCurrentThemeID} from './../../helpers/vscode';
import {CHARSET} from './../../consts/files';
import {IPackageJSONThemeIcons} from './../../interfaces/ipackage.json';
import {IThemeIconsIconPath, IThemeIcons} from './../../interfaces/itheme-icons';
import { CHARSET } from "../../consts/files"; const getIconDefinition = (definitions: any, iconname: string): IThemeIconsIconPath => {
import { IPackageJSONThemeIcons } from "../../interfaces/ipackage.json";
import {IThemeIconsIconPath, IThemeIcons} from '../../interfaces/itheme-icons';
function getIconDefinition(definitions: any, iconname: string): IThemeIconsIconPath {
return (definitions as any)[iconname]; return (definitions as any)[iconname];
} };
/** /**
* Replaces icon path with the accented one. * Replaces icon path with the accented one.
* @param {string} iconPath
* @param {string} accentName
* @returns {string}
*/ */
function replaceIconPathWithAccent(iconPath: string, accentName: string): string { const replaceIconPathWithAccent = (iconPath: string, accentName: string): string => {
return iconPath.replace('.svg', `.accent.${ accentName }.svg`); return iconPath.replace('.svg', `.accent.${ accentName }.svg`);
} };
const getVariantFromColor = (color: string): string => { const getVariantFromColor = (color: string): string => {
switch (true) { switch (true) {
@ -38,58 +43,58 @@ const getVariantFromColor = (color: string): string => {
}; };
export const THEME_ICONS = () => { export const THEME_ICONS = () => {
let deferred: any = {}; const deferred: any = {};
let promise = new Promise((resolve, reject) => { const promise = new Promise((resolve, reject) => {
deferred.resolve = resolve; deferred.resolve = resolve;
deferred.reject = reject; deferred.reject = reject;
}); });
let themeIconsID: string = getCurrentThemeIconsID(); const themeIconsID: string = getCurrentThemeIconsID();
if (isMaterialThemeIcons(themeIconsID)) { if (isMaterialThemeIcons(themeIconsID)) {
let themeID = getCurrentThemeID(); const themeID = getCurrentThemeID();
let customSettings = getCustomSettings(); const customSettings = getCustomSettings();
let defaults = getDefaultValues(); const defaults = getDefaultValues();
let accentName = customSettings.accent; const accentName = customSettings.accent;
let variantName: string = getVariantFromColor(themeID); const variantName: string = getVariantFromColor(themeID);
let themeContribute: IPackageJSONThemeIcons = getThemeIconsContribute(themeIconsID); const themeContribute: IPackageJSONThemeIcons = getThemeIconsContribute(themeIconsID);
let theme: IThemeIcons = getThemeIconsByContributeID(themeIconsID); const theme: IThemeIcons = getThemeIconsByContributeID(themeIconsID);
let themepath: string = getAbsolutePath(themeContribute.path); const themepath: string = getAbsolutePath(themeContribute.path);
if (isAccent(accentName, defaults)) { if (isAccent(accentName, defaults)) {
let _accentName = accentName.replace(/\s+/, '-'); const realAccentName = accentName.replace(/\s+/, '-');
getAccentableIcons().forEach(iconname => { getAccentableIcons().forEach(iconname => {
let distIcon = getIconDefinition(theme.iconDefinitions, iconname); const distIcon = getIconDefinition(theme.iconDefinitions, iconname);
let outIcon = getIconDefinition(defaults.icons.theme.iconDefinitions, iconname); const outIcon = getIconDefinition(defaults.icons.theme.iconDefinitions, iconname);
if (typeof distIcon === 'object' && typeof outIcon === 'object') { if (typeof distIcon === 'object' && typeof outIcon === 'object') {
distIcon.iconPath = replaceIconPathWithAccent(outIcon.iconPath, _accentName) distIcon.iconPath = replaceIconPathWithAccent(outIcon.iconPath, realAccentName);
} }
}) });
} else { } else {
getAccentableIcons().forEach(iconname => { getAccentableIcons().forEach(iconname => {
let distIcon = getIconDefinition(theme.iconDefinitions, iconname); const distIcon = getIconDefinition(theme.iconDefinitions, iconname);
let outIcon = getIconDefinition(defaults.icons.theme.iconDefinitions, iconname); const outIcon = getIconDefinition(defaults.icons.theme.iconDefinitions, iconname);
distIcon.iconPath = outIcon.iconPath; distIcon.iconPath = outIcon.iconPath;
}); });
} }
getVariantIcons().forEach(iconname => { getVariantIcons().forEach(iconname => {
let distIcon = getIconDefinition(theme.iconDefinitions, iconname); const distIcon = getIconDefinition(theme.iconDefinitions, iconname);
let outIcon = getIconDefinition(defaults.icons.theme.iconDefinitions, iconname); const outIcon = getIconDefinition(defaults.icons.theme.iconDefinitions, iconname);
if (!!distIcon && !!outIcon) { if (distIcon && outIcon) {
distIcon.iconPath = outIcon.iconPath.replace('.svg', `${ variantName }.svg`); distIcon.iconPath = outIcon.iconPath.replace('.svg', `${ variantName }.svg`);
} }
}) });
fs.writeFile(themepath, JSON.stringify(theme), { encoding: CHARSET }, (error) => { fs.writeFile(themepath, JSON.stringify(theme), {
if (error) { encoding: CHARSET
deferred.reject(error); }, err => {
if (err) {
deferred.reject(err);
return; return;
} }
@ -100,4 +105,4 @@ export const THEME_ICONS = () => {
} }
return promise; return promise;
} };

View file

@ -1,5 +1,4 @@
/** /**
* File charset * File charset
* @type {string}
*/ */
export const CHARSET: string = 'utf-8'; export const CHARSET: string = 'utf-8';

View file

@ -1,6 +1,6 @@
import * as path from 'path'; import * as path from 'path';
import { IPaths } from '../interfaces/ipaths'; import {IPaths} from '../interfaces/ipaths';
export const PATHS: IPaths = { export const PATHS: IPaths = {
DIST: './dist', DIST: './dist',

View file

@ -1,61 +1,61 @@
import * as path from 'path'; import * as path from 'path';
import * as vscode from 'vscode'; import * as vscode from 'vscode';
import { getDefaultValues, getPackageJSON, writeFile } from "./fs"; import {IDefaults} from './../interfaces/idefaults';
import { PATHS } from '../consts/paths';
function previewFile(): void { import {getDefaultValues, getPackageJSON, writeFile} from './fs';
let uri = vscode.Uri.file(path.join(PATHS.VSIX_DIR, './CHANGELOG.md')); import {PATHS} from './../consts/paths';
const previewFile = (): void => {
const uri = vscode.Uri.file(path.join(PATHS.VSIX_DIR, './CHANGELOG.md'));
vscode.commands.executeCommand('markdown.showPreview', uri); vscode.commands.executeCommand('markdown.showPreview', uri);
};
} const splitVersion = (input: string): {major: number; minor: number; patch: number} => {
const [major, minor, patch] = input.split('.').map(i => parseInt(i, 10));
return {major, minor, patch};
};
function splitVersion(input: string): { major: number, minor: number, patch: number } { const writeDefaults = (defaults: IDefaults) =>
let [ major, minor, patch ] = input.split('.').map(i => parseInt(i)); writeFile(path.join('./extensions/defaults.json'), JSON.stringify(defaults, null, 2));
return { major, minor, patch };
}
export function showChangelog(): void { export const showChangelog = (): void => {
let extname: string = 'vscode.markdown'; const extname: string = 'vscode.markdown';
let md = vscode.extensions.getExtension<any>(extname); const md = vscode.extensions.getExtension<any>(extname);
if (md === undefined) { if (md === undefined) {
console.warn(`Ext not found ${ extname }`) console.warn(`Ext not found ${ extname }`);
return; return;
} }
if (md.isActive) { if (md.isActive) {
previewFile(); return previewFile();
} else {
md.activate().then(() => {
previewFile();
}, reason => {
console.warn(reason);
});
}
}
export function shouldShowChangelog(): boolean {
let defaults = getDefaultValues();
let out: boolean;
let packageJSON = getPackageJSON();
if (defaults.changelog == undefined || (defaults.changelog !== undefined && typeof defaults.changelog.lastversion !== 'string')) {
defaults.changelog = {
lastversion: packageJSON.version
}
out = true;
} else {
let versionCurrent = splitVersion(packageJSON.version);
let versionOld = splitVersion(defaults.changelog.lastversion);
out = versionCurrent.major > versionOld.major || versionCurrent.minor > versionOld.minor || versionCurrent.patch > versionOld.patch;
defaults.changelog.lastversion = packageJSON.version;
} }
writeFile(path.join('./extensions/defaults.json'), JSON.stringify(defaults, null, 2)); md.activate()
.then(() => previewFile(),
reason => console.warn(reason)
);
};
export const shouldShowChangelog = (): boolean => {
const defaults = getDefaultValues();
const packageJSON = getPackageJSON();
const defaultsNotPresent = defaults.changelog === undefined ||
(defaults.changelog !== undefined && typeof defaults.changelog.lastversion !== 'string');
const versionCurrent = splitVersion(packageJSON.version);
const versionOld = defaultsNotPresent ? null : splitVersion(defaults.changelog.lastversion);
const out = !versionOld ||
versionCurrent.major > versionOld.major ||
versionCurrent.minor > versionOld.minor ||
versionCurrent.patch > versionOld.patch;
const newChangelog = {...defaults.changelog, lastversion: packageJSON.version};
const newDefaults = {...defaults, changelog: newChangelog};
writeDefaults(newDefaults);
return out; return out;
} };

View file

@ -1,30 +1,21 @@
import * as fs from 'fs' import * as fs from 'fs';
import * as path from 'path' import * as path from 'path';
import { IPackageJSON, IPackageJSONThemeIcons } from "../interfaces/ipackage.json"; import {IPackageJSON, IPackageJSONThemeIcons} from './../interfaces/ipackage.json';
import { CHARSET } from "../consts/files"; import {CHARSET} from './../consts/files';
import { IDefaults } from "../interfaces/idefaults"; import {IDefaults} from '../interfaces/idefaults';
import { IThemeIcons } from "../interfaces/itheme-icons"; import {IThemeIcons} from '../interfaces/itheme-icons';
import { PATHS } from "../consts/paths"; import {PATHS} from '../consts/paths';
/**
* @export
* @param {string} dirname
*/
export function ensureDir(dirname: string): void { export function ensureDir(dirname: string): void {
if (!fs.existsSync(dirname)) { if (!fs.existsSync(dirname)) {
fs.mkdirSync(dirname); fs.mkdirSync(dirname);
} }
} }
/**
* Gets default value
* @export
* @returns {IDefaults}
*/
export function getDefaultValues(): IDefaults { export function getDefaultValues(): IDefaults {
let defaults: IDefaults = require(path.join(PATHS.VSIX_DIR, './extensions/defaults.json')); const defaults: IDefaults = require(path.join(PATHS.VSIX_DIR, './extensions/defaults.json'));
if (defaults === undefined || defaults === null) { if (defaults === undefined || defaults === null) {
throw new Error('Cannot find defaults params'); throw new Error('Cannot find defaults params');
@ -33,74 +24,45 @@ export function getDefaultValues(): IDefaults {
return defaults; return defaults;
} }
/**
* Gets an absolute path
*
* @export
* @param {string} input
* @returns {string}
*/
export function getAbsolutePath(input: string): string { export function getAbsolutePath(input: string): string {
return path.join(PATHS.VSIX_DIR, input); return path.join(PATHS.VSIX_DIR, input);
} }
/**
* @export
* @returns {string[]}
*/
export function getAccentableIcons(): string[] { export function getAccentableIcons(): string[] {
return getDefaultValues().accentableIcons; return getDefaultValues().accentableIcons;
} }
/**
* @export
* @returns {string[]}
*/
export function getVariantIcons(): string[] { export function getVariantIcons(): string[] {
return getDefaultValues().variantsIcons; return getDefaultValues().variantsIcons;
} }
/** /**
* Gets a theme content by a given contribute ID * Gets a theme content by a given contribute ID
*
* @export
* @param {string} ID
* @returns {IThemeIcons}
*/ */
export function getThemeIconsByContributeID(ID: string): IThemeIcons | null { export function getThemeIconsByContributeID(ID: string): IThemeIcons | null {
let contribute: IPackageJSONThemeIcons = getThemeIconsContribute(ID) const contribute: IPackageJSONThemeIcons = getThemeIconsContribute(ID);
return contribute !== null ? require(path.join(PATHS.VSIX_DIR, contribute.path)) : null; return contribute !== null ? require(path.join(PATHS.VSIX_DIR, contribute.path)) : null;
} }
/** /**
* Gets a theme by name * Gets a theme by name
* @export
* @param {string} name
* @returns {IThemeIcons}
*/ */
export function getThemeIconsContribute(ID: string): IPackageJSONThemeIcons { export function getThemeIconsContribute(ID: string): IPackageJSONThemeIcons {
let contributes = getPackageJSON().contributes.iconThemes.filter(contribute => contribute.id === ID); const contributes = getPackageJSON().contributes.iconThemes.filter(contribute => contribute.id === ID);
return contributes[0] !== undefined ? contributes[0] : null; return contributes[0] !== undefined ? contributes[0] : null;
} }
/** /**
* Gets package JSON * Gets package JSON
* @export
* @returns {*}
*/ */
export function getPackageJSON(): IPackageJSON { export function getPackageJSON(): IPackageJSON {
let packageJSON: IPackageJSON = require(path.join(PATHS.VSIX_DIR, './package.json')); return require(path.join(PATHS.VSIX_DIR, './package.json'));
return packageJSON;
} }
/** /**
* Writes a file inside the vsix directory * Writes a file inside the vsix directory
* @export
* @param {string} filename
* @param {string} filecontent
*/ */
export function writeFile(filename: string, filecontent: string): void { export function writeFile(filename: string, filecontent: string): void {
filename = path.join(PATHS.VSIX_DIR, filename); const filePath = path.join(PATHS.VSIX_DIR, filename);
console.log(arguments) fs.writeFileSync(filePath, filecontent, {encoding: CHARSET});
fs.writeFileSync(filename, filecontent, { encoding: CHARSET });
} }

View file

@ -1,13 +1,11 @@
import * as vscode from 'vscode'; import * as vscode from 'vscode';
import { IDefaults } from "../interfaces/idefaults"; import {IDefaults} from './../interfaces/idefaults';
import { IThemeCustomProperties } from "../interfaces/itheme-custom-properties"; import {IThemeCustomProperties} from './../interfaces/itheme-custom-properties';
import {getPackageJSON} from './fs'; import {getPackageJSON} from './fs';
/** /**
* Gets saved accent * Gets saved accent
* @export
* @returns {(string | null)}
*/ */
export function getAccent(): string | undefined { export function getAccent(): string | undefined {
return getCustomSettings().accent; return getCustomSettings().accent;
@ -15,8 +13,6 @@ export function getAccent(): string | undefined {
/** /**
* Gets custom settings * Gets custom settings
* @export
* @returns {*}
*/ */
export function getCustomSettings(): IThemeCustomProperties { export function getCustomSettings(): IThemeCustomProperties {
return vscode.workspace.getConfiguration().get<IThemeCustomProperties>('materialTheme', {}); return vscode.workspace.getConfiguration().get<IThemeCustomProperties>('materialTheme', {});
@ -24,10 +20,6 @@ export function getCustomSettings(): IThemeCustomProperties {
/** /**
* Checks if a given string could be an accent * Checks if a given string could be an accent
*
* @export
* @param {string} accentName
* @returns {boolean}
*/ */
export function isAccent(accentName: string, defaults: IDefaults): boolean { export function isAccent(accentName: string, defaults: IDefaults): boolean {
return Object.keys(defaults.accents).filter(name => name === accentName).length > 0; return Object.keys(defaults.accents).filter(name => name === accentName).length > 0;
@ -35,31 +27,22 @@ export function isAccent(accentName: string, defaults: IDefaults): boolean {
/** /**
* Determines if the passing theme label is a material theme * Determines if the passing theme label is a material theme
* @export
* @param {string} themeName
* @returns {boolean}
*/ */
export function isMaterialTheme(themeName: string): boolean { export function isMaterialTheme(themeName: string): boolean {
let packageJSON = getPackageJSON(); const packageJSON = getPackageJSON();
return packageJSON.contributes.themes.filter(contrib => contrib.label === themeName).length > 0; return packageJSON.contributes.themes.filter(contrib => contrib.label === themeName).length > 0;
} }
/** /**
* Determines if the passing icons theme is a material theme * Determines if the passing icons theme is a material theme
* @export
* @param {string} themeIconsName
* @returns {boolean}
*/ */
export function isMaterialThemeIcons(themeIconsName: string): boolean { export function isMaterialThemeIcons(themeIconsName: string): boolean {
let packageJSON = getPackageJSON(); const packageJSON = getPackageJSON();
return packageJSON.contributes.iconThemes.filter(contribute => contribute.id === themeIconsName).length > 0; return packageJSON.contributes.iconThemes.filter(contribute => contribute.id === themeIconsName).length > 0;
} }
/** /**
* Sets a custom property in custom settings * Sets a custom property in custom settings
* @export
* @param {string} settingName
* @param {*} value
*/ */
export function setCustomSetting(settingName: string, value: any): Thenable<void> { export function setCustomSetting(settingName: string, value: any): Thenable<void> {
return vscode.workspace.getConfiguration().update(`materialTheme.${settingName}`, value, true); return vscode.workspace.getConfiguration().update(`materialTheme.${settingName}`, value, true);
@ -67,11 +50,9 @@ export function setCustomSetting(settingName: string, value: any): Thenable<void
/** /**
* Updates accent name * Updates accent name
* @export
* @param {string} accentName
*/ */
export function updateAccent(accentName: string): Thenable<void> { export function updateAccent(accentName: string): Thenable<void> {
const prevAccent = getAccent(); const prevAccent = getAccent();
return setCustomSetting('accentPrevious', prevAccent) return setCustomSetting('accentPrevious', prevAccent)
.then(() => setCustomSetting('accent', accentName)) .then(() => setCustomSetting('accent', accentName));
} }

View file

@ -1,24 +1,22 @@
import * as vscode from 'vscode' import * as vscode from 'vscode';
export function askForWindowReload(): Thenable<void> { export function askForWindowReload(): Thenable<void> {
const PROMPT_MESSAGE: string = 'Material Theme requires VS Code reload in order to display icons correctly.'; const PROMPT_MESSAGE: string = 'Material Theme requires VS Code reload in order to display icons correctly.';
const PROMPT_MESSAGE_CONFIRM: string = 'Ok, reload'; const PROMPT_MESSAGE_CONFIRM: string = 'Ok, reload';
const PROMPT_MESSAGE_CANCEL: string = 'I will do it later'; const PROMPT_MESSAGE_CANCEL: string = 'I will do it later';
return vscode.window.showInformationMessage(PROMPT_MESSAGE, PROMPT_MESSAGE_CONFIRM, PROMPT_MESSAGE_CANCEL).then((response) => { return vscode.window.showInformationMessage(PROMPT_MESSAGE, PROMPT_MESSAGE_CONFIRM, PROMPT_MESSAGE_CANCEL)
.then(response => {
if (response === PROMPT_MESSAGE_CONFIRM) { if (response === PROMPT_MESSAGE_CONFIRM) {
reloadWindow(); reloadWindow();
} }
}, (error) => { }, err => {
console.log(error); console.log(err);
}); });
} }
/** /**
* Gets your current theme ID * Gets your current theme ID
* @export
* @returns {string}
*/ */
export function getCurrentThemeID(): string { export function getCurrentThemeID(): string {
return vscode.workspace.getConfiguration().get<string>('workbench.colorTheme'); return vscode.workspace.getConfiguration().get<string>('workbench.colorTheme');
@ -26,8 +24,6 @@ export function getCurrentThemeID(): string {
/** /**
* Gets your current icons theme ID * Gets your current icons theme ID
* @export
* @returns {string}
*/ */
export function getCurrentThemeIconsID(): string { export function getCurrentThemeIconsID(): string {
return vscode.workspace.getConfiguration().get<string>('workbench.iconTheme'); return vscode.workspace.getConfiguration().get<string>('workbench.iconTheme');
@ -35,8 +31,6 @@ export function getCurrentThemeIconsID(): string {
/** /**
* Set a specific id for icons * Set a specific id for icons
* @export
* @returns {Thenable}
*/ */
export function setIconsID(id: string): Thenable<void> { export function setIconsID(id: string): Thenable<void> {
return vscode.workspace.getConfiguration().update('workbench.iconTheme', id, true); return vscode.workspace.getConfiguration().update('workbench.iconTheme', id, true);
@ -44,7 +38,6 @@ export function setIconsID(id: string): Thenable<void> {
/** /**
* Reloads current vscode window. * Reloads current vscode window.
* @export
*/ */
export function reloadWindow(): void { export function reloadWindow(): void {
vscode.commands.executeCommand('workbench.action.reloadWindow'); vscode.commands.executeCommand('workbench.action.reloadWindow');

View file

@ -4,9 +4,10 @@ export interface IDefaults {
changelog: IChangelog; changelog: IChangelog;
icons: IDefaultsThemeIcons; icons: IDefaultsThemeIcons;
themeVariants: IDefaultsThemeVariant; themeVariants: IDefaultsThemeVariant;
themeVariantsColours: IDefaultsThemeVariantColours; themeVariantsColours: IDefaultsThemeVariant;
themeVariantsUITheme: IDefaultsThemeVariantUITheme; themeVariantsUITheme: IDefaultsThemeVariant;
variantsIcons: string[]; variantsIcons: string[];
[Symbol.iterator](): IterableIterator<IDefaults>;
} }
export interface IAccents { export interface IAccents {
@ -16,6 +17,7 @@ export interface IAccents {
export interface IChangelog { export interface IChangelog {
lastversion: string; lastversion: string;
[Symbol.iterator](): IterableIterator<IChangelog>;
} }
export interface IDefaultsThemeIcons { export interface IDefaultsThemeIcons {
@ -23,24 +25,24 @@ export interface IDefaultsThemeIcons {
iconDefinitions: { iconDefinitions: {
_folder_open: { _folder_open: {
iconPath: string; iconPath: string;
} };
_folder_open_build: { _folder_open_build: {
iconPath: string; iconPath: string;
} };
_folder_dark: { _folder_dark: {
iconPath: string; iconPath: string;
} };
_folder_dark_build: { _folder_dark_build: {
iconPath: string; iconPath: string;
} };
"_folder_light_build": { _folder_light_build: {
iconPath: string; iconPath: string;
} };
_folder_light: { _folder_light: {
iconPath: string; iconPath: string;
} };
} };
} };
} }
export interface IDefaultsThemeVariant { export interface IDefaultsThemeVariant {
@ -53,11 +55,3 @@ export interface IDefaultsThemeVariant {
LightHighContrast: string; LightHighContrast: string;
PalenightHighContrast: string; PalenightHighContrast: string;
} }
export interface IDefaultsThemeVariantColours extends IDefaultsThemeVariant {
}
export interface IDefaultsThemeVariantUITheme extends IDefaultsThemeVariant {
}

View file

@ -1,4 +1,4 @@
import { IGenericObject } from '../../extensions/interfaces/igeneric-object'; import {IGenericObject} from './../../extensions/interfaces/igeneric-object';
export interface IPackageJSONBadge { export interface IPackageJSONBadge {
description: string; description: string;
@ -14,9 +14,7 @@ export interface IPackageJSONContributes {
} }
export interface IPackageJSONConfiguration { export interface IPackageJSONConfiguration {
properties: { properties: {};
}
} }
export interface IPackageJSONCommand { export interface IPackageJSONCommand {
@ -38,24 +36,24 @@ export interface IPackageJSONThemeIcons {
} }
export interface IPackageJSON { export interface IPackageJSON {
"activationEvents": string[] activationEvents: string[];
"badges": IPackageJSONBadge[]; badges: IPackageJSONBadge[];
"contributes": IPackageJSONContributes; contributes: IPackageJSONContributes;
"bugs": IGenericObject<string>; bugs: IGenericObject<string>;
"categories": string[]; categories: string[];
"description": string; description: string;
"displayName": string; displayName: string;
"engines": IGenericObject<string>; engines: IGenericObject<string>;
"galleryBanner": IGenericObject<string>; galleryBanner: IGenericObject<string>;
"homepage": string; homepage: string;
"icon": string; icon: string;
"license": string; license: string;
"main": string; main: string;
"name": string; name: string;
"preview": boolean; preview: boolean;
"publisher": string; publisher: string;
"repository": IGenericObject<string>; repository: IGenericObject<string>;
"scripts": IGenericObject<string>; scripts: IGenericObject<string>;
"version": string; version: string;
"devDependencies": IGenericObject<string>; devDependencies: IGenericObject<string>;
} }

View file

@ -1,32 +1,22 @@
export interface IPaths { export interface IPaths {
/** /**
* Dist dir * Dist dir
* @type {string}
* @memberof IPaths
*/ */
DIST: string; DIST: string;
/** /**
* Icons dir * Icons dir
* @type {string}
* @memberof IPaths
*/ */
ICONS: string; ICONS: string;
/** /**
* Src dir * Src dir
* @type {string}
* @memberof IPaths
*/ */
SRC: string; SRC: string;
/** /**
* Themes dir * Themes dir
* @type {string}
* @memberof IPaths
*/ */
THEMES: string; THEMES: string;
/** /**
* Extension directory * Extension directory
* @type {string}
* @memberof IPaths
*/ */
VSIX_DIR: string; VSIX_DIR: string;
} }

File diff suppressed because it is too large Load diff

View file

@ -3,10 +3,10 @@ import {
commands as Commands commands as Commands
} from 'vscode'; } from 'vscode';
import { THEME_ACCENTS_SETTER } from "./commands/accents-setter/index"; import {THEME_ACCENTS_SETTER} from './commands/accents-setter/index';
import { THEME_ICONS } from "./commands/theme-icons/index"; import {THEME_ICONS} from './commands/theme-icons/index';
import { shouldShowChangelog, showChangelog } from './helpers/changelog'; import {shouldShowChangelog, showChangelog} from './helpers/changelog';
import { reloadWindow, getCurrentThemeID, setIconsID } from "./helpers/vscode"; import {reloadWindow, getCurrentThemeID, setIconsID} from './helpers/vscode';
const isMaterialTheme = (currentTheme: string): boolean => const isMaterialTheme = (currentTheme: string): boolean =>
currentTheme.includes('Material Theme'); currentTheme.includes('Material Theme');
@ -18,6 +18,7 @@ export function activate() {
Workspace.onDidChangeConfiguration(event => { Workspace.onDidChangeConfiguration(event => {
const isColorTheme = event.affectsConfiguration('workbench.colorTheme'); const isColorTheme = event.affectsConfiguration('workbench.colorTheme');
const currentTheme = getCurrentThemeID(); const currentTheme = getCurrentThemeID();
// tslint:disable-next-line:early-exit
if (isColorTheme && isMaterialTheme(currentTheme)) { if (isColorTheme && isMaterialTheme(currentTheme)) {
setIconsID('eq-material-theme-icons') setIconsID('eq-material-theme-icons')
.then(() => THEME_ICONS().catch(error => console.trace(error))) .then(() => THEME_ICONS().catch(error => console.trace(error)))

View file

@ -38,6 +38,7 @@
"build-icons-variants": "yarn gulp build:icons.variants", "build-icons-variants": "yarn gulp build:icons.variants",
"build-themes": "yarn gulp build:themes", "build-themes": "yarn gulp build:themes",
"build-ts": "tsc -p ./tsconfig.json", "build-ts": "tsc -p ./tsconfig.json",
"test": "tslint **.ts",
"release": "standard-version", "release": "standard-version",
"postinstall": "node ./node_modules/vscode/bin/install && opencollective postinstall && tsc -p tsconfig.json" "postinstall": "node ./node_modules/vscode/bin/install && opencollective postinstall && tsc -p tsconfig.json"
}, },
@ -46,9 +47,7 @@
"Other" "Other"
], ],
"activationEvents": [ "activationEvents": [
"onCommand:materialTheme.setAccent", "*"
"onCommand:materialTheme.fixIcons",
"onCommand:materialTheme.showChangelog"
], ],
"main": "./extensions/material.theme.config.js", "main": "./extensions/material.theme.config.js",
"contributes": { "contributes": {
@ -164,8 +163,6 @@
"babel-preset-es2015": "6.24.1", "babel-preset-es2015": "6.24.1",
"babel-root-import": "4.1.8", "babel-root-import": "4.1.8",
"cpx": "1.5.0", "cpx": "1.5.0",
"eslint": "4.17.0",
"eslint-plugin-standard": "3.0.1",
"gulp": "3.9.1", "gulp": "3.9.1",
"gulp-bump": "3.1.0", "gulp-bump": "3.1.0",
"gulp-conventional-changelog": "1.1.11", "gulp-conventional-changelog": "1.1.11",
@ -179,7 +176,9 @@
"run-sequence": "2.2.1", "run-sequence": "2.2.1",
"standard-version": "4.3.0", "standard-version": "4.3.0",
"svgo": "1.0.4", "svgo": "1.0.4",
"typescript": "2.7.1", "tslint": "5.9.1",
"tslint-xo": "0.7.2",
"typescript": "2.8.3",
"vscode": "1.1.10", "vscode": "1.1.10",
"yamljs": "0.3.0", "yamljs": "0.3.0",
"yargs": "11.0.0" "yargs": "11.0.0"

View file

@ -1,7 +1,7 @@
{ {
"compilerOptions": { "compilerOptions": {
"lib": [ "lib": [
"es2015" "es6"
], ],
"module": "commonjs", "module": "commonjs",
"allowUnreachableCode": false, "allowUnreachableCode": false,

7
tslint.json Normal file
View file

@ -0,0 +1,7 @@
{
"extends": "tslint-xo",
"rules": {
"comment-format": false,
"indent": [true, "spaces"]
}
}

479
yarn.lock
View file

@ -2,6 +2,22 @@
# yarn lockfile v1 # yarn lockfile v1
"@fimbul/bifrost@^0.6.0":
version "0.6.0"
resolved "https://registry.yarnpkg.com/@fimbul/bifrost/-/bifrost-0.6.0.tgz#5150302b63e1bd37ff95f561c3605949cb7e3770"
dependencies:
"@fimbul/ymir" "^0.6.0"
get-caller-file "^1.0.2"
tslib "^1.8.1"
"@fimbul/ymir@^0.6.0":
version "0.6.0"
resolved "https://registry.yarnpkg.com/@fimbul/ymir/-/ymir-0.6.0.tgz#537cb15d361b7c993fe953b48c898ecdf4f671b8"
dependencies:
inversify "^4.10.0"
reflect-metadata "^0.1.12"
tslib "^1.8.1"
"@types/chalk@2.2.0": "@types/chalk@2.2.0":
version "2.2.0" version "2.2.0"
resolved "https://registry.yarnpkg.com/@types/chalk/-/chalk-2.2.0.tgz#b7f6e446f4511029ee8e3f43075fb5b73fbaa0ba" resolved "https://registry.yarnpkg.com/@types/chalk/-/chalk-2.2.0.tgz#b7f6e446f4511029ee8e3f43075fb5b73fbaa0ba"
@ -127,29 +143,11 @@ abbrev@1:
version "1.1.1" version "1.1.1"
resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8"
acorn-jsx@^3.0.0:
version "3.0.1"
resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-3.0.1.tgz#afdf9488fb1ecefc8348f6fb22f464e32a58b36b"
dependencies:
acorn "^3.0.4"
acorn@^3.0.4:
version "3.3.0"
resolved "https://registry.yarnpkg.com/acorn/-/acorn-3.3.0.tgz#45e37fb39e8da3f25baee3ff5369e2bb5f22017a"
acorn@^5.5.0:
version "5.5.3"
resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.5.3.tgz#f473dd47e0277a08e28e9bec5aeeb04751f0b8c9"
add-stream@^1.0.0: add-stream@^1.0.0:
version "1.0.0" version "1.0.0"
resolved "https://registry.yarnpkg.com/add-stream/-/add-stream-1.0.0.tgz#6a7990437ca736d5e1288db92bd3266d5f5cb2aa" resolved "https://registry.yarnpkg.com/add-stream/-/add-stream-1.0.0.tgz#6a7990437ca736d5e1288db92bd3266d5f5cb2aa"
ajv-keywords@^3.0.0: ajv@^5.1.0:
version "3.1.0"
resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.1.0.tgz#ac2b27939c543e95d2c06e7f7f5c27be4aa543be"
ajv@^5.1.0, ajv@^5.3.0:
version "5.5.2" version "5.5.2"
resolved "https://registry.yarnpkg.com/ajv/-/ajv-5.5.2.tgz#73b5eeca3fab653e3d3f9422b341ad42205dc965" resolved "https://registry.yarnpkg.com/ajv/-/ajv-5.5.2.tgz#73b5eeca3fab653e3d3f9422b341ad42205dc965"
dependencies: dependencies:
@ -158,15 +156,6 @@ ajv@^5.1.0, ajv@^5.3.0:
fast-json-stable-stringify "^2.0.0" fast-json-stable-stringify "^2.0.0"
json-schema-traverse "^0.3.0" json-schema-traverse "^0.3.0"
ajv@^6.0.1:
version "6.4.0"
resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.4.0.tgz#d3aff78e9277549771daf0164cff48482b754fc6"
dependencies:
fast-deep-equal "^1.0.0"
fast-json-stable-stringify "^2.0.0"
json-schema-traverse "^0.3.0"
uri-js "^3.0.2"
align-text@^0.1.1, align-text@^0.1.3: align-text@^0.1.1, align-text@^0.1.3:
version "0.1.4" version "0.1.4"
resolved "https://registry.yarnpkg.com/align-text/-/align-text-0.1.4.tgz#0cd90a561093f35d0a99256c22b7069433fad117" resolved "https://registry.yarnpkg.com/align-text/-/align-text-0.1.4.tgz#0cd90a561093f35d0a99256c22b7069433fad117"
@ -195,10 +184,6 @@ ansi-escapes@^1.1.0:
version "1.4.0" version "1.4.0"
resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-1.4.0.tgz#d3a8a83b319aa67793662b13e761c7911422306e" resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-1.4.0.tgz#d3a8a83b319aa67793662b13e761c7911422306e"
ansi-escapes@^3.0.0:
version "3.1.0"
resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.1.0.tgz#f73207bb81207d75fd6c83f125af26eea378ca30"
ansi-gray@^0.1.1: ansi-gray@^0.1.1:
version "0.1.1" version "0.1.1"
resolved "https://registry.yarnpkg.com/ansi-gray/-/ansi-gray-0.1.1.tgz#2962cf54ec9792c48510a3deb524436861ef7251" resolved "https://registry.yarnpkg.com/ansi-gray/-/ansi-gray-0.1.1.tgz#2962cf54ec9792c48510a3deb524436861ef7251"
@ -912,7 +897,7 @@ buffer-from@^1.0.0:
version "1.0.0" version "1.0.0"
resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.0.0.tgz#4cb8832d23612589b0406e9e2956c17f06fdf531" resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.0.0.tgz#4cb8832d23612589b0406e9e2956c17f06fdf531"
builtin-modules@^1.0.0: builtin-modules@^1.0.0, builtin-modules@^1.1.1:
version "1.1.1" version "1.1.1"
resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f" resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f"
@ -937,16 +922,6 @@ cache-base@^1.0.1:
union-value "^1.0.0" union-value "^1.0.0"
unset-value "^1.0.0" unset-value "^1.0.0"
caller-path@^0.1.0:
version "0.1.0"
resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-0.1.0.tgz#94085ef63581ecd3daa92444a8fe94e82577751f"
dependencies:
callsites "^0.2.0"
callsites@^0.2.0:
version "0.2.0"
resolved "https://registry.yarnpkg.com/callsites/-/callsites-0.2.0.tgz#afab96262910a7f33c19a5775825c69f34e350ca"
camelcase-keys@^2.0.0: camelcase-keys@^2.0.0:
version "2.1.0" version "2.1.0"
resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-2.1.0.tgz#308beeaffdf28119051efa1d932213c91b8f92e7" resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-2.1.0.tgz#308beeaffdf28119051efa1d932213c91b8f92e7"
@ -989,7 +964,7 @@ center-align@^0.1.1:
align-text "^0.1.3" align-text "^0.1.3"
lazy-cache "^1.0.3" lazy-cache "^1.0.3"
chalk@*, chalk@^2.0.0, chalk@^2.1.0, chalk@^2.2.0: chalk@*, chalk@^2.2.0:
version "2.4.0" version "2.4.0"
resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.0.tgz#a060a297a6b57e15b61ca63ce84995daa0fe6e52" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.0.tgz#a060a297a6b57e15b61ca63ce84995daa0fe6e52"
dependencies: dependencies:
@ -1017,6 +992,14 @@ chalk@^0.5.1:
strip-ansi "^0.3.0" strip-ansi "^0.3.0"
supports-color "^0.2.0" supports-color "^0.2.0"
chalk@^2.3.0:
version "2.4.1"
resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.1.tgz#18c49ab16a037b6eb0152cc83e3471338215b66e"
dependencies:
ansi-styles "^3.2.1"
escape-string-regexp "^1.0.5"
supports-color "^5.3.0"
chardet@^0.4.0: chardet@^0.4.0:
version "0.4.2" version "0.4.2"
resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.4.2.tgz#b5473b33dc97c424e5d98dc87d55d4d8a29c8bf2" resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.4.2.tgz#b5473b33dc97c424e5d98dc87d55d4d8a29c8bf2"
@ -1040,10 +1023,6 @@ chownr@^1.0.1:
version "1.0.1" version "1.0.1"
resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.0.1.tgz#e2a75042a9551908bebd25b8523d5f9769d79181" resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.0.1.tgz#e2a75042a9551908bebd25b8523d5f9769d79181"
circular-json@^0.3.1:
version "0.3.3"
resolved "https://registry.yarnpkg.com/circular-json/-/circular-json-0.3.3.tgz#815c99ea84f6809529d2f45791bdf82711352d66"
class-utils@^0.3.5: class-utils@^0.3.5:
version "0.3.6" version "0.3.6"
resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463"
@ -1168,7 +1147,7 @@ commander@2.11.0:
version "2.11.0" version "2.11.0"
resolved "https://registry.yarnpkg.com/commander/-/commander-2.11.0.tgz#157152fd1e7a6c8d98a5b715cf376df928004563" resolved "https://registry.yarnpkg.com/commander/-/commander-2.11.0.tgz#157152fd1e7a6c8d98a5b715cf376df928004563"
commander@^2.9.0: commander@^2.12.1, commander@^2.9.0:
version "2.15.1" version "2.15.1"
resolved "https://registry.yarnpkg.com/commander/-/commander-2.15.1.tgz#df46e867d0fc2aec66a34662b406a9ccafff5b0f" resolved "https://registry.yarnpkg.com/commander/-/commander-2.15.1.tgz#df46e867d0fc2aec66a34662b406a9ccafff5b0f"
@ -1187,7 +1166,7 @@ concat-map@0.0.1:
version "0.0.1" version "0.0.1"
resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
concat-stream@^1.4.10, concat-stream@^1.5.0, concat-stream@^1.6.0: concat-stream@^1.4.10, concat-stream@^1.5.0:
version "1.6.2" version "1.6.2"
resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34"
dependencies: dependencies:
@ -1372,7 +1351,7 @@ cpx@1.5.0:
shell-quote "^1.6.1" shell-quote "^1.6.1"
subarg "^1.0.0" subarg "^1.0.0"
cross-spawn@^5.0.1, cross-spawn@^5.1.0: cross-spawn@^5.0.1:
version "5.1.0" version "5.1.0"
resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449"
dependencies: dependencies:
@ -1466,7 +1445,7 @@ dateformat@^3.0.0:
version "3.0.3" version "3.0.3"
resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-3.0.3.tgz#a6e37499a4d9a9cf85ef5872044d62901c9889ae" resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-3.0.3.tgz#a6e37499a4d9a9cf85ef5872044d62901c9889ae"
debug@3.1.0, debug@^3.1.0: debug@3.1.0:
version "3.1.0" version "3.1.0"
resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261"
dependencies: dependencies:
@ -1503,10 +1482,6 @@ deep-extend@~0.4.0:
version "0.4.2" version "0.4.2"
resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.4.2.tgz#48b699c27e334bf89f10892be432f6e4c7d34a7f" resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.4.2.tgz#48b699c27e334bf89f10892be432f6e4c7d34a7f"
deep-is@~0.1.3:
version "0.1.3"
resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34"
defaults@^1.0.0: defaults@^1.0.0:
version "1.0.3" version "1.0.3"
resolved "https://registry.yarnpkg.com/defaults/-/defaults-1.0.3.tgz#c656051e9817d9ff08ed881477f3fe4019f3ef7d" resolved "https://registry.yarnpkg.com/defaults/-/defaults-1.0.3.tgz#c656051e9817d9ff08ed881477f3fe4019f3ef7d"
@ -1539,18 +1514,6 @@ define-property@^2.0.2:
is-descriptor "^1.0.2" is-descriptor "^1.0.2"
isobject "^3.0.1" isobject "^3.0.1"
del@^2.0.2:
version "2.2.2"
resolved "https://registry.yarnpkg.com/del/-/del-2.2.2.tgz#c12c981d067846c84bcaf862cff930d907ffd1a8"
dependencies:
globby "^5.0.0"
is-path-cwd "^1.0.0"
is-path-in-cwd "^1.0.0"
object-assign "^4.0.1"
pify "^2.0.0"
pinkie-promise "^2.0.0"
rimraf "^2.2.8"
delayed-stream@~1.0.0: delayed-stream@~1.0.0:
version "1.0.0" version "1.0.0"
resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619"
@ -1581,11 +1544,16 @@ diff@3.3.1:
version "3.3.1" version "3.3.1"
resolved "https://registry.yarnpkg.com/diff/-/diff-3.3.1.tgz#aa8567a6eed03c531fc89d3f711cd0e5259dec75" resolved "https://registry.yarnpkg.com/diff/-/diff-3.3.1.tgz#aa8567a6eed03c531fc89d3f711cd0e5259dec75"
doctrine@^2.1.0: diff@^3.2.0:
version "2.1.0" version "3.5.0"
resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d" resolved "https://registry.yarnpkg.com/diff/-/diff-3.5.0.tgz#800c0dd1e0a8bfbc95835c202ad220fe317e5a12"
doctrine@0.7.2:
version "0.7.2"
resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-0.7.2.tgz#7cb860359ba3be90e040b26b729ce4bfa654c523"
dependencies: dependencies:
esutils "^2.0.2" esutils "^1.1.6"
isarray "0.0.1"
dom-serializer@0: dom-serializer@0:
version "0.1.0" version "0.1.0"
@ -1697,89 +1665,13 @@ escape-string-regexp@1.0.5, escape-string-regexp@^1.0.0, escape-string-regexp@^1
version "1.0.5" version "1.0.5"
resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
eslint-plugin-standard@3.0.1:
version "3.0.1"
resolved "https://registry.yarnpkg.com/eslint-plugin-standard/-/eslint-plugin-standard-3.0.1.tgz#34d0c915b45edc6f010393c7eef3823b08565cf2"
eslint-scope@^3.7.1:
version "3.7.1"
resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-3.7.1.tgz#3d63c3edfda02e06e01a452ad88caacc7cdcb6e8"
dependencies:
esrecurse "^4.1.0"
estraverse "^4.1.1"
eslint-visitor-keys@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz#3f3180fb2e291017716acb4c9d6d5b5c34a6a81d"
eslint@4.17.0:
version "4.17.0"
resolved "https://registry.yarnpkg.com/eslint/-/eslint-4.17.0.tgz#dc24bb51ede48df629be7031c71d9dc0ee4f3ddf"
dependencies:
ajv "^5.3.0"
babel-code-frame "^6.22.0"
chalk "^2.1.0"
concat-stream "^1.6.0"
cross-spawn "^5.1.0"
debug "^3.1.0"
doctrine "^2.1.0"
eslint-scope "^3.7.1"
eslint-visitor-keys "^1.0.0"
espree "^3.5.2"
esquery "^1.0.0"
esutils "^2.0.2"
file-entry-cache "^2.0.0"
functional-red-black-tree "^1.0.1"
glob "^7.1.2"
globals "^11.0.1"
ignore "^3.3.3"
imurmurhash "^0.1.4"
inquirer "^3.0.6"
is-resolvable "^1.0.0"
js-yaml "^3.9.1"
json-stable-stringify-without-jsonify "^1.0.1"
levn "^0.3.0"
lodash "^4.17.4"
minimatch "^3.0.2"
mkdirp "^0.5.1"
natural-compare "^1.4.0"
optionator "^0.8.2"
path-is-inside "^1.0.2"
pluralize "^7.0.0"
progress "^2.0.0"
require-uncached "^1.0.3"
semver "^5.3.0"
strip-ansi "^4.0.0"
strip-json-comments "~2.0.1"
table "^4.0.1"
text-table "~0.2.0"
espree@^3.5.2:
version "3.5.4"
resolved "https://registry.yarnpkg.com/espree/-/espree-3.5.4.tgz#b0f447187c8a8bed944b815a660bddf5deb5d1a7"
dependencies:
acorn "^5.5.0"
acorn-jsx "^3.0.0"
esprima@^4.0.0: esprima@^4.0.0:
version "4.0.0" version "4.0.0"
resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.0.tgz#4499eddcd1110e0b218bacf2fa7f7f59f55ca804" resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.0.tgz#4499eddcd1110e0b218bacf2fa7f7f59f55ca804"
esquery@^1.0.0: esutils@^1.1.6:
version "1.0.1" version "1.1.6"
resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.0.1.tgz#406c51658b1f5991a5f9b62b1dc25b00e3e5c708" resolved "https://registry.yarnpkg.com/esutils/-/esutils-1.1.6.tgz#c01ccaa9ae4b897c6d0c3e210ae52f3c7a844375"
dependencies:
estraverse "^4.0.0"
esrecurse@^4.1.0:
version "4.2.1"
resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.2.1.tgz#007a3b9fdbc2b3bb87e4879ea19c92fdbd3942cf"
dependencies:
estraverse "^4.1.0"
estraverse@^4.0.0, estraverse@^4.1.0, estraverse@^4.1.1:
version "4.2.0"
resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.2.0.tgz#0dee3fed31fcd469618ce7342099fc1afa0bdb13"
esutils@^2.0.2: esutils@^2.0.2:
version "2.0.2" version "2.0.2"
@ -1862,7 +1754,7 @@ extend@^3.0.0, extend@~3.0.0, extend@~3.0.1:
version "3.0.1" version "3.0.1"
resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.1.tgz#a755ea7bc1adfcc5a31ce7e762dbaadc5e636444" resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.1.tgz#a755ea7bc1adfcc5a31ce7e762dbaadc5e636444"
external-editor@^2.0.1, external-editor@^2.0.4: external-editor@^2.0.1:
version "2.2.0" version "2.2.0"
resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-2.2.0.tgz#045511cfd8d133f3846673d1047c154e214ad3d5" resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-2.2.0.tgz#045511cfd8d133f3846673d1047c154e214ad3d5"
dependencies: dependencies:
@ -1913,10 +1805,6 @@ fast-json-stable-stringify@^2.0.0:
version "2.0.0" version "2.0.0"
resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz#d5142c0caee6b1189f87d3a76111064f86c8bbf2" resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz#d5142c0caee6b1189f87d3a76111064f86c8bbf2"
fast-levenshtein@~2.0.4:
version "2.0.6"
resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917"
fd-slicer@~1.0.1: fd-slicer@~1.0.1:
version "1.0.1" version "1.0.1"
resolved "https://registry.yarnpkg.com/fd-slicer/-/fd-slicer-1.0.1.tgz#8b5bcbd9ec327c5041bf9ab023fd6750f1177e65" resolved "https://registry.yarnpkg.com/fd-slicer/-/fd-slicer-1.0.1.tgz#8b5bcbd9ec327c5041bf9ab023fd6750f1177e65"
@ -1936,13 +1824,6 @@ figures@^2.0.0:
dependencies: dependencies:
escape-string-regexp "^1.0.5" escape-string-regexp "^1.0.5"
file-entry-cache@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-2.0.0.tgz#c392990c3e684783d838b8c84a45d8a048458361"
dependencies:
flat-cache "^1.2.1"
object-assign "^4.0.1"
filename-regex@^2.0.0: filename-regex@^2.0.0:
version "2.0.1" version "2.0.1"
resolved "https://registry.yarnpkg.com/filename-regex/-/filename-regex-2.0.1.tgz#c1c4b9bee3e09725ddb106b75c1e301fe2f18b26" resolved "https://registry.yarnpkg.com/filename-regex/-/filename-regex-2.0.1.tgz#c1c4b9bee3e09725ddb106b75c1e301fe2f18b26"
@ -2010,15 +1891,6 @@ flagged-respawn@^1.0.0:
version "1.0.0" version "1.0.0"
resolved "https://registry.yarnpkg.com/flagged-respawn/-/flagged-respawn-1.0.0.tgz#4e79ae9b2eb38bf86b3bb56bf3e0a56aa5fcabd7" resolved "https://registry.yarnpkg.com/flagged-respawn/-/flagged-respawn-1.0.0.tgz#4e79ae9b2eb38bf86b3bb56bf3e0a56aa5fcabd7"
flat-cache@^1.2.1:
version "1.3.0"
resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-1.3.0.tgz#d3030b32b38154f4e3b7e9c709f490f7ef97c481"
dependencies:
circular-json "^0.3.1"
del "^2.0.2"
graceful-fs "^4.1.2"
write "^0.2.1"
for-in@^1.0.1, for-in@^1.0.2: for-in@^1.0.1, for-in@^1.0.2:
version "1.0.2" version "1.0.2"
resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80"
@ -2109,10 +1981,6 @@ function-bind@^1.0.2, function-bind@^1.1.0, function-bind@^1.1.1:
version "1.1.1" version "1.1.1"
resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d"
functional-red-black-tree@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327"
gauge@~2.7.3: gauge@~2.7.3:
version "2.7.4" version "2.7.4"
resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7" resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7"
@ -2142,7 +2010,7 @@ generate-object-property@^1.1.0:
dependencies: dependencies:
is-property "^1.0.0" is-property "^1.0.0"
get-caller-file@^1.0.1: get-caller-file@^1.0.1, get-caller-file@^1.0.2:
version "1.0.2" version "1.0.2"
resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.2.tgz#f702e63127e7e231c160a80c1554acb70d5047e5" resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.2.tgz#f702e63127e7e231c160a80c1554acb70d5047e5"
@ -2260,7 +2128,7 @@ glob2base@^0.0.12:
dependencies: dependencies:
find-index "^0.1.1" find-index "^0.1.1"
glob@7.1.2, glob@^7.0.3, glob@^7.0.5, glob@^7.1.2: glob@7.1.2, glob@^7.0.5, glob@^7.1.1, glob@^7.1.2:
version "7.1.2" version "7.1.2"
resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15"
dependencies: dependencies:
@ -2316,25 +2184,10 @@ global-prefix@^1.0.1:
is-windows "^1.0.1" is-windows "^1.0.1"
which "^1.2.14" which "^1.2.14"
globals@^11.0.1:
version "11.4.0"
resolved "https://registry.yarnpkg.com/globals/-/globals-11.4.0.tgz#b85c793349561c16076a3c13549238a27945f1bc"
globals@^9.18.0: globals@^9.18.0:
version "9.18.0" version "9.18.0"
resolved "https://registry.yarnpkg.com/globals/-/globals-9.18.0.tgz#aa3896b3e69b487f17e31ed2143d69a8e30c2d8a" resolved "https://registry.yarnpkg.com/globals/-/globals-9.18.0.tgz#aa3896b3e69b487f17e31ed2143d69a8e30c2d8a"
globby@^5.0.0:
version "5.0.0"
resolved "https://registry.yarnpkg.com/globby/-/globby-5.0.0.tgz#ebd84667ca0dbb330b99bcfc68eac2bc54370e0d"
dependencies:
array-union "^1.0.1"
arrify "^1.0.0"
glob "^7.0.3"
object-assign "^4.0.1"
pify "^2.0.0"
pinkie-promise "^2.0.0"
globule@~0.1.0: globule@~0.1.0:
version "0.1.0" version "0.1.0"
resolved "https://registry.yarnpkg.com/globule/-/globule-0.1.0.tgz#d9c8edde1da79d125a151b79533b978676346ae5" resolved "https://registry.yarnpkg.com/globule/-/globule-0.1.0.tgz#d9c8edde1da79d125a151b79533b978676346ae5"
@ -2704,14 +2557,6 @@ ignore-walk@^3.0.1:
dependencies: dependencies:
minimatch "^3.0.4" minimatch "^3.0.4"
ignore@^3.3.3:
version "3.3.7"
resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.7.tgz#612289bfb3c220e186a58118618d5be8c1bab021"
imurmurhash@^0.1.4:
version "0.1.4"
resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea"
indent-string@^2.1.0: indent-string@^2.1.0:
version "2.1.0" version "2.1.0"
resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-2.1.0.tgz#8e2d48348742121b4a8218b7a137e9a52049dc80" resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-2.1.0.tgz#8e2d48348742121b4a8218b7a137e9a52049dc80"
@ -2759,25 +2604,6 @@ inquirer@3.0.6:
strip-ansi "^3.0.0" strip-ansi "^3.0.0"
through "^2.3.6" through "^2.3.6"
inquirer@^3.0.6:
version "3.3.0"
resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-3.3.0.tgz#9dd2f2ad765dcab1ff0443b491442a20ba227dc9"
dependencies:
ansi-escapes "^3.0.0"
chalk "^2.0.0"
cli-cursor "^2.1.0"
cli-width "^2.0.0"
external-editor "^2.0.4"
figures "^2.0.0"
lodash "^4.3.0"
mute-stream "0.0.7"
run-async "^2.2.0"
rx-lite "^4.0.8"
rx-lite-aggregates "^4.0.8"
string-width "^2.1.0"
strip-ansi "^4.0.0"
through "^2.3.6"
interpret@^1.0.0: interpret@^1.0.0:
version "1.1.0" version "1.1.0"
resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.1.0.tgz#7ed1b1410c6a0e0f78cf95d3b8440c63f78b8614" resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.1.0.tgz#7ed1b1410c6a0e0f78cf95d3b8440c63f78b8614"
@ -2788,6 +2614,10 @@ invariant@^2.2.2:
dependencies: dependencies:
loose-envify "^1.0.0" loose-envify "^1.0.0"
inversify@^4.10.0:
version "4.13.0"
resolved "https://registry.yarnpkg.com/inversify/-/inversify-4.13.0.tgz#0ab40570bfa4474b04d5b919bbab3a4f682a72f5"
invert-kv@^1.0.0: invert-kv@^1.0.0:
version "1.0.0" version "1.0.0"
resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6" resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6"
@ -2963,22 +2793,6 @@ is-odd@^2.0.0:
dependencies: dependencies:
is-number "^4.0.0" is-number "^4.0.0"
is-path-cwd@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-1.0.0.tgz#d225ec23132e89edd38fda767472e62e65f1106d"
is-path-in-cwd@^1.0.0:
version "1.0.1"
resolved "https://registry.yarnpkg.com/is-path-in-cwd/-/is-path-in-cwd-1.0.1.tgz#5ac48b345ef675339bd6c7a48a912110b241cf52"
dependencies:
is-path-inside "^1.0.0"
is-path-inside@^1.0.0:
version "1.0.1"
resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-1.0.1.tgz#8ef5b7de50437a3fdca6b4e865ef7aa55cb48036"
dependencies:
path-is-inside "^1.0.1"
is-plain-obj@^1.1.0: is-plain-obj@^1.1.0:
version "1.1.0" version "1.1.0"
resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e"
@ -3017,10 +2831,6 @@ is-relative@^1.0.0:
dependencies: dependencies:
is-unc-path "^1.0.0" is-unc-path "^1.0.0"
is-resolvable@^1.0.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/is-resolvable/-/is-resolvable-1.1.0.tgz#fb18f87ce1feb925169c9a407c19318a3206ed88"
is-stream@^1.0.1, is-stream@^1.1.0: is-stream@^1.0.1, is-stream@^1.1.0:
version "1.1.0" version "1.1.0"
resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44"
@ -3095,7 +2905,7 @@ js-tokens@^3.0.0, js-tokens@^3.0.2:
version "3.0.2" version "3.0.2"
resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b"
js-yaml@^3.9.1: js-yaml@^3.7.0:
version "3.11.0" version "3.11.0"
resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.11.0.tgz#597c1a8bd57152f26d622ce4117851a51f5ebaef" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.11.0.tgz#597c1a8bd57152f26d622ce4117851a51f5ebaef"
dependencies: dependencies:
@ -3137,10 +2947,6 @@ json-schema@0.2.3:
version "0.2.3" version "0.2.3"
resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13"
json-stable-stringify-without-jsonify@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651"
json-stable-stringify@^1.0.0: json-stable-stringify@^1.0.0:
version "1.0.1" version "1.0.1"
resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz#9a759d39c5f2ff503fd5300646ed445f88c4f9af" resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz#9a759d39c5f2ff503fd5300646ed445f88c4f9af"
@ -3216,13 +3022,6 @@ lcid@^1.0.0:
dependencies: dependencies:
invert-kv "^1.0.0" invert-kv "^1.0.0"
levn@^0.3.0, levn@~0.3.0:
version "0.3.0"
resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee"
dependencies:
prelude-ls "~1.1.2"
type-check "~0.3.2"
liftoff@^2.1.0: liftoff@^2.1.0:
version "2.5.0" version "2.5.0"
resolved "https://registry.yarnpkg.com/liftoff/-/liftoff-2.5.0.tgz#2009291bb31cea861bbf10a7c15a28caf75c31ec" resolved "https://registry.yarnpkg.com/liftoff/-/liftoff-2.5.0.tgz#2009291bb31cea861bbf10a7c15a28caf75c31ec"
@ -3665,10 +3464,6 @@ natives@^1.1.0:
version "1.1.3" version "1.1.3"
resolved "https://registry.yarnpkg.com/natives/-/natives-1.1.3.tgz#44a579be64507ea2d6ed1ca04a9415915cf75558" resolved "https://registry.yarnpkg.com/natives/-/natives-1.1.3.tgz#44a579be64507ea2d6ed1ca04a9415915cf75558"
natural-compare@^1.4.0:
version "1.4.0"
resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7"
needle@^2.2.0: needle@^2.2.0:
version "2.2.0" version "2.2.0"
resolved "https://registry.yarnpkg.com/needle/-/needle-2.2.0.tgz#f14efc69cee1024b72c8b21c7bdf94a731dc12fa" resolved "https://registry.yarnpkg.com/needle/-/needle-2.2.0.tgz#f14efc69cee1024b72c8b21c7bdf94a731dc12fa"
@ -3885,17 +3680,6 @@ optimist@^0.6.1:
minimist "~0.0.1" minimist "~0.0.1"
wordwrap "~0.0.2" wordwrap "~0.0.2"
optionator@^0.8.2:
version "0.8.2"
resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.2.tgz#364c5e409d3f4d6301d6c0b4c05bba50180aeb64"
dependencies:
deep-is "~0.1.3"
fast-levenshtein "~2.0.4"
levn "~0.3.0"
prelude-ls "~1.1.2"
type-check "~0.3.2"
wordwrap "~1.0.0"
orchestrator@^0.3.0: orchestrator@^0.3.0:
version "0.3.8" version "0.3.8"
resolved "https://registry.yarnpkg.com/orchestrator/-/orchestrator-0.3.8.tgz#14e7e9e2764f7315fbac184e506c7aa6df94ad7e" resolved "https://registry.yarnpkg.com/orchestrator/-/orchestrator-0.3.8.tgz#14e7e9e2764f7315fbac184e506c7aa6df94ad7e"
@ -4018,10 +3802,6 @@ path-is-absolute@^1.0.0, path-is-absolute@^1.0.1:
version "1.0.1" version "1.0.1"
resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
path-is-inside@^1.0.1, path-is-inside@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53"
path-key@^2.0.0: path-key@^2.0.0:
version "2.0.1" version "2.0.1"
resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40"
@ -4118,18 +3898,10 @@ plugin-log@^0.1.0:
chalk "^1.1.1" chalk "^1.1.1"
dateformat "^1.0.11" dateformat "^1.0.11"
pluralize@^7.0.0:
version "7.0.0"
resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-7.0.0.tgz#298b89df8b93b0221dbf421ad2b1b1ea23fc6777"
posix-character-classes@^0.1.0: posix-character-classes@^0.1.0:
version "0.1.1" version "0.1.1"
resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab"
prelude-ls@~1.1.2:
version "1.1.2"
resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54"
preserve@^0.2.0: preserve@^0.2.0:
version "0.2.0" version "0.2.0"
resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b" resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b"
@ -4146,10 +3918,6 @@ process-nextick-args@^2.0.0, process-nextick-args@~2.0.0:
version "2.0.0" version "2.0.0"
resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.0.tgz#a37d732f4271b4ab1ad070d35508e8290788ffaa" resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.0.tgz#a37d732f4271b4ab1ad070d35508e8290788ffaa"
progress@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.0.tgz#8a1be366bf8fc23db2bd23f10c6fe920b4389d1f"
pseudomap@^1.0.2: pseudomap@^1.0.2:
version "1.0.2" version "1.0.2"
resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3"
@ -4158,10 +3926,6 @@ punycode@^1.4.1:
version "1.4.1" version "1.4.1"
resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e"
punycode@^2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.0.tgz#5f863edc89b96db09074bad7947bf09056ca4e7d"
q@^1.1.2, q@^1.4.1, q@^1.5.1: q@^1.1.2, q@^1.4.1, q@^1.5.1:
version "1.5.1" version "1.5.1"
resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7" resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7"
@ -4314,6 +4078,10 @@ redent@^2.0.0:
indent-string "^3.0.0" indent-string "^3.0.0"
strip-indent "^2.0.0" strip-indent "^2.0.0"
reflect-metadata@^0.1.12:
version "0.1.12"
resolved "https://registry.yarnpkg.com/reflect-metadata/-/reflect-metadata-0.1.12.tgz#311bf0c6b63cd782f228a81abe146a2bfa9c56f2"
regenerate@^1.2.1: regenerate@^1.2.1:
version "1.3.3" version "1.3.3"
resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.3.3.tgz#0c336d3980553d755c39b586ae3b20aa49c82b7f" resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.3.3.tgz#0c336d3980553d755c39b586ae3b20aa49c82b7f"
@ -4451,13 +4219,6 @@ require-main-filename@^1.0.1:
version "1.0.1" version "1.0.1"
resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1" resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1"
require-uncached@^1.0.3:
version "1.0.3"
resolved "https://registry.yarnpkg.com/require-uncached/-/require-uncached-1.0.3.tgz#4e0d56d6c9662fd31e43011c4b95aa49955421d3"
dependencies:
caller-path "^0.1.0"
resolve-from "^1.0.0"
requires-port@^1.0.0: requires-port@^1.0.0:
version "1.0.0" version "1.0.0"
resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff"
@ -4469,15 +4230,11 @@ resolve-dir@^1.0.0, resolve-dir@^1.0.1:
expand-tilde "^2.0.0" expand-tilde "^2.0.0"
global-modules "^1.0.0" global-modules "^1.0.0"
resolve-from@^1.0.0:
version "1.0.1"
resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-1.0.1.tgz#26cbfe935d1aeeeabb29bc3fe5aeb01e93d44226"
resolve-url@^0.2.1: resolve-url@^0.2.1:
version "0.2.1" version "0.2.1"
resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a"
resolve@^1.1.6, resolve@^1.1.7: resolve@^1.1.6, resolve@^1.1.7, resolve@^1.3.2:
version "1.7.1" version "1.7.1"
resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.7.1.tgz#aadd656374fd298aee895bc026b8297418677fd3" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.7.1.tgz#aadd656374fd298aee895bc026b8297418677fd3"
dependencies: dependencies:
@ -4500,7 +4257,7 @@ right-align@^0.1.1:
dependencies: dependencies:
align-text "^0.1.1" align-text "^0.1.1"
rimraf@2, rimraf@2.6.2, rimraf@^2.2.8, rimraf@^2.6.1: rimraf@2, rimraf@2.6.2, rimraf@^2.6.1:
version "2.6.2" version "2.6.2"
resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.2.tgz#2ed8150d24a16ea8651e6d6ef0f47c4158ce7a36" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.2.tgz#2ed8150d24a16ea8651e6d6ef0f47c4158ce7a36"
dependencies: dependencies:
@ -4520,16 +4277,6 @@ run-sequence@2.2.1:
fancy-log "^1.3.2" fancy-log "^1.3.2"
plugin-error "^0.1.2" plugin-error "^0.1.2"
rx-lite-aggregates@^4.0.8:
version "4.0.8"
resolved "https://registry.yarnpkg.com/rx-lite-aggregates/-/rx-lite-aggregates-4.0.8.tgz#753b87a89a11c95467c4ac1626c4efc4e05c67be"
dependencies:
rx-lite "*"
rx-lite@*, rx-lite@^4.0.8:
version "4.0.8"
resolved "https://registry.yarnpkg.com/rx-lite/-/rx-lite-4.0.8.tgz#0b1e11af8bc44836f04a6407e92da42467b79444"
rx@^4.1.0: rx@^4.1.0:
version "4.1.0" version "4.1.0"
resolved "https://registry.yarnpkg.com/rx/-/rx-4.1.0.tgz#a5f13ff79ef3b740fe30aa803fb09f98805d4782" resolved "https://registry.yarnpkg.com/rx/-/rx-4.1.0.tgz#a5f13ff79ef3b740fe30aa803fb09f98805d4782"
@ -4621,12 +4368,6 @@ slash@^1.0.0:
version "1.0.0" version "1.0.0"
resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55" resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55"
slice-ansi@1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-1.0.0.tgz#044f1a49d8842ff307aad6b505ed178bd950134d"
dependencies:
is-fullwidth-code-point "^2.0.0"
snapdragon-node@^2.0.1: snapdragon-node@^2.0.1:
version "2.1.1" version "2.1.1"
resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b"
@ -4834,7 +4575,7 @@ string-width@^1.0.1, string-width@^1.0.2:
is-fullwidth-code-point "^1.0.0" is-fullwidth-code-point "^1.0.0"
strip-ansi "^3.0.0" strip-ansi "^3.0.0"
string-width@^2.0.0, string-width@^2.1.0, string-width@^2.1.1: string-width@^2.0.0, string-width@^2.1.1:
version "2.1.1" version "2.1.1"
resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e"
dependencies: dependencies:
@ -4960,17 +4701,6 @@ svgo@1.0.4:
unquote "~1.1.1" unquote "~1.1.1"
util.promisify "~1.0.0" util.promisify "~1.0.0"
table@^4.0.1:
version "4.0.3"
resolved "https://registry.yarnpkg.com/table/-/table-4.0.3.tgz#00b5e2b602f1794b9acaf9ca908a76386a7813bc"
dependencies:
ajv "^6.0.1"
ajv-keywords "^3.0.0"
chalk "^2.1.0"
lodash "^4.17.4"
slice-ansi "1.0.0"
string-width "^2.1.1"
tar@^2.2.1: tar@^2.2.1:
version "2.2.1" version "2.2.1"
resolved "https://registry.yarnpkg.com/tar/-/tar-2.2.1.tgz#8e4d2a256c0e2185c6b18ad694aec968b83cb1d1" resolved "https://registry.yarnpkg.com/tar/-/tar-2.2.1.tgz#8e4d2a256c0e2185c6b18ad694aec968b83cb1d1"
@ -5004,7 +4734,7 @@ text-extensions@^1.0.0:
version "1.7.0" version "1.7.0"
resolved "https://registry.yarnpkg.com/text-extensions/-/text-extensions-1.7.0.tgz#faaaba2625ed746d568a23e4d0aacd9bf08a8b39" resolved "https://registry.yarnpkg.com/text-extensions/-/text-extensions-1.7.0.tgz#faaaba2625ed746d568a23e4d0aacd9bf08a8b39"
text-table@^0.2.0, text-table@~0.2.0: text-table@^0.2.0:
version "0.2.0" version "0.2.0"
resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4"
@ -5103,6 +4833,69 @@ trim-right@^1.0.1:
version "1.0.1" version "1.0.1"
resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003" resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003"
tslib@1.9.0, tslib@^1.7.1, tslib@^1.8.0, tslib@^1.8.1:
version "1.9.0"
resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.9.0.tgz#e37a86fda8cbbaf23a057f473c9f4dc64e5fc2e8"
tslint-consistent-codestyle@^1.11.0:
version "1.13.0"
resolved "https://registry.yarnpkg.com/tslint-consistent-codestyle/-/tslint-consistent-codestyle-1.13.0.tgz#82abf230bf39e01159b4e9af721d489dd5ae0e6c"
dependencies:
"@fimbul/bifrost" "^0.6.0"
tslib "^1.7.1"
tsutils "^2.24.0"
tslint-eslint-rules@^5.1.0:
version "5.1.0"
resolved "https://registry.yarnpkg.com/tslint-eslint-rules/-/tslint-eslint-rules-5.1.0.tgz#3232b318da55dbb5a83e3f5d657c1ddbb27b9ff2"
dependencies:
doctrine "0.7.2"
tslib "1.9.0"
tsutils "2.8.0"
tslint-microsoft-contrib@^5.0.2:
version "5.0.3"
resolved "https://registry.yarnpkg.com/tslint-microsoft-contrib/-/tslint-microsoft-contrib-5.0.3.tgz#6fc3e238179cd72045c2b422e4d655f4183a8d5c"
dependencies:
tsutils "^2.12.1"
tslint-xo@0.7.2:
version "0.7.2"
resolved "https://registry.yarnpkg.com/tslint-xo/-/tslint-xo-0.7.2.tgz#7523e9f2819e23c5ce66b501e4b76067c1e6f637"
dependencies:
tslint-consistent-codestyle "^1.11.0"
tslint-eslint-rules "^5.1.0"
tslint-microsoft-contrib "^5.0.2"
tslint@5.9.1:
version "5.9.1"
resolved "https://registry.yarnpkg.com/tslint/-/tslint-5.9.1.tgz#1255f87a3ff57eb0b0e1f0e610a8b4748046c9ae"
dependencies:
babel-code-frame "^6.22.0"
builtin-modules "^1.1.1"
chalk "^2.3.0"
commander "^2.12.1"
diff "^3.2.0"
glob "^7.1.1"
js-yaml "^3.7.0"
minimatch "^3.0.4"
resolve "^1.3.2"
semver "^5.3.0"
tslib "^1.8.0"
tsutils "^2.12.1"
tsutils@2.8.0:
version "2.8.0"
resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-2.8.0.tgz#0160173729b3bf138628dd14a1537e00851d814a"
dependencies:
tslib "^1.7.1"
tsutils@^2.12.1, tsutils@^2.24.0:
version "2.26.2"
resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-2.26.2.tgz#a9f9f63434a456a5e0c95a45d9a59181cb32d3bf"
dependencies:
tslib "^1.8.1"
tunnel-agent@^0.6.0: tunnel-agent@^0.6.0:
version "0.6.0" version "0.6.0"
resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd"
@ -5117,19 +4910,13 @@ tweetnacl@^0.14.3, tweetnacl@~0.14.0:
version "0.14.5" version "0.14.5"
resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64"
type-check@~0.3.2:
version "0.3.2"
resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72"
dependencies:
prelude-ls "~1.1.2"
typedarray@^0.0.6: typedarray@^0.0.6:
version "0.0.6" version "0.0.6"
resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777"
typescript@2.7.1: typescript@2.8.3:
version "2.7.1" version "2.8.3"
resolved "https://registry.yarnpkg.com/typescript/-/typescript-2.7.1.tgz#bb3682c2c791ac90e7c6210b26478a8da085c359" resolved "https://registry.yarnpkg.com/typescript/-/typescript-2.8.3.tgz#5d817f9b6f31bb871835f4edf0089f21abe6c170"
uglify-js@^2.6: uglify-js@^2.6:
version "2.8.29" version "2.8.29"
@ -5179,12 +4966,6 @@ unset-value@^1.0.0:
has-value "^0.3.1" has-value "^0.3.1"
isobject "^3.0.0" isobject "^3.0.0"
uri-js@^3.0.2:
version "3.0.2"
resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-3.0.2.tgz#f90b858507f81dea4dcfbb3c4c3dbfa2b557faaa"
dependencies:
punycode "^2.1.0"
urix@^0.1.0: urix@^0.1.0:
version "0.1.0" version "0.1.0"
resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72"
@ -5381,10 +5162,6 @@ wordwrap@~0.0.2:
version "0.0.3" version "0.0.3"
resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107" resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107"
wordwrap@~1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb"
wrap-ansi@^2.0.0: wrap-ansi@^2.0.0:
version "2.1.0" version "2.1.0"
resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85"
@ -5396,12 +5173,6 @@ wrappy@1:
version "1.0.2" version "1.0.2"
resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
write@^0.2.1:
version "0.2.1"
resolved "https://registry.yarnpkg.com/write/-/write-0.2.1.tgz#5fc03828e264cea3fe91455476f7a3c566cb0757"
dependencies:
mkdirp "^0.5.1"
"xtend@>=4.0.0 <4.1.0-0", xtend@^4.0.0, xtend@^4.0.1, xtend@~4.0.0, xtend@~4.0.1: "xtend@>=4.0.0 <4.1.0-0", xtend@^4.0.0, xtend@^4.0.1, xtend@~4.0.0, xtend@~4.0.1:
version "4.0.1" version "4.0.1"
resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af" resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af"