themes registration, starting extensions API
parent
8e38189560
commit
b697856c4e
|
|
@ -0,0 +1,25 @@
|
||||||
|
{
|
||||||
|
"version": "2.0.0",
|
||||||
|
"tasks": [
|
||||||
|
{
|
||||||
|
"label": "tsc watch",
|
||||||
|
"type": "npm",
|
||||||
|
"script": "compile:watch",
|
||||||
|
"isBackground": true,
|
||||||
|
"group": {
|
||||||
|
"kind": "build",
|
||||||
|
"isDefault": true
|
||||||
|
},
|
||||||
|
"presentation": {
|
||||||
|
"reveal": "never",
|
||||||
|
"echo": false,
|
||||||
|
"focus": false,
|
||||||
|
"panel": "dedicated"
|
||||||
|
},
|
||||||
|
"problemMatcher": {
|
||||||
|
"base": "$tsc-watch",
|
||||||
|
"applyTo": "allDocuments"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,8 @@
|
||||||
|
import { registerTheme } from '@theme';
|
||||||
|
import chalk from 'chalk'
|
||||||
|
|
||||||
|
registerTheme("default", {});
|
||||||
|
|
||||||
|
registerTheme("high contrast", {
|
||||||
|
selected: chalk.ansi256(250).inverse
|
||||||
|
});
|
||||||
|
|
@ -0,0 +1,33 @@
|
||||||
|
import path from 'path';
|
||||||
|
|
||||||
|
const moduleAliases = {
|
||||||
|
"@theme": "./out/src/ui/Theme.js"
|
||||||
|
};
|
||||||
|
|
||||||
|
const getAliases = () => {
|
||||||
|
const base = process.cwd();
|
||||||
|
const aliases = moduleAliases || {};
|
||||||
|
const absoluteAliases = Object.keys(aliases).reduce((acc, key) =>
|
||||||
|
aliases[key][0] === '/'
|
||||||
|
? acc
|
||||||
|
: { ...acc, [key]: 'file:///' + path.join(base, aliases[key]) },
|
||||||
|
aliases)
|
||||||
|
return absoluteAliases;
|
||||||
|
}
|
||||||
|
|
||||||
|
const isAliasInSpecifier = (path, alias) => {
|
||||||
|
return path.indexOf(alias) === 0
|
||||||
|
&& (path.length === alias.length || path[alias.length] === '/')
|
||||||
|
}
|
||||||
|
|
||||||
|
const aliases = getAliases();
|
||||||
|
|
||||||
|
export const resolve = (specifier, parentModuleURL, defaultResolve) => {
|
||||||
|
const alias = Object.keys(aliases).find((key) => isAliasInSpecifier(specifier, key));
|
||||||
|
|
||||||
|
const newSpecifier = alias === undefined
|
||||||
|
? specifier
|
||||||
|
: path.join(aliases[alias], specifier.substr(alias.length));
|
||||||
|
|
||||||
|
return defaultResolve(newSpecifier, parentModuleURL);
|
||||||
|
}
|
||||||
|
|
@ -11,22 +11,25 @@
|
||||||
"@types/uuid": "^8.3.0",
|
"@types/uuid": "^8.3.0",
|
||||||
"bonjour": "^3.5.0",
|
"bonjour": "^3.5.0",
|
||||||
"chalk": "^4.1.1",
|
"chalk": "^4.1.1",
|
||||||
|
"deepmerge": "^4.2.2",
|
||||||
"faker": "^5.5.3",
|
"faker": "^5.5.3",
|
||||||
"frigid": "^1.3.8",
|
"frigid": "^1.3.8",
|
||||||
"fs-extra": "^10.0.0",
|
"fs-extra": "^10.0.0",
|
||||||
"get-port": "^5.1.1",
|
"get-port": "^5.1.1",
|
||||||
"logger": "^0.0.1",
|
"logger": "^0.0.1",
|
||||||
|
"module-alias": "^2.2.2",
|
||||||
"neo-blessed": "^0.2.0",
|
"neo-blessed": "^0.2.0",
|
||||||
"printable-characters": "^1.0.42",
|
"printable-characters": "^1.0.42",
|
||||||
"sisteransi": "^1.0.5",
|
"sisteransi": "^1.0.5",
|
||||||
"typescript": "^4.3.2",
|
"typescript": "^4.3.2",
|
||||||
"uuid": "^8.3.2",
|
"uuid": "^8.3.2",
|
||||||
|
"walk-sync": "^3.0.0",
|
||||||
"ws": "^7.4.6",
|
"ws": "^7.4.6",
|
||||||
"yarn": "^1.22.10"
|
"yarn": "^1.22.10"
|
||||||
},
|
},
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"compile:watch": "tsc --watch",
|
"compile:watch": "tsc --watch",
|
||||||
"start": "node --enable-source-maps out/index.js",
|
"start": "node --loader ./lib/aliases.mjs --enable-source-maps out/src/index.js",
|
||||||
"dev": "supervisor -w out -n exit -t -k --exec yarn -- start",
|
"dev": "supervisor -w out -n exit -t -k --exec yarn -- start",
|
||||||
"prod": "git fetch && git pull && yarn && tsc && yarn start"
|
"prod": "git fetch && git pull && yarn && tsc && yarn start"
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -7,6 +7,7 @@ import { ChopTreeTask } from './tasks/ChopTreeTask.js';
|
||||||
import { Game } from './Game.js';
|
import { Game } from './Game.js';
|
||||||
import { render } from './ui/UI.js';
|
import { render } from './ui/UI.js';
|
||||||
import { Memory } from './Memory.js';
|
import { Memory } from './Memory.js';
|
||||||
|
import { getTheme } from './ui/Theme.js';
|
||||||
|
|
||||||
const LABORS = {
|
const LABORS = {
|
||||||
CUT_TREE: Symbol('CUT_TREE'),
|
CUT_TREE: Symbol('CUT_TREE'),
|
||||||
|
|
@ -127,7 +128,7 @@ export class Pawn extends Serializable implements Tickable {
|
||||||
if(this.job) {
|
if(this.job) {
|
||||||
return this.job.status;
|
return this.job.status;
|
||||||
} else {
|
} else {
|
||||||
return this.awake ? chalk.bold.black('IDLE') : chalk.blue('RESTING')
|
return this.awake ? getTheme().status.idle('IDLE') : getTheme().status.self('RESTING')
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -23,7 +23,19 @@ export function progressbar(completion: number, width: number, style: Progressba
|
||||||
} else if(style === ProgressbarStyle.progress) {
|
} else if(style === ProgressbarStyle.progress) {
|
||||||
chalkFn = getTheme().progressBar.normal;
|
chalkFn = getTheme().progressBar.normal;
|
||||||
}
|
}
|
||||||
const chars = [' ', '▏', '▎', '▍', '▌', '▋', '▊', '▉', '█'];
|
|
||||||
|
const chars = [
|
||||||
|
'\u0020',
|
||||||
|
'\u258f',
|
||||||
|
'\u258e',
|
||||||
|
'\u258d',
|
||||||
|
'\u258c',
|
||||||
|
'\u258b',
|
||||||
|
'\u258a',
|
||||||
|
'\u2589',
|
||||||
|
'\u2588'
|
||||||
|
];
|
||||||
|
|
||||||
let str = '';
|
let str = '';
|
||||||
for(let i = 0; i < width; i ++) {
|
for(let i = 0; i < width; i ++) {
|
||||||
const remainder = Math.floor(Math.min(Math.max(0, (completion * width) - i), 1) * 8);
|
const remainder = Math.floor(Math.min(Math.max(0, (completion * width) - i), 1) * 8);
|
||||||
|
|
|
||||||
|
|
@ -58,7 +58,7 @@ export default class Time extends Serializable implements Renderable {
|
||||||
|
|
||||||
render() {
|
render() {
|
||||||
const sym = (this.hour >= 6 && this.hour < 20) ?
|
const sym = (this.hour >= 6 && this.hour < 20) ?
|
||||||
chalk.ansi256(226).bgAnsi256(27)(' ☀ ') :
|
chalk.ansi256(226).bgAnsi256(27)(' ☼ ') :
|
||||||
chalk.ansi256(254).bgAnsi256(17)(' ☾ ')
|
chalk.ansi256(254).bgAnsi256(17)(' ☾ ')
|
||||||
|
|
||||||
return `${sym} ${
|
return `${sym} ${
|
||||||
|
|
@ -74,8 +74,6 @@ export default class Time extends Serializable implements Renderable {
|
||||||
this.normalizedYear
|
this.normalizedYear
|
||||||
}`)
|
}`)
|
||||||
}`;
|
}`;
|
||||||
|
|
||||||
// return '☾' || '☼';
|
|
||||||
}
|
}
|
||||||
|
|
||||||
toString() {
|
toString() {
|
||||||
|
|
|
||||||
29
src/index.ts
29
src/index.ts
|
|
@ -1,15 +1,30 @@
|
||||||
import { Game } from './Game.js';
|
import { Game } from './Game.js';
|
||||||
import { render } from './ui/UI.js';
|
import { render } from './ui/UI.js';
|
||||||
import { ensureDirSync } from 'fs-extra';
|
import { ensureDirSync } from 'fs-extra';
|
||||||
import { parse } from 'path';
|
import { lstatSync } from 'fs';
|
||||||
|
import { parse, resolve } from 'path';
|
||||||
|
import walkSync from 'walk-sync';
|
||||||
|
import { fileURLToPath } from 'url';
|
||||||
|
|
||||||
const saveFile = process.argv[2] || 'data/world01.json';
|
const saveFile = process.argv[2] || 'data/world01.json';
|
||||||
|
|
||||||
ensureDirSync(parse(saveFile).dir);
|
ensureDirSync(parse(saveFile).dir);
|
||||||
|
|
||||||
// TODO move render logic into game, so that the ui doesnt exist until the game does...
|
const extensionsPath = resolve(parse(fileURLToPath(import.meta.url)).dir, '../content');
|
||||||
// maybe, i mean, an argument could be made for not that, because the game
|
|
||||||
// isnt necessarily the entire thing, its just one instance of a save file.
|
const extensions = walkSync(extensionsPath)
|
||||||
// But probably the initial menu screens will be their own thing entirely.
|
.map(path => resolve(extensionsPath, path))
|
||||||
const game = Game.create(saveFile);
|
.filter(path => lstatSync(path).isFile())
|
||||||
render(game);
|
.filter(path => parse(path).ext === '.js')
|
||||||
|
.map(path => import(path));
|
||||||
|
|
||||||
|
Promise.all(extensions).then((extensions) => {
|
||||||
|
|
||||||
|
// TODO move render logic into game, so that the ui doesnt exist until the game does...
|
||||||
|
// maybe, i mean, an argument could be made for not that, because the game
|
||||||
|
// isnt necessarily the entire thing, its just one instance of a save file.
|
||||||
|
// But probably the initial menu screens will be their own thing entirely.
|
||||||
|
const game = Game.create(saveFile);
|
||||||
|
render(game);
|
||||||
|
|
||||||
|
});
|
||||||
|
|
@ -6,6 +6,8 @@
|
||||||
// instead of upsampling them to 16m codes.
|
// instead of upsampling them to 16m codes.
|
||||||
import chalk from 'chalk';
|
import chalk from 'chalk';
|
||||||
chalk.level = 2;
|
chalk.level = 2;
|
||||||
|
import merge from 'deepmerge';
|
||||||
|
import log from '../log.js';
|
||||||
|
|
||||||
type StyleFunction = (text: string) => string;
|
type StyleFunction = (text: string) => string;
|
||||||
|
|
||||||
|
|
@ -36,11 +38,11 @@ export type Theme = {
|
||||||
status: {
|
status: {
|
||||||
idle: StyleFunction,
|
idle: StyleFunction,
|
||||||
self: StyleFunction,
|
self: StyleFunction,
|
||||||
|
work: StyleFunction
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export const defaultTheme: Theme = {
|
export const backupTheme: Theme = {
|
||||||
header: chalk.ansi256(255).bold,
|
header: chalk.ansi256(255).bold,
|
||||||
subheader: chalk.ansi256(243).bold,
|
subheader: chalk.ansi256(243).bold,
|
||||||
normal: chalk.ansi256(243),
|
normal: chalk.ansi256(243),
|
||||||
|
|
@ -63,27 +65,31 @@ export const defaultTheme: Theme = {
|
||||||
buckets: [.1, .25, .95]
|
buckets: [.1, .25, .95]
|
||||||
},
|
},
|
||||||
normal: chalk.bgAnsi256(235).ansi256(243)
|
normal: chalk.bgAnsi256(235).ansi256(243)
|
||||||
|
},
|
||||||
|
status: {
|
||||||
|
idle: chalk.ansi256(243),
|
||||||
|
self: chalk.ansi256(45),
|
||||||
|
work: chalk.ansi256(208)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const debugStyle = chalk.ansi256(213);
|
export type ThemeName = string;
|
||||||
export const debugTheme: Theme = {
|
|
||||||
header: debugStyle.inverse,
|
let currentTheme = backupTheme;
|
||||||
subheader: debugStyle,
|
const themes: Map<ThemeName, Theme> = new Map();
|
||||||
normal: debugStyle,
|
|
||||||
selected: debugStyle.inverse,
|
export function registerTheme(name: ThemeName, theme: Partial<Theme>) {
|
||||||
hotkey: debugStyle,
|
log.info('registering theme', name)
|
||||||
tab: {
|
themes.set(name, merge(backupTheme, theme));
|
||||||
normal: debugStyle,
|
}
|
||||||
selected: debugStyle.inverse,
|
|
||||||
},
|
export function setTheme(name: ThemeName): void {
|
||||||
border: {
|
if(!themes.has(name)) return;
|
||||||
focused: '#ff88ff',
|
currentTheme = themes.get(name);
|
||||||
normal: '#ff00ff'
|
|
||||||
},
|
// TODO reset borders and other weird shit that wont just update on a re-render
|
||||||
progressBar: defaultTheme.progressBar
|
|
||||||
}
|
}
|
||||||
|
|
||||||
export function getTheme(): Theme {
|
export function getTheme(): Theme {
|
||||||
return defaultTheme;
|
return currentTheme;
|
||||||
}
|
}
|
||||||
|
|
@ -6,9 +6,13 @@
|
||||||
"allowSyntheticDefaultImports": true,
|
"allowSyntheticDefaultImports": true,
|
||||||
"outDir": "out",
|
"outDir": "out",
|
||||||
"declaration": true,
|
"declaration": true,
|
||||||
"sourceMap": true
|
"sourceMap": true,
|
||||||
|
"paths": {
|
||||||
|
"@theme": ["./src/ui/Theme"]
|
||||||
|
}
|
||||||
},
|
},
|
||||||
"include": [
|
"include": [
|
||||||
"src/**/*.ts"
|
"src/**/*.ts",
|
||||||
|
"content/**/*.ts"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
63
yarn.lock
63
yarn.lock
|
|
@ -18,6 +18,11 @@
|
||||||
version "5.5.6"
|
version "5.5.6"
|
||||||
resolved "https://registry.yarnpkg.com/@types/faker/-/faker-5.5.6.tgz#039b700a9d8ad9150ecc842bf5e717e2027b6f75"
|
resolved "https://registry.yarnpkg.com/@types/faker/-/faker-5.5.6.tgz#039b700a9d8ad9150ecc842bf5e717e2027b6f75"
|
||||||
|
|
||||||
|
"@types/minimatch@^3.0.3", "@types/minimatch@^3.0.4":
|
||||||
|
version "3.0.4"
|
||||||
|
resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.4.tgz#f0ec25dbf2f0e4b18647313ac031134ca5b24b21"
|
||||||
|
integrity sha512-1z8k4wzFnNjVK/tlxvrWuK5WMt6mydWWP7+zvH5eFep4oj+UkrfiJTRtjCeBXNpwaA/FYqqtb4/QS4ianFpIRA==
|
||||||
|
|
||||||
"@types/node@*":
|
"@types/node@*":
|
||||||
version "15.12.2"
|
version "15.12.2"
|
||||||
resolved "https://registry.npmjs.org/@types/node/-/node-15.12.2.tgz"
|
resolved "https://registry.npmjs.org/@types/node/-/node-15.12.2.tgz"
|
||||||
|
|
@ -36,6 +41,11 @@ array-flatten@^2.1.0:
|
||||||
version "2.1.2"
|
version "2.1.2"
|
||||||
resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-2.1.2.tgz#24ef80a28c1a893617e2149b0c6d0d788293b099"
|
resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-2.1.2.tgz#24ef80a28c1a893617e2149b0c6d0d788293b099"
|
||||||
|
|
||||||
|
balanced-match@^1.0.0:
|
||||||
|
version "1.0.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee"
|
||||||
|
integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==
|
||||||
|
|
||||||
bonjour@^3.5.0:
|
bonjour@^3.5.0:
|
||||||
version "3.5.0"
|
version "3.5.0"
|
||||||
resolved "https://registry.yarnpkg.com/bonjour/-/bonjour-3.5.0.tgz#8e890a183d8ee9a2393b3844c691a42bcf7bc9f5"
|
resolved "https://registry.yarnpkg.com/bonjour/-/bonjour-3.5.0.tgz#8e890a183d8ee9a2393b3844c691a42bcf7bc9f5"
|
||||||
|
|
@ -47,6 +57,14 @@ bonjour@^3.5.0:
|
||||||
multicast-dns "^6.0.1"
|
multicast-dns "^6.0.1"
|
||||||
multicast-dns-service-types "^1.1.0"
|
multicast-dns-service-types "^1.1.0"
|
||||||
|
|
||||||
|
brace-expansion@^1.1.7:
|
||||||
|
version "1.1.11"
|
||||||
|
resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd"
|
||||||
|
integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==
|
||||||
|
dependencies:
|
||||||
|
balanced-match "^1.0.0"
|
||||||
|
concat-map "0.0.1"
|
||||||
|
|
||||||
buffer-indexof@^1.0.0:
|
buffer-indexof@^1.0.0:
|
||||||
version "1.1.1"
|
version "1.1.1"
|
||||||
resolved "https://registry.yarnpkg.com/buffer-indexof/-/buffer-indexof-1.1.1.tgz#52fabcc6a606d1a00302802648ef68f639da268c"
|
resolved "https://registry.yarnpkg.com/buffer-indexof/-/buffer-indexof-1.1.1.tgz#52fabcc6a606d1a00302802648ef68f639da268c"
|
||||||
|
|
@ -75,6 +93,11 @@ color-name@~1.1.4:
|
||||||
version "1.1.4"
|
version "1.1.4"
|
||||||
resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz"
|
resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz"
|
||||||
|
|
||||||
|
concat-map@0.0.1:
|
||||||
|
version "0.0.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
|
||||||
|
integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=
|
||||||
|
|
||||||
deep-equal@^1.0.1:
|
deep-equal@^1.0.1:
|
||||||
version "1.1.1"
|
version "1.1.1"
|
||||||
resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.1.1.tgz#b5c98c942ceffaf7cb051e24e1434a25a2e6076a"
|
resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.1.1.tgz#b5c98c942ceffaf7cb051e24e1434a25a2e6076a"
|
||||||
|
|
@ -86,6 +109,11 @@ deep-equal@^1.0.1:
|
||||||
object-keys "^1.1.1"
|
object-keys "^1.1.1"
|
||||||
regexp.prototype.flags "^1.2.0"
|
regexp.prototype.flags "^1.2.0"
|
||||||
|
|
||||||
|
deepmerge@^4.2.2:
|
||||||
|
version "4.2.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.2.2.tgz#44d2ea3679b8f4d4ffba33f03d865fc1e7bf4955"
|
||||||
|
integrity sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==
|
||||||
|
|
||||||
define-properties@^1.1.3:
|
define-properties@^1.1.3:
|
||||||
version "1.1.3"
|
version "1.1.3"
|
||||||
resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1"
|
resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1"
|
||||||
|
|
@ -109,6 +137,11 @@ dns-txt@^2.0.2:
|
||||||
dependencies:
|
dependencies:
|
||||||
buffer-indexof "^1.0.0"
|
buffer-indexof "^1.0.0"
|
||||||
|
|
||||||
|
ensure-posix-path@^1.1.0:
|
||||||
|
version "1.1.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/ensure-posix-path/-/ensure-posix-path-1.1.1.tgz#3c62bdb19fa4681544289edb2b382adc029179ce"
|
||||||
|
integrity sha512-VWU0/zXzVbeJNXvME/5EmLuEj2TauvoaTz6aFYK1Z92JCBlDlZ3Gu0tuGR42kpW1754ywTs+QB0g5TP0oj9Zaw==
|
||||||
|
|
||||||
faker@^5.5.3:
|
faker@^5.5.3:
|
||||||
version "5.5.3"
|
version "5.5.3"
|
||||||
resolved "https://registry.npmjs.org/faker/-/faker-5.5.3.tgz"
|
resolved "https://registry.npmjs.org/faker/-/faker-5.5.3.tgz"
|
||||||
|
|
@ -196,6 +229,26 @@ logger@^0.0.1:
|
||||||
version "0.0.1"
|
version "0.0.1"
|
||||||
resolved "https://registry.yarnpkg.com/logger/-/logger-0.0.1.tgz#cb08171f8a6f6f674b8499dadf50bed4befb72c4"
|
resolved "https://registry.yarnpkg.com/logger/-/logger-0.0.1.tgz#cb08171f8a6f6f674b8499dadf50bed4befb72c4"
|
||||||
|
|
||||||
|
matcher-collection@^2.0.1:
|
||||||
|
version "2.0.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/matcher-collection/-/matcher-collection-2.0.1.tgz#90be1a4cf58d6f2949864f65bb3b0f3e41303b29"
|
||||||
|
integrity sha512-daE62nS2ZQsDg9raM0IlZzLmI2u+7ZapXBwdoeBUKAYERPDDIc0qNqA8E0Rp2D+gspKR7BgIFP52GeujaGXWeQ==
|
||||||
|
dependencies:
|
||||||
|
"@types/minimatch" "^3.0.3"
|
||||||
|
minimatch "^3.0.2"
|
||||||
|
|
||||||
|
minimatch@^3.0.2, minimatch@^3.0.4:
|
||||||
|
version "3.0.4"
|
||||||
|
resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083"
|
||||||
|
integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==
|
||||||
|
dependencies:
|
||||||
|
brace-expansion "^1.1.7"
|
||||||
|
|
||||||
|
module-alias@^2.2.2:
|
||||||
|
version "2.2.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/module-alias/-/module-alias-2.2.2.tgz#151cdcecc24e25739ff0aa6e51e1c5716974c0e0"
|
||||||
|
integrity sha512-A/78XjoX2EmNvppVWEhM2oGk3x4lLxnkEA4jTbaK97QKSDjkIoOsKQlfylt/d3kKKi596Qy3NP5XrXJ6fZIC9Q==
|
||||||
|
|
||||||
multicast-dns-service-types@^1.1.0:
|
multicast-dns-service-types@^1.1.0:
|
||||||
version "1.1.0"
|
version "1.1.0"
|
||||||
resolved "https://registry.yarnpkg.com/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz#899f11d9686e5e05cb91b35d5f0e63b773cfc901"
|
resolved "https://registry.yarnpkg.com/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz#899f11d9686e5e05cb91b35d5f0e63b773cfc901"
|
||||||
|
|
@ -265,6 +318,16 @@ uuid@^8.3.2:
|
||||||
version "8.3.2"
|
version "8.3.2"
|
||||||
resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2"
|
resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2"
|
||||||
|
|
||||||
|
walk-sync@^3.0.0:
|
||||||
|
version "3.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/walk-sync/-/walk-sync-3.0.0.tgz#67f882925021e20569a1edd560b8da31da8d171c"
|
||||||
|
integrity sha512-41TvKmDGVpm2iuH7o+DAOt06yyu/cSHpX3uzAwetzASvlNtVddgIjXIb2DfB/Wa20B1Jo86+1Dv1CraSU7hWdw==
|
||||||
|
dependencies:
|
||||||
|
"@types/minimatch" "^3.0.4"
|
||||||
|
ensure-posix-path "^1.1.0"
|
||||||
|
matcher-collection "^2.0.1"
|
||||||
|
minimatch "^3.0.4"
|
||||||
|
|
||||||
ws@^7.4.6:
|
ws@^7.4.6:
|
||||||
version "7.4.6"
|
version "7.4.6"
|
||||||
resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.6.tgz#5654ca8ecdeee47c33a9a4bf6d28e2be2980377c"
|
resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.6.tgz#5654ca8ecdeee47c33a9a4bf6d28e2be2980377c"
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue