diff --git a/android/build.gradle b/android/build.gradle index 9625389..9cc72cb 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -7,7 +7,7 @@ buildscript { mavenCentral() } dependencies { - classpath 'com.android.tools.build:gradle:8.0.1' + classpath 'com.android.tools.build:gradle:8.0.0' classpath 'com.google.gms:google-services:4.3.15' // NOTE: Do not place your application dependencies here; they belong diff --git a/android/gradle.properties b/android/gradle.properties index 92710f3..2e87c52 100644 --- a/android/gradle.properties +++ b/android/gradle.properties @@ -20,4 +20,3 @@ org.gradle.jvmargs=-Xmx1536m # Android operating system, and which are packaged with your app's APK # https://developer.android.com/topic/libraries/support-library/androidx-rn android.useAndroidX=true - diff --git a/capacitor.config.ts b/capacitor.config.ts index 936899c..34cb2de 100644 --- a/capacitor.config.ts +++ b/capacitor.config.ts @@ -6,7 +6,7 @@ const config: CapacitorConfig = { webDir: 'dist/browser', backgroundColor: '#000000FF', server: { - allowNavigation: ['*.apple.com'], + allowNavigation: ['*'], }, plugins: { LocalNotifications: {}, diff --git a/ios/App/App.xcodeproj/project.pbxproj b/ios/App/App.xcodeproj/project.pbxproj index cec4808..de39f8a 100644 --- a/ios/App/App.xcodeproj/project.pbxproj +++ b/ios/App/App.xcodeproj/project.pbxproj @@ -358,12 +358,12 @@ OTHER_SWIFT_FLAGS = "$(inherited) \"-D\" \"COCOAPODS\" \"-DDEBUG\""; PRODUCT_BUNDLE_IDENTIFIER = com.startrack.app; PRODUCT_NAME = "$(TARGET_NAME)"; - SUPPORTED_PLATFORMS = "iphoneos iphonesimulator xros xrsimulator"; + SUPPORTED_PLATFORMS = "iphoneos iphonesimulator"; SUPPORTS_MACCATALYST = YES; SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = NO; SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2,6,7"; + TARGETED_DEVICE_FAMILY = "1,2,6"; }; name = Debug; }; @@ -382,12 +382,12 @@ MARKETING_VERSION = 1.0; PRODUCT_BUNDLE_IDENTIFIER = com.startrack.app; PRODUCT_NAME = "$(TARGET_NAME)"; - SUPPORTED_PLATFORMS = "iphoneos iphonesimulator xros xrsimulator"; + SUPPORTED_PLATFORMS = "iphoneos iphonesimulator"; SUPPORTS_MACCATALYST = YES; SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = NO; SWIFT_ACTIVE_COMPILATION_CONDITIONS = ""; SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2,6,7"; + TARGETED_DEVICE_FAMILY = "1,2,6"; }; name = Release; }; diff --git a/ios/App/App/capacitor.config.json b/ios/App/App/capacitor.config.json index 9c0cbeb..59ee8aa 100644 --- a/ios/App/App/capacitor.config.json +++ b/ios/App/App/capacitor.config.json @@ -5,7 +5,7 @@ "backgroundColor": "#000000FF", "server": { "allowNavigation": [ - "*.apple.com" + "*" ] }, "plugins": { diff --git a/ios/App/Podfile.lock b/ios/App/Podfile.lock index 8397779..a6ec979 100644 --- a/ios/App/Podfile.lock +++ b/ios/App/Podfile.lock @@ -1,16 +1,16 @@ PODS: - - Capacitor (5.0.0): + - Capacitor (5.6.0): - CapacitorCordova - - CapacitorApp (5.0.0): + - CapacitorApp (5.0.7): - Capacitor - - CapacitorBrowser (5.0.0): + - CapacitorBrowser (5.2.0): - Capacitor - - CapacitorCordova (5.0.0) - - CapacitorLocalNotifications (5.0.0): + - CapacitorCordova (5.6.0) + - CapacitorLocalNotifications (5.0.7): - Capacitor - - CapacitorSplashScreen (5.0.0): + - CapacitorSplashScreen (5.0.7): - Capacitor - - CapacitorStatusBar (5.0.6): + - CapacitorStatusBar (5.0.7): - Capacitor DEPENDENCIES: @@ -39,14 +39,14 @@ EXTERNAL SOURCES: :path: "../../node_modules/@capacitor/status-bar" SPEC CHECKSUMS: - Capacitor: b332cb737d447561e854039fb72195206685dce2 - CapacitorApp: 16e189e0463976060ccf34868e3083858c977e2b - CapacitorBrowser: 53c2279785c2f67059439445647c8ad90150e1ae - CapacitorCordova: 4ea17670ee562680988a7ce9db68dee5160fe564 - CapacitorLocalNotifications: 8620df7dfc20d028a0c3a1e61acab9bf44462e7c - CapacitorSplashScreen: 22779612c60d1cb2e4f143fdbc096e7056450386 - CapacitorStatusBar: 565c0a1ebd79bb40d797606a8992b4a105885309 + Capacitor: ebfc16cdb8116d04c101686b080342872da42d43 + CapacitorApp: 17fecd0e6cb23feafac7eb0939417389038b0979 + CapacitorBrowser: a6deae9e5bf87f62b62a753cff7992c5def9e771 + CapacitorCordova: 931b48fcdbc9bc985fc2f16cec9f77c794a27729 + CapacitorLocalNotifications: c58afadd159f6bc540ef9b3cbdbc82510a2bf112 + CapacitorSplashScreen: dd3de3f3644710fa2a697cfb91ec262eece4d242 + CapacitorStatusBar: f390fbb49b82ffb754ea4b3cf71dc8b048baf3e7 PODFILE CHECKSUM: 74b9396193316a081d3515721a3bc1e5a9d48fc4 -COCOAPODS: 1.13.0 +COCOAPODS: 1.15.0 diff --git a/package-lock.json b/package-lock.json index 8b8f976..44448de 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,47 +8,47 @@ "name": "startrack-ng", "version": "0.0.1", "dependencies": { - "@angular/animations": "17.1.0-next.3", - "@angular/common": "17.1.0-next.3", - "@angular/core": "17.1.0-next.3", - "@angular/forms": "17.1.0-next.3", - "@angular/platform-browser": "17.1.0-next.3", - "@angular/platform-browser-dynamic": "17.1.0-next.3", - "@angular/router": "17.1.0-next.3", - "@angular/service-worker": "17.1.0-next.3", - "@angular/ssr": "^17.1.0-next.1", + "@angular/animations": "17.1.0", + "@angular/common": "17.1.0", + "@angular/core": "17.1.0", + "@angular/forms": "17.1.0", + "@angular/platform-browser": "17.1.0", + "@angular/platform-browser-dynamic": "17.1.0", + "@angular/router": "17.1.0", + "@angular/service-worker": "17.1.0", + "@angular/ssr": "^17.1.0", "@capacitor/android": "latest", - "@capacitor/app": "5.0.0", - "@capacitor/browser": "5.0.0", - "@capacitor/core": "latest", - "@capacitor/ios": "5.0.0", - "@capacitor/local-notifications": "5.0.0", - "@capacitor/splash-screen": "5.0.0", - "@capacitor/status-bar": "^5.0.6", - "@ionic/angular": "7.6.3", + "@capacitor/app": "5.0.7", + "@capacitor/browser": "5.2.0", + "@capacitor/core": "5.6.0", + "@capacitor/ios": "5.6.0", + "@capacitor/local-notifications": "5.0.7", + "@capacitor/splash-screen": "5.0.7", + "@capacitor/status-bar": "5.0.7", + "@ionic/angular": "7.6.5-dev.11704916749.1e64a3a7", "@ionic/angular-toolkit": "9.0.0", "@pixi/filter-adjustment": "^5.1.1", "@pixi/filter-kawase-blur": "^5.1.1", "@pixi/filter-twist": "^5.1.1", "@request-metrics/browser-agent": "1.11.1", "ionicons": "7.2.1", - "pixi.js": "8.0.0-rc.1", + "pixi.js": "7.3.3", "rollup-plugin-visualizer": "5.9.2", "rxjs": "7.8.0", "tslib": "^2.0.0", "zone.js": "~0.14.0" }, "devDependencies": { - "@angular-devkit/build-angular": "17.1.0-next.1", + "@angular-devkit/build-angular": "17.1.0", "@angular-eslint/builder": "17.1.0", "@angular-eslint/eslint-plugin": "17.1.0", "@angular-eslint/eslint-plugin-template": "17.1.0", "@angular-eslint/schematics": "17.1.0", "@angular-eslint/template-parser": "17.1.0", - "@angular/cli": "17.1.0-next.1", - "@angular/compiler": "17.1.0-next.3", - "@angular/compiler-cli": "17.1.0-next.3", - "@angular/language-service": "17.1.0-next.3", + "@angular/cli": "17.1.0", + "@angular/compiler": "17.1.0", + "@angular/compiler-cli": "17.1.0", + "@angular/language-service": "17.1.0", "@capacitor/cli": "latest", "@types/node": "12.12.47", "@typescript-eslint/eslint-plugin": "^6.10.0", @@ -58,7 +58,6 @@ "eslint-plugin-import": "2.25.2", "eslint-plugin-jsdoc": "37.0.0", "eslint-plugin-prefer-arrow": "1.2.3", - "ts-node": "~8.3.0", "typescript": "5.2.2", "typescript-eslint-language-service": "5.0.5" } @@ -86,12 +85,12 @@ } }, "node_modules/@angular-devkit/architect": { - "version": "0.1701.0-next.1", - "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1701.0-next.1.tgz", - "integrity": "sha512-JHVVYoA/GiL6gWAOW+PcPBSYgtefyH1Ieaqwnm3Jx6SKfp3jGJNn4Tzk0c1sJcexD1bXUf8agl7jaa1OHGJnRA==", + "version": "0.1701.0", + "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1701.0.tgz", + "integrity": "sha512-VP6mjptKFn0HO2dn4bH0mFMe4CrexlWlgnTHyAUbL7ZFaV9w4VQuE/vXr60wMlQ+83NIGUeJImjt1QVNlIjJnQ==", "dev": true, "dependencies": { - "@angular-devkit/core": "17.1.0-next.1", + "@angular-devkit/core": "17.1.0", "rxjs": "7.8.1" }, "engines": { @@ -110,37 +109,36 @@ } }, "node_modules/@angular-devkit/build-angular": { - "version": "17.1.0-next.1", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-17.1.0-next.1.tgz", - "integrity": "sha512-Nk85eB6vVyZHJFRxSCAG3R0EXnS73S87OZk58cOtfgXxjGaie6UNgrE5DkGVUWKAbJfshhw6Bq8nbcaEPioDCA==", + "version": "17.1.0", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-17.1.0.tgz", + "integrity": "sha512-N9B2SlKewD48qKFgRPKDH1X2EvOGll1ocMlFxi95mT9aXuFd2d75JUYHzS1v3FQRU3peoAoFKxCV7OuIL/cmTA==", "dev": true, "dependencies": { "@ampproject/remapping": "2.2.1", - "@angular-devkit/architect": "0.1701.0-next.1", - "@angular-devkit/build-webpack": "0.1701.0-next.1", - "@angular-devkit/core": "17.1.0-next.1", - "@babel/core": "7.23.5", - "@babel/generator": "7.23.5", + "@angular-devkit/architect": "0.1701.0", + "@angular-devkit/build-webpack": "0.1701.0", + "@angular-devkit/core": "17.1.0", + "@babel/core": "7.23.7", + "@babel/generator": "7.23.6", "@babel/helper-annotate-as-pure": "7.22.5", "@babel/helper-split-export-declaration": "7.22.6", - "@babel/plugin-transform-async-generator-functions": "7.23.4", + "@babel/plugin-transform-async-generator-functions": "7.23.7", "@babel/plugin-transform-async-to-generator": "7.23.3", - "@babel/plugin-transform-runtime": "7.23.4", - "@babel/preset-env": "7.23.5", - "@babel/runtime": "7.23.5", + "@babel/plugin-transform-runtime": "7.23.7", + "@babel/preset-env": "7.23.7", + "@babel/runtime": "7.23.7", "@discoveryjs/json-ext": "0.5.7", - "@ngtools/webpack": "17.1.0-next.1", + "@ngtools/webpack": "17.1.0", "@vitejs/plugin-basic-ssl": "1.0.2", "ansi-colors": "4.1.3", "autoprefixer": "10.4.16", "babel-loader": "9.1.3", "babel-plugin-istanbul": "6.1.1", "browserslist": "^4.21.5", - "chokidar": "3.5.3", "copy-webpack-plugin": "11.0.0", "critters": "0.0.20", "css-loader": "6.8.1", - "esbuild-wasm": "0.19.8", + "esbuild-wasm": "0.19.11", "fast-glob": "3.3.2", "http-proxy-middleware": "2.0.6", "https-proxy-agent": "7.0.2", @@ -153,27 +151,28 @@ "loader-utils": "3.2.1", "magic-string": "0.30.5", "mini-css-extract-plugin": "2.7.6", - "mrmime": "1.0.1", + "mrmime": "2.0.0", "open": "8.4.2", "ora": "5.4.1", "parse5-html-rewriting-stream": "7.0.0", "picomatch": "3.0.1", - "piscina": "4.2.0", - "postcss": "8.4.32", - "postcss-loader": "7.3.3", + "piscina": "4.2.1", + "postcss": "8.4.33", + "postcss-loader": "7.3.4", "resolve-url-loader": "5.0.0", "rxjs": "7.8.1", - "sass": "1.69.5", - "sass-loader": "13.3.2", + "sass": "1.69.7", + "sass-loader": "13.3.3", "semver": "7.5.4", - "source-map-loader": "4.0.1", + "source-map-loader": "5.0.0", "source-map-support": "0.5.21", - "terser": "5.25.0", + "terser": "5.26.0", "text-table": "0.2.0", "tree-kill": "1.2.2", "tslib": "2.6.2", - "undici": "6.0.1", - "vite": "5.0.6", + "undici": "6.2.1", + "vite": "5.0.11", + "watchpack": "2.4.0", "webpack": "5.89.0", "webpack-dev-middleware": "6.1.1", "webpack-dev-server": "4.15.1", @@ -186,18 +185,19 @@ "yarn": ">= 1.13.0" }, "optionalDependencies": { - "esbuild": "0.19.8" + "esbuild": "0.19.11" }, "peerDependencies": { - "@angular/compiler-cli": "^17.0.0 || ^17.1.0-next.0", - "@angular/localize": "^17.0.0 || ^17.1.0-next.0", - "@angular/platform-server": "^17.0.0 || ^17.1.0-next.0", - "@angular/service-worker": "^17.0.0 || ^17.1.0-next.0", - "browser-sync": "^2.29.3", + "@angular/compiler-cli": "^17.0.0", + "@angular/localize": "^17.0.0", + "@angular/platform-server": "^17.0.0", + "@angular/service-worker": "^17.0.0", + "@web/test-runner": "^0.18.0", + "browser-sync": "^3.0.2", "jest": "^29.5.0", "jest-environment-jsdom": "^29.5.0", "karma": "^6.3.0", - "ng-packagr": "^17.0.0 || ^17.1.0-next.0", + "ng-packagr": "^17.0.0", "protractor": "^7.0.0", "tailwindcss": "^2.0.0 || ^3.0.0", "typescript": ">=5.2 <5.4" @@ -212,6 +212,9 @@ "@angular/service-worker": { "optional": true }, + "@web/test-runner": { + "optional": true + }, "browser-sync": { "optional": true }, @@ -297,9 +300,9 @@ } }, "node_modules/@angular-devkit/build-angular/node_modules/vite": { - "version": "5.0.6", - "resolved": "https://registry.npmjs.org/vite/-/vite-5.0.6.tgz", - "integrity": "sha512-MD3joyAEBtV7QZPl2JVVUai6zHms3YOmLR+BpMzLlX2Yzjfcc4gTgNi09d/Rua3F4EtC8zdwPU8eQYyib4vVMQ==", + "version": "5.0.11", + "resolved": "https://registry.npmjs.org/vite/-/vite-5.0.11.tgz", + "integrity": "sha512-XBMnDjZcNAw/G1gEiskiM1v6yzM4GE5aMGvhWTlHAYYhxb7S3/V1s3m2LDHa8Vh6yIWYYB0iJwsEaS523c4oYA==", "dev": true, "dependencies": { "esbuild": "^0.19.3", @@ -352,12 +355,12 @@ } }, "node_modules/@angular-devkit/build-webpack": { - "version": "0.1701.0-next.1", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.1701.0-next.1.tgz", - "integrity": "sha512-kWlwewFXEFq0otlxpsIcJNwz7ew5kzTsMXkteiiYCArq6UGjg+OYwdUSn9Cyq3etFMkacMpKQn1cROUceZABJw==", + "version": "0.1701.0", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.1701.0.tgz", + "integrity": "sha512-AUQbdnAXMdXKPj51RWr+0SusTh5M1EWEpXtEZgDSO5Vab6ak+xsX+k1IhjlEoliF0prHjD5WzBegr6WKCjZ30w==", "dev": true, "dependencies": { - "@angular-devkit/architect": "0.1701.0-next.1", + "@angular-devkit/architect": "0.1701.0", "rxjs": "7.8.1" }, "engines": { @@ -380,9 +383,9 @@ } }, "node_modules/@angular-devkit/core": { - "version": "17.1.0-next.1", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-17.1.0-next.1.tgz", - "integrity": "sha512-Lq81+eNNOntSQnRsto8tmDy8cdtGYYBjUIwzPB6k3FbDBngIBQ7SXqrRMwg8/NsfVbku4zWK8j2FHDyTStwoEg==", + "version": "17.1.0", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-17.1.0.tgz", + "integrity": "sha512-w7HeJjyM6YtjXrwFdmFIsp9lzDPAFJov8hVCD18DZaCwryRixz+o8egfw2SkpI4L8kuGAiGxpaCTRsTQtmR4/w==", "dev": true, "dependencies": { "ajv": "8.12.0", @@ -416,12 +419,12 @@ } }, "node_modules/@angular-devkit/schematics": { - "version": "17.1.0-next.1", - "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-17.1.0-next.1.tgz", - "integrity": "sha512-1/KyP0GUZHeSZG/lSuPuUp2Rg5mSvCUASGBYaRnPpmXYtK0L5qYh66mZuS0SfTwrAODbwZsRUruU5vcHdEoCUw==", + "version": "17.1.0", + "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-17.1.0.tgz", + "integrity": "sha512-7q4Bk3+ePBdzrmMWxWBnNdN4kmBe2jJwa3vAofaMqZiIBEor85YcOsrUJvcWM/3+/TusgZr4p/4+oJgiYDrj5A==", "dev": true, "dependencies": { - "@angular-devkit/core": "17.1.0-next.1", + "@angular-devkit/core": "17.1.0", "jsonc-parser": "3.2.0", "magic-string": "0.30.5", "ora": "5.4.1", @@ -541,9 +544,9 @@ } }, "node_modules/@angular/animations": { - "version": "17.1.0-next.3", - "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-17.1.0-next.3.tgz", - "integrity": "sha512-ig3TtzlOFS3MmXPrsCCBMLan45jfPsXvikcLLKTvun+BKezMop1qkL/Fihqab7oHE3s3qJWvl2Ay7x31WfOsjw==", + "version": "17.1.0", + "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-17.1.0.tgz", + "integrity": "sha512-EzyJsla/CnRX4ARmHe9J1m3Pl+J4m5hznzeQFyZpJehikaHKAGGJTGM/+DFAX9TuR1ZpCmS0z0oWsYzag2Q7RA==", "dependencies": { "tslib": "^2.3.0" }, @@ -551,19 +554,19 @@ "node": "^18.13.0 || >=20.9.0" }, "peerDependencies": { - "@angular/core": "17.1.0-next.3" + "@angular/core": "17.1.0" } }, "node_modules/@angular/cli": { - "version": "17.1.0-next.1", - "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-17.1.0-next.1.tgz", - "integrity": "sha512-Hk4t2ycXXC3402gHTD7ZRX5iVBZPYiktw5L71q0q9LMrVg71S+H/rMXi3EkhBiSNiVFmOcfqZvABDhAtMW/+9w==", + "version": "17.1.0", + "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-17.1.0.tgz", + "integrity": "sha512-mZh8ibV94CqHls+GTHok9rF78UvrtKZx+o1QOcG50ZM1L5O5s2NYrBhf+QXVeTTmzhSH1wXQb7ueyuLNLVB/eA==", "dev": true, "dependencies": { - "@angular-devkit/architect": "0.1701.0-next.1", - "@angular-devkit/core": "17.1.0-next.1", - "@angular-devkit/schematics": "17.1.0-next.1", - "@schematics/angular": "17.1.0-next.1", + "@angular-devkit/architect": "0.1701.0", + "@angular-devkit/core": "17.1.0", + "@angular-devkit/schematics": "17.1.0", + "@schematics/angular": "17.1.0", "@yarnpkg/lockfile": "1.1.0", "ansi-colors": "4.1.3", "ini": "4.1.1", @@ -589,9 +592,9 @@ } }, "node_modules/@angular/common": { - "version": "17.1.0-next.3", - "resolved": "https://registry.npmjs.org/@angular/common/-/common-17.1.0-next.3.tgz", - "integrity": "sha512-jxDZpEm2NegPVhhbpdlu80vkodrIfv75/GooX6y6ciSObS3/clyFT4+u2TsBbiDGKH10ISb7wd0gQBkum46e9g==", + "version": "17.1.0", + "resolved": "https://registry.npmjs.org/@angular/common/-/common-17.1.0.tgz", + "integrity": "sha512-0Zg62iSynyRr2QslC8dVwSo46mkKrVENnwcBvsgTJ8rfGiuRdKMX8nWm5EUEm3ohKmYLfHvyEjsKDRn//UefVw==", "dependencies": { "tslib": "^2.3.0" }, @@ -599,14 +602,14 @@ "node": "^18.13.0 || >=20.9.0" }, "peerDependencies": { - "@angular/core": "17.1.0-next.3", + "@angular/core": "17.1.0", "rxjs": "^6.5.3 || ^7.4.0" } }, "node_modules/@angular/compiler": { - "version": "17.1.0-next.3", - "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-17.1.0-next.3.tgz", - "integrity": "sha512-/LoPv44oQe+eQh2TvLECl7YUlTSHEqR7bDiEmf2NRXVmQ1XvcLuAnG132A722wN0FID8W4GCIpXbuWE5DXLytg==", + "version": "17.1.0", + "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-17.1.0.tgz", + "integrity": "sha512-gF4i/WtPSiSvT4YNasTNnckOxdxuSNwi0EsncrtewwveBcCatjqaXNssUCiF5TgxlC2sKTmsPcMqDJrfX2LMpw==", "dependencies": { "tslib": "^2.3.0" }, @@ -614,7 +617,7 @@ "node": "^18.13.0 || >=20.9.0" }, "peerDependencies": { - "@angular/core": "17.1.0-next.3" + "@angular/core": "17.1.0" }, "peerDependenciesMeta": { "@angular/core": { @@ -623,9 +626,9 @@ } }, "node_modules/@angular/compiler-cli": { - "version": "17.1.0-next.3", - "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-17.1.0-next.3.tgz", - "integrity": "sha512-ZsLMAp28tu6H7lcpK4SWnmdcYRzFOyGvqnJ4gDLLPMKiOTm+J18NHQW8F3fN+12qvuWbIlH49FFnGHJnB9OZkg==", + "version": "17.1.0", + "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-17.1.0.tgz", + "integrity": "sha512-WDpO4WvC5ItjaRexnpFpKPpT+cu+5GYkWF8h74iHhfxOgU+gaQiMWERHylWCqF25AzmhKu0iI3ZZtaIJ6qqwog==", "dev": true, "dependencies": { "@babel/core": "7.23.2", @@ -646,7 +649,7 @@ "node": "^18.13.0 || >=20.9.0" }, "peerDependencies": { - "@angular/compiler": "17.1.0-next.3", + "@angular/compiler": "17.1.0", "typescript": ">=5.2 <5.4" } }, @@ -696,9 +699,9 @@ } }, "node_modules/@angular/core": { - "version": "17.1.0-next.3", - "resolved": "https://registry.npmjs.org/@angular/core/-/core-17.1.0-next.3.tgz", - "integrity": "sha512-D6woLcY5bWwt83J9NxyQ6D9LLu15ri9gjKha+aevvH4hraAL+A4MFvyNiyAa4b70kPpkzVW+97O14ze9BF4Uhw==", + "version": "17.1.0", + "resolved": "https://registry.npmjs.org/@angular/core/-/core-17.1.0.tgz", + "integrity": "sha512-9OvRRZq+46S+ICZLRYIGVU2pknuPz23B+5V3jz7cDA5V43GVcMnfmAbMClPQxm7kRGnqtQ+yzBjn+HubCerE6g==", "dependencies": { "tslib": "^2.3.0" }, @@ -711,9 +714,9 @@ } }, "node_modules/@angular/forms": { - "version": "17.1.0-next.3", - "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-17.1.0-next.3.tgz", - "integrity": "sha512-1EiRrwtPhr3uAdGN7125TiYki5l+IcZkrH0B1SfNopPSgcApeJydzCSPySBH3ETzTgEp1PGZCPR5g/pVVF9PUQ==", + "version": "17.1.0", + "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-17.1.0.tgz", + "integrity": "sha512-JD9IAxa5gQnjzxYJXm3H+lBuyv/dCnPHl6fpvb/JGrxY6xi4gfndyI8AkAb/wOAQgZDsIPaq5s4eWDjhr7CpyA==", "dependencies": { "tslib": "^2.3.0" }, @@ -721,25 +724,25 @@ "node": "^18.13.0 || >=20.9.0" }, "peerDependencies": { - "@angular/common": "17.1.0-next.3", - "@angular/core": "17.1.0-next.3", - "@angular/platform-browser": "17.1.0-next.3", + "@angular/common": "17.1.0", + "@angular/core": "17.1.0", + "@angular/platform-browser": "17.1.0", "rxjs": "^6.5.3 || ^7.4.0" } }, "node_modules/@angular/language-service": { - "version": "17.1.0-next.3", - "resolved": "https://registry.npmjs.org/@angular/language-service/-/language-service-17.1.0-next.3.tgz", - "integrity": "sha512-4Nzye/+TQLBqrEvZmI/pmxrponFhyFCzfkEFHGqADMNkyLQdd+F9yXGZFG/WpLhDpfWilR6+0CbHHFS6KZAs3g==", + "version": "17.1.0", + "resolved": "https://registry.npmjs.org/@angular/language-service/-/language-service-17.1.0.tgz", + "integrity": "sha512-hR0m9lhCZV1KpXmOVWllpPL174EdOuuiXXuvMRGlM0Kru2CLxzrzgFHwgZEib5AywLxK7vPGi5hGHk/LtTawEA==", "dev": true, "engines": { "node": "^18.13.0 || >=20.9.0" } }, "node_modules/@angular/platform-browser": { - "version": "17.1.0-next.3", - "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-17.1.0-next.3.tgz", - "integrity": "sha512-Zj/XPJ9mJSZEeybvUPhvwPKdImtP+LXd8NHQ2gaL923+azXzsRgG4jxvOhi/sZnrzD0o+ApqC2GqYHWQ3MFiVg==", + "version": "17.1.0", + "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-17.1.0.tgz", + "integrity": "sha512-Klq92ZUX0+ZsxLvbYtIEP3GtVEfMLYPxmBP0pWNZyYIeJCg/YxPS76QSvEhBaMqFelk4RzkDQEIfixC16UIgOA==", "dependencies": { "tslib": "^2.3.0" }, @@ -747,9 +750,9 @@ "node": "^18.13.0 || >=20.9.0" }, "peerDependencies": { - "@angular/animations": "17.1.0-next.3", - "@angular/common": "17.1.0-next.3", - "@angular/core": "17.1.0-next.3" + "@angular/animations": "17.1.0", + "@angular/common": "17.1.0", + "@angular/core": "17.1.0" }, "peerDependenciesMeta": { "@angular/animations": { @@ -758,9 +761,9 @@ } }, "node_modules/@angular/platform-browser-dynamic": { - "version": "17.1.0-next.3", - "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-17.1.0-next.3.tgz", - "integrity": "sha512-I53J7DiRMKdX4O3DeFFNeTJcg0XUfAkiyFmsHdphIPre8/xVrsIwbNqLLlEBUUoFPZbtuujPzqs0bya2oB/KKA==", + "version": "17.1.0", + "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-17.1.0.tgz", + "integrity": "sha512-rqPRZZx6VcSx81HIQr1XMBgb7fYSj6pOZNTJGZkn2KNxrz6hyU3A3qaom1VSVRK5vvNb1cFn35mg/zyOIliTIg==", "dependencies": { "tslib": "^2.3.0" }, @@ -768,16 +771,16 @@ "node": "^18.13.0 || >=20.9.0" }, "peerDependencies": { - "@angular/common": "17.1.0-next.3", - "@angular/compiler": "17.1.0-next.3", - "@angular/core": "17.1.0-next.3", - "@angular/platform-browser": "17.1.0-next.3" + "@angular/common": "17.1.0", + "@angular/compiler": "17.1.0", + "@angular/core": "17.1.0", + "@angular/platform-browser": "17.1.0" } }, "node_modules/@angular/router": { - "version": "17.1.0-next.3", - "resolved": "https://registry.npmjs.org/@angular/router/-/router-17.1.0-next.3.tgz", - "integrity": "sha512-dmgMF5il/PeinR/m8FG5qQSxAzFolNvB6dDLE977io1mQ7aZ8RAaHzGFz2lan+tya54Qt7jGul+96POTHBxUyg==", + "version": "17.1.0", + "resolved": "https://registry.npmjs.org/@angular/router/-/router-17.1.0.tgz", + "integrity": "sha512-VDeVLiiS4iEwqwgsLyL9hqA1djFW3yveMnhZIwviJlnp9vG2r/ggMKhNmdP1Hb2iaNgflyhyhwafJ0gi9SLi5A==", "dependencies": { "tslib": "^2.3.0" }, @@ -785,16 +788,16 @@ "node": "^18.13.0 || >=20.9.0" }, "peerDependencies": { - "@angular/common": "17.1.0-next.3", - "@angular/core": "17.1.0-next.3", - "@angular/platform-browser": "17.1.0-next.3", + "@angular/common": "17.1.0", + "@angular/core": "17.1.0", + "@angular/platform-browser": "17.1.0", "rxjs": "^6.5.3 || ^7.4.0" } }, "node_modules/@angular/service-worker": { - "version": "17.1.0-next.3", - "resolved": "https://registry.npmjs.org/@angular/service-worker/-/service-worker-17.1.0-next.3.tgz", - "integrity": "sha512-n+05IFndJ/Nh7GqDBhF5oXEcWi15N1UlAU4Mle1feUjhFggL1hTrINnR7pcLh9V/lLOktvrYRsib8ijRjvMwzw==", + "version": "17.1.0", + "resolved": "https://registry.npmjs.org/@angular/service-worker/-/service-worker-17.1.0.tgz", + "integrity": "sha512-JHuX44o7QWpmCElfjiYBJwO4ocuKMX7rMplKb6mFZpE5AbOWKs08dWaMh9mdWA4epQMAX6HZQZUVEtkXUaLdjg==", "dependencies": { "tslib": "^2.3.0" }, @@ -805,21 +808,21 @@ "node": "^18.13.0 || >=20.9.0" }, "peerDependencies": { - "@angular/common": "17.1.0-next.3", - "@angular/core": "17.1.0-next.3" + "@angular/common": "17.1.0", + "@angular/core": "17.1.0" } }, "node_modules/@angular/ssr": { - "version": "17.1.0-next.1", - "resolved": "https://registry.npmjs.org/@angular/ssr/-/ssr-17.1.0-next.1.tgz", - "integrity": "sha512-7HijZ/P9fPVsgzDJcjSKfPsewu+yHrOfoAjZaxkTsDwBZOdAvgk80m+OB2doS8Xrs9kbvDvCn7d+KhwYLFyHrw==", + "version": "17.1.0", + "resolved": "https://registry.npmjs.org/@angular/ssr/-/ssr-17.1.0.tgz", + "integrity": "sha512-OUCpAQGMqnlaWmrZfcWQ/cdKROsIndFOtfsiBpJXFU4P95IjYfSZDrSgNDX7syvhnb9K1vv7ymB6UO8S09RuGw==", "dependencies": { "critters": "0.0.20", "tslib": "^2.3.0" }, "peerDependencies": { - "@angular/common": "^17.0.0 || ^17.1.0-next.0", - "@angular/core": "^17.0.0 || ^17.1.0-next.0" + "@angular/common": "^17.0.0", + "@angular/core": "^17.0.0" } }, "node_modules/@assemblyscript/loader": { @@ -851,21 +854,21 @@ } }, "node_modules/@babel/core": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.23.5.tgz", - "integrity": "sha512-Cwc2XjUrG4ilcfOw4wBAK+enbdgwAcAJCfGUItPBKR7Mjw4aEfAFYrLxeRp4jWgtNIKn3n2AlBOfwwafl+42/g==", + "version": "7.23.7", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.23.7.tgz", + "integrity": "sha512-+UpDgowcmqe36d4NwqvKsyPMlOLNGMsfMmQ5WGCu+siCe3t3dfe9njrzGfdN4qq+bcNUt0+Vw6haRxBOycs4dw==", "dev": true, "dependencies": { "@ampproject/remapping": "^2.2.0", "@babel/code-frame": "^7.23.5", - "@babel/generator": "^7.23.5", - "@babel/helper-compilation-targets": "^7.22.15", + "@babel/generator": "^7.23.6", + "@babel/helper-compilation-targets": "^7.23.6", "@babel/helper-module-transforms": "^7.23.3", - "@babel/helpers": "^7.23.5", - "@babel/parser": "^7.23.5", + "@babel/helpers": "^7.23.7", + "@babel/parser": "^7.23.6", "@babel/template": "^7.22.15", - "@babel/traverse": "^7.23.5", - "@babel/types": "^7.23.5", + "@babel/traverse": "^7.23.7", + "@babel/types": "^7.23.6", "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -896,12 +899,12 @@ } }, "node_modules/@babel/generator": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.5.tgz", - "integrity": "sha512-BPssCHrBD+0YrxviOa3QzpqwhNIXKEtOa2jQrm4FlmkC2apYgRnQcmPWiGZDlGxiNtltnUFolMe8497Esry+jA==", + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.6.tgz", + "integrity": "sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw==", "dev": true, "dependencies": { - "@babel/types": "^7.23.5", + "@babel/types": "^7.23.6", "@jridgewell/gen-mapping": "^0.3.2", "@jridgewell/trace-mapping": "^0.3.17", "jsesc": "^2.5.1" @@ -935,14 +938,14 @@ } }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.15.tgz", - "integrity": "sha512-y6EEzULok0Qvz8yyLkCvVX+02ic+By2UdOhylwUOvOn9dvYc9mKICJuuU1n1XBI02YWsNsnrY1kc6DVbjcXbtw==", + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.23.6.tgz", + "integrity": "sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==", "dev": true, "dependencies": { - "@babel/compat-data": "^7.22.9", - "@babel/helper-validator-option": "^7.22.15", - "browserslist": "^4.21.9", + "@babel/compat-data": "^7.23.5", + "@babel/helper-validator-option": "^7.23.5", + "browserslist": "^4.22.2", "lru-cache": "^5.1.1", "semver": "^6.3.1" }, @@ -960,9 +963,9 @@ } }, "node_modules/@babel/helper-create-class-features-plugin": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.23.5.tgz", - "integrity": "sha512-QELlRWxSpgdwdJzSJn4WAhKC+hvw/AtHbbrIoncKHkhKKR/luAlKkgBDcri1EzWAo8f8VvYVryEHN4tax/V67A==", + "version": "7.23.7", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.23.7.tgz", + "integrity": "sha512-xCoqR/8+BoNnXOY7RVSgv6X+o7pmT5q1d+gGcRlXYkI+9B31glE4jeejhKVpA04O1AtzOt7OSQ6VYKP5FcRl9g==", "dev": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.22.5", @@ -1018,9 +1021,9 @@ } }, "node_modules/@babel/helper-define-polyfill-provider": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.4.3.tgz", - "integrity": "sha512-WBrLmuPP47n7PNwsZ57pqam6G/RGo1vw/87b0Blc53tZNGZ4x7YvZ6HgQe2vo1W/FR20OgjeZuGXzudPiXHFug==", + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.4.4.tgz", + "integrity": "sha512-QcJMILQCu2jm5TFPGA3lCpJJTeEP+mqeXooG/NZbg/h5FTFi6V0+99ahlRsW8/kRLyb24LZVCCiclDedhLKcBA==", "dev": true, "dependencies": { "@babel/helper-compilation-targets": "^7.22.6", @@ -1243,14 +1246,14 @@ } }, "node_modules/@babel/helpers": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.23.5.tgz", - "integrity": "sha512-oO7us8FzTEsG3U6ag9MfdF1iA/7Z6dz+MtFhifZk8C8o453rGJFFWUP1t+ULM9TUIAzC9uxXEiXjOiVMyd7QPg==", + "version": "7.23.8", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.23.8.tgz", + "integrity": "sha512-KDqYz4PiOWvDFrdHLPhKtCThtIcKVy6avWD2oG4GEvyQ+XDZwHD4YQd+H2vNMnq2rkdxsDkU82T+Vk8U/WXHRQ==", "dev": true, "dependencies": { "@babel/template": "^7.22.15", - "@babel/traverse": "^7.23.5", - "@babel/types": "^7.23.5" + "@babel/traverse": "^7.23.7", + "@babel/types": "^7.23.6" }, "engines": { "node": ">=6.9.0" @@ -1271,9 +1274,9 @@ } }, "node_modules/@babel/parser": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.5.tgz", - "integrity": "sha512-hOOqoiNXrmGdFbhgCzu6GiURxUgM27Xwd/aPuu8RfHEZPBzL1Z54okAHAQjXfcQNwvrlkAmAp4SlRTZ45vlthQ==", + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.6.tgz", + "integrity": "sha512-Z2uID7YJ7oNvAI20O9X0bblw7Qqs8Q2hFy0R9tAfnfLkp5MW0UH9eUvnDSnFwKZ0AvgS1ucqR4KzvVHgnke1VQ==", "dev": true, "bin": { "parser": "bin/babel-parser.js" @@ -1315,9 +1318,9 @@ } }, "node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.23.3.tgz", - "integrity": "sha512-XaJak1qcityzrX0/IU5nKHb34VaibwP3saKqG6a/tppelgllOH13LUann4ZCIBcVOeE6H18K4Vx9QKkVww3z/w==", + "version": "7.23.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.23.7.tgz", + "integrity": "sha512-LlRT7HgaifEpQA1ZgLVOIJZZFVPWN5iReq/7/JixwBtwcoeVGDBD53ZV28rrsLYOZs1Y/EHhA8N/Z6aazHR8cw==", "dev": true, "dependencies": { "@babel/helper-environment-visitor": "^7.22.20", @@ -1593,9 +1596,9 @@ } }, "node_modules/@babel/plugin-transform-async-generator-functions": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.23.4.tgz", - "integrity": "sha512-efdkfPhHYTtn0G6n2ddrESE91fgXxjlqLsnUtPWnJs4a4mZIbUaK7ffqKIIUKXSHwcDvaCVX6GXkaJJFqtX7jw==", + "version": "7.23.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.23.7.tgz", + "integrity": "sha512-PdxEpL71bJp1byMG0va5gwQcXHxuEYC/BgI/e88mGTtohbZN28O5Yit0Plkkm/dBzCF/BxmbNcses1RH1T+urA==", "dev": true, "dependencies": { "@babel/helper-environment-visitor": "^7.22.20", @@ -1691,16 +1694,15 @@ } }, "node_modules/@babel/plugin-transform-classes": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.23.5.tgz", - "integrity": "sha512-jvOTR4nicqYC9yzOHIhXG5emiFEOpappSJAl73SDSEDcybD+Puuze8Tnpb9p9qEyYup24tq891gkaygIFvWDqg==", + "version": "7.23.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.23.8.tgz", + "integrity": "sha512-yAYslGsY1bX6Knmg46RjiCiNSwJKv2IUC8qOdYKqMMr0491SXFhcHqOdRDeCRohOOIzwN/90C6mQ9qAKgrP7dg==", "dev": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-compilation-targets": "^7.22.15", + "@babel/helper-compilation-targets": "^7.23.6", "@babel/helper-environment-visitor": "^7.22.20", "@babel/helper-function-name": "^7.23.0", - "@babel/helper-optimise-call-expression": "^7.22.5", "@babel/helper-plugin-utils": "^7.22.5", "@babel/helper-replace-supers": "^7.22.20", "@babel/helper-split-export-declaration": "^7.22.6", @@ -1824,12 +1826,13 @@ } }, "node_modules/@babel/plugin-transform-for-of": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.23.3.tgz", - "integrity": "sha512-X8jSm8X1CMwxmK878qsUGJRmbysKNbdpTv/O1/v0LuY/ZkZrng5WYiekYSdg9m09OTmDDUWeEDsTE+17WYbAZw==", + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.23.6.tgz", + "integrity": "sha512-aYH4ytZ0qSuBbpfhuofbg/e96oQ7U2w1Aw/UQmKT+1l39uEhUPoFS3fHevDc1G0OvewyDudfMKY1OulczHzWIw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -2211,16 +2214,16 @@ } }, "node_modules/@babel/plugin-transform-runtime": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.23.4.tgz", - "integrity": "sha512-ITwqpb6V4btwUG0YJR82o2QvmWrLgDnx/p2A3CTPYGaRgULkDiC0DRA2C4jlRB9uXGUEfaSS/IGHfVW+ohzYDw==", + "version": "7.23.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.23.7.tgz", + "integrity": "sha512-fa0hnfmiXc9fq/weK34MUV0drz2pOL/vfKWvN7Qw127hiUPabFCUMgAbYWcchRzMJit4o5ARsK/s+5h0249pLw==", "dev": true, "dependencies": { "@babel/helper-module-imports": "^7.22.15", "@babel/helper-plugin-utils": "^7.22.5", - "babel-plugin-polyfill-corejs2": "^0.4.6", - "babel-plugin-polyfill-corejs3": "^0.8.5", - "babel-plugin-polyfill-regenerator": "^0.5.3", + "babel-plugin-polyfill-corejs2": "^0.4.7", + "babel-plugin-polyfill-corejs3": "^0.8.7", + "babel-plugin-polyfill-regenerator": "^0.5.4", "semver": "^6.3.1" }, "engines": { @@ -2379,18 +2382,18 @@ } }, "node_modules/@babel/preset-env": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.23.5.tgz", - "integrity": "sha512-0d/uxVD6tFGWXGDSfyMD1p2otoaKmu6+GD+NfAx0tMaH+dxORnp7T9TaVQ6mKyya7iBtCIVxHjWT7MuzzM9z+A==", + "version": "7.23.7", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.23.7.tgz", + "integrity": "sha512-SY27X/GtTz/L4UryMNJ6p4fH4nsgWbz84y9FE0bQeWJP6O5BhgVCt53CotQKHCOeXJel8VyhlhujhlltKms/CA==", "dev": true, "dependencies": { "@babel/compat-data": "^7.23.5", - "@babel/helper-compilation-targets": "^7.22.15", + "@babel/helper-compilation-targets": "^7.23.6", "@babel/helper-plugin-utils": "^7.22.5", "@babel/helper-validator-option": "^7.23.5", "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.23.3", "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.23.3", - "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.23.3", + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.23.7", "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", "@babel/plugin-syntax-async-generators": "^7.8.4", "@babel/plugin-syntax-class-properties": "^7.12.13", @@ -2411,7 +2414,7 @@ "@babel/plugin-syntax-top-level-await": "^7.14.5", "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", "@babel/plugin-transform-arrow-functions": "^7.23.3", - "@babel/plugin-transform-async-generator-functions": "^7.23.4", + "@babel/plugin-transform-async-generator-functions": "^7.23.7", "@babel/plugin-transform-async-to-generator": "^7.23.3", "@babel/plugin-transform-block-scoped-functions": "^7.23.3", "@babel/plugin-transform-block-scoping": "^7.23.4", @@ -2425,7 +2428,7 @@ "@babel/plugin-transform-dynamic-import": "^7.23.4", "@babel/plugin-transform-exponentiation-operator": "^7.23.3", "@babel/plugin-transform-export-namespace-from": "^7.23.4", - "@babel/plugin-transform-for-of": "^7.23.3", + "@babel/plugin-transform-for-of": "^7.23.6", "@babel/plugin-transform-function-name": "^7.23.3", "@babel/plugin-transform-json-strings": "^7.23.4", "@babel/plugin-transform-literals": "^7.23.3", @@ -2459,9 +2462,9 @@ "@babel/plugin-transform-unicode-regex": "^7.23.3", "@babel/plugin-transform-unicode-sets-regex": "^7.23.3", "@babel/preset-modules": "0.1.6-no-external-plugins", - "babel-plugin-polyfill-corejs2": "^0.4.6", - "babel-plugin-polyfill-corejs3": "^0.8.5", - "babel-plugin-polyfill-regenerator": "^0.5.3", + "babel-plugin-polyfill-corejs2": "^0.4.7", + "babel-plugin-polyfill-corejs3": "^0.8.7", + "babel-plugin-polyfill-regenerator": "^0.5.4", "core-js-compat": "^3.31.0", "semver": "^6.3.1" }, @@ -2502,9 +2505,9 @@ "dev": true }, "node_modules/@babel/runtime": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.23.5.tgz", - "integrity": "sha512-NdUTHcPe4C99WxPub+K9l9tK5/lV4UXIoaHSYgzco9BCyjKAAwzdBI+wWtYqHt7LJdbo74ZjRPJgzVweq1sz0w==", + "version": "7.23.7", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.23.7.tgz", + "integrity": "sha512-w06OXVOFso7LcbzMiDGt+3X7Rh7Ho8MmgPoWU3rarH+8upf+wSU/grlGbWzQyr3DkdN6ZeuMFjpdwW0Q+HxobA==", "dev": true, "dependencies": { "regenerator-runtime": "^0.14.0" @@ -2528,20 +2531,20 @@ } }, "node_modules/@babel/traverse": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.5.tgz", - "integrity": "sha512-czx7Xy5a6sapWWRx61m1Ke1Ra4vczu1mCTtJam5zRTBOonfdJ+S/B6HYmGYu3fJtr8GGET3si6IhgWVBhJ/m8w==", + "version": "7.23.7", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.7.tgz", + "integrity": "sha512-tY3mM8rH9jM0YHFGyfC0/xf+SB5eKUu7HPj7/k3fpi9dAlsMc5YbQvDi0Sh2QTPXqMhyaAtzAr807TIyfQrmyg==", "dev": true, "dependencies": { "@babel/code-frame": "^7.23.5", - "@babel/generator": "^7.23.5", + "@babel/generator": "^7.23.6", "@babel/helper-environment-visitor": "^7.22.20", "@babel/helper-function-name": "^7.23.0", "@babel/helper-hoist-variables": "^7.22.5", "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/parser": "^7.23.5", - "@babel/types": "^7.23.5", - "debug": "^4.1.0", + "@babel/parser": "^7.23.6", + "@babel/types": "^7.23.6", + "debug": "^4.3.1", "globals": "^11.1.0" }, "engines": { @@ -2549,9 +2552,9 @@ } }, "node_modules/@babel/types": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.5.tgz", - "integrity": "sha512-ON5kSOJwVO6xXVRTvOI0eOnWe7VdUcIpsovGo9U/Br4Ie4UVFQTboO2cYnDhAGU6Fp+UxSiT+pMft0SMHfuq6w==", + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.6.tgz", + "integrity": "sha512-+uarb83brBzPKN38NX1MkB6vb6+mwvR6amUulqAE7ccQw1pEl+bCia9TbdG1lsnFP7lZySvUn37CHyXQdfTwzg==", "dev": true, "dependencies": { "@babel/helper-string-parser": "^7.23.4", @@ -2571,19 +2574,19 @@ } }, "node_modules/@capacitor/app": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@capacitor/app/-/app-5.0.0.tgz", - "integrity": "sha512-ORbR6PtKmoi57oUcuyoOxCfsakLiMM8KaIeG8iZUKZu1ETsbVnyMzA3kDa+MVUlbsBTQiBwe0mWBlve9lUBYkQ==", + "version": "5.0.7", + "resolved": "https://registry.npmjs.org/@capacitor/app/-/app-5.0.7.tgz", + "integrity": "sha512-oad0jwQu+vgQDukeS9UV56yG10dlxkAGGl26IQpZlTmg3dTI9qSJtvhmlLfkF0nEtoj5IsVQUPE+NLH1oZkgGQ==", "peerDependencies": { - "@capacitor/core": "next" + "@capacitor/core": "^5.0.0" } }, "node_modules/@capacitor/browser": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@capacitor/browser/-/browser-5.0.0.tgz", - "integrity": "sha512-q0MpAsgXZWqrpmt+VCkGcoHCIMmuLk/dXjb3p7XmrwN/3da2nLrJrszpfoYRtE07tS3q1Qjks5F87j/Gij9TfA==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@capacitor/browser/-/browser-5.2.0.tgz", + "integrity": "sha512-pWFrsNPOG6DlDWGl+bJqTWLvoJ2vvV27LKaSZ/A7S4td4bK3umwZmgGlp8ispjpYiurjliT25Ae8I+ywMV8X9w==", "peerDependencies": { - "@capacitor/core": "next" + "@capacitor/core": "^5.0.0" } }, "node_modules/@capacitor/cli": { @@ -2619,41 +2622,41 @@ } }, "node_modules/@capacitor/core": { - "version": "5.5.1", - "resolved": "https://registry.npmjs.org/@capacitor/core/-/core-5.5.1.tgz", - "integrity": "sha512-VG6Iv8Q7ZAbvjodxpvjcSe0jfxUwZXnvjbi93ehuJ6eYP8U926qLSXyrT/DToZq+F6v/HyGyVgn3mrE/9jW2Tg==", + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/@capacitor/core/-/core-5.6.0.tgz", + "integrity": "sha512-xJhCOUGPHw0QYDA3YH+CmL6qiV9DH4Ij3yPxSenymjrtLuXI197u9ddCZwGEwgVIkh9kGZBBKzsNkn89SZ2gdQ==", "dependencies": { "tslib": "^2.1.0" } }, "node_modules/@capacitor/ios": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@capacitor/ios/-/ios-5.0.0.tgz", - "integrity": "sha512-b1edQNe1cKiqnxoIR5WxbVjDlf3RWr2ZjaDxwEuBzwBAvvrFcweKdbw1ij45DWHKODaIymWoyAlAUN+vFOF5sw==", + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/@capacitor/ios/-/ios-5.6.0.tgz", + "integrity": "sha512-iswpOcD5us10hIF5zS4w6k/ekW0A+2pXhDV4AHOBXR4VOkOMI8QJaavgl9JvZ/NVvVNJdEN2rOKCMNh4AH08sw==", "peerDependencies": { - "@capacitor/core": "^5.0.0" + "@capacitor/core": "^5.6.0" } }, "node_modules/@capacitor/local-notifications": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@capacitor/local-notifications/-/local-notifications-5.0.0.tgz", - "integrity": "sha512-pcfj+cfDs6nBcyHaUZl7TyfA7GZUoRzvEtX2BBQ70rry2yZCk0EwlyRa14STOv/F1YkIdPqPOwvYAYJUELyFXw==", + "version": "5.0.7", + "resolved": "https://registry.npmjs.org/@capacitor/local-notifications/-/local-notifications-5.0.7.tgz", + "integrity": "sha512-Q16sAv9B55qrXRBgjsom3UAXQ9J5I9HxOToYtQ6jvM3237DphotvVSNriX2AGeXLi5nHkmNv2ZsFu17wTrRcpA==", "peerDependencies": { - "@capacitor/core": "next" + "@capacitor/core": "^5.0.0" } }, "node_modules/@capacitor/splash-screen": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@capacitor/splash-screen/-/splash-screen-5.0.0.tgz", - "integrity": "sha512-KKi//TV8UvxESqZLUpK9UZgdtg5dSJ8ck2AcZrRjJAEzZ/lwCWfstg5lYS07c+3IuTRGyQ5owZJIglWXfop8lg==", + "version": "5.0.7", + "resolved": "https://registry.npmjs.org/@capacitor/splash-screen/-/splash-screen-5.0.7.tgz", + "integrity": "sha512-2aAhhZPi7GU8DDs9dhH4OnMJ3rTscPS/TYKzm03fzhBby6ykSXY6HqKgaWdhfCR4TvLsHf0VKpWZu4ZHD0S7iQ==", "peerDependencies": { - "@capacitor/core": "next" + "@capacitor/core": "^5.0.0" } }, "node_modules/@capacitor/status-bar": { - "version": "5.0.6", - "resolved": "https://registry.npmjs.org/@capacitor/status-bar/-/status-bar-5.0.6.tgz", - "integrity": "sha512-7od8CxsBnot1XMK3IeOkproFL4hgoKoWAc3pwUvmDOkQsXoxwQm4SR9mLwQavv1XfxtHbFV9Ukd7FwMxOPSViw==", + "version": "5.0.7", + "resolved": "https://registry.npmjs.org/@capacitor/status-bar/-/status-bar-5.0.7.tgz", + "integrity": "sha512-KblB3gV2LDMEjx3fQoNBAzxb+Tr+2mv68SfFLLDCMiMUD3Eile2TAWRWd1yxy496pDFTOs2BJtup8++iuuuJ/w==", "peerDependencies": { "@capacitor/core": "^5.0.0" } @@ -2690,10 +2693,26 @@ "node": ">=12.0.0" } }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.19.11.tgz", + "integrity": "sha512-FnzU0LyE3ySQk7UntJO4+qIiQgI7KoODnZg5xzXIrFJlKd2P2gwHsHY4927xj9y5PJmJSzULiUCWmv7iWnNa7g==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=12" + } + }, "node_modules/@esbuild/android-arm": { - "version": "0.19.8", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.19.8.tgz", - "integrity": "sha512-31E2lxlGM1KEfivQl8Yf5aYU/mflz9g06H6S15ITUFQueMFtFjESRMoDSkvMo8thYvLBax+VKTPlpnx+sPicOA==", + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.19.11.tgz", + "integrity": "sha512-5OVapq0ClabvKvQ58Bws8+wkLCV+Rxg7tUVbo9xu034Nm536QTII4YzhaFriQ7rMrorfnFKUsArD2lqKbFY4vw==", "cpu": [ "arm" ], @@ -2707,9 +2726,9 @@ } }, "node_modules/@esbuild/android-arm64": { - "version": "0.19.8", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.19.8.tgz", - "integrity": "sha512-B8JbS61bEunhfx8kasogFENgQfr/dIp+ggYXwTqdbMAgGDhRa3AaPpQMuQU0rNxDLECj6FhDzk1cF9WHMVwrtA==", + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.19.11.tgz", + "integrity": "sha512-aiu7K/5JnLj//KOnOfEZ0D90obUkRzDMyqd/wNAUQ34m4YUPVhRZpnqKV9uqDGxT7cToSDnIHsGooyIczu9T+Q==", "cpu": [ "arm64" ], @@ -2723,9 +2742,9 @@ } }, "node_modules/@esbuild/android-x64": { - "version": "0.19.8", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.19.8.tgz", - "integrity": "sha512-rdqqYfRIn4jWOp+lzQttYMa2Xar3OK9Yt2fhOhzFXqg0rVWEfSclJvZq5fZslnz6ypHvVf3CT7qyf0A5pM682A==", + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.19.11.tgz", + "integrity": "sha512-eccxjlfGw43WYoY9QgB82SgGgDbibcqyDTlk3l3C0jOVHKxrjdc9CTwDUQd0vkvYg5um0OH+GpxYvp39r+IPOg==", "cpu": [ "x64" ], @@ -2739,9 +2758,9 @@ } }, "node_modules/@esbuild/darwin-arm64": { - "version": "0.19.8", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.19.8.tgz", - "integrity": "sha512-RQw9DemMbIq35Bprbboyf8SmOr4UXsRVxJ97LgB55VKKeJOOdvsIPy0nFyF2l8U+h4PtBx/1kRf0BelOYCiQcw==", + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.19.11.tgz", + "integrity": "sha512-ETp87DRWuSt9KdDVkqSoKoLFHYTrkyz2+65fj9nfXsaV3bMhTCjtQfw3y+um88vGRKRiF7erPrh/ZuIdLUIVxQ==", "cpu": [ "arm64" ], @@ -2755,9 +2774,9 @@ } }, "node_modules/@esbuild/darwin-x64": { - "version": "0.19.8", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.19.8.tgz", - "integrity": "sha512-3sur80OT9YdeZwIVgERAysAbwncom7b4bCI2XKLjMfPymTud7e/oY4y+ci1XVp5TfQp/bppn7xLw1n/oSQY3/Q==", + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.19.11.tgz", + "integrity": "sha512-fkFUiS6IUK9WYUO/+22omwetaSNl5/A8giXvQlcinLIjVkxwTLSktbF5f/kJMftM2MJp9+fXqZ5ezS7+SALp4g==", "cpu": [ "x64" ], @@ -2771,9 +2790,9 @@ } }, "node_modules/@esbuild/freebsd-arm64": { - "version": "0.19.8", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.8.tgz", - "integrity": "sha512-WAnPJSDattvS/XtPCTj1tPoTxERjcTpH6HsMr6ujTT+X6rylVe8ggxk8pVxzf5U1wh5sPODpawNicF5ta/9Tmw==", + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.11.tgz", + "integrity": "sha512-lhoSp5K6bxKRNdXUtHoNc5HhbXVCS8V0iZmDvyWvYq9S5WSfTIHU2UGjcGt7UeS6iEYp9eeymIl5mJBn0yiuxA==", "cpu": [ "arm64" ], @@ -2787,9 +2806,9 @@ } }, "node_modules/@esbuild/freebsd-x64": { - "version": "0.19.8", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.19.8.tgz", - "integrity": "sha512-ICvZyOplIjmmhjd6mxi+zxSdpPTKFfyPPQMQTK/w+8eNK6WV01AjIztJALDtwNNfFhfZLux0tZLC+U9nSyA5Zg==", + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.19.11.tgz", + "integrity": "sha512-JkUqn44AffGXitVI6/AbQdoYAq0TEullFdqcMY/PCUZ36xJ9ZJRtQabzMA+Vi7r78+25ZIBosLTOKnUXBSi1Kw==", "cpu": [ "x64" ], @@ -2803,9 +2822,9 @@ } }, "node_modules/@esbuild/linux-arm": { - "version": "0.19.8", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.19.8.tgz", - "integrity": "sha512-H4vmI5PYqSvosPaTJuEppU9oz1dq2A7Mr2vyg5TF9Ga+3+MGgBdGzcyBP7qK9MrwFQZlvNyJrvz6GuCaj3OukQ==", + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.19.11.tgz", + "integrity": "sha512-3CRkr9+vCV2XJbjwgzjPtO8T0SZUmRZla+UL1jw+XqHZPkPgZiyWvbDvl9rqAN8Zl7qJF0O/9ycMtjU67HN9/Q==", "cpu": [ "arm" ], @@ -2819,9 +2838,9 @@ } }, "node_modules/@esbuild/linux-arm64": { - "version": "0.19.8", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.19.8.tgz", - "integrity": "sha512-z1zMZivxDLHWnyGOctT9JP70h0beY54xDDDJt4VpTX+iwA77IFsE1vCXWmprajJGa+ZYSqkSbRQ4eyLCpCmiCQ==", + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.19.11.tgz", + "integrity": "sha512-LneLg3ypEeveBSMuoa0kwMpCGmpu8XQUh+mL8XXwoYZ6Be2qBnVtcDI5azSvh7vioMDhoJFZzp9GWp9IWpYoUg==", "cpu": [ "arm64" ], @@ -2835,9 +2854,9 @@ } }, "node_modules/@esbuild/linux-ia32": { - "version": "0.19.8", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.19.8.tgz", - "integrity": "sha512-1a8suQiFJmZz1khm/rDglOc8lavtzEMRo0v6WhPgxkrjcU0LkHj+TwBrALwoz/OtMExvsqbbMI0ChyelKabSvQ==", + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.19.11.tgz", + "integrity": "sha512-caHy++CsD8Bgq2V5CodbJjFPEiDPq8JJmBdeyZ8GWVQMjRD0sU548nNdwPNvKjVpamYYVL40AORekgfIubwHoA==", "cpu": [ "ia32" ], @@ -2851,9 +2870,9 @@ } }, "node_modules/@esbuild/linux-loong64": { - "version": "0.19.8", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.19.8.tgz", - "integrity": "sha512-fHZWS2JJxnXt1uYJsDv9+b60WCc2RlvVAy1F76qOLtXRO+H4mjt3Tr6MJ5l7Q78X8KgCFudnTuiQRBhULUyBKQ==", + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.19.11.tgz", + "integrity": "sha512-ppZSSLVpPrwHccvC6nQVZaSHlFsvCQyjnvirnVjbKSHuE5N24Yl8F3UwYUUR1UEPaFObGD2tSvVKbvR+uT1Nrg==", "cpu": [ "loong64" ], @@ -2867,9 +2886,9 @@ } }, "node_modules/@esbuild/linux-mips64el": { - "version": "0.19.8", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.19.8.tgz", - "integrity": "sha512-Wy/z0EL5qZYLX66dVnEg9riiwls5IYnziwuju2oUiuxVc+/edvqXa04qNtbrs0Ukatg5HEzqT94Zs7J207dN5Q==", + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.19.11.tgz", + "integrity": "sha512-B5x9j0OgjG+v1dF2DkH34lr+7Gmv0kzX6/V0afF41FkPMMqaQ77pH7CrhWeR22aEeHKaeZVtZ6yFwlxOKPVFyg==", "cpu": [ "mips64el" ], @@ -2883,9 +2902,9 @@ } }, "node_modules/@esbuild/linux-ppc64": { - "version": "0.19.8", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.19.8.tgz", - "integrity": "sha512-ETaW6245wK23YIEufhMQ3HSeHO7NgsLx8gygBVldRHKhOlD1oNeNy/P67mIh1zPn2Hr2HLieQrt6tWrVwuqrxg==", + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.19.11.tgz", + "integrity": "sha512-MHrZYLeCG8vXblMetWyttkdVRjQlQUb/oMgBNurVEnhj4YWOr4G5lmBfZjHYQHHN0g6yDmCAQRR8MUHldvvRDA==", "cpu": [ "ppc64" ], @@ -2899,9 +2918,9 @@ } }, "node_modules/@esbuild/linux-riscv64": { - "version": "0.19.8", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.19.8.tgz", - "integrity": "sha512-T2DRQk55SgoleTP+DtPlMrxi/5r9AeFgkhkZ/B0ap99zmxtxdOixOMI570VjdRCs9pE4Wdkz7JYrsPvsl7eESg==", + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.19.11.tgz", + "integrity": "sha512-f3DY++t94uVg141dozDu4CCUkYW+09rWtaWfnb3bqe4w5NqmZd6nPVBm+qbz7WaHZCoqXqHz5p6CM6qv3qnSSQ==", "cpu": [ "riscv64" ], @@ -2915,9 +2934,9 @@ } }, "node_modules/@esbuild/linux-s390x": { - "version": "0.19.8", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.19.8.tgz", - "integrity": "sha512-NPxbdmmo3Bk7mbNeHmcCd7R7fptJaczPYBaELk6NcXxy7HLNyWwCyDJ/Xx+/YcNH7Im5dHdx9gZ5xIwyliQCbg==", + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.19.11.tgz", + "integrity": "sha512-A5xdUoyWJHMMlcSMcPGVLzYzpcY8QP1RtYzX5/bS4dvjBGVxdhuiYyFwp7z74ocV7WDc0n1harxmpq2ePOjI0Q==", "cpu": [ "s390x" ], @@ -2931,9 +2950,9 @@ } }, "node_modules/@esbuild/linux-x64": { - "version": "0.19.8", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.19.8.tgz", - "integrity": "sha512-lytMAVOM3b1gPypL2TRmZ5rnXl7+6IIk8uB3eLsV1JwcizuolblXRrc5ShPrO9ls/b+RTp+E6gbsuLWHWi2zGg==", + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.19.11.tgz", + "integrity": "sha512-grbyMlVCvJSfxFQUndw5mCtWs5LO1gUlwP4CDi4iJBbVpZcqLVT29FxgGuBJGSzyOxotFG4LoO5X+M1350zmPA==", "cpu": [ "x64" ], @@ -2947,9 +2966,9 @@ } }, "node_modules/@esbuild/netbsd-x64": { - "version": "0.19.8", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.19.8.tgz", - "integrity": "sha512-hvWVo2VsXz/8NVt1UhLzxwAfo5sioj92uo0bCfLibB0xlOmimU/DeAEsQILlBQvkhrGjamP0/el5HU76HAitGw==", + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.19.11.tgz", + "integrity": "sha512-13jvrQZJc3P230OhU8xgwUnDeuC/9egsjTkXN49b3GcS5BKvJqZn86aGM8W9pd14Kd+u7HuFBMVtrNGhh6fHEQ==", "cpu": [ "x64" ], @@ -2963,9 +2982,9 @@ } }, "node_modules/@esbuild/openbsd-x64": { - "version": "0.19.8", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.19.8.tgz", - "integrity": "sha512-/7Y7u77rdvmGTxR83PgaSvSBJCC2L3Kb1M/+dmSIvRvQPXXCuC97QAwMugBNG0yGcbEGfFBH7ojPzAOxfGNkwQ==", + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.19.11.tgz", + "integrity": "sha512-ysyOGZuTp6SNKPE11INDUeFVVQFrhcNDVUgSQVDzqsqX38DjhPEPATpid04LCoUr2WXhQTEZ8ct/EgJCUDpyNw==", "cpu": [ "x64" ], @@ -2979,9 +2998,9 @@ } }, "node_modules/@esbuild/sunos-x64": { - "version": "0.19.8", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.19.8.tgz", - "integrity": "sha512-9Lc4s7Oi98GqFA4HzA/W2JHIYfnXbUYgekUP/Sm4BG9sfLjyv6GKKHKKVs83SMicBF2JwAX6A1PuOLMqpD001w==", + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.19.11.tgz", + "integrity": "sha512-Hf+Sad9nVwvtxy4DXCZQqLpgmRTQqyFyhT3bZ4F2XlJCjxGmRFF0Shwn9rzhOYRB61w9VMXUkxlBy56dk9JJiQ==", "cpu": [ "x64" ], @@ -2995,9 +3014,9 @@ } }, "node_modules/@esbuild/win32-arm64": { - "version": "0.19.8", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.19.8.tgz", - "integrity": "sha512-rq6WzBGjSzihI9deW3fC2Gqiak68+b7qo5/3kmB6Gvbh/NYPA0sJhrnp7wgV4bNwjqM+R2AApXGxMO7ZoGhIJg==", + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.19.11.tgz", + "integrity": "sha512-0P58Sbi0LctOMOQbpEOvOL44Ne0sqbS0XWHMvvrg6NE5jQ1xguCSSw9jQeUk2lfrXYsKDdOe6K+oZiwKPilYPQ==", "cpu": [ "arm64" ], @@ -3011,9 +3030,9 @@ } }, "node_modules/@esbuild/win32-ia32": { - "version": "0.19.8", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.19.8.tgz", - "integrity": "sha512-AIAbverbg5jMvJznYiGhrd3sumfwWs8572mIJL5NQjJa06P8KfCPWZQ0NwZbPQnbQi9OWSZhFVSUWjjIrn4hSw==", + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.19.11.tgz", + "integrity": "sha512-6YOrWS+sDJDmshdBIQU+Uoyh7pQKrdykdefC1avn76ss5c+RN6gut3LZA4E2cH5xUEp5/cA0+YxRaVtRAb0xBg==", "cpu": [ "ia32" ], @@ -3027,9 +3046,9 @@ } }, "node_modules/@esbuild/win32-x64": { - "version": "0.19.8", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.19.8.tgz", - "integrity": "sha512-bfZ0cQ1uZs2PqpulNL5j/3w+GDhP36k1K5c38QdQg+Swy51jFZWWeIkteNsufkQxp986wnqRRsb/bHbY1WQ7TA==", + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.19.11.tgz", + "integrity": "sha512-vfkhltrjCAb603XaFhqhAF4LGDi2M4OrCRrFusyQ+iTLQ/o60QQXxc9cZC/FFpihBI9N1Grn6SMKVJ4KP7Fuiw==", "cpu": [ "x64" ], @@ -3208,11 +3227,11 @@ "dev": true }, "node_modules/@ionic/angular": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/@ionic/angular/-/angular-7.6.3.tgz", - "integrity": "sha512-/fPla1wk1sNu7wDIlSZYdpluTMTTvErNO5R4ZHaSmkN5ohgBnegtEQlrAAfM2J1i2HXBQ9KiTF5mykXSZCW9kg==", + "version": "7.6.5-dev.11704916749.1e64a3a7", + "resolved": "https://registry.npmjs.org/@ionic/angular/-/angular-7.6.5-dev.11704916749.1e64a3a7.tgz", + "integrity": "sha512-A7bnKfSvPGrVHDpkgzhFp13CpeIpqMlzAcS1j6jsSkhaOw3j12sm1qsp0wf6ZiiH+CJhI8tR3icMFVTHvtyZyw==", "dependencies": { - "@ionic/core": "7.6.3", + "@ionic/core": "7.6.5-dev.11704916749.1e64a3a7", "ionicons": "^7.0.0", "jsonc-parser": "^3.0.0", "tslib": "^2.3.0" @@ -3334,11 +3353,11 @@ } }, "node_modules/@ionic/core": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/@ionic/core/-/core-7.6.3.tgz", - "integrity": "sha512-KT8RXcbLRoCvj2wQNZJ0FAM+PlcVZZT0N3BPYPAiyTLA/rmMnlPGxNMMqGEJMynL8oPx/2nh+bLS2Yv/kBPnug==", + "version": "7.6.5-dev.11704916749.1e64a3a7", + "resolved": "https://registry.npmjs.org/@ionic/core/-/core-7.6.5-dev.11704916749.1e64a3a7.tgz", + "integrity": "sha512-H53YAG+7WkK0/n7Kbqd6kQ85GLOprKDrgndg4g4HMCaThOG0wswFgGlz1autWbfgDulsK7HFDRwfnnajA6TZLA==", "dependencies": { - "@stencil/core": "^4.8.2", + "@stencil/core": "^4.9.1", "ionicons": "^7.2.2", "tslib": "^2.1.0" } @@ -3670,9 +3689,9 @@ } }, "node_modules/@ngtools/webpack": { - "version": "17.1.0-next.1", - "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-17.1.0-next.1.tgz", - "integrity": "sha512-cH13aiC7tQaNTpY0oawMk8oQGNanZ89JlC6LMEQymIozifmXAGY0YPqh/U839hw0nADvxTjtVoyuZ4DDrTDVKg==", + "version": "17.1.0", + "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-17.1.0.tgz", + "integrity": "sha512-FAp5Vh4Y4DFDnrxEitggEkeDwHCml7m6hZUgohvA6n6mwrMT0ZZXnk3MIrKRnT6A9cr1wcnxMW+jIXx/cJZGlw==", "dev": true, "engines": { "node": "^18.13.0 || >=20.9.0", @@ -3680,7 +3699,7 @@ "yarn": ">= 1.13.0" }, "peerDependencies": { - "@angular/compiler-cli": "^17.0.0 || ^17.1.0-next.0", + "@angular/compiler-cli": "^17.0.0", "typescript": ">=5.2 <5.4", "webpack": "^5.54.0" } @@ -4143,11 +4162,40 @@ "node": ">= 10" } }, + "node_modules/@pixi/accessibility": { + "version": "7.3.3", + "resolved": "https://registry.npmjs.org/@pixi/accessibility/-/accessibility-7.3.3.tgz", + "integrity": "sha512-cHiIEP54RNqvPKmi45HvvnTbiWU+/lzdTY0zK7OXx3TmcEQRn2A7GZ1I+uxx476NeXGJtGSvv3copyxFjPB6Ew==", + "peerDependencies": { + "@pixi/core": "7.3.3", + "@pixi/display": "7.3.3", + "@pixi/events": "7.3.3" + } + }, + "node_modules/@pixi/app": { + "version": "7.3.3", + "resolved": "https://registry.npmjs.org/@pixi/app/-/app-7.3.3.tgz", + "integrity": "sha512-MS5r/yU0CrWMPXXrgKAzgC2KC35Och8fT9z6J1XUCs7yHhdO8768rnSePJuzhj9Yaclv7PUpNQzh8rG9o/MzkQ==", + "peerDependencies": { + "@pixi/core": "7.3.3", + "@pixi/display": "7.3.3" + } + }, + "node_modules/@pixi/assets": { + "version": "7.3.3", + "resolved": "https://registry.npmjs.org/@pixi/assets/-/assets-7.3.3.tgz", + "integrity": "sha512-KcLXVehdJ2kc2bSnTfatLPLL6sLD7dwU+EZ5bWQ/PZDSsfML3kLFvq84VXd4k8LKNX4RCvfy4yeeIUW1o5tnMg==", + "dependencies": { + "@types/css-font-loading-module": "^0.0.12" + }, + "peerDependencies": { + "@pixi/core": "7.3.3" + } + }, "node_modules/@pixi/color": { - "version": "7.3.2", - "resolved": "https://registry.npmjs.org/@pixi/color/-/color-7.3.2.tgz", - "integrity": "sha512-jur5PvdOtUBEUTjmPudW5qdQq6yYGlVGsi3HyhasJw14bN+GKJwiCKgIsyrsiNL5HBUXmje4ICwQohf6BqKqxA==", - "peer": true, + "version": "7.3.3", + "resolved": "https://registry.npmjs.org/@pixi/color/-/color-7.3.3.tgz", + "integrity": "sha512-IiiFhNIqXt7yULe0Wkq5Hn38ymDoEen/6EvV2y2AQIOu6TyuET5PGswAdMfG7ZjfwBaCudK6yQEUjWaXbgRUmw==", "dependencies": { "@pixi/colord": "^2.9.6" } @@ -4157,26 +4205,33 @@ "resolved": "https://registry.npmjs.org/@pixi/colord/-/colord-2.9.6.tgz", "integrity": "sha512-nezytU2pw587fQstUu1AsJZDVEynjskwOL+kibwcdxsMBFqPsFFNA7xl0ii/gXuDi6M0xj3mfRJj8pBSc2jCfA==" }, + "node_modules/@pixi/compressed-textures": { + "version": "7.3.3", + "resolved": "https://registry.npmjs.org/@pixi/compressed-textures/-/compressed-textures-7.3.3.tgz", + "integrity": "sha512-4h1NKePF5blN7qux29yEnKiGdk4vZif59XtLviW7Y3r9MKgKSoizDl0RqU4SKo4eC1P0jpt1qOjiG4TE+AjXGQ==", + "peerDependencies": { + "@pixi/assets": "7.3.3", + "@pixi/core": "7.3.3" + } + }, "node_modules/@pixi/constants": { - "version": "7.3.2", - "resolved": "https://registry.npmjs.org/@pixi/constants/-/constants-7.3.2.tgz", - "integrity": "sha512-Q8W3ncsFxmfgC5EtokpG92qJZabd+Dl+pbQAdHwiPY3v+8UNq77u4VN2qtl1Z04864hCcg7AStIYEDrzqTLF6Q==", - "peer": true + "version": "7.3.3", + "resolved": "https://registry.npmjs.org/@pixi/constants/-/constants-7.3.3.tgz", + "integrity": "sha512-ww1JdekmKBUqHyPq8A5L+86FkzpS4KidlBm9wkX1fcd+6QQzq/vbx1JOz6m3CmH5LnlmDZ+zysLezvpZlBcwwA==" }, "node_modules/@pixi/core": { - "version": "7.3.2", - "resolved": "https://registry.npmjs.org/@pixi/core/-/core-7.3.2.tgz", - "integrity": "sha512-Pta3ee8MtJ3yKxGXzglBWgwbEOKMB6Eth+FpLTjL0rgxiqTB550YX6jsNEQQAzcGjCBlO3rC/IF57UZ2go/X6w==", - "peer": true, - "dependencies": { - "@pixi/color": "7.3.2", - "@pixi/constants": "7.3.2", - "@pixi/extensions": "7.3.2", - "@pixi/math": "7.3.2", - "@pixi/runner": "7.3.2", - "@pixi/settings": "7.3.2", - "@pixi/ticker": "7.3.2", - "@pixi/utils": "7.3.2", + "version": "7.3.3", + "resolved": "https://registry.npmjs.org/@pixi/core/-/core-7.3.3.tgz", + "integrity": "sha512-064tuK6NoGIl/2Wf4EUlaLLlnRMZuDdLqnISsj2/A70towg2QUWgHhwZsCB4NvAssidWu/sIT+vk5IKDmh1LKA==", + "dependencies": { + "@pixi/color": "7.3.3", + "@pixi/constants": "7.3.3", + "@pixi/extensions": "7.3.3", + "@pixi/math": "7.3.3", + "@pixi/runner": "7.3.3", + "@pixi/settings": "7.3.3", + "@pixi/ticker": "7.3.3", + "@pixi/utils": "7.3.3", "@types/offscreencanvas": "^2019.6.4" }, "funding": { @@ -4184,11 +4239,35 @@ "url": "https://opencollective.com/pixijs" } }, + "node_modules/@pixi/display": { + "version": "7.3.3", + "resolved": "https://registry.npmjs.org/@pixi/display/-/display-7.3.3.tgz", + "integrity": "sha512-iULZ2E6Z4vhI0FypXpUbtA+CODnj/CuTt2pi9gsw00ILI12eEx76cAiazvhxnCNqcfmj1RRK2P6s9Vzr5WmEIg==", + "peerDependencies": { + "@pixi/core": "7.3.3" + } + }, + "node_modules/@pixi/events": { + "version": "7.3.3", + "resolved": "https://registry.npmjs.org/@pixi/events/-/events-7.3.3.tgz", + "integrity": "sha512-1oDfdFtKsy0Z9ew09MrSYGIIeGnBXr/c7866A32Od3KXql0dhd7UpFFpaFKLCXydDHRgFkjOP7t0/Pp1luTvfg==", + "peerDependencies": { + "@pixi/core": "7.3.3", + "@pixi/display": "7.3.3" + } + }, "node_modules/@pixi/extensions": { - "version": "7.3.2", - "resolved": "https://registry.npmjs.org/@pixi/extensions/-/extensions-7.3.2.tgz", - "integrity": "sha512-Qw84ADfvmVu4Mwj+zTik/IEEK9lWS5n4trbrpQCcEZ+Mb8oRAXWvKz199mi1s7+LaZXDqeCY1yr2PHQaFf1KBA==", - "peer": true + "version": "7.3.3", + "resolved": "https://registry.npmjs.org/@pixi/extensions/-/extensions-7.3.3.tgz", + "integrity": "sha512-Of44Wde0ZHYCuMoDLFl/8SOSPV2NiDBUB6QKBvYvNdhVslbO3pxrn9oQH9Fmsd8iGcGJ/YtyI5H2T/ky4Bo6AQ==" + }, + "node_modules/@pixi/extract": { + "version": "7.3.3", + "resolved": "https://registry.npmjs.org/@pixi/extract/-/extract-7.3.3.tgz", + "integrity": "sha512-quD61mNtgq3w2USIPUBOuxD9kVWIPoh8offqJugT4ZZS2XlSnh2FvLjCEC66jVmMM0tmk6HGAfc5xRFNlyw8PQ==", + "peerDependencies": { + "@pixi/core": "7.3.3" + } }, "node_modules/@pixi/filter-adjustment": { "version": "5.1.1", @@ -4198,6 +4277,46 @@ "@pixi/core": "^7.0.0-X" } }, + "node_modules/@pixi/filter-alpha": { + "version": "7.3.3", + "resolved": "https://registry.npmjs.org/@pixi/filter-alpha/-/filter-alpha-7.3.3.tgz", + "integrity": "sha512-StLLxEkCyghK3dhzLZD9jMu4lZ/ir4Bah2XXXWGhwE+XCO+//rnXreZ8v74R52WbaLUNDHzwlbq7/+BABwMu5w==", + "peerDependencies": { + "@pixi/core": "7.3.3" + } + }, + "node_modules/@pixi/filter-blur": { + "version": "7.3.3", + "resolved": "https://registry.npmjs.org/@pixi/filter-blur/-/filter-blur-7.3.3.tgz", + "integrity": "sha512-AZzMbcFoL+uHxiVM2nQrQM0MQdLdd5mw7Fd4F60ROB96tmMK/M5W/FTqgdqXUQYld6wCFZKtJMulonVaPKLXDA==", + "peerDependencies": { + "@pixi/core": "7.3.3" + } + }, + "node_modules/@pixi/filter-color-matrix": { + "version": "7.3.3", + "resolved": "https://registry.npmjs.org/@pixi/filter-color-matrix/-/filter-color-matrix-7.3.3.tgz", + "integrity": "sha512-Ot9lQ24lff4DPok0qy+c3IekfEuGf0Y1mx/dB3iLceys2hJHF5wK8rrhKrA1vc5IgrirbZpmjK8it9cVFzEW2g==", + "peerDependencies": { + "@pixi/core": "7.3.3" + } + }, + "node_modules/@pixi/filter-displacement": { + "version": "7.3.3", + "resolved": "https://registry.npmjs.org/@pixi/filter-displacement/-/filter-displacement-7.3.3.tgz", + "integrity": "sha512-fBnZTUmt6wwazdk/ZDW3HJEkf9s5b8uDuOwHvUAPWTJ6oYqwAjFXnrTlhEwB/Fp+0v6hUVVlHWEYk07HVgjEIg==", + "peerDependencies": { + "@pixi/core": "7.3.3" + } + }, + "node_modules/@pixi/filter-fxaa": { + "version": "7.3.3", + "resolved": "https://registry.npmjs.org/@pixi/filter-fxaa/-/filter-fxaa-7.3.3.tgz", + "integrity": "sha512-xq5xcpu68axMrGsVOcpxqebLAa+B4yBSLQlI2rsn7s8YtWY+pC20lsaNnKDlrv9hwJ1Ah7BtBZy0EVVaeFNYqA==", + "peerDependencies": { + "@pixi/core": "7.3.3" + } + }, "node_modules/@pixi/filter-kawase-blur": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/@pixi/filter-kawase-blur/-/filter-kawase-blur-5.1.1.tgz", @@ -4206,6 +4325,14 @@ "@pixi/core": "^7.0.0-X" } }, + "node_modules/@pixi/filter-noise": { + "version": "7.3.3", + "resolved": "https://registry.npmjs.org/@pixi/filter-noise/-/filter-noise-7.3.3.tgz", + "integrity": "sha512-Hwwk1xLvA+0wTqJtKTnIGzyZmLubm5ylgqsMRHQqujDtVSIqE2SY1iVUcGA5vv31C7rFFkxGT4yhtfnYBNCvKQ==", + "peerDependencies": { + "@pixi/core": "7.3.3" + } + }, "node_modules/@pixi/filter-twist": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/@pixi/filter-twist/-/filter-twist-5.1.1.tgz", @@ -4214,49 +4341,189 @@ "@pixi/core": "^7.0.0-X" } }, + "node_modules/@pixi/graphics": { + "version": "7.3.3", + "resolved": "https://registry.npmjs.org/@pixi/graphics/-/graphics-7.3.3.tgz", + "integrity": "sha512-czX/SEQTSCI3kkH5DFAcchPaPYOAF7cz1P5K2hVvClE/bbbIWN0H2sBIF6pIY1ENkZ0aguQs36yDeXUDWXyoiQ==", + "peerDependencies": { + "@pixi/core": "7.3.3", + "@pixi/display": "7.3.3", + "@pixi/sprite": "7.3.3" + } + }, "node_modules/@pixi/math": { - "version": "7.3.2", - "resolved": "https://registry.npmjs.org/@pixi/math/-/math-7.3.2.tgz", - "integrity": "sha512-dutoZ0IVJ5ME7UtYNo2szu4D7qsgtJB7e3ylujBVu7BOP2e710BVtFwFSFV768N14h9H5roGnuzVoDiJac2u+w==", - "peer": true + "version": "7.3.3", + "resolved": "https://registry.npmjs.org/@pixi/math/-/math-7.3.3.tgz", + "integrity": "sha512-kaHN6iusINPS0wIbrhP82za+B2qNDWHPHip/QtmpQTp81ibOIfHlDMOlsnE6rSdelTFNhrNWoTWU8IvXUbvy8g==" + }, + "node_modules/@pixi/mesh": { + "version": "7.3.3", + "resolved": "https://registry.npmjs.org/@pixi/mesh/-/mesh-7.3.3.tgz", + "integrity": "sha512-8G3FO44wLDimNlCqXBKF+zQ3nBqJ4kMBbIjGxRaRkJmahcMYkY2zJpYsYh1YqKQztL9UmcP5V170VEIcPsmaJw==", + "peerDependencies": { + "@pixi/core": "7.3.3", + "@pixi/display": "7.3.3" + } + }, + "node_modules/@pixi/mesh-extras": { + "version": "7.3.3", + "resolved": "https://registry.npmjs.org/@pixi/mesh-extras/-/mesh-extras-7.3.3.tgz", + "integrity": "sha512-2TW1n97PpSZIZomfoEcKezGeGLPyd82ng2u8SXQoy9keCmB2yK361/RO88jvWbY4qpnJn/89LiLyYEBiJtSmWg==", + "peerDependencies": { + "@pixi/core": "7.3.3", + "@pixi/mesh": "7.3.3" + } + }, + "node_modules/@pixi/mixin-cache-as-bitmap": { + "version": "7.3.3", + "resolved": "https://registry.npmjs.org/@pixi/mixin-cache-as-bitmap/-/mixin-cache-as-bitmap-7.3.3.tgz", + "integrity": "sha512-Vv/H24CADY5w2DZaTYhXsfr8wAyKsg6gYn0DLgWDnAI3PWkRcB0fVDfowlHAEzltfxyH4tp9LVc2jtbEIKfSlQ==", + "peerDependencies": { + "@pixi/core": "7.3.3", + "@pixi/display": "7.3.3", + "@pixi/sprite": "7.3.3" + } + }, + "node_modules/@pixi/mixin-get-child-by-name": { + "version": "7.3.3", + "resolved": "https://registry.npmjs.org/@pixi/mixin-get-child-by-name/-/mixin-get-child-by-name-7.3.3.tgz", + "integrity": "sha512-75vlViVaynPyIYQIaoU08k1iP+8s9ct2YEnW91vyiHGxxE7BBimiYomWkAUYXtSnaSFoDkNPOh7iI91Icmkf+w==", + "peerDependencies": { + "@pixi/display": "7.3.3" + } + }, + "node_modules/@pixi/mixin-get-global-position": { + "version": "7.3.3", + "resolved": "https://registry.npmjs.org/@pixi/mixin-get-global-position/-/mixin-get-global-position-7.3.3.tgz", + "integrity": "sha512-ZEScRlx/KSr0z40+xqF9jl9N8j0aFZCNwSluoMLuFecvn4kpaCQx8i4F8j+GkkdrnCfanSYE9ySADlUCsKmzHA==", + "peerDependencies": { + "@pixi/core": "7.3.3", + "@pixi/display": "7.3.3" + } + }, + "node_modules/@pixi/particle-container": { + "version": "7.3.3", + "resolved": "https://registry.npmjs.org/@pixi/particle-container/-/particle-container-7.3.3.tgz", + "integrity": "sha512-OxigacwSbPjVogahmBYUiYMIH+NhNa+jvGAk5OYEF431gcVmjtravPbk7mmFdGKmOMICztSyVX8kOyhXxCv63A==", + "peerDependencies": { + "@pixi/core": "7.3.3", + "@pixi/display": "7.3.3", + "@pixi/sprite": "7.3.3" + } + }, + "node_modules/@pixi/prepare": { + "version": "7.3.3", + "resolved": "https://registry.npmjs.org/@pixi/prepare/-/prepare-7.3.3.tgz", + "integrity": "sha512-2SdTyHJSDZeaEMuxXqOX01FUDhIjfWUmVCufLXxzjd8gZ52RWBpohl2gDRszPJMyPox142xzUiCnb4RuNXGHDw==", + "peerDependencies": { + "@pixi/core": "7.3.3", + "@pixi/display": "7.3.3", + "@pixi/graphics": "7.3.3", + "@pixi/text": "7.3.3" + } }, "node_modules/@pixi/runner": { - "version": "7.3.2", - "resolved": "https://registry.npmjs.org/@pixi/runner/-/runner-7.3.2.tgz", - "integrity": "sha512-maKotoKJCQiQGBJwfM+iYdQKjrPN/Tn9+72F4WIf706zp/5vKoxW688Rsktg5BX4Mcn7ZkZvcJYTxj2Mv87lFA==", - "peer": true + "version": "7.3.3", + "resolved": "https://registry.npmjs.org/@pixi/runner/-/runner-7.3.3.tgz", + "integrity": "sha512-LUObHyxM3tK504ChbioYySZhFhyNs779uA71fuWSFV04Ry0WNlbqVvwTbKGkyR6er6blfxdqk7d51WmuQtfLCg==" }, "node_modules/@pixi/settings": { - "version": "7.3.2", - "resolved": "https://registry.npmjs.org/@pixi/settings/-/settings-7.3.2.tgz", - "integrity": "sha512-vtxzuARDTbFe0fRYSqB53B+mPpX7v+QjjnCUmVMVvZiWr3QcngMWVml6c6dQDln7IakWoKZRrNG4FpggvDgLVg==", - "peer": true, + "version": "7.3.3", + "resolved": "https://registry.npmjs.org/@pixi/settings/-/settings-7.3.3.tgz", + "integrity": "sha512-a1OePduDPOfnrCm1U1RL7JhuEAncA5/jNwF51urclXU6HNTHiJT41/S6KELPoV8NbLyJCKtnKwzbbPkzKwc0Yg==", "dependencies": { - "@pixi/constants": "7.3.2", - "@types/css-font-loading-module": "^0.0.7", + "@pixi/constants": "7.3.3", + "@types/css-font-loading-module": "^0.0.12", "ismobilejs": "^1.1.0" } }, + "node_modules/@pixi/sprite": { + "version": "7.3.3", + "resolved": "https://registry.npmjs.org/@pixi/sprite/-/sprite-7.3.3.tgz", + "integrity": "sha512-P/RxnvNV0PiuyaT9HA8F1aX9krp1BgjllBQcn6KHVxyAP8tJE0TD9pfHOU1+xRuoX37swXRQiDFTF6YvWzozUQ==", + "peerDependencies": { + "@pixi/core": "7.3.3", + "@pixi/display": "7.3.3" + } + }, + "node_modules/@pixi/sprite-animated": { + "version": "7.3.3", + "resolved": "https://registry.npmjs.org/@pixi/sprite-animated/-/sprite-animated-7.3.3.tgz", + "integrity": "sha512-BYvehHk3PlNln9tRfZ/zGp2MzVwRjggFe+s4NCQd1EU/NPQewqJGCAiQFB4Gc3hFK2Y8wkW7SpGAzuk/E2WTxg==", + "peerDependencies": { + "@pixi/core": "7.3.3", + "@pixi/sprite": "7.3.3" + } + }, + "node_modules/@pixi/sprite-tiling": { + "version": "7.3.3", + "resolved": "https://registry.npmjs.org/@pixi/sprite-tiling/-/sprite-tiling-7.3.3.tgz", + "integrity": "sha512-T4ms0TcfKq7JNRaUBaQyZsaxWziPh2EY10vFQEG17J3uyCrjQmN4dDS9AMoaltL1K3vh+CTSUnWO8S8mE1dn4Q==", + "peerDependencies": { + "@pixi/core": "7.3.3", + "@pixi/display": "7.3.3", + "@pixi/sprite": "7.3.3" + } + }, + "node_modules/@pixi/spritesheet": { + "version": "7.3.3", + "resolved": "https://registry.npmjs.org/@pixi/spritesheet/-/spritesheet-7.3.3.tgz", + "integrity": "sha512-aAebizGNiKijWmJ39bnAb8FbuXbxRINuWZ2xt7ANzJQxhbo7dX+qlF4pz91yj3gHQaulzJM2oKz4a5q6cHa7dw==", + "peerDependencies": { + "@pixi/assets": "7.3.3", + "@pixi/core": "7.3.3" + } + }, + "node_modules/@pixi/text": { + "version": "7.3.3", + "resolved": "https://registry.npmjs.org/@pixi/text/-/text-7.3.3.tgz", + "integrity": "sha512-s9BLmiURYeJppPYB040jrGbtbsWM9PcXSRtr40xrbR0a+HPlxDEWCaHka9DiUFr/lIuOpA0y/YjmZskq5o5R7g==", + "peerDependencies": { + "@pixi/core": "7.3.3", + "@pixi/sprite": "7.3.3" + } + }, + "node_modules/@pixi/text-bitmap": { + "version": "7.3.3", + "resolved": "https://registry.npmjs.org/@pixi/text-bitmap/-/text-bitmap-7.3.3.tgz", + "integrity": "sha512-2IOBoSHtb2e1aoxB/pfJPFW34XeY8HpDtGJKn3F9IUYpBo6nnnZ6DuJNZyFG2r/hiytjVvulqI66CzOH/eJJ4A==", + "peerDependencies": { + "@pixi/assets": "7.3.3", + "@pixi/core": "7.3.3", + "@pixi/display": "7.3.3", + "@pixi/mesh": "7.3.3", + "@pixi/text": "7.3.3" + } + }, + "node_modules/@pixi/text-html": { + "version": "7.3.3", + "resolved": "https://registry.npmjs.org/@pixi/text-html/-/text-html-7.3.3.tgz", + "integrity": "sha512-z8vsgsqVJuFEVX07wh0IYAwQ5DBiel8Lhxo2Ly8594O0mIdQ1IPvtAPv+WRyG35WT0i26J7GL2BZxURouDP2WA==", + "peerDependencies": { + "@pixi/core": "7.3.3", + "@pixi/display": "7.3.3", + "@pixi/sprite": "7.3.3", + "@pixi/text": "7.3.3" + } + }, "node_modules/@pixi/ticker": { - "version": "7.3.2", - "resolved": "https://registry.npmjs.org/@pixi/ticker/-/ticker-7.3.2.tgz", - "integrity": "sha512-5kIPhBeXwDJohCzKzJJ6T7f1oAGbHAgeiwOjlTO+9lNXUX8ZPj0407V3syuF+64kFqJzIBCznBRpI+fmT4c9SA==", - "peer": true, + "version": "7.3.3", + "resolved": "https://registry.npmjs.org/@pixi/ticker/-/ticker-7.3.3.tgz", + "integrity": "sha512-AxeMKP9vTcla+yYXCABc0uKUODjIsJRXk3DCHVpoPeeqRYPaKH291RtDw92QFw7FFgGBbRgsptBjF9Q+uO5hDA==", "dependencies": { - "@pixi/extensions": "7.3.2", - "@pixi/settings": "7.3.2", - "@pixi/utils": "7.3.2" + "@pixi/extensions": "7.3.3", + "@pixi/settings": "7.3.3", + "@pixi/utils": "7.3.3" } }, "node_modules/@pixi/utils": { - "version": "7.3.2", - "resolved": "https://registry.npmjs.org/@pixi/utils/-/utils-7.3.2.tgz", - "integrity": "sha512-KhNvj9YcY7Zi2dTKZgDpx8C6OxKKR541vwtG6JgdBZZYDeMBOIghN2Vi5zn4diW5BhDfHBmdSJ1wZXEtE2MDwg==", - "peer": true, + "version": "7.3.3", + "resolved": "https://registry.npmjs.org/@pixi/utils/-/utils-7.3.3.tgz", + "integrity": "sha512-rgWD0YV6oDKOVuQJ9ra6g3VdoN8usC6Kj/t3Ba1t9P+k9qUKIM0gCr9/bxFf7CJ/EUS8A2WTVfEmJVN2TwZfxg==", "dependencies": { - "@pixi/color": "7.3.2", - "@pixi/constants": "7.3.2", - "@pixi/settings": "7.3.2", + "@pixi/color": "7.3.3", + "@pixi/constants": "7.3.3", + "@pixi/settings": "7.3.3", "@types/earcut": "^2.1.0", "earcut": "^2.2.4", "eventemitter3": "^4.0.0", @@ -4448,13 +4715,13 @@ ] }, "node_modules/@schematics/angular": { - "version": "17.1.0-next.1", - "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-17.1.0-next.1.tgz", - "integrity": "sha512-IpYKPzmpI09E1ZfhbYB61EYL9jaCTeaAinCkc8VUbBzLNH5sqX9ylMAxSlaFwBbfj3TBRCYZaCfxYqCi+ZfUWw==", + "version": "17.1.0", + "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-17.1.0.tgz", + "integrity": "sha512-u9pCesRWb6mVtLnFLSfZ8R21TDz8YCebAxViefWsJlb0+p0yknesVL1nG/Oi9tgfhczS991HGIVsLT41bZthUw==", "dev": true, "dependencies": { - "@angular-devkit/core": "17.1.0-next.1", - "@angular-devkit/schematics": "17.1.0-next.1", + "@angular-devkit/core": "17.1.0", + "@angular-devkit/schematics": "17.1.0", "jsonc-parser": "3.2.0" }, "engines": { @@ -4518,9 +4785,9 @@ "dev": true }, "node_modules/@stencil/core": { - "version": "4.9.0", - "resolved": "https://registry.npmjs.org/@stencil/core/-/core-4.9.0.tgz", - "integrity": "sha512-aWSkhBmk3yPwRAkUwBbzRwmdhb8hKiQ/JMr9m5jthpBZLjtppYbzz6PN2MhSMDfRp6K93eQw5WogSEH4HHuB6w==", + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/@stencil/core/-/core-4.10.0.tgz", + "integrity": "sha512-7lDTPY1IxXN2/C+wQPHt3e/dYgY4YgelA8MxOsU3ZftXtpzWad/QNWhSAtKisJMrSjQh41jMDOgD0yLBwV6E7w==", "bin": { "stencil": "bin/stencil" }, @@ -4614,10 +4881,9 @@ } }, "node_modules/@types/css-font-loading-module": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/@types/css-font-loading-module/-/css-font-loading-module-0.0.7.tgz", - "integrity": "sha512-nl09VhutdjINdWyXxHWN/w9zlNCfr60JUqJbd24YXUuCwgeL0TpFSdElCwb6cxfB6ybE19Gjj4g0jsgkXxKv1Q==", - "peer": true + "version": "0.0.12", + "resolved": "https://registry.npmjs.org/@types/css-font-loading-module/-/css-font-loading-module-0.0.12.tgz", + "integrity": "sha512-x2tZZYkSxXqWvTDgveSynfjq/T2HyiZHXb00j/+gy19yp70PHCizM48XFdjBCWH7eHBD0R5i/pw9yMBP/BH5uA==" }, "node_modules/@types/earcut": { "version": "2.1.4", @@ -4723,9 +4989,9 @@ "dev": true }, "node_modules/@types/node-forge": { - "version": "1.3.10", - "resolved": "https://registry.npmjs.org/@types/node-forge/-/node-forge-1.3.10.tgz", - "integrity": "sha512-y6PJDYN4xYBxwd22l+OVH35N+1fCYWiuC3aiP2SlXVE6Lo7SS+rSx9r89hLxrP4pn6n1lBGhHJ12pj3F3Mpttw==", + "version": "1.3.11", + "resolved": "https://registry.npmjs.org/@types/node-forge/-/node-forge-1.3.11.tgz", + "integrity": "sha512-FQx220y22OKNTqaByeBGqHWYz4cl94tpcxeFdvBo3wjG6XPBuZ0BNgNZRV5J5TFmmcsJ4IzsLkmGRiQbnYsBEQ==", "dev": true, "dependencies": { "@types/node": "*" @@ -4734,13 +5000,12 @@ "node_modules/@types/offscreencanvas": { "version": "2019.7.3", "resolved": "https://registry.npmjs.org/@types/offscreencanvas/-/offscreencanvas-2019.7.3.tgz", - "integrity": "sha512-ieXiYmgSRXUDeOntE1InxjWyvEelZGP63M+cGuquuRLuIKKT1osnkXjxev9B7d1nXSug5vpunx+gNlbVxMlC9A==", - "peer": true + "integrity": "sha512-ieXiYmgSRXUDeOntE1InxjWyvEelZGP63M+cGuquuRLuIKKT1osnkXjxev9B7d1nXSug5vpunx+gNlbVxMlC9A==" }, "node_modules/@types/qs": { - "version": "6.9.10", - "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.10.tgz", - "integrity": "sha512-3Gnx08Ns1sEoCrWssEgTSJs/rsT2vhGP+Ja9cnnk9k4ALxinORlQneLXFeFKOTJMOeZUFD1s7w+w2AphTpvzZw==", + "version": "6.9.11", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.11.tgz", + "integrity": "sha512-oGk0gmhnEJK4Yyk+oI7EfXsLayXatCWPHary1MtcmbAifkobT9cM9yutG/hZKIseOU0MqbIwQ/u2nn/Gb+ltuQ==", "dev": true }, "node_modules/@types/range-parser": { @@ -5339,15 +5604,11 @@ "@xtuc/long": "4.2.2" } }, - "node_modules/@webgpu/types": { - "version": "0.1.40", - "resolved": "https://registry.npmjs.org/@webgpu/types/-/types-0.1.40.tgz", - "integrity": "sha512-/BBkHLS6/eQjyWhY2H7Dx5DHcVrS2ICj9owvSRdgtQT6KcafLZA86tPze0xAOsd4FbsYKCUBUQyNi87q7gV7kw==" - }, "node_modules/@xmldom/xmldom": { "version": "0.8.10", "resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.8.10.tgz", "integrity": "sha512-2WALfTl4xo2SkGCYRt6rDTFfk9R1czmBvUQy12gK2KuRKIpWEhcbbzy8EZXtz/jkRqHX8bFEc6FC1HjX4TUWYw==", + "dev": true, "engines": { "node": ">=10.0.0" } @@ -5401,13 +5662,6 @@ "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", "dev": true }, - "node_modules/abab": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", - "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==", - "deprecated": "Use your platform's native atob() and btoa() methods instead", - "dev": true - }, "node_modules/abbrev": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-2.0.0.tgz", @@ -5636,12 +5890,6 @@ "url": "https://github.com/sponsors/jonschlinkert" } }, - "node_modules/arg": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", - "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", - "dev": true - }, "node_modules/argparse": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", @@ -5674,9 +5922,9 @@ } }, "node_modules/array-flatten": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz", - "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", "dev": true }, "node_modules/array-includes": { @@ -5879,13 +6127,13 @@ } }, "node_modules/babel-plugin-polyfill-corejs2": { - "version": "0.4.6", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.6.tgz", - "integrity": "sha512-jhHiWVZIlnPbEUKSSNb9YoWcQGdlTLq7z1GHL4AjFxaoOUMuuEVJ+Y4pAaQUGOGk93YsVCKPbqbfw3m0SM6H8Q==", + "version": "0.4.7", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.7.tgz", + "integrity": "sha512-LidDk/tEGDfuHW2DWh/Hgo4rmnw3cduK6ZkOI1NPFceSK3n/yAGeOsNT7FLnSGHkXj3RHGSEVkN3FsCTY6w2CQ==", "dev": true, "dependencies": { "@babel/compat-data": "^7.22.6", - "@babel/helper-define-polyfill-provider": "^0.4.3", + "@babel/helper-define-polyfill-provider": "^0.4.4", "semver": "^6.3.1" }, "peerDependencies": { @@ -5902,12 +6150,12 @@ } }, "node_modules/babel-plugin-polyfill-corejs3": { - "version": "0.8.6", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.6.tgz", - "integrity": "sha512-leDIc4l4tUgU7str5BWLS2h8q2N4Nf6lGZP6UrNDxdtfF2g69eJ5L0H7S8A5Ln/arfFAfHor5InAdZuIOwZdgQ==", + "version": "0.8.7", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.7.tgz", + "integrity": "sha512-KyDvZYxAzkC0Aj2dAPyDzi2Ym15e5JKZSK+maI7NAwSqofvuFglbSsxE7wUOvTg9oFVnHMzVzBKcqEb4PJgtOA==", "dev": true, "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.4.3", + "@babel/helper-define-polyfill-provider": "^0.4.4", "core-js-compat": "^3.33.1" }, "peerDependencies": { @@ -5915,12 +6163,12 @@ } }, "node_modules/babel-plugin-polyfill-regenerator": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.3.tgz", - "integrity": "sha512-8sHeDOmXC8csczMrYEOf0UTNa4yE2SxV5JGeT/LP1n0OYVDUUFPxG9vdk2AlDlIit4t+Kf0xCtpgXPBwnn/9pw==", + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.4.tgz", + "integrity": "sha512-S/x2iOCvDaCASLYsOOgWOq4bCfKYVqvO/uxjkaYyZ3rVsVE3CeAI/c84NpyuBBymEgNvHgjEot3a9/Z/kXvqsg==", "dev": true, "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.4.3" + "@babel/helper-define-polyfill-provider": "^0.4.4" }, "peerDependencies": { "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" @@ -6058,13 +6306,11 @@ } }, "node_modules/bonjour-service": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.1.1.tgz", - "integrity": "sha512-Z/5lQRMOG9k7W+FkeGTNjh7htqn/2LMnfOvBZ8pynNZCM9MwkQkI3zeI4oz09uWdcgmgHugVvBqxGg4VQJ5PCg==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.2.1.tgz", + "integrity": "sha512-oSzCS2zV14bh2kji6vNe7vrpJYCHGvcZnlffFQ1MEoX/WOeQ/teD8SYWKR942OI3INjq8OMNJlbPK5LLLUxFDw==", "dev": true, "dependencies": { - "array-flatten": "^2.1.2", - "dns-equal": "^1.0.0", "fast-deep-equal": "^3.1.3", "multicast-dns": "^7.2.5" } @@ -6710,9 +6956,9 @@ } }, "node_modules/core-js-compat": { - "version": "3.34.0", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.34.0.tgz", - "integrity": "sha512-4ZIyeNbW/Cn1wkMMDy+mvrRUxrwFNjKwbhCfQpDd+eLgYipDqp8oGFGtLmhh18EDPKA0g3VUBYOxQGGwvWLVpA==", + "version": "3.35.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.35.0.tgz", + "integrity": "sha512-5blwFAddknKeNgsjBzilkdQ0+YK8L1PfqPYq40NOYMYFSS38qj+hpTcLLWwpIwA2A5bje/x5jmVn2tzUMg9IVw==", "dev": true, "dependencies": { "browserslist": "^4.22.2" @@ -7055,15 +7301,6 @@ "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==", "dev": true }, - "node_modules/diff": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", - "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", - "dev": true, - "engines": { - "node": ">=0.3.1" - } - }, "node_modules/diff-sequences": { "version": "29.6.3", "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz", @@ -7085,12 +7322,6 @@ "node": ">=8" } }, - "node_modules/dns-equal": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz", - "integrity": "sha512-z+paD6YUQsk+AbGCEM4PrOXSss5gd66QfcVBFTKR/HpFL9jCqikS94HYwKww6fQyO7IxrIIyUu+g0Ka9tUS2Cg==", - "dev": true - }, "node_modules/dns-packet": { "version": "5.6.1", "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-5.6.1.tgz", @@ -7468,9 +7699,9 @@ } }, "node_modules/esbuild": { - "version": "0.19.8", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.19.8.tgz", - "integrity": "sha512-l7iffQpT2OrZfH2rXIp7/FkmaeZM0vxbxN9KfiCwGYuZqzMg/JdvX26R31Zxn/Pxvsrg3Y9N6XTcnknqDyyv4w==", + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.19.11.tgz", + "integrity": "sha512-HJ96Hev2hX/6i5cDVwcqiJBBtuo9+FeIJOtZ9W1kA5M6AMJRHUZlpYZ1/SbEwtO0ioNAW8rUooVpC/WehY2SfA==", "dev": true, "hasInstallScript": true, "bin": { @@ -7480,34 +7711,35 @@ "node": ">=12" }, "optionalDependencies": { - "@esbuild/android-arm": "0.19.8", - "@esbuild/android-arm64": "0.19.8", - "@esbuild/android-x64": "0.19.8", - "@esbuild/darwin-arm64": "0.19.8", - "@esbuild/darwin-x64": "0.19.8", - "@esbuild/freebsd-arm64": "0.19.8", - "@esbuild/freebsd-x64": "0.19.8", - "@esbuild/linux-arm": "0.19.8", - "@esbuild/linux-arm64": "0.19.8", - "@esbuild/linux-ia32": "0.19.8", - "@esbuild/linux-loong64": "0.19.8", - "@esbuild/linux-mips64el": "0.19.8", - "@esbuild/linux-ppc64": "0.19.8", - "@esbuild/linux-riscv64": "0.19.8", - "@esbuild/linux-s390x": "0.19.8", - "@esbuild/linux-x64": "0.19.8", - "@esbuild/netbsd-x64": "0.19.8", - "@esbuild/openbsd-x64": "0.19.8", - "@esbuild/sunos-x64": "0.19.8", - "@esbuild/win32-arm64": "0.19.8", - "@esbuild/win32-ia32": "0.19.8", - "@esbuild/win32-x64": "0.19.8" + "@esbuild/aix-ppc64": "0.19.11", + "@esbuild/android-arm": "0.19.11", + "@esbuild/android-arm64": "0.19.11", + "@esbuild/android-x64": "0.19.11", + "@esbuild/darwin-arm64": "0.19.11", + "@esbuild/darwin-x64": "0.19.11", + "@esbuild/freebsd-arm64": "0.19.11", + "@esbuild/freebsd-x64": "0.19.11", + "@esbuild/linux-arm": "0.19.11", + "@esbuild/linux-arm64": "0.19.11", + "@esbuild/linux-ia32": "0.19.11", + "@esbuild/linux-loong64": "0.19.11", + "@esbuild/linux-mips64el": "0.19.11", + "@esbuild/linux-ppc64": "0.19.11", + "@esbuild/linux-riscv64": "0.19.11", + "@esbuild/linux-s390x": "0.19.11", + "@esbuild/linux-x64": "0.19.11", + "@esbuild/netbsd-x64": "0.19.11", + "@esbuild/openbsd-x64": "0.19.11", + "@esbuild/sunos-x64": "0.19.11", + "@esbuild/win32-arm64": "0.19.11", + "@esbuild/win32-ia32": "0.19.11", + "@esbuild/win32-x64": "0.19.11" } }, "node_modules/esbuild-wasm": { - "version": "0.19.8", - "resolved": "https://registry.npmjs.org/esbuild-wasm/-/esbuild-wasm-0.19.8.tgz", - "integrity": "sha512-+5BhFGjW0+3cC5BEcujYfNaslSEBjF+zFHj4a7xff2LLByCJGok3iCyV9/oHpN8OlZrGlnjSduhY1t1QqU1YBQ==", + "version": "0.19.11", + "resolved": "https://registry.npmjs.org/esbuild-wasm/-/esbuild-wasm-0.19.11.tgz", + "integrity": "sha512-MIhnpc1TxERUHomteO/ZZHp+kUawGEc03D/8vMHGzffLvbFLeDe6mwxqEZwlqBNY7SLWbyp6bBQAcCen8+wpjQ==", "dev": true, "bin": { "esbuild": "bin/esbuild" @@ -8142,12 +8374,6 @@ "node": ">= 0.10.0" } }, - "node_modules/express/node_modules/array-flatten": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", - "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", - "dev": true - }, "node_modules/express/node_modules/debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", @@ -10536,12 +10762,6 @@ "semver": "bin/semver" } }, - "node_modules/make-error": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", - "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", - "dev": true - }, "node_modules/make-fetch-happen": { "version": "13.0.0", "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-13.0.0.tgz", @@ -10927,9 +11147,9 @@ } }, "node_modules/mrmime": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-1.0.1.tgz", - "integrity": "sha512-hzzEagAgDyoU1Q6yg5uI+AorQgdvMCur3FcKf7NhMKWsaYg+RnbTyHRa/9IlLF9rf455MOCtcqqrQQ83pPP7Uw==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-2.0.0.tgz", + "integrity": "sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw==", "dev": true, "engines": { "node": ">=10" @@ -11139,9 +11359,9 @@ } }, "node_modules/node-gyp-build": { - "version": "4.7.1", - "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.7.1.tgz", - "integrity": "sha512-wTSrZ+8lsRRa3I3H8Xr65dLWSgCvY2l4AOnaeKdPA9TB/WYMPaTcrzf3rXvFoVvjKNVnu0CcWSx54qq9GKRUYg==", + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.8.0.tgz", + "integrity": "sha512-u6fs2AEUljNho3EYTJNBfImO5QTo/J/1Etd+NVdCj7qWKUSN/bSLkZwhDv7I+w/MSC6qJ4cknepkAYykDdK8og==", "dev": true, "optional": true, "bin": { @@ -12053,11 +12273,6 @@ "node": ">= 0.10" } }, - "node_modules/parse-svg-path": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/parse-svg-path/-/parse-svg-path-0.1.2.tgz", - "integrity": "sha512-JyPSBnkTJ0AI8GGJLfMXvKq42cj5c006fnLz6fXy6zfoVjJizi8BNTpu8on8ziI1cKy9d9DGNuY17Ce7wuejpQ==" - }, "node_modules/parse5": { "version": "7.1.2", "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz", @@ -12212,9 +12427,9 @@ } }, "node_modules/piscina": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/piscina/-/piscina-4.2.0.tgz", - "integrity": "sha512-/Yq6CLchvi5UQ6YGeiYHIJQV09VcZ5eYuNVS/YPkpxlxKrB4tEbIyc6j8F5b0jCP6tHdiji1Gos4fapc7q1csg==", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/piscina/-/piscina-4.2.1.tgz", + "integrity": "sha512-LShp0+lrO+WIzB9LXO+ZmO4zGHxtTJNZhEO56H9SSu+JPaUQb6oLcTCzWi5IL2DS8/vIkCE88ElahuSSw4TAkA==", "dev": true, "dependencies": { "hdr-histogram-js": "^2.0.1", @@ -12225,31 +12440,46 @@ } }, "node_modules/pixi.js": { - "version": "8.0.0-rc.1", - "resolved": "https://registry.npmjs.org/pixi.js/-/pixi.js-8.0.0-rc.1.tgz", - "integrity": "sha512-Epja9iYeQ0XS+8UKmeSpTFZrl6hjZFZHlnEiFOEw1eXJ3fJn7DN2Mt1DY1g5jOhsHlgy9Uq9Tj1NUDoxHc01xA==", - "dependencies": { - "@pixi/colord": "^2.9.6", - "@types/css-font-loading-module": "^0.0.12", - "@types/earcut": "^2.1.4", - "@webgpu/types": "^0.1.40", - "@xmldom/xmldom": "^0.8.10", - "earcut": "^2.2.4", - "eventemitter3": "^5.0.1", - "ismobilejs": "^1.1.1", - "parse-svg-path": "^0.1.2" + "version": "7.3.3", + "resolved": "https://registry.npmjs.org/pixi.js/-/pixi.js-7.3.3.tgz", + "integrity": "sha512-EuAyWZBL5lKViCgYkB6dbwkiI/MNht8O8F8956up9vwGEGf659QRHxfVQoRj8zdNGOBbe51XAxQMfLaW/l0Ekg==", + "dependencies": { + "@pixi/accessibility": "7.3.3", + "@pixi/app": "7.3.3", + "@pixi/assets": "7.3.3", + "@pixi/compressed-textures": "7.3.3", + "@pixi/core": "7.3.3", + "@pixi/display": "7.3.3", + "@pixi/events": "7.3.3", + "@pixi/extensions": "7.3.3", + "@pixi/extract": "7.3.3", + "@pixi/filter-alpha": "7.3.3", + "@pixi/filter-blur": "7.3.3", + "@pixi/filter-color-matrix": "7.3.3", + "@pixi/filter-displacement": "7.3.3", + "@pixi/filter-fxaa": "7.3.3", + "@pixi/filter-noise": "7.3.3", + "@pixi/graphics": "7.3.3", + "@pixi/mesh": "7.3.3", + "@pixi/mesh-extras": "7.3.3", + "@pixi/mixin-cache-as-bitmap": "7.3.3", + "@pixi/mixin-get-child-by-name": "7.3.3", + "@pixi/mixin-get-global-position": "7.3.3", + "@pixi/particle-container": "7.3.3", + "@pixi/prepare": "7.3.3", + "@pixi/sprite": "7.3.3", + "@pixi/sprite-animated": "7.3.3", + "@pixi/sprite-tiling": "7.3.3", + "@pixi/spritesheet": "7.3.3", + "@pixi/text": "7.3.3", + "@pixi/text-bitmap": "7.3.3", + "@pixi/text-html": "7.3.3" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/pixijs" } }, - "node_modules/pixi.js/node_modules/@types/css-font-loading-module": { - "version": "0.0.12", - "resolved": "https://registry.npmjs.org/@types/css-font-loading-module/-/css-font-loading-module-0.0.12.tgz", - "integrity": "sha512-x2tZZYkSxXqWvTDgveSynfjq/T2HyiZHXb00j/+gy19yp70PHCizM48XFdjBCWH7eHBD0R5i/pw9yMBP/BH5uA==" - }, - "node_modules/pixi.js/node_modules/eventemitter3": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz", - "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==" - }, "node_modules/pkg-dir": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-7.0.0.tgz", @@ -12362,9 +12592,9 @@ } }, "node_modules/postcss": { - "version": "8.4.32", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.32.tgz", - "integrity": "sha512-D/kj5JNu6oo2EIy+XL/26JEDTlIbB8hw85G8StOE6L74RQAVVP5rej6wxCNqyMbR4RkPfqvezVbPw81Ngd6Kcw==", + "version": "8.4.33", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.33.tgz", + "integrity": "sha512-Kkpbhhdjw2qQs2O2DGX+8m5OVqEcbB9HRBvuYM9pgrjEFUg30A9LmXNlTAUj4S9kgtGyrMbTzVjH7E+s5Re2yg==", "funding": [ { "type": "opencollective", @@ -12389,14 +12619,14 @@ } }, "node_modules/postcss-loader": { - "version": "7.3.3", - "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-7.3.3.tgz", - "integrity": "sha512-YgO/yhtevGO/vJePCQmTxiaEwER94LABZN0ZMT4A0vsak9TpO+RvKRs7EmJ8peIlB9xfXCsS7M8LjqncsUZ5HA==", + "version": "7.3.4", + "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-7.3.4.tgz", + "integrity": "sha512-iW5WTTBSC5BfsBJ9daFMPVrLT36MrNiC6fqOZTTaHjBNX6Pfd5p+hSBqe/fEeNd7pc13QiAyGt7VdGMw4eRC4A==", "dev": true, "dependencies": { - "cosmiconfig": "^8.2.0", - "jiti": "^1.18.2", - "semver": "^7.3.8" + "cosmiconfig": "^8.3.5", + "jiti": "^1.20.0", + "semver": "^7.5.4" }, "engines": { "node": ">= 14.15.0" @@ -12637,7 +12867,6 @@ "version": "6.11.2", "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.2.tgz", "integrity": "sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==", - "peer": true, "dependencies": { "side-channel": "^1.0.4" }, @@ -12846,9 +13075,9 @@ } }, "node_modules/reflect-metadata": { - "version": "0.1.13", - "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.13.tgz", - "integrity": "sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==", + "version": "0.1.14", + "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.14.tgz", + "integrity": "sha512-ZhYeb6nRaXCfhnndflDK8qI6ZQ/YcWZCISRAWICW9XYqMUwjZM9Z0DveWX/ABN01oxSHwVxKQmxeYZSsm0jh5A==", "dev": true }, "node_modules/regenerate": { @@ -12870,9 +13099,9 @@ } }, "node_modules/regenerator-runtime": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz", - "integrity": "sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==", + "version": "0.14.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", + "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==", "dev": true }, "node_modules/regenerator-transform": { @@ -13292,9 +13521,9 @@ "dev": true }, "node_modules/sass": { - "version": "1.69.5", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.69.5.tgz", - "integrity": "sha512-qg2+UCJibLr2LCVOt3OlPhr/dqVHWOa9XtZf2OjbLs/T4VPSJ00udtgJxH3neXZm+QqX8B+3cU7RaLqp1iVfcQ==", + "version": "1.69.7", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.69.7.tgz", + "integrity": "sha512-rzj2soDeZ8wtE2egyLXgOOHQvaC2iosZrkF6v3EUG+tBwEvhqUCzm0VP3k9gHF9LXbSrRhT5SksoI56Iw8NPnQ==", "dev": true, "dependencies": { "chokidar": ">=3.0.0 <4.0.0", @@ -13309,9 +13538,9 @@ } }, "node_modules/sass-loader": { - "version": "13.3.2", - "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-13.3.2.tgz", - "integrity": "sha512-CQbKl57kdEv+KDLquhC+gE3pXt74LEAzm+tzywcA0/aHZuub8wTErbjAoNI57rPUWRYRNC5WUnNl8eGJNbDdwg==", + "version": "13.3.3", + "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-13.3.3.tgz", + "integrity": "sha512-mt5YN2F1MOZr3d/wBRcZxeFgwgkH44wVc2zohO2YF6JiOMkiXe4BYRZpSu2sO1g71mo/j16txzUhsKZlqjVGzA==", "dev": true, "dependencies": { "neo-async": "^2.6.2" @@ -13809,17 +14038,16 @@ } }, "node_modules/source-map-loader": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/source-map-loader/-/source-map-loader-4.0.1.tgz", - "integrity": "sha512-oqXpzDIByKONVY8g1NUPOTQhe0UTU5bWUl32GSkqK2LjJj0HmwTMVKxcUip0RgAYhY1mqgOxjbQM48a0mmeNfA==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/source-map-loader/-/source-map-loader-5.0.0.tgz", + "integrity": "sha512-k2Dur7CbSLcAH73sBcIkV5xjPV4SzqO1NJ7+XaQl8if3VODDUj3FNchNGpqgJSKbvUfJuhVdv8K2Eu8/TNl2eA==", "dev": true, "dependencies": { - "abab": "^2.0.6", "iconv-lite": "^0.6.3", "source-map-js": "^1.0.2" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 18.12.0" }, "funding": { "type": "opencollective", @@ -14225,9 +14453,9 @@ "dev": true }, "node_modules/terser": { - "version": "5.25.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.25.0.tgz", - "integrity": "sha512-we0I9SIsfvNUMP77zC9HG+MylwYYsGFSBG8qm+13oud2Yh+O104y614FRbyjpxys16jZwot72Fpi827YvGzuqg==", + "version": "5.26.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.26.0.tgz", + "integrity": "sha512-dytTGoE2oHgbNV9nTzgBEPaqAWvcJNl66VZ0BkJqlvp71IjO8CxdBx/ykCNb47cLnCmCvRZ6ZR0tLkqvZCdVBQ==", "dev": true, "dependencies": { "@jridgewell/source-map": "^0.3.3", @@ -14450,28 +14678,6 @@ "typescript": ">=4.2.0" } }, - "node_modules/ts-node": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-8.3.0.tgz", - "integrity": "sha512-dyNS/RqyVTDcmNM4NIBAeDMpsAdaQ+ojdf0GOLqE6nwJOgzEkdRNzJywhDfwnuvB10oa6NLVG1rUJQCpRN7qoQ==", - "dev": true, - "dependencies": { - "arg": "^4.1.0", - "diff": "^4.0.1", - "make-error": "^1.1.1", - "source-map-support": "^0.5.6", - "yn": "^3.0.0" - }, - "bin": { - "ts-node": "dist/bin.js" - }, - "engines": { - "node": ">=4.2.0" - }, - "peerDependencies": { - "typescript": ">=2.0" - } - }, "node_modules/tsconfig-paths": { "version": "3.14.2", "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.2.tgz", @@ -14663,9 +14869,9 @@ } }, "node_modules/undici": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/undici/-/undici-6.0.1.tgz", - "integrity": "sha512-eZFYQLeS9BiXpsU0cuFhCwfeda2MnC48EVmmOz/eCjsTgmyTdaHdVsPSC/kwC2GtW2e0uH0HIPbadf3/bRWSxw==", + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/undici/-/undici-6.2.1.tgz", + "integrity": "sha512-7Wa9thEM6/LMnnKtxJHlc8SrTlDmxqJecgz1iy8KlsN0/iskQXOQCuPkrZLXbElPaSw5slFFyKIKXyJ3UtbApw==", "dev": true, "dependencies": { "@fastify/busboy": "^2.0.0" @@ -14815,7 +15021,6 @@ "version": "0.11.3", "resolved": "https://registry.npmjs.org/url/-/url-0.11.3.tgz", "integrity": "sha512-6hxOLGfZASQK/cijlZnZJTq8OXAkt/3YGfQX45vvMYXpZoo8NdWZcY73K108Jf759lS1Bv/8wXnHDTSz17dSRw==", - "peer": true, "dependencies": { "punycode": "^1.4.1", "qs": "^6.11.2" @@ -14824,8 +15029,7 @@ "node_modules/url/node_modules/punycode": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==", - "peer": true + "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==" }, "node_modules/util-deprecate": { "version": "1.0.2", @@ -15387,9 +15591,9 @@ "dev": true }, "node_modules/ws": { - "version": "8.14.2", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.14.2.tgz", - "integrity": "sha512-wEBG1ftX4jcglPxgFCMJmZ2PLtSbJ2Peg6TmpJFTbe9GZYOQCDPdMYu/Tm0/bGZkw8paZnJY45J4K2PZrLYq8g==", + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.16.0.tgz", + "integrity": "sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ==", "dev": true, "engines": { "node": ">=10.0.0" @@ -15487,15 +15691,6 @@ "fd-slicer": "~1.1.0" } }, - "node_modules/yn": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", - "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", - "dev": true, - "engines": { - "node": ">=6" - } - }, "node_modules/yocto-queue": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", diff --git a/package.json b/package.json index ec80eb7..9c12f64 100644 --- a/package.json +++ b/package.json @@ -17,47 +17,47 @@ "test": "ng test" }, "dependencies": { - "@angular/animations": "17.1.0-next.3", - "@angular/common": "17.1.0-next.3", - "@angular/core": "17.1.0-next.3", - "@angular/forms": "17.1.0-next.3", - "@angular/platform-browser": "17.1.0-next.3", - "@angular/platform-browser-dynamic": "17.1.0-next.3", - "@angular/router": "17.1.0-next.3", - "@angular/service-worker": "17.1.0-next.3", - "@angular/ssr": "^17.1.0-next.1", + "@angular/animations": "17.1.0", + "@angular/common": "17.1.0", + "@angular/core": "17.1.0", + "@angular/forms": "17.1.0", + "@angular/platform-browser": "17.1.0", + "@angular/platform-browser-dynamic": "17.1.0", + "@angular/router": "17.1.0", + "@angular/service-worker": "17.1.0", + "@angular/ssr": "^17.1.0", "@capacitor/android": "latest", - "@capacitor/app": "5.0.0", - "@capacitor/browser": "5.0.0", - "@capacitor/core": "latest", - "@capacitor/ios": "5.0.0", - "@capacitor/local-notifications": "5.0.0", - "@capacitor/splash-screen": "5.0.0", - "@capacitor/status-bar": "^5.0.6", - "@ionic/angular": "7.6.3", + "@capacitor/app": "5.0.7", + "@capacitor/browser": "5.2.0", + "@capacitor/core": "5.6.0", + "@capacitor/ios": "5.6.0", + "@capacitor/local-notifications": "5.0.7", + "@capacitor/splash-screen": "5.0.7", + "@capacitor/status-bar": "5.0.7", + "@ionic/angular": "7.6.5-dev.11704916749.1e64a3a7", "@ionic/angular-toolkit": "9.0.0", "@pixi/filter-adjustment": "^5.1.1", "@pixi/filter-kawase-blur": "^5.1.1", "@pixi/filter-twist": "^5.1.1", "@request-metrics/browser-agent": "1.11.1", "ionicons": "7.2.1", - "pixi.js": "8.0.0-rc.1", + "pixi.js": "7.3.3", "rollup-plugin-visualizer": "5.9.2", "rxjs": "7.8.0", "tslib": "^2.0.0", "zone.js": "~0.14.0" }, "devDependencies": { - "@angular-devkit/build-angular": "17.1.0-next.1", + "@angular-devkit/build-angular": "17.1.0", "@angular-eslint/builder": "17.1.0", "@angular-eslint/eslint-plugin": "17.1.0", "@angular-eslint/eslint-plugin-template": "17.1.0", "@angular-eslint/schematics": "17.1.0", "@angular-eslint/template-parser": "17.1.0", - "@angular/cli": "17.1.0-next.1", - "@angular/compiler": "17.1.0-next.3", - "@angular/compiler-cli": "17.1.0-next.3", - "@angular/language-service": "17.1.0-next.3", + "@angular/cli": "17.1.0", + "@angular/compiler": "17.1.0", + "@angular/compiler-cli": "17.1.0", + "@angular/language-service": "17.1.0", "@capacitor/cli": "latest", "@types/node": "12.12.47", "@typescript-eslint/eslint-plugin": "^6.10.0", @@ -67,7 +67,6 @@ "eslint-plugin-import": "2.25.2", "eslint-plugin-jsdoc": "37.0.0", "eslint-plugin-prefer-arrow": "1.2.3", - "ts-node": "~8.3.0", "typescript": "5.2.2", "typescript-eslint-language-service": "5.0.5" } diff --git a/src/@types/song.ts b/src/@types/song.ts index 74d610e..9be26ff 100644 --- a/src/@types/song.ts +++ b/src/@types/song.ts @@ -11,32 +11,39 @@ export type Preview = { url: string; hlsUrl: string; }; + export type PlayParameters = { id: string; kind: string; }; + export type EditorialNotes = { short: string; standard: string; name: string; tagline: string; }; + export type GenreRelationship = { href: string; next: string; data: Genre[] }; + export type ComposerRelationship = { href: string; next: string; data: Artist[]; }; + export type LibraryRelationship = { href: string; next: string; data: LibrarySong[]; }; + export type PlaylistRelationship = { href: string; next: string; data: Playlist[]; }; + export type SongAttributes = { albumName?: string; artistName?: string; diff --git a/src/app/app.component.ts b/src/app/app.component.ts index af8ad20..e780d6f 100644 --- a/src/app/app.component.ts +++ b/src/app/app.component.ts @@ -1,9 +1,9 @@ -import { Component, inject, OnInit, signal, isDevMode } from '@angular/core'; +import { Component, inject, OnInit, signal, isDevMode, ChangeDetectionStrategy } from '@angular/core'; import { SwUpdate } from '@angular/service-worker'; import { Meta } from '@angular/platform-browser'; import { RouterLink } from '@angular/router'; import { TrackPlayerComponent } from './components/track-player/track-player.component'; -import { CommonModule } from '@angular/common'; +import { StatusBar } from '@capacitor/status-bar'; import { albumsOutline, musicalNote, @@ -37,15 +37,16 @@ import { IonLabel, IonRouterLink, } from '@ionic/angular/standalone'; +import { Capacitor } from '@capacitor/core'; @Component({ selector: 'app-root', templateUrl: 'app.component.html', styleUrls: ['app.component.scss'], + changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [ TrackPlayerComponent, - CommonModule, IonApp, IonSplitPane, IonMenu, @@ -88,7 +89,7 @@ export class AppComponent implements OnInit { gridOutline, chevronForward, }); - + this.setMetaTheme(); matchMedia('(prefers-color-scheme: dark)') @@ -98,13 +99,20 @@ export class AppComponent implements OnInit { this.musicKitEvents.authorizationStatusDidChange, () => this.isAuthorized.set(this.musicKitInstance.isAuthorized), ); - + // if (Capacitor.isNativePlatform) { // this.overridewindow(); // } } - // overridewindow() { + overridewindow() { + // console.log('foo') + // window.open = function(url: string, windowName: string, windowFeatures: string) { + // + // console.log('window caught', url, windowName, windowFeatures); + // window.location.href=url; + // return null; + // }; // const og = window.open; // window.open = ( // url?: string | URL, @@ -136,7 +144,7 @@ export class AppComponent implements OnInit { // presentationStyle: 'popover', // }); // }; - // } + } async ngOnInit() { if (!isDevMode()) { const hasUpdate = await this.swUpdate.checkForUpdate(); diff --git a/src/app/components/background-glow/background-cell.ts b/src/app/components/background-glow/background-cell.ts deleted file mode 100644 index d31d3b9..0000000 --- a/src/app/components/background-glow/background-cell.ts +++ /dev/null @@ -1,113 +0,0 @@ -import { - Component, - ElementRef, - Input, - SimpleChanges, - ViewChild, -} from '@angular/core'; - -@Component({ - standalone: true, - selector: 'background-cell', - template: ``, - styles: [ - ` - :host { - position: absolute; - transform: translate3d(0, 0, 0); - transform-origin: center center; - height: 100%; - aspect-ratio: 1/1; - display: flex; - justify-content: center; - align-content: center; - filter: blur(180px) brightness(70%) saturate(1.9); - animation: rotate 150s infinite ease; - } - @keyframes rotate { - from { transform: rotate(0deg); } - to { transform: rotate(360deg); } - } - canvas { - height: 100%; - width: 100%; - } - - :host(.cell-1) { - width: 100%; - } - - :host(.cell-1) canvas { - } - - :host(.cell-2) { - transform: rotate(180deg) translate3d(10%, -10%, 0); - transform-origin: 50% 50%; - width: 100%; - height: 100%; - } - - :host(.cell-3) { - height: 50%; - top: 0; - left: 10%; - } - - :host(.cell-3) canvas { - transform: rotate(240deg); - aspect-ratio: 1/1; - width: unset; - height: 126%; - } - :host(.cell-4) { - width: 200%; - height: 200%; - z-index: -1; - } - `, - ], -}) -// filter: blur(180px) brightness(70%) saturate(1.7); -export class BackgroundCell { - @Input() src: string; - @ViewChild('canvas') canvas: ElementRef; - - private readonly speed = 0.02; - private opacity = 0; - private source: HTMLImageElement; - private dest: HTMLImageElement; - - private ctx: CanvasRenderingContext2D; - - ngAfterViewInit() { - this.ctx = this.canvas.nativeElement.getContext('2d'); - } - - ngOnChanges({ src }: SimpleChanges) { - this.opacity = 0; - const img = new Image(); - img.onload = this.renderImage.bind(this); - img.src = src.currentValue; - this.dest = img; - - if (src.firstChange) { - this.dest = img; - this.source = img; - } else { - this.dest = img; - } - } - - renderImage() { - if (this.opacity < 1) { - this.ctx.globalAlpha = 1; - this.ctx.drawImage( this.source, 0, 0, this.ctx.canvas.width, this.ctx.canvas.height); - this.ctx.globalAlpha = this.opacity; - this.ctx.drawImage( this.dest, 0, 0, this.ctx.canvas.width, this.ctx.canvas.height); - this.opacity += this.speed; - requestAnimationFrame(this.renderImage.bind(this)); - } else { - this.source = this.dest; - } - } -} diff --git a/src/app/components/background-glow/background-glow.html b/src/app/components/background-glow/background-glow.html deleted file mode 100644 index c2e2ad0..0000000 --- a/src/app/components/background-glow/background-glow.html +++ /dev/null @@ -1 +0,0 @@ - diff --git a/src/app/components/background-glow/background-glow.scss b/src/app/components/background-glow/background-glow.scss index b4f4b24..dc565d7 100644 --- a/src/app/components/background-glow/background-glow.scss +++ b/src/app/components/background-glow/background-glow.scss @@ -12,12 +12,12 @@ align-items: center; canvas { - position: absolute; - top: 0; - bottom: 0; - left: 0; - right: 0; - width: 100%; - height: 100%; + position: absolute; + top: 0; + bottom: 0; + left: 0; + right: 0; + width: 100%; + height: 100%; } } diff --git a/src/app/components/background-glow/background-glow.ts b/src/app/components/background-glow/background-glow.ts index e352b64..e5f8a64 100644 --- a/src/app/components/background-glow/background-glow.ts +++ b/src/app/components/background-glow/background-glow.ts @@ -1,70 +1,79 @@ import { Component, ElementRef, - Input, - OnChanges, OnDestroy, ViewChild, - AfterViewInit, -} from "@angular/core"; -import type { SimpleChanges } from "@angular/core"; + input, + effect, + afterNextRender, + AfterRenderPhase, +} from '@angular/core'; import { Application, Sprite, Graphics, Container, - Renderer, Assets, + ICanvas, Point, -} from "pixi.js"; -import { TwistFilter } from "@pixi/filter-twist"; -import { AdjustmentFilter } from "@pixi/filter-adjustment"; -import { KawaseBlurFilter } from "@pixi/filter-kawase-blur"; +} from 'pixi.js'; +import { TwistFilter } from '@pixi/filter-twist'; +import { AdjustmentFilter } from '@pixi/filter-adjustment'; +import { KawaseBlurFilter } from '@pixi/filter-kawase-blur'; @Component({ standalone: true, - selector: "background-glow", + selector: 'background-glow', template: ``, - styleUrls: ["./background-glow.scss"], + styleUrls: ['./background-glow.scss'], }) -export class BackgroundGlowComponent - implements OnDestroy, OnChanges, AfterViewInit -{ - @Input() src: string; - @ViewChild("canvas") canvas: ElementRef; +export class BackgroundGlowComponent implements OnDestroy { + public src = input(''); + + @ViewChild('canvas') canvas: ElementRef; private container: Container | null; - private app: Application; + private app: Application; + + reduceMotionQuery = matchMedia('(prefers-reduced-motion)'); - reduceMotionQuery = matchMedia("(prefers-reduced-motion)"); + constructor() { + afterNextRender( + async () => { + await this.createApp(); + }, + { phase: AfterRenderPhase.Write }, + ); + effect(async () => { + if (this.app) { + await this.updateArtwork(this.src()); + } + }); + } async createApp() { const width = window.innerWidth; const height = window.innerHeight; - this.app = new Application(); - await this.app.init({ + this.app = new Application({ resizeTo: window, width, height, - powerPreference: "low-power", - preference: "webgl", + powerPreference: 'low-power', backgroundAlpha: 0, - canvas: this.canvas.nativeElement, + view: this.canvas.nativeElement, autoDensity: true, - resolution: window.devicePixelRatio, }); const graphics = new Graphics(); - graphics - .rect(0, 0, this.app.screen.width, this.app.screen.height) - .fill({ color: "#5a5960" }); + graphics.beginFill('#5a5960'); + graphics.drawRect(0, 0, this.app.renderer.width, this.app.renderer.height); + graphics.endFill(); this.app.stage.addChild(graphics); this.app.ticker.maxFPS = 15; - console.log(this.src); this.initAnimation(); - await this.updateArtwork(this.src); + await this.updateArtwork(this.src()); } addSpritesToContainer( @@ -79,7 +88,7 @@ export class BackgroundGlowComponent this.app.screen.height / 2, ); largeCenter.width = this.app.screen.width * 1.25; - largeCenter.height = this.app.screen.width * 1.25; + largeCenter.height = largeCenter.width; largeOffset.anchor.set(0.5, 0.5); largeOffset.position.set( @@ -142,15 +151,17 @@ export class BackgroundGlowComponent brightness: 0.7, }); - // this.container.filters = [twistingFilter, n, o, h, a, l, saturationFilter]; + this.container.filters = [twistingFilter, n, o, h, a, l, saturationFilter]; const colorOverlayContainer = new Container(); colorOverlayContainer.width = this.app.screen.width; colorOverlayContainer.height = this.app.screen.height; - const colorOverlay = new Graphics() - .fill({ color: 0, alpha: 0.5 }) - .rect(0, 0, this.app.screen.width, this.app.screen.height); + const colorOverlay = new Graphics(); + colorOverlay.beginFill(0, 0.5); + colorOverlay.drawRect(0, 0, this.app.screen.width, this.app.screen.height); + colorOverlay.endFill(); + colorOverlayContainer.addChild(colorOverlay); this.app.stage.addChild(colorOverlayContainer); @@ -160,10 +171,11 @@ export class BackgroundGlowComponent f.height = this.app.screen.height; const _ = new Graphics(); - _.fill({ color: 16777215, alpha: 0.05 }); - _.rect(0, 0, this.app.screen.width, this.app.screen.height); - colorOverlayContainer.addChild(_); + _.beginFill(16777215, 0.05); + _.drawRect(0, 0, this.app.screen.width, this.app.screen.height); + _.endFill(); + colorOverlayContainer.addChild(_); this.app.stage.addChild(f); } @@ -244,21 +256,12 @@ export class BackgroundGlowComponent }); } } - async ngAfterViewInit() { - this.createApp(); - } - ngOnChanges({ src }: SimpleChanges) { - if (!src.firstChange && this.app != null) { - this.updateArtwork(src.currentValue); - } - } ngOnDestroy(): void { - // const opt: ViewSystemDestroyOptions = { - // removeView: true - // } - this.app.destroy({ - removeView: true, + this.app?.destroy(true, { + children: true, + texture: true, + baseTexture: true, }); } } diff --git a/src/app/components/lazy-img/lazy-img.component.html b/src/app/components/lazy-img/lazy-img.component.html index 152722b..7662952 100644 --- a/src/app/components/lazy-img/lazy-img.component.html +++ b/src/app/components/lazy-img/lazy-img.component.html @@ -2,8 +2,8 @@ role="presentation" loading="lazy" [class.loaded]="isLoaded()" - [src]="src" - [alt]="alt" + [src]="src()" + [alt]="alt()" (load)="isLoaded.set(true)" decoding="async" /> diff --git a/src/app/components/lazy-img/lazy-img.component.ts b/src/app/components/lazy-img/lazy-img.component.ts index a060a39..6573cde 100644 --- a/src/app/components/lazy-img/lazy-img.component.ts +++ b/src/app/components/lazy-img/lazy-img.component.ts @@ -1,4 +1,9 @@ -import { ChangeDetectionStrategy, Component, Input, signal, } from '@angular/core'; +import { + ChangeDetectionStrategy, + Component, + signal, + input, +} from '@angular/core'; @Component({ selector: 'lazy-img', templateUrl: './lazy-img.component.html', @@ -7,8 +12,7 @@ import { ChangeDetectionStrategy, Component, Input, signal, } from '@angular/cor standalone: true, }) export class LazyImgComponent { - @Input() src = ''; - @Input() alt = ''; - + public src = input(''); + public alt = input(''); public isLoaded = signal(false); } diff --git a/src/app/components/now-playing-artwork/now-playing-artwork.component.ts b/src/app/components/now-playing-artwork/now-playing-artwork.component.ts index 5ea1d79..a92d9e6 100644 --- a/src/app/components/now-playing-artwork/now-playing-artwork.component.ts +++ b/src/app/components/now-playing-artwork/now-playing-artwork.component.ts @@ -1,5 +1,5 @@ import { CommonModule } from '@angular/common'; -import { Component, Input, OnInit } from '@angular/core'; +import { ChangeDetectionStrategy, Component, Input, OnInit } from '@angular/core'; import { FormatArtworkUrlPipe } from '../../pipes/formatArtworkUrl/format-artwork-url.pipe'; import { LazyImgComponent } from '../lazy-img/lazy-img.component'; @@ -7,6 +7,7 @@ import { LazyImgComponent } from '../lazy-img/lazy-img.component'; selector: 'now-playing-artwork', templateUrl: './now-playing-artwork.component.html', styleUrls: ['./now-playing-artwork.component.scss'], + changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [CommonModule, LazyImgComponent, FormatArtworkUrlPipe] }) diff --git a/src/app/components/player-modal/player-modal.component.html b/src/app/components/player-modal/player-modal.component.html index 308224e..92d5f08 100644 --- a/src/app/components/player-modal/player-modal.component.html +++ b/src/app/components/player-modal/player-modal.component.html @@ -7,20 +7,10 @@
@@ -55,14 +45,14 @@

@@ -106,7 +96,7 @@

@@ -143,7 +133,7 @@

@@ -173,7 +163,7 @@

diff --git a/src/app/components/player-modal/player-modal.component.ts b/src/app/components/player-modal/player-modal.component.ts index 69b9a2e..c47b8a4 100644 --- a/src/app/components/player-modal/player-modal.component.ts +++ b/src/app/components/player-modal/player-modal.component.ts @@ -1,5 +1,4 @@ -import { CommonModule } from '@angular/common'; -import { Component, ElementRef, inject, ViewChild } from '@angular/core'; +import { ChangeDetectionStrategy, Component, ElementRef, inject, ViewChild } from '@angular/core'; import { FormsModule } from '@angular/forms'; import { StatusBar, Style } from '@capacitor/status-bar'; @@ -56,9 +55,9 @@ import { NowPlayingContextMenuComponent } from '../now-playing-context-menu/now- selector: 'app-player-modal', templateUrl: './player-modal.component.html', styleUrls: ['./player-modal.component.scss'], + changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [ - CommonModule, SongItemComponent, FormsModule, LazyImgComponent, diff --git a/src/app/components/preview-header/preview-header.component.html b/src/app/components/preview-header/preview-header.component.html index a7d7039..ef32359 100644 --- a/src/app/components/preview-header/preview-header.component.html +++ b/src/app/components/preview-header/preview-header.component.html @@ -1,8 +1,9 @@
@@ -63,9 +64,9 @@

} @else { -

-

-

+

+

+

} diff --git a/src/app/components/preview-header/preview-header.component.scss b/src/app/components/preview-header/preview-header.component.scss index b757c93..63fbf2d 100644 --- a/src/app/components/preview-header/preview-header.component.scss +++ b/src/app/components/preview-header/preview-header.component.scss @@ -7,22 +7,8 @@ grid-template-columns: 2fr 3fr; align-items: center; justify-content: flex-start; - height: 324px; } -ion-toolbar { - --background: transparent; - color: #ffffff; - ion-title { - // -webkit-padding-start: 0; - // padding-inline-start: 0; - // -webkit-padding-end: 0; - // padding-inline-end: 0; - } -} -ion-skeleton-text { - margin: auto; -} lazy-img { aspect-ratio: 1/1; max-width: 324px; @@ -36,7 +22,6 @@ lazy-img { } .album-detail { - // padding: 0 16px; z-index: 1; text-overflow: ellipsis; overflow: hidden; @@ -107,4 +92,8 @@ hr { order: 5; } } + ion-skeleton-text { + margin-left: auto; + margin-right: auto; + } } diff --git a/src/app/components/queue-list/queue-list.component.ts b/src/app/components/queue-list/queue-list.component.ts index 65e639a..cc55e45 100644 --- a/src/app/components/queue-list/queue-list.component.ts +++ b/src/app/components/queue-list/queue-list.component.ts @@ -7,7 +7,7 @@ import { trigger, } from '@angular/animations'; import { NgForOf, NgIf } from '@angular/common'; -import { Component, EventEmitter, Input, Output } from '@angular/core'; +import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core'; import { IonText, IonThumbnail } from '@ionic/angular/standalone'; import { LazyImgComponent } from '../lazy-img/lazy-img.component'; import { SongItemComponent } from '../song-item/song-item.component'; @@ -17,6 +17,7 @@ import { FormatArtworkUrlPipe } from '../../pipes/formatArtworkUrl/format-artwor selector: 'queue-list', templateUrl: `./queue-list.html`, styleUrls: ['./queue-list.scss'], + changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [ SongItemComponent, diff --git a/src/app/components/song-contenxt-menu/song-context-menu.component.ts b/src/app/components/song-contenxt-menu/song-context-menu.component.ts index e34f2be..059d9b0 100644 --- a/src/app/components/song-contenxt-menu/song-context-menu.component.ts +++ b/src/app/components/song-contenxt-menu/song-context-menu.component.ts @@ -1,10 +1,11 @@ -import { Component, inject, Input } from '@angular/core'; +import { ChangeDetectionStrategy, Component, inject, Input } from '@angular/core'; import { IonItem, IonList, PopoverController } from '@ionic/angular/standalone'; import { Song } from 'src/@types/song'; import { MusickitService } from '../../providers/musickit-service/musickit-service.service'; import { PlayerService } from '../../providers/player/player.service2'; @Component({ + changeDetection: ChangeDetectionStrategy.OnPush, template: ` @if(!song.attributes.inLibrary){ diff --git a/src/app/components/song-item/song-item.component.html b/src/app/components/song-item/song-item.component.html index d2e430c..d0dc7d4 100644 --- a/src/app/components/song-item/song-item.component.html +++ b/src/app/components/song-item/song-item.component.html @@ -1,34 +1,41 @@ - @if(index !== null){ - -

{{ index }}

-
- } @if(song){ - -

{{ song.attributes.name }}

- @if(song.attributes.artistName){ - -

{{ song.attributes.artistName }}

-
+ @if(index()){ + +

{{ index() }}

+
+ } + @if(song()){ + +

{{ song().attributes.name }}

+ + @if(song().attributes.artistName){ + +

{{ song().attributes.artistName }}

+
}
- @if(song.attributes.contentRating === 'explicit'){ -

E

- } } @else { - - - - - - } + + + @if(song().attributes.contentRating === 'explicit'){ +
E
+ } + } + + @else { + + + + + + }
diff --git a/src/app/components/song-item/song-item.component.scss b/src/app/components/song-item/song-item.component.scss index 66285ff..f29305f 100644 --- a/src/app/components/song-item/song-item.component.scss +++ b/src/app/components/song-item/song-item.component.scss @@ -22,7 +22,7 @@ text-overflow: ellipsis; } - + } .index { width: 22px; diff --git a/src/app/components/song-item/song-item.component.ts b/src/app/components/song-item/song-item.component.ts index cc29c28..0d33605 100644 --- a/src/app/components/song-item/song-item.component.ts +++ b/src/app/components/song-item/song-item.component.ts @@ -1,10 +1,9 @@ -import { CommonModule } from '@angular/common'; import { ChangeDetectionStrategy, Component, EventEmitter, inject, - Input, + input, Output, } from '@angular/core'; import { @@ -21,7 +20,6 @@ import { import { addIcons } from 'ionicons'; import { ellipsisHorizontal } from 'ionicons/icons'; import { Song } from 'src/@types/song'; -import { MsToMinsPipe } from '../../pipes/ms-to-mins/ms-to-mins.pipe'; import { SongContextMenuComponent } from '../song-contenxt-menu/song-context-menu.component'; @Component({ @@ -31,8 +29,6 @@ import { SongContextMenuComponent } from '../song-contenxt-menu/song-context-men changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [ - CommonModule, - MsToMinsPipe, IonButton, IonButtons, IonLabel, @@ -40,16 +36,18 @@ import { SongContextMenuComponent } from '../song-contenxt-menu/song-context-men IonIcon, IonNote, IonText, - IonItem + IonItem, ], }) export class SongItemComponent { - @Input() song: Song; - @Input() index = null; - @Input() color: string; - @Input() disabled: boolean; + song= input (); + index= input (0); + color= input () + disabled = input(false) + + - @Output() onClick = new EventEmitter; + @Output() onClick = new EventEmitter; private popoverCtrl = inject(PopoverController); handleClick(){ this.onClick.emit(); @@ -59,7 +57,7 @@ export class SongItemComponent { ellipsisHorizontal, }); } - async showMore(e: any) { + async showMore(e: MouseEvent) { e.stopPropagation(); const popover = await this.popoverCtrl.create({ component: SongContextMenuComponent, diff --git a/src/app/components/svg-bars/svg-bars.component.ts b/src/app/components/svg-bars/svg-bars.component.ts index 84abc7c..e54e1ac 100644 --- a/src/app/components/svg-bars/svg-bars.component.ts +++ b/src/app/components/svg-bars/svg-bars.component.ts @@ -1,9 +1,10 @@ -import { Component } from '@angular/core'; +import { ChangeDetectionStrategy, Component } from '@angular/core'; @Component({ selector: 'svg-bars', templateUrl: './svg-bars.component.html', styleUrls: ['./svg-bars.component.scss'], + changeDetection: ChangeDetectionStrategy.OnPush, standalone: true }) export class SvgBarsComponent {} diff --git a/src/app/components/track-player/track-player.component.html b/src/app/components/track-player/track-player.component.html index 4f0cc87..d0b3939 100644 --- a/src/app/components/track-player/track-player.component.html +++ b/src/app/components/track-player/track-player.component.html @@ -3,7 +3,7 @@
- +

{{player.nowPlaying()?.attributes?.name }}

diff --git a/src/app/components/track-player/track-player.component.ts b/src/app/components/track-player/track-player.component.ts index 1a48de9..9efbdb1 100644 --- a/src/app/components/track-player/track-player.component.ts +++ b/src/app/components/track-player/track-player.component.ts @@ -1,11 +1,16 @@ -import { Component, ElementRef, HostListener, inject } from '@angular/core'; +import { + ChangeDetectionStrategy, + Component, + HostListener, + computed, + inject, +} from '@angular/core'; import { PlaybackStates, PlayerService, } from '../../providers/player/player.service2'; import { PlayerModalComponent } from '../player-modal/player-modal.component'; -import { CommonModule } from '@angular/common'; -import { FormatArtworkUrlPipe } from '../../pipes/formatArtworkUrl/format-artwork-url.pipe'; +import { formatArtwork } from '../../pipes/formatArtworkUrl/format-artwork-url.pipe'; import { LazyImgComponent } from '../lazy-img/lazy-img.component'; import { FormsModule } from '@angular/forms'; import { @@ -28,12 +33,11 @@ import { playForward, play, pause, playBack } from 'ionicons/icons'; selector: 'track-player', templateUrl: './track-player.component.html', styleUrls: ['./track-player.component.scss'], + changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [ FormsModule, LazyImgComponent, - FormatArtworkUrlPipe, - CommonModule, PlayerModalComponent, IonFooter, IonThumbnail, @@ -44,20 +48,23 @@ import { playForward, play, pause, playBack } from 'ionicons/icons'; IonButton, IonIcon, IonSpinner, - IonToolbar + IonToolbar, ], }) export class TrackPlayerComponent { public player = inject(PlayerService); private modalCtrl = inject(ModalController); - private el = inject>(ElementRef); public isModalOpen = false; public playbackStates = PlaybackStates; private playerModal: typeof PlayerModalComponent; private clickBlock = false; private isScrubbing = false; - private _playbackTime: any; + private _playbackTime: number; + + public nowPlayingArtwork = computed(() => { + return formatArtwork(this.player.nowPlaying().attributes.artwork.url, 60); + }); constructor() { addIcons({ playForward, play, pause, playBack }); @@ -75,7 +82,6 @@ export class TrackPlayerComponent { component: this.playerModal, canDismiss: true, cssClass: 'full-modal', - // presentingElement: this.el.nativeElement.closest('ion-split-pane'), }); await modalInstance.present(); this.clickBlock = false; diff --git a/src/app/pages/album/album.page.ts b/src/app/pages/album/album.page.ts index eeab5b6..2b238db 100644 --- a/src/app/pages/album/album.page.ts +++ b/src/app/pages/album/album.page.ts @@ -1,8 +1,14 @@ -import { Component, Input, inject, signal } from '@angular/core'; +import { + ChangeDetectionStrategy, + Component, + effect, + inject, + input, + signal, +} from '@angular/core'; import { Album } from '../../../@types/album'; import { MusickitService } from '../../providers/musickit-service/musickit-service.service'; import { PlayerService } from '../../providers/player/player.service2'; -import { CommonModule } from '@angular/common'; import { IonButton, IonButtons, @@ -31,9 +37,9 @@ import { Song } from 'src/@types/song'; selector: 'app-album', templateUrl: './album.page.html', styleUrls: ['./album.page.scss'], + changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [ - CommonModule, ErrorComponent, PreviewHeaderComponent, SongItemComponent, @@ -63,34 +69,30 @@ export class AlbumPage { public canShare = !!('share' in navigator); - @Input() - set id(albumId: string){ - this.api.fetchAlbum(albumId) - .then((data) => { - this.collection.set(data); - this.isLoading.set(false); - }) - } - - constructor(){ + private id = input(''); + constructor() { addIcons({ share, add }); + effect(() => { + this.fetchAlbum(); + }); + } + async fetchAlbum() { + const data = await this.api.fetchAlbum(this.id()); + this.collection.set(data); + this.isLoading.set(false); } - // async ionViewDidEnter() { - // const id = this.route.snapshot.params.id; - // const data = await this.api.fetchAlbum(id); - // this.collection.set(data); - // this.isLoading.set(false); - // } playSong(song: Song, startWith: number, shuffle = false) { - if(!song.attributes.releaseDate){ return; } + if (!song.attributes.releaseDate) { + return; + } const url = this.collection().attributes.url; - this.player.playCollection({ shuffle, url,startWith }); + this.player.playCollection({ shuffle, url, startWith }); } playAlbum({ shuffle }) { const url = this.collection().attributes.url; - this.player.playCollection({ shuffle, url}); + this.player.playCollection({ shuffle, url }); } share() { @@ -105,7 +107,7 @@ export class AlbumPage { }) .then( () => console.log('Successful share'), - (error) => console.log('Error sharing', error) + (error) => console.log('Error sharing', error), ); } } diff --git a/src/app/pages/browse/browse.page.html b/src/app/pages/browse/browse.page.html index 3bf6eee..bdd390d 100644 --- a/src/app/pages/browse/browse.page.html +++ b/src/app/pages/browse/browse.page.html @@ -26,8 +26,7 @@

Top Albums

[routerLink]="['/us', 'album', album.id]" > @@ -48,8 +47,7 @@

Top Playlists

[routerLink]="['/us','playlist', playlist.id]" > @@ -67,8 +65,7 @@

Top Songs

diff --git a/src/app/pages/browse/browse.page.scss b/src/app/pages/browse/browse.page.scss index 2e11314..3cc72d7 100644 --- a/src/app/pages/browse/browse.page.scss +++ b/src/app/pages/browse/browse.page.scss @@ -38,7 +38,7 @@ ion-list-header { display: grid; grid-template-columns: repeat(8, min(90%, 320px)); grid-template-rows: repeat(4, auto); - grid-auto-flow: column; + // grid-auto-flow: column; grid-gap: 8px 16px; padding: 0 16px; justify-content: left; diff --git a/src/app/pages/browse/browse.page.ts b/src/app/pages/browse/browse.page.ts index 397bb2d..514d479 100644 --- a/src/app/pages/browse/browse.page.ts +++ b/src/app/pages/browse/browse.page.ts @@ -1,8 +1,8 @@ -import { Component, inject, signal } from '@angular/core'; +import { ChangeDetectionStrategy, Component, inject, signal } from '@angular/core'; import { MusickitService } from '../../providers/musickit-service/musickit-service.service'; import { PlayerService } from '../../providers/player/player.service2'; import { LazyImgComponent } from '../../components/lazy-img/lazy-img.component'; -import { FormatArtworkUrlPipe } from '../../pipes/formatArtworkUrl/format-artwork-url.pipe'; +import { FormatArtworkUrlPipe, formatArtwork } from '../../pipes/formatArtworkUrl/format-artwork-url.pipe'; import { AlbumPreviewItemsComponent } from '../../components/album-preview-items/album-preview-items.component'; import { SongItemComponent } from '../../components/song-item/song-item.component'; import { RouterLinkWithHref } from '@angular/router'; @@ -25,10 +25,10 @@ import { Song } from '../../../@types/song'; templateUrl: './browse.page.html', styleUrls: ['./browse.page.scss'], standalone: true, + changeDetection: ChangeDetectionStrategy.OnPush, imports: [ SongItemComponent, AlbumPreviewItemsComponent, - FormatArtworkUrlPipe, LazyImgComponent, ErrorComponent, IonTitle, @@ -62,6 +62,10 @@ export class BrowsePage { }); } + formartUrl(url:string){ + return formatArtwork(url, 200); + } + playSong(index: number) { const songs: Array = this.state().collection.topSongs; const songsToPlay = songs.map((song) => song.id); diff --git a/src/app/pages/landing/landing.page.ts b/src/app/pages/landing/landing.page.ts index a2e0552..11f1193 100644 --- a/src/app/pages/landing/landing.page.ts +++ b/src/app/pages/landing/landing.page.ts @@ -1,8 +1,9 @@ -import { Component, OnInit, inject } from '@angular/core'; -import { fromEvent } from 'rxjs'; -import { PLATFORM_ID } from '@angular/core'; -import { CommonModule, isPlatformBrowser } from '@angular/common'; -import { RouterLink, RouterModule } from '@angular/router'; +import { + ChangeDetectionStrategy, + Component, + afterNextRender, +} from '@angular/core'; +import { RouterLink } from '@angular/router'; import { IonButton, IonContent, @@ -13,10 +14,27 @@ import { } from '@ionic/angular/standalone'; import { addIcons } from 'ionicons'; import { musicalNotes } from 'ionicons/icons'; + +interface BeforeInstallPromptEvent extends Event { + readonly platforms: string[]; + readonly userChoice: Promise<{ + outcome: 'accepted' | 'dismissed'; + platform: string; + }>; + prompt(): Promise; +} + +declare global { + interface WindowEventMap { + beforeinstallprompt: BeforeInstallPromptEvent; + } +} + @Component({ selector: 'app-landing', templateUrl: './landing.page.html', styleUrls: ['./landing.page.scss'], + changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [ RouterLink, @@ -28,24 +46,19 @@ import { musicalNotes } from 'ionicons/icons'; IonIcon, ], }) -export class LandingPage implements OnInit { - handleEnter($event: KeyboardEvent) { - $event.target.dispatchEvent(new Event('click')); - } - ev: any; - items = Array.from(new Array(50).keys()); - private platformId = inject(PLATFORM_ID); +export class LandingPage { + ev: BeforeInstallPromptEvent; + constructor() { addIcons({ musicalNotes }); + afterNextRender(() => { + window.addEventListener('beforeinstallprompt', (ev) => (this.ev = ev)); + }); } - ngOnInit() { - if (isPlatformBrowser(this.platformId)) { - fromEvent(window, 'beforeinstallprompt').subscribe((res: any) => { - console.log(res); - this.ev = res; - }); - } + handleEnter($event: KeyboardEvent) { + $event.target.dispatchEvent(new Event('click')); } + push() { Notification.requestPermission().then((result) => { console.log('push: ', result); diff --git a/src/app/pages/library/album/album.page.ts b/src/app/pages/library/album/album.page.ts index 3606da9..6472aa6 100644 --- a/src/app/pages/library/album/album.page.ts +++ b/src/app/pages/library/album/album.page.ts @@ -1,5 +1,5 @@ -import { CommonModule, JsonPipe } from '@angular/common'; -import { Component, Input, inject, signal } from '@angular/core'; +import { JsonPipe } from '@angular/common'; +import { ChangeDetectionStrategy, Component, effect, inject, input, signal } from '@angular/core'; import { IonBackButton, IonButton, @@ -28,10 +28,10 @@ import { RouterLink } from '@angular/router'; selector: 'app-library-albums', templateUrl: './album.page.html', styleUrls: ['./album.page.scss'], + changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [ - CommonModule, PreviewHeaderComponent, SongItemComponent, LazyImgComponent, @@ -64,10 +64,14 @@ export class AlbumPage { public canShare = !!('share' in navigator); showCompleteAlbum = signal(false); - @Input() - set id(albumId: string) { - this.fetchAlbum(albumId); + + private id = input('') + constructor(){ + effect(() => { + this.fetchAlbum(this.id()); + }) } + async fetchAlbum(id: string) { const data = await this.api.fetchLibraryAlbum(id); const albumData = data['library-albums'][id]; diff --git a/src/app/pages/library/albums/albums.page.ts b/src/app/pages/library/albums/albums.page.ts index 8a4b59b..ac7d022 100644 --- a/src/app/pages/library/albums/albums.page.ts +++ b/src/app/pages/library/albums/albums.page.ts @@ -1,28 +1,53 @@ -import { CommonModule } from '@angular/common'; -import { Component, inject, signal, ViewChild } from '@angular/core'; -import { FormsModule } from '@angular/forms'; -import { RouterModule } from '@angular/router'; +import { + ChangeDetectionStrategy, + Component, + inject, + signal, + ViewChild, +} from '@angular/core'; +import { RouterLinkWithHref } from '@angular/router'; import { AlbumPreviewItemsComponent } from '../../../components/album-preview-items/album-preview-items.component'; import { LazyImgComponent } from '../../../components/lazy-img/lazy-img.component'; import { FormatArtworkUrlPipe } from '../../../pipes/formatArtworkUrl/format-artwork-url.pipe'; import { MusickitService } from '../../../providers/musickit-service/musickit-service.service'; import { Album } from '../../../../@types/album'; import { parseNext } from '../../../util'; -import { IonButtons, IonCol, IonContent, IonGrid, IonHeader, IonInfiniteScroll, IonInfiniteScrollContent, IonMenuButton, IonRow, IonTitle, IonToolbar } from '@ionic/angular/standalone'; +import { + IonButtons, + IonCol, + IonContent, + IonGrid, + IonHeader, + IonInfiniteScroll, + IonInfiniteScrollContent, + IonMenuButton, + IonRow, + IonTitle, + IonToolbar, +} from '@ionic/angular/standalone'; @Component({ selector: 'app-library-albums', templateUrl: './albums.page.html', styleUrls: ['./albums.page.scss'], + changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [ - CommonModule, - RouterModule, - FormsModule, AlbumPreviewItemsComponent, LazyImgComponent, FormatArtworkUrlPipe, - IonHeader, IonToolbar, IonTitle, IonButtons, IonMenuButton, IonContent, IonGrid, IonRow, IonCol, IonInfiniteScrollContent, IonInfiniteScroll + IonHeader, + IonToolbar, + IonTitle, + IonButtons, + IonMenuButton, + IonContent, + IonGrid, + IonRow, + IonCol, + IonInfiniteScrollContent, + IonInfiniteScroll, + RouterLinkWithHref, ], }) export class AlbumsPage { @@ -36,7 +61,6 @@ export class AlbumsPage { async ionViewDidEnter() { this.albums().length === 0 ? this.fetchAlbums() : null; } - trackByItem(_idx: number, item: any) { return item.id; } async fetchAlbums() { const res = await this.api.fetchLibraryAlbums(this.offset); diff --git a/src/app/pages/library/playlist/playlist.page.ts b/src/app/pages/library/playlist/playlist.page.ts index 93fad02..55ee0fe 100644 --- a/src/app/pages/library/playlist/playlist.page.ts +++ b/src/app/pages/library/playlist/playlist.page.ts @@ -1,5 +1,5 @@ import { CommonModule } from '@angular/common'; -import { Component, Input, inject, signal } from '@angular/core'; +import { ChangeDetectionStrategy, Component, Input, effect, inject, input, signal } from '@angular/core'; import { LazyImgComponent } from '../../../components/lazy-img/lazy-img.component'; import { PreviewHeaderComponent } from '../../../components/preview-header/preview-header.component'; import { SongItemComponent } from '../../../components/song-item/song-item.component'; @@ -25,6 +25,7 @@ import { selector: 'app-library-playlist', templateUrl: './playlist.page.html', styleUrls: ['./playlist.page.scss'], + changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [ @@ -55,10 +56,13 @@ export class PlaylistPage { public collectionTracks = signal>(null); public playlistTracks = signal(null); - @Input() - set id(playlistId: string) { - this.fetchPlaylist(playlistId); + private id = input('') + constructor(){ + effect(() => { + this.fetchPlaylist(this.id()); + }) } + async fetchPlaylist(playlistId: string) { const [playlistInfo, playlistTracks] = await Promise.all([ this.api.fetchLibraryPlaylist(playlistId), diff --git a/src/app/pages/library/recently-added/recently-added.page.ts b/src/app/pages/library/recently-added/recently-added.page.ts index 8d26e31..716fcac 100644 --- a/src/app/pages/library/recently-added/recently-added.page.ts +++ b/src/app/pages/library/recently-added/recently-added.page.ts @@ -1,5 +1,5 @@ import { CommonModule } from '@angular/common'; -import { Component, inject, signal, ViewChild } from '@angular/core'; +import { ChangeDetectionStrategy, Component, inject, signal, ViewChild } from '@angular/core'; import { RouterModule } from '@angular/router'; import { AlbumPreviewItemsComponent } from '../../../components/album-preview-items/album-preview-items.component'; import { LazyImgComponent } from '../../../components/lazy-img/lazy-img.component'; @@ -25,6 +25,7 @@ import { selector: 'app-recently-added', templateUrl: './recently-added.page.html', styleUrls: ['./recently-added.page.scss'], + changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [ CommonModule, diff --git a/src/app/pages/library/songs/songs.page.ts b/src/app/pages/library/songs/songs.page.ts index ecb6737..1974512 100644 --- a/src/app/pages/library/songs/songs.page.ts +++ b/src/app/pages/library/songs/songs.page.ts @@ -1,5 +1,5 @@ import { CommonModule } from '@angular/common'; -import { Component, inject, signal, ViewChild } from '@angular/core'; +import { ChangeDetectionStrategy, Component, inject, signal, ViewChild } from '@angular/core'; import { FormsModule } from '@angular/forms'; import { RouterModule } from '@angular/router'; import { Song } from '../../../../@types/song'; @@ -26,6 +26,7 @@ import { selector: 'app-songs', templateUrl: './songs.page.html', styleUrls: ['./songs.page.scss'], + changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [ RouterModule, diff --git a/src/app/pages/playlists/playlists.page.html b/src/app/pages/playlists/playlists.page.html index 87bf8a5..f094449 100644 --- a/src/app/pages/playlists/playlists.page.html +++ b/src/app/pages/playlists/playlists.page.html @@ -29,7 +29,9 @@ @for(song of collection().relationships.tracks.data; let i = $index; track song.id ){ - + } diff --git a/src/app/pages/playlists/playlists.page.ts b/src/app/pages/playlists/playlists.page.ts index b13a288..15f9d4b 100644 --- a/src/app/pages/playlists/playlists.page.ts +++ b/src/app/pages/playlists/playlists.page.ts @@ -1,4 +1,12 @@ -import { Component, Input, inject, signal } from '@angular/core'; +import { + ChangeDetectionStrategy, + Component, + Input, + effect, + inject, + input, + signal, +} from '@angular/core'; import { MusickitService } from '../../providers/musickit-service/musickit-service.service'; import { PlayerService } from '../../providers/player/player.service2'; import { LazyImgComponent } from '../../components/lazy-img/lazy-img.component'; @@ -28,6 +36,7 @@ import { addIcons } from 'ionicons'; selector: 'app-playlist', templateUrl: './playlists.page.html', styleUrls: ['./playlists.page.scss'], + changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [ CommonModule, @@ -57,21 +66,20 @@ export class PlaylistPage { public collection = signal(null); public canShare = !!('share' in navigator); + private id = input(''); + constructor() { addIcons({ share }); + effect(() => { + this.fetchPlaylist(); + }); } - - - @Input() - set id(playlistId: string){ - this.api.fetchPlaylist(playlistId) - .then((data) => { - this.collection.set(data); - }) + async fetchPlaylist() { + const data = await this.api.fetchPlaylist(this.id()); + this.collection.set(data); } - playSong(startWith: number, shuffle = false) { - const playlist = this.collection().id + const playlist = this.collection().id; this.player.playCollection({ shuffle, playlist, startWith }); } playPlaylist({ shuffle }) { @@ -86,9 +94,7 @@ export class PlaylistPage { text: `Check out "${collection.attributes.name}" by ${collection.attributes.curatorName}. Via Star Track.`, url: `${window.location.origin}/album/${collection.id}`, }) - .then( - () => console.log('Successful share') - ); + .then(() => console.log('Successful share')); } } } diff --git a/src/app/pages/search/search.page.ts b/src/app/pages/search/search.page.ts index 5aedc8a..35929c8 100644 --- a/src/app/pages/search/search.page.ts +++ b/src/app/pages/search/search.page.ts @@ -1,5 +1,5 @@ -import { CommonModule } from '@angular/common'; -import { Component, inject, OnDestroy, OnInit, signal } from '@angular/core'; +import { Component, inject, OnDestroy, signal } from '@angular/core'; +import { takeUntilDestroyed } from '@angular/core/rxjs-interop' import { FormControl, ReactiveFormsModule } from '@angular/forms'; import { ActivatedRoute, Router, RouterModule } from '@angular/router'; import { @@ -38,7 +38,6 @@ import { PlayerService } from '../../providers/player/player.service2'; styleUrls: ['./search.page.scss'], standalone: true, imports: [ - CommonModule, SongItemComponent, FormatArtworkUrlPipe, LazyImgComponent, @@ -59,12 +58,12 @@ import { PlayerService } from '../../providers/player/player.service2'; IonThumbnail, ], }) -export class SearchPage implements OnDestroy, OnInit { +export class SearchPage { private api = inject(MusickitService); private player = inject(PlayerService); private router = inject(Router); private route = inject(ActivatedRoute); - private search$; + private search$: Subscription; public searchForm = new FormControl(''); @@ -73,41 +72,36 @@ export class SearchPage implements OnDestroy, OnInit { public albums = signal(null); public playlists = signal(null); public songs = signal(null); + + public isLoading = signal(false); public recomendations = signal([]); constructor() { this.search$ = this.searchForm.valueChanges .pipe( + takeUntilDestroyed(), filter((search) => !!search), debounceTime(500), - // tap((v) => { - // this.router.navigate([], { queryParams: { query: v } }); - // this.isLoading.set(true); - // return v; - // }), - // switchMap((v) => this.api.search(v)), - switchMap((v) => this.api.searchSuggestions(v)), - // catchError(() => EMPTY) - ).subscribe(); - // .subscribe((results) => { - // this.albums.set(results?.albums); - // this.playlists.set(results?.playlists); - // this.songs.set(results?.songs); - // this.isLoading.set(false); - // }); + tap((v) => { + this.router.navigate([], { queryParams: { query: v } }); + this.isLoading.set(true); + return v; + }), + switchMap((v) => this.api.search(v)), + catchError(() => EMPTY) + ) + .subscribe((results) => { + this.albums.set(results?.albums); + this.playlists.set(results?.playlists); + this.songs.set(results?.songs); + this.isLoading.set(false); + }); - // const qp = this.route.snapshot.queryParams.query; - // this.searchForm.setValue(qp ?? ''); + const qp = this.route.snapshot.queryParams.query; + this.searchForm.setValue(qp ?? ''); } - async ngOnInit(){ - console.log() - // const data = await this.api.fetchRecomendations(); - // this.recomendations.set(data); - // console.log(data) - } - playSong(song: Song): void { this.player.playCollection({song: song.id}); @@ -122,7 +116,7 @@ export class SearchPage implements OnDestroy, OnInit { this.router.navigate([]); } - ngOnDestroy() { - this.search$.unsubscribe(); - } + // ngOnDestroy() { + // this.search$.unsubscribe(); + // } } diff --git a/src/app/pipes/formatArtworkUrl/format-artwork-url.pipe.ts b/src/app/pipes/formatArtworkUrl/format-artwork-url.pipe.ts index 9b1a8ef..de96d8e 100644 --- a/src/app/pipes/formatArtworkUrl/format-artwork-url.pipe.ts +++ b/src/app/pipes/formatArtworkUrl/format-artwork-url.pipe.ts @@ -2,13 +2,16 @@ import { Pipe, PipeTransform } from '@angular/core'; @Pipe({ name: 'formatArtworkUrl', pure: true, - standalone: true + standalone: true, }) export class FormatArtworkUrlPipe implements PipeTransform { transform(url: string, dim: number): string { if (!url) { return ''; } - return url.replace(/\{w\}|\{h\}/g, dim.toString()).replace(/\{f\}/, 'webp') //.replace('.jpg', '.webp'); + return url.replace(/\{w\}|\{h\}/g, dim.toString()).replace(/\{f\}/, 'webp'); //.replace('.jpg', '.webp'); } } + +export const formatArtwork = (url: string, dim: number) => + url.replace(/\{w\}|\{h\}/g, dim.toString()).replace(/\{f\}/, 'webp'); //.replace('.jpg', '.webp'); diff --git a/src/app/providers/musickit-service/musickit-service.service.ts b/src/app/providers/musickit-service/musickit-service.service.ts index ffc7f4b..f44d5d7 100644 --- a/src/app/providers/musickit-service/musickit-service.service.ts +++ b/src/app/providers/musickit-service/musickit-service.service.ts @@ -134,6 +134,7 @@ export class MusickitService { tap(data => console.log(data)) ); } + async fetchSongs(ids: string[]) { return this.musicKitInstance.api.music( `v1/catalog/${this.musicKitInstance.storefrontId}/songs`, diff --git a/src/app/providers/player/player.service2.ts b/src/app/providers/player/player.service2.ts index a2c267d..e68cfb6 100644 --- a/src/app/providers/player/player.service2.ts +++ b/src/app/providers/player/player.service2.ts @@ -62,7 +62,7 @@ export class PlayerService { public playbackDuration = signal(0); public playbackTime = signal(0); public playbackTimeRemaining = signal(0); - public nowPlaying = signal(nowPlayingInit); + public nowPlaying = signal>(nowPlayingInit); public volume = signal(this.mkInstance.volume ?? 1); constructor() { diff --git a/src/main.ts b/src/main.ts index 949a050..2e6ef7d 100644 --- a/src/main.ts +++ b/src/main.ts @@ -1,13 +1,31 @@ -import { APP_INITIALIZER, isDevMode } from '@angular/core'; +import { + APP_INITIALIZER, + isDevMode, + ɵprovideZonelessChangeDetection as provideZonelessChangeDetection, +} from '@angular/core'; + import { bootstrapApplication } from '@angular/platform-browser'; + import { provideAnimationsAsync } from '@angular/platform-browser/animations/async'; -import { RouteReuseStrategy, provideRouter, withComponentInputBinding, } from '@angular/router'; + +import { + RouteReuseStrategy, + provideRouter, + withComponentInputBinding, +} from '@angular/router'; + import { provideServiceWorker } from '@angular/service-worker'; -import { provideIonicAngular, IonicRouteStrategy, } from '@ionic/angular/standalone'; + +import { + provideIonicAngular, + IonicRouteStrategy, +} from '@ionic/angular/standalone'; + import { routes } from './app/app.routes'; import { AppComponent } from './app/app.component'; import { environment } from './environments/environment'; + const appInitialize = () => async () => await globalThis.MusicKit.configure({ developerToken: environment.musicKitToken, @@ -25,14 +43,15 @@ const appInitialize = () => async () => bootstrapApplication(AppComponent, { providers: [ - provideAnimationsAsync(), - { provide: RouteReuseStrategy, useClass: IonicRouteStrategy }, { provide: APP_INITIALIZER, useFactory: appInitialize, multi: true }, - provideIonicAngular(), provideRouter(routes, withComponentInputBinding()), + provideAnimationsAsync(), + provideIonicAngular(), + { provide: RouteReuseStrategy, useClass: IonicRouteStrategy }, provideServiceWorker('ngsw-worker.js', { enabled: !isDevMode(), registrationStrategy: 'registerWhenStable:30000', }), + provideZonelessChangeDetection(), ], }); diff --git a/src/theme/variables.scss b/src/theme/variables.scss index f0b1435..278c425 100644 --- a/src/theme/variables.scss +++ b/src/theme/variables.scss @@ -360,6 +360,7 @@ div.route-wrapper { ion-split-pane { overflow: hidden; + z-index:-1; } .split-pane-md.split-pane-visible:not(.plt-desktop) > .split-pane-side {