diff --git a/CHANGELOG.md b/CHANGELOG.md index 054a89c..6f4fcfb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,46 @@ +## [3.18.11](https://github.com/SteamDeckHomebrew/decky-frontend-lib/compare/v3.18.10...v3.18.11) (2023-02-18) + + +### Bug Fixes + +* **Navigation:** fix NavigateToExternalWeb ([82214fe](https://github.com/SteamDeckHomebrew/decky-frontend-lib/commit/82214fef4c0a383776631fbb754550fe69f9000d)) +* **Navigation:** fix NavigateToExternalWeb ([c53d7f8](https://github.com/SteamDeckHomebrew/decky-frontend-lib/commit/c53d7f8448d8aad76dc699f1f309bdd547ee14df)) + +## [3.18.10](https://github.com/SteamDeckHomebrew/decky-frontend-lib/compare/v3.18.9...v3.18.10) (2023-01-17) + + +### Bug Fixes + +* **SuspensefulImage:** fix changing src ([9723854](https://github.com/SteamDeckHomebrew/decky-frontend-lib/commit/9723854ddca53d7708e1effbddec9e5ead22d5de)) + +## [3.18.9](https://github.com/SteamDeckHomebrew/decky-frontend-lib/compare/v3.18.8...v3.18.9) (2023-01-16) + + +### Bug Fixes + +* **Navigation:** fix on stable ([4affd4a](https://github.com/SteamDeckHomebrew/decky-frontend-lib/commit/4affd4aaec088f01d0f30af48cb4daa34acf26b1)) + +## [3.18.8](https://github.com/SteamDeckHomebrew/decky-frontend-lib/compare/v3.18.7...v3.18.8) (2023-01-16) + + +### Bug Fixes + +* **Navigation:** fix timing issue in decky-loader ([58b69f0](https://github.com/SteamDeckHomebrew/decky-frontend-lib/commit/58b69f0d6c43356c4f0ed183802d5bf7fb80e978)) + +## [3.18.7](https://github.com/SteamDeckHomebrew/decky-frontend-lib/compare/v3.18.6...v3.18.7) (2023-01-16) + + +### Bug Fixes + +* un-break navigation on stable ([2e66e5a](https://github.com/SteamDeckHomebrew/decky-frontend-lib/commit/2e66e5a555f44009d24e332eca82453ba930baf7)) + +## [3.18.6](https://github.com/SteamDeckHomebrew/decky-frontend-lib/compare/v3.18.5...v3.18.6) (2023-01-13) + + +### Bug Fixes + +* **Router:** fix Navigation for the millionth time ([aac2d52](https://github.com/SteamDeckHomebrew/decky-frontend-lib/commit/aac2d520a68b1074ba1ae988d6c92f7881a296d7)) + ## [3.18.5](https://github.com/SteamDeckHomebrew/decky-frontend-lib/compare/v3.18.4...v3.18.5) (2022-12-21) diff --git a/package.json b/package.json index d4ac054..613868c 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "decky-frontend-lib", - "version": "3.18.5", + "version": "3.18.11", "description": "A library for building decky plugins", "main": "dist/index.js", "types": "dist/index.d.ts", @@ -9,7 +9,7 @@ "scripts": { "build": "shx rm -rf dist && tsc -b", "dev": "tsc -b -w", - "docs": "typedoc --tsconfig ./tsconfig.json src/**/*", + "docs": "typedoc --theme wiki-js --tsconfig ./tsconfig.json src/**/*", "test": "echo 'No tests for now!'", "prepare": "husky install", "commit": "git-cz" @@ -59,11 +59,11 @@ "semantic-release": "^19.0.3", "shx": "^0.3.4", "ts-jest": "^27.1.4", - "typedoc": "^0.23.15", - "typedoc-plugin-markdown": "^3.13.6", + "typedoc": "^0.23.24", "typedoc-plugin-mdn-links": "^2.0.0", "typedoc-plugin-missing-exports": "^1.0.0", - "typescript": "^4.6.3" + "typedoc-wikijs-theme": "^1.0.5", + "typescript": "^4.9.5" }, "pnpm": { "peerDependencyRules": { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 368b7a4..bcf1b6d 100755 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -19,11 +19,11 @@ specifiers: semantic-release: ^19.0.3 shx: ^0.3.4 ts-jest: ^27.1.4 - typedoc: ^0.23.15 - typedoc-plugin-markdown: ^3.13.6 + typedoc: ^0.23.24 typedoc-plugin-mdn-links: ^2.0.0 typedoc-plugin-missing-exports: ^1.0.0 - typescript: ^4.6.3 + typedoc-wikijs-theme: ^1.0.5 + typescript: ^4.9.5 devDependencies: '@commitlint/cli': 17.0.2 @@ -43,12 +43,12 @@ devDependencies: prettier-plugin-import-sort: 0.0.7_prettier@2.7.1 semantic-release: 19.0.3 shx: 0.3.4 - ts-jest: 27.1.4_ibhx3ehxrt2kgmkik4bkzmyeei - typedoc: 0.23.15_typescript@4.6.4 - typedoc-plugin-markdown: 3.13.6_typedoc@0.23.15 - typedoc-plugin-mdn-links: 2.0.0_typedoc@0.23.15 - typedoc-plugin-missing-exports: 1.0.0_typedoc@0.23.15 - typescript: 4.6.4 + ts-jest: 27.1.4_nrlewyunxfyvapgcwhbeszaybu + typedoc: 0.23.24_typescript@4.9.5 + typedoc-plugin-mdn-links: 2.0.0_typedoc@0.23.24 + typedoc-plugin-missing-exports: 1.0.0_typedoc@0.23.24 + typedoc-wikijs-theme: 1.0.5_typedoc@0.23.24 + typescript: 4.9.5 packages: @@ -419,6 +419,15 @@ packages: ajv: 6.12.6 dev: true + /@commitlint/config-validator/17.4.0: + resolution: {integrity: sha512-Sa/+8KNpDXz4zT4bVbz2fpFjvgkPO6u2V2fP4TKgt6FjmOw2z3eEX859vtfeaTav/ukBw0/0jr+5ZTZp9zCBhA==} + engines: {node: '>=v14'} + dependencies: + '@commitlint/types': 17.4.0 + ajv: 8.12.0 + dev: true + optional: true + /@commitlint/cz-commitlint/17.0.0_commitizen@4.2.4: resolution: {integrity: sha512-Cq5rb3pUJRIp8M17/w8iUmDup/7KOZVt3OSDa3LKym9y9Y7/7MhiOHfWvTYcMJIOYT7TRbxVycbVvx5hPPjZ/A==} engines: {node: '>=v14'} @@ -451,6 +460,12 @@ packages: engines: {node: '>=v14'} dev: true + /@commitlint/execute-rule/17.4.0: + resolution: {integrity: sha512-LIgYXuCSO5Gvtc0t9bebAMSwd68ewzmqLypqI2Kke1rqOqqDbMpYcYfoPfFlv9eyLIh4jocHWwCK5FS7z9icUA==} + engines: {node: '>=v14'} + dev: true + optional: true + /@commitlint/format/17.0.0: resolution: {integrity: sha512-MZzJv7rBp/r6ZQJDEodoZvdRM0vXu1PfQvMTNWFb8jFraxnISMTnPBWMMjr2G/puoMashwaNM//fl7j8gGV5lA==} engines: {node: '>=v14'} @@ -488,15 +503,39 @@ packages: '@types/node': 17.0.33 chalk: 4.1.2 cosmiconfig: 7.0.1 - cosmiconfig-typescript-loader: 2.0.1_2e3zkt3gzqz6r43dj4x46rot3i + cosmiconfig-typescript-loader: 2.0.1_2pb7oj3w6ri7fljxteglruehxe lodash: 4.17.21 resolve-from: 5.0.0 - typescript: 4.6.4 + typescript: 4.9.5 transitivePeerDependencies: - '@swc/core' - '@swc/wasm' dev: true + /@commitlint/load/17.4.2: + resolution: {integrity: sha512-Si++F85rJ9t4hw6JcOw1i2h0fdpdFQt0YKwjuK4bk9KhFjyFkRxvR3SB2dPaMs+EwWlDrDBGL+ygip1QD6gmPw==} + engines: {node: '>=v14'} + dependencies: + '@commitlint/config-validator': 17.4.0 + '@commitlint/execute-rule': 17.4.0 + '@commitlint/resolve-extends': 17.4.0 + '@commitlint/types': 17.4.0 + '@types/node': 17.0.33 + chalk: 4.1.2 + cosmiconfig: 8.0.0 + cosmiconfig-typescript-loader: 4.3.0_fbkf72l7lgqvhdmgtmwxouknwy + lodash.isplainobject: 4.0.6 + lodash.merge: 4.6.2 + lodash.uniq: 4.5.0 + resolve-from: 5.0.0 + ts-node: 10.9.1_2pb7oj3w6ri7fljxteglruehxe + typescript: 4.9.5 + transitivePeerDependencies: + - '@swc/core' + - '@swc/wasm' + dev: true + optional: true + /@commitlint/message/17.0.0: resolution: {integrity: sha512-LpcwYtN+lBlfZijHUdVr8aNFTVpHjuHI52BnfoV01TF7iSLnia0jttzpLkrLmI8HNQz6Vhr9UrxDWtKZiMGsBw==} engines: {node: '>=v14'} @@ -533,6 +572,19 @@ packages: resolve-global: 1.0.0 dev: true + /@commitlint/resolve-extends/17.4.0: + resolution: {integrity: sha512-3JsmwkrCzoK8sO22AzLBvNEvC1Pmdn/65RKXzEtQMy6oYMl0Snrq97a5bQQEFETF0VsvbtUuKttLqqgn99OXRQ==} + engines: {node: '>=v14'} + dependencies: + '@commitlint/config-validator': 17.4.0 + '@commitlint/types': 17.4.0 + import-fresh: 3.3.0 + lodash.mergewith: 4.6.2 + resolve-from: 5.0.0 + resolve-global: 1.0.0 + dev: true + optional: true + /@commitlint/rules/17.0.0: resolution: {integrity: sha512-45nIy3dERKXWpnwX9HeBzK5SepHwlDxdGBfmedXhL30fmFCkJOdxHyOJsh0+B0RaVsLGT01NELpfzJUmtpDwdQ==} engines: {node: '>=v14'} @@ -563,6 +615,14 @@ packages: chalk: 4.1.2 dev: true + /@commitlint/types/17.4.0: + resolution: {integrity: sha512-2NjAnq5IcxY9kXtUeO2Ac0aPpvkuOmwbH/BxIm36XXK5LtWFObWJWjXOA+kcaABMrthjWu6la+FUpyYFMHRvbA==} + engines: {node: '>=v14'} + dependencies: + chalk: 4.1.2 + dev: true + optional: true + /@cspotcode/source-map-support/0.8.1: resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} engines: {node: '>=12'} @@ -1097,6 +1157,16 @@ packages: resolution: {integrity: sha512-6XFfSQmMgq0CFLY1MslA/CPUfhIL919M1rMsa5lP2P097N2Wd1sSX0tx1u4olM16fLNhtHZpRhedZJphNJqmZg==} dev: true + /@tsconfig/node10/1.0.9: + resolution: {integrity: sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==} + dev: true + optional: true + + /@tsconfig/node12/1.0.11: + resolution: {integrity: sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==} + dev: true + optional: true + /@tsconfig/node12/1.0.9: resolution: {integrity: sha512-/yBMcem+fbvhSREH+s14YJi18sp7J9jpuhYByADT2rypfajMZZN4WQ6zBGgBKp53NKmqI36wFYDb3yaMPurITw==} dev: true @@ -1105,10 +1175,20 @@ packages: resolution: {integrity: sha512-509r2+yARFfHHE7T6Puu2jjkoycftovhXRqW328PDXTVGKihlb1P8Z9mMZH04ebyajfRY7dedfGynlrFHJUQCg==} dev: true + /@tsconfig/node14/1.0.3: + resolution: {integrity: sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==} + dev: true + optional: true + /@tsconfig/node16/1.0.2: resolution: {integrity: sha512-eZxlbI8GZscaGS7kkc/trHTT5xgrjH3/1n2JDwusC9iahPKWMRvRjJSAN5mCXviuTGQ/lHnhvv8Q1YTpnfz9gA==} dev: true + /@tsconfig/node16/1.0.3: + resolution: {integrity: sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ==} + dev: true + optional: true + /@types/babel__core/7.1.19: resolution: {integrity: sha512-WEOTgRsbYkvA/KCsDwVEGkd7WAr1e3g31VHQ8zy5gul/V1qKullU/BU5I68X5v7V3GnB9eotmom4v5a5gjxorw==} dependencies: @@ -1268,6 +1348,13 @@ packages: hasBin: true dev: true + /acorn/8.8.2: + resolution: {integrity: sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==} + engines: {node: '>=0.4.0'} + hasBin: true + dev: true + optional: true + /agent-base/6.0.2: resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} engines: {node: '>= 6.0.0'} @@ -1294,6 +1381,16 @@ packages: uri-js: 4.4.1 dev: true + /ajv/8.12.0: + resolution: {integrity: sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==} + dependencies: + fast-deep-equal: 3.1.3 + json-schema-traverse: 1.0.0 + require-from-string: 2.0.2 + uri-js: 4.4.1 + dev: true + optional: true + /ansi-escapes/3.2.0: resolution: {integrity: sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==} engines: {node: '>=4'} @@ -1369,6 +1466,11 @@ packages: sprintf-js: 1.0.3 dev: true + /argparse/2.0.1: + resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + dev: true + optional: true + /argv-formatter/1.0.0: resolution: {integrity: sha512-F2+Hkm9xFaRg+GkaNnbwXNDV5O6pnCFEmqyhvfC/Ic5LbgOWjJh3L+mN/s91rxVL3znE7DYVpW0GJFT+4YBgWw==} dev: true @@ -1811,7 +1913,7 @@ packages: resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} dev: true - /cosmiconfig-typescript-loader/2.0.1_2e3zkt3gzqz6r43dj4x46rot3i: + /cosmiconfig-typescript-loader/2.0.1_2pb7oj3w6ri7fljxteglruehxe: resolution: {integrity: sha512-B9s6sX/omXq7I6gC6+YgLmrBFMJhPWew7ty/X5Tuwtd2zOSgWaUdXjkuVwbe3qqcdETo60+1nSVMekq//LIXVA==} engines: {node: '>=12', npm: '>=6'} peerDependencies: @@ -1820,13 +1922,29 @@ packages: dependencies: '@types/node': 17.0.33 cosmiconfig: 7.0.1 - ts-node: 10.8.1_2e3zkt3gzqz6r43dj4x46rot3i - typescript: 4.6.4 + ts-node: 10.8.1_2pb7oj3w6ri7fljxteglruehxe + typescript: 4.9.5 transitivePeerDependencies: - '@swc/core' - '@swc/wasm' dev: true + /cosmiconfig-typescript-loader/4.3.0_fbkf72l7lgqvhdmgtmwxouknwy: + resolution: {integrity: sha512-NTxV1MFfZDLPiBMjxbHRwSh5LaLcPMwNdCutmnHJCKoVnlvldPWlllonKwrsRJ5pYZBIBGRWWU2tfvzxgeSW5Q==} + engines: {node: '>=12', npm: '>=6'} + peerDependencies: + '@types/node': '*' + cosmiconfig: '>=7' + ts-node: '>=10' + typescript: '>=3' + dependencies: + '@types/node': 17.0.33 + cosmiconfig: 8.0.0 + ts-node: 10.9.1_2pb7oj3w6ri7fljxteglruehxe + typescript: 4.9.5 + dev: true + optional: true + /cosmiconfig/5.2.1: resolution: {integrity: sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==} engines: {node: '>=4'} @@ -1848,6 +1966,17 @@ packages: yaml: 1.10.2 dev: true + /cosmiconfig/8.0.0: + resolution: {integrity: sha512-da1EafcpH6b/TD8vDRaWV7xFINlHlF6zKsGwS1TsuVJTZRkquaS5HTMq7uq6h31619QjbsYl21gVDOm32KM1vQ==} + engines: {node: '>=14'} + dependencies: + import-fresh: 3.3.0 + js-yaml: 4.1.0 + parse-json: 5.2.0 + path-type: 4.0.0 + dev: true + optional: true + /create-require/1.1.1: resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} dev: true @@ -1896,7 +2025,7 @@ packages: longest: 2.0.1 word-wrap: 1.2.3 optionalDependencies: - '@commitlint/load': 17.0.0 + '@commitlint/load': 17.4.2 transitivePeerDependencies: - '@swc/core' - '@swc/wasm' @@ -2470,7 +2599,7 @@ packages: source-map: 0.6.1 wordwrap: 1.0.0 optionalDependencies: - uglify-js: 3.16.0 + uglify-js: 3.17.4 dev: true /hard-rejection/2.1.0: @@ -3376,6 +3505,14 @@ packages: esprima: 4.0.1 dev: true + /js-yaml/4.1.0: + resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} + hasBin: true + dependencies: + argparse: 2.0.1 + dev: true + optional: true + /jsdom/16.7.0: resolution: {integrity: sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw==} engines: {node: '>=10'} @@ -3436,6 +3573,11 @@ packages: resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} dev: true + /json-schema-traverse/1.0.0: + resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} + dev: true + optional: true + /json-stringify-safe/5.0.1: resolution: {integrity: sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==} dev: true @@ -3556,6 +3698,21 @@ packages: resolution: {integrity: sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=} dev: true + /lodash.merge/4.6.2: + resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} + dev: true + optional: true + + /lodash.mergewith/4.6.2: + resolution: {integrity: sha512-GK3g5RPZWTRSeLSpgP8Xhra+pnjBC56q9FZYe1d5RN3TJ35dbkGy3YqBSMbyCrlbi+CM9Z3Jk5yTL7RCsqboyQ==} + dev: true + optional: true + + /lodash.uniq/4.5.0: + resolution: {integrity: sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==} + dev: true + optional: true + /lodash.uniqby/4.7.0: resolution: {integrity: sha512-e/zcLx6CSbmaEgFHCA7BnoQKyCtKMxnuWrJygbwPs/AIn+IMKl66L8/s+wBUn5LRw2pZx3bUHibiV1b6aTWIww==} dev: true @@ -3628,8 +3785,8 @@ packages: hasBin: true dev: true - /marked/4.1.1: - resolution: {integrity: sha512-0cNMnTcUJPxbA6uWmCmjWz4NJRe/0Xfk2NhXCUHjew9qJzFN20krFnsUe7QynwqOwa5m1fZ4UDg0ycKFVC0ccw==} + /marked/4.2.12: + resolution: {integrity: sha512-yr8hSKa3Fv4D3jdZmtMMPghgVt6TWbk86WQaWhDloQjRSQhMMYCAro7jP7VDJrjjdV8pxVxMssXS8B8Y5DZ5aw==} engines: {node: '>= 12'} hasBin: true dev: true @@ -3711,8 +3868,8 @@ packages: brace-expansion: 1.1.11 dev: true - /minimatch/5.1.0: - resolution: {integrity: sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==} + /minimatch/5.1.6: + resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==} engines: {node: '>=10'} dependencies: brace-expansion: 2.0.1 @@ -4287,6 +4444,12 @@ packages: engines: {node: '>=0.10.0'} dev: true + /require-from-string/2.0.2: + resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} + engines: {node: '>=0.10.0'} + dev: true + optional: true + /resolve-cwd/3.0.0: resolution: {integrity: sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==} engines: {node: '>=8'} @@ -4490,12 +4653,12 @@ packages: rechoir: 0.6.2 dev: true - /shiki/0.11.1: - resolution: {integrity: sha512-EugY9VASFuDqOexOgXR18ZV+TbFrQHeCpEYaXamO+SZlsnT/2LxuLBX25GGtIrwaEVFXUAbUQ601SWE2rMwWHA==} + /shiki/0.12.1: + resolution: {integrity: sha512-aieaV1m349rZINEBkjxh2QbBvFFQOlgqYTNtCal82hHj4dDZ76oMlQIX+C7ryerBTDiga3e5NfH6smjdJ02BbQ==} dependencies: jsonc-parser: 3.2.0 - vscode-oniguruma: 1.6.2 - vscode-textmate: 6.0.0 + vscode-oniguruma: 1.7.0 + vscode-textmate: 8.0.0 dev: true /shx/0.3.4: @@ -4852,7 +5015,7 @@ packages: engines: {node: '>=8'} dev: true - /ts-jest/27.1.4_ibhx3ehxrt2kgmkik4bkzmyeei: + /ts-jest/27.1.4_nrlewyunxfyvapgcwhbeszaybu: resolution: {integrity: sha512-qjkZlVPWVctAezwsOD1OPzbZ+k7zA5z3oxII4dGdZo5ggX/PL7kvwTM0pXTr10fAtbiVpJaL3bWd502zAhpgSQ==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} hasBin: true @@ -4882,11 +5045,11 @@ packages: lodash.memoize: 4.1.2 make-error: 1.3.6 semver: 7.3.7 - typescript: 4.6.4 + typescript: 4.9.5 yargs-parser: 20.2.9 dev: true - /ts-node/10.8.1_2e3zkt3gzqz6r43dj4x46rot3i: + /ts-node/10.8.1_2pb7oj3w6ri7fljxteglruehxe: resolution: {integrity: sha512-Wwsnao4DQoJsN034wePSg5nZiw4YKXf56mPIAeD6wVmiv+RytNSWqc2f3fKvcUoV+Yn2+yocD71VOfQHbmVX4g==} hasBin: true peerDependencies: @@ -4912,11 +5075,43 @@ packages: create-require: 1.1.1 diff: 4.0.2 make-error: 1.3.6 - typescript: 4.6.4 + typescript: 4.9.5 v8-compile-cache-lib: 3.0.1 yn: 3.1.1 dev: true + /ts-node/10.9.1_2pb7oj3w6ri7fljxteglruehxe: + resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==} + hasBin: true + peerDependencies: + '@swc/core': '>=1.2.50' + '@swc/wasm': '>=1.2.50' + '@types/node': '*' + typescript: '>=2.7' + peerDependenciesMeta: + '@swc/core': + optional: true + '@swc/wasm': + optional: true + dependencies: + '@cspotcode/source-map-support': 0.8.1 + '@tsconfig/node10': 1.0.9 + '@tsconfig/node12': 1.0.11 + '@tsconfig/node14': 1.0.3 + '@tsconfig/node16': 1.0.3 + '@types/node': 17.0.33 + acorn: 8.8.2 + acorn-walk: 8.2.0 + arg: 4.1.3 + create-require: 1.1.1 + diff: 4.0.2 + make-error: 1.3.6 + typescript: 4.9.5 + v8-compile-cache-lib: 3.0.1 + yn: 3.1.1 + dev: true + optional: true + /tslib/1.14.1: resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} dev: true @@ -4969,43 +5164,51 @@ packages: is-typedarray: 1.0.0 dev: true - /typedoc-plugin-markdown/3.13.6_typedoc@0.23.15: - resolution: {integrity: sha512-ISSc9v3BK7HkokxSBuJPttXox4tJ6hP0N9wfSIk0fmLN67+eqtAxbk97gs2nDiuha+RTO5eW9gdeAb+RPP0mgg==} + /typedoc-plugin-markdown/4.0.0-next.3_typedoc@0.23.24: + resolution: {integrity: sha512-Koim98xkXOoY8KPlMNH/cKTfqTEocVEYMa3XZgoPX/DkGp7ioB6nl38p6Snl7rEmhcbHkFktcUoOQLn04Kk3sg==} peerDependencies: typedoc: '>=0.23.0' dependencies: - handlebars: 4.7.7 - typedoc: 0.23.15_typescript@4.6.4 + typedoc: 0.23.24_typescript@4.9.5 dev: true - /typedoc-plugin-mdn-links/2.0.0_typedoc@0.23.15: + /typedoc-plugin-mdn-links/2.0.0_typedoc@0.23.24: resolution: {integrity: sha512-IGLuelXPOenGdmklr5DHgPPf/MfZj7aEYCxCMtPN8C1D0lA7w0YLahd0jhDDcOMU7zL1EPcM5pPnhZHltDhqGQ==} peerDependencies: typedoc: 0.22.x || 0.23.x dependencies: - typedoc: 0.23.15_typescript@4.6.4 + typedoc: 0.23.24_typescript@4.9.5 dev: true - /typedoc-plugin-missing-exports/1.0.0_typedoc@0.23.15: + /typedoc-plugin-missing-exports/1.0.0_typedoc@0.23.24: resolution: {integrity: sha512-7s6znXnuAj1eD9KYPyzVzR1lBF5nwAY8IKccP5sdoO9crG4lpd16RoFpLsh2PccJM+I2NASpr0+/NMka6ThwVA==} peerDependencies: typedoc: 0.22.x || 0.23.x dependencies: - typedoc: 0.23.15_typescript@4.6.4 + typedoc: 0.23.24_typescript@4.9.5 dev: true - /typedoc/0.23.15_typescript@4.6.4: - resolution: {integrity: sha512-x9Zu+tTnwxb9YdVr+zvX7LYzyBl1nieOr6lrSHbHsA22/RJK2m4Y525WIg5Mj4jWCmfL47v6f4hUzY7EIuwS5w==} + /typedoc-wikijs-theme/1.0.5_typedoc@0.23.24: + resolution: {integrity: sha512-nMHOcaER9EHh6XACq5wb+CBT26Xi3Coj7/0AAG1OdrNDzRirnxZVpqVNlFEcd7MOdTKauKgY6yAqfSjaJ6fapQ==} + peerDependencies: + typedoc: '>=0.23.0' + dependencies: + typedoc: 0.23.24_typescript@4.9.5 + typedoc-plugin-markdown: 4.0.0-next.3_typedoc@0.23.24 + dev: true + + /typedoc/0.23.24_typescript@4.9.5: + resolution: {integrity: sha512-bfmy8lNQh+WrPYcJbtjQ6JEEsVl/ce1ZIXyXhyW+a1vFrjO39t6J8sL/d6FfAGrJTc7McCXgk9AanYBSNvLdIA==} engines: {node: '>= 14.14'} hasBin: true peerDependencies: - typescript: 4.6.x || 4.7.x || 4.8.x + typescript: 4.6.x || 4.7.x || 4.8.x || 4.9.x dependencies: lunr: 2.3.9 - marked: 4.1.1 - minimatch: 5.1.0 - shiki: 0.11.1 - typescript: 4.6.4 + marked: 4.2.12 + minimatch: 5.1.6 + shiki: 0.12.1 + typescript: 4.9.5 dev: true /typescript/3.9.10: @@ -5014,14 +5217,14 @@ packages: hasBin: true dev: true - /typescript/4.6.4: - resolution: {integrity: sha512-9ia/jWHIEbo49HfjrLGfKbZSuWo9iTMwXO+Ca3pRsSpbsMbc7/IU8NKdCZVRRBafVPGnoJeFL76ZOAA84I9fEg==} + /typescript/4.9.5: + resolution: {integrity: sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==} engines: {node: '>=4.2.0'} hasBin: true dev: true - /uglify-js/3.16.0: - resolution: {integrity: sha512-FEikl6bR30n0T3amyBh3LoiBdqHRy/f4H80+My34HOesOKyHfOsxAPAxOoqC0JUnC1amnO0IwkYC3sko51caSw==} + /uglify-js/3.17.4: + resolution: {integrity: sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g==} engines: {node: '>=0.8.0'} hasBin: true requiresBuild: true @@ -5083,12 +5286,12 @@ packages: spdx-expression-parse: 3.0.1 dev: true - /vscode-oniguruma/1.6.2: - resolution: {integrity: sha512-KH8+KKov5eS/9WhofZR8M8dMHWN2gTxjMsG4jd04YhpbPR91fUj7rYQ2/XjeHCJWbg7X++ApRIU9NUwM2vTvLA==} + /vscode-oniguruma/1.7.0: + resolution: {integrity: sha512-L9WMGRfrjOhgHSdOYgCt/yRMsXzLDJSL7BPrOZt73gU0iWO4mpqzqQzOz5srxqTvMBaR0XZTSrVWo4j55Rc6cA==} dev: true - /vscode-textmate/6.0.0: - resolution: {integrity: sha512-gu73tuZfJgu+mvCSy4UZwd2JXykjK9zAZsfmDeut5dx/1a7FeTk0XwJsSuqQn+cuMCGVbIBfl+s53X4T19DnzQ==} + /vscode-textmate/8.0.0: + resolution: {integrity: sha512-AFbieoL7a5LMqcnOF04ji+rpXadgOXnZsxQr//r83kLPr7biP7am3g9zbaZIaBGwBRWeSvoMD4mgPdX3e4NWBg==} dev: true /w3c-hr-time/1.0.2: diff --git a/src/custom-components/SuspensefulImage.tsx b/src/custom-components/SuspensefulImage.tsx index 7451ea0..551eecd 100644 --- a/src/custom-components/SuspensefulImage.tsx +++ b/src/custom-components/SuspensefulImage.tsx @@ -13,6 +13,8 @@ export const SuspensefulImage: FC = (props) => { const [error, setError] = useState(false); useEffect(() => { + setLoading(true); + setError(false); const img = new Image(); img.src = props.src || ''; img.addEventListener('load', () => { @@ -21,7 +23,7 @@ export const SuspensefulImage: FC = (props) => { img.addEventListener('error', () => { setError(true); }); - }, []); + }, [props.src]); return loading ? (
x?.type)) { return true; } } diff --git a/src/deck-components/Router.tsx b/src/deck-components/Router.tsx index 252aba2..9ca5c80 100644 --- a/src/deck-components/Router.tsx +++ b/src/deck-components/Router.tsx @@ -1,3 +1,4 @@ +import { sleep } from '../utils'; import { Module, findModuleChild } from '../webpack'; export enum SideMenu { @@ -125,32 +126,65 @@ export interface Navigation { CloseSideMenus(): void; } -export const Navigation = { - Navigate: Router.Navigate.bind(Router), - NavigateBack: Router.WindowStore?.GamepadUIMainWindowInstance?.NavigateBack.bind( - Router.WindowStore.GamepadUIMainWindowInstance, - ), - NavigateToAppProperties: Router.NavigateToAppProperties.bind(Router), - NavigateToExternalWeb: Router.NavigateToExternalWeb.bind(Router), - NavigateToInvites: Router.NavigateToInvites.bind(Router), - NavigateToChat: Router.NavigateToChat.bind(Router), - NavigateToLibraryTab: Router.NavigateToLibraryTab.bind(Router), - NavigateToLayoutPreview: Router.NavigateToLayoutPreview.bind(Router), - NavigateToSteamWeb: Router.WindowStore?.GamepadUIMainWindowInstance?.NavigateToSteamWeb.bind( - Router.WindowStore.GamepadUIMainWindowInstance, - ), - NavigateToWebRoute: Router.WindowStore?.GamepadUIMainWindowInstance?.NavigateToWebRoute.bind( - Router.WindowStore.GamepadUIMainWindowInstance, - ), - OpenSideMenu: Router.WindowStore?.GamepadUIMainWindowInstance?.MenuStore.OpenSideMenu.bind( - Router.WindowStore.GamepadUIMainWindowInstance.MenuStore, - ), - OpenQuickAccessMenu: Router.WindowStore?.GamepadUIMainWindowInstance?.MenuStore.OpenQuickAccessMenu.bind( - Router.WindowStore.GamepadUIMainWindowInstance.MenuStore, - ), - OpenMainMenu: Router.WindowStore?.GamepadUIMainWindowInstance?.MenuStore.OpenMainMenu.bind( - Router.WindowStore.GamepadUIMainWindowInstance.MenuStore, - ), - CloseSideMenus: Router.CloseSideMenus.bind(Router), - OpenPowerMenu: Router.OpenPowerMenu.bind(Router), -} as Navigation; +export let Navigation = {} as Navigation; + +try { + (async () => { + let InternalNavigators: any = {}; + if (!Router.NavigateToAppProperties || (Router as unknown as any).deckyShim) { + function initInternalNavigators() { + try { + InternalNavigators = findModuleChild((m: any) => { + if (typeof m !== 'object') return undefined; + for (let prop in m) { + if (m[prop]?.GetNavigator) { + return m[prop]; + } + } + })?.GetNavigator(); + } catch (e) { + console.error('[DFL:Router]: Failed to init internal navigators, trying again'); + } + } + initInternalNavigators(); + while (!InternalNavigators?.AppProperties) { + console.log('[DFL:Router]: Trying to init internal navigators again'); + await sleep(100); + initInternalNavigators(); + } + } + const newNavigation = { + Navigate: Router.Navigate.bind(Router), + NavigateBack: Router.WindowStore?.GamepadUIMainWindowInstance?.NavigateBack.bind( + Router.WindowStore.GamepadUIMainWindowInstance, + ), + NavigateToAppProperties: InternalNavigators?.AppProperties || Router.NavigateToAppProperties.bind(Router), + NavigateToExternalWeb: InternalNavigators?.ExternalWeb || Router.NavigateToExternalWeb.bind(Router), + NavigateToInvites: InternalNavigators?.Invites || Router.NavigateToInvites.bind(Router), + NavigateToChat: Router.NavigateToChat.bind(Router), + NavigateToLibraryTab: InternalNavigators?.LibraryTab || Router.NavigateToLibraryTab.bind(Router), + NavigateToLayoutPreview: Router.NavigateToLayoutPreview.bind(Router), + NavigateToSteamWeb: Router.WindowStore?.GamepadUIMainWindowInstance?.NavigateToSteamWeb.bind( + Router.WindowStore.GamepadUIMainWindowInstance, + ), + NavigateToWebRoute: Router.WindowStore?.GamepadUIMainWindowInstance?.NavigateToWebRoute.bind( + Router.WindowStore.GamepadUIMainWindowInstance, + ), + OpenSideMenu: Router.WindowStore?.GamepadUIMainWindowInstance?.MenuStore.OpenSideMenu.bind( + Router.WindowStore.GamepadUIMainWindowInstance.MenuStore, + ), + OpenQuickAccessMenu: Router.WindowStore?.GamepadUIMainWindowInstance?.MenuStore.OpenQuickAccessMenu.bind( + Router.WindowStore.GamepadUIMainWindowInstance.MenuStore, + ), + OpenMainMenu: Router.WindowStore?.GamepadUIMainWindowInstance?.MenuStore.OpenMainMenu.bind( + Router.WindowStore.GamepadUIMainWindowInstance.MenuStore, + ), + CloseSideMenus: Router.CloseSideMenus.bind(Router), + OpenPowerMenu: Router.OpenPowerMenu.bind(Router), + } as Navigation; + + Object.assign(Navigation, newNavigation); + })(); +} catch (e) { + console.error('[DFL:Router]: Error initializing Navigation interface', e); +} diff --git a/src/deck-components/SliderField.tsx b/src/deck-components/SliderField.tsx index dd2730b..85556eb 100644 --- a/src/deck-components/SliderField.tsx +++ b/src/deck-components/SliderField.tsx @@ -25,6 +25,7 @@ export interface SliderFieldProps extends ItemProps { valueSuffix?: string; minimumDpadGranularity?: number; onChange?(value: number): void; + className?: string; } export const SliderField = Object.values(CommonUIModule).find((mod: any) => diff --git a/src/deck-components/SteamClient.ts b/src/deck-components/SteamClient.ts index 71e89b0..ae6e237 100644 --- a/src/deck-components/SteamClient.ts +++ b/src/deck-components/SteamClient.ts @@ -217,6 +217,14 @@ export type AppLanguages = { strShortName: string; }; +export type LogoPinPositions = 'BottomLeft' | 'UpperLeft' | 'CenterCenter' | 'UpperCenter' | 'BottomCenter'; + +export interface LogoPosition { + pinnedPosition: LogoPinPositions; + nWidthPct: number; + nHeightPct: number; +}; + export interface AppDetails { achievements: AppAchievements; bCanMoveInstallFolder: boolean; @@ -292,9 +300,18 @@ export interface AppDetails { vecMusicAlbums: any[]; vecPlatforms: string[]; vecScreenShots: any[]; + libraryAssets?: { + logoPosition?: LogoPosition; + }; } export interface SteamAppOverview { display_name: string; gameid: string; + appid: number; + icon_hash: string; + third_party_mod?: boolean; + selected_clientid?: string; + BIsModOrShortcut: () => boolean; + BIsShortcut: () => boolean; } diff --git a/src/deck-components/ToggleField.tsx b/src/deck-components/ToggleField.tsx index 9fb828b..14984c5 100644 --- a/src/deck-components/ToggleField.tsx +++ b/src/deck-components/ToggleField.tsx @@ -4,6 +4,7 @@ import { CommonUIModule } from '../webpack'; import { ItemProps } from './Item'; export interface ToggleFieldProps extends ItemProps { + highlightOnFocus?: boolean; checked: boolean; disabled?: boolean; onChange?(checked: boolean): void; diff --git a/src/deck-components/index.ts b/src/deck-components/index.ts index d235e0f..9508ee9 100755 --- a/src/deck-components/index.ts +++ b/src/deck-components/index.ts @@ -26,8 +26,55 @@ export * from './Toggle'; export * from './ToggleField'; export * from './SteamClient'; -import {SteamClient} from './SteamClient' +import { SteamClient, SteamAppOverview, LogoPosition } from './SteamClient'; declare global { var SteamClient: SteamClient; + + interface Window { + LocalizationManager: { + m_mapTokens: Map; + m_mapFallbackTokens: Map; + m_rgLocalesToUse: string[]; + }; + App: { + m_CurrentUser: { + bIsLimited: boolean; + bIsOfflineMode: boolean; + bSupportAlertActive: boolean; + bCanInviteFriends: boolean; + NotificationCounts: { + comments: number; + inventory_items: number; + invites: number; + gifts: number; + offline_messages: number; + trade_offers: number; + async_game_updates: number; + moderator_messages: number; + help_request_replies: number; + }; + strAccountBalance: string; + strAccountName: string; + strSteamID: string; + }; + }; + appStore: { + GetAppOverviewByAppID: (appId: number) => SteamAppOverview | null; + GetCustomVerticalCapsuleURLs: (app: SteamAppOverview) => string[]; + GetCustomLandcapeImageURLs: (app: SteamAppOverview) => string[]; + GetCustomHeroImageURLs: (app: SteamAppOverview) => string[]; + GetCustomLogoImageURLs: (app: SteamAppOverview) => string[]; + GetLandscapeImageURLForApp: (app: SteamAppOverview) => string; + GetVerticalCapsuleURLForApp: (app: SteamAppOverview) => string; + GetCachedLandscapeImageURLForApp: (app: SteamAppOverview) => string; + GetCachedVerticalImageURLForApp: (app: SteamAppOverview) => string; + GetPregeneratedVerticalCapsuleForApp: (app: SteamAppOverview) => string; + GetIconURLForApp: (app: SteamAppOverview) => string; + }; + appDetailsStore: { + GetCustomLogoPosition: (app: SteamAppOverview) => LogoPosition | null; + SaveCustomLogoPosition: (app: SteamAppOverview, logoPositions: LogoPosition) => any; + } + } } diff --git a/typedoc.json b/typedoc.json index 057e6c2..d87e758 100644 --- a/typedoc.json +++ b/typedoc.json @@ -1,5 +1,4 @@ { - "githubPages": false, "categorizeByGroup": false, "excludeExternals": true } \ No newline at end of file