From 8b1b5821f97e4670ed5c7c9efd6ebc28a3666cc1 Mon Sep 17 00:00:00 2001 From: "NGnius (Graham)" Date: Sun, 24 Jul 2022 19:15:35 +0000 Subject: [PATCH] Initial commit --- .gitignore | 42 ++ .vscode/config.sh | 12 + .vscode/defsettings.json | 7 + .vscode/tasks.json | 105 +++++ README.md | 37 ++ assets/logo.png | Bin 0 -> 21108 bytes defaults/defaults.txt | 13 + main.py | 9 + package.json | 53 +++ plugin.json | 10 + pnpm-lock.yaml | 911 +++++++++++++++++++++++++++++++++++++++ rollup.config.js | 37 ++ src/index.tsx | 105 +++++ src/types.d.ts | 14 + tsconfig.json | 23 + 15 files changed, 1378 insertions(+) create mode 100644 .gitignore create mode 100755 .vscode/config.sh create mode 100644 .vscode/defsettings.json create mode 100644 .vscode/tasks.json create mode 100644 README.md create mode 100644 assets/logo.png create mode 100644 defaults/defaults.txt create mode 100644 main.py create mode 100644 package.json create mode 100644 plugin.json create mode 100644 pnpm-lock.yaml create mode 100644 rollup.config.js create mode 100755 src/index.tsx create mode 100644 src/types.d.ts create mode 100644 tsconfig.json diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..76f76c5 --- /dev/null +++ b/.gitignore @@ -0,0 +1,42 @@ +lib-cov +*.seed +*.log +*.csv +*.dat +*.out +*.pid +*.gz +*.swp + +pids +logs +results +tmp + +# Coverage reports +coverage + +# API keys and secrets +.env + +# Dependency directory +node_modules +bower_components + +# Editors +.idea +*.iml + +# OS metadata +.DS_Store +Thumbs.db + +# Ignore built ts files +dist/ + +__pycache__/ + +/.yalc +yalc.lock + +.vscode/settings.json diff --git a/.vscode/config.sh b/.vscode/config.sh new file mode 100755 index 0000000..b45c794 --- /dev/null +++ b/.vscode/config.sh @@ -0,0 +1,12 @@ +#!/usr/bin/env bash +SCRIPT_DIR="$( cd -- "$( dirname -- "${BASH_SOURCE[0]:-$0}"; )" &> /dev/null && pwd 2> /dev/null; )"; +# printf "${SCRIPT_DIR}\n" +# printf "$(dirname $0)\n" +if ! [[ -e "${SCRIPT_DIR}/settings.json" ]]; then + printf '.vscode/settings.json does not exist. Creating it with default settings. Exiting afterwards. Run your task again.\n\n' + cp "${SCRIPT_DIR}/defsettings.json" "${SCRIPT_DIR}/settings.json" + exit 1 +else + printf '.vscode/settings.json does exist. Congrats.\n' + printf 'Make sure to change settings.json to match your deck.\n' +fi \ No newline at end of file diff --git a/.vscode/defsettings.json b/.vscode/defsettings.json new file mode 100644 index 0000000..7360735 --- /dev/null +++ b/.vscode/defsettings.json @@ -0,0 +1,7 @@ +{ + "deckip" : "0.0.0.0", + "deckport" : "22", + "deckpass" : "ssap", + "deckkey" : "-i ${env:HOME}/.ssh/id_rsa", + "deckdir" : "/home/deck" +} \ No newline at end of file diff --git a/.vscode/tasks.json b/.vscode/tasks.json new file mode 100644 index 0000000..71d03df --- /dev/null +++ b/.vscode/tasks.json @@ -0,0 +1,105 @@ +{ + "version": "2.0.0", + "tasks": [ + // OTHER + { + "label": "checkforsettings", + "type": "shell", + "group": "none", + "detail": "Check that settings.json has been created", + "command": "bash -c ${workspaceFolder}/.vscode/config.sh", + "problemMatcher": [] + }, + // BUILD + { + "label": "pnpmsetup", + "type": "shell", + "group": "build", + "detail": "Setup pnpm", + "command": "pnpm i", + "problemMatcher": [] + }, + { + "label": "updatefrontendlib", + "type": "shell", + "group": "build", + "detail": "Update deck-frontend-lib", + "command": "pnpm update decky-frontend-lib --latest", + "problemMatcher": [] + }, + { + "label": "build", + "type": "npm", + "group": "build", + "detail": "rollup -c", + "script": "build", + "path": "", + "problemMatcher": [] + }, + { + "label": "buildall", + "group": "build", + "detail": "Build decky-plugin-template", + "dependsOrder": "sequence", + "dependsOn": [ + "pnpmsetup", + "build" + ], + "problemMatcher": [] + }, + // DEPLOY + { + "label": "createfolders", + "detail": "Create plugins folder in expected directory", + "type": "shell", + "group": "none", + "dependsOn": [ + "checkforsettings" + ], + "command": "ssh deck@${config:deckip} -p ${config:deckport} ${config:deckkey} 'mkdir -p ${config:deckdir}/homebrew/dev/pluginloader && mkdir -p ${config:deckdir}/homebrew/dev/plugins'", + "problemMatcher": [] + }, + { + "label": "deploy", + "detail": "Deploy dev plugin to deck", + "type": "shell", + "group": "none", + "dependsOn": [ + "createfolders", + "chmodfolders" + ], + "command": "rsync -azp --delete --rsh='ssh -p ${config:deckport} ${config:deckkey}' --exclude='.git/' --exclude='.github/' --exclude='.vscode/' --exclude='node_modules/' --exclude='src/' --exclude='*.log' --exclude='.gitignore' . deck@${config:deckip}:${config:deckdir}/homebrew/dev/plugins/${workspaceFolderBasename}", + "problemMatcher": [] + }, + { + "label": "chmodfolders", + "detail": "chmods folders to prevent perms issues", + "type": "shell", + "group": "none", + "command": "ssh deck@${config:deckip} -p ${config:deckport} ${config:deckkey} 'echo '${config:deckpass}' | sudo -S chmod -R ug+rw ${config:deckdir}/homebrew/dev/'", + "problemMatcher": [] + }, + { + "label": "deployall", + "dependsOrder": "sequence", + "group": "none", + "dependsOn": [ + "deploy", + "chmodfolders" + ], + "problemMatcher": [] + }, + // ALL-IN-ONE + { + "label": "allinone", + "detail": "Build and deploy", + "dependsOrder": "sequence", + "group": "test", + "dependsOn": [ + "buildall", + "deployall" + ], + "problemMatcher": [] + } + ] +} diff --git a/README.md b/README.md new file mode 100644 index 0000000..04401c8 --- /dev/null +++ b/README.md @@ -0,0 +1,37 @@ +# React-Frontend Plugin Template + +Reference example for using [decky-frontend-lib](https://github.com/SteamDeckHomebrew/decky-frontend-lib) in a [PluginLoader](https://github.com/SteamDeckHomebrew/PluginLoader) plugin. + +## PluginLoader Discord [![Chat](https://img.shields.io/badge/chat-on%20discord-7289da.svg)](https://discord.gg/ZU74G2NJzk) + +## Developers + +### Dependencies + +This template relies on the user having `pnpm` installed on their system. +This can be downloaded from `npm` itself which is recommended. + +#### Linux + +```bash +sudo npm i -g pnpm +``` + +### Getting Started + +1. Clone the repository to use as an example for making your plugin. +2. In your clone of the repository run these commands: + 1. ``pnpm i`` + 2. ``pnpm run build`` +3. You should do this every time you make changes to your plugin. + +Note: If you are recieveing build errors due to an out of date library, you should run this command inside of your repository: + +```bash +pnpm update decky-frontend-lib --latest +``` + +### Distribution + +WIP. Check back in later. + diff --git a/assets/logo.png b/assets/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..48c4851c91b074e80ef95af91ea3903e1adefe47 GIT binary patch literal 21108 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", + "license": "GPL-2.0-or-later", + "bugs": { + "url": "https://github.com/SteamDeckHomebrew/decky-plugin-template/issues" + }, + "homepage": "https://github.com/SteamDeckHomebrew/decky-plugin-template#readme", + "devDependencies": { + "@rollup/plugin-commonjs": "^21.1.0", + "@rollup/plugin-json": "^4.1.0", + "@rollup/plugin-node-resolve": "^13.2.1", + "@rollup/plugin-replace": "^4.0.0", + "@rollup/plugin-typescript": "^8.3.2", + "@types/react": "16.14.0", + "@types/webpack": "^5.28.0", + "rollup": "^2.70.2", + "rollup-plugin-import-assets": "^1.1.1", + "shx": "^0.3.4", + "tslib": "^2.4.0", + "typescript": "^4.6.4" + }, + "dependencies": { + "decky-frontend-lib": "^1.0.1", + "react-icons": "^4.3.1" + }, + "pnpm": { + "peerDependencyRules": { + "ignoreMissing": [ + "react", + "react-dom" + ] + } + } +} diff --git a/plugin.json b/plugin.json new file mode 100644 index 0000000..226eec9 --- /dev/null +++ b/plugin.json @@ -0,0 +1,10 @@ +{ + "name": "Example Plugin", + "author": "John Doe", + "flags": ["debug", "_root"], + "publish": { + "tags": ["template", "root"], + "description": "Decky example plugin.", + "image": "https://opengraph.githubassets.com/1/SteamDeckHomebrew/PluginLoader" + } +} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml new file mode 100644 index 0000000..4b23ddd --- /dev/null +++ b/pnpm-lock.yaml @@ -0,0 +1,911 @@ +lockfileVersion: 5.4 + +specifiers: + '@rollup/plugin-commonjs': ^21.1.0 + '@rollup/plugin-json': ^4.1.0 + '@rollup/plugin-node-resolve': ^13.2.1 + '@rollup/plugin-replace': ^4.0.0 + '@rollup/plugin-typescript': ^8.3.2 + '@types/react': 16.14.0 + '@types/webpack': ^5.28.0 + decky-frontend-lib: ^1.0.1 + react-icons: ^4.3.1 + rollup: ^2.70.2 + rollup-plugin-import-assets: ^1.1.1 + shx: ^0.3.4 + tslib: ^2.4.0 + typescript: ^4.6.4 + +dependencies: + decky-frontend-lib: 1.0.1 + react-icons: 4.4.0 + +devDependencies: + '@rollup/plugin-commonjs': 21.1.0_rollup@2.75.6 + '@rollup/plugin-json': 4.1.0_rollup@2.75.6 + '@rollup/plugin-node-resolve': 13.3.0_rollup@2.75.6 + '@rollup/plugin-replace': 4.0.0_rollup@2.75.6 + '@rollup/plugin-typescript': 8.3.3_a4s7325ov6m337p2dvgeh54tg4 + '@types/react': 16.14.0 + '@types/webpack': 5.28.0 + rollup: 2.75.6 + rollup-plugin-import-assets: 1.1.1_rollup@2.75.6 + shx: 0.3.4 + tslib: 2.4.0 + typescript: 4.7.3 + +packages: + + /@jridgewell/gen-mapping/0.3.1: + resolution: {integrity: sha512-GcHwniMlA2z+WFPWuY8lp3fsza0I8xPFMWL5+n8LYyP6PSvPrXf4+n8stDHZY2DM0zy9sVkRDy1jDI4XGzYVqg==} + engines: {node: '>=6.0.0'} + dependencies: + '@jridgewell/set-array': 1.1.1 + '@jridgewell/sourcemap-codec': 1.4.13 + '@jridgewell/trace-mapping': 0.3.13 + dev: true + + /@jridgewell/resolve-uri/3.0.7: + resolution: {integrity: sha512-8cXDaBBHOr2pQ7j77Y6Vp5VDT2sIqWyWQ56TjEq4ih/a4iST3dItRe8Q9fp0rrIl9DoKhWQtUQz/YpOxLkXbNA==} + engines: {node: '>=6.0.0'} + dev: true + + /@jridgewell/set-array/1.1.1: + resolution: {integrity: sha512-Ct5MqZkLGEXTVmQYbGtx9SVqD2fqwvdubdps5D3djjAkgkKwT918VNOz65pEHFaYTeWcukmJmH5SwsA9Tn2ObQ==} + engines: {node: '>=6.0.0'} + dev: true + + /@jridgewell/source-map/0.3.2: + resolution: {integrity: sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==} + dependencies: + '@jridgewell/gen-mapping': 0.3.1 + '@jridgewell/trace-mapping': 0.3.13 + dev: true + + /@jridgewell/sourcemap-codec/1.4.13: + resolution: {integrity: sha512-GryiOJmNcWbovBxTfZSF71V/mXbgcV3MewDe3kIMCLyIh5e7SKAeUZs+rMnJ8jkMolZ/4/VsdBmMrw3l+VdZ3w==} + dev: true + + /@jridgewell/trace-mapping/0.3.13: + resolution: {integrity: sha512-o1xbKhp9qnIAoHJSWd6KlCZfqslL4valSF81H8ImioOAxluWYWOpWkpyktY2vnt4tbrX9XYaxovq6cgowaJp2w==} + dependencies: + '@jridgewell/resolve-uri': 3.0.7 + '@jridgewell/sourcemap-codec': 1.4.13 + dev: true + + /@rollup/plugin-commonjs/21.1.0_rollup@2.75.6: + resolution: {integrity: sha512-6ZtHx3VHIp2ReNNDxHjuUml6ur+WcQ28N1yHgCQwsbNkQg2suhxGMDQGJOn/KuDxKtd1xuZP5xSTwBA4GQ8hbA==} + engines: {node: '>= 8.0.0'} + peerDependencies: + rollup: ^2.38.3 + dependencies: + '@rollup/pluginutils': 3.1.0_rollup@2.75.6 + commondir: 1.0.1 + estree-walker: 2.0.2 + glob: 7.2.3 + is-reference: 1.2.1 + magic-string: 0.25.9 + resolve: 1.22.0 + rollup: 2.75.6 + dev: true + + /@rollup/plugin-json/4.1.0_rollup@2.75.6: + resolution: {integrity: sha512-yfLbTdNS6amI/2OpmbiBoW12vngr5NW2jCJVZSBEz+H5KfUJZ2M7sDjk0U6GOOdCWFVScShte29o9NezJ53TPw==} + peerDependencies: + rollup: ^1.20.0 || ^2.0.0 + dependencies: + '@rollup/pluginutils': 3.1.0_rollup@2.75.6 + rollup: 2.75.6 + dev: true + + /@rollup/plugin-node-resolve/13.3.0_rollup@2.75.6: + resolution: {integrity: sha512-Lus8rbUo1eEcnS4yTFKLZrVumLPY+YayBdWXgFSHYhTT2iJbMhoaaBL3xl5NCdeRytErGr8tZ0L71BMRmnlwSw==} + engines: {node: '>= 10.0.0'} + peerDependencies: + rollup: ^2.42.0 + dependencies: + '@rollup/pluginutils': 3.1.0_rollup@2.75.6 + '@types/resolve': 1.17.1 + deepmerge: 4.2.2 + is-builtin-module: 3.1.0 + is-module: 1.0.0 + resolve: 1.22.0 + rollup: 2.75.6 + dev: true + + /@rollup/plugin-replace/4.0.0_rollup@2.75.6: + resolution: {integrity: sha512-+rumQFiaNac9y64OHtkHGmdjm7us9bo1PlbgQfdihQtuNxzjpaB064HbRnewUOggLQxVCCyINfStkgmBeQpv1g==} + peerDependencies: + rollup: ^1.20.0 || ^2.0.0 + dependencies: + '@rollup/pluginutils': 3.1.0_rollup@2.75.6 + magic-string: 0.25.9 + rollup: 2.75.6 + dev: true + + /@rollup/plugin-typescript/8.3.3_a4s7325ov6m337p2dvgeh54tg4: + resolution: {integrity: sha512-55L9SyiYu3r/JtqdjhwcwaECXP7JeJ9h1Sg1VWRJKIutla2MdZQodTgcCNybXLMCnqpNLEhS2vGENww98L1npg==} + engines: {node: '>=8.0.0'} + peerDependencies: + rollup: ^2.14.0 + tslib: '*' + typescript: '>=3.7.0' + peerDependenciesMeta: + tslib: + optional: true + dependencies: + '@rollup/pluginutils': 3.1.0_rollup@2.75.6 + resolve: 1.22.0 + rollup: 2.75.6 + tslib: 2.4.0 + typescript: 4.7.3 + dev: true + + /@rollup/pluginutils/3.1.0_rollup@2.75.6: + resolution: {integrity: sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==} + engines: {node: '>= 8.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0 + dependencies: + '@types/estree': 0.0.39 + estree-walker: 1.0.1 + picomatch: 2.3.1 + rollup: 2.75.6 + dev: true + + /@types/eslint-scope/3.7.3: + resolution: {integrity: sha512-PB3ldyrcnAicT35TWPs5IcwKD8S333HMaa2VVv4+wdvebJkjWuW/xESoB8IwRcog8HYVYamb1g/R31Qv5Bx03g==} + dependencies: + '@types/eslint': 8.4.3 + '@types/estree': 0.0.51 + dev: true + + /@types/eslint/8.4.3: + resolution: {integrity: sha512-YP1S7YJRMPs+7KZKDb9G63n8YejIwW9BALq7a5j2+H4yl6iOv9CB29edho+cuFRrvmJbbaH2yiVChKLJVysDGw==} + dependencies: + '@types/estree': 0.0.51 + '@types/json-schema': 7.0.11 + dev: true + + /@types/estree/0.0.39: + resolution: {integrity: sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==} + dev: true + + /@types/estree/0.0.51: + resolution: {integrity: sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==} + dev: true + + /@types/json-schema/7.0.11: + resolution: {integrity: sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==} + dev: true + + /@types/node/17.0.42: + resolution: {integrity: sha512-Q5BPGyGKcvQgAMbsr7qEGN/kIPN6zZecYYABeTDBizOsau+2NMdSVTar9UQw21A2+JyA2KRNDYaYrPB0Rpk2oQ==} + dev: true + + /@types/prop-types/15.7.5: + resolution: {integrity: sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==} + dev: true + + /@types/react/16.14.0: + resolution: {integrity: sha512-jJjHo1uOe+NENRIBvF46tJimUvPnmbQ41Ax0pEm7pRvhPg+wuj8VMOHHiMvaGmZRzRrCtm7KnL5OOE/6kHPK8w==} + dependencies: + '@types/prop-types': 15.7.5 + csstype: 3.1.0 + dev: true + + /@types/resolve/1.17.1: + resolution: {integrity: sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==} + dependencies: + '@types/node': 17.0.42 + dev: true + + /@types/webpack/5.28.0: + resolution: {integrity: sha512-8cP0CzcxUiFuA9xGJkfeVpqmWTk9nx6CWwamRGCj95ph1SmlRRk9KlCZ6avhCbZd4L68LvYT6l1kpdEnQXrF8w==} + dependencies: + '@types/node': 17.0.42 + tapable: 2.2.1 + webpack: 5.73.0 + transitivePeerDependencies: + - '@swc/core' + - esbuild + - uglify-js + - webpack-cli + dev: true + + /@webassemblyjs/ast/1.11.1: + resolution: {integrity: sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==} + dependencies: + '@webassemblyjs/helper-numbers': 1.11.1 + '@webassemblyjs/helper-wasm-bytecode': 1.11.1 + dev: true + + /@webassemblyjs/floating-point-hex-parser/1.11.1: + resolution: {integrity: sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==} + dev: true + + /@webassemblyjs/helper-api-error/1.11.1: + resolution: {integrity: sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==} + dev: true + + /@webassemblyjs/helper-buffer/1.11.1: + resolution: {integrity: sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==} + dev: true + + /@webassemblyjs/helper-numbers/1.11.1: + resolution: {integrity: sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==} + dependencies: + '@webassemblyjs/floating-point-hex-parser': 1.11.1 + '@webassemblyjs/helper-api-error': 1.11.1 + '@xtuc/long': 4.2.2 + dev: true + + /@webassemblyjs/helper-wasm-bytecode/1.11.1: + resolution: {integrity: sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==} + dev: true + + /@webassemblyjs/helper-wasm-section/1.11.1: + resolution: {integrity: sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==} + dependencies: + '@webassemblyjs/ast': 1.11.1 + '@webassemblyjs/helper-buffer': 1.11.1 + '@webassemblyjs/helper-wasm-bytecode': 1.11.1 + '@webassemblyjs/wasm-gen': 1.11.1 + dev: true + + /@webassemblyjs/ieee754/1.11.1: + resolution: {integrity: sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==} + dependencies: + '@xtuc/ieee754': 1.2.0 + dev: true + + /@webassemblyjs/leb128/1.11.1: + resolution: {integrity: sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==} + dependencies: + '@xtuc/long': 4.2.2 + dev: true + + /@webassemblyjs/utf8/1.11.1: + resolution: {integrity: sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==} + dev: true + + /@webassemblyjs/wasm-edit/1.11.1: + resolution: {integrity: sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==} + dependencies: + '@webassemblyjs/ast': 1.11.1 + '@webassemblyjs/helper-buffer': 1.11.1 + '@webassemblyjs/helper-wasm-bytecode': 1.11.1 + '@webassemblyjs/helper-wasm-section': 1.11.1 + '@webassemblyjs/wasm-gen': 1.11.1 + '@webassemblyjs/wasm-opt': 1.11.1 + '@webassemblyjs/wasm-parser': 1.11.1 + '@webassemblyjs/wast-printer': 1.11.1 + dev: true + + /@webassemblyjs/wasm-gen/1.11.1: + resolution: {integrity: sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==} + dependencies: + '@webassemblyjs/ast': 1.11.1 + '@webassemblyjs/helper-wasm-bytecode': 1.11.1 + '@webassemblyjs/ieee754': 1.11.1 + '@webassemblyjs/leb128': 1.11.1 + '@webassemblyjs/utf8': 1.11.1 + dev: true + + /@webassemblyjs/wasm-opt/1.11.1: + resolution: {integrity: sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==} + dependencies: + '@webassemblyjs/ast': 1.11.1 + '@webassemblyjs/helper-buffer': 1.11.1 + '@webassemblyjs/wasm-gen': 1.11.1 + '@webassemblyjs/wasm-parser': 1.11.1 + dev: true + + /@webassemblyjs/wasm-parser/1.11.1: + resolution: {integrity: sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==} + dependencies: + '@webassemblyjs/ast': 1.11.1 + '@webassemblyjs/helper-api-error': 1.11.1 + '@webassemblyjs/helper-wasm-bytecode': 1.11.1 + '@webassemblyjs/ieee754': 1.11.1 + '@webassemblyjs/leb128': 1.11.1 + '@webassemblyjs/utf8': 1.11.1 + dev: true + + /@webassemblyjs/wast-printer/1.11.1: + resolution: {integrity: sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==} + dependencies: + '@webassemblyjs/ast': 1.11.1 + '@xtuc/long': 4.2.2 + dev: true + + /@xtuc/ieee754/1.2.0: + resolution: {integrity: sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==} + dev: true + + /@xtuc/long/4.2.2: + resolution: {integrity: sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==} + dev: true + + /acorn-import-assertions/1.8.0_acorn@8.7.1: + resolution: {integrity: sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==} + peerDependencies: + acorn: ^8 + dependencies: + acorn: 8.7.1 + dev: true + + /acorn/8.7.1: + resolution: {integrity: sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==} + engines: {node: '>=0.4.0'} + hasBin: true + dev: true + + /ajv-keywords/3.5.2_ajv@6.12.6: + resolution: {integrity: sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==} + peerDependencies: + ajv: ^6.9.1 + dependencies: + ajv: 6.12.6 + dev: true + + /ajv/6.12.6: + resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} + dependencies: + fast-deep-equal: 3.1.3 + fast-json-stable-stringify: 2.1.0 + json-schema-traverse: 0.4.1 + uri-js: 4.4.1 + dev: true + + /balanced-match/1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + dev: true + + /brace-expansion/1.1.11: + resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} + dependencies: + balanced-match: 1.0.2 + concat-map: 0.0.1 + dev: true + + /browserslist/4.20.4: + resolution: {integrity: sha512-ok1d+1WpnU24XYN7oC3QWgTyMhY/avPJ/r9T00xxvUOIparA/gc+UPUMaod3i+G6s+nI2nUb9xZ5k794uIwShw==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + dependencies: + caniuse-lite: 1.0.30001352 + electron-to-chromium: 1.4.154 + escalade: 3.1.1 + node-releases: 2.0.5 + picocolors: 1.0.0 + dev: true + + /buffer-from/1.1.2: + resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} + dev: true + + /builtin-modules/3.3.0: + resolution: {integrity: sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==} + engines: {node: '>=6'} + dev: true + + /caniuse-lite/1.0.30001352: + resolution: {integrity: sha512-GUgH8w6YergqPQDGWhJGt8GDRnY0L/iJVQcU3eJ46GYf52R8tk0Wxp0PymuFVZboJYXGiCqwozAYZNRjVj6IcA==} + dev: true + + /chrome-trace-event/1.0.3: + resolution: {integrity: sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==} + engines: {node: '>=6.0'} + dev: true + + /commander/2.20.3: + resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} + dev: true + + /commondir/1.0.1: + resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==} + dev: true + + /concat-map/0.0.1: + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + dev: true + + /csstype/3.1.0: + resolution: {integrity: sha512-uX1KG+x9h5hIJsaKR9xHUeUraxf8IODOwq9JLNPq6BwB04a/xgpq3rcx47l5BZu5zBPlgD342tdke3Hom/nJRA==} + dev: true + + /decky-frontend-lib/1.0.1: + resolution: {integrity: sha512-SgIPoB3IcWbzVRlXvs8JfhwrMphHYa7O/Ek2mh+rC0WTVT3TI2qGJ5+OoV16mw5kGY0DMu1ikcZC6ib1lh2zKQ==} + dev: false + + /deepmerge/4.2.2: + resolution: {integrity: sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==} + engines: {node: '>=0.10.0'} + dev: true + + /electron-to-chromium/1.4.154: + resolution: {integrity: sha512-GbV9djOkrnj6xmW+YYVVEI3VCQnJ0pnSTu7TW2JyjKd5cakoiSaG5R4RbEtfaD92GsY10DzbU3GYRe+IOA9kqA==} + dev: true + + /enhanced-resolve/5.9.3: + resolution: {integrity: sha512-Bq9VSor+kjvW3f9/MiiR4eE3XYgOl7/rS8lnSxbRbF3kS0B2r+Y9w5krBWxZgDxASVZbdYrn5wT4j/Wb0J9qow==} + engines: {node: '>=10.13.0'} + dependencies: + graceful-fs: 4.2.10 + tapable: 2.2.1 + dev: true + + /es-module-lexer/0.9.3: + resolution: {integrity: sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==} + dev: true + + /escalade/3.1.1: + resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} + engines: {node: '>=6'} + dev: true + + /eslint-scope/5.1.1: + resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} + engines: {node: '>=8.0.0'} + dependencies: + esrecurse: 4.3.0 + estraverse: 4.3.0 + dev: true + + /esrecurse/4.3.0: + resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} + engines: {node: '>=4.0'} + dependencies: + estraverse: 5.3.0 + dev: true + + /estraverse/4.3.0: + resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} + engines: {node: '>=4.0'} + dev: true + + /estraverse/5.3.0: + resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} + engines: {node: '>=4.0'} + dev: true + + /estree-walker/0.6.1: + resolution: {integrity: sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==} + dev: true + + /estree-walker/1.0.1: + resolution: {integrity: sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==} + dev: true + + /estree-walker/2.0.2: + resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} + dev: true + + /events/3.3.0: + resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} + engines: {node: '>=0.8.x'} + dev: true + + /fast-deep-equal/3.1.3: + resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} + dev: true + + /fast-json-stable-stringify/2.1.0: + resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} + dev: true + + /fs.realpath/1.0.0: + resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} + dev: true + + /fsevents/2.3.2: + resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /function-bind/1.1.1: + resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} + dev: true + + /glob-to-regexp/0.4.1: + resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==} + dev: true + + /glob/7.2.3: + resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.2 + once: 1.4.0 + path-is-absolute: 1.0.1 + dev: true + + /graceful-fs/4.2.10: + resolution: {integrity: sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==} + dev: true + + /has-flag/4.0.0: + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} + engines: {node: '>=8'} + dev: true + + /has/1.0.3: + resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} + engines: {node: '>= 0.4.0'} + dependencies: + function-bind: 1.1.1 + dev: true + + /inflight/1.0.6: + resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} + dependencies: + once: 1.4.0 + wrappy: 1.0.2 + dev: true + + /inherits/2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + dev: true + + /interpret/1.4.0: + resolution: {integrity: sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==} + engines: {node: '>= 0.10'} + dev: true + + /is-builtin-module/3.1.0: + resolution: {integrity: sha512-OV7JjAgOTfAFJmHZLvpSTb4qi0nIILDV1gWPYDnDJUTNFM5aGlRAhk4QcT8i7TuAleeEV5Fdkqn3t4mS+Q11fg==} + engines: {node: '>=6'} + dependencies: + builtin-modules: 3.3.0 + dev: true + + /is-core-module/2.9.0: + resolution: {integrity: sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==} + dependencies: + has: 1.0.3 + dev: true + + /is-module/1.0.0: + resolution: {integrity: sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==} + dev: true + + /is-reference/1.2.1: + resolution: {integrity: sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==} + dependencies: + '@types/estree': 0.0.51 + dev: true + + /jest-worker/27.5.1: + resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} + engines: {node: '>= 10.13.0'} + dependencies: + '@types/node': 17.0.42 + merge-stream: 2.0.0 + supports-color: 8.1.1 + dev: true + + /json-parse-even-better-errors/2.3.1: + resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} + dev: true + + /json-schema-traverse/0.4.1: + resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} + dev: true + + /loader-runner/4.3.0: + resolution: {integrity: sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==} + engines: {node: '>=6.11.5'} + dev: true + + /magic-string/0.25.9: + resolution: {integrity: sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==} + dependencies: + sourcemap-codec: 1.4.8 + dev: true + + /merge-stream/2.0.0: + resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} + dev: true + + /mime-db/1.52.0: + resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} + engines: {node: '>= 0.6'} + dev: true + + /mime-types/2.1.35: + resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} + engines: {node: '>= 0.6'} + dependencies: + mime-db: 1.52.0 + dev: true + + /minimatch/3.1.2: + resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + dependencies: + brace-expansion: 1.1.11 + dev: true + + /minimist/1.2.6: + resolution: {integrity: sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==} + dev: true + + /neo-async/2.6.2: + resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} + dev: true + + /node-releases/2.0.5: + resolution: {integrity: sha512-U9h1NLROZTq9uE1SNffn6WuPDg8icmi3ns4rEl/oTfIle4iLjTliCzgTsbaIFMq/Xn078/lfY/BL0GWZ+psK4Q==} + dev: true + + /once/1.4.0: + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + dependencies: + wrappy: 1.0.2 + dev: true + + /path-is-absolute/1.0.1: + resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} + engines: {node: '>=0.10.0'} + dev: true + + /path-parse/1.0.7: + resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + dev: true + + /picocolors/1.0.0: + resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} + dev: true + + /picomatch/2.3.1: + resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + engines: {node: '>=8.6'} + dev: true + + /punycode/2.1.1: + resolution: {integrity: sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==} + engines: {node: '>=6'} + dev: true + + /randombytes/2.1.0: + resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} + dependencies: + safe-buffer: 5.2.1 + dev: true + + /react-icons/4.4.0: + resolution: {integrity: sha512-fSbvHeVYo/B5/L4VhB7sBA1i2tS8MkT0Hb9t2H1AVPkwGfVHLJCqyr2Py9dKMxsyM63Eng1GkdZfbWj+Fmv8Rg==} + peerDependencies: + react: '*' + peerDependenciesMeta: + react: + optional: true + dev: false + + /rechoir/0.6.2: + resolution: {integrity: sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==} + engines: {node: '>= 0.10'} + dependencies: + resolve: 1.22.0 + dev: true + + /resolve/1.22.0: + resolution: {integrity: sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==} + hasBin: true + dependencies: + is-core-module: 2.9.0 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + dev: true + + /rollup-plugin-import-assets/1.1.1_rollup@2.75.6: + resolution: {integrity: sha512-u5zJwOjguTf2N+wETq2weNKGvNkuVc1UX/fPgg215p5xPvGOaI6/BTc024E9brvFjSQTfIYqgvwogQdipknu1g==} + peerDependencies: + rollup: '>=1.9.0' + dependencies: + rollup: 2.75.6 + rollup-pluginutils: 2.8.2 + url-join: 4.0.1 + dev: true + + /rollup-pluginutils/2.8.2: + resolution: {integrity: sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==} + dependencies: + estree-walker: 0.6.1 + dev: true + + /rollup/2.75.6: + resolution: {integrity: sha512-OEf0TgpC9vU6WGROJIk1JA3LR5vk/yvqlzxqdrE2CzzXnqKXNzbAwlWUXis8RS3ZPe7LAq+YUxsRa0l3r27MLA==} + engines: {node: '>=10.0.0'} + hasBin: true + optionalDependencies: + fsevents: 2.3.2 + dev: true + + /safe-buffer/5.2.1: + resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + dev: true + + /schema-utils/3.1.1: + resolution: {integrity: sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==} + engines: {node: '>= 10.13.0'} + dependencies: + '@types/json-schema': 7.0.11 + ajv: 6.12.6 + ajv-keywords: 3.5.2_ajv@6.12.6 + dev: true + + /serialize-javascript/6.0.0: + resolution: {integrity: sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==} + dependencies: + randombytes: 2.1.0 + dev: true + + /shelljs/0.8.5: + resolution: {integrity: sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==} + engines: {node: '>=4'} + hasBin: true + dependencies: + glob: 7.2.3 + interpret: 1.4.0 + rechoir: 0.6.2 + dev: true + + /shx/0.3.4: + resolution: {integrity: sha512-N6A9MLVqjxZYcVn8hLmtneQWIJtp8IKzMP4eMnx+nqkvXoqinUPCbUFLp2UcWTEIUONhlk0ewxr/jaVGlc+J+g==} + engines: {node: '>=6'} + hasBin: true + dependencies: + minimist: 1.2.6 + shelljs: 0.8.5 + dev: true + + /source-map-support/0.5.21: + resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} + dependencies: + buffer-from: 1.1.2 + source-map: 0.6.1 + dev: true + + /source-map/0.6.1: + resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} + engines: {node: '>=0.10.0'} + dev: true + + /sourcemap-codec/1.4.8: + resolution: {integrity: sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==} + dev: true + + /supports-color/8.1.1: + resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} + engines: {node: '>=10'} + dependencies: + has-flag: 4.0.0 + dev: true + + /supports-preserve-symlinks-flag/1.0.0: + resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} + engines: {node: '>= 0.4'} + dev: true + + /tapable/2.2.1: + resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} + engines: {node: '>=6'} + dev: true + + /terser-webpack-plugin/5.3.3_webpack@5.73.0: + resolution: {integrity: sha512-Fx60G5HNYknNTNQnzQ1VePRuu89ZVYWfjRAeT5rITuCY/1b08s49e5kSQwHDirKZWuoKOBRFS98EUUoZ9kLEwQ==} + engines: {node: '>= 10.13.0'} + peerDependencies: + '@swc/core': '*' + esbuild: '*' + uglify-js: '*' + webpack: ^5.1.0 + peerDependenciesMeta: + '@swc/core': + optional: true + esbuild: + optional: true + uglify-js: + optional: true + dependencies: + '@jridgewell/trace-mapping': 0.3.13 + jest-worker: 27.5.1 + schema-utils: 3.1.1 + serialize-javascript: 6.0.0 + terser: 5.14.1 + webpack: 5.73.0 + dev: true + + /terser/5.14.1: + resolution: {integrity: sha512-+ahUAE+iheqBTDxXhTisdA8hgvbEG1hHOQ9xmNjeUJSoi6DU/gMrKNcfZjHkyY6Alnuyc+ikYJaxxfHkT3+WuQ==} + engines: {node: '>=10'} + hasBin: true + dependencies: + '@jridgewell/source-map': 0.3.2 + acorn: 8.7.1 + commander: 2.20.3 + source-map-support: 0.5.21 + dev: true + + /tslib/2.4.0: + resolution: {integrity: sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==} + dev: true + + /typescript/4.7.3: + resolution: {integrity: sha512-WOkT3XYvrpXx4vMMqlD+8R8R37fZkjyLGlxavMc4iB8lrl8L0DeTcHbYgw/v0N/z9wAFsgBhcsF0ruoySS22mA==} + engines: {node: '>=4.2.0'} + hasBin: true + dev: true + + /uri-js/4.4.1: + resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} + dependencies: + punycode: 2.1.1 + dev: true + + /url-join/4.0.1: + resolution: {integrity: sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA==} + dev: true + + /watchpack/2.4.0: + resolution: {integrity: sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==} + engines: {node: '>=10.13.0'} + dependencies: + glob-to-regexp: 0.4.1 + graceful-fs: 4.2.10 + dev: true + + /webpack-sources/3.2.3: + resolution: {integrity: sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==} + engines: {node: '>=10.13.0'} + dev: true + + /webpack/5.73.0: + resolution: {integrity: sha512-svjudQRPPa0YiOYa2lM/Gacw0r6PvxptHj4FuEKQ2kX05ZLkjbVc5MnPs6its5j7IZljnIqSVo/OsY2X0IpHGA==} + engines: {node: '>=10.13.0'} + hasBin: true + peerDependencies: + webpack-cli: '*' + peerDependenciesMeta: + webpack-cli: + optional: true + dependencies: + '@types/eslint-scope': 3.7.3 + '@types/estree': 0.0.51 + '@webassemblyjs/ast': 1.11.1 + '@webassemblyjs/wasm-edit': 1.11.1 + '@webassemblyjs/wasm-parser': 1.11.1 + acorn: 8.7.1 + acorn-import-assertions: 1.8.0_acorn@8.7.1 + browserslist: 4.20.4 + chrome-trace-event: 1.0.3 + enhanced-resolve: 5.9.3 + es-module-lexer: 0.9.3 + eslint-scope: 5.1.1 + events: 3.3.0 + glob-to-regexp: 0.4.1 + graceful-fs: 4.2.10 + json-parse-even-better-errors: 2.3.1 + loader-runner: 4.3.0 + mime-types: 2.1.35 + neo-async: 2.6.2 + schema-utils: 3.1.1 + tapable: 2.2.1 + terser-webpack-plugin: 5.3.3_webpack@5.73.0 + watchpack: 2.4.0 + webpack-sources: 3.2.3 + transitivePeerDependencies: + - '@swc/core' + - esbuild + - uglify-js + dev: true + + /wrappy/1.0.2: + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + dev: true diff --git a/rollup.config.js b/rollup.config.js new file mode 100644 index 0000000..8717908 --- /dev/null +++ b/rollup.config.js @@ -0,0 +1,37 @@ +import commonjs from '@rollup/plugin-commonjs'; +import json from '@rollup/plugin-json'; +import { nodeResolve } from '@rollup/plugin-node-resolve'; +import replace from '@rollup/plugin-replace'; +import typescript from '@rollup/plugin-typescript'; +import { defineConfig } from 'rollup'; +import importAssets from 'rollup-plugin-import-assets'; + +import { name } from "./plugin.json"; + +export default defineConfig({ + input: './src/index.tsx', + plugins: [ + commonjs(), + nodeResolve(), + typescript(), + json(), + replace({ + preventAssignment: false, + 'process.env.NODE_ENV': JSON.stringify('production'), + }), + importAssets({ + publicPath: `http://127.0.0.1:1337/plugins/${name}/` + }) + ], + context: 'window', + external: ['react', 'react-dom'], + output: { + file: 'dist/index.js', + globals: { + react: 'SP_REACT', + 'react-dom': 'SP_REACTDOM', + }, + format: 'iife', + exports: 'default', + }, +}); diff --git a/src/index.tsx b/src/index.tsx new file mode 100755 index 0000000..615253d --- /dev/null +++ b/src/index.tsx @@ -0,0 +1,105 @@ +import { + ButtonItem, + definePlugin, + DialogButton, + Menu, + MenuItem, + PanelSection, + PanelSectionRow, + Router, + ServerAPI, + showContextMenu, + staticClasses, +} from "decky-frontend-lib"; +import { VFC } from "react"; +import { FaShip } from "react-icons/fa"; + +import logo from "../assets/logo.png"; + +// interface AddMethodArgs { +// left: number; +// right: number; +// } + +const Content: VFC<{ serverAPI: ServerAPI }> = ({}) => { + // const [result, setResult] = useState(); + + // const onClick = async () => { + // const result = await serverAPI.callPluginMethod( + // "add", + // { + // left: 2, + // right: 2, + // } + // ); + // if (result.success) { + // setResult(result.result); + // } + // }; + + return ( + + + + showContextMenu( + {}}> + {}}>Item #1 + {}}>Item #2 + {}}>Item #3 + , + e.currentTarget ?? window + ) + } + > + Server says yolo + + + + +
+ +
+
+ + + { + Router.CloseSideMenus(); + Router.Navigate("/decky-plugin-test"); + }} + > + Router + + +
+ ); +}; + +const DeckyPluginRouterTest: VFC = () => { + return ( +
+ Hello World! + Router.NavigateToStore()}> + Go to Store + +
+ ); +}; + +export default definePlugin((serverApi: ServerAPI) => { + serverApi.routerHook.addRoute("/decky-plugin-test", DeckyPluginRouterTest, { + exact: true, + }); + + return { + title:
Example Plugin
, + content: , + icon: , + onDismount() { + serverApi.routerHook.removeRoute("/decky-plugin-test"); + }, + }; +}); diff --git a/src/types.d.ts b/src/types.d.ts new file mode 100644 index 0000000..dfc0472 --- /dev/null +++ b/src/types.d.ts @@ -0,0 +1,14 @@ +declare module "*.svg" { + const content: string; + export default content; +} + +declare module "*.png" { + const content: string; + export default content; +} + +declare module "*.jpg" { + const content: string; + export default content; +} diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..13b0c35 --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,23 @@ +{ + "compilerOptions": { + "outDir": "dist", + "module": "ESNext", + "target": "ES2020", + "jsx": "react", + "jsxFactory": "window.SP_REACT.createElement", + "declaration": false, + "moduleResolution": "node", + "noUnusedLocals": true, + "noUnusedParameters": true, + "esModuleInterop": true, + "noImplicitReturns": true, + "noImplicitThis": true, + "noImplicitAny": true, + "strict": true, + "suppressImplicitAnyIndexErrors": true, + "allowSyntheticDefaultImports": true, + "skipLibCheck": true + }, + "include": ["src"], + "exclude": ["node_modules"] +}