@effect/platform-node 0.104.0 → 4.0.0-beta.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 (321) hide show
  1. package/dist/Mime.d.ts +15 -0
  2. package/dist/Mime.d.ts.map +1 -0
  3. package/dist/Mime.js +16 -0
  4. package/dist/Mime.js.map +1 -0
  5. package/dist/NodeChildProcessSpawner.d.ts +7 -0
  6. package/dist/NodeChildProcessSpawner.d.ts.map +1 -0
  7. package/dist/NodeChildProcessSpawner.js +7 -0
  8. package/dist/NodeChildProcessSpawner.js.map +1 -0
  9. package/dist/NodeClusterHttp.d.ts +44 -0
  10. package/dist/NodeClusterHttp.d.ts.map +1 -0
  11. package/dist/{esm/NodeClusterHttp.js → NodeClusterHttp.js} +14 -18
  12. package/dist/NodeClusterHttp.js.map +1 -0
  13. package/dist/{dts/NodeClusterSocket.d.ts → NodeClusterSocket.d.ts} +13 -13
  14. package/dist/NodeClusterSocket.d.ts.map +1 -0
  15. package/dist/{esm/NodeClusterSocket.js → NodeClusterSocket.js} +13 -13
  16. package/dist/NodeClusterSocket.js.map +1 -0
  17. package/dist/NodeFileSystem.d.ts +8 -0
  18. package/dist/NodeFileSystem.d.ts.map +1 -0
  19. package/dist/NodeFileSystem.js.map +1 -0
  20. package/dist/NodeHttpClient.d.ts +110 -0
  21. package/dist/NodeHttpClient.d.ts.map +1 -0
  22. package/dist/NodeHttpClient.js +446 -0
  23. package/dist/NodeHttpClient.js.map +1 -0
  24. package/dist/NodeHttpIncomingMessage.d.ts +35 -0
  25. package/dist/NodeHttpIncomingMessage.d.ts.map +1 -0
  26. package/dist/NodeHttpIncomingMessage.js +77 -0
  27. package/dist/NodeHttpIncomingMessage.js.map +1 -0
  28. package/dist/NodeHttpPlatform.d.ts +26 -0
  29. package/dist/NodeHttpPlatform.d.ts.map +1 -0
  30. package/dist/{esm/internal/httpPlatform.js → NodeHttpPlatform.js} +20 -11
  31. package/dist/NodeHttpPlatform.js.map +1 -0
  32. package/dist/NodeHttpServer.d.ts +73 -0
  33. package/dist/NodeHttpServer.d.ts.map +1 -0
  34. package/dist/NodeHttpServer.js +376 -0
  35. package/dist/NodeHttpServer.js.map +1 -0
  36. package/dist/NodeHttpServerRequest.d.ts +16 -0
  37. package/dist/NodeHttpServerRequest.d.ts.map +1 -0
  38. package/dist/NodeHttpServerRequest.js +14 -0
  39. package/dist/NodeHttpServerRequest.js.map +1 -0
  40. package/dist/NodeMultipart.d.ts +26 -0
  41. package/dist/NodeMultipart.d.ts.map +1 -0
  42. package/dist/NodeMultipart.js +131 -0
  43. package/dist/NodeMultipart.js.map +1 -0
  44. package/dist/NodePath.d.ts +18 -0
  45. package/dist/NodePath.d.ts.map +1 -0
  46. package/dist/NodePath.js.map +1 -0
  47. package/dist/NodeRedis.d.ts +31 -0
  48. package/dist/NodeRedis.d.ts.map +1 -0
  49. package/dist/NodeRedis.js +51 -0
  50. package/dist/NodeRedis.js.map +1 -0
  51. package/dist/NodeRuntime.d.ts +94 -0
  52. package/dist/NodeRuntime.d.ts.map +1 -0
  53. package/dist/NodeRuntime.js +33 -0
  54. package/dist/NodeRuntime.js.map +1 -0
  55. package/dist/NodeServices.d.ts +20 -0
  56. package/dist/NodeServices.d.ts.map +1 -0
  57. package/dist/NodeServices.js +12 -0
  58. package/dist/NodeServices.js.map +1 -0
  59. package/dist/NodeSink.d.ts.map +1 -0
  60. package/dist/NodeSink.js.map +1 -0
  61. package/dist/NodeSocket.d.ts +23 -0
  62. package/dist/NodeSocket.d.ts.map +1 -0
  63. package/dist/{esm/NodeSocket.js → NodeSocket.js} +9 -8
  64. package/dist/NodeSocket.js.map +1 -0
  65. package/dist/NodeSocketServer.d.ts.map +1 -0
  66. package/dist/NodeSocketServer.js.map +1 -0
  67. package/dist/NodeStdio.d.ts +8 -0
  68. package/dist/NodeStdio.d.ts.map +1 -0
  69. package/dist/NodeStdio.js +10 -0
  70. package/dist/NodeStdio.js.map +1 -0
  71. package/dist/{dts/NodeStream.d.ts → NodeStream.d.ts} +1 -1
  72. package/dist/NodeStream.d.ts.map +1 -0
  73. package/dist/{esm/NodeStream.js → NodeStream.js} +1 -1
  74. package/dist/NodeStream.js.map +1 -0
  75. package/dist/{dts/NodeTerminal.d.ts → NodeTerminal.d.ts} +2 -2
  76. package/dist/NodeTerminal.d.ts.map +1 -0
  77. package/dist/{esm/NodeTerminal.js → NodeTerminal.js} +1 -1
  78. package/dist/NodeTerminal.js.map +1 -0
  79. package/dist/NodeWorker.d.ts +15 -0
  80. package/dist/NodeWorker.d.ts.map +1 -0
  81. package/dist/NodeWorker.js +81 -0
  82. package/dist/NodeWorker.js.map +1 -0
  83. package/dist/NodeWorkerRunner.d.ts +8 -0
  84. package/dist/NodeWorkerRunner.d.ts.map +1 -0
  85. package/dist/NodeWorkerRunner.js +85 -0
  86. package/dist/NodeWorkerRunner.js.map +1 -0
  87. package/dist/{dts/Undici.d.ts → Undici.d.ts} +3 -3
  88. package/dist/Undici.d.ts.map +1 -0
  89. package/dist/{esm/Undici.js → Undici.js} +3 -3
  90. package/dist/Undici.js.map +1 -0
  91. package/dist/index.d.ts +102 -0
  92. package/dist/index.d.ts.map +1 -0
  93. package/dist/{esm/index.js → index.js} +25 -7
  94. package/dist/index.js.map +1 -0
  95. package/package.json +60 -213
  96. package/src/Mime.ts +18 -0
  97. package/src/NodeChildProcessSpawner.ts +6 -0
  98. package/src/NodeClusterHttp.ts +33 -35
  99. package/src/NodeClusterSocket.ts +23 -24
  100. package/src/NodeFileSystem.ts +3 -3
  101. package/src/NodeHttpClient.ts +506 -70
  102. package/src/NodeHttpIncomingMessage.ts +105 -0
  103. package/src/NodeHttpPlatform.ts +44 -10
  104. package/src/NodeHttpServer.ts +539 -102
  105. package/src/NodeHttpServerRequest.ts +8 -8
  106. package/src/NodeMultipart.ts +156 -1
  107. package/src/NodePath.ts +5 -6
  108. package/src/NodeRedis.ts +74 -0
  109. package/src/NodeRuntime.ts +95 -3
  110. package/src/NodeServices.ts +34 -0
  111. package/src/NodeSocket.ts +24 -16
  112. package/src/NodeStdio.ts +12 -0
  113. package/src/NodeStream.ts +1 -1
  114. package/src/NodeTerminal.ts +2 -2
  115. package/src/NodeWorker.ts +89 -20
  116. package/src/NodeWorkerRunner.ts +89 -12
  117. package/src/Undici.ts +7 -7
  118. package/src/index.ts +44 -21
  119. package/NodeClusterHttp/package.json +0 -6
  120. package/NodeClusterSocket/package.json +0 -6
  121. package/NodeCommandExecutor/package.json +0 -6
  122. package/NodeContext/package.json +0 -6
  123. package/NodeFileSystem/ParcelWatcher/package.json +0 -6
  124. package/NodeFileSystem/package.json +0 -6
  125. package/NodeHttpClient/package.json +0 -6
  126. package/NodeHttpPlatform/package.json +0 -6
  127. package/NodeHttpServer/package.json +0 -6
  128. package/NodeHttpServerRequest/package.json +0 -6
  129. package/NodeKeyValueStore/package.json +0 -6
  130. package/NodeMultipart/package.json +0 -6
  131. package/NodePath/package.json +0 -6
  132. package/NodeRuntime/package.json +0 -6
  133. package/NodeSink/package.json +0 -6
  134. package/NodeSocket/package.json +0 -6
  135. package/NodeSocketServer/package.json +0 -6
  136. package/NodeStream/package.json +0 -6
  137. package/NodeTerminal/package.json +0 -6
  138. package/NodeWorker/package.json +0 -6
  139. package/NodeWorkerRunner/package.json +0 -6
  140. package/Undici/package.json +0 -6
  141. package/dist/cjs/NodeClusterHttp.js +0 -61
  142. package/dist/cjs/NodeClusterHttp.js.map +0 -1
  143. package/dist/cjs/NodeClusterSocket.js +0 -77
  144. package/dist/cjs/NodeClusterSocket.js.map +0 -1
  145. package/dist/cjs/NodeCommandExecutor.js +0 -18
  146. package/dist/cjs/NodeCommandExecutor.js.map +0 -1
  147. package/dist/cjs/NodeContext.js +0 -24
  148. package/dist/cjs/NodeContext.js.map +0 -1
  149. package/dist/cjs/NodeFileSystem/ParcelWatcher.js +0 -18
  150. package/dist/cjs/NodeFileSystem/ParcelWatcher.js.map +0 -1
  151. package/dist/cjs/NodeFileSystem.js +0 -18
  152. package/dist/cjs/NodeFileSystem.js.map +0 -1
  153. package/dist/cjs/NodeHttpClient.js +0 -92
  154. package/dist/cjs/NodeHttpClient.js.map +0 -1
  155. package/dist/cjs/NodeHttpPlatform.js +0 -19
  156. package/dist/cjs/NodeHttpPlatform.js.map +0 -1
  157. package/dist/cjs/NodeHttpServer.js +0 -68
  158. package/dist/cjs/NodeHttpServer.js.map +0 -1
  159. package/dist/cjs/NodeHttpServerRequest.js +0 -19
  160. package/dist/cjs/NodeHttpServerRequest.js.map +0 -1
  161. package/dist/cjs/NodeKeyValueStore.js +0 -18
  162. package/dist/cjs/NodeKeyValueStore.js.map +0 -1
  163. package/dist/cjs/NodeMultipart.js +0 -17
  164. package/dist/cjs/NodeMultipart.js.map +0 -1
  165. package/dist/cjs/NodePath.js +0 -28
  166. package/dist/cjs/NodePath.js.map +0 -1
  167. package/dist/cjs/NodeRuntime.js +0 -18
  168. package/dist/cjs/NodeRuntime.js.map +0 -1
  169. package/dist/cjs/NodeSink.js +0 -17
  170. package/dist/cjs/NodeSink.js.map +0 -1
  171. package/dist/cjs/NodeSocket.js +0 -51
  172. package/dist/cjs/NodeSocket.js.map +0 -1
  173. package/dist/cjs/NodeSocketServer.js +0 -17
  174. package/dist/cjs/NodeSocketServer.js.map +0 -1
  175. package/dist/cjs/NodeStream.js +0 -17
  176. package/dist/cjs/NodeStream.js.map +0 -1
  177. package/dist/cjs/NodeTerminal.js +0 -23
  178. package/dist/cjs/NodeTerminal.js.map +0 -1
  179. package/dist/cjs/NodeWorker.js +0 -29
  180. package/dist/cjs/NodeWorker.js.map +0 -1
  181. package/dist/cjs/NodeWorkerRunner.js +0 -21
  182. package/dist/cjs/NodeWorkerRunner.js.map +0 -1
  183. package/dist/cjs/Undici.js +0 -26
  184. package/dist/cjs/Undici.js.map +0 -1
  185. package/dist/cjs/index.js +0 -50
  186. package/dist/cjs/index.js.map +0 -1
  187. package/dist/cjs/internal/httpClient.js +0 -196
  188. package/dist/cjs/internal/httpClient.js.map +0 -1
  189. package/dist/cjs/internal/httpClientUndici.js +0 -194
  190. package/dist/cjs/internal/httpClientUndici.js.map +0 -1
  191. package/dist/cjs/internal/httpIncomingMessage.js +0 -74
  192. package/dist/cjs/internal/httpIncomingMessage.js.map +0 -1
  193. package/dist/cjs/internal/httpPlatform.js +0 -49
  194. package/dist/cjs/internal/httpPlatform.js.map +0 -1
  195. package/dist/cjs/internal/httpServer.js +0 -352
  196. package/dist/cjs/internal/httpServer.js.map +0 -1
  197. package/dist/cjs/internal/worker.js +0 -82
  198. package/dist/cjs/internal/worker.js.map +0 -1
  199. package/dist/cjs/internal/workerRunner.js +0 -83
  200. package/dist/cjs/internal/workerRunner.js.map +0 -1
  201. package/dist/dts/NodeClusterHttp.d.ts +0 -41
  202. package/dist/dts/NodeClusterHttp.d.ts.map +0 -1
  203. package/dist/dts/NodeClusterSocket.d.ts.map +0 -1
  204. package/dist/dts/NodeCommandExecutor.d.ts +0 -9
  205. package/dist/dts/NodeCommandExecutor.d.ts.map +0 -1
  206. package/dist/dts/NodeContext.d.ts +0 -17
  207. package/dist/dts/NodeContext.d.ts.map +0 -1
  208. package/dist/dts/NodeFileSystem/ParcelWatcher.d.ts +0 -8
  209. package/dist/dts/NodeFileSystem/ParcelWatcher.d.ts.map +0 -1
  210. package/dist/dts/NodeFileSystem.d.ts +0 -8
  211. package/dist/dts/NodeFileSystem.d.ts.map +0 -1
  212. package/dist/dts/NodeHttpClient.d.ts +0 -116
  213. package/dist/dts/NodeHttpClient.d.ts.map +0 -1
  214. package/dist/dts/NodeHttpPlatform.d.ts +0 -19
  215. package/dist/dts/NodeHttpPlatform.d.ts.map +0 -1
  216. package/dist/dts/NodeHttpServer.d.ts +0 -91
  217. package/dist/dts/NodeHttpServer.d.ts.map +0 -1
  218. package/dist/dts/NodeHttpServerRequest.d.ts +0 -16
  219. package/dist/dts/NodeHttpServerRequest.d.ts.map +0 -1
  220. package/dist/dts/NodeKeyValueStore.d.ts +0 -9
  221. package/dist/dts/NodeKeyValueStore.d.ts.map +0 -1
  222. package/dist/dts/NodeMultipart.d.ts +0 -8
  223. package/dist/dts/NodeMultipart.d.ts.map +0 -1
  224. package/dist/dts/NodePath.d.ts +0 -21
  225. package/dist/dts/NodePath.d.ts.map +0 -1
  226. package/dist/dts/NodeRuntime.d.ts +0 -7
  227. package/dist/dts/NodeRuntime.d.ts.map +0 -1
  228. package/dist/dts/NodeSink.d.ts.map +0 -1
  229. package/dist/dts/NodeSocket.d.ts +0 -22
  230. package/dist/dts/NodeSocket.d.ts.map +0 -1
  231. package/dist/dts/NodeSocketServer.d.ts.map +0 -1
  232. package/dist/dts/NodeStream.d.ts.map +0 -1
  233. package/dist/dts/NodeTerminal.d.ts.map +0 -1
  234. package/dist/dts/NodeWorker.d.ts +0 -28
  235. package/dist/dts/NodeWorker.d.ts.map +0 -1
  236. package/dist/dts/NodeWorkerRunner.d.ts +0 -17
  237. package/dist/dts/NodeWorkerRunner.d.ts.map +0 -1
  238. package/dist/dts/Undici.d.ts.map +0 -1
  239. package/dist/dts/index.d.ts +0 -85
  240. package/dist/dts/index.d.ts.map +0 -1
  241. package/dist/dts/internal/httpClient.d.ts +0 -2
  242. package/dist/dts/internal/httpClient.d.ts.map +0 -1
  243. package/dist/dts/internal/httpClientUndici.d.ts +0 -2
  244. package/dist/dts/internal/httpClientUndici.d.ts.map +0 -1
  245. package/dist/dts/internal/httpIncomingMessage.d.ts +0 -2
  246. package/dist/dts/internal/httpIncomingMessage.d.ts.map +0 -1
  247. package/dist/dts/internal/httpPlatform.d.ts +0 -2
  248. package/dist/dts/internal/httpPlatform.d.ts.map +0 -1
  249. package/dist/dts/internal/httpServer.d.ts +0 -2
  250. package/dist/dts/internal/httpServer.d.ts.map +0 -1
  251. package/dist/dts/internal/worker.d.ts +0 -2
  252. package/dist/dts/internal/worker.d.ts.map +0 -1
  253. package/dist/dts/internal/workerRunner.d.ts +0 -2
  254. package/dist/dts/internal/workerRunner.d.ts.map +0 -1
  255. package/dist/esm/NodeClusterHttp.js.map +0 -1
  256. package/dist/esm/NodeClusterSocket.js.map +0 -1
  257. package/dist/esm/NodeCommandExecutor.js +0 -10
  258. package/dist/esm/NodeCommandExecutor.js.map +0 -1
  259. package/dist/esm/NodeContext.js +0 -16
  260. package/dist/esm/NodeContext.js.map +0 -1
  261. package/dist/esm/NodeFileSystem/ParcelWatcher.js +0 -10
  262. package/dist/esm/NodeFileSystem/ParcelWatcher.js.map +0 -1
  263. package/dist/esm/NodeFileSystem.js.map +0 -1
  264. package/dist/esm/NodeHttpClient.js +0 -84
  265. package/dist/esm/NodeHttpClient.js.map +0 -1
  266. package/dist/esm/NodeHttpPlatform.js +0 -12
  267. package/dist/esm/NodeHttpPlatform.js.map +0 -1
  268. package/dist/esm/NodeHttpServer.js +0 -61
  269. package/dist/esm/NodeHttpServer.js.map +0 -1
  270. package/dist/esm/NodeHttpServerRequest.js +0 -12
  271. package/dist/esm/NodeHttpServerRequest.js.map +0 -1
  272. package/dist/esm/NodeKeyValueStore.js +0 -10
  273. package/dist/esm/NodeKeyValueStore.js.map +0 -1
  274. package/dist/esm/NodeMultipart.js +0 -8
  275. package/dist/esm/NodeMultipart.js.map +0 -1
  276. package/dist/esm/NodePath.js.map +0 -1
  277. package/dist/esm/NodeRuntime.js +0 -10
  278. package/dist/esm/NodeRuntime.js.map +0 -1
  279. package/dist/esm/NodeSink.js.map +0 -1
  280. package/dist/esm/NodeSocket.js.map +0 -1
  281. package/dist/esm/NodeSocketServer.js.map +0 -1
  282. package/dist/esm/NodeStream.js.map +0 -1
  283. package/dist/esm/NodeTerminal.js.map +0 -1
  284. package/dist/esm/NodeWorker.js +0 -22
  285. package/dist/esm/NodeWorker.js.map +0 -1
  286. package/dist/esm/NodeWorkerRunner.js +0 -13
  287. package/dist/esm/NodeWorkerRunner.js.map +0 -1
  288. package/dist/esm/Undici.js.map +0 -1
  289. package/dist/esm/index.js.map +0 -1
  290. package/dist/esm/internal/httpClient.js +0 -187
  291. package/dist/esm/internal/httpClient.js.map +0 -1
  292. package/dist/esm/internal/httpClientUndici.js +0 -186
  293. package/dist/esm/internal/httpClientUndici.js.map +0 -1
  294. package/dist/esm/internal/httpIncomingMessage.js +0 -66
  295. package/dist/esm/internal/httpIncomingMessage.js.map +0 -1
  296. package/dist/esm/internal/httpPlatform.js.map +0 -1
  297. package/dist/esm/internal/httpServer.js +0 -337
  298. package/dist/esm/internal/httpServer.js.map +0 -1
  299. package/dist/esm/internal/worker.js +0 -73
  300. package/dist/esm/internal/worker.js.map +0 -1
  301. package/dist/esm/internal/workerRunner.js +0 -76
  302. package/dist/esm/internal/workerRunner.js.map +0 -1
  303. package/dist/esm/package.json +0 -4
  304. package/index/package.json +0 -6
  305. package/src/NodeCommandExecutor.ts +0 -13
  306. package/src/NodeContext.ts +0 -40
  307. package/src/NodeFileSystem/ParcelWatcher.ts +0 -12
  308. package/src/NodeKeyValueStore.ts +0 -15
  309. package/src/internal/httpClient.ts +0 -260
  310. package/src/internal/httpClientUndici.ts +0 -231
  311. package/src/internal/httpIncomingMessage.ts +0 -92
  312. package/src/internal/httpPlatform.ts +0 -46
  313. package/src/internal/httpServer.ts +0 -517
  314. package/src/internal/worker.ts +0 -86
  315. package/src/internal/workerRunner.ts +0 -77
  316. /package/dist/{esm/NodeFileSystem.js → NodeFileSystem.js} +0 -0
  317. /package/dist/{esm/NodePath.js → NodePath.js} +0 -0
  318. /package/dist/{dts/NodeSink.d.ts → NodeSink.d.ts} +0 -0
  319. /package/dist/{esm/NodeSink.js → NodeSink.js} +0 -0
  320. /package/dist/{dts/NodeSocketServer.d.ts → NodeSocketServer.d.ts} +0 -0
  321. /package/dist/{esm/NodeSocketServer.js → NodeSocketServer.js} +0 -0
@@ -0,0 +1,105 @@
1
+ /**
2
+ * @since 1.0.0
3
+ */
4
+ import * as Effect from "effect/Effect"
5
+ import * as Inspectable from "effect/Inspectable"
6
+ import type * as Stream from "effect/Stream"
7
+ import * as Headers from "effect/unstable/http/Headers"
8
+ import * as IncomingMessage from "effect/unstable/http/HttpIncomingMessage"
9
+ import * as UrlParams from "effect/unstable/http/UrlParams"
10
+ import type * as Http from "node:http"
11
+ import * as NodeStream from "./NodeStream.ts"
12
+
13
+ /**
14
+ * @since 1.0.0
15
+ * @category Constructors
16
+ */
17
+ export abstract class NodeHttpIncomingMessage<E> extends Inspectable.Class
18
+ implements IncomingMessage.HttpIncomingMessage<E>
19
+ {
20
+ /**
21
+ * @since 1.0.0
22
+ */
23
+ readonly [IncomingMessage.TypeId]: typeof IncomingMessage.TypeId
24
+ readonly source: Http.IncomingMessage
25
+ readonly onError: (error: unknown) => E
26
+ readonly remoteAddressOverride?: string | undefined
27
+
28
+ constructor(
29
+ source: Http.IncomingMessage,
30
+ onError: (error: unknown) => E,
31
+ remoteAddressOverride?: string
32
+ ) {
33
+ super()
34
+ this[IncomingMessage.TypeId] = IncomingMessage.TypeId
35
+ this.source = source
36
+ this.onError = onError
37
+ this.remoteAddressOverride = remoteAddressOverride
38
+ }
39
+
40
+ get headers() {
41
+ return Headers.fromInput(this.source.headers as any)
42
+ }
43
+
44
+ get remoteAddress() {
45
+ return this.remoteAddressOverride ?? this.source.socket.remoteAddress
46
+ }
47
+
48
+ private textEffect: Effect.Effect<string, E> | undefined
49
+ get text(): Effect.Effect<string, E> {
50
+ if (this.textEffect) {
51
+ return this.textEffect
52
+ }
53
+ this.textEffect = Effect.runSync(Effect.cached(
54
+ Effect.flatMap(
55
+ IncomingMessage.MaxBodySize.asEffect(),
56
+ (maxBodySize) =>
57
+ NodeStream.toString(() => this.source, {
58
+ onError: this.onError,
59
+ maxBytes: maxBodySize
60
+ })
61
+ )
62
+ ))
63
+ return this.textEffect
64
+ }
65
+
66
+ get textUnsafe(): string {
67
+ return Effect.runSync(this.text)
68
+ }
69
+
70
+ get json(): Effect.Effect<unknown, E> {
71
+ return Effect.flatMap(this.text, (text) =>
72
+ Effect.try({
73
+ try: () => text === "" ? null : JSON.parse(text) as unknown,
74
+ catch: this.onError
75
+ }))
76
+ }
77
+
78
+ get jsonUnsafe(): unknown {
79
+ return Effect.runSync(this.json)
80
+ }
81
+
82
+ get urlParamsBody(): Effect.Effect<UrlParams.UrlParams, E> {
83
+ return Effect.flatMap(this.text, (_) =>
84
+ Effect.try({
85
+ try: () => UrlParams.fromInput(new URLSearchParams(_)),
86
+ catch: this.onError
87
+ }))
88
+ }
89
+
90
+ get stream(): Stream.Stream<Uint8Array, E> {
91
+ return NodeStream.fromReadable({
92
+ evaluate: () => this.source,
93
+ onError: this.onError
94
+ })
95
+ }
96
+
97
+ get arrayBuffer(): Effect.Effect<ArrayBuffer, E> {
98
+ return Effect.withFiber((fiber) =>
99
+ NodeStream.toArrayBuffer(() => this.source, {
100
+ onError: this.onError,
101
+ maxBytes: fiber.getRef(IncomingMessage.MaxBodySize)
102
+ })
103
+ )
104
+ }
105
+ }
@@ -1,21 +1,55 @@
1
1
  /**
2
2
  * @since 1.0.0
3
3
  */
4
- import type * as Etag from "@effect/platform/Etag"
5
- import type * as FileSystem from "@effect/platform/FileSystem"
6
- import type * as Platform from "@effect/platform/HttpPlatform"
7
- import type * as Effect from "effect/Effect"
8
- import type * as Layer from "effect/Layer"
9
- import * as internal from "./internal/httpPlatform.js"
4
+ import { pipe } from "effect/Function"
5
+ import * as Layer from "effect/Layer"
6
+ import * as EtagImpl from "effect/unstable/http/Etag"
7
+ import * as Headers from "effect/unstable/http/Headers"
8
+ import * as Platform from "effect/unstable/http/HttpPlatform"
9
+ import * as ServerResponse from "effect/unstable/http/HttpServerResponse"
10
+ import * as Fs from "node:fs"
11
+ import { Readable } from "node:stream"
12
+ import Mime from "./Mime.ts"
13
+ import * as NodeFileSystem from "./NodeFileSystem.ts"
10
14
 
11
15
  /**
12
16
  * @since 1.0.0
13
- * @category constructors
17
+ * @category Constructors
14
18
  */
15
- export const make: Effect.Effect<Platform.HttpPlatform, never, FileSystem.FileSystem | Etag.Generator> = internal.make
19
+ export const make = Platform.make({
20
+ fileResponse(path, status, statusText, headers, start, end, contentLength) {
21
+ const stream = Fs.createReadStream(path, { start, end })
22
+ return ServerResponse.raw(stream, {
23
+ headers: {
24
+ ...headers,
25
+ "content-type": headers["content-type"] ?? Mime.getType(path) ?? "application/octet-stream",
26
+ "content-length": contentLength.toString()
27
+ },
28
+ status,
29
+ statusText
30
+ })
31
+ },
32
+ fileWebResponse(file, status, statusText, headers, _options) {
33
+ return ServerResponse.raw(Readable.fromWeb(file.stream() as any), {
34
+ headers: Headers.merge(
35
+ headers,
36
+ Headers.fromRecordUnsafe({
37
+ "content-type": headers["content-type"] ?? Mime.getType(file.name) ?? "application/octet-stream",
38
+ "content-length": file.size.toString()
39
+ })
40
+ ),
41
+ status,
42
+ statusText
43
+ })
44
+ }
45
+ })
16
46
 
17
47
  /**
18
48
  * @since 1.0.0
19
- * @category layers
49
+ * @category Layers
20
50
  */
21
- export const layer: Layer.Layer<Platform.HttpPlatform> = internal.layer
51
+ export const layer: Layer.Layer<Platform.HttpPlatform> = pipe(
52
+ Layer.effect(Platform.HttpPlatform)(make),
53
+ Layer.provide(NodeFileSystem.layer),
54
+ Layer.provide(EtagImpl.layer)
55
+ )