@fncts/http 0.0.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 (211) hide show
  1. package/Body/api.d.ts +63 -0
  2. package/Body/definition.d.ts +53 -0
  3. package/Body.d.ts +2 -0
  4. package/BodyError.d.ts +30 -0
  5. package/Headers.d.ts +42 -0
  6. package/HttpApp.d.ts +46 -0
  7. package/IncomingMessage/api.d.ts +19 -0
  8. package/IncomingMessage/definition.d.ts +21 -0
  9. package/IncomingMessage.d.ts +2 -0
  10. package/Method.d.ts +2 -0
  11. package/Middleware.d.ts +24 -0
  12. package/QueryParams.d.ts +7 -0
  13. package/RequestError.d.ts +10 -0
  14. package/ResponseError.d.ts +14 -0
  15. package/Route/api.d.ts +37 -0
  16. package/Route/definition.d.ts +35 -0
  17. package/Route/internal.d.ts +17 -0
  18. package/Route.d.ts +2 -0
  19. package/RouteNotFound.d.ts +8 -0
  20. package/Router/api.d.ts +96 -0
  21. package/Router/definition.d.ts +28 -0
  22. package/Router/internal.d.ts +26 -0
  23. package/Router.d.ts +2 -0
  24. package/Server.d.ts +53 -0
  25. package/ServerError.d.ts +9 -0
  26. package/ServerRequest/api.d.ts +6 -0
  27. package/ServerRequest/definition.d.ts +30 -0
  28. package/ServerRequest/internal.d.ts +33 -0
  29. package/ServerRequest.d.ts +2 -0
  30. package/ServerResponse/api.d.ts +69 -0
  31. package/ServerResponse/definition.d.ts +30 -0
  32. package/ServerResponse.d.ts +2 -0
  33. package/Socket.d.ts +107 -0
  34. package/UrlParams.d.ts +21 -0
  35. package/_cjs/Body/api.cjs +93 -0
  36. package/_cjs/Body/api.cjs.map +1 -0
  37. package/_cjs/Body/definition.cjs +71 -0
  38. package/_cjs/Body/definition.cjs.map +1 -0
  39. package/_cjs/Body.cjs +28 -0
  40. package/_cjs/Body.cjs.map +1 -0
  41. package/_cjs/BodyError.cjs +43 -0
  42. package/_cjs/BodyError.cjs.map +1 -0
  43. package/_cjs/Headers.cjs +87 -0
  44. package/_cjs/Headers.cjs.map +1 -0
  45. package/_cjs/HttpApp.cjs +109 -0
  46. package/_cjs/HttpApp.cjs.map +1 -0
  47. package/_cjs/IncomingMessage/api.cjs +35 -0
  48. package/_cjs/IncomingMessage/api.cjs.map +1 -0
  49. package/_cjs/IncomingMessage/definition.cjs +20 -0
  50. package/_cjs/IncomingMessage/definition.cjs.map +1 -0
  51. package/_cjs/IncomingMessage.cjs +28 -0
  52. package/_cjs/IncomingMessage.cjs.map +1 -0
  53. package/_cjs/Method.cjs +10 -0
  54. package/_cjs/Method.cjs.map +1 -0
  55. package/_cjs/Middleware.cjs +16 -0
  56. package/_cjs/Middleware.cjs.map +1 -0
  57. package/_cjs/QueryParams.cjs +6 -0
  58. package/_cjs/QueryParams.cjs.map +1 -0
  59. package/_cjs/RequestError.cjs +19 -0
  60. package/_cjs/RequestError.cjs.map +1 -0
  61. package/_cjs/ResponseError.cjs +27 -0
  62. package/_cjs/ResponseError.cjs.map +1 -0
  63. package/_cjs/Route/api.cjs +61 -0
  64. package/_cjs/Route/api.cjs.map +1 -0
  65. package/_cjs/Route/definition.cjs +35 -0
  66. package/_cjs/Route/definition.cjs.map +1 -0
  67. package/_cjs/Route/internal.cjs +31 -0
  68. package/_cjs/Route/internal.cjs.map +1 -0
  69. package/_cjs/Route.cjs +28 -0
  70. package/_cjs/Route.cjs.map +1 -0
  71. package/_cjs/RouteNotFound.cjs +18 -0
  72. package/_cjs/RouteNotFound.cjs.map +1 -0
  73. package/_cjs/Router/api.cjs +141 -0
  74. package/_cjs/Router/api.cjs.map +1 -0
  75. package/_cjs/Router/definition.cjs +22 -0
  76. package/_cjs/Router/definition.cjs.map +1 -0
  77. package/_cjs/Router/internal.cjs +85 -0
  78. package/_cjs/Router/internal.cjs.map +1 -0
  79. package/_cjs/Router.cjs +28 -0
  80. package/_cjs/Router.cjs.map +1 -0
  81. package/_cjs/Server.cjs +53 -0
  82. package/_cjs/Server.cjs.map +1 -0
  83. package/_cjs/ServerError.cjs +21 -0
  84. package/_cjs/ServerError.cjs.map +1 -0
  85. package/_cjs/ServerRequest/api.cjs +14 -0
  86. package/_cjs/ServerRequest/api.cjs.map +1 -0
  87. package/_cjs/ServerRequest/definition.cjs +29 -0
  88. package/_cjs/ServerRequest/definition.cjs.map +1 -0
  89. package/_cjs/ServerRequest/internal.cjs +77 -0
  90. package/_cjs/ServerRequest/internal.cjs.map +1 -0
  91. package/_cjs/ServerRequest.cjs +28 -0
  92. package/_cjs/ServerRequest.cjs.map +1 -0
  93. package/_cjs/ServerResponse/api.cjs +157 -0
  94. package/_cjs/ServerResponse/api.cjs.map +1 -0
  95. package/_cjs/ServerResponse/definition.cjs +44 -0
  96. package/_cjs/ServerResponse/definition.cjs.map +1 -0
  97. package/_cjs/ServerResponse.cjs +28 -0
  98. package/_cjs/ServerResponse.cjs.map +1 -0
  99. package/_cjs/Socket.cjs +221 -0
  100. package/_cjs/Socket.cjs.map +1 -0
  101. package/_cjs/UrlParams.cjs +34 -0
  102. package/_cjs/UrlParams.cjs.map +1 -0
  103. package/_cjs/global.cjs +6 -0
  104. package/_cjs/global.cjs.map +1 -0
  105. package/_mjs/Body/api.mjs +78 -0
  106. package/_mjs/Body/api.mjs.map +1 -0
  107. package/_mjs/Body/definition.mjs +58 -0
  108. package/_mjs/Body/definition.mjs.map +1 -0
  109. package/_mjs/Body.mjs +5 -0
  110. package/_mjs/Body.mjs.map +1 -0
  111. package/_mjs/BodyError.mjs +33 -0
  112. package/_mjs/BodyError.mjs.map +1 -0
  113. package/_mjs/Headers.mjs +75 -0
  114. package/_mjs/Headers.mjs.map +1 -0
  115. package/_mjs/HttpApp.mjs +96 -0
  116. package/_mjs/HttpApp.mjs.map +1 -0
  117. package/_mjs/IncomingMessage/api.mjs +25 -0
  118. package/_mjs/IncomingMessage/api.mjs.map +1 -0
  119. package/_mjs/IncomingMessage/definition.mjs +13 -0
  120. package/_mjs/IncomingMessage/definition.mjs.map +1 -0
  121. package/_mjs/IncomingMessage.mjs +5 -0
  122. package/_mjs/IncomingMessage.mjs.map +1 -0
  123. package/_mjs/Method.mjs +4 -0
  124. package/_mjs/Method.mjs.map +1 -0
  125. package/_mjs/Middleware.mjs +9 -0
  126. package/_mjs/Middleware.mjs.map +1 -0
  127. package/_mjs/QueryParams.mjs +2 -0
  128. package/_mjs/QueryParams.mjs.map +1 -0
  129. package/_mjs/RequestError.mjs +12 -0
  130. package/_mjs/RequestError.mjs.map +1 -0
  131. package/_mjs/ResponseError.mjs +20 -0
  132. package/_mjs/ResponseError.mjs.map +1 -0
  133. package/_mjs/Route/api.mjs +48 -0
  134. package/_mjs/Route/api.mjs.map +1 -0
  135. package/_mjs/Route/definition.mjs +25 -0
  136. package/_mjs/Route/definition.mjs.map +1 -0
  137. package/_mjs/Route/internal.mjs +21 -0
  138. package/_mjs/Route/internal.mjs.map +1 -0
  139. package/_mjs/Route.mjs +5 -0
  140. package/_mjs/Route.mjs.map +1 -0
  141. package/_mjs/RouteNotFound.mjs +11 -0
  142. package/_mjs/RouteNotFound.mjs.map +1 -0
  143. package/_mjs/Router/api.mjs +123 -0
  144. package/_mjs/Router/api.mjs.map +1 -0
  145. package/_mjs/Router/definition.mjs +15 -0
  146. package/_mjs/Router/definition.mjs.map +1 -0
  147. package/_mjs/Router/internal.mjs +76 -0
  148. package/_mjs/Router/internal.mjs.map +1 -0
  149. package/_mjs/Router.mjs +5 -0
  150. package/_mjs/Router.mjs.map +1 -0
  151. package/_mjs/Server.mjs +41 -0
  152. package/_mjs/Server.mjs.map +1 -0
  153. package/_mjs/ServerError.mjs +14 -0
  154. package/_mjs/ServerError.mjs.map +1 -0
  155. package/_mjs/ServerRequest/api.mjs +8 -0
  156. package/_mjs/ServerRequest/api.mjs.map +1 -0
  157. package/_mjs/ServerRequest/definition.mjs +20 -0
  158. package/_mjs/ServerRequest/definition.mjs.map +1 -0
  159. package/_mjs/ServerRequest/internal.mjs +68 -0
  160. package/_mjs/ServerRequest/internal.mjs.map +1 -0
  161. package/_mjs/ServerRequest.mjs +5 -0
  162. package/_mjs/ServerRequest.mjs.map +1 -0
  163. package/_mjs/ServerResponse/api.mjs +138 -0
  164. package/_mjs/ServerResponse/api.mjs.map +1 -0
  165. package/_mjs/ServerResponse/definition.mjs +34 -0
  166. package/_mjs/ServerResponse/definition.mjs.map +1 -0
  167. package/_mjs/ServerResponse.mjs +5 -0
  168. package/_mjs/ServerResponse.mjs.map +1 -0
  169. package/_mjs/Socket.mjs +202 -0
  170. package/_mjs/Socket.mjs.map +1 -0
  171. package/_mjs/UrlParams.mjs +25 -0
  172. package/_mjs/UrlParams.mjs.map +1 -0
  173. package/_mjs/global.mjs +2 -0
  174. package/_mjs/global.mjs.map +1 -0
  175. package/_src/Body/api.ts +106 -0
  176. package/_src/Body/definition.ts +74 -0
  177. package/_src/Body.ts +5 -0
  178. package/_src/BodyError.ts +38 -0
  179. package/_src/Headers.ts +84 -0
  180. package/_src/HttpApp.ts +129 -0
  181. package/_src/IncomingMessage/api.ts +25 -0
  182. package/_src/IncomingMessage/definition.ts +20 -0
  183. package/_src/IncomingMessage.ts +5 -0
  184. package/_src/Method.ts +5 -0
  185. package/_src/Middleware.ts +29 -0
  186. package/_src/QueryParams.ts +7 -0
  187. package/_src/RequestError.ts +13 -0
  188. package/_src/ResponseError.ts +25 -0
  189. package/_src/Route/api.ts +53 -0
  190. package/_src/Route/definition.ts +40 -0
  191. package/_src/Route/internal.ts +25 -0
  192. package/_src/Route.ts +5 -0
  193. package/_src/RouteNotFound.ts +14 -0
  194. package/_src/Router/api.ts +161 -0
  195. package/_src/Router/definition.ts +29 -0
  196. package/_src/Router/internal.ts +95 -0
  197. package/_src/Router.ts +5 -0
  198. package/_src/Server.ts +88 -0
  199. package/_src/ServerError.ts +14 -0
  200. package/_src/ServerRequest/api.ts +10 -0
  201. package/_src/ServerRequest/definition.ts +33 -0
  202. package/_src/ServerRequest/internal.ts +106 -0
  203. package/_src/ServerRequest.ts +5 -0
  204. package/_src/ServerResponse/api.ts +177 -0
  205. package/_src/ServerResponse/definition.ts +51 -0
  206. package/_src/ServerResponse.ts +5 -0
  207. package/_src/Socket.ts +294 -0
  208. package/_src/UrlParams.ts +28 -0
  209. package/_src/global.ts +2 -0
  210. package/global.d.ts +1 -0
  211. package/package.json +27 -0
@@ -0,0 +1,5 @@
1
+ /* eslint-disable simple-import-sort/exports */
2
+ // codegen:start { preset: barrel, include: ./ServerResponse/*.ts }
3
+ export * from "./ServerResponse/definition.mjs";
4
+ export * from "./ServerResponse/api.mjs";
5
+ //# sourceMappingURL=ServerResponse.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ServerResponse.mjs","names":[],"sources":["../_src/ServerResponse.ts"],"sourcesContent":[null],"mappings":"AAAA;AACA;AACA,cAAc,iCAAgC;AAC9C,cAAc,0BAAyB"}
@@ -0,0 +1,202 @@
1
+ var _a, _b, _c, _d;
2
+ const fileName_1 = "(@fncts/http) src/Socket.ts";
3
+ import * as tsplus_module_1 from "@fncts/base/data/Tag/constructors";
4
+ import * as tsplus_module_2 from "@fncts/base/util/predicates";
5
+ import * as tsplus_module_3 from "@fncts/io/Channel/api";
6
+ import * as tsplus_module_4 from "@fncts/io/Channel/core-api";
7
+ import * as tsplus_module_5 from "@fncts/base/data/Exit/api";
8
+ import * as tsplus_module_6 from "@fncts/io/Queue/api/operations";
9
+ import * as tsplus_module_7 from "@fncts/base/data/Cause/api";
10
+ import * as tsplus_module_8 from "@fncts/io/IO/api";
11
+ import * as tsplus_module_9 from "@fncts/base/collection/immutable/Conc/constructors";
12
+ import * as tsplus_module_10 from "@fncts/base/data/Exit/constructors";
13
+ import * as tsplus_module_11 from "@fncts/io/IO/api/fork";
14
+ import * as tsplus_module_12 from "@fncts/io/IO/api/interrupt";
15
+ import * as tsplus_module_13 from "@fncts/io/Queue/constructors";
16
+ import * as tsplus_module_14 from "@fncts/io/Scope/api";
17
+ import * as tsplus_module_15 from "@fncts/io/IO/api/acquireRelease";
18
+ import * as tsplus_module_16 from "@fncts/base/data/Maybe/constructors";
19
+ import * as tsplus_module_17 from "@fncts/io/FiberSet";
20
+ import * as tsplus_module_18 from "@fncts/base/data/Duration/api";
21
+ import * as tsplus_module_19 from "@fncts/io/IO/api/timeout";
22
+ import * as tsplus_module_20 from "@fncts/io/IO/api/raceFirst";
23
+ import * as tsplus_module_21 from "@fncts/io/Future/api";
24
+ import * as tsplus_module_22 from "@fncts/io/IO/api/environment";
25
+ import * as tsplus_module_23 from "@fncts/io/IO/api/scoped";
26
+ import * as tsplus_module_24 from "@fncts/io/Layer/api";
27
+ export const toChannel = toChannel_1;
28
+ export const makeWebSocket = makeWebSocket_1;
29
+ export const fromWebSocket = fromWebSocket_1;
30
+ import { WebSocket as IsoWs } from "isows";
31
+ export const SocketTypeId = /*#__PURE__*/Symbol.for("fncts.http.Socket");
32
+ /**
33
+ * @tsplus type fncts.http.Socket
34
+ * @tsplus companion fncts.http.SocketOps
35
+ */
36
+ export class Socket {
37
+ constructor() {
38
+ this[_a] = SocketTypeId;
39
+ }
40
+ }
41
+ _a = SocketTypeId;
42
+ /**
43
+ * @tsplus static fncts.http.SocketOps Tag
44
+ */
45
+ const SocketTag_1 = /*#__PURE__*/tsplus_module_1.makeTag();
46
+ export const SocketTag = SocketTag_1;
47
+ export const SocketGenericErrorTypeId = /*#__PURE__*/Symbol.for("fncts.http.Socket.SocketGenericError");
48
+ export class SocketGenericError extends Error {
49
+ constructor(reason, error) {
50
+ super();
51
+ this.reason = reason;
52
+ this.error = error;
53
+ this[_b] = SocketGenericErrorTypeId;
54
+ }
55
+ }
56
+ _b = SocketGenericErrorTypeId;
57
+ export const SocketCloseErrorTypeId = /*#__PURE__*/Symbol.for("fncts.http.Socket.SocketCloseError");
58
+ export class SocketCloseError extends Error {
59
+ constructor(reason, code, closeReason, error) {
60
+ super();
61
+ this.reason = reason;
62
+ this.code = code;
63
+ this.closeReason = closeReason;
64
+ this.error = error;
65
+ this[_c] = SocketCloseErrorTypeId;
66
+ }
67
+ static isClean(isClean) {
68
+ return u => {
69
+ return isSocketCloseError(u) && isClean(u.code);
70
+ };
71
+ }
72
+ }
73
+ _c = SocketCloseErrorTypeId;
74
+ export function isSocketCloseError(u) {
75
+ return tsplus_module_2.isObject(u) && SocketCloseErrorTypeId in u;
76
+ }
77
+ export const CloseEventTypeId = /*#__PURE__*/Symbol.for("fncts.http.Socket.CloseEvent");
78
+ export class CloseEvent {
79
+ constructor(code = 1000, reason) {
80
+ this.code = code;
81
+ this.reason = reason;
82
+ this[_d] = CloseEventTypeId;
83
+ }
84
+ }
85
+ _d = CloseEventTypeId;
86
+ export function isCloseEvent(u) {
87
+ return tsplus_module_2.isObject(u) && CloseEventTypeId in u;
88
+ }
89
+ /**
90
+ * @tsplus fluent fncts.http.Socket toChannel
91
+ */
92
+ function toChannel_1(self) {
93
+ return tsplus_module_3.unwrap(() => tsplus_module_8.flatMap(writeScope => tsplus_module_8.flatMap(write => tsplus_module_8.flatMap(exitQueue => {
94
+ const input = {
95
+ awaitRead: tsplus_module_8.unit,
96
+ emit(chunk) {
97
+ return tsplus_module_8.catchAllCause(cause => tsplus_module_6.offer(tsplus_module_10.failCause(cause, fileName_1 + ":94:105"), fileName_1 + ":94:90")(exitQueue), fileName_1 + ":94:63")(tsplus_module_8.foreachDiscard(chunk, write, fileName_1 + ":94:35"));
98
+ },
99
+ error(error) {
100
+ return tsplus_module_8.zipRight(tsplus_module_6.offer(tsplus_module_10.failCause(error, fileName_1 + ":97:78"), fileName_1 + ":97:63")(exitQueue), fileName_1 + ":97:47")(writeScope.close(() => tsplus_module_10.unit));
101
+ },
102
+ done() {
103
+ return writeScope.close(() => tsplus_module_10.unit);
104
+ }
105
+ };
106
+ return tsplus_module_8.map(() => {
107
+ const loop = tsplus_module_4.flatMap(exit => tsplus_module_5.match(cause => cause._tag === "Empty" /* CauseTag.Empty */ ? tsplus_module_3.unit : tsplus_module_4.failCause(() => cause), chunk => tsplus_module_4.zipRight(loop)(tsplus_module_3.write(() => chunk)))(exit))(tsplus_module_3.fromIO(() => tsplus_module_6.take(exitQueue, fileName_1 + ":112:18")));
108
+ return tsplus_module_3.embedInput(input)(loop);
109
+ }, fileName_1 + ":104:8")(tsplus_module_12.interruptible(tsplus_module_11.fork(tsplus_module_8.tap(exit => tsplus_module_6.offer(exit, fileName_1 + ":108:48")(exitQueue), fileName_1 + ":108:22")(tsplus_module_8.result(tsplus_module_8.zipRight(tsplus_module_8.failCauseNow(tsplus_module_7.empty(), fileName_1 + ":107:36"), fileName_1 + ":107:20")(self.run(data => tsplus_module_6.offer(tsplus_module_10.succeed(tsplus_module_9.single(data), fileName_1 + ":106:54"), fileName_1 + ":106:41")(exitQueue))), fileName_1 + ":107:70")), fileName_1 + ":108:55"), fileName_1 + ":108:60"));
110
+ }, fileName_1 + ":89:27")(tsplus_module_13.makeUnbounded(fileName_1 + ":89:47")), fileName_1 + ":88:27")(tsplus_module_14.extend(() => self.writer, fileName_1 + ":88:45")(writeScope)), fileName_1 + ":87:27")(tsplus_module_14.make));
111
+ }
112
+ /**
113
+ * @tsplus fluent fncts.http.Socket toChannelWith
114
+ */
115
+ export function toChannelWith(self) {
116
+ return toChannel_1(self);
117
+ }
118
+ /**
119
+ * @tsplus static fncts.http.WebSocketOps Tag
120
+ */
121
+ const WebSocketTag_1 = /*#__PURE__*/tsplus_module_1.makeTag();
122
+ export const WebSocketTag = WebSocketTag_1;
123
+ /**
124
+ * @tsplus static fncts.http.SocketOps makeWebSocket
125
+ * @tsplus static fncts.http.WebSocketOps __call
126
+ */
127
+ function makeWebSocket_1(url, options) {
128
+ return fromWebSocket_1(tsplus_module_15.acquireRelease(() => tsplus_module_8.succeed(() => {
129
+ if ("WebSocket" in globalThis) {
130
+ return new globalThis.WebSocket(url);
131
+ }
132
+ return new IsoWs(url);
133
+ }, fileName_1 + ":159:9"), ws => tsplus_module_8.succeed(() => ws.close(), fileName_1 + ":165:17"), fileName_1 + ":158:22"), options);
134
+ }
135
+ /**
136
+ * @tsplus static fncts.http.SocketOps fromWebSocket
137
+ */
138
+ function fromWebSocket_1(acquire, options) {
139
+ return (() => {
140
+ const closeCodeIsError = options?.closeCodeIsError ?? (code => code !== 1000 && code !== 1006);
141
+ return tsplus_module_8.map(sendQueue => {
142
+ const run = handler => tsplus_module_12.interruptible(tsplus_module_23.scoped(tsplus_module_8.flatMap(ws => {
143
+ const encoder = new TextEncoder();
144
+ return tsplus_module_8.flatMap(fiberSet => tsplus_module_8.flatMap(run => {
145
+ let open = false;
146
+ ws.onmessage = event => {
147
+ run(handler(event.data instanceof Uint8Array ? event.data : typeof event.data === "string" ? encoder.encode(event.data) : new Uint8Array(event.data)));
148
+ };
149
+ ws.onclose = event => {
150
+ tsplus_module_21.unsafeDone(tsplus_module_8.fail(() => new SocketCloseError("Close", event.code, event.reason, undefined), fileName_1 + ":206:45"), fileName_1 + ":206:37")(fiberSet.future);
151
+ };
152
+ ws.onerror = error => {
153
+ tsplus_module_21.unsafeDone(tsplus_module_8.fail(() => new SocketGenericError(open ? "Read" : "Open", error), fileName_1 + ":210:45"), fileName_1 + ":210:37")(fiberSet.future);
154
+ };
155
+ return tsplus_module_8.flatMap(() => tsplus_module_8.flatMap(() => tsplus_module_8.flatMap(() => tsplus_module_8.map(() => void 0, fileName_1 + ":249:10")(tsplus_module_8.catchJust(tsplus_module_16.partial(miss => error => SocketCloseError.isClean(code => !closeCodeIsError(code))(error) ? tsplus_module_8.unit : miss()), fileName_1 + ":250:34")(tsplus_module_17.join(fiberSet))), fileName_1 + ":234:10")(tsplus_module_17.run(tsplus_module_8.forever(tsplus_module_8.tap(chunk => {
156
+ if (isCloseEvent(chunk)) {
157
+ return tsplus_module_8.fail(() => {
158
+ ws.close(chunk.code, chunk.reason);
159
+ return new SocketCloseError("Close", chunk.code, chunk.reason, chunk);
160
+ }, fileName_1 + ":238:31");
161
+ } else {
162
+ return tsplus_module_8.tryCatch(() => ws.send(chunk), error => new SocketGenericError("Write", error), fileName_1 + ":243:35");
163
+ }
164
+ }, fileName_1 + ":236:31")(tsplus_module_6.take(sendQueue, fileName_1 + ":236:22")), fileName_1 + ":245:15"))(fiberSet)), fileName_1 + ":232:10")(tsplus_module_8.succeed(() => open = true, fileName_1 + ":232:13")), fileName_1 + ":213:10")(tsplus_module_8.defer(() => {
165
+ if (ws.readyState !== 1) {
166
+ return tsplus_module_20.raceFirst(tsplus_module_17.join(fiberSet), fileName_1 + ":225:27")(tsplus_module_19.timeoutFail(() => options?.openTimeout ?? tsplus_module_18.seconds(10), () => new SocketGenericError("OpenTimeout", 'timeout waiting for "open"'))(tsplus_module_8.async(resume => {
167
+ ws.onopen = () => {
168
+ resume(tsplus_module_8.unit);
169
+ };
170
+ })));
171
+ }
172
+ return tsplus_module_8.unit;
173
+ }, fileName_1 + ":214:19"));
174
+ }, fileName_1 + ":189:27")(tsplus_module_22.provideSomeService(ws, WebSocketTag_1, fileName_1 + ":190:73")(tsplus_module_17.runtime()(fiberSet))), fileName_1 + ":188:27")(tsplus_module_17.make());
175
+ }, fileName_1 + ":186:27")(acquire), fileName_1 + ":257:9"), fileName_1 + ":257:16");
176
+ const write = chunk => tsplus_module_6.offer(chunk, fileName_1 + ":259:70")(sendQueue);
177
+ const writer = tsplus_module_8.succeed(() => write, fileName_1 + ":261:22");
178
+ return new class extends Socket {
179
+ constructor() {
180
+ super(...arguments);
181
+ this.writer = writer;
182
+ this.run = run;
183
+ }
184
+ }();
185
+ }, fileName_1 + ":183:31")(tsplus_module_13.makeUnbounded(fileName_1 + ":183:51"));
186
+ })();
187
+ }
188
+ /**
189
+ * @tsplus static fncts.http.SocketOps makeWebSocketChannel
190
+ * @tsplus static fncts.http.WebSocketOps makeChannel
191
+ */
192
+ export function makeWebSocketChannel(url, options) {
193
+ return tsplus_module_3.unwrap(() => tsplus_module_8.map(socket => toChannel_1(socket), fileName_1 + ":280:56")(makeWebSocket_1(url, options)));
194
+ }
195
+ /**
196
+ * @tsplus static fncts.http.SocketOps liveWebSocket
197
+ * @tsplus static fncts.http.WebSocketOps live
198
+ */
199
+ export function live(url, options) {
200
+ return tsplus_module_24.scoped(() => makeWebSocket_1(url, options), SocketTag_1, fileName_1 + ":293:22");
201
+ }
202
+ //# sourceMappingURL=Socket.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Socket.mjs","names":["toChannel","toChannel_1","makeWebSocket","makeWebSocket_1","fromWebSocket","fromWebSocket_1","WebSocket","IsoWs","SocketTypeId","Symbol","for","Socket","constructor","_a","SocketTag_1","tsplus_module_1","makeTag","SocketTag","SocketGenericErrorTypeId","SocketGenericError","Error","reason","error","_b","SocketCloseErrorTypeId","SocketCloseError","code","closeReason","_c","isClean","u","isSocketCloseError","tsplus_module_2","isObject","CloseEventTypeId","CloseEvent","_d","isCloseEvent","self","tsplus_module_3","unwrap","tsplus_module_8","flatMap","writeScope","write","exitQueue","input","awaitRead","unit","emit","chunk","catchAllCause","cause","tsplus_module_6","offer","tsplus_module_10","failCause","fileName_1","foreachDiscard","zipRight","close","done","loop","tsplus_module_4","exit","tsplus_module_5","match","_tag","fromIO","take","embedInput","tap","result","failCauseNow","tsplus_module_7","empty","run","data","succeed","tsplus_module_9","single","tsplus_module_13","makeUnbounded","tsplus_module_14","extend","writer","make","toChannelWith","WebSocketTag_1","WebSocketTag","url","options","tsplus_module_15","acquireRelease","globalThis","ws","acquire","closeCodeIsError","sendQueue","handler","tsplus_module_12","interruptible","tsplus_module_23","scoped","encoder","TextEncoder","fiberSet","open","onmessage","event","Uint8Array","encode","onclose","tsplus_module_21","unsafeDone","fail","undefined","future","onerror","catchJust","tsplus_module_16","partial","miss","tsplus_module_17","join","forever","tryCatch","send","defer","readyState","tsplus_module_20","raceFirst","tsplus_module_19","timeoutFail","openTimeout","tsplus_module_18","seconds","async","resume","onopen","tsplus_module_22","provideSomeService","runtime","makeWebSocketChannel","map","socket","live","tsplus_module_24"],"sources":["../_src/Socket.ts"],"sourcesContent":[null],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ /**
2
+ * @tsplus type fncts.http.UrlParams
3
+ * @tsplus type fncts.http.UrlParamsOps
4
+ */
5
+ export class UrlParams {
6
+ constructor(backing) {
7
+ this.backing = backing;
8
+ }
9
+ }
10
+ /**
11
+ * @tsplus static fncts.http.UrlParamsOps __call
12
+ */
13
+ export function make(input) {
14
+ if (Symbol.iterator in input) {
15
+ return new UrlParams(Array.from(input));
16
+ }
17
+ return new UrlParams(Array.from(Object.entries(input)));
18
+ }
19
+ /**
20
+ * @tsplus fluent fncts.http.UrlParams toString
21
+ */
22
+ export function toString(self) {
23
+ return new URLSearchParams(self.backing).toString();
24
+ }
25
+ //# sourceMappingURL=UrlParams.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UrlParams.mjs","names":["UrlParams","constructor","backing","make","input","Symbol","iterator","Array","from","Object","entries","toString","self","URLSearchParams"],"sources":["../_src/UrlParams.ts"],"sourcesContent":[null],"mappings":"AAAA;;;;AAIA,OAAM,MAAOA,SAAS;EACpBC,YAAqBC,OAAiD;IAAjD,KAAAA,OAAO,GAAPA,OAAO;EAA6C;;AAO3E;;;AAGA,OAAM,SAAUC,IAAIA,CAACC,KAAsB;EACzC,IAAIC,MAAM,CAACC,QAAQ,IAAIF,KAAK,EAAE;IAC5B,OAAO,IAAIJ,SAAS,CAACO,KAAK,CAACC,IAAI,CAACJ,KAAK,CAAC,CAAC;EACzC;EACA,OAAO,IAAIJ,SAAS,CAACO,KAAK,CAACC,IAAI,CAACC,MAAM,CAACC,OAAO,CAACN,KAAK,CAAC,CAAC,CAAC;AACzD;AAEA;;;AAGA,OAAM,SAAUO,QAAQA,CAACC,IAAe;EACtC,OAAO,IAAIC,eAAe,CAACD,IAAI,CAACV,OAAkC,CAAC,CAACS,QAAQ,EAAE;AAChF"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=global.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"global.mjs","names":[],"sources":["../_src/global.ts"],"sourcesContent":[null],"mappings":""}
@@ -0,0 +1,106 @@
1
+ import type { BodyError } from "../BodyError.js";
2
+ import type * as Stream_ from "@fncts/io/Stream";
3
+
4
+ import { SchemaError } from "../BodyError.js";
5
+ import { JsonError } from "../BodyError.js";
6
+ import { Body, BodyTag } from "./definition.js";
7
+ import { Empty, FormData, Raw, Stream, Uint8Array } from "./definition.js";
8
+
9
+ /**
10
+ * @tsplus static fncts.http.BodyOps empty
11
+ */
12
+ export const empty: Empty = new Empty();
13
+
14
+ /**
15
+ * @tsplus static fncts.http.BodyOps raw
16
+ */
17
+ export function raw(
18
+ body: unknown,
19
+ options?: {
20
+ contentType?: string;
21
+ contentLength?: number;
22
+ },
23
+ ): Body {
24
+ return new Raw(body, options?.contentType, options?.contentLength);
25
+ }
26
+
27
+ /**
28
+ * @tsplus static fncts.http.BodyOps uint8Array
29
+ */
30
+ export function uint8Array(body: globalThis.Uint8Array, contentType?: string): Body {
31
+ return new Uint8Array(body, contentType ?? "application/octet-stream");
32
+ }
33
+
34
+ const encoder = new TextEncoder();
35
+
36
+ /**
37
+ * @tsplus static fncts.http.BodyOps text
38
+ */
39
+ export function text(body: string, contentType?: string): Body {
40
+ return new Uint8Array(encoder.encode(body), contentType ?? "text/plain");
41
+ }
42
+
43
+ /**
44
+ * @tsplus static fncts.http.BodyOps json
45
+ */
46
+ export function json(body: unknown): IO<never, BodyError, Body> {
47
+ return IO.tryCatch(text(JSON.stringify(body), "application/json"), (error) => new JsonError(error));
48
+ }
49
+
50
+ /**
51
+ * @tsplus static fncts.http.BodyOps jsonSchema
52
+ */
53
+ export function jsonSchema<A>(schema: Schema<A>) {
54
+ const encode = schema.encode;
55
+ return (body: A): IO<never, BodyError, Body> =>
56
+ encode(body)
57
+ .mapError((error) => new SchemaError(error))
58
+ .flatMap(Body.json);
59
+ }
60
+
61
+ /**
62
+ * @tsplus static fncts.http.BodyOps formData
63
+ */
64
+ export function formData(body: globalThis.FormData): Body {
65
+ return new FormData(body);
66
+ }
67
+
68
+ /**
69
+ * @tsplus static fncts.http.BodyOps stream
70
+ */
71
+ export function stream(
72
+ body: Stream_.Stream<never, unknown, globalThis.Uint8Array>,
73
+ options?: {
74
+ contentType?: string;
75
+ contentLength?: number;
76
+ },
77
+ ): Body {
78
+ return new Stream(body, options?.contentType ?? "application/octet-stream", options?.contentLength);
79
+ }
80
+
81
+ /**
82
+ * @tsplus pipeable fncts.http.Body match
83
+ */
84
+ export function match<A, B, C, D, E>(cases: {
85
+ Empty: (body: Empty) => A;
86
+ Raw: (body: Raw) => B;
87
+ Uint8Array: (body: Uint8Array) => C;
88
+ FormData: (body: FormData) => D;
89
+ Stream: (body: Stream) => E;
90
+ }) {
91
+ return (body: Body): A | B | C | D | E => {
92
+ body.concrete();
93
+ switch (body._tag) {
94
+ case BodyTag.Empty:
95
+ return cases.Empty(body);
96
+ case BodyTag.Raw:
97
+ return cases.Raw(body);
98
+ case BodyTag.Uint8Array:
99
+ return cases.Uint8Array(body);
100
+ case BodyTag.FormData:
101
+ return cases.FormData(body);
102
+ case BodyTag.Stream:
103
+ return cases.Stream(body);
104
+ }
105
+ };
106
+ }
@@ -0,0 +1,74 @@
1
+ import type * as Stream_ from "@fncts/io/Stream";
2
+
3
+ export const BodyTypeId = Symbol.for("fncts.http.BodyTypeId");
4
+ export type BodyTypeId = typeof BodyTypeId;
5
+
6
+ export const enum BodyTag {
7
+ Empty,
8
+ Raw,
9
+ Uint8Array,
10
+ FormData,
11
+ Stream,
12
+ }
13
+
14
+ /**
15
+ * @tsplus type fncts.http.Body
16
+ * @tsplus companion fncts.http.BodyOps
17
+ */
18
+ export abstract class Body {
19
+ readonly [BodyTypeId]: BodyTypeId = BodyTypeId;
20
+ readonly contentType?: string;
21
+ readonly contentLength?: number;
22
+ }
23
+
24
+ export class Empty extends Body {
25
+ readonly _tag = BodyTag.Empty;
26
+ }
27
+
28
+ export class Raw extends Body {
29
+ readonly _tag = BodyTag.Raw;
30
+ constructor(
31
+ readonly body: unknown,
32
+ readonly contentType?: string,
33
+ readonly contentLength?: number,
34
+ ) {
35
+ super();
36
+ }
37
+ }
38
+
39
+ export class Uint8Array extends Body {
40
+ readonly _tag = BodyTag.Uint8Array;
41
+ constructor(
42
+ readonly body: globalThis.Uint8Array,
43
+ readonly contentType: string,
44
+ ) {
45
+ super();
46
+ }
47
+ }
48
+
49
+ export class FormData extends Body {
50
+ readonly _tag = BodyTag.FormData;
51
+ constructor(readonly formData: globalThis.FormData) {
52
+ super();
53
+ }
54
+ }
55
+
56
+ export class Stream extends Body {
57
+ readonly _tag = BodyTag.Stream;
58
+ constructor(
59
+ readonly stream: Stream_.Stream<never, unknown, globalThis.Uint8Array>,
60
+ readonly contentType: string,
61
+ readonly contentLength?: number,
62
+ ) {
63
+ super();
64
+ }
65
+ }
66
+
67
+ export type ConcreteBody = Empty | Raw | Uint8Array | FormData | Stream;
68
+
69
+ /**
70
+ * @tsplus fluent fncts.http.Body concrete
71
+ */
72
+ export function concrete(self: Body): asserts self is ConcreteBody {
73
+ //
74
+ }
package/_src/Body.ts ADDED
@@ -0,0 +1,5 @@
1
+ /* eslint-disable simple-import-sort/exports */
2
+ // codegen:start { preset: barrel, include: ./Body/*.ts }
3
+ export * from "./Body/definition.js";
4
+ export * from "./Body/api.js";
5
+ // codegen:end
@@ -0,0 +1,38 @@
1
+ export const BodyErrorTypeId = Symbol.for("fncts.http.BodyError");
2
+ export type BodyErrorTypeId = typeof BodyErrorTypeId;
3
+
4
+ export const enum BodyErrorTag {
5
+ JsonError,
6
+ SchemaError,
7
+ }
8
+
9
+ /**
10
+ * @tsplus type fncts.http.BodyError
11
+ * @tsplus concrete fncts.http.BodyErrorOps
12
+ */
13
+ export abstract class BodyError {
14
+ readonly [BodyErrorTypeId]: BodyErrorTypeId = BodyErrorTypeId;
15
+ }
16
+
17
+ export class JsonError extends BodyError {
18
+ readonly _tag = BodyErrorTag.JsonError;
19
+ constructor(readonly error: unknown) {
20
+ super();
21
+ }
22
+ }
23
+
24
+ export class SchemaError extends BodyError {
25
+ readonly _tag = BodyErrorTag.SchemaError;
26
+ constructor(readonly error: ParseFailure) {
27
+ super();
28
+ }
29
+ }
30
+
31
+ export type Concrete = JsonError | SchemaError;
32
+
33
+ /**
34
+ * @tsplus fluent fncts.http.BodyError concrete
35
+ */
36
+ export function concrete(self: BodyError): asserts self is Concrete {
37
+ //
38
+ }
@@ -0,0 +1,84 @@
1
+ export const HeadersTypeId = Symbol.for("fncts.http.Headers");
2
+ export type HeadersTypeId = typeof HeadersTypeId;
3
+
4
+ /**
5
+ * @tsplus type fncts.http.Headers
6
+ * @tsplus companion fncts.http.HeadersOps
7
+ */
8
+ export class Headers {
9
+ readonly [HeadersTypeId]: HeadersTypeId = HeadersTypeId;
10
+ constructor(readonly backing: HashMap<string, string>) {}
11
+
12
+ set(key: string, value: string): Headers {
13
+ return new Headers(this.backing.set(key.toLowerCase(), value));
14
+ }
15
+
16
+ remove(key: string): Headers {
17
+ return new Headers(this.backing.remove(key.toLowerCase()));
18
+ }
19
+
20
+ get(key: string): Maybe<string> {
21
+ return this.backing.get(key.toLowerCase());
22
+ }
23
+
24
+ unsafeGet(key: string): string | undefined {
25
+ return this.backing.unsafeGet(key.toLowerCase());
26
+ }
27
+
28
+ setAll(input: Headers.Input): Headers {
29
+ const backing = this.backing.beginMutation;
30
+ if (Symbol.iterator in input) {
31
+ for (const [k, v] of input) {
32
+ backing.set(k.toLowerCase(), v);
33
+ }
34
+ return new Headers(backing.endMutation);
35
+ } else {
36
+ for (const k in input) {
37
+ backing.set(k.toLowerCase(), input[k]!);
38
+ }
39
+ return new Headers(backing.endMutation);
40
+ }
41
+ }
42
+
43
+ toHeadersInit(): Array<[string, string]> {
44
+ return Array.from(this.backing) as Array<[string, string]>;
45
+ }
46
+ }
47
+
48
+ export declare module Headers {
49
+ export type Input = Readonly<Record<string, string>> | Iterable<readonly [string, string]>;
50
+ }
51
+
52
+ /**
53
+ * @tsplus static fncts.http.HeadersOps isHeaders
54
+ */
55
+ export function isHeaders(u: unknown): u is Headers {
56
+ return isObject(u) && HeadersTypeId in u;
57
+ }
58
+
59
+ /**
60
+ * @tsplus static fncts.http.HeadersOps empty
61
+ */
62
+ export const empty = new Headers(HashMap.empty());
63
+
64
+ /**
65
+ * @tsplus static fncts.http.HeadersOps fromHeaders
66
+ */
67
+ export function fromHeaders(headers: globalThis.Headers): Headers {
68
+ const backing = HashMap.empty<string, string>().beginMutation;
69
+ headers.forEach((value, key) => {
70
+ backing.set(key.toLowerCase(), value);
71
+ });
72
+ return new Headers(backing.endMutation);
73
+ }
74
+
75
+ /**
76
+ * @tsplus static fncts.http.HeadersOps __call
77
+ */
78
+ export function make(input: Headers.Input): Headers {
79
+ if (Symbol.iterator in input) {
80
+ return new Headers(HashMap.from(input.map(([k, v]) => [k.toLowerCase(), v])));
81
+ }
82
+
83
+ return new Headers(HashMap.from(Object.entries(input).map(([k, v]) => [k.toLowerCase(), v] as const)));
84
+ }