Skip to content

Commit

Permalink
docs: Use Oniguruma only on browsers
Browse files Browse the repository at this point in the history
  • Loading branch information
ciscorn committed Nov 28, 2024
1 parent dbd4b70 commit 804bedb
Show file tree
Hide file tree
Showing 3 changed files with 32 additions and 7 deletions.
2 changes: 1 addition & 1 deletion src/routes/components/[slug]/+page.svelte
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
</p>

<div class="prose max-w-none dark:prose-invert">
<data.Content />
<data.Content shiki={data.shiki} />
</div>
</div>
<aside class="sticky top-24 h-[calc(100vh-6rem)]">
Expand Down
26 changes: 22 additions & 4 deletions src/routes/components/[slug]/+page.ts
Original file line number Diff line number Diff line change
@@ -1,22 +1,40 @@
import { error } from '@sveltejs/kit';
import type { Component } from 'svelte';

import {
createHighlighterCoreSync,
createOnigurumaEngine,
createJavaScriptRegexEngine,
type HighlighterCore
} from 'shiki';
import svelte from 'shiki/langs/svelte.mjs';
import dark from 'shiki/themes/github-dark-default.mjs';
import { browser } from '$app/environment';

export const load = async ({ params }) => {
const { slug } = params;

const shiki = createHighlighterCoreSync({
themes: [dark],
langs: [svelte],
// Use the WASM version of Oniguruma on the browser, and the JS engine on the server
engine: browser ? await createOnigurumaEngine(import('shiki/wasm')) : createJavaScriptRegexEngine()
});

try {
const post = (await import(`$content/components/${slug}/content.svelte.md`)) as {
default: Component;
const post = (await import(`$content/examples/${slug}/content.svelte.md`)) as {
default: Component<{ shiki: HighlighterCore }>;
metadata: {
title: string;
description: string;
};
};
return {
Content: post.default,
meta: { ...post.metadata, slug }
meta: { ...post.metadata, slug },
shiki
};
} catch {
error(404, `Component '${slug}' not found`);
error(404, `Example '${slug}' not found`);
}
};
11 changes: 9 additions & 2 deletions src/routes/examples/[slug]/+page.ts
Original file line number Diff line number Diff line change
@@ -1,17 +1,24 @@
import { error } from '@sveltejs/kit';
import type { Component } from 'svelte';

import { createHighlighterCoreSync, createOnigurumaEngine, type HighlighterCore } from 'shiki';
import {
createHighlighterCoreSync,
createOnigurumaEngine,
createJavaScriptRegexEngine,
type HighlighterCore
} from 'shiki';
import svelte from 'shiki/langs/svelte.mjs';
import dark from 'shiki/themes/github-dark-default.mjs';
import { browser } from '$app/environment';

export const load = async ({ params }) => {
const { slug } = params;

const shiki = createHighlighterCoreSync({
themes: [dark],
langs: [svelte],
engine: await createOnigurumaEngine(import('shiki/wasm'))
// Use the WASM version of Oniguruma on the browser, and the JS engine on the server
engine: browser ? await createOnigurumaEngine(import('shiki/wasm')) : createJavaScriptRegexEngine()
});

try {
Expand Down

0 comments on commit 804bedb

Please sign in to comment.