diff --git a/apps/classroomio-com/package.json b/apps/classroomio-com/package.json
index 5692f7eb..fa5bb6e8 100644
--- a/apps/classroomio-com/package.json
+++ b/apps/classroomio-com/package.json
@@ -26,11 +26,13 @@
},
"type": "module",
"dependencies": {
+ "just-extend": "^6.2.0",
"posthog-node": "^3.1.3",
"rehype-slug": "^6.0.0",
"remark-toc": "^9.0.0",
"remark-unwrap-images": "^4.0.0",
"shared": "workspace:*",
- "shiki": "^0.14.7"
+ "shiki": "^0.14.7",
+ "svelte-meta-tags": "^3.1.2"
}
}
diff --git a/apps/classroomio-com/src/app.html b/apps/classroomio-com/src/app.html
index 8a86e73a..6aa7a94b 100644
--- a/apps/classroomio-com/src/app.html
+++ b/apps/classroomio-com/src/app.html
@@ -6,15 +6,15 @@
-
diff --git a/apps/classroomio-com/src/routes/+layout.ts b/apps/classroomio-com/src/routes/+layout.ts
index 8742b110..dd0f36c5 100644
--- a/apps/classroomio-com/src/routes/+layout.ts
+++ b/apps/classroomio-com/src/routes/+layout.ts
@@ -1,7 +1,50 @@
+import type { MetaTagsProps } from 'svelte-meta-tags';
+
export const prerender = true;
export function load({ url }) {
return {
+ baseMetaTags: getBaseMetaTags(url),
url: url.pathname
};
}
+
+function getBaseMetaTags(url: URL) {
+ const metatags = Object.freeze({
+ title: 'ClassroomIO – Launch Your Online Bootcamp In Minutes',
+ description:
+ 'Launch your bootcamp quickly and affordably with ClassroomIO, the customizable online teaching platform.',
+ canonical: new URL(url.pathname, url.origin).href,
+ openGraph: {
+ type: 'website',
+ url: new URL(url.pathname, url.origin).href,
+ locale: 'en_IE',
+ title: 'ClassroomIO – Launch Your Online Bootcamp In Minutes',
+ description:
+ 'Launch your bootcamp quickly and affordably with ClassroomIO, the customizable online teaching platform.',
+ siteName: 'ClassroomIO',
+ images: [
+ {
+ url: 'https://classroomio.com/classroomio-opengraph-image.png',
+ alt: 'ClassroomIO OG Image',
+ width: 1920,
+ height: 1080,
+ secureUrl: 'https://classroomio.com/classroomio-opengraph-image.png',
+ type: 'image/jpeg'
+ }
+ ]
+ },
+ twitter: {
+ handle: '@classroomio',
+ site: '@classroomio',
+ cardType: 'summary_large_image' as const,
+ title: 'ClassroomIO – Launch Your Online Bootcamp In Minutes',
+ description:
+ 'Launch your bootcamp quickly and affordably with ClassroomIO, the customizable online teaching platform.',
+ image: 'https://classroomio.com/classroomio-opengraph-image.png',
+ imageAlt: 'ClassroomIO OG Image'
+ }
+ }) satisfies MetaTagsProps;
+
+ return metatags;
+}
diff --git a/apps/classroomio-com/src/routes/blog/+page.svelte b/apps/classroomio-com/src/routes/blog/+page.svelte
index 7fcd4355..b5a7c68a 100644
--- a/apps/classroomio-com/src/routes/blog/+page.svelte
+++ b/apps/classroomio-com/src/routes/blog/+page.svelte
@@ -43,7 +43,7 @@
{post.title}
- {post.description}
+ {post.description}
diff --git a/apps/classroomio-com/src/routes/blog/[slug]/+page.svelte b/apps/classroomio-com/src/routes/blog/[slug]/+page.svelte
index cdd88c56..8c924bd1 100644
--- a/apps/classroomio-com/src/routes/blog/[slug]/+page.svelte
+++ b/apps/classroomio-com/src/routes/blog/[slug]/+page.svelte
@@ -6,26 +6,6 @@
export let data;
-
-
- {data.meta.title} | ClassroomIO Blog
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
{#if data}
diff --git a/apps/classroomio-com/src/routes/blog/[slug]/+page.ts b/apps/classroomio-com/src/routes/blog/[slug]/+page.ts
index dfd706fc..862a93b4 100644
--- a/apps/classroomio-com/src/routes/blog/[slug]/+page.ts
+++ b/apps/classroomio-com/src/routes/blog/[slug]/+page.ts
@@ -1,13 +1,43 @@
import { error } from '@sveltejs/kit';
+import type { MetaTagsProps } from 'svelte-meta-tags';
export async function load({ params }) {
try {
const blog = await import(`../../../blog/${params.slug}.md`);
+ const pageMetaTags = Object.freeze({
+ title: blog.metadata.title,
+ description: blog.metadata.description,
+ openGraph: {
+ title: blog.metadata.title,
+ description: blog.metadata.description,
+ images: [
+ {
+ url: blog.metadata.imageUrl,
+ alt: blog.metadata.title,
+ width: 280,
+ height: 200,
+ secureUrl: blog.metadata.imageUrl,
+ type: 'image/jpeg'
+ }
+ ]
+ },
+ twitter: {
+ handle: '@classroomio',
+ site: '@classroomio',
+ cardType: 'summary_large_image' as const,
+ title: blog.metadata.title,
+ description: blog.metadata.description,
+ image: blog.metadata.imageUrl,
+ imageAlt: `${blog.metadata.title} OG`
+ }
+ }) satisfies MetaTagsProps;
+
return {
content: blog.default,
meta: blog.metadata,
- slug: params.slug
+ slug: params.slug,
+ pageMetaTags
};
} catch (e) {
throw error(404, `Could not find ${params.slug}`);
diff --git a/apps/dashboard/package.json b/apps/dashboard/package.json
index 06cbb6e7..b2fd6f1e 100644
--- a/apps/dashboard/package.json
+++ b/apps/dashboard/package.json
@@ -53,7 +53,7 @@
"openai-edge": "^1.2.2",
"papaparse": "^5.4.1",
"pluralize": "^8.0.0",
- "posthog-js": "^1.155.0",
+ "posthog-js": "^1.157.2",
"shared": "workspace:*",
"sirv": "^2.0.3",
"stripe": "^14.22.0",
diff --git a/apps/dashboard/src/lib/components/CourseLandingPage/constants.ts b/apps/dashboard/src/lib/components/CourseLandingPage/constants.ts
index 98c53c48..14c505ed 100644
--- a/apps/dashboard/src/lib/components/CourseLandingPage/constants.ts
+++ b/apps/dashboard/src/lib/components/CourseLandingPage/constants.ts
@@ -25,7 +25,7 @@ export const NAV_ITEMS = [
},
{
key: SECTION_KEYS.LESSONS,
- label: 'course.navItems.nav_lessons'
+ label: 'course.navItems.nav_content'
},
{
key: SECTION_KEYS.REVIEWS,
diff --git a/apps/dashboard/src/routes/+layout.server.ts b/apps/dashboard/src/routes/+layout.server.ts
index d1c7d100..67dd447c 100644
--- a/apps/dashboard/src/routes/+layout.server.ts
+++ b/apps/dashboard/src/routes/+layout.server.ts
@@ -129,7 +129,7 @@ function getBaseMetaTags(url: URL) {
twitter: {
handle: '@classroomio',
site: '@classroomio',
- cardType: 'summary_large_image',
+ cardType: 'summary_large_image' as const,
title: 'ClassroomIO – Launch Your Online Bootcamp In Minutes',
description:
'Launch your bootcamp quickly and affordably with ClassroomIO, the customizable online teaching platform.',
diff --git a/apps/dashboard/src/routes/course/[slug]/+page.ts b/apps/dashboard/src/routes/course/[slug]/+page.ts
index fbeab276..c57cec0b 100644
--- a/apps/dashboard/src/routes/course/[slug]/+page.ts
+++ b/apps/dashboard/src/routes/course/[slug]/+page.ts
@@ -1,6 +1,6 @@
+import type { MetaTagsProps } from 'svelte-meta-tags';
import { fetchCourse } from '$lib/utils/services/courses';
import { supabase, getSupabase } from '$lib/utils/functions/supabase';
-import type { MetaTagsProps } from 'svelte-meta-tags';
if (!supabase) {
getSupabase();
@@ -17,7 +17,7 @@ export const load = async ({ params = { slug: '' } }) => {
description: data?.description,
images: [
{
- url: data?.logo,
+ url: data?.logo || '',
alt: data?.title,
width: 280,
height: 200,
@@ -29,7 +29,7 @@ export const load = async ({ params = { slug: '' } }) => {
twitter: {
handle: '@classroomio',
site: '@classroomio',
- cardType: 'summary_large_image',
+ cardType: 'summary_large_image' as const,
title: data?.title,
description: data?.description,
image: data?.logo,
diff --git a/apps/dashboard/src/routes/upgrade/+page.svelte b/apps/dashboard/src/routes/upgrade/+page.svelte
new file mode 100644
index 00000000..e69de29b
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 596d3f02..fb1ba8c0 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -22,7 +22,7 @@ importers:
version: 3.1.0
prettier-plugin-svelte:
specifier: ^3.1.2
- version: 3.1.2(prettier@3.1.0)(svelte@4.2.18)
+ version: 3.1.2(prettier@3.1.0)(svelte@4.2.19)
prettier-plugin-tailwindcss:
specifier: ^0.5.7
version: 0.5.7(prettier-plugin-svelte@3.1.2)(prettier@3.1.0)
@@ -107,6 +107,9 @@ importers:
apps/classroomio-com:
dependencies:
+ just-extend:
+ specifier: ^6.2.0
+ version: 6.2.0
posthog-node:
specifier: ^3.1.3
version: 3.1.3
@@ -125,6 +128,9 @@ importers:
shiki:
specifier: ^0.14.7
version: 0.14.7
+ svelte-meta-tags:
+ specifier: ^3.1.2
+ version: 3.1.2(svelte@4.1.2)(typescript@5.1.6)
devDependencies:
'@sveltejs/adapter-auto':
specifier: ^2.0.0
@@ -161,7 +167,7 @@ importers:
version: 5.1.6
vite:
specifier: ^4.4.2
- version: 4.4.8(@types/node@18.11.10)(sass@1.64.2)
+ version: 4.4.8
apps/dashboard:
dependencies:
@@ -206,7 +212,7 @@ importers:
version: 1.0.1
ai:
specifier: ^2.1.31
- version: 2.1.31(react@18.3.1)(solid-js@1.8.20)(svelte@4.1.2)(vue@3.4.37)
+ version: 2.1.31(react@18.3.1)(solid-js@1.8.21)(svelte@4.1.2)(vue@3.4.38)
axios:
specifier: ^1.5.1
version: 1.5.1
@@ -265,8 +271,8 @@ importers:
specifier: ^8.0.0
version: 8.0.0
posthog-js:
- specifier: ^1.155.0
- version: 1.155.0
+ specifier: ^1.157.2
+ version: 1.157.2
shared:
specifier: workspace:*
version: link:../../packages/shared
@@ -463,7 +469,7 @@ importers:
version: 1.10.16(eslint@8.57.0)
eslint-plugin-svelte:
specifier: ^2.35.1
- version: 2.35.1(eslint@8.57.0)(svelte@4.2.18)
+ version: 2.35.1(eslint@8.57.0)(svelte@4.2.19)
typescript:
specifier: ^5.1.6
version: 5.3.2
@@ -1643,7 +1649,7 @@ packages:
'@babel/traverse': 7.23.4
'@babel/types': 7.23.4
convert-source-map: 1.9.0
- debug: 4.3.4
+ debug: 4.3.4(supports-color@5.5.0)
gensync: 1.0.0-beta.2
json5: 2.2.3
semver: 6.3.1
@@ -1666,7 +1672,7 @@ packages:
'@babel/traverse': 7.23.4
'@babel/types': 7.23.4
convert-source-map: 2.0.0
- debug: 4.3.4
+ debug: 4.3.4(supports-color@5.5.0)
gensync: 1.0.0-beta.2
json5: 2.2.3
semver: 6.3.1
@@ -1823,7 +1829,7 @@ packages:
'@babel/core': 7.22.9
'@babel/helper-compilation-targets': 7.22.15
'@babel/helper-plugin-utils': 7.22.5
- debug: 4.3.4
+ debug: 4.3.4(supports-color@5.5.0)
lodash.debounce: 4.0.8
resolve: 1.22.8
transitivePeerDependencies:
@@ -2039,12 +2045,12 @@ packages:
'@babel/types': 7.23.9
dev: false
- /@babel/parser@7.25.3:
- resolution: {integrity: sha512-iLTJKDbJ4hMvFPgQwwsVoxtHyWpKKPBrxkANrSYewDPaPpT5py5yeVkgPIJ7XYXhndxJpaA3PyALSXQ7u8e/Dw==}
+ /@babel/parser@7.25.4:
+ resolution: {integrity: sha512-nq+eWrOgdtu3jG5Os4TQP3x3cLA8hR8TvJNjD8vnPa20WGycimcparWnLK4jJhElTK6SDyuJo1weMKO/5LpmLA==}
engines: {node: '>=6.0.0'}
hasBin: true
dependencies:
- '@babel/types': 7.25.2
+ '@babel/types': 7.25.4
dev: false
/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.23.3(@babel/core@7.22.9):
@@ -3143,7 +3149,7 @@ packages:
'@babel/helper-split-export-declaration': 7.22.6
'@babel/parser': 7.23.4
'@babel/types': 7.23.4
- debug: 4.3.4
+ debug: 4.3.4(supports-color@5.5.0)
globals: 11.12.0
transitivePeerDependencies:
- supports-color
@@ -3184,8 +3190,8 @@ packages:
to-fast-properties: 2.0.0
dev: false
- /@babel/types@7.25.2:
- resolution: {integrity: sha512-YTnYtra7W9e6/oAZEHj0bJehPRUlLH9/fbpT5LfB0NhQXyALCRkRs3zH9v07IYhkgpqX6Z78FnuccZr/l4Fs4Q==}
+ /@babel/types@7.25.4:
+ resolution: {integrity: sha512-zQ1ijeeCXVEh+aNL0RlmkPkG8HUiDcU2pzQQFjtbntgAczRASFzj4H+6+bV+dy1ntKR14I/DypeuRG1uma98iQ==}
engines: {node: '>=6.9.0'}
dependencies:
'@babel/helper-string-parser': 7.24.8
@@ -3540,7 +3546,7 @@ packages:
debug: 4.3.6
espree: 9.6.1
globals: 13.24.0
- ignore: 5.3.1
+ ignore: 5.3.2
import-fresh: 3.3.0
js-yaml: 4.1.0
minimatch: 3.1.2
@@ -5825,7 +5831,7 @@ packages:
sirv: 2.0.3
svelte: 4.1.2
undici: 5.22.1
- vite: 4.4.8(@types/node@18.11.10)(sass@1.64.2)
+ vite: 4.4.8
transitivePeerDependencies:
- supports-color
dev: true
@@ -5868,7 +5874,7 @@ packages:
'@sveltejs/vite-plugin-svelte': 2.5.3(svelte@4.1.2)(vite@4.4.8)
debug: 4.3.4
svelte: 4.1.2
- vite: 4.4.8(@types/node@18.11.10)(sass@1.64.2)
+ vite: 4.4.8
transitivePeerDependencies:
- supports-color
@@ -5886,7 +5892,7 @@ packages:
magic-string: 0.30.5
svelte: 4.1.2
svelte-hmr: 0.15.3(svelte@4.1.2)
- vite: 4.4.8(@types/node@18.11.10)(sass@1.64.2)
+ vite: 4.4.8
vitefu: 0.2.5(vite@4.4.8)
transitivePeerDependencies:
- supports-color
@@ -6551,78 +6557,78 @@ packages:
- supports-color
dev: true
- /@vue/compiler-core@3.4.37:
- resolution: {integrity: sha512-ZDDT/KiLKuCRXyzWecNzC5vTcubGz4LECAtfGPENpo0nrmqJHwuWtRLxk/Sb9RAKtR9iFflFycbkjkY+W/PZUQ==}
+ /@vue/compiler-core@3.4.38:
+ resolution: {integrity: sha512-8IQOTCWnLFqfHzOGm9+P8OPSEDukgg3Huc92qSG49if/xI2SAwLHQO2qaPQbjCWPBcQoO1WYfXfTACUrWV3c5A==}
dependencies:
- '@babel/parser': 7.25.3
- '@vue/shared': 3.4.37
- entities: 5.0.0
+ '@babel/parser': 7.25.4
+ '@vue/shared': 3.4.38
+ entities: 4.5.0
estree-walker: 2.0.2
source-map-js: 1.2.0
dev: false
- /@vue/compiler-dom@3.4.37:
- resolution: {integrity: sha512-rIiSmL3YrntvgYV84rekAtU/xfogMUJIclUMeIKEtVBFngOL3IeZHhsH3UaFEgB5iFGpj6IW+8YuM/2Up+vVag==}
+ /@vue/compiler-dom@3.4.38:
+ resolution: {integrity: sha512-Osc/c7ABsHXTsETLgykcOwIxFktHfGSUDkb05V61rocEfsFDcjDLH/IHJSNJP+/Sv9KeN2Lx1V6McZzlSb9EhQ==}
dependencies:
- '@vue/compiler-core': 3.4.37
- '@vue/shared': 3.4.37
+ '@vue/compiler-core': 3.4.38
+ '@vue/shared': 3.4.38
dev: false
- /@vue/compiler-sfc@3.4.37:
- resolution: {integrity: sha512-vCfetdas40Wk9aK/WWf8XcVESffsbNkBQwS5t13Y/PcfqKfIwJX2gF+82th6dOpnpbptNMlMjAny80li7TaCIg==}
+ /@vue/compiler-sfc@3.4.38:
+ resolution: {integrity: sha512-s5QfZ+9PzPh3T5H4hsQDJtI8x7zdJaew/dCGgqZ2630XdzaZ3AD8xGZfBqpT8oaD/p2eedd+pL8tD5vvt5ZYJQ==}
dependencies:
- '@babel/parser': 7.25.3
- '@vue/compiler-core': 3.4.37
- '@vue/compiler-dom': 3.4.37
- '@vue/compiler-ssr': 3.4.37
- '@vue/shared': 3.4.37
+ '@babel/parser': 7.25.4
+ '@vue/compiler-core': 3.4.38
+ '@vue/compiler-dom': 3.4.38
+ '@vue/compiler-ssr': 3.4.38
+ '@vue/shared': 3.4.38
estree-walker: 2.0.2
magic-string: 0.30.11
postcss: 8.4.41
source-map-js: 1.2.0
dev: false
- /@vue/compiler-ssr@3.4.37:
- resolution: {integrity: sha512-TyAgYBWrHlFrt4qpdACh8e9Ms6C/AZQ6A6xLJaWrCL8GCX5DxMzxyeFAEMfU/VFr4tylHm+a2NpfJpcd7+20XA==}
+ /@vue/compiler-ssr@3.4.38:
+ resolution: {integrity: sha512-YXznKFQ8dxYpAz9zLuVvfcXhc31FSPFDcqr0kyujbOwNhlmaNvL2QfIy+RZeJgSn5Fk54CWoEUeW+NVBAogGaw==}
dependencies:
- '@vue/compiler-dom': 3.4.37
- '@vue/shared': 3.4.37
+ '@vue/compiler-dom': 3.4.38
+ '@vue/shared': 3.4.38
dev: false
- /@vue/reactivity@3.4.37:
- resolution: {integrity: sha512-UmdKXGx0BZ5kkxPqQr3PK3tElz6adTey4307NzZ3whZu19i5VavYal7u2FfOmAzlcDVgE8+X0HZ2LxLb/jgbYw==}
+ /@vue/reactivity@3.4.38:
+ resolution: {integrity: sha512-4vl4wMMVniLsSYYeldAKzbk72+D3hUnkw9z8lDeJacTxAkXeDAP1uE9xr2+aKIN0ipOL8EG2GPouVTH6yF7Gnw==}
dependencies:
- '@vue/shared': 3.4.37
+ '@vue/shared': 3.4.38
dev: false
- /@vue/runtime-core@3.4.37:
- resolution: {integrity: sha512-MNjrVoLV/sirHZoD7QAilU1Ifs7m/KJv4/84QVbE6nyAZGQNVOa1HGxaOzp9YqCG+GpLt1hNDC4RbH+KtanV7w==}
+ /@vue/runtime-core@3.4.38:
+ resolution: {integrity: sha512-21z3wA99EABtuf+O3IhdxP0iHgkBs1vuoCAsCKLVJPEjpVqvblwBnTj42vzHRlWDCyxu9ptDm7sI2ZMcWrQqlA==}
dependencies:
- '@vue/reactivity': 3.4.37
- '@vue/shared': 3.4.37
+ '@vue/reactivity': 3.4.38
+ '@vue/shared': 3.4.38
dev: false
- /@vue/runtime-dom@3.4.37:
- resolution: {integrity: sha512-Mg2EwgGZqtwKrqdL/FKMF2NEaOHuH+Ks9TQn3DHKyX//hQTYOun+7Tqp1eo0P4Ds+SjltZshOSRq6VsU0baaNg==}
+ /@vue/runtime-dom@3.4.38:
+ resolution: {integrity: sha512-afZzmUreU7vKwKsV17H1NDThEEmdYI+GCAK/KY1U957Ig2NATPVjCROv61R19fjZNzMmiU03n79OMnXyJVN0UA==}
dependencies:
- '@vue/reactivity': 3.4.37
- '@vue/runtime-core': 3.4.37
- '@vue/shared': 3.4.37
+ '@vue/reactivity': 3.4.38
+ '@vue/runtime-core': 3.4.38
+ '@vue/shared': 3.4.38
csstype: 3.1.3
dev: false
- /@vue/server-renderer@3.4.37(vue@3.4.37):
- resolution: {integrity: sha512-jZ5FAHDR2KBq2FsRUJW6GKDOAG9lUTX8aBEGq4Vf6B/35I9fPce66BornuwmqmKgfiSlecwuOb6oeoamYMohkg==}
+ /@vue/server-renderer@3.4.38(vue@3.4.38):
+ resolution: {integrity: sha512-NggOTr82FbPEkkUvBm4fTGcwUY8UuTsnWC/L2YZBmvaQ4C4Jl/Ao4HHTB+l7WnFCt5M/dN3l0XLuyjzswGYVCA==}
peerDependencies:
- vue: 3.4.37
+ vue: 3.4.38
dependencies:
- '@vue/compiler-ssr': 3.4.37
- '@vue/shared': 3.4.37
- vue: 3.4.37(typescript@5.1.6)
+ '@vue/compiler-ssr': 3.4.38
+ '@vue/shared': 3.4.38
+ vue: 3.4.38(typescript@5.1.6)
dev: false
- /@vue/shared@3.4.37:
- resolution: {integrity: sha512-nIh8P2fc3DflG8+5Uw8PT/1i17ccFn0xxN/5oE9RfV5SVnd7G0XEFRwakrnNFE/jlS95fpGXDVG5zDETS26nmg==}
+ /@vue/shared@3.4.38:
+ resolution: {integrity: sha512-q0xCiLkuWWQLzVrecPb0RMsNWyxICOjPrcrwxTUEHb1fsnvni4dcuyG7RT/Ie7VPTvnjzIaWzRMUBsrqNj/hhw==}
dev: false
/JSONStream@1.3.5:
@@ -6685,7 +6691,7 @@ packages:
resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==}
engines: {node: '>= 6.0.0'}
dependencies:
- debug: 4.3.4
+ debug: 4.3.4(supports-color@5.5.0)
transitivePeerDependencies:
- supports-color
dev: false
@@ -6706,7 +6712,7 @@ packages:
indent-string: 4.0.0
dev: true
- /ai@2.1.31(react@18.3.1)(solid-js@1.8.20)(svelte@4.1.2)(vue@3.4.37):
+ /ai@2.1.31(react@18.3.1)(solid-js@1.8.21)(svelte@4.1.2)(vue@3.4.38):
resolution: {integrity: sha512-ihkimg9iP/C/OaxjYj9KgA4gPC9Rzw60Xv3+AWYrQ807L/NEF8sgZBmA1hv8/DC8KzMv/7N+a5HCQPDZXNUs+g==}
engines: {node: '>=14.6'}
peerDependencies:
@@ -6727,14 +6733,14 @@ packages:
eventsource-parser: 1.0.0
nanoid: 3.3.6
react: 18.3.1
- solid-js: 1.8.20
- solid-swr-store: 0.10.7(solid-js@1.8.20)(swr-store@0.10.6)
+ solid-js: 1.8.21
+ solid-swr-store: 0.10.7(solid-js@1.8.21)(swr-store@0.10.6)
sswr: 2.0.0(svelte@4.1.2)
svelte: 4.1.2
swr: 2.2.0(react@18.3.1)
swr-store: 0.10.6
- swrv: 1.0.4(vue@3.4.37)
- vue: 3.4.37(typescript@5.1.6)
+ swrv: 1.0.4(vue@3.4.38)
+ vue: 3.4.38(typescript@5.1.6)
dev: false
/ajv@6.12.6:
@@ -7582,7 +7588,7 @@ packages:
dependencies:
'@babel/runtime': 7.23.4
'@types/raf': 3.4.3
- core-js: 3.38.0
+ core-js: 3.38.1
raf: 3.4.1
regenerator-runtime: 0.13.11
rgbcolor: 1.0.1
@@ -8179,8 +8185,8 @@ packages:
browserslist: 4.22.1
dev: true
- /core-js@3.38.0:
- resolution: {integrity: sha512-XPpwqEodRljce9KswjZShh95qJ1URisBeKCjUdq27YdenkslVe7OO0ZJhlYXAChW7OhXaRLl8AAba7IBfoIHug==}
+ /core-js@3.38.1:
+ resolution: {integrity: sha512-OP35aUorbU3Zvlx7pjsFdu1rGNnD4pgw/CWoYzRY3t2EzoVT7shKHY1dlAy3f41cGIO7ZDPQimhGFTlEYkG/Hw==}
requiresBuild: true
dev: false
optional: true
@@ -9190,11 +9196,6 @@ packages:
engines: {node: '>=0.12'}
dev: false
- /entities@5.0.0:
- resolution: {integrity: sha512-BeJFvFRJddxobhvEdm5GqHzRV/X+ACeuw0/BuuxsCh1EUZcAIz8+kYmBp/LrQuloy6K1f3a0M7+IhmZ7QnkISA==}
- engines: {node: '>=0.12'}
- dev: false
-
/error-ex@1.3.2:
resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==}
dependencies:
@@ -9637,7 +9638,7 @@ packages:
string.prototype.matchall: 4.0.10
dev: true
- /eslint-plugin-svelte@2.35.1(eslint@8.57.0)(svelte@4.2.18):
+ /eslint-plugin-svelte@2.35.1(eslint@8.57.0)(svelte@4.2.19):
resolution: {integrity: sha512-IF8TpLnROSGy98Z3NrsKXWDSCbNY2ReHDcrYTuXZMbfX7VmESISR78TWgO9zdg4Dht1X8coub5jKwHzP0ExRug==}
engines: {node: ^14.17.0 || >=16.0.0}
peerDependencies:
@@ -9659,8 +9660,8 @@ packages:
postcss-safe-parser: 6.0.0(postcss@8.4.32)
postcss-selector-parser: 6.0.13
semver: 7.5.4
- svelte: 4.2.18
- svelte-eslint-parser: 0.33.1(svelte@4.2.18)
+ svelte: 4.2.19
+ svelte-eslint-parser: 0.33.1(svelte@4.2.19)
transitivePeerDependencies:
- supports-color
- ts-node
@@ -9822,7 +9823,7 @@ packages:
glob-parent: 6.0.2
globals: 13.24.0
graphemer: 1.4.0
- ignore: 5.3.1
+ ignore: 5.3.2
imurmurhash: 0.1.4
is-glob: 4.0.3
is-path-inside: 3.0.3
@@ -10727,7 +10728,7 @@ packages:
source-map: 0.6.1
wordwrap: 1.0.0
optionalDependencies:
- uglify-js: 3.19.1
+ uglify-js: 3.19.2
dev: true
/hard-rejection@2.1.0:
@@ -11034,7 +11035,7 @@ packages:
engines: {node: '>= 6'}
dependencies:
agent-base: 6.0.2
- debug: 4.3.4
+ debug: 4.3.4(supports-color@5.5.0)
transitivePeerDependencies:
- supports-color
dev: false
@@ -11089,8 +11090,8 @@ packages:
engines: {node: '>= 4'}
dev: true
- /ignore@5.3.1:
- resolution: {integrity: sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==}
+ /ignore@5.3.2:
+ resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==}
engines: {node: '>= 4'}
dev: true
@@ -11593,7 +11594,7 @@ packages:
resolution: {integrity: sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==}
engines: {node: '>=10'}
dependencies:
- debug: 4.3.4
+ debug: 4.3.4(supports-color@5.5.0)
istanbul-lib-coverage: 3.2.2
source-map: 0.6.1
transitivePeerDependencies:
@@ -12184,7 +12185,7 @@ packages:
fflate: 0.4.8
optionalDependencies:
canvg: 3.0.10
- core-js: 3.38.0
+ core-js: 3.38.1
dompurify: 2.5.6
html2canvas: 1.4.1
dev: false
@@ -12209,6 +12210,10 @@ packages:
object.values: 1.1.7
dev: true
+ /just-extend@6.2.0:
+ resolution: {integrity: sha512-cYofQu2Xpom82S6qD778jBDpwvvy39s1l/hrYij2u9AMdQcGRpaBu6kY4mVhuno5kJVi1DAz4aiphA2WI1/OAw==}
+ dev: false
+
/just-throttle@2.3.1:
resolution: {integrity: sha512-0H4miIAWZYpnpg7oD/Y/PBb77ISSHAETif5xK9EnwIgYCO6oC8ErkJxDumMUTR44shSOwptRIArRuvNuvN/hOw==}
dev: true
@@ -14299,6 +14304,23 @@ packages:
yaml: 2.3.4
dev: true
+ /postcss-load-config@4.0.1(postcss@8.4.32):
+ resolution: {integrity: sha512-vEJIc8RdiBRu3oRAI0ymerOn+7rPuMvRXslTvZUKZonDHFIczxztIyJ1urxM1x9JXEikvpWWTUUqal5j/8QgvA==}
+ engines: {node: '>= 14'}
+ peerDependencies:
+ postcss: '>=8.0.9'
+ ts-node: '>=9.0.0'
+ peerDependenciesMeta:
+ postcss:
+ optional: true
+ ts-node:
+ optional: true
+ dependencies:
+ lilconfig: 2.1.0
+ postcss: 8.4.32
+ yaml: 2.3.4
+ dev: true
+
/postcss-load-config@4.0.1(postcss@8.4.32)(ts-node@10.9.2):
resolution: {integrity: sha512-vEJIc8RdiBRu3oRAI0ymerOn+7rPuMvRXslTvZUKZonDHFIczxztIyJ1urxM1x9JXEikvpWWTUUqal5j/8QgvA==}
engines: {node: '>= 14'}
@@ -14405,8 +14427,8 @@ packages:
source-map-js: 1.2.0
dev: false
- /posthog-js@1.155.0:
- resolution: {integrity: sha512-gxi72Qcp7Vnq6efe5gNxsq84zyEFd33NUmoLSgcbMPhxU30qgc89Aw/N2mRB4mGrD3Mq0rCnDJUzGFdN59nR0g==}
+ /posthog-js@1.157.2:
+ resolution: {integrity: sha512-ATYKGs+Q51u26nHHhrhWNh1whqFm7j/rwQQYw+y6/YzNmRlo+YsqrGZji9nqXb9/4fo0ModDr+ZmuOI3hKkUXA==}
dependencies:
fflate: 0.4.8
preact: 10.19.3
@@ -14445,14 +14467,14 @@ packages:
synckit: 0.8.5
dev: true
- /prettier-plugin-svelte@3.1.2(prettier@3.1.0)(svelte@4.2.18):
+ /prettier-plugin-svelte@3.1.2(prettier@3.1.0)(svelte@4.2.19):
resolution: {integrity: sha512-7xfMZtwgAWHMT0iZc8jN4o65zgbAQ3+O32V6W7pXrqNvKnHnkoyQCGCbKeUyXKZLbYE0YhFRnamfxfkEGxm8qA==}
peerDependencies:
prettier: ^3.0.0
svelte: ^3.2.0 || ^4.0.0-next.0 || ^5.0.0-next.0
dependencies:
prettier: 3.1.0
- svelte: 4.2.18
+ svelte: 4.2.19
dev: true
/prettier-plugin-tailwindcss@0.5.7(prettier-plugin-svelte@3.1.2)(prettier@3.1.0):
@@ -14508,7 +14530,7 @@ packages:
optional: true
dependencies:
prettier: 3.1.0
- prettier-plugin-svelte: 3.1.2(prettier@3.1.0)(svelte@4.2.18)
+ prettier-plugin-svelte: 3.1.2(prettier@3.1.0)(svelte@4.2.19)
dev: true
/prettier@3.1.0:
@@ -15552,22 +15574,22 @@ packages:
smart-buffer: 4.2.0
dev: false
- /solid-js@1.8.20:
- resolution: {integrity: sha512-SsgaExCJ97mPm9WpAusjZ484Z8zTp8ggiueQOsrm81iAP7UaxaN+wiOgnPcJ9u6B2SQpoQ4FiDPAZBqVWi1V4g==}
+ /solid-js@1.8.21:
+ resolution: {integrity: sha512-FHUGdoo7GVa1BTpGh/4UtwIISde0vSXoqNB6KFpHiTgkIY959tmCJ7NYQAWDfScBfnpoMGZR8lFz0DiwW/gFlw==}
dependencies:
csstype: 3.1.3
seroval: 1.1.1
seroval-plugins: 1.1.1(seroval@1.1.1)
dev: false
- /solid-swr-store@0.10.7(solid-js@1.8.20)(swr-store@0.10.6):
+ /solid-swr-store@0.10.7(solid-js@1.8.21)(swr-store@0.10.6):
resolution: {integrity: sha512-A6d68aJmRP471aWqKKPE2tpgOiR5fH4qXQNfKIec+Vap+MGQm3tvXlT8n0I8UgJSlNAsSAUuw2VTviH2h3Vv5g==}
engines: {node: '>=10'}
peerDependencies:
solid-js: ^1.2
swr-store: ^0.10
dependencies:
- solid-js: 1.8.20
+ solid-js: 1.8.21
swr-store: 0.10.6
dev: false
@@ -16074,7 +16096,7 @@ packages:
svelte: 3.59.2
dev: false
- /svelte-eslint-parser@0.33.1(svelte@4.2.18):
+ /svelte-eslint-parser@0.33.1(svelte@4.2.19):
resolution: {integrity: sha512-vo7xPGTlKBGdLH8T5L64FipvTrqv3OQRx9d2z5X05KKZDlF4rQk8KViZO4flKERY+5BiVdOh7zZ7JGJWo5P0uA==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
peerDependencies:
@@ -16088,7 +16110,7 @@ packages:
espree: 9.6.1
postcss: 8.4.32
postcss-scss: 4.0.9(postcss@8.4.32)
- svelte: 4.2.18
+ svelte: 4.2.19
dev: true
/svelte-hmr@0.15.3(svelte@4.1.2):
@@ -16254,8 +16276,8 @@ packages:
magic-string: 0.30.5
periscopic: 3.1.0
- /svelte@4.2.18:
- resolution: {integrity: sha512-d0FdzYIiAePqRJEb90WlJDkjUEx42xhivxN8muUBmfZnP+tzUgz12DJ2hRJi8sIHCME7jeK1PTMgKPSfTd8JrA==}
+ /svelte@4.2.19:
+ resolution: {integrity: sha512-IY1rnGr6izd10B0A8LqsBfmlT5OILVuZ7XsI0vdGPEvuonFV7NYEUK4dAkm9Zg2q0Um92kYjTpS1CAP3Nh/KWw==}
engines: {node: '>=16'}
dependencies:
'@ampproject/remapping': 2.3.0
@@ -16311,12 +16333,12 @@ packages:
resolution: {integrity: sha512-LqVcOHSB4cPGgitD1riJ1Hh4vdmITOp+BkmfmXRh4hSF/t7EnS4iD+SOTmq7w5pPm/SiPeto4ADbKS6dHUDWFA==}
dev: false
- /swrv@1.0.4(vue@3.4.37):
+ /swrv@1.0.4(vue@3.4.38):
resolution: {integrity: sha512-zjEkcP8Ywmj+xOJW3lIT65ciY/4AL4e/Or7Gj0MzU3zBJNMdJiT8geVZhINavnlHRMMCcJLHhraLTAiDOTmQ9g==}
peerDependencies:
vue: '>=3.2.26 < 4'
dependencies:
- vue: 3.4.37(typescript@5.1.6)
+ vue: 3.4.38(typescript@5.1.6)
dev: false
/synckit@0.8.5:
@@ -16380,7 +16402,7 @@ packages:
postcss: 8.4.32
postcss-import: 15.1.0(postcss@8.4.32)
postcss-js: 4.0.1(postcss@8.4.32)
- postcss-load-config: 4.0.1(postcss@8.4.32)(ts-node@10.9.2)
+ postcss-load-config: 4.0.1(postcss@8.4.32)
postcss-nested: 6.0.1(postcss@8.4.32)
postcss-selector-parser: 6.0.13
resolve: 1.22.8
@@ -16920,8 +16942,8 @@ packages:
engines: {node: '>=14.17'}
hasBin: true
- /uglify-js@3.19.1:
- resolution: {integrity: sha512-y/2wiW+ceTYR2TSSptAhfnEtpLaQ4Ups5zrjB2d3kuVxHj16j/QJwPl5PvuGy9uARb39J0+iKxcRPvtpsx4A4A==}
+ /uglify-js@3.19.2:
+ resolution: {integrity: sha512-S8KA6DDI47nQXJSi2ctQ629YzwOVs+bQML6DAtvy0wgNdpi+0ySpQK0g2pxBq2xfF2z3YCscu7NNA8nXT9PlIQ==}
engines: {node: '>=0.8.0'}
hasBin: true
requiresBuild: true
@@ -17347,6 +17369,40 @@ packages:
vfile-message: 4.0.2
dev: false
+ /vite@4.4.8:
+ resolution: {integrity: sha512-LONawOUUjxQridNWGQlNizfKH89qPigK36XhMI7COMGztz8KNY0JHim7/xDd71CZwGT4HtSRgI7Hy+RlhG0Gvg==}
+ engines: {node: ^14.18.0 || >=16.0.0}
+ hasBin: true
+ peerDependencies:
+ '@types/node': '>= 14'
+ less: '*'
+ lightningcss: ^1.21.0
+ sass: '*'
+ stylus: '*'
+ sugarss: '*'
+ terser: ^5.4.0
+ peerDependenciesMeta:
+ '@types/node':
+ optional: true
+ less:
+ optional: true
+ lightningcss:
+ optional: true
+ sass:
+ optional: true
+ stylus:
+ optional: true
+ sugarss:
+ optional: true
+ terser:
+ optional: true
+ dependencies:
+ esbuild: 0.18.20
+ postcss: 8.4.32
+ rollup: 3.29.4
+ optionalDependencies:
+ fsevents: 2.3.3
+
/vite@4.4.8(@types/node@18.11.10)(sass@1.64.2):
resolution: {integrity: sha512-LONawOUUjxQridNWGQlNizfKH89qPigK36XhMI7COMGztz8KNY0JHim7/xDd71CZwGT4HtSRgI7Hy+RlhG0Gvg==}
engines: {node: ^14.18.0 || >=16.0.0}
@@ -17391,7 +17447,7 @@ packages:
vite:
optional: true
dependencies:
- vite: 4.4.8(@types/node@18.11.10)(sass@1.64.2)
+ vite: 4.4.8
/vscode-oniguruma@1.7.0:
resolution: {integrity: sha512-L9WMGRfrjOhgHSdOYgCt/yRMsXzLDJSL7BPrOZt73gU0iWO4mpqzqQzOz5srxqTvMBaR0XZTSrVWo4j55Rc6cA==}
@@ -17401,19 +17457,19 @@ packages:
resolution: {integrity: sha512-AFbieoL7a5LMqcnOF04ji+rpXadgOXnZsxQr//r83kLPr7biP7am3g9zbaZIaBGwBRWeSvoMD4mgPdX3e4NWBg==}
dev: false
- /vue@3.4.37(typescript@5.1.6):
- resolution: {integrity: sha512-3vXvNfkKTBsSJ7JP+LyR7GBuwQuckbWvuwAid3xbqK9ppsKt/DUvfqgZ48fgOLEfpy1IacL5f8QhUVl77RaI7A==}
+ /vue@3.4.38(typescript@5.1.6):
+ resolution: {integrity: sha512-f0ZgN+mZ5KFgVv9wz0f4OgVKukoXtS3nwET4c2vLBGQR50aI8G0cqbFtLlX9Yiyg3LFGBitruPHt2PxwTduJEw==}
peerDependencies:
typescript: '*'
peerDependenciesMeta:
typescript:
optional: true
dependencies:
- '@vue/compiler-dom': 3.4.37
- '@vue/compiler-sfc': 3.4.37
- '@vue/runtime-dom': 3.4.37
- '@vue/server-renderer': 3.4.37(vue@3.4.37)
- '@vue/shared': 3.4.37
+ '@vue/compiler-dom': 3.4.38
+ '@vue/compiler-sfc': 3.4.38
+ '@vue/runtime-dom': 3.4.38
+ '@vue/server-renderer': 3.4.38(vue@3.4.38)
+ '@vue/shared': 3.4.38
typescript: 5.1.6
dev: false