effect-start 0.23.0 → 0.25.0

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 (356) hide show
  1. package/dist/ChildProcess.js +32 -20
  2. package/dist/Commander.js +377 -293
  3. package/dist/ContentNegotiation.js +424 -318
  4. package/dist/Cookies.js +340 -271
  5. package/dist/Development.js +85 -49
  6. package/dist/Effectify.js +22 -14
  7. package/dist/Entity.js +260 -195
  8. package/dist/Fetch.js +192 -0
  9. package/dist/FilePathPattern.js +88 -77
  10. package/dist/FileRouter.js +192 -136
  11. package/dist/FileRouterCodegen.js +262 -191
  12. package/dist/FileSystem.js +126 -64
  13. package/dist/Http.js +96 -77
  14. package/dist/PathPattern.js +311 -273
  15. package/dist/PlatformError.js +36 -21
  16. package/dist/PlatformRuntime.js +65 -40
  17. package/dist/Route.js +122 -79
  18. package/dist/RouteBody.js +83 -58
  19. package/dist/RouteError.js +46 -25
  20. package/dist/RouteHook.js +58 -34
  21. package/dist/RouteHttp.js +346 -237
  22. package/dist/RouteHttpTracer.js +86 -58
  23. package/dist/RouteMount.js +81 -58
  24. package/dist/RouteSchema.js +253 -170
  25. package/dist/RouteSse.js +87 -72
  26. package/dist/RouteTree.js +99 -73
  27. package/dist/RouteTrie.js +160 -133
  28. package/dist/SchemaExtra.js +87 -62
  29. package/dist/Socket.js +32 -21
  30. package/dist/SqlIntrospect.js +317 -268
  31. package/dist/Start.js +55 -25
  32. package/dist/StartApp.js +3 -21
  33. package/dist/StreamExtra.js +109 -74
  34. package/dist/System.js +37 -21
  35. package/dist/TuplePathPattern.js +64 -58
  36. package/dist/Unique.js +159 -120
  37. package/dist/Values.js +48 -32
  38. package/dist/bun/BunBundle.js +158 -109
  39. package/dist/bun/BunChildProcessSpawner.js +121 -82
  40. package/dist/bun/BunImportTrackerPlugin.js +85 -63
  41. package/dist/bun/BunRoute.js +135 -99
  42. package/dist/bun/BunRuntime.js +39 -29
  43. package/dist/bun/BunServer.js +268 -140
  44. package/dist/bun/BunVirtualFilesPlugin.js +47 -33
  45. package/dist/bun/_BunEnhancedResolve.js +107 -82
  46. package/dist/bun/index.js +5 -5
  47. package/dist/bundler/Bundle.js +82 -38
  48. package/dist/bundler/BundleFiles.js +140 -82
  49. package/dist/bundler/BundleRoute.js +49 -38
  50. package/dist/client/Overlay.js +29 -28
  51. package/dist/client/ScrollState.js +94 -82
  52. package/dist/client/index.js +79 -61
  53. package/dist/console/Console.js +40 -24
  54. package/dist/console/ConsoleErrors.js +189 -178
  55. package/dist/console/ConsoleLogger.js +52 -43
  56. package/dist/console/ConsoleMetrics.js +69 -58
  57. package/dist/console/ConsoleProcess.js +57 -47
  58. package/dist/console/ConsoleStore.js +56 -45
  59. package/dist/console/ConsoleTracer.js +101 -88
  60. package/dist/console/Simulation.js +714 -563
  61. package/dist/console/index.js +3 -3
  62. package/dist/console/routes/tree.js +29 -28
  63. package/dist/datastar/actions/fetch.js +514 -381
  64. package/dist/datastar/actions/peek.js +12 -12
  65. package/dist/datastar/actions/setAll.js +18 -11
  66. package/dist/datastar/actions/toggleAll.js +18 -11
  67. package/dist/datastar/attributes/attr.js +48 -47
  68. package/dist/datastar/attributes/bind.js +186 -167
  69. package/dist/datastar/attributes/class.js +51 -44
  70. package/dist/datastar/attributes/computed.js +23 -24
  71. package/dist/datastar/attributes/effect.js +9 -8
  72. package/dist/datastar/attributes/indicator.js +32 -29
  73. package/dist/datastar/attributes/init.js +26 -25
  74. package/dist/datastar/attributes/jsonSignals.js +32 -29
  75. package/dist/datastar/attributes/on.js +76 -73
  76. package/dist/datastar/attributes/onIntersect.js +51 -51
  77. package/dist/datastar/attributes/onInterval.js +30 -29
  78. package/dist/datastar/attributes/onSignalPatch.js +49 -40
  79. package/dist/datastar/attributes/ref.js +10 -9
  80. package/dist/datastar/attributes/show.js +31 -30
  81. package/dist/datastar/attributes/signals.js +17 -16
  82. package/dist/datastar/attributes/style.js +56 -49
  83. package/dist/datastar/attributes/text.js +28 -25
  84. package/dist/datastar/engine.js +1079 -933
  85. package/dist/datastar/index.js +25 -24
  86. package/dist/datastar/utils.js +203 -155
  87. package/dist/datastar/watchers/patchElements.js +459 -372
  88. package/dist/datastar/watchers/patchSignals.js +13 -13
  89. package/dist/experimental/EncryptedCookies.js +305 -189
  90. package/dist/experimental/index.js +1 -1
  91. package/dist/hyper/Hyper.js +22 -17
  92. package/dist/hyper/HyperHtml.js +138 -123
  93. package/dist/hyper/HyperNode.js +11 -9
  94. package/dist/hyper/HyperRoute.js +41 -28
  95. package/dist/hyper/html.js +27 -27
  96. package/dist/hyper/index.js +5 -5
  97. package/dist/hyper/jsx-runtime.js +11 -5
  98. package/dist/index.js +8 -8
  99. package/dist/node/NodeFileSystem.js +606 -341
  100. package/dist/node/NodeUtils.js +21 -18
  101. package/dist/sql/Sql.js +8 -0
  102. package/dist/sql/bun/index.js +134 -67
  103. package/dist/sql/index.js +1 -0
  104. package/dist/sql/libsql/index.js +156 -0
  105. package/dist/sql/mssql/docker.js +103 -60
  106. package/dist/sql/mssql/index.js +182 -101
  107. package/dist/testing/TestLogger.js +39 -29
  108. package/dist/testing/index.js +2 -2
  109. package/dist/testing/utils.js +45 -23
  110. package/dist/x/cloudflare/CloudflareTunnel.js +61 -28
  111. package/dist/x/cloudflare/index.js +1 -1
  112. package/dist/x/tailscale/TailscaleTunnel.js +86 -60
  113. package/dist/x/tailscale/index.js +1 -1
  114. package/dist/x/tailwind/TailwindPlugin.js +280 -205
  115. package/dist/x/tailwind/compile.js +185 -129
  116. package/dist/x/tailwind/plugin.js +13 -11
  117. package/package.json +1 -1
  118. package/src/Development.ts +3 -1
  119. package/src/Entity.ts +17 -0
  120. package/src/Fetch.ts +271 -0
  121. package/src/SqlIntrospect.ts +64 -70
  122. package/src/Start.ts +24 -22
  123. package/src/StartApp.ts +11 -0
  124. package/src/bun/BunServer.ts +89 -16
  125. package/src/hyper/HyperHtml.ts +0 -1
  126. package/src/sql/bun/index.ts +1 -1
  127. package/src/sql/index.ts +1 -0
  128. package/src/sql/libsql/index.ts +173 -0
  129. package/src/sql/libsql/libsql.d.ts +39 -0
  130. package/src/sql/mssql/index.ts +1 -1
  131. package/src/x/tailscale/TailscaleTunnel.ts +7 -5
  132. package/dist/BlobStore.d.ts +0 -80
  133. package/dist/BlobStore.js +0 -19
  134. package/dist/ChildProcess.d.ts +0 -60
  135. package/dist/Commander.d.ts +0 -100
  136. package/dist/ContentNegotiation.d.ts +0 -12
  137. package/dist/Cookies.d.ts +0 -47
  138. package/dist/Development.d.ts +0 -39
  139. package/dist/Effectify.d.ts +0 -209
  140. package/dist/Entity.d.ts +0 -47
  141. package/dist/FilePathPattern.d.ts +0 -29
  142. package/dist/FileRouter.d.ts +0 -56
  143. package/dist/FileRouterCodegen.d.ts +0 -18
  144. package/dist/FileRouterPattern.d.ts +0 -9
  145. package/dist/FileRouterPattern.js +0 -35
  146. package/dist/FileSystem.d.ts +0 -158
  147. package/dist/Http.d.ts +0 -37
  148. package/dist/HttpAppExtra.d.ts +0 -7
  149. package/dist/HttpAppExtra.js +0 -320
  150. package/dist/HttpUtils.d.ts +0 -3
  151. package/dist/HttpUtils.js +0 -11
  152. package/dist/PathPattern.d.ts +0 -134
  153. package/dist/PlatformError.d.ts +0 -38
  154. package/dist/PlatformRuntime.d.ts +0 -27
  155. package/dist/Route.d.ts +0 -97
  156. package/dist/RouteBody.d.ts +0 -47
  157. package/dist/RouteError.d.ts +0 -98
  158. package/dist/RouteHook.d.ts +0 -12
  159. package/dist/RouteHttp.d.ts +0 -21
  160. package/dist/RouteHttpTracer.d.ts +0 -10
  161. package/dist/RouteMount.d.ts +0 -86
  162. package/dist/RouteSchema.d.ts +0 -86
  163. package/dist/RouteSse.d.ts +0 -21
  164. package/dist/RouteTree.d.ts +0 -57
  165. package/dist/RouteTrie.d.ts +0 -20
  166. package/dist/RouterPattern.d.ts +0 -118
  167. package/dist/RouterPattern.js +0 -269
  168. package/dist/SchemaExtra.d.ts +0 -7
  169. package/dist/Socket.d.ts +0 -27
  170. package/dist/Sql.d.ts +0 -34
  171. package/dist/Sql.js +0 -5
  172. package/dist/SqlIntrospect.d.ts +0 -91
  173. package/dist/Start.d.ts +0 -44
  174. package/dist/StartApp.d.ts +0 -19
  175. package/dist/StreamExtra.d.ts +0 -28
  176. package/dist/System.d.ts +0 -7
  177. package/dist/TuplePathPattern.d.ts +0 -9
  178. package/dist/Unique.d.ts +0 -50
  179. package/dist/Values.d.ts +0 -27
  180. package/dist/bun/BunBlobStoreDisk.d.ts +0 -6
  181. package/dist/bun/BunBlobStoreDisk.js +0 -116
  182. package/dist/bun/BunBlobStoreS3.d.ts +0 -11
  183. package/dist/bun/BunBlobStoreS3.js +0 -89
  184. package/dist/bun/BunBlobWatcherDisk.d.ts +0 -6
  185. package/dist/bun/BunBlobWatcherDisk.js +0 -60
  186. package/dist/bun/BunBlobWatcherQueue.d.ts +0 -6
  187. package/dist/bun/BunBlobWatcherQueue.js +0 -17
  188. package/dist/bun/BunBundle.d.ts +0 -11
  189. package/dist/bun/BunChildProcessSpawner.d.ts +0 -3
  190. package/dist/bun/BunHttpServer.d.ts +0 -44
  191. package/dist/bun/BunHttpServer.js +0 -186
  192. package/dist/bun/BunHttpServer_web.d.ts +0 -60
  193. package/dist/bun/BunHttpServer_web.js +0 -252
  194. package/dist/bun/BunImportTrackerPlugin.d.ts +0 -13
  195. package/dist/bun/BunPlatformHttpServer.d.ts +0 -10
  196. package/dist/bun/BunPlatformHttpServer.js +0 -53
  197. package/dist/bun/BunRoute.d.ts +0 -48
  198. package/dist/bun/BunRuntime.d.ts +0 -2
  199. package/dist/bun/BunServer.d.ts +0 -40
  200. package/dist/bun/BunServerRequest.d.ts +0 -60
  201. package/dist/bun/BunServerRequest.js +0 -252
  202. package/dist/bun/BunSql.d.ts +0 -4
  203. package/dist/bun/BunSql.js +0 -81
  204. package/dist/bun/BunVirtualFilesPlugin.d.ts +0 -4
  205. package/dist/bun/_BunEnhancedResolve.d.ts +0 -45
  206. package/dist/bun/index.d.ts +0 -5
  207. package/dist/bundler/Bundle.d.ts +0 -61
  208. package/dist/bundler/BundleFiles.d.ts +0 -13
  209. package/dist/bundler/BundleHttp.d.ts +0 -45
  210. package/dist/bundler/BundleHttp.js +0 -176
  211. package/dist/bundler/BundleRoute.d.ts +0 -27
  212. package/dist/client/Overlay.d.ts +0 -2
  213. package/dist/client/ScrollState.d.ts +0 -6
  214. package/dist/client/index.d.ts +0 -6
  215. package/dist/console/Console.d.ts +0 -6
  216. package/dist/console/ConsoleErrors.d.ts +0 -3
  217. package/dist/console/ConsoleLogger.d.ts +0 -3
  218. package/dist/console/ConsoleMetrics.d.ts +0 -3
  219. package/dist/console/ConsoleProcess.d.ts +0 -3
  220. package/dist/console/ConsoleStore.d.ts +0 -144
  221. package/dist/console/ConsoleTracer.d.ts +0 -3
  222. package/dist/console/Simulation.d.ts +0 -2
  223. package/dist/console/index.d.ts +0 -3
  224. package/dist/console/routes/errors/route.d.ts +0 -10
  225. package/dist/console/routes/errors/route.js +0 -47
  226. package/dist/console/routes/fiberDetail.d.ts +0 -16
  227. package/dist/console/routes/fiberDetail.js +0 -38
  228. package/dist/console/routes/fibers/route.d.ts +0 -10
  229. package/dist/console/routes/fibers/route.js +0 -19
  230. package/dist/console/routes/git/route.d.ts +0 -11
  231. package/dist/console/routes/git/route.js +0 -33
  232. package/dist/console/routes/layout.d.ts +0 -9
  233. package/dist/console/routes/layout.js +0 -3
  234. package/dist/console/routes/logs/route.d.ts +0 -10
  235. package/dist/console/routes/logs/route.js +0 -32
  236. package/dist/console/routes/metrics/route.d.ts +0 -10
  237. package/dist/console/routes/metrics/route.js +0 -17
  238. package/dist/console/routes/route.d.ts +0 -6
  239. package/dist/console/routes/route.js +0 -5
  240. package/dist/console/routes/routes/route.d.ts +0 -6
  241. package/dist/console/routes/routes/route.js +0 -20
  242. package/dist/console/routes/services/route.d.ts +0 -6
  243. package/dist/console/routes/services/route.js +0 -12
  244. package/dist/console/routes/system/route.d.ts +0 -10
  245. package/dist/console/routes/system/route.js +0 -18
  246. package/dist/console/routes/traceDetail.d.ts +0 -16
  247. package/dist/console/routes/traceDetail.js +0 -14
  248. package/dist/console/routes/traces/route.d.ts +0 -10
  249. package/dist/console/routes/traces/route.js +0 -39
  250. package/dist/console/routes/tree.d.ts +0 -153
  251. package/dist/console/ui/Errors.d.ts +0 -4
  252. package/dist/console/ui/Errors.js +0 -15
  253. package/dist/console/ui/Fibers.d.ts +0 -24
  254. package/dist/console/ui/Fibers.js +0 -121
  255. package/dist/console/ui/Git.d.ts +0 -20
  256. package/dist/console/ui/Git.js +0 -95
  257. package/dist/console/ui/Logs.d.ts +0 -4
  258. package/dist/console/ui/Logs.js +0 -25
  259. package/dist/console/ui/Metrics.d.ts +0 -4
  260. package/dist/console/ui/Metrics.js +0 -26
  261. package/dist/console/ui/Routes.d.ts +0 -8
  262. package/dist/console/ui/Routes.js +0 -70
  263. package/dist/console/ui/Services.d.ts +0 -10
  264. package/dist/console/ui/Services.js +0 -246
  265. package/dist/console/ui/Shell.d.ts +0 -10
  266. package/dist/console/ui/Shell.js +0 -7
  267. package/dist/console/ui/System.d.ts +0 -4
  268. package/dist/console/ui/System.js +0 -35
  269. package/dist/console/ui/Traces.d.ts +0 -12
  270. package/dist/console/ui/Traces.js +0 -179
  271. package/dist/datastar/actions/fetch.d.ts +0 -30
  272. package/dist/datastar/actions/peek.d.ts +0 -1
  273. package/dist/datastar/actions/setAll.d.ts +0 -1
  274. package/dist/datastar/actions/toggleAll.d.ts +0 -1
  275. package/dist/datastar/attributes/attr.d.ts +0 -1
  276. package/dist/datastar/attributes/bind.d.ts +0 -1
  277. package/dist/datastar/attributes/class.d.ts +0 -1
  278. package/dist/datastar/attributes/computed.d.ts +0 -1
  279. package/dist/datastar/attributes/effect.d.ts +0 -1
  280. package/dist/datastar/attributes/indicator.d.ts +0 -1
  281. package/dist/datastar/attributes/init.d.ts +0 -1
  282. package/dist/datastar/attributes/jsonSignals.d.ts +0 -1
  283. package/dist/datastar/attributes/on.d.ts +0 -1
  284. package/dist/datastar/attributes/onIntersect.d.ts +0 -1
  285. package/dist/datastar/attributes/onInterval.d.ts +0 -1
  286. package/dist/datastar/attributes/onSignalPatch.d.ts +0 -1
  287. package/dist/datastar/attributes/ref.d.ts +0 -1
  288. package/dist/datastar/attributes/show.d.ts +0 -1
  289. package/dist/datastar/attributes/signals.d.ts +0 -1
  290. package/dist/datastar/attributes/style.d.ts +0 -1
  291. package/dist/datastar/attributes/text.d.ts +0 -1
  292. package/dist/datastar/engine.d.ts +0 -162
  293. package/dist/datastar/happydom.d.ts +0 -1
  294. package/dist/datastar/happydom.js +0 -8
  295. package/dist/datastar/index.d.ts +0 -24
  296. package/dist/datastar/load.d.ts +0 -24
  297. package/dist/datastar/load.js +0 -24
  298. package/dist/datastar/utils.d.ts +0 -51
  299. package/dist/datastar/watchers/patchElements.d.ts +0 -1
  300. package/dist/datastar/watchers/patchSignals.d.ts +0 -1
  301. package/dist/experimental/EncryptedCookies.d.ts +0 -48
  302. package/dist/experimental/SseHttpResponse.d.ts +0 -7
  303. package/dist/experimental/SseHttpResponse.js +0 -28
  304. package/dist/experimental/index.d.ts +0 -1
  305. package/dist/hyper/Hyper.d.ts +0 -25
  306. package/dist/hyper/HyperHtml.d.ts +0 -23
  307. package/dist/hyper/HyperHtml.test.d.ts +0 -1
  308. package/dist/hyper/HyperHtml.test.js +0 -197
  309. package/dist/hyper/HyperNode.d.ts +0 -14
  310. package/dist/hyper/HyperRoute.d.ts +0 -8
  311. package/dist/hyper/HyperRoute.test.d.ts +0 -1
  312. package/dist/hyper/HyperRoute.test.js +0 -83
  313. package/dist/hyper/html.d.ts +0 -11
  314. package/dist/hyper/index.d.ts +0 -6
  315. package/dist/hyper/jsx-runtime.d.ts +0 -7
  316. package/dist/index.d.ts +0 -8
  317. package/dist/inference_check.d.ts +0 -1
  318. package/dist/inference_check.js +0 -15
  319. package/dist/lint/plugin.d.ts +0 -86
  320. package/dist/lint/plugin.js +0 -341
  321. package/dist/middlewares/BasicAuthMiddleware.d.ts +0 -8
  322. package/dist/middlewares/BasicAuthMiddleware.js +0 -22
  323. package/dist/middlewares/index.d.ts +0 -1
  324. package/dist/middlewares/index.js +0 -1
  325. package/dist/node/Effectify.d.ts +0 -209
  326. package/dist/node/Effectify.js +0 -19
  327. package/dist/node/FileSystem.d.ts +0 -7
  328. package/dist/node/FileSystem.js +0 -420
  329. package/dist/node/NodeFileSystem.d.ts +0 -7
  330. package/dist/node/NodeUtils.d.ts +0 -2
  331. package/dist/node/PlatformError.d.ts +0 -46
  332. package/dist/node/PlatformError.js +0 -43
  333. package/dist/node/Utils.d.ts +0 -1
  334. package/dist/node/Utils.js +0 -19
  335. package/dist/repro_fail.d.ts +0 -1
  336. package/dist/repro_fail.js +0 -14
  337. package/dist/sql/bun/index.d.ts +0 -3
  338. package/dist/sql/mssql/docker.d.ts +0 -2
  339. package/dist/sql/mssql/index.d.ts +0 -21
  340. package/dist/testing/TestHttpClient.d.ts +0 -13
  341. package/dist/testing/TestHttpClient.js +0 -68
  342. package/dist/testing/TestLogger.d.ts +0 -13
  343. package/dist/testing/index.d.ts +0 -2
  344. package/dist/testing/utils.d.ts +0 -9
  345. package/dist/x/cloudflare/CloudflareTunnel.d.ts +0 -10
  346. package/dist/x/cloudflare/index.d.ts +0 -1
  347. package/dist/x/datastar/Datastar.d.ts +0 -6
  348. package/dist/x/datastar/Datastar.js +0 -47
  349. package/dist/x/datastar/index.d.ts +0 -1
  350. package/dist/x/datastar/index.js +0 -1
  351. package/dist/x/tailscale/TailscaleTunnel.d.ts +0 -15
  352. package/dist/x/tailscale/index.d.ts +0 -1
  353. package/dist/x/tailwind/TailwindPlugin.d.ts +0 -23
  354. package/dist/x/tailwind/compile.d.ts +0 -19
  355. package/dist/x/tailwind/plugin.d.ts +0 -2
  356. /package/src/{Sql.ts → sql/Sql.ts} +0 -0
@@ -1,158 +0,0 @@
1
- import * as Brand from "effect/Brand";
2
- import * as Context from "effect/Context";
3
- import * as Data from "effect/Data";
4
- import * as Effect from "effect/Effect";
5
- import * as Option from "effect/Option";
6
- import * as Sink from "effect/Sink";
7
- import type * as Scope from "effect/Scope";
8
- import * as Stream from "effect/Stream";
9
- import * as PlatformError from "./PlatformError.ts";
10
- export interface FileSystem {
11
- readonly access: (path: string, options?: AccessFileOptions) => Effect.Effect<void, PlatformError.PlatformError>;
12
- readonly copy: (fromPath: string, toPath: string, options?: CopyOptions) => Effect.Effect<void, PlatformError.PlatformError>;
13
- readonly copyFile: (fromPath: string, toPath: string) => Effect.Effect<void, PlatformError.PlatformError>;
14
- readonly chmod: (path: string, mode: number) => Effect.Effect<void, PlatformError.PlatformError>;
15
- readonly chown: (path: string, uid: number, gid: number) => Effect.Effect<void, PlatformError.PlatformError>;
16
- readonly exists: (path: string) => Effect.Effect<boolean, PlatformError.PlatformError>;
17
- readonly link: (fromPath: string, toPath: string) => Effect.Effect<void, PlatformError.PlatformError>;
18
- readonly makeDirectory: (path: string, options?: MakeDirectoryOptions) => Effect.Effect<void, PlatformError.PlatformError>;
19
- readonly makeTempDirectory: (options?: MakeTempDirectoryOptions) => Effect.Effect<string, PlatformError.PlatformError>;
20
- readonly makeTempDirectoryScoped: (options?: MakeTempDirectoryOptions) => Effect.Effect<string, PlatformError.PlatformError, Scope.Scope>;
21
- readonly makeTempFile: (options?: MakeTempFileOptions) => Effect.Effect<string, PlatformError.PlatformError>;
22
- readonly makeTempFileScoped: (options?: MakeTempFileOptions) => Effect.Effect<string, PlatformError.PlatformError, Scope.Scope>;
23
- readonly open: (path: string, options?: OpenFileOptions) => Effect.Effect<File, PlatformError.PlatformError, Scope.Scope>;
24
- readonly readDirectory: (path: string, options?: ReadDirectoryOptions) => Effect.Effect<Array<string>, PlatformError.PlatformError>;
25
- readonly readFile: (path: string) => Effect.Effect<Uint8Array, PlatformError.PlatformError>;
26
- readonly readFileString: (path: string, encoding?: string) => Effect.Effect<string, PlatformError.PlatformError>;
27
- readonly readLink: (path: string) => Effect.Effect<string, PlatformError.PlatformError>;
28
- readonly realPath: (path: string) => Effect.Effect<string, PlatformError.PlatformError>;
29
- readonly remove: (path: string, options?: RemoveOptions) => Effect.Effect<void, PlatformError.PlatformError>;
30
- readonly rename: (oldPath: string, newPath: string) => Effect.Effect<void, PlatformError.PlatformError>;
31
- readonly sink: (path: string, options?: SinkOptions) => Sink.Sink<void, Uint8Array, never, PlatformError.PlatformError>;
32
- readonly stat: (path: string) => Effect.Effect<File.Info, PlatformError.PlatformError>;
33
- readonly stream: (path: string, options?: StreamOptions) => Stream.Stream<Uint8Array, PlatformError.PlatformError>;
34
- readonly symlink: (fromPath: string, toPath: string) => Effect.Effect<void, PlatformError.PlatformError>;
35
- readonly truncate: (path: string, length?: SizeInput) => Effect.Effect<void, PlatformError.PlatformError>;
36
- readonly utimes: (path: string, atime: Date | number, mtime: Date | number) => Effect.Effect<void, PlatformError.PlatformError>;
37
- readonly watch: (path: string, options?: WatchOptions) => Stream.Stream<WatchEvent, PlatformError.PlatformError>;
38
- readonly writeFile: (path: string, data: Uint8Array, options?: WriteFileOptions) => Effect.Effect<void, PlatformError.PlatformError>;
39
- readonly writeFileString: (path: string, data: string, options?: WriteFileStringOptions) => Effect.Effect<void, PlatformError.PlatformError>;
40
- }
41
- export declare const FileSystem: Context.Tag<FileSystem, FileSystem>;
42
- export type Size = Brand.Branded<bigint, "Size">;
43
- export type SizeInput = bigint | number | Size;
44
- export declare const Size: (bytes: SizeInput) => Size;
45
- export type OpenFlag = "r" | "r+" | "w" | "wx" | "w+" | "wx+" | "a" | "ax" | "a+" | "ax+";
46
- export type SeekMode = "start" | "current";
47
- export interface AccessFileOptions {
48
- readonly ok?: boolean;
49
- readonly readable?: boolean;
50
- readonly writable?: boolean;
51
- }
52
- export interface MakeDirectoryOptions {
53
- readonly recursive?: boolean;
54
- readonly mode?: number;
55
- }
56
- export interface CopyOptions {
57
- readonly overwrite?: boolean;
58
- readonly preserveTimestamps?: boolean;
59
- }
60
- export interface MakeTempDirectoryOptions {
61
- readonly directory?: string;
62
- readonly prefix?: string;
63
- }
64
- export interface MakeTempFileOptions {
65
- readonly directory?: string;
66
- readonly prefix?: string;
67
- readonly suffix?: string;
68
- }
69
- export interface OpenFileOptions {
70
- readonly flag?: OpenFlag;
71
- readonly mode?: number;
72
- }
73
- export interface ReadDirectoryOptions {
74
- readonly recursive?: boolean;
75
- }
76
- export interface RemoveOptions {
77
- readonly recursive?: boolean;
78
- readonly force?: boolean;
79
- }
80
- export interface SinkOptions extends OpenFileOptions {
81
- }
82
- export interface StreamOptions {
83
- readonly bufferSize?: number;
84
- readonly bytesToRead?: SizeInput;
85
- readonly chunkSize?: SizeInput;
86
- readonly offset?: SizeInput;
87
- }
88
- export interface WriteFileOptions {
89
- readonly flag?: OpenFlag;
90
- readonly mode?: number;
91
- }
92
- export interface WriteFileStringOptions {
93
- readonly flag?: OpenFlag;
94
- readonly mode?: number;
95
- }
96
- export interface WatchOptions {
97
- readonly recursive?: boolean;
98
- }
99
- export declare const FileTypeId: unique symbol;
100
- export type FileTypeId = typeof FileTypeId;
101
- export interface File {
102
- readonly [FileTypeId]: FileTypeId;
103
- readonly fd: File.Descriptor;
104
- readonly stat: Effect.Effect<File.Info, PlatformError.PlatformError>;
105
- readonly seek: (offset: SizeInput, from: SeekMode) => Effect.Effect<void>;
106
- readonly sync: Effect.Effect<void, PlatformError.PlatformError>;
107
- readonly read: (buffer: Uint8Array) => Effect.Effect<Size, PlatformError.PlatformError>;
108
- readonly readAlloc: (size: SizeInput) => Effect.Effect<Option.Option<Uint8Array>, PlatformError.PlatformError>;
109
- readonly truncate: (length?: SizeInput) => Effect.Effect<void, PlatformError.PlatformError>;
110
- readonly write: (buffer: Uint8Array) => Effect.Effect<Size, PlatformError.PlatformError>;
111
- readonly writeAll: (buffer: Uint8Array) => Effect.Effect<void, PlatformError.PlatformError>;
112
- }
113
- export declare namespace File {
114
- type Descriptor = Brand.Branded<number, "FileDescriptor">;
115
- type Type = "File" | "Directory" | "SymbolicLink" | "BlockDevice" | "CharacterDevice" | "FIFO" | "Socket" | "Unknown";
116
- interface Info {
117
- readonly type: Type;
118
- readonly mtime: Option.Option<Date>;
119
- readonly atime: Option.Option<Date>;
120
- readonly birthtime: Option.Option<Date>;
121
- readonly dev: number;
122
- readonly ino: Option.Option<number>;
123
- readonly mode: number;
124
- readonly nlink: Option.Option<number>;
125
- readonly uid: Option.Option<number>;
126
- readonly gid: Option.Option<number>;
127
- readonly rdev: Option.Option<number>;
128
- readonly size: Size;
129
- readonly blksize: Option.Option<Size>;
130
- readonly blocks: Option.Option<number>;
131
- }
132
- }
133
- export declare const FileDescriptor: Brand.Brand.Constructor<File.Descriptor>;
134
- export type WatchEvent = WatchEvent.Create | WatchEvent.Update | WatchEvent.Remove;
135
- export declare namespace WatchEvent {
136
- interface Create {
137
- readonly _tag: "Create";
138
- readonly path: string;
139
- }
140
- interface Update {
141
- readonly _tag: "Update";
142
- readonly path: string;
143
- }
144
- interface Remove {
145
- readonly _tag: "Remove";
146
- readonly path: string;
147
- }
148
- }
149
- export declare const WatchEventCreate: Data.Case.Constructor<WatchEvent.Create, "_tag">;
150
- export declare const WatchEventUpdate: Data.Case.Constructor<WatchEvent.Update, "_tag">;
151
- export declare const WatchEventRemove: Data.Case.Constructor<WatchEvent.Remove, "_tag">;
152
- declare const WatchBackend_base: Context.TagClass<WatchBackend, "@effect/platform/FileSystem/WatchBackend", {
153
- readonly register: (path: string, stat: File.Info, options?: WatchOptions) => Option.Option<Stream.Stream<WatchEvent, PlatformError.PlatformError>>;
154
- }>;
155
- export declare class WatchBackend extends WatchBackend_base {
156
- }
157
- export declare const make: (impl: Omit<FileSystem, "exists" | "readFileString" | "stream" | "sink" | "writeFileString">) => FileSystem;
158
- export {};
package/dist/Http.d.ts DELETED
@@ -1,37 +0,0 @@
1
- export type Method = "GET" | "POST" | "PUT" | "DELETE" | "PATCH" | "HEAD" | "OPTIONS";
2
- type Respondable = Response | Promise<Response>;
3
- export type WebHandler = (request: Request) => Respondable;
4
- export type WebMiddleware = (request: Request, next: WebHandler) => Respondable;
5
- export declare function fetch(handler: WebHandler, init: Omit<RequestInit, "body"> & ({
6
- url: string;
7
- } | {
8
- path: `/${string}`;
9
- }) & {
10
- body?: RequestInit["body"] | Record<string, unknown>;
11
- }): Promise<Response>;
12
- export declare function createAbortableRequest(init: Omit<RequestInit, "signal"> & ({
13
- url: string;
14
- } | {
15
- path: `/${string}`;
16
- })): {
17
- request: Request;
18
- abort: () => void;
19
- };
20
- export declare function mapHeaders(headers: Headers): Record<string, string | undefined>;
21
- export declare function parseCookies(cookieHeader: string | null): Record<string, string | undefined>;
22
- export declare function mapUrlSearchParams(params: URLSearchParams): Record<string, string | ReadonlyArray<string> | undefined>;
23
- export interface FilePart {
24
- readonly _tag: "File";
25
- readonly key: string;
26
- readonly name: string;
27
- readonly contentType: string;
28
- readonly content: Uint8Array;
29
- }
30
- export interface FieldPart {
31
- readonly _tag: "Field";
32
- readonly key: string;
33
- readonly value: string;
34
- }
35
- export type MultipartPart = FilePart | FieldPart;
36
- export declare function parseFormData(request: Request): Promise<Record<string, ReadonlyArray<FilePart> | ReadonlyArray<string> | string>>;
37
- export {};
@@ -1,7 +0,0 @@
1
- import { HttpServerRequest, HttpServerResponse } from "@effect/platform";
2
- import * as HttpApp from "@effect/platform/HttpApp";
3
- import { RouteNotFound } from "@effect/platform/HttpServerError";
4
- import { Effect } from "effect";
5
- export declare const renderError: (error: unknown, accept?: string) => Effect.Effect<HttpServerResponse.HttpServerResponse, never, HttpServerRequest.HttpServerRequest>;
6
- export declare function handleErrors<E, R>(app: HttpApp.Default<E, R>): HttpApp.Default<Exclude<E, RouteNotFound>, R | HttpServerRequest.HttpServerRequest>;
7
- export declare const withErrorHandled: <E, R>(app: HttpApp.Default<E, R>) => Effect.Effect<HttpServerResponse.HttpServerResponse, never, HttpServerRequest.HttpServerRequest | R>;
@@ -1,320 +0,0 @@
1
- import { HttpServerRequest, HttpServerResponse, } from "@effect/platform";
2
- import * as HttpMiddleware from "@effect/platform/HttpMiddleware";
3
- import { Cause, Effect, Option, ParseResult, Record, } from "effect";
4
- /**
5
- * Groups: function, path
6
- */
7
- const StackLinePattern = /^at (.*?) \((.*?)\)/;
8
- const ERROR_PAGE_CSS = `
9
- :root {
10
- --error-red: #c00;
11
- --error-red-dark: #a00;
12
- --bg-error: #fee;
13
- --bg-light: #f5f5f5;
14
- --bg-white: #fff;
15
- --border-color: #ddd;
16
- --text-dark: #333;
17
- --text-gray: #666;
18
- --text-mono: 'Monaco', 'Menlo', 'Ubuntu Mono', monospace;
19
- }
20
-
21
- * { box-sizing: border-box; }
22
-
23
- body {
24
- font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif;
25
- margin: 0;
26
- padding: 0;
27
- color: var(--text-dark);
28
- line-height: 1.6;
29
- min-height: 100dvh;
30
- }
31
-
32
- .error-page { width: 100%; margin: 0; }
33
-
34
- .error-header {
35
- background: var(--error-red);
36
- color: white;
37
- padding: 2rem 2.5rem;
38
- margin: 0;
39
- font-family: var(--text-mono);
40
- }
41
-
42
- .error-header h1 {
43
- margin: 0 0 0.5rem 0;
44
- font-size: 2rem;
45
- font-weight: 600;
46
- font-family: var(--text-mono);
47
- }
48
-
49
- .error-message {
50
- margin: 0;
51
- font-size: 1.1rem;
52
- opacity: 0.95;
53
- font-family: var(--text-mono);
54
- }
55
-
56
- .error-content {
57
- background: var(--bg-white);
58
- padding: 2rem 2.5rem;
59
- }
60
-
61
- .stack-trace {
62
- margin: 1.5rem 0;
63
- border: 1px solid var(--border-color);
64
- border-radius: 4px;
65
- overflow: hidden;
66
- }
67
-
68
- .stack-trace-header {
69
- font-weight: 600;
70
- padding: 0.75rem 1rem;
71
- background: var(--bg-light);
72
- border-bottom: 1px solid var(--border-color);
73
- }
74
-
75
- .stack-list {
76
- list-style: none;
77
- padding: 0;
78
- margin: 0;
79
- max-height: 400px;
80
- overflow-y: auto;
81
- }
82
-
83
- .stack-list li {
84
- padding: 0.5rem 1rem;
85
- font-family: var(--text-mono);
86
- font-size: 0.875rem;
87
- border-bottom: 1px solid var(--border-color);
88
- background: var(--bg-white);
89
- }
90
-
91
- .stack-list li:last-child { border-bottom: none; }
92
-
93
- .stack-list li:hover { background: #fafafa; }
94
-
95
- .stack-list code {
96
- background: transparent;
97
- padding: 0;
98
- font-weight: 600;
99
- color: var(--error-red-dark);
100
- }
101
-
102
- .stack-list .path { color: var(--text-gray); margin-left: 0.5rem; }
103
-
104
- .request-info {
105
- margin: 1.5rem 0;
106
- border: 1px solid var(--border-color);
107
- border-radius: 4px;
108
- overflow: hidden;
109
- }
110
-
111
- .request-info-header {
112
- font-weight: 700;
113
- padding: 0.75rem 1rem;
114
- background: var(--bg-light);
115
- border-bottom: 1px solid var(--border-color);
116
- }
117
-
118
- .request-info-content {
119
- padding: 1rem;
120
- font-family: var(--text-mono);
121
- font-size: 0.875rem;
122
- white-space: pre-wrap;
123
- word-break: break-all;
124
- }
125
-
126
- @media (max-width: 768px) {
127
- .error-header, .error-content { padding: 1.5rem 1rem; }
128
- .error-header h1 { font-size: 1.5rem; }
129
- }
130
- `;
131
- function errorHtml(data) {
132
- let detailsHtml = "";
133
- if (data.details) {
134
- const detailsObj = data.details;
135
- if ("stack" in detailsObj && Array.isArray(detailsObj.stack)) {
136
- const stackFrames = detailsObj.stack;
137
- detailsHtml = renderStackTrace(stackFrames);
138
- }
139
- }
140
- const requestHtml = data.requestContext
141
- ? renderRequestContext(data.requestContext)
142
- : "";
143
- const messageHtml = data.message
144
- ? `<p class="error-message">${escapeHtml(data.message)}</p>`
145
- : "";
146
- const headerTitle = data.errorName ?? "UnexpectedError";
147
- const html = `<!DOCTYPE html>
148
- <html lang="en">
149
- <head>
150
- <meta charset="UTF-8">
151
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
152
- <title>${headerTitle} - Error ${data.status}</title>
153
- <style>${ERROR_PAGE_CSS}</style>
154
- </head>
155
- <body>
156
- <div class="error-header">
157
- <h1>${escapeHtml(headerTitle)}</h1>
158
- ${messageHtml}
159
- </div>
160
- <div class="error-content">
161
- ${detailsHtml}
162
- ${requestHtml}
163
- </div>
164
- </body>
165
- </html>`;
166
- return HttpServerResponse.text(html, {
167
- status: data.status,
168
- contentType: "text/html",
169
- });
170
- }
171
- function errorText(status, tag, details) {
172
- const text = details ? `${tag}\n${JSON.stringify(details, null, 2)}` : tag;
173
- return HttpServerResponse.text(text, { status });
174
- }
175
- function respondWithError(accept, status, tag, message, details, requestContext, errorName) {
176
- if (accept.includes("text/html")) {
177
- return errorHtml({
178
- status,
179
- tag,
180
- message,
181
- details,
182
- requestContext,
183
- errorName,
184
- });
185
- }
186
- if (accept.includes("text/plain")) {
187
- return errorText(status, tag, details);
188
- }
189
- return HttpServerResponse.unsafeJson({ error: { _tag: tag, ...details } }, { status });
190
- }
191
- export const renderError = (error, accept = "") => Effect.gen(function* () {
192
- const request = yield* HttpServerRequest.HttpServerRequest;
193
- const requestContext = {
194
- url: request.url,
195
- method: request.method,
196
- headers: filterSensitiveHeaders(request.headers),
197
- };
198
- let unwrappedError;
199
- if (Cause.isCause(error)) {
200
- const failure = Cause.failureOption(error).pipe(Option.getOrUndefined);
201
- if (failure?.["_tag"]) {
202
- unwrappedError = failure;
203
- }
204
- yield* Effect.logError(error);
205
- }
206
- switch (unwrappedError?._tag) {
207
- case "RouteNotFound":
208
- return respondWithError(accept, 404, "RouteNotFound", "The page you were looking for doesn't exist", undefined, requestContext);
209
- case "RequestError": {
210
- const message = unwrappedError.reason === "Decode"
211
- ? "Request body is invalid"
212
- : "Request could not be processed";
213
- return respondWithError(accept, 400, "RequestError", message, {
214
- reason: unwrappedError.reason,
215
- }, requestContext);
216
- }
217
- case "ParseError": {
218
- const issues = yield* ParseResult.ArrayFormatter.formatIssue(unwrappedError.issue);
219
- const cleanIssues = issues.map((v) => Record.remove(v, "_tag"));
220
- return respondWithError(accept, 400, "ParseError", "Validation failed", {
221
- issues: cleanIssues,
222
- }, requestContext);
223
- }
224
- }
225
- if (Cause.isCause(error)) {
226
- const defects = [...Cause.defects(error)];
227
- const defect = defects[0];
228
- if (defect instanceof Error) {
229
- const stackFrames = extractPrettyStack(defect.stack ?? "");
230
- return respondWithError(accept, 500, "UnexpectedError", defect.message, {
231
- name: defect.name,
232
- stack: stackFrames,
233
- }, requestContext, defect.name);
234
- }
235
- }
236
- return respondWithError(accept, 500, "UnexpectedError", "An unexpected error occurred", undefined, requestContext, "UnexpectedError");
237
- });
238
- function parseStackFrame(line) {
239
- const match = line.trim().match(StackLinePattern);
240
- if (!match)
241
- return null;
242
- const [_, fn, fullPath] = match;
243
- const relativePath = fullPath.replace(process.cwd(), ".");
244
- let type;
245
- if (relativePath.includes("node_modules")) {
246
- type = "node_modules";
247
- }
248
- else if (relativePath.startsWith("./src")
249
- || relativePath.startsWith("./examples")) {
250
- type = "application";
251
- }
252
- else {
253
- type = "framework";
254
- }
255
- return {
256
- function: fn,
257
- file: relativePath,
258
- type,
259
- };
260
- }
261
- function extractPrettyStack(stack) {
262
- return stack
263
- .split("\n")
264
- .slice(1)
265
- .map(parseStackFrame)
266
- .filter((frame) => frame !== null);
267
- }
268
- function renderStackFrames(frames) {
269
- if (frames.length === 0) {
270
- return "<li>No stack frames</li>";
271
- }
272
- return frames
273
- .map((f) => `<li><code>${f.function}</code> at <span class="path">${f.file}</span></li>`)
274
- .join("");
275
- }
276
- function renderStackTrace(frames) {
277
- return `
278
- <div class="stack-trace">
279
- <div class="stack-trace-header">Stack Trace (${frames.length})</div>
280
- <ul class="stack-list">${renderStackFrames(frames)}</ul>
281
- </div>
282
- `;
283
- }
284
- function escapeHtml(unsafe) {
285
- return unsafe
286
- .replace(/&/g, "&amp;")
287
- .replace(/</g, "&lt;")
288
- .replace(/>/g, "&gt;")
289
- .replace(/"/g, "&quot;")
290
- .replace(/'/g, "&#039;");
291
- }
292
- function filterSensitiveHeaders(headers) {
293
- const sensitive = ["authorization", "cookie", "x-api-key"];
294
- return Object.fromEntries(Object.entries(headers).filter(([key]) => !sensitive.includes(key.toLowerCase())));
295
- }
296
- function renderRequestContext(context) {
297
- const headersText = Object
298
- .entries(context.headers)
299
- .map(([key, value]) => `${key}: ${value}`)
300
- .join("\n");
301
- const requestText = `${context.method} ${context.url}\n${headersText}`;
302
- return `
303
- <div class="request-info">
304
- <div class="request-info-header">Request</div>
305
- <div class="request-info-content">${escapeHtml(requestText)}</div>
306
- </div>
307
- `;
308
- }
309
- export function handleErrors(app) {
310
- return Effect.gen(function* () {
311
- const request = yield* HttpServerRequest.HttpServerRequest;
312
- const accept = request.headers.accept ?? "";
313
- return yield* app.pipe(Effect.catchAllCause((cause) => renderError(cause, accept)));
314
- });
315
- }
316
- export const withErrorHandled = HttpMiddleware.make(app => Effect.gen(function* () {
317
- const request = yield* HttpServerRequest.HttpServerRequest;
318
- const accept = request.headers.accept ?? "";
319
- return yield* app.pipe(Effect.catchAllCause((cause) => renderError(cause, accept)));
320
- }));
@@ -1,3 +0,0 @@
1
- import * as HttpServerRequest from "@effect/platform/HttpServerRequest";
2
- export type FetchHandler = (request: Request) => Promise<Response>;
3
- export declare function makeUrlFromRequest(request: HttpServerRequest.HttpServerRequest): URL;
package/dist/HttpUtils.js DELETED
@@ -1,11 +0,0 @@
1
- export function makeUrlFromRequest(request) {
2
- const origin = request.headers.origin
3
- ?? request.headers.host
4
- ?? "http://localhost";
5
- const protocol = request.headers["x-forwarded-proto"] ?? "http";
6
- const host = request.headers.host ?? "localhost";
7
- const base = origin.startsWith("http")
8
- ? origin
9
- : `${protocol}://${host}`;
10
- return new URL(request.url, base);
11
- }
@@ -1,134 +0,0 @@
1
- export type PathPattern = `/${string}`;
2
- export type Segments<Path extends string> = Path extends `/${infer Rest}` ? Segments<Rest> : Path extends `${infer Head}/${infer Tail}` ? [Head, ...Segments<Tail>] : Path extends "" ? [] : [Path];
3
- export type Params<T extends string> = string extends T ? Record<string, string> : T extends `${infer _Start}:${infer Param}?/${infer Rest}` ? {
4
- [K in Param]?: string;
5
- } & Params<`/${Rest}`> : T extends `${infer _Start}:${infer Param}/${infer Rest}` ? {
6
- [K in Param]: string;
7
- } & Params<`/${Rest}`> : T extends `${infer _Start}:${infer Param}+` ? {
8
- [K in Param]: string;
9
- } : T extends `${infer _Start}:${infer Param}*` ? {
10
- [K in Param]?: string;
11
- } : T extends `${infer _Start}:${infer Param}?` ? {
12
- [K in Param]?: string;
13
- } : T extends `${infer _Start}:${infer Param}` ? {
14
- [K in Param]: string;
15
- } : {};
16
- export type ValidateResult = {
17
- ok: true;
18
- segments: Array<string>;
19
- } | {
20
- ok: false;
21
- error: string;
22
- };
23
- export declare function validate(path: string): ValidateResult;
24
- export declare function match(pattern: string, path: string): Record<string, string> | null;
25
- export declare function toRegex(path: string): RegExp;
26
- /**
27
- * Converts to Express path pattern.
28
- *
29
- * @see https://expressjs.com/en/guide/routing.html
30
- *
31
- * - `:param` → `:param`
32
- * - `:param?` → `{/:param}`
33
- * - `:param+` → `/*param`
34
- * - `:param*` → `/`, `/*param`
35
- */
36
- export declare function toExpress(path: string): Array<string>;
37
- /**
38
- * Converts to URLPattern path pattern.
39
- *
40
- * @see https://developer.mozilla.org/en-US/docs/Web/API/URL_Pattern_API
41
- *
42
- * - `:param` → `:param`
43
- * - `:param?` → `:param?`
44
- * - `:param+` → `:param+`
45
- * - `:param*` → `:param*`
46
- */
47
- export declare function toURLPattern(path: string): Array<string>;
48
- /**
49
- * Converts to React Router path pattern.
50
- *
51
- * @see https://reactrouter.com/start/framework/routing
52
- *
53
- * - `:param` → `:param`
54
- * - `:param?` → `:param?`
55
- * - `:param+` → `*` (splat, required)
56
- * - `:param*` → `/`, `/*` (splat, optional - two routes)
57
- */
58
- export declare function toReactRouter(path: string): Array<string>;
59
- /**
60
- * Alias for toReactRouter.
61
- *
62
- * @see https://reactrouter.com/start/framework/routing
63
- */
64
- export declare const toRemix: typeof toReactRouter;
65
- /**
66
- * Converts to Remix file-based route naming convention.
67
- *
68
- * Returns a file path segment (without extension) for Remix's
69
- * flat file routing convention.
70
- *
71
- * @see https://remix.run/docs/file-conventions/routes
72
- *
73
- * - `:param` → `$param`
74
- * - `:param?` → `($param)`
75
- * - `:param+` → `$` (splat)
76
- * - `:param*` → `($)` (optional splat) - Note: not officially supported
77
- */
78
- export declare function toRemixFile(path: string): string;
79
- /**
80
- * Converts to TanStack Router path/file pattern.
81
- *
82
- * TanStack uses the same `$param` syntax for both route paths and file names.
83
- * Returns a dot-separated file name (without extension).
84
- *
85
- * @see https://tanstack.com/router/v1/docs/framework/react/guide/path-params
86
- * @see https://tanstack.com/router/v1/docs/framework/react/routing/file-naming-conventions
87
- *
88
- * - `:param` → `$param`
89
- * - `:param?` → `{-$param}` (optional segment)
90
- * - `:param+` → `$` (splat)
91
- * - `:param*` → `$` (splat, optional not supported - treated as required)
92
- */
93
- export declare function toTanStack(path: string): string;
94
- /**
95
- * Converts to Hono path pattern.
96
- *
97
- * Hono uses unnamed wildcards - they are NOT accessible via c.req.param().
98
- * Use c.req.path to access the matched path for wildcard routes.
99
- *
100
- * @see https://hono.dev/docs/api/routing
101
- *
102
- * - `:param` → `:param`
103
- * - `:param?` → `:param?`
104
- * - `:param+` → `*` (unnamed, required)
105
- * - `:param*` → `/`, `/*` (unnamed, optional - two routes)
106
- */
107
- export declare function toHono(path: string): Array<string>;
108
- /**
109
- * Converts to Effect HttpRouter / find-my-way path pattern.
110
- *
111
- * Effect uses colon-style params with unnamed wildcards.
112
- *
113
- * @see https://effect.website/docs/platform/http-router
114
- *
115
- * - `:param` → `:param`
116
- * - `:param?` → `:param?`
117
- * - `:param+` → `*` (unnamed)
118
- * - `:param*` → `/`, `/*` (two routes)
119
- */
120
- export declare function toEffect(path: string): Array<string>;
121
- /**
122
- * Converts to Bun.serve path pattern.
123
- *
124
- * Since Bun doesn't support optional params (`:param?`), optional segments
125
- * are expanded into multiple routes.
126
- *
127
- * @see https://bun.sh/docs/api/http#routing
128
- *
129
- * - `:param` → `:param`
130
- * - `:param?` → `/`, `/:param` (two routes)
131
- * - `:param+` → `/*`
132
- * - `:param*` → `/`, `/*` (two routes)
133
- */
134
- export declare function toBun(path: string): Array<PathPattern>;