@raystack/chronicle 0.1.0-canary.111b55a

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 (128) hide show
  1. package/bin/chronicle.js +2 -0
  2. package/dist/cli/index.js +963 -0
  3. package/package.json +67 -0
  4. package/src/cli/__tests__/config.test.ts +25 -0
  5. package/src/cli/__tests__/scaffold.test.ts +10 -0
  6. package/src/cli/commands/build.ts +74 -0
  7. package/src/cli/commands/dev.ts +21 -0
  8. package/src/cli/commands/init.ts +154 -0
  9. package/src/cli/commands/serve.ts +55 -0
  10. package/src/cli/commands/start.ts +24 -0
  11. package/src/cli/index.ts +21 -0
  12. package/src/cli/utils/config.ts +43 -0
  13. package/src/cli/utils/index.ts +2 -0
  14. package/src/cli/utils/resolve.ts +6 -0
  15. package/src/cli/utils/scaffold.ts +20 -0
  16. package/src/components/api/code-snippets.module.css +7 -0
  17. package/src/components/api/code-snippets.tsx +76 -0
  18. package/src/components/api/endpoint-page.module.css +58 -0
  19. package/src/components/api/endpoint-page.tsx +283 -0
  20. package/src/components/api/field-row.module.css +126 -0
  21. package/src/components/api/field-row.tsx +204 -0
  22. package/src/components/api/field-section.module.css +24 -0
  23. package/src/components/api/field-section.tsx +100 -0
  24. package/src/components/api/index.ts +8 -0
  25. package/src/components/api/json-editor.module.css +9 -0
  26. package/src/components/api/json-editor.tsx +61 -0
  27. package/src/components/api/key-value-editor.module.css +13 -0
  28. package/src/components/api/key-value-editor.tsx +62 -0
  29. package/src/components/api/method-badge.module.css +4 -0
  30. package/src/components/api/method-badge.tsx +29 -0
  31. package/src/components/api/response-panel.module.css +8 -0
  32. package/src/components/api/response-panel.tsx +44 -0
  33. package/src/components/common/breadcrumb.tsx +3 -0
  34. package/src/components/common/button.tsx +3 -0
  35. package/src/components/common/callout.module.css +7 -0
  36. package/src/components/common/callout.tsx +27 -0
  37. package/src/components/common/code-block.tsx +3 -0
  38. package/src/components/common/dialog.tsx +3 -0
  39. package/src/components/common/index.ts +10 -0
  40. package/src/components/common/input-field.tsx +3 -0
  41. package/src/components/common/sidebar.tsx +3 -0
  42. package/src/components/common/switch.tsx +3 -0
  43. package/src/components/common/table.tsx +3 -0
  44. package/src/components/common/tabs.tsx +3 -0
  45. package/src/components/mdx/code.module.css +42 -0
  46. package/src/components/mdx/code.tsx +36 -0
  47. package/src/components/mdx/details.module.css +14 -0
  48. package/src/components/mdx/details.tsx +17 -0
  49. package/src/components/mdx/image.tsx +24 -0
  50. package/src/components/mdx/index.tsx +35 -0
  51. package/src/components/mdx/link.tsx +37 -0
  52. package/src/components/mdx/mermaid.module.css +9 -0
  53. package/src/components/mdx/mermaid.tsx +37 -0
  54. package/src/components/mdx/paragraph.module.css +8 -0
  55. package/src/components/mdx/paragraph.tsx +19 -0
  56. package/src/components/mdx/table.tsx +40 -0
  57. package/src/components/ui/breadcrumbs.tsx +72 -0
  58. package/src/components/ui/client-theme-switcher.tsx +18 -0
  59. package/src/components/ui/footer.module.css +27 -0
  60. package/src/components/ui/footer.tsx +31 -0
  61. package/src/components/ui/search.module.css +111 -0
  62. package/src/components/ui/search.tsx +173 -0
  63. package/src/lib/api-routes.ts +120 -0
  64. package/src/lib/config.ts +56 -0
  65. package/src/lib/head.tsx +45 -0
  66. package/src/lib/index.ts +2 -0
  67. package/src/lib/openapi.ts +188 -0
  68. package/src/lib/page-context.tsx +95 -0
  69. package/src/lib/remark-unused-directives.ts +30 -0
  70. package/src/lib/schema.ts +99 -0
  71. package/src/lib/snippet-generators.ts +87 -0
  72. package/src/lib/source.ts +138 -0
  73. package/src/pages/ApiLayout.module.css +22 -0
  74. package/src/pages/ApiLayout.tsx +29 -0
  75. package/src/pages/ApiPage.tsx +68 -0
  76. package/src/pages/DocsLayout.tsx +18 -0
  77. package/src/pages/DocsPage.tsx +43 -0
  78. package/src/pages/NotFound.tsx +10 -0
  79. package/src/pages/__tests__/head.test.tsx +57 -0
  80. package/src/server/App.tsx +59 -0
  81. package/src/server/__tests__/entry-server.test.tsx +35 -0
  82. package/src/server/__tests__/handlers.test.ts +77 -0
  83. package/src/server/__tests__/og.test.ts +23 -0
  84. package/src/server/__tests__/router.test.ts +72 -0
  85. package/src/server/__tests__/vite-config.test.ts +25 -0
  86. package/src/server/adapters/vercel.ts +133 -0
  87. package/src/server/build-search-index.ts +107 -0
  88. package/src/server/dev.ts +156 -0
  89. package/src/server/entry-client.tsx +74 -0
  90. package/src/server/entry-prod.ts +97 -0
  91. package/src/server/entry-server.tsx +35 -0
  92. package/src/server/entry-vercel.ts +28 -0
  93. package/src/server/handlers/apis-proxy.ts +52 -0
  94. package/src/server/handlers/health.ts +3 -0
  95. package/src/server/handlers/llms.ts +58 -0
  96. package/src/server/handlers/og.ts +87 -0
  97. package/src/server/handlers/robots.ts +11 -0
  98. package/src/server/handlers/search.ts +172 -0
  99. package/src/server/handlers/sitemap.ts +39 -0
  100. package/src/server/handlers/specs.ts +9 -0
  101. package/src/server/index.html +12 -0
  102. package/src/server/prod.ts +18 -0
  103. package/src/server/request-handler.ts +63 -0
  104. package/src/server/router.ts +42 -0
  105. package/src/server/vite-config.ts +71 -0
  106. package/src/themes/default/Layout.module.css +81 -0
  107. package/src/themes/default/Layout.tsx +132 -0
  108. package/src/themes/default/Page.module.css +106 -0
  109. package/src/themes/default/Page.tsx +21 -0
  110. package/src/themes/default/Toc.module.css +48 -0
  111. package/src/themes/default/Toc.tsx +66 -0
  112. package/src/themes/default/font.ts +4 -0
  113. package/src/themes/default/index.ts +13 -0
  114. package/src/themes/paper/ChapterNav.module.css +71 -0
  115. package/src/themes/paper/ChapterNav.tsx +95 -0
  116. package/src/themes/paper/Layout.module.css +33 -0
  117. package/src/themes/paper/Layout.tsx +25 -0
  118. package/src/themes/paper/Page.module.css +174 -0
  119. package/src/themes/paper/Page.tsx +106 -0
  120. package/src/themes/paper/ReadingProgress.module.css +132 -0
  121. package/src/themes/paper/ReadingProgress.tsx +294 -0
  122. package/src/themes/paper/index.ts +8 -0
  123. package/src/themes/registry.ts +14 -0
  124. package/src/types/config.ts +80 -0
  125. package/src/types/content.ts +36 -0
  126. package/src/types/index.ts +3 -0
  127. package/src/types/theme.ts +22 -0
  128. package/tsconfig.json +29 -0
@@ -0,0 +1,14 @@
1
+ import type { Theme } from '@/types'
2
+ import { defaultTheme } from './default'
3
+ import { paperTheme } from './paper'
4
+
5
+ const themes: Record<string, Theme> = {
6
+ default: defaultTheme,
7
+ paper: paperTheme,
8
+ }
9
+
10
+ export function getTheme(name?: string): Theme {
11
+ if (!name || !themes[name]) return defaultTheme
12
+
13
+ return themes[name]
14
+ }
@@ -0,0 +1,80 @@
1
+ export interface ChronicleConfig {
2
+ title: string
3
+ description?: string
4
+ url?: string
5
+ logo?: LogoConfig
6
+ theme?: ThemeConfig
7
+ navigation?: NavigationConfig
8
+ search?: SearchConfig
9
+ footer?: FooterConfig
10
+ api?: ApiConfig[]
11
+ llms?: LlmsConfig
12
+ analytics?: AnalyticsConfig
13
+ }
14
+
15
+ export interface LlmsConfig {
16
+ enabled?: boolean
17
+ }
18
+
19
+ export interface AnalyticsConfig {
20
+ enabled?: boolean
21
+ googleAnalytics?: GoogleAnalyticsConfig
22
+ }
23
+
24
+ export interface GoogleAnalyticsConfig {
25
+ measurementId: string
26
+ }
27
+
28
+ export interface ApiConfig {
29
+ name: string
30
+ spec: string
31
+ basePath: string
32
+ server: ApiServerConfig
33
+ auth?: ApiAuthConfig
34
+ }
35
+
36
+ export interface ApiServerConfig {
37
+ url: string
38
+ description?: string
39
+ }
40
+
41
+ export interface ApiAuthConfig {
42
+ type: string
43
+ header: string
44
+ placeholder?: string
45
+ }
46
+
47
+ export interface LogoConfig {
48
+ light?: string
49
+ dark?: string
50
+ }
51
+
52
+ export interface ThemeConfig {
53
+ name: 'default' | 'paper'
54
+ colors?: Record<string, string>
55
+ }
56
+
57
+ export interface NavigationConfig {
58
+ links?: NavLink[]
59
+ social?: SocialLink[]
60
+ }
61
+
62
+ export interface NavLink {
63
+ label: string
64
+ href: string
65
+ }
66
+
67
+ export interface SocialLink {
68
+ type: 'github' | 'twitter' | 'discord' | string
69
+ href: string
70
+ }
71
+
72
+ export interface SearchConfig {
73
+ enabled?: boolean
74
+ placeholder?: string
75
+ }
76
+
77
+ export interface FooterConfig {
78
+ copyright?: string
79
+ links?: NavLink[]
80
+ }
@@ -0,0 +1,36 @@
1
+ import type { ReactNode } from 'react'
2
+
3
+ export interface Frontmatter {
4
+ title: string
5
+ description?: string
6
+ order?: number
7
+ icon?: string
8
+ lastModified?: string
9
+ }
10
+
11
+ export interface Page {
12
+ slug: string[]
13
+ frontmatter: Frontmatter
14
+ content: ReactNode
15
+ toc: TocItem[]
16
+ }
17
+
18
+ export interface TocItem {
19
+ title: string
20
+ url: string
21
+ depth: number
22
+ }
23
+
24
+ export interface PageTreeItem {
25
+ type: 'page' | 'folder' | 'separator'
26
+ name: string
27
+ url?: string
28
+ order?: number
29
+ icon?: string
30
+ children?: PageTreeItem[]
31
+ }
32
+
33
+ export interface PageTree {
34
+ name: string
35
+ children: PageTreeItem[]
36
+ }
@@ -0,0 +1,3 @@
1
+ export * from './config'
2
+ export * from './content'
3
+ export * from './theme'
@@ -0,0 +1,22 @@
1
+ import type { ReactNode } from 'react'
2
+ import type { ChronicleConfig } from './config'
3
+ import type { Page, PageTree } from './content'
4
+
5
+ export interface ThemeLayoutProps {
6
+ children: ReactNode
7
+ config: ChronicleConfig
8
+ tree: PageTree
9
+ classNames?: { layout?: string; body?: string; sidebar?: string; content?: string }
10
+ }
11
+
12
+ export interface ThemePageProps {
13
+ page: Page
14
+ config: ChronicleConfig
15
+ tree: PageTree
16
+ }
17
+
18
+ export interface Theme {
19
+ Layout: React.ComponentType<ThemeLayoutProps>
20
+ Page: React.ComponentType<ThemePageProps>
21
+ className?: string
22
+ }
package/tsconfig.json ADDED
@@ -0,0 +1,29 @@
1
+ {
2
+ "compilerOptions": {
3
+ "composite": false,
4
+ "declaration": true,
5
+ "declarationMap": true,
6
+ "esModuleInterop": true,
7
+ "forceConsistentCasingInFileNames": true,
8
+ "inlineSources": false,
9
+ "isolatedModules": true,
10
+ "noUnusedLocals": false,
11
+ "noUnusedParameters": false,
12
+ "preserveWatchOutput": true,
13
+ "skipLibCheck": true,
14
+ "strict": true,
15
+ "jsx": "react-jsx",
16
+ "module": "ESNext",
17
+ "target": "es6",
18
+ "outDir": "dist",
19
+ "rootDir": ".",
20
+ "baseUrl": ".",
21
+ "lib": ["ES2022", "DOM", "DOM.Iterable"],
22
+ "moduleResolution": "bundler",
23
+ "paths": {
24
+ "@/*": ["./src/*"]
25
+ }
26
+ },
27
+ "include": ["src"],
28
+ "exclude": ["node_modules", "dist"]
29
+ }