@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.
- package/Body/api.d.ts +63 -0
- package/Body/definition.d.ts +53 -0
- package/Body.d.ts +2 -0
- package/BodyError.d.ts +30 -0
- package/Headers.d.ts +42 -0
- package/HttpApp.d.ts +46 -0
- package/IncomingMessage/api.d.ts +19 -0
- package/IncomingMessage/definition.d.ts +21 -0
- package/IncomingMessage.d.ts +2 -0
- package/Method.d.ts +2 -0
- package/Middleware.d.ts +24 -0
- package/QueryParams.d.ts +7 -0
- package/RequestError.d.ts +10 -0
- package/ResponseError.d.ts +14 -0
- package/Route/api.d.ts +37 -0
- package/Route/definition.d.ts +35 -0
- package/Route/internal.d.ts +17 -0
- package/Route.d.ts +2 -0
- package/RouteNotFound.d.ts +8 -0
- package/Router/api.d.ts +96 -0
- package/Router/definition.d.ts +28 -0
- package/Router/internal.d.ts +26 -0
- package/Router.d.ts +2 -0
- package/Server.d.ts +53 -0
- package/ServerError.d.ts +9 -0
- package/ServerRequest/api.d.ts +6 -0
- package/ServerRequest/definition.d.ts +30 -0
- package/ServerRequest/internal.d.ts +33 -0
- package/ServerRequest.d.ts +2 -0
- package/ServerResponse/api.d.ts +69 -0
- package/ServerResponse/definition.d.ts +30 -0
- package/ServerResponse.d.ts +2 -0
- package/Socket.d.ts +107 -0
- package/UrlParams.d.ts +21 -0
- package/_cjs/Body/api.cjs +93 -0
- package/_cjs/Body/api.cjs.map +1 -0
- package/_cjs/Body/definition.cjs +71 -0
- package/_cjs/Body/definition.cjs.map +1 -0
- package/_cjs/Body.cjs +28 -0
- package/_cjs/Body.cjs.map +1 -0
- package/_cjs/BodyError.cjs +43 -0
- package/_cjs/BodyError.cjs.map +1 -0
- package/_cjs/Headers.cjs +87 -0
- package/_cjs/Headers.cjs.map +1 -0
- package/_cjs/HttpApp.cjs +109 -0
- package/_cjs/HttpApp.cjs.map +1 -0
- package/_cjs/IncomingMessage/api.cjs +35 -0
- package/_cjs/IncomingMessage/api.cjs.map +1 -0
- package/_cjs/IncomingMessage/definition.cjs +20 -0
- package/_cjs/IncomingMessage/definition.cjs.map +1 -0
- package/_cjs/IncomingMessage.cjs +28 -0
- package/_cjs/IncomingMessage.cjs.map +1 -0
- package/_cjs/Method.cjs +10 -0
- package/_cjs/Method.cjs.map +1 -0
- package/_cjs/Middleware.cjs +16 -0
- package/_cjs/Middleware.cjs.map +1 -0
- package/_cjs/QueryParams.cjs +6 -0
- package/_cjs/QueryParams.cjs.map +1 -0
- package/_cjs/RequestError.cjs +19 -0
- package/_cjs/RequestError.cjs.map +1 -0
- package/_cjs/ResponseError.cjs +27 -0
- package/_cjs/ResponseError.cjs.map +1 -0
- package/_cjs/Route/api.cjs +61 -0
- package/_cjs/Route/api.cjs.map +1 -0
- package/_cjs/Route/definition.cjs +35 -0
- package/_cjs/Route/definition.cjs.map +1 -0
- package/_cjs/Route/internal.cjs +31 -0
- package/_cjs/Route/internal.cjs.map +1 -0
- package/_cjs/Route.cjs +28 -0
- package/_cjs/Route.cjs.map +1 -0
- package/_cjs/RouteNotFound.cjs +18 -0
- package/_cjs/RouteNotFound.cjs.map +1 -0
- package/_cjs/Router/api.cjs +141 -0
- package/_cjs/Router/api.cjs.map +1 -0
- package/_cjs/Router/definition.cjs +22 -0
- package/_cjs/Router/definition.cjs.map +1 -0
- package/_cjs/Router/internal.cjs +85 -0
- package/_cjs/Router/internal.cjs.map +1 -0
- package/_cjs/Router.cjs +28 -0
- package/_cjs/Router.cjs.map +1 -0
- package/_cjs/Server.cjs +53 -0
- package/_cjs/Server.cjs.map +1 -0
- package/_cjs/ServerError.cjs +21 -0
- package/_cjs/ServerError.cjs.map +1 -0
- package/_cjs/ServerRequest/api.cjs +14 -0
- package/_cjs/ServerRequest/api.cjs.map +1 -0
- package/_cjs/ServerRequest/definition.cjs +29 -0
- package/_cjs/ServerRequest/definition.cjs.map +1 -0
- package/_cjs/ServerRequest/internal.cjs +77 -0
- package/_cjs/ServerRequest/internal.cjs.map +1 -0
- package/_cjs/ServerRequest.cjs +28 -0
- package/_cjs/ServerRequest.cjs.map +1 -0
- package/_cjs/ServerResponse/api.cjs +157 -0
- package/_cjs/ServerResponse/api.cjs.map +1 -0
- package/_cjs/ServerResponse/definition.cjs +44 -0
- package/_cjs/ServerResponse/definition.cjs.map +1 -0
- package/_cjs/ServerResponse.cjs +28 -0
- package/_cjs/ServerResponse.cjs.map +1 -0
- package/_cjs/Socket.cjs +221 -0
- package/_cjs/Socket.cjs.map +1 -0
- package/_cjs/UrlParams.cjs +34 -0
- package/_cjs/UrlParams.cjs.map +1 -0
- package/_cjs/global.cjs +6 -0
- package/_cjs/global.cjs.map +1 -0
- package/_mjs/Body/api.mjs +78 -0
- package/_mjs/Body/api.mjs.map +1 -0
- package/_mjs/Body/definition.mjs +58 -0
- package/_mjs/Body/definition.mjs.map +1 -0
- package/_mjs/Body.mjs +5 -0
- package/_mjs/Body.mjs.map +1 -0
- package/_mjs/BodyError.mjs +33 -0
- package/_mjs/BodyError.mjs.map +1 -0
- package/_mjs/Headers.mjs +75 -0
- package/_mjs/Headers.mjs.map +1 -0
- package/_mjs/HttpApp.mjs +96 -0
- package/_mjs/HttpApp.mjs.map +1 -0
- package/_mjs/IncomingMessage/api.mjs +25 -0
- package/_mjs/IncomingMessage/api.mjs.map +1 -0
- package/_mjs/IncomingMessage/definition.mjs +13 -0
- package/_mjs/IncomingMessage/definition.mjs.map +1 -0
- package/_mjs/IncomingMessage.mjs +5 -0
- package/_mjs/IncomingMessage.mjs.map +1 -0
- package/_mjs/Method.mjs +4 -0
- package/_mjs/Method.mjs.map +1 -0
- package/_mjs/Middleware.mjs +9 -0
- package/_mjs/Middleware.mjs.map +1 -0
- package/_mjs/QueryParams.mjs +2 -0
- package/_mjs/QueryParams.mjs.map +1 -0
- package/_mjs/RequestError.mjs +12 -0
- package/_mjs/RequestError.mjs.map +1 -0
- package/_mjs/ResponseError.mjs +20 -0
- package/_mjs/ResponseError.mjs.map +1 -0
- package/_mjs/Route/api.mjs +48 -0
- package/_mjs/Route/api.mjs.map +1 -0
- package/_mjs/Route/definition.mjs +25 -0
- package/_mjs/Route/definition.mjs.map +1 -0
- package/_mjs/Route/internal.mjs +21 -0
- package/_mjs/Route/internal.mjs.map +1 -0
- package/_mjs/Route.mjs +5 -0
- package/_mjs/Route.mjs.map +1 -0
- package/_mjs/RouteNotFound.mjs +11 -0
- package/_mjs/RouteNotFound.mjs.map +1 -0
- package/_mjs/Router/api.mjs +123 -0
- package/_mjs/Router/api.mjs.map +1 -0
- package/_mjs/Router/definition.mjs +15 -0
- package/_mjs/Router/definition.mjs.map +1 -0
- package/_mjs/Router/internal.mjs +76 -0
- package/_mjs/Router/internal.mjs.map +1 -0
- package/_mjs/Router.mjs +5 -0
- package/_mjs/Router.mjs.map +1 -0
- package/_mjs/Server.mjs +41 -0
- package/_mjs/Server.mjs.map +1 -0
- package/_mjs/ServerError.mjs +14 -0
- package/_mjs/ServerError.mjs.map +1 -0
- package/_mjs/ServerRequest/api.mjs +8 -0
- package/_mjs/ServerRequest/api.mjs.map +1 -0
- package/_mjs/ServerRequest/definition.mjs +20 -0
- package/_mjs/ServerRequest/definition.mjs.map +1 -0
- package/_mjs/ServerRequest/internal.mjs +68 -0
- package/_mjs/ServerRequest/internal.mjs.map +1 -0
- package/_mjs/ServerRequest.mjs +5 -0
- package/_mjs/ServerRequest.mjs.map +1 -0
- package/_mjs/ServerResponse/api.mjs +138 -0
- package/_mjs/ServerResponse/api.mjs.map +1 -0
- package/_mjs/ServerResponse/definition.mjs +34 -0
- package/_mjs/ServerResponse/definition.mjs.map +1 -0
- package/_mjs/ServerResponse.mjs +5 -0
- package/_mjs/ServerResponse.mjs.map +1 -0
- package/_mjs/Socket.mjs +202 -0
- package/_mjs/Socket.mjs.map +1 -0
- package/_mjs/UrlParams.mjs +25 -0
- package/_mjs/UrlParams.mjs.map +1 -0
- package/_mjs/global.mjs +2 -0
- package/_mjs/global.mjs.map +1 -0
- package/_src/Body/api.ts +106 -0
- package/_src/Body/definition.ts +74 -0
- package/_src/Body.ts +5 -0
- package/_src/BodyError.ts +38 -0
- package/_src/Headers.ts +84 -0
- package/_src/HttpApp.ts +129 -0
- package/_src/IncomingMessage/api.ts +25 -0
- package/_src/IncomingMessage/definition.ts +20 -0
- package/_src/IncomingMessage.ts +5 -0
- package/_src/Method.ts +5 -0
- package/_src/Middleware.ts +29 -0
- package/_src/QueryParams.ts +7 -0
- package/_src/RequestError.ts +13 -0
- package/_src/ResponseError.ts +25 -0
- package/_src/Route/api.ts +53 -0
- package/_src/Route/definition.ts +40 -0
- package/_src/Route/internal.ts +25 -0
- package/_src/Route.ts +5 -0
- package/_src/RouteNotFound.ts +14 -0
- package/_src/Router/api.ts +161 -0
- package/_src/Router/definition.ts +29 -0
- package/_src/Router/internal.ts +95 -0
- package/_src/Router.ts +5 -0
- package/_src/Server.ts +88 -0
- package/_src/ServerError.ts +14 -0
- package/_src/ServerRequest/api.ts +10 -0
- package/_src/ServerRequest/definition.ts +33 -0
- package/_src/ServerRequest/internal.ts +106 -0
- package/_src/ServerRequest.ts +5 -0
- package/_src/ServerResponse/api.ts +177 -0
- package/_src/ServerResponse/definition.ts +51 -0
- package/_src/ServerResponse.ts +5 -0
- package/_src/Socket.ts +294 -0
- package/_src/UrlParams.ts +28 -0
- package/_src/global.ts +2 -0
- package/global.d.ts +1 -0
- package/package.json +27 -0
|
@@ -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"}
|
package/_mjs/Socket.mjs
ADDED
|
@@ -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"}
|
package/_mjs/global.mjs
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"global.mjs","names":[],"sources":["../_src/global.ts"],"sourcesContent":[null],"mappings":""}
|
package/_src/Body/api.ts
ADDED
|
@@ -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,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
|
+
}
|
package/_src/Headers.ts
ADDED
|
@@ -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
|
+
}
|