
Product
Socket Now Protects the Firefox Extension Ecosystem
Socket is bringing experimental protection to Firefox, scanning 97,000+ extensions in Mozilla's official directory for malware and risky updates.
Markdown pages plugin for Void — .md files as first-class routes with zero client JS, islands support, and Shiki syntax highlighting.
// vite.config.ts
import { defineConfig } from 'vite';
import { voidPlugin } from 'void';
import { voidVue } from '@void/vue/plugin';
import { voidMarkdown } from '@void/md/plugin';
export default defineConfig({
plugins: [voidPlugin(), voidVue(), voidMarkdown()],
});
Works with any framework adapter — auto-detects Vue, React, Svelte, or Solid from the plugin list.
voidMarkdown(options?) returns a Vite plugin array (Plugin[]). The plugin runs with enforce: "pre".
Options:
shiki?.themes — { light: string; dark: string } (default: github-light / github-dark)shiki?.langs — additional Shiki languages to load (default: all bundled languages, lazy-loaded)The plugin exposes an API:
api.getClientScripts() — returns Map<string, string> of component ID → client code (used by the islands plugin)Import from @void/md:
useFrontmatter() — access the current page's frontmatter object. Uses framework-native context (provide/inject for Vue, createContext/useContext for React/Solid, setContext/getContext for Svelte).@void/md — resolves to useFrontmatter() runtime@void/md/pages — flat array of all MdPage objects (HMR-aware), useful for building navs, sidebars, and search indexesimport pages from '@void/md/pages';
// MdPage { path, title, frontmatter, headings }
.md files in the pages/ directory become routes. They compile to static HTML at build time with zero client JS by default — auto-prerendered like static island pages.
---
title: Getting Started
author: Jane
---
# Getting Started
Regular markdown content with **full** syntax support.
YAML frontmatter between --- fences. Title is extracted from frontmatter.title or the first <h1>.
Embed interactive components via a <script> block with island import attributes:
---
title: Interactive Page
---
<script>
import Counter from "../components/Counter.vue" with { island: "visible" }
</script>
# Page with Islands
Static content above, interactive island below:
<Counter />
Island strategies: idle (default), visible, media(...).
Regular imports and statements in <script> blocks (without island attribute) are bundled as a client module, code-split per page:
<script>
import { initAnalytics } from "../lib/analytics"
initAnalytics()
</script>
# My Page
Content here.
Full VitePress-parity feature set:
{1,3-5} meta in code fences[!code ++], [!code --], [!code highlight], [!code focus], [!code error], [!code warning]:line-numbers / :no-line-numbers per fence, {=N} start line<<< ./file.ext with region and line range support:::tip, :::info, :::warning, :::danger, :::details> [!NOTE], > [!TIP], > [!WARNING], > [!IMPORTANT], > [!CAUTION]:emoji_name: shortcodes{.class #id} on elements via markdown-it-attrs[[toc]] directiveloading="lazy" on imagestarget="_blank", internal .md links normalizedTwo CSS exports for styling markdown content:
@void/md/theme.css — full standalone theme (reset + prose + code + containers)@void/md/theme-content.css — content-only styles scoped to .void-md (prose + code + containers)// In your layout or entry
import '@void/md/theme.css'; // or theme-content.css
extractScript() strips <script> blocks and collects island imports → compile() runs gray-matter + markdown-exit + Shiki → emit-{framework}() generates a framework-specific virtual componentextractMetadata() parses frontmatter + headings without running Shiki, used for @void/md/pages scanningdata-island markers; pages without islands emit static HTML with a frontmatter context provider/@void-md-svelte/ or /@void-md-solid/) so Vite processes through the framework's own plugintest/unit/compile.test.ts — compilation pipeline: basic, frontmatter, title extraction, headings, Shiki, emoji, anchorstest/unit/extract-script.test.ts — script extraction: island imports, client code, edge casestest/unit/plugins.test.ts — markdown-it plugins: containers, GitHub alerts, links, images, line numbers, emoji, TOCtest/unit/emit-vue.test.ts — Vue component emission with and without islandstest/unit/emit-react.test.ts — React component emission with and without islandstest/unit/emit-svelte.test.ts — Svelte component emission with and without islandstest/unit/emit-solid.test.ts — Solid component emission with and without islandsFAQs
Unknown package
The npm package @void/md receives a total of 296 weekly downloads. As such, @void/md popularity was classified as not popular.
We found that @void/md demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 2 open source maintainers collaborating on the project.

Product
Socket is bringing experimental protection to Firefox, scanning 97,000+ extensions in Mozilla's official directory for malware and risky updates.

Research
/Security News
Three compromised Rust crates pulled in a malicious dependency that downloaded and executed cross-platform malware during Cargo builds.

Research
/Security News
Socket uncovered 77 linked Firefox extensions, including 40 that steal wallet secrets or credentials and 37 deceptive sports-score shells.