diff --git a/QANDA.md b/QANDA.md
index c78e075e..b6dcbf8d 100644
--- a/QANDA.md
+++ b/QANDA.md
@@ -1,58 +1,58 @@
-# Q & A - Musings on the "Why?"
-
-## Q: This app has very little functionality. Huh? Why?
-
-A: It is a starter app to quickly get all infrastructure for new apps and start coding and designing pages and user interactions. It brings together cohesive and full technology stack which is mostly invisible, and it is ready to be deployed from a single codebase to any platform. Yes, ANY platform:
-
-- iOS
-- Android
-- Windows
-- MacOS
-- Linux
-- Web
-
-## Q: Is it Native?
-
-A: It can be relased into Apple AppStore / Google PlayStore / Microsoft Store as any native app, but it is not native - at the core it uses JavaScript / TypeScript (and some Rust) and modern tooling to create blazingly fast websites, web apps, native apps and allow installation from web browser as an offline app on any of the major platforms. It is very powerful to have that flexibility to choose how to deliver your app.
-
-## Q: Is it SPA? SSR? PWA?
-
-A: Yes, Yes, and Yes, and more - it is flexible.
-
-See, each technique on its own is not so great, trading off one improvement or functionality for lower performance in other areas.
-
-SPA (Single Page App) is bad for SEO with no routes for search crawlers and bad for UX / user experience with slow first loads (as the server will only give client an "/index.html" page and all routing is done on the client AFTER a lot of files are done loading - index.html and all framework Javascript and stylesheets, etc.).
-
-SSR (Server-Side Rendering) is slow for navigation after first page load, as each new page transition has to load whole page and its decorations like NavBars.
-
-PWA (Progressive Web App) gives experience similar to native apps with offline mode, but has many tradeoffs when SSR and SPA is not included.
-
-This app allows to mix and match SSR, CSR, SPA, PWA as best serves the purpose. It can be done for the whole app or on each individual page to have a best combination of SSR with background Offline caching for slick UX with very quick deep links / landing pages, and once any route is loaded on the client, all navigation is local as in a SPA for quick transitions without heavy server reloads. PWA offline caching provided by Service Worker allows seamless online / offline app experience when the app can work without Internet as any standalone app would.
-
-## Q: Then how this app Technology can be described?
-
-A: This technology does not have an established name, and parts of this mix were called "Universal Application" (former "Isomorphic Application") and parts are called "Progressive Web App" (PWA) with Server-Side Rendering (SSR) and client-side navigation". Ugh! We need a better name...
-
-## Q: Why is it called "Total App"?
-
-A: That lack of a good name situation (see previous question) gives me freedom to coin a new term: "TotalApp", since it unifies various technolofies to bring the best where it's needed.
-
-Out of the box features:
-
-- SEO and integration with Social Networks.
-- SSR / Server-Side Rendering [[1]](https://www.sanity.io/glossary/server-side-rendering) - for fast first load of any route and great SEO.
-- SPA / Single Page App [[2]](https://www.sanity.io/glossary/single-page-application) - for fast client-side navigation.
-- PWA / Progressive Web App [[3]](https://www.sanity.io/glossary/progressive-web-application) with Offline mode - can work without Internet connection (after the user visits the app when connected, the app's service worker caches all files for offline operation).
-- Support native features (camera, GPS, etc.) - Capacitor included. Check Geolocation and QR Scanner tabs for demo.
-- Support deep links, in online and in offline modes.
-- Great DX (developer experience) with Svelte and Codebase support features - Linting, Formatting, Unit Testing, End-to-End testing.
-- Great DDX (designer/developer experience) - Prepared for Isolated Component Development (Storybook).
-- Great DevOps - Instrumented for quick deployment - Netlify, Vercel, NGINX, etc. (CI/CD coming).
-- Prepared for UDX (UI designer experience) - see UI integrations below.
-- All deployment methods are included - build for standalone apps (iOS/Android/Windows), make a Website or a Web App, or Offline Web App, or all of them.
-
-## Q: I found a bug, what shall I do?
-
-A: Please understand that this project currently follows bleeding edge of Svelte 5 development, and gets all the bugs from early release candidate / pre-alpha versions. Once upstream stabilizes and gets released, many things will be fixed, so your patience will be greatly appreciated.
-
-To help this project, file issues and submit PRs on [Github](https://github.com/iva2k/total-app/issues).
+# Q & A - Musings on the "Why?"
+
+## Q: This app has very little functionality. Huh? Why?
+
+A: It is a starter app to quickly get all infrastructure for new apps and start coding and designing pages and user interactions. It brings together cohesive and full technology stack which is mostly invisible, and it is ready to be deployed from a single codebase to any platform. Yes, ANY platform:
+
+- iOS
+- Android
+- Windows
+- MacOS
+- Linux
+- Web
+
+## Q: Is it Native?
+
+A: It can be relased into Apple AppStore / Google PlayStore / Microsoft Store as any native app, but it is not native - at the core it uses JavaScript / TypeScript (and some Rust) and modern tooling to create blazingly fast websites, web apps, native apps and allow installation from web browser as an offline app on any of the major platforms. It is very powerful to have that flexibility to choose how to deliver your app.
+
+## Q: Is it SPA? SSR? PWA?
+
+A: Yes, Yes, and Yes, and more - it is flexible.
+
+See, each technique on its own is not so great, trading off one improvement or functionality for lower performance in other areas.
+
+SPA (Single Page App) is bad for SEO with no routes for search crawlers and bad for UX / user experience with slow first loads (as the server will only give client an "/index.html" page and all routing is done on the client AFTER a lot of files are done loading - index.html and all framework Javascript and stylesheets, etc.).
+
+SSR (Server-Side Rendering) is slow for navigation after first page load, as each new page transition has to load whole page and its decorations like NavBars.
+
+PWA (Progressive Web App) gives experience similar to native apps with offline mode, but has many tradeoffs when SSR and SPA is not included.
+
+This app allows to mix and match SSR, CSR, SPA, PWA as best serves the purpose. It can be done for the whole app or on each individual page to have a best combination of SSR with background Offline caching for slick UX with very quick deep links / landing pages, and once any route is loaded on the client, all navigation is local as in a SPA for quick transitions without heavy server reloads. PWA offline caching provided by Service Worker allows seamless online / offline app experience when the app can work without Internet as any standalone app would.
+
+## Q: Then how this app Technology can be described?
+
+A: This technology does not have an established name, and parts of this mix were called "Universal Application" (former "Isomorphic Application") and parts are called "Progressive Web App" (PWA) with Server-Side Rendering (SSR) and client-side navigation". Ugh! We need a better name...
+
+## Q: Why is it called "Total App"?
+
+A: That lack of a good name situation (see previous question) gives me freedom to coin a new term: "TotalApp", since it unifies various technolofies to bring the best where it's needed.
+
+Out of the box features:
+
+- SEO and integration with Social Networks.
+- SSR / Server-Side Rendering [[1]](https://www.sanity.io/glossary/server-side-rendering) - for fast first load of any route and great SEO.
+- SPA / Single Page App [[2]](https://www.sanity.io/glossary/single-page-application) - for fast client-side navigation.
+- PWA / Progressive Web App [[3]](https://www.sanity.io/glossary/progressive-web-application) with Offline mode - can work without Internet connection (after the user visits the app when connected, the app's service worker caches all files for offline operation).
+- Support native features (camera, GPS, etc.) - Capacitor included. Check Geolocation and QR Scanner tabs for demo.
+- Support deep links, in online and in offline modes.
+- Great DX (developer experience) with Svelte and Codebase support features - Linting, Formatting, Unit Testing, End-to-End testing.
+- Great DDX (designer/developer experience) - Prepared for Isolated Component Development (Storybook).
+- Great DevOps - Instrumented for quick deployment - Netlify, Vercel, NGINX, etc. (CI/CD coming).
+- Prepared for UDX (UI designer experience) - see UI integrations below.
+- All deployment methods are included - build for standalone apps (iOS/Android/Windows), make a Website or a Web App, or Offline Web App, or all of them.
+
+## Q: I found a bug, what shall I do?
+
+A: Please understand that this project currently follows bleeding edge of Svelte 5 development, and gets all the bugs from early release candidate / pre-alpha versions. Once upstream stabilizes and gets released, many things will be fixed, so your patience will be greatly appreciated.
+
+To help this project, file issues and submit PRs on [Github](https://github.com/iva2k/total-app/issues).
diff --git a/README.md b/README.md
index 24f7bede..121e785e 100644
--- a/README.md
+++ b/README.md
@@ -241,7 +241,7 @@ This repository was initiated using early preview releases of Svelte 5. As Svelt
If you are interested in a stable version with Svelte 3/4, please refer to the earlier [Svelte 3/4 version of this project](https://github.com/iva2k/svelte-blank-20221125) at commit [#64eb11a](https://github.com/iva2k/svelte-blank-20221125/tree/64eb11af86cc81931d21e3f7c8851c2094044574). This version includes fully functional UI frameworks.
-As updates and fixes for Svelte 5 and the UI frameworks are released, they will be incorporated into this project.
+As updates and fixes for Svelte 5 and the UI frameworks are released, they will be incorporated into this project.
See Q & A below and file issues and submit PRs on [Github](https://github.com/iva2k/total-app/issues)!
diff --git a/android/capacitor.settings.gradle b/android/capacitor.settings.gradle
index faa51ceb..b0147dab 100644
--- a/android/capacitor.settings.gradle
+++ b/android/capacitor.settings.gradle
@@ -1,6 +1,6 @@
// DO NOT EDIT THIS FILE! IT IS GENERATED EACH TIME "capacitor update" IS RUN
include ':capacitor-android'
-project(':capacitor-android').projectDir = new File('../node_modules/.pnpm/@capacitor+android@6.1.0_@capacitor+core@6.1.0/node_modules/@capacitor/android/capacitor')
+project(':capacitor-android').projectDir = new File('../node_modules/.pnpm/@capacitor+android@6.1.1_@capacitor+core@6.1.1/node_modules/@capacitor/android/capacitor')
include ':capacitor-geolocation'
-project(':capacitor-geolocation').projectDir = new File('../node_modules/.pnpm/@capacitor+geolocation@6.0.0_@capacitor+core@6.1.0/node_modules/@capacitor/geolocation/android')
+project(':capacitor-geolocation').projectDir = new File('../node_modules/.pnpm/@capacitor+geolocation@6.0.0_@capacitor+core@6.1.1/node_modules/@capacitor/geolocation/android')
diff --git a/ios/App/Podfile b/ios/App/Podfile
index 214f210e..92378b58 100644
--- a/ios/App/Podfile
+++ b/ios/App/Podfile
@@ -1,4 +1,4 @@
-require_relative '../../node_modules/.pnpm/@capacitor+ios@6.1.0_@capacitor+core@6.1.0/node_modules/@capacitor/ios/scripts/pods_helpers'
+require_relative '../../node_modules/.pnpm/@capacitor+ios@6.1.1_@capacitor+core@6.1.1/node_modules/@capacitor/ios/scripts/pods_helpers'
platform :ios, '13.0'
use_frameworks!
@@ -9,9 +9,9 @@ use_frameworks!
install! 'cocoapods', :disable_input_output_paths => true
def capacitor_pods
- pod 'Capacitor', :path => '../../node_modules/.pnpm/@capacitor+ios@6.1.0_@capacitor+core@6.1.0/node_modules/@capacitor/ios'
- pod 'CapacitorCordova', :path => '../../node_modules/.pnpm/@capacitor+ios@6.1.0_@capacitor+core@6.1.0/node_modules/@capacitor/ios'
- pod 'CapacitorGeolocation', :path => '../../node_modules/.pnpm/@capacitor+geolocation@6.0.0_@capacitor+core@6.1.0/node_modules/@capacitor/geolocation'
+ pod 'Capacitor', :path => '../../node_modules/.pnpm/@capacitor+ios@6.1.1_@capacitor+core@6.1.1/node_modules/@capacitor/ios'
+ pod 'CapacitorCordova', :path => '../../node_modules/.pnpm/@capacitor+ios@6.1.1_@capacitor+core@6.1.1/node_modules/@capacitor/ios'
+ pod 'CapacitorGeolocation', :path => '../../node_modules/.pnpm/@capacitor+geolocation@6.0.0_@capacitor+core@6.1.1/node_modules/@capacitor/geolocation'
end
target 'App' do
diff --git a/package.json b/package.json
index 32a0b203..dd2fb9eb 100644
--- a/package.json
+++ b/package.json
@@ -58,21 +58,20 @@
"story:preview": " echo RUN story:preview EMPTY",
"story:build": "echo RUN story:build && storybook build",
"chromatic": "npx chromatic --build-script-name=story:build",
- "SAVEDall": "pnpm i && pnpm format && pnpm lint && pnpm build:only-sw && pnpm tauri info && pnpm tauri:build && pnpm build:netlify && pnpm build:vercel && pnpm test:unit && pnpm test:integration && pnpm check",
- "all": "pnpm i && pnpm format && pnpm build:only-sw && pnpm tauri info && pnpm tauri:build && pnpm build:netlify && pnpm build:vercel && pnpm test:unit && pnpm test:integration && pnpm check",
+ "all": "pnpm i && pnpm format && pnpm lint && pnpm build:only-sw && pnpm tauri info && pnpm tauri:build && pnpm build:netlify && pnpm build:vercel && pnpm test:unit && pnpm test:integration && pnpm check",
"icons:build": "bash -c \"./scripts/icon-generator.sh .logo/logo.svg .logo/icon.svg .logo/icon_bg.svg .logo/icon+texture.svg \""
},
"dependencies": {
- "@capacitor/android": "^6.1.0",
- "@capacitor/core": "^6.1.0",
+ "@capacitor/android": "^6.1.1",
+ "@capacitor/core": "^6.1.1",
"@capacitor/geolocation": "^6.0.0",
- "@capacitor/ios": "^6.1.0",
+ "@capacitor/ios": "^6.1.1",
"@fontsource/fira-mono": "^5.0.13",
"@ionic/pwa-elements": "^3.3.0",
"qr-scanner": "^1.4.2"
},
"devDependencies": {
- "@capacitor/cli": "^6.1.0",
+ "@capacitor/cli": "^6.1.1",
"@chromatic-com/storybook": "^1.0.4",
"@eslint/compat": "^1.1.0",
"@eslint/eslintrc": "^3.1.0",
@@ -126,7 +125,7 @@
"eslint-plugin-import-x": "^3.0.1",
"eslint-plugin-playwright": "^1.6.2",
"eslint-plugin-storybook": "0.9.0--canary.156.ed236ca.0",
- "eslint-plugin-svelte": "^2.42.0",
+ "eslint-plugin-svelte": "^2.43.0",
"eslint-plugin-vitest": "^0.5.4",
"glob": "^11.0.0",
"globals": "^15.8.0",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 9d7addcd..f8b75edd 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -9,17 +9,17 @@ importers:
.:
dependencies:
'@capacitor/android':
- specifier: ^6.1.0
- version: 6.1.0(@capacitor/core@6.1.0)
+ specifier: ^6.1.1
+ version: 6.1.1(@capacitor/core@6.1.1)
'@capacitor/core':
- specifier: ^6.1.0
- version: 6.1.0
+ specifier: ^6.1.1
+ version: 6.1.1
'@capacitor/geolocation':
specifier: ^6.0.0
- version: 6.0.0(@capacitor/core@6.1.0)
+ version: 6.0.0(@capacitor/core@6.1.1)
'@capacitor/ios':
- specifier: ^6.1.0
- version: 6.1.0(@capacitor/core@6.1.0)
+ specifier: ^6.1.1
+ version: 6.1.1(@capacitor/core@6.1.1)
'@fontsource/fira-mono':
specifier: ^5.0.13
version: 5.0.13
@@ -31,8 +31,8 @@ importers:
version: 1.4.2
devDependencies:
'@capacitor/cli':
- specifier: ^6.1.0
- version: 6.1.0
+ specifier: ^6.1.1
+ version: 6.1.1
'@chromatic-com/storybook':
specifier: ^1.0.4
version: 1.0.4(react@18.2.0)
@@ -193,8 +193,8 @@ importers:
specifier: 0.9.0--canary.156.ed236ca.0
version: 0.9.0--canary.156.ed236ca.0(eslint@9.7.0)(typescript@5.5.3)
eslint-plugin-svelte:
- specifier: ^2.42.0
- version: 2.42.0(eslint@9.7.0)(svelte@5.0.0-next.190)(ts-node@10.9.2(@types/node@20.14.11)(typescript@5.5.3))
+ specifier: ^2.43.0
+ version: 2.43.0(eslint@9.7.0)(svelte@5.0.0-next.190)(ts-node@10.9.2(@types/node@20.14.11)(typescript@5.5.3))
eslint-plugin-vitest:
specifier: ^0.5.4
version: 0.5.4(@typescript-eslint/eslint-plugin@7.16.1(@typescript-eslint/parser@7.16.1(eslint@9.7.0)(typescript@5.5.3))(eslint@9.7.0)(typescript@5.5.3))(eslint@9.7.0)(typescript@5.5.3)(vitest@2.0.3(@types/node@20.14.11)(sass@1.77.8)(terser@5.26.0))
@@ -1060,26 +1060,26 @@ packages:
'@bcoe/v8-coverage@0.2.3':
resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==}
- '@capacitor/android@6.1.0':
- resolution: {integrity: sha512-S4PW4N5xtKHTrICjG7bkBhI70jdXbb+8nbm1pJpuXChCD0gkCcofJhPaw4bCoO0egcugBN1U7DkegNw5jWpHcw==}
+ '@capacitor/android@6.1.1':
+ resolution: {integrity: sha512-rhO/nH6NJizGV5KizoIoGxCmkos3HnyUzI9TNv8IVy/C8h6lPM5Gt9cxGclb6k0OBTtgv6iJVo654+m4kzv0Qg==}
peerDependencies:
'@capacitor/core': ^6.1.0
- '@capacitor/cli@6.1.0':
- resolution: {integrity: sha512-HEKDh3+FuNZKFHmSDZ7nAnaX3bzhtznYk9GsZBMac1y4CTAxIykPX9wzZ3DzLeM/EbMBGFClUbefkIkimAyfYg==}
+ '@capacitor/cli@6.1.1':
+ resolution: {integrity: sha512-rsRqEadfnBSUX90RZj59oXvi30bpSusLMfIcgbOIArOloTgfaaWr9R471F6m3gGWF7BhNoskJpZcCgSUsfywwA==}
engines: {node: '>=18.0.0'}
hasBin: true
- '@capacitor/core@6.1.0':
- resolution: {integrity: sha512-Kt4ONm0X9xxJXn9Q73oBaKdzep5B/VJw3VjXa2eGul4cD2k37mJwgjpXSMRnLH0Aju5bCiRL8J/hMAfTlokO6A==}
+ '@capacitor/core@6.1.1':
+ resolution: {integrity: sha512-b1s4WDMy3Y1/owTG2/XNGCI6G5SDpF2NT1JMAgcShue13fiAuHA+Ans7Wfei6McvR0KdopAE6tMHmDAfL5PM8Q==}
'@capacitor/geolocation@6.0.0':
resolution: {integrity: sha512-8wrZe6gqfZmsCdvOvrqmezi2Pa8Nz6bQUFbDWsjUKHRzs+qreYNXngzhgKO83GEhHvodiJMnoDJrD2JeQt7FZg==}
peerDependencies:
'@capacitor/core': ^6.0.0
- '@capacitor/ios@6.1.0':
- resolution: {integrity: sha512-ex2q0LAyDDgfJj4fKDQuSNUYSpic3939/8A/sIIIxslwuRBF5i5fuhAngu6BhCt/pQSfEETcHtg2j2vD+YEZ2w==}
+ '@capacitor/ios@6.1.1':
+ resolution: {integrity: sha512-he6+Fhj6x1dSnOzM98xaPvioOU8MNO+qpodCJwnHE3mIRonTpFutXJK8DP8fnNhjDPk2km9VafLSfOeiZXNv3Q==}
peerDependencies:
'@capacitor/core': ^6.1.0
@@ -3578,12 +3578,12 @@ packages:
peerDependencies:
eslint: '>=6'
- eslint-plugin-svelte@2.42.0:
- resolution: {integrity: sha512-mHP6z0DWq97KZvoQcApZHdF9m9epcDV/ICKufeEH18Vh+8vl7S+gwt8WdUohEqKNVMuXRkbvy1suMcVvUDiOGw==}
+ eslint-plugin-svelte@2.43.0:
+ resolution: {integrity: sha512-REkxQWvg2pp7QVLxQNa+dJ97xUqRe7Y2JJbSWkHSuszu0VcblZtXkPBPckkivk99y5CdLw4slqfPylL2d/X4jQ==}
engines: {node: ^14.17.0 || >=16.0.0}
peerDependencies:
eslint: ^7.0.0 || ^8.0.0-0 || ^9.0.0-0
- svelte: ^3.37.0 || ^4.0.0 || ^5.0.0-next.181
+ svelte: ^3.37.0 || ^4.0.0 || ^5.0.0-next.191
peerDependenciesMeta:
svelte:
optional: true
@@ -4558,10 +4558,6 @@ packages:
loupe@3.1.1:
resolution: {integrity: sha512-edNu/8D5MKVfGVFRhFf8aAxiTM6Wumfz5XsaatSxlD3w4R1d/WEKUTydCdPGbl9K7QG/Ca3GnDV2sIKIpXRQcw==}
- lru-cache@10.1.0:
- resolution: {integrity: sha512-/1clY/ui8CzjKFyjdvwPWJUYKiFVXG2I2cY0ssG7h4+hwk+XOIX7ZSG9Q7TW8TW3Kp3BUSqgFWBLgL4PJ+Blag==}
- engines: {node: 14 || >=16.14}
-
lru-cache@10.4.3:
resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==}
@@ -4730,10 +4726,6 @@ packages:
resolution: {integrity: sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==}
engines: {node: '>=8'}
- minipass@7.0.4:
- resolution: {integrity: sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==}
- engines: {node: '>=16 || 14 >=14.17'}
-
minipass@7.1.2:
resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==}
engines: {node: '>=16 || 14 >=14.17'}
@@ -5011,10 +5003,6 @@ packages:
path-parse@1.0.7:
resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==}
- path-scurry@1.10.1:
- resolution: {integrity: sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==}
- engines: {node: '>=16 || 14 >=14.17'}
-
path-scurry@1.11.1:
resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==}
engines: {node: '>=16 || 14 >=14.18'}
@@ -5821,11 +5809,11 @@ packages:
peerDependencies:
svelte: ^3.55.0 || ^4.0.0-next.0 || ^4.0.0 || ^5.0.0-next.0
- svelte-eslint-parser@0.40.0:
- resolution: {integrity: sha512-M+v1HhC5T1WKYVxWexUCS4o6oIBS88XKzOZuhl2ew+eGxol7eC21e+VE8TC4rXJ3iT3iXT0qlZsZcpKjVo5/zQ==}
+ svelte-eslint-parser@0.41.0:
+ resolution: {integrity: sha512-L6f4hOL+AbgfBIB52Z310pg1d2QjRqm7wy3kI1W6hhdhX5bvu7+f0R6w4ykp5HoDdzq+vGhIJmsisaiJDGmVfA==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
peerDependencies:
- svelte: ^3.37.0 || ^4.0.0 || ^5.0.0-next.181
+ svelte: ^3.37.0 || ^4.0.0 || ^5.0.0-next.191
peerDependenciesMeta:
svelte:
optional: true
@@ -6635,7 +6623,7 @@ snapshots:
'@babel/traverse': 7.24.8
'@babel/types': 7.24.9
convert-source-map: 2.0.0
- debug: 4.3.4
+ debug: 4.3.5
gensync: 1.0.0-beta.2
json5: 2.2.3
semver: 6.3.1
@@ -6725,7 +6713,7 @@ snapshots:
'@babel/core': 7.23.7
'@babel/helper-compilation-targets': 7.23.6
'@babel/helper-plugin-utils': 7.22.5
- debug: 4.3.4
+ debug: 4.3.5
lodash.debounce: 4.0.8
resolve: 1.22.8
transitivePeerDependencies:
@@ -6736,7 +6724,7 @@ snapshots:
'@babel/core': 7.24.9
'@babel/helper-compilation-targets': 7.23.6
'@babel/helper-plugin-utils': 7.22.5
- debug: 4.3.4
+ debug: 4.3.5
lodash.debounce: 4.0.8
resolve: 1.22.8
transitivePeerDependencies:
@@ -7999,7 +7987,7 @@ snapshots:
'@babel/helper-split-export-declaration': 7.22.6
'@babel/parser': 7.23.6
'@babel/types': 7.23.6
- debug: 4.3.4
+ debug: 4.3.5
globals: 11.12.0
transitivePeerDependencies:
- supports-color
@@ -8014,7 +8002,7 @@ snapshots:
'@babel/helper-split-export-declaration': 7.24.7
'@babel/parser': 7.24.8
'@babel/types': 7.24.9
- debug: 4.3.4
+ debug: 4.3.5
globals: 11.12.0
transitivePeerDependencies:
- supports-color
@@ -8033,11 +8021,11 @@ snapshots:
'@bcoe/v8-coverage@0.2.3': {}
- '@capacitor/android@6.1.0(@capacitor/core@6.1.0)':
+ '@capacitor/android@6.1.1(@capacitor/core@6.1.1)':
dependencies:
- '@capacitor/core': 6.1.0
+ '@capacitor/core': 6.1.1
- '@capacitor/cli@6.1.0':
+ '@capacitor/cli@6.1.1':
dependencies:
'@ionic/cli-framework-output': 2.2.8
'@ionic/utils-fs': 3.1.7
@@ -8045,7 +8033,7 @@ snapshots:
'@ionic/utils-subprocess': 2.1.11
'@ionic/utils-terminal': 2.3.5
commander: 9.5.0
- debug: 4.3.4
+ debug: 4.3.5
env-paths: 2.2.1
kleur: 4.1.5
native-run: 2.0.0
@@ -8053,24 +8041,24 @@ snapshots:
plist: 3.1.0
prompts: 2.4.2
rimraf: 4.4.1
- semver: 7.5.4
+ semver: 7.6.2
tar: 6.2.0
tslib: 2.6.3
xml2js: 0.5.0
transitivePeerDependencies:
- supports-color
- '@capacitor/core@6.1.0':
+ '@capacitor/core@6.1.1':
dependencies:
tslib: 2.6.3
- '@capacitor/geolocation@6.0.0(@capacitor/core@6.1.0)':
+ '@capacitor/geolocation@6.0.0(@capacitor/core@6.1.1)':
dependencies:
- '@capacitor/core': 6.1.0
+ '@capacitor/core': 6.1.1
- '@capacitor/ios@6.1.0(@capacitor/core@6.1.0)':
+ '@capacitor/ios@6.1.1(@capacitor/core@6.1.1)':
dependencies:
- '@capacitor/core': 6.1.0
+ '@capacitor/core': 6.1.1
'@chromatic-com/storybook@1.0.4(react@18.2.0)':
dependencies:
@@ -8266,7 +8254,7 @@ snapshots:
'@eslint/config-array@0.17.0':
dependencies:
'@eslint/object-schema': 2.1.4
- debug: 4.3.4
+ debug: 4.3.5
minimatch: 3.1.2
transitivePeerDependencies:
- supports-color
@@ -8274,7 +8262,7 @@ snapshots:
'@eslint/eslintrc@1.4.1':
dependencies:
ajv: 6.12.6
- debug: 4.3.4
+ debug: 4.3.5
espree: 9.6.1
globals: 13.24.0
ignore: 5.3.1
@@ -8310,7 +8298,7 @@ snapshots:
'@humanwhocodes/config-array@0.9.5':
dependencies:
'@humanwhocodes/object-schema': 1.2.1
- debug: 4.3.4
+ debug: 4.3.5
minimatch: 3.1.2
transitivePeerDependencies:
- supports-color
@@ -8326,7 +8314,7 @@ snapshots:
'@ionic/cli-framework-output@2.2.8':
dependencies:
'@ionic/utils-terminal': 2.3.5
- debug: 4.3.4
+ debug: 4.3.5
tslib: 2.6.3
transitivePeerDependencies:
- supports-color
@@ -8335,7 +8323,7 @@ snapshots:
'@ionic/utils-array@2.1.5':
dependencies:
- debug: 4.3.4
+ debug: 4.3.5
tslib: 2.6.3
transitivePeerDependencies:
- supports-color
@@ -8343,7 +8331,7 @@ snapshots:
'@ionic/utils-fs@3.1.6':
dependencies:
'@types/fs-extra': 8.1.5
- debug: 4.3.4
+ debug: 4.3.5
fs-extra: 9.1.0
tslib: 2.6.3
transitivePeerDependencies:
@@ -8352,7 +8340,7 @@ snapshots:
'@ionic/utils-fs@3.1.7':
dependencies:
'@types/fs-extra': 8.1.5
- debug: 4.3.4
+ debug: 4.3.5
fs-extra: 9.1.0
tslib: 2.6.3
transitivePeerDependencies:
@@ -8360,14 +8348,14 @@ snapshots:
'@ionic/utils-object@2.1.5':
dependencies:
- debug: 4.3.4
+ debug: 4.3.5
tslib: 2.6.3
transitivePeerDependencies:
- supports-color
'@ionic/utils-object@2.1.6':
dependencies:
- debug: 4.3.4
+ debug: 4.3.5
tslib: 2.6.3
transitivePeerDependencies:
- supports-color
@@ -8376,7 +8364,7 @@ snapshots:
dependencies:
'@ionic/utils-object': 2.1.5
'@ionic/utils-terminal': 2.3.3
- debug: 4.3.4
+ debug: 4.3.5
signal-exit: 3.0.7
tree-kill: 1.2.2
tslib: 2.6.3
@@ -8387,7 +8375,7 @@ snapshots:
dependencies:
'@ionic/utils-object': 2.1.6
'@ionic/utils-terminal': 2.3.4
- debug: 4.3.4
+ debug: 4.3.5
signal-exit: 3.0.7
tree-kill: 1.2.2
tslib: 2.6.3
@@ -8396,7 +8384,7 @@ snapshots:
'@ionic/utils-stream@3.1.5':
dependencies:
- debug: 4.3.4
+ debug: 4.3.5
tslib: 2.6.3
transitivePeerDependencies:
- supports-color
@@ -8409,7 +8397,7 @@ snapshots:
'@ionic/utils-stream': 3.1.5
'@ionic/utils-terminal': 2.3.3
cross-spawn: 7.0.3
- debug: 4.3.4
+ debug: 4.3.5
tslib: 2.6.3
transitivePeerDependencies:
- supports-color
@@ -8417,7 +8405,7 @@ snapshots:
'@ionic/utils-terminal@2.3.3':
dependencies:
'@types/slice-ansi': 4.0.0
- debug: 4.3.4
+ debug: 4.3.5
signal-exit: 3.0.7
slice-ansi: 4.0.0
string-width: 4.2.3
@@ -8431,7 +8419,7 @@ snapshots:
'@ionic/utils-terminal@2.3.4':
dependencies:
'@types/slice-ansi': 4.0.0
- debug: 4.3.4
+ debug: 4.3.5
signal-exit: 3.0.7
slice-ansi: 4.0.0
string-width: 4.2.3
@@ -8445,7 +8433,7 @@ snapshots:
'@ionic/utils-terminal@2.3.5':
dependencies:
'@types/slice-ansi': 4.0.0
- debug: 4.3.4
+ debug: 4.3.5
signal-exit: 3.0.7
slice-ansi: 4.0.0
string-width: 4.2.3
@@ -8475,7 +8463,7 @@ snapshots:
dependencies:
'@types/istanbul-lib-coverage': 2.0.6
'@types/istanbul-reports': 3.0.4
- '@types/node': 20.11.17
+ '@types/node': 20.14.11
'@types/yargs': 16.0.9
chalk: 4.1.2
@@ -9131,7 +9119,7 @@ snapshots:
pretty-hrtime: 1.0.3
prompts: 2.4.2
read-pkg-up: 7.0.1
- semver: 7.5.4
+ semver: 7.6.2
telejson: 7.2.0
tiny-invariant: 1.3.1
ts-dedent: 2.2.0
@@ -9492,7 +9480,7 @@ snapshots:
'@sveltejs/vite-plugin-svelte-inspector@2.1.0(@sveltejs/vite-plugin-svelte@3.1.1(svelte@5.0.0-next.190)(vite@5.3.4(@types/node@20.14.11)(sass@1.77.8)(terser@5.26.0)))(svelte@5.0.0-next.190)(vite@5.3.4(@types/node@20.14.11)(sass@1.77.8)(terser@5.26.0))':
dependencies:
'@sveltejs/vite-plugin-svelte': 3.1.1(svelte@5.0.0-next.190)(vite@5.3.4(@types/node@20.14.11)(sass@1.77.8)(terser@5.26.0))
- debug: 4.3.4
+ debug: 4.3.5
svelte: 5.0.0-next.190
vite: 5.3.4(@types/node@20.14.11)(sass@1.77.8)(terser@5.26.0)
transitivePeerDependencies:
@@ -9621,17 +9609,17 @@ snapshots:
'@types/body-parser@1.19.5':
dependencies:
'@types/connect': 3.4.38
- '@types/node': 20.11.17
+ '@types/node': 20.14.11
'@types/connect@3.4.38':
dependencies:
- '@types/node': 20.11.17
+ '@types/node': 20.14.11
'@types/cookie@0.6.0': {}
'@types/cross-spawn@6.0.6':
dependencies:
- '@types/node': 20.11.17
+ '@types/node': 20.14.11
'@types/detect-port@1.3.5': {}
@@ -9652,7 +9640,7 @@ snapshots:
'@types/express-serve-static-core@4.17.41':
dependencies:
- '@types/node': 20.11.17
+ '@types/node': 20.14.11
'@types/qs': 6.9.11
'@types/range-parser': 1.2.7
'@types/send': 0.17.4
@@ -9709,7 +9697,7 @@ snapshots:
'@types/node-fetch@2.6.10':
dependencies:
- '@types/node': 20.11.17
+ '@types/node': 20.14.11
form-data: 4.0.0
'@types/node@18.19.6':
@@ -9755,13 +9743,13 @@ snapshots:
'@types/send@0.17.4':
dependencies:
'@types/mime': 1.3.5
- '@types/node': 20.11.17
+ '@types/node': 20.14.11
'@types/serve-static@1.15.5':
dependencies:
'@types/http-errors': 2.0.4
'@types/mime': 3.0.4
- '@types/node': 20.11.17
+ '@types/node': 20.14.11
'@types/slice-ansi@4.0.0': {}
@@ -9832,7 +9820,7 @@ snapshots:
'@typescript-eslint/types': 8.0.0-alpha.41
'@typescript-eslint/typescript-estree': 8.0.0-alpha.41(typescript@5.5.3)
'@typescript-eslint/visitor-keys': 8.0.0-alpha.41
- debug: 4.3.4
+ debug: 4.3.5
eslint: 9.7.0
optionalDependencies:
typescript: 5.5.3
@@ -9858,7 +9846,7 @@ snapshots:
dependencies:
'@typescript-eslint/typescript-estree': 7.16.1(typescript@5.5.3)
'@typescript-eslint/utils': 7.16.1(eslint@9.7.0)(typescript@5.5.3)
- debug: 4.3.4
+ debug: 4.3.5
eslint: 9.7.0
ts-api-utils: 1.3.0(typescript@5.5.3)
optionalDependencies:
@@ -9870,7 +9858,7 @@ snapshots:
dependencies:
'@typescript-eslint/typescript-estree': 8.0.0-alpha.41(typescript@5.5.3)
'@typescript-eslint/utils': 8.0.0-alpha.41(eslint@9.7.0)(typescript@5.5.3)
- debug: 4.3.4
+ debug: 4.3.5
ts-api-utils: 1.3.0(typescript@5.5.3)
optionalDependencies:
typescript: 5.5.3
@@ -9888,7 +9876,7 @@ snapshots:
dependencies:
'@typescript-eslint/types': 7.16.0
'@typescript-eslint/visitor-keys': 7.16.0
- debug: 4.3.4
+ debug: 4.3.5
globby: 11.1.0
is-glob: 4.0.3
minimatch: 9.0.5
@@ -9903,7 +9891,7 @@ snapshots:
dependencies:
'@typescript-eslint/types': 7.16.1
'@typescript-eslint/visitor-keys': 7.16.1
- debug: 4.3.4
+ debug: 4.3.5
globby: 11.1.0
is-glob: 4.0.3
minimatch: 9.0.5
@@ -9918,7 +9906,7 @@ snapshots:
dependencies:
'@typescript-eslint/types': 8.0.0-alpha.41
'@typescript-eslint/visitor-keys': 8.0.0-alpha.41
- debug: 4.3.4
+ debug: 4.3.5
globby: 11.1.0
is-glob: 4.0.3
minimatch: 9.0.5
@@ -10132,7 +10120,7 @@ snapshots:
agent-base@6.0.2:
dependencies:
- debug: 4.3.4
+ debug: 4.3.5
transitivePeerDependencies:
- supports-color
@@ -10839,7 +10827,7 @@ snapshots:
detect-port@1.5.1:
dependencies:
address: 1.2.2
- debug: 4.3.4
+ debug: 4.3.5
transitivePeerDependencies:
- supports-color
@@ -11040,7 +11028,7 @@ snapshots:
esbuild-register@3.5.0(esbuild@0.18.20):
dependencies:
- debug: 4.3.4
+ debug: 4.3.5
esbuild: 0.18.20
transitivePeerDependencies:
- supports-color
@@ -11213,7 +11201,7 @@ snapshots:
- supports-color
- typescript
- eslint-plugin-svelte@2.42.0(eslint@9.7.0)(svelte@5.0.0-next.190)(ts-node@10.9.2(@types/node@20.14.11)(typescript@5.5.3)):
+ eslint-plugin-svelte@2.43.0(eslint@9.7.0)(svelte@5.0.0-next.190)(ts-node@10.9.2(@types/node@20.14.11)(typescript@5.5.3)):
dependencies:
'@eslint-community/eslint-utils': 4.4.0(eslint@9.7.0)
'@jridgewell/sourcemap-codec': 1.4.15
@@ -11226,7 +11214,7 @@ snapshots:
postcss-safe-parser: 6.0.0(postcss@8.4.39)
postcss-selector-parser: 6.1.1
semver: 7.6.2
- svelte-eslint-parser: 0.40.0(svelte@5.0.0-next.190)
+ svelte-eslint-parser: 0.41.0(svelte@5.0.0-next.190)
optionalDependencies:
svelte: 5.0.0-next.190
transitivePeerDependencies:
@@ -11271,7 +11259,7 @@ snapshots:
ajv: 6.12.6
chalk: 4.1.2
cross-spawn: 7.0.3
- debug: 4.3.4
+ debug: 4.3.5
doctrine: 3.0.0
enquirer: 2.4.1
escape-string-regexp: 4.0.0
@@ -11705,9 +11693,9 @@ snapshots:
dependencies:
foreground-child: 3.1.1
jackspeak: 2.3.6
- minimatch: 9.0.3
- minipass: 7.0.4
- path-scurry: 1.10.1
+ minimatch: 9.0.5
+ minipass: 7.1.2
+ path-scurry: 1.11.1
glob@10.4.5:
dependencies:
@@ -11741,7 +11729,7 @@ snapshots:
fs.realpath: 1.0.0
minimatch: 8.0.4
minipass: 4.2.8
- path-scurry: 1.10.1
+ path-scurry: 1.11.1
global-modules@2.0.0:
dependencies:
@@ -11900,7 +11888,7 @@ snapshots:
https-proxy-agent@5.0.1:
dependencies:
agent-base: 6.0.2
- debug: 4.3.4
+ debug: 4.3.5
transitivePeerDependencies:
- supports-color
@@ -12308,8 +12296,6 @@ snapshots:
dependencies:
get-func-name: 2.0.2
- lru-cache@10.1.0: {}
-
lru-cache@10.4.3: {}
lru-cache@11.0.0: {}
@@ -12461,8 +12447,6 @@ snapshots:
minipass@5.0.0: {}
- minipass@7.0.4: {}
-
minipass@7.1.2: {}
minizlib@2.1.2:
@@ -12495,7 +12479,7 @@ snapshots:
'@ionic/utils-fs': 3.1.7
'@ionic/utils-terminal': 2.3.5
bplist-parser: 0.3.2
- debug: 4.3.4
+ debug: 4.3.5
elementtree: 0.1.7
ini: 4.1.1
plist: 3.1.0
@@ -12731,11 +12715,6 @@ snapshots:
path-parse@1.0.7: {}
- path-scurry@1.10.1:
- dependencies:
- lru-cache: 10.1.0
- minipass: 7.0.4
-
path-scurry@1.11.1:
dependencies:
lru-cache: 10.4.3
@@ -13640,7 +13619,7 @@ snapshots:
- stylus
- sugarss
- svelte-eslint-parser@0.40.0(svelte@5.0.0-next.190):
+ svelte-eslint-parser@0.41.0(svelte@5.0.0-next.190):
dependencies:
eslint-scope: 7.2.2
eslint-visitor-keys: 3.4.3
diff --git a/scripts/git-merge_main-to-all-ui.sh b/scripts/git-merge_main-to-all-ui.sh
index 7adfae29..a023ff31 100644
--- a/scripts/git-merge_main-to-all-ui.sh
+++ b/scripts/git-merge_main-to-all-ui.sh
@@ -233,26 +233,24 @@ function git_push_with_log() {
range="$remote_sha...$local_sha"
fi
- # List of modified files
- { echo "Modified files:"
+ {
+ # List of modified files
+ echo "Modified files:"
git diff --name-status "$range"
echo ""
- } >> "$log_file"
- # List of commits being pushed
- { echo "Commits being pushed:"
+ # List of commits being pushed
+ echo "Commits being pushed:"
git log --oneline "$range"
echo ""
- } >> "$log_file"
- # List of merged branches
- { echo "Merged branches:"
+ # List of merged branches
+ echo "Merged branches:"
git branch --merged "$branch" | grep -v "^\*"
echo ""
- } >> "$log_file"
- # Additional information
- { echo "Additional information:"
+ # Additional information
+ echo "Additional information:"
echo "Current user: $(git config user.name)"
echo "Current email: $(git config user.email)"
echo "Remote URL: $(git remote get-url origin)"
diff --git a/scripts/git-run-all-in-branches.sh b/scripts/git-run-all-in-branches.sh
index d4b7ecef..5b16f293 100644
--- a/scripts/git-run-all-in-branches.sh
+++ b/scripts/git-run-all-in-branches.sh
@@ -41,7 +41,6 @@ export GOOD_SKIP_TARGET_BRANCHES=(
export TARGET_BRANCHES=(
"main"
"storybook"
- "ui-agnostic"
"ui-bulma"
"ui-shoelace"
"ui-svelteui"
@@ -49,6 +48,7 @@ export TARGET_BRANCHES=(
)
export BROKEN_TARGET_BRANCHES=(
"histoire" # `pnpm story:build`: CompileError: The $ name is reserved, and cannot be used for variables and imports
+ "ui-agnostic" # `pnpm build`: CompileError: Declaring or accessing a prop starting with `$$` is illegal ($$props.$$slots)
"ui-bootstrap" # `pnpm check`: Error: Argument of type 'typeof Col' is not assignable to parameter of type 'ConstructorOfATypedSvelteComponent'.
"ui-carbon" # `pnpm build:base`: "Error: The 'swSrc' file can't be read. ENOENT: no such file or directory"
"ui-framework7" # `pnpm build:base`: "Error: The 'swSrc' file can't be read. ENOENT: no such file or directory" - service worker build fails, probably due to all components not compatible with Svelte 5, buncho "ARIA role" issues, etc.
@@ -168,7 +168,6 @@ function parse_arguments() {
local opt OPTIND OPTARG
OPTIND=1
print_last=0
- continue_merge=0
# while getopts "hvcn:a:" opt; do
while getopts "hp" opt; do
case $opt in
diff --git a/src/lib/components/darkmode/DarkMode.svelte b/src/lib/components/darkmode/DarkMode.svelte
index 4ee574ae..f7df9471 100644
--- a/src/lib/components/darkmode/DarkMode.svelte
+++ b/src/lib/components/darkmode/DarkMode.svelte
@@ -4,6 +4,7 @@
import { onMount, type Snippet } from 'svelte';
import { browser } from '$app/environment';
+ import { BRIGHT_ENTITY, CRESCENT_MOON_ENTITY } from '$lib/constants/entities';
let {
htmlDarkClass,
@@ -78,7 +79,10 @@
) => {
// Current color mode change event, passed through data so snippet can use it
// If arg `newIsDark` is provided, use it, otherwise use current data.isDarkMode (which should be bound to selector element value)
- const setTheme = (newIsDark === undefined ? data.isDarkMode : newIsDark) ? 'dark' : 'light';
+ if (newIsDark !== undefined) {
+ data.isDarkMode = !!newIsDark;
+ }
+ const setTheme = data.isDarkMode ? 'dark' : 'light';
colorSchemeManager?.setColorScheme(setTheme);
// Update the store (only from user choice)
colorSchemeManager?.setStoredColorScheme(setTheme);
@@ -137,9 +141,15 @@
{:else}
{/if}
{/if}
diff --git a/src/lib/utils/errorUtils.ts.txt b/src/lib/utils/errorUtils.ts.txt
new file mode 100644
index 00000000..4764feb0
--- /dev/null
+++ b/src/lib/utils/errorUtils.ts.txt
@@ -0,0 +1,104 @@
+// An idea of error handling from
+
+export enum MetricsEventScreenName {
+ Source = 'source',
+ Model = 'model',
+ Dashboard = 'dashboard',
+ MetricsDefinition = 'metrics-definition',
+ CLI = 'cli',
+ Splash = 'splash',
+ Home = 'home',
+ Organization = 'organization',
+ Project = 'project',
+ Report = 'report',
+ ReportExport = 'report-export',
+ Unknown = 'unknown'
+}
+
+export class ErrorEventHandler {
+ public constructor(
+ private readonly metricsService: MetricsService,
+ private readonly commonUserMetrics: CommonUserFields
+ ) {
+ this.commonUserMetrics = commonUserMetrics;
+ }
+
+ public fireSourceErrorEvent(
+ space: MetricsEventSpace,
+ screen_name: MetricsEventScreenName,
+ error_code: SourceErrorCodes,
+ connection_type: SourceConnectionType,
+ file_type: SourceFileType,
+ glob: boolean
+ ) {
+ return this.metricsService.dispatch('sourceErrorEvent', [
+ this.commonUserMetrics,
+ space,
+ screen_name,
+ error_code,
+ connection_type,
+ file_type,
+ glob
+ ]);
+ }
+
+ public fireHTTPErrorBoundaryEvent(
+ api: string,
+ status: string,
+ message: string,
+ screenName: MetricsEventScreenName
+ ) {
+ return this.metricsService.dispatch('httpErrorEvent', [
+ this.commonUserMetrics,
+ screenName,
+ api,
+ status,
+ message
+ ]);
+ }
+
+ public fireJavascriptErrorBoundaryEvent(
+ stack: string,
+ message: string,
+ screenName: MetricsEventScreenName
+ ) {
+ return this.metricsService.dispatch('javascriptErrorEvent', [
+ this.commonUserMetrics,
+ screenName,
+ stack,
+ message
+ ]);
+ }
+}
+
+export let errorEvent: ErrorEventHandler;
+
+export function addJavascriptErrorListeners() {
+ const errorHandler = (errorEvt: ErrorEvent) => {
+ errorEvent?.fireJavascriptErrorBoundaryEvent(
+ errorEvt.error?.stack ?? '',
+ errorEvt.message,
+ getScreenNameFromPage(get(page))
+ );
+ };
+ const unhandledRejectionHandler = (rejectionEvent: PromiseRejectionEvent) => {
+ let stack = '';
+ let message = '';
+ if (typeof rejectionEvent.reason === 'string') {
+ message = rejectionEvent.reason;
+ } else if (rejectionEvent.reason instanceof Error) {
+ stack = rejectionEvent.reason.stack ?? '';
+ message = rejectionEvent.reason.message;
+ } else {
+ message = String.toString.apply(rejectionEvent.reason);
+ }
+ errorEvent?.fireJavascriptErrorBoundaryEvent(stack, message, getScreenNameFromPage(get(page)));
+ };
+
+ window.addEventListener('error', errorHandler);
+ window.addEventListener('unhandledrejection', unhandledRejectionHandler);
+ return () => {
+ window.removeEventListener('error', errorHandler);
+ window.removeEventListener('unhandledrejection', unhandledRejectionHandler);
+ };
+}
diff --git a/src/lib/utils/test.svelte.ts b/src/lib/utils/test.svelte.ts
index d1124a32..e33d1230 100644
--- a/src/lib/utils/test.svelte.ts
+++ b/src/lib/utils/test.svelte.ts
@@ -43,6 +43,7 @@ export function withEffect(fn: () => void) {
let promise;
const cleanup = $effect.root(() => (promise = fn()));
try {
+ // eslint-disable-next-line @typescript-eslint/await-thenable
return await promise;
} finally {
cleanup();
diff --git a/src/routes/+layout.svelte b/src/routes/+layout.svelte
index cf7f49cb..7d98b9e2 100644
--- a/src/routes/+layout.svelte
+++ b/src/routes/+layout.svelte
@@ -57,13 +57,17 @@
{#snippet content(data)}
{/snippet}
diff --git a/tsconfig.configs.json b/tsconfig.configs.json
index a529a112..9d6ae159 100644
--- a/tsconfig.configs.json
+++ b/tsconfig.configs.json
@@ -10,6 +10,7 @@
"./prettier.config.cjs",
"./pwa-configuration.js",
"./svelte.config.js",
- "./vite.config.js"
+ "./vite.config.js",
+ "./vitest.workspace.ts"
]
}
diff --git a/tsconfig.json b/tsconfig.json
index 0d4089bb..b7fb40a1 100644
--- a/tsconfig.json
+++ b/tsconfig.json
@@ -40,6 +40,7 @@
"exclude": [
"./node_modules/**",
"./.svelte-kit/[!ambient.d.ts]**",
+ "./.trunk/**",
"./.types",
"./src-tauri/target/**",
"./android/**",
diff --git a/vitest.workspace.js b/vitest.workspace.js
deleted file mode 100644
index 94adab66..00000000
--- a/vitest.workspace.js
+++ /dev/null
@@ -1,3 +0,0 @@
-import { defineWorkspace } from 'vitest/config';
-
-export default defineWorkspace(['./vite.config.ts']);
diff --git a/vitest.workspace.ts b/vitest.workspace.ts
new file mode 100644
index 00000000..85120475
--- /dev/null
+++ b/vitest.workspace.ts
@@ -0,0 +1,13 @@
+import { defineWorkspace } from 'vitest/config';
+// ? import viteConfig from './vite.config';
+
+export default defineWorkspace([
+ // ? './vite.config.ts'
+ // ? viteConfig
+ {
+ extends: './vite.config.ts',
+ test: {
+ typecheck: { tsconfig: 'tsconfig.json' }
+ }
+ }
+]);