svedocs-cli 0.1.0-beta.1 → 0.1.0-beta.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  runCreateSvedocsCli
4
- } from "./chunk-QD6TB2KV.js";
4
+ } from "./chunk-VMZTD7VT.js";
5
5
 
6
6
  // src/create-svedocs.ts
7
7
  var result = await runCreateSvedocsCli(process.argv.slice(2));
package/dist/index.d.ts CHANGED
@@ -9,12 +9,15 @@ type PackageManagerName = 'pnpm' | 'npm' | 'yarn' | 'bun';
9
9
 
10
10
  interface CreateSvedocsRuntime {
11
11
  env?: NodeJS.ProcessEnv;
12
+ fetch?: typeof fetch;
12
13
  readPackageManagerVersion?: (name: PackageManagerName) => Promise<string | undefined>;
13
14
  }
14
15
  declare function renderCreateSvedocsHelp(): string;
15
16
  declare function runCreateSvedocsCli(args: string[], runtime?: CreateSvedocsRuntime): Promise<CliResult>;
16
17
 
18
+ declare function renderUpgradeHelp(): string;
19
+
17
20
  declare function renderSvedocsHelp(): string;
18
21
  declare function runSvedocsCli(args: string[]): Promise<CliResult>;
19
22
 
20
- export { type CliResult, type CreateSvedocsRuntime, renderCreateSvedocsHelp, renderSvedocsHelp, runCreateSvedocsCli, runSvedocsCli };
23
+ export { type CliResult, type CreateSvedocsRuntime, renderCreateSvedocsHelp, renderSvedocsHelp, renderUpgradeHelp, runCreateSvedocsCli, runSvedocsCli };
package/dist/index.js CHANGED
@@ -1,12 +1,14 @@
1
1
  import {
2
2
  renderCreateSvedocsHelp,
3
3
  renderSvedocsHelp,
4
+ renderUpgradeHelp,
4
5
  runCreateSvedocsCli,
5
6
  runSvedocsCli
6
- } from "./chunk-QD6TB2KV.js";
7
+ } from "./chunk-VMZTD7VT.js";
7
8
  export {
8
9
  renderCreateSvedocsHelp,
9
10
  renderSvedocsHelp,
11
+ renderUpgradeHelp,
10
12
  runCreateSvedocsCli,
11
13
  runSvedocsCli
12
14
  };
package/dist/svedocs.js CHANGED
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  runSvedocsCli
4
- } from "./chunk-QD6TB2KV.js";
4
+ } from "./chunk-VMZTD7VT.js";
5
5
 
6
6
  // src/svedocs.ts
7
7
  var result = await runSvedocsCli(process.argv.slice(2));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "svedocs-cli",
3
- "version": "0.1.0-beta.1",
3
+ "version": "0.1.0-beta.2",
4
4
  "description": "CLI for the svedocs documentation framework.",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -10,6 +10,18 @@ declare module 'virtual:svedocs/pages' {
10
10
  export default pages;
11
11
  }
12
12
 
13
+ declare module 'virtual:svedocs/page-index' {
14
+ import type { SvedocsPage } from 'svedocs/core';
15
+ const pages: SvedocsPage[];
16
+ export default pages;
17
+ }
18
+
19
+ declare module 'virtual:svedocs/page-loaders' {
20
+ import type { SvedocsPage } from 'svedocs/core';
21
+ const loaders: Record<string, () => Promise<{ default: SvedocsPage | undefined }>>;
22
+ export default loaders;
23
+ }
24
+
13
25
  declare module 'virtual:svedocs/tree' {
14
26
  import type { SvedocsTreeItem } from 'svedocs/core';
15
27
  const tree: SvedocsTreeItem[];
@@ -22,6 +34,12 @@ declare module 'virtual:svedocs/search' {
22
34
  export default records;
23
35
  }
24
36
 
37
+ declare module 'virtual:svedocs/search-loader' {
38
+ import type { SvedocsSearchRecord } from 'svedocs/core';
39
+ const loadSearch: () => Promise<SvedocsSearchRecord[]>;
40
+ export default loadSearch;
41
+ }
42
+
25
43
  declare module 'virtual:svedocs/components' {
26
44
  import type { Component } from 'svelte';
27
45
  const components: Record<string, Component>;
@@ -2,7 +2,8 @@
2
2
  import { DocsApp } from 'svedocs/theme';
3
3
  import components from 'virtual:svedocs/components';
4
4
  import layouts from 'virtual:svedocs/layouts';
5
+ import loadSearch from 'virtual:svedocs/search-loader';
5
6
  export let data;
6
7
  </script>
7
8
 
8
- <DocsApp page={data.page} pages={data.pages} tree={data.tree} search={data.search} config={data.config} {components} {layouts} />
9
+ <DocsApp page={data.page} pages={data.pages} tree={data.tree} search={data.search} config={data.config} {components} {layouts} {loadSearch} />
@@ -1,12 +1,24 @@
1
1
  import config from 'virtual:svedocs/config';
2
- import pages from 'virtual:svedocs/pages';
3
- import search from 'virtual:svedocs/search';
2
+ import pageLoaders from 'virtual:svedocs/page-loaders';
3
+ import pages from 'virtual:svedocs/page-index';
4
4
  import tree from 'virtual:svedocs/tree';
5
5
  import { svedocsPagePrerender } from 'svedocs/cloudflare';
6
+ import type { SvedocsPage } from 'svedocs/core';
6
7
  import type { PageLoad } from './$types';
7
8
 
8
9
  export const prerender = svedocsPagePrerender();
9
10
 
10
- export const load: PageLoad = () => {
11
- return { page: pages.find((page) => page.routePath === '/'), pages, search, tree, config };
11
+ export const load: PageLoad = async () => {
12
+ const pageIndex = pages.find((page) => page.routePath === '/');
13
+ const page = pageIndex ? await loadFullPage(pageIndex) : undefined;
14
+ return { page, pages: page ? mergeCurrentPage(pages, page) : pages, search: [], tree, config };
12
15
  };
16
+
17
+ async function loadFullPage(page: SvedocsPage): Promise<SvedocsPage> {
18
+ const loaded = await pageLoaders[page.id]?.();
19
+ return loaded?.default ?? page;
20
+ }
21
+
22
+ function mergeCurrentPage(pages: SvedocsPage[], current: SvedocsPage): SvedocsPage[] {
23
+ return pages.map((page) => page.id === current.id ? current : page);
24
+ }
@@ -2,7 +2,8 @@
2
2
  import { DocsApp } from 'svedocs/theme';
3
3
  import components from 'virtual:svedocs/components';
4
4
  import layouts from 'virtual:svedocs/layouts';
5
+ import loadSearch from 'virtual:svedocs/search-loader';
5
6
  export let data;
6
7
  </script>
7
8
 
8
- <DocsApp page={data.page} pages={data.pages} tree={data.tree} search={data.search} config={data.config} {components} {layouts} />
9
+ <DocsApp page={data.page} pages={data.pages} tree={data.tree} search={data.search} config={data.config} {components} {layouts} {loadSearch} />
@@ -1,9 +1,10 @@
1
1
  import { error } from '@sveltejs/kit';
2
2
  import config from 'virtual:svedocs/config';
3
- import pages from 'virtual:svedocs/pages';
4
- import search from 'virtual:svedocs/search';
3
+ import pageLoaders from 'virtual:svedocs/page-loaders';
4
+ import pages from 'virtual:svedocs/page-index';
5
5
  import tree from 'virtual:svedocs/tree';
6
6
  import { svedocsPagePrerender } from 'svedocs/cloudflare';
7
+ import type { SvedocsPage } from 'svedocs/core';
7
8
  import type { PageLoad } from './$types';
8
9
 
9
10
  export const prerender = svedocsPagePrerender();
@@ -14,9 +15,19 @@ export function entries() {
14
15
  .map((page) => ({ path: page.routePath.replace(/^\//, '') }));
15
16
  }
16
17
 
17
- export const load: PageLoad = ({ params }) => {
18
+ export const load: PageLoad = async ({ params }) => {
18
19
  const routePath = `/${params.path ?? ''}`.replace(/\/$/, '') || '/';
19
- const page = pages.find((item) => item.routePath === routePath);
20
- if (!page) error(404, `No page found for ${routePath}`);
21
- return { page, pages, search, tree, config };
20
+ const pageIndex = pages.find((item) => item.routePath === routePath);
21
+ if (!pageIndex) error(404, `No page found for ${routePath}`);
22
+ const page = await loadFullPage(pageIndex);
23
+ return { page, pages: mergeCurrentPage(pages, page), search: [], tree, config };
22
24
  };
25
+
26
+ async function loadFullPage(page: SvedocsPage): Promise<SvedocsPage> {
27
+ const loaded = await pageLoaders[page.id]?.();
28
+ return loaded?.default ?? page;
29
+ }
30
+
31
+ function mergeCurrentPage(pages: SvedocsPage[], current: SvedocsPage): SvedocsPage[] {
32
+ return pages.map((page) => page.id === current.id ? current : page);
33
+ }
@@ -6,6 +6,12 @@ export default defineConfig({
6
6
  title: 'svedocs cloudflare',
7
7
  description: 'Edge-first documentation powered by svedocs and Cloudflare Pages.'
8
8
  },
9
+ theme: {
10
+ palette: {
11
+ // Try "sky", "indigo", "rose", "amber", or any CSS color.
12
+ accent: 'emerald'
13
+ }
14
+ },
9
15
  search: {
10
16
  enabled: true,
11
17
  provider: 'cloudflare-ai-search'
@@ -10,6 +10,18 @@ declare module 'virtual:svedocs/pages' {
10
10
  export default pages;
11
11
  }
12
12
 
13
+ declare module 'virtual:svedocs/page-index' {
14
+ import type { SvedocsPage } from 'svedocs/core';
15
+ const pages: SvedocsPage[];
16
+ export default pages;
17
+ }
18
+
19
+ declare module 'virtual:svedocs/page-loaders' {
20
+ import type { SvedocsPage } from 'svedocs/core';
21
+ const loaders: Record<string, () => Promise<{ default: SvedocsPage | undefined }>>;
22
+ export default loaders;
23
+ }
24
+
13
25
  declare module 'virtual:svedocs/tree' {
14
26
  import type { SvedocsTreeItem } from 'svedocs/core';
15
27
  const tree: SvedocsTreeItem[];
@@ -22,6 +34,12 @@ declare module 'virtual:svedocs/search' {
22
34
  export default records;
23
35
  }
24
36
 
37
+ declare module 'virtual:svedocs/search-loader' {
38
+ import type { SvedocsSearchRecord } from 'svedocs/core';
39
+ const loadSearch: () => Promise<SvedocsSearchRecord[]>;
40
+ export default loadSearch;
41
+ }
42
+
25
43
  declare module 'virtual:svedocs/components' {
26
44
  import type { Component } from 'svelte';
27
45
  const components: Record<string, Component>;
@@ -2,7 +2,8 @@
2
2
  import { DocsApp } from 'svedocs/theme';
3
3
  import components from 'virtual:svedocs/components';
4
4
  import layouts from 'virtual:svedocs/layouts';
5
+ import loadSearch from 'virtual:svedocs/search-loader';
5
6
  export let data;
6
7
  </script>
7
8
 
8
- <DocsApp page={data.page} pages={data.pages} tree={data.tree} search={data.search} config={data.config} {components} {layouts} />
9
+ <DocsApp page={data.page} pages={data.pages} tree={data.tree} search={data.search} config={data.config} {components} {layouts} {loadSearch} />
@@ -1,12 +1,24 @@
1
- import pages from 'virtual:svedocs/pages';
2
- import search from 'virtual:svedocs/search';
1
+ import pageLoaders from 'virtual:svedocs/page-loaders';
2
+ import pages from 'virtual:svedocs/page-index';
3
3
  import tree from 'virtual:svedocs/tree';
4
4
  import config from 'virtual:svedocs/config';
5
5
  import { svedocsPagePrerender } from 'svedocs/cloudflare';
6
+ import type { SvedocsPage } from 'svedocs/core';
6
7
  import type { PageLoad } from './$types';
7
8
 
8
9
  export const prerender = svedocsPagePrerender();
9
10
 
10
- export const load: PageLoad = () => {
11
- return { page: pages.find((page) => page.routePath === '/'), pages, search, tree, config };
11
+ export const load: PageLoad = async () => {
12
+ const pageIndex = pages.find((page) => page.routePath === '/');
13
+ const page = pageIndex ? await loadFullPage(pageIndex) : undefined;
14
+ return { page, pages: page ? mergeCurrentPage(pages, page) : pages, search: [], tree, config };
12
15
  };
16
+
17
+ async function loadFullPage(page: SvedocsPage): Promise<SvedocsPage> {
18
+ const loaded = await pageLoaders[page.id]?.();
19
+ return loaded?.default ?? page;
20
+ }
21
+
22
+ function mergeCurrentPage(pages: SvedocsPage[], current: SvedocsPage): SvedocsPage[] {
23
+ return pages.map((page) => page.id === current.id ? current : page);
24
+ }
@@ -2,7 +2,8 @@
2
2
  import { DocsApp } from 'svedocs/theme';
3
3
  import components from 'virtual:svedocs/components';
4
4
  import layouts from 'virtual:svedocs/layouts';
5
+ import loadSearch from 'virtual:svedocs/search-loader';
5
6
  export let data;
6
7
  </script>
7
8
 
8
- <DocsApp page={data.page} pages={data.pages} tree={data.tree} search={data.search} config={data.config} {components} {layouts} />
9
+ <DocsApp page={data.page} pages={data.pages} tree={data.tree} search={data.search} config={data.config} {components} {layouts} {loadSearch} />
@@ -1,9 +1,10 @@
1
1
  import { error } from '@sveltejs/kit';
2
- import pages from 'virtual:svedocs/pages';
3
- import search from 'virtual:svedocs/search';
2
+ import pageLoaders from 'virtual:svedocs/page-loaders';
3
+ import pages from 'virtual:svedocs/page-index';
4
4
  import tree from 'virtual:svedocs/tree';
5
5
  import config from 'virtual:svedocs/config';
6
6
  import { svedocsPagePrerender } from 'svedocs/cloudflare';
7
+ import type { SvedocsPage } from 'svedocs/core';
7
8
  import type { PageLoad } from './$types';
8
9
 
9
10
  export const prerender = svedocsPagePrerender();
@@ -14,9 +15,19 @@ export function entries() {
14
15
  .map((page) => ({ path: page.routePath.replace(/^\//, '') }));
15
16
  }
16
17
 
17
- export const load: PageLoad = ({ params }) => {
18
+ export const load: PageLoad = async ({ params }) => {
18
19
  const routePath = `/${params.path ?? ''}`.replace(/\/$/, '') || '/';
19
- const page = pages.find((item) => item.routePath === routePath);
20
- if (!page) error(404, `No page found for ${routePath}`);
21
- return { page, pages, search, tree, config };
20
+ const pageIndex = pages.find((item) => item.routePath === routePath);
21
+ if (!pageIndex) error(404, `No page found for ${routePath}`);
22
+ const page = await loadFullPage(pageIndex);
23
+ return { page, pages: mergeCurrentPage(pages, page), search: [], tree, config };
22
24
  };
25
+
26
+ async function loadFullPage(page: SvedocsPage): Promise<SvedocsPage> {
27
+ const loaded = await pageLoaders[page.id]?.();
28
+ return loaded?.default ?? page;
29
+ }
30
+
31
+ function mergeCurrentPage(pages: SvedocsPage[], current: SvedocsPage): SvedocsPage[] {
32
+ return pages.map((page) => page.id === current.id ? current : page);
33
+ }
@@ -6,6 +6,12 @@ export default defineConfig({
6
6
  title: 'My docs',
7
7
  description: 'Documentation built with svedocs'
8
8
  },
9
+ theme: {
10
+ palette: {
11
+ // Try "sky", "indigo", "rose", "amber", or any CSS color.
12
+ accent: 'emerald'
13
+ }
14
+ },
9
15
  source: {
10
16
  editBaseUrl: 'https://github.com/acme/my-docs/edit/main'
11
17
  }
@@ -10,6 +10,18 @@ declare module 'virtual:svedocs/pages' {
10
10
  export default pages;
11
11
  }
12
12
 
13
+ declare module 'virtual:svedocs/page-index' {
14
+ import type { SvedocsPage } from 'svedocs/core';
15
+ const pages: SvedocsPage[];
16
+ export default pages;
17
+ }
18
+
19
+ declare module 'virtual:svedocs/page-loaders' {
20
+ import type { SvedocsPage } from 'svedocs/core';
21
+ const loaders: Record<string, () => Promise<{ default: SvedocsPage | undefined }>>;
22
+ export default loaders;
23
+ }
24
+
13
25
  declare module 'virtual:svedocs/tree' {
14
26
  import type { SvedocsTreeItem } from 'svedocs/core';
15
27
  const tree: SvedocsTreeItem[];
@@ -22,6 +34,12 @@ declare module 'virtual:svedocs/search' {
22
34
  export default records;
23
35
  }
24
36
 
37
+ declare module 'virtual:svedocs/search-loader' {
38
+ import type { SvedocsSearchRecord } from 'svedocs/core';
39
+ const loadSearch: () => Promise<SvedocsSearchRecord[]>;
40
+ export default loadSearch;
41
+ }
42
+
25
43
  declare module 'virtual:svedocs/components' {
26
44
  import type { Component } from 'svelte';
27
45
  const components: Record<string, Component>;
@@ -2,7 +2,8 @@
2
2
  import { DocsApp } from 'svedocs/theme';
3
3
  import components from 'virtual:svedocs/components';
4
4
  import layouts from 'virtual:svedocs/layouts';
5
+ import loadSearch from 'virtual:svedocs/search-loader';
5
6
  export let data;
6
7
  </script>
7
8
 
8
- <DocsApp page={data.page} pages={data.pages} tree={data.tree} search={data.search} config={data.config} {components} {layouts} />
9
+ <DocsApp page={data.page} pages={data.pages} tree={data.tree} search={data.search} config={data.config} {components} {layouts} {loadSearch} />
@@ -1,12 +1,24 @@
1
1
  import config from 'virtual:svedocs/config';
2
- import pages from 'virtual:svedocs/pages';
3
- import search from 'virtual:svedocs/search';
2
+ import pageLoaders from 'virtual:svedocs/page-loaders';
3
+ import pages from 'virtual:svedocs/page-index';
4
4
  import tree from 'virtual:svedocs/tree';
5
5
  import { svedocsPagePrerender } from 'svedocs/cloudflare';
6
+ import type { SvedocsPage } from 'svedocs/core';
6
7
  import type { PageLoad } from './$types';
7
8
 
8
9
  export const prerender = svedocsPagePrerender();
9
10
 
10
- export const load: PageLoad = () => {
11
- return { page: pages.find((page) => page.routePath === '/'), pages, search, tree, config };
11
+ export const load: PageLoad = async () => {
12
+ const pageIndex = pages.find((page) => page.routePath === '/');
13
+ const page = pageIndex ? await loadFullPage(pageIndex) : undefined;
14
+ return { page, pages: page ? mergeCurrentPage(pages, page) : pages, search: [], tree, config };
12
15
  };
16
+
17
+ async function loadFullPage(page: SvedocsPage): Promise<SvedocsPage> {
18
+ const loaded = await pageLoaders[page.id]?.();
19
+ return loaded?.default ?? page;
20
+ }
21
+
22
+ function mergeCurrentPage(pages: SvedocsPage[], current: SvedocsPage): SvedocsPage[] {
23
+ return pages.map((page) => page.id === current.id ? current : page);
24
+ }
@@ -2,7 +2,8 @@
2
2
  import { DocsApp } from 'svedocs/theme';
3
3
  import components from 'virtual:svedocs/components';
4
4
  import layouts from 'virtual:svedocs/layouts';
5
+ import loadSearch from 'virtual:svedocs/search-loader';
5
6
  export let data;
6
7
  </script>
7
8
 
8
- <DocsApp page={data.page} pages={data.pages} tree={data.tree} search={data.search} config={data.config} {components} {layouts} />
9
+ <DocsApp page={data.page} pages={data.pages} tree={data.tree} search={data.search} config={data.config} {components} {layouts} {loadSearch} />
@@ -1,9 +1,10 @@
1
1
  import { error } from '@sveltejs/kit';
2
2
  import config from 'virtual:svedocs/config';
3
- import pages from 'virtual:svedocs/pages';
4
- import search from 'virtual:svedocs/search';
3
+ import pageLoaders from 'virtual:svedocs/page-loaders';
4
+ import pages from 'virtual:svedocs/page-index';
5
5
  import tree from 'virtual:svedocs/tree';
6
6
  import { svedocsPagePrerender } from 'svedocs/cloudflare';
7
+ import type { SvedocsPage } from 'svedocs/core';
7
8
  import type { PageLoad } from './$types';
8
9
 
9
10
  export const prerender = svedocsPagePrerender();
@@ -14,9 +15,19 @@ export function entries() {
14
15
  .map((page) => ({ path: page.routePath.replace(/^\//, '') }));
15
16
  }
16
17
 
17
- export const load: PageLoad = ({ params }) => {
18
+ export const load: PageLoad = async ({ params }) => {
18
19
  const routePath = `/${params.path ?? ''}`.replace(/\/$/, '') || '/';
19
- const page = pages.find((item) => item.routePath === routePath);
20
- if (!page) error(404, `No page found for ${routePath}`);
21
- return { page, pages, search, tree, config };
20
+ const pageIndex = pages.find((item) => item.routePath === routePath);
21
+ if (!pageIndex) error(404, `No page found for ${routePath}`);
22
+ const page = await loadFullPage(pageIndex);
23
+ return { page, pages: mergeCurrentPage(pages, page), search: [], tree, config };
22
24
  };
25
+
26
+ async function loadFullPage(page: SvedocsPage): Promise<SvedocsPage> {
27
+ const loaded = await pageLoaders[page.id]?.();
28
+ return loaded?.default ?? page;
29
+ }
30
+
31
+ function mergeCurrentPage(pages: SvedocsPage[], current: SvedocsPage): SvedocsPage[] {
32
+ return pages.map((page) => page.id === current.id ? current : page);
33
+ }
@@ -6,5 +6,11 @@ export default defineConfig({
6
6
  title: 'svedocs minimal',
7
7
  description: 'A minimal documentation site powered by svedocs.'
8
8
  },
9
+ theme: {
10
+ palette: {
11
+ // Try "sky", "indigo", "rose", "amber", or any CSS color.
12
+ accent: 'emerald'
13
+ }
14
+ },
9
15
  ai: false
10
16
  });