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,70 +1,132 @@
1
1
  /*
2
2
  * Adapted from @effect/platform
3
3
  */
4
- import * as Brand from "effect/Brand";
5
- import * as Channel from "effect/Channel";
6
- import * as Chunk from "effect/Chunk";
7
- import * as Context from "effect/Context";
8
- import * as Data from "effect/Data";
9
- import * as Effect from "effect/Effect";
10
- import * as Function from "effect/Function";
11
- import * as Option from "effect/Option";
12
- import * as Sink from "effect/Sink";
13
- import * as Stream from "effect/Stream";
14
- import * as PlatformError from "./PlatformError.js";
15
- export const FileSystem = Context.GenericTag("@effect/platform/FileSystem");
16
- export const Size = (bytes) => typeof bytes === "bigint" ? bytes : BigInt(bytes);
17
- export const FileTypeId = Symbol.for("@effect/platform/FileSystem/File");
18
- export const FileDescriptor = Brand.nominal();
19
- export const WatchEventCreate = Data.tagged("Create");
20
- export const WatchEventUpdate = Data.tagged("Update");
21
- export const WatchEventRemove = Data.tagged("Remove");
22
- export class WatchBackend extends Context.Tag("@effect/platform/FileSystem/WatchBackend")() {
23
- }
24
- export const make = (impl) => {
25
- return FileSystem.of({
26
- ...impl,
27
- exists: (path) => Function.pipe(impl.access(path), Effect.as(true), Effect.catchTag("SystemError", (e) => e.reason === "NotFound" ? Effect.succeed(false) : Effect.fail(e))),
28
- readFileString: (path, encoding) => Effect.tryMap(impl.readFile(path), {
29
- try: (_) => new TextDecoder(encoding).decode(_),
30
- catch: (cause) => new PlatformError.BadArgument({
31
- module: "FileSystem",
32
- method: "readFileString",
33
- description: "invalid encoding",
34
- cause,
4
+ import * as Brand from "effect/Brand"
5
+ import * as Channel from "effect/Channel"
6
+ import * as Chunk from "effect/Chunk"
7
+ import * as Context from "effect/Context"
8
+ import * as Data from "effect/Data"
9
+ import * as Effect from "effect/Effect"
10
+ import * as Function from "effect/Function"
11
+ import * as Option from "effect/Option"
12
+ import * as Sink from "effect/Sink"
13
+ import * as Stream from "effect/Stream"
14
+ import * as PlatformError from "./PlatformError.js"
15
+
16
+ export const FileSystem = Context.GenericTag(
17
+ "@effect/platform/FileSystem",
18
+ )
19
+
20
+ export const Size = (bytes) =>
21
+ typeof bytes === "bigint" ? (bytes) : (BigInt(bytes))
22
+
23
+ export const FileTypeId = Symbol.for("@effect/platform/FileSystem/File")
24
+
25
+ export const FileDescriptor = Brand.nominal()
26
+
27
+ export const WatchEventCreate =
28
+ Data.tagged("Create")
29
+
30
+ export const WatchEventUpdate =
31
+ Data.tagged("Update")
32
+
33
+ export const WatchEventRemove =
34
+ Data.tagged("Remove")
35
+
36
+ export class WatchBackend extends Context.Tag("@effect/platform/FileSystem/WatchBackend")() {}
37
+
38
+ export const make = (
39
+ impl,
40
+ ) => {
41
+ return FileSystem.of({
42
+ ...impl,
43
+ exists: (path) =>
44
+ Function.pipe(
45
+ impl.access(path),
46
+ Effect.as(true),
47
+ Effect.catchTag("SystemError", (e) =>
48
+ e.reason === "NotFound" ? Effect.succeed(false) : Effect.fail(e),
49
+ ),
50
+ ),
51
+ readFileString: (path, encoding) =>
52
+ Effect.tryMap(impl.readFile(path), {
53
+ try: (_) => new TextDecoder(encoding).decode(_),
54
+ catch: (cause) =>
55
+ new PlatformError.BadArgument({
56
+ module: "FileSystem",
57
+ method: "readFileString",
58
+ description: "invalid encoding",
59
+ cause,
60
+ }),
61
+ }),
62
+ stream: (path, options) =>
63
+ Function.pipe(
64
+ impl.open(path, { flag: "r" }),
65
+ options?.offset
66
+ ? Effect.tap((file) => file.seek(options.offset, "start"))
67
+ : Function.identity,
68
+ Effect.map((file) => fileStream(file, options)),
69
+ Stream.unwrapScoped,
70
+ ),
71
+ sink: (path, options) =>
72
+ Function.pipe(
73
+ impl.open(path, { flag: "w", ...options }),
74
+ Effect.map((file) => Sink.forEach((_) => file.writeAll(_))),
75
+ Sink.unwrapScoped,
76
+ ),
77
+ writeFileString: (path, data, options) =>
78
+ Effect.flatMap(
79
+ Effect.try({
80
+ try: () => new TextEncoder().encode(data),
81
+ catch: (cause) =>
82
+ new PlatformError.BadArgument({
83
+ module: "FileSystem",
84
+ method: "writeFileString",
85
+ description: "could not encode string",
86
+ cause,
35
87
  }),
36
88
  }),
37
- stream: (path, options) => Function.pipe(impl.open(path, { flag: "r" }), options?.offset
38
- ? Effect.tap((file) => file.seek(options.offset, "start"))
39
- : Function.identity, Effect.map((file) => fileStream(file, options)), Stream.unwrapScoped),
40
- sink: (path, options) => Function.pipe(impl.open(path, { flag: "w", ...options }), Effect.map((file) => Sink.forEach((_) => file.writeAll(_))), Sink.unwrapScoped),
41
- writeFileString: (path, data, options) => Effect.flatMap(Effect.try({
42
- try: () => new TextEncoder().encode(data),
43
- catch: (cause) => new PlatformError.BadArgument({
44
- module: "FileSystem",
45
- method: "writeFileString",
46
- description: "could not encode string",
47
- cause,
48
- }),
49
- }), (_) => impl.writeFile(path, _, options)),
50
- });
51
- };
52
- const fileStream = (file, { bufferSize = 16, bytesToRead: bytesToRead_, chunkSize: chunkSize_ = Size(64 * 1024), } = {}) => {
53
- const bytesToRead = bytesToRead_ !== undefined ? Size(bytesToRead_) : undefined;
54
- const chunkSize = Size(chunkSize_);
55
- function loop(totalBytesRead) {
56
- if (bytesToRead !== undefined && bytesToRead <= totalBytesRead) {
57
- return Channel.void;
58
- }
59
- const toRead = bytesToRead !== undefined && bytesToRead - totalBytesRead < chunkSize
60
- ? bytesToRead - totalBytesRead
61
- : chunkSize;
62
- return Channel.flatMap(file.readAlloc(toRead), Option.match({
63
- onNone: () => Channel.void,
64
- onSome: (buf) => Channel.flatMap(Channel.write(Chunk.of(buf)), () => loop(totalBytesRead + BigInt(buf.length))),
65
- }));
89
+ (_) => impl.writeFile(path, _, options),
90
+ ),
91
+ })
92
+ }
93
+
94
+ const fileStream = (
95
+ file,
96
+ {
97
+ bufferSize = 16,
98
+ bytesToRead: bytesToRead_,
99
+ chunkSize: chunkSize_ = Size(64 * 1024),
100
+ } = {},
101
+ ) => {
102
+ const bytesToRead = bytesToRead_ !== undefined ? Size(bytesToRead_) : undefined
103
+ const chunkSize = Size(chunkSize_)
104
+
105
+ function loop(
106
+ totalBytesRead,
107
+ ) {
108
+ if (bytesToRead !== undefined && bytesToRead <= totalBytesRead) {
109
+ return Channel.void
66
110
  }
67
- return Stream.bufferChunks(Stream.fromChannel(loop(BigInt(0))), {
68
- capacity: bufferSize,
69
- });
70
- };
111
+
112
+ const toRead =
113
+ bytesToRead !== undefined && bytesToRead - totalBytesRead < chunkSize
114
+ ? bytesToRead - totalBytesRead
115
+ : chunkSize
116
+
117
+ return Channel.flatMap(
118
+ file.readAlloc(toRead),
119
+ Option.match({
120
+ onNone: () => Channel.void,
121
+ onSome: (buf) =>
122
+ Channel.flatMap(Channel.write(Chunk.of(buf)), () =>
123
+ loop(totalBytesRead + BigInt(buf.length)),
124
+ ),
125
+ }),
126
+ )
127
+ }
128
+
129
+ return Stream.bufferChunks(Stream.fromChannel(loop(BigInt(0))), {
130
+ capacity: bufferSize,
131
+ })
132
+ }
package/dist/Http.js CHANGED
@@ -1,88 +1,107 @@
1
- import * as Values from "./Values.js";
2
- export function fetch(handler, init) {
3
- const url = "path" in init ? `http://localhost${init.path}` : init.url;
4
- const isPlain = Values.isPlainObject(init.body);
5
- const headers = new Headers(init.headers);
6
- if (isPlain && !headers.has("Content-Type")) {
7
- headers.set("Content-Type", "application/json");
8
- }
9
- const body = isPlain ? JSON.stringify(init.body) : init.body;
10
- const request = new Request(url, {
11
- ...init,
12
- headers,
13
- body: body,
14
- });
15
- return Promise.resolve(handler(request));
1
+ import * as Values from "./Values.js"
2
+
3
+ export function fetch(
4
+ handler,
5
+ init,
6
+ ) {
7
+ const url = "path" in init ? `http://localhost${init.path}` : init.url
8
+
9
+ const isPlain = Values.isPlainObject(init.body)
10
+
11
+ const headers = new Headers(init.headers)
12
+ if (isPlain && !headers.has("Content-Type")) {
13
+ headers.set("Content-Type", "application/json")
14
+ }
15
+
16
+ const body = isPlain ? JSON.stringify(init.body) : init.body
17
+
18
+ const request = new Request(url, {
19
+ ...init,
20
+ headers,
21
+ body: body,
22
+ })
23
+ return Promise.resolve(handler(request))
16
24
  }
17
- export function createAbortableRequest(init) {
18
- const url = "path" in init ? `http://localhost${init.path}` : init.url;
19
- const controller = new AbortController();
20
- const request = new Request(url, { ...init, signal: controller.signal });
21
- return { request, abort: () => controller.abort() };
25
+
26
+ export function createAbortableRequest(
27
+ init,
28
+ ) {
29
+ const url = "path" in init ? `http://localhost${init.path}` : init.url
30
+ const controller = new AbortController()
31
+ const request = new Request(url, { ...init, signal: controller.signal })
32
+ return { request, abort: () => controller.abort() }
22
33
  }
34
+
23
35
  export function mapHeaders(headers) {
24
- const result = {};
25
- headers.forEach((value, key) => {
26
- result[key.toLowerCase()] = value;
27
- });
28
- return result;
36
+ const result = {}
37
+ headers.forEach((value, key) => {
38
+ result[key.toLowerCase()] = value
39
+ })
40
+ return result
29
41
  }
42
+
30
43
  export function parseCookies(cookieHeader) {
31
- if (!cookieHeader)
32
- return {};
33
- const result = {};
34
- for (const part of cookieHeader.split(";")) {
35
- const idx = part.indexOf("=");
36
- if (idx === -1) {
37
- // Cookie without value (e.g., "name" or just whitespace)
38
- const key = part.trim();
39
- if (key) {
40
- result[key] = undefined;
41
- }
42
- }
43
- else {
44
- const key = part.slice(0, idx).trim();
45
- const value = part.slice(idx + 1).trim();
46
- if (key) {
47
- result[key] = value;
48
- }
49
- }
44
+ if (!cookieHeader) return {}
45
+ const result = {}
46
+ for (const part of cookieHeader.split(";")) {
47
+ const idx = part.indexOf("=")
48
+ if (idx === -1) {
49
+ // Cookie without value (e.g., "name" or just whitespace)
50
+ const key = part.trim()
51
+ if (key) {
52
+ result[key] = undefined
53
+ }
54
+ } else {
55
+ const key = part.slice(0, idx).trim()
56
+ const value = part.slice(idx + 1).trim()
57
+ if (key) {
58
+ result[key] = value
59
+ }
50
60
  }
51
- return result;
61
+ }
62
+ return result
52
63
  }
53
- export function mapUrlSearchParams(params) {
54
- const result = {};
55
- for (const key of new Set(params.keys())) {
56
- const values = params.getAll(key);
57
- result[key] = values.length === 1 ? values[0] : values;
58
- }
59
- return result;
64
+
65
+ export function mapUrlSearchParams(
66
+ params,
67
+ ) {
68
+ const result = {}
69
+ for (const key of new Set(params.keys())) {
70
+ const values = params.getAll(key)
71
+ result[key] = values.length === 1 ? values[0] : values
72
+ }
73
+ return result
60
74
  }
61
- export async function parseFormData(request) {
62
- const formData = await request.formData();
63
- const result = {};
64
- for (const key of new Set(formData.keys())) {
65
- const values = formData.getAll(key);
66
- const first = values[0];
67
- if (typeof first === "string") {
68
- result[key] = values.length === 1 ? first : values;
69
- }
70
- else {
71
- const files = [];
72
- for (const value of values) {
73
- if (typeof value !== "string") {
74
- const content = new Uint8Array(await value.arrayBuffer());
75
- files.push({
76
- _tag: "File",
77
- key,
78
- name: value.name,
79
- contentType: value.type || "application/octet-stream",
80
- content,
81
- });
82
- }
83
- }
84
- result[key] = files;
75
+
76
+ export async function parseFormData(
77
+ request,
78
+ ) {
79
+ const formData = await request.formData()
80
+ const result = {}
81
+
82
+ for (const key of new Set(formData.keys())) {
83
+ const values = formData.getAll(key)
84
+ const first = values[0]
85
+
86
+ if (typeof first === "string") {
87
+ result[key] = values.length === 1 ? first : (values)
88
+ } else {
89
+ const files = []
90
+ for (const value of values) {
91
+ if (typeof value !== "string") {
92
+ const content = new Uint8Array(await value.arrayBuffer())
93
+ files.push({
94
+ _tag: "File",
95
+ key,
96
+ name: value.name,
97
+ contentType: value.type || "application/octet-stream",
98
+ content,
99
+ })
85
100
  }
101
+ }
102
+ result[key] = files
86
103
  }
87
- return result;
104
+ }
105
+
106
+ return result
88
107
  }