@buenojs/bueno 0.8.5 → 0.8.7

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 (421) hide show
  1. package/.claude/settings.local.json +9 -0
  2. package/README.md +259 -15
  3. package/dist/cache/index.d.ts +187 -0
  4. package/dist/cache/index.d.ts.map +1 -0
  5. package/dist/cli/bin.d.ts +8 -0
  6. package/dist/cli/bin.d.ts.map +1 -0
  7. package/dist/cli/bin.js +484 -156
  8. package/dist/cli/commands/add-frontend.d.ts +7 -0
  9. package/dist/cli/commands/add-frontend.d.ts.map +1 -0
  10. package/dist/cli/commands/build.d.ts +7 -0
  11. package/dist/cli/commands/build.d.ts.map +1 -0
  12. package/dist/cli/commands/dev.d.ts +7 -0
  13. package/dist/cli/commands/dev.d.ts.map +1 -0
  14. package/dist/cli/commands/generate.d.ts +7 -0
  15. package/dist/cli/commands/generate.d.ts.map +1 -0
  16. package/dist/cli/commands/help.d.ts +7 -0
  17. package/dist/cli/commands/help.d.ts.map +1 -0
  18. package/dist/cli/commands/index.d.ts +59 -0
  19. package/dist/cli/commands/index.d.ts.map +1 -0
  20. package/dist/cli/commands/migration.d.ts +7 -0
  21. package/dist/cli/commands/migration.d.ts.map +1 -0
  22. package/dist/cli/commands/new.d.ts +7 -0
  23. package/dist/cli/commands/new.d.ts.map +1 -0
  24. package/dist/cli/commands/start.d.ts +7 -0
  25. package/dist/cli/commands/start.d.ts.map +1 -0
  26. package/dist/cli/core/args.d.ts +61 -0
  27. package/dist/cli/core/args.d.ts.map +1 -0
  28. package/dist/cli/core/console.d.ts +135 -0
  29. package/dist/cli/core/console.d.ts.map +1 -0
  30. package/dist/cli/core/index.d.ts +10 -0
  31. package/dist/cli/core/index.d.ts.map +1 -0
  32. package/dist/cli/core/prompt.d.ts +63 -0
  33. package/dist/cli/core/prompt.d.ts.map +1 -0
  34. package/dist/cli/core/spinner.d.ts +111 -0
  35. package/dist/cli/core/spinner.d.ts.map +1 -0
  36. package/dist/cli/index.d.ts +47 -0
  37. package/dist/cli/index.d.ts.map +1 -0
  38. package/dist/cli/templates/database/index.d.ts +24 -0
  39. package/dist/cli/templates/database/index.d.ts.map +1 -0
  40. package/dist/cli/templates/database/mysql.d.ts +6 -0
  41. package/dist/cli/templates/database/mysql.d.ts.map +1 -0
  42. package/dist/cli/templates/database/none.d.ts +8 -0
  43. package/dist/cli/templates/database/none.d.ts.map +1 -0
  44. package/dist/cli/templates/database/postgresql.d.ts +6 -0
  45. package/dist/cli/templates/database/postgresql.d.ts.map +1 -0
  46. package/dist/cli/templates/database/sqlite.d.ts +6 -0
  47. package/dist/cli/templates/database/sqlite.d.ts.map +1 -0
  48. package/dist/cli/templates/deploy.d.ts +41 -0
  49. package/dist/cli/templates/deploy.d.ts.map +1 -0
  50. package/dist/cli/templates/docker.d.ts +30 -0
  51. package/dist/cli/templates/docker.d.ts.map +1 -0
  52. package/dist/cli/templates/frontend/index.d.ts +25 -0
  53. package/dist/cli/templates/frontend/index.d.ts.map +1 -0
  54. package/dist/cli/templates/frontend/none.d.ts +8 -0
  55. package/dist/cli/templates/frontend/none.d.ts.map +1 -0
  56. package/dist/cli/templates/frontend/react.d.ts +6 -0
  57. package/dist/cli/templates/frontend/react.d.ts.map +1 -0
  58. package/dist/cli/templates/frontend/solid.d.ts +6 -0
  59. package/dist/cli/templates/frontend/solid.d.ts.map +1 -0
  60. package/dist/cli/templates/frontend/svelte.d.ts +6 -0
  61. package/dist/cli/templates/frontend/svelte.d.ts.map +1 -0
  62. package/dist/cli/templates/frontend/vue.d.ts +6 -0
  63. package/dist/cli/templates/frontend/vue.d.ts.map +1 -0
  64. package/dist/cli/templates/generators/index.d.ts +29 -0
  65. package/dist/cli/templates/generators/index.d.ts.map +1 -0
  66. package/dist/cli/templates/generators/types.d.ts +32 -0
  67. package/dist/cli/templates/generators/types.d.ts.map +1 -0
  68. package/dist/cli/templates/index.d.ts +12 -0
  69. package/dist/cli/templates/index.d.ts.map +1 -0
  70. package/dist/cli/templates/project/api.d.ts +6 -0
  71. package/dist/cli/templates/project/api.d.ts.map +1 -0
  72. package/dist/cli/templates/project/default.d.ts +6 -0
  73. package/dist/cli/templates/project/default.d.ts.map +1 -0
  74. package/dist/cli/templates/project/fullstack.d.ts +14 -0
  75. package/dist/cli/templates/project/fullstack.d.ts.map +1 -0
  76. package/dist/cli/templates/project/index.d.ts +26 -0
  77. package/dist/cli/templates/project/index.d.ts.map +1 -0
  78. package/dist/cli/templates/project/minimal.d.ts +6 -0
  79. package/dist/cli/templates/project/minimal.d.ts.map +1 -0
  80. package/dist/cli/templates/project/types.d.ts +80 -0
  81. package/dist/cli/templates/project/types.d.ts.map +1 -0
  82. package/dist/cli/templates/project/website.d.ts +8 -0
  83. package/dist/cli/templates/project/website.d.ts.map +1 -0
  84. package/dist/cli/utils/fs.d.ts +137 -0
  85. package/dist/cli/utils/fs.d.ts.map +1 -0
  86. package/dist/cli/utils/index.d.ts +9 -0
  87. package/dist/cli/utils/index.d.ts.map +1 -0
  88. package/dist/cli/utils/strings.d.ts +86 -0
  89. package/dist/cli/utils/strings.d.ts.map +1 -0
  90. package/dist/cli/utils/version.d.ts +15 -0
  91. package/dist/cli/utils/version.d.ts.map +1 -0
  92. package/dist/config/env-validation.d.ts +49 -0
  93. package/dist/config/env-validation.d.ts.map +1 -0
  94. package/dist/config/env.d.ts +167 -0
  95. package/dist/config/env.d.ts.map +1 -0
  96. package/dist/config/index.d.ts +168 -0
  97. package/dist/config/index.d.ts.map +1 -0
  98. package/dist/config/loader.d.ts +81 -0
  99. package/dist/config/loader.d.ts.map +1 -0
  100. package/dist/config/merge.d.ts +66 -0
  101. package/dist/config/merge.d.ts.map +1 -0
  102. package/dist/config/types.d.ts +322 -0
  103. package/dist/config/types.d.ts.map +1 -0
  104. package/dist/config/validation.d.ts +100 -0
  105. package/dist/config/validation.d.ts.map +1 -0
  106. package/dist/container/forward-ref.d.ts +116 -0
  107. package/dist/container/forward-ref.d.ts.map +1 -0
  108. package/dist/container/index.d.ts +95 -0
  109. package/dist/container/index.d.ts.map +1 -0
  110. package/dist/container/index.js +26 -3
  111. package/dist/context/index.d.ts +143 -0
  112. package/dist/context/index.d.ts.map +1 -0
  113. package/dist/database/index.d.ts +219 -0
  114. package/dist/database/index.d.ts.map +1 -0
  115. package/dist/database/migrations/index.d.ts +146 -0
  116. package/dist/database/migrations/index.d.ts.map +1 -0
  117. package/dist/database/orm/builder.d.ts +122 -0
  118. package/dist/database/orm/builder.d.ts.map +1 -0
  119. package/dist/database/orm/casts/index.d.ts +16 -0
  120. package/dist/database/orm/casts/index.d.ts.map +1 -0
  121. package/dist/database/orm/casts/types.d.ts +16 -0
  122. package/dist/database/orm/casts/types.d.ts.map +1 -0
  123. package/dist/database/orm/compiler.d.ts +90 -0
  124. package/dist/database/orm/compiler.d.ts.map +1 -0
  125. package/dist/database/orm/hooks/index.d.ts +53 -0
  126. package/dist/database/orm/hooks/index.d.ts.map +1 -0
  127. package/dist/database/orm/index.d.ts +21 -0
  128. package/dist/database/orm/index.d.ts.map +1 -0
  129. package/dist/database/orm/model-registry.d.ts +33 -0
  130. package/dist/database/orm/model-registry.d.ts.map +1 -0
  131. package/dist/database/orm/model.d.ts +245 -0
  132. package/dist/database/orm/model.d.ts.map +1 -0
  133. package/dist/database/orm/relationships/base.d.ts +69 -0
  134. package/dist/database/orm/relationships/base.d.ts.map +1 -0
  135. package/dist/database/orm/relationships/belongs-to-many.d.ts +47 -0
  136. package/dist/database/orm/relationships/belongs-to-many.d.ts.map +1 -0
  137. package/dist/database/orm/relationships/belongs-to.d.ts +17 -0
  138. package/dist/database/orm/relationships/belongs-to.d.ts.map +1 -0
  139. package/dist/database/orm/relationships/has-many.d.ts +14 -0
  140. package/dist/database/orm/relationships/has-many.d.ts.map +1 -0
  141. package/dist/database/orm/relationships/has-one.d.ts +14 -0
  142. package/dist/database/orm/relationships/has-one.d.ts.map +1 -0
  143. package/dist/database/orm/relationships/index.d.ts +10 -0
  144. package/dist/database/orm/relationships/index.d.ts.map +1 -0
  145. package/dist/database/orm/scopes/index.d.ts +36 -0
  146. package/dist/database/orm/scopes/index.d.ts.map +1 -0
  147. package/dist/database/schema/index.d.ts +155 -0
  148. package/dist/database/schema/index.d.ts.map +1 -0
  149. package/dist/events/__tests__/event-system.test.d.ts +2 -0
  150. package/dist/events/__tests__/event-system.test.d.ts.map +1 -0
  151. package/dist/events/config.d.ts +16 -0
  152. package/dist/events/config.d.ts.map +1 -0
  153. package/dist/events/example-usage.d.ts +12 -0
  154. package/dist/events/example-usage.d.ts.map +1 -0
  155. package/dist/events/index.d.ts +27 -0
  156. package/dist/events/index.d.ts.map +1 -0
  157. package/dist/events/manager.d.ts +33 -0
  158. package/dist/events/manager.d.ts.map +1 -0
  159. package/dist/events/registry.d.ts +31 -0
  160. package/dist/events/registry.d.ts.map +1 -0
  161. package/dist/events/types.d.ts +105 -0
  162. package/dist/events/types.d.ts.map +1 -0
  163. package/dist/frontend/api-routes.d.ts +189 -0
  164. package/dist/frontend/api-routes.d.ts.map +1 -0
  165. package/dist/frontend/bundler.d.ts +99 -0
  166. package/dist/frontend/bundler.d.ts.map +1 -0
  167. package/dist/frontend/console-client.d.ts +11 -0
  168. package/dist/frontend/console-client.d.ts.map +1 -0
  169. package/dist/frontend/console-stream.d.ts +138 -0
  170. package/dist/frontend/console-stream.d.ts.map +1 -0
  171. package/dist/frontend/dev-server.d.ts +174 -0
  172. package/dist/frontend/dev-server.d.ts.map +1 -0
  173. package/dist/frontend/file-router.d.ts +170 -0
  174. package/dist/frontend/file-router.d.ts.map +1 -0
  175. package/dist/frontend/frameworks/index.d.ts +41 -0
  176. package/dist/frontend/frameworks/index.d.ts.map +1 -0
  177. package/dist/frontend/frameworks/react.d.ts +32 -0
  178. package/dist/frontend/frameworks/react.d.ts.map +1 -0
  179. package/dist/frontend/frameworks/solid.d.ts +42 -0
  180. package/dist/frontend/frameworks/solid.d.ts.map +1 -0
  181. package/dist/frontend/frameworks/svelte.d.ts +57 -0
  182. package/dist/frontend/frameworks/svelte.d.ts.map +1 -0
  183. package/dist/frontend/frameworks/vue.d.ts +36 -0
  184. package/dist/frontend/frameworks/vue.d.ts.map +1 -0
  185. package/dist/frontend/hmr-client.d.ts +22 -0
  186. package/dist/frontend/hmr-client.d.ts.map +1 -0
  187. package/dist/frontend/hmr.d.ts +185 -0
  188. package/dist/frontend/hmr.d.ts.map +1 -0
  189. package/dist/frontend/index.d.ts +34 -0
  190. package/dist/frontend/index.d.ts.map +1 -0
  191. package/dist/frontend/islands.d.ts +135 -0
  192. package/dist/frontend/islands.d.ts.map +1 -0
  193. package/dist/frontend/isr.d.ts +143 -0
  194. package/dist/frontend/isr.d.ts.map +1 -0
  195. package/dist/frontend/layout.d.ts +140 -0
  196. package/dist/frontend/layout.d.ts.map +1 -0
  197. package/dist/frontend/ssr/react.d.ts +118 -0
  198. package/dist/frontend/ssr/react.d.ts.map +1 -0
  199. package/dist/frontend/ssr/solid.d.ts +141 -0
  200. package/dist/frontend/ssr/solid.d.ts.map +1 -0
  201. package/dist/frontend/ssr/svelte.d.ts +158 -0
  202. package/dist/frontend/ssr/svelte.d.ts.map +1 -0
  203. package/dist/frontend/ssr/vue.d.ts +161 -0
  204. package/dist/frontend/ssr/vue.d.ts.map +1 -0
  205. package/dist/frontend/ssr.d.ts +147 -0
  206. package/dist/frontend/ssr.d.ts.map +1 -0
  207. package/dist/frontend/types.d.ts +1902 -0
  208. package/dist/frontend/types.d.ts.map +1 -0
  209. package/dist/graphql/built-in-engine.d.ts +36 -0
  210. package/dist/graphql/built-in-engine.d.ts.map +1 -0
  211. package/dist/graphql/context-builder.d.ts +44 -0
  212. package/dist/graphql/context-builder.d.ts.map +1 -0
  213. package/dist/graphql/decorators.d.ts +162 -0
  214. package/dist/graphql/decorators.d.ts.map +1 -0
  215. package/dist/graphql/execution-pipeline.d.ts +67 -0
  216. package/dist/graphql/execution-pipeline.d.ts.map +1 -0
  217. package/dist/graphql/graphql-module.d.ts +70 -0
  218. package/dist/graphql/graphql-module.d.ts.map +1 -0
  219. package/dist/graphql/index.d.ts +48 -0
  220. package/dist/graphql/index.d.ts.map +1 -0
  221. package/dist/graphql/index.js +2156 -0
  222. package/dist/graphql/metadata.d.ts +37 -0
  223. package/dist/graphql/metadata.d.ts.map +1 -0
  224. package/dist/graphql/schema-builder.d.ts +34 -0
  225. package/dist/graphql/schema-builder.d.ts.map +1 -0
  226. package/dist/graphql/subscription-handler.d.ts +47 -0
  227. package/dist/graphql/subscription-handler.d.ts.map +1 -0
  228. package/dist/graphql/types.d.ts +252 -0
  229. package/dist/graphql/types.d.ts.map +1 -0
  230. package/dist/health/index.d.ts +176 -0
  231. package/dist/health/index.d.ts.map +1 -0
  232. package/dist/i18n/engine.d.ts +105 -0
  233. package/dist/i18n/engine.d.ts.map +1 -0
  234. package/dist/i18n/index.d.ts +13 -0
  235. package/dist/i18n/index.d.ts.map +1 -0
  236. package/dist/i18n/loader.d.ts +79 -0
  237. package/dist/i18n/loader.d.ts.map +1 -0
  238. package/dist/i18n/middleware.d.ts +96 -0
  239. package/dist/i18n/middleware.d.ts.map +1 -0
  240. package/dist/i18n/negotiator.d.ts +84 -0
  241. package/dist/i18n/negotiator.d.ts.map +1 -0
  242. package/dist/i18n/types.d.ts +129 -0
  243. package/dist/i18n/types.d.ts.map +1 -0
  244. package/dist/index.d.ts +48 -0
  245. package/dist/index.d.ts.map +1 -0
  246. package/dist/index.js +520 -434
  247. package/dist/jobs/drivers/memory.d.ts +38 -0
  248. package/dist/jobs/drivers/memory.d.ts.map +1 -0
  249. package/dist/jobs/drivers/redis.d.ts +34 -0
  250. package/dist/jobs/drivers/redis.d.ts.map +1 -0
  251. package/dist/jobs/index.d.ts +12 -0
  252. package/dist/jobs/index.d.ts.map +1 -0
  253. package/dist/jobs/queue.d.ts +93 -0
  254. package/dist/jobs/queue.d.ts.map +1 -0
  255. package/dist/jobs/types.d.ts +193 -0
  256. package/dist/jobs/types.d.ts.map +1 -0
  257. package/dist/jobs/worker.d.ts +91 -0
  258. package/dist/jobs/worker.d.ts.map +1 -0
  259. package/dist/lock/index.d.ts +141 -0
  260. package/dist/lock/index.d.ts.map +1 -0
  261. package/dist/logger/index.d.ts +156 -0
  262. package/dist/logger/index.d.ts.map +1 -0
  263. package/dist/logger/transports/index.d.ts +371 -0
  264. package/dist/logger/transports/index.d.ts.map +1 -0
  265. package/dist/metrics/index.d.ts +163 -0
  266. package/dist/metrics/index.d.ts.map +1 -0
  267. package/dist/middleware/built-in.d.ts +50 -0
  268. package/dist/middleware/built-in.d.ts.map +1 -0
  269. package/dist/middleware/index.d.ts +40 -0
  270. package/dist/middleware/index.d.ts.map +1 -0
  271. package/dist/migrations/index.d.ts +10 -0
  272. package/dist/migrations/index.d.ts.map +1 -0
  273. package/dist/modules/filters.d.ts +150 -0
  274. package/dist/modules/filters.d.ts.map +1 -0
  275. package/dist/modules/guards.d.ts +188 -0
  276. package/dist/modules/guards.d.ts.map +1 -0
  277. package/dist/modules/index.d.ts +266 -0
  278. package/dist/modules/index.d.ts.map +1 -0
  279. package/dist/modules/index.js +514 -449
  280. package/dist/modules/interceptors.d.ts +242 -0
  281. package/dist/modules/interceptors.d.ts.map +1 -0
  282. package/dist/modules/lazy.d.ts +187 -0
  283. package/dist/modules/lazy.d.ts.map +1 -0
  284. package/dist/modules/lifecycle.d.ts +221 -0
  285. package/dist/modules/lifecycle.d.ts.map +1 -0
  286. package/dist/modules/metadata.d.ts +32 -0
  287. package/dist/modules/metadata.d.ts.map +1 -0
  288. package/dist/modules/pipes.d.ts +287 -0
  289. package/dist/modules/pipes.d.ts.map +1 -0
  290. package/dist/notification/channels/base.d.ts +32 -0
  291. package/dist/notification/channels/base.d.ts.map +1 -0
  292. package/dist/notification/channels/email.d.ts +37 -0
  293. package/dist/notification/channels/email.d.ts.map +1 -0
  294. package/dist/notification/channels/push.d.ts +37 -0
  295. package/dist/notification/channels/push.d.ts.map +1 -0
  296. package/dist/notification/channels/sms.d.ts +37 -0
  297. package/dist/notification/channels/sms.d.ts.map +1 -0
  298. package/dist/notification/channels/whatsapp.d.ts +37 -0
  299. package/dist/notification/channels/whatsapp.d.ts.map +1 -0
  300. package/dist/notification/index.d.ts +15 -0
  301. package/dist/notification/index.d.ts.map +1 -0
  302. package/dist/notification/service.d.ts +100 -0
  303. package/dist/notification/service.d.ts.map +1 -0
  304. package/dist/notification/types.d.ts +253 -0
  305. package/dist/notification/types.d.ts.map +1 -0
  306. package/dist/observability/__tests__/observability.test.d.ts +2 -0
  307. package/dist/observability/__tests__/observability.test.d.ts.map +1 -0
  308. package/dist/observability/breadcrumbs.d.ts +48 -0
  309. package/dist/observability/breadcrumbs.d.ts.map +1 -0
  310. package/dist/observability/index.d.ts +95 -0
  311. package/dist/observability/index.d.ts.map +1 -0
  312. package/dist/observability/interceptor.d.ts +19 -0
  313. package/dist/observability/interceptor.d.ts.map +1 -0
  314. package/dist/observability/service.d.ts +101 -0
  315. package/dist/observability/service.d.ts.map +1 -0
  316. package/dist/observability/trace.d.ts +21 -0
  317. package/dist/observability/trace.d.ts.map +1 -0
  318. package/dist/observability/types.d.ts +172 -0
  319. package/dist/observability/types.d.ts.map +1 -0
  320. package/dist/openapi/__tests__/decorators.test.d.ts +2 -0
  321. package/dist/openapi/__tests__/decorators.test.d.ts.map +1 -0
  322. package/dist/openapi/__tests__/document-builder.test.d.ts +2 -0
  323. package/dist/openapi/__tests__/document-builder.test.d.ts.map +1 -0
  324. package/dist/openapi/__tests__/route-scanner.test.d.ts +2 -0
  325. package/dist/openapi/__tests__/route-scanner.test.d.ts.map +1 -0
  326. package/dist/openapi/__tests__/schema-generator.test.d.ts +2 -0
  327. package/dist/openapi/__tests__/schema-generator.test.d.ts.map +1 -0
  328. package/dist/openapi/decorators.d.ts +173 -0
  329. package/dist/openapi/decorators.d.ts.map +1 -0
  330. package/dist/openapi/document-builder.d.ts +82 -0
  331. package/dist/openapi/document-builder.d.ts.map +1 -0
  332. package/dist/openapi/index.d.ts +48 -0
  333. package/dist/openapi/index.d.ts.map +1 -0
  334. package/dist/openapi/index.js +59 -40
  335. package/dist/openapi/metadata.d.ts +36 -0
  336. package/dist/openapi/metadata.d.ts.map +1 -0
  337. package/dist/openapi/route-scanner.d.ts +34 -0
  338. package/dist/openapi/route-scanner.d.ts.map +1 -0
  339. package/dist/openapi/schema-generator.d.ts +53 -0
  340. package/dist/openapi/schema-generator.d.ts.map +1 -0
  341. package/dist/openapi/swagger-module.d.ts +57 -0
  342. package/dist/openapi/swagger-module.d.ts.map +1 -0
  343. package/dist/openapi/types.d.ts +344 -0
  344. package/dist/openapi/types.d.ts.map +1 -0
  345. package/dist/orm/index.d.ts +10 -0
  346. package/dist/orm/index.d.ts.map +1 -0
  347. package/dist/router/index.d.ts +73 -0
  348. package/dist/router/index.d.ts.map +1 -0
  349. package/dist/router/linear.d.ts +54 -0
  350. package/dist/router/linear.d.ts.map +1 -0
  351. package/dist/router/regex.d.ts +49 -0
  352. package/dist/router/regex.d.ts.map +1 -0
  353. package/dist/router/tree.d.ts +112 -0
  354. package/dist/router/tree.d.ts.map +1 -0
  355. package/dist/rpc/index.d.ts +321 -0
  356. package/dist/rpc/index.d.ts.map +1 -0
  357. package/dist/schema/index.d.ts +10 -0
  358. package/dist/schema/index.d.ts.map +1 -0
  359. package/dist/security/index.d.ts +126 -0
  360. package/dist/security/index.d.ts.map +1 -0
  361. package/dist/ssg/index.d.ts +73 -0
  362. package/dist/ssg/index.d.ts.map +1 -0
  363. package/dist/storage/index.d.ts +99 -0
  364. package/dist/storage/index.d.ts.map +1 -0
  365. package/dist/telemetry/index.d.ts +376 -0
  366. package/dist/telemetry/index.d.ts.map +1 -0
  367. package/dist/template/index.d.ts +7 -0
  368. package/dist/template/index.d.ts.map +1 -0
  369. package/dist/templates/engine.d.ts +60 -0
  370. package/dist/templates/engine.d.ts.map +1 -0
  371. package/dist/templates/index.d.ts +9 -0
  372. package/dist/templates/index.d.ts.map +1 -0
  373. package/dist/templates/loader.d.ts +45 -0
  374. package/dist/templates/loader.d.ts.map +1 -0
  375. package/dist/templates/renderers/markdown.d.ts +46 -0
  376. package/dist/templates/renderers/markdown.d.ts.map +1 -0
  377. package/dist/templates/renderers/simple.d.ts +35 -0
  378. package/dist/templates/renderers/simple.d.ts.map +1 -0
  379. package/dist/templates/types.d.ts +138 -0
  380. package/dist/templates/types.d.ts.map +1 -0
  381. package/dist/testing/index.d.ts +539 -0
  382. package/dist/testing/index.d.ts.map +1 -0
  383. package/dist/types/index.d.ts +116 -0
  384. package/dist/types/index.d.ts.map +1 -0
  385. package/dist/validation/index.d.ts +89 -0
  386. package/dist/validation/index.d.ts.map +1 -0
  387. package/dist/validation/schemas.d.ts +243 -0
  388. package/dist/validation/schemas.d.ts.map +1 -0
  389. package/dist/websocket/index.d.ts +252 -0
  390. package/dist/websocket/index.d.ts.map +1 -0
  391. package/llms.txt +231 -0
  392. package/package.json +6 -2
  393. package/src/cli/ARCHITECTURE.md +3 -3
  394. package/src/cli/commands/add-frontend.ts +444 -0
  395. package/src/cli/commands/new.ts +23 -0
  396. package/src/cli/index.ts +1 -0
  397. package/src/cli/templates/frontend/react.ts +2 -1
  398. package/src/cli/templates/frontend/solid.ts +2 -1
  399. package/src/cli/templates/frontend/svelte.ts +2 -1
  400. package/src/cli/templates/frontend/vue.ts +2 -1
  401. package/src/cli/templates/project/api.ts +1 -1
  402. package/src/cli/templates/project/default.ts +1 -1
  403. package/src/cli/templates/project/fullstack.ts +14 -104
  404. package/src/cli/templates/project/website.ts +63 -12
  405. package/src/config/types.ts +21 -0
  406. package/src/graphql/built-in-engine.ts +598 -0
  407. package/src/graphql/context-builder.ts +110 -0
  408. package/src/graphql/decorators.ts +358 -0
  409. package/src/graphql/execution-pipeline.ts +227 -0
  410. package/src/graphql/graphql-module.ts +563 -0
  411. package/src/graphql/index.ts +101 -0
  412. package/src/graphql/metadata.ts +237 -0
  413. package/src/graphql/schema-builder.ts +319 -0
  414. package/src/graphql/subscription-handler.ts +283 -0
  415. package/src/graphql/types.ts +324 -0
  416. package/src/index.ts +3 -0
  417. package/src/modules/index.ts +48 -1
  418. package/tests/integration/cli.test.ts +19 -19
  419. package/tests/unit/cli.test.ts +1 -1
  420. package/tests/unit/graphql.test.ts +991 -0
  421. package/tsconfig.declaration.json +14 -0
@@ -0,0 +1,126 @@
1
+ /**
2
+ * Security Primitives
3
+ *
4
+ * Provides password hashing, JWT handling, CSRF protection,
5
+ * and authentication middleware using Bun's built-in capabilities.
6
+ */
7
+ import type { Middleware } from "../middleware";
8
+ export interface PasswordOptions {
9
+ algorithm?: "argon2id" | "bcrypt";
10
+ cost?: number;
11
+ }
12
+ export declare const Password: {
13
+ /**
14
+ * Hash a password using Bun's built-in password hashing
15
+ */
16
+ hash(password: string, options?: PasswordOptions): Promise<string>;
17
+ /**
18
+ * Verify a password against a hash
19
+ */
20
+ verify(password: string, hash: string): Promise<boolean>;
21
+ /**
22
+ * Check if a hash needs rehashing (e.g., algorithm upgrade)
23
+ */
24
+ needsRehash(hash: string, options?: PasswordOptions): boolean;
25
+ };
26
+ export interface JWTOptions {
27
+ expiresIn?: number | string;
28
+ issuer?: string;
29
+ audience?: string;
30
+ }
31
+ export interface JWTPayload {
32
+ [key: string]: unknown;
33
+ iat?: number;
34
+ exp?: number;
35
+ iss?: string;
36
+ aud?: string;
37
+ }
38
+ export declare class JWT {
39
+ private secret;
40
+ private options;
41
+ constructor(secret: string, options?: JWTOptions);
42
+ /**
43
+ * Sign a payload and create a JWT
44
+ */
45
+ sign(payload: JWTPayload): Promise<string>;
46
+ /**
47
+ * Verify and decode a JWT
48
+ */
49
+ verify(token: string): Promise<JWTPayload | null>;
50
+ /**
51
+ * Decode token without verification (for debugging)
52
+ */
53
+ decode(token: string): JWTPayload | null;
54
+ /**
55
+ * Parse expiry string to seconds
56
+ */
57
+ private parseExpiry;
58
+ /**
59
+ * Create JWT token manually
60
+ */
61
+ private createToken;
62
+ /**
63
+ * Decode and verify token
64
+ */
65
+ private decodeToken;
66
+ /**
67
+ * Decode token without verification
68
+ */
69
+ private decodeTokenUnsafe;
70
+ /**
71
+ * Sign data using HMAC-SHA256
72
+ */
73
+ private signData;
74
+ /**
75
+ * Base64URL encode
76
+ */
77
+ private base64UrlEncode;
78
+ /**
79
+ * Base64URL decode
80
+ */
81
+ private base64UrlDecode;
82
+ }
83
+ export declare const CSRF: {
84
+ /**
85
+ * Generate a CSRF token
86
+ */
87
+ generate(): string;
88
+ /**
89
+ * Get the secret for a token (for cookie-based validation)
90
+ */
91
+ getSecret(): string;
92
+ /**
93
+ * Verify a CSRF token against a secret
94
+ */
95
+ verify(token: string, secret: string): boolean;
96
+ /**
97
+ * Create CSRF middleware
98
+ */
99
+ middleware(): Middleware;
100
+ };
101
+ export interface AuthMiddlewareOptions {
102
+ jwt: JWT;
103
+ header?: string;
104
+ prefix?: string;
105
+ skipPaths?: string[];
106
+ }
107
+ /**
108
+ * Create authentication middleware
109
+ */
110
+ export declare function createAuthMiddleware(options: AuthMiddlewareOptions): Middleware;
111
+ export interface RBACOptions {
112
+ getUserRoles: (userId: string | number) => Promise<string[]>;
113
+ }
114
+ /**
115
+ * Create RBAC middleware
116
+ */
117
+ export declare function createRBACMiddleware(options: RBACOptions): (roles: string[]) => Middleware;
118
+ export interface APIKeyOptions {
119
+ validateKey: (apiKey: string) => Promise<boolean>;
120
+ header?: string;
121
+ }
122
+ /**
123
+ * Create API key authentication middleware
124
+ */
125
+ export declare function createAPIKeyMiddleware(options: APIKeyOptions): Middleware;
126
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/security/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAIhD,MAAM,WAAW,eAAe;IAC/B,SAAS,CAAC,EAAE,UAAU,GAAG,QAAQ,CAAC;IAClC,IAAI,CAAC,EAAE,MAAM,CAAC;CACd;AAED,eAAO,MAAM,QAAQ;IACpB;;OAEG;mBACkB,MAAM,YAAY,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC;IAQxE;;OAEG;qBACoB,MAAM,QAAQ,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAI9D;;OAEG;sBACe,MAAM,YAAY,eAAe,GAAG,OAAO;CAuB7D,CAAC;AAIF,MAAM,WAAW,UAAU;IAC1B,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,UAAU;IAC1B,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;IACvB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;CACb;AAED,qBAAa,GAAG;IACf,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,OAAO,CAAa;gBAEhB,MAAM,EAAE,MAAM,EAAE,OAAO,GAAE,UAAe;IAKpD;;OAEG;IACG,IAAI,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC;IAgChD;;OAEG;IACG,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IAmBvD;;OAEG;IACH,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI;IAQxC;;OAEG;IACH,OAAO,CAAC,WAAW;IAuBnB;;OAEG;YACW,WAAW;IAiBzB;;OAEG;YACW,WAAW;IAmBzB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAQzB;;OAEG;YACW,QAAQ;IAmBtB;;OAEG;IACH,OAAO,CAAC,eAAe;IAKvB;;OAEG;IACH,OAAO,CAAC,eAAe;CAMvB;AAID,eAAO,MAAM,IAAI;IAChB;;OAEG;gBACS,MAAM;IAIlB;;OAEG;iBACU,MAAM;IAInB;;OAEG;kBACW,MAAM,UAAU,MAAM,GAAG,OAAO;IAK9C;;OAEG;kBACW,UAAU;CAiBxB,CAAC;AAIF,MAAM,WAAW,qBAAqB;IACrC,GAAG,EAAE,GAAG,CAAC;IACT,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;CACrB;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CACnC,OAAO,EAAE,qBAAqB,GAC5B,UAAU,CAwCZ;AAID,MAAM,WAAW,WAAW;IAC3B,YAAY,EAAE,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,KAAK,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;CAC7D;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CACnC,OAAO,EAAE,WAAW,GAClB,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,UAAU,CAuBjC;AAID,MAAM,WAAW,aAAa;IAC7B,WAAW,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAClD,MAAM,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,aAAa,GAAG,UAAU,CAkBzE"}
@@ -0,0 +1,73 @@
1
+ /**
2
+ * Static Site Generation (SSG) Module
3
+ *
4
+ * Provides markdown-to-HTML conversion with frontmatter support,
5
+ * template system, and static site generation capabilities.
6
+ */
7
+ import { Router } from "../router";
8
+ export interface Frontmatter {
9
+ title?: string;
10
+ description?: string;
11
+ layout?: string;
12
+ date?: string;
13
+ slug?: string;
14
+ [key: string]: unknown;
15
+ }
16
+ export interface Page {
17
+ path: string;
18
+ content: string;
19
+ html: string;
20
+ frontmatter: Frontmatter;
21
+ raw: string;
22
+ }
23
+ export interface SSGConfig {
24
+ contentDir: string;
25
+ outputDir: string;
26
+ publicDir?: string;
27
+ layoutsDir?: string;
28
+ defaultLayout?: string;
29
+ baseUrl?: string;
30
+ minify?: boolean;
31
+ }
32
+ export interface LayoutContext {
33
+ title?: string;
34
+ description?: string;
35
+ content: string;
36
+ page: Page;
37
+ site: SiteConfig;
38
+ [key: string]: unknown;
39
+ }
40
+ export interface SiteConfig {
41
+ title: string;
42
+ description: string;
43
+ baseUrl: string;
44
+ [key: string]: unknown;
45
+ }
46
+ declare function parseFrontmatter(content: string): {
47
+ frontmatter: Frontmatter;
48
+ body: string;
49
+ };
50
+ declare function parseMarkdown(markdown: string): string;
51
+ export declare class SSG {
52
+ private config;
53
+ private pages;
54
+ private layouts;
55
+ private siteConfig;
56
+ private router;
57
+ constructor(config: SSGConfig, siteConfig?: Partial<SiteConfig>);
58
+ private registerDefaultLayouts;
59
+ registerLayout(name: string, render: (ctx: LayoutContext) => string): void;
60
+ loadContent(): Promise<void>;
61
+ private scanDirectory;
62
+ private processFile;
63
+ renderPage(page: Page): string;
64
+ build(): Promise<void>;
65
+ private copyPublicDir;
66
+ createRouter(): Router;
67
+ serve(port?: number): Promise<void>;
68
+ getPages(): Page[];
69
+ getPage(path: string): Page | undefined;
70
+ }
71
+ export declare function createSSG(config: SSGConfig, siteConfig?: Partial<SiteConfig>): SSG;
72
+ export { parseMarkdown, parseFrontmatter };
73
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/ssg/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAEnC,MAAM,WAAW,WAAW;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACvB;AAED,MAAM,WAAW,IAAI;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,WAAW,CAAC;IACzB,GAAG,EAAE,MAAM,CAAC;CACZ;AAED,MAAM,WAAW,SAAS;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,aAAa;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,IAAI,CAAC;IACX,IAAI,EAAE,UAAU,CAAC;IACjB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACvB;AAED,MAAM,WAAW,UAAU;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACvB;AAkBD,iBAAS,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG;IAC3C,WAAW,EAAE,WAAW,CAAC;IACzB,IAAI,EAAE,MAAM,CAAC;CACb,CAqCA;AA6FD,iBAAS,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAsI/C;AAED,qBAAa,GAAG;IACf,OAAO,CAAC,MAAM,CAAY;IAC1B,OAAO,CAAC,KAAK,CAAgC;IAC7C,OAAO,CAAC,OAAO,CAA0D;IACzE,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,MAAM,CAAS;gBAEX,MAAM,EAAE,SAAS,EAAE,UAAU,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC;IAa/D,OAAO,CAAC,sBAAsB;IAiE9B,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,GAAG,EAAE,aAAa,KAAK,MAAM,GAAG,IAAI;IAIpE,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;YAiBpB,aAAa;YAYb,WAAW;IAiCzB,UAAU,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM;IAyBxB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;YA4Bd,aAAa;IAqB3B,YAAY,IAAI,MAAM;IAyBhB,KAAK,CAAC,IAAI,SAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IA2BvC,QAAQ,IAAI,IAAI,EAAE;IAIlB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS;CAGvC;AAED,wBAAgB,SAAS,CACxB,MAAM,EAAE,SAAS,EACjB,UAAU,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,GAC9B,GAAG,CAEL;AAED,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,CAAC"}
@@ -0,0 +1,99 @@
1
+ /**
2
+ * Storage Layer
3
+ *
4
+ * Unified interface over Bun.s3 for S3-compatible storage with local filesystem fallback.
5
+ * Uses Bun 1.3+ native S3 client for cloud storage.
6
+ */
7
+ export interface StorageConfig {
8
+ driver?: "s3" | "local";
9
+ bucket?: string;
10
+ region?: string;
11
+ endpoint?: string;
12
+ localPath?: string;
13
+ }
14
+ export interface UploadOptions {
15
+ key: string;
16
+ body: string | Buffer | ArrayBuffer | Blob | File;
17
+ contentType?: string;
18
+ }
19
+ export interface DownloadOptions {
20
+ key: string;
21
+ }
22
+ export interface PresignedURLOptions {
23
+ key: string;
24
+ expiresIn?: number;
25
+ method?: "GET" | "PUT";
26
+ }
27
+ export interface FileInfo {
28
+ key: string;
29
+ size: number;
30
+ lastModified?: Date;
31
+ }
32
+ export interface ListOptions {
33
+ prefix?: string;
34
+ }
35
+ export interface ListResult {
36
+ files: FileInfo[];
37
+ directories: string[];
38
+ }
39
+ export declare class Storage {
40
+ private driver;
41
+ private s3Storage;
42
+ private localStorage;
43
+ private _isConnected;
44
+ constructor(config?: StorageConfig);
45
+ connect(): Promise<void>;
46
+ get isConnected(): boolean;
47
+ getDriver(): "s3" | "local";
48
+ upload(options: UploadOptions): Promise<{
49
+ key: string;
50
+ }>;
51
+ download(options: DownloadOptions): Promise<Blob>;
52
+ downloadText(key: string): Promise<string>;
53
+ downloadBuffer(key: string): Promise<ArrayBuffer>;
54
+ stream(key: string): Promise<ReadableStream<Uint8Array>>;
55
+ delete(key: string): Promise<void>;
56
+ deleteMany(keys: string[]): Promise<void>;
57
+ exists(key: string): Promise<boolean>;
58
+ info(key: string): Promise<FileInfo | null>;
59
+ copy(sourceKey: string, destKey: string): Promise<void>;
60
+ move(sourceKey: string, destKey: string): Promise<void>;
61
+ list(options?: ListOptions): Promise<ListResult>;
62
+ getPresignedUrl(options: PresignedURLOptions): string;
63
+ getPublicUrl(key: string): string;
64
+ uploadFile(localPath: string, key: string): Promise<{
65
+ key: string;
66
+ }>;
67
+ }
68
+ export interface SecretOptions {
69
+ service: string;
70
+ name: string;
71
+ }
72
+ export interface SetSecretOptions extends SecretOptions {
73
+ value: string;
74
+ allowUnrestrictedAccess?: boolean;
75
+ }
76
+ export declare const Secrets: {
77
+ /**
78
+ * Get a secret from OS credential storage
79
+ */
80
+ get(options: SecretOptions): Promise<string | null>;
81
+ /**
82
+ * Store a secret in OS credential storage
83
+ */
84
+ set(options: SetSecretOptions): Promise<void>;
85
+ /**
86
+ * Delete a secret from OS credential storage
87
+ */
88
+ delete(options: SecretOptions): Promise<void>;
89
+ /**
90
+ * Get a secret or throw if not found
91
+ */
92
+ getOrThrow(options: SecretOptions): Promise<string>;
93
+ /**
94
+ * Get a secret or use a default value
95
+ */
96
+ getOrDefault(options: SecretOptions, defaultValue: string): Promise<string>;
97
+ };
98
+ export declare function createStorage(config?: StorageConfig): Storage;
99
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/storage/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,376 @@
1
+ /**
2
+ * OpenTelemetry OTLP Trace Exporter
3
+ *
4
+ * Provides distributed tracing with OpenTelemetry Protocol (OTLP) export.
5
+ * Part of Layer 7 (Testing & Observability) implementation.
6
+ */
7
+ /**
8
+ * Span kind enumeration
9
+ */
10
+ export type SpanKind = "server" | "client" | "producer" | "consumer" | "internal";
11
+ /**
12
+ * Span status code
13
+ */
14
+ export type StatusCode = "ok" | "error" | "unset";
15
+ /**
16
+ * Event attached to a span
17
+ */
18
+ export interface SpanEvent {
19
+ /** Event name */
20
+ name: string;
21
+ /** Event timestamp in nanoseconds */
22
+ timestamp: number;
23
+ /** Event attributes */
24
+ attributes?: Record<string, string | number | boolean>;
25
+ }
26
+ /**
27
+ * Span status
28
+ */
29
+ export interface SpanStatus {
30
+ /** Status code */
31
+ code: StatusCode;
32
+ /** Optional status message */
33
+ message?: string;
34
+ }
35
+ /**
36
+ * Span represents a unit of work in distributed tracing
37
+ */
38
+ export interface Span {
39
+ /** Unique trace identifier (32 hex characters) */
40
+ traceId: string;
41
+ /** Unique span identifier (16 hex characters) */
42
+ spanId: string;
43
+ /** Parent span identifier if this is a child span */
44
+ parentSpanId?: string;
45
+ /** Span name (operation name) */
46
+ name: string;
47
+ /** Span kind */
48
+ kind: SpanKind;
49
+ /** Start time in nanoseconds */
50
+ startTime: number;
51
+ /** End time in nanoseconds */
52
+ endTime?: number;
53
+ /** Duration in nanoseconds */
54
+ duration?: number;
55
+ /** Span attributes */
56
+ attributes: Record<string, string | number | boolean>;
57
+ /** Events recorded during the span */
58
+ events: SpanEvent[];
59
+ /** Span status */
60
+ status: SpanStatus;
61
+ /** Whether the span has ended */
62
+ ended: boolean;
63
+ }
64
+ /**
65
+ * Options for starting a new span
66
+ */
67
+ export interface SpanOptions {
68
+ /** Span kind */
69
+ kind?: SpanKind;
70
+ /** Parent span (if any) */
71
+ parent?: Span;
72
+ /** Initial attributes */
73
+ attributes?: Record<string, string | number | boolean>;
74
+ /** Links to other spans */
75
+ links?: Array<{
76
+ traceId: string;
77
+ spanId: string;
78
+ attributes?: Record<string, string | number | boolean>;
79
+ }>;
80
+ /** Start time in nanoseconds (defaults to current time) */
81
+ startTime?: number;
82
+ }
83
+ /**
84
+ * OTLP Exporter options
85
+ */
86
+ export interface OTLPExporterOptions {
87
+ /** OTLP endpoint URL (e.g., http://localhost:4318/v1/traces) */
88
+ endpoint: string;
89
+ /** Additional headers to send with requests */
90
+ headers?: Record<string, string>;
91
+ /** Export interval in milliseconds (default: 5000) */
92
+ exportInterval?: number;
93
+ /** Maximum batch size before forcing export (default: 100) */
94
+ maxBatchSize?: number;
95
+ /** Maximum retry attempts on failure (default: 3) */
96
+ maxRetries?: number;
97
+ /** Initial retry delay in milliseconds (default: 1000) */
98
+ retryDelay?: number;
99
+ /** Timeout for export requests in milliseconds (default: 30000) */
100
+ timeout?: number;
101
+ }
102
+ /**
103
+ * Sampler type
104
+ */
105
+ export type SamplerType = "always" | "never" | "probabilistic";
106
+ /**
107
+ * Tracer options
108
+ */
109
+ export interface TracerOptions {
110
+ /** OTLP exporter instance */
111
+ exporter?: OTLPExporter;
112
+ /** Sampling strategy (default: "always") */
113
+ sampler?: SamplerType;
114
+ /** Probability for probabilistic sampling (0.0 to 1.0) */
115
+ probability?: number;
116
+ /** Service name for resource attributes */
117
+ serviceName?: string;
118
+ /** Additional resource attributes */
119
+ resourceAttributes?: Record<string, string | number | boolean>;
120
+ }
121
+ /**
122
+ * Trace context for propagation
123
+ */
124
+ export interface TraceContext {
125
+ traceId: string;
126
+ spanId: string;
127
+ traceFlags: number;
128
+ traceState?: string;
129
+ }
130
+ /**
131
+ * Generate a random trace ID (32 hex characters / 16 bytes)
132
+ */
133
+ export declare function generateTraceId(): string;
134
+ /**
135
+ * Generate a random span ID (16 hex characters / 8 bytes)
136
+ */
137
+ export declare function generateSpanId(): string;
138
+ /**
139
+ * Get current time in nanoseconds using Bun.nanoseconds()
140
+ */
141
+ export declare function nowNanoseconds(): number;
142
+ /**
143
+ * OTLP HTTP Trace Exporter
144
+ *
145
+ * Exports traces to an OTLP-compatible endpoint using HTTP/JSON.
146
+ */
147
+ export declare class OTLPExporter {
148
+ private endpoint;
149
+ private headers;
150
+ private exportInterval;
151
+ private maxBatchSize;
152
+ private maxRetries;
153
+ private retryDelay;
154
+ private timeout;
155
+ private pendingSpans;
156
+ private exportTimer;
157
+ private isShuttingDown;
158
+ private serviceName;
159
+ private resourceAttributes;
160
+ constructor(options: OTLPExporterOptions);
161
+ /**
162
+ * Set service name for resource attributes
163
+ */
164
+ setServiceName(name: string): void;
165
+ /**
166
+ * Set resource attributes
167
+ */
168
+ setResourceAttributes(attributes: Record<string, string | number | boolean>): void;
169
+ /**
170
+ * Start periodic export
171
+ */
172
+ start(): void;
173
+ /**
174
+ * Stop periodic export
175
+ */
176
+ stop(): void;
177
+ /**
178
+ * Add a span to the pending batch
179
+ */
180
+ addSpan(span: Span): void;
181
+ /**
182
+ * Export spans to OTLP endpoint
183
+ */
184
+ export(spans: Span[]): Promise<boolean>;
185
+ /**
186
+ * Flush all pending spans
187
+ */
188
+ flush(): Promise<void>;
189
+ /**
190
+ * Close the exporter and flush remaining spans
191
+ */
192
+ close(): Promise<void>;
193
+ /**
194
+ * Build OTLP export request from spans
195
+ */
196
+ private buildExportRequest;
197
+ /**
198
+ * Delay helper
199
+ */
200
+ private delay;
201
+ }
202
+ /**
203
+ * Tracer creates and manages spans for distributed tracing
204
+ */
205
+ export declare class Tracer {
206
+ private serviceName;
207
+ private exporter?;
208
+ private sampler;
209
+ private probability;
210
+ private resourceAttributes;
211
+ private currentSpan;
212
+ private spanStack;
213
+ constructor(options?: TracerOptions);
214
+ /**
215
+ * Check if a span should be sampled
216
+ */
217
+ private shouldSample;
218
+ /**
219
+ * Start a new span
220
+ */
221
+ startSpan(name: string, options?: SpanOptions): Span;
222
+ /**
223
+ * End a span
224
+ */
225
+ endSpan(span: Span, endTime?: number): void;
226
+ /**
227
+ * Get the current active span
228
+ */
229
+ getCurrentSpan(): Span | null;
230
+ /**
231
+ * Run a function within span context
232
+ */
233
+ withSpan<T>(name: string, fn: (span: Span) => T | Promise<T>, options?: SpanOptions): Promise<T>;
234
+ /**
235
+ * Add an event to a span
236
+ */
237
+ addEvent(span: Span, name: string, attributes?: Record<string, string | number | boolean>): void;
238
+ /**
239
+ * Set an attribute on a span
240
+ */
241
+ setAttribute(span: Span, key: string, value: string | number | boolean): void;
242
+ /**
243
+ * Set multiple attributes on a span
244
+ */
245
+ setAttributes(span: Span, attributes: Record<string, string | number | boolean>): void;
246
+ /**
247
+ * Set span status
248
+ */
249
+ setStatus(span: Span, code: StatusCode, message?: string): void;
250
+ /**
251
+ * Record an error on a span
252
+ */
253
+ setError(span: Span, error: Error): void;
254
+ /**
255
+ * Update span name
256
+ */
257
+ updateName(span: Span, name: string): void;
258
+ /**
259
+ * Inject trace context into a carrier (for W3C TraceContext propagation)
260
+ */
261
+ injectContext(carrier: Record<string, string>, span?: Span): void;
262
+ /**
263
+ * Extract trace context from a carrier (for W3C TraceContext propagation)
264
+ */
265
+ extractContext(carrier: Record<string, string>): TraceContext | null;
266
+ /**
267
+ * Create a child span from extracted context
268
+ */
269
+ startSpanFromContext(name: string, context: TraceContext, options?: SpanOptions): Span;
270
+ /**
271
+ * Flush pending spans
272
+ */
273
+ flush(): Promise<void>;
274
+ /**
275
+ * Close the tracer
276
+ */
277
+ close(): Promise<void>;
278
+ /**
279
+ * Create a no-op span (not sampled)
280
+ */
281
+ private createNoopSpan;
282
+ }
283
+ /**
284
+ * Create a configured tracer
285
+ */
286
+ export declare function createTracer(serviceName: string, options?: Omit<TracerOptions, "serviceName">): Tracer;
287
+ /**
288
+ * Request context for middleware
289
+ */
290
+ interface RequestContext {
291
+ method: string;
292
+ path: string;
293
+ url: URL;
294
+ headers: Record<string, string>;
295
+ getHeader: (name: string) => string | undefined;
296
+ setHeader: (name: string, value: string) => void;
297
+ status?: number;
298
+ }
299
+ /**
300
+ * Response context for middleware
301
+ */
302
+ interface ResponseContext {
303
+ status: number;
304
+ headers?: Record<string, string>;
305
+ }
306
+ /**
307
+ * Create middleware for automatic HTTP tracing
308
+ */
309
+ export declare function traceMiddleware(tracer: Tracer): (ctx: RequestContext, next: () => Promise<ResponseContext>) => Promise<ResponseContext>;
310
+ /**
311
+ * Database interface for tracing
312
+ */
313
+ interface TracedDatabase {
314
+ query?: (sql: string, params?: unknown[]) => Promise<unknown>;
315
+ execute?: (sql: string, params?: unknown[]) => Promise<unknown>;
316
+ [key: string]: unknown;
317
+ }
318
+ /**
319
+ * Wrap database with tracing
320
+ */
321
+ export declare function traceDatabase(tracer: Tracer, db: TracedDatabase, system?: string): TracedDatabase;
322
+ /**
323
+ * Options for traced fetch
324
+ */
325
+ interface TracedFetchOptions extends RequestInit {
326
+ /** Span to use as parent */
327
+ parentSpan?: Span;
328
+ /** Additional attributes to add to span */
329
+ attributes?: Record<string, string | number | boolean>;
330
+ }
331
+ /**
332
+ * Create a traced fetch function
333
+ */
334
+ export declare function createTracedFetch(tracer: Tracer): (url: string | URL, options?: TracedFetchOptions) => Promise<Response>;
335
+ /**
336
+ * Span builder for fluent API
337
+ */
338
+ export declare class SpanBuilder {
339
+ private span;
340
+ private tracer;
341
+ constructor(tracer: Tracer, name: string, options?: SpanOptions);
342
+ /**
343
+ * Set an attribute
344
+ */
345
+ setAttribute(key: string, value: string | number | boolean): this;
346
+ /**
347
+ * Set multiple attributes
348
+ */
349
+ setAttributes(attributes: Record<string, string | number | boolean>): this;
350
+ /**
351
+ * Add an event
352
+ */
353
+ addEvent(name: string, attributes?: Record<string, string | number | boolean>): this;
354
+ /**
355
+ * Set status
356
+ */
357
+ setStatus(code: StatusCode, message?: string): this;
358
+ /**
359
+ * Record error
360
+ */
361
+ setError(error: Error): this;
362
+ /**
363
+ * End the span
364
+ */
365
+ end(): Span;
366
+ /**
367
+ * Get the underlying span
368
+ */
369
+ getSpan(): Span;
370
+ }
371
+ /**
372
+ * Create a span builder
373
+ */
374
+ export declare function span(tracer: Tracer, name: string, options?: SpanOptions): SpanBuilder;
375
+ export {};
376
+ //# sourceMappingURL=index.d.ts.map