big updats
This commit is contained in:
@@ -1,4 +1,4 @@
|
|||||||
import { nextTick, inject, provide, watch, type InjectionKey, onBeforeUnmount, watchEffect, onMounted, type Ref, type CSSProperties, defineComponent, ref } from "vue";
|
import { nextTick, inject, provide, watch, type InjectionKey, onBeforeUnmount, watchEffect, onMounted, type Ref, defineComponent, ref } from "vue";
|
||||||
import { addCSS, css, h as djh } from "@/util.ts";
|
import { addCSS, css, h as djh } from "@/util.ts";
|
||||||
|
|
||||||
type TooltipContext = {
|
type TooltipContext = {
|
||||||
@@ -122,7 +122,7 @@ export default defineComponent({
|
|||||||
{...attrs}
|
{...attrs}
|
||||||
onMouseenter={(e) => tooltip.show(props.tooltip, e.pageX, e.pageY)}
|
onMouseenter={(e) => tooltip.show(props.tooltip, e.pageX, e.pageY)}
|
||||||
onMouseleave={() => tooltip.hide()}>
|
onMouseleave={() => tooltip.hide()}>
|
||||||
{slots.default && <slots.default />}
|
{slots.default?.()}
|
||||||
</div>
|
</div>
|
||||||
</>;
|
</>;
|
||||||
},
|
},
|
||||||
22
app/api.ts
22
app/api.ts
@@ -1,23 +1,23 @@
|
|||||||
export type DJAPIEndpoint = "/rp-articles";
|
export type DjAPIEndpoint = "/rp-articles";
|
||||||
|
|
||||||
type RPArticle = {
|
type RPArticle = {
|
||||||
title: string,
|
title: string,
|
||||||
slug: string;
|
slug: string;
|
||||||
titleDe: string,
|
titleDe: string,
|
||||||
titleEn: string,
|
titleEn: string,
|
||||||
author: string,
|
author: string,
|
||||||
tags?: string[],
|
tags?: string[],
|
||||||
};
|
};
|
||||||
|
|
||||||
export interface DJAPIResultMap extends Record<DJAPIEndpoint, unknown> {
|
export interface DjAPIResultMap extends Record<DjAPIEndpoint, unknown> {
|
||||||
"/rp-articles": RPArticle[];
|
"/rp-articles": RPArticle[];
|
||||||
}
|
}
|
||||||
|
|
||||||
export type DJAPIResult = DJAPIResultMap[DJAPIEndpoint];
|
export type DjAPIResult = DjAPIResultMap[DjAPIEndpoint];
|
||||||
|
|
||||||
export default async function getDJAPI<T extends DJAPIEndpoint>(
|
export default async function getDjAPI<T extends DjAPIEndpoint>(
|
||||||
hostUrl: string,
|
hostUrl: string,
|
||||||
endpoint: T,
|
endpoint: T,
|
||||||
): Promise<DJAPIResultMap[typeof endpoint]> {
|
): Promise<DjAPIResultMap[typeof endpoint]> {
|
||||||
return await (await fetch(`${hostUrl}/api${endpoint}`)).json();
|
return await (await fetch(`${hostUrl}/api${endpoint}`)).json();
|
||||||
}
|
}
|
||||||
|
|||||||
39
app/blog/DjBlogRoot.tsx
Normal file
39
app/blog/DjBlogRoot.tsx
Normal file
@@ -0,0 +1,39 @@
|
|||||||
|
import { defineComponent, ref } from "vue";
|
||||||
|
import useHead from "@/useHead.ts";
|
||||||
|
import DjTooltip, { setupTooltip } from "@/DjTooltip.tsx";
|
||||||
|
import { addCSS, css } from "@/util.ts";
|
||||||
|
|
||||||
|
const styles = css`
|
||||||
|
.supercontainer {
|
||||||
|
width: 100vw;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
.container {
|
||||||
|
width: 800px;
|
||||||
|
}
|
||||||
|
`;
|
||||||
|
|
||||||
|
export default defineComponent({
|
||||||
|
name: "app-root",
|
||||||
|
setup() {
|
||||||
|
addCSS('dj-blog-root', styles);
|
||||||
|
|
||||||
|
useHead({ title: "djblog Home" });
|
||||||
|
|
||||||
|
const tooltipCarrier = ref<HTMLDivElement | null>(null);
|
||||||
|
setupTooltip({ carrier: tooltipCarrier });
|
||||||
|
|
||||||
|
return () => <>
|
||||||
|
<div ref={tooltipCarrier} class="tooltip-carrier" />
|
||||||
|
<div class="supercontainer">
|
||||||
|
<div class="container">
|
||||||
|
<DjTooltip tooltip="come in and find out...">
|
||||||
|
<h1>dj blog</h1>
|
||||||
|
</DjTooltip>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</>;
|
||||||
|
},
|
||||||
|
});
|
||||||
7
app/blog/client.ts
Normal file
7
app/blog/client.ts
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
import { createSSRApp } from "vue";
|
||||||
|
import DjBlogRoot from "@/blog//DjBlogRoot.tsx";
|
||||||
|
import { cssRegistry } from "@/util.ts";
|
||||||
|
|
||||||
|
createSSRApp(DjBlogRoot)
|
||||||
|
.provide(cssRegistry, new Set())
|
||||||
|
.mount("#app-root");
|
||||||
7
app/blog/server.ts
Normal file
7
app/blog/server.ts
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
import { createSSRApp } from "vue";
|
||||||
|
import DjBlogRoot from "@/blog/DjBlogRoot.tsx";
|
||||||
|
|
||||||
|
export default function createApp() {
|
||||||
|
const app = createSSRApp(DjBlogRoot);
|
||||||
|
return { app, router: null };
|
||||||
|
}
|
||||||
@@ -1,22 +1,20 @@
|
|||||||
import { defineComponent } from "vue";
|
import { defineComponent } from "vue";
|
||||||
import { RouterLink } from "vue-router";
|
import { RouterLink } from "vue-router";
|
||||||
import DJEmail from "@/DJEmail.tsx";
|
import DjEmail from "@/DjEmail.tsx";
|
||||||
import useHead from "@/useHead.ts";
|
import useHead from "@/useHead.ts";
|
||||||
import useAsyncState from "@/useAsyncState.ts";
|
import useAsyncState from "@/useAsyncState.ts";
|
||||||
import getDJAPI from "@/api.ts";
|
import getDjAPI from "@/api.ts";
|
||||||
import DJTooltip from "@/DJTooltip.tsx";
|
import DjTooltip from "@/DjTooltip.tsx";
|
||||||
|
|
||||||
export default defineComponent({
|
export default defineComponent({
|
||||||
name: "ge-deutsch",
|
name: "ge-deutsch",
|
||||||
async setup() {
|
async setup() {
|
||||||
useHead({ title: "Ray Peat Artikel auf Deutsch" });
|
useHead({ title: "Ray Peat Artikel auf Deutsch" });
|
||||||
|
|
||||||
const {
|
const rpArticles = useAsyncState("rp-articles", ({ hostUrl }) => getDjAPI(hostUrl, "/rp-articles"));
|
||||||
result: rpArticles,
|
|
||||||
stateIsReady,
|
await rpArticles.done;
|
||||||
} = useAsyncState("rp-articles", ({ hostUrl }) => getDJAPI(hostUrl, "/rp-articles"));
|
|
||||||
|
|
||||||
await stateIsReady;
|
|
||||||
return () => <>
|
return () => <>
|
||||||
<header>
|
<header>
|
||||||
<h1>Ray Peat Deutsche Übersetzungen</h1>
|
<h1>Ray Peat Deutsche Übersetzungen</h1>
|
||||||
@@ -29,9 +27,9 @@ export default defineComponent({
|
|||||||
<h2>Artikelliste</h2>
|
<h2>Artikelliste</h2>
|
||||||
<div class="text-slab">
|
<div class="text-slab">
|
||||||
<ul id="article">
|
<ul id="article">
|
||||||
{rpArticles.value && rpArticles.value.map((_) => (
|
{rpArticles.result.value && rpArticles.result.value.map((_) => (
|
||||||
<li>
|
<li>
|
||||||
<DJTooltip tooltip={`Englischer Titel: <em>»${ _.titleEn }«</em>`}>
|
<DjTooltip tooltip={`Englischer Titel: <em>»${ _.titleEn }«</em>`}>
|
||||||
{_.tags?.includes('in-arbeit')
|
{_.tags?.includes('in-arbeit')
|
||||||
? _.titleDe
|
? _.titleDe
|
||||||
: (
|
: (
|
||||||
@@ -40,7 +38,7 @@ export default defineComponent({
|
|||||||
</RouterLink>
|
</RouterLink>
|
||||||
)}
|
)}
|
||||||
{_.tags?.map(tag => <span class="tag">{tag}</span>)}
|
{_.tags?.map(tag => <span class="tag">{tag}</span>)}
|
||||||
</DJTooltip>
|
</DjTooltip>
|
||||||
</li>
|
</li>
|
||||||
))}
|
))}
|
||||||
</ul>
|
</ul>
|
||||||
@@ -56,7 +54,7 @@ export default defineComponent({
|
|||||||
<li><a href="http://raypeat.com/articles/articles/gelatin.shtml">Gelatin, stress, longevity</a></li>
|
<li><a href="http://raypeat.com/articles/articles/gelatin.shtml">Gelatin, stress, longevity</a></li>
|
||||||
<li><a href="http://raypeat.com/articles/articles/unsaturatedfats.shtml">Unsaturated fatty acids: Nutritionally essential, or toxic?</a></li>
|
<li><a href="http://raypeat.com/articles/articles/unsaturatedfats.shtml">Unsaturated fatty acids: Nutritionally essential, or toxic?</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
<DJEmail>Schick mir deine Vorschläge!</DJEmail>
|
<DjEmail>Schick mir deine Vorschläge!</DjEmail>
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
<section>
|
<section>
|
||||||
@@ -82,7 +80,7 @@ export default defineComponent({
|
|||||||
<h3>Helfen</h3>
|
<h3>Helfen</h3>
|
||||||
<p class="text-slab">
|
<p class="text-slab">
|
||||||
Falls was bei der Übersetzung auffällt oder besonders unidiomatisch klingt, bzw. der deutschen
|
Falls was bei der Übersetzung auffällt oder besonders unidiomatisch klingt, bzw. der deutschen
|
||||||
Fachsprache der Medizin nicht gerecht sein sollte, kannst du mir unter <DJEmail />{" "}
|
Fachsprache der Medizin nicht gerecht sein sollte, kannst du mir unter <DjEmail />{" "}
|
||||||
eine Mail senden. Meine Muttersprache ist schließlich Englisch und ich bin kein professioneller
|
eine Mail senden. Meine Muttersprache ist schließlich Englisch und ich bin kein professioneller
|
||||||
Übersetzer!
|
Übersetzer!
|
||||||
Falls jemand Hilfe leisten möchte, sag gerne Bescheid!
|
Falls jemand Hilfe leisten möchte, sag gerne Bescheid!
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
import { createTextVNode, computed, defineComponent, h, inject, onServerPrefetch, ref, type VNode, watchEffect } from "vue";
|
import { createTextVNode, computed, defineComponent, h, inject, ref, type VNode } from "vue";
|
||||||
import { RouterLink } from "vue-router";
|
import { RouterLink } from "vue-router";
|
||||||
import useAsyncState from "@/useAsyncState.ts";
|
import useAsyncState from "@/useAsyncState.ts";
|
||||||
import useHead from "@/useHead.ts";
|
import useHead from "@/useHead.ts";
|
||||||
import DJEmail from "@/DJEmail.tsx";
|
import DjEmail from "@/DjEmail.tsx";
|
||||||
import getDJAPI from "@/api.ts";
|
import getDjAPI from "@/api.ts";
|
||||||
|
|
||||||
export default defineComponent({
|
export default defineComponent({
|
||||||
name: "ge-deutsch-article",
|
name: "ge-deutsch-article",
|
||||||
@@ -25,8 +25,8 @@ export default defineComponent({
|
|||||||
(innerHTML: string) => Object.assign(document.createElement("div"), { innerHTML }),
|
(innerHTML: string) => Object.assign(document.createElement("div"), { innerHTML }),
|
||||||
);
|
);
|
||||||
|
|
||||||
const { result: articleContent, stateIsReady } = useAsyncState(
|
const articleContent = useAsyncState(
|
||||||
"ge-deutsch-article-data",
|
"ge-deutsch-article-content",
|
||||||
async ({ hostUrl }) => {
|
async ({ hostUrl }) => {
|
||||||
const articleResponse = await fetch(`${hostUrl}/generative-energy/content/${props.articleName}.html`);
|
const articleResponse = await fetch(`${hostUrl}/generative-energy/content/${props.articleName}.html`);
|
||||||
const result = await articleResponse.text();
|
const result = await articleResponse.text();
|
||||||
@@ -34,15 +34,12 @@ export default defineComponent({
|
|||||||
},
|
},
|
||||||
);
|
);
|
||||||
|
|
||||||
const {
|
const articlesMetadata = useAsyncState('article-metadata', ({hostUrl}) => getDjAPI(hostUrl, '/rp-articles'));
|
||||||
result: articleData,
|
|
||||||
stateIsReady: articleDataReady,
|
|
||||||
} = useAsyncState('article-data', ({hostUrl}) => getDJAPI(hostUrl, '/rp-articles'));
|
|
||||||
|
|
||||||
const articleMetadata = computed(() => articleData.value?.find(_ => _.slug === props.articleName));
|
const articleMetadata = computed(() => articlesMetadata.result.value?.find(_ => _.slug === props.articleName));
|
||||||
|
|
||||||
useHead({
|
useHead({
|
||||||
title: () => articleMetadata.value?.title ?? '',
|
title: () => articleMetadata.value?.title ?? '',
|
||||||
metatags: () => articleMetadata.value ? [
|
metatags: () => articleMetadata.value ? [
|
||||||
{ name: 'title', content: articleMetadata.value.title },
|
{ name: 'title', content: articleMetadata.value.title },
|
||||||
{ name: 'author', content: articleMetadata.value.author },
|
{ name: 'author', content: articleMetadata.value.author },
|
||||||
@@ -92,14 +89,14 @@ export default defineComponent({
|
|||||||
}
|
}
|
||||||
|
|
||||||
function ArticleContentTransformed() {
|
function ArticleContentTransformed() {
|
||||||
if (articleContent.value) {
|
if (articleContent.result.value) {
|
||||||
const dom = parseDom(articleContent.value);
|
const dom = parseDom(articleContent.result.value);
|
||||||
return h("div", {}, [...dom.children].map((_) => transformArticleNode(_)));
|
return h("div", {}, [...dom.children].map((_) => transformArticleNode(_)));
|
||||||
}
|
}
|
||||||
return <div>Artikel lädt...</div>;
|
return <div>Artikel lädt...</div>;
|
||||||
}
|
}
|
||||||
|
|
||||||
await Promise.all([stateIsReady, articleDataReady]);
|
await Promise.all([ articleContent.done, articlesMetadata.done ]);
|
||||||
|
|
||||||
return () => (
|
return () => (
|
||||||
<div class="ge-article">
|
<div class="ge-article">
|
||||||
@@ -111,7 +108,7 @@ export default defineComponent({
|
|||||||
</div>
|
</div>
|
||||||
<p class="text-slab">
|
<p class="text-slab">
|
||||||
Bei dem untenstehenden Artikel handelt es sich um eine hobbymäßige, amateurhafte Übersetzung des
|
Bei dem untenstehenden Artikel handelt es sich um eine hobbymäßige, amateurhafte Übersetzung des
|
||||||
Artikels „{ articleMetadata.value?.titleEn }“ von Ray Peat. Bei Ungenauigkeiten oder Fehlübersetzungen freue ich mich über <DJEmail>eine Mail</DJEmail>!
|
Artikels „{ articleMetadata.value?.titleEn }“ von Ray Peat. Bei Ungenauigkeiten oder Fehlübersetzungen freue ich mich über <DjEmail>eine Mail</DjEmail>!
|
||||||
</p>
|
</p>
|
||||||
{ articleMetadata.value?.tags?.includes('in-arbeit') && <h5 class="baustelle">🚧 Bitte beachte, dass diese Übersetzung noch in Arbeit ist! 🚧</h5> }
|
{ articleMetadata.value?.tags?.includes('in-arbeit') && <h5 class="baustelle">🚧 Bitte beachte, dass diese Übersetzung noch in Arbeit ist! 🚧</h5> }
|
||||||
<hr />
|
<hr />
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import { RouterLink } from "vue-router";
|
import { RouterLink } from "vue-router";
|
||||||
import useHead from "@/useHead.ts";
|
import useHead from "@/useHead.ts";
|
||||||
import DJTooltip from "@/DJTooltip.tsx";
|
import DjTooltip from "@/DjTooltip.tsx";
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: "ge-main",
|
name: "ge-main",
|
||||||
@@ -21,14 +21,14 @@ export default {
|
|||||||
<div class="text-slab">
|
<div class="text-slab">
|
||||||
<ul>
|
<ul>
|
||||||
<li>
|
<li>
|
||||||
<DJTooltip tooltip="Convert to and from grains, set ratios, etc.">
|
<DjTooltip tooltip="Convert to and from grains, set ratios, etc.">
|
||||||
<RouterLink to={{ name: "GECalculator" }}>Thyroid Calculator</RouterLink>
|
<RouterLink to={{ name: "GECalculator" }}>Thyroid Calculator</RouterLink>
|
||||||
</DJTooltip>
|
</DjTooltip>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<DJTooltip tooltip="A selection of articles by Ray that I have translated in my spare time into German.">
|
<DjTooltip tooltip="A selection of articles by Ray that I have translated in my spare time into German.">
|
||||||
<RouterLink to={{ name: "GEDeutsch" }}>Ray Peat Articles in German</RouterLink>
|
<RouterLink to={{ name: "GEDeutsch" }}>Ray Peat Articles in German</RouterLink>
|
||||||
</DJTooltip>
|
</DjTooltip>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
@@ -36,14 +36,14 @@ export default {
|
|||||||
<div class="text-slab">
|
<div class="text-slab">
|
||||||
<ul>
|
<ul>
|
||||||
<li>
|
<li>
|
||||||
<DJTooltip tooltip="Full text search of the majority of Ray's interviews. Extremely helpful and fun to use.">
|
<DjTooltip tooltip="Full text search of the majority of Ray's interviews. Extremely helpful and fun to use.">
|
||||||
<a href="https://bioenergeic.life">bioenergetic.life - A Ray Peat Search Engine</a>
|
<a href="https://bioenergeic.life">bioenergetic.life - A Ray Peat Search Engine</a>
|
||||||
</DJTooltip>
|
</DjTooltip>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<DJTooltip tooltip="Ray's original website with articles and bookstore">
|
<DjTooltip tooltip="Ray's original website with articles and bookstore">
|
||||||
<a href="https://raypeat.com">raypeat.com</a>
|
<a href="https://raypeat.com">raypeat.com</a>
|
||||||
</DJTooltip>
|
</DjTooltip>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -1,12 +1,12 @@
|
|||||||
import { defineComponent, ref, Suspense, type VNode } from "vue";
|
import { defineComponent, ref, Suspense, type VNode } from "vue";
|
||||||
import { type RouteRecordRaw, RouterLink, RouterView, useRoute } from "vue-router";
|
import { type RouteRecordRaw, RouterLink, RouterView, useRoute } from "vue-router";
|
||||||
import GEMain from "@/generative-energy/GEMain.tsx";
|
import GEMain from "@/generative-energy/GEMain.tsx";
|
||||||
import DJEmail from "@/DJEmail.tsx";
|
import DjEmail from "@/DjEmail.tsx";
|
||||||
import GEDeutsch from "@/generative-energy/GEDeutsch.tsx";
|
import GEDeutsch from "@/generative-energy/GEDeutsch.tsx";
|
||||||
import GEDeutschArticle from "@/generative-energy/GEDeutschArticle.tsx";
|
import GEDeutschArticle from "@/generative-energy/GEDeutschArticle.tsx";
|
||||||
import GECalculator from "@/generative-energy/GECalculator.tsx";
|
import GECalculator from "@/generative-energy/GECalculator.tsx";
|
||||||
import DJDonate from "@/DJDonate.tsx";
|
import DjDonate from "@/DjDonate.tsx";
|
||||||
import { setupTooltip } from "@/DJTooltip.tsx";
|
import { setupTooltip } from "@/DjTooltip.tsx";
|
||||||
|
|
||||||
export const routes: RouteRecordRaw[] = [
|
export const routes: RouteRecordRaw[] = [
|
||||||
{
|
{
|
||||||
@@ -67,9 +67,9 @@ export default defineComponent({
|
|||||||
<footer>
|
<footer>
|
||||||
<div class="bottom">
|
<div class="bottom">
|
||||||
<div>
|
<div>
|
||||||
<a href="/">djledda.net</a> {new Date().getFullYear()} - <DJEmail>{() => "Contact"}</DJEmail>
|
<a href="/">djledda.net</a> {new Date().getFullYear()} - <DjEmail>{() => "Contact"}</DjEmail>
|
||||||
</div>
|
</div>
|
||||||
<DJDonate />
|
<DjDonate />
|
||||||
</div>
|
</div>
|
||||||
</footer>
|
</footer>
|
||||||
</main>
|
</main>
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
import { defineComponent, computed, ref, type Ref } from "vue";
|
import { defineComponent, computed, ref, type Ref } from "vue";
|
||||||
import useHead from "@/useHead.ts";
|
import useHead from "@/useHead.ts";
|
||||||
import DJTooltip, { setupTooltip } from "@/DJTooltip.tsx";
|
import DjTooltip, { setupTooltip } from "@/DjTooltip.tsx";
|
||||||
import DJEmail from "@/DJEmail.tsx";
|
import DjEmail from "@/DjEmail.tsx";
|
||||||
|
|
||||||
export default defineComponent({
|
export default defineComponent({
|
||||||
name: "app-root",
|
name: "app-root",
|
||||||
@@ -33,64 +33,64 @@ export default defineComponent({
|
|||||||
<div class="supercontainer">
|
<div class="supercontainer">
|
||||||
<div class={{ shakeable: true, shakeMe: shaking.value }}>
|
<div class={{ shakeable: true, shakeMe: shaking.value }}>
|
||||||
<div class="title_name">
|
<div class="title_name">
|
||||||
<DJTooltip tooltip="I wonder what he's listening to?">
|
<DjTooltip tooltip="I wonder what he's listening to?">
|
||||||
<img src="/home/img/dj.gif" alt="dj legt krasse Mucke auf"
|
<img src="/home/img/dj.gif" alt="dj legt krasse Mucke auf"
|
||||||
class={{ dude: true, spinMe: dude1Spinning.value }}
|
class={{ dude: true, spinMe: dude1Spinning.value }}
|
||||||
onClick={ (e) => toggleDude(e, dude1Spinning)} />
|
onClick={ (e) => toggleDude(e, dude1Spinning)} />
|
||||||
</DJTooltip>
|
</DjTooltip>
|
||||||
<DJTooltip tooltip="Easily the coolest guy out there.">
|
<DjTooltip tooltip="Easily the coolest guy out there.">
|
||||||
<span>DJ Ledda</span>
|
<span>DJ Ledda</span>
|
||||||
</DJTooltip>
|
</DjTooltip>
|
||||||
<DJTooltip tooltip="I once heard this guy played at revs.">
|
<DjTooltip tooltip="I once heard this guy played at revs.">
|
||||||
<img src="/home/img/dj.gif" alt="dj laying down some sick beats"
|
<img src="/home/img/dj.gif" alt="dj laying down some sick beats"
|
||||||
class={{ dude: true, spinMe: dude2Spinning.value }}
|
class={{ dude: true, spinMe: dude2Spinning.value }}
|
||||||
onClick={ (e) => toggleDude(e, dude2Spinning) } />
|
onClick={ (e) => toggleDude(e, dude2Spinning) } />
|
||||||
</DJTooltip>
|
</DjTooltip>
|
||||||
</div>
|
</div>
|
||||||
<div class="main">
|
<div class="main">
|
||||||
<div class="subject">
|
<div class="subject">
|
||||||
<div class="resourcelist">
|
<div class="resourcelist">
|
||||||
<a href="https://drum-slayer.com">
|
<a href="https://drum-slayer.com">
|
||||||
<DJTooltip class="resource" tooltip="Small app for designing multitrack looped rhythms with local save and multiple files. Originally built using just vanilla TypeScript and CSS, now with Vue.">
|
<DjTooltip class="resource" tooltip="Small app for designing multitrack looped rhythms with local save and multiple files. Originally built using just vanilla TypeScript and CSS, now with Vue.">
|
||||||
Drum Slayer
|
Drum Slayer
|
||||||
</DJTooltip>
|
</DjTooltip>
|
||||||
</a>
|
</a>
|
||||||
<a href="/somaesque/index.html">
|
<a href="/somaesque/index.html">
|
||||||
<DJTooltip class="resource" tooltip="Puzzle solver app for puzzle cubes resembling the original Soma Cube puzzle. Save and edit your own puzzles! Built with Svelte, THREE.js and AssemblyScript.">
|
<DjTooltip class="resource" tooltip="Puzzle solver app for puzzle cubes resembling the original Soma Cube puzzle. Save and edit your own puzzles! Built with Svelte, THREE.js and AssemblyScript.">
|
||||||
Somaesque
|
Somaesque
|
||||||
</DJTooltip>
|
</DjTooltip>
|
||||||
</a>
|
</a>
|
||||||
<a href="/generative-energy">
|
<a href="/generative-energy">
|
||||||
<DJTooltip class="resource" tooltip="Thyroid calculator, German translations, and more...">
|
<DjTooltip class="resource" tooltip="Thyroid calculator, German translations, and more...">
|
||||||
Generative Energy - Ray Peat Resources
|
Generative Energy - Ray Peat Resources
|
||||||
</DJTooltip>
|
</DjTooltip>
|
||||||
</a>
|
</a>
|
||||||
<a href="/home/muenchen-auf-englisch.html">
|
<a href="/home/muenchen-auf-englisch.html">
|
||||||
<DJTooltip class="resource" tooltip="
|
<DjTooltip class="resource" tooltip="
|
||||||
Authentic historically accurate translations of all of Munich's S-Bahn and U-Bahn
|
Authentic historically accurate translations of all of Munich's S-Bahn and U-Bahn
|
||||||
stations, as well as the main municipalities, into English. You live in Allach? It's
|
stations, as well as the main municipalities, into English. You live in Allach? It's
|
||||||
Axleigh now. Giesing? Nope! Kyesing! This is a WIP.
|
Axleigh now. Giesing? Nope! Kyesing! This is a WIP.
|
||||||
">
|
">
|
||||||
München auf Englisch - Munich in English
|
München auf Englisch - Munich in English
|
||||||
</DJTooltip>
|
</DjTooltip>
|
||||||
</a>
|
</a>
|
||||||
<a href="/kadi/">
|
<a href="/kadi/">
|
||||||
<DJTooltip class="resource" tooltip="Make an account and start saving paper and tracking your Yatzy stats with your
|
<DjTooltip class="resource" tooltip="Make an account and start saving paper and tracking your Yatzy stats with your
|
||||||
friends! Make your own rulesets, and more. Built with React, express.js, and
|
friends! Make your own rulesets, and more. Built with React, express.js, and
|
||||||
MongoDB. Currently inactive.">
|
MongoDB. Currently inactive.">
|
||||||
K A D I: Online Yatzy Scoresheets
|
K A D I: Online Yatzy Scoresheets
|
||||||
</DJTooltip>
|
</DjTooltip>
|
||||||
</a>
|
</a>
|
||||||
<a href="https://git.djledda.net/Ledda">
|
<a href="https://git.djledda.net/Ledda">
|
||||||
<DJTooltip class="resource" tooltip="Check out what I'm coding!">
|
<DjTooltip class="resource" tooltip="Check out what I'm coding!">
|
||||||
My git projects
|
My git projects
|
||||||
</DJTooltip>
|
</DjTooltip>
|
||||||
</a>
|
</a>
|
||||||
<DJEmail>
|
<DjEmail>
|
||||||
<DJTooltip class="resource" tooltip="You'll see my address when you click here.">
|
<DjTooltip class="resource" tooltip="You'll see my address when you click here.">
|
||||||
Click here to get in touch
|
Click here to get in touch
|
||||||
</DJTooltip>
|
</DjTooltip>
|
||||||
</DJEmail>
|
</DjEmail>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
import { createSSRApp } from "vue";
|
import { createSSRApp } from "vue";
|
||||||
import DJHomeRoot from "@/home/DJHomeRoot.tsx";
|
import DjHomeRoot from "@/home/DjHomeRoot.tsx";
|
||||||
import { cssRegistry } from "@/util.ts";
|
import { cssRegistry } from "@/util.ts";
|
||||||
|
|
||||||
createSSRApp(DJHomeRoot)
|
createSSRApp(DjHomeRoot)
|
||||||
.provide(cssRegistry, new Set())
|
.provide(cssRegistry, new Set())
|
||||||
.mount("#app-root");
|
.mount("#app-root");
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
import { createSSRApp } from "vue";
|
import { createSSRApp } from "vue";
|
||||||
import DJHomeRoot from "@/home/DJHomeRoot.tsx";
|
import DjHomeRoot from "@/home/DjHomeRoot.tsx";
|
||||||
|
|
||||||
export default function createApp() {
|
export default function createApp() {
|
||||||
const app = createSSRApp(DJHomeRoot);
|
const app = createSSRApp(DjHomeRoot);
|
||||||
return { app, router: null };
|
return { app, router: null };
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,8 +1,7 @@
|
|||||||
import { onMounted, onServerPrefetch, type ShallowRef, shallowRef } from "vue";
|
import { onMounted, onServerPrefetch, type ShallowRef, shallowRef } from "vue";
|
||||||
import useDJSSRContext from "@/useDJSSRContext.ts";
|
import useDjSSRContext from "@/useDjSSRContext.ts";
|
||||||
|
|
||||||
declare global {
|
declare global {
|
||||||
// deno-lint-ignore no-var
|
|
||||||
var appstate: Partial<Record<string, unknown>>;
|
var appstate: Partial<Record<string, unknown>>;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -10,8 +9,8 @@ export default function useAsyncState<T>(
|
|||||||
key: string,
|
key: string,
|
||||||
getter: (context: { hostUrl: string }) => Promise<T | null>,
|
getter: (context: { hostUrl: string }) => Promise<T | null>,
|
||||||
options?: { suspensible: boolean },
|
options?: { suspensible: boolean },
|
||||||
): { result: ShallowRef<T | null>; stateIsReady: Promise<unknown> } {
|
): { result: ShallowRef<T | null>; done: Promise<void> } {
|
||||||
const ssrContext = useDJSSRContext();
|
const ssrContext = useDjSSRContext();
|
||||||
const isClient = typeof ssrContext === "undefined";
|
const isClient = typeof ssrContext === "undefined";
|
||||||
|
|
||||||
const registry = ssrContext?.registry ?? globalThis?.appstate;
|
const registry = ssrContext?.registry ?? globalThis?.appstate;
|
||||||
@@ -51,5 +50,5 @@ export default function useAsyncState<T>(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return { result: state, stateIsReady: promise };
|
return { result: state, done: promise };
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import { type MaybeRefOrGetter, useSSRContext } from "vue";
|
import { type MaybeRefOrGetter, useSSRContext } from "vue";
|
||||||
|
|
||||||
export type DJSSRContext = {
|
export type DjSSRContext = {
|
||||||
head: {
|
head: {
|
||||||
title: MaybeRefOrGetter<string>;
|
title: MaybeRefOrGetter<string>;
|
||||||
metatags: MaybeRefOrGetter<Array<{ name: string, content: string }>>;
|
metatags: MaybeRefOrGetter<Array<{ name: string, content: string }>>;
|
||||||
@@ -9,6 +9,6 @@ export type DJSSRContext = {
|
|||||||
styles: Record<string, string>;
|
styles: Record<string, string>;
|
||||||
};
|
};
|
||||||
|
|
||||||
export default function useDJSSRContext() {
|
export default function useDjSSRContext() {
|
||||||
return useSSRContext<DJSSRContext>();
|
return useSSRContext<DjSSRContext>();
|
||||||
}
|
}
|
||||||
@@ -1,12 +1,12 @@
|
|||||||
import { watch, toValue, type MaybeRefOrGetter } from 'vue';
|
import { watch, toValue, type MaybeRefOrGetter } from 'vue';
|
||||||
import useDJSSRContext from "@/useDJSSRContext.ts";
|
import useDjSSRContext from "@/useDjSSRContext.ts";
|
||||||
import { h } from "@/util.ts";
|
import { h } from "@/util.ts";
|
||||||
|
|
||||||
export default function useHead(params: {
|
export default function useHead(params: {
|
||||||
title: MaybeRefOrGetter<string>,
|
title: MaybeRefOrGetter<string>,
|
||||||
metatags?: MaybeRefOrGetter<Array<{ name: string, content: string }>>
|
metatags?: MaybeRefOrGetter<Array<{ name: string, content: string }>>
|
||||||
}) {
|
}) {
|
||||||
const context = useDJSSRContext();
|
const context = useDjSSRContext();
|
||||||
|
|
||||||
if (context) {
|
if (context) {
|
||||||
context.head.title = params.title;
|
context.head.title = params.title;
|
||||||
|
|||||||
22
app/util.ts
22
app/util.ts
@@ -1,5 +1,5 @@
|
|||||||
import { type InjectionKey, inject } from 'vue';
|
import { type InjectionKey, inject } from 'vue';
|
||||||
import useDJSSRContext from "@/useDJSSRContext.ts";
|
import useDjSSRContext from "@/useDjSSRContext.ts";
|
||||||
|
|
||||||
export function gid(id: string, doc: (Document | ShadowRoot) | undefined) {
|
export function gid(id: string, doc: (Document | ShadowRoot) | undefined) {
|
||||||
return ((doc ?? document).getElementById(id));
|
return ((doc ?? document).getElementById(id));
|
||||||
@@ -46,7 +46,7 @@ export function css(strs: TemplateStringsArray, ...vals: string[]) {
|
|||||||
|
|
||||||
export const cssRegistry = Symbol('css-registry') as InjectionKey<Set<string>>;
|
export const cssRegistry = Symbol('css-registry') as InjectionKey<Set<string>>;
|
||||||
export function addCSS(key: string, css: string) {
|
export function addCSS(key: string, css: string) {
|
||||||
const context = useDJSSRContext();
|
const context = useDjSSRContext();
|
||||||
if (context && !context.styles[key]) {
|
if (context && !context.styles[key]) {
|
||||||
context.styles[key] = css;
|
context.styles[key] = css;
|
||||||
} else {
|
} else {
|
||||||
@@ -58,21 +58,3 @@ export function addCSS(key: string, css: string) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
export class DJElement extends HTMLElement {
|
|
||||||
static styles: CSSStyleSheet;
|
|
||||||
|
|
||||||
static template: HTMLTemplateElement;
|
|
||||||
|
|
||||||
root: ShadowRoot;
|
|
||||||
|
|
||||||
constructor() {
|
|
||||||
super();
|
|
||||||
const statics = this.constructor as typeof DJElement;
|
|
||||||
this.root = this.attachShadow({ mode: "open" });
|
|
||||||
this.root.appendChild(statics.template.content.cloneNode(true));
|
|
||||||
this.root.adoptedStyleSheets = statics.styles ? [statics.styles] : [];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
|
|||||||
@@ -9,7 +9,12 @@
|
|||||||
"indentWidth": 4
|
"indentWidth": 4
|
||||||
},
|
},
|
||||||
"imports": {
|
"imports": {
|
||||||
"vue": "npm:vue@^3.5.12",
|
"@b-fuze/deno-dom": "jsr:@b-fuze/deno-dom@^0.1.56",
|
||||||
|
"@deno/emit": "jsr:@deno/emit@^0.46.0",
|
||||||
|
"@std/fs": "jsr:@std/fs@^1.0.20",
|
||||||
|
"@std/http": "jsr:@std/http@^1.0.22",
|
||||||
|
"@std/path": "jsr:@std/path@^1.1.3",
|
||||||
|
"vue": "npm:vue@^3.5.26",
|
||||||
"vue-router": "npm:vue-router@4.4.5",
|
"vue-router": "npm:vue-router@4.4.5",
|
||||||
"vue/jsx-runtime": "npm:vue/jsx-runtime",
|
"vue/jsx-runtime": "npm:vue/jsx-runtime",
|
||||||
"@vue/devtools-api": "npm:@vue/devtools-api",
|
"@vue/devtools-api": "npm:@vue/devtools-api",
|
||||||
|
|||||||
408
deno.lock
generated
408
deno.lock
generated
@@ -1,36 +1,60 @@
|
|||||||
{
|
{
|
||||||
"version": "4",
|
"version": "5",
|
||||||
"specifiers": {
|
"specifiers": {
|
||||||
"jsr:@b-fuze/deno-dom@*": "0.1.48",
|
"jsr:@b-fuze/deno-dom@*": "0.1.48",
|
||||||
|
"jsr:@b-fuze/deno-dom@~0.1.56": "0.1.56",
|
||||||
"jsr:@deno/cache-dir@0.13.2": "0.13.2",
|
"jsr:@deno/cache-dir@0.13.2": "0.13.2",
|
||||||
"jsr:@deno/emit@*": "0.46.0",
|
"jsr:@deno/emit@*": "0.46.0",
|
||||||
|
"jsr:@deno/emit@0.46": "0.46.0",
|
||||||
"jsr:@deno/graph@~0.73.1": "0.73.1",
|
"jsr:@deno/graph@~0.73.1": "0.73.1",
|
||||||
|
"jsr:@denosaurs/plug@1.1.0": "1.1.0",
|
||||||
"jsr:@std/assert@0.223": "0.223.0",
|
"jsr:@std/assert@0.223": "0.223.0",
|
||||||
"jsr:@std/bytes@0.223": "0.223.0",
|
"jsr:@std/bytes@0.223": "0.223.0",
|
||||||
|
"jsr:@std/cli@^1.0.24": "1.0.24",
|
||||||
"jsr:@std/cli@^1.0.6": "1.0.6",
|
"jsr:@std/cli@^1.0.6": "1.0.6",
|
||||||
|
"jsr:@std/encoding@1": "1.0.10",
|
||||||
|
"jsr:@std/encoding@^1.0.10": "1.0.10",
|
||||||
"jsr:@std/encoding@^1.0.5": "1.0.5",
|
"jsr:@std/encoding@^1.0.5": "1.0.5",
|
||||||
"jsr:@std/fmt@0.223": "0.223.0",
|
"jsr:@std/fmt@0.223": "0.223.0",
|
||||||
|
"jsr:@std/fmt@1": "1.0.8",
|
||||||
"jsr:@std/fmt@^1.0.3": "1.0.3",
|
"jsr:@std/fmt@^1.0.3": "1.0.3",
|
||||||
|
"jsr:@std/fmt@^1.0.8": "1.0.8",
|
||||||
"jsr:@std/fs@*": "0.223.0",
|
"jsr:@std/fs@*": "0.223.0",
|
||||||
"jsr:@std/fs@0.223": "0.223.0",
|
"jsr:@std/fs@0.223": "0.223.0",
|
||||||
|
"jsr:@std/fs@1": "1.0.20",
|
||||||
|
"jsr:@std/fs@^1.0.20": "1.0.20",
|
||||||
|
"jsr:@std/html@^1.0.5": "1.0.5",
|
||||||
"jsr:@std/http@*": "1.0.9",
|
"jsr:@std/http@*": "1.0.9",
|
||||||
|
"jsr:@std/http@^1.0.22": "1.0.22",
|
||||||
|
"jsr:@std/internal@^1.0.12": "1.0.12",
|
||||||
"jsr:@std/io@0.223": "0.223.0",
|
"jsr:@std/io@0.223": "0.223.0",
|
||||||
"jsr:@std/media-types@^1.0.3": "1.0.3",
|
"jsr:@std/media-types@^1.0.3": "1.0.3",
|
||||||
|
"jsr:@std/media-types@^1.1.0": "1.1.0",
|
||||||
"jsr:@std/net@^1.0.4": "1.0.4",
|
"jsr:@std/net@^1.0.4": "1.0.4",
|
||||||
|
"jsr:@std/net@^1.0.6": "1.0.6",
|
||||||
"jsr:@std/path@*": "1.0.7",
|
"jsr:@std/path@*": "1.0.7",
|
||||||
"jsr:@std/path@0.223": "0.223.0",
|
"jsr:@std/path@0.223": "0.223.0",
|
||||||
|
"jsr:@std/path@1": "1.1.3",
|
||||||
"jsr:@std/path@^1.0.7": "1.0.7",
|
"jsr:@std/path@^1.0.7": "1.0.7",
|
||||||
|
"jsr:@std/path@^1.1.3": "1.1.3",
|
||||||
|
"jsr:@std/streams@^1.0.14": "1.0.14",
|
||||||
"jsr:@std/streams@^1.0.7": "1.0.7",
|
"jsr:@std/streams@^1.0.7": "1.0.7",
|
||||||
"npm:@types/node@*": "22.5.4",
|
"npm:@types/node@*": "22.5.4",
|
||||||
"npm:@vue/devtools-api@*": "6.6.4",
|
"npm:@vue/devtools-api@*": "6.6.4",
|
||||||
"npm:vue-router@4.4.5": "4.4.5_vue@3.5.12",
|
"npm:vue-router@4.4.5": "4.4.5_vue@3.5.12",
|
||||||
"npm:vue@*": "3.5.12",
|
"npm:vue@*": "3.5.26",
|
||||||
"npm:vue@^3.5.12": "3.5.12"
|
"npm:vue@^3.5.26": "3.5.26"
|
||||||
},
|
},
|
||||||
"jsr": {
|
"jsr": {
|
||||||
"@b-fuze/deno-dom@0.1.48": {
|
"@b-fuze/deno-dom@0.1.48": {
|
||||||
"integrity": "bf5b591aef2e9e9c59adfcbb93a9ecd45bab5b7c8263625beafa5c8f1662e7da"
|
"integrity": "bf5b591aef2e9e9c59adfcbb93a9ecd45bab5b7c8263625beafa5c8f1662e7da"
|
||||||
},
|
},
|
||||||
|
"@b-fuze/deno-dom@0.1.56": {
|
||||||
|
"integrity": "8030e2dc1d8750f1682b53462ab893d9c3470f2287feecbe22f44a88c54ab148",
|
||||||
|
"dependencies": [
|
||||||
|
"jsr:@denosaurs/plug"
|
||||||
|
]
|
||||||
|
},
|
||||||
"@deno/cache-dir@0.13.2": {
|
"@deno/cache-dir@0.13.2": {
|
||||||
"integrity": "c22419dfe27ab85f345bee487aaaadba498b005cce3644e9d2528db035c5454d",
|
"integrity": "c22419dfe27ab85f345bee487aaaadba498b005cce3644e9d2528db035c5454d",
|
||||||
"dependencies": [
|
"dependencies": [
|
||||||
@@ -51,6 +75,15 @@
|
|||||||
"@deno/graph@0.73.1": {
|
"@deno/graph@0.73.1": {
|
||||||
"integrity": "cd69639d2709d479037d5ce191a422eabe8d71bb68b0098344f6b07411c84d41"
|
"integrity": "cd69639d2709d479037d5ce191a422eabe8d71bb68b0098344f6b07411c84d41"
|
||||||
},
|
},
|
||||||
|
"@denosaurs/plug@1.1.0": {
|
||||||
|
"integrity": "eb2f0b7546c7bca2000d8b0282c54d50d91cf6d75cb26a80df25a6de8c4bc044",
|
||||||
|
"dependencies": [
|
||||||
|
"jsr:@std/encoding@1",
|
||||||
|
"jsr:@std/fmt@1",
|
||||||
|
"jsr:@std/fs@1",
|
||||||
|
"jsr:@std/path@1"
|
||||||
|
]
|
||||||
|
},
|
||||||
"@std/assert@0.223.0": {
|
"@std/assert@0.223.0": {
|
||||||
"integrity": "eb8d6d879d76e1cc431205bd346ed4d88dc051c6366365b1af47034b0670be24"
|
"integrity": "eb8d6d879d76e1cc431205bd346ed4d88dc051c6366365b1af47034b0670be24"
|
||||||
},
|
},
|
||||||
@@ -60,15 +93,24 @@
|
|||||||
"@std/cli@1.0.6": {
|
"@std/cli@1.0.6": {
|
||||||
"integrity": "d22d8b38c66c666d7ad1f2a66c5b122da1704f985d3c47f01129f05abb6c5d3d"
|
"integrity": "d22d8b38c66c666d7ad1f2a66c5b122da1704f985d3c47f01129f05abb6c5d3d"
|
||||||
},
|
},
|
||||||
|
"@std/cli@1.0.24": {
|
||||||
|
"integrity": "b655a5beb26aa94f98add6bc8889f5fb9bc3ee2cc3fc954e151201f4c4200a5e"
|
||||||
|
},
|
||||||
"@std/encoding@1.0.5": {
|
"@std/encoding@1.0.5": {
|
||||||
"integrity": "ecf363d4fc25bd85bd915ff6733a7e79b67e0e7806334af15f4645c569fefc04"
|
"integrity": "ecf363d4fc25bd85bd915ff6733a7e79b67e0e7806334af15f4645c569fefc04"
|
||||||
},
|
},
|
||||||
|
"@std/encoding@1.0.10": {
|
||||||
|
"integrity": "8783c6384a2d13abd5e9e87a7ae0520a30e9f56aeeaa3bdf910a3eaaf5c811a1"
|
||||||
|
},
|
||||||
"@std/fmt@0.223.0": {
|
"@std/fmt@0.223.0": {
|
||||||
"integrity": "6deb37794127dfc7d7bded2586b9fc6f5d50e62a8134846608baf71ffc1a5208"
|
"integrity": "6deb37794127dfc7d7bded2586b9fc6f5d50e62a8134846608baf71ffc1a5208"
|
||||||
},
|
},
|
||||||
"@std/fmt@1.0.3": {
|
"@std/fmt@1.0.3": {
|
||||||
"integrity": "97765c16aa32245ff4e2204ecf7d8562496a3cb8592340a80e7e554e0bb9149f"
|
"integrity": "97765c16aa32245ff4e2204ecf7d8562496a3cb8592340a80e7e554e0bb9149f"
|
||||||
},
|
},
|
||||||
|
"@std/fmt@1.0.8": {
|
||||||
|
"integrity": "71e1fc498787e4434d213647a6e43e794af4fd393ef8f52062246e06f7e372b7"
|
||||||
|
},
|
||||||
"@std/fs@0.223.0": {
|
"@std/fs@0.223.0": {
|
||||||
"integrity": "3b4b0550b2c524cbaaa5a9170c90e96cbb7354e837ad1bdaf15fc9df1ae9c31c",
|
"integrity": "3b4b0550b2c524cbaaa5a9170c90e96cbb7354e837ad1bdaf15fc9df1ae9c31c",
|
||||||
"dependencies": [
|
"dependencies": [
|
||||||
@@ -76,18 +118,45 @@
|
|||||||
"jsr:@std/path@0.223"
|
"jsr:@std/path@0.223"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
"@std/fs@1.0.20": {
|
||||||
|
"integrity": "e953206aae48d46ee65e8783ded459f23bec7dd1f3879512911c35e5484ea187",
|
||||||
|
"dependencies": [
|
||||||
|
"jsr:@std/internal",
|
||||||
|
"jsr:@std/path@^1.1.3"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"@std/html@1.0.5": {
|
||||||
|
"integrity": "4e2d693f474cae8c16a920fa5e15a3b72267b94b84667f11a50c6dd1cb18d35e"
|
||||||
|
},
|
||||||
"@std/http@1.0.9": {
|
"@std/http@1.0.9": {
|
||||||
"integrity": "d409fc319a5e8d4a154e576c758752e9700282d74f31357a12fec6420f9ecb6c",
|
"integrity": "d409fc319a5e8d4a154e576c758752e9700282d74f31357a12fec6420f9ecb6c",
|
||||||
"dependencies": [
|
"dependencies": [
|
||||||
"jsr:@std/cli",
|
"jsr:@std/cli@^1.0.6",
|
||||||
"jsr:@std/encoding",
|
"jsr:@std/encoding@^1.0.5",
|
||||||
"jsr:@std/fmt@^1.0.3",
|
"jsr:@std/fmt@^1.0.3",
|
||||||
"jsr:@std/media-types",
|
"jsr:@std/media-types@^1.0.3",
|
||||||
"jsr:@std/net",
|
"jsr:@std/net@^1.0.4",
|
||||||
"jsr:@std/path@^1.0.7",
|
"jsr:@std/path@^1.0.7",
|
||||||
"jsr:@std/streams"
|
"jsr:@std/streams@^1.0.7"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
"@std/http@1.0.22": {
|
||||||
|
"integrity": "53f0bb70e23a2eec3e17c4240a85bb23d185b2e20635adb37ce0f03cc4ca012a",
|
||||||
|
"dependencies": [
|
||||||
|
"jsr:@std/cli@^1.0.24",
|
||||||
|
"jsr:@std/encoding@^1.0.10",
|
||||||
|
"jsr:@std/fmt@^1.0.8",
|
||||||
|
"jsr:@std/fs@^1.0.20",
|
||||||
|
"jsr:@std/html",
|
||||||
|
"jsr:@std/media-types@^1.1.0",
|
||||||
|
"jsr:@std/net@^1.0.6",
|
||||||
|
"jsr:@std/path@^1.1.3",
|
||||||
|
"jsr:@std/streams@^1.0.14"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"@std/internal@1.0.12": {
|
||||||
|
"integrity": "972a634fd5bc34b242024402972cd5143eac68d8dffaca5eaa4dba30ce17b027"
|
||||||
|
},
|
||||||
"@std/io@0.223.0": {
|
"@std/io@0.223.0": {
|
||||||
"integrity": "2d8c3c2ab3a515619b90da2c6ff5ea7b75a94383259ef4d02116b228393f84f1",
|
"integrity": "2d8c3c2ab3a515619b90da2c6ff5ea7b75a94383259ef4d02116b228393f84f1",
|
||||||
"dependencies": [
|
"dependencies": [
|
||||||
@@ -98,9 +167,15 @@
|
|||||||
"@std/media-types@1.0.3": {
|
"@std/media-types@1.0.3": {
|
||||||
"integrity": "b12d30a7852f7578f4d210622df713bbfd1cbdd9b4ec2eaf5c1845ab70bab159"
|
"integrity": "b12d30a7852f7578f4d210622df713bbfd1cbdd9b4ec2eaf5c1845ab70bab159"
|
||||||
},
|
},
|
||||||
|
"@std/media-types@1.1.0": {
|
||||||
|
"integrity": "c9d093f0c05c3512932b330e3cc1fe1d627b301db33a4c2c2185c02471d6eaa4"
|
||||||
|
},
|
||||||
"@std/net@1.0.4": {
|
"@std/net@1.0.4": {
|
||||||
"integrity": "2f403b455ebbccf83d8a027d29c5a9e3a2452fea39bb2da7f2c04af09c8bc852"
|
"integrity": "2f403b455ebbccf83d8a027d29c5a9e3a2452fea39bb2da7f2c04af09c8bc852"
|
||||||
},
|
},
|
||||||
|
"@std/net@1.0.6": {
|
||||||
|
"integrity": "110735f93e95bb9feb95790a8b1d1bf69ec0dc74f3f97a00a76ea5efea25500c"
|
||||||
|
},
|
||||||
"@std/path@0.223.0": {
|
"@std/path@0.223.0": {
|
||||||
"integrity": "593963402d7e6597f5a6e620931661053572c982fc014000459edc1f93cc3989",
|
"integrity": "593963402d7e6597f5a6e620931661053572c982fc014000459edc1f93cc3989",
|
||||||
"dependencies": [
|
"dependencies": [
|
||||||
@@ -110,172 +185,363 @@
|
|||||||
"@std/path@1.0.7": {
|
"@std/path@1.0.7": {
|
||||||
"integrity": "76a689e07f0e15dcc6002ec39d0866797e7156629212b28f27179b8a5c3b33a1"
|
"integrity": "76a689e07f0e15dcc6002ec39d0866797e7156629212b28f27179b8a5c3b33a1"
|
||||||
},
|
},
|
||||||
|
"@std/path@1.1.3": {
|
||||||
|
"integrity": "b015962d82a5e6daea980c32b82d2c40142149639968549c649031a230b1afb3",
|
||||||
|
"dependencies": [
|
||||||
|
"jsr:@std/internal"
|
||||||
|
]
|
||||||
|
},
|
||||||
"@std/streams@1.0.7": {
|
"@std/streams@1.0.7": {
|
||||||
"integrity": "1a93917ca0c58c01b2bfb93647189229b1702677f169b6fb61ad6241cd2e499b"
|
"integrity": "1a93917ca0c58c01b2bfb93647189229b1702677f169b6fb61ad6241cd2e499b"
|
||||||
|
},
|
||||||
|
"@std/streams@1.0.14": {
|
||||||
|
"integrity": "c0df6cdd73bd4bbcbe4baa89e323b88418c90ceb2d926f95aa99bdcdbfca2411"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"npm": {
|
"npm": {
|
||||||
"@babel/helper-string-parser@7.25.9": {
|
"@babel/helper-string-parser@7.25.9": {
|
||||||
"integrity": "sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA=="
|
"integrity": "sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==",
|
||||||
|
"tarball": "http://npm.srv.dc1.boerse-go.de:4873/@babel%2fhelper-string-parser/-/helper-string-parser-7.25.9.tgz"
|
||||||
|
},
|
||||||
|
"@babel/helper-string-parser@7.27.1": {
|
||||||
|
"integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==",
|
||||||
|
"tarball": "http://npm.srv.dc1.boerse-go.de:4873/@babel%2fhelper-string-parser/-/helper-string-parser-7.27.1.tgz"
|
||||||
},
|
},
|
||||||
"@babel/helper-validator-identifier@7.25.9": {
|
"@babel/helper-validator-identifier@7.25.9": {
|
||||||
"integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ=="
|
"integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==",
|
||||||
|
"tarball": "http://npm.srv.dc1.boerse-go.de:4873/@babel%2fhelper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz"
|
||||||
|
},
|
||||||
|
"@babel/helper-validator-identifier@7.28.5": {
|
||||||
|
"integrity": "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==",
|
||||||
|
"tarball": "http://npm.srv.dc1.boerse-go.de:4873/@babel%2fhelper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz"
|
||||||
},
|
},
|
||||||
"@babel/parser@7.26.2": {
|
"@babel/parser@7.26.2": {
|
||||||
"integrity": "sha512-DWMCZH9WA4Maitz2q21SRKHo9QXZxkDsbNZoVD62gusNtNBBqDg9i7uOhASfTfIGNzW+O+r7+jAlM8dwphcJKQ==",
|
"integrity": "sha512-DWMCZH9WA4Maitz2q21SRKHo9QXZxkDsbNZoVD62gusNtNBBqDg9i7uOhASfTfIGNzW+O+r7+jAlM8dwphcJKQ==",
|
||||||
"dependencies": [
|
"dependencies": [
|
||||||
"@babel/types"
|
"@babel/types@7.26.0"
|
||||||
]
|
],
|
||||||
|
"bin": true,
|
||||||
|
"tarball": "http://npm.srv.dc1.boerse-go.de:4873/@babel%2fparser/-/parser-7.26.2.tgz"
|
||||||
|
},
|
||||||
|
"@babel/parser@7.28.5": {
|
||||||
|
"integrity": "sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ==",
|
||||||
|
"dependencies": [
|
||||||
|
"@babel/types@7.28.5"
|
||||||
|
],
|
||||||
|
"bin": true,
|
||||||
|
"tarball": "http://npm.srv.dc1.boerse-go.de:4873/@babel%2fparser/-/parser-7.28.5.tgz"
|
||||||
},
|
},
|
||||||
"@babel/types@7.26.0": {
|
"@babel/types@7.26.0": {
|
||||||
"integrity": "sha512-Z/yiTPj+lDVnF7lWeKCIJzaIkI0vYO87dMpZ4bg4TDrFe4XXLFWL1TbXU27gBP3QccxV9mZICCrnjnYlJjXHOA==",
|
"integrity": "sha512-Z/yiTPj+lDVnF7lWeKCIJzaIkI0vYO87dMpZ4bg4TDrFe4XXLFWL1TbXU27gBP3QccxV9mZICCrnjnYlJjXHOA==",
|
||||||
"dependencies": [
|
"dependencies": [
|
||||||
"@babel/helper-string-parser",
|
"@babel/helper-string-parser@7.25.9",
|
||||||
"@babel/helper-validator-identifier"
|
"@babel/helper-validator-identifier@7.25.9"
|
||||||
]
|
],
|
||||||
|
"tarball": "http://npm.srv.dc1.boerse-go.de:4873/@babel%2ftypes/-/types-7.26.0.tgz"
|
||||||
|
},
|
||||||
|
"@babel/types@7.28.5": {
|
||||||
|
"integrity": "sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA==",
|
||||||
|
"dependencies": [
|
||||||
|
"@babel/helper-string-parser@7.27.1",
|
||||||
|
"@babel/helper-validator-identifier@7.28.5"
|
||||||
|
],
|
||||||
|
"tarball": "http://npm.srv.dc1.boerse-go.de:4873/@babel%2ftypes/-/types-7.28.5.tgz"
|
||||||
},
|
},
|
||||||
"@jridgewell/sourcemap-codec@1.5.0": {
|
"@jridgewell/sourcemap-codec@1.5.0": {
|
||||||
"integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ=="
|
"integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==",
|
||||||
|
"tarball": "http://npm.srv.dc1.boerse-go.de:4873/@jridgewell%2fsourcemap-codec/-/sourcemap-codec-1.5.0.tgz"
|
||||||
|
},
|
||||||
|
"@jridgewell/sourcemap-codec@1.5.5": {
|
||||||
|
"integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==",
|
||||||
|
"tarball": "http://npm.srv.dc1.boerse-go.de:4873/@jridgewell%2fsourcemap-codec/-/sourcemap-codec-1.5.5.tgz"
|
||||||
},
|
},
|
||||||
"@types/node@22.5.4": {
|
"@types/node@22.5.4": {
|
||||||
"integrity": "sha512-FDuKUJQm/ju9fT/SeX/6+gBzoPzlVCzfzmGkwKvRHQVxi4BntVbyIwf6a4Xn62mrvndLiml6z/UBXIdEVjQLXg==",
|
"integrity": "sha512-FDuKUJQm/ju9fT/SeX/6+gBzoPzlVCzfzmGkwKvRHQVxi4BntVbyIwf6a4Xn62mrvndLiml6z/UBXIdEVjQLXg==",
|
||||||
"dependencies": [
|
"dependencies": [
|
||||||
"undici-types"
|
"undici-types"
|
||||||
]
|
],
|
||||||
|
"tarball": "http://npm.srv.dc1.boerse-go.de:4873/@types%2fnode/-/node-22.5.4.tgz"
|
||||||
},
|
},
|
||||||
"@vue/compiler-core@3.5.12": {
|
"@vue/compiler-core@3.5.12": {
|
||||||
"integrity": "sha512-ISyBTRMmMYagUxhcpyEH0hpXRd/KqDU4ymofPgl2XAkY9ZhQ+h0ovEZJIiPop13UmR/54oA2cgMDjgroRelaEw==",
|
"integrity": "sha512-ISyBTRMmMYagUxhcpyEH0hpXRd/KqDU4ymofPgl2XAkY9ZhQ+h0ovEZJIiPop13UmR/54oA2cgMDjgroRelaEw==",
|
||||||
"dependencies": [
|
"dependencies": [
|
||||||
"@babel/parser",
|
"@babel/parser@7.26.2",
|
||||||
"@vue/shared",
|
"@vue/shared@3.5.12",
|
||||||
"entities",
|
"entities@4.5.0",
|
||||||
"estree-walker",
|
"estree-walker",
|
||||||
"source-map-js"
|
"source-map-js"
|
||||||
]
|
],
|
||||||
|
"tarball": "http://npm.srv.dc1.boerse-go.de:4873/@vue%2fcompiler-core/-/compiler-core-3.5.12.tgz"
|
||||||
|
},
|
||||||
|
"@vue/compiler-core@3.5.26": {
|
||||||
|
"integrity": "sha512-vXyI5GMfuoBCnv5ucIT7jhHKl55Y477yxP6fc4eUswjP8FG3FFVFd41eNDArR+Uk3QKn2Z85NavjaxLxOC19/w==",
|
||||||
|
"dependencies": [
|
||||||
|
"@babel/parser@7.28.5",
|
||||||
|
"@vue/shared@3.5.26",
|
||||||
|
"entities@7.0.0",
|
||||||
|
"estree-walker",
|
||||||
|
"source-map-js"
|
||||||
|
],
|
||||||
|
"tarball": "http://npm.srv.dc1.boerse-go.de:4873/@vue%2fcompiler-core/-/compiler-core-3.5.26.tgz"
|
||||||
},
|
},
|
||||||
"@vue/compiler-dom@3.5.12": {
|
"@vue/compiler-dom@3.5.12": {
|
||||||
"integrity": "sha512-9G6PbJ03uwxLHKQ3P42cMTi85lDRvGLB2rSGOiQqtXELat6uI4n8cNz9yjfVHRPIu+MsK6TE418Giruvgptckg==",
|
"integrity": "sha512-9G6PbJ03uwxLHKQ3P42cMTi85lDRvGLB2rSGOiQqtXELat6uI4n8cNz9yjfVHRPIu+MsK6TE418Giruvgptckg==",
|
||||||
"dependencies": [
|
"dependencies": [
|
||||||
"@vue/compiler-core",
|
"@vue/compiler-core@3.5.12",
|
||||||
"@vue/shared"
|
"@vue/shared@3.5.12"
|
||||||
]
|
],
|
||||||
|
"tarball": "http://npm.srv.dc1.boerse-go.de:4873/@vue%2fcompiler-dom/-/compiler-dom-3.5.12.tgz"
|
||||||
|
},
|
||||||
|
"@vue/compiler-dom@3.5.26": {
|
||||||
|
"integrity": "sha512-y1Tcd3eXs834QjswshSilCBnKGeQjQXB6PqFn/1nxcQw4pmG42G8lwz+FZPAZAby6gZeHSt/8LMPfZ4Rb+Bd/A==",
|
||||||
|
"dependencies": [
|
||||||
|
"@vue/compiler-core@3.5.26",
|
||||||
|
"@vue/shared@3.5.26"
|
||||||
|
],
|
||||||
|
"tarball": "http://npm.srv.dc1.boerse-go.de:4873/@vue%2fcompiler-dom/-/compiler-dom-3.5.26.tgz"
|
||||||
},
|
},
|
||||||
"@vue/compiler-sfc@3.5.12": {
|
"@vue/compiler-sfc@3.5.12": {
|
||||||
"integrity": "sha512-2k973OGo2JuAa5+ZlekuQJtitI5CgLMOwgl94BzMCsKZCX/xiqzJYzapl4opFogKHqwJk34vfsaKpfEhd1k5nw==",
|
"integrity": "sha512-2k973OGo2JuAa5+ZlekuQJtitI5CgLMOwgl94BzMCsKZCX/xiqzJYzapl4opFogKHqwJk34vfsaKpfEhd1k5nw==",
|
||||||
"dependencies": [
|
"dependencies": [
|
||||||
"@babel/parser",
|
"@babel/parser@7.26.2",
|
||||||
"@vue/compiler-core",
|
"@vue/compiler-core@3.5.12",
|
||||||
"@vue/compiler-dom",
|
"@vue/compiler-dom@3.5.12",
|
||||||
"@vue/compiler-ssr",
|
"@vue/compiler-ssr@3.5.12",
|
||||||
"@vue/shared",
|
"@vue/shared@3.5.12",
|
||||||
"estree-walker",
|
"estree-walker",
|
||||||
"magic-string",
|
"magic-string@0.30.12",
|
||||||
"postcss",
|
"postcss@8.4.47",
|
||||||
"source-map-js"
|
"source-map-js"
|
||||||
]
|
],
|
||||||
|
"tarball": "http://npm.srv.dc1.boerse-go.de:4873/@vue%2fcompiler-sfc/-/compiler-sfc-3.5.12.tgz"
|
||||||
|
},
|
||||||
|
"@vue/compiler-sfc@3.5.26": {
|
||||||
|
"integrity": "sha512-egp69qDTSEZcf4bGOSsprUr4xI73wfrY5oRs6GSgXFTiHrWj4Y3X5Ydtip9QMqiCMCPVwLglB9GBxXtTadJ3mA==",
|
||||||
|
"dependencies": [
|
||||||
|
"@babel/parser@7.28.5",
|
||||||
|
"@vue/compiler-core@3.5.26",
|
||||||
|
"@vue/compiler-dom@3.5.26",
|
||||||
|
"@vue/compiler-ssr@3.5.26",
|
||||||
|
"@vue/shared@3.5.26",
|
||||||
|
"estree-walker",
|
||||||
|
"magic-string@0.30.21",
|
||||||
|
"postcss@8.5.6",
|
||||||
|
"source-map-js"
|
||||||
|
],
|
||||||
|
"tarball": "http://npm.srv.dc1.boerse-go.de:4873/@vue%2fcompiler-sfc/-/compiler-sfc-3.5.26.tgz"
|
||||||
},
|
},
|
||||||
"@vue/compiler-ssr@3.5.12": {
|
"@vue/compiler-ssr@3.5.12": {
|
||||||
"integrity": "sha512-eLwc7v6bfGBSM7wZOGPmRavSWzNFF6+PdRhE+VFJhNCgHiF8AM7ccoqcv5kBXA2eWUfigD7byekvf/JsOfKvPA==",
|
"integrity": "sha512-eLwc7v6bfGBSM7wZOGPmRavSWzNFF6+PdRhE+VFJhNCgHiF8AM7ccoqcv5kBXA2eWUfigD7byekvf/JsOfKvPA==",
|
||||||
"dependencies": [
|
"dependencies": [
|
||||||
"@vue/compiler-dom",
|
"@vue/compiler-dom@3.5.12",
|
||||||
"@vue/shared"
|
"@vue/shared@3.5.12"
|
||||||
]
|
],
|
||||||
|
"tarball": "http://npm.srv.dc1.boerse-go.de:4873/@vue%2fcompiler-ssr/-/compiler-ssr-3.5.12.tgz"
|
||||||
|
},
|
||||||
|
"@vue/compiler-ssr@3.5.26": {
|
||||||
|
"integrity": "sha512-lZT9/Y0nSIRUPVvapFJEVDbEXruZh2IYHMk2zTtEgJSlP5gVOqeWXH54xDKAaFS4rTnDeDBQUYDtxKyoW9FwDw==",
|
||||||
|
"dependencies": [
|
||||||
|
"@vue/compiler-dom@3.5.26",
|
||||||
|
"@vue/shared@3.5.26"
|
||||||
|
],
|
||||||
|
"tarball": "http://npm.srv.dc1.boerse-go.de:4873/@vue%2fcompiler-ssr/-/compiler-ssr-3.5.26.tgz"
|
||||||
},
|
},
|
||||||
"@vue/devtools-api@6.6.4": {
|
"@vue/devtools-api@6.6.4": {
|
||||||
"integrity": "sha512-sGhTPMuXqZ1rVOk32RylztWkfXTRhuS7vgAKv0zjqk8gbsHkJ7xfFf+jbySxt7tWObEJwyKaHMikV/WGDiQm8g=="
|
"integrity": "sha512-sGhTPMuXqZ1rVOk32RylztWkfXTRhuS7vgAKv0zjqk8gbsHkJ7xfFf+jbySxt7tWObEJwyKaHMikV/WGDiQm8g==",
|
||||||
|
"tarball": "http://npm.srv.dc1.boerse-go.de:4873/@vue%2fdevtools-api/-/devtools-api-6.6.4.tgz"
|
||||||
},
|
},
|
||||||
"@vue/reactivity@3.5.12": {
|
"@vue/reactivity@3.5.12": {
|
||||||
"integrity": "sha512-UzaN3Da7xnJXdz4Okb/BGbAaomRHc3RdoWqTzlvd9+WBR5m3J39J1fGcHes7U3za0ruYn/iYy/a1euhMEHvTAg==",
|
"integrity": "sha512-UzaN3Da7xnJXdz4Okb/BGbAaomRHc3RdoWqTzlvd9+WBR5m3J39J1fGcHes7U3za0ruYn/iYy/a1euhMEHvTAg==",
|
||||||
"dependencies": [
|
"dependencies": [
|
||||||
"@vue/shared"
|
"@vue/shared@3.5.12"
|
||||||
]
|
],
|
||||||
|
"tarball": "http://npm.srv.dc1.boerse-go.de:4873/@vue%2freactivity/-/reactivity-3.5.12.tgz"
|
||||||
|
},
|
||||||
|
"@vue/reactivity@3.5.26": {
|
||||||
|
"integrity": "sha512-9EnYB1/DIiUYYnzlnUBgwU32NNvLp/nhxLXeWRhHUEeWNTn1ECxX8aGO7RTXeX6PPcxe3LLuNBFoJbV4QZ+CFQ==",
|
||||||
|
"dependencies": [
|
||||||
|
"@vue/shared@3.5.26"
|
||||||
|
],
|
||||||
|
"tarball": "http://npm.srv.dc1.boerse-go.de:4873/@vue%2freactivity/-/reactivity-3.5.26.tgz"
|
||||||
},
|
},
|
||||||
"@vue/runtime-core@3.5.12": {
|
"@vue/runtime-core@3.5.12": {
|
||||||
"integrity": "sha512-hrMUYV6tpocr3TL3Ad8DqxOdpDe4zuQY4HPY3X/VRh+L2myQO8MFXPAMarIOSGNu0bFAjh1yBkMPXZBqCk62Uw==",
|
"integrity": "sha512-hrMUYV6tpocr3TL3Ad8DqxOdpDe4zuQY4HPY3X/VRh+L2myQO8MFXPAMarIOSGNu0bFAjh1yBkMPXZBqCk62Uw==",
|
||||||
"dependencies": [
|
"dependencies": [
|
||||||
"@vue/reactivity",
|
"@vue/reactivity@3.5.12",
|
||||||
"@vue/shared"
|
"@vue/shared@3.5.12"
|
||||||
]
|
],
|
||||||
|
"tarball": "http://npm.srv.dc1.boerse-go.de:4873/@vue%2fruntime-core/-/runtime-core-3.5.12.tgz"
|
||||||
|
},
|
||||||
|
"@vue/runtime-core@3.5.26": {
|
||||||
|
"integrity": "sha512-xJWM9KH1kd201w5DvMDOwDHYhrdPTrAatn56oB/LRG4plEQeZRQLw0Bpwih9KYoqmzaxF0OKSn6swzYi84e1/Q==",
|
||||||
|
"dependencies": [
|
||||||
|
"@vue/reactivity@3.5.26",
|
||||||
|
"@vue/shared@3.5.26"
|
||||||
|
],
|
||||||
|
"tarball": "http://npm.srv.dc1.boerse-go.de:4873/@vue%2fruntime-core/-/runtime-core-3.5.26.tgz"
|
||||||
},
|
},
|
||||||
"@vue/runtime-dom@3.5.12": {
|
"@vue/runtime-dom@3.5.12": {
|
||||||
"integrity": "sha512-q8VFxR9A2MRfBr6/55Q3umyoN7ya836FzRXajPB6/Vvuv0zOPL+qltd9rIMzG/DbRLAIlREmnLsplEF/kotXKA==",
|
"integrity": "sha512-q8VFxR9A2MRfBr6/55Q3umyoN7ya836FzRXajPB6/Vvuv0zOPL+qltd9rIMzG/DbRLAIlREmnLsplEF/kotXKA==",
|
||||||
"dependencies": [
|
"dependencies": [
|
||||||
"@vue/reactivity",
|
"@vue/reactivity@3.5.12",
|
||||||
"@vue/runtime-core",
|
"@vue/runtime-core@3.5.12",
|
||||||
"@vue/shared",
|
"@vue/shared@3.5.12",
|
||||||
"csstype"
|
"csstype@3.1.3"
|
||||||
]
|
],
|
||||||
|
"tarball": "http://npm.srv.dc1.boerse-go.de:4873/@vue%2fruntime-dom/-/runtime-dom-3.5.12.tgz"
|
||||||
|
},
|
||||||
|
"@vue/runtime-dom@3.5.26": {
|
||||||
|
"integrity": "sha512-XLLd/+4sPC2ZkN/6+V4O4gjJu6kSDbHAChvsyWgm1oGbdSO3efvGYnm25yCjtFm/K7rrSDvSfPDgN1pHgS4VNQ==",
|
||||||
|
"dependencies": [
|
||||||
|
"@vue/reactivity@3.5.26",
|
||||||
|
"@vue/runtime-core@3.5.26",
|
||||||
|
"@vue/shared@3.5.26",
|
||||||
|
"csstype@3.2.3"
|
||||||
|
],
|
||||||
|
"tarball": "http://npm.srv.dc1.boerse-go.de:4873/@vue%2fruntime-dom/-/runtime-dom-3.5.26.tgz"
|
||||||
},
|
},
|
||||||
"@vue/server-renderer@3.5.12_vue@3.5.12": {
|
"@vue/server-renderer@3.5.12_vue@3.5.12": {
|
||||||
"integrity": "sha512-I3QoeDDeEPZm8yR28JtY+rk880Oqmj43hreIBVTicisFTx/Dl7JpG72g/X7YF8hnQD3IFhkky5i2bPonwrTVPg==",
|
"integrity": "sha512-I3QoeDDeEPZm8yR28JtY+rk880Oqmj43hreIBVTicisFTx/Dl7JpG72g/X7YF8hnQD3IFhkky5i2bPonwrTVPg==",
|
||||||
"dependencies": [
|
"dependencies": [
|
||||||
"@vue/compiler-ssr",
|
"@vue/compiler-ssr@3.5.12",
|
||||||
"@vue/shared",
|
"@vue/shared@3.5.12",
|
||||||
"vue"
|
"vue@3.5.12"
|
||||||
]
|
],
|
||||||
|
"tarball": "http://npm.srv.dc1.boerse-go.de:4873/@vue%2fserver-renderer/-/server-renderer-3.5.12.tgz"
|
||||||
|
},
|
||||||
|
"@vue/server-renderer@3.5.26_vue@3.5.26": {
|
||||||
|
"integrity": "sha512-TYKLXmrwWKSodyVuO1WAubucd+1XlLg4set0YoV+Hu8Lo79mp/YMwWV5mC5FgtsDxX3qo1ONrxFaTP1OQgy1uA==",
|
||||||
|
"dependencies": [
|
||||||
|
"@vue/compiler-ssr@3.5.26",
|
||||||
|
"@vue/shared@3.5.26",
|
||||||
|
"vue@3.5.26"
|
||||||
|
],
|
||||||
|
"tarball": "http://npm.srv.dc1.boerse-go.de:4873/@vue%2fserver-renderer/-/server-renderer-3.5.26.tgz"
|
||||||
},
|
},
|
||||||
"@vue/shared@3.5.12": {
|
"@vue/shared@3.5.12": {
|
||||||
"integrity": "sha512-L2RPSAwUFbgZH20etwrXyVyCBu9OxRSi8T/38QsvnkJyvq2LufW2lDCOzm7t/U9C1mkhJGWYfCuFBCmIuNivrg=="
|
"integrity": "sha512-L2RPSAwUFbgZH20etwrXyVyCBu9OxRSi8T/38QsvnkJyvq2LufW2lDCOzm7t/U9C1mkhJGWYfCuFBCmIuNivrg==",
|
||||||
|
"tarball": "http://npm.srv.dc1.boerse-go.de:4873/@vue%2fshared/-/shared-3.5.12.tgz"
|
||||||
|
},
|
||||||
|
"@vue/shared@3.5.26": {
|
||||||
|
"integrity": "sha512-7Z6/y3uFI5PRoKeorTOSXKcDj0MSasfNNltcslbFrPpcw6aXRUALq4IfJlaTRspiWIUOEZbrpM+iQGmCOiWe4A==",
|
||||||
|
"tarball": "http://npm.srv.dc1.boerse-go.de:4873/@vue%2fshared/-/shared-3.5.26.tgz"
|
||||||
},
|
},
|
||||||
"csstype@3.1.3": {
|
"csstype@3.1.3": {
|
||||||
"integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw=="
|
"integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==",
|
||||||
|
"tarball": "http://npm.srv.dc1.boerse-go.de:4873/csstype/-/csstype-3.1.3.tgz"
|
||||||
|
},
|
||||||
|
"csstype@3.2.3": {
|
||||||
|
"integrity": "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==",
|
||||||
|
"tarball": "http://npm.srv.dc1.boerse-go.de:4873/csstype/-/csstype-3.2.3.tgz"
|
||||||
},
|
},
|
||||||
"entities@4.5.0": {
|
"entities@4.5.0": {
|
||||||
"integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw=="
|
"integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==",
|
||||||
|
"tarball": "http://npm.srv.dc1.boerse-go.de:4873/entities/-/entities-4.5.0.tgz"
|
||||||
|
},
|
||||||
|
"entities@7.0.0": {
|
||||||
|
"integrity": "sha512-FDWG5cmEYf2Z00IkYRhbFrwIwvdFKH07uV8dvNy0omp/Qb1xcyCWp2UDtcwJF4QZZvk0sLudP6/hAu42TaqVhQ==",
|
||||||
|
"tarball": "http://npm.srv.dc1.boerse-go.de:4873/entities/-/entities-7.0.0.tgz"
|
||||||
},
|
},
|
||||||
"estree-walker@2.0.2": {
|
"estree-walker@2.0.2": {
|
||||||
"integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w=="
|
"integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==",
|
||||||
|
"tarball": "http://npm.srv.dc1.boerse-go.de:4873/estree-walker/-/estree-walker-2.0.2.tgz"
|
||||||
},
|
},
|
||||||
"magic-string@0.30.12": {
|
"magic-string@0.30.12": {
|
||||||
"integrity": "sha512-Ea8I3sQMVXr8JhN4z+H/d8zwo+tYDgHE9+5G4Wnrwhs0gaK9fXTKx0Tw5Xwsd/bCPTTZNRAdpyzvoeORe9LYpw==",
|
"integrity": "sha512-Ea8I3sQMVXr8JhN4z+H/d8zwo+tYDgHE9+5G4Wnrwhs0gaK9fXTKx0Tw5Xwsd/bCPTTZNRAdpyzvoeORe9LYpw==",
|
||||||
"dependencies": [
|
"dependencies": [
|
||||||
"@jridgewell/sourcemap-codec"
|
"@jridgewell/sourcemap-codec@1.5.0"
|
||||||
]
|
],
|
||||||
|
"tarball": "http://npm.srv.dc1.boerse-go.de:4873/magic-string/-/magic-string-0.30.12.tgz"
|
||||||
|
},
|
||||||
|
"magic-string@0.30.21": {
|
||||||
|
"integrity": "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==",
|
||||||
|
"dependencies": [
|
||||||
|
"@jridgewell/sourcemap-codec@1.5.5"
|
||||||
|
],
|
||||||
|
"tarball": "http://npm.srv.dc1.boerse-go.de:4873/magic-string/-/magic-string-0.30.21.tgz"
|
||||||
|
},
|
||||||
|
"nanoid@3.3.11": {
|
||||||
|
"integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==",
|
||||||
|
"bin": true,
|
||||||
|
"tarball": "http://npm.srv.dc1.boerse-go.de:4873/nanoid/-/nanoid-3.3.11.tgz"
|
||||||
},
|
},
|
||||||
"nanoid@3.3.7": {
|
"nanoid@3.3.7": {
|
||||||
"integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g=="
|
"integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==",
|
||||||
|
"bin": true,
|
||||||
|
"tarball": "http://npm.srv.dc1.boerse-go.de:4873/nanoid/-/nanoid-3.3.7.tgz"
|
||||||
},
|
},
|
||||||
"picocolors@1.1.1": {
|
"picocolors@1.1.1": {
|
||||||
"integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA=="
|
"integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==",
|
||||||
|
"tarball": "http://npm.srv.dc1.boerse-go.de:4873/picocolors/-/picocolors-1.1.1.tgz"
|
||||||
},
|
},
|
||||||
"postcss@8.4.47": {
|
"postcss@8.4.47": {
|
||||||
"integrity": "sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ==",
|
"integrity": "sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ==",
|
||||||
"dependencies": [
|
"dependencies": [
|
||||||
"nanoid",
|
"nanoid@3.3.7",
|
||||||
"picocolors",
|
"picocolors",
|
||||||
"source-map-js"
|
"source-map-js"
|
||||||
]
|
],
|
||||||
|
"tarball": "http://npm.srv.dc1.boerse-go.de:4873/postcss/-/postcss-8.4.47.tgz"
|
||||||
|
},
|
||||||
|
"postcss@8.5.6": {
|
||||||
|
"integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==",
|
||||||
|
"dependencies": [
|
||||||
|
"nanoid@3.3.11",
|
||||||
|
"picocolors",
|
||||||
|
"source-map-js"
|
||||||
|
],
|
||||||
|
"tarball": "http://npm.srv.dc1.boerse-go.de:4873/postcss/-/postcss-8.5.6.tgz"
|
||||||
},
|
},
|
||||||
"source-map-js@1.2.1": {
|
"source-map-js@1.2.1": {
|
||||||
"integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA=="
|
"integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==",
|
||||||
|
"tarball": "http://npm.srv.dc1.boerse-go.de:4873/source-map-js/-/source-map-js-1.2.1.tgz"
|
||||||
},
|
},
|
||||||
"undici-types@6.19.8": {
|
"undici-types@6.19.8": {
|
||||||
"integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw=="
|
"integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==",
|
||||||
|
"tarball": "http://npm.srv.dc1.boerse-go.de:4873/undici-types/-/undici-types-6.19.8.tgz"
|
||||||
},
|
},
|
||||||
"vue-router@4.4.5_vue@3.5.12": {
|
"vue-router@4.4.5_vue@3.5.12": {
|
||||||
"integrity": "sha512-4fKZygS8cH1yCyuabAXGUAsyi1b2/o/OKgu/RUb+znIYOxPRxdkytJEx+0wGcpBE1pX6vUgh5jwWOKRGvuA/7Q==",
|
"integrity": "sha512-4fKZygS8cH1yCyuabAXGUAsyi1b2/o/OKgu/RUb+znIYOxPRxdkytJEx+0wGcpBE1pX6vUgh5jwWOKRGvuA/7Q==",
|
||||||
"dependencies": [
|
"dependencies": [
|
||||||
"@vue/devtools-api",
|
"@vue/devtools-api",
|
||||||
"vue"
|
"vue@3.5.12"
|
||||||
]
|
],
|
||||||
|
"tarball": "http://npm.srv.dc1.boerse-go.de:4873/vue-router/-/vue-router-4.4.5.tgz"
|
||||||
},
|
},
|
||||||
"vue@3.5.12": {
|
"vue@3.5.12": {
|
||||||
"integrity": "sha512-CLVZtXtn2ItBIi/zHZ0Sg1Xkb7+PU32bJJ8Bmy7ts3jxXTcbfsEfBivFYYWz1Hur+lalqGAh65Coin0r+HRUfg==",
|
"integrity": "sha512-CLVZtXtn2ItBIi/zHZ0Sg1Xkb7+PU32bJJ8Bmy7ts3jxXTcbfsEfBivFYYWz1Hur+lalqGAh65Coin0r+HRUfg==",
|
||||||
"dependencies": [
|
"dependencies": [
|
||||||
"@vue/compiler-dom",
|
"@vue/compiler-dom@3.5.12",
|
||||||
"@vue/compiler-sfc",
|
"@vue/compiler-sfc@3.5.12",
|
||||||
"@vue/runtime-dom",
|
"@vue/runtime-dom@3.5.12",
|
||||||
"@vue/server-renderer",
|
"@vue/server-renderer@3.5.12_vue@3.5.12",
|
||||||
"@vue/shared"
|
"@vue/shared@3.5.12"
|
||||||
]
|
],
|
||||||
|
"tarball": "http://npm.srv.dc1.boerse-go.de:4873/vue/-/vue-3.5.12.tgz"
|
||||||
|
},
|
||||||
|
"vue@3.5.26": {
|
||||||
|
"integrity": "sha512-SJ/NTccVyAoNUJmkM9KUqPcYlY+u8OVL1X5EW9RIs3ch5H2uERxyyIUI4MRxVCSOiEcupX9xNGde1tL9ZKpimA==",
|
||||||
|
"dependencies": [
|
||||||
|
"@vue/compiler-dom@3.5.26",
|
||||||
|
"@vue/compiler-sfc@3.5.26",
|
||||||
|
"@vue/runtime-dom@3.5.26",
|
||||||
|
"@vue/server-renderer@3.5.26_vue@3.5.26",
|
||||||
|
"@vue/shared@3.5.26"
|
||||||
|
],
|
||||||
|
"tarball": "http://npm.srv.dc1.boerse-go.de:4873/vue/-/vue-3.5.26.tgz"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"workspace": {
|
"workspace": {
|
||||||
"dependencies": [
|
"dependencies": [
|
||||||
|
"jsr:@b-fuze/deno-dom@~0.1.56",
|
||||||
|
"jsr:@deno/emit@0.46",
|
||||||
|
"jsr:@std/fs@^1.0.20",
|
||||||
|
"jsr:@std/http@^1.0.22",
|
||||||
|
"jsr:@std/path@^1.1.3",
|
||||||
"npm:@vue/devtools-api@*",
|
"npm:@vue/devtools-api@*",
|
||||||
"npm:vue-router@4.4.5",
|
"npm:vue-router@4.4.5",
|
||||||
"npm:vue@*",
|
"npm:vue@*",
|
||||||
"npm:vue@^3.5.12"
|
"npm:vue@^3.5.26"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
6
deps.ts
6
deps.ts
@@ -1,6 +0,0 @@
|
|||||||
import "jsr:@deno/emit";
|
|
||||||
import "jsr:@std/http";
|
|
||||||
import "vue";
|
|
||||||
import "jsr:@b-fuze/deno-dom";
|
|
||||||
import "jsr:@std/fs";
|
|
||||||
import "jsr:@std/path";
|
|
||||||
22
main.ts
22
main.ts
@@ -1,20 +1,20 @@
|
|||||||
import { serveFile } from "jsr:@std/http/file-server";
|
import { serveFile } from "@std/http/file-server";
|
||||||
import { STATUS_TEXT } from "jsr:@std/http/status";
|
import { STATUS_TEXT } from "@std/http/status";
|
||||||
import { type App, toValue } from "vue";
|
import { type App, toValue } from "vue";
|
||||||
import { type Router } from "vue-router";
|
import { type Router } from "vue-router";
|
||||||
import { renderToString } from "vue/server-renderer";
|
import { renderToString } from "vue/server-renderer";
|
||||||
import transpileResponse from "./transpile.ts";
|
import transpileResponse from "./transpile.ts";
|
||||||
import { DOMParser } from "jsr:@b-fuze/deno-dom";
|
import { DOMParser } from "@b-fuze/deno-dom";
|
||||||
import { join } from "jsr:@std/path/join";
|
import { join } from "@std/path/join";
|
||||||
import { exists } from "jsr:@std/fs";
|
import { exists } from "@std/fs";
|
||||||
import { type DJSSRContext } from "@/useDJSSRContext.ts";
|
import { type DjSSRContext } from "@/useDjSSRContext.ts";
|
||||||
import { type DJAPIResult, type DJAPIResultMap } from "@/api.ts";
|
import { type DjAPIResult, type DjAPIResultMap } from "@/api.ts";
|
||||||
|
|
||||||
const utf8Decoder = new TextDecoder("utf-8");
|
const utf8Decoder = new TextDecoder("utf-8");
|
||||||
|
|
||||||
const parser = new DOMParser();
|
const parser = new DOMParser();
|
||||||
|
|
||||||
function appHeaderScript(params: { ssrContext: DJSSRContext, entryPath: string }) {
|
function appHeaderScript(params: { ssrContext: DjSSRContext, entryPath: string }) {
|
||||||
return `
|
return `
|
||||||
<title>${ toValue(params.ssrContext.head.title) }</title>
|
<title>${ toValue(params.ssrContext.head.title) }</title>
|
||||||
${ toValue(params.ssrContext.head.metatags).map(_ => `<meta name="${ _.name }" content="${ _.content }">`).join('\n\t') }
|
${ toValue(params.ssrContext.head.metatags).map(_ => `<meta name="${ _.name }" content="${ _.content }">`).join('\n\t') }
|
||||||
@@ -55,7 +55,7 @@ for await (const path of publicFiles) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
async function getAPIResponse(apiReq: Request): Promise<Response> {
|
async function getAPIResponse(apiReq: Request): Promise<Response> {
|
||||||
let jsonResponse: DJAPIResult | { error: string } | null = null;
|
let jsonResponse: DjAPIResult | { error: string } | null = null;
|
||||||
let status = 200;
|
let status = 200;
|
||||||
|
|
||||||
const pathname = URL.parse(apiReq.url)?.pathname;
|
const pathname = URL.parse(apiReq.url)?.pathname;
|
||||||
@@ -76,7 +76,7 @@ async function getAPIResponse(apiReq: Request): Promise<Response> {
|
|||||||
paths.push(`${contentDir}${dirEnt.name}`);
|
paths.push(`${contentDir}${dirEnt.name}`);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
const result: DJAPIResultMap['/rp-articles'] = [];
|
const result: DjAPIResultMap['/rp-articles'] = [];
|
||||||
for (const filePath of paths) {
|
for (const filePath of paths) {
|
||||||
const content = await Deno.readTextFile(filePath);
|
const content = await Deno.readTextFile(filePath);
|
||||||
const dom = parser.parseFromString(content, 'text/html');
|
const dom = parser.parseFromString(content, 'text/html');
|
||||||
@@ -197,7 +197,7 @@ Deno.serve({
|
|||||||
app.provide("dom-parse", (innerHTML: string) => {
|
app.provide("dom-parse", (innerHTML: string) => {
|
||||||
return parser.parseFromString(innerHTML, "text/html").documentElement;
|
return parser.parseFromString(innerHTML, "text/html").documentElement;
|
||||||
});
|
});
|
||||||
const ssrContext: DJSSRContext = { styles: {}, registry: {}, head: { title: "", metatags: [] } };
|
const ssrContext: DjSSRContext = { styles: {}, registry: {}, head: { title: "", metatags: [] } };
|
||||||
if (router) {
|
if (router) {
|
||||||
await router.replace(pathname.split('/' + baseDirectoryName)[1]);
|
await router.replace(pathname.split('/' + baseDirectoryName)[1]);
|
||||||
await router.isReady();
|
await router.isReady();
|
||||||
|
|||||||
51
public/blog/articles/19-12-2025.html
Normal file
51
public/blog/articles/19-12-2025.html
Normal file
@@ -0,0 +1,51 @@
|
|||||||
|
<title>Poof, and it's gone</title>
|
||||||
|
|
||||||
|
<article>
|
||||||
|
<p>
|
||||||
|
Since reading Ray Peat's work and drastically improving my wellbeing, something that had been declining for years, I've
|
||||||
|
been thinking more and more often about the phenomenon of learned helpless and its relevance to my life. Sometimes,
|
||||||
|
looking back to past times is useful to help reorient yourself in the present and aim towards a more desirable future.
|
||||||
|
Sometimes, a new perspective or experience might instantly obliterate previous behaviour without any sort of concerted
|
||||||
|
mental or physical grunt to eradicate it.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
On the flipside, I have sometimes hopelessly tried to forcefully change my behaviour, employing all the en vogue self-help tricks
|
||||||
|
to form long-term habits, only to practically immediately lose them not long afterwards. These kinds of experiences remind me of those
|
||||||
|
hypnosis advertisements that claim to have you give up smoking after just a few sessions; sometimes it's even after just one visit. There's no short
|
||||||
|
supply of stories of miracle cures or sudden, permanent breaks of addiction. Cold-turkey clean cuts that seem to arise with no obvious
|
||||||
|
effort on the part of the addict, no signs of worn willpower.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
When I was sixteen I spent six weeks abroad in a small town called Marburg in Hesse, Germany. Those six weeks were spent
|
||||||
|
living with a new family along with my exchange student, who had lived six weeks with me and my family just prior to my
|
||||||
|
arrival in Germany. Six weeks of school, new acquaintances, a new language (albeit one I had been "studying" in the
|
||||||
|
Australian school system) and unfamiliar cultural quirks.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
It was a barrage of stimulation, I came home every day from school and would collapse, totally exhausted, onto my
|
||||||
|
exchange student's bed, which was mine for the duration of the stay. It's not like I was actually expected to
|
||||||
|
<i>learn</i> anything or do any homework whilst I was at school here—I was basically on holidays and could really
|
||||||
|
have just treated it as such. Plenty of my own friends who had taken a similar trip certainly did. I'm not manyt of them
|
||||||
|
learnt or used much German beyond <i>Wo ist McDonalds?</i>. But I had been gradually becoming more fascinated with the
|
||||||
|
structure of German before arriving. Once there, especially at that age I presume, the Deutsch on the blackboard in
|
||||||
|
biology class looked more like a sophisticated puzzle game than a complete drag of a memorisation task. Each day was a
|
||||||
|
new game of deductive guesswork, and better still, I got to play with new ideas about how the language works every day
|
||||||
|
in the schoolyard with new friends I was making. New ways to describe how things are situated and move in relation to
|
||||||
|
one another, mysterious new prefixes and other linguistic building blocks, and the insane backwards word order of German
|
||||||
|
provided unlimited entertainment to see if I was up to the challenge.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
On top of this, I was in the grade just above mine back home in Australia. Whilst that really shouldn't have made much
|
||||||
|
difference, the amount of responsibility and independece these kids were allowed to exercise at sixteen or seventeen was
|
||||||
|
nothing short of amazing to my adolescent self. I had never seen anything like it. Some of my classmates would stand out
|
||||||
|
the front of school during lunchtime and smoke a couple of cigarettes with their own teachers, something that still to
|
||||||
|
this day I find kind of insane. It certainly would never have been acceptable back at home. Starting in the senior
|
||||||
|
school, you were allowed to just leave and go home if you didn't have class on, as long as you were back in time. And we
|
||||||
|
did. School uniforms simply weren't part of the culture either. For everyone else perhaps stressful and another target
|
||||||
|
of the cruel status games of teenagerhood, but for me it was like every day was casual dress day back home. To top it
|
||||||
|
all off, the legal drinking age in Germany is sixteen, at least for wine, beer, and other weaker drinks.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
These classmates of mine were running their own meetings headed by the <i>Klassensprecher</i>, the class representatives, and they actually seemed cool, like people I would like to hang out and befriend. They were
|
||||||
|
|
||||||
|
</article>
|
||||||
22
public/blog/index_template.html
Normal file
22
public/blog/index_template.html
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||||
|
|
||||||
|
<link rel="stylesheet" href="/blog/styles.css">
|
||||||
|
<link
|
||||||
|
href="https://fonts.googleapis.com/css2?family=Roboto&family=Roboto+Slab:wght@600&display=swap"
|
||||||
|
rel="stylesheet">
|
||||||
|
<!-- <link rel="icon" href="/generative-energy/favicon.ico" sizes="any" /> -->
|
||||||
|
|
||||||
|
<meta name="description" content="Generative Energy - A page dedicated to Dr. Raymond Peat">
|
||||||
|
<meta property="og:image" content="icecream.png">
|
||||||
|
|
||||||
|
<!-- SSR HEAD OUTLET -->
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
<div id="app-root"><!-- SSR OUTLET --></ div>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
Reference in New Issue
Block a user