@effect/platform-browser 0.29.6 → 0.29.7
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/BrowserHttpClient/package.json +6 -0
- package/dist/cjs/BrowserHttpClient.js +48 -0
- package/dist/cjs/BrowserHttpClient.js.map +1 -0
- package/dist/cjs/index.js +3 -1
- package/dist/cjs/internal/http/client.js +226 -0
- package/dist/cjs/internal/http/client.js.map +1 -0
- package/dist/dts/BrowserHttpClient.d.ts +22 -0
- package/dist/dts/BrowserHttpClient.d.ts.map +1 -0
- package/dist/dts/index.d.ts +4 -0
- package/dist/dts/index.d.ts.map +1 -1
- package/dist/dts/internal/http/client.d.ts +2 -0
- package/dist/dts/internal/http/client.d.ts.map +1 -0
- package/dist/esm/BrowserHttpClient.js +17 -0
- package/dist/esm/BrowserHttpClient.js.map +1 -0
- package/dist/esm/index.js +4 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/internal/http/client.js +194 -0
- package/dist/esm/internal/http/client.js.map +1 -0
- package/package.json +12 -1
- package/src/BrowserHttpClient.ts +25 -0
- package/src/index.ts +5 -0
- package/src/internal/http/client.ts +240 -0
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.xmlHttpRequest = exports.layerXMLHttpRequest = exports.currentXMLHttpRequest = void 0;
|
|
7
|
+
var internal = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("./internal/http/client.js"));
|
|
8
|
+
function _getRequireWildcardCache(e) {
|
|
9
|
+
if ("function" != typeof WeakMap) return null;
|
|
10
|
+
var r = new WeakMap(),
|
|
11
|
+
t = new WeakMap();
|
|
12
|
+
return (_getRequireWildcardCache = function (e) {
|
|
13
|
+
return e ? t : r;
|
|
14
|
+
})(e);
|
|
15
|
+
}
|
|
16
|
+
function _interopRequireWildcard(e, r) {
|
|
17
|
+
if (!r && e && e.__esModule) return e;
|
|
18
|
+
if (null === e || "object" != typeof e && "function" != typeof e) return {
|
|
19
|
+
default: e
|
|
20
|
+
};
|
|
21
|
+
var t = _getRequireWildcardCache(r);
|
|
22
|
+
if (t && t.has(e)) return t.get(e);
|
|
23
|
+
var n = {
|
|
24
|
+
__proto__: null
|
|
25
|
+
},
|
|
26
|
+
a = Object.defineProperty && Object.getOwnPropertyDescriptor;
|
|
27
|
+
for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) {
|
|
28
|
+
var i = a ? Object.getOwnPropertyDescriptor(e, u) : null;
|
|
29
|
+
i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u];
|
|
30
|
+
}
|
|
31
|
+
return n.default = e, t && t.set(e, n), n;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* @since 1.0.0
|
|
35
|
+
* @category clients
|
|
36
|
+
*/
|
|
37
|
+
const xmlHttpRequest = exports.xmlHttpRequest = internal.makeXMLHttpRequest;
|
|
38
|
+
/**
|
|
39
|
+
* @since 1.0.0
|
|
40
|
+
* @category layers
|
|
41
|
+
*/
|
|
42
|
+
const layerXMLHttpRequest = exports.layerXMLHttpRequest = internal.layerXMLHttpRequest;
|
|
43
|
+
/**
|
|
44
|
+
* @since 1.0.0
|
|
45
|
+
* @category fiber refs
|
|
46
|
+
*/
|
|
47
|
+
const currentXMLHttpRequest = exports.currentXMLHttpRequest = internal.currentXMLHttpRequest;
|
|
48
|
+
//# sourceMappingURL=BrowserHttpClient.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BrowserHttpClient.js","names":["internal","_interopRequireWildcard","require","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","prototype","hasOwnProperty","call","i","set","xmlHttpRequest","exports","makeXMLHttpRequest","layerXMLHttpRequest","currentXMLHttpRequest"],"sources":["../../src/BrowserHttpClient.ts"],"sourcesContent":[null],"mappings":";;;;;;AAMA,IAAAA,QAAA,gBAAAC,uBAAA,eAAAC,OAAA;AAAqD,SAAAC,yBAAAC,CAAA;EAAA,yBAAAC,OAAA;EAAA,IAAAC,CAAA,OAAAD,OAAA;IAAAE,CAAA,OAAAF,OAAA;EAAA,QAAAF,wBAAA,YAAAA,CAAAC,CAAA;IAAA,OAAAA,CAAA,GAAAG,CAAA,GAAAD,CAAA;EAAA,GAAAF,CAAA;AAAA;AAAA,SAAAH,wBAAAG,CAAA,EAAAE,CAAA;EAAA,KAAAA,CAAA,IAAAF,CAAA,IAAAA,CAAA,CAAAI,UAAA,SAAAJ,CAAA;EAAA,aAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA;IAAAK,OAAA,EAAAL;EAAA;EAAA,IAAAG,CAAA,GAAAJ,wBAAA,CAAAG,CAAA;EAAA,IAAAC,CAAA,IAAAA,CAAA,CAAAG,GAAA,CAAAN,CAAA,UAAAG,CAAA,CAAAI,GAAA,CAAAP,CAAA;EAAA,IAAAQ,CAAA;MAAAC,SAAA;IAAA;IAAAC,CAAA,GAAAC,MAAA,CAAAC,cAAA,IAAAD,MAAA,CAAAE,wBAAA;EAAA,SAAAC,CAAA,IAAAd,CAAA,oBAAAc,CAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAjB,CAAA,EAAAc,CAAA;IAAA,IAAAI,CAAA,GAAAR,CAAA,GAAAC,MAAA,CAAAE,wBAAA,CAAAb,CAAA,EAAAc,CAAA;IAAAI,CAAA,KAAAA,CAAA,CAAAX,GAAA,IAAAW,CAAA,CAAAC,GAAA,IAAAR,MAAA,CAAAC,cAAA,CAAAJ,CAAA,EAAAM,CAAA,EAAAI,CAAA,IAAAV,CAAA,CAAAM,CAAA,IAAAd,CAAA,CAAAc,CAAA;EAAA;EAAA,OAAAN,CAAA,CAAAH,OAAA,GAAAL,CAAA,EAAAG,CAAA,IAAAA,CAAA,CAAAgB,GAAA,CAAAnB,CAAA,EAAAQ,CAAA,GAAAA,CAAA;AAAA;AAErD;;;;AAIO,MAAMY,cAAc,GAAAC,OAAA,CAAAD,cAAA,GAA0BxB,QAAQ,CAAC0B,kBAAkB;AAEhF;;;;AAIO,MAAMC,mBAAmB,GAAAF,OAAA,CAAAE,mBAAA,GAAqD3B,QAAQ,CAAC2B,mBAAmB;AAEjH;;;;AAIO,MAAMC,qBAAqB,GAAAH,OAAA,CAAAG,qBAAA,GAA6C5B,QAAQ,CAAC4B,qBAAqB"}
|
package/dist/cjs/index.js
CHANGED
|
@@ -3,7 +3,9 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.Clipboard = exports.BrowserWorkerRunner = exports.BrowserWorker = exports.BrowserRuntime = exports.BrowserKeyValueStore = void 0;
|
|
6
|
+
exports.Clipboard = exports.BrowserWorkerRunner = exports.BrowserWorker = exports.BrowserRuntime = exports.BrowserKeyValueStore = exports.BrowserHttpClient = void 0;
|
|
7
|
+
var _BrowserHttpClient = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("./BrowserHttpClient.js"));
|
|
8
|
+
exports.BrowserHttpClient = _BrowserHttpClient;
|
|
7
9
|
var _BrowserKeyValueStore = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("./BrowserKeyValueStore.js"));
|
|
8
10
|
exports.BrowserKeyValueStore = _BrowserKeyValueStore;
|
|
9
11
|
var _BrowserRuntime = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("./BrowserRuntime.js"));
|
|
@@ -0,0 +1,226 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.makeXMLHttpRequest = exports.layerXMLHttpRequest = exports.currentXMLHttpRequest = exports.IncomingMessageImpl = void 0;
|
|
7
|
+
var Client = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@effect/platform/Http/Client"));
|
|
8
|
+
var Error = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@effect/platform/Http/ClientError"));
|
|
9
|
+
var ClientResponse = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@effect/platform/Http/ClientResponse"));
|
|
10
|
+
var Headers = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@effect/platform/Http/Headers"));
|
|
11
|
+
var IncomingMessage = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@effect/platform/Http/IncomingMessage"));
|
|
12
|
+
var UrlParams = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@effect/platform/Http/UrlParams"));
|
|
13
|
+
var Effect = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("effect/Effect"));
|
|
14
|
+
var Either = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("effect/Either"));
|
|
15
|
+
var FiberRef = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("effect/FiberRef"));
|
|
16
|
+
var _GlobalValue = /*#__PURE__*/require("effect/GlobalValue");
|
|
17
|
+
var Layer = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("effect/Layer"));
|
|
18
|
+
var Option = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("effect/Option"));
|
|
19
|
+
var Stream = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("effect/Stream"));
|
|
20
|
+
var HeaderParser = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("multipasta/HeadersParser"));
|
|
21
|
+
function _getRequireWildcardCache(e) {
|
|
22
|
+
if ("function" != typeof WeakMap) return null;
|
|
23
|
+
var r = new WeakMap(),
|
|
24
|
+
t = new WeakMap();
|
|
25
|
+
return (_getRequireWildcardCache = function (e) {
|
|
26
|
+
return e ? t : r;
|
|
27
|
+
})(e);
|
|
28
|
+
}
|
|
29
|
+
function _interopRequireWildcard(e, r) {
|
|
30
|
+
if (!r && e && e.__esModule) return e;
|
|
31
|
+
if (null === e || "object" != typeof e && "function" != typeof e) return {
|
|
32
|
+
default: e
|
|
33
|
+
};
|
|
34
|
+
var t = _getRequireWildcardCache(r);
|
|
35
|
+
if (t && t.has(e)) return t.get(e);
|
|
36
|
+
var n = {
|
|
37
|
+
__proto__: null
|
|
38
|
+
},
|
|
39
|
+
a = Object.defineProperty && Object.getOwnPropertyDescriptor;
|
|
40
|
+
for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) {
|
|
41
|
+
var i = a ? Object.getOwnPropertyDescriptor(e, u) : null;
|
|
42
|
+
i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u];
|
|
43
|
+
}
|
|
44
|
+
return n.default = e, t && t.set(e, n), n;
|
|
45
|
+
}
|
|
46
|
+
/** @internal */
|
|
47
|
+
const currentXMLHttpRequest = exports.currentXMLHttpRequest = /*#__PURE__*/(0, _GlobalValue.globalValue)("@effect/platform-browser/BrowserHttpClient/currentXMLHttpRequest", () => FiberRef.unsafeMake(globalThis.XMLHttpRequest));
|
|
48
|
+
/** @internal */
|
|
49
|
+
const makeXMLHttpRequest = exports.makeXMLHttpRequest = /*#__PURE__*/Client.makeDefault(request => UrlParams.makeUrl(request.url, request.urlParams, _ => Error.RequestError({
|
|
50
|
+
request,
|
|
51
|
+
reason: "InvalidUrl",
|
|
52
|
+
error: _
|
|
53
|
+
})).pipe(Effect.zip(FiberRef.get(currentXMLHttpRequest)), Effect.flatMap(([url, XHR]) => {
|
|
54
|
+
const xhr = new XHR();
|
|
55
|
+
xhr.open(request.method, url.toString(), true);
|
|
56
|
+
xhr.responseType = "text";
|
|
57
|
+
Object.entries(request.headers).forEach(([k, v]) => {
|
|
58
|
+
xhr.setRequestHeader(k, v);
|
|
59
|
+
});
|
|
60
|
+
return sendBody(xhr, request).pipe(Effect.zipLeft(Effect.async(resume => {
|
|
61
|
+
const onChange = () => {
|
|
62
|
+
if (xhr.readyState >= 2) {
|
|
63
|
+
resume(Effect.unit);
|
|
64
|
+
}
|
|
65
|
+
};
|
|
66
|
+
xhr.onreadystatechange = onChange;
|
|
67
|
+
onChange();
|
|
68
|
+
})), Effect.as(new ClientResponseImpl(request, xhr)), Effect.onInterrupt(() => Effect.sync(() => xhr.abort())));
|
|
69
|
+
})));
|
|
70
|
+
const sendBody = (xhr, request) => Effect.suspend(() => {
|
|
71
|
+
const body = request.body;
|
|
72
|
+
switch (body._tag) {
|
|
73
|
+
case "Empty":
|
|
74
|
+
return Effect.sync(() => xhr.send());
|
|
75
|
+
case "Raw":
|
|
76
|
+
return Effect.sync(() => xhr.send(body.body));
|
|
77
|
+
case "Uint8Array":
|
|
78
|
+
return Effect.sync(() => xhr.send(body.body));
|
|
79
|
+
case "FormData":
|
|
80
|
+
return Effect.sync(() => xhr.send(body.formData));
|
|
81
|
+
case "Stream":
|
|
82
|
+
return Effect.matchEffect(Stream.runFold(body.stream, new Uint8Array(0), (acc, chunk) => {
|
|
83
|
+
const next = new Uint8Array(acc.length + chunk.length);
|
|
84
|
+
next.set(acc, 0);
|
|
85
|
+
next.set(chunk, acc.length);
|
|
86
|
+
return next;
|
|
87
|
+
}), {
|
|
88
|
+
onFailure: error => Effect.fail(Error.RequestError({
|
|
89
|
+
request,
|
|
90
|
+
reason: "Encode",
|
|
91
|
+
error
|
|
92
|
+
})),
|
|
93
|
+
onSuccess: body => Effect.sync(() => xhr.send(body))
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
});
|
|
97
|
+
const encoder = /*#__PURE__*/new TextEncoder();
|
|
98
|
+
/** @internal */
|
|
99
|
+
class IncomingMessageImpl {
|
|
100
|
+
source;
|
|
101
|
+
onError;
|
|
102
|
+
[IncomingMessage.TypeId];
|
|
103
|
+
constructor(source, onError) {
|
|
104
|
+
this.source = source;
|
|
105
|
+
this.onError = onError;
|
|
106
|
+
this[IncomingMessage.TypeId] = IncomingMessage.TypeId;
|
|
107
|
+
}
|
|
108
|
+
_headers;
|
|
109
|
+
get headers() {
|
|
110
|
+
if (this._headers) {
|
|
111
|
+
return this._headers;
|
|
112
|
+
}
|
|
113
|
+
const headers = this.source.getAllResponseHeaders();
|
|
114
|
+
if (headers === "") {
|
|
115
|
+
return Headers.empty;
|
|
116
|
+
}
|
|
117
|
+
const parser = HeaderParser.make();
|
|
118
|
+
const result = parser(encoder.encode(headers + "\r\n"), 0);
|
|
119
|
+
const parsed = result._tag === "Headers" ? Headers.fromInput(result.headers) : Headers.empty;
|
|
120
|
+
return this._headers = parsed;
|
|
121
|
+
}
|
|
122
|
+
get remoteAddress() {
|
|
123
|
+
return Option.none();
|
|
124
|
+
}
|
|
125
|
+
_textEffect;
|
|
126
|
+
get text() {
|
|
127
|
+
if (this._textEffect) {
|
|
128
|
+
return this._textEffect;
|
|
129
|
+
}
|
|
130
|
+
return this._textEffect = Effect.async(resume => {
|
|
131
|
+
if (this.source.readyState === 4) {
|
|
132
|
+
resume(Effect.succeed(this.source.response));
|
|
133
|
+
return;
|
|
134
|
+
}
|
|
135
|
+
const onReadyStateChange = () => {
|
|
136
|
+
if (this.source.readyState === 4) {
|
|
137
|
+
resume(Effect.succeed(this.source.response));
|
|
138
|
+
}
|
|
139
|
+
};
|
|
140
|
+
const onError = event => {
|
|
141
|
+
resume(Effect.fail(this.onError(event)));
|
|
142
|
+
};
|
|
143
|
+
this.source.addEventListener("readystatechange", onReadyStateChange);
|
|
144
|
+
this.source.addEventListener("error", onError);
|
|
145
|
+
return Effect.sync(() => {
|
|
146
|
+
this.source.removeEventListener("readystatechange", onReadyStateChange);
|
|
147
|
+
this.source.removeEventListener("error", onError);
|
|
148
|
+
});
|
|
149
|
+
}).pipe(Effect.cached, Effect.runSync);
|
|
150
|
+
}
|
|
151
|
+
get json() {
|
|
152
|
+
return Effect.tryMap(this.text, {
|
|
153
|
+
try: _ => _ === "" ? null : JSON.parse(_),
|
|
154
|
+
catch: this.onError
|
|
155
|
+
});
|
|
156
|
+
}
|
|
157
|
+
get urlParamsBody() {
|
|
158
|
+
return Effect.flatMap(this.text, _ => Effect.try({
|
|
159
|
+
try: () => UrlParams.fromInput(new URLSearchParams(_)),
|
|
160
|
+
catch: this.onError
|
|
161
|
+
}));
|
|
162
|
+
}
|
|
163
|
+
get stream() {
|
|
164
|
+
return Stream.asyncInterrupt(emit => {
|
|
165
|
+
let bytes = 0;
|
|
166
|
+
const onReadyStateChange = () => {
|
|
167
|
+
if (this.source.readyState === 3) {
|
|
168
|
+
emit.single(encoder.encode(this.source.responseText.slice(bytes)));
|
|
169
|
+
bytes = this.source.responseText.length;
|
|
170
|
+
} else if (this.source.readyState === 4) {
|
|
171
|
+
if (bytes < this.source.responseText.length) {
|
|
172
|
+
emit.single(encoder.encode(this.source.responseText.slice(bytes)));
|
|
173
|
+
}
|
|
174
|
+
emit.end();
|
|
175
|
+
}
|
|
176
|
+
};
|
|
177
|
+
const onError = event => {
|
|
178
|
+
emit.fail(this.onError(event));
|
|
179
|
+
};
|
|
180
|
+
this.source.addEventListener("readystatechange", onReadyStateChange);
|
|
181
|
+
this.source.addEventListener("error", onError);
|
|
182
|
+
onReadyStateChange();
|
|
183
|
+
return Either.left(Effect.sync(() => {
|
|
184
|
+
this.source.removeEventListener("readystatechange", onReadyStateChange);
|
|
185
|
+
this.source.removeEventListener("error", onError);
|
|
186
|
+
}));
|
|
187
|
+
});
|
|
188
|
+
}
|
|
189
|
+
get arrayBuffer() {
|
|
190
|
+
return this.text.pipe(Effect.map(_ => encoder.encode(_).buffer));
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
exports.IncomingMessageImpl = IncomingMessageImpl;
|
|
194
|
+
class ClientResponseImpl extends IncomingMessageImpl {
|
|
195
|
+
request;
|
|
196
|
+
[ClientResponse.TypeId];
|
|
197
|
+
constructor(request, source) {
|
|
198
|
+
super(source, _ => Error.ResponseError({
|
|
199
|
+
request,
|
|
200
|
+
response: this,
|
|
201
|
+
reason: "Decode",
|
|
202
|
+
error: _
|
|
203
|
+
}));
|
|
204
|
+
this.request = request;
|
|
205
|
+
this[ClientResponse.TypeId] = ClientResponse.TypeId;
|
|
206
|
+
}
|
|
207
|
+
get status() {
|
|
208
|
+
return this.source.status;
|
|
209
|
+
}
|
|
210
|
+
get formData() {
|
|
211
|
+
return Effect.die("Not implemented");
|
|
212
|
+
}
|
|
213
|
+
toString() {
|
|
214
|
+
return `ClientResponse(${this.status})`;
|
|
215
|
+
}
|
|
216
|
+
toJSON() {
|
|
217
|
+
return {
|
|
218
|
+
_tag: "ClientResponse",
|
|
219
|
+
status: this.status,
|
|
220
|
+
headers: this.headers
|
|
221
|
+
};
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
/** @internal */
|
|
225
|
+
const layerXMLHttpRequest = exports.layerXMLHttpRequest = /*#__PURE__*/Layer.succeed(Client.Client, makeXMLHttpRequest);
|
|
226
|
+
//# sourceMappingURL=client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.js","names":["Client","_interopRequireWildcard","require","Error","ClientResponse","Headers","IncomingMessage","UrlParams","Effect","Either","FiberRef","_GlobalValue","Layer","Option","Stream","HeaderParser","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","prototype","hasOwnProperty","call","i","set","currentXMLHttpRequest","exports","globalValue","unsafeMake","globalThis","XMLHttpRequest","makeXMLHttpRequest","makeDefault","request","makeUrl","url","urlParams","_","RequestError","reason","error","pipe","zip","flatMap","XHR","xhr","open","method","toString","responseType","entries","headers","forEach","k","v","setRequestHeader","sendBody","zipLeft","async","resume","onChange","readyState","unit","onreadystatechange","as","ClientResponseImpl","onInterrupt","sync","abort","suspend","body","_tag","send","formData","matchEffect","runFold","stream","Uint8Array","acc","chunk","next","length","onFailure","fail","onSuccess","encoder","TextEncoder","IncomingMessageImpl","source","onError","TypeId","constructor","_headers","getAllResponseHeaders","empty","parser","make","result","encode","parsed","fromInput","remoteAddress","none","_textEffect","text","succeed","response","onReadyStateChange","event","addEventListener","removeEventListener","cached","runSync","json","tryMap","try","JSON","parse","catch","urlParamsBody","URLSearchParams","asyncInterrupt","emit","bytes","single","responseText","slice","end","left","arrayBuffer","map","buffer","ResponseError","status","die","toJSON","layerXMLHttpRequest"],"sources":["../../../../src/internal/http/client.ts"],"sourcesContent":[null],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @since 1.0.0
|
|
3
|
+
*/
|
|
4
|
+
import type * as Client from "@effect/platform/Http/Client";
|
|
5
|
+
import type * as FiberRef from "effect/FiberRef";
|
|
6
|
+
import type * as Layer from "effect/Layer";
|
|
7
|
+
/**
|
|
8
|
+
* @since 1.0.0
|
|
9
|
+
* @category clients
|
|
10
|
+
*/
|
|
11
|
+
export declare const xmlHttpRequest: Client.Client.Default;
|
|
12
|
+
/**
|
|
13
|
+
* @since 1.0.0
|
|
14
|
+
* @category layers
|
|
15
|
+
*/
|
|
16
|
+
export declare const layerXMLHttpRequest: Layer.Layer<Client.Client.Default, never, never>;
|
|
17
|
+
/**
|
|
18
|
+
* @since 1.0.0
|
|
19
|
+
* @category fiber refs
|
|
20
|
+
*/
|
|
21
|
+
export declare const currentXMLHttpRequest: FiberRef.FiberRef<typeof XMLHttpRequest>;
|
|
22
|
+
//# sourceMappingURL=BrowserHttpClient.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BrowserHttpClient.d.ts","sourceRoot":"","sources":["../../src/BrowserHttpClient.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,KAAK,MAAM,MAAM,8BAA8B,CAAA;AAC3D,OAAO,KAAK,KAAK,QAAQ,MAAM,iBAAiB,CAAA;AAChD,OAAO,KAAK,KAAK,KAAK,MAAM,cAAc,CAAA;AAG1C;;;GAGG;AACH,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,MAAM,CAAC,OAAqC,CAAA;AAEhF;;;GAGG;AACH,eAAO,MAAM,mBAAmB,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,KAAK,EAAE,KAAK,CAAgC,CAAA;AAEjH;;;GAGG;AACH,eAAO,MAAM,qBAAqB,EAAE,QAAQ,CAAC,QAAQ,CAAC,OAAO,cAAc,CAAkC,CAAA"}
|
package/dist/dts/index.d.ts
CHANGED
package/dist/dts/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,oBAAoB,MAAM,2BAA2B,CAAA;AAEjE;;GAEG;AACH,OAAO,KAAK,cAAc,MAAM,qBAAqB,CAAA;AAErD;;GAEG;AACH,OAAO,KAAK,aAAa,MAAM,oBAAoB,CAAA;AAEnD;;GAEG;AACH,OAAO,KAAK,mBAAmB,MAAM,0BAA0B,CAAA;AAE/D;;GAEG;AACH,OAAO,KAAK,SAAS,MAAM,gBAAgB,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,iBAAiB,MAAM,wBAAwB,CAAA;AAE3D;;GAEG;AACH,OAAO,KAAK,oBAAoB,MAAM,2BAA2B,CAAA;AAEjE;;GAEG;AACH,OAAO,KAAK,cAAc,MAAM,qBAAqB,CAAA;AAErD;;GAEG;AACH,OAAO,KAAK,aAAa,MAAM,oBAAoB,CAAA;AAEnD;;GAEG;AACH,OAAO,KAAK,mBAAmB,MAAM,0BAA0B,CAAA;AAE/D;;GAEG;AACH,OAAO,KAAK,SAAS,MAAM,gBAAgB,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../../src/internal/http/client.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import * as internal from "./internal/http/client.js";
|
|
2
|
+
/**
|
|
3
|
+
* @since 1.0.0
|
|
4
|
+
* @category clients
|
|
5
|
+
*/
|
|
6
|
+
export const xmlHttpRequest = internal.makeXMLHttpRequest;
|
|
7
|
+
/**
|
|
8
|
+
* @since 1.0.0
|
|
9
|
+
* @category layers
|
|
10
|
+
*/
|
|
11
|
+
export const layerXMLHttpRequest = internal.layerXMLHttpRequest;
|
|
12
|
+
/**
|
|
13
|
+
* @since 1.0.0
|
|
14
|
+
* @category fiber refs
|
|
15
|
+
*/
|
|
16
|
+
export const currentXMLHttpRequest = internal.currentXMLHttpRequest;
|
|
17
|
+
//# sourceMappingURL=BrowserHttpClient.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BrowserHttpClient.js","names":["internal","xmlHttpRequest","makeXMLHttpRequest","layerXMLHttpRequest","currentXMLHttpRequest"],"sources":["../../src/BrowserHttpClient.ts"],"sourcesContent":[null],"mappings":"AAMA,OAAO,KAAKA,QAAQ,MAAM,2BAA2B;AAErD;;;;AAIA,OAAO,MAAMC,cAAc,GAA0BD,QAAQ,CAACE,kBAAkB;AAEhF;;;;AAIA,OAAO,MAAMC,mBAAmB,GAAqDH,QAAQ,CAACG,mBAAmB;AAEjH;;;;AAIA,OAAO,MAAMC,qBAAqB,GAA6CJ,QAAQ,CAACI,qBAAqB"}
|
package/dist/esm/index.js
CHANGED
package/dist/esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["BrowserKeyValueStore","BrowserRuntime","BrowserWorker","BrowserWorkerRunner","Clipboard"],"sources":["../../src/index.ts"],"sourcesContent":[null],"mappings":"AAAA;;;AAGA,OAAO,KAAKA,oBAAoB,MAAM,2BAA2B;AAEjE;;;AAGA,OAAO,KAAKC,cAAc,MAAM,qBAAqB;AAErD;;;AAGA,OAAO,KAAKC,aAAa,MAAM,oBAAoB;AAEnD;;;AAGA,OAAO,KAAKC,mBAAmB,MAAM,0BAA0B;AAE/D;;;AAGA,OAAO,KAAKC,SAAS,MAAM,gBAAgB"}
|
|
1
|
+
{"version":3,"file":"index.js","names":["BrowserHttpClient","BrowserKeyValueStore","BrowserRuntime","BrowserWorker","BrowserWorkerRunner","Clipboard"],"sources":["../../src/index.ts"],"sourcesContent":[null],"mappings":"AAAA;;;AAGA,OAAO,KAAKA,iBAAiB,MAAM,wBAAwB;AAE3D;;;AAGA,OAAO,KAAKC,oBAAoB,MAAM,2BAA2B;AAEjE;;;AAGA,OAAO,KAAKC,cAAc,MAAM,qBAAqB;AAErD;;;AAGA,OAAO,KAAKC,aAAa,MAAM,oBAAoB;AAEnD;;;AAGA,OAAO,KAAKC,mBAAmB,MAAM,0BAA0B;AAE/D;;;AAGA,OAAO,KAAKC,SAAS,MAAM,gBAAgB"}
|
|
@@ -0,0 +1,194 @@
|
|
|
1
|
+
import * as Client from "@effect/platform/Http/Client";
|
|
2
|
+
import * as Error from "@effect/platform/Http/ClientError";
|
|
3
|
+
import * as ClientResponse from "@effect/platform/Http/ClientResponse";
|
|
4
|
+
import * as Headers from "@effect/platform/Http/Headers";
|
|
5
|
+
import * as IncomingMessage from "@effect/platform/Http/IncomingMessage";
|
|
6
|
+
import * as UrlParams from "@effect/platform/Http/UrlParams";
|
|
7
|
+
import * as Effect from "effect/Effect";
|
|
8
|
+
import * as Either from "effect/Either";
|
|
9
|
+
import * as FiberRef from "effect/FiberRef";
|
|
10
|
+
import { globalValue } from "effect/GlobalValue";
|
|
11
|
+
import * as Layer from "effect/Layer";
|
|
12
|
+
import * as Option from "effect/Option";
|
|
13
|
+
import * as Stream from "effect/Stream";
|
|
14
|
+
import * as HeaderParser from "multipasta/HeadersParser";
|
|
15
|
+
/** @internal */
|
|
16
|
+
export const currentXMLHttpRequest = /*#__PURE__*/globalValue("@effect/platform-browser/BrowserHttpClient/currentXMLHttpRequest", () => FiberRef.unsafeMake(globalThis.XMLHttpRequest));
|
|
17
|
+
/** @internal */
|
|
18
|
+
export const makeXMLHttpRequest = /*#__PURE__*/Client.makeDefault(request => UrlParams.makeUrl(request.url, request.urlParams, _ => Error.RequestError({
|
|
19
|
+
request,
|
|
20
|
+
reason: "InvalidUrl",
|
|
21
|
+
error: _
|
|
22
|
+
})).pipe(Effect.zip(FiberRef.get(currentXMLHttpRequest)), Effect.flatMap(([url, XHR]) => {
|
|
23
|
+
const xhr = new XHR();
|
|
24
|
+
xhr.open(request.method, url.toString(), true);
|
|
25
|
+
xhr.responseType = "text";
|
|
26
|
+
Object.entries(request.headers).forEach(([k, v]) => {
|
|
27
|
+
xhr.setRequestHeader(k, v);
|
|
28
|
+
});
|
|
29
|
+
return sendBody(xhr, request).pipe(Effect.zipLeft(Effect.async(resume => {
|
|
30
|
+
const onChange = () => {
|
|
31
|
+
if (xhr.readyState >= 2) {
|
|
32
|
+
resume(Effect.unit);
|
|
33
|
+
}
|
|
34
|
+
};
|
|
35
|
+
xhr.onreadystatechange = onChange;
|
|
36
|
+
onChange();
|
|
37
|
+
})), Effect.as(new ClientResponseImpl(request, xhr)), Effect.onInterrupt(() => Effect.sync(() => xhr.abort())));
|
|
38
|
+
})));
|
|
39
|
+
const sendBody = (xhr, request) => Effect.suspend(() => {
|
|
40
|
+
const body = request.body;
|
|
41
|
+
switch (body._tag) {
|
|
42
|
+
case "Empty":
|
|
43
|
+
return Effect.sync(() => xhr.send());
|
|
44
|
+
case "Raw":
|
|
45
|
+
return Effect.sync(() => xhr.send(body.body));
|
|
46
|
+
case "Uint8Array":
|
|
47
|
+
return Effect.sync(() => xhr.send(body.body));
|
|
48
|
+
case "FormData":
|
|
49
|
+
return Effect.sync(() => xhr.send(body.formData));
|
|
50
|
+
case "Stream":
|
|
51
|
+
return Effect.matchEffect(Stream.runFold(body.stream, new Uint8Array(0), (acc, chunk) => {
|
|
52
|
+
const next = new Uint8Array(acc.length + chunk.length);
|
|
53
|
+
next.set(acc, 0);
|
|
54
|
+
next.set(chunk, acc.length);
|
|
55
|
+
return next;
|
|
56
|
+
}), {
|
|
57
|
+
onFailure: error => Effect.fail(Error.RequestError({
|
|
58
|
+
request,
|
|
59
|
+
reason: "Encode",
|
|
60
|
+
error
|
|
61
|
+
})),
|
|
62
|
+
onSuccess: body => Effect.sync(() => xhr.send(body))
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
});
|
|
66
|
+
const encoder = /*#__PURE__*/new TextEncoder();
|
|
67
|
+
/** @internal */
|
|
68
|
+
export class IncomingMessageImpl {
|
|
69
|
+
source;
|
|
70
|
+
onError;
|
|
71
|
+
[IncomingMessage.TypeId];
|
|
72
|
+
constructor(source, onError) {
|
|
73
|
+
this.source = source;
|
|
74
|
+
this.onError = onError;
|
|
75
|
+
this[IncomingMessage.TypeId] = IncomingMessage.TypeId;
|
|
76
|
+
}
|
|
77
|
+
_headers;
|
|
78
|
+
get headers() {
|
|
79
|
+
if (this._headers) {
|
|
80
|
+
return this._headers;
|
|
81
|
+
}
|
|
82
|
+
const headers = this.source.getAllResponseHeaders();
|
|
83
|
+
if (headers === "") {
|
|
84
|
+
return Headers.empty;
|
|
85
|
+
}
|
|
86
|
+
const parser = HeaderParser.make();
|
|
87
|
+
const result = parser(encoder.encode(headers + "\r\n"), 0);
|
|
88
|
+
const parsed = result._tag === "Headers" ? Headers.fromInput(result.headers) : Headers.empty;
|
|
89
|
+
return this._headers = parsed;
|
|
90
|
+
}
|
|
91
|
+
get remoteAddress() {
|
|
92
|
+
return Option.none();
|
|
93
|
+
}
|
|
94
|
+
_textEffect;
|
|
95
|
+
get text() {
|
|
96
|
+
if (this._textEffect) {
|
|
97
|
+
return this._textEffect;
|
|
98
|
+
}
|
|
99
|
+
return this._textEffect = Effect.async(resume => {
|
|
100
|
+
if (this.source.readyState === 4) {
|
|
101
|
+
resume(Effect.succeed(this.source.response));
|
|
102
|
+
return;
|
|
103
|
+
}
|
|
104
|
+
const onReadyStateChange = () => {
|
|
105
|
+
if (this.source.readyState === 4) {
|
|
106
|
+
resume(Effect.succeed(this.source.response));
|
|
107
|
+
}
|
|
108
|
+
};
|
|
109
|
+
const onError = event => {
|
|
110
|
+
resume(Effect.fail(this.onError(event)));
|
|
111
|
+
};
|
|
112
|
+
this.source.addEventListener("readystatechange", onReadyStateChange);
|
|
113
|
+
this.source.addEventListener("error", onError);
|
|
114
|
+
return Effect.sync(() => {
|
|
115
|
+
this.source.removeEventListener("readystatechange", onReadyStateChange);
|
|
116
|
+
this.source.removeEventListener("error", onError);
|
|
117
|
+
});
|
|
118
|
+
}).pipe(Effect.cached, Effect.runSync);
|
|
119
|
+
}
|
|
120
|
+
get json() {
|
|
121
|
+
return Effect.tryMap(this.text, {
|
|
122
|
+
try: _ => _ === "" ? null : JSON.parse(_),
|
|
123
|
+
catch: this.onError
|
|
124
|
+
});
|
|
125
|
+
}
|
|
126
|
+
get urlParamsBody() {
|
|
127
|
+
return Effect.flatMap(this.text, _ => Effect.try({
|
|
128
|
+
try: () => UrlParams.fromInput(new URLSearchParams(_)),
|
|
129
|
+
catch: this.onError
|
|
130
|
+
}));
|
|
131
|
+
}
|
|
132
|
+
get stream() {
|
|
133
|
+
return Stream.asyncInterrupt(emit => {
|
|
134
|
+
let bytes = 0;
|
|
135
|
+
const onReadyStateChange = () => {
|
|
136
|
+
if (this.source.readyState === 3) {
|
|
137
|
+
emit.single(encoder.encode(this.source.responseText.slice(bytes)));
|
|
138
|
+
bytes = this.source.responseText.length;
|
|
139
|
+
} else if (this.source.readyState === 4) {
|
|
140
|
+
if (bytes < this.source.responseText.length) {
|
|
141
|
+
emit.single(encoder.encode(this.source.responseText.slice(bytes)));
|
|
142
|
+
}
|
|
143
|
+
emit.end();
|
|
144
|
+
}
|
|
145
|
+
};
|
|
146
|
+
const onError = event => {
|
|
147
|
+
emit.fail(this.onError(event));
|
|
148
|
+
};
|
|
149
|
+
this.source.addEventListener("readystatechange", onReadyStateChange);
|
|
150
|
+
this.source.addEventListener("error", onError);
|
|
151
|
+
onReadyStateChange();
|
|
152
|
+
return Either.left(Effect.sync(() => {
|
|
153
|
+
this.source.removeEventListener("readystatechange", onReadyStateChange);
|
|
154
|
+
this.source.removeEventListener("error", onError);
|
|
155
|
+
}));
|
|
156
|
+
});
|
|
157
|
+
}
|
|
158
|
+
get arrayBuffer() {
|
|
159
|
+
return this.text.pipe(Effect.map(_ => encoder.encode(_).buffer));
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
class ClientResponseImpl extends IncomingMessageImpl {
|
|
163
|
+
request;
|
|
164
|
+
[ClientResponse.TypeId];
|
|
165
|
+
constructor(request, source) {
|
|
166
|
+
super(source, _ => Error.ResponseError({
|
|
167
|
+
request,
|
|
168
|
+
response: this,
|
|
169
|
+
reason: "Decode",
|
|
170
|
+
error: _
|
|
171
|
+
}));
|
|
172
|
+
this.request = request;
|
|
173
|
+
this[ClientResponse.TypeId] = ClientResponse.TypeId;
|
|
174
|
+
}
|
|
175
|
+
get status() {
|
|
176
|
+
return this.source.status;
|
|
177
|
+
}
|
|
178
|
+
get formData() {
|
|
179
|
+
return Effect.die("Not implemented");
|
|
180
|
+
}
|
|
181
|
+
toString() {
|
|
182
|
+
return `ClientResponse(${this.status})`;
|
|
183
|
+
}
|
|
184
|
+
toJSON() {
|
|
185
|
+
return {
|
|
186
|
+
_tag: "ClientResponse",
|
|
187
|
+
status: this.status,
|
|
188
|
+
headers: this.headers
|
|
189
|
+
};
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
/** @internal */
|
|
193
|
+
export const layerXMLHttpRequest = /*#__PURE__*/Layer.succeed(Client.Client, makeXMLHttpRequest);
|
|
194
|
+
//# sourceMappingURL=client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.js","names":["Client","Error","ClientResponse","Headers","IncomingMessage","UrlParams","Effect","Either","FiberRef","globalValue","Layer","Option","Stream","HeaderParser","currentXMLHttpRequest","unsafeMake","globalThis","XMLHttpRequest","makeXMLHttpRequest","makeDefault","request","makeUrl","url","urlParams","_","RequestError","reason","error","pipe","zip","get","flatMap","XHR","xhr","open","method","toString","responseType","Object","entries","headers","forEach","k","v","setRequestHeader","sendBody","zipLeft","async","resume","onChange","readyState","unit","onreadystatechange","as","ClientResponseImpl","onInterrupt","sync","abort","suspend","body","_tag","send","formData","matchEffect","runFold","stream","Uint8Array","acc","chunk","next","length","set","onFailure","fail","onSuccess","encoder","TextEncoder","IncomingMessageImpl","source","onError","TypeId","constructor","_headers","getAllResponseHeaders","empty","parser","make","result","encode","parsed","fromInput","remoteAddress","none","_textEffect","text","succeed","response","onReadyStateChange","event","addEventListener","removeEventListener","cached","runSync","json","tryMap","try","JSON","parse","catch","urlParamsBody","URLSearchParams","asyncInterrupt","emit","bytes","single","responseText","slice","end","left","arrayBuffer","map","buffer","ResponseError","status","die","toJSON","layerXMLHttpRequest"],"sources":["../../../../src/internal/http/client.ts"],"sourcesContent":[null],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@effect/platform-browser",
|
|
3
|
-
"version": "0.29.
|
|
3
|
+
"version": "0.29.7",
|
|
4
4
|
"description": "Unified interfaces for common platform-specific services",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -8,6 +8,9 @@
|
|
|
8
8
|
"url": "https://github.com/effect-ts/effect.git"
|
|
9
9
|
},
|
|
10
10
|
"sideEffects": [],
|
|
11
|
+
"dependencies": {
|
|
12
|
+
"multipasta": "^0.1.21"
|
|
13
|
+
},
|
|
11
14
|
"peerDependencies": {
|
|
12
15
|
"@effect/platform": "^0.44.6",
|
|
13
16
|
"effect": "^2.3.4"
|
|
@@ -22,6 +25,11 @@
|
|
|
22
25
|
"import": "./dist/esm/index.js",
|
|
23
26
|
"default": "./dist/cjs/index.js"
|
|
24
27
|
},
|
|
28
|
+
"./BrowserHttpClient": {
|
|
29
|
+
"types": "./dist/dts/BrowserHttpClient.d.ts",
|
|
30
|
+
"import": "./dist/esm/BrowserHttpClient.js",
|
|
31
|
+
"default": "./dist/cjs/BrowserHttpClient.js"
|
|
32
|
+
},
|
|
25
33
|
"./BrowserKeyValueStore": {
|
|
26
34
|
"types": "./dist/dts/BrowserKeyValueStore.d.ts",
|
|
27
35
|
"import": "./dist/esm/BrowserKeyValueStore.js",
|
|
@@ -50,6 +58,9 @@
|
|
|
50
58
|
},
|
|
51
59
|
"typesVersions": {
|
|
52
60
|
"*": {
|
|
61
|
+
"BrowserHttpClient": [
|
|
62
|
+
"./dist/dts/BrowserHttpClient.d.ts"
|
|
63
|
+
],
|
|
53
64
|
"BrowserKeyValueStore": [
|
|
54
65
|
"./dist/dts/BrowserKeyValueStore.d.ts"
|
|
55
66
|
],
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @since 1.0.0
|
|
3
|
+
*/
|
|
4
|
+
import type * as Client from "@effect/platform/Http/Client"
|
|
5
|
+
import type * as FiberRef from "effect/FiberRef"
|
|
6
|
+
import type * as Layer from "effect/Layer"
|
|
7
|
+
import * as internal from "./internal/http/client.js"
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* @since 1.0.0
|
|
11
|
+
* @category clients
|
|
12
|
+
*/
|
|
13
|
+
export const xmlHttpRequest: Client.Client.Default = internal.makeXMLHttpRequest
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* @since 1.0.0
|
|
17
|
+
* @category layers
|
|
18
|
+
*/
|
|
19
|
+
export const layerXMLHttpRequest: Layer.Layer<Client.Client.Default, never, never> = internal.layerXMLHttpRequest
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* @since 1.0.0
|
|
23
|
+
* @category fiber refs
|
|
24
|
+
*/
|
|
25
|
+
export const currentXMLHttpRequest: FiberRef.FiberRef<typeof XMLHttpRequest> = internal.currentXMLHttpRequest
|
package/src/index.ts
CHANGED
|
@@ -0,0 +1,240 @@
|
|
|
1
|
+
import * as Client from "@effect/platform/Http/Client"
|
|
2
|
+
import * as Error from "@effect/platform/Http/ClientError"
|
|
3
|
+
import type * as ClientRequest from "@effect/platform/Http/ClientRequest"
|
|
4
|
+
import * as ClientResponse from "@effect/platform/Http/ClientResponse"
|
|
5
|
+
import * as Headers from "@effect/platform/Http/Headers"
|
|
6
|
+
import * as IncomingMessage from "@effect/platform/Http/IncomingMessage"
|
|
7
|
+
import * as UrlParams from "@effect/platform/Http/UrlParams"
|
|
8
|
+
import * as Effect from "effect/Effect"
|
|
9
|
+
import * as Either from "effect/Either"
|
|
10
|
+
import * as FiberRef from "effect/FiberRef"
|
|
11
|
+
import { globalValue } from "effect/GlobalValue"
|
|
12
|
+
import * as Layer from "effect/Layer"
|
|
13
|
+
import * as Option from "effect/Option"
|
|
14
|
+
import * as Stream from "effect/Stream"
|
|
15
|
+
import * as HeaderParser from "multipasta/HeadersParser"
|
|
16
|
+
|
|
17
|
+
/** @internal */
|
|
18
|
+
export const currentXMLHttpRequest = globalValue(
|
|
19
|
+
"@effect/platform-browser/BrowserHttpClient/currentXMLHttpRequest",
|
|
20
|
+
() => FiberRef.unsafeMake(globalThis.XMLHttpRequest)
|
|
21
|
+
)
|
|
22
|
+
|
|
23
|
+
/** @internal */
|
|
24
|
+
export const makeXMLHttpRequest = Client.makeDefault((request) =>
|
|
25
|
+
UrlParams.makeUrl(request.url, request.urlParams, (_) =>
|
|
26
|
+
Error.RequestError({
|
|
27
|
+
request,
|
|
28
|
+
reason: "InvalidUrl",
|
|
29
|
+
error: _
|
|
30
|
+
})).pipe(
|
|
31
|
+
Effect.zip(FiberRef.get(currentXMLHttpRequest)),
|
|
32
|
+
Effect.flatMap(([url, XHR]) => {
|
|
33
|
+
const xhr = new XHR()
|
|
34
|
+
xhr.open(request.method, url.toString(), true)
|
|
35
|
+
xhr.responseType = "text"
|
|
36
|
+
Object.entries(request.headers).forEach(([k, v]) => {
|
|
37
|
+
xhr.setRequestHeader(k, v)
|
|
38
|
+
})
|
|
39
|
+
return sendBody(xhr, request).pipe(
|
|
40
|
+
Effect.zipLeft(Effect.async<void>((resume) => {
|
|
41
|
+
const onChange = () => {
|
|
42
|
+
if (xhr.readyState >= 2) {
|
|
43
|
+
resume(Effect.unit)
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
xhr.onreadystatechange = onChange
|
|
47
|
+
onChange()
|
|
48
|
+
})),
|
|
49
|
+
Effect.as(new ClientResponseImpl(request, xhr)),
|
|
50
|
+
Effect.onInterrupt(() => Effect.sync(() => xhr.abort()))
|
|
51
|
+
)
|
|
52
|
+
})
|
|
53
|
+
)
|
|
54
|
+
)
|
|
55
|
+
|
|
56
|
+
const sendBody = (xhr: XMLHttpRequest, request: ClientRequest.ClientRequest): Effect.Effect<void, Error.RequestError> =>
|
|
57
|
+
Effect.suspend(() => {
|
|
58
|
+
const body = request.body
|
|
59
|
+
switch (body._tag) {
|
|
60
|
+
case "Empty":
|
|
61
|
+
return Effect.sync(() => xhr.send())
|
|
62
|
+
case "Raw":
|
|
63
|
+
return Effect.sync(() => xhr.send(body.body as any))
|
|
64
|
+
case "Uint8Array":
|
|
65
|
+
return Effect.sync(() => xhr.send(body.body))
|
|
66
|
+
case "FormData":
|
|
67
|
+
return Effect.sync(() => xhr.send(body.formData))
|
|
68
|
+
case "Stream":
|
|
69
|
+
return Effect.matchEffect(
|
|
70
|
+
Stream.runFold(body.stream, new Uint8Array(0), (acc, chunk) => {
|
|
71
|
+
const next = new Uint8Array(acc.length + chunk.length)
|
|
72
|
+
next.set(acc, 0)
|
|
73
|
+
next.set(chunk, acc.length)
|
|
74
|
+
return next
|
|
75
|
+
}),
|
|
76
|
+
{
|
|
77
|
+
onFailure: (error) =>
|
|
78
|
+
Effect.fail(Error.RequestError({
|
|
79
|
+
request,
|
|
80
|
+
reason: "Encode",
|
|
81
|
+
error
|
|
82
|
+
})),
|
|
83
|
+
onSuccess: (body) => Effect.sync(() => xhr.send(body))
|
|
84
|
+
}
|
|
85
|
+
)
|
|
86
|
+
}
|
|
87
|
+
})
|
|
88
|
+
|
|
89
|
+
const encoder = new TextEncoder()
|
|
90
|
+
|
|
91
|
+
/** @internal */
|
|
92
|
+
export class IncomingMessageImpl<E> implements IncomingMessage.IncomingMessage<E> {
|
|
93
|
+
readonly [IncomingMessage.TypeId]: IncomingMessage.TypeId
|
|
94
|
+
|
|
95
|
+
constructor(
|
|
96
|
+
readonly source: XMLHttpRequest,
|
|
97
|
+
readonly onError: (error: unknown) => E
|
|
98
|
+
) {
|
|
99
|
+
this[IncomingMessage.TypeId] = IncomingMessage.TypeId
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
_headers: Headers.Headers | undefined
|
|
103
|
+
get headers() {
|
|
104
|
+
if (this._headers) {
|
|
105
|
+
return this._headers
|
|
106
|
+
}
|
|
107
|
+
const headers = this.source.getAllResponseHeaders()
|
|
108
|
+
if (headers === "") {
|
|
109
|
+
return Headers.empty
|
|
110
|
+
}
|
|
111
|
+
const parser = HeaderParser.make()
|
|
112
|
+
const result = parser(encoder.encode(headers + "\r\n"), 0)
|
|
113
|
+
const parsed = result._tag === "Headers" ? Headers.fromInput(result.headers) : Headers.empty
|
|
114
|
+
return this._headers = parsed
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
get remoteAddress() {
|
|
118
|
+
return Option.none()
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
_textEffect: Effect.Effect<string, E> | undefined
|
|
122
|
+
get text(): Effect.Effect<string, E> {
|
|
123
|
+
if (this._textEffect) {
|
|
124
|
+
return this._textEffect
|
|
125
|
+
}
|
|
126
|
+
return this._textEffect = Effect.async<string, E>((resume) => {
|
|
127
|
+
if (this.source.readyState === 4) {
|
|
128
|
+
resume(Effect.succeed(this.source.response))
|
|
129
|
+
return
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
const onReadyStateChange = () => {
|
|
133
|
+
if (this.source.readyState === 4) {
|
|
134
|
+
resume(Effect.succeed(this.source.response))
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
const onError = (event: any) => {
|
|
138
|
+
resume(Effect.fail(this.onError(event)))
|
|
139
|
+
}
|
|
140
|
+
this.source.addEventListener("readystatechange", onReadyStateChange)
|
|
141
|
+
this.source.addEventListener("error", onError)
|
|
142
|
+
return Effect.sync(() => {
|
|
143
|
+
this.source.removeEventListener("readystatechange", onReadyStateChange)
|
|
144
|
+
this.source.removeEventListener("error", onError)
|
|
145
|
+
})
|
|
146
|
+
}).pipe(
|
|
147
|
+
Effect.cached,
|
|
148
|
+
Effect.runSync
|
|
149
|
+
)
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
get json(): Effect.Effect<unknown, E> {
|
|
153
|
+
return Effect.tryMap(this.text, {
|
|
154
|
+
try: (_) => _ === "" ? null : JSON.parse(_) as unknown,
|
|
155
|
+
catch: this.onError
|
|
156
|
+
})
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
get urlParamsBody(): Effect.Effect<UrlParams.UrlParams, E> {
|
|
160
|
+
return Effect.flatMap(this.text, (_) =>
|
|
161
|
+
Effect.try({
|
|
162
|
+
try: () => UrlParams.fromInput(new URLSearchParams(_)),
|
|
163
|
+
catch: this.onError
|
|
164
|
+
}))
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
get stream(): Stream.Stream<Uint8Array, E> {
|
|
168
|
+
return Stream.asyncInterrupt<Uint8Array, E>((emit) => {
|
|
169
|
+
let bytes = 0
|
|
170
|
+
const onReadyStateChange = () => {
|
|
171
|
+
if (this.source.readyState === 3) {
|
|
172
|
+
emit.single(encoder.encode(this.source.responseText.slice(bytes)))
|
|
173
|
+
bytes = this.source.responseText.length
|
|
174
|
+
} else if (this.source.readyState === 4) {
|
|
175
|
+
if (bytes < this.source.responseText.length) {
|
|
176
|
+
emit.single(encoder.encode(this.source.responseText.slice(bytes)))
|
|
177
|
+
}
|
|
178
|
+
emit.end()
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
const onError = (event: any) => {
|
|
182
|
+
emit.fail(this.onError(event))
|
|
183
|
+
}
|
|
184
|
+
this.source.addEventListener("readystatechange", onReadyStateChange)
|
|
185
|
+
this.source.addEventListener("error", onError)
|
|
186
|
+
onReadyStateChange()
|
|
187
|
+
return Either.left(Effect.sync(() => {
|
|
188
|
+
this.source.removeEventListener("readystatechange", onReadyStateChange)
|
|
189
|
+
this.source.removeEventListener("error", onError)
|
|
190
|
+
}))
|
|
191
|
+
})
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
get arrayBuffer(): Effect.Effect<ArrayBuffer, E> {
|
|
195
|
+
return this.text.pipe(
|
|
196
|
+
Effect.map((_) => encoder.encode(_).buffer)
|
|
197
|
+
)
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
class ClientResponseImpl extends IncomingMessageImpl<Error.ResponseError> implements ClientResponse.ClientResponse {
|
|
202
|
+
readonly [ClientResponse.TypeId]: ClientResponse.TypeId
|
|
203
|
+
|
|
204
|
+
constructor(
|
|
205
|
+
readonly request: ClientRequest.ClientRequest,
|
|
206
|
+
source: XMLHttpRequest
|
|
207
|
+
) {
|
|
208
|
+
super(source, (_) =>
|
|
209
|
+
Error.ResponseError({
|
|
210
|
+
request,
|
|
211
|
+
response: this,
|
|
212
|
+
reason: "Decode",
|
|
213
|
+
error: _
|
|
214
|
+
}))
|
|
215
|
+
this[ClientResponse.TypeId] = ClientResponse.TypeId
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
get status() {
|
|
219
|
+
return this.source.status
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
get formData(): Effect.Effect<FormData, Error.ResponseError> {
|
|
223
|
+
return Effect.die("Not implemented")
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
toString(): string {
|
|
227
|
+
return `ClientResponse(${this.status})`
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
toJSON(): unknown {
|
|
231
|
+
return {
|
|
232
|
+
_tag: "ClientResponse",
|
|
233
|
+
status: this.status,
|
|
234
|
+
headers: this.headers
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
|
|
239
|
+
/** @internal */
|
|
240
|
+
export const layerXMLHttpRequest = Layer.succeed(Client.Client, makeXMLHttpRequest)
|