From ae63934d0935f374606ecd7289d924ba0436f01e Mon Sep 17 00:00:00 2001 From: slowsage <84777606+slowsage@users.noreply.github.com> Date: Sun, 16 Oct 2022 12:05:33 -0400 Subject: [PATCH 01/18] pnpm dev working --- package.json | 42 +- packages/kit-docs/package.json | 71 +- .../src/lib/components/layout/contexts.ts | 6 +- .../components/layout/useActiveHeaderLinks.ts | 2 +- packages/kit-docs/src/lib/loaders/index.ts | 42 +- .../src/lib/polyfills/focus-visible.js | 2 +- .../kit-docs/src/lib/stores/colorScheme.ts | 2 +- .../kit-docs/src/lib/stores/mediaQuery.ts | 2 +- packages/kit-docs/src/lib/stores/scroll.ts | 2 +- packages/kit-docs/src/node/handlers/index.ts | 37 +- .../src/node/markdown-plugin/index.ts | 1 + packages/kit-docs/src/routes/+layout.js | 9 + ..._layout-kit-docs.svelte => +layout.svelte} | 21 +- packages/kit-docs/src/routes/+page.js | 8 + packages/kit-docs/src/routes/+page.svelte | 0 ..._layout@kit-docs.svelte => +layout.svelte} | 0 .../kit-docs/src/routes/docs/+page.svelte | 0 .../+page.md} | 0 .../+page.md} | 0 .../+page.md} | 0 .../+page.md} | 0 .../+page.md} | 0 .../+page.md} | 0 .../+page.md} | 0 .../+page.md} | 0 .../+page.md} | 0 packages/kit-docs/src/routes/index.svelte | 11 - .../src/routes/kit-docs/[dir].sidebar.json.js | 3 - .../kit-docs/[dir].sidebar.json/+server.js | 3 + .../src/routes/kit-docs/[slug].meta.json.js | 3 - .../kit-docs/[slug].meta.json/+server.js | 3 + .../+server.js} | 40 +- packages/kit-docs/svelte.config.js | 12 +- pnpm-lock.yaml | 2183 ++++++++++++----- 34 files changed, 1692 insertions(+), 813 deletions(-) create mode 100644 packages/kit-docs/src/routes/+layout.js rename packages/kit-docs/src/routes/{__layout-kit-docs.svelte => +layout.svelte} (90%) create mode 100644 packages/kit-docs/src/routes/+page.js create mode 100644 packages/kit-docs/src/routes/+page.svelte rename packages/kit-docs/src/routes/docs/{__layout@kit-docs.svelte => +layout.svelte} (100%) create mode 100644 packages/kit-docs/src/routes/docs/+page.svelte rename packages/kit-docs/src/routes/docs/[...1]getting-started/{[...1]introduction.md => [...1]introduction/+page.md} (100%) rename packages/kit-docs/src/routes/docs/[...1]getting-started/{[...2]quickstart.md => [...2]quickstart/+page.md} (100%) rename packages/kit-docs/src/routes/docs/[...2]default-layout/{[...1]installation.md => [...1]installation/+page.md} (100%) rename packages/kit-docs/src/routes/docs/[...2]default-layout/{[...2]configuration.md => [...2]configuration/+page.md} (100%) rename packages/kit-docs/src/routes/docs/[...2]default-layout/{[...3]components.md => [...3]components/+page.md} (100%) rename packages/kit-docs/src/routes/docs/[...2]default-layout/{[...4]search.md => [...4]search/+page.md} (100%) rename packages/kit-docs/src/routes/docs/[...3]markdown/{[...1]components.md => [...1]components/+page.md} (100%) rename packages/kit-docs/src/routes/docs/[...3]markdown/{[...2]extensions.md => [...2]extensions/+page.md} (100%) rename packages/kit-docs/src/routes/docs/[...4]production/{[...6]deploying.md => [...6]deploying/+page.md} (100%) delete mode 100644 packages/kit-docs/src/routes/index.svelte delete mode 100644 packages/kit-docs/src/routes/kit-docs/[dir].sidebar.json.js create mode 100644 packages/kit-docs/src/routes/kit-docs/[dir].sidebar.json/+server.js delete mode 100644 packages/kit-docs/src/routes/kit-docs/[slug].meta.json.js create mode 100644 packages/kit-docs/src/routes/kit-docs/[slug].meta.json/+server.js rename packages/kit-docs/src/routes/{sitemap.xml.js => sitemap.xml/+server.js} (52%) diff --git a/package.json b/package.json index 6093aad..d73ec42 100644 --- a/package.json +++ b/package.json @@ -20,32 +20,32 @@ "release": "pnpm clean && pnpm build && node .scripts/release.js" }, "devDependencies": { - "@types/node": "^17.0.8", - "@typescript-eslint/eslint-plugin": "^4.28.4", - "@typescript-eslint/parser": "^4.24.0", - "conventional-changelog-cli": "^2.1.1", + "@types/node": "^18.8.4", + "@typescript-eslint/eslint-plugin": "^5.40.0", + "@typescript-eslint/parser": "^5.40.0", + "conventional-changelog-cli": "^2.2.2", "enquirer": "^2.3.6", - "esbuild": "^0.14.23", - "eslint": "^7.17.0", - "eslint-config-prettier": "^8.1.0", - "eslint-import-resolver-typescript": "^2.5.0", - "eslint-plugin-import": "^2.25.4", - "eslint-plugin-simple-import-sort": "^7.0.0", - "eslint-plugin-svelte3": "^3.2.1", + "esbuild": "^0.15.10", + "eslint": "^8.25.0", + "eslint-config-prettier": "^8.5.0", + "eslint-import-resolver-typescript": "^3.5.1", + "eslint-plugin-import": "^2.26.0", + "eslint-plugin-simple-import-sort": "^8.0.0", + "eslint-plugin-svelte3": "^4.0.0", "execa": "^6.1.0", - "fast-glob": "^3.2.7", - "husky": "^7.0.0", - "kleur": "^4.1.4", - "lint-staged": "^12.1.5", + "fast-glob": "^3.2.12", + "husky": "^8.0.1", + "kleur": "^4.1.5", + "lint-staged": "^13.0.3", "minimist": "^1.2.6", "npm-run-all": "^4.1.5", - "prettier": "^2.6.0", - "prettier-plugin-svelte": "^2.5.0", - "prettier-plugin-tailwindcss": "^0.1.7", + "prettier": "^2.7.1", + "prettier-plugin-svelte": "^2.8.0", + "prettier-plugin-tailwindcss": "^0.1.13", "rimraf": "^3.0.2", - "semver": "^7.3.7", - "svelte": "^3.46.4", - "typescript": "^4.5.4" + "semver": "^7.3.8", + "svelte": "^3.51.0", + "typescript": "^4.8.4" }, "lint-staged": { "*.{js,ts,svelte}": "eslint --cache --fix", diff --git a/packages/kit-docs/package.json b/packages/kit-docs/package.json index 25b07cb..9418548 100644 --- a/packages/kit-docs/package.json +++ b/packages/kit-docs/package.json @@ -38,7 +38,7 @@ }, "scripts": { "build": "run-s build:node kit:sync build:node:types build:client build:styles", - "build:client": "svelte-kit package && run-s build:client:types clean:client", + "build:client": "svelte-package && run-s build:client:types clean:client", "build:client:types": "api-extractor run && rimraf temp client/**/*.d.ts", "build:node": "pnpm build:node:ext --entry=src/node/index.ts --outdir=node --platform=node --bundle --requireshim", "build:node:ext": "node ../../.scripts/build.js --external=vite,@sveltejs,shiki", @@ -58,52 +58,53 @@ "kit:sync": "svelte-kit sync" }, "dependencies": { - "@types/lru-cache": "^7.4.0", + "@types/lru-cache": "^7.10.10", "@types/markdown-it": "^12.2.3", - "clsx": "^1.1.1", - "kleur": "^4.1.4", - "shiki": "^0.10.1", + "clsx": "^1.2.1", + "kleur": "^4.1.5", + "shiki": "^0.11.1", "svelte-class-transition": "^1.0.4" }, "devDependencies": { - "@algolia/client-search": "^4.13.0", - "@docsearch/css": "^3.0.0", - "@docsearch/js": "^3.0.0", - "@iconify-json/ri": "^1.1.1", - "@microsoft/api-extractor": "^7.20.0", - "@rollup/pluginutils": "^4.2.0", - "@sveltejs/adapter-auto": "next", - "@sveltejs/adapter-static": "next", - "@sveltejs/kit": "next", + "@algolia/client-search": "^4.14.2", + "@docsearch/css": "^3.2.1", + "@docsearch/js": "^3.2.1", + "@iconify-json/ri": "^1.1.3", + "@microsoft/api-extractor": "^7.33.2", + "@rollup/pluginutils": "^5.0.1", + "@sveltejs/adapter-auto": "1.0.0-next.83", + "@sveltejs/adapter-static": "1.0.0-next.44", + "@sveltejs/kit": "1.0.0-next.516", + "@sveltejs/package": "1.0.0-next.5", "@svelteness/kit-docs": "link:.", - "@tailwindcss/typography": "^0.5.2", - "@types/react": "^17.0.39", - "@types/react-dom": "^17.0.14", - "autoprefixer": "^10.4.4", - "globby": "^13.1.1", + "@tailwindcss/typography": "^0.5.7", + "@types/react": "^18.0.21", + "@types/react-dom": "^18.0.6", + "autoprefixer": "^10.4.12", + "globby": "^13.1.2", "gray-matter": "^4.0.3", - "lru-cache": "^7.4.4", - "magic-string": "^0.26.1", - "markdown-it": "^12.3.2", - "markdown-it-anchor": "^8.4.1", + "lru-cache": "^7.14.0", + "magic-string": "^0.26.7", + "markdown-it": "^13.0.1", + "markdown-it-anchor": "^8.6.5", "markdown-it-container": "^3.0.0", - "markdown-it-emoji": "^2.0.0", + "markdown-it-emoji": "^2.0.2", "npm-run-all": "^4.1.5", "picomatch": "^2.3.1", - "postcss": "^8.4.12", - "react": "^17.0.2", - "react-dom": "^17.0.2", + "postcss": "^8.4.18", + "react": "^18.2.0", + "react-dom": "^18.2.0", "rimraf": "^3.0.2", "sirv-cli": "^2.0.2", - "svelte": "^3.49.0", - "svelte-preprocess": "^4.10.4", - "svelte2tsx": "^0.5.6", - "tailwindcss": "^3.0.23", + "svelte": "^3.52.0", + "svelte-preprocess": "^4.10.7", + "svelte2tsx": "^0.5.20", + "tailwindcss": "^3.1.8", "toml": "^3.0.0", - "tslib": "^2.3.0", - "typescript": "^4.5.4", - "unplugin-icons": "^0.14.7", - "vite": "^3.0.0" + "tslib": "^2.4.0", + "typescript": "^4.8.4", + "unplugin-icons": "^0.14.12", + "vite": "^3.1.8" }, "publishConfig": { "access": "public" diff --git a/packages/kit-docs/src/lib/components/layout/contexts.ts b/packages/kit-docs/src/lib/components/layout/contexts.ts index 1db9c4a..58d5cce 100644 --- a/packages/kit-docs/src/lib/components/layout/contexts.ts +++ b/packages/kit-docs/src/lib/components/layout/contexts.ts @@ -106,9 +106,9 @@ export function normalizeSidebarConfig(config?: SidebarConfig): ResolvedSidebarC for (const categoryLink of categoryLinks) { const link: SidebarLink = isString(categoryLink) ? { - title: kebabToTitleCase(categoryLink), - slug: `${baseUrl}/${categorySlug}/${categoryLink}`, - } + title: kebabToTitleCase(categoryLink), + slug: `${baseUrl}/${categorySlug}/${categoryLink}`, + } : categoryLink; if (!links[categoryName]) links[categoryName] = []; diff --git a/packages/kit-docs/src/lib/components/layout/useActiveHeaderLinks.ts b/packages/kit-docs/src/lib/components/layout/useActiveHeaderLinks.ts index 59ec425..9e87f84 100644 --- a/packages/kit-docs/src/lib/components/layout/useActiveHeaderLinks.ts +++ b/packages/kit-docs/src/lib/components/layout/useActiveHeaderLinks.ts @@ -1,7 +1,7 @@ import { onMount, tick } from 'svelte'; import { get } from 'svelte/store'; -import { browser } from '$app/env'; +import { browser } from '$app/environment'; import { goto } from '$app/navigation'; import { isExtraLargeScreen } from '$lib/stores/isLargeScreen'; import { kitDocs } from '$lib/stores/kitDocs.js'; diff --git a/packages/kit-docs/src/lib/loaders/index.ts b/packages/kit-docs/src/lib/loaders/index.ts index 8da9c23..ed29f84 100644 --- a/packages/kit-docs/src/lib/loaders/index.ts +++ b/packages/kit-docs/src/lib/loaders/index.ts @@ -1,4 +1,5 @@ -import type { Load } from '@sveltejs/kit'; +import type { LoadEvent } from '@sveltejs/kit'; +import { resourceLimits } from 'worker_threads'; import type { ResolvedSidebarConfig } from '$lib/components/layout/contexts.js'; import type { MarkdownMeta } from '$lib/stores/kitDocs.js'; @@ -24,15 +25,12 @@ export type LoaderFetchFn = (info: RequestInfo, init?: RequestInit) => Promise { + const slug = event.url.pathname; try { - const res = await fetch( - `/kit-docs/${ - slug === '/' ? 'index' : slugToRequestParam(slug.replace(/\.html$/, '')) - }.meta.json`, - ); + const url = `/kit-docs/${slug === '/' ? 'index' : slugToRequestParam(slug.replace(/\.html$/, ''))}`; + const res = await event.fetch(url + '.meta.json'); return await res.json(); } catch (e) { return null; @@ -50,16 +48,15 @@ export type SidebarLoaderPath = string | { [path: string]: string }; */ export async function loadKitDocsSidebar( path: SidebarLoaderPath, - { url, fetch }: { url: URL; fetch: LoaderFetchFn }, + event: LoadEvent, ): Promise { - const matchedPath = matchSidebarPath(url, path); - + const matchedPath = matchSidebarPath(event.url, path); if (!matchedPath) { return null; } try { - const res = await fetch(`/kit-docs/${slugToRequestParam(matchedPath)}.sidebar.json`); + const res = await event.fetch(`/kit-docs/${slugToRequestParam(matchedPath)}.sidebar.json`); return res.json(); } catch (e) { return null; @@ -70,7 +67,7 @@ export function matchSidebarPath(url: URL, path: SidebarLoaderPath): string | nu if (isString(path)) return path; const currentPath = url.pathname; - // Match deep paths first. + // Match deep paths first.createKitDocsLoader const sortedPaths = Object.keys(path).sort((a, b) => b.length - a.length); for (const possiblePath of sortedPaths) { @@ -102,20 +99,17 @@ export type KitDocsLoaderOptions = { sidebar?: SidebarLoaderPath; }; -export function createKitDocsLoader(options: KitDocsLoaderOptions = {}): Load { - return async ({ url, fetch }): Promise => { - const meta = await loadKitDocsMeta(url.pathname, { fetch }); - return { - props: options.sidebar - ? { meta, sidebar: await loadKitDocsSidebar(options.sidebar, { url, fetch }) } - : { meta }, +export function createKitDocsLoader(options: KitDocsLoaderOptions = {}) { + return async (event: LoadEvent): Promise => { + const meta = await loadKitDocsMeta(event) as MarkdownMeta; + const result = { + ...(options.sidebar ? { meta, sidebar: await loadKitDocsSidebar(options.sidebar, event) as ResolvedSidebarConfig } : { meta }), }; + return result; }; } export type LoadKitDocsResult = { - props: { - meta: MarkdownMeta; - sidebar?: ResolvedSidebarConfig; - }; + meta: MarkdownMeta; + sidebar?: ResolvedSidebarConfig; }; diff --git a/packages/kit-docs/src/lib/polyfills/focus-visible.js b/packages/kit-docs/src/lib/polyfills/focus-visible.js index 7667622..6b1179a 100644 --- a/packages/kit-docs/src/lib/polyfills/focus-visible.js +++ b/packages/kit-docs/src/lib/polyfills/focus-visible.js @@ -1,6 +1,6 @@ // @ts-nocheck -import { browser } from '$app/env'; +import { browser } from '$app/environment'; /** * Applies the :focus-visible polyfill at the given scope. diff --git a/packages/kit-docs/src/lib/stores/colorScheme.ts b/packages/kit-docs/src/lib/stores/colorScheme.ts index 9aa5259..c2ff161 100644 --- a/packages/kit-docs/src/lib/stores/colorScheme.ts +++ b/packages/kit-docs/src/lib/stores/colorScheme.ts @@ -1,6 +1,6 @@ import { derived, get, writable } from 'svelte/store'; -import { browser } from '$app/env'; +import { browser } from '$app/environment'; import { mediaQuery } from './mediaQuery.js'; diff --git a/packages/kit-docs/src/lib/stores/mediaQuery.ts b/packages/kit-docs/src/lib/stores/mediaQuery.ts index 30d8102..969a6ab 100644 --- a/packages/kit-docs/src/lib/stores/mediaQuery.ts +++ b/packages/kit-docs/src/lib/stores/mediaQuery.ts @@ -1,6 +1,6 @@ import { readable } from 'svelte/store'; -import { browser } from '$app/env'; +import { browser } from '$app/environment'; export function mediaQuery(query: string) { if (!browser) return readable(false); diff --git a/packages/kit-docs/src/lib/stores/scroll.ts b/packages/kit-docs/src/lib/stores/scroll.ts index d92c04a..6dc03df 100644 --- a/packages/kit-docs/src/lib/stores/scroll.ts +++ b/packages/kit-docs/src/lib/stores/scroll.ts @@ -1,6 +1,6 @@ import { readable } from 'svelte/store'; -import { browser } from '$app/env'; +import { browser } from '$app/environment'; import { throttleAndDebounce } from '$lib/utils/timing'; export const scrollTop = readable(0, (set) => { diff --git a/packages/kit-docs/src/node/handlers/index.ts b/packages/kit-docs/src/node/handlers/index.ts index 6cdd4e5..7695978 100644 --- a/packages/kit-docs/src/node/handlers/index.ts +++ b/packages/kit-docs/src/node/handlers/index.ts @@ -1,4 +1,4 @@ -import { createFilter, type FilterPattern } from '@rollup/pluginutils'; +import { type FilterPattern, createFilter } from '@rollup/pluginutils'; import type { RequestHandler } from '@sveltejs/kit'; import { readFileSync } from 'fs'; import { globbySync } from 'globby'; @@ -6,10 +6,10 @@ import kleur from 'kleur'; import path from 'path'; import { - createMarkdownParser, - getFrontmatter, type MarkdownParser, type ParsedMarkdownResult, + createMarkdownParser, + getFrontmatter, parseMarkdown, } from '../markdown-plugin/parser'; import { readDirDeepSync, sortOrderedFiles } from '../utils/fs'; @@ -55,9 +55,12 @@ export type MetaTransform = ( * Careful this function will throw if it can't match the `slug` param to a file. */ export async function handleMetaRequest(slugParam: string, options: HandleMetaRequestOptions = {}) { + const { filter, extensions, resolve, transform } = options; const slug = paramToSlug(slugParam); + + const resolverArgs: Parameters = [slug, { resolve: resolveSlug }]; let resolution: ResolvedFile | FalsyValue = null; @@ -77,7 +80,6 @@ export async function handleMetaRequest(slugParam: string, options: HandleMetaRe const resolvedFile = isString(resolution) ? resolution : resolution?.file; const resolvedTransform = isString(resolution) ? null : resolution?.transform; - if (!resolvedFile) { throw Error('Could not find file.'); } @@ -86,9 +88,9 @@ export async function handleMetaRequest(slugParam: string, options: HandleMetaRe return null; } + const filePath = path.isAbsolute(resolvedFile) ? resolvedFile : path.resolve(CWD, resolvedFile); const content = readFileSync(filePath).toString(); - if (!parser) { parser = await createMarkdownParser(); } @@ -110,7 +112,6 @@ export async function handleMetaRequest(slugParam: string, options: HandleMetaRe await runTransform(transform); await runTransform(resolvedTransform); - return result; } @@ -132,13 +133,12 @@ export function createMetaRequestHandler( return async ({ params }) => { try { - const res = await handleMetaRequest(params.slug, { filter, ...handlerOptions }); + const res = await handleMetaRequest(params.slug as string, { filter, ...handlerOptions }); if (!res) { - return { body: null }; + return new Response(null); } - - return { body: res.meta as any }; + return new Response(JSON.stringify(res.meta)); } catch (e) { if (debug) { console.log(kleur.bold(kleur.red(`\n[kit-docs]: failed to handle meta request.`))); @@ -146,7 +146,7 @@ export function createMetaRequestHandler( } } - return { body: null }; + return new Response(null); }; } @@ -203,12 +203,11 @@ export async function handleSidebarRequest( const relativeFilePath = path.relative(ROUTES_DIR, filePath); const dirs = path.dirname(relativeFilePath).split('/'); const cleanPath = cleanFilePath(filePath); - const cleanDirs = path.dirname(cleanPath).split('/'); + const cleanDirs = path.dirname(cleanPath).split('/').slice(0, -1); const cleanDirsReversed = cleanDirs.slice().reverse(); const isIndexFile = /\/index\./.test(cleanPath); const isShallowRoot = cleanDirs.length === 1; const isRoot = isShallowRoot || deepMatchRE.test(dirs[1]); - let isDeepMatch = false; let isValidDeepMatch = false; @@ -271,7 +270,7 @@ export async function handleSidebarRequest( const category = formatCategory( (await resolveCategory?.({ ...resolverData, resolve: resolveDefaultCategory })) ?? - resolveDefaultCategory(), + resolveDefaultCategory(), ); const title = @@ -313,12 +312,11 @@ export function createSidebarRequestHandler( return async ({ params }) => { try { - const { links } = await handleSidebarRequest(params.dir, { + const { links } = await handleSidebarRequest(params.dir as string, { filter, ...handlerOptions, }); - - return { body: { links } }; + return new Response(JSON.stringify({ links })); } catch (e) { if (debug) { console.log(kleur.bold(kleur.red(`\n[kit-docs]: failed to handle sidebar request.`))); @@ -326,7 +324,7 @@ export function createSidebarRequestHandler( } } - return { body: null }; + return new Response(null); }; } @@ -373,7 +371,6 @@ export function resolveSlug(slug: string, options: ResolveSlugOptions = {}): str if (matchedSlug !== `src/routes/${slug}` || !exts.some((ext) => file.endsWith(ext))) { return null; } - return file; } @@ -402,5 +399,5 @@ export function paramToDir(param: string) { */ export function slugifyFilePath(filePath: string) { const cleanPath = cleanFilePath(filePath); - return `/${cleanPath.replace(path.extname(cleanPath), '').replace(/\/?index$/, '')}`; + return `/${cleanPath.replace(path.extname(cleanPath), '').replace(/\/?index$/, '').replace(/\/\+page$/, '')}`; } diff --git a/packages/kit-docs/src/node/markdown-plugin/index.ts b/packages/kit-docs/src/node/markdown-plugin/index.ts index 6771aec..032d24d 100644 --- a/packages/kit-docs/src/node/markdown-plugin/index.ts +++ b/packages/kit-docs/src/node/markdown-plugin/index.ts @@ -162,6 +162,7 @@ export function kitDocsMarkdownPlugin(options: MarkdownPluginOptions = {}): Plug transform(code, id) { if (filter(id)) { const filePath = normalizePath(id); + const { component } = parseMarkdownToSvelte(parser, code, filePath, parseOptions()); files.add(filePath); return component; diff --git a/packages/kit-docs/src/routes/+layout.js b/packages/kit-docs/src/routes/+layout.js new file mode 100644 index 0000000..85e1846 --- /dev/null +++ b/packages/kit-docs/src/routes/+layout.js @@ -0,0 +1,9 @@ +export const prerender = true; +import { createKitDocsLoader } from '$lib/loaders'; + +export const load = createKitDocsLoader({ + sidebar: { + '/': null, + '/docs': '/docs', + }, +}); diff --git a/packages/kit-docs/src/routes/__layout-kit-docs.svelte b/packages/kit-docs/src/routes/+layout.svelte similarity index 90% rename from packages/kit-docs/src/routes/__layout-kit-docs.svelte rename to packages/kit-docs/src/routes/+layout.svelte index b92f249..13e3427 100644 --- a/packages/kit-docs/src/routes/__layout-kit-docs.svelte +++ b/packages/kit-docs/src/routes/+layout.svelte @@ -1,14 +1,3 @@ - - diff --git a/packages/create-kit-docs/template-base/src/routes/index@kit-docs.md b/packages/create-kit-docs/template-base/src/routes/index@kit-docs.md deleted file mode 100644 index 07a7b13..0000000 --- a/packages/create-kit-docs/template-base/src/routes/index@kit-docs.md +++ /dev/null @@ -1,27 +0,0 @@ -
- -# Welcome to KitDocs - -This your home page. Feel free to change it to a Svelte file by renaming it -to `index@kit-docs.svelte`. - -## Redirecting - -You might want the home page to be the first page of your documentation. If this is the case, -rename this file to `index.svelte` and replace the content of this file with the following: - -```svelte copy - -``` - -
diff --git a/packages/create-kit-docs/template-base/svelte.config.js b/packages/create-kit-docs/template-base/svelte.config.js index 5b6664a..87ac3fb 100644 --- a/packages/create-kit-docs/template-base/svelte.config.js +++ b/packages/create-kit-docs/template-base/svelte.config.js @@ -12,6 +12,11 @@ const config = { entries: ['*'], }, }, + + package: { + dir: 'client', + emitTypes: true, + }, }; export default config; diff --git a/packages/create-kit-docs/template-theme/src/routes/__layout-kit-docs.svelte b/packages/create-kit-docs/template-theme/src/routes/+layout.svelte similarity index 74% rename from packages/create-kit-docs/template-theme/src/routes/__layout-kit-docs.svelte rename to packages/create-kit-docs/template-theme/src/routes/+layout.svelte index 03b41c5..30d28b3 100644 --- a/packages/create-kit-docs/template-theme/src/routes/__layout-kit-docs.svelte +++ b/packages/create-kit-docs/template-theme/src/routes/+layout.svelte @@ -1,14 +1,3 @@ - - + Promise { +export async function loadKitDocsMeta(event: LoadEvent): Promise { const slug = event.url.pathname; try { - const url = `/kit-docs/${slug === '/' ? 'index' : slugToRequestParam(slug.replace(/\.html$/, ''))}`; + const url = `/kit-docs/${ + slug === '/' ? 'index' : slugToRequestParam(slug.replace(/\.html$/, '')) + }`; const res = await event.fetch(url + '.meta.json'); return await res.json(); @@ -38,7 +38,7 @@ export async function loadKitDocsMeta( } } -export type SidebarLoaderPath = string | { [path: string]: string }; +export type SidebarLoaderPath = string | { [path: string]: string | null }; /** * @param path - A path relative to the `routes/` directory. Markdown files will be resolved from @@ -52,9 +52,8 @@ export async function loadKitDocsSidebar( event: LoadEvent, ): Promise { const matchedPath = matchSidebarPath(event.url, path); - if (!matchedPath) { - return null; - } + + if (!matchedPath) return null; try { const res = await event.fetch(`/kit-docs/${slugToRequestParam(matchedPath)}.sidebar.json`); @@ -68,7 +67,8 @@ export function matchSidebarPath(url: URL, path: SidebarLoaderPath): string | nu if (isString(path)) return path; const currentPath = url.pathname; - // Match deep paths first.createKitDocsLoader + + // Match deep paths first const sortedPaths = Object.keys(path).sort((a, b) => b.length - a.length); for (const possiblePath of sortedPaths) { @@ -102,9 +102,14 @@ export type KitDocsLoaderOptions = { export function createKitDocsLoader(options: KitDocsLoaderOptions = {}) { return async (event: LoadEvent): Promise => { - const meta = await loadKitDocsMeta(event) as MarkdownMeta; + const meta = (await loadKitDocsMeta(event)) as MarkdownMeta; const result = { - ...(options.sidebar ? { meta, sidebar: await loadKitDocsSidebar(options.sidebar, event) as ResolvedSidebarConfig } : { meta }), + ...(options.sidebar + ? { + meta, + sidebar: (await loadKitDocsSidebar(options.sidebar, event)) as ResolvedSidebarConfig, + } + : { meta }), }; return result; }; diff --git a/packages/kit-docs/src/node/handlers/index.ts b/packages/kit-docs/src/node/handlers/index.ts index 5e97f6d..8994c2b 100644 --- a/packages/kit-docs/src/node/handlers/index.ts +++ b/packages/kit-docs/src/node/handlers/index.ts @@ -55,12 +55,10 @@ export type MetaTransform = ( * Careful this function will throw if it can't match the `slug` param to a file. */ export async function handleMetaRequest(slugParam: string, options: HandleMetaRequestOptions = {}) { - const { filter, extensions, resolve, transform } = options; const slug = paramToSlug(slugParam); - const resolverArgs: Parameters = [slug, { resolve: resolveSlug }]; let resolution: ResolvedFile | FalsyValue = null; @@ -88,7 +86,6 @@ export async function handleMetaRequest(slugParam: string, options: HandleMetaRe return null; } - const filePath = path.isAbsolute(resolvedFile) ? resolvedFile : path.resolve(CWD, resolvedFile); const content = readFileSync(filePath).toString(); if (!parser) { @@ -122,7 +119,6 @@ export type CreateMetaRequestHandlerOptions = { } & HandleMetaRequestOptions; export function createMetaRequestHandler( - wrapResponse = (x) => x, options: CreateMetaRequestHandlerOptions = {}, ): RequestHandler { const { include, exclude, debug, ...handlerOptions } = options; @@ -137,9 +133,9 @@ export function createMetaRequestHandler( const res = await handleMetaRequest(params.slug as string, { filter, ...handlerOptions }); if (!res) { - return wrapResponse(null); + return new Response(null); } - return wrapResponse(JSON.stringify(res.meta)); + return new Response(JSON.stringify(res.meta)); } catch (e) { if (debug) { console.log(kleur.bold(kleur.red(`\n[kit-docs]: failed to handle meta request.`))); @@ -147,7 +143,7 @@ export function createMetaRequestHandler( } } - return wrapResponse(null); + return new Response(null); }; } @@ -271,7 +267,7 @@ export async function handleSidebarRequest( const category = formatCategory( (await resolveCategory?.({ ...resolverData, resolve: resolveDefaultCategory })) ?? - resolveDefaultCategory(), + resolveDefaultCategory(), ); const title = @@ -302,9 +298,7 @@ export type CreateSidebarRequestHandlerOptions = { } & HandleSidebarRequestOptions; export function createSidebarRequestHandler( - wrapResponse = (x) => x, options: CreateSidebarRequestHandlerOptions = {}, - ): RequestHandler { const { include, debug, exclude, ...handlerOptions } = options; @@ -319,7 +313,8 @@ export function createSidebarRequestHandler( filter, ...handlerOptions, }); - return wrapResponse(JSON.stringify({ links })); + + return new Response(JSON.stringify({ links })); } catch (e) { if (debug) { console.log(kleur.bold(kleur.red(`\n[kit-docs]: failed to handle sidebar request.`))); @@ -327,7 +322,7 @@ export function createSidebarRequestHandler( } } - return wrapResponse(null); + return new Response(null); }; } @@ -402,5 +397,8 @@ export function paramToDir(param: string) { */ export function slugifyFilePath(filePath: string) { const cleanPath = cleanFilePath(filePath); - return `/${cleanPath.replace(path.extname(cleanPath), '').replace(/\/?index$/, '').replace(/\/\+page$/, '')}`; + return `/${cleanPath + .replace(path.extname(cleanPath), '') + .replace(/\/?index$/, '') + .replace(/\/\+page$/, '')}`; } diff --git a/packages/kit-docs/src/node/highlight-plugin.ts b/packages/kit-docs/src/node/highlight-plugin.ts index ab3182a..6a1ed73 100644 --- a/packages/kit-docs/src/node/highlight-plugin.ts +++ b/packages/kit-docs/src/node/highlight-plugin.ts @@ -1,9 +1,9 @@ import path from 'path'; import { - getHighlighter, type Highlighter, type HighlighterOptions, type Lang, + getHighlighter, renderToHtml, } from 'shiki'; import { type Plugin } from 'vite'; diff --git a/packages/kit-docs/src/node/index.ts b/packages/kit-docs/src/node/index.ts index 755ffb8..da6a09b 100644 --- a/packages/kit-docs/src/node/index.ts +++ b/packages/kit-docs/src/node/index.ts @@ -1,7 +1,7 @@ export * from './handlers'; export * from './highlight-plugin'; export * from './kit-docs-plugin'; +export { kitDocsPlugin as default } from './kit-docs-plugin'; export * from './markdown-plugin'; export * from './markdown-plugin/parser'; export { kebabToTitleCase } from './utils/string'; -export { kitDocsPlugin as default } from './kit-docs-plugin'; diff --git a/packages/kit-docs/src/node/kit-docs-plugin.ts b/packages/kit-docs/src/node/kit-docs-plugin.ts index 566d167..75f8f09 100644 --- a/packages/kit-docs/src/node/kit-docs-plugin.ts +++ b/packages/kit-docs/src/node/kit-docs-plugin.ts @@ -3,7 +3,7 @@ import { type HighlighterOptions } from 'shiki'; import { type Plugin } from 'vite'; import { kitDocsHighlightPlugin } from './highlight-plugin'; -import { kitDocsMarkdownPlugin, type MarkdownPluginOptions } from './markdown-plugin'; +import { type MarkdownPluginOptions, kitDocsMarkdownPlugin } from './markdown-plugin'; const __cwd = process.cwd(); diff --git a/packages/kit-docs/src/node/markdown-plugin/parser/plugins/linksPlugin.ts b/packages/kit-docs/src/node/markdown-plugin/parser/plugins/linksPlugin.ts index 485277b..be22589 100644 --- a/packages/kit-docs/src/node/markdown-plugin/parser/plugins/linksPlugin.ts +++ b/packages/kit-docs/src/node/markdown-plugin/parser/plugins/linksPlugin.ts @@ -46,7 +46,7 @@ export const linksPlugin: PluginSimple = (parser) => { const slug = relative(ROUTES_DIR, absolutePath) .replace(restParamsRe, '') - .replace(/\/index/, '') + .replace(/\/\+page/, '') .replace(/\.(md|html)/, ''); // Set new path. diff --git a/packages/kit-docs/src/routes/+layout.js b/packages/kit-docs/src/routes/+layout.js index b0a646e..e1178c2 100644 --- a/packages/kit-docs/src/routes/+layout.js +++ b/packages/kit-docs/src/routes/+layout.js @@ -1,5 +1,7 @@ -export const prerender = true; import { createKitDocsLoader } from '$lib/loaders'; + +export const prerender = true; + /** @type {import('./$types').LayoutLoad} */ export const load = createKitDocsLoader({ sidebar: { diff --git a/packages/kit-docs/src/routes/+layout.svelte b/packages/kit-docs/src/routes/+layout.svelte index 45dc9ec..7bb8931 100644 --- a/packages/kit-docs/src/routes/+layout.svelte +++ b/packages/kit-docs/src/routes/+layout.svelte @@ -15,10 +15,10 @@ // import '@docsearch/css'; // import '$lib/styles/docsearch.css'; // import { Algolia } from '$lib/algolia'; + /** @type {import('./$types').LayoutData} */ export let data; - let { meta, sidebar } = data; $: ({ meta, sidebar } = data); /** @type {import('$lib').NavbarConfig} */ @@ -81,6 +81,7 @@