* chore: Update meta and readme

* chore. Update README

* Refactor/linting - tslint-xo (#178)

* refactor(deps): added tslint, cleanup, and activationEvents modified

* refactor(lint): linting...

* refactor(changelog): changelo method refactor (should be tested)

* refactor(theme-icons):  linting and small refactor

* refactor(accents-setter): linting and small refactor

* chore(travis): added travis file

* fix(Lighter): Fix folders icon association

* chore: Clean test files

* fix(Icons): Add icon to .spec.ts files

* chore: Update git icon

* Update issue templates (#184)
This commit is contained in:
Mattia Astorino 2018-05-07 16:23:17 +02:00 committed by GitHub
parent 5f82aec20a
commit 9907cc8c67
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
43 changed files with 1075 additions and 5749 deletions

35
.github/ISSUE_TEMPLATE/Bug_report.md vendored Normal file
View file

@ -0,0 +1,35 @@
---
name: Bug report
about: Create a report to help us improve
---
**Describe the bug**
A clear and concise description of what the bug is.
**To Reproduce**
Steps to reproduce the behavior:
1. Go to '...'
2. Click on '....'
3. Scroll down to '....'
4. See error
**Expected behavior**
A clear and concise description of what you expected to happen.
**Screenshots**
If applicable, add screenshots to help explain your problem.
**Desktop (please complete the following information):**
- OS: [e.g. iOS]
- Browser [e.g. chrome, safari]
- Version [e.g. 22]
**Smartphone (please complete the following information):**
- Device: [e.g. iPhone6]
- OS: [e.g. iOS8.1]
- Browser [e.g. stock browser, safari]
- Version [e.g. 22]
**Additional context**
Add any other context about the problem here.

7
.github/ISSUE_TEMPLATE/Custom.md vendored Normal file
View file

@ -0,0 +1,7 @@
---
name: General
about: Give us your feedback about this extension
---

View file

@ -0,0 +1,17 @@
---
name: Feature request
about: Suggest an idea for this project
---
**Is your feature request related to a problem? Please describe.**
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
**Describe the solution you'd like**
A clear and concise description of what you want to happen.
**Describe alternatives you've considered**
A clear and concise description of any alternative solutions or features you've considered.
**Additional context**
Add any other context or screenshots about the feature request here.

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

@ -94,7 +94,7 @@ Launch *Quick Open*,
- <img src="https://developer.apple.com/favicon.ico" width=16 height=16/> <a href="https://code.visualstudio.com/shortcuts/keyboard-shortcuts-macos.pdf">macOS</a> `⌘ + Shift + P` - <img src="https://developer.apple.com/favicon.ico" width=16 height=16/> <a href="https://code.visualstudio.com/shortcuts/keyboard-shortcuts-macos.pdf">macOS</a> `⌘ + Shift + P`
- <img src="https://www.microsoft.com/favicon.ico" width=16 height=16/> <a href="https://code.visualstudio.com/shortcuts/keyboard-shortcuts-windows.pdf">Windows</a> `Ctrl + Shift + P` - <img src="https://www.microsoft.com/favicon.ico" width=16 height=16/> <a href="https://code.visualstudio.com/shortcuts/keyboard-shortcuts-windows.pdf">Windows</a> `Ctrl + Shift + P`
type `material theme` and select `Material Theme: Settings` from the drop-down menu. Here you will find the `Fix file icons` command that will set the correct icons theme based on your active material theme variant. type `material theme` and select `Material Theme: Fix file icons` from the drop-down menu, this command will set the correct icon theme based on your active material theme variant.
## Set the accent color ## Set the accent color
@ -104,7 +104,7 @@ Launch *Quick Open*,
- <img src="https://developer.apple.com/favicon.ico" width=16 height=16/> <a href="https://code.visualstudio.com/shortcuts/keyboard-shortcuts-macos.pdf">macOS</a> `⌘ + Shift + P` - <img src="https://developer.apple.com/favicon.ico" width=16 height=16/> <a href="https://code.visualstudio.com/shortcuts/keyboard-shortcuts-macos.pdf">macOS</a> `⌘ + Shift + P`
- <img src="https://www.microsoft.com/favicon.ico" width=16 height=16/> <a href="https://code.visualstudio.com/shortcuts/keyboard-shortcuts-windows.pdf">Windows</a> `Ctrl + Shift + P` - <img src="https://www.microsoft.com/favicon.ico" width=16 height=16/> <a href="https://code.visualstudio.com/shortcuts/keyboard-shortcuts-windows.pdf">Windows</a> `Ctrl + Shift + P`
Type `Material Theme` and choose `Material Theme: Settings`, then select `Change accent color` and pick one color from the list. Type `material theme` and choose `Material Theme: Set accent color` and pick one color from the list.
## Override theme colors ## Override theme colors
You can override the material theme ui and schemes colors by adding these theme-specific settings to your configuration. For advanced customisation please check the [relative section on the vs code documentation](https://code.visualstudio.com/docs/getstarted/themes#_customizing-a-color-theme) You can override the material theme ui and schemes colors by adding these theme-specific settings to your configuration. For advanced customisation please check the [relative section on the vs code documentation](https://code.visualstudio.com/docs/getstarted/themes#_customizing-a-color-theme)
@ -149,7 +149,6 @@ You can override the material theme ui and schemes colors by adding these theme-
"[Material Theme]": { "[Material Theme]": {
"sideBar.background": "#347890" "sideBar.background": "#347890"
}, },
"..."
} }
``` ```

View file

@ -1,107 +1,110 @@
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,
value: undefined
},
"editor.findWidgetResizeBorder": {
alpha: 100,
value: undefined
},
"editorWidget.border": {
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)) {
@ -111,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);
@ -136,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,93 +1,100 @@
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`);
} };
function getVariantFromColor(color: string): string { const getVariantFromColor = (color: string): string => {
switch (color) { switch (true) {
case undefined || 'Material Theme': case color === undefined || color === 'Material Theme':
return 'Default'; return 'Default';
case 'Material Theme High Contrast': case color === 'Material Theme High Contrast':
return 'Default High Contrast'; return 'Default High Contrast';
case color.includes('Material Theme Lighter'):
return 'Light';
default: default:
return color.replace(/Material Theme /gi, ''); return color.replace(/Material Theme /gi, '');
} }
} };
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;
} }
@ -98,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

@ -11,7 +11,7 @@
"color": "#11131C", "color": "#11131C",
"theme": "dark" "theme": "dark"
}, },
"homepage": "https://github.com/equinusocio/vsc-material-theme", "homepage": "https://equinsuocha.io/projects/material-theme/",
"repository": { "repository": {
"type": "git", "type": "git",
"url": "https://github.com/equinusocio/vsc-material-theme.git" "url": "https://github.com/equinusocio/vsc-material-theme.git"
@ -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,16 +47,14 @@
"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": {
"commands": [ "commands": [
{ {
"command": "materialTheme.setAccent", "command": "materialTheme.setAccent",
"title": "Set the accent color", "title": "Set accent color",
"category": "🎨 Material Theme" "category": "🎨 Material Theme"
}, },
{ {
@ -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

@ -94,6 +94,7 @@
"ts": "_file_typescript", "ts": "_file_typescript",
"tsx": "_file_react", "tsx": "_file_react",
"d.ts": "_file_typescript_def", "d.ts": "_file_typescript_def",
"spec.ts": "_file_typescript_def",
"pdf": "_file_pdf", "pdf": "_file_pdf",
"xlsx": "_file_table", "xlsx": "_file_table",
"xls": "_file_table", "xls": "_file_table",

View file

@ -1,3 +1,3 @@
<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32"> <svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32">
<path fill="#AC4142" fill-rule="evenodd" d="M28.486084,14.8456221 L17.1430597,3.50460829 C16.8311765,3.16820276 16.4409384,3 15.9723453,3 C15.5037523,3 15.1019914,3.16820276 14.7670626,3.50460829 L12.4256338,5.84562212 L15.4146428,8.83410138 C15.751108,8.71428571 16.1052414,8.69662058 16.4770431,8.78110599 C16.8488448,8.8655914 17.1791645,9.05145929 17.4680021,9.33870968 C17.7322579,9.60291859 17.9066359,9.92089094 17.9911363,10.2926267 C18.0756367,10.6643625 18.0579684,11.030722 17.9381315,11.3917051 L20.8188264,14.2718894 C21.1552916,14.1520737 21.509425,14.1282642 21.8812267,14.2004608 C22.2530284,14.2726575 22.5833481,14.452381 22.8721858,14.7396313 C23.2562784,15.1236559 23.4483248,15.5913978 23.4483248,16.1428571 C23.4483248,16.6943164 23.2562784,17.1620584 22.8721858,17.5460829 C22.4880931,17.9301075 22.0202683,18.1221198 21.4687112,18.1221198 C20.9171542,18.1221198 20.4493293,17.9301075 20.0652367,17.5460829 C19.776399,17.2572965 19.5966436,16.9155146 19.5259706,16.5207373 C19.4552975,16.1259601 19.4914022,15.7480799 19.6342847,15.3870968 L16.9333452,12.6866359 L16.9333452,19.7788018 C17.0301365,19.8264209 17.1200142,19.8801843 17.2029782,19.9400922 C17.2859422,20 17.3758199,20.0660522 17.4726112,20.1382488 C17.8567039,20.5222734 18.0487502,20.9900154 18.0487502,21.5414747 C18.0487502,22.0929339 17.8567039,22.5606759 17.4726112,22.9447005 C17.0885186,23.3533026 16.6206937,23.5576037 16.0691367,23.5576037 C15.5175796,23.5576037 15.0497548,23.3533026 14.6656621,22.9447005 C14.2569875,22.5606759 14.0526502,22.0929339 14.0526502,21.5414747 C14.0526502,20.9900154 14.2569875,20.5222734 14.6656621,20.1382488 C14.7624535,20.0414747 14.8646221,19.9577573 14.9721681,19.8870968 C15.079714,19.8164363 15.1934054,19.7565284 15.3132423,19.7073733 L15.3132423,12.578341 C15.1934054,12.530722 15.079714,12.4708141 14.9721681,12.3986175 C14.8646221,12.3264209 14.7624535,12.2427035 14.6656621,12.1474654 C14.3537789,11.858679 14.1617326,11.5107527 14.0895231,11.1036866 C14.0173137,10.6966206 14.0657094,10.312596 14.2347102,9.9516129 L11.282574,7 L3.50469775,14.8133641 C3.16823258,15.125192 3,15.515361 3,15.983871 C3,16.452381 3.16823258,16.8425499 3.50469775,17.1543779 L14.847722,28.4953917 C15.1596053,28.8317972 15.5498434,29 16.0184364,29 C16.4870295,29 16.8887904,28.8317972 17.2237192,28.4953917 L28.4953023,17.2258065 C28.8317674,16.8894009 29,16.4930876 29,16.0368664 C29,15.5806452 28.8317674,15.1843318 28.4953023,14.8479263 L28.4953023,14.8479263 L28.486084,14.8456221 Z"/> <path fill="#AC4142" fill-rule="evenodd" d="M28.486084,15.8456221 L17.1430597,4.50460829 C16.8311765,4.16820276 16.4409384,4 15.9723453,4 C15.5037523,4 15.1019914,4.16820276 14.7670626,4.50460829 L12.4256338,6.84562212 L15.4146428,9.83410138 C15.751108,9.71428571 16.1052414,9.69662058 16.4770431,9.78110599 C16.8488448,9.8655914 17.1791645,10.0514593 17.4680021,10.3387097 C17.7322579,10.6029186 17.9066359,10.9208909 17.9911363,11.2926267 C18.0756367,11.6643625 18.0579684,12.030722 17.9381315,12.3917051 L20.8188264,15.2718894 C21.1552916,15.1520737 21.509425,15.1282642 21.8812267,15.2004608 C22.2530284,15.2726575 22.5833481,15.452381 22.8721858,15.7396313 C23.2562784,16.1236559 23.4483248,16.5913978 23.4483248,17.1428571 C23.4483248,17.6943164 23.2562784,18.1620584 22.8721858,18.5460829 C22.4880931,18.9301075 22.0202683,19.1221198 21.4687112,19.1221198 C20.9171542,19.1221198 20.4493293,18.9301075 20.0652367,18.5460829 C19.776399,18.2572965 19.5966436,17.9155146 19.5259706,17.5207373 C19.4552975,17.1259601 19.4914022,16.7480799 19.6342847,16.3870968 L16.9333452,13.6866359 L16.9333452,20.7788018 C17.0301365,20.8264209 17.1200142,20.8801843 17.2029782,20.9400922 C17.2859422,21 17.3758199,21.0660522 17.4726112,21.1382488 C17.8567039,21.5222734 18.0487502,21.9900154 18.0487502,22.5414747 C18.0487502,23.0929339 17.8567039,23.5606759 17.4726112,23.9447005 C17.0885186,24.3533026 16.6206937,24.5576037 16.0691367,24.5576037 C15.5175796,24.5576037 15.0497548,24.3533026 14.6656621,23.9447005 C14.2569875,23.5606759 14.0526502,23.0929339 14.0526502,22.5414747 C14.0526502,21.9900154 14.2569875,21.5222734 14.6656621,21.1382488 C14.7624535,21.0414747 14.8646221,20.9577573 14.9721681,20.8870968 C15.079714,20.8164363 15.1934054,20.7565284 15.3132423,20.7073733 L15.3132423,13.578341 C15.1934054,13.530722 15.079714,13.4708141 14.9721681,13.3986175 C14.8646221,13.3264209 14.7624535,13.2427035 14.6656621,13.1474654 C14.3537789,12.858679 14.1617326,12.5107527 14.0895231,12.1036866 C14.0173137,11.6966206 14.0657094,11.312596 14.2347102,10.9516129 L11.282574,8 L3.50469775,15.8133641 C3.16823258,16.125192 3,16.515361 3,16.983871 C3,17.452381 3.16823258,17.8425499 3.50469775,18.1543779 L14.847722,29.4953917 C15.1596053,29.8317972 15.5498434,30 16.0184364,30 C16.4870295,30 16.8887904,29.8317972 17.2237192,29.4953917 L28.4953023,18.2258065 C28.8317674,17.8894009 29,17.4930876 29,17.0368664 C29,16.5806452 28.8317674,16.1843318 28.4953023,15.8479263 L28.4953023,15.8479263 L28.486084,15.8456221 Z"/>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 2.5 KiB

After

Width:  |  Height:  |  Size: 2.5 KiB

View file

@ -785,6 +785,8 @@
"editorError.foreground": "{{variant.scheme.base.red}}70", "editorError.foreground": "{{variant.scheme.base.red}}70",
"editorWarning.foreground": "{{variant.scheme.base.green}}70", "editorWarning.foreground": "{{variant.scheme.base.green}}70",
"editorWidget.background": "{{variant.scheme.backgroundAlt}}", "editorWidget.background": "{{variant.scheme.backgroundAlt}}",
"editor.findWidgetResizeBorder": "{{commons.accents.Teal}}",
"editorWidget.border": "{{variant.scheme.base.Teal}}",
"editorMarkerNavigation.background": "{{variant.scheme.foreground}}05", "editorMarkerNavigation.background": "{{variant.scheme.foreground}}05",
"widget.shadow": "{{variant.scheme.shadow}}", "widget.shadow": "{{variant.scheme.shadow}}",
"panel.border": "{{variant.scheme.contrastBorder}}60", "panel.border": "{{variant.scheme.contrastBorder}}60",

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

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"