diff --git a/packages/webamp-modern-2/.eslintignore b/packages/webamp-modern-2/.eslintignore new file mode 100644 index 00000000..d1638636 --- /dev/null +++ b/packages/webamp-modern-2/.eslintignore @@ -0,0 +1 @@ +build/ \ No newline at end of file diff --git a/packages/webamp-modern-2/.eslintrc.js b/packages/webamp-modern-2/.eslintrc.js new file mode 100644 index 00000000..3b7fd240 --- /dev/null +++ b/packages/webamp-modern-2/.eslintrc.js @@ -0,0 +1,13 @@ +const rulesDirPlugin = require("eslint-plugin-rulesdir"); +rulesDirPlugin.RULES_DIR = "tools/eslint-rules/dist"; + +module.exports = { + root: true, + parser: "@typescript-eslint/parser", + plugins: ["@typescript-eslint", "rulesdir"], + extends: [], + rules: { + eqeqeq: "off", + "rulesdir/proper-maki-types": "error", + }, +}; diff --git a/packages/webamp-modern-2/package.json b/packages/webamp-modern-2/package.json index a89a57d7..e7a4ed43 100644 --- a/packages/webamp-modern-2/package.json +++ b/packages/webamp-modern-2/package.json @@ -5,10 +5,20 @@ "license": "MIT", "scripts": { "start": "snowpack dev", - "build": "snowpack build" + "build": "snowpack build", + "lint": "yarn build-lint && eslint . --ext .js,.jsx,.ts,.tsx", + "build-lint": "tsup tools/eslint-rules/proper-maki-types.ts -d tools/eslint-rules/dist --no-splitting --minify" }, "devDependencies": { - "snowpack": "^3.5.5" + "@types/eslint": "^7.2.14", + "@types/estree": "^0.0.50", + "@typescript-eslint/eslint-plugin": "^4.28.2", + "@typescript-eslint/parser": "^4.28.2", + "eslint": "^7.30.0", + "eslint-plugin-rulesdir": "^0.2.0", + "snowpack": "^3.5.5", + "typescript": "^4.3.5", + "tsup": "^4.12.5" }, "prettier": {}, "dependencies": { diff --git a/packages/webamp-modern-2/src/UIRoot.ts b/packages/webamp-modern-2/src/UIRoot.ts index 77133995..13789df2 100644 --- a/packages/webamp-modern-2/src/UIRoot.ts +++ b/packages/webamp-modern-2/src/UIRoot.ts @@ -5,9 +5,9 @@ import { assert, assume } from "./utils"; import BitmapFont from "./skin/BitmapFont"; import Color from "./skin/Color"; import GammaGroup from "./skin/GammaGroup"; -import Container from "./skin/Container"; +import Container from "./skin/makiClasses/Container"; import Vm from "./skin/VM"; -import BaseObject from "./skin/BaseObject"; +import BaseObject from "./skin/makiClasses/BaseObject"; import AUDIO_PLAYER, { AudioPlayer } from "./skin/AudioPlayer"; export class UIRoot { diff --git a/packages/webamp-modern-2/src/maki/v.ts b/packages/webamp-modern-2/src/maki/v.ts index f9f24287..2088df34 100644 --- a/packages/webamp-modern-2/src/maki/v.ts +++ b/packages/webamp-modern-2/src/maki/v.ts @@ -1,4 +1,4 @@ -import BaseObject from "../skin/BaseObject"; +import BaseObject from "../skin/makiClasses/BaseObject"; export type Variable = | { diff --git a/packages/webamp-modern-2/src/skin/ColorThemesList.ts b/packages/webamp-modern-2/src/skin/ColorThemesList.ts index 15a70257..356164c5 100644 --- a/packages/webamp-modern-2/src/skin/ColorThemesList.ts +++ b/packages/webamp-modern-2/src/skin/ColorThemesList.ts @@ -1,4 +1,4 @@ -import GuiObj from "./GuiObj"; +import GuiObj from "./makiClasses/GuiObj"; import UI_ROOT from "../UIRoot"; import { removeAllChildNodes } from "../utils"; diff --git a/packages/webamp-modern-2/src/skin/VM.ts b/packages/webamp-modern-2/src/skin/VM.ts index bbe62fa9..073ddbf9 100644 --- a/packages/webamp-modern-2/src/skin/VM.ts +++ b/packages/webamp-modern-2/src/skin/VM.ts @@ -1,7 +1,7 @@ import { interpret } from "../maki/interpreter"; import { ParsedMaki } from "../maki/parser"; import { Variable } from "../maki/v"; -import BaseObject from "./BaseObject"; +import BaseObject from "./makiClasses/BaseObject"; import { classResolver } from "./resolver"; diff --git a/packages/webamp-modern-2/src/skin/XmlObj.ts b/packages/webamp-modern-2/src/skin/XmlObj.ts index 24f68b45..dc873e1b 100644 --- a/packages/webamp-modern-2/src/skin/XmlObj.ts +++ b/packages/webamp-modern-2/src/skin/XmlObj.ts @@ -1,4 +1,4 @@ -import BaseObject from "./BaseObject"; +import BaseObject from "./makiClasses/BaseObject"; export default class XmlObj extends BaseObject { setXmlAttributes(attributes: { [attrName: string]: string }) { diff --git a/packages/webamp-modern-2/src/skin/AnimatedLayer.ts b/packages/webamp-modern-2/src/skin/makiClasses/AnimatedLayer.ts similarity index 95% rename from packages/webamp-modern-2/src/skin/AnimatedLayer.ts rename to packages/webamp-modern-2/src/skin/makiClasses/AnimatedLayer.ts index 692fc14d..c75f14b2 100644 --- a/packages/webamp-modern-2/src/skin/AnimatedLayer.ts +++ b/packages/webamp-modern-2/src/skin/makiClasses/AnimatedLayer.ts @@ -1,8 +1,9 @@ -import UI_ROOT from "../UIRoot"; -import { ensureVmInt, px } from "../utils"; +import UI_ROOT from "../../UIRoot"; +import { ensureVmInt, px } from "../../utils"; import Layer from "./Layer"; export default class AnimatedLayer extends Layer { + static GUID = "6b64cd274c4b5a26a7e6598c3a49f60c"; _currentFrame: number = 0; _startFrame: number = 0; _endFrame: number = 0; diff --git a/packages/webamp-modern-2/src/skin/BaseObject.ts b/packages/webamp-modern-2/src/skin/makiClasses/BaseObject.ts similarity index 91% rename from packages/webamp-modern-2/src/skin/BaseObject.ts rename to packages/webamp-modern-2/src/skin/makiClasses/BaseObject.ts index d7e8401c..4d3e38f0 100644 --- a/packages/webamp-modern-2/src/skin/BaseObject.ts +++ b/packages/webamp-modern-2/src/skin/makiClasses/BaseObject.ts @@ -1,4 +1,4 @@ -import UI_ROOT from "../UIRoot"; +import UI_ROOT from "../../UIRoot"; /** * This is the base class from which all other classes inherit. diff --git a/packages/webamp-modern-2/src/skin/Button.ts b/packages/webamp-modern-2/src/skin/makiClasses/Button.ts similarity index 96% rename from packages/webamp-modern-2/src/skin/Button.ts rename to packages/webamp-modern-2/src/skin/makiClasses/Button.ts index 0bded5e6..8865e28f 100644 --- a/packages/webamp-modern-2/src/skin/Button.ts +++ b/packages/webamp-modern-2/src/skin/makiClasses/Button.ts @@ -1,9 +1,10 @@ import GuiObj from "./GuiObj"; -import UI_ROOT from "../UIRoot"; -import { V } from "../maki/v"; +import UI_ROOT from "../../UIRoot"; +import { V } from "../../maki/v"; // http://wiki.winamp.com/wiki/XML_GUI_Objects#.3Cbutton.2F.3E_.26_.3Ctogglebutton.2F.3E export default class Button extends GuiObj { + static GUID = "698eddcd4fec8f1e44f9129b45ff09f9"; _image: string; _downimage: string; _active: boolean = false; diff --git a/packages/webamp-modern-2/src/skin/Container.ts b/packages/webamp-modern-2/src/skin/makiClasses/Container.ts similarity index 95% rename from packages/webamp-modern-2/src/skin/Container.ts rename to packages/webamp-modern-2/src/skin/makiClasses/Container.ts index 78e90244..0a39d95b 100644 --- a/packages/webamp-modern-2/src/skin/Container.ts +++ b/packages/webamp-modern-2/src/skin/makiClasses/Container.ts @@ -1,7 +1,7 @@ -import UI_ROOT from "../UIRoot"; -import { assert, px, removeAllChildNodes, toBool } from "../utils"; +import UI_ROOT from "../../UIRoot"; +import { assert, px, removeAllChildNodes, toBool } from "../../utils"; import Layout from "./Layout"; -import XmlObj from "./XmlObj"; +import XmlObj from "../XmlObj"; // > A container is a top level object and it basically represents a window. // > Nothing holds a container. It is an object that holds multiple related @@ -10,6 +10,7 @@ import XmlObj from "./XmlObj"; // // -- http://wiki.winamp.com/wiki/Modern_Skin:_Container export default class Container extends XmlObj { + static GUID = "e90dc47b4ae7840d0b042cb0fcf775d2"; _layouts: Layout[] = []; _activeLayout: Layout | null = null; _defaultVisible: boolean = true; diff --git a/packages/webamp-modern-2/src/skin/Group.ts b/packages/webamp-modern-2/src/skin/makiClasses/Group.ts similarity index 96% rename from packages/webamp-modern-2/src/skin/Group.ts rename to packages/webamp-modern-2/src/skin/makiClasses/Group.ts index 037d49ff..682e580a 100644 --- a/packages/webamp-modern-2/src/skin/Group.ts +++ b/packages/webamp-modern-2/src/skin/makiClasses/Group.ts @@ -1,10 +1,11 @@ -import * as Utils from "../utils"; -import UI_ROOT from "../UIRoot"; +import * as Utils from "../../utils"; +import UI_ROOT from "../../UIRoot"; import GuiObj from "./GuiObj"; import SystemObject from "./SystemObject"; // http://wiki.winamp.com/wiki/XML_GUI_Objects#.3Cgroup.2F.3E export default class Group extends GuiObj { + static GUID = "45be95e5419120725fbb5c93fd17f1f9"; _parent: Group; _instanceId: string; _background: string; diff --git a/packages/webamp-modern-2/src/skin/GuiObj.ts b/packages/webamp-modern-2/src/skin/makiClasses/GuiObj.ts similarity index 98% rename from packages/webamp-modern-2/src/skin/GuiObj.ts rename to packages/webamp-modern-2/src/skin/makiClasses/GuiObj.ts index 66e608e8..dd12a81c 100644 --- a/packages/webamp-modern-2/src/skin/GuiObj.ts +++ b/packages/webamp-modern-2/src/skin/makiClasses/GuiObj.ts @@ -1,11 +1,12 @@ -import UI_ROOT from "../UIRoot"; -import { assert, num, toBool, px, assume } from "../utils"; -import Bitmap from "./Bitmap"; +import UI_ROOT from "../../UIRoot"; +import { assert, num, toBool, px, assume } from "../../utils"; +import Bitmap from "../Bitmap"; import Group from "./Group"; -import XmlObj from "./XmlObj"; +import XmlObj from "../XmlObj"; // http://wiki.winamp.com/wiki/XML_GUI_Objects#GuiObject_.28Global_params.29 export default class GuiObj extends XmlObj { + static GUID = "4ee3e1994becc636bc78cd97b028869c"; _parent: Group; _id: string; _width: number; diff --git a/packages/webamp-modern-2/src/skin/Layer.ts b/packages/webamp-modern-2/src/skin/makiClasses/Layer.ts similarity index 93% rename from packages/webamp-modern-2/src/skin/Layer.ts rename to packages/webamp-modern-2/src/skin/makiClasses/Layer.ts index cb80cc28..9b1ea842 100644 --- a/packages/webamp-modern-2/src/skin/Layer.ts +++ b/packages/webamp-modern-2/src/skin/makiClasses/Layer.ts @@ -1,8 +1,9 @@ import GuiObj from "./GuiObj"; -import UI_ROOT from "../UIRoot"; +import UI_ROOT from "../../UIRoot"; // http://wiki.winamp.com/wiki/XML_GUI_Objects#.3Clayer.2F.3E export default class Layer extends GuiObj { + static GUID = "5ab9fa1545579a7d5765c8aba97cc6a6"; _image: string; setXmlAttr(key: string, value: string): boolean { diff --git a/packages/webamp-modern-2/src/skin/Layout.ts b/packages/webamp-modern-2/src/skin/makiClasses/Layout.ts similarity index 94% rename from packages/webamp-modern-2/src/skin/Layout.ts rename to packages/webamp-modern-2/src/skin/makiClasses/Layout.ts index 2973682e..753e3ffb 100644 --- a/packages/webamp-modern-2/src/skin/Layout.ts +++ b/packages/webamp-modern-2/src/skin/makiClasses/Layout.ts @@ -1,5 +1,5 @@ import Group from "./Group"; -import * as Utils from "../utils"; +import * as Utils from "../../utils"; import Container from "./Container"; // > A layout is a special kind of group, which shown inside a container. Each @@ -11,6 +11,7 @@ import Container from "./Container"; // // -- http://wiki.winamp.com/wiki/Modern_Skin:_Container export default class Layout extends Group { + static GUID = "60906d4e482e537e94cc04b072568861"; _parentContainer: Container | null = null; setXmlAttr(key: string, value: string): boolean { diff --git a/packages/webamp-modern-2/src/skin/MakiMap.ts b/packages/webamp-modern-2/src/skin/makiClasses/MakiMap.ts similarity index 87% rename from packages/webamp-modern-2/src/skin/MakiMap.ts rename to packages/webamp-modern-2/src/skin/makiClasses/MakiMap.ts index e5f54bdb..f21c167e 100644 --- a/packages/webamp-modern-2/src/skin/MakiMap.ts +++ b/packages/webamp-modern-2/src/skin/makiClasses/MakiMap.ts @@ -1,9 +1,10 @@ -import UI_ROOT from "../UIRoot"; -import { assert, assume } from "../utils"; +import UI_ROOT from "../../UIRoot"; +import { assert, assume } from "../../utils"; import BaseObject from "./BaseObject"; -import Bitmap from "./Bitmap"; +import Bitmap from "../Bitmap"; export default class MakiMap extends BaseObject { + static GUID = "3860366542a7461b3fd875aa73bf6766"; _bitmap: Bitmap; loadmap(bitmapId: string) { this._bitmap = UI_ROOT.getBitmap(bitmapId); diff --git a/packages/webamp-modern-2/src/skin/PopupMenu.ts b/packages/webamp-modern-2/src/skin/makiClasses/PopupMenu.ts similarity index 95% rename from packages/webamp-modern-2/src/skin/PopupMenu.ts rename to packages/webamp-modern-2/src/skin/makiClasses/PopupMenu.ts index dc3c26dc..46b54389 100644 --- a/packages/webamp-modern-2/src/skin/PopupMenu.ts +++ b/packages/webamp-modern-2/src/skin/makiClasses/PopupMenu.ts @@ -1,5 +1,5 @@ import BaseObject from "./BaseObject"; -import { assume } from "../utils"; +import { assume } from "../../utils"; type MenuItem = | { @@ -12,6 +12,7 @@ type MenuItem = | { type: "separator" }; export default class PopupMenu extends BaseObject { + static GUID = "f4787af44ef7b2bb4be7fb9c8da8bea9"; _items: MenuItem[] = []; addcommand( cmdText: string, diff --git a/packages/webamp-modern-2/src/skin/Slider.ts b/packages/webamp-modern-2/src/skin/makiClasses/Slider.ts similarity index 97% rename from packages/webamp-modern-2/src/skin/Slider.ts rename to packages/webamp-modern-2/src/skin/makiClasses/Slider.ts index e9af93de..bc2ab212 100644 --- a/packages/webamp-modern-2/src/skin/Slider.ts +++ b/packages/webamp-modern-2/src/skin/makiClasses/Slider.ts @@ -1,9 +1,10 @@ -import UI_ROOT from "../UIRoot"; -import { assume, clamp, num, px } from "../utils"; +import UI_ROOT from "../../UIRoot"; +import { assume, clamp, num, px } from "../../utils"; import GuiObj from "./GuiObj"; // http://wiki.winamp.com/wiki/XML_GUI_Objects#.3Cslider.2F.3E_.26_.3CWasabi:HSlider.2F.3E_.26_.3CWasabi:VSlider.2F.3E export default class Slider extends GuiObj { + static GUID = "62b65e3f408d375e8176ea8d771bb94a"; _barLeft: string; _barMiddle: string; _barRight: string; diff --git a/packages/webamp-modern-2/src/skin/Status.ts b/packages/webamp-modern-2/src/skin/makiClasses/Status.ts similarity index 87% rename from packages/webamp-modern-2/src/skin/Status.ts rename to packages/webamp-modern-2/src/skin/makiClasses/Status.ts index 0fb9b18b..2526f666 100644 --- a/packages/webamp-modern-2/src/skin/Status.ts +++ b/packages/webamp-modern-2/src/skin/makiClasses/Status.ts @@ -3,6 +3,7 @@ import GuiObj from "./GuiObj"; // Maybe this? // http://wiki.winamp.com/wiki/XML_GUI_Objects#.3CWasabi:StandardFrame:Status.2F.3E export default class Status extends GuiObj { + static GUID = "0f08c9404b23af39c4b8f38059bb7e8f"; setXmlAttr(key: string, value: string): boolean { if (super.setXmlAttr(key, value)) { return true; diff --git a/packages/webamp-modern-2/src/skin/SystemObject.ts b/packages/webamp-modern-2/src/skin/makiClasses/SystemObject.ts similarity index 98% rename from packages/webamp-modern-2/src/skin/SystemObject.ts rename to packages/webamp-modern-2/src/skin/makiClasses/SystemObject.ts index 4dfe4278..4463b544 100644 --- a/packages/webamp-modern-2/src/skin/SystemObject.ts +++ b/packages/webamp-modern-2/src/skin/makiClasses/SystemObject.ts @@ -1,11 +1,11 @@ -import { getClass } from "../maki/objects"; -import { ParsedMaki } from "../maki/parser"; +import { getClass } from "../../maki/objects"; +import { ParsedMaki } from "../../maki/parser"; import BaseObject from "./BaseObject"; import Container from "./Container"; -import { clamp, integerToTime } from "../utils"; +import { clamp, integerToTime } from "../../utils"; import Group from "./Group"; -import PRIVATE_CONFIG from "./PrivateConfig"; -import UI_ROOT from "../UIRoot"; +import PRIVATE_CONFIG from "../PrivateConfig"; +import UI_ROOT from "../../UIRoot"; import GuiObj from "./GuiObj"; const MOUSE_POS = { x: 0, y: 0 }; @@ -17,6 +17,7 @@ document.addEventListener("mousemove", (e: MouseEvent) => { }); export default class SystemObject extends BaseObject { + static GUID = "d6f50f6449b793fa66baf193983eaeef"; _parentGroup: Group; _parsedScript: ParsedMaki; @@ -523,7 +524,7 @@ export default class SystemObject extends BaseObject { * @ret The new container. * @param container_id The identifier for the container you want to create. */ - newdynamiccontainer(container_id: string) { + newdynamiccontainer(container_id: string): Container { //TODO } @@ -534,7 +535,7 @@ export default class SystemObject extends BaseObject { * @ret The new group. * @param group_id The identifier for the group you want to create. */ - newgroup(group_id: string) { + newgroup(group_id: string): Group { //TODO } @@ -619,7 +620,7 @@ export default class SystemObject extends BaseObject { * * @ret The current volume. **/ - getvolume() { + getvolume(): number { return UI_ROOT.audio.getVolume() * 255; } diff --git a/packages/webamp-modern-2/src/skin/Text.ts b/packages/webamp-modern-2/src/skin/makiClasses/Text.ts similarity index 96% rename from packages/webamp-modern-2/src/skin/Text.ts rename to packages/webamp-modern-2/src/skin/makiClasses/Text.ts index 17a84d18..890d5768 100644 --- a/packages/webamp-modern-2/src/skin/Text.ts +++ b/packages/webamp-modern-2/src/skin/makiClasses/Text.ts @@ -1,11 +1,18 @@ import GuiObj from "./GuiObj"; -import UI_ROOT from "../UIRoot"; -import TrueTypeFont from "./TrueTypeFont"; -import BitmapFont from "./BitmapFont"; -import { integerToTime, removeAllChildNodes, num, px, toBool } from "../utils"; +import UI_ROOT from "../../UIRoot"; +import TrueTypeFont from "../TrueTypeFont"; +import BitmapFont from "../BitmapFont"; +import { + integerToTime, + removeAllChildNodes, + num, + px, + toBool, +} from "../../utils"; // http://wiki.winamp.com/wiki/XML_GUI_Objects#.3Ctext.2F.3E_.26_.3CWasabi:Text.2F.3E export default class Text extends GuiObj { + static GUID = "efaa867241fa310ea985dcb74bcb5b52"; _display: string; _displayValue: string = ""; _disposeDisplaySubscription: () => void | null = null; @@ -72,6 +79,7 @@ export default class Text extends GuiObj { case "timecolonwidth": // (int) How many extra pixels wider or smaller should the colon be when displaying time. Default is -1. this._timeColonWidth = num(value); + this._renderText(); /* antialias - (bool) Setting this flag causes the text to be rendered antialiased if possible. default - (str) A parameter alias for text. diff --git a/packages/webamp-modern-2/src/skin/Timer.ts b/packages/webamp-modern-2/src/skin/makiClasses/Timer.ts similarity index 86% rename from packages/webamp-modern-2/src/skin/Timer.ts rename to packages/webamp-modern-2/src/skin/makiClasses/Timer.ts index 52ac36b5..2dab2710 100644 --- a/packages/webamp-modern-2/src/skin/Timer.ts +++ b/packages/webamp-modern-2/src/skin/makiClasses/Timer.ts @@ -1,8 +1,9 @@ -import UI_ROOT from "../UIRoot"; -import { assume } from "../utils"; +import UI_ROOT from "../../UIRoot"; +import { assume } from "../../utils"; import BaseObject from "./BaseObject"; export default class Timer extends BaseObject { + static GUID = "5d0c5bb64b1f7de1168d0fa741199459"; _delay: number; _timeout: NodeJS.Timeout | null = null; setdelay(millisec: number) { diff --git a/packages/webamp-modern-2/src/skin/ToggleButton.ts b/packages/webamp-modern-2/src/skin/makiClasses/ToggleButton.ts similarity index 91% rename from packages/webamp-modern-2/src/skin/ToggleButton.ts rename to packages/webamp-modern-2/src/skin/makiClasses/ToggleButton.ts index ffec4f14..1525bfac 100644 --- a/packages/webamp-modern-2/src/skin/ToggleButton.ts +++ b/packages/webamp-modern-2/src/skin/makiClasses/ToggleButton.ts @@ -2,6 +2,7 @@ import Button from "./Button"; // http://wiki.winamp.com/wiki/XML_GUI_Objects#.3Cbutton.2F.3E_.26_.3Ctogglebutton.2F.3E export default class ToggleButton extends Button { + static GUID = "b4dccfff4bcc81fe0f721b96ff0fbed5"; setXmlAttr(key: string, value: string): boolean { if (super.setXmlAttr(key, value)) { return true; diff --git a/packages/webamp-modern-2/src/skin/Vis.ts b/packages/webamp-modern-2/src/skin/makiClasses/Vis.ts similarity index 83% rename from packages/webamp-modern-2/src/skin/Vis.ts rename to packages/webamp-modern-2/src/skin/makiClasses/Vis.ts index 9d4dc2de..33b690dd 100644 --- a/packages/webamp-modern-2/src/skin/Vis.ts +++ b/packages/webamp-modern-2/src/skin/makiClasses/Vis.ts @@ -1,6 +1,7 @@ import GuiObj from "./GuiObj"; export default class Vis extends GuiObj { + static GUID = "ce4f97be4e1977b098d45699276cc933"; setmode(mode: number) { // TODO } diff --git a/packages/webamp-modern-2/src/skin/parse.ts b/packages/webamp-modern-2/src/skin/parse.ts index 7c573b3d..6893e15e 100644 --- a/packages/webamp-modern-2/src/skin/parse.ts +++ b/packages/webamp-modern-2/src/skin/parse.ts @@ -3,21 +3,21 @@ import { assert, getCaseInsensitiveFile, assume } from "../utils"; import JSZip, { JSZipObject } from "jszip"; import Bitmap from "./Bitmap"; import ImageManager from "./ImageManager"; -import Layout from "./Layout"; -import Group from "./Group"; -import Container from "./Container"; -import Layer from "./Layer"; -import Slider from "./Slider"; -import Button from "./Button"; -import Text from "./Text"; -import Status from "./Status"; +import Layout from "./makiClasses/Layout"; +import Group from "./makiClasses/Group"; +import Container from "./makiClasses/Container"; +import Layer from "./makiClasses/Layer"; +import Slider from "./makiClasses/Slider"; +import Button from "./makiClasses/Button"; +import Text from "./makiClasses/Text"; +import Status from "./makiClasses/Status"; import { parse as parseMaki } from "../maki/parser"; -import SystemObject from "./SystemObject"; -import ToggleButton from "./ToggleButton"; +import SystemObject from "./makiClasses/SystemObject"; +import ToggleButton from "./makiClasses/ToggleButton"; import TrueTypeFont from "./TrueTypeFont"; -import GuiObj from "./GuiObj"; -import AnimatedLayer from "./AnimatedLayer"; -import Vis from "./Vis"; +import GuiObj from "./makiClasses/GuiObj"; +import AnimatedLayer from "./makiClasses/AnimatedLayer"; +import Vis from "./makiClasses/Vis"; import BitmapFont from "./BitmapFont"; import Color from "./Color"; import GammaGroup from "./GammaGroup"; diff --git a/packages/webamp-modern-2/src/skin/resolver.ts b/packages/webamp-modern-2/src/skin/resolver.ts index 0fe52902..c5afc68f 100644 --- a/packages/webamp-modern-2/src/skin/resolver.ts +++ b/packages/webamp-modern-2/src/skin/resolver.ts @@ -1,60 +1,56 @@ import { getClass } from "../maki/objects"; -import Button from "./Button"; -import SystemObject from "./SystemObject"; -import Container from "./Container"; -import Layout from "./Layout"; -import Layer from "./Layer"; -import AnimatedLayer from "./AnimatedLayer"; -import PopupMenu from "./PopupMenu"; -import ToggleButton from "./ToggleButton"; -import Status from "./Status"; -import Text from "./Text"; -import Group from "./Group"; -import MakiMap from "./MakiMap"; -import Timer from "./Timer"; -import Slider from "./Slider"; -import Vis from "./Vis"; -import GuiObj from "./GuiObj"; +import Button from "./makiClasses/Button"; +import SystemObject from "./makiClasses/SystemObject"; +import Container from "./makiClasses/Container"; +import Layout from "./makiClasses/Layout"; +import Layer from "./makiClasses/Layer"; +import AnimatedLayer from "./makiClasses/AnimatedLayer"; +import PopupMenu from "./makiClasses/PopupMenu"; +import ToggleButton from "./makiClasses/ToggleButton"; +import Status from "./makiClasses/Status"; +import Text from "./makiClasses/Text"; +import Group from "./makiClasses/Group"; +import MakiMap from "./makiClasses/MakiMap"; +import Timer from "./makiClasses/Timer"; +import Slider from "./makiClasses/Slider"; +import Vis from "./makiClasses/Vis"; +import GuiObj from "./makiClasses/GuiObj"; + +const CLASSES = [ + Button, + SystemObject, + Container, + Layout, + Layer, + AnimatedLayer, + PopupMenu, + ToggleButton, + Status, + Text, + Group, + MakiMap, + Timer, + Slider, + Vis, + GuiObj, +]; + +const GUID_MAP = {}; +for (const klass of CLASSES) { + if (klass.GUID == null) { + throw new Error("Expected GUID on class."); + } + GUID_MAP[klass.GUID] = klass; +} // TODO: We could write a test using the data in object.ts which confirms that // this is complete. export function classResolver(guid: string): any { - switch (guid) { - case "4ee3e1994becc636bc78cd97b028869c": - return GuiObj; - case "ce4f97be4e1977b098d45699276cc933": - return Vis; - case "62b65e3f408d375e8176ea8d771bb94a": - return Slider; - case "6b64cd274c4b5a26a7e6598c3a49f60c": - return AnimatedLayer; - case "5d0c5bb64b1f7de1168d0fa741199459": - return Timer; - case "3860366542a7461b3fd875aa73bf6766": - return MakiMap; - case "45be95e5419120725fbb5c93fd17f1f9": - return Group; - case "d6f50f6449b793fa66baf193983eaeef": - return SystemObject; - case "e90dc47b4ae7840d0b042cb0fcf775d2": - return Container; - case "60906d4e482e537e94cc04b072568861": - return Layout; - case "5ab9fa1545579a7d5765c8aba97cc6a6": - return Layer; - case "f4787af44ef7b2bb4be7fb9c8da8bea9": - return PopupMenu; - case "698eddcd4fec8f1e44f9129b45ff09f9": - return Button; - case "b4dccfff4bcc81fe0f721b96ff0fbed5": - return ToggleButton; - case "efaa867241fa310ea985dcb74bcb5b52": - return Text; - case "0f08c9404b23af39c4b8f38059bb7e8f": - return Status; - default: - throw new Error( - `Unresolvable class "${getClass(guid).name}" (guid: ${guid})` - ); + const klass = GUID_MAP[guid]; + if (klass == null) { + throw new Error( + `Unresolvable class "${getClass(guid).name}" (guid: ${guid})` + ); } + return klass; } diff --git a/packages/webamp-modern-2/tools/eslint-rules/dist/proper-maki-types.js b/packages/webamp-modern-2/tools/eslint-rules/dist/proper-maki-types.js new file mode 100644 index 00000000..66966130 --- /dev/null +++ b/packages/webamp-modern-2/tools/eslint-rules/dist/proper-maki-types.js @@ -0,0 +1 @@ +var N=Object.create;var o=Object.defineProperty;var W=Object.getOwnPropertyDescriptor;var V=Object.getOwnPropertyNames,F=Object.getOwnPropertySymbols,H=Object.getPrototypeOf,w=Object.prototype.hasOwnProperty,z=Object.prototype.propertyIsEnumerable;var E=(e,r,a)=>r in e?o(e,r,{enumerable:!0,configurable:!0,writable:!0,value:a}):e[r]=a,p=(e,r)=>{for(var a in r||(r={}))w.call(r,a)&&E(e,a,r[a]);if(F)for(var a of F(r))z.call(r,a)&&E(e,a,r[a]);return e};var U=e=>o(e,"__esModule",{value:!0});var $=(e,r,a)=>{if(r&&typeof r=="object"||typeof r=="function")for(let n of V(r))!w.call(e,n)&&n!=="default"&&o(e,n,{get:()=>r[n],enumerable:!(a=W(r,n))||a.enumerable});return e},q=e=>$(U(o(e!=null?N(H(e)):{},"default",e&&e.__esModule&&"default"in e?{get:()=>e.default,enumerable:!0}:{value:e,enumerable:!0})),e);var X={parent:"@{00000000-0000-0000-0000-000000000000}@",functions:[{result:"String",name:"getClassName",parameters:[]},{result:"String",name:"getId",parameters:[]},{result:"Int",name:"onNotify",parameters:[["String","command"],["String","param"],["int","a"],["int","b"]]}],name:"Object"},Y={parent:"Object",functions:[{result:"",name:"onScriptLoaded",parameters:[]},{result:"",name:"onScriptUnloading",parameters:[]},{result:"",name:"onQuit",parameters:[]},{result:"",name:"onSetXuiParam",parameters:[["String","param"],["String","value"]]},{result:"",name:"onKeyDown",parameters:[["String","key"]]},{result:"",name:"onAccelerator",parameters:[["String","action"],["String","section"],["String","key"]]},{result:"",name:"onCreateLayout",parameters:[["Layout","_layout"]]},{result:"",name:"onShowLayout",parameters:[["Layout","_layout"]]},{result:"",name:"onHideLayout",parameters:[["Layout","_layout"]]},{result:"",name:"onViewPortChanged",parameters:[["int","width"],["int","height"]]},{result:"",name:"onStop",parameters:[]},{result:"",name:"onPlay",parameters:[]},{result:"",name:"onPause",parameters:[]},{result:"",name:"onResume",parameters:[]},{result:"",name:"onTitleChange",parameters:[["String","newtitle"]]},{result:"",name:"onTitle2Change",parameters:[["String","newtitle2"]]},{result:"",name:"onUrlChange",parameters:[["String","url"]]},{result:"",name:"onInfoChange",parameters:[["String","info"]]},{result:"",name:"onStatusMsg",parameters:[["String","msg"]]},{result:"",name:"onEqBandChanged",parameters:[["int","band"],["int","newvalue"]]},{result:"",name:"onEqPreampChanged",parameters:[["int","newvalue"]]},{result:"",name:"onEqChanged",parameters:[["int","newstatus"]]},{result:"",name:"onEqFreqChanged",parameters:[["int","isiso"]]},{result:"",name:"onVolumeChanged",parameters:[["int","newvol"]]},{result:"",name:"onSeek",parameters:[["int","newpos"]]},{result:"Container",name:"getContainer",parameters:[["String","container_id"]]},{result:"Container",name:"newDynamicContainer",parameters:[["String","container_id"]]},{result:"Group",name:"newGroup",parameters:[["String","group_id"]]},{result:"Layout",name:"newGroupAsLayout",parameters:[["String","group_id"]]},{result:"Int",name:"getNumContainers",parameters:[]},{result:"Container",name:"enumContainer",parameters:[["Int","num"]]},{result:"String",name:"enumEmbedGUID",parameters:[["int","num"]]},{result:"Wac",name:"getWac",parameters:[["String","wac_guid"]]},{result:"Int",name:"messageBox",parameters:[["String","message"],["String","msgtitle"],["Int","flag"],["String","notanymore_id"]]},{result:"String",name:"getPlayItemString",parameters:[]},{result:"Int",name:"getPlayItemLength",parameters:[]},{result:"String",name:"getPlayItemMetaDataString",parameters:[["String","metadataname"]]},{result:"String",name:"getMetaDataString",parameters:[["String","filename"],["String","metadataname"]]},{result:"String",name:"getPlayItemDisplayTitle",parameters:[]},{result:"Int",name:"getCurrentTrackRating",parameters:[]},{result:"",name:"onCurrentTrackRated",parameters:[["int","rating"]]},{result:"",name:"setCurrentTrackRating",parameters:[["int","rating"]]},{result:"String",name:"getExtFamily",parameters:[["String","ext"]]},{result:"String",name:"getDecoderName",parameters:[["string","playitem"]]},{result:"",name:"playFile",parameters:[["String","playitem"]]},{result:"Int",name:"getAlbumArt",parameters:[["String","playitem"]]},{result:"",name:"downloadMedia",parameters:[["String","url"],["String","destinationPath"],["boolean","wantAddToML"],["boolean","notifyDownloadsList"]]},{result:"",name:"downloadURL",parameters:[["String","url"],["String","destination_filename"],["String","progress_dialog_title"]]},{result:"",name:"onDownloadFinished",parameters:[["String","url"],["boolean","success"],["String","filename"]]},{result:"String",name:"getDownloadPath",parameters:[]},{result:"",name:"setDownloadPath",parameters:[["String","new_path"]]},{result:"",name:"enqueueFile",parameters:[["String","playitem"]]},{result:"Int",name:"getLeftVuMeter",parameters:[]},{result:"Int",name:"getRightVuMeter",parameters:[]},{result:"Int",name:"getVolume",parameters:[]},{result:"",name:"setVolume",parameters:[["Int","vol"]]},{result:"",name:"play",parameters:[]},{result:"",name:"stop",parameters:[]},{result:"",name:"pause",parameters:[]},{result:"",name:"next",parameters:[]},{result:"",name:"previous",parameters:[]},{result:"",name:"eject",parameters:[]},{result:"",name:"seekTo",parameters:[["Int","pos"]]},{result:"Int",name:"getPosition",parameters:[]},{result:"",name:"setEqBand",parameters:[["int","band"],["Int","value"]]},{result:"",name:"setEqPreamp",parameters:[["Int","value"]]},{result:"",name:"setEq",parameters:[["Int","onoff"]]},{result:"Int",name:"getEqBand",parameters:[["int","band"]]},{result:"int",name:"getEqPreamp",parameters:[]},{result:"int",name:"getEq",parameters:[]},{result:"int",name:"getMousePosX",parameters:[]},{result:"int",name:"getMousePosY",parameters:[]},{result:"String",name:"integerToString",parameters:[["Int","value"]]},{result:"Int",name:"StringToInteger",parameters:[["String","str"]]},{result:"String",name:"floatToString",parameters:[["float","value"],["int","ndigits"]]},{result:"Float",name:"stringToFloat",parameters:[["String","str"]]},{result:"String",name:"integerToLongTime",parameters:[["Int","value"]]},{result:"String",name:"integerToTime",parameters:[["Int","value"]]},{result:"String",name:"dateToTime",parameters:[["Int","datetime"]]},{result:"String",name:"dateToLongTime",parameters:[["Int","datetime"]]},{result:"String",name:"formatDate",parameters:[["Int","datetime"]]},{result:"String",name:"formatLongDate",parameters:[["Int","datetime"]]},{result:"Int",name:"getDateYear",parameters:[["Int","datetime"]]},{result:"Int",name:"getDateMonth",parameters:[["Int","datetime"]]},{result:"Int",name:"getDateDay",parameters:[["Int","datetime"]]},{result:"Int",name:"getDateDow",parameters:[["Int","datetime"]]},{result:"Int",name:"getDateDoy",parameters:[["Int","datetime"]]},{result:"Int",name:"getDateHour",parameters:[["Int","datetime"]]},{result:"Int",name:"getDateMin",parameters:[["Int","datetime"]]},{result:"Int",name:"getDateSec",parameters:[["Int","datetime"]]},{result:"Int",name:"getDateDst",parameters:[["Int","datetime"]]},{result:"Int",name:"getDate",parameters:[]},{result:"String",name:"strmid",parameters:[["String","str"],["Int","start"],["Int","len"]]},{result:"String",name:"strleft",parameters:[["string","str"],["int","nchars"]]},{result:"string",name:"strright",parameters:[["string","str"],["int","nchars"]]},{result:"int",name:"strsearch",parameters:[["string","str"],["string","substr"]]},{result:"int",name:"strlen",parameters:[["string","str"]]},{result:"string",name:"strupper",parameters:[["string","str"]]},{result:"string",name:"strlower",parameters:[["string","str"]]},{result:"string",name:"urlEncode",parameters:[["string","url"]]},{result:"string",name:"urlDecode",parameters:[["string","url"]]},{result:"string",name:"parseATF",parameters:[["string","topass"]]},{result:"string",name:"removePath",parameters:[["string","str"]]},{result:"string",name:"getPath",parameters:[["string","str"]]},{result:"string",name:"getExtension",parameters:[["string","str"]]},{result:"string",name:"getToken",parameters:[["string","str"],["string","separator"],["int","tokennum"]]},{result:"double",name:"sin",parameters:[["double","value"]]},{result:"double",name:"cos",parameters:[["double","value"]]},{result:"double",name:"tan",parameters:[["double","value"]]},{result:"double",name:"asin",parameters:[["double","value"]]},{result:"double",name:"acos",parameters:[["double","value"]]},{result:"double",name:"atan",parameters:[["double","value"]]},{result:"double",name:"atan2",parameters:[["double","y"],["double","x"]]},{result:"double",name:"pow",parameters:[["double","value"],["double","pvalue"]]},{result:"double",name:"sqr",parameters:[["double","value"]]},{result:"double",name:"log10",parameters:[["double","value"]]},{result:"double",name:"ln",parameters:[["double","value"]]},{result:"double",name:"sqrt",parameters:[["double","value"]]},{result:"int",name:"random",parameters:[["int","max"]]},{result:"",name:"setPrivateString",parameters:[["string","section"],["string","item"],["string","value"]]},{result:"",name:"setPrivateInt",parameters:[["string","section"],["string","item"],["int","value"]]},{result:"String",name:"getPrivateString",parameters:[["String","section"],["String","item"],["String","defvalue"]]},{result:"Int",name:"getPrivateInt",parameters:[["String","section"],["String","item"],["Int","defvalue"]]},{result:"",name:"setPublicString",parameters:[["String","item"],["String","value"]]},{result:"",name:"setPublicInt",parameters:[["String","item"],["Int","value"]]},{result:"String",name:"getPublicString",parameters:[["String","item"],["String","defvalue"]]},{result:"Int",name:"getPublicInt",parameters:[["String","item"],["Int","defvalue"]]},{result:"String",name:"getParam",parameters:[]},{result:"Group",name:"getScriptGroup",parameters:[]},{result:"Int",name:"getViewportWidth",parameters:[]},{result:"Int",name:"getViewportWidthFromGuiObject",parameters:[["GuiObject","g"]]},{result:"Int",name:"getViewportWidthFromPoint",parameters:[["int","x"],["int","y"]]},{result:"Int",name:"getMonitorWidth",parameters:[]},{result:"Int",name:"getMonitorWidthFromPoint",parameters:[["int","x"],["int","y"]]},{result:"Int",name:"getMonitorWidthFromGuiObject",parameters:[["GuiObject","g"]]},{result:"",name:"onMouseMove",parameters:[["int","x"],["int","y"]]},{result:"Int",name:"getViewportHeight",parameters:[]},{result:"Int",name:"getViewportHeightFromGuiObject",parameters:[["GuiObject","g"]]},{result:"Int",name:"getViewportHeightFromPoint",parameters:[["int","x"],["int","y"]]},{result:"Int",name:"getMonitorHeight",parameters:[]},{result:"Int",name:"getMonitorHeightFromPoint",parameters:[["int","x"],["int","y"]]},{result:"Int",name:"getMonitorHeightFromGuiObject",parameters:[["GuiObject","g"]]},{result:"Int",name:"getMonitorLeft",parameters:[]},{result:"Int",name:"getMonitorLeftFromGuiObject",parameters:[["GuiObject","g"]]},{result:"Int",name:"getMonitorLeftFromPoint",parameters:[["int","x"],["int","y"]]},{result:"Int",name:"getMonitorTop",parameters:[]},{result:"Int",name:"getMonitorTopFromGuiObject",parameters:[["GuiObject","g"]]},{result:"Int",name:"getMonitorTopFromPoint",parameters:[["int","x"],["int","y"]]},{result:"Int",name:"getViewportLeft",parameters:[]},{result:"Int",name:"getViewportLeftFromGuiObject",parameters:[["GuiObject","g"]]},{result:"Int",name:"getViewportLeftFromPoint",parameters:[["int","x"],["int","y"]]},{result:"Int",name:"getViewportTop",parameters:[]},{result:"Int",name:"getViewportTopFromGuiObject",parameters:[["GuiObject","g"]]},{result:"Int",name:"getViewportTopFromPoint",parameters:[["int","x"],["int","y"]]},{result:"",name:"debugString",parameters:[["String","str"],["Int","severity"]]},{result:"",name:"ddeSend",parameters:[["String","application"],["String","command"],["Int","mininterval"]]},{result:"WindowHolder",name:"onLookForComponent",parameters:[["String","guid"]]},{result:"Int",name:"getCurAppLeft",parameters:[]},{result:"Int",name:"getCurAppTop",parameters:[]},{result:"Int",name:"getCurAppWidth",parameters:[]},{result:"Int",name:"getCurAppHeight",parameters:[]},{result:"Boolean",name:"isAppActive",parameters:[]},{result:"String",name:"getSkinName",parameters:[]},{result:"",name:"switchSkin",parameters:[["String","skinname"]]},{result:"Int",name:"isLoadingSkin",parameters:[]},{result:"",name:"lockUI",parameters:[]},{result:"",name:"unlockUI",parameters:[]},{result:"Browser",name:"getMainBrowser",parameters:[]},{result:"",name:"popMainBrowser",parameters:[]},{result:"",name:"navigateUrl",parameters:[["String","url"]]},{result:"",name:"navigateUrlBrowser",parameters:[["String","url"]]},{result:"Boolean",name:"onOpenURL",parameters:[["string","url"]]},{result:"Boolean",name:"isObjectValid",parameters:[["Object","o"]]},{result:"Int",name:"integer",parameters:[["Double","d"]]},{result:"Double",name:"frac",parameters:[["Double","d"]]},{result:"Int",name:"getTimeOfDay",parameters:[]},{result:"",name:"setMenuTransparency",parameters:[["int","alphavalue"]]},{result:"Boolean",name:"onGetCancelComponent",parameters:[["String","guid"],["boolean","goingvisible"]]},{result:"Int",name:"getStatus",parameters:[]},{result:"Int",name:"isKeyDown",parameters:[["int","vk_code"]]},{result:"",name:"setClipboardText",parameters:[["String","_text"]]},{result:"String",name:"Chr",parameters:[["Int","charnum"]]},{result:"String",name:"translate",parameters:[["String","str"]]},{result:"String",name:"getString",parameters:[["String","table"],["int","id"]]},{result:"String",name:"getLanguageId",parameters:[]},{result:"String",name:"selectFile",parameters:[["String","extlist"],["String","id"],["String","prev_filename"]]},{result:"String",name:"selectFolder",parameters:[["String","wnd_title"],["String","wnd_info"],["String","default_path"]]},{result:"",name:"systemMenu",parameters:[]},{result:"",name:"windowMenu",parameters:[]},{result:"",name:"triggerAction",parameters:[["GuiObject","context"],["String","actionname"],["String","actionparam"]]},{result:"GuiObject",name:"showWindow",parameters:[["String","guidorgroupid"],["String","preferedcontainer"],["Boolean","transient"]]},{result:"",name:"hideWindow",parameters:[["GuiObject","hw"]]},{result:"",name:"hideNamedWindow",parameters:[["String","guidorgroup"]]},{result:"Boolean",name:"isNamedWindowVisible",parameters:[["String","guidorgroup"]]},{result:"",name:"setAtom",parameters:[["String","atomname"],["Object","object"]]},{result:"Object",name:"getAtom",parameters:[["String","atomname"]]},{result:"",name:"invokeDebugger",parameters:[]},{result:"int",name:"hasVideoSupport",parameters:[]},{result:"Int",name:"isVideo",parameters:[]},{result:"Int",name:"isVideoFullscreen",parameters:[]},{result:"Int",name:"getIdealVideoWidth",parameters:[]},{result:"Int",name:"getIdealVideoHeight",parameters:[]},{result:"Int",name:"isMinimized",parameters:[]},{result:"",name:"minimizeApplication",parameters:[]},{result:"",name:"restoreApplication",parameters:[]},{result:"",name:"activateApplication",parameters:[]},{result:"Int",name:"getPlaylistLength",parameters:[]},{result:"Int",name:"getPlaylistIndex",parameters:[]},{result:"",name:"clearPlaylist",parameters:[]},{result:"Boolean",name:"isDesktopAlphaAvailable",parameters:[]},{result:"Boolean",name:"isTransparencyAvailable",parameters:[]},{result:"Int",name:"onShowNotification",parameters:[]},{result:"String",name:"getSongInfoText",parameters:[]},{result:"String",name:"getSongInfoTextTranslated",parameters:[]},{result:"Int",name:"getVisBand",parameters:[["int","channel"],["int","band"]]},{result:"Double",name:"getRuntimeVersion",parameters:[]},{result:"Int",name:"isWa2ComponentVisible",parameters:[["String","guid"]]},{result:"",name:"hideWa2Component",parameters:[["String","guid"]]},{result:"boolean",name:"isProVersion",parameters:[]},{result:"String",name:"getWinampVersion",parameters:[]},{result:"Int",name:"getBuildNumber",parameters:[]},{result:"int",name:"getFileSize",parameters:[["String","fullfilename"]]}],name:"System"},K={parent:"Object",functions:[{result:"",name:"onSwitchToLayout",parameters:[["Layout","newlayout"]]},{result:"",name:"onBeforeSwitchToLayout",parameters:[["Layout","oldlayout"],["Layout","newlayout"]]},{result:"",name:"setXmlParam",parameters:[["String","param"],["String","value"]]},{result:"",name:"onHideLayout",parameters:[["Layout","_layout"]]},{result:"",name:"onShowLayout",parameters:[["Layout","_layout"]]},{result:"Layout",name:"getLayout",parameters:[["String","layout_id"]]},{result:"Int",name:"getNumLayouts",parameters:[]},{result:"Layout",name:"enumLayout",parameters:[["Int","num"]]},{result:"",name:"switchToLayout",parameters:[["String","layout_id"]]},{result:"",name:"show",parameters:[]},{result:"",name:"hide",parameters:[]},{result:"",name:"close",parameters:[]},{result:"",name:"toggle",parameters:[]},{result:"Int",name:"isDynamic",parameters:[]},{result:"",name:"setName",parameters:[["String","name"]]},{result:"String",name:"getName",parameters:[]},{result:"String",name:"getGuid",parameters:[]},{result:"Layout",name:"getCurLayout",parameters:[]},{result:"",name:"onAddContent",parameters:[["GuiObject","wnd"],["String","id"],["String","guid"]]}],name:"Container"},J={parent:"Object",functions:[{result:"String",name:"getGuid",parameters:[]},{result:"String",name:"getName",parameters:[]},{result:"Int",name:"sendCommand",parameters:[["String","cmd"],["Int","param1"],["Int","param2"],["String","param3"]]},{result:"",name:"show",parameters:[]},{result:"",name:"hide",parameters:[]},{result:"Boolean",name:"isVisible",parameters:[]},{result:"",name:"onNotify",parameters:[["String","notifstr"],["Int","a"],["Int","b"]]},{result:"",name:"onShow",parameters:[]},{result:"",name:"onHide",parameters:[]},{result:"",name:"setStatusBar",parameters:[["Boolean","onoff"]]},{result:"Boolean",name:"getStatusBar",parameters:[]}],name:"Wac"},Z={parent:"Object",functions:[{result:"",name:"addItem",parameters:[["Any","_object"]]},{result:"",name:"removeItem",parameters:[["int","pos"]]},{result:"Any",name:"enumItem",parameters:[["int","pos"]]},{result:"Int",name:"findItem",parameters:[["Any","_object"]]},{result:"Int",name:"findItem2",parameters:[["Any","_object"],["int","startItem"]]},{result:"int",name:"getNumItems",parameters:[]},{result:"",name:"removeAll",parameters:[]}],name:"List"},Q={parent:"Object",functions:[{result:"boolean",name:"getItem",parameters:[["int","n"]]},{result:"",name:"setItem",parameters:[["int","n"],["boolean","val"]]},{result:"",name:"setSize",parameters:[["int","s"]]},{result:"int",name:"getSize",parameters:[]}],name:"BitList"},ee={parent:"Object",functions:[{result:"Int",name:"getValue",parameters:[["int","x"],["int","y"]]},{result:"Int",name:"getARGBValue",parameters:[["int","x"],["int","y"],["int","channel"]]},{result:"Boolean",name:"inRegion",parameters:[["int","x"],["int","y"]]},{result:"",name:"loadMap",parameters:[["String","bitmapid"]]},{result:"Int",name:"getWidth",parameters:[]},{result:"Int",name:"getHeight",parameters:[]},{result:"Region",name:"getRegion",parameters:[]}],name:"Map"},te={parent:"Object",functions:[{result:"",name:"addSubMenu",parameters:[["PopupMenu","submenu"],["String","submenutext"]]},{result:"",name:"addCommand",parameters:[["String","cmdtxt"],["Int","cmd_id"],["Boolean","checked"],["Boolean","disabled"]]},{result:"",name:"addSeparator",parameters:[]},{result:"Int",name:"popAtXY",parameters:[["int","x"],["int","y"]]},{result:"Int",name:"popAtMouse",parameters:[]},{result:"Int",name:"getNumCommands",parameters:[]},{result:"",name:"checkCommand",parameters:[["int","cmd_id"],["boolean","check"]]},{result:"",name:"disableCommand",parameters:[["int","cmd_id"],["boolean","disable"]]}],name:"PopupMenu"},re={parent:"Object",functions:[{result:"",name:"add",parameters:[["Region","reg"]]},{result:"",name:"sub",parameters:[["Region","reg"]]},{result:"",name:"offset",parameters:[["int","x"],["int","y"]]},{result:"",name:"stretch",parameters:[["double","r"]]},{result:"",name:"copy",parameters:[["Region","reg"]]},{result:"",name:"loadFromMap",parameters:[["Map","regionmap"],["Int","threshold"],["Boolean","reversed"]]},{result:"",name:"loadFromBitmap",parameters:[["String","bitmapid"]]},{result:"Int",name:"getBoundingBoxX",parameters:[]},{result:"Int",name:"getBoundingBoxY",parameters:[]},{result:"Int",name:"getBoundingBoxW",parameters:[]},{result:"Int",name:"getBoundingBoxH",parameters:[]}],name:"Region"},ae={parent:"Object",functions:[{result:"",name:"onTimer",parameters:[]},{result:"",name:"setDelay",parameters:[["int","millisec"]]},{result:"Int",name:"getDelay",parameters:[]},{result:"",name:"start",parameters:[]},{result:"",name:"stop",parameters:[]},{result:"",name:"isRunning",parameters:[]},{result:"Int",name:"getSkipped",parameters:[]}],name:"Timer"},ne={parent:"Object",functions:[{result:"Int",name:"setFeed",parameters:[["String","feed_id"]]},{result:"",name:"releaseFeed",parameters:[]},{result:"",name:"onFeedChange",parameters:[["String","new_feeddata"]]}],name:"FeedWatcher"},se={parent:"Object",functions:[{result:"",name:"show",parameters:[]},{result:"",name:"hide",parameters:[]},{result:"int",name:"isVisible",parameters:[]},{result:"",name:"onSetVisible",parameters:[["Boolean","onoff"]]},{result:"",name:"setAlpha",parameters:[["int","alpha"]]},{result:"int",name:"getAlpha",parameters:[]},{result:"",name:"onLeftButtonUp",parameters:[["int","x"],["int","y"]]},{result:"",name:"onLeftButtonDown",parameters:[["int","x"],["int","y"]]},{result:"",name:"onRightButtonUp",parameters:[["int","x"],["int","y"]]},{result:"",name:"onRightButtonDown",parameters:[["int","x"],["int","y"]]},{result:"",name:"onRightButtonDblClk",parameters:[["int","x"],["int","y"]]},{result:"",name:"onLeftButtonDblClk",parameters:[["int","x"],["int","y"]]},{result:"int",name:"onMouseWheelUp",parameters:[["int","clicked"],["int","lines"]]},{result:"int",name:"onMouseWheelDown",parameters:[["int","clicked"],["int","lines"]]},{result:"",name:"onMouseMove",parameters:[["int","x"],["int","y"]]},{result:"",name:"onEnterArea",parameters:[]},{result:"",name:"onLeaveArea",parameters:[]},{result:"",name:"setEnabled",parameters:[["boolean","onoff"]]},{result:"boolean",name:"getEnabled",parameters:[]},{result:"",name:"onEnable",parameters:[["boolean","onoff"]]},{result:"",name:"resize",parameters:[["int","x"],["int","y"],["int","w"],["int","h"]]},{result:"",name:"onResize",parameters:[["int","x"],["int","y"],["int","w"],["int","h"]]},{result:"boolean",name:"isMouseOver",parameters:[["int","x"],["int","y"]]},{result:"int",name:"getLeft",parameters:[]},{result:"int",name:"getTop",parameters:[]},{result:"int",name:"getWidth",parameters:[]},{result:"int",name:"getHeight",parameters:[]},{result:"",name:"setTargetX",parameters:[["int","x"]]},{result:"",name:"setTargetY",parameters:[["int","y"]]},{result:"",name:"setTargetW",parameters:[["int","w"]]},{result:"",name:"setTargetH",parameters:[["int","r"]]},{result:"",name:"setTargetA",parameters:[["int","alpha"]]},{result:"",name:"setTargetSpeed",parameters:[["float","insecond"]]},{result:"",name:"gotoTarget",parameters:[]},{result:"",name:"onTargetReached",parameters:[]},{result:"",name:"cancelTarget",parameters:[]},{result:"",name:"reverseTarget",parameters:[["int","reverse"]]},{result:"",name:"onStartup",parameters:[]},{result:"boolean",name:"isGoingToTarget",parameters:[]},{result:"",name:"setXmlParam",parameters:[["String","param"],["String","value"]]},{result:"String",name:"getXmlParam",parameters:[["String","param"]]},{result:"",name:"init",parameters:[["Group","parent"]]},{result:"",name:"bringToFront",parameters:[]},{result:"",name:"bringToBack",parameters:[]},{result:"",name:"bringAbove",parameters:[["GuiObject","guiobj"]]},{result:"",name:"bringBelow",parameters:[["GuiObject","guiobj"]]},{result:"Int",name:"getGuiX",parameters:[]},{result:"Int",name:"getGuiY",parameters:[]},{result:"Int",name:"getGuiW",parameters:[]},{result:"Int",name:"getGuiH",parameters:[]},{result:"Int",name:"getGuiRelatX",parameters:[]},{result:"Int",name:"getGuiRelatY",parameters:[]},{result:"Int",name:"getGuiRelatW",parameters:[]},{result:"Int",name:"getGuiRelatH",parameters:[]},{result:"Boolean",name:"isActive",parameters:[]},{result:"GuiObject",name:"getParent",parameters:[]},{result:"Layout",name:"getParentLayout",parameters:[]},{result:"GuiObject",name:"getTopParent",parameters:[]},{result:"int",name:"runModal",parameters:[]},{result:"",name:"endModal",parameters:[["int","retcode"]]},{result:"GuiObject",name:"findObject",parameters:[["String","id"]]},{result:"GuiObject",name:"findObjectXY",parameters:[["int","x"],["int","y"]]},{result:"String",name:"getName",parameters:[]},{result:"int",name:"clientToScreenX",parameters:[["int","x"]]},{result:"int",name:"clientToScreenY",parameters:[["int","y"]]},{result:"int",name:"clientToScreenW",parameters:[["int","w"]]},{result:"int",name:"clientToScreenH",parameters:[["int","h"]]},{result:"int",name:"screenToClientX",parameters:[["int","x"]]},{result:"int",name:"screenToClientY",parameters:[["int","y"]]},{result:"int",name:"screenToClientW",parameters:[["int","w"]]},{result:"int",name:"screenToClientH",parameters:[["int","h"]]},{result:"int",name:"getAutoWidth",parameters:[]},{result:"int",name:"getAutoHeight",parameters:[]},{result:"",name:"setFocus",parameters:[]},{result:"",name:"onChar",parameters:[["String","c"]]},{result:"",name:"onAccelerator",parameters:[["String","accel"]]},{result:"Boolean",name:"isMouseOverRect",parameters:[]},{result:"Object",name:"getInterface",parameters:[["String","interface_guid"]]},{result:"",name:"onDragEnter",parameters:[]},{result:"",name:"onDragOver",parameters:[["int","x"],["int","y"]]},{result:"",name:"onDragLeave",parameters:[]},{result:"",name:"onKeyDown",parameters:[["int","vk_code"]]},{result:"",name:"onKeyUp",parameters:[["int","vk_code"]]},{result:"",name:"onGetFocus",parameters:[]},{result:"",name:"onKillFocus",parameters:[]},{result:"Int",name:"sendAction",parameters:[["String","action"],["String","param"],["Int","x"],["int","y"],["int","p1"],["int","p2"]]},{result:"Int",name:"onAction",parameters:[["String","action"],["String","param"],["Int","x"],["int","y"],["int","p1"],["int","p2"],["GuiObject","source"]]}],name:"GuiObject"},me={parent:"GuiObject",functions:[{result:"GuiObject",name:"getObject",parameters:[["String","object_id"]]},{result:"Int",name:"getNumObjects",parameters:[]},{result:"GuiObject",name:"enumObject",parameters:[["Int","num"]]},{result:"",name:"onCreateObject",parameters:[["GuiObject","newobj"]]},{result:"Int",name:"getMousePosX",parameters:[]},{result:"Int",name:"getMousePosY",parameters:[]},{result:"Boolean",name:"isLayout",parameters:[]}],name:"Group"},le={parent:"Group",functions:[{result:"",name:"onDock",parameters:[["int","side"]]},{result:"",name:"onUndock",parameters:[]},{result:"",name:"onScale",parameters:[["Double","newscalevalue"]]},{result:"Double",name:"getScale",parameters:[]},{result:"",name:"setScale",parameters:[["Double","scalevalue"]]},{result:"",name:"setDesktopAlpha",parameters:[["Boolean","onoff"]]},{result:"Boolean",name:"getDesktopAlpha",parameters:[]},{result:"Container",name:"getContainer",parameters:[]},{result:"",name:"center",parameters:[]},{result:"",name:"onMove",parameters:[]},{result:"",name:"onEndMove",parameters:[]},{result:"",name:"onUserResize",parameters:[["int","x"],["int","y"],["int","w"],["int","h"]]},{result:"",name:"snapAdjust",parameters:[["int","left"],["int","top"],["int","right"],["int","bottom"]]},{result:"Int",name:"getSnapAdjustTop",parameters:[]},{result:"Int",name:"getSnapAdjustRight",parameters:[]},{result:"Int",name:"getSnapAdjustLeft",parameters:[]},{result:"Int",name:"getSnapAdjustBottom",parameters:[]},{result:"",name:"setRedrawOnResize",parameters:[["int","wantredrawonresize"]]},{result:"",name:"beforeRedock",parameters:[]},{result:"",name:"redock",parameters:[]},{result:"Boolean",name:"isTransparencySafe",parameters:[]},{result:"Boolean",name:"isLayoutAnimationSafe",parameters:[]},{result:"",name:"onMouseEnterLayout",parameters:[]},{result:"",name:"onMouseLeaveLayout",parameters:[]},{result:"",name:"onSnapAdjustChanged",parameters:[]}],name:"Layout"},ie={parent:"GuiObject",functions:[{result:"",name:"setRegionFromMap",parameters:[["Map","regionmap"],["Int","threshold"],["Boolean","reverse"]]},{result:"",name:"setRegion",parameters:[["Region","reg"]]},{result:"GuiObject",name:"getContent",parameters:[]},{result:"String",name:"getGuid",parameters:[]},{result:"String",name:"getComponentName",parameters:[]},{result:"",name:"onGetWac",parameters:[["Wac","wacobj"]]},{result:"",name:"onGiveUpWac",parameters:[["Wac","wacobj"]]},{result:"Wac",name:"getWac",parameters:[]},{result:"",name:"setAcceptWac",parameters:[["Boolean","onoff"]]}],name:"WindowHolder"},ue={parent:"GuiObject",functions:[{result:"Int",name:"getMaxHeight",parameters:[]},{result:"Int",name:"getMaxWidth",parameters:[]},{result:"Int",name:"setScroll",parameters:[["int","x"]]},{result:"Int",name:"getScroll",parameters:[]},{result:"Int",name:"getNumChildren",parameters:[]},{result:"GuiObject",name:"enumChildren",parameters:[["int","n"]]}],name:"ComponentBucket"},oe={parent:"GuiObject",functions:[{result:"",name:"onEnter",parameters:[]},{result:"",name:"onAbort",parameters:[]},{result:"",name:"onIdleEditUpdate",parameters:[]},{result:"",name:"onEditUpdate",parameters:[]},{result:"",name:"setText",parameters:[["String","txt"]]},{result:"",name:"setAutoEnter",parameters:[["boolean","onoff"]]},{result:"Int",name:"getAutoEnter",parameters:[]},{result:"String",name:"getText",parameters:[]},{result:"",name:"selectAll",parameters:[]},{result:"",name:"enter",parameters:[]},{result:"",name:"setIdleEnabled",parameters:[["boolean","onoff"]]},{result:"Int",name:"getIdleEnabled",parameters:[]}],name:"Edit"},pe={parent:"GuiObject",functions:[{result:"",name:"onSetPosition",parameters:[["int","newpos"]]},{result:"",name:"onPostedPosition",parameters:[["int","newpos"]]},{result:"",name:"onSetFinalPosition",parameters:[["int","pos"]]},{result:"",name:"setPosition",parameters:[["int","pos"]]},{result:"Int",name:"getPosition",parameters:[]},{result:"",name:"lock",parameters:[]},{result:"",name:"unlock",parameters:[]}],name:"Slider"},ge={parent:"GuiObject",functions:[{result:"",name:"onFrame",parameters:[]},{result:"",name:"setRealtime",parameters:[["Boolean","onoff"]]},{result:"Boolean",name:"getRealtime",parameters:[]},{result:"Int",name:"getMode",parameters:[]},{result:"",name:"setMode",parameters:[["Int","mode"]]},{result:"",name:"nextMode",parameters:[]}],name:"Vis"},ce={parent:"GuiObject",functions:[{result:"",name:"navigateUrl",parameters:[["String","url"]]},{result:"",name:"back",parameters:[]},{result:"",name:"forward",parameters:[]},{result:"",name:"stop",parameters:[]},{result:"",name:"refresh",parameters:[]},{result:"",name:"home",parameters:[]},{result:"",name:"setTargetName",parameters:[["String","targetname"]]},{result:"Boolean",name:"onBeforeNavigate",parameters:[["String","url"],["Int","flags"],["String","targetframename"]]},{result:"",name:"onDocumentComplete",parameters:[["String","url"]]},{result:"",name:"onDocumentReady",parameters:[["String","url"]]},{result:"String",name:"getDocumentTitle",parameters:[]},{result:"",name:"onNavigateError",parameters:[["String","url"],["int","code"]]},{result:"",name:"setCancelIEErrorPage",parameters:[["boolean","cancel"]]},{result:"",name:"scrape",parameters:[]},{result:"string",name:"onMediaLink",parameters:[["string","url"]]}],name:"Browser"},de={parent:"GuiObject",functions:[],name:"EqVis"},Ie={parent:"GuiObject",functions:[],name:"Status"},fe={parent:"GuiObject",functions:[{result:"",name:"setText",parameters:[["String","txt"]]},{result:"",name:"setAlternateText",parameters:[["String","txt"]]},{result:"String",name:"getText",parameters:[]},{result:"int",name:"getTextWidth",parameters:[]},{result:"",name:"onTextChanged",parameters:[["String","newtxt"]]}],name:"Text"},Se={parent:"GuiObject",functions:[],name:"Title"},be={parent:"GuiObject",functions:[{result:"",name:"onBeginResize",parameters:[["int","x"],["int","y"],["int","w"],["int","h"]]},{result:"",name:"onEndResize",parameters:[["int","x"],["int","y"],["int","w"],["int","h"]]},{result:"",name:"fx_onInit",parameters:[]},{result:"",name:"fx_onFrame",parameters:[]},{result:"Double",name:"fx_onGetPixelR",parameters:[["double","r"],["double","d"],["double","x"],["double","y"]]},{result:"Double",name:"fx_onGetPixelD",parameters:[["double","r"],["double","d"],["double","x"],["double","y"]]},{result:"Double",name:"fx_onGetPixelX",parameters:[["double","r"],["double","d"],["double","x"],["double","y"]]},{result:"Double",name:"fx_onGetPixelY",parameters:[["double","r"],["double","d"],["double","x"],["double","y"]]},{result:"Double",name:"fx_onGetPixelA",parameters:[["double","r"],["double","d"],["double","x"],["double","y"]]},{result:"",name:"setRegionFromMap",parameters:[["Map","regionmap"],["int","threshold"],["boolean","reverse"]]},{result:"",name:"setRegion",parameters:[["Region","reg"]]},{result:"",name:"fx_setEnabled",parameters:[["boolean","onoff"]]},{result:"Boolean",name:"fx_getEnabled",parameters:[]},{result:"",name:"fx_setWrap",parameters:[["Boolean","onoff"]]},{result:"Boolean",name:"fx_getWrap",parameters:[]},{result:"",name:"fx_setRect",parameters:[["Boolean","onoff"]]},{result:"Boolean",name:"fx_getRect",parameters:[]},{result:"",name:"fx_setBgFx",parameters:[["Boolean","onoff"]]},{result:"Boolean",name:"fx_getBgFx",parameters:[]},{result:"",name:"fx_setClear",parameters:[["Boolean","onoff"]]},{result:"Boolean",name:"fx_getClear",parameters:[]},{result:"",name:"fx_setSpeed",parameters:[["Int","msperframe"]]},{result:"Int",name:"fx_getSpeed",parameters:[]},{result:"",name:"fx_setRealtime",parameters:[["Boolean","onoff"]]},{result:"Boolean",name:"fx_getRealtime",parameters:[]},{result:"",name:"fx_setLocalized",parameters:[["Boolean","onoff"]]},{result:"Boolean",name:"fx_getLocalized",parameters:[]},{result:"",name:"fx_setBilinear",parameters:[["Boolean","onoff"]]},{result:"Boolean",name:"fx_getBilinear",parameters:[]},{result:"",name:"fx_setAlphaMode",parameters:[["Boolean","onoff"]]},{result:"Boolean",name:"fx_getAlphaMode",parameters:[]},{result:"",name:"fx_setGridSize",parameters:[["Int","x"],["Int","y"]]},{result:"",name:"fx_update",parameters:[]},{result:"",name:"fx_restart",parameters:[]},{result:"Boolean",name:"isInvalid",parameters:[]}],name:"Layer"},Ce={parent:"GuiObject",functions:[{result:"",name:"onActivate",parameters:[["int","activated"]]},{result:"",name:"onLeftClick",parameters:[]},{result:"",name:"onRightClick",parameters:[]},{result:"",name:"setActivated",parameters:[["Boolean","onoff"]]},{result:"",name:"setActivatedNoCallback",parameters:[["Boolean","onoff"]]},{result:"Boolean",name:"getActivated",parameters:[]},{result:"",name:"leftClick",parameters:[]},{result:"",name:"rightClick",parameters:[]}],name:"Button"},he={parent:"Layer",functions:[{result:"",name:"onPlay",parameters:[]},{result:"",name:"onPause",parameters:[]},{result:"",name:"onResume",parameters:[]},{result:"",name:"onStop",parameters:[]},{result:"",name:"onFrame",parameters:[["Int","framenum"]]},{result:"",name:"setSpeed",parameters:[["Int","msperframe"]]},{result:"",name:"gotoFrame",parameters:[["int","framenum"]]},{result:"",name:"setStartFrame",parameters:[["Int","framenum"]]},{result:"",name:"setEndFrame",parameters:[["int","framenum"]]},{result:"",name:"setAutoReplay",parameters:[["Boolean","onoff"]]},{result:"",name:"play",parameters:[]},{result:"",name:"stop",parameters:[]},{result:"",name:"pause",parameters:[]},{result:"Boolean",name:"isPlaying",parameters:[]},{result:"Boolean",name:"isPaused",parameters:[]},{result:"Boolean",name:"isStopped",parameters:[]},{result:"Int",name:"getStartFrame",parameters:[]},{result:"Int",name:"getEndFrame",parameters:[]},{result:"Int",name:"getLength",parameters:[]},{result:"Int",name:"getDirection",parameters:[]},{result:"Boolean",name:"getAutoReplay",parameters:[]},{result:"Int",name:"getCurFrame",parameters:[]},{result:"",name:"setRealtime",parameters:[["Boolean","onoff"]]}],name:"AnimatedLayer"},Be={parent:"Layer",functions:[{result:"",name:"refresh",parameters:[]},{result:"",name:"isLoading",parameters:[]},{result:"",name:"onAlbumArtLoaded",parameters:[["boolean","success"]]}],name:"AlbumArtLayer"},ye={parent:"Button",functions:[{result:"",name:"onToggle",parameters:[["Boolean","onoff"]]},{result:"int",name:"getCurCfgVal",parameters:[]}],name:"ToggleButton"},De={parent:"GuiObject",functions:[{result:"Group",name:"instantiate",parameters:[["String","group_id"],["int","num_groups"]]},{result:"Int",name:"getNumItems",parameters:[]},{result:"Group",name:"enumItem",parameters:[["int","num"]]},{result:"",name:"removeAll",parameters:[]},{result:"",name:"scrollToPercent",parameters:[["Int","percent"]]},{result:"",name:"setRedraw",parameters:[["int","redraw"]]}],name:"GroupList"},Te={parent:"Group",functions:[{result:"Int",name:"cfgGetInt",parameters:[]},{result:"",name:"cfgSetInt",parameters:[["Int","intvalue"]]},{result:"String",name:"cfgGetString",parameters:[]},{result:"Float",name:"cfgGetFloat",parameters:[]},{result:"",name:"cfgSetFloat",parameters:[["Float","floatvalue"]]},{result:"",name:"cfgSetString",parameters:[["String","strvalue"]]},{result:"",name:"onCfgChanged",parameters:[]},{result:"String",name:"cfgGetGuid",parameters:[]},{result:"String",name:"cfgGetName",parameters:[]}],name:"CfgGroup"},Ae={parent:"GuiObject",functions:[{result:"",name:"onResetQuery",parameters:[]}],name:"QueryList"},xe={parent:"GuiObject",functions:[{result:"",name:"setRedirection",parameters:[["GuiObject","o"]]},{result:"GuiObject",name:"getRedirection",parameters:[]},{result:"",name:"setRegionFromMap",parameters:[["Map","regionmap"],["Int","threshold"],["Boolean","reverse"]]},{result:"",name:"setRegion",parameters:[["Region","reg"]]}],name:"MouseRedir"},Fe={parent:"GuiObject",functions:[{result:"String",name:"getItemSelected",parameters:[]},{result:"",name:"onSelect",parameters:[["Int","id"],["Int","hover"]]},{result:"",name:"setListHeight",parameters:[["Int","h"]]},{result:"",name:"openList",parameters:[]},{result:"",name:"closeList",parameters:[]},{result:"",name:"setItems",parameters:[["String","lotsofitems"]]},{result:"Int",name:"addItem",parameters:[["String","_text"]]},{result:"",name:"delItem",parameters:[["Int","id"]]},{result:"Int",name:"findItem",parameters:[["String","_text"]]},{result:"Int",name:"getNumItems",parameters:[]},{result:"",name:"selectItem",parameters:[["Int","id"],["Int","hover"]]},{result:"String",name:"getItemText",parameters:[["Int","id"]]},{result:"Int",name:"getSelected",parameters:[]},{result:"String",name:"getSelectedText",parameters:[]},{result:"String",name:"getCustomText",parameters:[]},{result:"",name:"deleteAllItems",parameters:[]},{result:"",name:"setNoItemText",parameters:[["String","txt"]]}],name:"DropDownList"},we={parent:"GuiObject",functions:[{result:"",name:"callme",parameters:[["String","str"]]}],name:"LayoutStatus"},Ee={parent:"GuiObject",functions:[{result:"Int",name:"getCurPage",parameters:[]},{result:"",name:"setCurPage",parameters:[["Int","a"]]}],name:"TabSheet"},je={parent:"GuiObject",functions:[{result:"Int",name:"addColumn",parameters:[["String","name"],["Int","width"],["Int","numeric"]]},{result:"Int",name:"getNumColumns",parameters:[]},{result:"Int",name:"getColumnWidth",parameters:[["Int","column"]]},{result:"",name:"setColumnWidth",parameters:[["Int","column"],["Int","newwidth"]]},{result:"String",name:"getColumnLabel",parameters:[["Int","column"]]},{result:"",name:"setColumnLabel",parameters:[["Int","column"],["String","newlabel"]]},{result:"Int",name:"getColumnNumeric",parameters:[["Int","column"]]},{result:"",name:"setColumnDynamic",parameters:[["Int","column"],["Int","isdynamic"]]},{result:"Int",name:"isColumnDynamic",parameters:[["Int","column"]]},{result:"",name:"invalidateColumns",parameters:[]},{result:"Int",name:"getNumItems",parameters:[]},{result:"Int",name:"getItemCount",parameters:[]},{result:"Int",name:"addItem",parameters:[["String","label"]]},{result:"Int",name:"insertItem",parameters:[["Int","pos"],["String","label"]]},{result:"Int",name:"getLastAddedItemPos",parameters:[]},{result:"",name:"setSubItem",parameters:[["Int","pos"],["Int","subpos"],["String","txt"]]},{result:"",name:"deleteAllItems",parameters:[]},{result:"Int",name:"deleteByPos",parameters:[["Int","pos"]]},{result:"String",name:"getItemLabel",parameters:[["Int","pos"],["Int","subpos"]]},{result:"String",name:"getSubitemText",parameters:[["Int","pos"],["Int","subpos"]]},{result:"",name:"setItemLabel",parameters:[["Int","pos"],["String","_text"]]},{result:"Int",name:"invalidateItem",parameters:[["Int","pos"]]},{result:"Int",name:"getFirstItemVisible",parameters:[]},{result:"Int",name:"getLastItemVisible",parameters:[]},{result:"",name:"setItemIcon",parameters:[["Int","pos"],["String","bitmapId"]]},{result:"String",name:"getItemIcon",parameters:[["Int","pos"]]},{result:"",name:"setMinimumSize",parameters:[["Int","size"]]},{result:"Int",name:"getWantAutoDeselect",parameters:[]},{result:"",name:"setWantAutoDeselect",parameters:[["Int","want"]]},{result:"",name:"onSetVisible",parameters:[["Int","show"]]},{result:"",name:"setAutoSort",parameters:[["Int","dosort"]]},{result:"Int",name:"setFontSize",parameters:[["Int","size"]]},{result:"Int",name:"getFontSize",parameters:[]},{result:"Int",name:"getHeaderHeight",parameters:[]},{result:"Int",name:"getPreventMultipleSelection",parameters:[]},{result:"Int",name:"setPreventMultipleSelection",parameters:[["Int","val"]]},{result:"",name:"setShowIcons",parameters:[["int","showThem"]]},{result:"Int",name:"getShowIcons",parameters:[]},{result:"Int",name:"setIconWidth",parameters:[["int","width"]]},{result:"Int",name:"setIconHeight",parameters:[["int","width"]]},{result:"",name:"getIconWidth",parameters:[]},{result:"",name:"getIconHeight",parameters:[]},{result:"",name:"next",parameters:[]},{result:"",name:"previous",parameters:[]},{result:"",name:"pagedown",parameters:[]},{result:"",name:"pageup",parameters:[]},{result:"",name:"home",parameters:[]},{result:"",name:"end",parameters:[]},{result:"",name:"reset",parameters:[]},{result:"",name:"ensureItemVisible",parameters:[["Int","pos"]]},{result:"Int",name:"scrollAbsolute",parameters:[["Int","x"]]},{result:"Int",name:"scrollRelative",parameters:[["Int","x"]]},{result:"",name:"scrollLeft",parameters:[["Int","lines"]]},{result:"",name:"scrollRight",parameters:[["Int","lines"]]},{result:"",name:"scrollUp",parameters:[["Int","lines"]]},{result:"",name:"scrollDown",parameters:[["Int","lines"]]},{result:"",name:"jumpToNext",parameters:[["Int","c"]]},{result:"",name:"scrollToItem",parameters:[["Int","pos"]]},{result:"",name:"selectCurrent",parameters:[]},{result:"",name:"selectFirstEntry",parameters:[]},{result:"Int",name:"getItemSelected",parameters:[["Int","pos"]]},{result:"Int",name:"isItemFocused",parameters:[["Int","pos"]]},{result:"Int",name:"getItemFocused",parameters:[]},{result:"",name:"setItemFocused",parameters:[["Int","pos"]]},{result:"Int",name:"getFirstItemSelected",parameters:[]},{result:"Int",name:"getNextItemSelected",parameters:[["Int","lastpos"]]},{result:"Int",name:"selectAll",parameters:[]},{result:"Int",name:"deselectAll",parameters:[]},{result:"Int",name:"invertSelection",parameters:[]},{result:"",name:"setSelectionStart",parameters:[["Int","pos"]]},{result:"",name:"setSelectionEnd",parameters:[["Int","pos"]]},{result:"",name:"setSelected",parameters:[["Int","pos"],["Int","selected"]]},{result:"",name:"toggleSelection",parameters:[["Int","pos"],["Int","setfocus"]]},{result:"",name:"resort",parameters:[]},{result:"Int",name:"getSortDirection",parameters:[]},{result:"Int",name:"getSortColumn",parameters:[]},{result:"",name:"setSortColumn",parameters:[["Int","col"]]},{result:"",name:"setSortDirection",parameters:[["Int","dir"]]},{result:"",name:"moveItem",parameters:[["Int","from"],["Int","to"]]},{result:"",name:"onSelectAll",parameters:[]},{result:"",name:"onDelete",parameters:[]},{result:"",name:"onDoubleClick",parameters:[["Int","itemnum"]]},{result:"",name:"onLeftClick",parameters:[["Int","itemnum"]]},{result:"",name:"onSecondLeftClick",parameters:[["Int","itemnum"]]},{result:"Int",name:"onRightClick",parameters:[["Int","itemnum"]]},{result:"Int",name:"onColumnDblClick",parameters:[["Int","col"],["Int","x"],["Int","y"]]},{result:"Int",name:"onColumnLabelClick",parameters:[["Int","col"],["Int","x"],["Int","y"]]},{result:"",name:"onItemSelection",parameters:[["Int","itemnum"],["Int","selected"]]},{result:"Int",name:"onIconLeftClick",parameters:[["int","itemnum"],["int","x"],["int","y"]]}],name:"GuiList"},ve={parent:"GuiObject",functions:[{result:"Int",name:"onWantAutoContextMenu",parameters:[]},{result:"Int",name:"onMouseWheelUp",parameters:[["Int","clicked"],["Int","lines"]]},{result:"Int",name:"onMouseWheelDown",parameters:[["Int","clicked"],["Int","lines"]]},{result:"Int",name:"onContextMenu",parameters:[["Int","x"],["Int","y"]]},{result:"Int",name:"onChar",parameters:[["Int","c"]]},{result:"",name:"onItemRecvDrop",parameters:[["TreeItem","item"]]},{result:"",name:"onLabelChange",parameters:[["TreeItem","item"]]},{result:"",name:"onItemSelected",parameters:[["TreeItem","item"]]},{result:"",name:"onItemDeselected",parameters:[["TreeItem","item"]]},{result:"Int",name:"getNumRootItems",parameters:[]},{result:"TreeItem",name:"enumRootItem",parameters:[["Int","which"]]},{result:"",name:"jumpToNext",parameters:[["Int","c"]]},{result:"",name:"ensureItemVisible",parameters:[["TreeItem","item"]]},{result:"Int",name:"getContentsWidth",parameters:[]},{result:"Int",name:"getContentsHeight",parameters:[]},{result:"TreeItem",name:"addTreeItem",parameters:[["TreeItem","item"],["TreeItem","par"],["Int","sorted"],["Int","haschildtab"]]},{result:"Int",name:"removeTreeItem",parameters:[["TreeItem","item"]]},{result:"",name:"moveTreeItem",parameters:[["TreeItem","item"],["TreeItem","newparent"]]},{result:"",name:"deleteAllItems",parameters:[]},{result:"Int",name:"expandItem",parameters:[["TreeItem","item"]]},{result:"",name:"expandItemDeferred",parameters:[["TreeItem","item"]]},{result:"Int",name:"collapseItem",parameters:[["TreeItem","item"]]},{result:"",name:"collapseItemDeferred",parameters:[["TreeItem","item"]]},{result:"",name:"selectItem",parameters:[["TreeItem","item"]]},{result:"",name:"selectItemDeferred",parameters:[["TreeItem","item"]]},{result:"",name:"delItemDeferred",parameters:[["TreeItem","item"]]},{result:"",name:"hiliteItem",parameters:[["TreeItem","item"]]},{result:"",name:"unhiliteItem",parameters:[["TreeItem","item"]]},{result:"TreeItem",name:"getCurItem",parameters:[]},{result:"TreeItem",name:"hitTest",parameters:[["Int","x"],["Int","y"]]},{result:"",name:"editItemLabel",parameters:[["TreeItem","item"]]},{result:"",name:"cancelEditLabel",parameters:[["Int","destroyit"]]},{result:"",name:"setAutoEdit",parameters:[["Int","ae"]]},{result:"Int",name:"getAutoEdit",parameters:[]},{result:"TreeItem",name:"getByLabel",parameters:[["TreeItem","item"],["String","name"]]},{result:"",name:"setSorted",parameters:[["Int","dosort"]]},{result:"Int",name:"getSorted",parameters:[]},{result:"",name:"sortTreeItems",parameters:[]},{result:"TreeItem",name:"getSibling",parameters:[["TreeItem","item"]]},{result:"",name:"setAutoCollapse",parameters:[["Int","doautocollapse"]]},{result:"Int",name:"setFontSize",parameters:[["Int","newsize"]]},{result:"Int",name:"getFontSize",parameters:[]},{result:"Int",name:"getNumVisibleChildItems",parameters:[["TreeItem","c"]]},{result:"Int",name:"getNumVisibleItems",parameters:[]},{result:"TreeItem",name:"enumVisibleItems",parameters:[["Int","n"]]},{result:"TreeItem",name:"enumVisibleChildItems",parameters:[["TreeItem","c"],["Int","n"]]},{result:"TreeItem",name:"enumAllItems",parameters:[["Int","n"]]},{result:"Int",name:"getItemRectX",parameters:[["TreeItem","item"]]},{result:"Int",name:"getItemRectY",parameters:[["TreeItem","item"]]},{result:"Int",name:"getItemRectW",parameters:[["TreeItem","item"]]},{result:"Int",name:"getItemRectH",parameters:[["TreeItem","item"]]},{result:"TreeItem",name:"getItemFromPoint",parameters:[["Int","x"],["Int","y"]]}],name:"GuiTree"},Le={parent:"Object",functions:[{result:"Int",name:"getNumChildren",parameters:[]},{result:"",name:"setLabel",parameters:[["String","label"]]},{result:"String",name:"getLabel",parameters:[]},{result:"",name:"ensureVisible",parameters:[]},{result:"TreeItem",name:"getNthChild",parameters:[["Int","nth"]]},{result:"TreeItem",name:"getChild",parameters:[]},{result:"TreeItem",name:"getChildSibling",parameters:[["TreeItem","_item"]]},{result:"TreeItem",name:"getSibling",parameters:[]},{result:"TreeItem",name:"getParent",parameters:[]},{result:"",name:"editLabel",parameters:[]},{result:"Int",name:"hasSubItems",parameters:[]},{result:"",name:"setSorted",parameters:[["Int","issorted"]]},{result:"",name:"setChildTab",parameters:[["Int","haschildtab"]]},{result:"Int",name:"isSorted",parameters:[]},{result:"Int",name:"isCollapsed",parameters:[]},{result:"Int",name:"isExpanded",parameters:[]},{result:"",name:"invalidate",parameters:[]},{result:"Int",name:"isSelected",parameters:[]},{result:"Int",name:"isHilited",parameters:[]},{result:"",name:"setHilited",parameters:[["Int","ishilited"]]},{result:"Int",name:"collapse",parameters:[]},{result:"Int",name:"expand",parameters:[]},{result:"GuiTree",name:"getTree",parameters:[]},{result:"",name:"onTreeAdd",parameters:[]},{result:"",name:"onTreeRemove",parameters:[]},{result:"",name:"onSelect",parameters:[]},{result:"",name:"onDeselect",parameters:[]},{result:"Int",name:"onLeftDoubleClick",parameters:[]},{result:"Int",name:"onRightDoubleClick",parameters:[]},{result:"Int",name:"onChar",parameters:[["Int","key"]]},{result:"",name:"onExpand",parameters:[]},{result:"",name:"onCollapse",parameters:[]},{result:"Int",name:"onBeginLabelEdit",parameters:[]},{result:"Int",name:"onEndLabelEdit",parameters:[["String","newlabel"]]},{result:"Int",name:"onContextMenu",parameters:[["Int","x"],["Int","y"]]}],name:"TreeItem"},Oe={parent:"GuiObject",functions:[{result:"",name:"onOpenMenu",parameters:[]},{result:"",name:"onCloseMenu",parameters:[]},{result:"",name:"onSelectItem",parameters:[["String","item"]]},{result:"",name:"openMenu",parameters:[]},{result:"",name:"closeMenu",parameters:[]}],name:"MenuButton"},Ge={parent:"GuiObject",functions:[{result:"",name:"onToggle",parameters:[["int","newstate"]]},{result:"",name:"setChecked",parameters:[["int","checked"]]},{result:"Int",name:"isChecked",parameters:[]},{result:"",name:"setText",parameters:[["String","txt"]]},{result:"String",name:"getText",parameters:[]}],name:"CheckBox"},Me={parent:"GuiObject",functions:[{result:"Int",name:"getContentsHeight",parameters:[]},{result:"",name:"newCell",parameters:[["String","groupname"]]},{result:"",name:"nextRow",parameters:[]},{result:"",name:"deleteAll",parameters:[]}],name:"Form"},Pe={parent:"GuiObject",functions:[{result:"Int",name:"getPosition",parameters:[]},{result:"",name:"setPosition",parameters:[["Int","position"]]},{result:"",name:"onSetPosition",parameters:[["Int","position"]]}],name:"Frame"},Re={parent:"GuiObject",functions:[{result:"",name:"setMenuGroup",parameters:[["String","groupId"]]},{result:"String",name:"getMenuGroup",parameters:[]},{result:"",name:"setMenu",parameters:[["String","menuId"]]},{result:"String",name:"getMenu",parameters:[]},{result:"",name:"spawnMenu",parameters:[["int","monitor"]]},{result:"",name:"cancelMenu",parameters:[]},{result:"",name:"setNormalId",parameters:[["String","id"]]},{result:"",name:"setDownId",parameters:[["String","id"]]},{result:"",name:"setHoverId",parameters:[["String","id"]]},{result:"",name:"onOpenMenu",parameters:[]},{result:"",name:"onCloseMenu",parameters:[]},{result:"",name:"nextMenu",parameters:[]},{result:"",name:"previousMenu",parameters:[]}],name:"Menu"},S={"516549710D874a5191E3A6B53235F3E7":X,D6F50F6493FA49b793F1BA66EFAE3E98:Y,E90DC47B840D4ae7B02C040BD275F7FC:K,"00C074A0FEA249a0BE8DFABBDB161640":J,B2023AB5434D4ba1BEAE59637503F3C6:Z,"87C65778E74349fe85F909CC532AFD56":Q,"38603665461B42a7AA75D83F6667BF73":ee,F4787AF4B2BB4ef79CFBE74BA9BEA88D:te,"3A370C023CBF439f84F186885BCF1E36":re,"5D0C5BB67DE14b1fA70F8D1659941941":ae,A5376FA14E94411a83F605EC5EEA5F0A:ne,"4EE3E199C6364bec97CD78BC9C8628B0":se,"45BE95E520724191935CBB5FF9F117FD":me,"60906D4E537E482eB004CC9461885672":le,"403ABCC06F224bd68BA410C829932547":ie,"97AA3E4DF4D04fa8817B0AF22A454983":ue,"64E4BBFA81F449d9B0C0A85B2EC3BCFD":oe,"62B65E3F375E408d8DEA76814AB91B77":pe,CE4F97BE77B04e199956D49833C96C27:ge,A8C2200D51EB4b2aBA7F5D4BC65D4C71:ce,"8D1EBA38489E483eB9608D1F43C5C405":de,"0F08C940AF394b2380F3B8C48F7EBB59":Ie,EFAA8672310E41faB7DC85A9525BCB4B:fe,"7DFD324437514e7cBF4082AE5F3ADC33":Se,"5AB9FA159A7D4557ABC86557A6C67CA9":be,"698EDDCD8F1E4fec9B12F944F909FF45":Ce,"6B64CD275A264c4b8C59E6A70CF6493A":he,"6DCB05E48AC448c2B19349F0910EF54A":Be,B4DCCFFF81FE4bcc961B720FD5BE0FFF:ye,"01E28CE1B05911d5979FE4DE6F51760A":De,"80F0F8BD1BA542a6A0933236A00C8D4A":Te,CDCB785D81F242538F0561B872283CFA:Ae,"9B2E341B6C9840fa8B850C1B6EE89405":xe,"36D59B7103FD4af897950502B7DB267A":Fe,"7FD5F210ACC448dfA6A05451576CDC76":we,B5BAA53505B34dcbADC1E618D28F6896:Ee,"6129FEC1DAB74d51916501CA0C1B70DB":je,D59514F7ED3645e8980F3F4EA0522CD9:ve,"9B3B4B82667A420e8FFC794115809C02":Le,"1D8631C880D047929F98BD5D36B49136":Oe,C7ED319953194798986360B15A298CAA:Ge,"2D2D1376BE0A4CB9BC0C57E6E4C999F5":Me,E2BBC14D84F64173BDB3B2EB2F665550:Pe,"73C00594961F401B9B1B672427AC4165":Re};var j={};Object.values(S).forEach(e=>{j[e.name]=e});function m(e,r){return j[e].functions.find(({name:a})=>a===r)}m("Timer","isRunning").result="boolean";m("ToggleButton","onToggle").parameters[0][1]="onoff";m("GuiTree","onChar").parameters[0][0]="string";m("GuiList","onSetVisible").parameters[0][0]="boolean";m("Wac","onNotify").parameters=m("Object","onNotify").parameters;m("Wac","onNotify").result="int";var v=S;var ke={parent:"Object",functions:[{result:"int",name:"getNumTracks",parameters:[]},{result:"int",name:"getCurrentIndex",parameters:[]},{result:"int",name:"getNumSelectedTracks",parameters:[]},{result:"int",name:"getNextSelectedTrack",parameters:[["int","i"]]},{result:"",name:"showCurrentlyPlayingTrack",parameters:[]},{result:"",name:"showTrack",parameters:[["int","item"]]},{result:"",name:"enqueueFile",parameters:[["string","file"]]},{result:"",name:"clear",parameters:[]},{result:"",name:"removeTrack",parameters:[["int","item"]]},{result:"",name:"swapTracks",parameters:[["int","item1"],["int","item2"]]},{result:"",name:"moveUp",parameters:[["int","item"]]},{result:"",name:"moveDown",parameters:[["int","item"]]},{result:"",name:"moveTo",parameters:[["int","item"],["int","pos"]]},{result:"",name:"playTrack",parameters:[["int","item"]]},{result:"int",name:"getRating",parameters:[["int","item"]]},{result:"",name:"setRating",parameters:[["int","item"],["int","rating"]]},{result:"String",name:"getTitle",parameters:[["int","item"]]},{result:"String",name:"getLength",parameters:[["int","item"]]},{result:"String",name:"getMetaData",parameters:[["int","item"],["String","metadatastring"]]},{result:"String",name:"getFileName",parameters:[["int","item"]]},{result:"",name:"onPleditModified",parameters:[]}],name:"PlEdit"},_e={parent:"Object",functions:[{result:"int",name:"getNumItems",parameters:[]},{result:"String",name:"getItemName",parameters:[["int","item"]]},{result:"",name:"showCurrentlyPlayingEntry",parameters:[]},{result:"",name:"refresh",parameters:[]},{result:"",name:"renameItem",parameters:[["int","item"],["String","name"]]},{result:"",name:"enqueueItem",parameters:[["int","item"]]},{result:"",name:"playItem",parameters:[["int","item"]]}],name:"PlDir"},L={"345BEEBC0229492190BE6CB6A49A79D9":ke,"61A7ABAD7D7941f6B1D0E1808603A4F4":_e};var Ne={parent:"Object",functions:[{result:"ConfigItem",name:"getItem",parameters:[["String","item_name"]]},{result:"ConfigItem",name:"getItemByGuid",parameters:[["String","item_guid"]]},{result:"ConfigItem",name:"newItem",parameters:[["String","item_name"],["String","item_guid"]]}],name:"Config"},We={parent:"Object",functions:[{result:"ConfigAttribute",name:"getAttribute",parameters:[["String","attr_name"]]},{result:"ConfigAttribute",name:"newAttribute",parameters:[["String","attr_name"],["String","default_value"]]},{result:"String",name:"getGuid",parameters:[["String","attr_name"]]},{result:"String",name:"getName",parameters:[]}],name:"ConfigItem"},Ve={parent:"Object",functions:[{result:"",name:"setData",parameters:[["String","value"]]},{result:"String",name:"getData",parameters:[]},{result:"",name:"onDataChanged",parameters:[]},{result:"ConfigItem",name:"getParentItem",parameters:[]},{result:"String",name:"getAttributeName",parameters:[]}],name:"ConfigAttribute"},O={"593DBA22D0774976B952F4713655400B":Ne,D40302823AAB4d87878D12326FADFCD5:We,"24DEC283B76E4a368CCC9E24C46B6C73":Ve};var C=p(p(p({},v),L),O);function h(e){return B[He(e)]}var B={};Object.keys(C).forEach(e=>{B[e.toLowerCase()]=C[e]});var G={};Object.values(C).forEach(e=>{G[e.name]=e});Object.values(B).forEach(e=>{let r=G[e.parent];if(r==null&&e.parent!=="@{00000000-0000-0000-0000-000000000000}@")throw new Error(`Could not find parent class named ${e.parent}`);e.parentClass=r});function He(e){return e.replace(/(........)(....)(....)(..)(..)(..)(..)(..)(..)(..)(..)/,"$1$3$2$7$6$5$4$11$10$9$8").toLowerCase()}var y=q(require("path"));function ze(e){let r=e.getFilename();return y.default.dirname(r).split(y.default.sep).pop()==="makiClasses"}module.exports=function(e){return ze(e)?{ClassDeclaration(r){let a=P(r);a==null?e.report({node:r,message:'Expected Maki class to declare a static property "GUID".'}):h(a)==null&&e.report({node:r,message:"Invalid GUID value."})},MethodDefinition(r){let n=r.parent.parent,i=r.key;if(i.type!=="Identifier")return;let k=i.name,D=P(n);if(D==null)return;let T=h(D);if(T==null)return;let c=T.functions.find(s=>s.name.toLowerCase()===k);if(c==null)return;let d=r.value.params,I=c.parameters,A={start:r.value.body.loc.start,end:r.value.body.loc.start},x=c.result;if(x){let s=M(x),l=R(r.value.returnType);if(l==null){e.report({loc:A,message:`Missing return type for Maki method. Expected "${s}".`});return}if(l!==s){e.report({loc:A,message:`Incorrect TypeScript return type for Maki method. Expected "${s}" but found "${l}".`});return}}if(d.length!==I.length){e.report({node:r,message:`Incorrect arity for Maki method. Expected ${I.length} arguments but found ${d.length}.`});return}for(let[s,l]of d.entries()){let[_,$e]=I[s],f=M(_),u=R(l.typeAnnotation);if(u==null){e.report({node:l,message:"Maki argument missing type annotation."});continue}if(f!=null&&f!==u){e.report({node:u,message:`Incorrect TypeScript type for Maki method argument. Expected "${f}" but found "${u}".`});continue}}}}:{}};function M(e){switch(e.toLowerCase()){case"int":case"double":case"float":return"number";case"string":return"string";case"boolean":return"boolean";case"guiobject":return"GuiObj";case"layout":return"Layout";case"container":return"Container";case"group":return"Group";case"wac":return"Wac";default:throw new Error(`Missing maki type: ${e}`)}}function P(e){let r=e.body.body.find(i=>i.static);if(r==null)return null;let a=r.value;if(a.type!=="Literal")return null;let n=a.value;return typeof n!="string"?null:n}function R(e){if(e==null)return null;let r=e.typeAnnotation;switch(r.type){case"TSTypeReference":return r.typeName.name;case"TSNumberKeyword":return"number";case"TSStringKeyword":return"string";case"TSBooleanKeyword":return"boolean";default:return null}} diff --git a/packages/webamp-modern-2/tools/eslint-rules/proper-maki-types.ts b/packages/webamp-modern-2/tools/eslint-rules/proper-maki-types.ts new file mode 100644 index 00000000..a14a6429 --- /dev/null +++ b/packages/webamp-modern-2/tools/eslint-rules/proper-maki-types.ts @@ -0,0 +1,196 @@ +import { Rule } from "eslint"; +import { ClassDeclaration, PropertyDefinition } from "estree"; +import { getClass } from "../../src/maki/objects"; +import path from "path"; + +function isMakiModule(context: Rule.RuleContext): boolean { + const filePath = context.getFilename(); + const parentDir = path.dirname(filePath).split(path.sep).pop(); + return parentDir === "makiClasses"; +} + +module.exports = function (context: Rule.RuleContext): Rule.RuleListener { + if (!isMakiModule(context)) { + return {}; + } + return { + ClassDeclaration(node) { + const guid = guidFromClassDeclaration(node); + if (guid == null) { + context.report({ + node, + message: `Expected Maki class to declare a static property "GUID".`, + }); + } else { + const objectInfo = getClass(guid); + if (objectInfo == null) { + context.report({ + node, + message: `Invalid GUID value.`, + }); + } + } + }, + MethodDefinition(node) { + const classBody = node.parent; + const klass = classBody.parent as ClassDeclaration; + const key = node.key; + if (key.type !== "Identifier") { + return; + } + const name = key.name; + const guid = guidFromClassDeclaration(klass); + if (guid == null) { + return; + } + + const objectInfo = getClass(guid); + if (objectInfo == null) { + // We report this in the `ClassDeclaration` handler. + return; + } + + const methods = objectInfo.functions; + const methodInfo = methods.find((method) => { + return method.name.toLowerCase() === name; + }); + if (methodInfo == null) { + // This is not a maki method. + // TODO: We could check if it's a case mismatch or close in some way. + return; + } + + const args = node.value.params; + const argDefinitions = methodInfo.parameters; + + const typeLoc = { + start: node.value.body.loc.start, + end: node.value.body.loc.start, + }; + + const result = methodInfo.result; + if (result) { + const expectedTsType = makiTypeToTsType(result); + let returnType = getHumanReadableTSType( + // @ts-ignore Missing type for .returnType? + node.value.returnType + ); + if (returnType == null) { + context.report({ + loc: typeLoc, + message: `Missing return type for Maki method. Expected "${expectedTsType}".`, + }); + return; + } + if (returnType !== expectedTsType) { + context.report({ + loc: typeLoc, + message: `Incorrect TypeScript return type for Maki method. Expected "${expectedTsType}" but found "${returnType}".`, + }); + return; + } + } else { + // Handle the case where a code provided a return type but maki has none. + } + + if (args.length !== argDefinitions.length) { + context.report({ + node, + message: `Incorrect arity for Maki method. Expected ${argDefinitions.length} arguments but found ${args.length}.`, + }); + return; + } + + for (const [i, arg] of args.entries()) { + const [defType, defName] = argDefinitions[i]; + const tsDefType = makiTypeToTsType(defType); + const tsType = getHumanReadableTSType( + // @ts-ignore Too lazy to refine here. Perhaps it will crash one day. + arg.typeAnnotation + ); + if (tsType == null) { + context.report({ + node: arg, + message: `Maki argument missing type annotation.`, + }); + continue; + } + if (tsDefType == null) { + continue; + } + if (tsDefType !== tsType) { + context.report({ + node: tsType, + message: `Incorrect TypeScript type for Maki method argument. Expected "${tsDefType}" but found "${tsType}".`, + }); + continue; + } + } + }, + }; +}; + +function makiTypeToTsType(makiType: string): string { + switch (makiType.toLowerCase()) { + case "int": + case "double": + case "float": + return "number"; + case "string": + return "string"; + case "boolean": + return "boolean"; + case "guiobject": + return "GuiObj"; + case "layout": + return "Layout"; + case "container": + return "Container"; + case "group": + return "Group"; + case "wac": + return "Wac"; + default: + throw new Error(`Missing maki type: ${makiType}`); + } +} + +function guidFromClassDeclaration(node: ClassDeclaration): string | null { + const guidNode = node.body.body.find((classProp) => { + return classProp.static; + }) as PropertyDefinition; + if (guidNode == null) { + return null; + } + const value = guidNode.value; + if (value.type !== "Literal") { + // TODO: Could report error + return null; + } + const literalValue = value.value; + if (typeof literalValue !== "string") { + // TODO: Could report error + return null; + } + return literalValue; +} + +function getHumanReadableTSType(returnType) { + if (returnType == null) { + return null; + } + const annotation = returnType.typeAnnotation; + switch (annotation.type) { + case "TSTypeReference": + return annotation.typeName.name; + case "TSNumberKeyword": + return "number"; + case "TSStringKeyword": + return "string"; + case "TSBooleanKeyword": + return "boolean"; + default: + // This probably means I need to add a new value. + return null; + } +} diff --git a/yarn.lock b/yarn.lock index 9125a093..9c33fb09 100644 --- a/yarn.lock +++ b/yarn.lock @@ -97,6 +97,13 @@ resolved "https://registry.yarnpkg.com/@assemblyscript/loader/-/loader-0.17.14.tgz#43bfe793c787180c5eb0a57ada8318fb62171b4e" integrity sha512-+PVTOfla/0XMLRTQLJFPg4u40XcdTfon6GGea70hBGi8Pd7ZymIXyVUR+vK8wt5Jb4MVKTKPIz43Myyebw5mZA== +"@babel/code-frame@7.12.11": + version "7.12.11" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.12.11.tgz#f4ad435aa263db935b8f10f2c552d23fb716a63f" + integrity sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw== + dependencies: + "@babel/highlight" "^7.10.4" + "@babel/code-frame@^7.0.0", "@babel/code-frame@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.8.3.tgz#33e25903d7481181534e12ec0a25f16b6fcf419e" @@ -1948,6 +1955,21 @@ minimatch "^3.0.4" strip-json-comments "^3.1.1" +"@eslint/eslintrc@^0.4.2": + version "0.4.2" + resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-0.4.2.tgz#f63d0ef06f5c0c57d76c4ab5f63d3835c51b0179" + integrity sha512-8nmGq/4ycLpIwzvhI4tNDmQztZ8sp+hI7cyG8i1nQDhkAbRzHpXPidRAHlNvCZQpJTKw5ItIpMw9RSToGF00mg== + dependencies: + ajv "^6.12.4" + debug "^4.1.1" + espree "^7.3.0" + globals "^13.9.0" + ignore "^4.0.6" + import-fresh "^3.2.1" + js-yaml "^3.13.1" + minimatch "^3.0.4" + strip-json-comments "^3.1.1" + "@hapi/address@2.x.x": version "2.1.4" resolved "https://registry.yarnpkg.com/@hapi/address/-/address-2.1.4.tgz#5d67ed43f3fd41a69d4b9ff7b56e7c0d1d0a81e5" @@ -1975,6 +1997,20 @@ dependencies: "@hapi/hoek" "^8.3.0" +"@humanwhocodes/config-array@^0.5.0": + version "0.5.0" + resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.5.0.tgz#1407967d4c6eecd7388f83acf1eaf4d0c6e58ef9" + integrity sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg== + dependencies: + "@humanwhocodes/object-schema" "^1.2.0" + debug "^4.1.1" + minimatch "^3.0.4" + +"@humanwhocodes/object-schema@^1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.0.tgz#87de7af9c231826fdd68ac7258f77c429e0e5fcf" + integrity sha512-wdppn25U8z/2yiaT6YGquE6X8sSv7hNMWSXYSSU1jGv/yd6XqjXgTDJ8KP4NgjTXfJ3GbRjeeb8RTV7a/VpM+w== + "@istanbuljs/load-nyc-config@^1.0.0": version "1.1.0" resolved "https://registry.yarnpkg.com/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz#fd3db1d59ecf7cf121e80650bb86712f9b55eced" @@ -2769,6 +2805,19 @@ version "1.0.0" resolved "https://registry.yarnpkg.com/@types/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz#1ee30d79544ca84d68d4b3cdb0af4f205663dd2d" +"@types/eslint@^7.2.14": + version "7.2.14" + resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-7.2.14.tgz#088661518db0c3c23089ab45900b99dd9214b92a" + integrity sha512-pESyhSbUOskqrGcaN+bCXIQDyT5zTaRWfj5ZjjSlMatgGjIn3QQPfocAu4WSabUR7CGyLZ2CQaZyISOEX7/saw== + dependencies: + "@types/estree" "*" + "@types/json-schema" "*" + +"@types/estree@*", "@types/estree@^0.0.50": + version "0.0.50" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.50.tgz#1e0caa9364d3fccd2931c3ed96fdbeaa5d4cca83" + integrity sha512-C6N5s2ZFtuZRj54k2/zyRhNDjJwwcViAM3Nbm8zjBpbqAdZ00mr0CFxvSKeO8Y/e03WVFLpQMdHYVfUd6SB+Hw== + "@types/events@*": version "3.0.0" resolved "https://registry.yarnpkg.com/@types/events/-/events-3.0.0.tgz#2862f3f58a9a7f7c3e78d79f130dd4d71c25c2a7" @@ -2875,6 +2924,11 @@ jest-diff "^26.0.0" pretty-format "^26.0.0" +"@types/json-schema@*", "@types/json-schema@^7.0.7": + version "7.0.8" + resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.8.tgz#edf1bf1dbf4e04413ca8e5b17b3b7d7d54b59818" + integrity sha512-YSBPTLTVm2e2OoQIDYx8HaeWJ5tTToLH67kXR7zYNGupXMEHa2++G8k+DczX2cFVgalypqtyZIcU19AFcmOpmg== + "@types/json-schema@^7.0.3": version "7.0.4" resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.4.tgz#38fd73ddfd9b55abb1e1b2ed578cb55bd7b7d339" @@ -3078,6 +3132,19 @@ regexpp "^3.0.0" tsutils "^3.17.1" +"@typescript-eslint/eslint-plugin@^4.28.2": + version "4.28.2" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.28.2.tgz#7a8320f00141666813d0ae43b49ee8244f7cf92a" + integrity sha512-PGqpLLzHSxq956rzNGasO3GsAPf2lY9lDUBXhS++SKonglUmJypaUtcKzRtUte8CV7nruwnDxtLUKpVxs0wQBw== + dependencies: + "@typescript-eslint/experimental-utils" "4.28.2" + "@typescript-eslint/scope-manager" "4.28.2" + debug "^4.3.1" + functional-red-black-tree "^1.0.1" + regexpp "^3.1.0" + semver "^7.3.5" + tsutils "^3.21.0" + "@typescript-eslint/eslint-plugin@^4.8.1": version "4.8.1" resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.8.1.tgz#b362abe0ee478a6c6d06c14552a6497f0b480769" @@ -3099,6 +3166,18 @@ eslint-scope "^5.0.0" eslint-utils "^2.0.0" +"@typescript-eslint/experimental-utils@4.28.2": + version "4.28.2" + resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-4.28.2.tgz#4ebdec06a10888e9326e1d51d81ad52a361bd0b0" + integrity sha512-MwHPsL6qo98RC55IoWWP8/opTykjTp4JzfPu1VfO2Z0MshNP0UZ1GEV5rYSSnZSUI8VD7iHvtIPVGW5Nfh7klQ== + dependencies: + "@types/json-schema" "^7.0.7" + "@typescript-eslint/scope-manager" "4.28.2" + "@typescript-eslint/types" "4.28.2" + "@typescript-eslint/typescript-estree" "4.28.2" + eslint-scope "^5.1.1" + eslint-utils "^3.0.0" + "@typescript-eslint/experimental-utils@4.8.1": version "4.8.1" resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-4.8.1.tgz#27275c20fa4336df99ebcf6195f7d7aa7aa9f22d" @@ -3119,6 +3198,16 @@ "@typescript-eslint/typescript-estree" "2.33.0" eslint-visitor-keys "^1.1.0" +"@typescript-eslint/parser@^4.28.2": + version "4.28.2" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-4.28.2.tgz#6aff11bf4b91eb67ca7517962eede951e9e2a15d" + integrity sha512-Q0gSCN51eikAgFGY+gnd5p9bhhCUAl0ERMiDKrTzpSoMYRubdB8MJrTTR/BBii8z+iFwz8oihxd0RAdP4l8w8w== + dependencies: + "@typescript-eslint/scope-manager" "4.28.2" + "@typescript-eslint/types" "4.28.2" + "@typescript-eslint/typescript-estree" "4.28.2" + debug "^4.3.1" + "@typescript-eslint/parser@^4.8.1": version "4.8.1" resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-4.8.1.tgz#4fe2fbdbb67485bafc4320b3ae91e34efe1219d1" @@ -3128,6 +3217,14 @@ "@typescript-eslint/typescript-estree" "4.8.1" debug "^4.1.1" +"@typescript-eslint/scope-manager@4.28.2": + version "4.28.2" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-4.28.2.tgz#451dce90303a3ce283750111495d34c9c204e510" + integrity sha512-MqbypNjIkJFEFuOwPWNDjq0nqXAKZvDNNs9yNseoGBB1wYfz1G0WHC2AVOy4XD7di3KCcW3+nhZyN6zruqmp2A== + dependencies: + "@typescript-eslint/types" "4.28.2" + "@typescript-eslint/visitor-keys" "4.28.2" + "@typescript-eslint/scope-manager@4.8.1": version "4.8.1" resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-4.8.1.tgz#e343c475f8f1d15801b546cb17d7f309b768fdce" @@ -3135,6 +3232,11 @@ "@typescript-eslint/types" "4.8.1" "@typescript-eslint/visitor-keys" "4.8.1" +"@typescript-eslint/types@4.28.2": + version "4.28.2" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-4.28.2.tgz#e6b9e234e0e9a66c4d25bab881661e91478223b5" + integrity sha512-Gr15fuQVd93uD9zzxbApz3wf7ua3yk4ZujABZlZhaxxKY8ojo448u7XTm/+ETpy0V0dlMtj6t4VdDvdc0JmUhA== + "@typescript-eslint/types@4.8.1": version "4.8.1" resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-4.8.1.tgz#23829c73c5fc6f4fcd5346a7780b274f72fee222" @@ -3151,6 +3253,19 @@ semver "^7.3.2" tsutils "^3.17.1" +"@typescript-eslint/typescript-estree@4.28.2": + version "4.28.2" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-4.28.2.tgz#680129b2a285289a15e7c6108c84739adf3a798c" + integrity sha512-86lLstLvK6QjNZjMoYUBMMsULFw0hPHJlk1fzhAVoNjDBuPVxiwvGuPQq3fsBMCxuDJwmX87tM/AXoadhHRljg== + dependencies: + "@typescript-eslint/types" "4.28.2" + "@typescript-eslint/visitor-keys" "4.28.2" + debug "^4.3.1" + globby "^11.0.3" + is-glob "^4.0.1" + semver "^7.3.5" + tsutils "^3.21.0" + "@typescript-eslint/typescript-estree@4.8.1": version "4.8.1" resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-4.8.1.tgz#7307e3f2c9e95df7daa8dc0a34b8c43b7ec0dd32" @@ -3164,6 +3279,14 @@ semver "^7.3.2" tsutils "^3.17.1" +"@typescript-eslint/visitor-keys@4.28.2": + version "4.28.2" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-4.28.2.tgz#bf56a400857bb68b59b311e6d0a5fbef5c3b5130" + integrity sha512-aT2B4PLyyRDUVUafXzpZFoc0C9t0za4BJAKP5sgWIhG+jHECQZUEjuQSCIwZdiJJ4w4cgu5r3Kh20SOdtEBl0w== + dependencies: + "@typescript-eslint/types" "4.28.2" + eslint-visitor-keys "^2.0.0" + "@typescript-eslint/visitor-keys@4.8.1": version "4.8.1" resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-4.8.1.tgz#794f68ee292d1b2e3aa9690ebedfcb3a8c90e3c3" @@ -3346,6 +3469,11 @@ acorn-jsx@^5.2.0: version "5.2.0" resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.2.0.tgz#4c66069173d6fdd68ed85239fc256226182b2ebe" +acorn-jsx@^5.3.1: + version "5.3.2" + resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" + integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== + acorn-walk@^6.0.1: version "6.2.0" resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-6.2.0.tgz#123cb8f3b84c2171f1f7fb252615b1c78a6b1a8c" @@ -3445,6 +3573,16 @@ ajv@^6.12.4: json-schema-traverse "^0.4.1" uri-js "^4.2.2" +ajv@^8.0.1: + version "8.6.1" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.6.1.tgz#ae65764bf1edde8cd861281cda5057852364a295" + integrity sha512-42VLtQUOLefAvKFAQIxIZDaThq6om/PrfP0CYk3/vn+y4BMNkKnbli8ON2QCiHov4KkzOSJ/xSoBJdayiiYvVQ== + dependencies: + fast-deep-equal "^3.1.1" + json-schema-traverse "^1.0.0" + require-from-string "^2.0.2" + uri-js "^4.2.2" + algoliasearch@^4.3.0: version "4.3.0" resolved "https://registry.yarnpkg.com/algoliasearch/-/algoliasearch-4.3.0.tgz#4f6db58d405d7ecc38073e17c2996066455e9979" @@ -3531,6 +3669,11 @@ ansi-styles@^4.0.0, ansi-styles@^4.1.0: "@types/color-name" "^1.1.1" color-convert "^2.0.1" +any-promise@^1.0.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/any-promise/-/any-promise-1.3.0.tgz#abc6afeedcea52e809cdc0376aed3ce39635d17f" + integrity sha1-q8av7tzqUugJzcA3au0845Y10X8= + anymatch@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb" @@ -3545,6 +3688,14 @@ anymatch@^3.0.3, anymatch@~3.1.1: normalize-path "^3.0.0" picomatch "^2.0.4" +anymatch@~3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716" + integrity sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg== + dependencies: + normalize-path "^3.0.0" + picomatch "^2.0.4" + aproba@^1.0.3, aproba@^1.1.1: version "1.2.0" resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" @@ -3693,6 +3844,11 @@ astral-regex@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9" +astral-regex@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31" + integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ== + async-each@^1.0.1: version "1.0.3" resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.3.tgz#b727dbf87d7651602f06f4d4ac387f47d91b0cbf" @@ -4441,6 +4597,11 @@ bytes@3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.0.tgz#f6cf7933a360e0588fa9fde85651cdc7f805d1f6" +cac@^6.7.2: + version "6.7.3" + resolved "https://registry.yarnpkg.com/cac/-/cac-6.7.3.tgz#10410b8611677990cc2e3c8b576d471c1d71b768" + integrity sha512-ECVqVZh74qgSuZG9YOt2OJPI3wGcf+EwwuF/XIOYqZBD0KZYLtgPWqFPxmDPQ6joxI1nOlvVgRV6VT53Ooyocg== + cacache@^10.0.4: version "10.0.4" resolved "https://registry.yarnpkg.com/cacache/-/cacache-10.0.4.tgz#6452367999eff9d4188aefd9a14e9d7c6a263460" @@ -4723,6 +4884,21 @@ chokidar@^3.4.0: optionalDependencies: fsevents "~2.1.2" +chokidar@^3.5.1: + version "3.5.2" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.2.tgz#dba3976fcadb016f66fd365021d91600d01c1e75" + integrity sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ== + dependencies: + anymatch "~3.1.2" + braces "~3.0.2" + glob-parent "~5.1.2" + is-binary-path "~2.1.0" + is-glob "~4.0.1" + normalize-path "~3.0.0" + readdirp "~3.6.0" + optionalDependencies: + fsevents "~2.3.2" + chownr@^1.0.1, chownr@^1.1.1: version "1.1.4" resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" @@ -4940,7 +5116,7 @@ commander@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/commander/-/commander-3.0.2.tgz#6837c3fb677ad9933d1cfba42dd14d5117d6b39e" -commander@^4.0.1, commander@^4.1.1: +commander@^4.0.0, commander@^4.0.1, commander@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/commander/-/commander-4.1.1.tgz#9fd602bd936294e9e9ef46a3f4d6964044b18068" @@ -5215,7 +5391,7 @@ cross-spawn@^5.0.1: shebang-command "^1.2.0" which "^1.2.9" -cross-spawn@^7.0.0, cross-spawn@^7.0.2: +cross-spawn@^7.0.0, cross-spawn@^7.0.2, cross-spawn@^7.0.3: version "7.0.3" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" dependencies: @@ -5497,6 +5673,13 @@ debug@^3.0.0, debug@^3.1.0, debug@^3.1.1, debug@^3.2.5, debug@^3.2.6: dependencies: ms "^2.1.1" +debug@^4.3.1: + version "4.3.2" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.2.tgz#f0a49c18ac8779e31d4a0c6029dfb76873c7428b" + integrity sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw== + dependencies: + ms "2.1.2" + decamelize@^1.1.2, decamelize@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" @@ -6150,6 +6333,11 @@ es6-promisify@^5.0.0: dependencies: es6-promise "^4.0.3" +esbuild@^0.12.9: + version "0.12.15" + resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.12.15.tgz#9d99cf39aeb2188265c5983e983e236829f08af0" + integrity sha512-72V4JNd2+48eOVCXx49xoSWHgC3/cCy96e7mbXKY+WOWghN00cCmlGnwVLRhRHorvv0dgCyuMYBZlM2xDM5OQw== + esbuild@^0.9.3: version "0.9.7" resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.9.7.tgz#ea0d639cbe4b88ec25fbed4d6ff00c8d788ef70b" @@ -6172,6 +6360,11 @@ escape-string-regexp@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344" +escape-string-regexp@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" + integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== + escodegen@^1.14.1: version "1.14.3" resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.14.3.tgz#4e7b81fba61581dc97582ed78cab7f0e8d63f503" @@ -6251,6 +6444,11 @@ eslint-plugin-react@^7.16.0: string.prototype.matchall "^4.0.2" xregexp "^4.3.0" +eslint-plugin-rulesdir@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-rulesdir/-/eslint-plugin-rulesdir-0.2.0.tgz#0d729e3f11bcb1a18d9b724a29a6d1a082ac2d62" + integrity sha512-PPQPCsPkzF3upl1862swPA1bmDAAHKHmJJ4JTHJ11JCVCU4sycB0K5LLA/Rwr6r4VbnpScvUvHV4hqfdjvFmhQ== + eslint-scope@3.7.1: version "3.7.1" resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-3.7.1.tgz#3d63c3edfda02e06e01a452ad88caacc7cdcb6e8" @@ -6297,6 +6495,13 @@ eslint-utils@^2.1.0: dependencies: eslint-visitor-keys "^1.1.0" +eslint-utils@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-3.0.0.tgz#8aebaface7345bb33559db0a1f13a1d2d48c3672" + integrity sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA== + dependencies: + eslint-visitor-keys "^2.0.0" + eslint-visitor-keys@^1.0.0, eslint-visitor-keys@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.1.0.tgz#e2a82cea84ff246ad6fb57f9bde5b46621459ec2" @@ -6393,6 +6598,52 @@ eslint@^7.13.0: text-table "^0.2.0" v8-compile-cache "^2.0.3" +eslint@^7.30.0: + version "7.30.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.30.0.tgz#6d34ab51aaa56112fd97166226c9a97f505474f8" + integrity sha512-VLqz80i3as3NdloY44BQSJpFw534L9Oh+6zJOUaViV4JPd+DaHwutqP7tcpkW3YiXbK6s05RZl7yl7cQn+lijg== + dependencies: + "@babel/code-frame" "7.12.11" + "@eslint/eslintrc" "^0.4.2" + "@humanwhocodes/config-array" "^0.5.0" + ajv "^6.10.0" + chalk "^4.0.0" + cross-spawn "^7.0.2" + debug "^4.0.1" + doctrine "^3.0.0" + enquirer "^2.3.5" + escape-string-regexp "^4.0.0" + eslint-scope "^5.1.1" + eslint-utils "^2.1.0" + eslint-visitor-keys "^2.0.0" + espree "^7.3.1" + esquery "^1.4.0" + esutils "^2.0.2" + fast-deep-equal "^3.1.3" + file-entry-cache "^6.0.1" + functional-red-black-tree "^1.0.1" + glob-parent "^5.1.2" + globals "^13.6.0" + ignore "^4.0.6" + import-fresh "^3.0.0" + imurmurhash "^0.1.4" + is-glob "^4.0.0" + js-yaml "^3.13.1" + json-stable-stringify-without-jsonify "^1.0.1" + levn "^0.4.1" + lodash.merge "^4.6.2" + minimatch "^3.0.4" + natural-compare "^1.4.0" + optionator "^0.9.1" + progress "^2.0.0" + regexpp "^3.1.0" + semver "^7.2.1" + strip-ansi "^6.0.0" + strip-json-comments "^3.1.0" + table "^6.0.9" + text-table "^0.2.0" + v8-compile-cache "^2.0.3" + esm@^3.2.25: version "3.2.25" resolved "https://registry.yarnpkg.com/esm/-/esm-3.2.25.tgz#342c18c29d56157688ba5ce31f8431fbb795cc10" @@ -6413,6 +6664,15 @@ espree@^7.3.0: acorn-jsx "^5.2.0" eslint-visitor-keys "^1.3.0" +espree@^7.3.1: + version "7.3.1" + resolved "https://registry.yarnpkg.com/espree/-/espree-7.3.1.tgz#f2df330b752c6f55019f8bd89b7660039c1bbbb6" + integrity sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g== + dependencies: + acorn "^7.4.0" + acorn-jsx "^5.3.1" + eslint-visitor-keys "^1.3.0" + esprima@^4.0.0, esprima@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" @@ -6423,6 +6683,13 @@ esquery@^1.0.1, esquery@^1.2.0: dependencies: estraverse "^5.1.0" +esquery@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.4.0.tgz#2148ffc38b82e8c7057dfed48425b3e61f0f24a5" + integrity sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w== + dependencies: + estraverse "^5.1.0" + esrecurse@^4.1.0: version "4.2.1" resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.2.1.tgz#007a3b9fdbc2b3bb87e4879ea19c92fdbd3942cf" @@ -6537,6 +6804,21 @@ execa@^4.0.0: signal-exit "^3.0.2" strip-final-newline "^2.0.0" +execa@^5.0.0: + version "5.1.1" + resolved "https://registry.yarnpkg.com/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd" + integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg== + dependencies: + cross-spawn "^7.0.3" + get-stream "^6.0.0" + human-signals "^2.1.0" + is-stream "^2.0.0" + merge-stream "^2.0.0" + npm-run-path "^4.0.1" + onetime "^5.1.2" + signal-exit "^3.0.3" + strip-final-newline "^2.0.0" + executable@^4.1.0: version "4.1.1" resolved "https://registry.yarnpkg.com/executable/-/executable-4.1.1.tgz#41532bff361d3e57af4d763b70582db18f5d133c" @@ -6765,6 +7047,11 @@ fast-deep-equal@^3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz#545145077c501491e33b15ec408c294376e94ae4" +fast-deep-equal@^3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" + integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== + fast-diff@^1.1.2: version "1.2.0" resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.2.0.tgz#73ee11982d86caaf7959828d519cfe927fac5f03" @@ -6880,6 +7167,13 @@ file-entry-cache@^5.0.1: dependencies: flat-cache "^2.0.1" +file-entry-cache@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" + integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== + dependencies: + flat-cache "^3.0.4" + file-loader@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-2.0.0.tgz#39749c82f020b9e85901dcff98e8004e6401cfde" @@ -7086,10 +7380,23 @@ flat-cache@^2.0.1: rimraf "2.6.3" write "1.0.3" +flat-cache@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.0.4.tgz#61b0338302b2fe9f957dcc32fc2a87f1c3048b11" + integrity sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg== + dependencies: + flatted "^3.1.0" + rimraf "^3.0.2" + flatted@^2.0.0: version "2.0.2" resolved "https://registry.yarnpkg.com/flatted/-/flatted-2.0.2.tgz#4575b21e2bcee7434aa9be662f4b7b5f9c2b5138" +flatted@^3.1.0: + version "3.2.1" + resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.1.tgz#bbef080d95fca6709362c73044a1634f7c6e7d05" + integrity sha512-OMQjaErSFHmHqZe+PSidH5n8j3O0F2DdnVh8JB4j4eUQ2k6KvB0qGfrKIhapvez5JerBbmWkaLYUYWISaESoXg== + flush-write-stream@^1.0.0: version "1.1.1" resolved "https://registry.yarnpkg.com/flush-write-stream/-/flush-write-stream-1.1.1.tgz#8dd7d873a1babc207d94ead0c2e0e44276ebf2e8" @@ -7226,7 +7533,7 @@ fsevents@^2.1.2, fsevents@~2.1.2: version "2.1.3" resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.1.3.tgz#fb738703ae8d2f9fe900c33836ddebee8b97f23e" -fsevents@^2.2.0: +fsevents@^2.2.0, fsevents@~2.3.2: version "2.3.2" resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== @@ -7301,6 +7608,11 @@ get-stream@^5.0.0, get-stream@^5.1.0: dependencies: pump "^3.0.0" +get-stream@^6.0.0: + version "6.0.1" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" + integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== + get-value@^2.0.3, get-value@^2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" @@ -7349,11 +7661,18 @@ glob-parent@^5.0.0, glob-parent@^5.1.0, glob-parent@~5.1.0: dependencies: is-glob "^4.0.1" +glob-parent@^5.1.2, glob-parent@~5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" + integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== + dependencies: + is-glob "^4.0.1" + glob-to-regexp@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz#8c5a1494d2066c570cc3bfe4496175acc4d502ab" -glob@^7.0.3, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: +glob@7.1.6, glob@^7.0.3, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: version "7.1.6" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" dependencies: @@ -7422,6 +7741,13 @@ globals@^12.1.0: dependencies: type-fest "^0.8.1" +globals@^13.6.0, globals@^13.9.0: + version "13.10.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-13.10.0.tgz#60ba56c3ac2ca845cfbf4faeca727ad9dd204676" + integrity sha512-piHC3blgLGFjvOuMmWZX60f+na1lXFDhQXBf1UYp2fXPXqvEUbOhNwi6BsQ0bQishwedgnjkwv1d9zKf+MWw3g== + dependencies: + type-fest "^0.20.2" + globals@^9.18.0: version "9.18.0" resolved "https://registry.yarnpkg.com/globals/-/globals-9.18.0.tgz#aa3896b3e69b487f17e31ed2143d69a8e30c2d8a" @@ -7450,6 +7776,18 @@ globby@^11.0.1: merge2 "^1.3.0" slash "^3.0.0" +globby@^11.0.3: + version "11.0.4" + resolved "https://registry.yarnpkg.com/globby/-/globby-11.0.4.tgz#2cbaff77c2f2a62e71e9b2813a67b97a3a3001a5" + integrity sha512-9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg== + dependencies: + array-union "^2.1.0" + dir-glob "^3.0.1" + fast-glob "^3.1.1" + ignore "^5.1.4" + merge2 "^1.3.0" + slash "^3.0.0" + globby@^6.1.0: version "6.1.0" resolved "https://registry.yarnpkg.com/globby/-/globby-6.1.0.tgz#f5a6d70e8395e21c858fb0489d64df02424d506c" @@ -7953,6 +8291,11 @@ human-signals@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-1.1.1.tgz#c5b1cd14f50aeae09ab6c59fe63ba3395fe4dfa3" +human-signals@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" + integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== + humanize-ms@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/humanize-ms/-/humanize-ms-1.2.1.tgz#c46e3159a293f6b896da29316d8b6fe8bb79bbed" @@ -8074,6 +8417,13 @@ import-cwd@^2.0.0: dependencies: import-from "^2.1.0" +import-cwd@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/import-cwd/-/import-cwd-3.0.0.tgz#20845547718015126ea9b3676b7592fb8bd4cf92" + integrity sha512-4pnzH16plW+hgvRECbDWpQl3cqtvSofHWh44met7ESfZ8UZOWWddm8hEyDTqREJ9RbYHY8gi8DqmaelApoOGMg== + dependencies: + import-from "^3.0.0" + import-fresh@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-2.0.0.tgz#d81355c15612d386c61f9ddd3922d4304822a546" @@ -8101,6 +8451,13 @@ import-from@^2.1.0: dependencies: resolve-from "^3.0.0" +import-from@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/import-from/-/import-from-3.0.0.tgz#055cfec38cd5a27d8057ca51376d7d3bf0891966" + integrity sha512-CiuXOFFSzkU5x/CR0+z7T91Iht4CXgfCxVOFRhh2Zyhg5wOpWvvDLQUsWl+gcN+QscYBjez8hDCt85O7RLDttQ== + dependencies: + resolve-from "^5.0.0" + import-lazy@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/import-lazy/-/import-lazy-3.1.0.tgz#891279202c8a2280fdbd6674dbd8da1a1dfc67cc" @@ -9778,6 +10135,11 @@ jmespath@0.15.0: version "0.15.0" resolved "https://registry.yarnpkg.com/jmespath/-/jmespath-0.15.0.tgz#a3f222a9aae9f966f5d27c796510e28091764217" +joycon@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/joycon/-/joycon-3.0.1.tgz#9074c9b08ccf37a6726ff74a18485f85efcaddaf" + integrity sha512-SJcJNBg32dGgxhPtM0wQqxqV0ax9k/9TaUskGDSJkSFSQOEWWvQ3zzWdGQRIUry2j1zA5+ReH13t0Mf3StuVZA== + "js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" @@ -9920,6 +10282,11 @@ json-schema-traverse@^0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" +json-schema-traverse@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2" + integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== + json-schema@0.2.3: version "0.2.3" resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" @@ -10133,6 +10500,11 @@ liftoff@3.1.0: rechoir "^0.6.2" resolve "^1.1.7" +lilconfig@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-2.0.3.tgz#68f3005e921dafbd2a2afb48379986aa6d2579fd" + integrity sha512-EHKqr/+ZvdKCifpNrJCKxBTgk5XupZA3y/aCPY9mxfgBzmgh93Mt/WqjjQ38oMxXuvDokaKiM3lAgvSH2sjtHg== + lines-and-columns@^1.1.6: version "1.1.6" resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.1.6.tgz#1c00c743b433cd0a4e80758f7b64a57440d9ff00" @@ -10214,14 +10586,29 @@ locate-path@^5.0.0: dependencies: p-locate "^4.1.0" +lodash.clonedeep@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef" + integrity sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8= + lodash.memoize@^4.1.2: version "4.1.2" resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" +lodash.merge@^4.6.2: + version "4.6.2" + resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" + integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== + lodash.sortby@^4.7.0: version "4.7.0" resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438" +lodash.truncate@^4.4.2: + version "4.4.2" + resolved "https://registry.yarnpkg.com/lodash.truncate/-/lodash.truncate-4.4.2.tgz#5a350da0b1113b837ecfffd5812cbe58d6eae193" + integrity sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM= + lodash.uniq@^4.5.0: version "4.5.0" resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" @@ -10789,15 +11176,15 @@ ms@2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" +ms@2.1.2, ms@^2.1.1: + version "2.1.2" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" + ms@^2.0.0: version "2.1.3" resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== -ms@^2.1.1: - version "2.1.2" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" - multicast-dns-service-types@^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" @@ -10835,6 +11222,15 @@ mute-stream@0.0.8: version "0.0.8" resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" +mz@^2.7.0: + version "2.7.0" + resolved "https://registry.yarnpkg.com/mz/-/mz-2.7.0.tgz#95008057a56cafadc2bc63dde7f9ff6955948e32" + integrity sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q== + dependencies: + any-promise "^1.0.0" + object-assign "^4.0.1" + thenify-all "^1.0.0" + nan@^2.12.1: version "2.14.1" resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.1.tgz#d7be34dfa3105b91494c3147089315eff8874b01" @@ -11175,7 +11571,7 @@ npm-run-path@^2.0.0: dependencies: path-key "^2.0.0" -npm-run-path@^4.0.0: +npm-run-path@^4.0.0, npm-run-path@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" dependencies: @@ -11343,6 +11739,13 @@ onetime@^5.1.0: dependencies: mimic-fn "^2.1.0" +onetime@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" + integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== + dependencies: + mimic-fn "^2.1.0" + open@^7.0.4: version "7.4.2" resolved "https://registry.yarnpkg.com/open/-/open-7.4.2.tgz#b8147e26dcf3e426316c730089fd71edd29c2321" @@ -11980,6 +12383,15 @@ postcss-load-config@^2.0.0: cosmiconfig "^5.0.0" import-cwd "^2.0.0" +postcss-load-config@^3.0.1: + version "3.1.0" + resolved "https://registry.yarnpkg.com/postcss-load-config/-/postcss-load-config-3.1.0.tgz#d39c47091c4aec37f50272373a6a648ef5e97829" + integrity sha512-ipM8Ds01ZUophjDTQYSVP70slFSYg3T0/zyfII5vzhN6V57YSxMgG5syXuwi5VtS8wSf3iL30v0uBdoIVx4Q0g== + dependencies: + import-cwd "^3.0.0" + lilconfig "^2.0.3" + yaml "^1.10.2" + postcss-loader@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/postcss-loader/-/postcss-loader-3.0.0.tgz#6b97943e47c72d845fa9e03f273773d4e8dd6c2d" @@ -12819,6 +13231,13 @@ readdirp@~3.4.0: dependencies: picomatch "^2.2.1" +readdirp@~3.6.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" + integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== + dependencies: + picomatch "^2.2.1" + realpath-native@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/realpath-native/-/realpath-native-1.1.0.tgz#2003294fea23fb0672f2476ebe22fcf498a2d65c" @@ -13038,6 +13457,11 @@ require-directory@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" +require-from-string@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" + integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== + require-main-filename@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1" @@ -13188,6 +13612,13 @@ ripemd160@^2.0.0, ripemd160@^2.0.1: hash-base "^3.0.0" inherits "^2.0.1" +rollup@^2.45.2: + version "2.53.1" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.53.1.tgz#b60439efd1eb41bdb56630509bd99aae78b575d3" + integrity sha512-yiTCvcYXZEulNWNlEONOQVlhXA/hgxjelFSjNcrwAAIfYx/xqjSHwqg/cCaWOyFRKr+IQBaXwt723m8tCaIUiw== + optionalDependencies: + fsevents "~2.3.2" + rollup@~2.37.1: version "2.37.1" resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.37.1.tgz#aa7aadffd75c80393f9314f9857e851b0ffd34e7" @@ -13501,7 +13932,7 @@ side-channel@^1.0.2: es-abstract "^1.17.0-next.1" object-inspect "^1.7.0" -signal-exit@^3.0.0, signal-exit@^3.0.2: +signal-exit@^3.0.0, signal-exit@^3.0.2, signal-exit@^3.0.3: version "3.0.3" resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c" @@ -13564,6 +13995,15 @@ slice-ansi@^2.1.0: astral-regex "^1.0.0" is-fullwidth-code-point "^2.0.0" +slice-ansi@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-4.0.0.tgz#500e8dd0fd55b05815086255b3195adf2a45fe6b" + integrity sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ== + dependencies: + ansi-styles "^4.0.0" + astral-regex "^2.0.0" + is-fullwidth-code-point "^3.0.0" + smart-buffer@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/smart-buffer/-/smart-buffer-4.1.0.tgz#91605c25d91652f4661ea69ccf45f1b331ca21ba" @@ -14080,6 +14520,18 @@ stylehacks@^4.0.0: postcss "^7.0.0" postcss-selector-parser "^3.0.0" +sucrase@^3.18.1: + version "3.20.0" + resolved "https://registry.yarnpkg.com/sucrase/-/sucrase-3.20.0.tgz#a80e865830e27d66a912c938491d474164b06205" + integrity sha512-Rsp+BX7DRuCleJvBAHN7gQ3ddk7U0rJev19XlIBF6dAq9vX4Tr5mHk4E7+ig/I7BM3DLYotCmm20lfBElT2XtQ== + dependencies: + commander "^4.0.0" + glob "7.1.6" + lines-and-columns "^1.1.6" + mz "^2.7.0" + pirates "^4.0.1" + ts-interface-checker "^0.1.9" + superagent@6.1.0: version "6.1.0" resolved "https://registry.yarnpkg.com/superagent/-/superagent-6.1.0.tgz#09f08807bc41108ef164cfb4be293cebd480f4a6" @@ -14167,6 +14619,18 @@ table@^5.2.3: slice-ansi "^2.1.0" string-width "^3.0.0" +table@^6.0.9: + version "6.7.1" + resolved "https://registry.yarnpkg.com/table/-/table-6.7.1.tgz#ee05592b7143831a8c94f3cee6aae4c1ccef33e2" + integrity sha512-ZGum47Yi6KOOFDE8m223td53ath2enHcYLgOCjGr5ngu8bdIARQk6mN/wRMv4yMRcHnCSnHbCEha4sobQx5yWg== + dependencies: + ajv "^8.0.1" + lodash.clonedeep "^4.5.0" + lodash.truncate "^4.4.2" + slice-ansi "^4.0.0" + string-width "^4.2.0" + strip-ansi "^6.0.0" + tapable@^1.0.0, tapable@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.3.tgz#a1fccc06b58db61fd7a45da2da44f5f3a3e67ba2" @@ -14323,6 +14787,20 @@ then-read-stream@^1.5.0: version "1.5.1" resolved "https://registry.yarnpkg.com/then-read-stream/-/then-read-stream-1.5.1.tgz#466a6ee5683895e8c0d4b0bc218b525bd66a6069" +thenify-all@^1.0.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/thenify-all/-/thenify-all-1.6.0.tgz#1a1918d402d8fc3f98fbf234db0bcc8cc10e9726" + integrity sha1-GhkY1ALY/D+Y+/I02wvMjMEOlyY= + dependencies: + thenify ">= 3.1.0 < 4" + +"thenify@>= 3.1.0 < 4": + version "3.3.1" + resolved "https://registry.yarnpkg.com/thenify/-/thenify-3.3.1.tgz#8932e686a4066038a016dd9e2ca46add9838a95f" + integrity sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw== + dependencies: + any-promise "^1.0.0" + throat@^4.0.0: version "4.1.0" resolved "https://registry.yarnpkg.com/throat/-/throat-4.1.0.tgz#89037cbc92c56ab18926e6ba4cbb200e15672a6a" @@ -14502,6 +14980,11 @@ tryer@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/tryer/-/tryer-1.0.1.tgz#f2c85406800b9b0f74c9f7465b81eaad241252f8" +ts-interface-checker@^0.1.9: + version "0.1.13" + resolved "https://registry.yarnpkg.com/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz#784fd3d679722bc103b1b4b8030bcddb5db2a699" + integrity sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA== + ts-node@^8.10.2: version "8.10.2" resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-8.10.2.tgz#eee03764633b1234ddd37f8db9ec10b75ec7fb8d" @@ -14524,12 +15007,38 @@ tsscmp@1.0.6: version "1.0.6" resolved "https://registry.yarnpkg.com/tsscmp/-/tsscmp-1.0.6.tgz#85b99583ac3589ec4bfef825b5000aa911d605eb" +tsup@^4.12.5: + version "4.12.5" + resolved "https://registry.yarnpkg.com/tsup/-/tsup-4.12.5.tgz#fefbee2b32b244dd3f6c01986f8ab68e7ab83fc3" + integrity sha512-3f0StcX+trOZvgaY/iU11U8HvvQ4v/LLgoP9OmxtOQVXP8e/Q8FSk69d0bXFb2pHB77CmVxvqiWdwybELQfx1A== + dependencies: + cac "^6.7.2" + chalk "^4.1.0" + chokidar "^3.5.1" + debug "^4.3.1" + esbuild "^0.12.9" + execa "^5.0.0" + globby "^11.0.3" + joycon "^3.0.1" + postcss-load-config "^3.0.1" + resolve-from "^5.0.0" + rollup "^2.45.2" + sucrase "^3.18.1" + tree-kill "^1.2.2" + tsutils@^3.17.1: version "3.17.1" resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.17.1.tgz#ed719917f11ca0dee586272b2ac49e015a2dd759" dependencies: tslib "^1.8.1" +tsutils@^3.21.0: + version "3.21.0" + resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623" + integrity sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA== + dependencies: + tslib "^1.8.1" + tty-browserify@0.0.0: version "0.0.0" resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6" @@ -14577,6 +15086,11 @@ type-fest@^0.11.0: version "0.11.0" resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.11.0.tgz#97abf0872310fed88a5c466b25681576145e33f1" +type-fest@^0.20.2: + version "0.20.2" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" + integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== + type-fest@^0.6.0: version "0.6.0" resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.6.0.tgz#8d2a2370d3df886eb5c90ada1c5bf6188acf838b" @@ -14615,6 +15129,11 @@ typescript@^4.1.2: resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.1.2.tgz#6369ef22516fe5e10304aae5a5c4862db55380e9" integrity sha512-thGloWsGH3SOxv1SoY7QojKi0tc+8FnOmiarEGMbd/lar7QOEd3hvlx3Fp5y6FlDUGl9L+pd4n2e+oToGMmhRQ== +typescript@^4.3.5: + version "4.3.5" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.3.5.tgz#4d1c37cc16e893973c45a06886b7113234f119f4" + integrity sha512-DqQgihaQ9cUrskJo9kIyW/+g0Vxsk8cDtZ52a3NGh0YNTfpUSArXSohyUGnvbPazEPLu398C0UxmKSOrPumUzA== + uglify-js@3.4.x: version "3.4.10" resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.4.10.tgz#9ad9563d8eb3acdfb8d38597d2af1d815f6a755f" @@ -15402,6 +15921,11 @@ yallist@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" +yaml@^1.10.2: + version "1.10.2" + resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b" + integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== + yargs-parser@^13.1.0, yargs-parser@^13.1.2: version "13.1.2" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.2.tgz#130f09702ebaeef2650d54ce6e3e5706f7a4fb38"