diff --git a/README.md b/README.md index 3437397b..5c220347 100644 --- a/README.md +++ b/README.md @@ -25,7 +25,7 @@ - Watch sync parties. - Sponsorblock built-in. - Return YouTube dislikes built-in. -- DeArrow built-in (With local processing fallback). +- [DeArrow](https://github.com/ajayyy/DeArrow) built-in (With local processing fallback). - No ads. - No tracking. - Light/Dark themes. diff --git a/materialious/android/app/build.gradle b/materialious/android/app/build.gradle index d073e945..3503af93 100644 --- a/materialious/android/app/build.gradle +++ b/materialious/android/app/build.gradle @@ -7,7 +7,7 @@ android { applicationId "us.materialio.app" minSdkVersion rootProject.ext.minSdkVersion targetSdkVersion rootProject.ext.targetSdkVersion - versionCode 169 + versionCode 170 versionName "1.11.9" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" aaptOptions { diff --git a/materialious/android/app/capacitor.build.gradle b/materialious/android/app/capacitor.build.gradle index 51164fc0..a4cf34b2 100644 --- a/materialious/android/app/capacitor.build.gradle +++ b/materialious/android/app/capacitor.build.gradle @@ -13,7 +13,9 @@ dependencies { implementation project(':capacitor-app') implementation project(':capacitor-browser') implementation project(':capacitor-clipboard') + implementation project(':capacitor-preferences') implementation project(':capacitor-screen-orientation') + implementation project(':capacitor-share') implementation project(':capacitor-nodejs') } diff --git a/materialious/android/capacitor.settings.gradle b/materialious/android/capacitor.settings.gradle index 01670f74..915df42d 100644 --- a/materialious/android/capacitor.settings.gradle +++ b/materialious/android/capacitor.settings.gradle @@ -14,8 +14,14 @@ project(':capacitor-browser').projectDir = new File('../node_modules/@capacitor/ include ':capacitor-clipboard' project(':capacitor-clipboard').projectDir = new File('../node_modules/@capacitor/clipboard/android') +include ':capacitor-preferences' +project(':capacitor-preferences').projectDir = new File('../node_modules/@capacitor/preferences/android') + include ':capacitor-screen-orientation' project(':capacitor-screen-orientation').projectDir = new File('../node_modules/@capacitor/screen-orientation/android') +include ':capacitor-share' +project(':capacitor-share').projectDir = new File('../node_modules/@capacitor/share/android') + include ':capacitor-nodejs' project(':capacitor-nodejs').projectDir = new File('../node_modules/capacitor-nodejs/android') diff --git a/materialious/electron/package-lock.json b/materialious/electron/package-lock.json index 864d330b..375a33a1 100644 --- a/materialious/electron/package-lock.json +++ b/materialious/electron/package-lock.json @@ -1,12 +1,12 @@ { "name": "Materialious", - "version": "1.11.8", + "version": "1.11.9", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "Materialious", - "version": "1.11.7", + "version": "1.11.9", "license": "MIT", "dependencies": { "@capacitor-community/electron": "^5.0.0", @@ -17,33 +17,33 @@ "electron-unhandled": "^4.0.1", "electron-updater": "^6.3.4", "electron-window-state": "^5.0.3", - "jsdom": "^27.1.0", + "jsdom": "^27.2.0", "jsonfile": "^6.2.0" }, "devDependencies": { - "electron": "^39.1.1", + "electron": "^39.2.3", "electron-builder": "^26.0.12", "electron-rebuild": "^3.2.9", "typescript": "^5.9.3" } }, "node_modules/@acemir/cssom": { - "version": "0.9.19", - "resolved": "https://registry.npmjs.org/@acemir/cssom/-/cssom-0.9.19.tgz", - "integrity": "sha512-Pp2gAQXPZ2o7lt4j0IMwNRXqQ3pagxtDj5wctL5U2Lz4oV0ocDNlkgx4DpxfyKav4S/bePuI+SMqcBSUHLy9kg==", + "version": "0.9.24", + "resolved": "https://registry.npmjs.org/@acemir/cssom/-/cssom-0.9.24.tgz", + "integrity": "sha512-5YjgMmAiT2rjJZU7XK1SNI7iqTy92DpaYVgG6x63FxkJ11UpYfLndHJATtinWJClAXiOlW9XWaUyAQf8pMrQPg==", "license": "MIT" }, "node_modules/@asamuzakjp/css-color": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/@asamuzakjp/css-color/-/css-color-4.0.5.tgz", - "integrity": "sha512-lMrXidNhPGsDjytDy11Vwlb6OIGrT3CmLg3VWNFyWkLWtijKl7xjvForlh8vuj0SHGjgl4qZEQzUmYTeQA2JFQ==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@asamuzakjp/css-color/-/css-color-4.1.0.tgz", + "integrity": "sha512-9xiBAtLn4aNsa4mDnpovJvBn72tNEIACyvlqaNJ+ADemR+yeMJWnBudOi2qGDviJa7SwcDOU/TRh5dnET7qk0w==", "license": "MIT", "dependencies": { "@csstools/css-calc": "^2.1.4", "@csstools/css-color-parser": "^3.1.0", "@csstools/css-parser-algorithms": "^3.0.5", "@csstools/css-tokenizer": "^3.0.4", - "lru-cache": "^11.2.1" + "lru-cache": "^11.2.2" } }, "node_modules/@asamuzakjp/css-color/node_modules/lru-cache": { @@ -248,9 +248,9 @@ } }, "node_modules/@csstools/css-syntax-patches-for-csstree": { - "version": "1.0.15", - "resolved": "https://registry.npmjs.org/@csstools/css-syntax-patches-for-csstree/-/css-syntax-patches-for-csstree-1.0.15.tgz", - "integrity": "sha512-q0p6zkVq2lJnmzZVPR33doA51G7YOja+FBvRdp5ISIthL0MtFCgYHHhR563z9WFGxcOn0WfjSkPDJ5Qig3H3Sw==", + "version": "1.0.17", + "resolved": "https://registry.npmjs.org/@csstools/css-syntax-patches-for-csstree/-/css-syntax-patches-for-csstree-1.0.17.tgz", + "integrity": "sha512-LCC++2h8pLUSPY+EsZmrrJ1EOUu+5iClpEiDhhdw3zRJpPbABML/N5lmRuBHjxtKm9VnRcsUzioyD0sekFMF0A==", "funding": [ { "type": "github", @@ -2240,9 +2240,9 @@ } }, "node_modules/cssstyle": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-5.3.2.tgz", - "integrity": "sha512-zDMqXh8Vs1CdRYZQ2M633m/SFgcjlu8RB8b/1h82i+6vpArF507NSYIWJHGlJaTWoS+imcnctmEz43txhbVkOw==", + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-5.3.3.tgz", + "integrity": "sha512-OytmFH+13/QXONJcC75QNdMtKpceNk3u8ThBjyyYjkEcy/ekBwR1mMAuNvi3gdBPW3N5TlCzQ0WZw8H0lN/bDw==", "license": "MIT", "dependencies": { "@asamuzakjp/css-color": "^4.0.3", @@ -2584,9 +2584,9 @@ } }, "node_modules/electron": { - "version": "39.1.1", - "resolved": "https://registry.npmjs.org/electron/-/electron-39.1.1.tgz", - "integrity": "sha512-VuFEI1yQ7BH3RYI5VZtwFlzGp4rpPRd5oEc26ZQIItVLcLTbXt4/O7o4hs+1fyg9Q3NvGAifgX5Vp5EBOIFpAg==", + "version": "39.2.3", + "resolved": "https://registry.npmjs.org/electron/-/electron-39.2.3.tgz", + "integrity": "sha512-j7k7/bj3cNA29ty54FzEMRUoqirE+RBQPhPFP+XDuM93a1l2WcDPiYumxKWz+iKcXxBJLFdMIAlvtLTB/RfCkg==", "dev": true, "hasInstallScript": true, "license": "MIT", @@ -3945,14 +3945,14 @@ "license": "MIT" }, "node_modules/jsdom": { - "version": "27.1.0", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-27.1.0.tgz", - "integrity": "sha512-Pcfm3eZ+eO4JdZCXthW9tCDT3nF4K+9dmeZ+5X39n+Kqz0DDIABRP5CAEOHRFZk8RGuC2efksTJxrjp8EXCunQ==", + "version": "27.2.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-27.2.0.tgz", + "integrity": "sha512-454TI39PeRDW1LgpyLPyURtB4Zx1tklSr6+OFOipsxGUH1WMTvk6C65JQdrj455+DP2uJ1+veBEHTGFKWVLFoA==", "license": "MIT", "dependencies": { - "@acemir/cssom": "^0.9.19", - "@asamuzakjp/dom-selector": "^6.7.3", - "cssstyle": "^5.3.2", + "@acemir/cssom": "^0.9.23", + "@asamuzakjp/dom-selector": "^6.7.4", + "cssstyle": "^5.3.3", "data-urls": "^6.0.0", "decimal.js": "^10.6.0", "html-encoding-sniffer": "^4.0.0", diff --git a/materialious/electron/package.json b/materialious/electron/package.json index 0ba2e8a5..bdb43eb5 100644 --- a/materialious/electron/package.json +++ b/materialious/electron/package.json @@ -30,11 +30,11 @@ "electron-unhandled": "^4.0.1", "electron-updater": "^6.3.4", "electron-window-state": "^5.0.3", - "jsdom": "^27.1.0", + "jsdom": "^27.2.0", "jsonfile": "^6.2.0" }, "devDependencies": { - "electron": "^39.1.1", + "electron": "^39.2.3", "electron-builder": "^26.0.12", "electron-rebuild": "^3.2.9", "typescript": "^5.9.3" @@ -43,4 +43,4 @@ "capacitor", "electron" ] -} +} \ No newline at end of file diff --git a/materialious/eslint.config.js b/materialious/eslint.config.js index df0c4c95..51e84bb1 100644 --- a/materialious/eslint.config.js +++ b/materialious/eslint.config.js @@ -6,65 +6,66 @@ import ts from 'typescript-eslint'; import svelteConfig from './svelte.config.js'; export default ts.config( - js.configs.recommended, - ...ts.configs.recommended, - ...svelte.configs.recommended, - { - languageOptions: { - globals: { - ...globals.browser, - ...globals.node - } - } - }, - { - files: ['**/*.svelte'], - // See more details at: https://typescript-eslint.io/packages/parser/ - languageOptions: { - parserOptions: { - projectService: true, - extraFileExtensions: ['.svelte'], // Add support for additional file extensions, such as .svelte - parser: ts.parser, - sourceType: 'module', - ecmaVersion: 2020, - // Specify a parser for each language, if needed: - // parser: { - // ts: ts.parser, - // js: espree, // Use espree for .js files (add: import espree from 'espree') - // typescript: ts.parser - // }, + js.configs.recommended, + ...ts.configs.recommended, + ...svelte.configs.recommended, + { + languageOptions: { + globals: { + ...globals.browser, + ...globals.node + } + } + }, + { + files: ['**/*.svelte'], + // See more details at: https://typescript-eslint.io/packages/parser/ + languageOptions: { + parserOptions: { + projectService: true, + extraFileExtensions: ['.svelte'], // Add support for additional file extensions, such as .svelte + parser: ts.parser, + sourceType: 'module', + ecmaVersion: 2020, + // Specify a parser for each language, if needed: + // parser: { + // ts: ts.parser, + // js: espree, // Use espree for .js files (add: import espree from 'espree') + // typescript: ts.parser + // }, - // We recommend importing and specifying svelte.config.js. - // By doing so, some rules in eslint-plugin-svelte will automatically read the configuration and adjust their behavior accordingly. - // While certain Svelte settings may be statically loaded from svelte.config.js even if you don’t specify it, - // explicitly specifying it ensures better compatibility and functionality. - // - // If non-serializable properties are included, running ESLint with the --cache flag will fail. - // In that case, please remove the non-serializable properties. (e.g. `svelteConfig: { ...svelteConfig, kit: { ...svelteConfig.kit, typescript: undefined }}`) - svelteConfig - } - } - }, - { - rules: { - // Override or add rule settings here, such as: - // 'svelte/rule-name': 'error' - } - }, - { - ignores: [ - '.DS_Store', - 'node_modules', - '/build', - '/.svelte-kit', - '/package', - '.env', - '.env.*', - '!.env.example', - // Ignore files for PNPM, NPM and YARN - 'pnpm-lock.yaml', - 'package-lock.json', - 'yarn.lock' - ], - } -); \ No newline at end of file + // We recommend importing and specifying svelte.config.js. + // By doing so, some rules in eslint-plugin-svelte will automatically read the configuration and adjust their behavior accordingly. + // While certain Svelte settings may be statically loaded from svelte.config.js even if you don’t specify it, + // explicitly specifying it ensures better compatibility and functionality. + // + // If non-serializable properties are included, running ESLint with the --cache flag will fail. + // In that case, please remove the non-serializable properties. (e.g. `svelteConfig: { ...svelteConfig, kit: { ...svelteConfig.kit, typescript: undefined }}`) + svelteConfig + } + } + }, + { + rules: { + // Override or add rule settings here, such as: + // 'svelte/rule-name': 'error' + '@typescript-eslint/no-explicit-any': ['off'] + } + }, + { + ignores: [ + '.DS_Store', + 'node_modules', + '/build', + '/.svelte-kit', + '/package', + '.env', + '.env.*', + '!.env.example', + // Ignore files for PNPM, NPM and YARN + 'pnpm-lock.yaml', + 'package-lock.json', + 'yarn.lock' + ] + } +); diff --git a/materialious/package-lock.json b/materialious/package-lock.json index 56a8fb4a..f9746cad 100644 --- a/materialious/package-lock.json +++ b/materialious/package-lock.json @@ -1,12 +1,12 @@ { "name": "materialious", - "version": "1.11.8", + "version": "1.11.9", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "materialious", - "version": "1.11.7", + "version": "1.11.9", "hasInstallScript": true, "dependencies": { "@capacitor-community/electron": "^5.0.1", @@ -16,7 +16,11 @@ "@capacitor/browser": "^7.0.0", "@capacitor/clipboard": "^7.0.0", "@capacitor/core": "^7.4.3", + "@capacitor/preferences": "^7.0.2", "@capacitor/screen-orientation": "^7.0.0", + "@capacitor/share": "^7.0.2", + "@macfja/serializer": "^1.1.4", + "@macfja/svelte-persistent-store": "^2.4.2", "beercss": "^3.12.13", "bgutils-js": "^3.2.0", "capacitor-nodejs": "https://github.com/hampoelz/capacitor-nodejs/releases/download/v1.0.0-beta.9/capacitor-nodejs.tgz", @@ -25,17 +29,16 @@ "googlevideo": "^4.0.4", "he": "^1.2.0", "human-number": "^2.0.7", - "i18next": "^25.6.0", + "i18next": "^25.6.3", "iso-3166": "^4.4.0", "iso-639-1": "^3.1.5", "material-dynamic-colors": "^1.1.1", "media-captions": "^1.0.4", "mousetrap": "^1.6.5", "peerjs": "^1.5.5", - "shaka-player": "^4.16.2", + "shaka-player": "^4.16.9", "sponsorblock-api": "^0.2.4", "svelte-infinite-loading": "^1.4.0", - "svelte-persisted-store": "^0.12.0", "youtubei.js": "^16.0.1" }, "devDependencies": { @@ -43,7 +46,7 @@ "@capacitor/cli": "^7.4.4", "@sveltejs/adapter-auto": "^6.0.1", "@sveltejs/adapter-static": "^3.0.10", - "@sveltejs/kit": "^2.46.5", + "@sveltejs/kit": "^2.49.0", "@sveltejs/vite-plugin-svelte": "^6.2.1", "@types/event-source-polyfill": "^1.0.5", "@types/he": "^1.2.3", @@ -60,8 +63,8 @@ "svelte-check": "^4.3.3", "tslib": "^2.7.0", "typescript": "^5.9.3", - "typescript-eslint": "^8.46.3", - "vite": "^7.1.12" + "typescript-eslint": "^8.47.0", + "vite": "^7.2.4" } }, "node_modules/@babel/code-frame": { @@ -1623,9 +1626,9 @@ } }, "node_modules/@babel/runtime": { - "version": "7.28.3", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.28.3.tgz", - "integrity": "sha512-9uIQ10o0WGdpP6GDhXcdOJPJuDgFtIDtN/9+ArJQ2NAfAmiuhTQdzkaTGR33v43GYS2UrSA0eX2pPPHoFVvpxA==", + "version": "7.28.4", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.28.4.tgz", + "integrity": "sha512-Q/N6JNWvIvPnLDvjlE1OUBLPQHH6l3CltCEsHIujp45zQUSSh8K+gHnaEX45yAT1nyngnINhvWtzN+Nb9D8RAQ==", "license": "MIT", "engines": { "node": ">=6.9.0" @@ -2072,6 +2075,15 @@ "tslib": "^2.1.0" } }, + "node_modules/@capacitor/preferences": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@capacitor/preferences/-/preferences-7.0.2.tgz", + "integrity": "sha512-JVCy0/oc6RsRencLOZ8rMqjNxAlHs7awPJU/MXqangsJ48oO2PnYGHfCvci6WgIJlqyC0QhvWZaO1BR1lVkHWQ==", + "license": "MIT", + "peerDependencies": { + "@capacitor/core": ">=7.0.0" + } + }, "node_modules/@capacitor/screen-orientation": { "version": "7.0.2", "resolved": "https://registry.npmjs.org/@capacitor/screen-orientation/-/screen-orientation-7.0.2.tgz", @@ -2081,6 +2093,15 @@ "@capacitor/core": ">=7.0.0" } }, + "node_modules/@capacitor/share": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@capacitor/share/-/share-7.0.2.tgz", + "integrity": "sha512-VyNPo/9831xnL17IMDeft5yNdBjoKNb451P95sRcr69hulRDqHc+kndqOVaMXnaA6IyBdWnnFv/n1HUf4cXpGw==", + "license": "MIT", + "peerDependencies": { + "@capacitor/core": ">=7.0.0" + } + }, "node_modules/@cspotcode/source-map-support": { "version": "0.8.1", "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", @@ -2793,6 +2814,28 @@ "@jridgewell/sourcemap-codec": "^1.4.14" } }, + "node_modules/@macfja/serializer": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/@macfja/serializer/-/serializer-1.1.4.tgz", + "integrity": "sha512-bUKIyLdSTyPfTgOvRqH8MkSDQhSaEGjUSvQlvnjA6tbeZDuY9u0WKieZNyqYwq3mPxytNd6Z5Lq2n4A3dA9HMA==", + "license": "MIT" + }, + "node_modules/@macfja/svelte-persistent-store": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/@macfja/svelte-persistent-store/-/svelte-persistent-store-2.4.2.tgz", + "integrity": "sha512-ZAcWJcCnfZDIiy77Aoj9KQ6qDt6UmRZgUM3UHjmOY1IRf0SirDl1WgBFlVUMynRLERy4/EgZtWPqAMnh3cbCRA==", + "license": "MIT", + "dependencies": { + "@macfja/serializer": "^1.1.2", + "browser-cookies": "^1.2.0", + "idb-keyval": "^5.1.3 || ^6.2.1", + "sjcl-codec-hex": "^1.0.0", + "sjcl-es": "^2.0.0" + }, + "peerDependencies": { + "svelte": "^3.0 || ^4.0 || ^5.0" + } + }, "node_modules/@material/material-color-utilities": { "version": "0.2.7", "resolved": "https://registry.npmjs.org/@material/material-color-utilities/-/material-color-utilities-0.2.7.tgz", @@ -3339,9 +3382,9 @@ } }, "node_modules/@sveltejs/kit": { - "version": "2.48.5", - "resolved": "https://registry.npmjs.org/@sveltejs/kit/-/kit-2.48.5.tgz", - "integrity": "sha512-/rnwfSWS3qwUSzvHynUTORF9xSJi7PCR9yXkxUOnRrNqyKmCmh3FPHH+E9BbgqxXfTevGXBqgnlh9kMb+9T5XA==", + "version": "2.49.0", + "resolved": "https://registry.npmjs.org/@sveltejs/kit/-/kit-2.49.0.tgz", + "integrity": "sha512-oH8tXw7EZnie8FdOWYrF7Yn4IKrqTFHhXvl8YxXxbKwTMcD/5NNCryUSEXRk2ZR4ojnub0P8rNrsVGHXWqIDtA==", "dev": true, "license": "MIT", "dependencies": { @@ -3665,17 +3708,17 @@ "license": "MIT" }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "8.46.3", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.46.3.tgz", - "integrity": "sha512-sbaQ27XBUopBkRiuY/P9sWGOWUW4rl8fDoHIUmLpZd8uldsTyB4/Zg6bWTegPoTLnKj9Hqgn3QD6cjPNB32Odw==", + "version": "8.48.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.48.0.tgz", + "integrity": "sha512-XxXP5tL1txl13YFtrECECQYeZjBZad4fyd3cFV4a19LkAY/bIp9fev3US4S5fDVV2JaYFiKAZ/GRTOLer+mbyQ==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/regexpp": "^4.10.0", - "@typescript-eslint/scope-manager": "8.46.3", - "@typescript-eslint/type-utils": "8.46.3", - "@typescript-eslint/utils": "8.46.3", - "@typescript-eslint/visitor-keys": "8.46.3", + "@typescript-eslint/scope-manager": "8.48.0", + "@typescript-eslint/type-utils": "8.48.0", + "@typescript-eslint/utils": "8.48.0", + "@typescript-eslint/visitor-keys": "8.48.0", "graphemer": "^1.4.0", "ignore": "^7.0.0", "natural-compare": "^1.4.0", @@ -3689,7 +3732,7 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "@typescript-eslint/parser": "^8.46.3", + "@typescript-eslint/parser": "^8.48.0", "eslint": "^8.57.0 || ^9.0.0", "typescript": ">=4.8.4 <6.0.0" } @@ -3705,16 +3748,16 @@ } }, "node_modules/@typescript-eslint/parser": { - "version": "8.46.3", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.46.3.tgz", - "integrity": "sha512-6m1I5RmHBGTnUGS113G04DMu3CpSdxCAU/UvtjNWL4Nuf3MW9tQhiJqRlHzChIkhy6kZSAQmc+I1bcGjE3yNKg==", + "version": "8.48.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.48.0.tgz", + "integrity": "sha512-jCzKdm/QK0Kg4V4IK/oMlRZlY+QOcdjv89U2NgKHZk1CYTj82/RVSx1mV/0gqCVMJ/DA+Zf/S4NBWNF8GQ+eqQ==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/scope-manager": "8.46.3", - "@typescript-eslint/types": "8.46.3", - "@typescript-eslint/typescript-estree": "8.46.3", - "@typescript-eslint/visitor-keys": "8.46.3", + "@typescript-eslint/scope-manager": "8.48.0", + "@typescript-eslint/types": "8.48.0", + "@typescript-eslint/typescript-estree": "8.48.0", + "@typescript-eslint/visitor-keys": "8.48.0", "debug": "^4.3.4" }, "engines": { @@ -3730,14 +3773,14 @@ } }, "node_modules/@typescript-eslint/project-service": { - "version": "8.46.3", - "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.46.3.tgz", - "integrity": "sha512-Fz8yFXsp2wDFeUElO88S9n4w1I4CWDTXDqDr9gYvZgUpwXQqmZBr9+NTTql5R3J7+hrJZPdpiWaB9VNhAKYLuQ==", + "version": "8.48.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.48.0.tgz", + "integrity": "sha512-Ne4CTZyRh1BecBf84siv42wv5vQvVmgtk8AuiEffKTUo3DrBaGYZueJSxxBZ8fjk/N3DrgChH4TOdIOwOwiqqw==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/tsconfig-utils": "^8.46.3", - "@typescript-eslint/types": "^8.46.3", + "@typescript-eslint/tsconfig-utils": "^8.48.0", + "@typescript-eslint/types": "^8.48.0", "debug": "^4.3.4" }, "engines": { @@ -3752,14 +3795,14 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "8.46.3", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.46.3.tgz", - "integrity": "sha512-FCi7Y1zgrmxp3DfWfr+3m9ansUUFoy8dkEdeQSgA9gbm8DaHYvZCdkFRQrtKiedFf3Ha6VmoqoAaP68+i+22kg==", + "version": "8.48.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.48.0.tgz", + "integrity": "sha512-uGSSsbrtJrLduti0Q1Q9+BF1/iFKaxGoQwjWOIVNJv0o6omrdyR8ct37m4xIl5Zzpkp69Kkmvom7QFTtue89YQ==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.46.3", - "@typescript-eslint/visitor-keys": "8.46.3" + "@typescript-eslint/types": "8.48.0", + "@typescript-eslint/visitor-keys": "8.48.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -3770,9 +3813,9 @@ } }, "node_modules/@typescript-eslint/tsconfig-utils": { - "version": "8.46.3", - "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.46.3.tgz", - "integrity": "sha512-GLupljMniHNIROP0zE7nCcybptolcH8QZfXOpCfhQDAdwJ/ZTlcaBOYebSOZotpti/3HrHSw7D3PZm75gYFsOA==", + "version": "8.48.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.48.0.tgz", + "integrity": "sha512-WNebjBdFdyu10sR1M4OXTt2OkMd5KWIL+LLfeH9KhgP+jzfDV/LI3eXzwJ1s9+Yc0Kzo2fQCdY/OpdusCMmh6w==", "dev": true, "license": "MIT", "engines": { @@ -3787,15 +3830,15 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "8.46.3", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.46.3.tgz", - "integrity": "sha512-ZPCADbr+qfz3aiTTYNNkCbUt+cjNwI/5McyANNrFBpVxPt7GqpEYz5ZfdwuFyGUnJ9FdDXbGODUu6iRCI6XRXw==", + "version": "8.48.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.48.0.tgz", + "integrity": "sha512-zbeVaVqeXhhab6QNEKfK96Xyc7UQuoFWERhEnj3mLVnUWrQnv15cJNseUni7f3g557gm0e46LZ6IJ4NJVOgOpw==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.46.3", - "@typescript-eslint/typescript-estree": "8.46.3", - "@typescript-eslint/utils": "8.46.3", + "@typescript-eslint/types": "8.48.0", + "@typescript-eslint/typescript-estree": "8.48.0", + "@typescript-eslint/utils": "8.48.0", "debug": "^4.3.4", "ts-api-utils": "^2.1.0" }, @@ -3812,9 +3855,9 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "8.46.3", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.46.3.tgz", - "integrity": "sha512-G7Ok9WN/ggW7e/tOf8TQYMaxgID3Iujn231hfi0Pc7ZheztIJVpO44ekY00b7akqc6nZcvregk0Jpah3kep6hA==", + "version": "8.48.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.48.0.tgz", + "integrity": "sha512-cQMcGQQH7kwKoVswD1xdOytxQR60MWKM1di26xSUtxehaDs/32Zpqsu5WJlXTtTTqyAVK8R7hvsUnIXRS+bjvA==", "dev": true, "license": "MIT", "engines": { @@ -3826,21 +3869,20 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "8.46.3", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.46.3.tgz", - "integrity": "sha512-f/NvtRjOm80BtNM5OQtlaBdM5BRFUv7gf381j9wygDNL+qOYSNOgtQ/DCndiYi80iIOv76QqaTmp4fa9hwI0OA==", + "version": "8.48.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.48.0.tgz", + "integrity": "sha512-ljHab1CSO4rGrQIAyizUS6UGHHCiAYhbfcIZ1zVJr5nMryxlXMVWS3duFPSKvSUbFPwkXMFk1k0EMIjub4sRRQ==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/project-service": "8.46.3", - "@typescript-eslint/tsconfig-utils": "8.46.3", - "@typescript-eslint/types": "8.46.3", - "@typescript-eslint/visitor-keys": "8.46.3", + "@typescript-eslint/project-service": "8.48.0", + "@typescript-eslint/tsconfig-utils": "8.48.0", + "@typescript-eslint/types": "8.48.0", + "@typescript-eslint/visitor-keys": "8.48.0", "debug": "^4.3.4", - "fast-glob": "^3.3.2", - "is-glob": "^4.0.3", "minimatch": "^9.0.4", "semver": "^7.6.0", + "tinyglobby": "^0.2.15", "ts-api-utils": "^2.1.0" }, "engines": { @@ -3855,16 +3897,16 @@ } }, "node_modules/@typescript-eslint/utils": { - "version": "8.46.3", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.46.3.tgz", - "integrity": "sha512-VXw7qmdkucEx9WkmR3ld/u6VhRyKeiF1uxWwCy/iuNfokjJ7VhsgLSOTjsol8BunSw190zABzpwdNsze2Kpo4g==", + "version": "8.48.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.48.0.tgz", + "integrity": "sha512-yTJO1XuGxCsSfIVt1+1UrLHtue8xz16V8apzPYI06W0HbEbEWHxHXgZaAgavIkoh+GeV6hKKd5jm0sS6OYxWXQ==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.7.0", - "@typescript-eslint/scope-manager": "8.46.3", - "@typescript-eslint/types": "8.46.3", - "@typescript-eslint/typescript-estree": "8.46.3" + "@typescript-eslint/scope-manager": "8.48.0", + "@typescript-eslint/types": "8.48.0", + "@typescript-eslint/typescript-estree": "8.48.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -3879,13 +3921,13 @@ } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "8.46.3", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.46.3.tgz", - "integrity": "sha512-uk574k8IU0rOF/AjniX8qbLSGURJVUCeM5e4MIMKBFFi8weeiLrG1fyQejyLXQpRZbU/1BuQasleV/RfHC3hHg==", + "version": "8.48.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.48.0.tgz", + "integrity": "sha512-T0XJMaRPOH3+LBbAfzR2jalckP1MSG/L9eUtY0DEzUyVaXJ/t6zN0nR7co5kz0Jko/nkSYCBRkz1djvjajVTTg==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.46.3", + "@typescript-eslint/types": "8.48.0", "eslint-visitor-keys": "^4.2.1" }, "engines": { @@ -3910,15 +3952,15 @@ } }, "node_modules/@vite-pwa/sveltekit": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@vite-pwa/sveltekit/-/sveltekit-1.0.1.tgz", - "integrity": "sha512-usweKTR0/Cj1rBGLNs+LCvBbGcCDuwtFCKxhPEijU0SCnbVOZEXuzX+8JulURYFnIsYzSX9L+FfHbtGRgl+5rw==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@vite-pwa/sveltekit/-/sveltekit-1.1.0.tgz", + "integrity": "sha512-mMIf2tY+7Hg8jecpu/WY+Ki2ikoXy3hVmt3tOxi0K+lYYnKQrDYthuHireI0S+26Mg9BXzL7qQF1xeB5VYlYlg==", "dev": true, "license": "MIT", "dependencies": { "kolorist": "^1.8.0", "tinyglobby": "^0.2.9", - "vite-plugin-pwa": "^1.1.0" + "vite-plugin-pwa": "^1.2.0" }, "engines": { "node": ">=18.13" @@ -4398,9 +4440,9 @@ "license": "MIT" }, "node_modules/baseline-browser-mapping": { - "version": "2.8.29", - "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.8.29.tgz", - "integrity": "sha512-sXdt2elaVnhpDNRDz+1BDx1JQoJRuNk7oVlAlbGiFkLikHCAQiccexF/9e91zVi6RCgqspl04aP+6Cnl9zRLrA==", + "version": "2.8.31", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.8.31.tgz", + "integrity": "sha512-a28v2eWrrRWPpJSzxc+mKwm0ZtVx/G8SepdQZDArnXYU/XS+IF6mp8aB/4E+hH1tyGCoDo3KlUCdlSxGDsRkAw==", "dev": true, "license": "Apache-2.0", "bin": { @@ -4521,6 +4563,12 @@ "node": ">=8" } }, + "node_modules/browser-cookies": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/browser-cookies/-/browser-cookies-1.2.0.tgz", + "integrity": "sha512-cg2WuoOJo+F+g2XjEaP8nmeRp1vDHjt7sqpKJMsTNXKrpyIBNVslYJeehvs6FEddj8usV2+qyRSBEX244yN5/g==", + "license": "Unlicence" + }, "node_modules/browserslist": { "version": "4.28.0", "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.0.tgz", @@ -4659,9 +4707,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001756", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001756.tgz", - "integrity": "sha512-4HnCNKbMLkLdhJz3TToeVWHSnfJvPaq6vu/eRP0Ahub/07n484XHhBF5AJoSGHdVrS8tKFauUQz8Bp9P7LVx7A==", + "version": "1.0.30001757", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001757.tgz", + "integrity": "sha512-r0nnL/I28Zi/yjk1el6ilj27tKcdjLsNqAOZr0yVjWPrSQyHgKI2INaEWw21bAQSv2LXRt1XuCS/GomNpWOxsQ==", "dev": true, "funding": [ { @@ -5774,9 +5822,9 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.5.258", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.258.tgz", - "integrity": "sha512-rHUggNV5jKQ0sSdWwlaRDkFc3/rRJIVnOSe9yR4zrR07m3ZxhP4N27Hlg8VeJGGYgFTxK5NqDmWI4DSH72vIJg==", + "version": "1.5.262", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.262.tgz", + "integrity": "sha512-NlAsMteRHek05jRUxUR0a5jpjYq9ykk6+kO0yRaMi5moe7u0fVIOeQ3Y30A8dIiWFBNUoQGi1ljb1i5VtS9WQQ==", "dev": true, "license": "ISC" }, @@ -7295,9 +7343,9 @@ } }, "node_modules/i18next": { - "version": "25.6.0", - "resolved": "https://registry.npmjs.org/i18next/-/i18next-25.6.0.tgz", - "integrity": "sha512-tTn8fLrwBYtnclpL5aPXK/tAYBLWVvoHM1zdfXoRNLcI+RvtMsoZRV98ePlaW3khHYKuNh/Q65W/+NVFUeIwVw==", + "version": "25.6.3", + "resolved": "https://registry.npmjs.org/i18next/-/i18next-25.6.3.tgz", + "integrity": "sha512-AEQvoPDljhp67a1+NsnG/Wb1Nh6YoSvtrmeEd24sfGn3uujCtXCF3cXpr7ulhMywKNFF7p3TX1u2j7y+caLOJg==", "funding": [ { "type": "individual", @@ -7314,7 +7362,7 @@ ], "license": "MIT", "dependencies": { - "@babel/runtime": "^7.27.6" + "@babel/runtime": "^7.28.4" }, "peerDependencies": { "typescript": "^5" @@ -7332,6 +7380,12 @@ "dev": true, "license": "ISC" }, + "node_modules/idb-keyval": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/idb-keyval/-/idb-keyval-6.2.2.tgz", + "integrity": "sha512-yjD9nARJ/jb1g+CvD0tlhUHOrJ9Sy0P8T9MF3YaLlHnSRpwPfpTX0XIvpmw3gAJUmEu3FiICLBDPXVwyEvrleg==", + "license": "Apache-2.0" + }, "node_modules/ieee754": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", @@ -10943,9 +10997,9 @@ } }, "node_modules/shaka-player": { - "version": "4.16.2", - "resolved": "https://registry.npmjs.org/shaka-player/-/shaka-player-4.16.2.tgz", - "integrity": "sha512-AFswL7ZXT37UceDAsovQXQ3BRGLmPcmdgXgLVJdmHN2mnrYCvTrl7CGg2jeIPxUOHipAeeq33LrDM9uGBlQRVA==", + "version": "4.16.10", + "resolved": "https://registry.npmjs.org/shaka-player/-/shaka-player-4.16.10.tgz", + "integrity": "sha512-FJJk3rbV6IQ/gmdB6EZ4q4VuCKXdWG1pf7dPuqfZi6lNWIvymT4YWE+Hv5qkBwJRtT0L/8p/EFJKMhwE4AMTMQ==", "license": "Apache-2.0", "engines": { "node": ">=18" @@ -11188,6 +11242,30 @@ "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", "license": "MIT" }, + "node_modules/sjcl-bit-array": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/sjcl-bit-array/-/sjcl-bit-array-1.0.0.tgz", + "integrity": "sha512-xoR134YJa7AHToLqCWuLYGpAdcBuLbSgwXe9c5HTIN4vr5TILXO/jVF8pLeXDhC7JTOvpmXUkiOupawVNTZVdQ==", + "license": "BSD or GPL 2.0" + }, + "node_modules/sjcl-codec-hex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/sjcl-codec-hex/-/sjcl-codec-hex-1.0.0.tgz", + "integrity": "sha512-lBBjqky1BEH+WZdABR/iSl2Pu3HO8n8r2D7nkzYLZfcR9ke4kUGMvO0ztRkla5oi4Esbc9pOlBtyGeMjYOU0ng==", + "license": "BSD or GPL 2.0", + "dependencies": { + "sjcl-bit-array": "~1.0.0" + } + }, + "node_modules/sjcl-es": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/sjcl-es/-/sjcl-es-2.0.0.tgz", + "integrity": "sha512-P8O+4pAt95XqmTlvvPdbmBggjAgSE0LQnhSEYUKYKepN176b/8K9zcVrrqhuLu5EUQyeCYy/56J9FzxvzvMavg==", + "license": "(BSD-2-Clause OR GPL-2.0-only)", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + } + }, "node_modules/slash": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", @@ -11741,18 +11819,6 @@ "integrity": "sha512-Jo+f/yr/HmZQuIiiKKzAHVFXdAUWHW2RBbrcQTil8JVk1sCm/riy7KTJVzjBgQvHasrFQYKF84zvtc9/Y4lFYg==", "license": "MIT" }, - "node_modules/svelte-persisted-store": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/svelte-persisted-store/-/svelte-persisted-store-0.12.0.tgz", - "integrity": "sha512-BdBQr2SGSJ+rDWH8/aEV5GthBJDapVP0GP3fuUCA7TjYG5ctcB+O9Mj9ZC0+Jo1oJMfZUd1y9H68NFRR5MyIJA==", - "license": "MIT", - "engines": { - "node": ">=0.14" - }, - "peerDependencies": { - "svelte": "^3.48.0 || ^4 || ^5" - } - }, "node_modules/tar": { "version": "6.2.1", "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.1.tgz", @@ -12210,16 +12276,16 @@ } }, "node_modules/typescript-eslint": { - "version": "8.46.3", - "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.46.3.tgz", - "integrity": "sha512-bAfgMavTuGo+8n6/QQDVQz4tZ4f7Soqg53RbrlZQEoAltYop/XR4RAts/I0BrO3TTClTSTFJ0wYbla+P8cEWJA==", + "version": "8.48.0", + "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.48.0.tgz", + "integrity": "sha512-fcKOvQD9GUn3Xw63EgiDqhvWJ5jsyZUaekl3KVpGsDJnN46WJTe3jWxtQP9lMZm1LJNkFLlTaWAxK2vUQR+cqw==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/eslint-plugin": "8.46.3", - "@typescript-eslint/parser": "8.46.3", - "@typescript-eslint/typescript-estree": "8.46.3", - "@typescript-eslint/utils": "8.46.3" + "@typescript-eslint/eslint-plugin": "8.48.0", + "@typescript-eslint/parser": "8.48.0", + "@typescript-eslint/typescript-estree": "8.48.0", + "@typescript-eslint/utils": "8.48.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -12434,9 +12500,9 @@ } }, "node_modules/vite": { - "version": "7.1.12", - "resolved": "https://registry.npmjs.org/vite/-/vite-7.1.12.tgz", - "integrity": "sha512-ZWyE8YXEXqJrrSLvYgrRP7p62OziLW7xI5HYGWFzOvupfAlrLvURSzv/FyGyy0eidogEM3ujU+kUG1zuHgb6Ug==", + "version": "7.2.4", + "resolved": "https://registry.npmjs.org/vite/-/vite-7.2.4.tgz", + "integrity": "sha512-NL8jTlbo0Tn4dUEXEsUg8KeyG/Lkmc4Fnzb8JXN/Ykm9G4HNImjtABMJgkQoVjOBN/j2WAwDTRytdqJbZsah7w==", "dev": true, "license": "MIT", "dependencies": { @@ -12509,17 +12575,17 @@ } }, "node_modules/vite-plugin-pwa": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/vite-plugin-pwa/-/vite-plugin-pwa-1.1.0.tgz", - "integrity": "sha512-VsSpdubPzXhHWVINcSx6uHRMpOHVHQcHsef1QgkOlEoaIDAlssFEW88LBq1a59BuokAhsh2kUDJbaX1bZv4Bjw==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/vite-plugin-pwa/-/vite-plugin-pwa-1.2.0.tgz", + "integrity": "sha512-a2xld+SJshT9Lgcv8Ji4+srFJL4k/1bVbd1x06JIkvecpQkwkvCncD1+gSzcdm3s+owWLpMJerG3aN5jupJEVw==", "dev": true, "license": "MIT", "dependencies": { "debug": "^4.3.6", "pretty-bytes": "^6.1.1", "tinyglobby": "^0.2.10", - "workbox-build": "^7.3.0", - "workbox-window": "^7.3.0" + "workbox-build": "^7.4.0", + "workbox-window": "^7.4.0" }, "engines": { "node": ">=16.0.0" @@ -12530,8 +12596,8 @@ "peerDependencies": { "@vite-pwa/assets-generator": "^1.0.0", "vite": "^3.1.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0", - "workbox-build": "^7.3.0", - "workbox-window": "^7.3.0" + "workbox-build": "^7.4.0", + "workbox-window": "^7.4.0" }, "peerDependenciesMeta": { "@vite-pwa/assets-generator": { diff --git a/materialious/package.json b/materialious/package.json index 3d7cbe2a..796ab139 100644 --- a/materialious/package.json +++ b/materialious/package.json @@ -19,7 +19,7 @@ "@capacitor/cli": "^7.4.4", "@sveltejs/adapter-auto": "^6.0.1", "@sveltejs/adapter-static": "^3.0.10", - "@sveltejs/kit": "^2.46.5", + "@sveltejs/kit": "^2.49.0", "@sveltejs/vite-plugin-svelte": "^6.2.1", "@types/event-source-polyfill": "^1.0.5", "@types/he": "^1.2.3", @@ -36,8 +36,8 @@ "svelte-check": "^4.3.3", "tslib": "^2.7.0", "typescript": "^5.9.3", - "typescript-eslint": "^8.46.3", - "vite": "^7.1.12" + "typescript-eslint": "^8.47.0", + "vite": "^7.2.4" }, "type": "module", "dependencies": { @@ -48,7 +48,11 @@ "@capacitor/browser": "^7.0.0", "@capacitor/clipboard": "^7.0.0", "@capacitor/core": "^7.4.3", + "@capacitor/preferences": "^7.0.2", "@capacitor/screen-orientation": "^7.0.0", + "@capacitor/share": "^7.0.2", + "@macfja/serializer": "^1.1.4", + "@macfja/svelte-persistent-store": "^2.4.2", "beercss": "^3.12.13", "bgutils-js": "^3.2.0", "capacitor-nodejs": "https://github.com/hampoelz/capacitor-nodejs/releases/download/v1.0.0-beta.9/capacitor-nodejs.tgz", @@ -57,17 +61,16 @@ "googlevideo": "^4.0.4", "he": "^1.2.0", "human-number": "^2.0.7", - "i18next": "^25.6.0", + "i18next": "^25.6.3", "iso-3166": "^4.4.0", "iso-639-1": "^3.1.5", "material-dynamic-colors": "^1.1.1", "media-captions": "^1.0.4", "mousetrap": "^1.6.5", "peerjs": "^1.5.5", - "shaka-player": "^4.16.2", + "shaka-player": "^4.16.9", "sponsorblock-api": "^0.2.4", "svelte-infinite-loading": "^1.4.0", - "svelte-persisted-store": "^0.12.0", "youtubei.js": "^16.0.1" } } diff --git a/materialious/src/lib/android/http/androidRequests.ts b/materialious/src/lib/android/http/androidRequests.ts index 57a18259..d2ef206b 100644 --- a/materialious/src/lib/android/http/androidRequests.ts +++ b/materialious/src/lib/android/http/androidRequests.ts @@ -1,11 +1,8 @@ -import { timeout } from '$lib/misc'; import { Capacitor } from '@capacitor/core'; const originalFetch = window.fetch; const corsProxyUrl: string = 'http://localhost:3000/'; -let nodejsStarted = false; - function needsProxying(target: string): boolean { if (!target.startsWith('http')) return false; return true; @@ -15,19 +12,6 @@ export const androidFetch = async ( requestInput: string | URL | Request, requestOptions?: RequestInit ): Promise => { - // On initial request pause until OPTIONS request passes on local proxy, only reliable way - // to ensure proxy is working on android. - if (!nodejsStarted) { - let testResp: Response | undefined = undefined; - while (typeof testResp === 'undefined' || !testResp.ok) { - try { - testResp = await originalFetch(corsProxyUrl, { method: 'OPTIONS' }); - } catch (error) {} - await timeout(100); - } - nodejsStarted = true; - } - const uri = requestInput instanceof Request ? requestInput.url : requestInput.toString(); if (needsProxying(uri)) { diff --git a/materialious/src/lib/components/Player.svelte b/materialious/src/lib/components/Player.svelte index dbd7711b..09bc217d 100644 --- a/materialious/src/lib/components/Player.svelte +++ b/materialious/src/lib/components/Player.svelte @@ -53,7 +53,6 @@ interface Props { data: { video: VideoPlay; content: PhasedDescription; playlistId: string | null }; - isSyncing?: boolean; isEmbed?: boolean; playerElement?: HTMLMediaElement | undefined; } @@ -155,6 +154,47 @@ } } + async function onAndroidFullscreenChange() { + const videoFormats = data.video.adaptiveFormats.filter((format) => + format.type.startsWith('video/') + ); + + const isFullScreen = !!document.fullscreenElement; + + if (isFullScreen) { + // Ensure bar color is black while in fullscreen + await SafeArea.enable({ + config: { + customColorsForSystemBars: true, + statusBarColor: '#00000000', + statusBarContent: 'light', + navigationBarColor: '#00000000', + navigationBarContent: 'light' + } + }); + } else { + await setStatusBarColor(); + } + + if (!$playerAndroidLockOrientation) return; + + if (isFullScreen && videoFormats[0].resolution) { + const widthHeight = videoFormats[0].resolution.split('x'); + + if (widthHeight.length !== 2) return; + + if (Number(widthHeight[0]) > Number(widthHeight[1])) { + await ScreenOrientation.lock({ orientation: 'landscape' }); + } else { + await ScreenOrientation.lock({ orientation: 'portrait' }); + } + } else { + await ScreenOrientation.lock({ + orientation: (originalOrigination as ScreenOrientationResult).type + }); + } + } + async function androidHandleRotate() { if ( Capacitor.getPlatform() !== 'android' || @@ -163,48 +203,9 @@ ) return; - const videoFormats = data.video.adaptiveFormats.filter((format) => - format.type.startsWith('video/') - ); - originalOrigination = await ScreenOrientation.orientation(); - document.addEventListener('fullscreenchange', async () => { - const isFullScreen = !!document.fullscreenElement; - - if (isFullScreen) { - // Ensure bar color is black while in fullscreen - await SafeArea.enable({ - config: { - customColorsForSystemBars: true, - statusBarColor: '#00000000', - statusBarContent: 'light', - navigationBarColor: '#00000000', - navigationBarContent: 'light' - } - }); - } else { - await setStatusBarColor(); - } - - if (!$playerAndroidLockOrientation) return; - - if (isFullScreen && videoFormats[0].resolution) { - const widthHeight = videoFormats[0].resolution.split('x'); - - if (widthHeight.length !== 2) return; - - if (Number(widthHeight[0]) > Number(widthHeight[1])) { - await ScreenOrientation.lock({ orientation: 'landscape' }); - } else { - await ScreenOrientation.lock({ orientation: 'portrait' }); - } - } else { - await ScreenOrientation.lock({ - orientation: (originalOrigination as ScreenOrientationResult).type - }); - } - }); + document.addEventListener('fullscreenchange', onAndroidFullscreenChange); } async function setupSponsorSkip() { @@ -787,6 +788,8 @@ onDestroy(async () => { if (Capacitor.getPlatform() === 'android' && !$isAndroidTvStore) { + document.removeEventListener('fullscreenchange', onAndroidFullscreenChange); + if (originalOrigination) { await ScreenOrientation.lock({ orientation: originalOrigination.type @@ -833,7 +836,7 @@ id="player" poster={getBestThumbnail(data.video.videoThumbnails, 9999, 9999)} > - {#if isEmbed && !isAndroidTvStore} + {#if isEmbed && !$isAndroidTvStore}
{data.video.title}
diff --git a/materialious/src/lib/components/ShareVideo.svelte b/materialious/src/lib/components/ShareVideo.svelte index 30f49375..02ac0bae 100644 --- a/materialious/src/lib/components/ShareVideo.svelte +++ b/materialious/src/lib/components/ShareVideo.svelte @@ -1,6 +1,8 @@ -{#if currentTime !== undefined} -
  • - -
    {$_('player.share.includeTimestamp')}
    + + {#if currentTime !== undefined} +
  • + +
    {$_('player.share.includeTimestamp')}
    +
  • +
    + {/if} + -
    -{/if} - - - + + +
    + +
    {$_('player.share.copiedSuccess')}
    diff --git a/materialious/src/lib/components/settings/Interface.svelte b/materialious/src/lib/components/settings/Interface.svelte index e10ae006..b261ae39 100644 --- a/materialious/src/lib/components/settings/Interface.svelte +++ b/materialious/src/lib/components/settings/Interface.svelte @@ -18,6 +18,7 @@ instanceStore, interfaceAllowInsecureRequests, interfaceAmoledTheme, + interfaceAndroidUseNativeShare, interfaceAutoExpandChapters, interfaceAutoExpandComments, interfaceAutoExpandDesc, @@ -304,6 +305,25 @@ +{#if Capacitor.getPlatform() == 'android'} +
    + +
    +{/if} + {#if Capacitor.getPlatform() == 'electron'}