@brainfish-ai/devdoc 0.1.21

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 (268) hide show
  1. package/LICENSE +33 -0
  2. package/README.md +415 -0
  3. package/bin/devdoc.js +13 -0
  4. package/dist/cli/commands/build.d.ts +5 -0
  5. package/dist/cli/commands/build.js +87 -0
  6. package/dist/cli/commands/check.d.ts +1 -0
  7. package/dist/cli/commands/check.js +143 -0
  8. package/dist/cli/commands/create.d.ts +24 -0
  9. package/dist/cli/commands/create.js +387 -0
  10. package/dist/cli/commands/deploy.d.ts +9 -0
  11. package/dist/cli/commands/deploy.js +433 -0
  12. package/dist/cli/commands/dev.d.ts +6 -0
  13. package/dist/cli/commands/dev.js +139 -0
  14. package/dist/cli/commands/init.d.ts +11 -0
  15. package/dist/cli/commands/init.js +238 -0
  16. package/dist/cli/commands/keys.d.ts +12 -0
  17. package/dist/cli/commands/keys.js +165 -0
  18. package/dist/cli/commands/start.d.ts +5 -0
  19. package/dist/cli/commands/start.js +56 -0
  20. package/dist/cli/commands/upload.d.ts +13 -0
  21. package/dist/cli/commands/upload.js +238 -0
  22. package/dist/cli/commands/whoami.d.ts +8 -0
  23. package/dist/cli/commands/whoami.js +91 -0
  24. package/dist/cli/index.d.ts +1 -0
  25. package/dist/cli/index.js +106 -0
  26. package/dist/config/index.d.ts +80 -0
  27. package/dist/config/index.js +133 -0
  28. package/dist/constants.d.ts +9 -0
  29. package/dist/constants.js +13 -0
  30. package/dist/index.d.ts +7 -0
  31. package/dist/index.js +12 -0
  32. package/dist/utils/logger.d.ts +16 -0
  33. package/dist/utils/logger.js +61 -0
  34. package/dist/utils/paths.d.ts +16 -0
  35. package/dist/utils/paths.js +50 -0
  36. package/package.json +51 -0
  37. package/renderer/app/api/assets/[...path]/route.ts +123 -0
  38. package/renderer/app/api/assets/route.ts +124 -0
  39. package/renderer/app/api/assets/upload/route.ts +177 -0
  40. package/renderer/app/api/auth-schemes/route.ts +77 -0
  41. package/renderer/app/api/chat/route.ts +858 -0
  42. package/renderer/app/api/codegen/route.ts +72 -0
  43. package/renderer/app/api/collections/route.ts +1016 -0
  44. package/renderer/app/api/debug/route.ts +53 -0
  45. package/renderer/app/api/deploy/route.ts +234 -0
  46. package/renderer/app/api/device/route.ts +42 -0
  47. package/renderer/app/api/docs/route.ts +187 -0
  48. package/renderer/app/api/keys/regenerate/route.ts +80 -0
  49. package/renderer/app/api/openapi-spec/route.ts +151 -0
  50. package/renderer/app/api/projects/[slug]/route.ts +153 -0
  51. package/renderer/app/api/projects/[slug]/stats/route.ts +96 -0
  52. package/renderer/app/api/projects/register/route.ts +152 -0
  53. package/renderer/app/api/proxy/route.ts +149 -0
  54. package/renderer/app/api/proxy-stream/route.ts +168 -0
  55. package/renderer/app/api/redirects/route.ts +47 -0
  56. package/renderer/app/api/schema/route.ts +65 -0
  57. package/renderer/app/api/subdomains/check/route.ts +172 -0
  58. package/renderer/app/api/suggestions/route.ts +144 -0
  59. package/renderer/app/favicon.ico +0 -0
  60. package/renderer/app/globals.css +1103 -0
  61. package/renderer/app/layout.tsx +47 -0
  62. package/renderer/app/llms-full.txt/route.ts +346 -0
  63. package/renderer/app/llms.txt/route.ts +279 -0
  64. package/renderer/app/page.tsx +14 -0
  65. package/renderer/app/robots.txt/route.ts +84 -0
  66. package/renderer/app/sitemap.xml/route.ts +199 -0
  67. package/renderer/components/docs/index.ts +12 -0
  68. package/renderer/components/docs/mdx/accordion.tsx +169 -0
  69. package/renderer/components/docs/mdx/badge.tsx +132 -0
  70. package/renderer/components/docs/mdx/callouts.tsx +154 -0
  71. package/renderer/components/docs/mdx/cards.tsx +213 -0
  72. package/renderer/components/docs/mdx/changelog.tsx +120 -0
  73. package/renderer/components/docs/mdx/code-block.tsx +186 -0
  74. package/renderer/components/docs/mdx/code-group.tsx +421 -0
  75. package/renderer/components/docs/mdx/file-embeds.tsx +105 -0
  76. package/renderer/components/docs/mdx/frame.tsx +112 -0
  77. package/renderer/components/docs/mdx/highlight.tsx +151 -0
  78. package/renderer/components/docs/mdx/iframe.tsx +134 -0
  79. package/renderer/components/docs/mdx/image.tsx +235 -0
  80. package/renderer/components/docs/mdx/index.ts +204 -0
  81. package/renderer/components/docs/mdx/mermaid.tsx +240 -0
  82. package/renderer/components/docs/mdx/param-field.tsx +200 -0
  83. package/renderer/components/docs/mdx/steps.tsx +113 -0
  84. package/renderer/components/docs/mdx/tabs.tsx +86 -0
  85. package/renderer/components/docs/mdx-renderer.tsx +100 -0
  86. package/renderer/components/docs/navigation/breadcrumbs.tsx +76 -0
  87. package/renderer/components/docs/navigation/index.ts +8 -0
  88. package/renderer/components/docs/navigation/page-nav.tsx +64 -0
  89. package/renderer/components/docs/navigation/sidebar.tsx +515 -0
  90. package/renderer/components/docs/navigation/toc.tsx +113 -0
  91. package/renderer/components/docs/notice.tsx +105 -0
  92. package/renderer/components/docs-header.tsx +274 -0
  93. package/renderer/components/docs-viewer/agent/agent-chat.tsx +2076 -0
  94. package/renderer/components/docs-viewer/agent/cards/debug-context-card.tsx +90 -0
  95. package/renderer/components/docs-viewer/agent/cards/endpoint-context-card.tsx +49 -0
  96. package/renderer/components/docs-viewer/agent/cards/index.tsx +50 -0
  97. package/renderer/components/docs-viewer/agent/cards/response-options-card.tsx +212 -0
  98. package/renderer/components/docs-viewer/agent/cards/types.ts +84 -0
  99. package/renderer/components/docs-viewer/agent/chat-message.tsx +17 -0
  100. package/renderer/components/docs-viewer/agent/index.tsx +6 -0
  101. package/renderer/components/docs-viewer/agent/messages/assistant-message.tsx +119 -0
  102. package/renderer/components/docs-viewer/agent/messages/chat-message.tsx +46 -0
  103. package/renderer/components/docs-viewer/agent/messages/index.ts +17 -0
  104. package/renderer/components/docs-viewer/agent/messages/tool-call-display.tsx +721 -0
  105. package/renderer/components/docs-viewer/agent/messages/types.ts +61 -0
  106. package/renderer/components/docs-viewer/agent/messages/typing-indicator.tsx +24 -0
  107. package/renderer/components/docs-viewer/agent/messages/user-message.tsx +51 -0
  108. package/renderer/components/docs-viewer/code-editor/index.tsx +2 -0
  109. package/renderer/components/docs-viewer/code-editor/notes-mode.tsx +1283 -0
  110. package/renderer/components/docs-viewer/content/changelog-page.tsx +331 -0
  111. package/renderer/components/docs-viewer/content/doc-page.tsx +285 -0
  112. package/renderer/components/docs-viewer/content/documentation-viewer.tsx +17 -0
  113. package/renderer/components/docs-viewer/content/index.tsx +29 -0
  114. package/renderer/components/docs-viewer/content/introduction.tsx +21 -0
  115. package/renderer/components/docs-viewer/content/request-details.tsx +330 -0
  116. package/renderer/components/docs-viewer/content/sections/auth.tsx +69 -0
  117. package/renderer/components/docs-viewer/content/sections/body.tsx +66 -0
  118. package/renderer/components/docs-viewer/content/sections/headers.tsx +43 -0
  119. package/renderer/components/docs-viewer/content/sections/overview.tsx +40 -0
  120. package/renderer/components/docs-viewer/content/sections/parameters.tsx +43 -0
  121. package/renderer/components/docs-viewer/content/sections/responses.tsx +87 -0
  122. package/renderer/components/docs-viewer/global-auth-modal.tsx +352 -0
  123. package/renderer/components/docs-viewer/index.tsx +1466 -0
  124. package/renderer/components/docs-viewer/playground/auth-editor.tsx +280 -0
  125. package/renderer/components/docs-viewer/playground/body-editor.tsx +221 -0
  126. package/renderer/components/docs-viewer/playground/code-editor.tsx +224 -0
  127. package/renderer/components/docs-viewer/playground/code-snippet.tsx +387 -0
  128. package/renderer/components/docs-viewer/playground/graphql-playground.tsx +745 -0
  129. package/renderer/components/docs-viewer/playground/index.tsx +671 -0
  130. package/renderer/components/docs-viewer/playground/key-value-editor.tsx +261 -0
  131. package/renderer/components/docs-viewer/playground/method-selector.tsx +60 -0
  132. package/renderer/components/docs-viewer/playground/request-builder.tsx +179 -0
  133. package/renderer/components/docs-viewer/playground/request-tabs.tsx +237 -0
  134. package/renderer/components/docs-viewer/playground/response-cards/idle-card.tsx +21 -0
  135. package/renderer/components/docs-viewer/playground/response-cards/index.tsx +93 -0
  136. package/renderer/components/docs-viewer/playground/response-cards/loading-card.tsx +16 -0
  137. package/renderer/components/docs-viewer/playground/response-cards/network-error-card.tsx +23 -0
  138. package/renderer/components/docs-viewer/playground/response-cards/response-body-card.tsx +268 -0
  139. package/renderer/components/docs-viewer/playground/response-cards/types.ts +82 -0
  140. package/renderer/components/docs-viewer/playground/response-viewer.tsx +43 -0
  141. package/renderer/components/docs-viewer/search/index.ts +2 -0
  142. package/renderer/components/docs-viewer/search/search-dialog.tsx +331 -0
  143. package/renderer/components/docs-viewer/search/use-search.ts +117 -0
  144. package/renderer/components/docs-viewer/shared/markdown-renderer.tsx +431 -0
  145. package/renderer/components/docs-viewer/shared/method-badge.tsx +41 -0
  146. package/renderer/components/docs-viewer/shared/schema-viewer.tsx +349 -0
  147. package/renderer/components/docs-viewer/sidebar/collection-tree.tsx +239 -0
  148. package/renderer/components/docs-viewer/sidebar/endpoint-options.tsx +316 -0
  149. package/renderer/components/docs-viewer/sidebar/index.tsx +343 -0
  150. package/renderer/components/docs-viewer/sidebar/right-sidebar.tsx +202 -0
  151. package/renderer/components/docs-viewer/sidebar/sidebar-group.tsx +118 -0
  152. package/renderer/components/docs-viewer/sidebar/sidebar-item.tsx +226 -0
  153. package/renderer/components/docs-viewer/sidebar/sidebar-section.tsx +52 -0
  154. package/renderer/components/theme-provider.tsx +11 -0
  155. package/renderer/components/theme-toggle.tsx +76 -0
  156. package/renderer/components/ui/badge.tsx +46 -0
  157. package/renderer/components/ui/button.tsx +59 -0
  158. package/renderer/components/ui/dialog.tsx +118 -0
  159. package/renderer/components/ui/dropdown-menu.tsx +257 -0
  160. package/renderer/components/ui/input.tsx +21 -0
  161. package/renderer/components/ui/label.tsx +24 -0
  162. package/renderer/components/ui/navigation-menu.tsx +168 -0
  163. package/renderer/components/ui/select.tsx +190 -0
  164. package/renderer/components/ui/spinner.tsx +114 -0
  165. package/renderer/components/ui/tabs.tsx +66 -0
  166. package/renderer/components/ui/tooltip.tsx +61 -0
  167. package/renderer/hooks/use-code-copy.ts +88 -0
  168. package/renderer/hooks/use-openapi-title.ts +44 -0
  169. package/renderer/lib/api-docs/agent/index.ts +6 -0
  170. package/renderer/lib/api-docs/agent/indexer.ts +323 -0
  171. package/renderer/lib/api-docs/agent/spec-summary.ts +335 -0
  172. package/renderer/lib/api-docs/agent/types.ts +116 -0
  173. package/renderer/lib/api-docs/auth/auth-context.tsx +225 -0
  174. package/renderer/lib/api-docs/auth/auth-storage.ts +87 -0
  175. package/renderer/lib/api-docs/auth/crypto.ts +89 -0
  176. package/renderer/lib/api-docs/auth/index.ts +4 -0
  177. package/renderer/lib/api-docs/code-editor/db.ts +164 -0
  178. package/renderer/lib/api-docs/code-editor/hooks.ts +266 -0
  179. package/renderer/lib/api-docs/code-editor/index.ts +6 -0
  180. package/renderer/lib/api-docs/code-editor/mode-context.tsx +207 -0
  181. package/renderer/lib/api-docs/code-editor/types.ts +105 -0
  182. package/renderer/lib/api-docs/codegen/definitions.ts +297 -0
  183. package/renderer/lib/api-docs/codegen/har.ts +251 -0
  184. package/renderer/lib/api-docs/codegen/index.ts +159 -0
  185. package/renderer/lib/api-docs/factories.ts +151 -0
  186. package/renderer/lib/api-docs/index.ts +17 -0
  187. package/renderer/lib/api-docs/mobile-context.tsx +112 -0
  188. package/renderer/lib/api-docs/navigation-context.tsx +88 -0
  189. package/renderer/lib/api-docs/parsers/graphql/README.md +129 -0
  190. package/renderer/lib/api-docs/parsers/graphql/index.ts +91 -0
  191. package/renderer/lib/api-docs/parsers/graphql/parser.ts +491 -0
  192. package/renderer/lib/api-docs/parsers/graphql/transformer.ts +246 -0
  193. package/renderer/lib/api-docs/parsers/graphql/types.ts +283 -0
  194. package/renderer/lib/api-docs/parsers/openapi/README.md +32 -0
  195. package/renderer/lib/api-docs/parsers/openapi/dereferencer.ts +60 -0
  196. package/renderer/lib/api-docs/parsers/openapi/extractors/auth.ts +574 -0
  197. package/renderer/lib/api-docs/parsers/openapi/extractors/body.ts +403 -0
  198. package/renderer/lib/api-docs/parsers/openapi/extractors/index.ts +232 -0
  199. package/renderer/lib/api-docs/parsers/openapi/index.ts +171 -0
  200. package/renderer/lib/api-docs/parsers/openapi/transformer.ts +277 -0
  201. package/renderer/lib/api-docs/parsers/openapi/validator.ts +31 -0
  202. package/renderer/lib/api-docs/playground/context.tsx +107 -0
  203. package/renderer/lib/api-docs/playground/navigation-context.tsx +124 -0
  204. package/renderer/lib/api-docs/playground/request-builder.ts +223 -0
  205. package/renderer/lib/api-docs/playground/request-runner.ts +282 -0
  206. package/renderer/lib/api-docs/playground/types.ts +35 -0
  207. package/renderer/lib/api-docs/types.ts +269 -0
  208. package/renderer/lib/api-docs/utils.ts +311 -0
  209. package/renderer/lib/cache.ts +193 -0
  210. package/renderer/lib/docs/config/index.ts +29 -0
  211. package/renderer/lib/docs/config/loader.ts +142 -0
  212. package/renderer/lib/docs/config/schema.ts +298 -0
  213. package/renderer/lib/docs/index.ts +12 -0
  214. package/renderer/lib/docs/mdx/compiler.ts +176 -0
  215. package/renderer/lib/docs/mdx/frontmatter.ts +80 -0
  216. package/renderer/lib/docs/mdx/index.ts +26 -0
  217. package/renderer/lib/docs/navigation/generator.ts +348 -0
  218. package/renderer/lib/docs/navigation/index.ts +12 -0
  219. package/renderer/lib/docs/navigation/types.ts +123 -0
  220. package/renderer/lib/docs-navigation-context.tsx +80 -0
  221. package/renderer/lib/multi-tenant/context.ts +105 -0
  222. package/renderer/lib/storage/blob.ts +845 -0
  223. package/renderer/lib/utils.ts +6 -0
  224. package/renderer/next.config.ts +76 -0
  225. package/renderer/package.json +66 -0
  226. package/renderer/postcss.config.mjs +5 -0
  227. package/renderer/public/assets/images/screenshot.png +0 -0
  228. package/renderer/public/assets/logo/dark.svg +9 -0
  229. package/renderer/public/assets/logo/light.svg +9 -0
  230. package/renderer/public/assets/logo.svg +9 -0
  231. package/renderer/public/file.svg +1 -0
  232. package/renderer/public/globe.svg +1 -0
  233. package/renderer/public/icon.png +0 -0
  234. package/renderer/public/logo.svg +9 -0
  235. package/renderer/public/window.svg +1 -0
  236. package/renderer/tsconfig.json +28 -0
  237. package/templates/basic/README.md +139 -0
  238. package/templates/basic/assets/favicon.svg +4 -0
  239. package/templates/basic/assets/logo.svg +9 -0
  240. package/templates/basic/docs.json +47 -0
  241. package/templates/basic/guides/configuration.mdx +149 -0
  242. package/templates/basic/guides/overview.mdx +96 -0
  243. package/templates/basic/index.mdx +39 -0
  244. package/templates/basic/package.json +14 -0
  245. package/templates/basic/quickstart.mdx +92 -0
  246. package/templates/basic/vercel.json +6 -0
  247. package/templates/graphql/README.md +139 -0
  248. package/templates/graphql/api-reference/schema.graphql +305 -0
  249. package/templates/graphql/assets/favicon.svg +4 -0
  250. package/templates/graphql/assets/logo.svg +9 -0
  251. package/templates/graphql/docs.json +54 -0
  252. package/templates/graphql/guides/configuration.mdx +149 -0
  253. package/templates/graphql/guides/overview.mdx +96 -0
  254. package/templates/graphql/index.mdx +39 -0
  255. package/templates/graphql/package.json +14 -0
  256. package/templates/graphql/quickstart.mdx +92 -0
  257. package/templates/graphql/vercel.json +6 -0
  258. package/templates/openapi/README.md +139 -0
  259. package/templates/openapi/api-reference/openapi.json +419 -0
  260. package/templates/openapi/assets/favicon.svg +4 -0
  261. package/templates/openapi/assets/logo.svg +9 -0
  262. package/templates/openapi/docs.json +61 -0
  263. package/templates/openapi/guides/configuration.mdx +149 -0
  264. package/templates/openapi/guides/overview.mdx +96 -0
  265. package/templates/openapi/index.mdx +39 -0
  266. package/templates/openapi/package.json +14 -0
  267. package/templates/openapi/quickstart.mdx +92 -0
  268. package/templates/openapi/vercel.json +6 -0
package/LICENSE ADDED
@@ -0,0 +1,33 @@
1
+ GNU AFFERO GENERAL PUBLIC LICENSE
2
+ Version 3, 19 November 2007
3
+
4
+ Copyright (C) 2024 Brainfish AI
5
+
6
+ This program is free software: you can redistribute it and/or modify
7
+ it under the terms of the GNU Affero General Public License as published by
8
+ the Free Software Foundation, either version 3 of the License, or
9
+ (at your option) any later version.
10
+
11
+ This program is distributed in the hope that it will be useful,
12
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
13
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
+ GNU Affero General Public License for more details.
15
+
16
+ You should have received a copy of the GNU Affero General Public License
17
+ along with this program. If not, see <https://www.gnu.org/licenses/>.
18
+
19
+ ---
20
+
21
+ ADDITIONAL TERMS
22
+
23
+ This software is provided by Brainfish AI for use with the Brainfish
24
+ documentation platform. Commercial use, redistribution, or creation of
25
+ derivative works for commercial purposes requires explicit written
26
+ permission from Brainfish AI.
27
+
28
+ For commercial licensing inquiries, contact: support@brainfi.sh
29
+
30
+ ---
31
+
32
+ The complete text of the GNU Affero General Public License v3.0 can be
33
+ found at: https://www.gnu.org/licenses/agpl-3.0.txt
package/README.md ADDED
@@ -0,0 +1,415 @@
1
+ # @brainfish-ai/devdoc
2
+
3
+ Documentation framework for developers. Write docs in MDX, preview locally, deploy to Brainfish.
4
+
5
+ ## Quick Start
6
+
7
+ Create a new documentation site with one command:
8
+
9
+ ```bash
10
+ npx @brainfish-ai/devdoc create my-docs
11
+ ```
12
+
13
+ This will prompt you to select a template:
14
+
15
+ - **Basic** - Simple documentation site with guides and pages
16
+ - **OpenAPI** - Documentation with REST API reference (OpenAPI/Swagger)
17
+ - **GraphQL** - Documentation with GraphQL API playground
18
+
19
+ You can also specify the template directly:
20
+
21
+ ```bash
22
+ npx @brainfish-ai/devdoc create my-docs --template openapi
23
+ npx @brainfish-ai/devdoc create my-docs --template graphql
24
+ ```
25
+
26
+ Then start the development server:
27
+
28
+ ```bash
29
+ cd my-docs
30
+ npm run dev
31
+ ```
32
+
33
+ Open http://localhost:3000 to preview your docs.
34
+
35
+ ## Installation
36
+
37
+ For existing projects:
38
+
39
+ ```bash
40
+ npm install @brainfish-ai/devdoc
41
+ ```
42
+
43
+ Or install globally:
44
+
45
+ ```bash
46
+ npm install -g @brainfish-ai/devdoc
47
+ ```
48
+
49
+ ## Project Structure
50
+
51
+ ```
52
+ my-docs/
53
+ ├── docs.json # Configuration
54
+ ├── index.mdx # Homepage
55
+ ├── quickstart.mdx # Getting started guide
56
+ ├── api-reference/ # API specs (OpenAPI/GraphQL)
57
+ └── public/ # Static assets
58
+ └── logo.svg
59
+ ```
60
+
61
+ ### 2. Configure docs.json
62
+
63
+ ```json
64
+ {
65
+ "name": "My Documentation",
66
+ "favicon": "/favicon.svg",
67
+ "navigation": {
68
+ "tabs": [
69
+ {
70
+ "tab": "Guides",
71
+ "type": "docs",
72
+ "groups": [
73
+ {
74
+ "group": "Getting Started",
75
+ "pages": ["index", "quickstart"]
76
+ }
77
+ ]
78
+ }
79
+ ]
80
+ }
81
+ }
82
+ ```
83
+
84
+ ### 3. Write your docs
85
+
86
+ Create MDX files with frontmatter:
87
+
88
+ ```mdx
89
+ ---
90
+ title: Welcome
91
+ description: Get started with our documentation
92
+ ---
93
+
94
+ # Welcome
95
+
96
+ This is your documentation homepage.
97
+
98
+ <Note>
99
+ This is a helpful note for your readers.
100
+ </Note>
101
+ ```
102
+
103
+ ### 4. Run the dev server
104
+
105
+ ```bash
106
+ npx devdoc dev
107
+ ```
108
+
109
+ Open http://localhost:3000 to preview your docs.
110
+
111
+ ## CLI Commands
112
+
113
+ | Command | Description |
114
+ | --------------- | ---------------------------------------- |
115
+ | `devdoc create` | Create a new DevDoc documentation site |
116
+ | `devdoc dev` | Start development server with hot reload |
117
+ | `devdoc build` | Build documentation for production |
118
+ | `devdoc start` | Start production server |
119
+ | `devdoc check` | Validate configuration and MDX files |
120
+ | `devdoc deploy` | Deploy documentation to DevDoc platform |
121
+
122
+ ### Command Options
123
+
124
+ **devdoc create**
125
+
126
+ ```bash
127
+ devdoc create [project-directory] [options]
128
+
129
+ Options:
130
+ -t, --template <type> Template to use (basic, openapi, graphql)
131
+ --no-git Skip git initialization
132
+ --no-install Skip installing dependencies
133
+ ```
134
+
135
+ Templates available:
136
+ - `basic` - Simple docs with guides
137
+ - `openapi` - Docs + REST API reference (OpenAPI/Swagger)
138
+ - `graphql` - Docs + GraphQL API playground
139
+
140
+ **devdoc dev**
141
+
142
+ ```bash
143
+ devdoc dev [options]
144
+
145
+ Options:
146
+ -p, --port <port> Port to run server on (default: 3000)
147
+ -H, --host <host> Host to bind to (default: localhost)
148
+ ```
149
+
150
+ **devdoc build**
151
+
152
+ ```bash
153
+ devdoc build [options]
154
+
155
+ Options:
156
+ -o, --output <dir> Output directory (default: dist)
157
+ ```
158
+
159
+ **devdoc start**
160
+
161
+ ```bash
162
+ devdoc start [options]
163
+
164
+ Options:
165
+ -p, --port <port> Port to run server on (default: 3000)
166
+ ```
167
+
168
+ **devdoc deploy**
169
+
170
+ ```bash
171
+ devdoc deploy [options]
172
+
173
+ Options:
174
+ -u, --url <url> API URL (default: https://devdoc.sh)
175
+ ```
176
+
177
+ Deploy your documentation to the DevDoc platform and get a public URL (e.g., `https://my-docs.devdoc.sh`).
178
+
179
+ On first deploy, a `.devdoc.json` file is created to track your project. Subsequent deploys will update the same project.
180
+
181
+ ## Configuration (docs.json)
182
+
183
+ ### Basic Configuration
184
+
185
+ ```json
186
+ {
187
+ "name": "My Product",
188
+ "logo": {
189
+ "light": "/logo/light.svg",
190
+ "dark": "/logo/dark.svg"
191
+ },
192
+ "favicon": "/favicon.ico",
193
+ "colors": {
194
+ "primary": "#10b981"
195
+ }
196
+ }
197
+ ```
198
+
199
+ ### Navigation
200
+
201
+ ```json
202
+ {
203
+ "navigation": {
204
+ "tabs": [
205
+ {
206
+ "tab": "Documentation",
207
+ "type": "docs",
208
+ "groups": [
209
+ {
210
+ "group": "Getting Started",
211
+ "icon": "rocket-launch",
212
+ "pages": ["index", "quickstart"]
213
+ },
214
+ {
215
+ "group": "Guides",
216
+ "pages": [
217
+ "guides/overview",
218
+ {
219
+ "group": "Advanced",
220
+ "pages": ["guides/advanced/topic1", "guides/advanced/topic2"]
221
+ }
222
+ ]
223
+ }
224
+ ]
225
+ },
226
+ {
227
+ "tab": "API Reference",
228
+ "type": "openapi",
229
+ "path": "/api-reference",
230
+ "versions": [
231
+ { "version": "v2", "spec": "api-reference/v2/openapi.json", "default": true },
232
+ { "version": "v1", "spec": "api-reference/v1/openapi.json" }
233
+ ]
234
+ },
235
+ {
236
+ "tab": "GraphQL API",
237
+ "type": "graphql",
238
+ "path": "/graphql-api",
239
+ "schema": "api-reference/schema.graphql",
240
+ "endpoint": "https://api.example.com/graphql"
241
+ },
242
+ {
243
+ "tab": "Changelog",
244
+ "type": "changelog",
245
+ "path": "/changelog"
246
+ }
247
+ ]
248
+ }
249
+ }
250
+ ```
251
+
252
+ ### Notice Banner
253
+
254
+ ```json
255
+ {
256
+ "notice": {
257
+ "content": "🚀 Check out [what's new](/changelog) in the latest release!",
258
+ "dismissible": true,
259
+ "background": "#1e293b"
260
+ }
261
+ }
262
+ ```
263
+
264
+ ### Redirects
265
+
266
+ ```json
267
+ {
268
+ "redirects": [
269
+ {
270
+ "source": "/old-page",
271
+ "destination": "/new-page"
272
+ },
273
+ {
274
+ "source": "/docs/:slug*",
275
+ "destination": "/guides/:slug*"
276
+ }
277
+ ]
278
+ }
279
+ ```
280
+
281
+ ## MDX Components
282
+
283
+ ### Note / Warning / Tip
284
+
285
+ ```mdx
286
+ <Note title="Important">
287
+ This is important information.
288
+ </Note>
289
+
290
+ <Warning>
291
+ Be careful with this operation.
292
+ </Warning>
293
+
294
+ <Tip>
295
+ Here's a helpful tip.
296
+ </Tip>
297
+ ```
298
+
299
+ ### Cards
300
+
301
+ ```mdx
302
+ <Card title="Getting Started" href="/quickstart">
303
+ Learn how to get started quickly.
304
+ </Card>
305
+
306
+ <CardGroup cols={2}>
307
+ <Card title="Installation">Install the package</Card>
308
+ <Card title="Configuration">Configure your project</Card>
309
+ </CardGroup>
310
+ ```
311
+
312
+ ### Steps
313
+
314
+ ```mdx
315
+ <Steps>
316
+ <Step title="Install">
317
+ Run `npm install @brainfish/devdoc`
318
+ </Step>
319
+ <Step title="Configure">
320
+ Create your `docs.json` file
321
+ </Step>
322
+ <Step title="Run">
323
+ Start the dev server with `devdoc dev`
324
+ </Step>
325
+ </Steps>
326
+ ```
327
+
328
+ ### Code Blocks
329
+
330
+ ````mdx
331
+ ```javascript title="example.js" {2-3}
332
+ function hello() {
333
+ // These lines are highlighted
334
+ console.log("Hello, world!");
335
+ }
336
+ ```
337
+ ````
338
+
339
+ ### Accordion
340
+
341
+ ```mdx
342
+ <Accordion title="Click to expand">
343
+ Hidden content that can be revealed.
344
+ </Accordion>
345
+ ```
346
+
347
+ ### Tabs
348
+
349
+ ```mdx
350
+ <Tabs>
351
+ <Tab title="npm">
352
+ ```bash
353
+ npm install package
354
+ ```
355
+ </Tab>
356
+ <Tab title="yarn">
357
+ ```bash
358
+ yarn add package
359
+ ```
360
+ </Tab>
361
+ </Tabs>
362
+ ```
363
+
364
+ ## Deployment
365
+
366
+ ### Brainfish (Recommended)
367
+
368
+ Deploy to Brainfish with a single command:
369
+
370
+ ```bash
371
+ npx @brainfish-ai/devdoc deploy
372
+ ```
373
+
374
+ Your docs will be live at `https://your-project.devdoc.sh`
375
+
376
+ ### Manual Deployment
377
+
378
+ ```bash
379
+ # Build for production
380
+ npx @brainfish-ai/devdoc build
381
+
382
+ # The output is in the dist/ directory
383
+ # Deploy this to any static hosting (Vercel, Netlify, etc.)
384
+ ```
385
+
386
+ ## Development
387
+
388
+ ### Testing locally
389
+
390
+ ```bash
391
+ # Clone the repo
392
+ git clone https://github.com/brainfish/brainfish-api-docs
393
+
394
+ # Install dependencies
395
+ cd brainfish-api-docs
396
+ npm install
397
+
398
+ # Build and test the CLI
399
+ npm run devdoc:dev
400
+ ```
401
+
402
+ ### Building for publish
403
+
404
+ ```bash
405
+ # Build the full bundle (CLI + renderer)
406
+ npm run devdoc:bundle
407
+
408
+ # This creates packages/devdoc/renderer/ with the built app
409
+ ```
410
+
411
+ ## License
412
+
413
+ AGPL-3.0 - See [LICENSE](./LICENSE) for details.
414
+
415
+ For commercial licensing, contact: support@brainfi.sh
package/bin/devdoc.js ADDED
@@ -0,0 +1,13 @@
1
+ #!/usr/bin/env node
2
+
3
+ /**
4
+ * DevDoc CLI - Documentation framework for developers
5
+ *
6
+ * Usage:
7
+ * devdoc dev - Start development server
8
+ * devdoc build - Build for production
9
+ * devdoc start - Start production server
10
+ * devdoc check - Validate configuration
11
+ */
12
+
13
+ import('../dist/cli/index.js');
@@ -0,0 +1,5 @@
1
+ interface BuildOptions {
2
+ output: string;
3
+ }
4
+ export declare function build(options: BuildOptions): Promise<void>;
5
+ export {};
@@ -0,0 +1,87 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.build = build;
7
+ const child_process_1 = require("child_process");
8
+ const path_1 = __importDefault(require("path"));
9
+ const fs_extra_1 = __importDefault(require("fs-extra"));
10
+ const config_1 = require("../../config");
11
+ const logger_1 = require("../../utils/logger");
12
+ const paths_1 = require("../../utils/paths");
13
+ async function build(options) {
14
+ const projectRoot = process.cwd();
15
+ logger_1.logger.info('Building documentation for production...');
16
+ // Check for docs.json
17
+ const configPath = path_1.default.join(projectRoot, 'docs.json');
18
+ if (!fs_extra_1.default.existsSync(configPath)) {
19
+ logger_1.logger.error('docs.json not found in current directory');
20
+ process.exit(1);
21
+ }
22
+ // Load and validate config
23
+ try {
24
+ const config = await (0, config_1.loadConfig)(projectRoot);
25
+ const validation = (0, config_1.validateConfig)(config);
26
+ if (!validation.valid) {
27
+ logger_1.logger.error('Invalid docs.json configuration:');
28
+ validation.errors.forEach(err => logger_1.logger.error(` - ${err}`));
29
+ process.exit(1);
30
+ }
31
+ logger_1.logger.success(`Building: ${config.name || 'Untitled'}`);
32
+ }
33
+ catch (error) {
34
+ logger_1.logger.error(`Failed to load docs.json: ${error.message}`);
35
+ process.exit(1);
36
+ }
37
+ // Get the renderer directory
38
+ const rendererDir = (0, paths_1.getRendererDir)();
39
+ if (!rendererDir || !fs_extra_1.default.existsSync(rendererDir)) {
40
+ logger_1.logger.error('Renderer not found. Package may be corrupted.');
41
+ process.exit(1);
42
+ }
43
+ // Set environment variables
44
+ const env = {
45
+ ...process.env,
46
+ STARTER_PATH: projectRoot,
47
+ };
48
+ const startTime = Date.now();
49
+ // Run Next.js build
50
+ const child = (0, child_process_1.spawn)('npx', ['next', 'build'], {
51
+ cwd: rendererDir,
52
+ env,
53
+ stdio: 'inherit',
54
+ shell: true,
55
+ });
56
+ child.on('error', (error) => {
57
+ logger_1.logger.error(`Build failed: ${error.message}`);
58
+ process.exit(1);
59
+ });
60
+ child.on('exit', async (code) => {
61
+ if (code !== 0) {
62
+ logger_1.logger.error('Build failed');
63
+ process.exit(code || 1);
64
+ }
65
+ // Copy build output to user's output directory
66
+ const nextOutput = path_1.default.join(rendererDir, '.next');
67
+ const outputDir = path_1.default.resolve(projectRoot, options.output);
68
+ try {
69
+ await fs_extra_1.default.ensureDir(outputDir);
70
+ await fs_extra_1.default.copy(nextOutput, path_1.default.join(outputDir, '.next'));
71
+ // Copy public assets from user's project
72
+ const publicDir = path_1.default.join(projectRoot, 'public');
73
+ if (fs_extra_1.default.existsSync(publicDir)) {
74
+ await fs_extra_1.default.copy(publicDir, path_1.default.join(outputDir, 'public'));
75
+ }
76
+ const duration = ((Date.now() - startTime) / 1000).toFixed(2);
77
+ logger_1.logger.success(`Build completed in ${duration}s`);
78
+ logger_1.logger.info(`Output: ${outputDir}`);
79
+ }
80
+ catch (error) {
81
+ logger_1.logger.error(`Failed to copy build output: ${error.message}`);
82
+ process.exit(1);
83
+ }
84
+ process.exit(0);
85
+ });
86
+ }
87
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY2xpL2NvbW1hbmRzL2J1aWxkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBV0Esc0JBNEZDO0FBdkdELGlEQUFzQztBQUN0QyxnREFBd0I7QUFDeEIsd0RBQTBCO0FBQzFCLHlDQUEwRDtBQUMxRCwrQ0FBNEM7QUFDNUMsNkNBQW1EO0FBTTVDLEtBQUssVUFBVSxLQUFLLENBQUMsT0FBcUI7SUFDL0MsTUFBTSxXQUFXLEdBQUcsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDO0lBRWxDLGVBQU0sQ0FBQyxJQUFJLENBQUMsMENBQTBDLENBQUMsQ0FBQztJQUV4RCxzQkFBc0I7SUFDdEIsTUFBTSxVQUFVLEdBQUcsY0FBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFDdkQsSUFBSSxDQUFDLGtCQUFFLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7UUFDL0IsZUFBTSxDQUFDLEtBQUssQ0FBQywwQ0FBMEMsQ0FBQyxDQUFDO1FBQ3pELE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbEIsQ0FBQztJQUVELDJCQUEyQjtJQUMzQixJQUFJLENBQUM7UUFDSCxNQUFNLE1BQU0sR0FBRyxNQUFNLElBQUEsbUJBQVUsRUFBQyxXQUFXLENBQUMsQ0FBQztRQUM3QyxNQUFNLFVBQVUsR0FBRyxJQUFBLHVCQUFjLEVBQUMsTUFBTSxDQUFDLENBQUM7UUFFMUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUN0QixlQUFNLENBQUMsS0FBSyxDQUFDLGtDQUFrQyxDQUFDLENBQUM7WUFDakQsVUFBVSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxlQUFNLENBQUMsS0FBSyxDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQzdELE9B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Q0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDOUQsZUFBTSxDQUFDLE9BQU8sQ0FBQyxzQkFBc0IsUUFBUSxHQUFHLENBQUMsQ0FBQztZQUNsRCxlQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsU0FBUyxFQUFFLENBQUMsQ0FBQztRQUN0QyxDQUFDO1FBQUMsT0FBTyxLQUFVLEVBQUUsQ0FBQztZQUNwQixlQUFNLENBQUMsS0FBSyxDQUFDLGdDQUFnQyxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztZQUM5RCxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2xCLENBQUM7UUFFRCxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2xCLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHNwYXduIH0gZnJvbSAnY2hpbGRfcHJvY2Vzcyc7XG5pbXBvcnQgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCBmcyBmcm9tICdmcy1leHRyYSc7XG5pbXBvcnQgeyBsb2FkQ29uZmlnLCB2YWxpZGF0ZUNvbmZpZyB9IGZyb20gJy4uLy4uL2NvbmZpZyc7XG5pbXBvcnQgeyBsb2dnZXIgfSBmcm9tICcuLi8uLi91dGlscy9sb2dnZXInO1xuaW1wb3J0IHsgZ2V0UmVuZGVyZXJEaXIgfSBmcm9tICcuLi8uLi91dGlscy9wYXRocyc7XG5cbmludGVyZmFjZSBCdWlsZE9wdGlvbnMge1xuICBvdXRwdXQ6IHN0cmluZztcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGJ1aWxkKG9wdGlvbnM6IEJ1aWxkT3B0aW9ucyk6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCBwcm9qZWN0Um9vdCA9IHByb2Nlc3MuY3dkKCk7XG4gIFxuICBsb2dnZXIuaW5mbygnQnVpbGRpbmcgZG9jdW1lbnRhdGlvbiBmb3IgcHJvZHVjdGlvbi4uLicpO1xuICBcbiAgLy8gQ2hlY2sgZm9yIGRvY3MuanNvblxuICBjb25zdCBjb25maWdQYXRoID0gcGF0aC5qb2luKHByb2plY3RSb290LCAnZG9jcy5qc29uJyk7XG4gIGlmICghZnMuZXhpc3RzU3luYyhjb25maWdQYXRoKSkge1xuICAgIGxvZ2dlci5lcnJvcignZG9jcy5qc29uIG5vdCBmb3VuZCBpbiBjdXJyZW50IGRpcmVjdG9yeScpO1xuICAgIHByb2Nlc3MuZXhpdCgxKTtcbiAgfVxuICBcbiAgLy8gTG9hZCBhbmQgdmFsaWRhdGUgY29uZmlnXG4gIHRyeSB7XG4gICAgY29uc3QgY29uZmlnID0gYXdhaXQgbG9hZENvbmZpZyhwcm9qZWN0Um9vdCk7XG4gICAgY29uc3QgdmFsaWRhdGlvbiA9IHZhbGlkYXRlQ29uZmlnKGNvbmZpZyk7XG4gICAgXG4gICAgaWYgKCF2YWxpZGF0aW9uLnZhbGlkKSB7XG4gICAgICBsb2dnZXIuZXJyb3IoJ0ludmFsaWQgZG9jcy5qc29uIGNvbmZpZ3VyYXRpb246Jyk7XG4gICAgICB2YWxpZGF0aW9uLmVycm9ycy5mb3JFYWNoKGVyciA9PiBsb2dnZXIuZXJyb3IoYCAgLSAke2Vycn1gKSk7XG4gICAgICBwcm9jZXNzLmV4aXQoMSk7XG4gICAgfVxuICAgIFxuICAgIGxvZ2dlci5zdWNjZXNzKGBCdWlsZGluZzogJHtjb25maWcubmFtZSB8fCAnVW50aXRsZWQnfWApO1xuICB9IGNhdGNoIChlcnJvcjogYW55KSB7XG4gICAgbG9nZ2VyLmVycm9yKGBGYWlsZWQgdG8gbG9hZCBkb2NzLmpzb246ICR7ZXJyb3IubWVzc2FnZX1gKTtcbiAgICBwcm9jZXNzLmV4aXQoMSk7XG4gIH1cbiAgXG4gIC8vIEdldCB0aGUgcmVuZGVyZXIgZGlyZWN0b3J5XG4gIGNvbnN0IHJlbmRlcmVyRGlyID0gZ2V0UmVuZGVyZXJEaXIoKTtcbiAgXG4gIGlmICghcmVuZGVyZXJEaXIgfHwgIWZzLmV4aXN0c1N5bmMocmVuZGVyZXJEaXIpKSB7XG4gICAgbG9nZ2VyLmVycm9yKCdSZW5kZXJlciBub3QgZm91bmQuIFBhY2thZ2UgbWF5IGJlIGNvcnJ1cHRlZC4nKTtcbiAgICBwcm9jZXNzLmV4aXQoMSk7XG4gIH1cbiAgXG4gIC8vIFNldCBlbnZpcm9ubWVudCB2YXJpYWJsZXNcbiAgY29uc3QgZW52ID0ge1xuICAgIC4uLnByb2Nlc3MuZW52LFxuICAgIFNUQVJURVJfUEFUSDogcHJvamVjdFJvb3QsXG4gIH07XG4gIFxuICBjb25zdCBzdGFydFRpbWUgPSBEYXRlLm5vdygpO1xuICBcbiAgLy8gUnVuIE5leHQuanMgYnVpbGRcbiAgY29uc3QgY2hpbGQgPSBzcGF3bihcbiAgICAnbnB4JyxcbiAgICBbJ25leHQnLCAnYnVpbGQnXSxcbiAgICB7XG4gICAgICBjd2Q6IHJlbmRlcmVyRGlyLFxuICAgICAgZW52LFxuICAgICAgc3RkaW86ICdpbmhlcml0JyxcbiAgICAgIHNoZWxsOiB0cnVlLFxuICAgIH1cbiAgKTtcbiAgXG4gIGNoaWxkLm9uKCdlcnJvcicsIChlcnJvcikgPT4ge1xuICAgIGxvZ2dlci5lcnJvcihgQnVpbGQgZmFpbGVkOiAke2Vycm9yLm1lc3NhZ2V9YCk7XG4gICAgcHJvY2Vzcy5leGl0KDEpO1xuICB9KTtcbiAgXG4gIGNoaWxkLm9uKCdleGl0JywgYXN5bmMgKGNvZGUpID0+IHtcbiAgICBpZiAoY29kZSAhPT0gMCkge1xuICAgICAgbG9nZ2VyLmVycm9yKCdCdWlsZCBmYWlsZWQnKTtcbiAgICAgIHByb2Nlc3MuZXhpdChjb2RlIHx8IDEpO1xuICAgIH1cbiAgICBcbiAgICAvLyBDb3B5IGJ1aWxkIG91dHB1dCB0byB1c2VyJ3Mgb3V0cHV0IGRpcmVjdG9yeVxuICAgIGNvbnN0IG5leHRPdXRwdXQgPSBwYXRoLmpvaW4ocmVuZGVyZXJEaXIsICcubmV4dCcpO1xuICAgIGNvbnN0IG91dHB1dERpciA9IHBhdGgucmVzb2x2ZShwcm9qZWN0Um9vdCwgb3B0aW9ucy5vdXRwdXQpO1xuICAgIFxuICAgIHRyeSB7XG4gICAgICBhd2FpdCBmcy5lbnN1cmVEaXIob3V0cHV0RGlyKTtcbiAgICAgIGF3YWl0IGZzLmNvcHkobmV4dE91dHB1dCwgcGF0aC5qb2luKG91dHB1dERpciwgJy5uZXh0JykpO1xuICAgICAgXG4gICAgICAvLyBDb3B5IHB1YmxpYyBhc3NldHMgZnJvbSB1c2VyJ3MgcHJvamVjdFxuICAgICAgY29uc3QgcHVibGljRGlyID0gcGF0aC5qb2luKHByb2plY3RSb290LCAncHVibGljJyk7XG4gICAgICBpZiAoZnMuZXhpc3RzU3luYyhwdWJsaWNEaXIpKSB7XG4gICAgICAgIGF3YWl0IGZzLmNvcHkocHVibGljRGlyLCBwYXRoLmpvaW4ob3V0cHV0RGlyLCAncHVibGljJykpO1xuICAgICAgfVxuICAgICAgXG4gICAgICBjb25zdCBkdXJhdGlvbiA9ICgoRGF0ZS5ub3coKSAtIHN0YXJ0VGltZSkgLyAxMDAwKS50b0ZpeGVkKDIpO1xuICAgICAgbG9nZ2VyLnN1Y2Nlc3MoYEJ1aWxkIGNvbXBsZXRlZCBpbiAke2R1cmF0aW9ufXNgKTtcbiAgICAgIGxvZ2dlci5pbmZvKGBPdXRwdXQ6ICR7b3V0cHV0RGlyfWApO1xuICAgIH0gY2F0Y2ggKGVycm9yOiBhbnkpIHtcbiAgICAgIGxvZ2dlci5lcnJvcihgRmFpbGVkIHRvIGNvcHkgYnVpbGQgb3V0cHV0OiAke2Vycm9yLm1lc3NhZ2V9YCk7XG4gICAgICBwcm9jZXNzLmV4aXQoMSk7XG4gICAgfVxuICAgIFxuICAgIHByb2Nlc3MuZXhpdCgwKTtcbiAgfSk7XG59XG4iXX0=
@@ -0,0 +1 @@
1
+ export declare function check(): Promise<void>;