@farming-labs/tanstack-start 0.0.33 → 0.1.1-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.
Files changed (157) hide show
  1. package/dist/api-reference.d.ts +3 -0
  2. package/dist/api-reference.d.ts.map +1 -0
  3. package/dist/api-reference.js +20 -0
  4. package/dist/api-reference.js.map +1 -0
  5. package/dist/dist.bak/content.d.ts +40 -0
  6. package/dist/dist.bak/content.d.ts.map +1 -0
  7. package/dist/dist.bak/content.js +189 -0
  8. package/dist/dist.bak/content.js.map +1 -0
  9. package/dist/dist.bak/docs/src/api-reference.d.ts +23 -0
  10. package/dist/dist.bak/docs/src/api-reference.d.ts.map +1 -0
  11. package/dist/dist.bak/docs/src/api-reference.js +564 -0
  12. package/dist/dist.bak/docs/src/api-reference.js.map +1 -0
  13. package/dist/dist.bak/docs/src/create-theme.d.ts +74 -0
  14. package/dist/dist.bak/docs/src/create-theme.d.ts.map +1 -0
  15. package/dist/dist.bak/docs/src/create-theme.js +86 -0
  16. package/dist/dist.bak/docs/src/create-theme.js.map +1 -0
  17. package/dist/dist.bak/docs/src/define-docs.d.ts +6 -0
  18. package/dist/dist.bak/docs/src/define-docs.d.ts.map +1 -0
  19. package/dist/dist.bak/docs/src/define-docs.js +27 -0
  20. package/dist/dist.bak/docs/src/define-docs.js.map +1 -0
  21. package/dist/dist.bak/docs/src/i18n.d.ts +15 -0
  22. package/dist/dist.bak/docs/src/i18n.d.ts.map +1 -0
  23. package/dist/dist.bak/docs/src/i18n.js +48 -0
  24. package/dist/dist.bak/docs/src/i18n.js.map +1 -0
  25. package/dist/dist.bak/docs/src/index.d.ts +16 -0
  26. package/dist/dist.bak/docs/src/index.d.ts.map +1 -0
  27. package/dist/dist.bak/docs/src/index.js +14 -0
  28. package/dist/dist.bak/docs/src/index.js.map +1 -0
  29. package/dist/dist.bak/docs/src/metadata.d.ts +24 -0
  30. package/dist/dist.bak/docs/src/metadata.d.ts.map +1 -0
  31. package/dist/dist.bak/docs/src/metadata.js +90 -0
  32. package/dist/dist.bak/docs/src/metadata.js.map +1 -0
  33. package/dist/dist.bak/docs/src/server.d.ts +3 -0
  34. package/dist/dist.bak/docs/src/server.d.ts.map +1 -0
  35. package/dist/dist.bak/docs/src/server.js +2 -0
  36. package/dist/dist.bak/docs/src/server.js.map +1 -0
  37. package/dist/dist.bak/docs/src/types.d.ts +1344 -0
  38. package/dist/dist.bak/docs/src/types.d.ts.map +1 -0
  39. package/dist/dist.bak/docs/src/types.js +6 -0
  40. package/dist/dist.bak/docs/src/types.js.map +1 -0
  41. package/dist/dist.bak/docs/src/utils.d.ts +6 -0
  42. package/dist/dist.bak/docs/src/utils.d.ts.map +1 -0
  43. package/dist/dist.bak/docs/src/utils.js +32 -0
  44. package/dist/dist.bak/docs/src/utils.js.map +1 -0
  45. package/dist/dist.bak/index.d.ts +12 -0
  46. package/dist/dist.bak/index.d.ts.map +1 -0
  47. package/dist/dist.bak/index.js +12 -0
  48. package/dist/dist.bak/index.js.map +1 -0
  49. package/dist/dist.bak/react.d.ts +7 -0
  50. package/dist/dist.bak/react.d.ts.map +1 -0
  51. package/dist/dist.bak/react.js +22 -0
  52. package/dist/dist.bak/react.js.map +1 -0
  53. package/dist/dist.bak/server.d.ts +31 -0
  54. package/dist/dist.bak/server.d.ts.map +1 -0
  55. package/dist/dist.bak/server.js +638 -0
  56. package/dist/dist.bak/server.js.map +1 -0
  57. package/dist/dist.bak/tanstack-start/src/api-reference.d.ts +3 -0
  58. package/dist/dist.bak/tanstack-start/src/api-reference.d.ts.map +1 -0
  59. package/dist/dist.bak/tanstack-start/src/api-reference.js +41 -0
  60. package/dist/dist.bak/tanstack-start/src/api-reference.js.map +1 -0
  61. package/dist/dist.bak/tanstack-start/src/content.d.ts +40 -0
  62. package/dist/dist.bak/tanstack-start/src/content.d.ts.map +1 -0
  63. package/dist/dist.bak/tanstack-start/src/content.js +189 -0
  64. package/dist/dist.bak/tanstack-start/src/content.js.map +1 -0
  65. package/dist/dist.bak/tanstack-start/src/index.d.ts +12 -0
  66. package/dist/dist.bak/tanstack-start/src/index.d.ts.map +1 -0
  67. package/dist/dist.bak/tanstack-start/src/index.js +12 -0
  68. package/dist/dist.bak/tanstack-start/src/index.js.map +1 -0
  69. package/dist/dist.bak/tanstack-start/src/react.d.ts +7 -0
  70. package/dist/dist.bak/tanstack-start/src/react.d.ts.map +1 -0
  71. package/dist/dist.bak/tanstack-start/src/react.js +22 -0
  72. package/dist/dist.bak/tanstack-start/src/react.js.map +1 -0
  73. package/dist/dist.bak/tanstack-start/src/server.d.ts +32 -0
  74. package/dist/dist.bak/tanstack-start/src/server.d.ts.map +1 -0
  75. package/dist/dist.bak/tanstack-start/src/server.js +639 -0
  76. package/dist/dist.bak/tanstack-start/src/server.js.map +1 -0
  77. package/dist/dist.bak/tanstack-start/src/vite.d.ts +3 -0
  78. package/dist/dist.bak/tanstack-start/src/vite.d.ts.map +1 -0
  79. package/dist/dist.bak/tanstack-start/src/vite.js +137 -0
  80. package/dist/dist.bak/tanstack-start/src/vite.js.map +1 -0
  81. package/dist/dist.bak/vite.d.ts +3 -0
  82. package/dist/dist.bak/vite.d.ts.map +1 -0
  83. package/dist/dist.bak/vite.js +137 -0
  84. package/dist/dist.bak/vite.js.map +1 -0
  85. package/dist/docs/src/api-reference.d.ts +27 -0
  86. package/dist/docs/src/api-reference.d.ts.map +1 -0
  87. package/dist/docs/src/api-reference.js +594 -0
  88. package/dist/docs/src/api-reference.js.map +1 -0
  89. package/dist/docs/src/create-theme.d.ts +74 -0
  90. package/dist/docs/src/create-theme.d.ts.map +1 -0
  91. package/dist/docs/src/create-theme.js +86 -0
  92. package/dist/docs/src/create-theme.js.map +1 -0
  93. package/dist/docs/src/define-docs.d.ts +6 -0
  94. package/dist/docs/src/define-docs.d.ts.map +1 -0
  95. package/dist/docs/src/define-docs.js +27 -0
  96. package/dist/docs/src/define-docs.js.map +1 -0
  97. package/dist/docs/src/i18n.d.ts +15 -0
  98. package/dist/docs/src/i18n.d.ts.map +1 -0
  99. package/dist/docs/src/i18n.js +48 -0
  100. package/dist/docs/src/i18n.js.map +1 -0
  101. package/dist/docs/src/index.d.ts +16 -0
  102. package/dist/docs/src/index.d.ts.map +1 -0
  103. package/dist/docs/src/index.js +14 -0
  104. package/dist/docs/src/index.js.map +1 -0
  105. package/dist/docs/src/metadata.d.ts +24 -0
  106. package/dist/docs/src/metadata.d.ts.map +1 -0
  107. package/dist/docs/src/metadata.js +90 -0
  108. package/dist/docs/src/metadata.js.map +1 -0
  109. package/dist/docs/src/server.d.ts +3 -0
  110. package/dist/docs/src/server.d.ts.map +1 -0
  111. package/dist/docs/src/server.js +2 -0
  112. package/dist/docs/src/server.js.map +1 -0
  113. package/dist/docs/src/types.d.ts +1344 -0
  114. package/dist/docs/src/types.d.ts.map +1 -0
  115. package/dist/docs/src/types.js +6 -0
  116. package/dist/docs/src/types.js.map +1 -0
  117. package/dist/docs/src/utils.d.ts +6 -0
  118. package/dist/docs/src/utils.d.ts.map +1 -0
  119. package/dist/docs/src/utils.js +32 -0
  120. package/dist/docs/src/utils.js.map +1 -0
  121. package/dist/react.d.ts.map +1 -1
  122. package/dist/react.js +8 -4
  123. package/dist/react.js.map +1 -1
  124. package/dist/server.d.ts +1 -0
  125. package/dist/server.d.ts.map +1 -1
  126. package/dist/server.js +1 -0
  127. package/dist/server.js.map +1 -1
  128. package/dist/tanstack-start/src/api-reference.d.ts +3 -0
  129. package/dist/tanstack-start/src/api-reference.d.ts.map +1 -0
  130. package/dist/tanstack-start/src/api-reference.js +20 -0
  131. package/dist/tanstack-start/src/api-reference.js.map +1 -0
  132. package/dist/tanstack-start/src/content.d.ts +40 -0
  133. package/dist/tanstack-start/src/content.d.ts.map +1 -0
  134. package/dist/tanstack-start/src/content.js +189 -0
  135. package/dist/tanstack-start/src/content.js.map +1 -0
  136. package/dist/tanstack-start/src/index.d.ts +12 -0
  137. package/dist/tanstack-start/src/index.d.ts.map +1 -0
  138. package/dist/tanstack-start/src/index.js +12 -0
  139. package/dist/tanstack-start/src/index.js.map +1 -0
  140. package/dist/tanstack-start/src/react.d.ts +7 -0
  141. package/dist/tanstack-start/src/react.d.ts.map +1 -0
  142. package/dist/tanstack-start/src/react.js +22 -0
  143. package/dist/tanstack-start/src/react.js.map +1 -0
  144. package/dist/tanstack-start/src/server.d.ts +32 -0
  145. package/dist/tanstack-start/src/server.d.ts.map +1 -0
  146. package/dist/tanstack-start/src/server.js +639 -0
  147. package/dist/tanstack-start/src/server.js.map +1 -0
  148. package/dist/tanstack-start/src/vite.d.ts +3 -0
  149. package/dist/tanstack-start/src/vite.d.ts.map +1 -0
  150. package/dist/tanstack-start/src/vite.js +137 -0
  151. package/dist/tanstack-start/src/vite.js.map +1 -0
  152. package/dist/vite.d.ts +1 -1
  153. package/dist/vite.d.ts.map +1 -1
  154. package/dist/vite.js +135 -13
  155. package/dist/vite.js.map +1 -1
  156. package/package.json +15 -8
  157. package/src/vite.ts +152 -0
@@ -0,0 +1,564 @@
1
+ import { existsSync, readdirSync, readFileSync, statSync } from "node:fs";
2
+ import { basename, join, relative } from "node:path";
3
+ const NEXT_ROUTE_FILE_RE = /^route\.(ts|tsx|js|jsx)$/;
4
+ const SVELTE_ROUTE_FILE_RE = /^\+server\.(ts|js)$/;
5
+ const ASTRO_ROUTE_FILE_RE = /^[^.].*\.(ts|js|mts|mjs)$/;
6
+ const NUXT_ROUTE_FILE_RE = /^[^.].*\.(ts|js|mts|mjs)$/;
7
+ const TANSTACK_ROUTE_FILE_RE = /\.(ts|tsx|js|jsx)$/;
8
+ const METHOD_RE = /export\s+(?:async\s+function|function|const)\s+(GET|POST|PUT|PATCH|DELETE|OPTIONS|HEAD|ALL)\b/g;
9
+ const METHOD_NAMES = ["GET", "POST", "PUT", "PATCH", "DELETE", "OPTIONS", "HEAD"];
10
+ function normalizePathSegment(value) {
11
+ return value.replace(/^\/+|\/+$/g, "");
12
+ }
13
+ export function resolveApiReferenceConfig(value) {
14
+ if (value === true) {
15
+ return {
16
+ enabled: true,
17
+ path: "api-reference",
18
+ routeRoot: "api",
19
+ exclude: [],
20
+ };
21
+ }
22
+ if (!value) {
23
+ return {
24
+ enabled: false,
25
+ path: "api-reference",
26
+ routeRoot: "api",
27
+ exclude: [],
28
+ };
29
+ }
30
+ return {
31
+ enabled: value.enabled !== false,
32
+ path: normalizePathSegment(value.path ?? "api-reference"),
33
+ routeRoot: normalizePathSegment(value.routeRoot ?? "api") || "api",
34
+ exclude: normalizeApiReferenceExcludes(value.exclude),
35
+ };
36
+ }
37
+ export function buildApiReferencePageTitle(config, title = "API Reference") {
38
+ const template = config.metadata?.titleTemplate;
39
+ if (!template)
40
+ return title;
41
+ return template.replace("%s", title);
42
+ }
43
+ export function buildApiReferenceScalarCss(config) {
44
+ const theme = resolveTheme(config);
45
+ const colors = theme?.ui?.colors;
46
+ const typography = theme?.ui?.typography?.font?.style;
47
+ const layout = theme?.ui?.layout;
48
+ const primary = colors?.primary ?? "#6366f1";
49
+ const border = colors?.border ?? "#2a2a2a";
50
+ const muted = colors?.muted ?? "#64748b";
51
+ const background = colors?.background ?? "#ffffff";
52
+ const card = colors?.card ?? background;
53
+ const foreground = colors?.foreground ?? "#1b1b1b";
54
+ const sidebarWidth = layout?.sidebarWidth ?? 280;
55
+ const sans = typography?.sans ?? '"Geist", "Inter", "Segoe UI", sans-serif';
56
+ const mono = typography?.mono ?? '"Geist Mono", "SFMono-Regular", "Menlo", monospace';
57
+ return `
58
+ :root {
59
+ --scalar-font: ${sans};
60
+ --scalar-font-code: ${mono};
61
+ --scalar-theme-primary: ${primary};
62
+ --scalar-theme-border: ${border};
63
+ --scalar-theme-muted: ${muted};
64
+ --scalar-theme-background: ${background};
65
+ --scalar-theme-card: ${card};
66
+ --scalar-theme-foreground: ${foreground};
67
+ }
68
+
69
+ .dark-mode {
70
+ --scalar-background-1: color-mix(in srgb, #0b0c0b 98%, var(--scalar-theme-primary) 2%);
71
+ --scalar-background-2: color-mix(in srgb, #111311 96%, var(--scalar-theme-primary) 4%);
72
+ --scalar-background-3: color-mix(in srgb, #171917 95%, var(--scalar-theme-primary) 5%);
73
+ --scalar-color-1: rgba(255, 255, 255, 0.96);
74
+ --scalar-color-2: rgba(255, 255, 255, 0.72);
75
+ --scalar-color-3: rgba(255, 255, 255, 0.5);
76
+ --scalar-color-accent: var(--scalar-theme-primary);
77
+ --scalar-sidebar-color-active: var(--scalar-theme-primary);
78
+ --scalar-sidebar-item-active-background: color-mix(
79
+ in srgb,
80
+ var(--scalar-theme-primary) 7%,
81
+ transparent
82
+ );
83
+ --scalar-border-color: color-mix(
84
+ in srgb,
85
+ var(--scalar-theme-border) 22%,
86
+ rgba(255, 255, 255, 0.032)
87
+ );
88
+ --scalar-button-1: var(--scalar-theme-primary);
89
+ --scalar-button-1-color: #ffffff;
90
+ --scalar-button-1-hover: color-mix(in srgb, var(--scalar-theme-primary) 88%, white 12%);
91
+ }
92
+
93
+ .light-mode {
94
+ --scalar-background-1: var(--scalar-theme-background);
95
+ --scalar-background-2: color-mix(in srgb, var(--scalar-theme-card) 92%, white 8%);
96
+ --scalar-background-3: color-mix(in srgb, var(--scalar-theme-card) 84%, black 4%);
97
+ --scalar-color-1: var(--scalar-theme-foreground);
98
+ --scalar-color-2: var(--scalar-theme-muted);
99
+ --scalar-color-3: color-mix(in srgb, var(--scalar-theme-muted) 78%, white 22%);
100
+ --scalar-color-accent: var(--scalar-theme-primary);
101
+ --scalar-sidebar-color-active: var(--scalar-theme-primary);
102
+ --scalar-sidebar-item-active-background: color-mix(
103
+ in srgb,
104
+ var(--scalar-theme-primary) 5%,
105
+ transparent
106
+ );
107
+ --scalar-border-color: color-mix(in srgb, var(--scalar-theme-border) 42%, white 58%);
108
+ --scalar-button-1: var(--scalar-theme-primary);
109
+ --scalar-button-1-color: #ffffff;
110
+ --scalar-button-1-hover: color-mix(in srgb, var(--scalar-theme-primary) 88%, black 12%);
111
+ }
112
+
113
+ body {
114
+ background: var(--scalar-background-1);
115
+ }
116
+
117
+ .t-doc__sidebar {
118
+ width: min(${sidebarWidth}px, 100vw);
119
+ border-right: 1px solid var(--scalar-border-color);
120
+ }
121
+
122
+ .scalar-card,
123
+ .t-doc__sidebar,
124
+ .references-layout .reference-layout__content .request-card,
125
+ .references-layout .reference-layout__content .response-card,
126
+ .references-layout .reference-layout__content .scalar-card-header,
127
+ .references-layout .reference-layout__content .scalar-card-footer,
128
+ .references-layout .reference-layout__content .section,
129
+ .references-layout .reference-layout__content .section-container {
130
+ border-color: var(--scalar-border-color) !important;
131
+ }
132
+
133
+ .t-doc__sidebar,
134
+ .t-doc__sidebar * {
135
+ font-family: var(--scalar-font);
136
+ }
137
+
138
+ .t-doc__sidebar .sidebar-search {
139
+ margin: 0.5rem 0 1rem;
140
+ }
141
+
142
+ .t-doc__sidebar .sidebar-search input {
143
+ border-radius: 14px;
144
+ }
145
+
146
+ .t-doc__sidebar .sidebar-item,
147
+ .t-doc__sidebar .sidebar-heading {
148
+ border-radius: 14px;
149
+ }
150
+
151
+ .t-doc__sidebar .sidebar-group-label {
152
+ font-size: 0.72rem;
153
+ letter-spacing: 0.08em;
154
+ text-transform: uppercase;
155
+ color: var(--scalar-color-3);
156
+ }
157
+
158
+ .t-doc__sidebar .sidebar-item--active {
159
+ font-weight: 600;
160
+ }
161
+
162
+ .scalar-card,
163
+ .references-layout .reference-layout__content .request-card,
164
+ .references-layout .reference-layout__content .response-card {
165
+ border-radius: 18px;
166
+ }
167
+
168
+ .references-layout .reference-layout__content {
169
+ padding-top: 1.5rem;
170
+ }
171
+
172
+ .references-layout .section-content,
173
+ .references-layout .section-flare {
174
+ background: transparent;
175
+ }
176
+
177
+ .references-layout .reference-layout__content,
178
+ .references-layout .reference-layout__content * {
179
+ font-family: var(--scalar-font);
180
+ }
181
+
182
+ .references-layout code,
183
+ .references-layout pre,
184
+ .references-layout .scalar-codeblock {
185
+ font-family: var(--scalar-font-code);
186
+ }
187
+ `;
188
+ }
189
+ export function buildApiReferenceOpenApiDocument(config, options) {
190
+ const routes = buildApiReferenceRoutes(config, options);
191
+ const tags = Array.from(new Set(routes.map((route) => route.tag))).map((name) => ({
192
+ name,
193
+ description: `${name} endpoints`,
194
+ }));
195
+ return {
196
+ openapi: "3.1.0",
197
+ info: {
198
+ title: "API Reference",
199
+ description: config.metadata?.description ?? `Generated API reference for ${options.framework}.`,
200
+ version: "0.0.0",
201
+ },
202
+ servers: [{ url: "/" }],
203
+ tags,
204
+ paths: buildOpenApiPaths(routes),
205
+ };
206
+ }
207
+ function buildApiReferenceRoutes(config, options) {
208
+ const apiReference = resolveApiReferenceConfig(config.apiReference);
209
+ if (!apiReference.enabled)
210
+ return [];
211
+ const rootDir = options.rootDir ?? process.cwd();
212
+ switch (options.framework) {
213
+ case "next":
214
+ return buildFileConventionRoutes({
215
+ rootDir,
216
+ sourceDir: resolveRootedDir(rootDir, apiReference.routeRoot, getNextAppDir(rootDir)),
217
+ routePathBase: toRouteBase(apiReference.routeRoot, getNextAppDir(rootDir)),
218
+ isRouteFile: (name) => NEXT_ROUTE_FILE_RE.test(name),
219
+ toRouteSegments: (relativeFile) => relativeFile.split("/").slice(0, -1).filter(Boolean),
220
+ config,
221
+ exclude: apiReference.exclude,
222
+ });
223
+ case "sveltekit":
224
+ return buildFileConventionRoutes({
225
+ rootDir,
226
+ sourceDir: resolveRootedDir(rootDir, apiReference.routeRoot, "src/routes"),
227
+ routePathBase: toRouteBase(apiReference.routeRoot, "src/routes"),
228
+ isRouteFile: (name) => SVELTE_ROUTE_FILE_RE.test(name),
229
+ toRouteSegments: (relativeFile) => relativeFile.split("/").slice(0, -1).filter(Boolean),
230
+ config,
231
+ exclude: apiReference.exclude,
232
+ });
233
+ case "astro":
234
+ return buildFileConventionRoutes({
235
+ rootDir,
236
+ sourceDir: resolveRootedDir(rootDir, apiReference.routeRoot, "src/pages"),
237
+ routePathBase: toRouteBase(apiReference.routeRoot, "src/pages"),
238
+ isRouteFile: (name) => ASTRO_ROUTE_FILE_RE.test(name),
239
+ toRouteSegments: (relativeFile) => routeSegmentsFromEndpointFile(relativeFile),
240
+ config,
241
+ exclude: apiReference.exclude,
242
+ });
243
+ case "nuxt":
244
+ return buildFileConventionRoutes({
245
+ rootDir,
246
+ sourceDir: resolveRootedDir(rootDir, apiReference.routeRoot, "server"),
247
+ routePathBase: toRouteBase(apiReference.routeRoot, "server"),
248
+ isRouteFile: (name) => NUXT_ROUTE_FILE_RE.test(name),
249
+ toRouteSegments: (relativeFile) => routeSegmentsFromEndpointFile(stripNuxtMethodSuffix(relativeFile)),
250
+ config,
251
+ exclude: apiReference.exclude,
252
+ getMethods: (source, file) => extractNuxtMethods(source, file),
253
+ });
254
+ case "tanstack-start":
255
+ return buildTanstackRoutes(config, rootDir, apiReference);
256
+ }
257
+ }
258
+ function buildFileConventionRoutes({ rootDir, sourceDir, routePathBase, isRouteFile, toRouteSegments, config, exclude, getMethods = extractMethods, }) {
259
+ const files = scanRouteFiles(sourceDir, isRouteFile);
260
+ const routes = [];
261
+ for (const file of files) {
262
+ const source = readFileSync(file, "utf-8");
263
+ const methods = getMethods(source, file);
264
+ if (methods.length === 0)
265
+ continue;
266
+ const relativeFile = relative(sourceDir, file).replace(/\\/g, "/");
267
+ const routeSegments = toRouteSegments(relativeFile);
268
+ const routePath = buildRoutePath(routePathBase, routeSegments);
269
+ if (shouldExcludeRoute(exclude, routePath, relativeFile, routeSegments.join("/")))
270
+ continue;
271
+ routes.push(createApiReferenceRoute({
272
+ rootDir,
273
+ file,
274
+ source,
275
+ methods,
276
+ routePath,
277
+ }));
278
+ }
279
+ return routes.sort((a, b) => a.routePath.localeCompare(b.routePath));
280
+ }
281
+ function buildTanstackRoutes(config, rootDir, apiReference) {
282
+ const routesDir = join(rootDir, "src", "routes");
283
+ const files = scanRouteFiles(routesDir, (name) => TANSTACK_ROUTE_FILE_RE.test(name));
284
+ const routeBase = `/${normalizePathSegment(apiReference.routeRoot)}`;
285
+ const routes = [];
286
+ for (const file of files) {
287
+ const source = readFileSync(file, "utf-8");
288
+ if (!source.includes("createFileRoute(") || !source.includes("handlers"))
289
+ continue;
290
+ const pathMatch = source.match(/createFileRoute\(\s*["'`]([^"'`]+)["'`]\s*\)/);
291
+ if (!pathMatch)
292
+ continue;
293
+ const routePath = normalizeTanstackRoutePath(pathMatch[1]);
294
+ if (!routePath.startsWith(routeBase))
295
+ continue;
296
+ const methods = extractTanstackMethods(source);
297
+ if (methods.length === 0)
298
+ continue;
299
+ const relativeFile = relative(routesDir, file).replace(/\\/g, "/");
300
+ if (shouldExcludeRoute(apiReference.exclude, routePath, relativeFile, relativeFile))
301
+ continue;
302
+ routes.push(createApiReferenceRoute({
303
+ rootDir,
304
+ file,
305
+ source,
306
+ methods,
307
+ routePath,
308
+ }));
309
+ }
310
+ return routes.sort((a, b) => a.routePath.localeCompare(b.routePath));
311
+ }
312
+ function createApiReferenceRoute({ rootDir, file, source, methods, routePath, }) {
313
+ const docBlock = extractDocBlock(source);
314
+ const pathSegments = routePath.split("/").filter(Boolean);
315
+ const titleSegment = pathSegments[pathSegments.length - 1] ?? "overview";
316
+ const tagSegment = pathSegments[0] ?? "general";
317
+ const title = humanizeSegment(titleSegment);
318
+ return {
319
+ title,
320
+ summary: docBlock.summary ?? `${title} endpoint`,
321
+ description: docBlock.description,
322
+ routePath,
323
+ sourceFile: relative(rootDir, file).replace(/\\/g, "/"),
324
+ methods,
325
+ tag: humanizeSegment(tagSegment),
326
+ parameters: buildPathParameters(routePath),
327
+ };
328
+ }
329
+ function buildPathParameters(routePath) {
330
+ const parameters = [];
331
+ for (const segment of routePath.split("/")) {
332
+ const match = segment.match(/^\{(.+)\}$/);
333
+ if (!match)
334
+ continue;
335
+ parameters.push({
336
+ name: match[1],
337
+ in: "path",
338
+ required: true,
339
+ description: `${humanizeSegment(match[1])} path parameter.`,
340
+ schema: {
341
+ type: "string",
342
+ },
343
+ });
344
+ }
345
+ return parameters;
346
+ }
347
+ function buildOpenApiPaths(routes) {
348
+ const paths = {};
349
+ for (const route of routes) {
350
+ const pathItem = {};
351
+ for (const method of route.methods) {
352
+ pathItem[method.toLowerCase()] = {
353
+ tags: [route.tag],
354
+ summary: route.summary,
355
+ description: route.description ?? route.summary,
356
+ operationId: createOperationId(route, method),
357
+ ...(route.parameters.length > 0 ? { parameters: route.parameters } : {}),
358
+ ...(buildRequestBody(method) ? { requestBody: buildRequestBody(method) } : {}),
359
+ responses: buildResponses(method),
360
+ "x-farming-labs-source": route.sourceFile,
361
+ };
362
+ }
363
+ paths[route.routePath] = pathItem;
364
+ }
365
+ return paths;
366
+ }
367
+ function buildRequestBody(method) {
368
+ if (!["POST", "PUT", "PATCH"].includes(method))
369
+ return undefined;
370
+ return {
371
+ required: method === "POST",
372
+ content: {
373
+ "application/json": {
374
+ schema: {
375
+ type: "object",
376
+ additionalProperties: true,
377
+ },
378
+ example: {
379
+ example: true,
380
+ },
381
+ },
382
+ },
383
+ };
384
+ }
385
+ function buildResponses(method) {
386
+ return {
387
+ "200": {
388
+ description: method === "DELETE" ? "Resource removed successfully." : "Request completed successfully.",
389
+ content: {
390
+ "application/json": {
391
+ schema: {
392
+ type: "object",
393
+ additionalProperties: true,
394
+ },
395
+ example: {
396
+ ok: true,
397
+ },
398
+ },
399
+ },
400
+ },
401
+ };
402
+ }
403
+ function createOperationId(route, method) {
404
+ return `${method.toLowerCase()}_${route.routePath.replace(/[^a-zA-Z0-9]+/g, "_").replace(/^_+|_+$/g, "")}`;
405
+ }
406
+ function resolveTheme(config) {
407
+ return config.theme;
408
+ }
409
+ function normalizeApiReferenceExcludes(values) {
410
+ return (values ?? []).map(normalizeExcludeMatcher).filter(Boolean);
411
+ }
412
+ function normalizeExcludeMatcher(value) {
413
+ return value
414
+ .replace(/\\/g, "/")
415
+ .replace(/^\/+|\/+$/g, "")
416
+ .replace(/\.(ts|tsx|js|jsx|mjs|mts)$/i, "")
417
+ .replace(/\/route$/i, "")
418
+ .replace(/\/\+server$/i, "")
419
+ .replace(/\/index$/i, "")
420
+ .replace(/\.(get|post|put|patch|delete|options|head)$/i, "");
421
+ }
422
+ function shouldExcludeRoute(excludes, routePath, relativeFile, relativeDir) {
423
+ if (excludes.length === 0)
424
+ return false;
425
+ const candidates = new Set([
426
+ normalizeExcludeMatcher(routePath),
427
+ normalizeExcludeMatcher(routePath.replace(/^\/+/, "")),
428
+ normalizeExcludeMatcher(relativeFile),
429
+ normalizeExcludeMatcher(relativeDir),
430
+ ]);
431
+ return excludes.some((entry) => candidates.has(entry));
432
+ }
433
+ function scanRouteFiles(dir, isRouteFile) {
434
+ if (!existsSync(dir))
435
+ return [];
436
+ const results = [];
437
+ for (const name of readdirSync(dir)) {
438
+ const full = join(dir, name);
439
+ const stats = statSync(full);
440
+ if (stats.isDirectory()) {
441
+ results.push(...scanRouteFiles(full, isRouteFile));
442
+ continue;
443
+ }
444
+ if (isRouteFile(name))
445
+ results.push(full);
446
+ }
447
+ return results;
448
+ }
449
+ function resolveRootedDir(rootDir, routeRoot, defaultRoot) {
450
+ const normalized = normalizePathSegment(routeRoot) || "api";
451
+ if (normalized === defaultRoot || normalized.startsWith(`${defaultRoot}/`)) {
452
+ return join(rootDir, ...normalized.split("/"));
453
+ }
454
+ return join(rootDir, ...defaultRoot.split("/"), ...normalized.split("/"));
455
+ }
456
+ function toRouteBase(routeRoot, defaultRoot) {
457
+ const normalized = normalizePathSegment(routeRoot) || "api";
458
+ const base = normalized === defaultRoot || normalized.startsWith(`${defaultRoot}/`)
459
+ ? normalized.slice(defaultRoot.length).replace(/^\/+/, "")
460
+ : normalized;
461
+ return `/${normalizePathSegment(base)}`;
462
+ }
463
+ function getNextAppDir(rootDir) {
464
+ if (existsSync(join(rootDir, "src", "app")))
465
+ return "src/app";
466
+ return "app";
467
+ }
468
+ function routeSegmentsFromEndpointFile(relativeFile) {
469
+ const segments = relativeFile.split("/");
470
+ const last = segments.pop() ?? "";
471
+ const name = last.replace(/\.(ts|js|mts|mjs)$/i, "");
472
+ if (name !== "index")
473
+ segments.push(name);
474
+ return segments.filter(Boolean);
475
+ }
476
+ function stripNuxtMethodSuffix(relativeFile) {
477
+ return relativeFile.replace(/\.(get|post|put|patch|delete|options|head)(?=\.(ts|js|mts|mjs)$)/i, "");
478
+ }
479
+ function buildRoutePath(basePath, rawSegments) {
480
+ const segments = rawSegments
481
+ .filter(Boolean)
482
+ .map((segment) => endpointSegmentFromConvention(segment))
483
+ .join("/");
484
+ const normalizedBase = normalizePathSegment(basePath);
485
+ const path = [normalizedBase, segments].filter(Boolean).join("/");
486
+ return path ? `/${path}` : "/";
487
+ }
488
+ function endpointSegmentFromConvention(value) {
489
+ if (value.startsWith("[[...") && value.endsWith("]]"))
490
+ return `{${value.slice(5, -2)}}`;
491
+ if (value.startsWith("[...") && value.endsWith("]"))
492
+ return `{${value.slice(4, -1)}}`;
493
+ if (value.startsWith("[") && value.endsWith("]"))
494
+ return `{${value.slice(1, -1)}}`;
495
+ return value;
496
+ }
497
+ function normalizeTanstackRoutePath(value) {
498
+ return `/${value
499
+ .replace(/^\/+|\/+$/g, "")
500
+ .split("/")
501
+ .map((segment) => (segment.startsWith("$") ? `{${segment.slice(1)}}` : segment))
502
+ .filter(Boolean)
503
+ .join("/")}`;
504
+ }
505
+ function extractDocBlock(source) {
506
+ const match = source.match(/\/\*\*([\s\S]*?)\*\//);
507
+ if (!match)
508
+ return {};
509
+ const lines = match[1]
510
+ .split("\n")
511
+ .map((line) => line.replace(/^\s*\*\s?/, "").trim())
512
+ .filter(Boolean)
513
+ .filter((line) => !line.startsWith("@"));
514
+ if (lines.length === 0)
515
+ return {};
516
+ return {
517
+ summary: lines[0],
518
+ description: lines.slice(1).join(" "),
519
+ };
520
+ }
521
+ function extractMethods(source) {
522
+ const methods = new Set();
523
+ for (const match of source.matchAll(METHOD_RE)) {
524
+ if (match[1] === "ALL") {
525
+ METHOD_NAMES.forEach((method) => methods.add(method));
526
+ continue;
527
+ }
528
+ methods.add(match[1]);
529
+ }
530
+ return Array.from(methods);
531
+ }
532
+ function extractNuxtMethods(source, file) {
533
+ const methods = extractMethods(source);
534
+ if (methods.length > 0)
535
+ return methods;
536
+ const suffix = basename(file).match(/\.(get|post|put|patch|delete|options|head)\.(ts|js|mts|mjs)$/i);
537
+ if (suffix)
538
+ return [suffix[1].toUpperCase()];
539
+ if (/defineEventHandler|eventHandler/.test(source))
540
+ return ["GET"];
541
+ return [];
542
+ }
543
+ function extractTanstackMethods(source) {
544
+ const methods = new Set();
545
+ const handlersMatch = source.match(/handlers\s*:\s*\{([\s\S]*?)\}/m);
546
+ if (!handlersMatch)
547
+ return [];
548
+ for (const match of handlersMatch[1].matchAll(/\b(GET|POST|PUT|PATCH|DELETE|OPTIONS|HEAD)\s*:/g)) {
549
+ methods.add(match[1]);
550
+ }
551
+ return Array.from(methods);
552
+ }
553
+ function humanizeSegment(value) {
554
+ const normalized = value
555
+ .replace(/^\{/, "")
556
+ .replace(/\}$/, "")
557
+ .replace(/^\[\[?\.{3}/, "")
558
+ .replace(/^\[/, "")
559
+ .replace(/\]\]?$/, "")
560
+ .replace(/^\$/, "")
561
+ .replace(/-/g, " ");
562
+ return normalized.replace(/\b\w/g, (char) => char.toUpperCase());
563
+ }
564
+ //# sourceMappingURL=api-reference.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api-reference.js","sourceRoot":"","sources":["../../../../docs/src/api-reference.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,74 @@
1
+ /**
2
+ * createTheme — the primary API for building custom docs themes.
3
+ *
4
+ * Theme authors use this to define a theme preset factory that users can
5
+ * call in their `docs.config.ts` with optional overrides.
6
+ *
7
+ * @example
8
+ * ```ts
9
+ * // my-theme/index.ts
10
+ * import { createTheme } from "@farming-labs/docs";
11
+ *
12
+ * const defaults = {
13
+ * name: "my-dark-theme",
14
+ * ui: {
15
+ * colors: { primary: "#ff4d8d", background: "#0a0a0a", muted: "#888", border: "#222" },
16
+ * typography: { fontFamily: "Inter, sans-serif", monoFontFamily: "Fira Code, monospace" },
17
+ * layout: { contentWidth: 860, sidebarWidth: 280, toc: { enabled: true, depth: 3 } },
18
+ * components: { Callout: { variant: "outline" } },
19
+ * },
20
+ * };
21
+ *
22
+ * // Export a factory function that merges user overrides with defaults
23
+ * export const myTheme = createTheme(defaults);
24
+ *
25
+ * // Users call it like:
26
+ * // import { myTheme } from "my-theme";
27
+ * // export default defineDocs({ theme: myTheme({ ui: { colors: { primary: "#00ff88" } } }) });
28
+ * ```
29
+ */
30
+ import type { DocsTheme } from "./types.js";
31
+ /**
32
+ * Create a theme preset factory.
33
+ *
34
+ * Returns a function that accepts optional overrides and deep-merges them
35
+ * with the base theme defaults. This is the same pattern used by the
36
+ * built-in `fumadocs()`, `darksharp()`, and `pixelBorder()` presets.
37
+ *
38
+ * @param baseTheme - The default theme configuration
39
+ * @returns A factory function `(overrides?) => DocsTheme`
40
+ *
41
+ * @example
42
+ * ```ts
43
+ * import { createTheme } from "@farming-labs/docs";
44
+ *
45
+ * export const myTheme = createTheme({
46
+ * name: "my-theme",
47
+ * ui: {
48
+ * colors: { primary: "#6366f1" },
49
+ * layout: { contentWidth: 800 },
50
+ * },
51
+ * });
52
+ * ```
53
+ */
54
+ export declare function createTheme(baseTheme: DocsTheme): (overrides?: Partial<DocsTheme>) => DocsTheme;
55
+ /**
56
+ * Extend an existing theme preset with additional defaults.
57
+ *
58
+ * Useful when you want to build on top of an existing theme (e.g. fumadocs)
59
+ * rather than starting from scratch.
60
+ *
61
+ * @example
62
+ * ```ts
63
+ * import { extendTheme } from "@farming-labs/docs";
64
+ * import { fumadocs } from "@farming-labs/theme/default";
65
+ *
66
+ * // Start with fumadocs defaults, override some values
67
+ * export const myTheme = extendTheme(fumadocs(), {
68
+ * name: "my-custom-fumadocs",
69
+ * ui: { colors: { primary: "#22c55e" } },
70
+ * });
71
+ * ```
72
+ */
73
+ export declare function extendTheme(baseTheme: DocsTheme, extensions: Partial<DocsTheme>): DocsTheme;
74
+ //# sourceMappingURL=create-theme.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-theme.d.ts","sourceRoot":"","sources":["../../../../docs/src/create-theme.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAG5C;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,WAAW,CAAC,SAAS,EAAE,SAAS,GAAG,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,KAAK,SAAS,CAe/F;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,WAAW,CAAC,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,OAAO,CAAC,SAAS,CAAC,GAAG,SAAS,CAK3F"}