Initial commit

This commit is contained in:
Hamcha 2019-09-02 17:49:41 +02:00
commit 7c49cd2bc9
Signed by: hamcha
GPG Key ID: 44AD3571EB09A39E
8 changed files with 644 additions and 0 deletions

1
.gitignore vendored Normal file
View File

@ -0,0 +1 @@
node_modules

6
README.md Normal file
View File

@ -0,0 +1,6 @@
# Magic Encoding Toolkit
```sh
yarn install
yarn genurl -i file.json
```

11
encoded.ts Normal file
View File

@ -0,0 +1,11 @@
export interface ECard {
text: string;
cost?: string;
name: string;
types: string[];
supertypes?: string[];
loyalty?: string;
subtypes?: string[];
pt?: string;
rarity: string;
}

57
genurls.ts Normal file
View File

@ -0,0 +1,57 @@
import { readFileSync } from "fs";
import { ECard } from "./encoded";
import { MDCard, getCardData } from "./mtgdesign";
function capitalize(str: string): string {
return str.toUpperCase().substr(0, 1) + str.substr(1);
}
interface CardInfo {
set: string;
total: number;
num: number;
}
function convertCard(data: ECard, info: CardInfo): MDCard {
const centered = false; // Center if not much text
let power = "";
let toughness = "";
if (data.pt) {
[power, toughness] = data.pt.split("/");
}
return {
"card-number": `${info.num}`,
"card-total": `${info.total}`,
"card-set": `${info.set}`,
language: "EN",
"card-title": data.name,
"mana-cost": data.cost ? data.cost : "",
"super-type": data.supertypes
? data.supertypes.map(capitalize).join(" ")
: "",
type: capitalize(data.types[0]),
"sub-type": data.subtypes ? data.subtypes.map(capitalize).join(" ") : "",
"text-size": "38",
rarity: data.rarity.toUpperCase()[0],
power,
toughness,
loyalty: data.loyalty ? data.loyalty : "",
centered,
"rules-text": data.text.replace(/@/gi, "~"),
"flavor-text": ""
};
}
export function readCardFile(input): ECard[] {
const lines = readFileSync(input)
.toString()
.split("\n");
return lines
.filter(x => x.trim().length > 0)
.map(line => JSON.parse(line.trim()));
}
export function toURL(data: ECard, info: CardInfo): string {
const mdcard = convertCard(data, info);
return getCardData(mdcard);
}

63
index.ts Normal file
View File

@ -0,0 +1,63 @@
import * as yargs from "yargs";
import { readCardFile, toURL } from "./genurls";
import { existsSync, readFileSync } from "fs";
yargs
.scriptName("mtgetk")
.usage("$0 <cmd> [args]")
.command(
"genurl",
"Generate card images",
yargs =>
yargs
.positional("input", {
type: "string",
alias: "i",
default: "in.json",
describe: "Input JSON file generated by decode.py"
})
.positional("cookie", {
type: "string",
alias: "c",
default: "cookie.txt",
describe:
"File contaning cookie data (required for requesting images)"
})
.positional("only-url", {
type: "boolean",
alias: "u",
default: false,
describe: "Only generate URLs"
}),
argv => {
let generateImages = !argv["only-url"];
let cookie = "";
if (generateImages) {
if (!existsSync(argv.cookie)) {
console.warn(
"Cookie file not specified or invalid, will generate URLs instead of images"
);
generateImages = false;
} else {
const cookieFile = readFileSync(argv.cookie);
cookie = cookieFile.toString();
}
} else {
console.warn("Not generating images");
}
const cards = readCardFile(argv.input);
console.log(`Loaded ${cards.length} cards`);
const urls = cards.map((c, i) =>
toURL(c, {
set: "RNG",
num: i,
total: cards.length
})
);
if (generateImages) {
//TODO
} else {
urls.forEach((u, i) => console.log(`${cards[i].name}:\n${u}\n`));
}
}
).argv;

244
mtgdesign.ts Normal file
View File

@ -0,0 +1,244 @@
export interface MDCard {
"card-number": string;
"card-total": string;
"card-set": string;
language: string;
"card-title": string;
"mana-cost": string;
"super-type": string;
type: string;
"sub-type": string;
"text-size": string;
rarity: string;
artist?: string;
power?: string;
toughness?: string;
loyalty?: string;
artwork?: string;
designer?: string;
"card-template"?: string;
"card-border"?: string;
"card-overlay"?: string;
"land-overlay"?: string;
watermark?: string;
"pt-color"?: string;
"card-layout"?: string;
"color-indicator"?: string;
"set-symbol"?: string;
centered?: boolean;
"large-size"?: boolean;
shiftrulestext?: boolean;
colorshifted?: boolean;
foil?: boolean;
lighten?: boolean;
"rules-text": string;
"flavor-text": string;
}
const urlbase = "https://mtg.design/render?";
export function getCardData(data: MDCard) {
var card = "";
var manaCost = data["mana-cost"]
.toUpperCase()
.replace(/([\d\w])\/([\d\w])/g, "<$1/$2>")
.replace(/(\d\d+)/g, "{$1}")
.replace(/(\w)(?!\/)/g, "{$1}")
.replace(/\{(\w)\}\>/g, "$1>")
.replace(/\{(\d)\}\{(\d)\}/g, "$1$2")
.replace(/\</g, "{")
.replace(/\>/g, "}");
var identity,
border,
frame,
color = 0;
if (/W/.test(manaCost)) color += 1;
if (/U/.test(manaCost)) color += 2;
if (/B/.test(manaCost)) color += 4;
if (/R/.test(manaCost)) color += 8;
if (/G/.test(manaCost)) color += 16;
switch (color) {
case 0:
border = "C";
frame = "C";
break;
case 1:
border = "W";
frame = "W";
break;
case 2:
border = "U";
frame = "U";
break;
case 4:
border = "B";
frame = "B";
break;
case 8:
border = "R";
frame = "R";
break;
case 16:
border = "G";
frame = "G";
break;
case 3:
border = "WU";
frame = "Gld";
if (/[WUBRG]\/[WUBRG]/.test(manaCost)) frame = border;
break;
case 5:
border = "WB";
frame = "Gld";
if (/[WUBRG]\/[WUBRG]/.test(manaCost)) frame = border;
break;
case 6:
border = "UB";
frame = "Gld";
if (/[WUBRG]\/[WUBRG]/.test(manaCost)) frame = border;
break;
case 9:
border = "RW";
frame = "Gld";
if (/[WUBRG]\/[WUBRG]/.test(manaCost)) frame = border;
break;
case 10:
border = "UR";
frame = "Gld";
if (/[WUBRG]\/[WUBRG]/.test(manaCost)) frame = border;
break;
case 12:
border = "BR";
frame = "Gld";
if (/[WUBRG]\/[WUBRG]/.test(manaCost)) frame = border;
break;
case 17:
border = "GW";
frame = "Gld";
if (/[WUBRG]\/[WUBRG]/.test(manaCost)) frame = border;
break;
case 18:
border = "GU";
frame = "Gld";
if (/[WUBRG]\/[WUBRG]/.test(manaCost)) frame = border;
break;
case 20:
border = "BG";
frame = "Gld";
if (/[WUBRG]\/[WUBRG]/.test(manaCost)) frame = border;
break;
case 24:
border = "RG";
frame = "Gld";
if (/[WUBRG]\/[WUBRG]/.test(manaCost)) frame = border;
break;
case 7:
case 11:
case 13:
case 14:
case 15:
case 19:
case 21:
case 22:
case 23:
case 25:
case 26:
case 27:
case 28:
case 29:
case 30:
case 31:
border = "Gld";
frame = "Gld";
}
var key = [
"card-number",
"card-total",
"card-set",
"language",
"card-title",
"mana-cost",
"super-type",
"type",
"sub-type",
"text-size",
"rarity",
"artist",
"power",
"toughness",
"loyalty",
"artwork",
"designer",
"card-template",
"card-border",
"card-overlay",
"land-overlay",
"watermark",
"pt-color",
"card-layout",
"color-indicator",
"set-symbol"
];
var toggle = [
"centered",
"large-size",
"shiftrulestext",
"colorshifted",
"foil",
"lighten"
];
for (var i = 0; i < key.length; i++) {
var value = data[key[i]];
if (value) {
card +=
"&" + key[i] + "=" + encodeURIComponent(value.replace(/\s+$/, ""));
}
}
for (var i = 0; i < toggle.length; i++) {
var value = data[toggle[i]] == true;
if (value) {
card += "&" + toggle[i] + "=true";
}
}
if (data.type == "Planeswalker") {
card += "&pw-size=" + data["pw-size"];
//TODO Proper pw
card +=
"&rules-text=" +
data["loyalty-ability-1"] +
": " +
encodeURIComponent(data["rules-text"] + " ");
/*
for (var i = 2; i <= $("#pw-size").val(); i++) {
card +=
"&pw-text" +
i +
"=" +
$("#loyalty-ability-" + i).val() +
": " +
encodeURIComponent($("#planeswalker-text-" + i).val() + " ");
}
*/
} else {
card += "&rules-text=" + encodeURIComponent(data["rules-text"]);
card += "&flavor-text=" + encodeURIComponent(data["flavor-text"]);
}
card +=
"&card-template=" +
encodeURIComponent(frame) +
"&card-accent=" +
encodeURIComponent(border);
card += "&edit=false";
return urlbase + card.substring(1);
}

16
package.json Normal file
View File

@ -0,0 +1,16 @@
{
"name": "mtgetk",
"version": "1.0.0",
"main": "index.js",
"license": "MIT",
"dependencies": {
"@types/node": "^12.7.3",
"@types/yargs": "^13.0.2",
"ts-node": "^8.3.0",
"typescript": "^3.6.2",
"yargs": "^14.0.0"
},
"scripts": {
"genurl": "ts-node index.ts genurl"
}
}

246
yarn.lock Normal file
View File

@ -0,0 +1,246 @@
# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
# yarn lockfile v1
"@types/node@^12.7.3":
version "12.7.3"
resolved "https://registry.yarnpkg.com/@types/node/-/node-12.7.3.tgz#27b3f40addaf2f580459fdb405222685542f907a"
integrity sha512-3SiLAIBkDWDg6vFo0+5YJyHPWU9uwu40Qe+v+0MH8wRKYBimHvvAOyk3EzMrD/TrIlLYfXrqDqrg913PynrMJQ==
"@types/yargs-parser@*":
version "13.0.0"
resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-13.0.0.tgz#453743c5bbf9f1bed61d959baab5b06be029b2d0"
integrity sha512-wBlsw+8n21e6eTd4yVv8YD/E3xq0O6nNnJIquutAsFGE7EyMKz7W6RNT6BRu1SmdgmlCZ9tb0X+j+D6HGr8pZw==
"@types/yargs@^13.0.2":
version "13.0.2"
resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-13.0.2.tgz#a64674fc0149574ecd90ba746e932b5a5f7b3653"
integrity sha512-lwwgizwk/bIIU+3ELORkyuOgDjCh7zuWDFqRtPPhhVgq9N1F7CvLNKg1TX4f2duwtKQ0p044Au9r1PLIXHrIzQ==
dependencies:
"@types/yargs-parser" "*"
ansi-regex@^4.1.0:
version "4.1.0"
resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997"
integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==
ansi-styles@^3.2.0:
version "3.2.1"
resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d"
integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==
dependencies:
color-convert "^1.9.0"
arg@^4.1.0:
version "4.1.1"
resolved "https://registry.yarnpkg.com/arg/-/arg-4.1.1.tgz#485f8e7c390ce4c5f78257dbea80d4be11feda4c"
integrity sha512-SlmP3fEA88MBv0PypnXZ8ZfJhwmDeIE3SP71j37AiXQBXYosPV0x6uISAaHYSlSVhmHOVkomen0tbGk6Anlebw==
buffer-from@^1.0.0:
version "1.1.1"
resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef"
integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==
camelcase@^5.0.0:
version "5.3.1"
resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320"
integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==
cliui@^5.0.0:
version "5.0.0"
resolved "https://registry.yarnpkg.com/cliui/-/cliui-5.0.0.tgz#deefcfdb2e800784aa34f46fa08e06851c7bbbc5"
integrity sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==
dependencies:
string-width "^3.1.0"
strip-ansi "^5.2.0"
wrap-ansi "^5.1.0"
color-convert@^1.9.0:
version "1.9.3"
resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8"
integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==
dependencies:
color-name "1.1.3"
color-name@1.1.3:
version "1.1.3"
resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25"
integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=
decamelize@^1.2.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290"
integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=
diff@^4.0.1:
version "4.0.1"
resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.1.tgz#0c667cb467ebbb5cea7f14f135cc2dba7780a8ff"
integrity sha512-s2+XdvhPCOF01LRQBC8hf4vhbVmI2CGS5aZnxLJlT5FtdhPCDFq80q++zK2KlrVorVDdL5BOGZ/VfLrVtYNF+Q==
emoji-regex@^7.0.1:
version "7.0.3"
resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156"
integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==
find-up@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73"
integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==
dependencies:
locate-path "^3.0.0"
get-caller-file@^2.0.1:
version "2.0.5"
resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e"
integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==
is-fullwidth-code-point@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f"
integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=
locate-path@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e"
integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==
dependencies:
p-locate "^3.0.0"
path-exists "^3.0.0"
make-error@^1.1.1:
version "1.3.5"
resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.5.tgz#efe4e81f6db28cadd605c70f29c831b58ef776c8"
integrity sha512-c3sIjNUow0+8swNwVpqoH4YCShKNFkMaw6oH1mNS2haDZQqkeZFlHS3dhoeEbKKmJB4vXpJucU6oH75aDYeE9g==
p-limit@^2.0.0:
version "2.2.1"
resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.2.1.tgz#aa07a788cc3151c939b5131f63570f0dd2009537"
integrity sha512-85Tk+90UCVWvbDavCLKPOLC9vvY8OwEX/RtKF+/1OADJMVlFfEHOiMTPVyxg7mk/dKa+ipdHm0OUkTvCpMTuwg==
dependencies:
p-try "^2.0.0"
p-locate@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4"
integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==
dependencies:
p-limit "^2.0.0"
p-try@^2.0.0:
version "2.2.0"
resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6"
integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==
path-exists@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515"
integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=
require-directory@^2.1.1:
version "2.1.1"
resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42"
integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I=
require-main-filename@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b"
integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==
set-blocking@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7"
integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc=
source-map-support@^0.5.6:
version "0.5.13"
resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.13.tgz#31b24a9c2e73c2de85066c0feb7d44767ed52932"
integrity sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==
dependencies:
buffer-from "^1.0.0"
source-map "^0.6.0"
source-map@^0.6.0:
version "0.6.1"
resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263"
integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==
string-width@^3.0.0, string-width@^3.1.0:
version "3.1.0"
resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961"
integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==
dependencies:
emoji-regex "^7.0.1"
is-fullwidth-code-point "^2.0.0"
strip-ansi "^5.1.0"
strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0:
version "5.2.0"
resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae"
integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==
dependencies:
ansi-regex "^4.1.0"
ts-node@^8.3.0:
version "8.3.0"
resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-8.3.0.tgz#e4059618411371924a1fb5f3b125915f324efb57"
integrity sha512-dyNS/RqyVTDcmNM4NIBAeDMpsAdaQ+ojdf0GOLqE6nwJOgzEkdRNzJywhDfwnuvB10oa6NLVG1rUJQCpRN7qoQ==
dependencies:
arg "^4.1.0"
diff "^4.0.1"
make-error "^1.1.1"
source-map-support "^0.5.6"
yn "^3.0.0"
typescript@^3.6.2:
version "3.6.2"
resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.6.2.tgz#105b0f1934119dde543ac8eb71af3a91009efe54"
integrity sha512-lmQ4L+J6mnu3xweP8+rOrUwzmN+MRAj7TgtJtDaXE5PMyX2kCrklhg3rvOsOIfNeAWMQWO2F1GPc1kMD2vLAfw==
which-module@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a"
integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=
wrap-ansi@^5.1.0:
version "5.1.0"
resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-5.1.0.tgz#1fd1f67235d5b6d0fee781056001bfb694c03b09"
integrity sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==
dependencies:
ansi-styles "^3.2.0"
string-width "^3.0.0"
strip-ansi "^5.0.0"
y18n@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b"
integrity sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==
yargs-parser@^13.1.1:
version "13.1.1"
resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.1.tgz#d26058532aa06d365fe091f6a1fc06b2f7e5eca0"
integrity sha512-oVAVsHz6uFrg3XQheFII8ESO2ssAf9luWuAd6Wexsu4F3OtIW0o8IribPXYrD4WC24LWtPrJlGy87y5udK+dxQ==
dependencies:
camelcase "^5.0.0"
decamelize "^1.2.0"
yargs@^14.0.0:
version "14.0.0"
resolved "https://registry.yarnpkg.com/yargs/-/yargs-14.0.0.tgz#ba4cacc802b3c0b3e36a9e791723763d57a85066"
integrity sha512-ssa5JuRjMeZEUjg7bEL99AwpitxU/zWGAGpdj0di41pOEmJti8NR6kyUIJBkR78DTYNPZOU08luUo0GTHuB+ow==
dependencies:
cliui "^5.0.0"
decamelize "^1.2.0"
find-up "^3.0.0"
get-caller-file "^2.0.1"
require-directory "^2.1.1"
require-main-filename "^2.0.0"
set-blocking "^2.0.0"
string-width "^3.0.0"
which-module "^2.0.0"
y18n "^4.0.0"
yargs-parser "^13.1.1"
yn@^3.0.0:
version "3.1.1"
resolved "https://registry.yarnpkg.com/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50"
integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==