From 9ded1acbf5643abd6afbc0e50208457a8e060b9a Mon Sep 17 00:00:00 2001 From: Jordan Eldredge Date: Fri, 3 Jul 2020 21:21:31 -0700 Subject: [PATCH] Move modern code out of sub directory --- packages/webamp-modern/.eslintrc | 1 - packages/webamp-modern/.gitignore | 1 - packages/webamp-modern/.prettierignore | 2 - packages/webamp-modern/{modern => }/README.md | 4 +- .../{demo => }/config/webpack.common.js | 10 +-- .../{demo => }/config/webpack.dev.js | 0 .../webamp-modern/config/webpack.library.js | 58 ------------------ .../{demo => }/config/webpack.prod.js | 0 .../webamp-modern/demo/mp3/llama-2.91.mp3 | Bin 38789 -> 0 bytes packages/webamp-modern/eslint-local-rules.js | 6 +- .../{modern => }/eslint/maki-class.js | 0 .../{modern => }/eslint/maki-eslint-utils.js | 0 .../{modern => }/eslint/maki-method-types.js | 2 +- .../eslint/maki-missing-methods.js | 0 .../webamp-modern/{modern => }/index.html | 0 packages/webamp-modern/{modern => }/maki.md | 0 packages/webamp-modern/modern/.eslintrc | 6 -- packages/webamp-modern/package.json | 6 +- .../{modern => }/resources/SimpleTutorial.wal | Bin .../Winamp-Modern-Skins-Tutorial.pdf | Bin .../resources/attribute-skin-data.json | 0 .../resources/fixtures/issue_898/minimal.m | 0 .../resources/fixtures/issue_898/minimal.maki | Bin .../fixtures/issue_898/multipass_system.maki | Bin .../resources/fixtures/standardframe.m | 0 .../resources/fixtures/standardframe.maki | Bin .../resources/maki-skin-data.json | 0 .../extra/nde_specs_v1.txt | 0 .../Unknown (Winamp 5.03)/lib/config.mi | 0 .../Unknown (Winamp 5.03)/lib/std.mi | 0 .../Unknown (Winamp 5.03)/readme.md | 0 .../Lib/customseek.m | 0 .../Lib/dragvolume.m | 0 .../Lib/rotationlayer.m | 0 .../v1.1.0.a9 (Winamp 3 alpha 8r)/Lib/std.mi | 0 .../hello_world.m | 0 .../hello_world.maki | Bin .../v1.1.0.a9 (Winamp 3 alpha 8r)/mc.exe | Bin .../Lib/centerlayer.m | 0 .../Lib/config.mi | 0 .../Lib/customseek.m | 0 .../Lib/dragvolume.m | 0 .../Lib/pldir.mi | 0 .../Lib/rotationlayer.m | 0 .../Lib/std.mi | 0 .../basicTests.m | 0 .../basicTests.maki | Bin .../hello_world.m | 0 .../hello_world.maki | Bin .../v1.1.1.b3 (Winamp 3.0 build 488d)/mc.exe | Bin .../simpleFunctions.m | 0 .../simpleFunctions.maki | Bin .../Lib/avswitcher.m | 0 .../Lib/buttonsounds.m | 0 .../Lib/centerlayer.m | 0 .../v1.1.1.b3 (Winamp 3.0 full)/Lib/config.mi | 0 .../v1.1.1.b3 (Winamp 3.0 full)/Lib/core.mi | 0 .../Lib/customseek.m | 0 .../Lib/dragvolume.m | 0 .../Lib/dumpcscript.m | 0 .../v1.1.1.b3 (Winamp 3.0 full)/Lib/pldir.mi | 0 .../Lib/rotationlayer.m | 0 .../v1.1.1.b3 (Winamp 3.0 full)/Lib/std.mi | 0 .../v1.1.1.b3 (Winamp 3.0 full)/basicTests.m | 0 .../basicTests.maki | Bin .../v1.1.1.b3 (Winamp 3.0 full)/hello_world.m | 0 .../hello_world.maki | Bin .../v1.1.1.b3 (Winamp 3.0 full)/mc.exe | Bin .../simpleFunctions.m | 0 .../simpleFunctions.maki | Bin .../v1.1.13 (Winamp 5.02)/basicTests.m | 0 .../v1.1.13 (Winamp 5.02)/basicTests.maki | Bin .../v1.1.13 (Winamp 5.02)/hello_world.m | 0 .../v1.1.13 (Winamp 5.02)/hello_world.maki | Bin .../v1.1.13 (Winamp 5.02)/lib/std.mi | 0 .../v1.1.13 (Winamp 5.02)/mc.exe | Bin .../v1.1.13 (Winamp 5.02)/simpleFunctions.m | 0 .../simpleFunctions.maki | Bin .../v1.2.0 (Winamp 5.66)/basicTests.m | 0 .../v1.2.0 (Winamp 5.66)/basicTests.maki | Bin .../v1.2.0 (Winamp 5.66)/hello_world.m | 0 .../v1.2.0 (Winamp 5.66)/hello_world.maki | Bin .../v1.2.0 (Winamp 5.66)/lib/application.mi | 0 .../v1.2.0 (Winamp 5.66)/lib/colormgr.mi | 0 .../lib/com/AutoRepeatButton.m | 0 .../lib/com/centerlayer.m | 0 .../v1.2.0 (Winamp 5.66)/lib/com/customseek.m | 0 .../v1.2.0 (Winamp 5.66)/lib/com/debug.m | 0 .../lib/com/dispatch_ifc.m | 0 .../v1.2.0 (Winamp 5.66)/lib/com/dragvolume.m | 0 .../v1.2.0 (Winamp 5.66)/lib/com/fillbar.m | 0 .../v1.2.0 (Winamp 5.66)/lib/com/glow.m | 0 .../v1.2.0 (Winamp 5.66)/lib/com/glowobject.m | 0 .../lib/com/rotationlayer.m | 0 .../v1.2.0 (Winamp 5.66)/lib/com/songinfo.m | 0 .../v1.2.0 (Winamp 5.66)/lib/config.mi | 0 .../v1.2.0 (Winamp 5.66)/lib/core.mi | 0 .../v1.2.0 (Winamp 5.66)/lib/exd.mi | 0 .../v1.2.0 (Winamp 5.66)/lib/fileio.mi | 0 .../v1.2.0 (Winamp 5.66)/lib/pldir.mi | 0 .../v1.2.0 (Winamp 5.66)/lib/std.mi | 0 .../v1.2.0 (Winamp 5.66)/lib/winampconfig.mi | 0 .../maki_compiler/v1.2.0 (Winamp 5.66)/mc.exe | Bin .../v1.2.0 (Winamp 5.66)/nscrt.dll | Bin .../v1.2.0 (Winamp 5.66)/simpleFunctions.m | 0 .../v1.2.0 (Winamp 5.66)/simpleFunctions.maki | Bin .../resources/maki_decompiler_1.1/COPYING | 0 .../maki_decompiler_1.1/PerlAmp/Maki/Code.pm | 0 .../PerlAmp/Maki/Command.pm | 0 .../PerlAmp/Maki/Objects.pm | 0 .../maki_decompiler_1.1/PerlAmp/Maki/Parse.pm | 0 .../PerlAmp/Maki/Variable.pm | 0 .../resources/maki_decompiler_1.1/README | 0 .../maki_decompiler_1.1/makiToPerl.pm | 0 .../resources/maki_decompiler_1.1/mdc.pl | 0 .../tool/extract_objects.pl | 0 .../testSkins/sameObject/container.xml | 0 .../resources/testSkins/sameObject/script.m | 0 .../testSkins/sameObject/script.maki | Bin .../resources/testSkins/sameObject/skin.xml | 0 .../testSkins/simpleClick/container.xml | 0 .../resources/testSkins/simpleClick/script.m | 0 .../testSkins/simpleClick/script.maki | Bin .../resources/testSkins/simpleClick/skin.xml | 0 .../{modern => }/skins/CornerAmp_Redux.wal | Bin .../{modern => }/skins/simple.wal | Bin .../webamp-modern/{modern => }/src/Actions.ts | 0 .../webamp-modern/{modern => }/src/App.css | 0 .../webamp-modern/{modern => }/src/App.js | 0 .../{modern => }/src/Dashboard.js | 0 .../webamp-modern/{modern => }/src/Emitter.ts | 0 .../{modern => }/src/Selectors.ts | 0 .../webamp-modern/{modern => }/src/Sidebar.js | 0 .../__snapshots__/objects.test.js.snap | 0 .../__snapshots__/utils.test.js.snap | 0 .../src/__tests__/integration.test.js | 0 .../src/__tests__/objects.test.js | 0 .../{modern => }/src/__tests__/parser.test.js | 0 .../src/__tests__/testConstants.js | 0 .../{modern => }/src/__tests__/utils.test.js | 0 .../src/__tests__/virtualMachine.test.js | 0 .../src/components/DropTarget.tsx | 0 .../{modern => }/src/debugger/Command.js | 0 .../{modern => }/src/debugger/Value.js | 0 .../{modern => }/src/debugger/Variable.js | 0 .../{modern => }/src/debugger/index.js | 0 .../webamp-modern/{modern => }/src/index.css | 0 .../webamp-modern/{modern => }/src/index.js | 0 .../{modern => }/src/initialize.js | 0 .../{modern => }/src/initializeStateTree.ts | 0 .../webamp-modern/{modern => }/src/logo.svg | 0 .../src/maki-interpreter/constants.js | 0 .../src/maki-interpreter/interpreter.js | 0 .../maki-interpreter/objectData/config.json | 0 .../maki-interpreter/objectData/pldir.json | 0 .../src/maki-interpreter/objectData/std.json | 0 .../maki-interpreter/objectData/stdPatched.js | 0 .../src/maki-interpreter/objects.js | 0 .../src/maki-interpreter/parser.js | 0 .../src/maki-interpreter/prettyPrinter.js | 0 .../src/maki-interpreter/readme.md | 0 .../tools/build-typescript-interfaces.js | 0 .../tools/extract-attributes.js | 0 .../tools/extract-functions.js | 0 .../tools/extract-maki-files.js | 0 .../tools/extract-object-types.js | 0 .../src/maki-interpreter/tools/parse-mi.js | 0 .../maki-interpreter/tools/parse-mi.test.js | 0 .../src/maki-interpreter/variable.js | 0 .../src/maki-interpreter/virtualMachine.js | 0 .../{modern => }/src/runtime/.eslintrc | 0 .../{modern => }/src/runtime/AlbumArtLayer.ts | 0 .../{modern => }/src/runtime/AnimatedLayer.ts | 0 .../{modern => }/src/runtime/BitList.ts | 0 .../{modern => }/src/runtime/Browser.ts | 0 .../{modern => }/src/runtime/Button.ts | 0 .../{modern => }/src/runtime/CfgGroup.ts | 0 .../{modern => }/src/runtime/CheckBox.ts | 0 .../src/runtime/ComponentBucket.ts | 0 .../{modern => }/src/runtime/Config.ts | 0 .../src/runtime/ConfigAttribute.ts | 0 .../{modern => }/src/runtime/ConfigItem.ts | 0 .../{modern => }/src/runtime/Container.ts | 0 .../{modern => }/src/runtime/DropDownList.ts | 0 .../{modern => }/src/runtime/Edit.ts | 0 .../{modern => }/src/runtime/EqVis.ts | 0 .../{modern => }/src/runtime/FeedWatcher.ts | 0 .../{modern => }/src/runtime/Form.ts | 0 .../{modern => }/src/runtime/Frame.ts | 0 .../{modern => }/src/runtime/Group.ts | 0 .../{modern => }/src/runtime/GroupList.ts | 0 .../{modern => }/src/runtime/GuiList.ts | 0 .../{modern => }/src/runtime/GuiObject.ts | 0 .../{modern => }/src/runtime/GuiTree.ts | 0 .../{modern => }/src/runtime/JsElements.ts | 0 .../{modern => }/src/runtime/JsGammaSet.ts | 0 .../{modern => }/src/runtime/JsGroupDef.ts | 0 .../{modern => }/src/runtime/JsScript.ts | 0 .../src/runtime/JsWinampAbstractionLayer.ts | 0 .../{modern => }/src/runtime/Layer.ts | 0 .../{modern => }/src/runtime/Layout.ts | 0 .../{modern => }/src/runtime/LayoutStatus.ts | 0 .../{modern => }/src/runtime/List.ts | 0 .../{modern => }/src/runtime/MakiMap.ts | 0 .../{modern => }/src/runtime/MakiObject.ts | 0 .../{modern => }/src/runtime/Menu.ts | 0 .../{modern => }/src/runtime/MenuButton.ts | 0 .../{modern => }/src/runtime/MouseRedir.ts | 0 .../{modern => }/src/runtime/PlDir.ts | 0 .../{modern => }/src/runtime/PlEdit.ts | 0 .../{modern => }/src/runtime/PopupMenu.ts | 0 .../{modern => }/src/runtime/QueryList.ts | 0 .../{modern => }/src/runtime/Region.ts | 0 .../{modern => }/src/runtime/Slider.ts | 0 .../{modern => }/src/runtime/Status.ts | 0 .../{modern => }/src/runtime/System.ts | 0 .../{modern => }/src/runtime/TabSheet.ts | 0 .../{modern => }/src/runtime/Text.ts | 0 .../{modern => }/src/runtime/Timer.ts | 0 .../{modern => }/src/runtime/Title.ts | 0 .../{modern => }/src/runtime/ToggleButton.ts | 0 .../{modern => }/src/runtime/TreeItem.ts | 0 .../{modern => }/src/runtime/Vis.ts | 0 .../{modern => }/src/runtime/Wac.ts | 0 .../{modern => }/src/runtime/WindowHolder.ts | 0 .../{modern => }/src/runtime/index.ts | 0 .../webamp-modern/{modern => }/src/store.ts | 0 .../webamp-modern/{modern => }/src/types.ts | 0 .../webamp-modern/{modern => }/src/utils.ts | 0 packages/webamp-modern/static.d.ts | 1 - packages/webamp-modern/tsconfig.json | 2 +- 231 files changed, 15 insertions(+), 84 deletions(-) rename packages/webamp-modern/{modern => }/README.md (92%) rename packages/webamp-modern/{demo => }/config/webpack.common.js (89%) rename packages/webamp-modern/{demo => }/config/webpack.dev.js (100%) delete mode 100644 packages/webamp-modern/config/webpack.library.js rename packages/webamp-modern/{demo => }/config/webpack.prod.js (100%) delete mode 100644 packages/webamp-modern/demo/mp3/llama-2.91.mp3 rename packages/webamp-modern/{modern => }/eslint/maki-class.js (100%) rename packages/webamp-modern/{modern => }/eslint/maki-eslint-utils.js (100%) rename packages/webamp-modern/{modern => }/eslint/maki-method-types.js (98%) rename packages/webamp-modern/{modern => }/eslint/maki-missing-methods.js (100%) rename packages/webamp-modern/{modern => }/index.html (100%) rename packages/webamp-modern/{modern => }/maki.md (100%) delete mode 100644 packages/webamp-modern/modern/.eslintrc rename packages/webamp-modern/{modern => }/resources/SimpleTutorial.wal (100%) rename packages/webamp-modern/{modern => }/resources/Winamp-Modern-Skins-Tutorial.pdf (100%) rename packages/webamp-modern/{modern => }/resources/attribute-skin-data.json (100%) rename packages/webamp-modern/{modern => }/resources/fixtures/issue_898/minimal.m (100%) rename packages/webamp-modern/{modern => }/resources/fixtures/issue_898/minimal.maki (100%) rename packages/webamp-modern/{modern => }/resources/fixtures/issue_898/multipass_system.maki (100%) rename packages/webamp-modern/{modern => }/resources/fixtures/standardframe.m (100%) rename packages/webamp-modern/{modern => }/resources/fixtures/standardframe.maki (100%) rename packages/webamp-modern/{modern => }/resources/maki-skin-data.json (100%) rename packages/webamp-modern/{modern => }/resources/maki_compiler/Unknown (Winamp 5.03)/extra/nde_specs_v1.txt (100%) rename packages/webamp-modern/{modern => }/resources/maki_compiler/Unknown (Winamp 5.03)/lib/config.mi (100%) rename packages/webamp-modern/{modern => }/resources/maki_compiler/Unknown (Winamp 5.03)/lib/std.mi (100%) rename packages/webamp-modern/{modern => }/resources/maki_compiler/Unknown (Winamp 5.03)/readme.md (100%) rename packages/webamp-modern/{modern => }/resources/maki_compiler/v1.1.0.a9 (Winamp 3 alpha 8r)/Lib/customseek.m (100%) rename packages/webamp-modern/{modern => }/resources/maki_compiler/v1.1.0.a9 (Winamp 3 alpha 8r)/Lib/dragvolume.m (100%) rename packages/webamp-modern/{modern => }/resources/maki_compiler/v1.1.0.a9 (Winamp 3 alpha 8r)/Lib/rotationlayer.m (100%) rename packages/webamp-modern/{modern => }/resources/maki_compiler/v1.1.0.a9 (Winamp 3 alpha 8r)/Lib/std.mi (100%) rename packages/webamp-modern/{modern => }/resources/maki_compiler/v1.1.0.a9 (Winamp 3 alpha 8r)/hello_world.m (100%) rename packages/webamp-modern/{modern => }/resources/maki_compiler/v1.1.0.a9 (Winamp 3 alpha 8r)/hello_world.maki (100%) rename packages/webamp-modern/{modern => }/resources/maki_compiler/v1.1.0.a9 (Winamp 3 alpha 8r)/mc.exe (100%) rename packages/webamp-modern/{modern => }/resources/maki_compiler/v1.1.1.b3 (Winamp 3.0 build 488d)/Lib/centerlayer.m (100%) rename packages/webamp-modern/{modern => }/resources/maki_compiler/v1.1.1.b3 (Winamp 3.0 build 488d)/Lib/config.mi (100%) rename packages/webamp-modern/{modern => }/resources/maki_compiler/v1.1.1.b3 (Winamp 3.0 build 488d)/Lib/customseek.m (100%) rename packages/webamp-modern/{modern => }/resources/maki_compiler/v1.1.1.b3 (Winamp 3.0 build 488d)/Lib/dragvolume.m (100%) rename packages/webamp-modern/{modern => }/resources/maki_compiler/v1.1.1.b3 (Winamp 3.0 build 488d)/Lib/pldir.mi (100%) rename packages/webamp-modern/{modern => }/resources/maki_compiler/v1.1.1.b3 (Winamp 3.0 build 488d)/Lib/rotationlayer.m (100%) rename packages/webamp-modern/{modern => }/resources/maki_compiler/v1.1.1.b3 (Winamp 3.0 build 488d)/Lib/std.mi (100%) rename packages/webamp-modern/{modern => }/resources/maki_compiler/v1.1.1.b3 (Winamp 3.0 build 488d)/basicTests.m (100%) rename packages/webamp-modern/{modern => }/resources/maki_compiler/v1.1.1.b3 (Winamp 3.0 build 488d)/basicTests.maki (100%) rename packages/webamp-modern/{modern => }/resources/maki_compiler/v1.1.1.b3 (Winamp 3.0 build 488d)/hello_world.m (100%) rename packages/webamp-modern/{modern => }/resources/maki_compiler/v1.1.1.b3 (Winamp 3.0 build 488d)/hello_world.maki (100%) rename packages/webamp-modern/{modern => }/resources/maki_compiler/v1.1.1.b3 (Winamp 3.0 build 488d)/mc.exe (100%) rename packages/webamp-modern/{modern => }/resources/maki_compiler/v1.1.1.b3 (Winamp 3.0 build 488d)/simpleFunctions.m (100%) rename packages/webamp-modern/{modern => }/resources/maki_compiler/v1.1.1.b3 (Winamp 3.0 build 488d)/simpleFunctions.maki (100%) rename packages/webamp-modern/{modern => }/resources/maki_compiler/v1.1.1.b3 (Winamp 3.0 full)/Lib/avswitcher.m (100%) rename packages/webamp-modern/{modern => }/resources/maki_compiler/v1.1.1.b3 (Winamp 3.0 full)/Lib/buttonsounds.m (100%) rename packages/webamp-modern/{modern => }/resources/maki_compiler/v1.1.1.b3 (Winamp 3.0 full)/Lib/centerlayer.m (100%) rename packages/webamp-modern/{modern => }/resources/maki_compiler/v1.1.1.b3 (Winamp 3.0 full)/Lib/config.mi (100%) rename packages/webamp-modern/{modern => }/resources/maki_compiler/v1.1.1.b3 (Winamp 3.0 full)/Lib/core.mi (100%) rename packages/webamp-modern/{modern => }/resources/maki_compiler/v1.1.1.b3 (Winamp 3.0 full)/Lib/customseek.m (100%) rename packages/webamp-modern/{modern => }/resources/maki_compiler/v1.1.1.b3 (Winamp 3.0 full)/Lib/dragvolume.m (100%) rename packages/webamp-modern/{modern => }/resources/maki_compiler/v1.1.1.b3 (Winamp 3.0 full)/Lib/dumpcscript.m (100%) rename packages/webamp-modern/{modern => }/resources/maki_compiler/v1.1.1.b3 (Winamp 3.0 full)/Lib/pldir.mi (100%) rename packages/webamp-modern/{modern => }/resources/maki_compiler/v1.1.1.b3 (Winamp 3.0 full)/Lib/rotationlayer.m (100%) rename packages/webamp-modern/{modern => }/resources/maki_compiler/v1.1.1.b3 (Winamp 3.0 full)/Lib/std.mi (100%) rename packages/webamp-modern/{modern => }/resources/maki_compiler/v1.1.1.b3 (Winamp 3.0 full)/basicTests.m (100%) rename packages/webamp-modern/{modern => }/resources/maki_compiler/v1.1.1.b3 (Winamp 3.0 full)/basicTests.maki (100%) rename packages/webamp-modern/{modern => }/resources/maki_compiler/v1.1.1.b3 (Winamp 3.0 full)/hello_world.m (100%) rename packages/webamp-modern/{modern => }/resources/maki_compiler/v1.1.1.b3 (Winamp 3.0 full)/hello_world.maki (100%) rename packages/webamp-modern/{modern => }/resources/maki_compiler/v1.1.1.b3 (Winamp 3.0 full)/mc.exe (100%) rename packages/webamp-modern/{modern => }/resources/maki_compiler/v1.1.1.b3 (Winamp 3.0 full)/simpleFunctions.m (100%) rename packages/webamp-modern/{modern => }/resources/maki_compiler/v1.1.1.b3 (Winamp 3.0 full)/simpleFunctions.maki (100%) rename packages/webamp-modern/{modern => }/resources/maki_compiler/v1.1.13 (Winamp 5.02)/basicTests.m (100%) rename packages/webamp-modern/{modern => }/resources/maki_compiler/v1.1.13 (Winamp 5.02)/basicTests.maki (100%) rename packages/webamp-modern/{modern => }/resources/maki_compiler/v1.1.13 (Winamp 5.02)/hello_world.m (100%) rename packages/webamp-modern/{modern => }/resources/maki_compiler/v1.1.13 (Winamp 5.02)/hello_world.maki (100%) rename packages/webamp-modern/{modern => }/resources/maki_compiler/v1.1.13 (Winamp 5.02)/lib/std.mi (100%) rename packages/webamp-modern/{modern => }/resources/maki_compiler/v1.1.13 (Winamp 5.02)/mc.exe (100%) rename packages/webamp-modern/{modern => }/resources/maki_compiler/v1.1.13 (Winamp 5.02)/simpleFunctions.m (100%) rename packages/webamp-modern/{modern => }/resources/maki_compiler/v1.1.13 (Winamp 5.02)/simpleFunctions.maki (100%) rename packages/webamp-modern/{modern => }/resources/maki_compiler/v1.2.0 (Winamp 5.66)/basicTests.m (100%) rename packages/webamp-modern/{modern => }/resources/maki_compiler/v1.2.0 (Winamp 5.66)/basicTests.maki (100%) rename packages/webamp-modern/{modern => }/resources/maki_compiler/v1.2.0 (Winamp 5.66)/hello_world.m (100%) rename packages/webamp-modern/{modern => }/resources/maki_compiler/v1.2.0 (Winamp 5.66)/hello_world.maki (100%) rename packages/webamp-modern/{modern => }/resources/maki_compiler/v1.2.0 (Winamp 5.66)/lib/application.mi (100%) rename packages/webamp-modern/{modern => }/resources/maki_compiler/v1.2.0 (Winamp 5.66)/lib/colormgr.mi (100%) rename packages/webamp-modern/{modern => }/resources/maki_compiler/v1.2.0 (Winamp 5.66)/lib/com/AutoRepeatButton.m (100%) rename packages/webamp-modern/{modern => }/resources/maki_compiler/v1.2.0 (Winamp 5.66)/lib/com/centerlayer.m (100%) rename packages/webamp-modern/{modern => }/resources/maki_compiler/v1.2.0 (Winamp 5.66)/lib/com/customseek.m (100%) rename packages/webamp-modern/{modern => }/resources/maki_compiler/v1.2.0 (Winamp 5.66)/lib/com/debug.m (100%) rename packages/webamp-modern/{modern => }/resources/maki_compiler/v1.2.0 (Winamp 5.66)/lib/com/dispatch_ifc.m (100%) rename packages/webamp-modern/{modern => }/resources/maki_compiler/v1.2.0 (Winamp 5.66)/lib/com/dragvolume.m (100%) rename packages/webamp-modern/{modern => }/resources/maki_compiler/v1.2.0 (Winamp 5.66)/lib/com/fillbar.m (100%) rename packages/webamp-modern/{modern => }/resources/maki_compiler/v1.2.0 (Winamp 5.66)/lib/com/glow.m (100%) rename packages/webamp-modern/{modern => }/resources/maki_compiler/v1.2.0 (Winamp 5.66)/lib/com/glowobject.m (100%) rename packages/webamp-modern/{modern => }/resources/maki_compiler/v1.2.0 (Winamp 5.66)/lib/com/rotationlayer.m (100%) rename packages/webamp-modern/{modern => }/resources/maki_compiler/v1.2.0 (Winamp 5.66)/lib/com/songinfo.m (100%) rename packages/webamp-modern/{modern => }/resources/maki_compiler/v1.2.0 (Winamp 5.66)/lib/config.mi (100%) rename packages/webamp-modern/{modern => }/resources/maki_compiler/v1.2.0 (Winamp 5.66)/lib/core.mi (100%) rename packages/webamp-modern/{modern => }/resources/maki_compiler/v1.2.0 (Winamp 5.66)/lib/exd.mi (100%) rename packages/webamp-modern/{modern => }/resources/maki_compiler/v1.2.0 (Winamp 5.66)/lib/fileio.mi (100%) rename packages/webamp-modern/{modern => }/resources/maki_compiler/v1.2.0 (Winamp 5.66)/lib/pldir.mi (100%) rename packages/webamp-modern/{modern => }/resources/maki_compiler/v1.2.0 (Winamp 5.66)/lib/std.mi (100%) rename packages/webamp-modern/{modern => }/resources/maki_compiler/v1.2.0 (Winamp 5.66)/lib/winampconfig.mi (100%) rename packages/webamp-modern/{modern => }/resources/maki_compiler/v1.2.0 (Winamp 5.66)/mc.exe (100%) rename packages/webamp-modern/{modern => }/resources/maki_compiler/v1.2.0 (Winamp 5.66)/nscrt.dll (100%) rename packages/webamp-modern/{modern => }/resources/maki_compiler/v1.2.0 (Winamp 5.66)/simpleFunctions.m (100%) rename packages/webamp-modern/{modern => }/resources/maki_compiler/v1.2.0 (Winamp 5.66)/simpleFunctions.maki (100%) rename packages/webamp-modern/{modern => }/resources/maki_decompiler_1.1/COPYING (100%) rename packages/webamp-modern/{modern => }/resources/maki_decompiler_1.1/PerlAmp/Maki/Code.pm (100%) rename packages/webamp-modern/{modern => }/resources/maki_decompiler_1.1/PerlAmp/Maki/Command.pm (100%) rename packages/webamp-modern/{modern => }/resources/maki_decompiler_1.1/PerlAmp/Maki/Objects.pm (100%) rename packages/webamp-modern/{modern => }/resources/maki_decompiler_1.1/PerlAmp/Maki/Parse.pm (100%) rename packages/webamp-modern/{modern => }/resources/maki_decompiler_1.1/PerlAmp/Maki/Variable.pm (100%) rename packages/webamp-modern/{modern => }/resources/maki_decompiler_1.1/README (100%) rename packages/webamp-modern/{modern => }/resources/maki_decompiler_1.1/makiToPerl.pm (100%) rename packages/webamp-modern/{modern => }/resources/maki_decompiler_1.1/mdc.pl (100%) rename packages/webamp-modern/{modern => }/resources/maki_decompiler_1.1/tool/extract_objects.pl (100%) rename packages/webamp-modern/{modern => }/resources/testSkins/sameObject/container.xml (100%) rename packages/webamp-modern/{modern => }/resources/testSkins/sameObject/script.m (100%) rename packages/webamp-modern/{modern => }/resources/testSkins/sameObject/script.maki (100%) rename packages/webamp-modern/{modern => }/resources/testSkins/sameObject/skin.xml (100%) rename packages/webamp-modern/{modern => }/resources/testSkins/simpleClick/container.xml (100%) rename packages/webamp-modern/{modern => }/resources/testSkins/simpleClick/script.m (100%) rename packages/webamp-modern/{modern => }/resources/testSkins/simpleClick/script.maki (100%) rename packages/webamp-modern/{modern => }/resources/testSkins/simpleClick/skin.xml (100%) rename packages/webamp-modern/{modern => }/skins/CornerAmp_Redux.wal (100%) rename packages/webamp-modern/{modern => }/skins/simple.wal (100%) rename packages/webamp-modern/{modern => }/src/Actions.ts (100%) rename packages/webamp-modern/{modern => }/src/App.css (100%) rename packages/webamp-modern/{modern => }/src/App.js (100%) rename packages/webamp-modern/{modern => }/src/Dashboard.js (100%) rename packages/webamp-modern/{modern => }/src/Emitter.ts (100%) rename packages/webamp-modern/{modern => }/src/Selectors.ts (100%) rename packages/webamp-modern/{modern => }/src/Sidebar.js (100%) rename packages/webamp-modern/{modern => }/src/__tests__/__snapshots__/objects.test.js.snap (100%) rename packages/webamp-modern/{modern => }/src/__tests__/__snapshots__/utils.test.js.snap (100%) rename packages/webamp-modern/{modern => }/src/__tests__/integration.test.js (100%) rename packages/webamp-modern/{modern => }/src/__tests__/objects.test.js (100%) rename packages/webamp-modern/{modern => }/src/__tests__/parser.test.js (100%) rename packages/webamp-modern/{modern => }/src/__tests__/testConstants.js (100%) rename packages/webamp-modern/{modern => }/src/__tests__/utils.test.js (100%) rename packages/webamp-modern/{modern => }/src/__tests__/virtualMachine.test.js (100%) rename packages/webamp-modern/{modern => }/src/components/DropTarget.tsx (100%) rename packages/webamp-modern/{modern => }/src/debugger/Command.js (100%) rename packages/webamp-modern/{modern => }/src/debugger/Value.js (100%) rename packages/webamp-modern/{modern => }/src/debugger/Variable.js (100%) rename packages/webamp-modern/{modern => }/src/debugger/index.js (100%) rename packages/webamp-modern/{modern => }/src/index.css (100%) rename packages/webamp-modern/{modern => }/src/index.js (100%) rename packages/webamp-modern/{modern => }/src/initialize.js (100%) rename packages/webamp-modern/{modern => }/src/initializeStateTree.ts (100%) rename packages/webamp-modern/{modern => }/src/logo.svg (100%) rename packages/webamp-modern/{modern => }/src/maki-interpreter/constants.js (100%) rename packages/webamp-modern/{modern => }/src/maki-interpreter/interpreter.js (100%) rename packages/webamp-modern/{modern => }/src/maki-interpreter/objectData/config.json (100%) rename packages/webamp-modern/{modern => }/src/maki-interpreter/objectData/pldir.json (100%) rename packages/webamp-modern/{modern => }/src/maki-interpreter/objectData/std.json (100%) rename packages/webamp-modern/{modern => }/src/maki-interpreter/objectData/stdPatched.js (100%) rename packages/webamp-modern/{modern => }/src/maki-interpreter/objects.js (100%) rename packages/webamp-modern/{modern => }/src/maki-interpreter/parser.js (100%) rename packages/webamp-modern/{modern => }/src/maki-interpreter/prettyPrinter.js (100%) rename packages/webamp-modern/{modern => }/src/maki-interpreter/readme.md (100%) rename packages/webamp-modern/{modern => }/src/maki-interpreter/tools/build-typescript-interfaces.js (100%) rename packages/webamp-modern/{modern => }/src/maki-interpreter/tools/extract-attributes.js (100%) rename packages/webamp-modern/{modern => }/src/maki-interpreter/tools/extract-functions.js (100%) rename packages/webamp-modern/{modern => }/src/maki-interpreter/tools/extract-maki-files.js (100%) rename packages/webamp-modern/{modern => }/src/maki-interpreter/tools/extract-object-types.js (100%) rename packages/webamp-modern/{modern => }/src/maki-interpreter/tools/parse-mi.js (100%) rename packages/webamp-modern/{modern => }/src/maki-interpreter/tools/parse-mi.test.js (100%) rename packages/webamp-modern/{modern => }/src/maki-interpreter/variable.js (100%) rename packages/webamp-modern/{modern => }/src/maki-interpreter/virtualMachine.js (100%) rename packages/webamp-modern/{modern => }/src/runtime/.eslintrc (100%) rename packages/webamp-modern/{modern => }/src/runtime/AlbumArtLayer.ts (100%) rename packages/webamp-modern/{modern => }/src/runtime/AnimatedLayer.ts (100%) rename packages/webamp-modern/{modern => }/src/runtime/BitList.ts (100%) rename packages/webamp-modern/{modern => }/src/runtime/Browser.ts (100%) rename packages/webamp-modern/{modern => }/src/runtime/Button.ts (100%) rename packages/webamp-modern/{modern => }/src/runtime/CfgGroup.ts (100%) rename packages/webamp-modern/{modern => }/src/runtime/CheckBox.ts (100%) rename packages/webamp-modern/{modern => }/src/runtime/ComponentBucket.ts (100%) rename packages/webamp-modern/{modern => }/src/runtime/Config.ts (100%) rename packages/webamp-modern/{modern => }/src/runtime/ConfigAttribute.ts (100%) rename packages/webamp-modern/{modern => }/src/runtime/ConfigItem.ts (100%) rename packages/webamp-modern/{modern => }/src/runtime/Container.ts (100%) rename packages/webamp-modern/{modern => }/src/runtime/DropDownList.ts (100%) rename packages/webamp-modern/{modern => }/src/runtime/Edit.ts (100%) rename packages/webamp-modern/{modern => }/src/runtime/EqVis.ts (100%) rename packages/webamp-modern/{modern => }/src/runtime/FeedWatcher.ts (100%) rename packages/webamp-modern/{modern => }/src/runtime/Form.ts (100%) rename packages/webamp-modern/{modern => }/src/runtime/Frame.ts (100%) rename packages/webamp-modern/{modern => }/src/runtime/Group.ts (100%) rename packages/webamp-modern/{modern => }/src/runtime/GroupList.ts (100%) rename packages/webamp-modern/{modern => }/src/runtime/GuiList.ts (100%) rename packages/webamp-modern/{modern => }/src/runtime/GuiObject.ts (100%) rename packages/webamp-modern/{modern => }/src/runtime/GuiTree.ts (100%) rename packages/webamp-modern/{modern => }/src/runtime/JsElements.ts (100%) rename packages/webamp-modern/{modern => }/src/runtime/JsGammaSet.ts (100%) rename packages/webamp-modern/{modern => }/src/runtime/JsGroupDef.ts (100%) rename packages/webamp-modern/{modern => }/src/runtime/JsScript.ts (100%) rename packages/webamp-modern/{modern => }/src/runtime/JsWinampAbstractionLayer.ts (100%) rename packages/webamp-modern/{modern => }/src/runtime/Layer.ts (100%) rename packages/webamp-modern/{modern => }/src/runtime/Layout.ts (100%) rename packages/webamp-modern/{modern => }/src/runtime/LayoutStatus.ts (100%) rename packages/webamp-modern/{modern => }/src/runtime/List.ts (100%) rename packages/webamp-modern/{modern => }/src/runtime/MakiMap.ts (100%) rename packages/webamp-modern/{modern => }/src/runtime/MakiObject.ts (100%) rename packages/webamp-modern/{modern => }/src/runtime/Menu.ts (100%) rename packages/webamp-modern/{modern => }/src/runtime/MenuButton.ts (100%) rename packages/webamp-modern/{modern => }/src/runtime/MouseRedir.ts (100%) rename packages/webamp-modern/{modern => }/src/runtime/PlDir.ts (100%) rename packages/webamp-modern/{modern => }/src/runtime/PlEdit.ts (100%) rename packages/webamp-modern/{modern => }/src/runtime/PopupMenu.ts (100%) rename packages/webamp-modern/{modern => }/src/runtime/QueryList.ts (100%) rename packages/webamp-modern/{modern => }/src/runtime/Region.ts (100%) rename packages/webamp-modern/{modern => }/src/runtime/Slider.ts (100%) rename packages/webamp-modern/{modern => }/src/runtime/Status.ts (100%) rename packages/webamp-modern/{modern => }/src/runtime/System.ts (100%) rename packages/webamp-modern/{modern => }/src/runtime/TabSheet.ts (100%) rename packages/webamp-modern/{modern => }/src/runtime/Text.ts (100%) rename packages/webamp-modern/{modern => }/src/runtime/Timer.ts (100%) rename packages/webamp-modern/{modern => }/src/runtime/Title.ts (100%) rename packages/webamp-modern/{modern => }/src/runtime/ToggleButton.ts (100%) rename packages/webamp-modern/{modern => }/src/runtime/TreeItem.ts (100%) rename packages/webamp-modern/{modern => }/src/runtime/Vis.ts (100%) rename packages/webamp-modern/{modern => }/src/runtime/Wac.ts (100%) rename packages/webamp-modern/{modern => }/src/runtime/WindowHolder.ts (100%) rename packages/webamp-modern/{modern => }/src/runtime/index.ts (100%) rename packages/webamp-modern/{modern => }/src/store.ts (100%) rename packages/webamp-modern/{modern => }/src/types.ts (100%) rename packages/webamp-modern/{modern => }/src/utils.ts (100%) diff --git a/packages/webamp-modern/.eslintrc b/packages/webamp-modern/.eslintrc index 8316f091..88ae93c6 100644 --- a/packages/webamp-modern/.eslintrc +++ b/packages/webamp-modern/.eslintrc @@ -63,7 +63,6 @@ } ], "block-scoped-var": "warn", - "camelcase": "error", "constructor-super": "error", "dot-notation": "error", "eqeqeq": ["error", "smart"], diff --git a/packages/webamp-modern/.gitignore b/packages/webamp-modern/.gitignore index 2d3f39b9..293baaae 100644 --- a/packages/webamp-modern/.gitignore +++ b/packages/webamp-modern/.gitignore @@ -1,7 +1,6 @@ **/node_modules /built -/demo/built /coverage /examples/webpack/bundle.js **/__diff_output__/ diff --git a/packages/webamp-modern/.prettierignore b/packages/webamp-modern/.prettierignore index fe6cea0c..a90e9ecf 100644 --- a/packages/webamp-modern/.prettierignore +++ b/packages/webamp-modern/.prettierignore @@ -1,8 +1,6 @@ package.json **/*.min.css **/base-skin.css -demo/js/googleAnalytics.min.js built/* -demo/built/* coverage/* examples/webpack/bundle.js diff --git a/packages/webamp-modern/modern/README.md b/packages/webamp-modern/README.md similarity index 92% rename from packages/webamp-modern/modern/README.md rename to packages/webamp-modern/README.md index cf667664..4cafd9a8 100644 --- a/packages/webamp-modern/modern/README.md +++ b/packages/webamp-modern/README.md @@ -24,7 +24,7 @@ In addition to the Maki interpreter, we also need an implementation of the Maki We also have a tool for examining a corpus of modern skins an extracting which methods of the standard libary they use. This lives in `modern/src/maki-interpreter/tools/extract-functions.js` it's not really built for anyone but Jordan to run, so it has a few paths hard coded into it. This could be fixed if somebody else had the interest. By running `yarn analyze-wals` it will look in a specific hard-coded folder for skins and extract method data from them. It will then write that data to `modern/resources/maki-skin-data.json`. This data is invaluable for prioritizing which methods we should implement next. Some methods are only used by a very small number of skins. Others are not used at all. -The data extracted by the `extract-functions.js` utility and the list of unimplmented methods which is validated by `modern/src/objects.test.js` can be visualized visiting [https://webamp.org/modern/ready/](https://webamp.org/modern/ready/) or `localhost:8080/modern/ready` if developing locally. This dashboard makes it very easy to see current progress and explore the usage of different methods. Keep in mind that as of this writting some ~20% of `.maki` files fail to parse, so the data on this page represents a lower bound of actual usage. +The data extracted by the `extract-functions.js` utility and the list of unimplmented methods which is validated by `modern/src/objects.test.js` can be visualized visiting [https://webamp.org/ready/](https://webamp.org/ready/) or `localhost:8080/ready` if developing locally. This dashboard makes it very easy to see current progress and explore the usage of different methods. Keep in mind that as of this writting some ~20% of `.maki` files fail to parse, so the data on this page represents a lower bound of actual usage. ## Architecture @@ -39,7 +39,7 @@ yarn yarn start ``` -Then open: `http://localhost:8080/modern/`. +Then open: `http://localhost:8080/`. ## Tests diff --git a/packages/webamp-modern/demo/config/webpack.common.js b/packages/webamp-modern/config/webpack.common.js similarity index 89% rename from packages/webamp-modern/demo/config/webpack.common.js rename to packages/webamp-modern/config/webpack.common.js index f0043963..702caaad 100644 --- a/packages/webamp-modern/demo/config/webpack.common.js +++ b/packages/webamp-modern/config/webpack.common.js @@ -42,16 +42,16 @@ module.exports = { }, plugins: [ new HtmlWebpackPlugin({ - filename: "modern/index.html", - template: "../modern/index.html", + filename: "index.html", + template: "./index.html", chunks: ["modern"], }), // Ideally we could just do this via client-side routing, but it's tricky // with both the real app and this sub directory. So we just hack it to // duplicate the html file in both places and move on with our lives. new HtmlWebpackPlugin({ - filename: "modern/ready/index.html", - template: "../modern/index.html", + filename: "./ready/index.html", + template: "./index.html", chunks: ["modern"], }), ], @@ -62,7 +62,7 @@ module.exports = { maxAssetSize: 7000000, }, entry: { - modern: ["../modern/src/index.js"], + modern: ["./src/index.js"], }, context: path.resolve(__dirname, "../"), output: { diff --git a/packages/webamp-modern/demo/config/webpack.dev.js b/packages/webamp-modern/config/webpack.dev.js similarity index 100% rename from packages/webamp-modern/demo/config/webpack.dev.js rename to packages/webamp-modern/config/webpack.dev.js diff --git a/packages/webamp-modern/config/webpack.library.js b/packages/webamp-modern/config/webpack.library.js deleted file mode 100644 index 42031b50..00000000 --- a/packages/webamp-modern/config/webpack.library.js +++ /dev/null @@ -1,58 +0,0 @@ -const path = require("path"); -const { BundleAnalyzerPlugin } = require("webpack-bundle-analyzer"); - -module.exports = { - devtool: "source-map", - mode: "production", - resolve: { - extensions: [".js", ".ts", ".tsx"], - }, - module: { - rules: [ - { - test: /\.css$/, - use: [ - "style-loader", - { loader: "css-loader", options: { importLoaders: 1 } }, - // We really only need this in prod. We could find a way to disable it in dev. - ], - }, - { - test: /\.(js|ts|tsx)$/, - exclude: /(node_modules)/, - use: { - loader: "babel-loader", - options: { - envName: "library", - }, - }, - }, - ], - noParse: [/jszip\.js$/], - }, - plugins: [ - new BundleAnalyzerPlugin({ - analyzerMode: "static", - reportFilename: "library-report.html", - openAnalyzer: false, - }), - ], - performance: { - // We do some crazy shit okay! Don't judge! - maxEntrypointSize: 9000000, - maxAssetSize: 9000000, - }, - entry: { - bundle: "./js/webamp.js", - "bundle.min": "./js/webamp.js", - "lazy-bundle": "./js/webampLazy.tsx", - "lazy-bundle.min": "./js/webampLazy.tsx", - }, - output: { - path: path.resolve(__dirname, "../built"), - filename: "webamp.[name].js", - library: "Webamp", - libraryTarget: "umd", - libraryExport: "default", - }, -}; diff --git a/packages/webamp-modern/demo/config/webpack.prod.js b/packages/webamp-modern/config/webpack.prod.js similarity index 100% rename from packages/webamp-modern/demo/config/webpack.prod.js rename to packages/webamp-modern/config/webpack.prod.js diff --git a/packages/webamp-modern/demo/mp3/llama-2.91.mp3 b/packages/webamp-modern/demo/mp3/llama-2.91.mp3 deleted file mode 100644 index 7262ff2bd04947d63c8b273557a94fe3b598d24f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 38789 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