@raystack/chronicle 0.12.4 → 0.12.5

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.
Files changed (36) hide show
  1. package/dist/cli/index.js +1763 -252
  2. package/package.json +8 -2
  3. package/src/cli/commands/build.ts +36 -7
  4. package/src/cli/commands/static-generate.ts +1071 -0
  5. package/src/cli/utils/mdx-error-report.ts +48 -0
  6. package/src/components/api/playground-dialog.tsx +65 -14
  7. package/src/components/mdx/code.tsx +8 -3
  8. package/src/components/mdx/image.tsx +15 -1
  9. package/src/components/mdx/index.tsx +10 -3
  10. package/src/components/ui/search.tsx +226 -64
  11. package/src/lib/data-urls.ts +23 -0
  12. package/src/lib/mdx-component-names.ts +15 -0
  13. package/src/lib/mdx-error.test.ts +78 -0
  14. package/src/lib/mdx-error.ts +91 -0
  15. package/src/lib/openapi.ts +1 -1
  16. package/src/lib/page-context.tsx +29 -14
  17. package/src/lib/preload.ts +4 -2
  18. package/src/lib/remark-validate-mdx.test.ts +95 -0
  19. package/src/lib/remark-validate-mdx.ts +85 -0
  20. package/src/lib/route-resolver.ts +7 -0
  21. package/src/lib/static-mode.ts +3 -0
  22. package/src/pages/DocsPage.tsx +3 -2
  23. package/src/pages/NotFound.module.css +10 -0
  24. package/src/pages/RenderError.tsx +18 -0
  25. package/src/server/App.tsx +16 -12
  26. package/src/server/api/apis-proxy.ts +32 -7
  27. package/src/server/dev-error-page.ts +133 -0
  28. package/src/server/entry-server.tsx +6 -0
  29. package/src/server/entry-static.tsx +151 -0
  30. package/src/server/error.ts +13 -1
  31. package/src/server/plugins/telemetry.ts +3 -2
  32. package/src/server/vite-config.ts +22 -9
  33. package/src/themes/default/Page.module.css +2 -0
  34. package/src/themes/paper/Layout.module.css +0 -4
  35. package/src/themes/paper/Layout.tsx +0 -2
  36. package/src/themes/paper/Page.module.css +2 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@raystack/chronicle",
3
- "version": "0.12.4",
3
+ "version": "0.12.5",
4
4
  "description": "Config-driven documentation framework",
5
5
  "license": "Apache-2.0",
6
6
  "type": "module",
@@ -21,6 +21,7 @@
21
21
  },
22
22
  "devDependencies": {
23
23
  "@biomejs/biome": "^2.3.13",
24
+ "@playwright/test": "^1.60.0",
24
25
  "@raystack/tools-config": "0.56.0",
25
26
  "@types/hast": "^3.0.4",
26
27
  "@types/lodash-es": "^4.17.12",
@@ -33,7 +34,8 @@
33
34
  "@types/unist": "^3.0.3",
34
35
  "mdast-util-mdx-jsx": "^3.2.0",
35
36
  "semver": "^7.7.4",
36
- "typescript": "5.9.3"
37
+ "typescript": "5.9.3",
38
+ "vfile": "^6.0.3"
37
39
  },
38
40
  "dependencies": {
39
41
  "@analytics/google-analytics": "^1.1.0",
@@ -49,6 +51,7 @@
49
51
  "@opentelemetry/sdk-logs": "^0.218.0",
50
52
  "@opentelemetry/sdk-metrics": "^2.6.1",
51
53
  "@opentelemetry/semantic-conventions": "^1.40.0",
54
+ "@base-ui/react": ">=1.4.1 <1.6.0",
52
55
  "@radix-ui/react-icons": "^1.3.2",
53
56
  "@raystack/apsara": "1.0.0-rc.7",
54
57
  "@shikijs/rehype": "^4.0.2",
@@ -65,9 +68,11 @@
65
68
  "glob": "^11.0.0",
66
69
  "gray-matter": "^4.0.3",
67
70
  "h3": "^2.0.1-rc.16",
71
+ "html-tag-names": "^2.1.0",
68
72
  "http-status-codes": "^2.3.0",
69
73
  "lodash-es": "^4.17.23",
70
74
  "mermaid": "^11.13.0",
75
+ "minisearch": "^7.2.0",
71
76
  "nitro": "3.0.260311-beta",
72
77
  "openapi-types": "^12.1.3",
73
78
  "react": "^19.0.0",
@@ -82,6 +87,7 @@
82
87
  "sharp": "^0.34.5",
83
88
  "slugify": "^1.6.6",
84
89
  "std-env": "^4.1.0",
90
+ "svg-tag-names": "^3.0.1",
85
91
  "unified": "^11.0.5",
86
92
  "unist-util-visit": "^5.1.0",
87
93
  "use-analytics": "^1.1.0",
@@ -1,3 +1,4 @@
1
+ import path from 'node:path';
1
2
  import chalk from 'chalk';
2
3
  import { Command } from 'commander';
3
4
  import { loadCLIConfig } from '@/cli/utils/config';
@@ -9,7 +10,7 @@ export const buildCommand = new Command('build')
9
10
  .option('--config <path>', 'Path to chronicle.yaml')
10
11
  .option(
11
12
  '--preset <preset>',
12
- 'Deploy preset (vercel, cloudflare, node-server)'
13
+ 'Deploy preset (vercel, cloudflare, node-server, static)'
13
14
  )
14
15
  .action(async options => {
15
16
  const { config, projectRoot, configPath, preset } = await loadCLIConfig(options.config, {
@@ -19,8 +20,8 @@ export const buildCommand = new Command('build')
19
20
 
20
21
  console.log(chalk.cyan('Building for production...'));
21
22
 
22
- const { createBuilder } = await import('vite');
23
- const { createViteConfig } = await import('@/server/vite-config');
23
+ const { createBuilder, build } = await import('vite');
24
+ const { createViteConfig, isStaticPreset } = await import('@/server/vite-config');
24
25
 
25
26
  const viteConfig = await createViteConfig({
26
27
  packageRoot: PACKAGE_ROOT,
@@ -29,9 +30,37 @@ export const buildCommand = new Command('build')
29
30
  preset
30
31
  });
31
32
 
32
- const builder = await createBuilder({ ...viteConfig, builder: {} });
33
- await builder.buildApp();
33
+ try {
34
+ if (isStaticPreset(preset)) {
35
+ await build(viteConfig);
36
+ } else {
37
+ const builder = await createBuilder({ ...viteConfig, builder: {} });
38
+ await builder.buildApp();
39
+ }
34
40
 
35
- console.log(chalk.green('Build complete'));
36
- console.log(chalk.cyan('Run `chronicle start` to start the server'));
41
+ if (isStaticPreset(preset)) {
42
+ const { generateStaticSite } = await import('@/cli/commands/static-generate');
43
+ const outputDir = path.resolve(projectRoot, '.output/public');
44
+
45
+ await generateStaticSite({
46
+ projectRoot,
47
+ config,
48
+ outputDir,
49
+ packageRoot: PACKAGE_ROOT,
50
+ });
51
+
52
+ console.log(chalk.green('Static build complete'));
53
+ console.log(chalk.cyan(`Output: ${outputDir}`));
54
+ } else {
55
+ console.log(chalk.green('Build complete'));
56
+ console.log(chalk.cyan('Run `chronicle start` to start the server'));
57
+ }
58
+ } catch (err) {
59
+ const { printMdxBuildError } = await import('@/cli/utils/mdx-error-report');
60
+ if (await printMdxBuildError(err, PACKAGE_ROOT)) {
61
+ console.error(chalk.red('Build failed'));
62
+ process.exit(1);
63
+ }
64
+ throw err;
65
+ }
37
66
  });