@effect/platform 0.13.7 → 0.13.9
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/Http/ClientRequest.d.ts +8 -0
- package/Http/ClientRequest.d.ts.map +1 -1
- package/Http/ClientRequest.js +7 -1
- package/Http/ClientRequest.js.map +1 -1
- package/Http/FormData.d.ts +39 -0
- package/Http/FormData.d.ts.map +1 -1
- package/Http/FormData.js +37 -1
- package/Http/FormData.js.map +1 -1
- package/HttpClient.d.ts +36 -7
- package/HttpClient.d.ts.map +1 -1
- package/HttpClient.js +14 -14
- package/HttpClient.js.map +1 -1
- package/HttpServer.d.ts +51 -10
- package/HttpServer.d.ts.map +1 -1
- package/HttpServer.js +20 -20
- package/HttpServer.js.map +1 -1
- package/internal/http/clientRequest.js +4 -1
- package/internal/http/clientRequest.js.map +1 -1
- package/internal/http/formData.d.ts +1 -7
- package/internal/http/formData.d.ts.map +1 -1
- package/internal/http/formData.js +21 -6
- package/internal/http/formData.js.map +1 -1
- package/internal/http/middleware.js +12 -9
- package/internal/http/middleware.js.map +1 -1
- package/mjs/Http/ClientRequest.mjs +5 -0
- package/mjs/Http/ClientRequest.mjs.map +1 -1
- package/mjs/Http/FormData.mjs +30 -0
- package/mjs/Http/FormData.mjs.map +1 -1
- package/mjs/HttpClient.mjs +57 -14
- package/mjs/HttpClient.mjs.map +1 -1
- package/mjs/HttpServer.mjs +81 -20
- package/mjs/HttpServer.mjs.map +1 -1
- package/mjs/internal/http/clientRequest.mjs +2 -0
- package/mjs/internal/http/clientRequest.mjs.map +1 -1
- package/mjs/internal/http/formData.mjs +14 -5
- package/mjs/internal/http/formData.mjs.map +1 -1
- package/mjs/internal/http/middleware.mjs +12 -9
- package/mjs/internal/http/middleware.mjs.map +1 -1
- package/package.json +1 -1
- package/src/Http/ClientRequest.ts +9 -0
- package/src/Http/FormData.ts +45 -0
- package/src/HttpClient.ts +58 -28
- package/src/HttpServer.ts +82 -40
- package/src/internal/http/clientRequest.ts +6 -0
- package/src/internal/http/formData.ts +38 -5
- package/src/internal/http/middleware.ts +10 -9
|
@@ -21,19 +21,28 @@ export const FormDataError = (reason, error) => Data.struct({
|
|
|
21
21
|
error
|
|
22
22
|
});
|
|
23
23
|
/** @internal */
|
|
24
|
-
export const
|
|
24
|
+
export const maxParts = /*#__PURE__*/globalValue("@effect/platform/Http/FormData/maxParts", () => FiberRef.unsafeMake(Option.none()));
|
|
25
|
+
/** @internal */
|
|
26
|
+
export const withMaxParts = /*#__PURE__*/dual(2, (effect, count) => Effect.locally(effect, maxParts, count));
|
|
27
|
+
/** @internal */
|
|
28
|
+
export const maxFieldSize = /*#__PURE__*/globalValue("@effect/platform/Http/FormData/maxFieldSize", () => FiberRef.unsafeMake(FileSystem.Size(10 * 1024 * 1024)));
|
|
25
29
|
/** @internal */
|
|
26
30
|
export const withMaxFieldSize = /*#__PURE__*/dual(2, (effect, size) => Effect.locally(effect, maxFieldSize, FileSystem.Size(size)));
|
|
27
31
|
/** @internal */
|
|
32
|
+
export const maxFields = /*#__PURE__*/globalValue("@effect/platform/Http/FormData/maxFields", () => FiberRef.unsafeMake(Option.none()));
|
|
33
|
+
/** @internal */
|
|
34
|
+
export const withMaxFields = /*#__PURE__*/dual(2, (effect, count) => Effect.locally(effect, maxFields, count));
|
|
35
|
+
/** @internal */
|
|
36
|
+
export const maxFiles = /*#__PURE__*/globalValue("@effect/platform/Http/FormData/maxFiles", () => FiberRef.unsafeMake(Option.none()));
|
|
37
|
+
/** @internal */
|
|
38
|
+
export const withMaxFiles = /*#__PURE__*/dual(2, (effect, count) => Effect.locally(effect, maxFiles, count));
|
|
39
|
+
/** @internal */
|
|
28
40
|
export const maxFileSize = /*#__PURE__*/globalValue("@effect/platform/Http/FormData/maxFileSize", () => FiberRef.unsafeMake(Option.none()));
|
|
29
41
|
/** @internal */
|
|
30
42
|
export const withMaxFileSize = /*#__PURE__*/dual(2, (effect, size) => Effect.locally(effect, maxFileSize, Option.map(size, FileSystem.Size)));
|
|
31
43
|
/** @internal */
|
|
32
44
|
export const fieldMimeTypes = /*#__PURE__*/globalValue("@effect/platform/Http/FormData/fieldMimeTypes", () => FiberRef.unsafeMake(Chunk.make("application/json")));
|
|
33
|
-
/**
|
|
34
|
-
* @since 1.0.0
|
|
35
|
-
* @category fiber refs
|
|
36
|
-
*/
|
|
45
|
+
/** @internal */
|
|
37
46
|
export const withFieldMimeTypes = /*#__PURE__*/dual(2, (effect, mimeTypes) => Effect.locally(effect, fieldMimeTypes, Chunk.fromIterable(mimeTypes)));
|
|
38
47
|
/** @internal */
|
|
39
48
|
export const toRecord = formData => ReadonlyArray.reduce(formData.entries(), {}, (acc, [key, value]) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"formData.mjs","names":["Chunk","Data","dual","globalValue","Option","Predicate","ReadonlyArray","Effect","FiberRef","FileSystem","Schema","TypeId","Symbol","for","ErrorTypeId","FormDataError","reason","error","struct","_tag","
|
|
1
|
+
{"version":3,"file":"formData.mjs","names":["Chunk","Data","dual","globalValue","Option","Predicate","ReadonlyArray","Effect","FiberRef","FileSystem","Schema","TypeId","Symbol","for","ErrorTypeId","FormDataError","reason","error","struct","_tag","maxParts","unsafeMake","none","withMaxParts","effect","count","locally","maxFieldSize","Size","withMaxFieldSize","size","maxFields","withMaxFields","maxFiles","withMaxFiles","maxFileSize","withMaxFileSize","map","fieldMimeTypes","make","withFieldMimeTypes","mimeTypes","fromIterable","toRecord","formData","reduce","entries","acc","key","value","isString","existing","Array","isArray","push","filesSchema","array","filter","blob","instanceOf","Blob","schemaRecord","schema","parse","schemaJson","field","flatMap","tryMap","try","JSON","catch","filterOrFail","succeed","get"],"sources":["../../../src/internal/http/formData.ts"],"sourcesContent":[null],"mappings":"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"}
|
|
@@ -5,15 +5,18 @@ import * as ServerRequest from "@effect/platform/Http/ServerRequest";
|
|
|
5
5
|
/** @internal */
|
|
6
6
|
export const make = middleware => middleware;
|
|
7
7
|
/** @internal */
|
|
8
|
-
export const logger = /*#__PURE__*/make(httpApp =>
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
8
|
+
export const logger = /*#__PURE__*/make(httpApp => {
|
|
9
|
+
let counter = 0;
|
|
10
|
+
return Effect.flatMap(ServerRequest.ServerRequest, request => Effect.withLogSpan(Effect.tap(Effect.tapErrorCause(httpApp, cause => Effect.annotateLogs(Effect.log(cause), {
|
|
11
|
+
"http.method": request.method,
|
|
12
|
+
"http.url": request.url,
|
|
13
|
+
"http.status": 500
|
|
14
|
+
})), response => Effect.annotateLogs(Effect.log(""), {
|
|
15
|
+
"http.method": request.method,
|
|
16
|
+
"http.url": request.url,
|
|
17
|
+
"http.status": response.status
|
|
18
|
+
})), `http.span.${++counter}`));
|
|
19
|
+
});
|
|
17
20
|
/** @internal */
|
|
18
21
|
export const tracer = /*#__PURE__*/make(httpApp => Effect.flatMap(ServerRequest.ServerRequest, request => Effect.withSpan(Effect.tap(httpApp, response => Effect.annotateCurrentSpan("http.status", response.status)), `http ${request.method}`, {
|
|
19
22
|
attributes: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"middleware.mjs","names":["flow","Effect","Headers","ServerRequest","make","middleware","logger","httpApp","
|
|
1
|
+
{"version":3,"file":"middleware.mjs","names":["flow","Effect","Headers","ServerRequest","make","middleware","logger","httpApp","counter","flatMap","request","withLogSpan","tap","tapErrorCause","cause","annotateLogs","log","method","url","response","status","tracer","withSpan","annotateCurrentSpan","attributes","xForwardedHeaders","updateService","headers","replaceHeaders","set","loggerTracer"],"sources":["../../../src/internal/http/middleware.ts"],"sourcesContent":[null],"mappings":"AAAA,SAASA,IAAI,QAAQ,uBAAuB;AAC5C,OAAO,KAAKC,MAAM,MAAM,mBAAmB;AAC3C,OAAO,KAAKC,OAAO,MAAM,+BAA+B;AAExD,OAAO,KAAKC,aAAa,MAAM,qCAAqC;AAEpE;AACA,OAAO,MAAMC,IAAI,GAAqCC,UAAa,IAAQA,UAAU;AAErF;AACA,OAAO,MAAMC,MAAM,gBAAGF,IAAI,CAAEG,OAAO,IAAI;EACrC,IAAIC,OAAO,GAAG,CAAC;EACf,OAAOP,MAAM,CAACQ,OAAO,CACnBN,aAAa,CAACA,aAAa,EAC1BO,OAAO,IACNT,MAAM,CAACU,WAAW,CAChBV,MAAM,CAACW,GAAG,CACRX,MAAM,CAACY,aAAa,CAACN,OAAO,EAAGO,KAAK,IAClCb,MAAM,CAACc,YAAY,CAACd,MAAM,CAACe,GAAG,CAACF,KAAK,CAAC,EAAE;IACrC,aAAa,EAAEJ,OAAO,CAACO,MAAM;IAC7B,UAAU,EAAEP,OAAO,CAACQ,GAAG;IACvB,aAAa,EAAE;GAChB,CAAC,CAAC,EACJC,QAAQ,IACPlB,MAAM,CAACc,YAAY,CAACd,MAAM,CAACe,GAAG,CAAC,EAAE,CAAC,EAAE;IAClC,aAAa,EAAEN,OAAO,CAACO,MAAM;IAC7B,UAAU,EAAEP,OAAO,CAACQ,GAAG;IACvB,aAAa,EAAEC,QAAQ,CAACC;GACzB,CAAC,CACL,EACD,aAAa,EAAEZ,OAAO,EAAE,CACzB,CACJ;AACH,CAAC,CAAC;AAEF;AACA,OAAO,MAAMa,MAAM,gBAAGjB,IAAI,CAAEG,OAAO,IACjCN,MAAM,CAACQ,OAAO,CACZN,aAAa,CAACA,aAAa,EAC1BO,OAAO,IACNT,MAAM,CAACqB,QAAQ,CACbrB,MAAM,CAACW,GAAG,CACRL,OAAO,EACNY,QAAQ,IAAKlB,MAAM,CAACsB,mBAAmB,CAAC,aAAa,EAAEJ,QAAQ,CAACC,MAAM,CAAC,CACzE,EACD,QAAQV,OAAO,CAACO,MAAM,EAAE,EACxB;EAAEO,UAAU,EAAE;IAAE,aAAa,EAAEd,OAAO,CAACO,MAAM;IAAE,UAAU,EAAEP,OAAO,CAACQ;EAAG;AAAE,CAAE,CAC3E,CACJ,CACF;AAED;AACA,OAAO,MAAMO,iBAAiB,gBAAGrB,IAAI,CAAEG,OAAO,IAC5CN,MAAM,CAACyB,aAAa,CAACnB,OAAO,EAAEJ,aAAa,CAACA,aAAa,EAAGO,OAAO,IACjEA,OAAO,CAACiB,OAAO,CAAC,kBAAkB,CAAC,GAC/BjB,OAAO,CAACkB,cAAc,CAAC1B,OAAO,CAAC2B,GAAG,CAClCnB,OAAO,CAACiB,OAAO,EACf,MAAM,EACNjB,OAAO,CAACiB,OAAO,CAAC,kBAAkB,CAAC,CACpC,CAAC,GACAjB,OAAO,CAAC,CACf;AAED;AACA,OAAO,MAAMoB,YAAY,gBAAG9B,IAAI,CAACqB,MAAM,EAAEf,MAAM,CAAC"}
|
package/package.json
CHANGED
|
@@ -181,6 +181,15 @@ export const basicAuth: {
|
|
|
181
181
|
(self: ClientRequest, username: string, password: string): ClientRequest
|
|
182
182
|
} = internal.basicAuth
|
|
183
183
|
|
|
184
|
+
/**
|
|
185
|
+
* @since 1.0.0
|
|
186
|
+
* @category combinators
|
|
187
|
+
*/
|
|
188
|
+
export const bearerToken: {
|
|
189
|
+
(token: string): (self: ClientRequest) => ClientRequest
|
|
190
|
+
(self: ClientRequest, token: string): ClientRequest
|
|
191
|
+
} = internal.bearerToken
|
|
192
|
+
|
|
184
193
|
/**
|
|
185
194
|
* @since 1.0.0
|
|
186
195
|
* @category combinators
|
package/src/Http/FormData.ts
CHANGED
|
@@ -99,6 +99,36 @@ export const FormDataError: (
|
|
|
99
99
|
error: unknown
|
|
100
100
|
) => FormDataError = internal.FormDataError
|
|
101
101
|
|
|
102
|
+
/**
|
|
103
|
+
* @since 1.0.0
|
|
104
|
+
* @category fiber refs
|
|
105
|
+
*/
|
|
106
|
+
export const maxParts: FiberRef.FiberRef<Option.Option<number>> = internal.maxParts
|
|
107
|
+
|
|
108
|
+
/**
|
|
109
|
+
* @since 1.0.0
|
|
110
|
+
* @category fiber refs
|
|
111
|
+
*/
|
|
112
|
+
export const withMaxParts: {
|
|
113
|
+
(count: Option.Option<number>): <R, E, A>(effect: Effect.Effect<R, E, A>) => Effect.Effect<R, E, A>
|
|
114
|
+
<R, E, A>(effect: Effect.Effect<R, E, A>, count: Option.Option<number>): Effect.Effect<R, E, A>
|
|
115
|
+
} = internal.withMaxParts
|
|
116
|
+
|
|
117
|
+
/**
|
|
118
|
+
* @since 1.0.0
|
|
119
|
+
* @category fiber refs
|
|
120
|
+
*/
|
|
121
|
+
export const maxFields: FiberRef.FiberRef<Option.Option<number>> = internal.maxFields
|
|
122
|
+
|
|
123
|
+
/**
|
|
124
|
+
* @since 1.0.0
|
|
125
|
+
* @category fiber refs
|
|
126
|
+
*/
|
|
127
|
+
export const withMaxFields: {
|
|
128
|
+
(count: Option.Option<number>): <R, E, A>(effect: Effect.Effect<R, E, A>) => Effect.Effect<R, E, A>
|
|
129
|
+
<R, E, A>(effect: Effect.Effect<R, E, A>, count: Option.Option<number>): Effect.Effect<R, E, A>
|
|
130
|
+
} = internal.withMaxFields
|
|
131
|
+
|
|
102
132
|
/**
|
|
103
133
|
* @since 1.0.0
|
|
104
134
|
* @category fiber refs
|
|
@@ -114,6 +144,21 @@ export const withMaxFieldSize: {
|
|
|
114
144
|
<R, E, A>(effect: Effect.Effect<R, E, A>, size: FileSystem.SizeInput): Effect.Effect<R, E, A>
|
|
115
145
|
} = internal.withMaxFieldSize
|
|
116
146
|
|
|
147
|
+
/**
|
|
148
|
+
* @since 1.0.0
|
|
149
|
+
* @category fiber refs
|
|
150
|
+
*/
|
|
151
|
+
export const maxFiles: FiberRef.FiberRef<Option.Option<number>> = internal.maxFiles
|
|
152
|
+
|
|
153
|
+
/**
|
|
154
|
+
* @since 1.0.0
|
|
155
|
+
* @category fiber refs
|
|
156
|
+
*/
|
|
157
|
+
export const withMaxFiles: {
|
|
158
|
+
(count: Option.Option<number>): <R, E, A>(effect: Effect.Effect<R, E, A>) => Effect.Effect<R, E, A>
|
|
159
|
+
<R, E, A>(effect: Effect.Effect<R, E, A>, count: Option.Option<number>): Effect.Effect<R, E, A>
|
|
160
|
+
} = internal.withMaxFiles
|
|
161
|
+
|
|
117
162
|
/**
|
|
118
163
|
* @since 1.0.0
|
|
119
164
|
* @category fiber refs
|
package/src/HttpClient.ts
CHANGED
|
@@ -1,32 +1,62 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @since 1.0.0
|
|
3
3
|
*/
|
|
4
|
+
import * as body from "@effect/platform/Http/Body"
|
|
5
|
+
import * as client from "@effect/platform/Http/Client"
|
|
6
|
+
import * as error from "@effect/platform/Http/ClientError"
|
|
7
|
+
import * as request from "@effect/platform/Http/ClientRequest"
|
|
8
|
+
import * as response from "@effect/platform/Http/ClientResponse"
|
|
9
|
+
import * as headers from "@effect/platform/Http/Headers"
|
|
10
|
+
import * as urlParams from "@effect/platform/Http/UrlParams"
|
|
4
11
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
/**
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
12
|
+
export {
|
|
13
|
+
/**
|
|
14
|
+
* @since 1.0.0
|
|
15
|
+
*
|
|
16
|
+
* - Docs: [Http/Body](https://effect-ts.github.io/platform/platform/Http/Body.ts.html)
|
|
17
|
+
* - Module: `@effect/platform/Http/Body`
|
|
18
|
+
*/
|
|
19
|
+
body,
|
|
20
|
+
/**
|
|
21
|
+
* @since 1.0.0
|
|
22
|
+
*
|
|
23
|
+
* - Docs: [Http/Client](https://effect-ts.github.io/platform/platform/Http/Client.ts.html)
|
|
24
|
+
* - Module: `@effect/platform/Http/Client`
|
|
25
|
+
*/
|
|
26
|
+
client,
|
|
27
|
+
/**
|
|
28
|
+
* @since 1.0.0
|
|
29
|
+
*
|
|
30
|
+
* - Docs: [Http/ClientError](https://effect-ts.github.io/platform/platform/Http/ClientError.ts.html)
|
|
31
|
+
* - Module: `@effect/platform/Http/ClientError`
|
|
32
|
+
*/
|
|
33
|
+
error,
|
|
34
|
+
/**
|
|
35
|
+
* @since 1.0.0
|
|
36
|
+
*
|
|
37
|
+
* - Docs: [Http/Headers](https://effect-ts.github.io/platform/platform/Http/Headers.ts.html)
|
|
38
|
+
* - Module: `@effect/platform/Http/Headers`
|
|
39
|
+
*/
|
|
40
|
+
headers,
|
|
41
|
+
/**
|
|
42
|
+
* @since 1.0.0
|
|
43
|
+
*
|
|
44
|
+
* - Docs: [Http/ClientRequest](https://effect-ts.github.io/platform/platform/Http/ClientRequest.ts.html)
|
|
45
|
+
* - Module: `@effect/platform/Http/ClientRequest`
|
|
46
|
+
*/
|
|
47
|
+
request,
|
|
48
|
+
/**
|
|
49
|
+
* @since 1.0.0
|
|
50
|
+
*
|
|
51
|
+
* - Docs: [Http/ClientResponse](https://effect-ts.github.io/platform/platform/Http/ClientResponse.ts.html)
|
|
52
|
+
* - Module: `@effect/platform/Http/ClientResponse`
|
|
53
|
+
*/
|
|
54
|
+
response,
|
|
55
|
+
/**
|
|
56
|
+
* @since 1.0.0
|
|
57
|
+
*
|
|
58
|
+
* - Docs: [Http/UrlParams](https://effect-ts.github.io/platform/platform/Http/UrlParams.ts.html)
|
|
59
|
+
* - Module: `@effect/platform/Http/UrlParams`
|
|
60
|
+
*/
|
|
61
|
+
urlParams
|
|
62
|
+
}
|
package/src/HttpServer.ts
CHANGED
|
@@ -1,44 +1,86 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @since 1.0.0
|
|
3
3
|
*/
|
|
4
|
+
import * as app from "@effect/platform/Http/App"
|
|
5
|
+
import * as body from "@effect/platform/Http/Body"
|
|
6
|
+
import * as formData from "@effect/platform/Http/FormData"
|
|
7
|
+
import * as headers from "@effect/platform/Http/Headers"
|
|
8
|
+
import * as middleware from "@effect/platform/Http/Middleware"
|
|
9
|
+
import * as router from "@effect/platform/Http/Router"
|
|
10
|
+
import * as error from "@effect/platform/Http/ServerError"
|
|
11
|
+
import * as request from "@effect/platform/Http/ServerRequest"
|
|
12
|
+
import * as response from "@effect/platform/Http/ServerResponse"
|
|
13
|
+
import * as urlParams from "@effect/platform/Http/UrlParams"
|
|
4
14
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
/**
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
/**
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
15
|
+
export {
|
|
16
|
+
/**
|
|
17
|
+
* @since 1.0.0
|
|
18
|
+
*
|
|
19
|
+
* - Docs: [Http/App](https://effect-ts.github.io/platform/platform/Http/App.html)
|
|
20
|
+
* - Module: `@effect/platform/Http/App`
|
|
21
|
+
*/
|
|
22
|
+
app,
|
|
23
|
+
/**
|
|
24
|
+
* @since 1.0.0
|
|
25
|
+
*
|
|
26
|
+
* - Docs: [Http/Body](https://effect-ts.github.io/platform/platform/Http/Body.html)
|
|
27
|
+
* - Module: `@effect/platform/Http/Body`
|
|
28
|
+
*/
|
|
29
|
+
body,
|
|
30
|
+
/**
|
|
31
|
+
* @since 1.0.0
|
|
32
|
+
*
|
|
33
|
+
* - Docs: [Http/ServerError](https://effect-ts.github.io/platform/platform/Http/ServerError.html)
|
|
34
|
+
* - Module: `@effect/platform/Http/ServerError`
|
|
35
|
+
*/
|
|
36
|
+
error,
|
|
37
|
+
/**
|
|
38
|
+
* @since 1.0.0
|
|
39
|
+
*
|
|
40
|
+
* - Docs: [Http/FormData](https://effect-ts.github.io/platform/platform/Http/FormData.html)
|
|
41
|
+
* - Module: `@effect/platform/Http/FormData`
|
|
42
|
+
*/
|
|
43
|
+
formData,
|
|
44
|
+
/**
|
|
45
|
+
* @since 1.0.0
|
|
46
|
+
*
|
|
47
|
+
* - Docs: [Http/Headers](https://effect-ts.github.io/platform/platform/Http/Headers.html)
|
|
48
|
+
* - Module: `@effect/platform/Http/Headers`
|
|
49
|
+
*/
|
|
50
|
+
headers,
|
|
51
|
+
/**
|
|
52
|
+
* @since 1.0.0
|
|
53
|
+
*
|
|
54
|
+
* - Docs: [Http/Middleware](https://effect-ts.github.io/platform/platform/Http/Middleware.html)
|
|
55
|
+
* - Module: `@effect/platform/Http/Middleware`
|
|
56
|
+
*/
|
|
57
|
+
middleware,
|
|
58
|
+
/**
|
|
59
|
+
* @since 1.0.0
|
|
60
|
+
*
|
|
61
|
+
* - Docs: [Http/ServerRequest](https://effect-ts.github.io/platform/platform/Http/ServerRequest.html)
|
|
62
|
+
* - Module: `@effect/platform/Http/ServerRequest`
|
|
63
|
+
*/
|
|
64
|
+
request,
|
|
65
|
+
/**
|
|
66
|
+
* @since 1.0.0
|
|
67
|
+
*
|
|
68
|
+
* - Docs: [Http/ServerResponse](https://effect-ts.github.io/platform/platform/Http/ServerResponse.html)
|
|
69
|
+
* - Module: `@effect/platform/Http/ServerResponse`
|
|
70
|
+
*/
|
|
71
|
+
response,
|
|
72
|
+
/**
|
|
73
|
+
* @since 1.0.0
|
|
74
|
+
*
|
|
75
|
+
* - Docs: [Http/Router](https://effect-ts.github.io/platform/platform/Http/Router.html)
|
|
76
|
+
* - Module: `@effect/platform/Http/Router`
|
|
77
|
+
*/
|
|
78
|
+
router,
|
|
79
|
+
/**
|
|
80
|
+
* @since 1.0.0
|
|
81
|
+
*
|
|
82
|
+
* - Docs: [Http/UrlParams](https://effect-ts.github.io/platform/platform/Http/UrlParams.html)
|
|
83
|
+
* - Module: `@effect/platform/Http/UrlParams`
|
|
84
|
+
*/
|
|
85
|
+
urlParams
|
|
86
|
+
}
|
|
@@ -144,6 +144,12 @@ export const basicAuth = dual<
|
|
|
144
144
|
(self: ClientRequest.ClientRequest, username: string, password: string) => ClientRequest.ClientRequest
|
|
145
145
|
>(3, (self, username, password) => setHeader(self, "Authorization", `Basic ${btoa(`${username}:${password}`)}`))
|
|
146
146
|
|
|
147
|
+
/** @internal */
|
|
148
|
+
export const bearerToken = dual<
|
|
149
|
+
(token: string) => (self: ClientRequest.ClientRequest) => ClientRequest.ClientRequest,
|
|
150
|
+
(self: ClientRequest.ClientRequest, token: string) => ClientRequest.ClientRequest
|
|
151
|
+
>(2, (self, token) => setHeader(self, "Authorization", `Bearer ${token}`))
|
|
152
|
+
|
|
147
153
|
/** @internal */
|
|
148
154
|
export const accept = dual<
|
|
149
155
|
(mediaType: string) => (self: ClientRequest.ClientRequest) => ClientRequest.ClientRequest,
|
|
@@ -29,10 +29,22 @@ export const FormDataError = (reason: FormData.FormDataError["reason"], error: u
|
|
|
29
29
|
error
|
|
30
30
|
})
|
|
31
31
|
|
|
32
|
+
/** @internal */
|
|
33
|
+
export const maxParts: FiberRef.FiberRef<Option.Option<number>> = globalValue(
|
|
34
|
+
"@effect/platform/Http/FormData/maxParts",
|
|
35
|
+
() => FiberRef.unsafeMake(Option.none<number>())
|
|
36
|
+
)
|
|
37
|
+
|
|
38
|
+
/** @internal */
|
|
39
|
+
export const withMaxParts = dual<
|
|
40
|
+
(count: Option.Option<number>) => <R, E, A>(effect: Effect.Effect<R, E, A>) => Effect.Effect<R, E, A>,
|
|
41
|
+
<R, E, A>(effect: Effect.Effect<R, E, A>, count: Option.Option<number>) => Effect.Effect<R, E, A>
|
|
42
|
+
>(2, (effect, count) => Effect.locally(effect, maxParts, count))
|
|
43
|
+
|
|
32
44
|
/** @internal */
|
|
33
45
|
export const maxFieldSize: FiberRef.FiberRef<FileSystem.Size> = globalValue(
|
|
34
46
|
"@effect/platform/Http/FormData/maxFieldSize",
|
|
35
|
-
() => FiberRef.unsafeMake(FileSystem.Size(1024 * 1024))
|
|
47
|
+
() => FiberRef.unsafeMake(FileSystem.Size(10 * 1024 * 1024))
|
|
36
48
|
)
|
|
37
49
|
|
|
38
50
|
/** @internal */
|
|
@@ -41,6 +53,30 @@ export const withMaxFieldSize = dual<
|
|
|
41
53
|
<R, E, A>(effect: Effect.Effect<R, E, A>, size: FileSystem.SizeInput) => Effect.Effect<R, E, A>
|
|
42
54
|
>(2, (effect, size) => Effect.locally(effect, maxFieldSize, FileSystem.Size(size)))
|
|
43
55
|
|
|
56
|
+
/** @internal */
|
|
57
|
+
export const maxFields: FiberRef.FiberRef<Option.Option<number>> = globalValue(
|
|
58
|
+
"@effect/platform/Http/FormData/maxFields",
|
|
59
|
+
() => FiberRef.unsafeMake(Option.none<number>())
|
|
60
|
+
)
|
|
61
|
+
|
|
62
|
+
/** @internal */
|
|
63
|
+
export const withMaxFields = dual<
|
|
64
|
+
(count: Option.Option<number>) => <R, E, A>(effect: Effect.Effect<R, E, A>) => Effect.Effect<R, E, A>,
|
|
65
|
+
<R, E, A>(effect: Effect.Effect<R, E, A>, count: Option.Option<number>) => Effect.Effect<R, E, A>
|
|
66
|
+
>(2, (effect, count) => Effect.locally(effect, maxFields, count))
|
|
67
|
+
|
|
68
|
+
/** @internal */
|
|
69
|
+
export const maxFiles: FiberRef.FiberRef<Option.Option<number>> = globalValue(
|
|
70
|
+
"@effect/platform/Http/FormData/maxFiles",
|
|
71
|
+
() => FiberRef.unsafeMake(Option.none<number>())
|
|
72
|
+
)
|
|
73
|
+
|
|
74
|
+
/** @internal */
|
|
75
|
+
export const withMaxFiles = dual<
|
|
76
|
+
(count: Option.Option<number>) => <R, E, A>(effect: Effect.Effect<R, E, A>) => Effect.Effect<R, E, A>,
|
|
77
|
+
<R, E, A>(effect: Effect.Effect<R, E, A>, count: Option.Option<number>) => Effect.Effect<R, E, A>
|
|
78
|
+
>(2, (effect, count) => Effect.locally(effect, maxFiles, count))
|
|
79
|
+
|
|
44
80
|
/** @internal */
|
|
45
81
|
export const maxFileSize: FiberRef.FiberRef<Option.Option<FileSystem.Size>> = globalValue(
|
|
46
82
|
"@effect/platform/Http/FormData/maxFileSize",
|
|
@@ -59,10 +95,7 @@ export const fieldMimeTypes: FiberRef.FiberRef<Chunk.Chunk<string>> = globalValu
|
|
|
59
95
|
() => FiberRef.unsafeMake(Chunk.make("application/json"))
|
|
60
96
|
)
|
|
61
97
|
|
|
62
|
-
/**
|
|
63
|
-
* @since 1.0.0
|
|
64
|
-
* @category fiber refs
|
|
65
|
-
*/
|
|
98
|
+
/** @internal */
|
|
66
99
|
export const withFieldMimeTypes = dual<
|
|
67
100
|
(mimeTypes: ReadonlyArray<string>) => <R, E, A>(effect: Effect.Effect<R, E, A>) => Effect.Effect<R, E, A>,
|
|
68
101
|
<R, E, A>(effect: Effect.Effect<R, E, A>, mimeTypes: ReadonlyArray<string>) => Effect.Effect<R, E, A>
|
|
@@ -8,11 +8,12 @@ import * as ServerRequest from "@effect/platform/Http/ServerRequest"
|
|
|
8
8
|
export const make = <M extends Middleware.Middleware>(middleware: M): M => middleware
|
|
9
9
|
|
|
10
10
|
/** @internal */
|
|
11
|
-
export const logger = make((httpApp) =>
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
11
|
+
export const logger = make((httpApp) => {
|
|
12
|
+
let counter = 0
|
|
13
|
+
return Effect.flatMap(
|
|
14
|
+
ServerRequest.ServerRequest,
|
|
15
|
+
(request) =>
|
|
16
|
+
Effect.withLogSpan(
|
|
16
17
|
Effect.tap(
|
|
17
18
|
Effect.tapErrorCause(httpApp, (cause) =>
|
|
18
19
|
Effect.annotateLogs(Effect.log(cause), {
|
|
@@ -26,11 +27,11 @@ export const logger = make((httpApp) =>
|
|
|
26
27
|
"http.url": request.url,
|
|
27
28
|
"http.status": response.status
|
|
28
29
|
})
|
|
29
|
-
)
|
|
30
|
-
|
|
31
|
-
|
|
30
|
+
),
|
|
31
|
+
`http.span.${++counter}`
|
|
32
|
+
)
|
|
32
33
|
)
|
|
33
|
-
)
|
|
34
|
+
})
|
|
34
35
|
|
|
35
36
|
/** @internal */
|
|
36
37
|
export const tracer = make((httpApp) =>
|