diff --git a/index.html b/index.html index eb3ae80..0de1f78 100644 --- a/index.html +++ b/index.html @@ -29,7 +29,7 @@ width: 100% !important; } -
+There is nothing to see! Come back later!
+if (bar() % 4 > 2 ) {
+ often() && mod(48) && sound('808bd').out()
+ mod(24) && euclid($('a'), 3, 8) && sound('808sd').out()
+ mod(seqbeat(24,12)) && euclid($('a'), 7, 8) && sound('hh')
+ .delay(0.75).delaytime(0.75)
+ .speed(seqbeat(1,2,3,4)).out()
+ mod(48) && sound('bd').n(6).out()
+} else {
+ mod(24) && sound('hh').n(seqbeat(1,2,3,4)).end(.01).out()
+ mod(48) && sound('kick').out()
+ mod(24) && euclid($('ba'), 5, 8) && sound('cp').out()
+}
+
+`
+
+const software_interface: string = `
+# Interface
+
+Topos works by linking together several scripts:
+
+- the global script (${key_shortcut('Ctrl + G')}): Evaluated for every clock pulse.
+- the local scripts (${key_shortcut('Ctrl + L')}): Evaluated _on demand_. Local scripts are storing musical parts, logic or whatever you need!
+- the init script (${key_shortcut('Ctrl + I')}): Evaluated on program load. Used to set up the software (_bpm_, etc...).
+- the note file (${key_shortcut('Ctrl + N')}): Not evaluated. Used to store thoughts and ideas about the music you are making.
+
+## Universes
+
+A set of files is called a _universe_. Topos can store several universes and switch immediately from one to another. You can switch between universes by pressing ${key_shortcut('Ctrl + B')}. You can also creating a new universe by entering a name that has never been used before. _Universes_ are only known by their names.
+
+Switching between universes will not stop the transport nor reset the clock. You are switching the context but time keeps flowing. This can be useful to prepare immediate transitions between songs and parts. Think of universes as an algorithmic set of music. All scripts in a given universe are aware about how many times they have been runned already. You can reset that value programatically.
+
+You can clear the current universe by pressing the flame button on the top right corner of the interface. This will clear all the scripts and the note file. **Note:** there is no shortcut for clearing a universe. We do not want to loose your work by mistake!
+`
+
+const time: string = `
+# Time
+
+Time in Topos is handled by a _transport_ system. It allows you to **play**, **pause** and **reset** time. Time is quite simple to understand:
+
+- **bars**: how many bars have elapsed since the origin of time.
+- **beats**: how many beats have elapsed since the origin of time.
+- **pulse**: how many pulses have elapsed since the last beat.
+
+The **pulse** is also known as the [PPQN](https://en.wikipedia.org/wiki/Pulses_per_quarter_note). By default, Topos is using a PPQN of 48. It means that the lowest possible rhythmic value is 1/48 of a quarter note. That's plenty of time already.
+
+## Programming with time
+
+Every script can access the current time by using the following functions:
+
+- \`bar()\` returns the current bar since the origin of time.
+- \`beat()\` returns the current beat since the origin of the bar.
+- \`ebeat()\` returns the current beat since the origin of time.
+- \`pulse()\` returns the current bar since the origin of the beat.
+- \`epulse()\` returns the current bar since the origin of time.
+
+`
+const sound: string = `
+# Sound and Notes
+`
+
+const about: string = `
+# About Topos
+`
+
+const functions: string = `
+# Functions
+`
+const reference: string = `
+# Reference
+`
+
+const shortcuts: string = `
+# Keybindings
+
+Topos is made to be controlled entirely with a keyboard. It is recommanded to stop using the mouse as much as possible when you are _live coding_. Here is a list of the most important keybindings:
+
+## Transport
+
+- **Start** the transport: ${key_shortcut('Ctrl + P')}.
+- **Pause** the transport: ${key_shortcut('Ctrl + S')}.
+- **Rewind** the transport: ${key_shortcut('Ctrl + R')}.
+
+## Moving in the interface
+
+- Switch to a different universe: ${key_shortcut('Ctrl + B')}.
+- Switch to the global script: ${key_shortcut('Ctrl + G')} or ${key_shortcut('F10')}.
+- Switch to the local scripts: ${key_shortcut('Ctrl + L')} or ${key_shortcut('F11')}.
+- Switch to the init script: ${key_shortcut('Ctrl + L')}.
+- Switch to the note file: ${key_shortcut('Ctrl + N')}.
+- Switch to a local file: ${key_shortcut('F1')} to ${key_shortcut('F9')}.
+- Toggle the documentation: ${key_shortcut('Ctrl + D')}.
+
+## Evaluating code
+
+- Evaluate the current script: ${key_shortcut('Ctrl + Enter')}.
+- Evaluate a local script: ${key_shortcut('Ctrl + F1')} to ${key_shortcut('Ctrl + F9')}.
+
+## Special
+
+- Switch the editor to Vim Mode: ${key_shortcut('Ctrl + V')}.
+`
+
+export const documentation = {
+ introduction: introduction,
+ interface: software_interface,
+ time: time,
+ sound: sound,
+ functions: functions,
+ reference: reference,
+ shortcuts: shortcuts,
+ about: about,
+}
+
diff --git a/src/main.ts b/src/main.ts
index fffab31..2b72f9d 100644
--- a/src/main.ts
+++ b/src/main.ts
@@ -1,16 +1,17 @@
-import "./style.css";
-import { editorSetup } from "./EditorSetup";
-import { EditorView } from "codemirror";
import { EditorState, Compartment } from "@codemirror/state";
+import { ViewUpdate, lineNumbers } from "@codemirror/view";
import { javascript } from "@codemirror/lang-javascript";
+import { oneDark } from "@codemirror/theme-one-dark";
import { markdown } from "@codemirror/lang-markdown";
import { Extension } from "@codemirror/state";
-import { ViewUpdate, lineNumbers } from "@codemirror/view";
-import { oneDark } from "@codemirror/theme-one-dark";
import { vim } from "@replit/codemirror-vim";
-import { Clock } from "./Clock";
import { AppSettings } from "./AppSettings";
+import { editorSetup } from "./EditorSetup";
+import { documentation} from './Documentation';
+import { EditorView } from "codemirror";
+import { Clock } from "./Clock";
import { UserAPI } from "./API";
+import "./style.css";
import {
Universes,
File,
@@ -19,6 +20,31 @@ import {
} from "./AppSettings";
import { tryEvaluate } from "./Evaluator";
+type Documentation = { [key: string]: string };
+const Docs: Documentation = documentation;
+
+// Importing showdown and setting up the markdown converter
+import showdown from 'showdown';
+showdown.setFlavor('github')
+import showdownHighlight from 'showdown-highlight';
+const classMap = {
+ h1: 'text-4xl text-white ml-4 mx-4 my-4 mb-8',
+ h2: 'text-3xl text-white mx-4 my-4 mt-8',
+ ul: 'text-underline',
+ li: 'ml-12 list-disc text-2xl text-white mx-4 my-4 leading-normal',
+ p: 'text-2xl text-white mx-4 my-4 leading-normal',
+ a: 'text-2xl text-orange-300',
+ code: "block whitespace-pre overflow-x-scroll",
+}
+const bindings = Object.keys(classMap)
+ .map(key => ({
+ type: 'output',
+ regex: new RegExp(`<${key}(.*)>`, 'g'),
+ //@ts-ignore
+ replace: `<${key} class="${classMap[key]}" $1>`
+ }));
+
+// Importing the documentation from separate files in the ./src/documentation/* folder
export class Editor {
@@ -30,6 +56,7 @@ export class Editor {
withLineNumbers: Compartment;
vimModeCompartment : Compartment;
chosenLanguage: Compartment
+ currentDocumentationPane: string = "introduction"
settings = new AppSettings();
editorExtensions: Extension[] = [];
@@ -244,6 +271,7 @@ export class Editor {
// This is the modal to switch between universes
if (event.ctrlKey && event.key === "b") {
+ this.hideDocumentation();
this.openBuffersModal();
}
@@ -255,18 +283,29 @@ export class Editor {
if (event.ctrlKey && event.key === "l") {
event.preventDefault();
this.changeModeFromInterface("local");
+ this.hideDocumentation();
this.view.focus();
}
if (event.ctrlKey && event.key === "n") {
event.preventDefault();
this.changeModeFromInterface("notes");
+ this.hideDocumentation();
this.view.focus();
}
if (event.ctrlKey && event.key === "g") {
event.preventDefault();
this.changeModeFromInterface("global");
+ this.hideDocumentation();
+ this.view.focus();
+ }
+
+ if (event.ctrlKey && event.key === "i") {
+ event.preventDefault();
+ this.changeModeFromInterface("init");
+ this.hideDocumentation();
+ this.changeToLocalBuffer(0);
this.view.focus();
}
@@ -275,14 +314,6 @@ export class Editor {
this.showDocumentation();
}
-
- if (event.ctrlKey && event.key === "i") {
- event.preventDefault();
- this.changeModeFromInterface("init");
- this.changeToLocalBuffer(0);
- this.view.focus();
- }
-
[112, 113, 114, 115, 116, 117, 118, 119, 120].forEach(
(keycode, index) => {
if (event.keyCode === keycode) {
@@ -292,13 +323,20 @@ export class Editor {
} else {
this.changeModeFromInterface("local");
this.changeToLocalBuffer(index);
+ this.hideDocumentation();
}
}
}
);
- if (event.keyCode == 121) { this.changeModeFromInterface("global"); }
- if (event.keyCode == 122) { this.changeModeFromInterface("init"); }
+ if (event.keyCode == 121) {
+ this.changeModeFromInterface("global");
+ this.hideDocumentation();
+ }
+ if (event.keyCode == 122) {
+ this.changeModeFromInterface("init");
+ this.hideDocumentation();
+ }
});
// ================================================================================
@@ -443,6 +481,44 @@ export class Editor {
this.universes[this.selected_universe.toString()].init,
)
+ // Setting up the documentation page
+ document.getElementById('docs_introduction')!.addEventListener('click', () => {
+ this.currentDocumentationPane = 'introduction';
+ this.updateDocumentationContent();
+ });
+ document.getElementById('docs_interface')!.addEventListener('click', () => {
+ this.currentDocumentationPane = 'interface';
+ this.updateDocumentationContent();
+ });
+ document.getElementById('docs_time')!.addEventListener('click', () => {
+ this.currentDocumentationPane = 'time';
+ this.updateDocumentationContent();
+ });
+ document.getElementById('docs_sound')!.addEventListener('click', () => {
+ this.currentDocumentationPane = 'sound';
+ this.updateDocumentationContent();
+ });
+ document.getElementById('docs_functions')!.addEventListener('click', () => {
+ this.currentDocumentationPane = 'functions';
+ this.updateDocumentationContent();
+ });
+ document.getElementById('docs_reference')!.addEventListener('click', () => {
+ this.currentDocumentationPane = 'reference';
+ this.updateDocumentationContent();
+ });
+ document.getElementById('docs_shortcuts')!.addEventListener('click', () => {
+ this.currentDocumentationPane = 'shortcuts';
+ this.updateDocumentationContent();
+ });
+ document.getElementById('docs_about')!.addEventListener('click', () => {
+ this.currentDocumentationPane = 'about';
+ this.updateDocumentationContent();
+ });
+
+
+
+
+
// Passing the API to the User
Object.entries(this.api).forEach(([name, value]) => {
(globalThis as Record/g, '');
+ newString = newString.replace(/<\/code>/g, '
');
+ return newString;
+ }
+ document.getElementById('documentation-content')!.innerHTML = wrapCodeWithPre(converted_markdown);
+ }
+
changeToLocalBuffer(i: number) {
// Updating the CSS accordingly
const tabs = document.querySelectorAll('[id^="tab-"]');
diff --git a/src/output.css b/src/output.css
index f43befd..3b75b32 100644
--- a/src/output.css
+++ b/src/output.css
@@ -534,6 +534,85 @@ video {
--tw-backdrop-sepia: ;
}
+.hljs {
+ display: block;
+ overflow-x: auto;
+ padding: 0.5em;
+ background: #F0F0F0;
+}
+
+.hljs,
+.hljs-subst {
+ color: #444;
+}
+
+.hljs-comment {
+ color: #888888;
+}
+
+.hljs-keyword,
+.hljs-attribute,
+.hljs-selector-tag,
+.hljs-meta-keyword,
+.hljs-doctag,
+.hljs-name {
+ font-weight: bold;
+}
+
+.hljs-type,
+.hljs-string,
+.hljs-number,
+.hljs-selector-id,
+.hljs-selector-class,
+.hljs-quote,
+.hljs-template-tag,
+.hljs-deletion {
+ color: #880000;
+}
+
+.hljs-title,
+.hljs-section {
+ color: #880000;
+ font-weight: bold;
+}
+
+.hljs-regexp,
+.hljs-symbol,
+.hljs-variable,
+.hljs-template-variable,
+.hljs-link,
+.hljs-selector-attr,
+.hljs-selector-pseudo {
+ color: #BC6060;
+}
+
+.hljs-literal {
+ color: #78A960;
+}
+
+.hljs-built_in,
+.hljs-bullet,
+.hljs-code,
+.hljs-addition {
+ color: #397300;
+}
+
+.hljs-meta {
+ color: #1f7199;
+}
+
+.hljs-meta-string {
+ color: #4d99bf;
+}
+
+.hljs-emphasis {
+ font-style: italic;
+}
+
+.hljs-strong {
+ font-weight: bold;
+}
+
.sr-only {
position: absolute;
width: 1px;
@@ -599,6 +678,11 @@ video {
top: 0px;
}
+.mx-16 {
+ margin-left: 4rem;
+ margin-right: 4rem;
+}
+
.mx-2 {
margin-left: 0.5rem;
margin-right: 0.5rem;
@@ -619,11 +703,26 @@ video {
margin-right: auto;
}
+.my-1 {
+ margin-top: 0.25rem;
+ margin-bottom: 0.25rem;
+}
+
+.my-4 {
+ margin-top: 1rem;
+ margin-bottom: 1rem;
+}
+
.my-48 {
margin-top: 12rem;
margin-bottom: 12rem;
}
+.my-8 {
+ margin-top: 2rem;
+ margin-bottom: 2rem;
+}
+
.mb-0 {
margin-bottom: 0px;
}
@@ -636,6 +735,14 @@ video {
margin-bottom: 1rem;
}
+.mb-8 {
+ margin-bottom: 2rem;
+}
+
+.ml-0 {
+ margin-left: 0px;
+}
+
.ml-1 {
margin-left: 0.25rem;
}
@@ -648,12 +755,12 @@ video {
margin-left: 1rem;
}
-.mr-5 {
- margin-right: 1.25rem;
+.ml-8 {
+ margin-left: 2rem;
}
-.mr-6 {
- margin-right: 1.5rem;
+.mr-5 {
+ margin-right: 1.25rem;
}
.mt-12 {
@@ -664,8 +771,8 @@ video {
margin-top: 1rem;
}
-.ml-8 {
- margin-left: 2rem;
+.mt-8 {
+ margin-top: 2rem;
}
.block {
@@ -704,6 +811,10 @@ video {
height: 2rem;
}
+.h-full {
+ height: 100%;
+}
+
.h-screen {
height: 100vh;
}
@@ -736,6 +847,10 @@ video {
width: 1.5rem;
}
+.w-60 {
+ width: 15rem;
+}
+
.w-8 {
width: 2rem;
}
@@ -825,6 +940,12 @@ video {
margin-bottom: calc(0.5rem * var(--tw-space-y-reverse));
}
+.space-y-4 > :not([hidden]) ~ :not([hidden]) {
+ --tw-space-y-reverse: 0;
+ margin-top: calc(1rem * calc(1 - var(--tw-space-y-reverse)));
+ margin-bottom: calc(1rem * var(--tw-space-y-reverse));
+}
+
.space-y-6 > :not([hidden]) ~ :not([hidden]) {
--tw-space-y-reverse: 0;
margin-top: calc(1.5rem * calc(1 - var(--tw-space-y-reverse)));
@@ -896,6 +1017,11 @@ video {
border-color: rgb(209 213 219 / var(--tw-border-opacity));
}
+.border-gray-600 {
+ --tw-border-opacity: 1;
+ border-color: rgb(75 85 99 / var(--tw-border-opacity));
+}
+
.border-gray-700 {
--tw-border-opacity: 1;
border-color: rgb(55 65 81 / var(--tw-border-opacity));
@@ -916,11 +1042,21 @@ video {
background-color: rgb(229 231 235 / var(--tw-bg-opacity));
}
+.bg-gray-700 {
+ --tw-bg-opacity: 1;
+ background-color: rgb(55 65 81 / var(--tw-bg-opacity));
+}
+
.bg-gray-800 {
--tw-bg-opacity: 1;
background-color: rgb(31 41 55 / var(--tw-bg-opacity));
}
+.bg-neutral-800 {
+ --tw-bg-opacity: 1;
+ background-color: rgb(38 38 38 / var(--tw-bg-opacity));
+}
+
.bg-neutral-900 {
--tw-bg-opacity: 1;
background-color: rgb(23 23 23 / var(--tw-bg-opacity));
@@ -964,6 +1100,20 @@ video {
padding: 1.5rem;
}
+.p-8 {
+ padding: 2rem;
+}
+
+.px-0 {
+ padding-left: 0px;
+ padding-right: 0px;
+}
+
+.px-12 {
+ padding-left: 3rem;
+ padding-right: 3rem;
+}
+
.px-16 {
padding-left: 4rem;
padding-right: 4rem;
@@ -999,6 +1149,16 @@ video {
padding-bottom: 0.25rem;
}
+.py-1\.5 {
+ padding-top: 0.375rem;
+ padding-bottom: 0.375rem;
+}
+
+.py-12 {
+ padding-top: 3rem;
+ padding-bottom: 3rem;
+}
+
.py-14 {
padding-top: 3.5rem;
padding-bottom: 3.5rem;
@@ -1023,6 +1183,10 @@ video {
padding-bottom: 1rem;
}
+.pb-96 {
+ padding-bottom: 24rem;
+}
+
.pl-10 {
padding-left: 2.5rem;
}
@@ -1043,30 +1207,6 @@ video {
padding-left: 1.25rem;
}
-.pb-1 {
- padding-bottom: 0.25rem;
-}
-
-.pb-2 {
- padding-bottom: 0.5rem;
-}
-
-.pb-1\.5 {
- padding-bottom: 0.375rem;
-}
-
-.pl-12 {
- padding-left: 3rem;
-}
-
-.pl-24 {
- padding-left: 6rem;
-}
-
-.pr-4 {
- padding-right: 1rem;
-}
-
.text-center {
text-align: center;
}
@@ -1080,6 +1220,16 @@ video {
line-height: 2rem;
}
+.text-3xl {
+ font-size: 1.875rem;
+ line-height: 2.25rem;
+}
+
+.text-4xl {
+ font-size: 2.25rem;
+ line-height: 2.5rem;
+}
+
.text-base {
font-size: 1rem;
line-height: 1.5rem;
@@ -1100,11 +1250,6 @@ video {
line-height: 1rem;
}
-.text-5xl {
- font-size: 3rem;
- line-height: 1;
-}
-
.font-bold {
font-weight: 700;
}
@@ -1125,6 +1270,10 @@ video {
font-style: italic;
}
+.leading-normal {
+ line-height: 1.5;
+}
+
.tracking-tight {
letter-spacing: -0.025em;
}
@@ -1139,6 +1288,11 @@ video {
color: rgb(37 99 235 / var(--tw-text-opacity));
}
+.text-gray-400 {
+ --tw-text-opacity: 1;
+ color: rgb(156 163 175 / var(--tw-text-opacity));
+}
+
.text-gray-500 {
--tw-text-opacity: 1;
color: rgb(107 114 128 / var(--tw-text-opacity));
@@ -1169,16 +1323,6 @@ video {
color: rgb(255 255 255 / var(--tw-text-opacity));
}
-.text-red-500 {
- --tw-text-opacity: 1;
- color: rgb(239 68 68 / var(--tw-text-opacity));
-}
-
-.text-red-900 {
- --tw-text-opacity: 1;
- color: rgb(127 29 29 / var(--tw-text-opacity));
-}
-
.underline {
text-decoration-line: underline;
}
@@ -1201,6 +1345,10 @@ video {
outline-width: 0px;
}
+.ring-offset-gray-800 {
+ --tw-ring-offset-color: #1f2937;
+}
+
.filter {
filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);
}
@@ -1230,6 +1378,11 @@ video {
background-color: rgb(31 41 55 / var(--tw-bg-opacity));
}
+.hover\:bg-neutral-800:hover {
+ --tw-bg-opacity: 1;
+ background-color: rgb(38 38 38 / var(--tw-bg-opacity));
+}
+
.hover\:bg-white:hover {
--tw-bg-opacity: 1;
background-color: rgb(255 255 255 / var(--tw-bg-opacity));
@@ -1262,6 +1415,11 @@ video {
--tw-ring-color: rgb(59 130 246 / var(--tw-ring-opacity));
}
+.focus\:ring-blue-600:focus {
+ --tw-ring-opacity: 1;
+ --tw-ring-color: rgb(37 99 235 / var(--tw-ring-opacity));
+}
+
:is([dir="rtl"] .rtl\:border-l) {
border-left-width: 1px;
}
@@ -1283,6 +1441,11 @@ video {
}
@media (prefers-color-scheme: dark) {
+ .dark\:border-gray-500 {
+ --tw-border-opacity: 1;
+ border-color: rgb(107 114 128 / var(--tw-border-opacity));
+ }
+
.dark\:border-gray-600 {
--tw-border-opacity: 1;
border-color: rgb(75 85 99 / var(--tw-border-opacity));
@@ -1293,6 +1456,11 @@ video {
border-color: rgb(55 65 81 / var(--tw-border-opacity));
}
+ .dark\:bg-gray-600 {
+ --tw-bg-opacity: 1;
+ background-color: rgb(75 85 99 / var(--tw-bg-opacity));
+ }
+
.dark\:bg-gray-700 {
--tw-bg-opacity: 1;
background-color: rgb(55 65 81 / var(--tw-bg-opacity));
@@ -1303,9 +1471,9 @@ video {
background-color: rgb(31 41 55 / var(--tw-bg-opacity));
}
- .dark\:bg-neutral-900 {
- --tw-bg-opacity: 1;
- background-color: rgb(23 23 23 / var(--tw-bg-opacity));
+ .dark\:text-gray-100 {
+ --tw-text-opacity: 1;
+ color: rgb(243 244 246 / var(--tw-text-opacity));
}
.dark\:text-gray-200 {
diff --git a/tailwind.config.js b/tailwind.config.js
index d37737f..249fa3a 100644
--- a/tailwind.config.js
+++ b/tailwind.config.js
@@ -1,12 +1,20 @@
+
+
/** @type {import('tailwindcss').Config} */
export default {
content: [
"./index.html",
"./src/**/*.{js,ts,jsx,tsx}",
],
+ safelist: [{
+ pattern: /hljs+/,
+ }],
theme: {
extend: {},
+ hljs: {
+ theme: 'nord',
+ },
},
- plugins: [],
+ plugins: [require('tailwind-highlightjs')],
}
diff --git a/vite.config.js b/vite.config.js
index 222770a..4af3752 100644
--- a/vite.config.js
+++ b/vite.config.js
@@ -1,6 +1,9 @@
import { defineConfig } from 'vite';
+// import * as mdPlugin from 'vite-plugin-markdown';
export default defineConfig({
+ assetsInclude: ['**/*.md'],
+ // plugins: [mdPlugin(options)],
build: {
chunkSizeWarningLimit: 1600
}
diff --git a/yarn.lock b/yarn.lock
index 002d2d1..1c15dce 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -283,9 +283,9 @@
"@jridgewell/sourcemap-codec" "^1.4.14"
"@lezer/common@^1.0.0", "@lezer/common@^1.0.2":
- version "1.0.3"
- resolved "https://registry.yarnpkg.com/@lezer/common/-/common-1.0.3.tgz#1808f70e2b0a7b1fdcbaf5c074723d2d4ed1e4c5"
- integrity sha512-JH4wAXCgUOcCGNekQPLhVeUtIqjH0yPBs7vvUdSjyQama9618IOKFJwkv2kcqdhF0my8hQEgCTEJU0GIgnahvA==
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/@lezer/common/-/common-1.0.4.tgz#42b371138af846c1fe8ff5facd4360a670e30b4c"
+ integrity sha512-lZHlk8p67x4aIDtJl6UQrXSOP6oi7dQR3W/geFVrENdA1JDaAJWldnVqVjPMJupbTKbzDfFcePfKttqVidS/dg==
"@lezer/css@^1.0.0", "@lezer/css@^1.1.0":
version "1.1.3"
@@ -320,9 +320,9 @@
"@lezer/lr" "^1.3.0"
"@lezer/lr@^1.0.0", "@lezer/lr@^1.3.0":
- version "1.3.9"
- resolved "https://registry.yarnpkg.com/@lezer/lr/-/lr-1.3.9.tgz#cb299816d1c58efcca23ebbeb70bb4204fdd001b"
- integrity sha512-XPz6dzuTHlnsbA5M2DZgjflNQ+9Hi5Swhic0RULdp3oOs3rh6bqGZolosVqN/fQIT8uNiepzINJDnS39oweTHQ==
+ version "1.3.10"
+ resolved "https://registry.yarnpkg.com/@lezer/lr/-/lr-1.3.10.tgz#22833d2876ee61e302027620ee3ecf2c271e7a0f"
+ integrity sha512-BZfVvf7Re5BIwJHlZXbJn9L8lus5EonxQghyn+ih8Wl36XMFBPTXC0KM0IdUtj9w/diPHsKlXVgL+AlX2jYJ0Q==
dependencies:
"@lezer/common" "^1.0.0"
@@ -446,6 +446,16 @@
resolved "https://registry.yarnpkg.com/@types/audioworklet/-/audioworklet-0.0.49.tgz#e8bfad73d4783da45735a48fb40699d270fda140"
integrity sha512-Njo9vdkdTPwBTplwWgIXQk7Xoo5xAErxOfNXoq5pYHcYOZ1Yyp4M23TfeavaLZ+qqQo3y9xIigfWckizkyCKSw==
+"@types/marked@^5.0.1":
+ version "5.0.1"
+ resolved "https://registry.yarnpkg.com/@types/marked/-/marked-5.0.1.tgz#15acd796d722b91bf00738c8c8539aaf5034f0c6"
+ integrity sha512-Y3pAUzHKh605fN6fvASsz5FDSWbZcs/65Q6xYRmnIP9ZIYz27T4IOmXfH9gWJV1dpi7f1e7z7nBGUTx/a0ptpA==
+
+"@types/showdown@^2.0.1":
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/@types/showdown/-/showdown-2.0.1.tgz#24134738ba3107237d6a783e054a54773e739f81"
+ integrity sha512-xdnAw2nFqomkaL0QdtEk0t7yz26UkaVPl4v1pYJvtE1T0fmfQEH3JaxErEhGByEAl3zUZrkNBlneuJp0WJGqEA==
+
acorn-walk@^8.2.0:
version "8.2.0"
resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.2.0.tgz#741210f2e2426454508853a2f44d0ab83b7f69c1"
@@ -469,16 +479,38 @@ anymatch@~3.1.2:
normalize-path "^3.0.0"
picomatch "^2.0.4"
+app-root-path@^3.0.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/app-root-path/-/app-root-path-3.1.0.tgz#5971a2fc12ba170369a7a1ef018c71e6e47c2e86"
+ integrity sha512-biN3PwB2gUtjaYy/isrU3aNWI5w+fAfvHkSvCKeQGxhmYpwKFUxudR3Yya+KqVRHBmEDYh+/lTozYCFbmzX4nA==
+
arg@^5.0.2:
version "5.0.2"
resolved "https://registry.yarnpkg.com/arg/-/arg-5.0.2.tgz#c81433cc427c92c4dcf4865142dbca6f15acd59c"
integrity sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==
+argparse@^1.0.7:
+ version "1.0.10"
+ resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911"
+ integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==
+ dependencies:
+ sprintf-js "~1.0.2"
+
+argparse@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38"
+ integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==
+
astring@^1.8.6:
version "1.8.6"
resolved "https://registry.yarnpkg.com/astring/-/astring-1.8.6.tgz#2c9c157cf1739d67561c56ba896e6948f6b93731"
integrity sha512-ISvCdHdlTDlH5IpxQJIex7BWBywFWgjJSVdwst+/iQCoEYnyOaQ95+X1JGshuBjGp6nxKUy1jMgE3zPqN7fQdg==
+atob@^2.1.2:
+ version "2.1.2"
+ resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9"
+ integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==
+
automation-events@^6.0.8:
version "6.0.8"
resolved "https://registry.yarnpkg.com/automation-events/-/automation-events-6.0.8.tgz#52929699924cd791eaefc51916ffc033c4d0f42f"
@@ -504,6 +536,11 @@ balanced-match@^1.0.0:
resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee"
integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==
+base64-js@^1.3.1:
+ version "1.5.1"
+ resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a"
+ integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==
+
binary-extensions@^2.0.0:
version "2.2.0"
resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d"
@@ -534,6 +571,14 @@ browserslist@^4.21.10:
node-releases "^2.0.13"
update-browserslist-db "^1.0.11"
+buffer@^5.7.0:
+ version "5.7.1"
+ resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0"
+ integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==
+ dependencies:
+ base64-js "^1.3.1"
+ ieee754 "^1.1.13"
+
camelcase-css@^2.0.1:
version "2.0.1"
resolved "https://registry.yarnpkg.com/camelcase-css/-/camelcase-css-2.0.1.tgz#ee978f6947914cc30c6b44741b6ed1df7f043fd5"
@@ -577,6 +622,11 @@ commander@^4.0.0:
resolved "https://registry.yarnpkg.com/commander/-/commander-4.1.1.tgz#9fd602bd936294e9e9ef46a3f4d6964044b18068"
integrity sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==
+commander@^9.0.0:
+ version "9.5.0"
+ resolved "https://registry.yarnpkg.com/commander/-/commander-9.5.0.tgz#bc08d1eb5cedf7ccb797a96199d41c7bc3e60d30"
+ integrity sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==
+
concat-map@0.0.1:
version "0.0.1"
resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
@@ -587,11 +637,25 @@ crelt@^1.0.5:
resolved "https://registry.yarnpkg.com/crelt/-/crelt-1.0.6.tgz#7cc898ea74e190fb6ef9dae57f8f81cf7302df72"
integrity sha512-VQ2MBenTq1fWZUH9DJNGti7kKv6EeAuYr3cLwxUWhIu1baTaXh4Ib5W2CqHVqib4/MqbYGJqiL3Zb8GJZr3l4g==
+css@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/css/-/css-3.0.0.tgz#4447a4d58fdd03367c516ca9f64ae365cee4aa5d"
+ integrity sha512-DG9pFfwOrzc+hawpmqX/dHYHJG+Bsdb0klhyi1sDneOgGOXy9wQIC8hzyVp1e4NRYDBdxcylvywPkkXCHAzTyQ==
+ dependencies:
+ inherits "^2.0.4"
+ source-map "^0.6.1"
+ source-map-resolve "^0.6.0"
+
cssesc@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee"
integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==
+decode-uri-component@^0.2.0:
+ version "0.2.2"
+ resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.2.tgz#e69dbe25d37941171dd540e024c444cd5188e1e9"
+ integrity sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==
+
didyoumean@^1.2.2:
version "1.2.2"
resolved "https://registry.yarnpkg.com/didyoumean/-/didyoumean-1.2.2.tgz#989346ffe9e839b4555ecf5666edea0d3e8ad037"
@@ -602,10 +666,50 @@ dlv@^1.1.3:
resolved "https://registry.yarnpkg.com/dlv/-/dlv-1.1.3.tgz#5c198a8a11453596e751494d49874bc7732f2e79"
integrity sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==
+dom-serializer@^1.0.1:
+ version "1.4.1"
+ resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-1.4.1.tgz#de5d41b1aea290215dc45a6dae8adcf1d32e2d30"
+ integrity sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==
+ dependencies:
+ domelementtype "^2.0.1"
+ domhandler "^4.2.0"
+ entities "^2.0.0"
+
+domelementtype@^2.0.1, domelementtype@^2.2.0:
+ version "2.3.0"
+ resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.3.0.tgz#5c45e8e869952626331d7aab326d01daf65d589d"
+ integrity sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==
+
+domhandler@^4.0.0, domhandler@^4.2.0:
+ version "4.3.1"
+ resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-4.3.1.tgz#8d792033416f59d68bc03a5aa7b018c1ca89279c"
+ integrity sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==
+ dependencies:
+ domelementtype "^2.2.0"
+
+domutils@^2.5.2:
+ version "2.8.0"
+ resolved "https://registry.yarnpkg.com/domutils/-/domutils-2.8.0.tgz#4437def5db6e2d1f5d6ee859bd95ca7d02048135"
+ integrity sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==
+ dependencies:
+ dom-serializer "^1.0.1"
+ domelementtype "^2.2.0"
+ domhandler "^4.2.0"
+
electron-to-chromium@^1.4.477:
- version "1.4.492"
- resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.492.tgz#83fed8beb64ec60578069e15dddd17b13a77ca56"
- integrity sha512-36K9b/6skMVwAIEsC7GiQ8I8N3soCALVSHqWHzNDtGemAcI9Xu8hP02cywWM0A794rTHm0b0zHPeLJHtgFVamQ==
+ version "1.4.495"
+ resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.495.tgz#d72d2eddc05d07c538275a00f2619b113848bff6"
+ integrity sha512-mwknuemBZnoOCths4GtpU/SDuVMp3uQHKa2UNJT9/aVD6WVRjGpXOxRGX7lm6ILIenTdGXPSTCTDaWos5tEU8Q==
+
+entities@^2.0.0:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/entities/-/entities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55"
+ integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==
+
+entities@~2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/entities/-/entities-2.1.0.tgz#992d3129cf7df6870b96c57858c249a120f8b8b5"
+ integrity sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w==
esbuild@^0.18.10:
version "0.18.20"
@@ -640,6 +744,11 @@ escalade@^3.1.1:
resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40"
integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==
+esprima@^4.0.0:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71"
+ integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==
+
fast-glob@^3.2.12:
version "3.3.1"
resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.1.tgz#784b4e897340f3dbbef17413b3f11acf03c874c4"
@@ -670,6 +779,13 @@ fraction.js@^4.2.0:
resolved "https://registry.yarnpkg.com/fraction.js/-/fraction.js-4.2.0.tgz#448e5109a313a3527f5a3ab2119ec4cf0e0e2950"
integrity sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==
+front-matter@^4.0.0:
+ version "4.0.2"
+ resolved "https://registry.yarnpkg.com/front-matter/-/front-matter-4.0.2.tgz#b14e54dc745cfd7293484f3210d15ea4edd7f4d5"
+ integrity sha512-I8ZuJ/qG92NWX8i5x1Y8qyj3vizhXS31OxjKDu3LKP+7/qBgfIKValiZIEwoVoJKUHlhWtYrktkxV1XsX+pPlg==
+ dependencies:
+ js-yaml "^3.13.1"
+
fs.realpath@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
@@ -718,6 +834,45 @@ has@^1.0.3:
dependencies:
function-bind "^1.1.1"
+he@^1.1.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f"
+ integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==
+
+highlight.js@^10.7.2:
+ version "10.7.3"
+ resolved "https://registry.yarnpkg.com/highlight.js/-/highlight.js-10.7.3.tgz#697272e3991356e40c3cac566a74eef681756531"
+ integrity sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A==
+
+highlight.js@^11.5.0:
+ version "11.8.0"
+ resolved "https://registry.yarnpkg.com/highlight.js/-/highlight.js-11.8.0.tgz#966518ea83257bae2e7c9a48596231856555bb65"
+ integrity sha512-MedQhoqVdr0U6SSnWPzfiadUcDHfN/Wzq25AkXiQv9oiOO/sG0S7XkvpFIqWBl9Yq1UYyYOOVORs5UW2XlPyzg==
+
+html-encoder-decoder@^1.3.9:
+ version "1.3.9"
+ resolved "https://registry.yarnpkg.com/html-encoder-decoder/-/html-encoder-decoder-1.3.9.tgz#d5ec7d249cd525709f7640ae9340f482cc86e94a"
+ integrity sha512-dHv7bdOTEE69EIxXsM8Vslt+NW7QfEB5EGOC29BR14c7RQ9iHUgK76k3/aS23xNIwDg/xlZLWCSZ8lxol9bYlQ==
+ dependencies:
+ he "^1.1.0"
+ iterate-object "^1.3.2"
+ regex-escape "^3.4.2"
+
+htmlparser2@^6.0.0:
+ version "6.1.0"
+ resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-6.1.0.tgz#c4d762b6c3371a05dbe65e94ae43a9f845fb8fb7"
+ integrity sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==
+ dependencies:
+ domelementtype "^2.0.1"
+ domhandler "^4.0.0"
+ domutils "^2.5.2"
+ entities "^2.0.0"
+
+ieee754@^1.1.13:
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352"
+ integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==
+
inflight@^1.0.4:
version "1.0.6"
resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9"
@@ -726,7 +881,7 @@ inflight@^1.0.4:
once "^1.3.0"
wrappy "1"
-inherits@2:
+inherits@2, inherits@^2.0.4:
version "2.0.4"
resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
@@ -762,10 +917,23 @@ is-number@^7.0.0:
resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b"
integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==
+iterate-object@^1.3.2:
+ version "1.3.4"
+ resolved "https://registry.yarnpkg.com/iterate-object/-/iterate-object-1.3.4.tgz#fa50b1d9e58e340a7dd6b4c98c8a5e182e790096"
+ integrity sha512-4dG1D1x/7g8PwHS9aK6QV5V94+ZvyP4+d19qDv43EzImmrndysIl4prmJ1hWWIGCqrZHyaHBm6BSEWHOLnpoNw==
+
jiti@^1.18.2:
- version "1.19.1"
- resolved "https://registry.yarnpkg.com/jiti/-/jiti-1.19.1.tgz#fa99e4b76a23053e0e7cde098efe1704a14c16f1"
- integrity sha512-oVhqoRDaBXf7sjkll95LHVS6Myyyb1zaunVwk4Z0+WPSW4gjS0pl01zYKHScTuyEhQsFxV5L4DR5r+YqSyqyyg==
+ version "1.19.3"
+ resolved "https://registry.yarnpkg.com/jiti/-/jiti-1.19.3.tgz#ef554f76465b3c2b222dc077834a71f0d4a37569"
+ integrity sha512-5eEbBDQT/jF1xg6l36P+mWGGoH9Spuy0PCdSr2dtWRDGC6ph/w9ZCL4lmESW8f8F7MwT3XKescfP0wnZWAKL9w==
+
+js-yaml@^3.13.1:
+ version "3.14.1"
+ resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537"
+ integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==
+ dependencies:
+ argparse "^1.0.7"
+ esprima "^4.0.0"
lilconfig@^2.0.5, lilconfig@^2.1.0:
version "2.1.0"
@@ -777,11 +945,44 @@ lines-and-columns@^1.1.6:
resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632"
integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==
+linkify-it@^3.0.1:
+ version "3.0.3"
+ resolved "https://registry.yarnpkg.com/linkify-it/-/linkify-it-3.0.3.tgz#a98baf44ce45a550efb4d49c769d07524cc2fa2e"
+ integrity sha512-ynTsyrFSdE5oZ/O9GEf00kPngmOfVwazR5GKDq6EYfhlpFug3J2zybX56a2PRRpc9P+FuSoGNAwjlbDs9jJBPQ==
+ dependencies:
+ uc.micro "^1.0.1"
+
+lodash.merge@^4.6.2:
+ version "4.6.2"
+ resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a"
+ integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==
+
lru-cache@^10.0.0, lru-cache@^10.0.1:
version "10.0.1"
resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-10.0.1.tgz#0a3be479df549cca0e5d693ac402ff19537a6b7a"
integrity sha512-IJ4uwUTi2qCccrioU6g9g/5rvvVl13bsdczUUcqbciD9iLr095yj8DQKdObriEvuNSx325N1rV1O0sJFszx75g==
+markdown-it@^12.0.0:
+ version "12.3.2"
+ resolved "https://registry.yarnpkg.com/markdown-it/-/markdown-it-12.3.2.tgz#bf92ac92283fe983fe4de8ff8abfb5ad72cd0c90"
+ integrity sha512-TchMembfxfNVpHkbtriWltGWc+m3xszaRD0CZup7GFFhzIgQqxIfn3eGj1yZpfuflzPvfkt611B2Q/Bsk1YnGg==
+ dependencies:
+ argparse "^2.0.1"
+ entities "~2.1.0"
+ linkify-it "^3.0.1"
+ mdurl "^1.0.1"
+ uc.micro "^1.0.5"
+
+marked@^7.0.3:
+ version "7.0.3"
+ resolved "https://registry.yarnpkg.com/marked/-/marked-7.0.3.tgz#680778f4612ba483d89e851fc70690d867165e42"
+ integrity sha512-ev2uM40p0zQ/GbvqotfKcSWEa59fJwluGZj5dcaUOwDRrB1F3dncdXy8NWUApk4fi8atU3kTBOwjyjZ0ud0dxw==
+
+mdurl@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/mdurl/-/mdurl-1.0.1.tgz#fe85b2ec75a59037f2adfec100fd6c601761152e"
+ integrity sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==
+
merge2@^1.3.0:
version "1.4.1"
resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae"
@@ -821,6 +1022,13 @@ nanostores@^0.8.1:
resolved "https://registry.yarnpkg.com/nanostores/-/nanostores-0.8.1.tgz#963577028ac10eeb50bec376535f4762ab5af9be"
integrity sha512-1ZCfQtII2XeFDrtqXL2cdQ/diGrLxzRB3YMyQjn8m7GSGQrJfGST2iuqMpWnS/ZlifhtjgR/SX0Jy6Uij6lRLA==
+node-fetch@^2.6.1:
+ version "2.6.13"
+ resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.13.tgz#a20acbbec73c2e09f9007de5cda17104122e0010"
+ integrity sha512-StxNAxh15zr77QvvkmveSQ8uCQ4+v5FkvNTj0OESmiHu+VRi/gXArXtkWMElOsOUNLtUEvI4yS+rdtOHZTwlQA==
+ dependencies:
+ whatwg-url "^5.0.0"
+
node-releases@^2.0.13:
version "2.0.13"
resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.13.tgz#d5ed1627c23e3461e819b02e57b75e4899b1c81d"
@@ -960,6 +1168,11 @@ regenerator-runtime@^0.14.0:
resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz#5e19d68eb12d486f797e15a3c6a918f7cec5eb45"
integrity sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==
+regex-escape@^3.4.2:
+ version "3.4.10"
+ resolved "https://registry.yarnpkg.com/regex-escape/-/regex-escape-3.4.10.tgz#b45afec7a6e793b786ad193dc3d18b46b5ae08e6"
+ integrity sha512-qEqf7uzW+iYcKNLMDFnMkghhQBnGdivT6KqVQyKsyjSWnoFyooXVnxrw9dtv3AFLnD6VBGXxtZGAQNFGFTnCqA==
+
resolve@^1.1.7, resolve@^1.22.2:
version "1.22.4"
resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.4.tgz#1dc40df46554cdaf8948a486a10f6ba1e2026c34"
@@ -988,11 +1201,45 @@ run-parallel@^1.1.9:
dependencies:
queue-microtask "^1.2.2"
+showdown-highlight@^3.1.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/showdown-highlight/-/showdown-highlight-3.1.0.tgz#c9ec902c35100e1ac3433761cdb655810120f1e5"
+ integrity sha512-wrTxtE63L/bpW5A2Uy/AO1gblXnNHK/cDL6LszECOoCdMJKWTj0/4n4I/pmqub+3H3KCPVDDvtXpCArnT/heFA==
+ dependencies:
+ highlight.js "^11.5.0"
+ html-encoder-decoder "^1.3.9"
+ showdown "^2.0.3"
+
+showdown@^2.0.3, showdown@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/showdown/-/showdown-2.1.0.tgz#1251f5ed8f773f0c0c7bfc8e6fd23581f9e545c5"
+ integrity sha512-/6NVYu4U819R2pUIk79n67SYgJHWCce0a5xTP979WbNp0FL9MN1I1QK662IDU1b6JzKTvmhgI7T7JYIxBi3kMQ==
+ dependencies:
+ commander "^9.0.0"
+
source-map-js@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c"
integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==
+source-map-resolve@^0.6.0:
+ version "0.6.0"
+ resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.6.0.tgz#3d9df87e236b53f16d01e58150fc7711138e5ed2"
+ integrity sha512-KXBr9d/fO/bWo97NXsPIAW1bFSBOuCnjbNTBMO7N59hsv5i9yzRDfcYwwt0l04+VqnKC+EwzvJZIP/qkuMgR/w==
+ dependencies:
+ atob "^2.1.2"
+ decode-uri-component "^0.2.0"
+
+source-map@^0.6.1:
+ version "0.6.1"
+ resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263"
+ integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==
+
+sprintf-js@~1.0.2:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c"
+ integrity sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==
+
standardized-audio-context@^25.3.29:
version "25.3.55"
resolved "https://registry.yarnpkg.com/standardized-audio-context/-/standardized-audio-context-25.3.55.tgz#4d87ea6052de80ecf5abf56eb71ecd71f7e52e4e"
@@ -1021,9 +1268,9 @@ sucrase@^3.32.0:
ts-interface-checker "^0.1.9"
superdough@^0.9.3:
- version "0.9.3"
- resolved "https://registry.yarnpkg.com/superdough/-/superdough-0.9.3.tgz#d0dd19218a1f3f5940db29f36d80b5eb7c58ac50"
- integrity sha512-2WYtZKVaN1LbUKyVrxEoEFE9Esx2Jfa+G80D+GKq6ZTlAcBIFLk90RlCU6AedLla/vspacEiO0AkUPg0ayW6Rw==
+ version "0.9.4"
+ resolved "https://registry.yarnpkg.com/superdough/-/superdough-0.9.4.tgz#cfae0bc6dfe5976ea0abb423a9cf2b3670944b86"
+ integrity sha512-1wOJbnm5e/9tn9TzYuhzlxhrXPJ3m6sY21tf+nNnU9JXA0ZUAGbGyHDWTT8R/cEtKziFAmgVxdwGBFOAxgTWdw==
dependencies:
nanostores "^0.8.1"
@@ -1032,6 +1279,25 @@ supports-preserve-symlinks-flag@^1.0.0:
resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09"
integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==
+sync-fetch@^0.3.0:
+ version "0.3.1"
+ resolved "https://registry.yarnpkg.com/sync-fetch/-/sync-fetch-0.3.1.tgz#62aa82c4b4d43afd6906bfd7b5f92056458509f0"
+ integrity sha512-xj5qiCDap/03kpci5a+qc5wSJjc8ZSixgG2EUmH1B8Ea2sfWclQA7eH40hiHPCtkCn6MCk4Wb+dqcXdCy2PP3g==
+ dependencies:
+ buffer "^5.7.0"
+ node-fetch "^2.6.1"
+
+tailwind-highlightjs@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/tailwind-highlightjs/-/tailwind-highlightjs-2.0.1.tgz#9a71c1514b1fbab392a70af66e2b5f4accc5bfd0"
+ integrity sha512-kh9e/WEi9EkP4h9keWlwBAsDeSZ3YGyQJ7XexIw98mVIVUm418OTNPqvYouoTeByPPVvu7TH2sMEFKt1A04VcA==
+ dependencies:
+ app-root-path "^3.0.0"
+ css "^3.0.0"
+ highlight.js "^10.7.2"
+ lodash.merge "^4.6.2"
+ sync-fetch "^0.3.0"
+
tailwindcss@^3.3.3:
version "3.3.3"
resolved "https://registry.yarnpkg.com/tailwindcss/-/tailwindcss-3.3.3.tgz#90da807393a2859189e48e9e7000e6880a736daf"
@@ -1089,6 +1355,11 @@ tone@^14.8.49:
standardized-audio-context "^25.3.29"
tslib "^2.3.1"
+tr46@~0.0.3:
+ version "0.0.3"
+ resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a"
+ integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==
+
ts-interface-checker@^0.1.9:
version "0.1.13"
resolved "https://registry.yarnpkg.com/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz#784fd3d679722bc103b1b4b8030bcddb5db2a699"
@@ -1104,6 +1375,11 @@ typescript@^5.0.2:
resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.1.6.tgz#02f8ac202b6dad2c0dd5e0913745b47a37998274"
integrity sha512-zaWCozRZ6DLEWAWFrVDz1H6FVXzUSfTy5FUMWsQlU8Ym5JP9eO4xkTIROFCQvhQf61z6O/G6ugw3SgAnvvm+HA==
+uc.micro@^1.0.1, uc.micro@^1.0.5:
+ version "1.0.6"
+ resolved "https://registry.yarnpkg.com/uc.micro/-/uc.micro-1.0.6.tgz#9c411a802a409a91fc6cf74081baba34b24499ac"
+ integrity sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==
+
update-browserslist-db@^1.0.11:
version "1.0.11"
resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz#9a2a641ad2907ae7b3616506f4b977851db5b940"
@@ -1117,6 +1393,15 @@ util-deprecate@^1.0.2:
resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==
+vite-plugin-markdown@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/vite-plugin-markdown/-/vite-plugin-markdown-2.1.0.tgz#3c90b91eb8c05a5701d944e9948739f514c79af1"
+ integrity sha512-eWLlrWzYZXEX3/HaXZo/KLjRpO72IUhbgaoFrbwB07ueXi6QfwqrgdZQfUcXTSofJCkN7GhErMC1K1RTAE0gGQ==
+ dependencies:
+ front-matter "^4.0.0"
+ htmlparser2 "^6.0.0"
+ markdown-it "^12.0.0"
+
vite@^4.4.5:
version "4.4.9"
resolved "https://registry.yarnpkg.com/vite/-/vite-4.4.9.tgz#1402423f1a2f8d66fd8d15e351127c7236d29d3d"
@@ -1133,6 +1418,19 @@ w3c-keyname@^2.2.4:
resolved "https://registry.yarnpkg.com/w3c-keyname/-/w3c-keyname-2.2.8.tgz#7b17c8c6883d4e8b86ac8aba79d39e880f8869c5"
integrity sha512-dpojBhNsCNN7T82Tm7k26A6G9ML3NkhDsnw9n/eoxSRlVBB4CEtIQ/KTCLI2Fwf3ataSXRhYFkQi3SlnFwPvPQ==
+webidl-conversions@^3.0.0:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871"
+ integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==
+
+whatwg-url@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d"
+ integrity sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==
+ dependencies:
+ tr46 "~0.0.3"
+ webidl-conversions "^3.0.0"
+
wrappy@1:
version "1.0.2"
resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"