From 021f5df471fd8dd2ddcaa2d007e0ae0f56ed9f15 Mon Sep 17 00:00:00 2001 From: IVA2K Date: Wed, 10 Jan 2024 12:24:49 -0800 Subject: [PATCH] Merge branch 'main' into ui-carbon --- .vscode/launch.json | 22 +- CREATING.md | 136 ++--- README.md | 15 +- netlify.toml | 2 +- package.json | 29 +- patches/@vite-pwa__sveltekit@0.0.1.patch | 10 - pnpm-lock.yaml | 485 +++++++----------- pwa-configuration.js | 8 +- .../git-merge_main-to-all-ui.sh | 16 +- .../git-msys2-setup-cred.cmd | 0 src/lib/components/offline/Offline.svelte | 4 +- src/routes/about/+page.ts | 3 +- src/routes/sverdle/how-to-play/+page.ts | 3 +- src/routes/sverdle/reduced-motion.ts | 4 +- svelte.config.js | 15 +- tsconfig.json | 4 +- vite.config.ts | 2 + 17 files changed, 359 insertions(+), 399 deletions(-) delete mode 100644 patches/@vite-pwa__sveltekit@0.0.1.patch rename git-merge_main-to-all-ui.sh => scripts/git-merge_main-to-all-ui.sh (68%) rename git-msys2-setup-cred.cmd => scripts/git-msys2-setup-cred.cmd (100%) diff --git a/.vscode/launch.json b/.vscode/launch.json index 25bf9f9..550b48e 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -6,49 +6,55 @@ "configurations": [ { "command": "pnpm storybook", - "name": "Run pnpm storybook", + "name": "pnpm storybook", "request": "launch", "type": "node-terminal" }, { "command": "pnpm storybook:build", - "name": "Run pnpm storybook:build", + "name": "pnpm storybook:build", "request": "launch", "type": "node-terminal" }, { "command": "pnpm test", - "name": "Run pnpm test", + "name": "pnpm test", "request": "launch", "type": "node-terminal" }, { "command": "pnpm test:debug", - "name": "Run pnpm test:debug", + "name": "pnpm test:debug", + "request": "launch", + "type": "node-terminal" + }, + { + "command": "pnpm build:netlify", + "name": "pnpm build:netlify", "request": "launch", "type": "node-terminal" }, { "command": "pnpm build:vercel", - "name": "Run pnpm build:vercel", + "name": "pnpm build:vercel", "request": "launch", "type": "node-terminal" }, { "command": "pnpm build:only", - "name": "Run pnpm build:only", + "name": "pnpm build:only", "request": "launch", "type": "node-terminal" }, { "command": "pnpm build:only-sw", - "name": "Run pnpm build:only-sw", + "name": "pnpm build:only-sw", "request": "launch", "type": "node-terminal" }, { "command": "pnpm build:only-destroy", - "name": "Run pnpm build:only-destroy", + "name": "pnpm build:only-destroy", "request": "launch", "type": "node-terminal" }, diff --git a/CREATING.md b/CREATING.md index da4518e..cbe294b 100644 --- a/CREATING.md +++ b/CREATING.md @@ -297,7 +297,7 @@ Other optimizations are getting higher speed / better UX. SvelteKit provides the pnpm i -D @types/object-hash object-hash vanilla-lazyload ``` -Create `src/lib/components/seo/SEO.svelte` component and few sub-components for generating meta-data for SEO (see sources). SEO component is used on each page, and relies on the configuration information from `$lib/config/website.js`. +Create `src/lib/components/seo/SEO.svelte` component and few sub-components for generating meta-data for SEO (see sources). SEO component is used on each page, and relies on the configuration information from `src/lib/config/website.js`. It is worth stressing that there's no way to determine hosting website URL during build / prerendering phase. PUBLIC_SITE_URL variable must be configured so the SEO canonical URL is generated correctly. Site URL's for Netlify and Vercel can be also set in `prerender.origin` in `svelte.config.js`, but they seem to not work as expected (SEO.svelte does not receive `$page.url.origin` other than `http://sveltekit-prerender`). @@ -316,25 +316,25 @@ See the following tools for checking the structured data on your deployed websit TODO: (soon) Fix FB issue: Missing Properties | The following required properties are missing: fb:app_id -### Add Store Services +### Add SSR-Safe Store Services -SvelteKit provides good server/client support for stores. They are easy to use, but have some mines to avoid (see ). +SvelteKit provides good server/client support for stores. They are easy to use, but have some mines to avoid when using SSR (see and ). -See package addressing the issue in most simple to use way: - -See . - -For upcoming v5.0 Svelte runes, see . +See package addressing the issue in the most simple to use way: `@svelte-kits/store` ```bash pnpm install -D @svelte-kits/store ``` -Then just replace `svelte/store` with `@svelte-kits/store`, for all store uses. +Then just replace `svelte/store` with `@svelte-kits/store`, for all store uses (though only `writable` store is affected by SSR). + +Also see . + +For upcoming v5.0 Svelte runes, see . ### Add Service Worker for Offline Operation -Service Worker will allow the app to work in offline mode. See and . +Service Worker will allow the app to work in offline mode. See and / . In order for the application to work offline, `csr` should NOT be set to false on any of the pages since it will prevent injecting JavaScript into the layout for offline support. @@ -343,13 +343,12 @@ The app has to satisfy PWA Minimal Requirements, see -#### Fix Issues - -// TODO: (now) File issue: - -Error importing from '@vite-pwa/sveltekit' - there is `export default {...}` in @vite-pwa/sveltekit/dist/index.mjs. -Changing it to `export {...}` (removing `default`) fixes the problem. -Use `pnpm patch @vite-pwa/sveltekit`, editing the file in directory created by `pnpm patch`, and creating a patch file with `pnpm patch-commit `. +### Add Favicon Component -### Create Favicon Component +To encapsulate all favicon-related stuff (and keep the mess out of app.html), create `src/lib/components/favicon/Favicon.svelte` component. Use it from `src/routes/+layout.svelte` file. -To encapsulate all favicon-related stuff (and keep the mess out of app.html), create ``$lib/components/favicon/Favicon.svelte` component. Use it from `src/routes/+layout.svelte` file. - -Add `badge.ts` to all png favicons. +Add `badge.ts` to all png favicons so they dynamically display number of new notifications. See source files. @@ -385,7 +377,7 @@ A slide-out drawer is a must-have functionality for most modern apps and many we Let's create one, with animations, accessibility, SSR-friendly. -See `/src/lib/components/drawer/Drawer.svelte` and `src/lib/actions/FocusTrap/focusTrap.ts` sources. +See `src/lib/components/drawer/Drawer.svelte` and `src/lib/actions/FocusTrap/focusTrap.ts` sources. Credits: @@ -399,6 +391,8 @@ Modifications include: - Use CSS `visibility: hidden` so no interference with layout and other elements. - Keyboard handling of 'Escape' to close and 'Tab' to move focus between elements. +The Drawer component is not used yet, but will be needed later. + ### Add Tauri Add desktop support using Tauri (version 1.2 as of writing time). @@ -409,9 +403,12 @@ Note: iOS and Android support is promised in Tauri discussions, but not implemen ```bash pnpm i -D @tauri-apps/api @tauri-apps/cli +rustc --version +# If needed, update to rustc 1.60 or newer: +rustup update ``` -Add scripts to package.json: +Add scripts to package.json (see source for exact changes, these are the essence): ```json { @@ -436,6 +433,8 @@ pnpm run tauri init # What is your frontend build command? - pnpm run build ``` +Add some .gitignore/.eslintignore/.prettierignore patterns (see source files). + #### Change bundle identifier To remove the issue: @@ -457,9 +456,18 @@ Edit file `src-tauri/tauri.conf.json`: ... ``` +#### Fix Tauri Issues + +TODO: (soon): + +```bash +pnpm tauri:dev +Warn Invalid target triple: x86_64-pc-windows-msvc +``` + ### Set Svelte SPA mode -For using Tauri and Capacitor (standalone app) - SvelteKit should be set to SPA mode and explicitly opt out of SvelteKit\'s assumption needing a server. +For using Tauri and Capacitor (standalone app) - SvelteKit should be set to SPA mode and explicitly opt out of SvelteKit's assumption needing a server. SPA mode is set by using adapter-static and setting `fallback` option, see . @@ -502,7 +510,7 @@ Create `src/routes/+layout.ts` to set `prerender` and `ssr`: // src/routes/+layout.ts // Let SvelteKit decide to prerender for each page by default: -export const prerender = 'auto'; +export const prerender = true; // As of @sveltejs/kit 1.0.0-next.563, pages with actions (e.g. sub-routes) throw error in `vite build`. // Each such route should set prerender = false if needed in `src/routes/**/+page.ts`. @@ -547,8 +555,48 @@ const config = { See netlify.toml and vercel.json files for other deploy settings. +Add '.netlify' and '.vercel' to .gitignore, .eslintignore, .prettierignore (see sources). + Storybook (below) is deployed on Chromatic. +### Rework Header into Header + PureHeader + +Non-pure Header loads $page from $app/store, and it makes it hard to use in Histoire/Storybook - it will need mocking of $app/stores which is a lot of work without benefits. Instead we will make PureHeader. + +In "src/lib/components/header" copy Header.svelte to PureHeader.svelte, remove `import { page } from '$app/stores';` and replace all usages of $page.pathname with a component parameter `pathname` in PureHeader. PureHeader will be usable in Histoire/Storybook below. + +Rework Header.svelte to use PureHeader and pass it the $page.pathname (see sources). + +### Rework PureHeader Corners + +Add classes "corner-left" and "corner-right" to left and right corners and split their styling, adding "--corner-left-width" and "--corner-right-width" variables, so their sizes can be changed as needed. + +Add `` to the right corner of PureHeader, and move github logo to be slotted into Header>PureHeader in "+layout.svelte". + +For styling to apply into the slot elements, add `:global()` clauses to some of styles on PureHeader. + +(See sources). + +### Add DarkMode Component + +See sources - "src/components/darkmode/\*" and edits to "src/routes/+layout.svelte". + +Note: DarkMode toggles 'color-scheme' property on \ tag between 'light' and 'dark'/. However, there's no effect visible, as there's no support for dark mode in current "/src/routes/style.css". + +There is an unresolved "ParseError" issue in eslint-plugin-svelte3 which is wrongly closed, causing Lint to fail on ColorSchemeManager class in DarkMode.svelte. + +See "patches/eslint-plugin-svelte3@4.0.0.patch" for a hot-fix. + +See open issue + +### Add Github and Svelte icons to Footer links + +See `src/routes/+layout.svelte` source file. + +### Add Histoire + +See `histoire` branch. + ### Add Storybook ```bash @@ -651,10 +699,6 @@ The problem with node<17.0.0 is it breaks playwright which requires node>17. No For all other issues, adding `cross-env NODE_OPTIONS=--openssl-legacy-provider` to all affected scripts (storybook ones) in `package.json` is the only practical solution for now (it opens up old security vulnerabilities in legacy openssl). -```bash -pnpm i -D cross-env -``` - TODO: (blocked by upstream) When there's a fix for node>17 and storybook / webpack@4, remove `NODE_OPTIONS=--openssl-legacy-provider` from `package.json`. #### Using \*.stories.svelte files @@ -665,36 +709,6 @@ An open/unresolved issue is storybook's v6.5.3 storyStoreV7=true not parsing `.s At least, Storybook is working with stories (.tsx, not .svelte) for Counter and Header (after reworking Header into Header + PureHeader). -### Rework Header into Header + PureHeader - -Non-pure Header loads $page from $app/store, and it makes it hard to use in Storybook - it will need mocking of $app/stores which is a lot of work and no benefits. Instead we will make PureHeader. - -In "src/lib/components/header" copy Header.svelte to PureHeader.svelte, remove `import { page } from '$app/stores';` and replace all usages of $page.pathname to component parameter `pathname` in PureHeader. PureHeader will be usable in Storybook below. - -Rework Header.svelte to use PureHeader and pass it the $page.pathname (see sources). - -### Rework PureHeader Corners - -Add classes "corner-left" and "corner-right" to left and right corners and split their styling, adding "--corner-left-width" and "--corner-right-width" variables, so their sizes can be changed as needed. - -Add `` to the right corner of PureHeader, and move github logo to be slotted into Header>PureHeader in "+layout.svelte". - -For styling to apply into the slot elements, add `:global()` clauses to some of styles on PureHeader. - -(See sources). - -### Add DarkMode Component - -See sources - "src/components/darkmode/\*" and edits to "src/routes/+layout.svelte". - -Note: DarkMode toggles 'color-scheme' property on \ tag between 'light' and 'dark'/. However, there's no effect visible, as there's no support for dark mode in current "/src/routes/style.css". - -There is an unresolved "ParseError" issue in eslint-plugin-svelte3 which is wrongly closed, causing Lint to fail on ColorSchemeManager class in DarkMode.svelte. - -See "patches/eslint-plugin-svelte3@4.0.0.patch" for a hot-fix. - -See open issue - ### Add @storybook/addon-a11y ```bash diff --git a/README.md b/README.md index 0c3b91b..c0531d8 100644 --- a/README.md +++ b/README.md @@ -39,6 +39,7 @@ Is it Native? - No. It uses JavaScript / TypeScript and modern tooling to create Out of the box features: - SEO and integration with Social Networks +- SSR / Server-Side Rendering - 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. - Support deep links, in online and in offline modes. @@ -74,6 +75,16 @@ Continuous Integrations and Deployments: - [Netlify](https://svelte-blank-20221125.netlify.app) - App Demo - [Vercel](https://svelte-blank-20221125.vercel.app) - App Demo +Enhancements not found in the foundational packages and templates: + +- HTTPS support in development +- Vitest coverage +- Playwright reports +- ESLint imports +- SSR-safe Svelte stores +- Consolidated website configuration +- Organized Favicon resolutions with notification badges support + ## Install ### Quick Start @@ -125,7 +136,7 @@ When deploying your website to any provider (Netlify, Vercel), make sure to set ## Developing Locally -Please follow the [Tauri Getting Started Guide](https://tauri.studio/en/docs/getting-started/intro#steps) to setup your system with the required Rust toolchain. +Please follow the [Tauri Getting Started Guide](https://tauri.app/v1/guides/getting-started/prerequisites) to setup your system with the required [Rust](https://www.rust-lang.org/) toolchain. This application is built like a typical Node.js application. However, instead of `npm`, [`pnpm`](https://pnpm.io/) is used for package management. @@ -162,6 +173,7 @@ To run desktop app (using Tauri) ```bash pnpm run tauri:dev +# The app window will open ``` To create desktop executable: @@ -206,6 +218,7 @@ This project has few of the top UI frameworks integrated in separate git branche | Git Branch | UI Framework | Dark Theme Switch | Notes | |-|-|:-:|-| +| main | (none) | Y | | | [ui-agnostic](../../tree/ui-agnostic) | [AgnosticUI](https://github.com/AgnosticUI/agnosticui) | Y | | | [ui-bootstrap](../../tree/ui-bootstrap) | [Bootstrap](https://github.com/twbs/bootstrap) | Y | [Sveltestrap](https://github.com/bestguy/sveltestrap), Themes from [Bootswatch](https://github.com/thomaspark/bootswatch) | | [ui-bulma](../../tree/ui-bulma) | [Bulma](https://bulma.io/) | N | | diff --git a/netlify.toml b/netlify.toml index 1725f87..7ee26c5 100644 --- a/netlify.toml +++ b/netlify.toml @@ -2,7 +2,7 @@ NODE_VERSION = "18" NPM_FLAGS="--version" [build] - command = "npx pnpm install --store=node_modules/.pnpm-store && npx pnpm run build:only-sw" + command = "pnpm run build:only-sw" publish = "build" [[headers]] diff --git a/package.json b/package.json index d5143b2..393e769 100644 --- a/package.json +++ b/package.json @@ -59,7 +59,8 @@ "storybook:build": "echo RUN storybook:build && cross-env NODE_OPTIONS=--openssl-legacy-provider storybook build", "android:open": "cap open android", "android:dev": "cap run android", - "all": "pnpm i && pnpm format && pnpm lint && pnpm tauri info && pnpm build:only-sw && pnpm tauri:build && pnpm storybook:build && pnpm test:unit && pnpm test:integration && pnpm check", + "all-broken": "pnpm i && pnpm format && pnpm lint && pnpm build:only-sw && pnpm tauri info && pnpm tauri:build && pnpm storybook:build && 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", "chromatic": "npx chromatic --build-script-name=storybook:build", "icons:build": "bash -c \"./scripts/icon-generator.sh .logo/logo.svg .logo/icon.svg .logo/icon_bg.svg .logo/icon+texture.svg \"" }, @@ -107,11 +108,11 @@ "@storybook/sveltekit": "7.0.0-beta.17", "@storybook/testing-library": "^0.0.13", "@storybook/theming": "7.0.0-beta.17", - "@svelte-kits/store": "^0.1.1", + "@svelte-kits/store": "^0.1.2", "@sveltejs/adapter-auto": "^3.0.0", - "@sveltejs/adapter-netlify": "^3.0.0", - "@sveltejs/adapter-static": "^3.0.0", - "@sveltejs/adapter-vercel": "^4.0.0", + "@sveltejs/adapter-netlify": "^3.0.1", + "@sveltejs/adapter-static": "^3.0.1", + "@sveltejs/adapter-vercel": "^4.0.4", "@sveltejs/kit": "^2.0.0", "@sveltejs/vite-plugin-svelte": "^3.0.0", "@tauri-apps/api": "^1.2.0", @@ -125,7 +126,7 @@ "@types/workbox-build": "^5.0.1", "@typescript-eslint/eslint-plugin": "^6.0.0", "@typescript-eslint/parser": "^6.0.0", - "@vite-pwa/sveltekit": "^0.1.0", + "@vite-pwa/sveltekit": "^0.3.0", "@vitejs/plugin-basic-ssl": "^1.0.2", "@vitest/coverage-v8": "^1.1.1", "autoprefixer": "^10.4.13", @@ -175,18 +176,14 @@ "typescript": "^5.0.0", "vanilla-lazyload": "^17.8.5", "vite": "^5.0.3", - "vite-plugin-pwa": "^0.14.0", + "vite-plugin-pwa": "^0.17.4", "vite-plugin-static-copy": "^1.0.0", "vitest": "^1.0.0", - "webpack": "^5.73.0", - "workbox-build": "^6.5.4", - "workbox-cacheable-response": "^6.5.4", - "workbox-core": "^6.5.4", - "workbox-expiration": "^6.5.4", - "workbox-precaching": "^6.5.4", - "workbox-routing": "^6.5.4", - "workbox-strategies": "^6.5.4", - "workbox-window": "^6.5.4" + "workbox-build": "^7.0.0", + "workbox-core": "^7.0.0", + "workbox-precaching": "^7.0.0", + "workbox-routing": "^7.0.0", + "workbox-window": "^7.0.0" }, "packageManager": "pnpm@8.0.0", "engines": { diff --git a/patches/@vite-pwa__sveltekit@0.0.1.patch b/patches/@vite-pwa__sveltekit@0.0.1.patch deleted file mode 100644 index db6c93b..0000000 --- a/patches/@vite-pwa__sveltekit@0.0.1.patch +++ /dev/null @@ -1,10 +0,0 @@ -diff --git a/dist/index.mjs b/dist/index.mjs -index 6bf8429c23efaa7993f65e40968ecf6fb8364b3e..176e7301cbcf9ba86ff093cce40edd65f6c19376 100644 ---- a/dist/index.mjs -+++ b/dist/index.mjs -@@ -80,4 +80,4 @@ function SvelteKitPWA(userOptions = {}) { - return VitePWA(userOptions); - } - --export default { SvelteKitPWA }; -+export { SvelteKitPWA }; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index ab57e8d..65feef0 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -131,19 +131,19 @@ devDependencies: specifier: 7.0.0-beta.17 version: 7.0.0-beta.17(react-dom@17.0.0)(react@17.0.0) '@svelte-kits/store': - specifier: ^0.1.1 - version: 0.1.1(@sveltejs/kit@2.0.6)(svelte@5.0.0-next.28) + specifier: ^0.1.2 + version: 0.1.2(@sveltejs/kit@2.0.6)(svelte@5.0.0-next.28) '@sveltejs/adapter-auto': specifier: ^3.0.0 version: 3.1.0(@sveltejs/kit@2.0.6) '@sveltejs/adapter-netlify': - specifier: ^3.0.0 + specifier: ^3.0.1 version: 3.0.1(@sveltejs/kit@2.0.6) '@sveltejs/adapter-static': - specifier: ^3.0.0 + specifier: ^3.0.1 version: 3.0.1(@sveltejs/kit@2.0.6) '@sveltejs/adapter-vercel': - specifier: ^4.0.0 + specifier: ^4.0.4 version: 4.0.4(@sveltejs/kit@2.0.6) '@sveltejs/kit': specifier: ^2.0.0 @@ -185,8 +185,8 @@ devDependencies: specifier: ^6.0.0 version: 6.17.0(eslint@8.56.0)(typescript@5.3.3) '@vite-pwa/sveltekit': - specifier: ^0.1.0 - version: 0.1.0(@sveltejs/kit@2.0.6)(vite-plugin-pwa@0.14.0) + specifier: ^0.3.0 + version: 0.3.0(@sveltejs/kit@2.0.6)(vite-plugin-pwa@0.17.4) '@vitejs/plugin-basic-ssl': specifier: ^1.0.2 version: 1.0.2(vite@5.0.10) @@ -335,41 +335,29 @@ devDependencies: specifier: ^5.0.3 version: 5.0.10(@types/node@20.10.6)(sass@1.69.7) vite-plugin-pwa: - specifier: ^0.14.0 - version: 0.14.0(vite@5.0.10)(workbox-build@6.5.4)(workbox-window@6.5.4) + specifier: ^0.17.4 + version: 0.17.4(vite@5.0.10)(workbox-build@7.0.0)(workbox-window@7.0.0) vite-plugin-static-copy: specifier: ^1.0.0 version: 1.0.0(vite@5.0.10) vitest: specifier: ^1.0.0 version: 1.1.2(@types/node@20.10.6)(sass@1.69.7) - webpack: - specifier: ^5.73.0 - version: 5.75.0(esbuild@0.16.12) workbox-build: - specifier: ^6.5.4 - version: 6.5.4 - workbox-cacheable-response: - specifier: ^6.5.4 - version: 6.5.4 + specifier: ^7.0.0 + version: 7.0.0 workbox-core: - specifier: ^6.5.4 - version: 6.5.4 - workbox-expiration: - specifier: ^6.5.4 - version: 6.5.4 + specifier: ^7.0.0 + version: 7.0.0 workbox-precaching: - specifier: ^6.5.4 - version: 6.5.4 + specifier: ^7.0.0 + version: 7.0.0 workbox-routing: - specifier: ^6.5.4 - version: 6.5.4 - workbox-strategies: - specifier: ^6.5.4 - version: 6.5.4 + specifier: ^7.0.0 + version: 7.0.0 workbox-window: - specifier: ^6.5.4 - version: 6.5.4 + specifier: ^7.0.0 + version: 7.0.0 packages: @@ -475,7 +463,7 @@ packages: engines: {node: '>=6.9.0'} dependencies: '@babel/helper-explode-assignable-expression': 7.18.6 - '@babel/types': 7.20.7 + '@babel/types': 7.23.6 dev: true /@babel/helper-compilation-targets@7.20.7(@babel/core@7.20.7): @@ -531,8 +519,8 @@ packages: '@babel/helper-plugin-utils': 7.20.2 debug: 4.3.4 lodash.debounce: 4.0.8 - resolve: 1.22.1 - semver: 6.3.0 + resolve: 1.22.8 + semver: 6.3.1 transitivePeerDependencies: - supports-color dev: true @@ -546,7 +534,7 @@ packages: resolution: {integrity: sha512-eyAYAsQmB80jNfg4baAtLeWAQHfHFiR483rzFK+BhETlGZaQC9bsfrugfXDCbRHLQbIA7U5NxhhOxN7p/dWIcg==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.20.7 + '@babel/types': 7.23.6 dev: true /@babel/helper-function-name@7.19.0: @@ -568,7 +556,7 @@ packages: resolution: {integrity: sha512-9J0CxJLq315fEdi4s7xK5TQaNYjZw+nDVpVqr1axNGKzdrdwYBD5b4uKv3n75aABG0rCCTK8Im8Ww7eYfMrZgw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.20.7 + '@babel/types': 7.23.6 dev: true /@babel/helper-module-imports@7.18.6: @@ -598,7 +586,7 @@ packages: resolution: {integrity: sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.20.7 + '@babel/types': 7.23.6 dev: true /@babel/helper-plugin-utils@7.20.2: @@ -616,7 +604,7 @@ packages: '@babel/helper-annotate-as-pure': 7.18.6 '@babel/helper-environment-visitor': 7.18.9 '@babel/helper-wrap-function': 7.20.5 - '@babel/types': 7.20.7 + '@babel/types': 7.23.6 transitivePeerDependencies: - supports-color dev: true @@ -630,7 +618,7 @@ packages: '@babel/helper-optimise-call-expression': 7.18.6 '@babel/template': 7.20.7 '@babel/traverse': 7.20.10 - '@babel/types': 7.20.7 + '@babel/types': 7.23.6 transitivePeerDependencies: - supports-color dev: true @@ -646,7 +634,7 @@ packages: resolution: {integrity: sha512-5y1JYeNKfvnT8sZcK9DVRtpTbGiomYIHviSP3OQWmDPU3DeH4a1ZlT/N2lyQ5P8egjcRaT/Y9aNqUxK0WsnIIg==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.20.7 + '@babel/types': 7.23.6 dev: true /@babel/helper-split-export-declaration@7.18.6: @@ -688,7 +676,7 @@ packages: '@babel/helper-function-name': 7.19.0 '@babel/template': 7.20.7 '@babel/traverse': 7.20.10 - '@babel/types': 7.20.7 + '@babel/types': 7.23.6 transitivePeerDependencies: - supports-color dev: true @@ -754,6 +742,7 @@ packages: /@babel/plugin-proposal-async-generator-functions@7.20.7(@babel/core@7.20.7): resolution: {integrity: sha512-xMbiLsn/8RK7Wq7VeVytytS2L6qE69bXPB10YCmMdDZbKF4okCqY74pI/jJQ/8U0b/F6NrT2+14b8/P9/3AMGA==} engines: {node: '>=6.9.0'} + deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-async-generator-functions instead. peerDependencies: '@babel/core': ^7.0.0-0 dependencies: @@ -769,6 +758,7 @@ packages: /@babel/plugin-proposal-class-properties@7.18.6(@babel/core@7.20.7): resolution: {integrity: sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==} engines: {node: '>=6.9.0'} + deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-class-properties instead. peerDependencies: '@babel/core': ^7.0.0-0 dependencies: @@ -782,6 +772,7 @@ packages: /@babel/plugin-proposal-class-static-block@7.20.7(@babel/core@7.20.7): resolution: {integrity: sha512-AveGOoi9DAjUYYuUAG//Ig69GlazLnoyzMw68VCDux+c1tsnnH/OkYcpz/5xzMkEFC6UxjR5Gw1c+iY2wOGVeQ==} engines: {node: '>=6.9.0'} + deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-class-static-block instead. peerDependencies: '@babel/core': ^7.12.0 dependencies: @@ -796,6 +787,7 @@ packages: /@babel/plugin-proposal-dynamic-import@7.18.6(@babel/core@7.20.7): resolution: {integrity: sha512-1auuwmK+Rz13SJj36R+jqFPMJWyKEDd7lLSdOj4oJK0UTgGueSAtkrCvz9ewmgyU/P941Rv2fQwZJN8s6QruXw==} engines: {node: '>=6.9.0'} + deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-dynamic-import instead. peerDependencies: '@babel/core': ^7.0.0-0 dependencies: @@ -807,6 +799,7 @@ packages: /@babel/plugin-proposal-export-namespace-from@7.18.9(@babel/core@7.20.7): resolution: {integrity: sha512-k1NtHyOMvlDDFeb9G5PhUXuGj8m/wiwojgQVEhJ/fsVsMCpLyOP4h0uGEjYJKrRI+EVPlb5Jk+Gt9P97lOGwtA==} engines: {node: '>=6.9.0'} + deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-export-namespace-from instead. peerDependencies: '@babel/core': ^7.0.0-0 dependencies: @@ -818,6 +811,7 @@ packages: /@babel/plugin-proposal-json-strings@7.18.6(@babel/core@7.20.7): resolution: {integrity: sha512-lr1peyn9kOdbYc0xr0OdHTZ5FMqS6Di+H0Fz2I/JwMzGmzJETNeOFq2pBySw6X/KFL5EWDjlJuMsUGRFb8fQgQ==} engines: {node: '>=6.9.0'} + deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-json-strings instead. peerDependencies: '@babel/core': ^7.0.0-0 dependencies: @@ -829,6 +823,7 @@ packages: /@babel/plugin-proposal-logical-assignment-operators@7.20.7(@babel/core@7.20.7): resolution: {integrity: sha512-y7C7cZgpMIjWlKE5T7eJwp+tnRYM89HmRvWM5EQuB5BoHEONjmQ8lSNmBUwOyy/GFRsohJED51YBF79hE1djug==} engines: {node: '>=6.9.0'} + deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-logical-assignment-operators instead. peerDependencies: '@babel/core': ^7.0.0-0 dependencies: @@ -840,6 +835,7 @@ packages: /@babel/plugin-proposal-nullish-coalescing-operator@7.18.6(@babel/core@7.20.7): resolution: {integrity: sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==} engines: {node: '>=6.9.0'} + deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-nullish-coalescing-operator instead. peerDependencies: '@babel/core': ^7.0.0-0 dependencies: @@ -851,6 +847,7 @@ packages: /@babel/plugin-proposal-numeric-separator@7.18.6(@babel/core@7.20.7): resolution: {integrity: sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==} engines: {node: '>=6.9.0'} + deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-numeric-separator instead. peerDependencies: '@babel/core': ^7.0.0-0 dependencies: @@ -862,6 +859,7 @@ packages: /@babel/plugin-proposal-object-rest-spread@7.20.7(@babel/core@7.20.7): resolution: {integrity: sha512-d2S98yCiLxDVmBmE8UjGcfPvNEUbA1U5q5WxaWFUGRzJSVAZqm5W6MbPct0jxnegUZ0niLeNX+IOzEs7wYg9Dg==} engines: {node: '>=6.9.0'} + deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-object-rest-spread instead. peerDependencies: '@babel/core': ^7.0.0-0 dependencies: @@ -876,6 +874,7 @@ packages: /@babel/plugin-proposal-optional-catch-binding@7.18.6(@babel/core@7.20.7): resolution: {integrity: sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw==} engines: {node: '>=6.9.0'} + deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-optional-catch-binding instead. peerDependencies: '@babel/core': ^7.0.0-0 dependencies: @@ -887,6 +886,7 @@ packages: /@babel/plugin-proposal-optional-chaining@7.20.7(@babel/core@7.20.7): resolution: {integrity: sha512-T+A7b1kfjtRM51ssoOfS1+wbyCVqorfyZhT99TvxxLMirPShD8CzKMRepMlCBGM5RpHMbn8s+5MMHnPstJH6mQ==} engines: {node: '>=6.9.0'} + deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-optional-chaining instead. peerDependencies: '@babel/core': ^7.0.0-0 dependencies: @@ -899,6 +899,7 @@ packages: /@babel/plugin-proposal-private-methods@7.18.6(@babel/core@7.20.7): resolution: {integrity: sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA==} engines: {node: '>=6.9.0'} + deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-private-methods instead. peerDependencies: '@babel/core': ^7.0.0-0 dependencies: @@ -912,6 +913,7 @@ packages: /@babel/plugin-proposal-private-property-in-object@7.20.5(@babel/core@7.20.7): resolution: {integrity: sha512-Vq7b9dUA12ByzB4EjQTPo25sFhY+08pQDBSZRtUAkj7lb7jahaHR5igera16QZ+3my1nYR4dKsNdYj5IjPHilQ==} engines: {node: '>=6.9.0'} + deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-private-property-in-object instead. peerDependencies: '@babel/core': ^7.0.0-0 dependencies: @@ -927,6 +929,7 @@ packages: /@babel/plugin-proposal-unicode-property-regex@7.18.6(@babel/core@7.20.7): resolution: {integrity: sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w==} engines: {node: '>=4'} + deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-unicode-property-regex instead. peerDependencies: '@babel/core': ^7.0.0-0 dependencies: @@ -1311,7 +1314,7 @@ packages: '@babel/helper-hoist-variables': 7.18.6 '@babel/helper-module-transforms': 7.20.11 '@babel/helper-plugin-utils': 7.20.2 - '@babel/helper-validator-identifier': 7.19.1 + '@babel/helper-validator-identifier': 7.22.20 transitivePeerDependencies: - supports-color dev: true @@ -1580,12 +1583,12 @@ packages: '@babel/plugin-transform-unicode-escapes': 7.18.10(@babel/core@7.20.7) '@babel/plugin-transform-unicode-regex': 7.18.6(@babel/core@7.20.7) '@babel/preset-modules': 0.1.5(@babel/core@7.20.7) - '@babel/types': 7.20.7 + '@babel/types': 7.23.6 babel-plugin-polyfill-corejs2: 0.3.3(@babel/core@7.20.7) babel-plugin-polyfill-corejs3: 0.6.0(@babel/core@7.20.7) babel-plugin-polyfill-regenerator: 0.4.1(@babel/core@7.20.7) core-js-compat: 3.27.0 - semver: 6.3.0 + semver: 6.3.1 transitivePeerDependencies: - supports-color dev: true @@ -1611,7 +1614,7 @@ packages: '@babel/helper-plugin-utils': 7.20.2 '@babel/plugin-proposal-unicode-property-regex': 7.18.6(@babel/core@7.20.7) '@babel/plugin-transform-dotall-regex': 7.18.6(@babel/core@7.20.7) - '@babel/types': 7.20.7 + '@babel/types': 7.23.6 esutils: 2.0.3 dev: true @@ -2558,7 +2561,7 @@ packages: nopt: 5.0.0 npmlog: 5.0.1 rimraf: 3.0.2 - semver: 7.3.8 + semver: 7.5.4 tar: 6.1.13 transitivePeerDependencies: - encoding @@ -2646,9 +2649,9 @@ packages: '@rollup/pluginutils': 3.1.0(rollup@2.79.1) '@types/resolve': 1.17.1 builtin-modules: 3.3.0 - deepmerge: 4.2.2 + deepmerge: 4.3.1 is-module: 1.0.0 - resolve: 1.22.1 + resolve: 1.22.8 rollup: 2.79.1 dev: true @@ -2676,20 +2679,6 @@ packages: rollup: 2.79.1 dev: true - /@rollup/plugin-replace@5.0.5(rollup@3.9.0): - resolution: {integrity: sha512-rYO4fOi8lMaTg/z5Jb+hKnrHHVn8j2lwkqwyS4kTRhKyWOLf2wST2sWXr4WzWiTcoHTp2sTjqUbqIj2E39slKQ==} - engines: {node: '>=14.0.0'} - peerDependencies: - rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 - peerDependenciesMeta: - rollup: - optional: true - dependencies: - '@rollup/pluginutils': 5.0.2(rollup@3.9.0) - magic-string: 0.30.5 - rollup: 3.9.0 - dev: true - /@rollup/pluginutils@3.1.0(rollup@2.79.1): resolution: {integrity: sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==} engines: {node: '>= 8.0.0'} @@ -2887,7 +2876,7 @@ packages: lodash.values: 4.3.0 object-hash: 3.0.0 packageurl-js: 1.0.0 - semver: 7.3.8 + semver: 7.5.4 tslib: 2.4.1 dev: true @@ -3770,7 +3759,7 @@ packages: pretty-hrtime: 1.0.3 prompts: 2.4.2 read-pkg-up: 7.0.1 - semver: 7.3.8 + semver: 7.5.4 serve-favicon: 2.5.0 slash: 3.0.0 telejson: 7.0.4 @@ -4219,11 +4208,11 @@ packages: string.prototype.matchall: 4.0.8 dev: true - /@svelte-kits/store@0.1.1(@sveltejs/kit@2.0.6)(svelte@5.0.0-next.28): - resolution: {integrity: sha512-7dbyxtv7RKoaxY6dSPnFPgZMwfhQYKmk4MpKA+o9p/Pn6GnFOI5ViyY8BPzXBpYgRfkHxPPPH2wF3stWLsU5hQ==} + /@svelte-kits/store@0.1.2(@sveltejs/kit@2.0.6)(svelte@5.0.0-next.28): + resolution: {integrity: sha512-1Gd0ifou2qx66wra4Y3IcShtAEOVh3f/zfziWwn0MVdEwiHWTvtkzcg6kumHJsBl5OudeKQWRFU9F+G1nO97Kw==} peerDependencies: '@sveltejs/kit': ^1.0.0 - svelte: ^3.0.0 + svelte: ^3.0.0 || ^4.0.0 dependencies: '@sveltejs/kit': 2.0.6(@sveltejs/vite-plugin-svelte@3.0.1)(svelte@5.0.0-next.28)(vite@5.0.10) svelte: 5.0.0-next.28 @@ -4976,7 +4965,7 @@ packages: debug: 4.3.4 globby: 11.1.0 is-glob: 4.0.3 - semver: 7.3.8 + semver: 7.5.4 tsutils: 3.21.0(typescript@5.3.3) typescript: 5.3.3 transitivePeerDependencies: @@ -5071,13 +5060,13 @@ packages: dependencies: '@mapbox/node-pre-gyp': 1.0.10 '@rollup/pluginutils': 4.2.1 - acorn: 8.8.1 - acorn-import-attributes: 1.9.2(acorn@8.8.1) + acorn: 8.11.3 + acorn-import-attributes: 1.9.2(acorn@8.11.3) async-sema: 3.1.1 bindings: 1.5.0 estree-walker: 2.0.2 glob: 7.2.3 - graceful-fs: 4.2.10 + graceful-fs: 4.2.11 micromatch: 4.0.5 node-gyp-build: 4.5.0 resolve-from: 5.0.0 @@ -5086,15 +5075,16 @@ packages: - supports-color dev: true - /@vite-pwa/sveltekit@0.1.0(@sveltejs/kit@2.0.6)(vite-plugin-pwa@0.14.0): - resolution: {integrity: sha512-IHn5iFuYpxhevKFr7W5zwu6sQoKD28TwToJIewCEiToVzQPNEnHsv63Cm+3Q+FwOtPJTuQer9uToJHaCiot3Rg==} - engines: {node: '>=16.14'} + /@vite-pwa/sveltekit@0.3.0(@sveltejs/kit@2.0.6)(vite-plugin-pwa@0.17.4): + resolution: {integrity: sha512-cqVqHBm7kn3CQvNuBj21CSjf8Ub8rWhYJrYqr3qzQeWAm70ODASyaPc4vY8rwoxYGTnwWpgZ/ivJXmYV2G3j6Q==} + engines: {node: '>=16.14 || >=18.13'} peerDependencies: - '@sveltejs/kit': ^1.0.0 - vite-plugin-pwa: ^0.14.0 + '@sveltejs/kit': ^1.3.1 || ^2.0.1 + vite-plugin-pwa: '>=0.17.4 <1' dependencies: '@sveltejs/kit': 2.0.6(@sveltejs/vite-plugin-svelte@3.0.1)(svelte@5.0.0-next.28)(vite@5.0.10) - vite-plugin-pwa: 0.14.0(vite@5.0.10)(workbox-build@6.5.4)(workbox-window@6.5.4) + kolorist: 1.8.0 + vite-plugin-pwa: 0.17.4(vite@5.0.10)(workbox-build@7.0.0)(workbox-window@7.0.0) dev: true /@vitejs/plugin-basic-ssl@1.0.2(vite@5.0.10): @@ -5311,7 +5301,7 @@ packages: p-limit: 2.3.0 pluralize: 7.0.0 pretty-bytes: 5.6.0 - semver: 7.3.8 + semver: 7.5.4 stream-to-promise: 2.2.0 tar-stream: 2.2.0 treeify: 1.1.0 @@ -5383,7 +5373,7 @@ packages: '@yarnpkg/parsers': 2.5.1 clipanion: 2.6.2 cross-spawn: 7.0.3 - fast-glob: 3.2.12 + fast-glob: 3.3.2 micromatch: 4.0.5 stream-buffers: 3.0.2 tslib: 1.14.1 @@ -5409,12 +5399,12 @@ packages: acorn: 8.8.1 dev: true - /acorn-import-attributes@1.9.2(acorn@8.8.1): + /acorn-import-attributes@1.9.2(acorn@8.11.3): resolution: {integrity: sha512-O+nfJwNolEA771IYJaiLWK1UAwjNsQmZbTRqqwBYxCgVQTmpFEMvBw6LOIQV0Me339L5UMVYFyRohGnGlQDdIQ==} peerDependencies: acorn: ^8 dependencies: - acorn: 8.8.1 + acorn: 8.11.3 dev: true /acorn-jsx@5.3.2(acorn@8.11.3): @@ -5425,14 +5415,6 @@ packages: acorn: 8.11.3 dev: true - /acorn-jsx@5.3.2(acorn@8.8.1): - resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} - peerDependencies: - acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 - dependencies: - acorn: 8.8.1 - dev: true - /acorn-typescript@1.4.13(acorn@8.11.3): resolution: {integrity: sha512-xsc9Xv0xlVfwp2o7sQ+GCQ1PgbkdcpWdTzrwXxO3xDMTAywVS3oXVOcOHuRjAPkS4P9b+yc/qNF15460v+jp4Q==} peerDependencies: @@ -5882,7 +5864,7 @@ packages: '@babel/compat-data': 7.20.10 '@babel/core': 7.20.7 '@babel/helper-define-polyfill-provider': 0.3.3(@babel/core@7.20.7) - semver: 6.3.0 + semver: 6.3.1 transitivePeerDependencies: - supports-color dev: true @@ -6299,7 +6281,7 @@ packages: normalize-path: 3.0.0 readdirp: 3.6.0 optionalDependencies: - fsevents: 2.3.2 + fsevents: 2.3.3 dev: true /chownr@2.0.0: @@ -6899,7 +6881,7 @@ packages: engines: {node: '>=10'} dependencies: globby: 11.1.0 - graceful-fs: 4.2.10 + graceful-fs: 4.2.11 is-glob: 4.0.3 is-path-cwd: 2.2.0 is-path-inside: 3.0.3 @@ -7184,37 +7166,6 @@ packages: is-arrayish: 0.2.1 dev: true - /es-abstract@1.20.5: - resolution: {integrity: sha512-7h8MM2EQhsCA7pU/Nv78qOXFpD8Rhqd12gYiSJVkrH9+e8VuA8JlPJK/hQjjlLv6pJvx/z1iRFKzYb0XT/RuAQ==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.2 - es-to-primitive: 1.2.1 - function-bind: 1.1.1 - function.prototype.name: 1.1.5 - get-intrinsic: 1.1.3 - get-symbol-description: 1.0.0 - gopd: 1.0.1 - has: 1.0.3 - has-property-descriptors: 1.0.0 - has-symbols: 1.0.3 - internal-slot: 1.0.4 - is-callable: 1.2.7 - is-negative-zero: 2.0.2 - is-regex: 1.1.4 - is-shared-array-buffer: 1.0.2 - is-string: 1.0.7 - is-weakref: 1.0.2 - object-inspect: 1.12.2 - object-keys: 1.1.1 - object.assign: 4.1.4 - regexp.prototype.flags: 1.4.3 - safe-regex-test: 1.0.0 - string.prototype.trimend: 1.0.6 - string.prototype.trimstart: 1.0.6 - unbox-primitive: 1.0.2 - dev: true - /es-abstract@1.22.3: resolution: {integrity: sha512-eiiY8HQeYfYH2Con2berK+To6GrK2RxbPawDkGq4UiCQQfZHb6wX9qQqkbpPqaxQFcl8d9QzZqo0tGE0VcrdwA==} engines: {node: '>= 0.4'} @@ -7692,7 +7643,7 @@ packages: optionator: 0.9.1 progress: 2.0.3 regexpp: 3.2.0 - semver: 7.3.8 + semver: 7.5.4 strip-ansi: 6.0.1 strip-json-comments: 3.1.1 text-table: 0.2.0 @@ -7756,8 +7707,8 @@ packages: resolution: {integrity: sha512-oP3utRkynpZWF/F2x/HZJ+AGtnIclaR7z1pYPxy7NYM2fSO6LgK/Rkny8anRSPK/VwEA1eqm2squui0T7ZMOBg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: - acorn: 8.8.1 - acorn-jsx: 5.3.2(acorn@8.8.1) + acorn: 8.11.3 + acorn-jsx: 5.3.2(acorn@8.11.3) eslint-visitor-keys: 3.3.0 dev: true @@ -7765,8 +7716,8 @@ packages: resolution: {integrity: sha512-XwctdmTO6SIvCzd9810yyNzIrOrqNYV9Koizx4C/mRhf9uq0o4yHoCEU/670pOxOL/MSraektvSAji79kX90Vg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: - acorn: 8.8.1 - acorn-jsx: 5.3.2(acorn@8.8.1) + acorn: 8.11.3 + acorn-jsx: 5.3.2(acorn@8.11.3) eslint-visitor-keys: 3.3.0 dev: true @@ -7831,14 +7782,10 @@ packages: resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} dev: true - /estree-walker@3.0.1: - resolution: {integrity: sha512-woY0RUD87WzMBUiZLx8NsYr23N5BKsOMZHhu2hoNRVh6NXGfoiT1KOL8G3UHlJAnEDGmfa5ubNA/AacfG+Kb0g==} - dev: true - /estree-walker@3.0.3: resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} dependencies: - '@types/estree': 1.0.0 + '@types/estree': 1.0.5 dev: true /esutils@2.0.3: @@ -8272,7 +8219,7 @@ packages: resolution: {integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==} engines: {node: '>=12'} dependencies: - graceful-fs: 4.2.10 + graceful-fs: 4.2.11 jsonfile: 6.1.0 universalify: 2.0.0 dev: true @@ -8311,14 +8258,6 @@ packages: resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} dev: true - /fsevents@2.3.2: - resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} - engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} - os: [darwin] - requiresBuild: true - dev: true - optional: true - /fsevents@2.3.3: resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} @@ -8335,16 +8274,6 @@ packages: resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} dev: true - /function.prototype.name@1.1.5: - resolution: {integrity: sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.2 - define-properties: 1.1.4 - es-abstract: 1.20.5 - functions-have-names: 1.2.3 - dev: true - /function.prototype.name@1.1.6: resolution: {integrity: sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==} engines: {node: '>= 0.4'} @@ -8586,7 +8515,7 @@ packages: dependencies: array-union: 2.1.0 dir-glob: 3.0.1 - fast-glob: 3.2.12 + fast-glob: 3.3.2 ignore: 5.2.4 merge2: 1.4.1 slash: 3.0.0 @@ -8597,7 +8526,7 @@ packages: engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: dir-glob: 3.0.1 - fast-glob: 3.2.12 + fast-glob: 3.3.2 ignore: 5.2.4 merge2: 1.4.1 slash: 4.0.0 @@ -8992,15 +8921,6 @@ packages: engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} dev: true - /internal-slot@1.0.4: - resolution: {integrity: sha512-tA8URYccNzMo94s5MQZgH8NB/XTa6HsOo0MLfXTKKEnHVVdegzaQoFZ7Jp44bdvLvY2waT5dc+j5ICEswhi7UQ==} - engines: {node: '>= 0.4'} - dependencies: - get-intrinsic: 1.1.3 - has: 1.0.3 - side-channel: 1.0.4 - dev: true - /internal-slot@1.0.6: resolution: {integrity: sha512-Xj6dv+PsbtwyPpEflsejS+oIZxmMlV44zAhG479uYu89MsjcYOhCFnNyKrkJrihbsiasQyY0afoCl/9BLR65bg==} engines: {node: '>= 0.4'} @@ -9080,7 +9000,7 @@ packages: resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.2 + call-bind: 1.0.5 has-tostringtag: 1.0.0 dev: true @@ -9344,8 +9264,8 @@ packages: /is-weakset@2.0.2: resolution: {integrity: sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==} dependencies: - call-bind: 1.0.2 - get-intrinsic: 1.1.3 + call-bind: 1.0.5 + get-intrinsic: 1.2.2 dev: true /is-windows@1.0.2: @@ -9420,7 +9340,7 @@ packages: '@babel/parser': 7.20.7 '@istanbuljs/schema': 0.1.3 istanbul-lib-coverage: 3.2.0 - semver: 6.3.0 + semver: 6.3.1 transitivePeerDependencies: - supports-color dev: true @@ -9482,14 +9402,14 @@ packages: '@types/node': 20.10.6 anymatch: 3.1.3 fb-watchman: 2.0.2 - graceful-fs: 4.2.10 + graceful-fs: 4.2.11 jest-regex-util: 29.2.0 jest-util: 29.3.1 jest-worker: 29.3.1 micromatch: 4.0.5 walker: 1.0.8 optionalDependencies: - fsevents: 2.3.2 + fsevents: 2.3.3 dev: true /jest-mock@27.5.1: @@ -9513,7 +9433,7 @@ packages: '@types/node': 20.10.6 chalk: 4.1.2 ci-info: 3.7.0 - graceful-fs: 4.2.10 + graceful-fs: 4.2.11 picomatch: 2.3.1 dev: true @@ -9587,7 +9507,7 @@ packages: babel-core: 7.0.0-bridge.0(@babel/core@7.20.7) chalk: 4.1.2 flow-parser: 0.196.3 - graceful-fs: 4.2.10 + graceful-fs: 4.2.11 micromatch: 3.1.10 neo-async: 2.6.2 node-dir: 0.1.17 @@ -9666,7 +9586,7 @@ packages: dependencies: universalify: 2.0.0 optionalDependencies: - graceful-fs: 4.2.10 + graceful-fs: 4.2.11 dev: true /jsonpointer@5.0.1: @@ -9727,6 +9647,10 @@ packages: resolution: {integrity: sha512-Ne7wqW7/9Cz54PDt4I3tcV+hAyat8ypyOGzYRJQfdxnnjeWsTxt1cy8pjvvKeI5kfXuyvULyeeAvwvvtAX3ayQ==} dev: true + /kolorist@1.8.0: + resolution: {integrity: sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ==} + dev: true + /lazy-universal-dotenv@3.0.1: resolution: {integrity: sha512-prXSYk799h3GY3iOWnC6ZigYzMPjxN2svgjJ9shk7oMadSNX3wXy0B6F32PMJv7qtMnrIbUxoEHzbutvxR2LBQ==} engines: {node: '>=6.0.0', npm: '>=6.0.0', yarn: '>=1.0.0'} @@ -10474,7 +10398,7 @@ packages: resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} dependencies: hosted-git-info: 2.8.9 - resolve: 1.22.1 + resolve: 1.22.8 semver: 5.7.1 validate-npm-package-license: 3.0.4 dev: true @@ -10485,7 +10409,7 @@ packages: dependencies: hosted-git-info: 4.1.0 is-core-module: 2.11.0 - semver: 7.3.8 + semver: 7.5.4 validate-npm-package-license: 3.0.4 dev: true @@ -11253,8 +11177,8 @@ packages: engines: {node: '>=6'} dev: true - /pretty-bytes@6.0.0: - resolution: {integrity: sha512-6UqkYefdogmzqAZWzJ7laYeJnaXDy2/J+ZqiiMtS7t7OfpXWTlaeGMwX8U6EFvPV/YWWEKRkS8hKS4k60WHTOg==} + /pretty-bytes@6.1.1: + resolution: {integrity: sha512-mQUvGU6aUFQ+rNvTIAcZuWGRT9a6f6Yrg9bHs4ImKF+HZCEK+plBvnAZYSIQztknZF2qnzNtr6F8s0+IuptdlQ==} engines: {node: ^14.13.1 || >=16.0.0} dev: true @@ -11823,7 +11747,7 @@ packages: rollup: ^2.25.0 || ^3.3.0 dependencies: '@rollup/pluginutils': 5.0.2(rollup@3.9.0) - estree-walker: 3.0.1 + estree-walker: 3.0.3 is-reference: 3.0.0 magic-string: 0.26.7 rollup: 3.9.0 @@ -11847,7 +11771,7 @@ packages: engines: {node: '>=10.0.0'} hasBin: true optionalDependencies: - fsevents: 2.3.2 + fsevents: 2.3.3 dev: true /rollup@3.9.0: @@ -11855,7 +11779,7 @@ packages: engines: {node: '>=14.18.0', npm: '>=8.0.0'} hasBin: true optionalDependencies: - fsevents: 2.3.2 + fsevents: 2.3.3 dev: true /rollup@4.9.2: @@ -11936,7 +11860,7 @@ packages: resolution: {integrity: sha512-3lVqBir7WuKDHGrKRDn/1Ye3kwpXaDOMsiRP1wd6wpZW56gJhsbp5RqQpA6JG/P+pkXizygnr1dKR8vzWaVsfA==} dependencies: es6-promise: 3.3.1 - graceful-fs: 4.2.10 + graceful-fs: 4.2.11 mkdirp: 0.5.6 rimraf: 2.7.1 dev: true @@ -12513,13 +12437,13 @@ packages: /string.prototype.matchall@4.0.8: resolution: {integrity: sha512-6zOCOcJ+RJAQshcTvXPHoxoQGONa3e/Lqx90wUA+wEzX78sg5Bo+1tQo4N0pohS0erG9qtCqJDjNCQBjeWVxyg==} dependencies: - call-bind: 1.0.2 - define-properties: 1.1.4 - es-abstract: 1.20.5 - get-intrinsic: 1.1.3 + call-bind: 1.0.5 + define-properties: 1.2.1 + es-abstract: 1.22.3 + get-intrinsic: 1.2.2 has-symbols: 1.0.3 - internal-slot: 1.0.4 - regexp.prototype.flags: 1.4.3 + internal-slot: 1.0.6 + regexp.prototype.flags: 1.5.1 side-channel: 1.0.4 dev: true @@ -12532,14 +12456,6 @@ packages: es-abstract: 1.22.3 dev: true - /string.prototype.trimend@1.0.6: - resolution: {integrity: sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==} - dependencies: - call-bind: 1.0.2 - define-properties: 1.1.4 - es-abstract: 1.20.5 - dev: true - /string.prototype.trimend@1.0.7: resolution: {integrity: sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==} dependencies: @@ -12548,14 +12464,6 @@ packages: es-abstract: 1.22.3 dev: true - /string.prototype.trimstart@1.0.6: - resolution: {integrity: sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==} - dependencies: - call-bind: 1.0.2 - define-properties: 1.1.4 - es-abstract: 1.20.5 - dev: true - /string.prototype.trimstart@1.0.7: resolution: {integrity: sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==} dependencies: @@ -13112,7 +13020,7 @@ packages: hasBin: true dependencies: '@jridgewell/source-map': 0.3.2 - acorn: 8.8.1 + acorn: 8.11.3 commander: 2.20.3 source-map-support: 0.5.21 dev: true @@ -13529,7 +13437,7 @@ packages: /unplugin@0.10.2: resolution: {integrity: sha512-6rk7GUa4ICYjae5PrAllvcDeuT8pA9+j5J5EkxbMFaV+SalHhxZ7X2dohMzu6C3XzsMT+6jwR/+pwPNR3uK9MA==} dependencies: - acorn: 8.8.1 + acorn: 8.11.3 chokidar: 3.5.3 webpack-sources: 3.2.3 webpack-virtual-modules: 0.4.6 @@ -13666,21 +13574,20 @@ packages: - terser dev: true - /vite-plugin-pwa@0.14.0(vite@5.0.10)(workbox-build@6.5.4)(workbox-window@6.5.4): - resolution: {integrity: sha512-3wZx47PLWTckOQhc8Y6YZjAbNZ89Ovh4TdCT97MGhgl7aFd2LUekVnAmIgFwgMqyxzJ93nmkPF/ALpEW/i2qCg==} + /vite-plugin-pwa@0.17.4(vite@5.0.10)(workbox-build@7.0.0)(workbox-window@7.0.0): + resolution: {integrity: sha512-j9iiyinFOYyof4Zk3Q+DtmYyDVBDAi6PuMGNGq6uGI0pw7E+LNm9e+nQ2ep9obMP/kjdWwzilqUrlfVRj9OobA==} + engines: {node: '>=16.0.0'} peerDependencies: - vite: ^3.1.0 || ^4.0.0 - workbox-build: ^6.5.4 - workbox-window: ^6.5.4 + vite: ^3.1.0 || ^4.0.0 || ^5.0.0 + workbox-build: ^7.0.0 + workbox-window: ^7.0.0 dependencies: - '@rollup/plugin-replace': 5.0.5(rollup@3.9.0) debug: 4.3.4 - fast-glob: 3.2.12 - pretty-bytes: 6.0.0 - rollup: 3.9.0 + fast-glob: 3.3.2 + pretty-bytes: 6.1.1 vite: 5.0.10(@types/node@20.10.6)(sass@1.69.7) - workbox-build: 6.5.4 - workbox-window: 6.5.4 + workbox-build: 7.0.0 + workbox-window: 7.0.0 transitivePeerDependencies: - supports-color dev: true @@ -13825,7 +13732,7 @@ packages: engines: {node: '>=10.13.0'} dependencies: glob-to-regexp: 0.4.1 - graceful-fs: 4.2.10 + graceful-fs: 4.2.11 dev: true /webidl-conversions@3.0.1: @@ -14010,22 +13917,22 @@ packages: resolution: {integrity: sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==} dev: true - /workbox-background-sync@6.5.4: - resolution: {integrity: sha512-0r4INQZMyPky/lj4Ou98qxcThrETucOde+7mRGJl13MPJugQNKeZQOdIJe/1AchOP23cTqHcN/YVpD6r8E6I8g==} + /workbox-background-sync@7.0.0: + resolution: {integrity: sha512-S+m1+84gjdueM+jIKZ+I0Lx0BDHkk5Nu6a3kTVxP4fdj3gKouRNmhO8H290ybnJTOPfBDtTMXSQA/QLTvr7PeA==} dependencies: idb: 7.1.1 - workbox-core: 6.5.4 + workbox-core: 7.0.0 dev: true - /workbox-broadcast-update@6.5.4: - resolution: {integrity: sha512-I/lBERoH1u3zyBosnpPEtcAVe5lwykx9Yg1k6f8/BGEPGaMMgZrwVrqL1uA9QZ1NGGFoyE6t9i7lBjOlDhFEEw==} + /workbox-broadcast-update@7.0.0: + resolution: {integrity: sha512-oUuh4jzZrLySOo0tC0WoKiSg90bVAcnE98uW7F8GFiSOXnhogfNDGZelPJa+6KpGBO5+Qelv04Hqx2UD+BJqNQ==} dependencies: - workbox-core: 6.5.4 + workbox-core: 7.0.0 dev: true - /workbox-build@6.5.4: - resolution: {integrity: sha512-kgRevLXEYvUW9WS4XoziYqZ8Q9j/2ziJYEtTrjdz5/L/cTUa2XfyMP2i7c3p34lgqJ03+mTiz13SdFef2POwbA==} - engines: {node: '>=10.0.0'} + /workbox-build@7.0.0: + resolution: {integrity: sha512-CttE7WCYW9sZC+nUYhQg3WzzGPr4IHmrPnjKiu3AMXsiNQKx+l4hHl63WTrnicLmKEKHScWDH8xsGBdrYgtBzg==} + engines: {node: '>=16.0.0'} dependencies: '@apideck/better-ajv-errors': 0.3.6(ajv@8.11.2) '@babel/core': 7.20.7 @@ -14049,111 +13956,111 @@ packages: strip-comments: 2.0.1 tempy: 0.6.0 upath: 1.2.0 - workbox-background-sync: 6.5.4 - workbox-broadcast-update: 6.5.4 - workbox-cacheable-response: 6.5.4 - workbox-core: 6.5.4 - workbox-expiration: 6.5.4 - workbox-google-analytics: 6.5.4 - workbox-navigation-preload: 6.5.4 - workbox-precaching: 6.5.4 - workbox-range-requests: 6.5.4 - workbox-recipes: 6.5.4 - workbox-routing: 6.5.4 - workbox-strategies: 6.5.4 - workbox-streams: 6.5.4 - workbox-sw: 6.5.4 - workbox-window: 6.5.4 + workbox-background-sync: 7.0.0 + workbox-broadcast-update: 7.0.0 + workbox-cacheable-response: 7.0.0 + workbox-core: 7.0.0 + workbox-expiration: 7.0.0 + workbox-google-analytics: 7.0.0 + workbox-navigation-preload: 7.0.0 + workbox-precaching: 7.0.0 + workbox-range-requests: 7.0.0 + workbox-recipes: 7.0.0 + workbox-routing: 7.0.0 + workbox-strategies: 7.0.0 + workbox-streams: 7.0.0 + workbox-sw: 7.0.0 + workbox-window: 7.0.0 transitivePeerDependencies: - '@types/babel__core' - supports-color dev: true - /workbox-cacheable-response@6.5.4: - resolution: {integrity: sha512-DCR9uD0Fqj8oB2TSWQEm1hbFs/85hXXoayVwFKLVuIuxwJaihBsLsp4y7J9bvZbqtPJ1KlCkmYVGQKrBU4KAug==} + /workbox-cacheable-response@7.0.0: + resolution: {integrity: sha512-0lrtyGHn/LH8kKAJVOQfSu3/80WDc9Ma8ng0p2i/5HuUndGttH+mGMSvOskjOdFImLs2XZIimErp7tSOPmu/6g==} dependencies: - workbox-core: 6.5.4 + workbox-core: 7.0.0 dev: true - /workbox-core@6.5.4: - resolution: {integrity: sha512-OXYb+m9wZm8GrORlV2vBbE5EC1FKu71GGp0H4rjmxmF4/HLbMCoTFws87M3dFwgpmg0v00K++PImpNQ6J5NQ6Q==} + /workbox-core@7.0.0: + resolution: {integrity: sha512-81JkAAZtfVP8darBpfRTovHg8DGAVrKFgHpOArZbdFd78VqHr5Iw65f2guwjE2NlCFbPFDoez3D3/6ZvhI/rwQ==} dev: true - /workbox-expiration@6.5.4: - resolution: {integrity: sha512-jUP5qPOpH1nXtjGGh1fRBa1wJL2QlIb5mGpct3NzepjGG2uFFBn4iiEBiI9GUmfAFR2ApuRhDydjcRmYXddiEQ==} + /workbox-expiration@7.0.0: + resolution: {integrity: sha512-MLK+fogW+pC3IWU9SFE+FRStvDVutwJMR5if1g7oBJx3qwmO69BNoJQVaMXq41R0gg3MzxVfwOGKx3i9P6sOLQ==} dependencies: idb: 7.1.1 - workbox-core: 6.5.4 + workbox-core: 7.0.0 dev: true - /workbox-google-analytics@6.5.4: - resolution: {integrity: sha512-8AU1WuaXsD49249Wq0B2zn4a/vvFfHkpcFfqAFHNHwln3jK9QUYmzdkKXGIZl9wyKNP+RRX30vcgcyWMcZ9VAg==} + /workbox-google-analytics@7.0.0: + resolution: {integrity: sha512-MEYM1JTn/qiC3DbpvP2BVhyIH+dV/5BjHk756u9VbwuAhu0QHyKscTnisQuz21lfRpOwiS9z4XdqeVAKol0bzg==} dependencies: - workbox-background-sync: 6.5.4 - workbox-core: 6.5.4 - workbox-routing: 6.5.4 - workbox-strategies: 6.5.4 + workbox-background-sync: 7.0.0 + workbox-core: 7.0.0 + workbox-routing: 7.0.0 + workbox-strategies: 7.0.0 dev: true - /workbox-navigation-preload@6.5.4: - resolution: {integrity: sha512-IIwf80eO3cr8h6XSQJF+Hxj26rg2RPFVUmJLUlM0+A2GzB4HFbQyKkrgD5y2d84g2IbJzP4B4j5dPBRzamHrng==} + /workbox-navigation-preload@7.0.0: + resolution: {integrity: sha512-juWCSrxo/fiMz3RsvDspeSLGmbgC0U9tKqcUPZBCf35s64wlaLXyn2KdHHXVQrb2cqF7I0Hc9siQalainmnXJA==} dependencies: - workbox-core: 6.5.4 + workbox-core: 7.0.0 dev: true - /workbox-precaching@6.5.4: - resolution: {integrity: sha512-hSMezMsW6btKnxHB4bFy2Qfwey/8SYdGWvVIKFaUm8vJ4E53JAY+U2JwLTRD8wbLWoP6OVUdFlXsTdKu9yoLTg==} + /workbox-precaching@7.0.0: + resolution: {integrity: sha512-EC0vol623LJqTJo1mkhD9DZmMP604vHqni3EohhQVwhJlTgyKyOkMrZNy5/QHfOby+39xqC01gv4LjOm4HSfnA==} dependencies: - workbox-core: 6.5.4 - workbox-routing: 6.5.4 - workbox-strategies: 6.5.4 + workbox-core: 7.0.0 + workbox-routing: 7.0.0 + workbox-strategies: 7.0.0 dev: true - /workbox-range-requests@6.5.4: - resolution: {integrity: sha512-Je2qR1NXCFC8xVJ/Lux6saH6IrQGhMpDrPXWZWWS8n/RD+WZfKa6dSZwU+/QksfEadJEr/NfY+aP/CXFFK5JFg==} + /workbox-range-requests@7.0.0: + resolution: {integrity: sha512-SxAzoVl9j/zRU9OT5+IQs7pbJBOUOlriB8Gn9YMvi38BNZRbM+RvkujHMo8FOe9IWrqqwYgDFBfv6sk76I1yaQ==} dependencies: - workbox-core: 6.5.4 + workbox-core: 7.0.0 dev: true - /workbox-recipes@6.5.4: - resolution: {integrity: sha512-QZNO8Ez708NNwzLNEXTG4QYSKQ1ochzEtRLGaq+mr2PyoEIC1xFW7MrWxrONUxBFOByksds9Z4//lKAX8tHyUA==} + /workbox-recipes@7.0.0: + resolution: {integrity: sha512-DntcK9wuG3rYQOONWC0PejxYYIDHyWWZB/ueTbOUDQgefaeIj1kJ7pdP3LZV2lfrj8XXXBWt+JDRSw1lLLOnww==} dependencies: - workbox-cacheable-response: 6.5.4 - workbox-core: 6.5.4 - workbox-expiration: 6.5.4 - workbox-precaching: 6.5.4 - workbox-routing: 6.5.4 - workbox-strategies: 6.5.4 + workbox-cacheable-response: 7.0.0 + workbox-core: 7.0.0 + workbox-expiration: 7.0.0 + workbox-precaching: 7.0.0 + workbox-routing: 7.0.0 + workbox-strategies: 7.0.0 dev: true - /workbox-routing@6.5.4: - resolution: {integrity: sha512-apQswLsbrrOsBUWtr9Lf80F+P1sHnQdYodRo32SjiByYi36IDyL2r7BH1lJtFX8fwNHDa1QOVY74WKLLS6o5Pg==} + /workbox-routing@7.0.0: + resolution: {integrity: sha512-8YxLr3xvqidnbVeGyRGkaV4YdlKkn5qZ1LfEePW3dq+ydE73hUUJJuLmGEykW3fMX8x8mNdL0XrWgotcuZjIvA==} dependencies: - workbox-core: 6.5.4 + workbox-core: 7.0.0 dev: true - /workbox-strategies@6.5.4: - resolution: {integrity: sha512-DEtsxhx0LIYWkJBTQolRxG4EI0setTJkqR4m7r4YpBdxtWJH1Mbg01Cj8ZjNOO8etqfA3IZaOPHUxCs8cBsKLw==} + /workbox-strategies@7.0.0: + resolution: {integrity: sha512-dg3qJU7tR/Gcd/XXOOo7x9QoCI9nk74JopaJaYAQ+ugLi57gPsXycVdBnYbayVj34m6Y8ppPwIuecrzkpBVwbA==} dependencies: - workbox-core: 6.5.4 + workbox-core: 7.0.0 dev: true - /workbox-streams@6.5.4: - resolution: {integrity: sha512-FXKVh87d2RFXkliAIheBojBELIPnWbQdyDvsH3t74Cwhg0fDheL1T8BqSM86hZvC0ZESLsznSYWw+Va+KVbUzg==} + /workbox-streams@7.0.0: + resolution: {integrity: sha512-moVsh+5to//l6IERWceYKGiftc+prNnqOp2sgALJJFbnNVpTXzKISlTIsrWY+ogMqt+x1oMazIdHj25kBSq/HQ==} dependencies: - workbox-core: 6.5.4 - workbox-routing: 6.5.4 + workbox-core: 7.0.0 + workbox-routing: 7.0.0 dev: true - /workbox-sw@6.5.4: - resolution: {integrity: sha512-vo2RQo7DILVRoH5LjGqw3nphavEjK4Qk+FenXeUsknKn14eCNedHOXWbmnvP4ipKhlE35pvJ4yl4YYf6YsJArA==} + /workbox-sw@7.0.0: + resolution: {integrity: sha512-SWfEouQfjRiZ7GNABzHUKUyj8pCoe+RwjfOIajcx6J5mtgKkN+t8UToHnpaJL5UVVOf5YhJh+OHhbVNIHe+LVA==} dev: true - /workbox-window@6.5.4: - resolution: {integrity: sha512-HnLZJDwYBE+hpG25AQBO8RUWBJRaCsI9ksQJEp3aCOFCaG5kqaToAYXFRAHxzRluM2cQbGzdQF5rjKPWPA1fug==} + /workbox-window@7.0.0: + resolution: {integrity: sha512-j7P/bsAWE/a7sxqTzXo3P2ALb1reTfZdvVp6OJ/uLr/C2kZAMvjeWGm8V4htQhor7DOvYg0sSbFN2+flT5U0qA==} dependencies: '@types/trusted-types': 2.0.2 - workbox-core: 6.5.4 + workbox-core: 7.0.0 dev: true /wrap-ansi@7.0.0: @@ -14181,7 +14088,7 @@ packages: /write-file-atomic@2.4.3: resolution: {integrity: sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==} dependencies: - graceful-fs: 4.2.10 + graceful-fs: 4.2.11 imurmurhash: 0.1.4 signal-exit: 3.0.7 dev: true diff --git a/pwa-configuration.js b/pwa-configuration.js index 5211e5f..fe034d7 100644 --- a/pwa-configuration.js +++ b/pwa-configuration.js @@ -11,9 +11,9 @@ const pwaConfigurationFnc = async ( const { backgroundColor, description, siteShortTitle, siteTitle, themeColor } = await websiteAsync(env); - // const outDir = process.env.VERCEL ? './.vercel/output/static' : './.svelte-kit/output/client'; + // const outDir = process.env.VERCEL ? './.vercel/output/static' : './.svelte-kit/output'; // const srcDir = process.env.VERCEL ? './src' : './src'; - const outDir = './.svelte-kit/output/client'; + const outDir = './.svelte-kit/output'; // Since some rev. @vite-pwa/sveltekit adds '/client' to outDir, const srcDir = './src'; // ? const globDirectory = process.env.VERCEL ? './.vercel/output/static' : 'client'; @@ -101,6 +101,10 @@ const pwaConfigurationFnc = async ( short_name: siteShortTitle, // set programmatically, below name: siteTitle, // set programmatically, below description, + screenshots: [ + { src: '/icon-txr-512x512.png', type: 'image/png', sizes: '512x512', form_factor: 'wide' }, // TODO: (now) Make wide screenshot image + { src: '/icon-txr-512x512.png', type: 'image/png', sizes: '512x512', form_factor: 'narrow' } + ], start_url: scope, scope: scope, diff --git a/git-merge_main-to-all-ui.sh b/scripts/git-merge_main-to-all-ui.sh similarity index 68% rename from git-merge_main-to-all-ui.sh rename to scripts/git-merge_main-to-all-ui.sh index 8c4869e..4b2121b 100644 --- a/git-merge_main-to-all-ui.sh +++ b/scripts/git-merge_main-to-all-ui.sh @@ -35,8 +35,20 @@ for TARGET_BRANCH in "${TARGET_BRANCHES[@]}"; do # Check for merge conflicts if [ $? -ne 0 ]; then - echo "Merge conflict detected in \"$TARGET_BRANCH\" branch. Please resolve conflicts manually, push changes, and run the script again." - exit 1 + echo "Merge conflict detected in \"$TARGET_BRANCH\" branch." + echo " Recreating 'pnpm-lock.yaml' as most likely attempt to resolve conflicts..." + (git checkout HEAD -- pnpm-lock.yaml && pnpm install && git add pnpm-lock.yaml) + echo " DONE Recreating 'pnpm-lock.yaml'." + if git diff --name-only --diff-filter=U | grep -q .; then + echo " There are remaining unresolved Git conflicts:" + git diff --name-only --diff-filter=U + echo " Please resolve any remaining Git conflicts manually, commit and push changes, and run the script again." + exit 1 + else + echo "No unresolved Git conflicts found, continuing..." + git commit + fi + fi # Push the changes to the remote repository diff --git a/git-msys2-setup-cred.cmd b/scripts/git-msys2-setup-cred.cmd similarity index 100% rename from git-msys2-setup-cred.cmd rename to scripts/git-msys2-setup-cred.cmd diff --git a/src/lib/components/offline/Offline.svelte b/src/lib/components/offline/Offline.svelte index ff0d96b..e090ff3 100644 --- a/src/lib/components/offline/Offline.svelte +++ b/src/lib/components/offline/Offline.svelte @@ -17,14 +17,14 @@ (ReloadPrompt = (await import('$lib/components/reloadprompt/ReloadPrompt.svelte')).default); }); - $: webManifest = pwaInfo ? pwaInfo.webManifest.linkTag : ''; + $: webManifestLink = pwaInfo ? pwaInfo.webManifest.linkTag : ''; - {@html webManifest} + {@html webManifestLink} {#if ReloadPrompt} diff --git a/src/routes/about/+page.ts b/src/routes/about/+page.ts index 7e72356..3fe8798 100644 --- a/src/routes/about/+page.ts +++ b/src/routes/about/+page.ts @@ -1,6 +1,7 @@ +// import { dev } from '$app/environment'; + // we don't need any JS on this page, though we'll load // it in dev so that we get hot module replacement -// import { dev } from '$app/environment'; // export const csr = dev; // we disable csr = false here for PWA/service worker offline mode stuff to work. diff --git a/src/routes/sverdle/how-to-play/+page.ts b/src/routes/sverdle/how-to-play/+page.ts index 7e72356..3fe8798 100644 --- a/src/routes/sverdle/how-to-play/+page.ts +++ b/src/routes/sverdle/how-to-play/+page.ts @@ -1,6 +1,7 @@ +// import { dev } from '$app/environment'; + // we don't need any JS on this page, though we'll load // it in dev so that we get hot module replacement -// import { dev } from '$app/environment'; // export const csr = dev; // we disable csr = false here for PWA/service worker offline mode stuff to work. diff --git a/src/routes/sverdle/reduced-motion.ts b/src/routes/sverdle/reduced-motion.ts index 97764f9..ee25da6 100644 --- a/src/routes/sverdle/reduced-motion.ts +++ b/src/routes/sverdle/reduced-motion.ts @@ -1,5 +1,5 @@ -import { readable } from 'svelte/store'; -// import { readable } from '@svelte-kits/store'; +// import { readable } from 'svelte/store'; +import { readable } from '@svelte-kits/store'; import { browser } from '$app/environment'; const reduced_motion_query = '(prefers-reduced-motion: reduce)'; diff --git a/svelte.config.js b/svelte.config.js index abd2389..01ae759 100644 --- a/svelte.config.js +++ b/svelte.config.js @@ -1,9 +1,16 @@ +import path from 'path'; // import adapter from '@sveltejs/adapter-auto'; import netlify from '@sveltejs/adapter-netlify'; import vercel from '@sveltejs/adapter-vercel'; import adapter from '@sveltejs/adapter-static'; import { vitePreprocess } from '@sveltejs/vite-plugin-svelte'; import { optimizeImports } from 'carbon-preprocess-svelte'; +import { loadEnv } from 'vite'; +import { pwaConfigurationFnc } from './pwa-configuration.js'; + +const mode = process.env.NODE_ENV || 'development'; +const env = loadEnv(mode, process.cwd()); +const { pwaConfiguration } = await pwaConfigurationFnc(env); /** @type {import('@sveltejs/kit').Config} */ const config = { @@ -53,8 +60,14 @@ const config = { }, alias: { - // Place to add all aliases. Run 'svelte-kit sync' (or npm run postinstall) to update paths in '.svelte-kit/tsconfig.json'. + // Place to add all aliases. Run 'svelte-kit sync' (or pnpm run postinstall) to update paths in '.svelte-kit/tsconfig.json'. // $components: resolve('./src/lib/components') + }, + files: { + serviceWorker: path.join( + pwaConfiguration.srcDir || 'src', + pwaConfiguration.filename || 'sw.js' + ) } }, diff --git a/tsconfig.json b/tsconfig.json index b622322..6644afb 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -16,8 +16,8 @@ "paths": { "$app/*": ["./node_modules/@sveltejs/kit/src/runtime/app/*"], // Added for $app ESLint "$env/*": ["./node_modules/@sveltejs/kit/src/runtime/env/*"], // Added for $env ESLint - "$lib": ["src/lib"], - "$lib/*": ["src/lib/*"], + "$lib": ["./src/lib"], + "$lib/*": ["./src/lib/*"], "@vite-pwa/sveltekit": ["./node_modules/@vite-pwa/sveltekit/dist"], "virtual:pwa-client": ["./node_modules/vite-plugin-pwa/client.d.ts"], "virtual:pwa-info": ["./node_modules/vite-plugin-pwa/info.d.ts"] diff --git a/vite.config.ts b/vite.config.ts index 268593e..f2c3b96 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -44,6 +44,8 @@ export default defineConfig(async ({ mode }) => { minify: false }, define: { + 'process.env.NODE_ENV': + process.env.NODE_ENV === 'production' ? '"production"' : '"development"', __DATE__: JSON.stringify(new Date().toISOString()), __RELOAD_SW__: JSON.stringify(false), __UPDATE_CHECK_PERIOD_MS__: JSON.stringify(20000) // in milli-seconds, 20s for testing purposes