Merge branch 'docs_spanish_translation' of https://github.com/caparra92/vitepress-es into docs_spanish_translation

pull/3859/head
Camilo Parra 1 year ago
commit 7f98c99e01

@ -104,19 +104,20 @@
"dependencies": {
"@docsearch/css": "^3.6.0",
"@docsearch/js": "^3.6.0",
"@shikijs/core": "^1.3.0",
"@shikijs/transformers": "^1.3.0",
"@types/markdown-it": "^14.0.1",
"@shikijs/core": "^1.4.0",
"@shikijs/transformers": "^1.4.0",
"@types/markdown-it": "^14.1.1",
"@vitejs/plugin-vue": "^5.0.4",
"@vue/devtools-api": "^7.0.27",
"@vue/shared": "^3.4.26",
"@vueuse/core": "^10.9.0",
"@vueuse/integrations": "^10.9.0",
"focus-trap": "^7.5.4",
"mark.js": "8.11.1",
"minisearch": "^6.3.0",
"shiki": "^1.3.0",
"vite": "^5.2.10",
"vue": "^3.4.25"
"shiki": "^1.4.0",
"vite": "^5.2.11",
"vue": "^3.4.26"
},
"devDependencies": {
"@clack/prompts": "^0.7.0",
@ -141,13 +142,12 @@
"@types/mark.js": "^8.11.12",
"@types/markdown-it-attrs": "^4.1.3",
"@types/markdown-it-container": "^2.0.10",
"@types/markdown-it-emoji": "^2.0.5",
"@types/markdown-it-emoji": "^3.0.1",
"@types/micromatch": "^4.0.7",
"@types/minimist": "^1.2.5",
"@types/node": "^20.12.7",
"@types/node": "^20.12.8",
"@types/postcss-prefix-selector": "^1.16.3",
"@types/prompts": "^2.4.9",
"@vue/shared": "^3.4.25",
"chokidar": "^3.6.0",
"conventional-changelog-cli": "^4.1.0",
"cross-spawn": "^7.0.3",
@ -161,7 +161,7 @@
"gray-matter": "^4.0.3",
"lint-staged": "^15.2.2",
"lodash.template": "^4.5.0",
"lru-cache": "^10.2.1",
"lru-cache": "^10.2.2",
"markdown-it": "^14.1.0",
"markdown-it-anchor": "^8.6.7",
"markdown-it-attrs": "^4.1.6",
@ -184,7 +184,7 @@
"prompts": "^2.4.2",
"punycode": "^2.3.1",
"rimraf": "^5.0.5",
"rollup": "^4.17.0",
"rollup": "^4.17.2",
"rollup-plugin-dts": "^6.1.0",
"rollup-plugin-esbuild": "^6.1.1",
"semver": "^7.6.0",
@ -194,8 +194,8 @@
"sort-package-json": "^2.10.0",
"supports-color": "^9.4.0",
"typescript": "^5.4.5",
"vitest": "^1.5.2",
"vue-tsc": "^2.0.14",
"vitest": "^1.5.3",
"vue-tsc": "2.0.14",
"wait-on": "^7.2.0"
},
"peerDependencies": {
@ -223,8 +223,8 @@
"ora>string-width": "^5"
},
"patchedDependencies": {
"@types/markdown-it@14.0.1": "patches/@types__markdown-it@14.0.1.patch",
"markdown-it-anchor@8.6.7": "patches/markdown-it-anchor@8.6.7.patch"
"markdown-it-anchor@8.6.7": "patches/markdown-it-anchor@8.6.7.patch",
"rollup-plugin-dts@6.1.0": "patches/rollup-plugin-dts@6.1.0.patch"
}
}
}

@ -1,13 +0,0 @@
diff --git a/package.json b/package.json
index 3b3cdfc4427a1a64fdd3b37604a7174e4646e423..afaea16b115554fcf15a905642562e881ece7ca6 100644
--- a/package.json
+++ b/package.json
@@ -27,7 +27,7 @@
}
],
"main": "",
- "types": "index.d.ts",
+ "types": "index.d.mts",
"exports": {
".": {
"import": "./index.d.mts",

@ -0,0 +1,13 @@
diff --git a/dist/rollup-plugin-dts.mjs b/dist/rollup-plugin-dts.mjs
index 4a9412285c48c37d03340a086c771f8e61fd82ac..c73cba3bf47550f69011366e37d2ae974f0c9fc0 100644
--- a/dist/rollup-plugin-dts.mjs
+++ b/dist/rollup-plugin-dts.mjs
@@ -675,6 +675,8 @@ function preProcess({ sourceFile }) {
const nextToken = children[idx + 1];
const isPunctuation = nextToken.kind >= ts.SyntaxKind.FirstPunctuation && nextToken.kind <= ts.SyntaxKind.LastPunctuation;
if (isPunctuation) {
+ const addSpace = code.slice(token.getEnd(), nextToken.getStart()) != " ";
+ code.appendLeft(nextToken.getStart(), `${addSpace ? " " : ""}${defaultExport}`);
code.appendLeft(nextToken.getStart(), defaultExport);
}
else {

File diff suppressed because it is too large Load Diff

@ -11,15 +11,15 @@ import replace from '@rollup/plugin-replace'
import alias from '@rollup/plugin-alias'
import dts from 'rollup-plugin-dts'
const ROOT = fileURLToPath(import.meta.url)
const r = (p: string) => resolve(ROOT, '..', p)
const require = createRequire(import.meta.url)
const pkg = require('./package.json')
const pkg = require(r('package.json'))
const DEV = !!process.env.DEV
const PROD = !DEV
const ROOT = fileURLToPath(import.meta.url)
const r = (p: string) => resolve(ROOT, '..', p)
const external = [
...Object.keys(pkg.dependencies),
...Object.keys(pkg.peerDependencies),
@ -29,11 +29,7 @@ const external = [
]
const plugins = [
alias({
entries: {
'readable-stream': 'stream'
}
}),
alias({ entries: { 'readable-stream': 'stream' } }),
replace({
// polyfill broken browser check from bundled deps
'navigator.userAgentData': 'undefined',
@ -69,21 +65,34 @@ const typesExternal = [
'fast-glob'
]
const dtsNode = dts({
respectExternal: true,
tsconfig: r('src/node/tsconfig.json')
})
const originalResolveId = dtsNode.resolveId
dtsNode.resolveId = async function (source, importer) {
const res = await (originalResolveId as Function).call(this, source, importer)
if (res?.id) res.id = await fs.realpath(res.id)
return res
}
const nodeTypes: RollupOptions = {
input: r('src/node/index.ts'),
output: {
format: 'esm',
file: 'dist/node/index.d.ts'
file: r('dist/node/index.d.ts')
},
external: typesExternal,
plugins: [dts({ respectExternal: true })]
plugins: [dtsNode]
}
const clientTypes: RollupOptions = {
input: r('dist/client-types/index.d.ts'),
output: {
format: 'esm',
file: 'dist/client/index.d.ts'
file: r('dist/client/index.d.ts')
},
external: typesExternal,
plugins: [
@ -99,10 +108,4 @@ const clientTypes: RollupOptions = {
]
}
const config = defineConfig([])
config.push(esmBuild)
config.push(nodeTypes)
config.push(clientTypes)
export default config
export default defineConfig([esmBuild, nodeTypes, clientTypes])

@ -156,7 +156,13 @@ export function createRouter(
latestPendingPath = null
route.path = inBrowser ? pendingPath : withBase(pendingPath)
route.component = fallbackComponent ? markRaw(fallbackComponent) : null
route.data = notFoundPageData
const relativePath = inBrowser
? pendingPath
.replace(/(^|\/)$/, '$1index')
.replace(/(\.html)?$/, '.md')
.replace(/^\//, '')
: '404.md'
route.data = { ...notFoundPageData, relativePath }
}
}
}

@ -1,55 +1,31 @@
<script setup lang="ts">
import { computed, onMounted, ref } from 'vue'
import { withBase } from 'vitepress'
import { useData } from './composables/data'
import { useLangs } from './composables/langs'
const { site } = useData()
const { localeLinks } = useLangs({ removeCurrent: false })
const locale = ref({
link: '/',
index: 'root'
})
onMounted(() => {
const path = window.location.pathname
.replace(site.value.base, '')
.replace(/(^.*?\/).*$/, '/$1')
if (localeLinks.value.length) {
locale.value =
localeLinks.value.find(({ link }) => link.startsWith(path)) ||
localeLinks.value[0]
}
})
const notFound = computed(() => ({
code: 404,
title: 'PAGE NOT FOUND',
quote:
"But if you don't change your direction, and if you keep looking, you may end up where you are heading.",
linkLabel: 'go to home',
linkText: 'Take me home',
...(locale.value.index === 'root'
? site.value.themeConfig?.notFound
: site.value.locales?.[locale.value.index]?.themeConfig?.notFound)
}))
const { theme } = useData()
const { currentLang } = useLangs()
</script>
<template>
<div class="NotFound">
<p class="code">{{ notFound.code }}</p>
<h1 class="title">{{ notFound.title }}</h1>
<p class="code">{{ theme.notFound?.code ?? '404' }}</p>
<h1 class="title">{{ theme.notFound?.title ?? 'PAGE NOT FOUND' }}</h1>
<div class="divider" />
<blockquote class="quote">{{ notFound.quote }}</blockquote>
<blockquote class="quote">
{{
theme.notFound?.quote ??
"But if you don't change your direction, and if you keep looking, you may end up where you are heading."
}}
</blockquote>
<div class="action">
<a
class="link"
:href="withBase(locale.link)"
:aria-label="notFound.linkLabel"
:href="withBase(currentLang.link)"
:aria-label="theme.notFound?.linkLabel ?? 'go to home'"
>
{{ notFound.linkText }}
{{ theme.notFound?.linkText ?? 'Take me home' }}
</a>
</div>
</div>

@ -2,13 +2,9 @@ import { computed } from 'vue'
import { ensureStartingSlash } from '../support/utils'
import { useData } from './data'
export function useLangs({
removeCurrent = true,
correspondingLink = false
} = {}) {
export function useLangs({ correspondingLink = false } = {}) {
const { site, localeIndex, page, theme, hash } = useData()
const currentLang = computed(() => ({
index: localeIndex.value,
label: site.value.locales[localeIndex.value]?.label,
link:
site.value.locales[localeIndex.value]?.link ||
@ -17,10 +13,9 @@ export function useLangs({
const localeLinks = computed(() =>
Object.entries(site.value.locales).flatMap(([key, value]) =>
removeCurrent && currentLang.value.label === value.label
currentLang.value.label === value.label
? []
: {
index: key,
text: value.label,
link:
normalizeLink(

@ -3,11 +3,8 @@
"compilerOptions": {
"baseUrl": ".",
"outDir": "../../dist/client",
"moduleResolution": "bundler",
"declaration": true,
"declarationDir": "../../dist/client-types",
"jsx": "preserve",
"lib": ["esnext", "dom", "dom.iterable"],
"types": ["vite/client"],
"paths": {
"vitepress": ["index.ts"],

@ -180,7 +180,7 @@ export async function renderPage(
${await renderHead(head)}
</head>
<body>${teleports?.body || ''}
<div id="app">${content}</div>
<div id="app">${page === '404.md' ? '' : content}</div>
${metadataScript.inHead ? '' : metadataScript.html}
${inlinedScript}
</body>

@ -18,7 +18,6 @@ import type { Options } from 'markdown-it'
import MarkdownIt from 'markdown-it'
import anchorPlugin from 'markdown-it-anchor'
import attrsPlugin from 'markdown-it-attrs'
// @ts-expect-error: types of markdown-it-emoji are not up-to-date
import { full as emojiPlugin } from 'markdown-it-emoji'
import type {
BuiltinTheme,
@ -112,6 +111,11 @@ export interface MarkdownOptions extends Options {
* Setup Shiki instance
*/
shikiSetup?: (shiki: Highlighter) => void | Promise<void>
/**
* The tooltip text for the copy button in code blocks
* @default 'Copy Code'
*/
codeCopyButtonTitle?: string
/* ==================== Markdown It Plugins ==================== */
@ -196,6 +200,7 @@ export const createMarkdownRenderer = async (
logger: Pick<Logger, 'warn'> = console
): Promise<MarkdownRenderer> => {
const theme = options.theme ?? { light: 'github-light', dark: 'github-dark' }
const codeCopyButtonTitle = options.codeCopyButtonTitle || 'Copy Code'
const hasSingleTheme = typeof theme === 'string' || 'name' in theme
const md = MarkdownIt({
@ -215,7 +220,7 @@ export const createMarkdownRenderer = async (
// custom plugins
md.use(componentPlugin, { ...options.component })
.use(highlightLinePlugin)
.use(preWrapperPlugin, { hasSingleTheme })
.use(preWrapperPlugin, { codeCopyButtonTitle, hasSingleTheme })
.use(snippetPlugin, srcDir)
.use(containerPlugin, { hasSingleTheme }, options.container)
.use(imagePlugin, options.image)
@ -230,7 +235,7 @@ export const createMarkdownRenderer = async (
md.use(gitHubAlertsPlugin)
}
// 3rd party plugins
// third party plugins
if (!options.attrs?.disable) {
md.use(attrsPlugin, options.attrs)
}

@ -1,6 +1,7 @@
import type MarkdownIt from 'markdown-it'
export interface Options {
codeCopyButtonTitle: string
hasSingleTheme: boolean
}
@ -17,10 +18,14 @@ export function preWrapperPlugin(md: MarkdownIt, options: Options) {
token.info = token.info.replace(/ active$/, '').replace(/ active /, ' ')
const lang = extractLang(token.info)
const rawCode = fence(...args)
return `<div class="language-${lang}${getAdaptiveThemeMarker(
options
)}${active}"><button title="Copy Code" class="copy"></button><span class="lang">${lang}</span>${rawCode}</div>`
return (
`<div class="language-${lang}${getAdaptiveThemeMarker(options)}${active}">` +
`<button title="${options.codeCopyButtonTitle}" class="copy"></button>` +
`<span class="lang">${lang}</span>` +
fence(...args) +
'</div>'
)
}
}

@ -1,10 +1,8 @@
{
"extends": "../../tsconfig.json",
"compilerOptions": {
"target": "es2022",
"baseUrl": ".",
"outDir": "../../dist/node",
"module": "esnext",
"types": ["node"],
"sourceMap": true
},

@ -24,7 +24,7 @@ const INDEX_OR_EXT_RE = /(?:(^|\/)index)?\.(?:md|html)$/
export const inBrowser = typeof document !== 'undefined'
export const notFoundPageData: PageData = {
relativePath: '',
relativePath: '404.md',
filePath: '',
title: '404',
description: 'Not Found',

@ -2,7 +2,7 @@
"compilerOptions": {
"module": "esnext",
"target": "esnext",
"moduleResolution": "node",
"moduleResolution": "bundler",
"esModuleInterop": true,
"strict": true,
"skipLibCheck": true,

6
types/shared.d.ts vendored

@ -7,7 +7,11 @@ export type Awaitable<T> = T | PromiseLike<T>
export interface PageData {
relativePath: string
filePath: string // differs from relativePath in case of path rewrites
/**
* differs from relativePath in case of path rewrites
* empty string if the page is virtual (e.g. 404 page)
*/
filePath: string
title: string
titleTemplate?: string | boolean
description: string

Loading…
Cancel
Save