diff --git a/packages/website/package.json b/packages/website/package.json
index 387fa7bf..5f9858b4 100644
--- a/packages/website/package.json
+++ b/packages/website/package.json
@@ -38,6 +38,7 @@
"remark-wiki-link": "^0.0.4",
"rollup": "^4.18.0",
"rollup-plugin-type-as-json-schema": "^0.2.6",
+ "rollup-plugin-visualizer": "^5.12.0",
"sharp": "^0.33.4",
"svelte": "^4.2.18",
"svelte-check": "^3.8.0",
diff --git a/packages/website/src/routes/+page.svelte b/packages/website/src/routes/+page.svelte
index ce924864..de9e249d 100644
--- a/packages/website/src/routes/+page.svelte
+++ b/packages/website/src/routes/+page.svelte
@@ -2,7 +2,14 @@
import Hero from "$lib/Hero.svelte";
import SvelteSeo from "svelte-seo";
import Homepage from "Notes/Website Homepage.md";
+ import { SITE_URL, SITE_TITLE } from "$lib/metadata";
+
+
+
+
+
+
import { page } from "$app/stores";
- import { SITE_URL } from "$lib/metadata";
+ import { SITE_URL, SITE_TITLE } from "$lib/metadata";
import SvelteSeo from "svelte-seo";
export let data;
@@ -8,6 +8,11 @@
// $: console.log(data);
+
+
+
+
+
diff --git a/packages/website/src/routes/blog/[...date]/[slug]/+page.svelte b/packages/website/src/routes/blog/[...date]/[slug]/+page.svelte
index e54be8b0..81f712f4 100644
--- a/packages/website/src/routes/blog/[...date]/[slug]/+page.svelte
+++ b/packages/website/src/routes/blog/[...date]/[slug]/+page.svelte
@@ -4,7 +4,7 @@
import { browser } from "$app/environment";
import SvelteSeo from "svelte-seo";
export let data;
- import { SITE_URL } from "$lib/metadata";
+ import { SITE_URL, SITE_TITLE } from "$lib/metadata";
import Toc from "$lib/Toc.svelte";
// let GhReleasesDownload: Promise;
// if (data.ghReleaseData) {
@@ -31,6 +31,11 @@
};
+
+
+
+
+
s.length !== 0).map((p) => parseInt(p, 10))
+ if (dateParts.length > 3) {
+ throw error(404, 'Feed not found (bad date)')
+ }
+
+ const selectedPages = dateParts.length ? pages
+ .filter((post) => {
+ let date = new Date(post.date)
+ return (
+ (!dateParts[0] || date.getFullYear() == dateParts[0]) &&
+ (!dateParts[1] || date.getMonth()+1 == dateParts[1]) &&
+ (!dateParts[2] || date.getDate() == dateParts[2])
+ )
+ }) : pages;
+ const headers = {
+ 'Cache-Control': 'max-age=0, s-maxage=3600',
+ 'Content-Type': 'application/feed+json'
+ };
+ return new Response(await getJsonFeed(url.href, selectedPages), { headers });
+}
+
+const AUTHOR = "Jade Ellis"
+// prettier-ignore
+async function getJsonFeed(selfUrl: string, pages: any[]): Promise {
+
+ const feed: Feed = {
+ version: 'https://jsonfeed.org/version/1.1',
+ title: SITE_TITLE,
+ icon: `${SITE_URL}/android-chrome-256x256.png`,
+ home_page_url: SITE_URL,
+ description: SITE_DEFAULT_DESCRIPTION,
+ feed_url: selfUrl,
+ authors: [{ name: AUTHOR }],
+ items: [
+ ],
+ }
+
+ for await (const post of pages) {
+ const title = post.title;
+ const pubDate = post.date
+ const postUrl = SITE_URL + "/blog/" + post.canonical
+ // const postHtml =
+ const summary = post.description;
+ let item: typeof feed.items[number] = {
+ id: post.postUrl,
+ title,
+ url: postUrl,
+ date_published: pubDate,
+ summary,
+ content_text: "",
+ }
+ feed.items.push(item)
+ }
+
+ return JSON.stringify(feed)
+}
diff --git a/packages/website/src/routes/blog/[...date]/rss.xml/+server.ts b/packages/website/src/routes/blog/[...date]/rss.xml/+server.ts
new file mode 100644
index 00000000..ad85b150
--- /dev/null
+++ b/packages/website/src/routes/blog/[...date]/rss.xml/+server.ts
@@ -0,0 +1,80 @@
+import { pages } from '../../posts'
+
+import {
+ SITE_DEFAULT_DESCRIPTION,
+ SITE_TITLE,
+ SITE_URL,
+ RSS_DEFAULT_POSTS_PER_PAGE
+} from '$lib/metadata';
+import rssStyle from "./rss-style.xsl?url"
+import rssStyleCss from "./styles.css?url"
+import { create } from 'xmlbuilder2';
+import { error } from '@sveltejs/kit'
+// import { base } from '$app/paths';
+
+export const prerender = true;
+
+export async function GET({ url, params }) {
+ let dateParts = params.date.split(/[\/-]/).filter((s)=>s.length !== 0).map((p) => parseInt(p, 10))
+ if (dateParts.length > 3) {
+ throw error(404, 'Feed not found (bad date)')
+ }
+
+ const selectedPages = dateParts.length ? pages
+ .filter((post) => {
+ console.log("filtering")
+ let date = new Date(post.date)
+ return (
+ (!dateParts[0] || date.getFullYear() == dateParts[0]) &&
+ (!dateParts[1] || date.getMonth()+1 == dateParts[1]) &&
+ (!dateParts[2] || date.getDate() == dateParts[2])
+ )
+ }) : pages;
+ const headers = {
+ 'Cache-Control': 'max-age=0, s-maxage=3600',
+ 'Content-Type': 'application/xml'
+ };
+ url.search = "";
+ return new Response(await getRssXml(url.href, selectedPages), { headers });
+}
+
+const AUTHOR = "Jade Ellis"
+// prettier-ignore
+async function getRssXml(selfUrl: string, pages: any[]): Promise {
+ // const rssUrl = `${SITE_URL}/rss.xml`;
+ const root = create({ version: '1.0', encoding: 'utf-8' })
+ .ins('xml-stylesheet', `type="text/xsl" href="${rssStyle}"`)
+ .ele('feed', {
+ xmlns: 'http://www.w3.org/2005/Atom',
+ "xmlns:jade": 'http://jade.ellis.link',
+ })
+ .ele('jade:link', { rel:"stylesheet", href: rssStyleCss }).up()
+ .ele('title').txt(SITE_TITLE).up()
+ .ele('link', { href: SITE_URL }).up()
+ .ele('link', { rel: 'self', href: selfUrl }).up()
+ .ele('updated').txt(new Date().toISOString()).up()
+ .ele('id').txt(SITE_URL).up()
+ .ele('author')
+ .ele('name').txt(AUTHOR).up()
+ .up()
+ .ele('subtitle').txt(SITE_DEFAULT_DESCRIPTION).up()
+
+ for await (const post of pages) {
+ const title = post.title;
+ const pubDate = post.date
+ const postUrl = SITE_URL + "/blog/" + post.canonical
+ // const postHtml =
+ const summary = post.description;
+
+ root.ele('entry')
+ .ele('title').txt(title).up()
+ .ele('link', { href: postUrl }).up()
+ .ele('published').txt(pubDate).up()
+ .ele('id').txt(postUrl).up()
+ // .ele('content', { type: 'html' }).txt(postHtml).up()
+ .ele('summary').txt(summary).up()
+ .up();
+ }
+
+ return root.end()
+}
diff --git a/packages/website/src/routes/blog/[...date]/rss.xml/rss-style.xsl b/packages/website/src/routes/blog/[...date]/rss.xml/rss-style.xsl
new file mode 100644
index 00000000..5166bdaa
--- /dev/null
+++ b/packages/website/src/routes/blog/[...date]/rss.xml/rss-style.xsl
@@ -0,0 +1,100 @@
+
+
+
+
+
+
+
+ RSS Feed |
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ This is an RSS feed. Subscribe by copying
+ the URL from the address bar into your newsreader. Visit About Feeds to learn more
+ and get started. It’s free.
+
+
+
+
+
+ RSS Feed Preview
+
+
+
+
+
+
+
+
+
+ Visit Website →
+
+
+
Recent blog posts
+
+
+
+
+
+ Published on
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/packages/website/src/routes/blog/[...date]/rss.xml/styles.css b/packages/website/src/routes/blog/[...date]/rss.xml/styles.css
new file mode 100644
index 00000000..696d4179
--- /dev/null
+++ b/packages/website/src/routes/blog/[...date]/rss.xml/styles.css
@@ -0,0 +1,34 @@
+@import url("$lib/styles.css");
+
+body {
+ padding-block: var(--spacing);
+}
+.inline-icon {
+ margin-right: 0.75rem
+}
+h1 {
+ /* font-size: 3.8rem; */
+ line-height: 1;
+ /* font-weight: 800; */
+ /* margin-bottom: 4rem; */
+ text-wrap: balance;
+ }
+.flex {
+ display: flex
+}
+
+.flex-col {
+ flex-direction: column
+}
+
+.flex-wrap {
+ flex-wrap: wrap
+}
+
+.items-center {
+ align-items: center
+}
+
+.items-start {
+ align-items: flex-start
+}
\ No newline at end of file
diff --git a/packages/website/src/routes/feed.json/+server.ts b/packages/website/src/routes/feed.json/+server.ts
deleted file mode 100644
index 0a9bb206..00000000
--- a/packages/website/src/routes/feed.json/+server.ts
+++ /dev/null
@@ -1,55 +0,0 @@
-import type Feed from '@json-feed-types/1_1'
-import {
- SITE_DEFAULT_DESCRIPTION,
- SITE_TITLE,
- SITE_URL,
- RSS_DEFAULT_POSTS_PER_PAGE
-} from '$lib/metadata';
-
-import { create } from 'xmlbuilder2';
-// import { base } from '$app/paths';
-
-export const prerender = true;
-
-export async function GET() {
- const headers = {
- 'Cache-Control': 'max-age=0, s-maxage=3600',
- 'Content-Type': 'application/feed+json'
- };
- return new Response(await getJsonFeed(), { headers });
-}
-
-const AUTHOR = "Jade Ellis"
-// prettier-ignore
-async function getJsonFeed(): Promise {
- const feedUrl = `${SITE_URL}/feed.json`;
-
- const feed: Feed = {
- version: 'https://jsonfeed.org/version/1.1',
- title: SITE_TITLE,
- icon: `${SITE_URL}/android-chrome-256x256.png`,
- home_page_url: SITE_URL,
- description: SITE_DEFAULT_DESCRIPTION,
- feed_url: feedUrl,
- authors: [{ name: AUTHOR }],
- items: [
- ],
- }
- // for await (const post of posts) {
- // const pubDate =
- // const postUrl =
- // const postHtml =
- // const summary = post.metadata.description;
-
- // root.ele('entry')
- // .ele('title').txt(post.metadata.title).up()
- // .ele('link', { href: postUrl }).up()
- // .ele('updated').txt(pubDate).up()
- // .ele('id').txt(postUrl).up()
- // .ele('content', { type: 'html' }).txt(postHtml).up()
- // .ele('summary').txt(summary).up()
- // .up();
- // }
-
- return JSON.stringify(feed)
-}
diff --git a/packages/website/src/routes/rss.xml/+server.ts b/packages/website/src/routes/rss.xml/+server.ts
deleted file mode 100644
index 389aaa4b..00000000
--- a/packages/website/src/routes/rss.xml/+server.ts
+++ /dev/null
@@ -1,56 +0,0 @@
-import {
- SITE_DEFAULT_DESCRIPTION,
- SITE_TITLE,
- SITE_URL,
- RSS_DEFAULT_POSTS_PER_PAGE
-} from '$lib/metadata';
-
-import { create } from 'xmlbuilder2';
-// import { base } from '$app/paths';
-
-export const prerender = true;
-
-export async function GET() {
- const headers = {
- 'Cache-Control': 'max-age=0, s-maxage=3600',
- 'Content-Type': 'application/xml'
- };
- return new Response(await getRssXml(), { headers });
-}
-
-const AUTHOR = "Jade Ellis"
-// prettier-ignore
-async function getRssXml(): Promise {
- const rssUrl = `${SITE_URL}/rss.xml`;
- const root = create({ version: '1.0', encoding: 'utf-8' })
- .ele('feed', {
- xmlns: 'http://www.w3.org/2005/Atom',
- })
- .ele('title').txt(SITE_TITLE).up()
- .ele('link', { href: SITE_URL }).up()
- .ele('link', { rel: 'self', href: rssUrl }).up()
- .ele('updated').txt(new Date().toISOString()).up()
- .ele('id').txt(SITE_URL).up()
- .ele('author')
- .ele('name').txt(AUTHOR).up()
- .up()
- .ele('subtitle').txt(SITE_DEFAULT_DESCRIPTION).up()
-
- // for await (const post of posts) {
- // const pubDate =
- // const postUrl =
- // const postHtml =
- // const summary = post.metadata.description;
-
- // root.ele('entry')
- // .ele('title').txt(post.metadata.title).up()
- // .ele('link', { href: postUrl }).up()
- // .ele('updated').txt(pubDate).up()
- // .ele('id').txt(postUrl).up()
- // .ele('content', { type: 'html' }).txt(postHtml).up()
- // .ele('summary').txt(summary).up()
- // .up();
- // }
-
- return root.end()
-}
diff --git a/packages/website/vite.config.ts b/packages/website/vite.config.ts
index 70d440ad..ea6a4565 100644
--- a/packages/website/vite.config.ts
+++ b/packages/website/vite.config.ts
@@ -1,5 +1,5 @@
import { sveltekit } from "@sveltejs/kit/vite";
-import { defineConfig } from "vite";
+import { defineConfig, type PluginOption } from "vite";
import { ViteImageOptimizer } from "vite-plugin-image-optimizer";
import dynamicImport from 'vite-plugin-dynamic-import'
import typeAsJsonSchemaPlugin from "rollup-plugin-type-as-json-schema";
@@ -49,6 +49,9 @@ const fallback: {[key: string]: string} = {
'.webp': 'png'
};
+
+import { visualizer } from "rollup-plugin-visualizer";
+
export default defineConfig({
resolve: {
alias: {
@@ -94,6 +97,10 @@ export default defineConfig({
// dynamicImportVars({
// // options
// })
+ // visualizer({
+ // emitFile: true,
+ // filename: "stats.html",
+ // }) as PluginOption
],
build: {
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 8635099d..052487fb 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -164,6 +164,9 @@ importers:
rollup-plugin-type-as-json-schema:
specifier: ^0.2.6
version: 0.2.6
+ rollup-plugin-visualizer:
+ specifier: ^5.12.0
+ version: 5.12.0(rollup@4.18.0)
sharp:
specifier: ^0.33.4
version: 0.33.4
@@ -1136,6 +1139,10 @@ packages:
resolution: {integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==}
engines: {node: '>=6'}
+ cliui@8.0.1:
+ resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==}
+ engines: {node: '>=12'}
+
code-red@1.0.4:
resolution: {integrity: sha512-7qJWqItLA8/VPVlKJlFXU+NBlo/qyfs39aJcuMT/2ere32ZqvF5OSxgdM5xOfJJ7O429gg2HM47y8v9P+9wrNw==}
@@ -1251,6 +1258,10 @@ packages:
resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==}
engines: {node: '>=0.10.0'}
+ define-lazy-prop@2.0.0:
+ resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==}
+ engines: {node: '>=8'}
+
deprecation@2.3.1:
resolution: {integrity: sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==}
@@ -1324,6 +1335,10 @@ packages:
engines: {node: '>=12'}
hasBin: true
+ escalade@3.1.2:
+ resolution: {integrity: sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==}
+ engines: {node: '>=6'}
+
escape-string-regexp@1.0.5:
resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==}
engines: {node: '>=0.8.0'}
@@ -1397,6 +1412,10 @@ packages:
function-bind@1.1.2:
resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==}
+ get-caller-file@2.0.5:
+ resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==}
+ engines: {node: 6.* || 8.* || >= 10.*}
+
github-slugger@2.0.0:
resolution: {integrity: sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw==}
@@ -1506,6 +1525,11 @@ packages:
is-core-module@2.13.1:
resolution: {integrity: sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==}
+ is-docker@2.2.1:
+ resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==}
+ engines: {node: '>=8'}
+ hasBin: true
+
is-extglob@2.1.1:
resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==}
engines: {node: '>=0.10.0'}
@@ -1539,6 +1563,10 @@ packages:
is-reference@3.0.2:
resolution: {integrity: sha512-v3rht/LgVcsdZa3O2Nqs+NMowLOxeOm7Ay9+/ARQ2F+qEoANRcqrjAZKGN0v8ymUetZGgkp26LTnGT7H0Qo9Pg==}
+ is-wsl@2.2.0:
+ resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==}
+ engines: {node: '>=8'}
+
isexe@2.0.0:
resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==}
@@ -1836,6 +1864,10 @@ packages:
once@1.4.0:
resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==}
+ open@8.4.2:
+ resolution: {integrity: sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==}
+ engines: {node: '>=12'}
+
param-case@3.0.4:
resolution: {integrity: sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==}
@@ -1957,6 +1989,10 @@ packages:
remark-wiki-link@0.0.4:
resolution: {integrity: sha512-Mmd5TspUWTnt+gafIdUtczHsjZY21XYEI9BeR6HMLKv/pUiNa5tDSWSjiPMvx07DlD4OmSM+tIhhk7SQXV3LrA==}
+ require-directory@2.1.1:
+ resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==}
+ engines: {node: '>=0.10.0'}
+
resolve-from@4.0.0:
resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==}
engines: {node: '>=4'}
@@ -1978,6 +2014,16 @@ packages:
resolution: {integrity: sha512-oxnqPK25qv5AqMOxZELQOGVFeidJJLBbd6Hngn4kbTGP9qH+CEw4SUW8hwt8bEVBGQPaL7wLYZXkVXYJgnlZ1Q==}
engines: {node: '>=14'}
+ rollup-plugin-visualizer@5.12.0:
+ resolution: {integrity: sha512-8/NU9jXcHRs7Nnj07PF2o4gjxmm9lXIrZ8r175bT9dK8qoLlvKTwRMArRCMgpMGlq8CTLugRvEmyMeMXIU2pNQ==}
+ engines: {node: '>=14'}
+ hasBin: true
+ peerDependencies:
+ rollup: 2.x || 3.x || 4.x
+ peerDependenciesMeta:
+ rollup:
+ optional: true
+
rollup@4.18.0:
resolution: {integrity: sha512-QmJz14PX3rzbJCN1SG4Xe/bAAX2a6NpCP8ab2vfu2GiUr8AQcr2nCV/oEO3yneFarB67zk8ShlIyWb2LGTb3Sg==}
engines: {node: '>=18.0.0', npm: '>=8.0.0'}
@@ -2058,6 +2104,10 @@ packages:
resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==}
engines: {node: '>=0.10.0'}
+ source-map@0.7.4:
+ resolution: {integrity: sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==}
+ engines: {node: '>= 8'}
+
space-separated-tokens@2.0.2:
resolution: {integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==}
@@ -2478,6 +2528,18 @@ packages:
resolution: {integrity: sha512-WCSfbfZnQDdLQLiMdGUQpMxxckeQ4oZNMNhLVkcekTu7xhD4tuUDyAPoY8CwXvBYE6LwBHd6QW2WZXlOWr1vCw==}
engines: {node: '>=12.0'}
+ y18n@5.0.8:
+ resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==}
+ engines: {node: '>=10'}
+
+ yargs-parser@21.1.1:
+ resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==}
+ engines: {node: '>=12'}
+
+ yargs@17.7.2:
+ resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==}
+ engines: {node: '>=12'}
+
zwitch@2.0.4:
resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==}
@@ -3335,6 +3397,12 @@ snapshots:
clean-stack@2.2.0: {}
+ cliui@8.0.1:
+ dependencies:
+ string-width: 4.2.3
+ strip-ansi: 6.0.1
+ wrap-ansi: 7.0.0
+
code-red@1.0.4:
dependencies:
'@jridgewell/sourcemap-codec': 1.4.15
@@ -3455,6 +3523,8 @@ snapshots:
deepmerge@4.3.1: {}
+ define-lazy-prop@2.0.0: {}
+
deprecation@2.3.1: {}
dequal@2.0.3: {}
@@ -3541,6 +3611,8 @@ snapshots:
'@esbuild/win32-ia32': 0.21.5
'@esbuild/win32-x64': 0.21.5
+ escalade@3.1.2: {}
+
escape-string-regexp@1.0.5: {}
escape-string-regexp@5.0.0: {}
@@ -3605,6 +3677,8 @@ snapshots:
function-bind@1.1.2: {}
+ get-caller-file@2.0.5: {}
+
github-slugger@2.0.0: {}
glob-parent@5.1.2:
@@ -3750,6 +3824,8 @@ snapshots:
dependencies:
hasown: 2.0.2
+ is-docker@2.2.1: {}
+
is-extglob@2.1.1: {}
is-fullwidth-code-point@3.0.0: {}
@@ -3774,6 +3850,10 @@ snapshots:
dependencies:
'@types/estree': 1.0.5
+ is-wsl@2.2.0:
+ dependencies:
+ is-docker: 2.2.1
+
isexe@2.0.0: {}
jackspeak@3.4.0:
@@ -4250,6 +4330,12 @@ snapshots:
dependencies:
wrappy: 1.0.2
+ open@8.4.2:
+ dependencies:
+ define-lazy-prop: 2.0.0
+ is-docker: 2.2.1
+ is-wsl: 2.2.0
+
param-case@3.0.4:
dependencies:
dot-case: 3.0.4
@@ -4405,6 +4491,8 @@ snapshots:
'@babel/runtime': 7.24.7
unist-util-map: 1.0.5
+ require-directory@2.1.1: {}
+
resolve-from@4.0.0: {}
resolve@1.22.8:
@@ -4424,6 +4512,15 @@ snapshots:
lodash: 4.17.21
ts-json-schema-generator: 1.5.1
+ rollup-plugin-visualizer@5.12.0(rollup@4.18.0):
+ dependencies:
+ open: 8.4.2
+ picomatch: 2.3.1
+ source-map: 0.7.4
+ yargs: 17.7.2
+ optionalDependencies:
+ rollup: 4.18.0
+
rollup@4.18.0:
dependencies:
'@types/estree': 1.0.5
@@ -4541,6 +4638,8 @@ snapshots:
source-map@0.6.1: {}
+ source-map@0.7.4: {}
+
space-separated-tokens@2.0.2: {}
sprintf-js@1.0.3: {}
@@ -4986,4 +5085,18 @@ snapshots:
'@oozcitak/util': 8.3.8
js-yaml: 3.14.1
+ y18n@5.0.8: {}
+
+ yargs-parser@21.1.1: {}
+
+ yargs@17.7.2:
+ dependencies:
+ cliui: 8.0.1
+ escalade: 3.1.2
+ get-caller-file: 2.0.5
+ require-directory: 2.1.1
+ string-width: 4.2.3
+ y18n: 5.0.8
+ yargs-parser: 21.1.1
+
zwitch@2.0.4: {}