diff --git a/.dockerignorefile b/.dockerignorefile index 9143b06b..24224fad 100644 --- a/.dockerignorefile +++ b/.dockerignorefile @@ -1,3 +1,5 @@ servers compose.yml -node_modules \ No newline at end of file +node_modules +.gitignore +Dockerfile \ No newline at end of file diff --git a/.gitignore b/.gitignore index 7a252950..b86e38f3 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ node_modules -servers/*.ign \ No newline at end of file +servers/*.ign +.parcel-cache \ No newline at end of file diff --git a/compose.yml b/compose.yml index 588c06bb..952ad075 100644 --- a/compose.yml +++ b/compose.yml @@ -29,10 +29,10 @@ services: # - "traefik.http.routers.to-website.rule=Host(`jade.ellis.link`)" # - "traefik.http.routers.to-website.entrypoints=http" - - "traefik.http.routers.to-website.rule=Host(`jade.ellis.link`)" - - "traefik.http.routers.to-website.entrypoints=https" - - "traefik.http.routers.to-website.tls=true" - - "traefik.http.routers.to-website.tls.certresolver=letsencrypt" + - "traefik.http.routers.to-website.rule=Host(`jade.ellis.link.localhost`)" + - "traefik.http.routers.to-website.entrypoints=http" + # - "traefik.http.routers.to-website.tls=true" + # - "traefik.http.routers.to-website.tls.certresolver=letsencrypt" # - "traefik.http.routers.to-website.middlewares=cors-headers@docker" # - "traefik.http.middlewares.cors-headers.headers.accessControlAllowOriginList=*" @@ -51,25 +51,25 @@ services: - "--log.level=DEBUG" - "--providers.docker=true" - "--providers.docker.exposedbydefault=false" - - "--entrypoints.http.address=:80" - - "--entrypoints.https.address=:443" + - "--entrypoints.http.address=:8080" + # - "--entrypoints.https.address=:443" # - "--acme" - - "--certificatesresolvers.letsencrypt.acme.email='jade@ellis.link'" - - "--certificatesresolvers.letsencrypt.acme.storage=/certificates/acme.json" + # - "--certificatesresolvers.letsencrypt.acme.email='jade@ellis.link'" + # - "--certificatesresolvers.letsencrypt.acme.storage=/certificates/acme.json" # - "--certificatesresolvers.letsencrypt.acme.httpchallenge=true" # - "--certificatesresolvers.letsencrypt.acme.httpChallenge.entryPoint=http" - - "--certificatesresolvers.lets-encrypt.acme.tlschallenge=true" + # - "--certificatesresolvers.lets-encrypt.acme.tlschallenge=true" - - "--entrypoints.http.http.redirections.entryPoint.to=https" - - "--entrypoints.http.http.redirections.entryPoint.scheme=https" + # - "--entrypoints.http.http.redirections.entryPoint.to=https" + # - "--entrypoints.http.http.redirections.entryPoint.scheme=https" # - --api.dashboard=true # - --api.insecure=true ports: - - "80:80" - - "443:443" - # - "8080:8080" + # - "80:80" + # - "443:443" + - "8080:8080" volumes: - "/run/user/1000/podman/podman.sock:/var/run/docker.sock" # - "/var/run/docker.sock:/var/run/docker.sock:ro" diff --git a/packages/website/.dockerignore b/packages/website/.dockerignore new file mode 100644 index 00000000..f84fb13d --- /dev/null +++ b/packages/website/.dockerignore @@ -0,0 +1,13 @@ +.DS_Store +node_modules +/build +/.svelte-kit +/package +.env +.env.* +!.env.example +.vercel +.output +vite.config.js.timestamp-* +vite.config.ts.timestamp-* +output \ No newline at end of file diff --git a/packages/website/.gitignore b/packages/website/.gitignore index 8f6c617e..f84fb13d 100644 --- a/packages/website/.gitignore +++ b/packages/website/.gitignore @@ -10,3 +10,4 @@ node_modules .output vite.config.js.timestamp-* vite.config.ts.timestamp-* +output \ No newline at end of file diff --git a/packages/website/Dockerfile b/packages/website/Dockerfile index fcb8719c..922ce1ec 100644 --- a/packages/website/Dockerfile +++ b/packages/website/Dockerfile @@ -16,13 +16,15 @@ RUN --mount=type=cache,id=pnpm,target=/pnpm/store pnpm install --frozen-lockfile RUN cd packages/website; pnpm run build - +run cd packages/website; pnpm exec rollup -c server-rollup.config.mjs # copy node_modules/ and other build files over FROM node:alpine WORKDIR /app -COPY --from=build /app/packages/website/build . +COPY --from=build /app/packages/website/output . +COPY --from=build /app/packages/website/build/client ./client/ +COPY --from=build /app/packages/website/build/prerendered ./prerendered/ COPY --from=build /app/packages/website/package.json ./package.json ENV NODE_ENV production diff --git a/packages/website/csp.js b/packages/website/csp.js index 506b7cf4..fdbf8ccf 100644 --- a/packages/website/csp.js +++ b/packages/website/csp.js @@ -20,7 +20,7 @@ const cspDirectives = { 'manifest-src': ["'self'"], 'media-src': ["'self'", 'data:'], 'object-src': ["'none'"], - 'style-src': ["'self'"], + 'style-src': ["'self'", "'unsafe-inline'"], // 'style-src': ["'self'", "'unsafe-inline'", 'https://hcaptcha.com', 'https://*.hcaptcha.com'], 'default-src': [ 'self', diff --git a/packages/website/package.json b/packages/website/package.json index 07ed028c..5f929fe1 100644 --- a/packages/website/package.json +++ b/packages/website/package.json @@ -12,10 +12,13 @@ "@fontsource/fira-mono": "^4.5.10", "@json-feed-types/1_1": "^1.0.2", "@neoconfetti/svelte": "^1.0.0", + "@rollup/plugin-node-resolve": "^15.2.3", "@sveltejs/adapter-auto": "^3.0.0", "@sveltejs/adapter-node": "^4.0.1", "@sveltejs/kit": "^2.0.0", "@sveltejs/vite-plugin-svelte": "^3.0.0", + "rollup": "^4.14.1", + "rollup-plugin-type-as-json-schema": "^0.2.6", "sharp": "^0.33.2", "svelte": "^4.2.7", "svelte-check": "^3.6.0", @@ -29,8 +32,33 @@ }, "type": "module", "dependencies": { + "@codemirror/lang-javascript": "^6.2.2", + "@codemirror/language": "^6.10.1", + "@codemirror/lint": "^6.5.0", + "@codemirror/state": "^6.4.1", + "@codemirror/view": "^6.26.2", + "@lezer/highlight": "^1.2.0", "@steeze-ui/svelte-icon": "^1.5.0", + "@uiw/codemirror-theme-github": "^4.21.25", + "acorn": "^8.11.3", + "magic-string": "^0.30.9", "super-sitemap": "^0.14.14", + "svelte-codemirror-editor": "^1.3.0", + "terser": "^5.30.3", "xmlbuilder2": "^3.1.1" + }, + "targets": { + "module": { + "context": "node", + "engines": { + "node": ">= 20" + }, + "outputFormat": "esmodule", + "optimize": true, + "includeNodeModules": true + } + }, + "@parcel/resolver-default": { + "packageExports": true } } diff --git a/packages/website/server-rollup.config.mjs b/packages/website/server-rollup.config.mjs new file mode 100644 index 00000000..d90db847 --- /dev/null +++ b/packages/website/server-rollup.config.mjs @@ -0,0 +1,11 @@ +// rollup.config.mjs +import { nodeResolve } from '@rollup/plugin-node-resolve'; + +export default { + input: 'build/index.js', + output: { + dir: "output", + format: 'esm' + }, + plugins: [nodeResolve()] +}; \ No newline at end of file diff --git a/packages/website/src/lib/Editor.svelte b/packages/website/src/lib/Editor.svelte new file mode 100644 index 00000000..cfd38669 --- /dev/null +++ b/packages/website/src/lib/Editor.svelte @@ -0,0 +1,85 @@ + + + +
+ +{#if $$slots.header} +
+ +
+{/if} + +
+ + diff --git a/packages/website/src/lib/styles.css b/packages/website/src/lib/styles.css index 6f587b64..ee5454ed 100644 --- a/packages/website/src/lib/styles.css +++ b/packages/website/src/lib/styles.css @@ -4,6 +4,10 @@ --theme: #242424; --background-color: #f8f8f8; --surface-color: #fff; + --surface-secondary-color: #ededed; + + --input-background-color: #fff; + --input-color: #24292e; --backdrop-color: rgba(247, 247, 247, .54); --shadow-color: rgba(0, 0, 0, .12); --font-color: rgba(0, 0, 0, .87); @@ -23,6 +27,10 @@ --backdrop-color: rgba(20, 20, 20, .54); --shadow-color: rgba(255, 255, 255, .12); --surface-color: #242424; + --surface-secondary-color: #222222; + + --input-background-color: #161616; + --input-color: #d8d8d8; --font-color: rgba(255, 255, 255, .87); --font-color-contrast: rgba(0, 0, 0, .87); --font-color-secondary: rgba(255, 255, 255, .6) diff --git a/packages/website/src/lib/theme.ts b/packages/website/src/lib/theme.ts new file mode 100644 index 00000000..efab5962 --- /dev/null +++ b/packages/website/src/lib/theme.ts @@ -0,0 +1,9 @@ +import { writable } from 'svelte/store' + +let query = typeof window != "undefined" ? window?.matchMedia('(prefers-color-scheme: dark)') : undefined + +export const theme = writable(query?.matches ? 'dark' : 'light') + +query?.addEventListener('change', e => { + theme.set(e.matches ? 'dark' : 'light') +}); diff --git a/packages/website/src/lib/themes/github.ts b/packages/website/src/lib/themes/github.ts new file mode 100644 index 00000000..9cee4e17 --- /dev/null +++ b/packages/website/src/lib/themes/github.ts @@ -0,0 +1,172 @@ + +import { tags as t } from '@lezer/highlight'; + +// NOTE: This requires enabling unsafe-inline styles in the CSP +// From thememirror +import { EditorView } from '@codemirror/view'; +import type { Extension } from '@codemirror/state'; +import { + HighlightStyle, + type TagStyle, + syntaxHighlighting, +} from '@codemirror/language'; + +interface Options { + /** + * Theme variant. Determines which styles CodeMirror will apply by default. + */ + variant: Variant; + + /** + * Settings to customize the look of the editor, like background, gutter, selection and others. + */ + settings: Settings; + + /** + * Syntax highlighting styles. + */ + styles: TagStyle[]; +} + +type Variant = 'light' | 'dark'; + +interface Settings { + /** + * Editor background. + */ + background: string; + + /** + * Default text color. + */ + foreground: string; + + /** + * Caret color. + */ + caret: string; + + /** + * Selection background. + */ + selection: string; + + /** + * Background of highlighted lines. + */ + lineHighlight: string; + + /** + * Gutter background. + */ + gutterBackground: string; + + /** + * Text color inside gutter. + */ + gutterForeground: string; +} + +const createTheme = ({ variant, settings, styles }: Options): Extension => { + const theme = EditorView.theme( + { + // eslint-disable-next-line @typescript-eslint/naming-convention + '&': { + backgroundColor: settings.background, + color: settings.foreground, + }, + '.cm-content': { + caretColor: settings.caret, + }, + '.cm-cursor, .cm-dropCursor': { + borderLeftColor: settings.caret, + }, + '&.cm-focused .cm-selectionLayer .cm-selectionBackground, .cm-content ::selection': + { + backgroundColor: settings.selection, + }, + '.cm-activeLine': { + backgroundColor: settings.lineHighlight, + }, + '.cm-gutters': { + backgroundColor: settings.gutterBackground, + color: settings.gutterForeground, + }, + '.cm-activeLineGutter': { + backgroundColor: settings.lineHighlight, + }, + }, + { + dark: variant === 'dark', + }, + ); + + const highlightStyle = HighlightStyle.define(styles); + const extension = [theme, syntaxHighlighting(highlightStyle)]; + + return extension; +}; + +export default createTheme; + +export const githubLight = createTheme({ + variant: 'light', + settings: { + background: '#fff', + foreground: '#24292e', + selection: '#BBDFFF', + // selectionMatch: '#BBDFFF', + gutterBackground: '#fff', + gutterForeground: '#6e7781', + caret: '#7c3aed', + lineHighlight: '#8a91991a', + }, + styles: [ + { tag: [t.standard(t.tagName), t.tagName], color: '#116329' }, + { tag: [t.comment, t.bracket], color: '#6a737d' }, + { tag: [t.className, t.propertyName], color: '#6f42c1' }, + { tag: [t.variableName, t.attributeName, t.number, t.operator], color: '#005cc5' }, + { tag: [t.keyword, t.typeName, t.typeOperator, t.typeName], color: '#d73a49' }, + { tag: [t.string, t.meta, t.regexp], color: '#032f62' }, + { tag: [t.name, t.quote], color: '#22863a' }, + { tag: [t.heading, t.strong], color: '#24292e', fontWeight: 'bold' }, + { tag: [t.emphasis], color: '#24292e', fontStyle: 'italic' }, + { tag: [t.deleted], color: '#b31d28', backgroundColor: 'ffeef0' }, + { tag: [t.atom, t.bool, t.special(t.variableName)], color: '#e36209' }, + { tag: [t.url, t.escape, t.regexp, t.link], color: '#032f62' }, + { tag: t.link, textDecoration: 'underline' }, + { tag: t.strikethrough, textDecoration: 'line-through' }, + { tag: t.invalid, color: '#cb2431' } + ], +}); + +export + const githubDark = createTheme({ + variant: 'dark', + settings: { + background: '#161616', + foreground: '#d8d8d8', + caret: '#c9d1d9', + selection: '#003d73', + // selectionMatch: '#003d73',\ + lineHighlight: '#1e1e1e', + gutterBackground: '#1c1c1c', + gutterForeground: '#fff', + }, + styles: [ + { tag: [t.standard(t.tagName), t.tagName], color: '#7ee787' }, + { tag: [t.comment, t.bracket], color: '#8b949e' }, + { tag: [t.className, t.propertyName], color: '#d2a8ff' }, + { tag: [t.variableName, t.attributeName, t.number, t.operator], color: '#79c0ff' }, + { tag: [t.keyword, t.typeName, t.typeOperator, t.typeName], color: '#ff7b72' }, + { tag: [t.string, t.meta, t.regexp], color: '#a5d6ff' }, + { tag: [t.name, t.quote], color: '#7ee787' }, + { tag: [t.heading, t.strong], color: '#d2a8ff', fontWeight: 'bold' }, + { tag: [t.emphasis], color: '#d2a8ff', fontStyle: 'italic' }, + { tag: [t.deleted], color: '#ffdcd7', backgroundColor: 'ffeef0' }, + { tag: [t.atom, t.bool, t.special(t.variableName)], color: '#ffab70' }, + { tag: t.link, textDecoration: 'underline' }, + { tag: t.strikethrough, textDecoration: 'line-through' }, + { tag: t.invalid, color: '#f97583' }, + ], + }); \ No newline at end of file diff --git a/packages/website/src/routes/(tools)/bookmarklets/+page.svelte b/packages/website/src/routes/(tools)/bookmarklets/+page.svelte new file mode 100644 index 00000000..61310e08 --- /dev/null +++ b/packages/website/src/routes/(tools)/bookmarklets/+page.svelte @@ -0,0 +1,82 @@ + + + +

Bookmarklet Maker

+ (value = e.detail)} + lang={LanguageConfig.JavaScript} +> +
Input
+
+ +

Output

+{#await progress} +

...waiting

+{:catch error} +

{error.message}

+{/await} + + + +

+ Bookmark this link: {options.name || "My Bookmarklet"} +

+

+ Either drag the link to your bookmarlets bar or, on FireFox, right click and + select "Bookmark Link" +

+ + diff --git a/packages/website/src/routes/(tools)/bookmarklets/+page.ts b/packages/website/src/routes/(tools)/bookmarklets/+page.ts new file mode 100644 index 00000000..189f71e2 --- /dev/null +++ b/packages/website/src/routes/(tools)/bookmarklets/+page.ts @@ -0,0 +1 @@ +export const prerender = true; diff --git a/packages/website/src/routes/(tools)/bookmarklets/bookmarklets.ts b/packages/website/src/routes/(tools)/bookmarklets/bookmarklets.ts new file mode 100644 index 00000000..e9d7d3b4 --- /dev/null +++ b/packages/website/src/routes/(tools)/bookmarklets/bookmarklets.ts @@ -0,0 +1,223 @@ + + +import MagicString from "magic-string"; +import { Parser } from "acorn"; +import { minify } from "terser"; + +let sourceMap = false; + +import { configSchema } from "./config.schema"; +import type { Config } from "./config"; +// console.log(configSchema) +export async function bookmarkify(code: string, options: Config) { + + // try { + if (options.script) { + options.script = options.script.reverse(); + options.script.forEach(s => { + let { path, opts } = extractOptions(s); + code = loadScript(code, path, opts.loadOnce); + }); + } + + if (options.style) { + options.style.forEach(s => { + let { path, opts } = extractOptions(s); + code = loadStyle(path, opts.loadOnce) + code; + }); + } + + const result = await minify(code, { sourceMap }); + // return result.code; + if (typeof result.code == "string") { + // const intermediate = new MagicString(result.code); + return `javascript:${encodeURIComponent("(function(){" + result.code + "})()")}`; + } + // } catch (e) { + // console.log("Error occurred", e); + // } +} + +export async function parseMeta(str: string): Promise { + enum MetaState { + PreOpen, + Opened, + Closed + } + let state: MetaState = MetaState.PreOpen + + + const openMetadata = /==bookmarklet==/gim; + const closeMetadata = /==\/bookmarklet==/gim; + const metaLine = /^[\s]*@([^\s]+)\s+(.*)$/gim; + let options: Config = {}; + + Parser.parse(str, { + ecmaVersion: "latest", + onComment(isBlock, text, start, end, startLoc, endLoc) { + openMetadata.lastIndex = 0; + closeMetadata.lastIndex = 0; + metaLine.lastIndex = 0; + if (state == MetaState.PreOpen) { + let res = openMetadata.exec(text) + if (res !== null) { + state = MetaState.Opened + closeMetadata.lastIndex = openMetadata.lastIndex; + metaLine.lastIndex = openMetadata.lastIndex; + // console.log("Meta opened at", start + openMetadata.lastIndex) + } + } + // console.log(text, closeMetadata.lastIndex) + let res + while (state == MetaState.Opened && (res = metaLine.exec(text)) !== null) { + closeMetadata.lastIndex = metaLine.lastIndex; + // console.log(str.slice(start + 2 + (metaLine.lastIndex - res[0].length), start + 2 + metaLine.lastIndex )) + let k = res[1]; + let v = res[2]; + if (k) { + if (configSchema.properties[k]?.type == "array") { + options[k] = options[k] || []; + options[k].push(v); + } else if (configSchema.properties[k]?.type == "boolean") { + options[k] = v.toLowerCase() == 'true'; + } else { + options[k] = v; + } + } + } + + if (state == MetaState.Opened) { + let endRes = closeMetadata.exec(text) + if (endRes !== null) { + state = MetaState.Closed; + + // console.log("Meta closed at", start + closeMetadata.lastIndex) + } + } + }, + }); + + // @ts-ignore + if (state == MetaState.Opened) { + throw new Error("Missing metadata close block. Add '==/Bookmarklet==' to your comment block"); + + } + return options; +} + +function loadScript(code: string, path: string, loadOnce: boolean) { + loadOnce = !!loadOnce; + let id = `bookmarklet__script_${cyrb53(path).toString(36).substring(0, 7)}`; + return ` + function callback(){ + ${code} + } + + if (!${loadOnce} || !document.getElementById("${id}")) { + var s = document.createElement("script"); + if (s.addEventListener) { + s.addEventListener("load", callback, false) + } else if (s.readyState) { + s.onreadystatechange = callback + } + if (${loadOnce}) { + s.id = "${id}"; + } + s.src = "${quoteEscape(path)}"; + document.body.appendChild(s); + } else { + callback(); + } + `; +} + +function loadStyle(path: string, loadOnce: boolean) { + loadOnce = !!loadOnce; + let id = `bookmarklet__style_${cyrb53(path).toString(36).substring(0, 7)}`; + return ` + if (!${loadOnce} || !document.getElementById("${id}")) { + var link = document.createElement("link"); + if (${loadOnce}) { + link.id = "${id}"; + } + link.rel="stylesheet"; + link.href = "${quoteEscape(path)}"; + document.body.appendChild(link); + } + `; +} +const cyrb53 = (str: string, seed = 0) => { + let h1 = 0xdeadbeef ^ seed, h2 = 0x41c6ce57 ^ seed; + for (let i = 0, ch; i < str.length; i++) { + ch = str.charCodeAt(i); + h1 = Math.imul(h1 ^ ch, 2654435761); + h2 = Math.imul(h2 ^ ch, 1597334677); + } + h1 = Math.imul(h1 ^ (h1 >>> 16), 2246822507); + h1 ^= Math.imul(h2 ^ (h2 >>> 13), 3266489909); + h2 = Math.imul(h2 ^ (h2 >>> 16), 2246822507); + h2 ^= Math.imul(h1 ^ (h1 >>> 13), 3266489909); + + return 4294967296 * (2097151 & h2) + (h1 >>> 0); +}; +function extractOptions(path: string) { + // Returns { + // path: the updated path string (minus any options) + // opts: plain object of options + // } + // + // You can prefix a path with options in the form of: + // + // ``` + // @style !loadOnce !foo=false https://example.com/foo.css + // ``` + // + // If there is no `=`, then the value of the option defaults to `true`. + // Values get converted via JSON.parse if possible, o/w they're a string. + // + let opts: { [x: string]: any } = {}; + + let matcher = /^(\![^\s]+)\s+/g + + let m + let splitAfter = 0; + while ((m = matcher.exec(path)) !== null) { + splitAfter = matcher.lastIndex; + + let opt = m[1].substring(1).split('='); + opts[opt[0]] = opt[1] === undefined ? true : _fuzzyParse(opt[1]); + // break + } + return { path: path.substring(splitAfter), opts }; +} + +const _fuzzyParse = (val: string) => { + try { + return JSON.parse(val); + } catch (e) { + return val; + } +}; + +// function result() { + +// return minification(value) +// .then((result) => { +// errorMessage = ""; +// if (result === "") { +// errorMessage = "Put some code in there!"; +// } else { +// codeOutput = "javascript:(function(){" + result + "}());"; +// } +// return; +// }) +// .catch((err) => { +// codeOutput = ""; +// return (errorMessage = err); +// }); +// } + + +function quoteEscape(x) { + return x.replace('"', '\\"').replace("'", "\\'"); +} \ No newline at end of file diff --git a/packages/website/src/routes/(tools)/bookmarklets/config.ts b/packages/website/src/routes/(tools)/bookmarklets/config.ts new file mode 100644 index 00000000..0352f081 --- /dev/null +++ b/packages/website/src/routes/(tools)/bookmarklets/config.ts @@ -0,0 +1,13 @@ +export interface Config { + author?: string; + description?: string; + email?: string; + license?: string; + name?: string; + repository?: string; + script?: string[]; + style?: string[]; + url?: string; + version?: string; + [x: string]: any; +} diff --git a/packages/website/svelte.config.js b/packages/website/svelte.config.js index 98976e8a..601f721c 100644 --- a/packages/website/svelte.config.js +++ b/packages/website/svelte.config.js @@ -15,7 +15,22 @@ const config = { // adapter-auto only supports some environments, see https://kit.svelte.dev/docs/adapter-auto for a list. // If your environment is not supported or you settled on a specific environment, switch out the adapter. // See https://kit.svelte.dev/docs/adapters for more information about adapters. - adapter: htmlMinifierAdaptor(adapter()), + adapter: + htmlMinifierAdaptor( + adapter(), + { + pages: "build/prerendered/", + minifierOptions: { + minifyURLs: true, + + // Because of CSP hashing + minifyJS: false, // We can pass a function here + collapseWhitespace: false, + sortAttributes: true, + sortClassName: true, + removeRedundantAttributes: true + } + }), csp: { mode: "auto", directives: cspDirectives, diff --git a/packages/website/vite.config.ts b/packages/website/vite.config.ts index 405cbf3d..ef3df634 100644 --- a/packages/website/vite.config.ts +++ b/packages/website/vite.config.ts @@ -1,10 +1,13 @@ import { sveltekit } from '@sveltejs/kit/vite'; import { defineConfig } from 'vite'; import { ViteImageOptimizer } from 'vite-plugin-image-optimizer'; +import typeAsJsonSchemaPlugin from 'rollup-plugin-type-as-json-schema'; export default defineConfig({ plugins: [ + + typeAsJsonSchemaPlugin(), ViteImageOptimizer({ /* pass your config */ }), @@ -12,5 +15,16 @@ export default defineConfig({ ], build: { assetsInlineLimit: 0 - } + }, + optimizeDeps: { + exclude: [ + "codemirror", + // "@codemirror/lang-javascript", + // "@codemirror/state", + // "@codemirror/lint", + // "@codemirror/autocomplete", + // "@codemirror/language", + // "thememirror" + /* ... */], + }, }); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index efb416e0..4ad5ce52 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -10,12 +10,45 @@ importers: packages/website: dependencies: + '@codemirror/lang-javascript': + specifier: ^6.2.2 + version: 6.2.2 + '@codemirror/language': + specifier: ^6.10.1 + version: 6.10.1 + '@codemirror/lint': + specifier: ^6.5.0 + version: 6.5.0 + '@codemirror/state': + specifier: ^6.4.1 + version: 6.4.1 + '@codemirror/view': + specifier: ^6.26.2 + version: 6.26.2 + '@lezer/highlight': + specifier: ^1.2.0 + version: 1.2.0 '@steeze-ui/svelte-icon': specifier: ^1.5.0 version: 1.5.0(svelte@4.2.8) + '@uiw/codemirror-theme-github': + specifier: ^4.21.25 + version: 4.21.25(@codemirror/language@6.10.1)(@codemirror/state@6.4.1)(@codemirror/view@6.26.2) + acorn: + specifier: ^8.11.3 + version: 8.11.3 + magic-string: + specifier: ^0.30.9 + version: 0.30.9 super-sitemap: specifier: ^0.14.14 version: 0.14.14(svelte@4.2.8) + svelte-codemirror-editor: + specifier: ^1.3.0 + version: 1.3.0(codemirror@6.0.1)(svelte@4.2.8) + terser: + specifier: ^5.30.3 + version: 5.30.3 xmlbuilder2: specifier: ^3.1.1 version: 3.1.1 @@ -29,6 +62,9 @@ importers: '@neoconfetti/svelte': specifier: ^1.0.0 version: 1.0.0 + '@rollup/plugin-node-resolve': + specifier: ^15.2.3 + version: 15.2.3(rollup@4.14.1) '@sveltejs/adapter-auto': specifier: ^3.0.0 version: 3.1.1(@sveltejs/kit@2.5.0) @@ -41,6 +77,12 @@ importers: '@sveltejs/vite-plugin-svelte': specifier: ^3.0.0 version: 3.0.1(svelte@4.2.8)(vite@5.2.7) + rollup: + specifier: ^4.14.1 + version: 4.14.1 + rollup-plugin-type-as-json-schema: + specifier: ^0.2.6 + version: 0.2.6 sharp: specifier: ^0.33.2 version: 0.33.2 @@ -67,7 +109,7 @@ importers: version: 5.3.3 vite: specifier: ^5.0.12 - version: 5.2.7 + version: 5.2.7(terser@5.30.3) vite-plugin-image-optimizer: specifier: ^1.1.7 version: 1.1.7(vite@5.2.7) @@ -78,9 +120,105 @@ packages: resolution: {integrity: sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==} engines: {node: '>=6.0.0'} dependencies: - '@jridgewell/gen-mapping': 0.3.3 + '@jridgewell/gen-mapping': 0.3.5 '@jridgewell/trace-mapping': 0.3.20 + /@codemirror/autocomplete@6.15.0(@codemirror/language@6.10.1)(@codemirror/state@6.4.1)(@codemirror/view@6.26.1)(@lezer/common@1.2.1): + resolution: {integrity: sha512-G2Zm0mXznxz97JhaaOdoEG2cVupn4JjPaS4AcNvZzhOsnnG9YVN68VzfoUw6dYTsIxT6a/cmoFEN47KAWhXaOg==} + peerDependencies: + '@codemirror/language': ^6.0.0 + '@codemirror/state': ^6.0.0 + '@codemirror/view': ^6.0.0 + '@lezer/common': ^1.0.0 + dependencies: + '@codemirror/language': 6.10.1 + '@codemirror/state': 6.4.1 + '@codemirror/view': 6.26.1 + '@lezer/common': 1.2.1 + dev: false + + /@codemirror/autocomplete@6.15.0(@codemirror/language@6.10.1)(@codemirror/state@6.4.1)(@codemirror/view@6.26.2)(@lezer/common@1.2.1): + resolution: {integrity: sha512-G2Zm0mXznxz97JhaaOdoEG2cVupn4JjPaS4AcNvZzhOsnnG9YVN68VzfoUw6dYTsIxT6a/cmoFEN47KAWhXaOg==} + peerDependencies: + '@codemirror/language': ^6.0.0 + '@codemirror/state': ^6.0.0 + '@codemirror/view': ^6.0.0 + '@lezer/common': ^1.0.0 + dependencies: + '@codemirror/language': 6.10.1 + '@codemirror/state': 6.4.1 + '@codemirror/view': 6.26.2 + '@lezer/common': 1.2.1 + dev: false + + /@codemirror/commands@6.3.3: + resolution: {integrity: sha512-dO4hcF0fGT9tu1Pj1D2PvGvxjeGkbC6RGcZw6Qs74TH+Ed1gw98jmUgd2axWvIZEqTeTuFrg1lEB1KV6cK9h1A==} + dependencies: + '@codemirror/language': 6.10.1 + '@codemirror/state': 6.4.1 + '@codemirror/view': 6.26.1 + '@lezer/common': 1.2.1 + dev: false + + /@codemirror/lang-javascript@6.2.2: + resolution: {integrity: sha512-VGQfY+FCc285AhWuwjYxQyUQcYurWlxdKYT4bqwr3Twnd5wP5WSeu52t4tvvuWmljT4EmgEgZCqSieokhtY8hg==} + dependencies: + '@codemirror/autocomplete': 6.15.0(@codemirror/language@6.10.1)(@codemirror/state@6.4.1)(@codemirror/view@6.26.2)(@lezer/common@1.2.1) + '@codemirror/language': 6.10.1 + '@codemirror/lint': 6.5.0 + '@codemirror/state': 6.4.1 + '@codemirror/view': 6.26.2 + '@lezer/common': 1.2.1 + '@lezer/javascript': 1.4.14 + dev: false + + /@codemirror/language@6.10.1: + resolution: {integrity: sha512-5GrXzrhq6k+gL5fjkAwt90nYDmjlzTIJV8THnxNFtNKWotMIlzzN+CpqxqwXOECnUdOndmSeWntVrVcv5axWRQ==} + dependencies: + '@codemirror/state': 6.4.1 + '@codemirror/view': 6.26.2 + '@lezer/common': 1.2.1 + '@lezer/highlight': 1.2.0 + '@lezer/lr': 1.4.0 + style-mod: 4.1.2 + dev: false + + /@codemirror/lint@6.5.0: + resolution: {integrity: sha512-+5YyicIaaAZKU8K43IQi8TBy6mF6giGeWAH7N96Z5LC30Wm5JMjqxOYIE9mxwMG1NbhT2mA3l9hA4uuKUM3E5g==} + dependencies: + '@codemirror/state': 6.4.1 + '@codemirror/view': 6.26.2 + crelt: 1.0.6 + dev: false + + /@codemirror/search@6.5.6: + resolution: {integrity: sha512-rpMgcsh7o0GuCDUXKPvww+muLA1pDJaFrpq/CCHtpQJYz8xopu4D1hPcKRoDD0YlF8gZaqTNIRa4VRBWyhyy7Q==} + dependencies: + '@codemirror/state': 6.4.1 + '@codemirror/view': 6.26.1 + crelt: 1.0.6 + dev: false + + /@codemirror/state@6.4.1: + resolution: {integrity: sha512-QkEyUiLhsJoZkbumGZlswmAhA7CBU02Wrz7zvH4SrcifbsqwlXShVXg65f3v/ts57W3dqyamEriMhij1Z3Zz4A==} + dev: false + + /@codemirror/view@6.26.1: + resolution: {integrity: sha512-wLw0t3R9AwOSQThdZ5Onw8QQtem5asE7+bPlnzc57eubPqiuJKIzwjMZ+C42vQett+iva+J8VgFV4RYWDBh5FA==} + dependencies: + '@codemirror/state': 6.4.1 + style-mod: 4.1.2 + w3c-keyname: 2.2.8 + dev: false + + /@codemirror/view@6.26.2: + resolution: {integrity: sha512-j6V48PlFC/O7ERAR5vRW5QKDdchzmyyfojDdt+zPsB0YXoWgcjlC1IWjmlYfx08aQZ3HN5BtALcgGgtSKGMe7A==} + dependencies: + '@codemirror/state': 6.4.1 + style-mod: 4.1.2 + w3c-keyname: 2.2.8 + dev: false + /@emnapi/runtime@0.45.0: resolution: {integrity: sha512-Txumi3td7J4A/xTTwlssKieHKTGl3j4A1tglBx72auZ49YK7ePY6XZricgIg9mnZT4xPfA+UPCUdnhRuEFDL+w==} requiresBuild: true @@ -488,14 +626,6 @@ packages: dev: true optional: true - /@jridgewell/gen-mapping@0.3.3: - resolution: {integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==} - engines: {node: '>=6.0.0'} - dependencies: - '@jridgewell/set-array': 1.1.2 - '@jridgewell/sourcemap-codec': 1.4.15 - '@jridgewell/trace-mapping': 0.3.20 - /@jridgewell/gen-mapping@0.3.5: resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==} engines: {node: '>=6.0.0'} @@ -503,27 +633,20 @@ packages: '@jridgewell/set-array': 1.2.1 '@jridgewell/sourcemap-codec': 1.4.15 '@jridgewell/trace-mapping': 0.3.25 - dev: true /@jridgewell/resolve-uri@3.1.1: resolution: {integrity: sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==} engines: {node: '>=6.0.0'} - /@jridgewell/set-array@1.1.2: - resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} - engines: {node: '>=6.0.0'} - /@jridgewell/set-array@1.2.1: resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} engines: {node: '>=6.0.0'} - dev: true /@jridgewell/source-map@0.3.6: resolution: {integrity: sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==} dependencies: '@jridgewell/gen-mapping': 0.3.5 '@jridgewell/trace-mapping': 0.3.25 - dev: true /@jridgewell/sourcemap-codec@1.4.15: resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} @@ -539,7 +662,6 @@ packages: dependencies: '@jridgewell/resolve-uri': 3.1.1 '@jridgewell/sourcemap-codec': 1.4.15 - dev: true /@json-feed-types/1_1@1.0.2: resolution: {integrity: sha512-Ht6Qm53qhWZvvPat4vScXSxiD3MdULuSZrOzUWgMPuez6HMcv5BQcb0OFvIH6WxH72rE8mZTWHrE2FF22XIAgg==} @@ -552,6 +674,30 @@ packages: resolution: {integrity: sha512-IWcSEjI+2bjl1T0R4cIPHu2DZ6PF/unRdEl9VZ1vTtLNaybzirGCywat+KLIpbmxrg48kRNgasH4CBYkq99NDw==} dev: true + /@lezer/common@1.2.1: + resolution: {integrity: sha512-yemX0ZD2xS/73llMZIK6KplkjIjf2EvAHcinDi/TfJ9hS25G0388+ClHt6/3but0oOxinTcQHJLDXh6w1crzFQ==} + dev: false + + /@lezer/highlight@1.2.0: + resolution: {integrity: sha512-WrS5Mw51sGrpqjlh3d4/fOwpEV2Hd3YOkp9DBt4k8XZQcoTHZFB7sx030A6OcahF4J1nDQAa3jXlTVVYH50IFA==} + dependencies: + '@lezer/common': 1.2.1 + dev: false + + /@lezer/javascript@1.4.14: + resolution: {integrity: sha512-GEdUyspTRgc5dwIGebUk+f3BekvqEWVIYsIuAC3pA8e8wcikGwBZRWRa450L0s8noGWuULwnmi4yjxTnYz9PpA==} + dependencies: + '@lezer/common': 1.2.1 + '@lezer/highlight': 1.2.0 + '@lezer/lr': 1.4.0 + dev: false + + /@lezer/lr@1.4.0: + resolution: {integrity: sha512-Wst46p51km8gH0ZUmeNrtpRYmdlRHUpN1DQd3GFAyKANi8WVz8c2jHYTf1CVScFaCjQw1iO3ZZdqGDxQPRErTg==} + dependencies: + '@lezer/common': 1.2.1 + dev: false + /@neoconfetti/svelte@1.0.0: resolution: {integrity: sha512-SmksyaJAdSlMa9cTidVSIqYo1qti+WTsviNDwgjNVm+KQ3DRP2Df9umDIzC4vCcpEYY+chQe0i2IKnLw03AT8Q==} dev: true @@ -610,7 +756,7 @@ packages: resolution: {integrity: sha512-2LuNTFBIO0m7kKIQvvPHN6UE63VjpmL9rnEEaOOaiSPbZK+zUOYIzBAWcED+3XYzhYsd/0mD57VdxAEqqV52CQ==} dev: true - /@rollup/plugin-commonjs@25.0.7(rollup@4.10.0): + /@rollup/plugin-commonjs@25.0.7(rollup@4.14.1): resolution: {integrity: sha512-nEvcR+LRjEjsaSsc4x3XZfCCvZIaSMenZu/OiwOKGN2UhQpAYI7ru7czFvyWbErlpoGjnSX3D5Ch5FcMA3kRWQ==} engines: {node: '>=14.0.0'} peerDependencies: @@ -619,16 +765,16 @@ packages: rollup: optional: true dependencies: - '@rollup/pluginutils': 5.1.0(rollup@4.10.0) + '@rollup/pluginutils': 5.1.0(rollup@4.14.1) commondir: 1.0.1 estree-walker: 2.0.2 glob: 8.1.0 is-reference: 1.2.1 - magic-string: 0.30.5 - rollup: 4.10.0 + magic-string: 0.30.9 + rollup: 4.14.1 dev: true - /@rollup/plugin-json@6.1.0(rollup@4.10.0): + /@rollup/plugin-json@6.1.0(rollup@4.14.1): resolution: {integrity: sha512-EGI2te5ENk1coGeADSIwZ7G2Q8CJS2sF120T7jLw4xFw9n7wIOXHo+kIYRAoVpJAN+kmqZSoO3Fp4JtoNF4ReA==} engines: {node: '>=14.0.0'} peerDependencies: @@ -637,11 +783,11 @@ packages: rollup: optional: true dependencies: - '@rollup/pluginutils': 5.1.0(rollup@4.10.0) - rollup: 4.10.0 + '@rollup/pluginutils': 5.1.0(rollup@4.14.1) + rollup: 4.14.1 dev: true - /@rollup/plugin-node-resolve@15.2.3(rollup@4.10.0): + /@rollup/plugin-node-resolve@15.2.3(rollup@4.14.1): resolution: {integrity: sha512-j/lym8nf5E21LwBT4Df1VD6hRO2L2iwUeUmP7litikRsVp1H6NWx20NEp0Y7su+7XGc476GnXXc4kFeZNGmaSQ==} engines: {node: '>=14.0.0'} peerDependencies: @@ -650,16 +796,16 @@ packages: rollup: optional: true dependencies: - '@rollup/pluginutils': 5.1.0(rollup@4.10.0) + '@rollup/pluginutils': 5.1.0(rollup@4.14.1) '@types/resolve': 1.20.2 deepmerge: 4.3.1 is-builtin-module: 3.2.1 is-module: 1.0.0 resolve: 1.22.8 - rollup: 4.10.0 + rollup: 4.14.1 dev: true - /@rollup/pluginutils@5.1.0(rollup@4.10.0): + /@rollup/pluginutils@5.1.0(rollup@4.14.1): resolution: {integrity: sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g==} engines: {node: '>=14.0.0'} peerDependencies: @@ -671,227 +817,123 @@ packages: '@types/estree': 1.0.5 estree-walker: 2.0.2 picomatch: 2.3.1 - rollup: 4.10.0 + rollup: 4.14.1 dev: true - /@rollup/rollup-android-arm-eabi@4.10.0: - resolution: {integrity: sha512-/MeDQmcD96nVoRumKUljsYOLqfv1YFJps+0pTrb2Z9Nl/w5qNUysMaWQsrd1mvAlNT4yza1iVyIu4Q4AgF6V3A==} + /@rollup/rollup-android-arm-eabi@4.14.1: + resolution: {integrity: sha512-fH8/o8nSUek8ceQnT7K4EQbSiV7jgkHq81m9lWZFIXjJ7lJzpWXbQFpT/Zh6OZYnpFykvzC3fbEvEAFZu03dPA==} cpu: [arm] os: [android] requiresBuild: true dev: true optional: true - /@rollup/rollup-android-arm-eabi@4.13.2: - resolution: {integrity: sha512-3XFIDKWMFZrMnao1mJhnOT1h2g0169Os848NhhmGweEcfJ4rCi+3yMCOLG4zA61rbJdkcrM/DjVZm9Hg5p5w7g==} - cpu: [arm] - os: [android] - requiresBuild: true - dev: true - optional: true - - /@rollup/rollup-android-arm64@4.10.0: - resolution: {integrity: sha512-lvu0jK97mZDJdpZKDnZI93I0Om8lSDaiPx3OiCk0RXn3E8CMPJNS/wxjAvSJJzhhZpfjXsjLWL8LnS6qET4VNQ==} + /@rollup/rollup-android-arm64@4.14.1: + resolution: {integrity: sha512-Y/9OHLjzkunF+KGEoJr3heiD5X9OLa8sbT1lm0NYeKyaM3oMhhQFvPB0bNZYJwlq93j8Z6wSxh9+cyKQaxS7PQ==} cpu: [arm64] os: [android] requiresBuild: true dev: true optional: true - /@rollup/rollup-android-arm64@4.13.2: - resolution: {integrity: sha512-GdxxXbAuM7Y/YQM9/TwwP+L0omeE/lJAR1J+olu36c3LqqZEBdsIWeQ91KBe6nxwOnb06Xh7JS2U5ooWU5/LgQ==} - cpu: [arm64] - os: [android] - requiresBuild: true - dev: true - optional: true - - /@rollup/rollup-darwin-arm64@4.10.0: - resolution: {integrity: sha512-uFpayx8I8tyOvDkD7X6n0PriDRWxcqEjqgtlxnUA/G9oS93ur9aZ8c8BEpzFmsed1TH5WZNG5IONB8IiW90TQg==} + /@rollup/rollup-darwin-arm64@4.14.1: + resolution: {integrity: sha512-+kecg3FY84WadgcuSVm6llrABOdQAEbNdnpi5X3UwWiFVhZIZvKgGrF7kmLguvxHNQy+UuRV66cLVl3S+Rkt+Q==} cpu: [arm64] os: [darwin] requiresBuild: true dev: true optional: true - /@rollup/rollup-darwin-arm64@4.13.2: - resolution: {integrity: sha512-mCMlpzlBgOTdaFs83I4XRr8wNPveJiJX1RLfv4hggyIVhfB5mJfN4P8Z6yKh+oE4Luz+qq1P3kVdWrCKcMYrrA==} - cpu: [arm64] - os: [darwin] - requiresBuild: true - dev: true - optional: true - - /@rollup/rollup-darwin-x64@4.10.0: - resolution: {integrity: sha512-nIdCX03qFKoR/MwQegQBK+qZoSpO3LESurVAC6s6jazLA1Mpmgzo3Nj3H1vydXp/JM29bkCiuF7tDuToj4+U9Q==} + /@rollup/rollup-darwin-x64@4.14.1: + resolution: {integrity: sha512-2pYRzEjVqq2TB/UNv47BV/8vQiXkFGVmPFwJb+1E0IFFZbIX8/jo1olxqqMbo6xCXf8kabANhp5bzCij2tFLUA==} cpu: [x64] os: [darwin] requiresBuild: true dev: true optional: true - /@rollup/rollup-darwin-x64@4.13.2: - resolution: {integrity: sha512-yUoEvnH0FBef/NbB1u6d3HNGyruAKnN74LrPAfDQL3O32e3k3OSfLrPgSJmgb3PJrBZWfPyt6m4ZhAFa2nZp2A==} - cpu: [x64] - os: [darwin] - requiresBuild: true - dev: true - optional: true - - /@rollup/rollup-linux-arm-gnueabihf@4.10.0: - resolution: {integrity: sha512-Fz7a+y5sYhYZMQFRkOyCs4PLhICAnxRX/GnWYReaAoruUzuRtcf+Qnw+T0CoAWbHCuz2gBUwmWnUgQ67fb3FYw==} + /@rollup/rollup-linux-arm-gnueabihf@4.14.1: + resolution: {integrity: sha512-mS6wQ6Do6/wmrF9aTFVpIJ3/IDXhg1EZcQFYHZLHqw6AzMBjTHWnCG35HxSqUNphh0EHqSM6wRTT8HsL1C0x5g==} cpu: [arm] os: [linux] requiresBuild: true dev: true optional: true - /@rollup/rollup-linux-arm-gnueabihf@4.13.2: - resolution: {integrity: sha512-GYbLs5ErswU/Xs7aGXqzc3RrdEjKdmoCrgzhJWyFL0r5fL3qd1NPcDKDowDnmcoSiGJeU68/Vy+OMUluRxPiLQ==} - cpu: [arm] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /@rollup/rollup-linux-arm64-gnu@4.10.0: - resolution: {integrity: sha512-yPtF9jIix88orwfTi0lJiqINnlWo6p93MtZEoaehZnmCzEmLL0eqjA3eGVeyQhMtxdV+Mlsgfwhh0+M/k1/V7Q==} + /@rollup/rollup-linux-arm64-gnu@4.14.1: + resolution: {integrity: sha512-p9rGKYkHdFMzhckOTFubfxgyIO1vw//7IIjBBRVzyZebWlzRLeNhqxuSaZ7kCEKVkm/kuC9fVRW9HkC/zNRG2w==} cpu: [arm64] os: [linux] requiresBuild: true dev: true optional: true - /@rollup/rollup-linux-arm64-gnu@4.13.2: - resolution: {integrity: sha512-L1+D8/wqGnKQIlh4Zre9i4R4b4noxzH5DDciyahX4oOz62CphY7WDWqJoQ66zNR4oScLNOqQJfNSIAe/6TPUmQ==} + /@rollup/rollup-linux-arm64-musl@4.14.1: + resolution: {integrity: sha512-nDY6Yz5xS/Y4M2i9JLQd3Rofh5OR8Bn8qe3Mv/qCVpHFlwtZSBYSPaU4mrGazWkXrdQ98GB//H0BirGR/SKFSw==} cpu: [arm64] os: [linux] requiresBuild: true dev: true optional: true - /@rollup/rollup-linux-arm64-musl@4.10.0: - resolution: {integrity: sha512-9GW9yA30ib+vfFiwjX+N7PnjTnCMiUffhWj4vkG4ukYv1kJ4T9gHNg8zw+ChsOccM27G9yXrEtMScf1LaCuoWQ==} - cpu: [arm64] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /@rollup/rollup-linux-arm64-musl@4.13.2: - resolution: {integrity: sha512-tK5eoKFkXdz6vjfkSTCupUzCo40xueTOiOO6PeEIadlNBkadH1wNOH8ILCPIl8by/Gmb5AGAeQOFeLev7iZDOA==} - cpu: [arm64] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /@rollup/rollup-linux-powerpc64le-gnu@4.13.2: - resolution: {integrity: sha512-zvXvAUGGEYi6tYhcDmb9wlOckVbuD+7z3mzInCSTACJ4DQrdSLPNUeDIcAQW39M3q6PDquqLWu7pnO39uSMRzQ==} + /@rollup/rollup-linux-powerpc64le-gnu@4.14.1: + resolution: {integrity: sha512-im7HE4VBL+aDswvcmfx88Mp1soqL9OBsdDBU8NqDEYtkri0qV0THhQsvZtZeNNlLeCUQ16PZyv7cqutjDF35qw==} cpu: [ppc64le] os: [linux] requiresBuild: true dev: true optional: true - /@rollup/rollup-linux-riscv64-gnu@4.10.0: - resolution: {integrity: sha512-X1ES+V4bMq2ws5fF4zHornxebNxMXye0ZZjUrzOrf7UMx1d6wMQtfcchZ8SqUnQPPHdOyOLW6fTcUiFgHFadRA==} + /@rollup/rollup-linux-riscv64-gnu@4.14.1: + resolution: {integrity: sha512-RWdiHuAxWmzPJgaHJdpvUUlDz8sdQz4P2uv367T2JocdDa98iRw2UjIJ4QxSyt077mXZT2X6pKfT2iYtVEvOFw==} cpu: [riscv64] os: [linux] requiresBuild: true dev: true optional: true - /@rollup/rollup-linux-riscv64-gnu@4.13.2: - resolution: {integrity: sha512-C3GSKvMtdudHCN5HdmAMSRYR2kkhgdOfye4w0xzyii7lebVr4riCgmM6lRiSCnJn2w1Xz7ZZzHKuLrjx5620kw==} - cpu: [riscv64] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /@rollup/rollup-linux-s390x-gnu@4.13.2: - resolution: {integrity: sha512-l4U0KDFwzD36j7HdfJ5/TveEQ1fUTjFFQP5qIt9gBqBgu1G8/kCaq5Ok05kd5TG9F8Lltf3MoYsUMw3rNlJ0Yg==} + /@rollup/rollup-linux-s390x-gnu@4.14.1: + resolution: {integrity: sha512-VMgaGQ5zRX6ZqV/fas65/sUGc9cPmsntq2FiGmayW9KMNfWVG/j0BAqImvU4KTeOOgYSf1F+k6at1UfNONuNjA==} cpu: [s390x] os: [linux] requiresBuild: true dev: true optional: true - /@rollup/rollup-linux-x64-gnu@4.10.0: - resolution: {integrity: sha512-w/5OpT2EnI/Xvypw4FIhV34jmNqU5PZjZue2l2Y3ty1Ootm3SqhI+AmfhlUYGBTd9JnpneZCDnt3uNOiOBkMyw==} + /@rollup/rollup-linux-x64-gnu@4.14.1: + resolution: {integrity: sha512-9Q7DGjZN+hTdJomaQ3Iub4m6VPu1r94bmK2z3UeWP3dGUecRC54tmVu9vKHTm1bOt3ASoYtEz6JSRLFzrysKlA==} cpu: [x64] os: [linux] requiresBuild: true dev: true optional: true - /@rollup/rollup-linux-x64-gnu@4.13.2: - resolution: {integrity: sha512-xXMLUAMzrtsvh3cZ448vbXqlUa7ZL8z0MwHp63K2IIID2+DeP5iWIT6g1SN7hg1VxPzqx0xZdiDM9l4n9LRU1A==} + /@rollup/rollup-linux-x64-musl@4.14.1: + resolution: {integrity: sha512-JNEG/Ti55413SsreTguSx0LOVKX902OfXIKVg+TCXO6Gjans/k9O6ww9q3oLGjNDaTLxM+IHFMeXy/0RXL5R/g==} cpu: [x64] os: [linux] requiresBuild: true dev: true optional: true - /@rollup/rollup-linux-x64-musl@4.10.0: - resolution: {integrity: sha512-q/meftEe3QlwQiGYxD9rWwB21DoKQ9Q8wA40of/of6yGHhZuGfZO0c3WYkN9dNlopHlNT3mf5BPsUSxoPuVQaw==} - cpu: [x64] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /@rollup/rollup-linux-x64-musl@4.13.2: - resolution: {integrity: sha512-M/JYAWickafUijWPai4ehrjzVPKRCyDb1SLuO+ZyPfoXgeCEAlgPkNXewFZx0zcnoIe3ay4UjXIMdXQXOZXWqA==} - cpu: [x64] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /@rollup/rollup-win32-arm64-msvc@4.10.0: - resolution: {integrity: sha512-NrR6667wlUfP0BHaEIKgYM/2va+Oj+RjZSASbBMnszM9k+1AmliRjHc3lJIiOehtSSjqYiO7R6KLNrWOX+YNSQ==} + /@rollup/rollup-win32-arm64-msvc@4.14.1: + resolution: {integrity: sha512-ryS22I9y0mumlLNwDFYZRDFLwWh3aKaC72CWjFcFvxK0U6v/mOkM5Up1bTbCRAhv3kEIwW2ajROegCIQViUCeA==} cpu: [arm64] os: [win32] requiresBuild: true dev: true optional: true - /@rollup/rollup-win32-arm64-msvc@4.13.2: - resolution: {integrity: sha512-2YWwoVg9KRkIKaXSh0mz3NmfurpmYoBBTAXA9qt7VXk0Xy12PoOP40EFuau+ajgALbbhi4uTj3tSG3tVseCjuA==} - cpu: [arm64] - os: [win32] - requiresBuild: true - dev: true - optional: true - - /@rollup/rollup-win32-ia32-msvc@4.10.0: - resolution: {integrity: sha512-FV0Tpt84LPYDduIDcXvEC7HKtyXxdvhdAOvOeWMWbQNulxViH2O07QXkT/FffX4FqEI02jEbCJbr+YcuKdyyMg==} + /@rollup/rollup-win32-ia32-msvc@4.14.1: + resolution: {integrity: sha512-TdloItiGk+T0mTxKx7Hp279xy30LspMso+GzQvV2maYePMAWdmrzqSNZhUpPj3CGw12aGj57I026PgLCTu8CGg==} cpu: [ia32] os: [win32] requiresBuild: true dev: true optional: true - /@rollup/rollup-win32-ia32-msvc@4.13.2: - resolution: {integrity: sha512-2FSsE9aQ6OWD20E498NYKEQLneShWes0NGMPQwxWOdws35qQXH+FplabOSP5zEe1pVjurSDOGEVCE2agFwSEsw==} - cpu: [ia32] - os: [win32] - requiresBuild: true - dev: true - optional: true - - /@rollup/rollup-win32-x64-msvc@4.10.0: - resolution: {integrity: sha512-OZoJd+o5TaTSQeFFQ6WjFCiltiYVjIdsXxwu/XZ8qRpsvMQr4UsVrE5UyT9RIvsnuF47DqkJKhhVZ2Q9YW9IpQ==} - cpu: [x64] - os: [win32] - requiresBuild: true - dev: true - optional: true - - /@rollup/rollup-win32-x64-msvc@4.13.2: - resolution: {integrity: sha512-7h7J2nokcdPePdKykd8wtc8QqqkqxIrUz7MHj6aNr8waBRU//NLDVnNjQnqQO6fqtjrtCdftpbTuOKAyrAQETQ==} + /@rollup/rollup-win32-x64-msvc@4.14.1: + resolution: {integrity: sha512-wQGI+LY/Py20zdUPq+XCem7JcPOyzIJBm3dli+56DJsQOHbnXZFEwgmnC6el1TPAfC8lBT3m+z69RmLykNUbew==} cpu: [x64] os: [win32] requiresBuild: true @@ -920,11 +962,11 @@ packages: peerDependencies: '@sveltejs/kit': ^2.4.0 dependencies: - '@rollup/plugin-commonjs': 25.0.7(rollup@4.10.0) - '@rollup/plugin-json': 6.1.0(rollup@4.10.0) - '@rollup/plugin-node-resolve': 15.2.3(rollup@4.10.0) + '@rollup/plugin-commonjs': 25.0.7(rollup@4.14.1) + '@rollup/plugin-json': 6.1.0(rollup@4.14.1) + '@rollup/plugin-node-resolve': 15.2.3(rollup@4.14.1) '@sveltejs/kit': 2.5.0(@sveltejs/vite-plugin-svelte@3.0.1)(svelte@4.2.8)(vite@5.2.7) - rollup: 4.10.0 + rollup: 4.14.1 dev: true /@sveltejs/kit@2.5.0(@sveltejs/vite-plugin-svelte@3.0.1)(svelte@4.2.8)(vite@5.2.7): @@ -944,14 +986,14 @@ packages: esm-env: 1.0.0 import-meta-resolve: 4.0.0 kleur: 4.1.5 - magic-string: 0.30.5 + magic-string: 0.30.9 mrmime: 2.0.0 sade: 1.8.1 set-cookie-parser: 2.6.0 sirv: 2.0.4 svelte: 4.2.8 tiny-glob: 0.2.9 - vite: 5.2.7 + vite: 5.2.7(terser@5.30.3) dev: true /@sveltejs/vite-plugin-svelte-inspector@2.0.0(@sveltejs/vite-plugin-svelte@3.0.1)(svelte@4.2.8)(vite@5.2.7): @@ -965,7 +1007,7 @@ packages: '@sveltejs/vite-plugin-svelte': 3.0.1(svelte@4.2.8)(vite@5.2.7) debug: 4.3.4 svelte: 4.2.8 - vite: 5.2.7 + vite: 5.2.7(terser@5.30.3) transitivePeerDependencies: - supports-color dev: true @@ -981,10 +1023,10 @@ packages: debug: 4.3.4 deepmerge: 4.3.1 kleur: 4.1.5 - magic-string: 0.30.5 + magic-string: 0.30.9 svelte: 4.2.8 svelte-hmr: 0.15.3(svelte@4.2.8) - vite: 5.2.7 + vite: 5.2.7(terser@5.30.3) vitefu: 0.2.5(vite@5.2.7) transitivePeerDependencies: - supports-color @@ -1002,6 +1044,10 @@ packages: /@types/estree@1.0.5: resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==} + /@types/json-schema@7.0.15: + resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} + dev: true + /@types/pug@2.0.10: resolution: {integrity: sha512-Sk/uYFOBAB7mb74XcpizmH0KOR2Pv3D2Hmrh1Dmy5BmK3MpdSa5kqZcg6EKBdklU0bFXX9gCfzvpnyUehrPIuA==} dev: true @@ -1010,8 +1056,30 @@ packages: resolution: {integrity: sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==} dev: true - /acorn@8.11.2: - resolution: {integrity: sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w==} + /@uiw/codemirror-theme-github@4.21.25(@codemirror/language@6.10.1)(@codemirror/state@6.4.1)(@codemirror/view@6.26.2): + resolution: {integrity: sha512-RDS9s/Lbi1uIvupIXNiREFMryZjd7X4xRMKzmf6NfZuXWVdDATTA1b5smzxXldJgl8bY4QoOevczRncFTVRfGA==} + dependencies: + '@uiw/codemirror-themes': 4.21.25(@codemirror/language@6.10.1)(@codemirror/state@6.4.1)(@codemirror/view@6.26.2) + transitivePeerDependencies: + - '@codemirror/language' + - '@codemirror/state' + - '@codemirror/view' + dev: false + + /@uiw/codemirror-themes@4.21.25(@codemirror/language@6.10.1)(@codemirror/state@6.4.1)(@codemirror/view@6.26.2): + resolution: {integrity: sha512-C3t/voELxQj0eaVhrlgzaOnSALNf8bOcRbL5xN9r2+RkdsbFOmvNl3VVhlxEB7PSGc1jUZwVO4wQsB2AP178ag==} + peerDependencies: + '@codemirror/language': '>=6.0.0' + '@codemirror/state': '>=6.0.0' + '@codemirror/view': '>=6.0.0' + dependencies: + '@codemirror/language': 6.10.1 + '@codemirror/state': 6.4.1 + '@codemirror/view': 6.26.2 + dev: false + + /acorn@8.11.3: + resolution: {integrity: sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==} engines: {node: '>=0.4.0'} hasBin: true @@ -1100,7 +1168,6 @@ packages: /buffer-from@1.1.2: resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} - dev: true /builtin-modules@3.3.0: resolution: {integrity: sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==} @@ -1155,10 +1222,24 @@ packages: dependencies: '@jridgewell/sourcemap-codec': 1.4.15 '@types/estree': 1.0.5 - acorn: 8.11.2 + acorn: 8.11.3 estree-walker: 3.0.3 periscopic: 3.1.0 + /codemirror@6.0.1(@lezer/common@1.2.1): + resolution: {integrity: sha512-J8j+nZ+CdWmIeFIGXEFbFPtpiYacFMDR8GlHK3IyHQJMCaVRfGx9NT+Hxivv1ckLWPvNdZqndbr/7lVhrf/Svg==} + dependencies: + '@codemirror/autocomplete': 6.15.0(@codemirror/language@6.10.1)(@codemirror/state@6.4.1)(@codemirror/view@6.26.1)(@lezer/common@1.2.1) + '@codemirror/commands': 6.3.3 + '@codemirror/language': 6.10.1 + '@codemirror/lint': 6.5.0 + '@codemirror/search': 6.5.6 + '@codemirror/state': 6.4.1 + '@codemirror/view': 6.26.1 + transitivePeerDependencies: + - '@lezer/common' + dev: false + /color-convert@1.9.3: resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} dependencies: @@ -1220,9 +1301,13 @@ packages: engines: {node: '>=14'} dev: true + /commander@12.0.0: + resolution: {integrity: sha512-MwVNWlYjDTtOjX5PiD7o5pK0UrFU/OYgcJfjjK4RaHZETNtjJqrZa9Y9ds88+A+f+d5lv+561eZ+yCKoS3gbAA==} + engines: {node: '>=18'} + dev: true + /commander@2.20.3: resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} - dev: true /commander@7.2.0: resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==} @@ -1242,6 +1327,10 @@ packages: engines: {node: '>= 0.6'} dev: true + /crelt@1.0.6: + resolution: {integrity: sha512-VQ2MBenTq1fWZUH9DJNGti7kKv6EeAuYr3cLwxUWhIu1baTaXh4Ib5W2CqHVqib4/MqbYGJqiL3Zb8GJZr3l4g==} + dev: false + /css-select@5.1.0: resolution: {integrity: sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==} dependencies: @@ -1544,7 +1633,7 @@ packages: entities: 4.5.0 param-case: 3.0.4 relateurl: 0.2.7 - terser: 5.30.2 + terser: 5.30.3 dev: true /import-fresh@3.3.0: @@ -1634,6 +1723,12 @@ packages: esprima: 4.0.1 dev: false + /json5@2.2.3: + resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} + engines: {node: '>=6'} + hasBin: true + dev: true + /kleur@4.1.5: resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==} engines: {node: '>=6'} @@ -1646,6 +1741,10 @@ packages: resolution: {integrity: sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==} dev: false + /lodash@4.17.21: + resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} + dev: true + /lower-case@2.0.2: resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==} dependencies: @@ -1659,8 +1758,8 @@ packages: yallist: 4.0.0 dev: true - /magic-string@0.30.5: - resolution: {integrity: sha512-7xlpfBaQaP/T6Vh8MO/EqXSW5En6INHEvEXQiuff7Gku0PWjU3uf6w/j9o7O+SpB5fOAkrI5HeoNgwjEO0pFsA==} + /magic-string@0.30.9: + resolution: {integrity: sha512-S1+hd+dIrC8EZqKyT9DstTH/0Z+f76kmmvZnkfQVmOpDEF9iVgdYif3Q/pIWHmCoo59bQVGW0kVL3e2nl+9+Sw==} engines: {node: '>=12'} dependencies: '@jridgewell/sourcemap-codec': 1.4.15 @@ -1864,51 +1963,36 @@ packages: glob: 7.2.3 dev: true - /rollup@4.10.0: - resolution: {integrity: sha512-t2v9G2AKxcQ8yrG+WGxctBes1AomT0M4ND7jTFBCVPXQ/WFTvNSefIrNSmLKhIKBrvN8SG+CZslimJcT3W2u2g==} - engines: {node: '>=18.0.0', npm: '>=8.0.0'} - hasBin: true + /rollup-plugin-type-as-json-schema@0.2.6: + resolution: {integrity: sha512-oxnqPK25qv5AqMOxZELQOGVFeidJJLBbd6Hngn4kbTGP9qH+CEw4SUW8hwt8bEVBGQPaL7wLYZXkVXYJgnlZ1Q==} + engines: {node: '>=14'} dependencies: - '@types/estree': 1.0.5 - optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.10.0 - '@rollup/rollup-android-arm64': 4.10.0 - '@rollup/rollup-darwin-arm64': 4.10.0 - '@rollup/rollup-darwin-x64': 4.10.0 - '@rollup/rollup-linux-arm-gnueabihf': 4.10.0 - '@rollup/rollup-linux-arm64-gnu': 4.10.0 - '@rollup/rollup-linux-arm64-musl': 4.10.0 - '@rollup/rollup-linux-riscv64-gnu': 4.10.0 - '@rollup/rollup-linux-x64-gnu': 4.10.0 - '@rollup/rollup-linux-x64-musl': 4.10.0 - '@rollup/rollup-win32-arm64-msvc': 4.10.0 - '@rollup/rollup-win32-ia32-msvc': 4.10.0 - '@rollup/rollup-win32-x64-msvc': 4.10.0 - fsevents: 2.3.3 + lodash: 4.17.21 + ts-json-schema-generator: 1.5.1 dev: true - /rollup@4.13.2: - resolution: {integrity: sha512-MIlLgsdMprDBXC+4hsPgzWUasLO9CE4zOkj/u6j+Z6j5A4zRY+CtiXAdJyPtgCsc42g658Aeh1DlrdVEJhsL2g==} + /rollup@4.14.1: + resolution: {integrity: sha512-4LnHSdd3QK2pa1J6dFbfm1HN0D7vSK/ZuZTsdyUAlA6Rr1yTouUTL13HaDOGJVgby461AhrNGBS7sCGXXtT+SA==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true dependencies: '@types/estree': 1.0.5 optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.13.2 - '@rollup/rollup-android-arm64': 4.13.2 - '@rollup/rollup-darwin-arm64': 4.13.2 - '@rollup/rollup-darwin-x64': 4.13.2 - '@rollup/rollup-linux-arm-gnueabihf': 4.13.2 - '@rollup/rollup-linux-arm64-gnu': 4.13.2 - '@rollup/rollup-linux-arm64-musl': 4.13.2 - '@rollup/rollup-linux-powerpc64le-gnu': 4.13.2 - '@rollup/rollup-linux-riscv64-gnu': 4.13.2 - '@rollup/rollup-linux-s390x-gnu': 4.13.2 - '@rollup/rollup-linux-x64-gnu': 4.13.2 - '@rollup/rollup-linux-x64-musl': 4.13.2 - '@rollup/rollup-win32-arm64-msvc': 4.13.2 - '@rollup/rollup-win32-ia32-msvc': 4.13.2 - '@rollup/rollup-win32-x64-msvc': 4.13.2 + '@rollup/rollup-android-arm-eabi': 4.14.1 + '@rollup/rollup-android-arm64': 4.14.1 + '@rollup/rollup-darwin-arm64': 4.14.1 + '@rollup/rollup-darwin-x64': 4.14.1 + '@rollup/rollup-linux-arm-gnueabihf': 4.14.1 + '@rollup/rollup-linux-arm64-gnu': 4.14.1 + '@rollup/rollup-linux-arm64-musl': 4.14.1 + '@rollup/rollup-linux-powerpc64le-gnu': 4.14.1 + '@rollup/rollup-linux-riscv64-gnu': 4.14.1 + '@rollup/rollup-linux-s390x-gnu': 4.14.1 + '@rollup/rollup-linux-x64-gnu': 4.14.1 + '@rollup/rollup-linux-x64-musl': 4.14.1 + '@rollup/rollup-win32-arm64-msvc': 4.14.1 + '@rollup/rollup-win32-ia32-msvc': 4.14.1 + '@rollup/rollup-win32-x64-msvc': 4.14.1 fsevents: 2.3.3 dev: true @@ -1925,6 +2009,11 @@ packages: mri: 1.2.0 dev: true + /safe-stable-stringify@2.4.3: + resolution: {integrity: sha512-e2bDA2WJT0wxseVd4lsDP4+3ONX6HpMXQa1ZhFQ7SU+GjvORCmShbCMltrtIDfkYhVHrOcPtj+KhmDBdPdZD1g==} + engines: {node: '>=10'} + dev: true + /sander@0.5.1: resolution: {integrity: sha512-3lVqBir7WuKDHGrKRDn/1Ye3kwpXaDOMsiRP1wd6wpZW56gJhsbp5RqQpA6JG/P+pkXizygnr1dKR8vzWaVsfA==} dependencies: @@ -2023,12 +2112,10 @@ packages: dependencies: buffer-from: 1.1.2 source-map: 0.6.1 - dev: true /source-map@0.6.1: resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} engines: {node: '>=0.10.0'} - dev: true /sprintf-js@1.0.3: resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} @@ -2045,6 +2132,10 @@ packages: resolution: {integrity: sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==} dev: false + /style-mod@4.1.2: + resolution: {integrity: sha512-wnD1HyVqpJUI2+eKZ+eo1UwghftP6yuFheBqqe+bWCotBjC2K1YnteJILRMs3SM4V/0dLEW1SC27MWP5y+mwmw==} + dev: false + /super-sitemap@0.14.14(svelte@4.2.8): resolution: {integrity: sha512-ZrxbwYD1+7n+CHZaFwt3XW3a74gpLATLaDpH4yN67a0kHRwY8Tm0eLVeIuG07PXfzxCroWj8o60G1m4kigHEaw==} peerDependencies: @@ -2094,6 +2185,16 @@ packages: - sugarss dev: true + /svelte-codemirror-editor@1.3.0(codemirror@6.0.1)(svelte@4.2.8): + resolution: {integrity: sha512-Y39m9CsL0d30gGYYjJURWjKwAMEyiH42FojYiAXVKneGQ9cntOwOlloEk2Rhyy9ay29rSYYncskbnhAYNokIqw==} + peerDependencies: + codemirror: ^6.0.0 + svelte: ^3.0.0 || ^4.0.0 + dependencies: + codemirror: 6.0.1(@lezer/common@1.2.1) + svelte: 4.2.8 + dev: false + /svelte-hmr@0.15.3(svelte@4.2.8): resolution: {integrity: sha512-41snaPswvSf8TJUhlkoJBekRrABDXDMdpNpT2tfHIv4JuhgvHqLMhEPGtaQn0BmbNSTkuz2Ed20DF2eHw0SmBQ==} engines: {node: ^12.20 || ^14.13.1 || >= 16} @@ -2143,7 +2244,7 @@ packages: dependencies: '@types/pug': 2.0.10 detect-indent: 6.1.0 - magic-string: 0.30.5 + magic-string: 0.30.9 sorcery: 0.11.0 strip-indent: 3.0.0 svelte: 4.2.8 @@ -2165,7 +2266,7 @@ packages: '@ampproject/remapping': 2.2.1 '@jridgewell/sourcemap-codec': 1.4.15 '@jridgewell/trace-mapping': 0.3.20 - acorn: 8.11.2 + acorn: 8.11.3 aria-query: 5.3.0 axobject-query: 3.2.1 code-red: 1.0.4 @@ -2173,7 +2274,7 @@ packages: estree-walker: 3.0.3 is-reference: 3.0.2 locate-character: 3.0.0 - magic-string: 0.30.5 + magic-string: 0.30.9 periscopic: 3.1.0 /sveltekit-html-minifier@1.0.3(@sveltejs/kit@2.5.0): @@ -2209,16 +2310,15 @@ packages: wordwrapjs: 4.0.1 dev: false - /terser@5.30.2: - resolution: {integrity: sha512-vTDjRKYKip4dOFL5VizdoxHTYDfEXPdz5t+FbxCC5Rp2s+KbEO8w5wqMDPgj7CtFKZuzq7PXv28fZoXfqqBVuw==} + /terser@5.30.3: + resolution: {integrity: sha512-STdUgOUx8rLbMGO9IOwHLpCqolkDITFFQSMYYwKE1N2lY6MVSaeoi10z/EhWxRc6ybqoVmKSkhKYH/XUpl7vSA==} engines: {node: '>=10'} hasBin: true dependencies: '@jridgewell/source-map': 0.3.6 - acorn: 8.11.2 + acorn: 8.11.3 commander: 2.20.3 source-map-support: 0.5.21 - dev: true /tiny-glob@0.2.9: resolution: {integrity: sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg==} @@ -2239,6 +2339,20 @@ packages: engines: {node: '>=6'} dev: true + /ts-json-schema-generator@1.5.1: + resolution: {integrity: sha512-apX5qG2+NA66j7b4AJm8q/DpdTeOsjfh7A3LpKsUiil0FepkNwtN28zYgjrsiiya2/OPhsr/PSjX5FUYg79rCg==} + engines: {node: '>=10.0.0'} + hasBin: true + dependencies: + '@types/json-schema': 7.0.15 + commander: 12.0.0 + glob: 8.1.0 + json5: 2.2.3 + normalize-path: 3.0.0 + safe-stable-stringify: 2.4.3 + typescript: 5.4.4 + dev: true + /tslib@2.6.2: resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} dev: true @@ -2254,6 +2368,12 @@ packages: hasBin: true dev: true + /typescript@5.4.4: + resolution: {integrity: sha512-dGE2Vv8cpVvw28v8HCPqyb08EzbBURxDpuhJvTrusShUfGnhHBafDsLdS1EhhxyL6BJQE+2cT3dDPAv+MQ6oLw==} + engines: {node: '>=14.17'} + hasBin: true + dev: true + /typical@4.0.0: resolution: {integrity: sha512-VAH4IvQ7BDFYglMd7BPRDfLgxZZX4O4TFcRDA6EN5X7erNJJq+McIEp8np9aVtxrCJ6qx4GTYVfOWNjcqwZgRw==} engines: {node: '>=8'} @@ -2272,10 +2392,10 @@ packages: dependencies: ansi-colors: 4.1.3 pathe: 1.1.2 - vite: 5.2.7 + vite: 5.2.7(terser@5.30.3) dev: true - /vite@5.2.7: + /vite@5.2.7(terser@5.30.3): resolution: {integrity: sha512-k14PWOKLI6pMaSzAuGtT+Cf0YmIx12z9YGon39onaJNy8DLBfBJrzg9FQEmkAM5lpHBZs9wksWAsyF/HkpEwJA==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true @@ -2305,7 +2425,8 @@ packages: dependencies: esbuild: 0.20.2 postcss: 8.4.38 - rollup: 4.13.2 + rollup: 4.14.1 + terser: 5.30.3 optionalDependencies: fsevents: 2.3.3 dev: true @@ -2318,9 +2439,13 @@ packages: vite: optional: true dependencies: - vite: 5.2.7 + vite: 5.2.7(terser@5.30.3) dev: true + /w3c-keyname@2.2.8: + resolution: {integrity: sha512-dpojBhNsCNN7T82Tm7k26A6G9ML3NkhDsnw9n/eoxSRlVBB4CEtIQ/KTCLI2Fwf3ataSXRhYFkQi3SlnFwPvPQ==} + dev: false + /wordwrapjs@4.0.1: resolution: {integrity: sha512-kKlNACbvHrkpIw6oPeYDSmdCTu2hdMHoyXLTcUKala++lx5Y+wjJ/e474Jqv5abnVmwxw08DiTuHmw69lJGksA==} engines: {node: '>=8.0.0'}