@effect/platform 0.13.16 → 0.14.1
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/CommandExecutor.d.ts.map +1 -1
- package/Error.d.ts.map +1 -1
- package/FileSystem.d.ts.map +1 -1
- package/Http/Body.d.ts.map +1 -1
- package/Http/Client.d.ts.map +1 -1
- package/Http/ClientError.d.ts.map +1 -1
- package/Http/ClientRequest.d.ts.map +1 -1
- package/Http/FormData.d.ts.map +1 -1
- package/Http/IncomingMessage.js +1 -1
- package/Http/Middleware.d.ts.map +1 -1
- package/Http/Platform.d.ts +43 -0
- package/Http/Platform.d.ts.map +1 -0
- package/Http/Platform.js +28 -0
- package/Http/Platform.js.map +1 -0
- package/Http/Router.d.ts.map +1 -1
- package/Http/ServerError.d.ts.map +1 -1
- package/Http/ServerResponse.d.ts +3 -3
- package/Http/ServerResponse.d.ts.map +1 -1
- package/Http/ServerResponse.js.map +1 -1
- package/KeyValueStore.d.ts.map +1 -1
- package/Path.d.ts.map +1 -1
- package/internal/http/formData.js +7 -7
- package/internal/http/formData.js.map +1 -1
- package/internal/http/middleware.js +3 -3
- package/internal/http/middleware.js.map +1 -1
- package/internal/http/platform.d.ts +2 -0
- package/internal/http/platform.d.ts.map +1 -0
- package/internal/http/platform.js +58 -0
- package/internal/http/platform.js.map +1 -0
- package/internal/http/router.d.ts.map +1 -1
- package/internal/http/router.js +4 -1
- package/internal/http/router.js.map +1 -1
- package/internal/http/serverResponse.js +3 -33
- package/internal/http/serverResponse.js.map +1 -1
- package/mjs/Http/IncomingMessage.mjs +1 -1
- package/mjs/Http/IncomingMessage.mjs.map +1 -1
- package/mjs/Http/Platform.mjs +17 -0
- package/mjs/Http/Platform.mjs.map +1 -0
- package/mjs/Http/ServerResponse.mjs.map +1 -1
- package/mjs/internal/http/formData.mjs +1 -1
- package/mjs/internal/http/formData.mjs.map +1 -1
- package/mjs/internal/http/middleware.mjs +3 -3
- package/mjs/internal/http/middleware.mjs.map +1 -1
- package/mjs/internal/http/platform.mjs +47 -0
- package/mjs/internal/http/platform.mjs.map +1 -0
- package/mjs/internal/http/router.mjs +4 -1
- package/mjs/internal/http/router.mjs.map +1 -1
- package/mjs/internal/http/serverResponse.mjs +4 -34
- package/mjs/internal/http/serverResponse.mjs.map +1 -1
- package/package.json +5 -6
- package/src/CommandExecutor.ts +1 -1
- package/src/Error.ts +1 -1
- package/src/FileSystem.ts +1 -1
- package/src/Http/Body.ts +1 -1
- package/src/Http/Client.ts +1 -1
- package/src/Http/ClientError.ts +1 -1
- package/src/Http/ClientRequest.ts +1 -1
- package/src/Http/FormData.ts +1 -1
- package/src/Http/IncomingMessage.ts +1 -1
- package/src/Http/Middleware.ts +1 -1
- package/src/Http/Platform.ts +70 -0
- package/src/Http/Router.ts +2 -2
- package/src/Http/ServerError.ts +1 -1
- package/src/Http/ServerResponse.ts +5 -5
- package/src/KeyValueStore.ts +1 -1
- package/src/Path.ts +1 -1
- package/src/internal/http/formData.ts +1 -1
- package/src/internal/http/middleware.ts +6 -8
- package/src/internal/http/platform.ts +85 -0
- package/src/internal/http/router.ts +5 -2
- package/src/internal/http/serverResponse.ts +13 -53
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"platform.mjs","names":["Context","Effect","FileSystem","Etag","TypeId","Symbol","for","tag","Tag","make","impl","gen","_","fs","etagGen","Generator","of","fileResponse","path","options","map","etag","info","start","Number","offset","end","bytesToRead","undefined","headers","toString","mtime","_tag","value","toUTCString","contentLength","size","status","statusText","bind","fromFileInfo","bindTo","stat","fileWebResponse","file","fromFileWeb","Date","lastModified"],"sources":["../../../src/internal/http/platform.ts"],"sourcesContent":[null],"mappings":"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"}
|
|
@@ -84,7 +84,10 @@ const toHttpApp = self => {
|
|
|
84
84
|
}
|
|
85
85
|
}
|
|
86
86
|
}
|
|
87
|
-
|
|
87
|
+
let result = router.find(request.method, request.url);
|
|
88
|
+
if (result === null && request.method === "HEAD") {
|
|
89
|
+
result = router.find("GET", request.url);
|
|
90
|
+
}
|
|
88
91
|
if (result === null) {
|
|
89
92
|
return Effect.fail(Error.RouteNotFound({
|
|
90
93
|
request
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"router.mjs","names":["Chunk","Context","Equal","dual","Hash","Option","pipeArguments","Effect","Error","ServerRequest","Schema","Channel","Sink","Stream","FindMyWay","TypeId","Symbol","for","RouteTypeId","RouteContextTypeId","RouteContext","Tag","params","map","_","searchParams","schemaParams","schema","parse","flatMap","RouterImpl","constructor","routes","mounts","_tag","EffectTypeId","undefined","StreamTypeId","SinkTypeId","ChannelTypeId","pipe","arguments","commit","httpApp","toHttpApp","symbol","that","random","self","router","toReadonlyArray","mountsLen","length","forEach","route","fn","method","all","path","on","request","i","app","url","startsWith","provideService","sliceRequestUrl","result","find","fail","RouteNotFound","handler","prefix","value","mapInputContext","context","add","RouteContextImpl","prefexLen","setUrl","slice","RouteImpl","none","empty","fromIterable","makeRoute","concat","appendAll","removeTrailingSlash","endsWith","prefixAll","orElse","some","mount","mountApp","append","get","post","put","patch","del","head","options","use","f","catchAll","catchAllCause","catchTag","k","catchTags","cases","tag","service","provideServiceEffect","effect"],"sources":["../../../src/internal/http/router.ts"],"sourcesContent":[null],"mappings":"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
|
|
1
|
+
{"version":3,"file":"router.mjs","names":["Chunk","Context","Equal","dual","Hash","Option","pipeArguments","Effect","Error","ServerRequest","Schema","Channel","Sink","Stream","FindMyWay","TypeId","Symbol","for","RouteTypeId","RouteContextTypeId","RouteContext","Tag","params","map","_","searchParams","schemaParams","schema","parse","flatMap","RouterImpl","constructor","routes","mounts","_tag","EffectTypeId","undefined","StreamTypeId","SinkTypeId","ChannelTypeId","pipe","arguments","commit","httpApp","toHttpApp","symbol","that","random","self","router","toReadonlyArray","mountsLen","length","forEach","route","fn","method","all","path","on","request","i","app","url","startsWith","provideService","sliceRequestUrl","result","find","fail","RouteNotFound","handler","prefix","value","mapInputContext","context","add","RouteContextImpl","prefexLen","setUrl","slice","RouteImpl","none","empty","fromIterable","makeRoute","concat","appendAll","removeTrailingSlash","endsWith","prefixAll","orElse","some","mount","mountApp","append","get","post","put","patch","del","head","options","use","f","catchAll","catchAllCause","catchTag","k","catchTags","cases","tag","service","provideServiceEffect","effect"],"sources":["../../../src/internal/http/router.ts"],"sourcesContent":[null],"mappings":"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"}
|
|
@@ -1,12 +1,10 @@
|
|
|
1
1
|
import { dual } from "@effect/data/Function";
|
|
2
2
|
import { pipeArguments } from "@effect/data/Pipeable";
|
|
3
3
|
import * as Effect from "@effect/io/Effect";
|
|
4
|
-
import * as FileSystem from "@effect/platform/FileSystem";
|
|
5
|
-
import * as Etag from "@effect/platform/Http/Etag";
|
|
6
4
|
import * as Headers from "@effect/platform/Http/Headers";
|
|
5
|
+
import * as Platform from "@effect/platform/Http/Platform";
|
|
7
6
|
import * as UrlParams from "@effect/platform/Http/UrlParams";
|
|
8
7
|
import * as internalBody from "@effect/platform/internal/http/body";
|
|
9
|
-
import * as Mime from "mime";
|
|
10
8
|
/** @internal */
|
|
11
9
|
export const TypeId = /*#__PURE__*/Symbol.for("@effect/platform/Http/ServerResponse");
|
|
12
10
|
class ServerResponseImpl {
|
|
@@ -52,37 +50,9 @@ export const schemaJson = schema => {
|
|
|
52
50
|
return (body, options) => Effect.map(encode(body), body => new ServerResponseImpl(options?.status ?? 200, options?.statusText, options?.headers ?? Headers.empty, body));
|
|
53
51
|
};
|
|
54
52
|
/** @internal */
|
|
55
|
-
export const file = (path, options) => Effect.
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
info
|
|
59
|
-
}) => {
|
|
60
|
-
const headers = {
|
|
61
|
-
...(options?.headers ?? {}),
|
|
62
|
-
etag: Etag.toString(etag)
|
|
63
|
-
};
|
|
64
|
-
if (info.mtime._tag === "Some") {
|
|
65
|
-
headers["last-modified"] = info.mtime.value.toUTCString();
|
|
66
|
-
}
|
|
67
|
-
return new ServerResponseImpl(options?.status ?? 200, options?.statusText, headers, body);
|
|
68
|
-
})(Effect.bind("body", ({
|
|
69
|
-
info
|
|
70
|
-
}) => internalBody.fileInfo(path, info, {
|
|
71
|
-
contentType: Mime.getType(path) ?? undefined,
|
|
72
|
-
...options
|
|
73
|
-
}))(Effect.bind("etag", ({
|
|
74
|
-
info
|
|
75
|
-
}) => Effect.flatMap(Etag.Generator, generator => generator.fromFileInfo(info)))(Effect.bindTo(Effect.flatMap(FileSystem.FileSystem, fs => fs.stat(path)), "info"))));
|
|
76
|
-
/** @internal */
|
|
77
|
-
export const fileWeb = (file, options) => Effect.flatMap(Etag.Generator, generator => Effect.map(generator.fromFileWeb(file), etag => {
|
|
78
|
-
const body = internalBody.fileWeb(file);
|
|
79
|
-
const headers = {
|
|
80
|
-
...(options?.headers ?? {}),
|
|
81
|
-
etag: Etag.toString(etag),
|
|
82
|
-
"last-modified": new Date(file.lastModified).toUTCString()
|
|
83
|
-
};
|
|
84
|
-
return new ServerResponseImpl(options?.status ?? 200, options?.statusText, headers, body);
|
|
85
|
-
}));
|
|
53
|
+
export const file = (path, options) => Effect.flatMap(Platform.Platform, platform => platform.fileResponse(path, options));
|
|
54
|
+
/** @internal */
|
|
55
|
+
export const fileWeb = (file, options) => Effect.flatMap(Platform.Platform, platform => platform.fileWebResponse(file, options));
|
|
86
56
|
/** @internal */
|
|
87
57
|
export const urlParams = (body, options) => new ServerResponseImpl(options?.status ?? 200, options?.statusText, options?.headers ?? Headers.empty, internalBody.text(UrlParams.toString(UrlParams.fromInput(body)), "application/x-www-form-urlencoded"));
|
|
88
58
|
/** @internal */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"serverResponse.mjs","names":["dual","pipeArguments","Effect","
|
|
1
|
+
{"version":3,"file":"serverResponse.mjs","names":["dual","pipeArguments","Effect","Headers","Platform","UrlParams","internalBody","TypeId","Symbol","for","ServerResponseImpl","constructor","status","statusText","headers","body","contentType","contentLength","newHeaders","toString","pipe","arguments","isServerResponse","u","empty","options","uint8Array","getContentType","text","json","map","unsafeJson","schemaJson","schema","encode","jsonSchema","file","path","flatMap","platform","fileResponse","fileWeb","fileWebResponse","urlParams","fromInput","raw","formData","stream","setHeader","self","key","value","set","setHeaders","input","setAll","setStatus","args","setBody","_tag","remove"],"sources":["../../../src/internal/http/serverResponse.ts"],"sourcesContent":[null],"mappings":"AAAA,SAASA,IAAI,QAAQ,uBAAuB;AAC5C,SAASC,aAAa,QAAQ,uBAAuB;AACrD,OAAO,KAAKC,MAAM,MAAM,mBAAmB;AAI3C,OAAO,KAAKC,OAAO,MAAM,+BAA+B;AACxD,OAAO,KAAKC,QAAQ,MAAM,gCAAgC;AAE1D,OAAO,KAAKC,SAAS,MAAM,iCAAiC;AAC5D,OAAO,KAAKC,YAAY,MAAM,qCAAqC;AAInE;AACA,OAAO,MAAMC,MAAM,gBAA0BC,MAAM,CAACC,GAAG,CAAC,sCAAsC,CAA0B;AAExH,MAAMC,kBAAkB;EAGtBC,YACWC,MAAc,EACdC,UAA8B,EACvCC,OAAwB,EACfC,IAAe;IAHf,KAAAH,MAAM,GAANA,MAAM;IACN,KAAAC,UAAU,GAAVA,UAAU;IAEV,KAAAE,IAAI,GAAJA,IAAI;IAEb,IAAI,CAACR,MAAM,CAAC,GAAGA,MAAM;IACrB,IAAIQ,IAAI,CAACC,WAAW,IAAID,IAAI,CAACE,aAAa,EAAE;MAC1C,MAAMC,UAAU,GAAG;QAAE,GAAGJ;MAAO,CAAE;MACjC,IAAIC,IAAI,CAACC,WAAW,EAAE;QACpBE,UAAU,CAAC,cAAc,CAAC,GAAGH,IAAI,CAACC,WAAW;;MAE/C,IAAID,IAAI,CAACE,aAAa,EAAE;QACtBC,UAAU,CAAC,gBAAgB,CAAC,GAAGH,IAAI,CAACE,aAAa,CAACE,QAAQ,EAAE;;MAE9D,IAAI,CAACL,OAAO,GAAGI,UAAU;KAC1B,MAAM;MACL,IAAI,CAACJ,OAAO,GAAGA,OAAO;;EAE1B;EACAM,IAAIA,CAAA;IACF,OAAOnB,aAAa,CAAC,IAAI,EAAEoB,SAAS,CAAC;EACvC;;AAGF;AACA,OAAO,MAAMC,gBAAgB,GAAIC,CAAU,IACzC,OAAOA,CAAC,KAAK,QAAQ,IAAIA,CAAC,KAAK,IAAI,IAAIhB,MAAM,IAAIgB,CAAC;AAEpD;AACA,OAAO,MAAMC,KAAK,GAAIC,OAA4C,IAChE,IAAIf,kBAAkB,CACpBe,OAAO,EAAEb,MAAM,IAAI,GAAG,EACtBa,OAAO,EAAEZ,UAAU,EACnBY,OAAO,EAAEX,OAAO,IAAIX,OAAO,CAACqB,KAAK,EACjClB,YAAY,CAACkB,KAAK,CACnB;AAEH;AACA,OAAO,MAAME,UAAU,GAAGA,CACxBX,IAAgB,EAChBU,OAAgD,KAEhD,IAAIf,kBAAkB,CACpBe,OAAO,EAAEb,MAAM,IAAI,GAAG,EACtBa,OAAO,EAAEZ,UAAU,EACnBY,OAAO,EAAEX,OAAO,IAAIX,OAAO,CAACqB,KAAK,EACjClB,YAAY,CAACoB,UAAU,CAACX,IAAI,EAAEY,cAAc,CAACF,OAAO,CAAC,CAAC,CACvD;AAEH;AACA,OAAO,MAAMG,IAAI,GAAGA,CAACb,IAAY,EAAEU,OAAgD,KACjF,IAAIf,kBAAkB,CACpBe,OAAO,EAAEb,MAAM,IAAI,GAAG,EACtBa,OAAO,EAAEZ,UAAU,EACnBY,OAAO,EAAEX,OAAO,IAAIX,OAAO,CAACqB,KAAK,EACjClB,YAAY,CAACsB,IAAI,CAACb,IAAI,EAAEY,cAAc,CAACF,OAAO,CAAC,CAAC,CACjD;AAEH;AACA,OAAO,MAAMI,IAAI,GAAGA,CAClBd,IAAa,EACbU,OAA4C,KAE5CvB,MAAM,CAAC4B,GAAG,CAACxB,YAAY,CAACuB,IAAI,CAACd,IAAI,CAAC,EAAGA,IAAI,IACvC,IAAIL,kBAAkB,CACpBe,OAAO,EAAEb,MAAM,IAAI,GAAG,EACtBa,OAAO,EAAEZ,UAAU,EACnBY,OAAO,EAAEX,OAAO,IAAIX,OAAO,CAACqB,KAAK,EACjCT,IAAI,CACL,CAAC;AAEN;AACA,OAAO,MAAMgB,UAAU,GAAGA,CACxBhB,IAAa,EACbU,OAA4C,KAE5C,IAAIf,kBAAkB,CACpBe,OAAO,EAAEb,MAAM,IAAI,GAAG,EACtBa,OAAO,EAAEZ,UAAU,EACnBY,OAAO,EAAEX,OAAO,IAAIX,OAAO,CAACqB,KAAK,EACjClB,YAAY,CAACyB,UAAU,CAAChB,IAAI,CAAC,CAC9B;AAEH;AACA,OAAO,MAAMiB,UAAU,GACrBC,MAA2B,IACzB;EACF,MAAMC,MAAM,GAAG5B,YAAY,CAAC6B,UAAU,CAACF,MAAM,CAAC;EAC9C,OAAO,CACLlB,IAAO,EACPU,OAA4C,KAE5CvB,MAAM,CAAC4B,GAAG,CAACI,MAAM,CAACnB,IAAI,CAAC,EAAGA,IAAI,IAC5B,IAAIL,kBAAkB,CACpBe,OAAO,EAAEb,MAAM,IAAI,GAAG,EACtBa,OAAO,EAAEZ,UAAU,EACnBY,OAAO,EAAEX,OAAO,IAAIX,OAAO,CAACqB,KAAK,EACjCT,IAAI,CACL,CAAC;AACR,CAAC;AAED;AACA,OAAO,MAAMqB,IAAI,GAAGA,CAClBC,IAAY,EACZZ,OAA2D,KAE3DvB,MAAM,CAACoC,OAAO,CACZlC,QAAQ,CAACA,QAAQ,EAChBmC,QAAQ,IAAKA,QAAQ,CAACC,YAAY,CAACH,IAAI,EAAEZ,OAAO,CAAC,CACnD;AAEH;AACA,OAAO,MAAMgB,OAAO,GAAGA,CACrBL,IAAwB,EACxBX,OAAuE,KAEvEvB,MAAM,CAACoC,OAAO,CACZlC,QAAQ,CAACA,QAAQ,EAChBmC,QAAQ,IAAKA,QAAQ,CAACG,eAAe,CAACN,IAAI,EAAEX,OAAO,CAAC,CACtD;AAEH;AACA,OAAO,MAAMkB,SAAS,GAAGA,CACvB5B,IAAqB,EACrBU,OAA4C,KAE5C,IAAIf,kBAAkB,CACpBe,OAAO,EAAEb,MAAM,IAAI,GAAG,EACtBa,OAAO,EAAEZ,UAAU,EACnBY,OAAO,EAAEX,OAAO,IAAIX,OAAO,CAACqB,KAAK,EACjClB,YAAY,CAACsB,IAAI,CAACvB,SAAS,CAACc,QAAQ,CAACd,SAAS,CAACuC,SAAS,CAAC7B,IAAI,CAAC,CAAC,EAAE,mCAAmC,CAAC,CACtG;AAEH;AACA,OAAO,MAAM8B,GAAG,GAAGA,CAAC9B,IAAa,EAAEU,OAAgC,KACjE,IAAIf,kBAAkB,CACpBe,OAAO,EAAEb,MAAM,IAAI,GAAG,EACtBa,OAAO,EAAEZ,UAAU,EACnBY,OAAO,EAAEX,OAAO,IAAIX,OAAO,CAACqB,KAAK,EACjClB,YAAY,CAACuC,GAAG,CAAC9B,IAAI,CAAC,CACvB;AAEH;AACA,OAAO,MAAM+B,QAAQ,GAAGA,CAAC/B,IAAc,EAAEU,OAA4C,KACnF,IAAIf,kBAAkB,CACpBe,OAAO,EAAEb,MAAM,IAAI,GAAG,EACtBa,OAAO,EAAEZ,UAAU,EACnBY,OAAO,EAAEX,OAAO,IAAIX,OAAO,CAACqB,KAAK,EACjClB,YAAY,CAACwC,QAAQ,CAAC/B,IAAI,CAAC,CAC5B;AAEH;AACA,OAAO,MAAMgC,MAAM,GAAGA,CACpBhC,IAA+C,EAC/CU,OAAgC,KAEhC,IAAIf,kBAAkB,CACpBe,OAAO,EAAEb,MAAM,IAAI,GAAG,EACtBa,OAAO,EAAEZ,UAAU,EACnBY,OAAO,EAAEX,OAAO,IAAIX,OAAO,CAACqB,KAAK,EACjClB,YAAY,CAACyC,MAAM,CAAChC,IAAI,EAAEY,cAAc,CAACF,OAAO,CAAC,EAAEA,OAAO,EAAER,aAAa,CAAC,CAC3E;AAEH;AACA,OAAO,MAAMU,cAAc,GAAIF,OAAgC,IAAwB;EACrF,IAAIA,OAAO,EAAET,WAAW,EAAE;IACxB,OAAOS,OAAO,CAACT,WAAW;GAC3B,MAAM,IAAIS,OAAO,EAAEX,OAAO,EAAE;IAC3B,OAAOW,OAAO,CAACX,OAAO,CAAC,cAAc,CAAC;GACvC,MAAM;IACL;;AAEJ,CAAC;AAED;AACA,OAAO,MAAMkC,SAAS,gBAAGhD,IAAI,CAG3B,CAAC,EAAE,CAACiD,IAAI,EAAEC,GAAG,EAAEC,KAAK,KACpB,IAAIzC,kBAAkB,CACpBuC,IAAI,CAACrC,MAAM,EACXqC,IAAI,CAACpC,UAAU,EACfV,OAAO,CAACiD,GAAG,CAACH,IAAI,CAACnC,OAAO,EAAEoC,GAAG,EAAEC,KAAK,CAAC,EACrCF,IAAI,CAAClC,IAAI,CACV,CAAC;AAEJ;AACA,OAAO,MAAMsC,UAAU,gBAAGrD,IAAI,CAG5B,CAAC,EAAE,CAACiD,IAAI,EAAEK,KAAK,KACf,IAAI5C,kBAAkB,CACpBuC,IAAI,CAACrC,MAAM,EACXqC,IAAI,CAACpC,UAAU,EACfV,OAAO,CAACoD,MAAM,CAACN,IAAI,CAACnC,OAAO,EAAEwC,KAAK,CAAC,EACnCL,IAAI,CAAClC,IAAI,CACV,CAAC;AAEJ;AACA,OAAO,MAAMyC,SAAS,gBAAGxD,IAAI,CAG1ByD,IAAI,IAAKnC,gBAAgB,CAACmC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAACR,IAAI,EAAErC,MAAM,EAAEC,UAAU,KAC9D,IAAIH,kBAAkB,CACpBE,MAAM,EACNC,UAAU,EACVoC,IAAI,CAACnC,OAAO,EACZmC,IAAI,CAAClC,IAAI,CACV,CAAC;AAEJ;AACA,OAAO,MAAM2C,OAAO,gBAAG1D,IAAI,CAGzB,CAAC,EAAE,CAACiD,IAAI,EAAElC,IAAI,KAAI;EAClB,IAAID,OAAO,GAAGmC,IAAI,CAACnC,OAAO;EAC1B,IAAIC,IAAI,CAAC4C,IAAI,KAAK,OAAO,EAAE;IACzB7C,OAAO,GAAGX,OAAO,CAACyD,MAAM,CAACzD,OAAO,CAACyD,MAAM,CAAC9C,OAAO,EAAE,cAAc,CAAC,EAAE,gBAAgB,CAAC;;EAErF,OAAO,IAAIJ,kBAAkB,CAC3BuC,IAAI,CAACrC,MAAM,EACXqC,IAAI,CAACpC,UAAU,EACfC,OAAO,EACPC,IAAI,CACL;AACH,CAAC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@effect/platform",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.14.1",
|
|
4
4
|
"description": "Unified interfaces for common platform-specific services",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -26,13 +26,12 @@
|
|
|
26
26
|
"author": "Effect contributors",
|
|
27
27
|
"dependencies": {
|
|
28
28
|
"find-my-way": "^7.6.2",
|
|
29
|
-
"mime": "^3.0.0",
|
|
30
29
|
"path-browserify": "^1.0.1"
|
|
31
30
|
},
|
|
32
31
|
"peerDependencies": {
|
|
33
|
-
"@effect/data": "^0.
|
|
34
|
-
"@effect/io": "^0.
|
|
35
|
-
"@effect/schema": "^0.
|
|
36
|
-
"@effect/stream": "^0.
|
|
32
|
+
"@effect/data": "^0.18.3",
|
|
33
|
+
"@effect/io": "^0.39.0",
|
|
34
|
+
"@effect/schema": "^0.34.0",
|
|
35
|
+
"@effect/stream": "^0.35.1"
|
|
37
36
|
}
|
|
38
37
|
}
|
package/src/CommandExecutor.ts
CHANGED
package/src/Error.ts
CHANGED
package/src/FileSystem.ts
CHANGED
package/src/Http/Body.ts
CHANGED
package/src/Http/Client.ts
CHANGED
package/src/Http/ClientError.ts
CHANGED
package/src/Http/FormData.ts
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* @since 1.0.0
|
|
3
3
|
*/
|
|
4
4
|
import { dual } from "@effect/data/Function"
|
|
5
|
-
import * as Global from "@effect/data/
|
|
5
|
+
import * as Global from "@effect/data/GlobalValue"
|
|
6
6
|
import * as Option from "@effect/data/Option"
|
|
7
7
|
import * as Effect from "@effect/io/Effect"
|
|
8
8
|
import * as FiberRef from "@effect/io/FiberRef"
|
package/src/Http/Middleware.ts
CHANGED
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @since 1.0.0
|
|
3
|
+
*/
|
|
4
|
+
import type * as Context from "@effect/data/Context"
|
|
5
|
+
import type * as Effect from "@effect/io/Effect"
|
|
6
|
+
import type * as Error from "@effect/platform/Error"
|
|
7
|
+
import type * as FileSystem from "@effect/platform/FileSystem"
|
|
8
|
+
import type * as Body from "@effect/platform/Http/Body"
|
|
9
|
+
import type * as Etag from "@effect/platform/Http/Etag"
|
|
10
|
+
import type * as ServerResponse from "@effect/platform/Http/ServerResponse"
|
|
11
|
+
import * as internal from "@effect/platform/internal/http/platform"
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* @since 1.0.0
|
|
15
|
+
* @category type ids
|
|
16
|
+
*/
|
|
17
|
+
export const TypeId: unique symbol = internal.TypeId
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* @since 1.0.0
|
|
21
|
+
* @category type ids
|
|
22
|
+
*/
|
|
23
|
+
export type TypeId = typeof TypeId
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* @since 1.0.0
|
|
27
|
+
* @category tags
|
|
28
|
+
*/
|
|
29
|
+
export const Platform: Context.Tag<Platform, Platform> = internal.tag
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* @since 1.0.0
|
|
33
|
+
* @category models
|
|
34
|
+
*/
|
|
35
|
+
export interface Platform {
|
|
36
|
+
readonly [TypeId]: TypeId
|
|
37
|
+
readonly fileResponse: (
|
|
38
|
+
path: string,
|
|
39
|
+
options?: ServerResponse.Options.WithContent & FileSystem.StreamOptions
|
|
40
|
+
) => Effect.Effect<never, Error.PlatformError, ServerResponse.ServerResponse>
|
|
41
|
+
readonly fileWebResponse: (
|
|
42
|
+
file: Body.Body.FileLike,
|
|
43
|
+
options?: ServerResponse.Options.WithContent & FileSystem.StreamOptions
|
|
44
|
+
) => Effect.Effect<never, never, ServerResponse.ServerResponse>
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
/**
|
|
48
|
+
* @since 1.0.0
|
|
49
|
+
* @category constructors
|
|
50
|
+
*/
|
|
51
|
+
export const make: (
|
|
52
|
+
impl: {
|
|
53
|
+
readonly fileResponse: (
|
|
54
|
+
path: string,
|
|
55
|
+
status: number,
|
|
56
|
+
statusText: string | undefined,
|
|
57
|
+
headers: Record<string, string>,
|
|
58
|
+
start: number,
|
|
59
|
+
end: number | undefined,
|
|
60
|
+
contentLength: number
|
|
61
|
+
) => ServerResponse.ServerResponse
|
|
62
|
+
readonly fileWebResponse: (
|
|
63
|
+
file: Body.Body.FileLike,
|
|
64
|
+
status: number,
|
|
65
|
+
statusText: string | undefined,
|
|
66
|
+
headers: Record<string, string>,
|
|
67
|
+
options?: FileSystem.StreamOptions | undefined
|
|
68
|
+
) => ServerResponse.ServerResponse
|
|
69
|
+
}
|
|
70
|
+
) => Effect.Effect<FileSystem.FileSystem | Etag.Generator, never, Platform> = internal.make
|
package/src/Http/Router.ts
CHANGED
|
@@ -40,7 +40,7 @@ export interface Router<R, E> extends App.Default<Exclude<R, RouteContext>, E |
|
|
|
40
40
|
/**
|
|
41
41
|
* @since 1.0.0
|
|
42
42
|
*/
|
|
43
|
-
export namespace Router {
|
|
43
|
+
export declare namespace Router {
|
|
44
44
|
/**
|
|
45
45
|
* @since 1.0.0
|
|
46
46
|
*/
|
|
@@ -79,7 +79,7 @@ export interface Route<R, E> {
|
|
|
79
79
|
/**
|
|
80
80
|
* @since 1.0.0
|
|
81
81
|
*/
|
|
82
|
-
export namespace Route {
|
|
82
|
+
export declare namespace Route {
|
|
83
83
|
/**
|
|
84
84
|
* @since 1.0.0
|
|
85
85
|
*/
|
package/src/Http/ServerError.ts
CHANGED
|
@@ -6,8 +6,8 @@ import type * as Effect from "@effect/io/Effect"
|
|
|
6
6
|
import type * as PlatformError from "@effect/platform/Error"
|
|
7
7
|
import type * as FileSystem from "@effect/platform/FileSystem"
|
|
8
8
|
import type * as Body from "@effect/platform/Http/Body"
|
|
9
|
-
import type * as Etag from "@effect/platform/Http/Etag"
|
|
10
9
|
import type * as Headers from "@effect/platform/Http/Headers"
|
|
10
|
+
import type * as Platform from "@effect/platform/Http/Platform"
|
|
11
11
|
import type * as UrlParams from "@effect/platform/Http/UrlParams"
|
|
12
12
|
import * as internal from "@effect/platform/internal/http/serverResponse"
|
|
13
13
|
import type * as Schema from "@effect/schema/Schema"
|
|
@@ -52,7 +52,7 @@ export interface Options {
|
|
|
52
52
|
/**
|
|
53
53
|
* @since 1.0.0
|
|
54
54
|
*/
|
|
55
|
-
export namespace Options {
|
|
55
|
+
export declare namespace Options {
|
|
56
56
|
/**
|
|
57
57
|
* @since 1.0.0
|
|
58
58
|
* @category models
|
|
@@ -145,7 +145,7 @@ export const stream: (body: Stream.Stream<never, unknown, Uint8Array>, options?:
|
|
|
145
145
|
export const file: (
|
|
146
146
|
path: string,
|
|
147
147
|
options?: Options & FileSystem.StreamOptions
|
|
148
|
-
) => Effect.Effect<
|
|
148
|
+
) => Effect.Effect<Platform.Platform, PlatformError.PlatformError, ServerResponse> = internal.file
|
|
149
149
|
|
|
150
150
|
/**
|
|
151
151
|
* @since 1.0.0
|
|
@@ -153,8 +153,8 @@ export const file: (
|
|
|
153
153
|
*/
|
|
154
154
|
export const fileWeb: (
|
|
155
155
|
file: Body.Body.FileLike,
|
|
156
|
-
options?: Options.WithContent
|
|
157
|
-
) => Effect.Effect<
|
|
156
|
+
options?: Options.WithContent & FileSystem.StreamOptions
|
|
157
|
+
) => Effect.Effect<Platform.Platform, never, ServerResponse> = internal.fileWeb
|
|
158
158
|
|
|
159
159
|
/**
|
|
160
160
|
* @since 1.0.0
|
package/src/KeyValueStore.ts
CHANGED
package/src/Path.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as Chunk from "@effect/data/Chunk"
|
|
2
2
|
import * as Data from "@effect/data/Data"
|
|
3
3
|
import { dual, pipe } from "@effect/data/Function"
|
|
4
|
-
import { globalValue } from "@effect/data/
|
|
4
|
+
import { globalValue } from "@effect/data/GlobalValue"
|
|
5
5
|
import * as Option from "@effect/data/Option"
|
|
6
6
|
import * as Predicate from "@effect/data/Predicate"
|
|
7
7
|
import * as ReadonlyArray from "@effect/data/ReadonlyArray"
|
|
@@ -14,20 +14,18 @@ export const logger = make((httpApp) => {
|
|
|
14
14
|
ServerRequest.ServerRequest,
|
|
15
15
|
(request) =>
|
|
16
16
|
Effect.withLogSpan(
|
|
17
|
-
Effect.
|
|
18
|
-
|
|
19
|
-
Effect.annotateLogs(Effect.log(cause), {
|
|
17
|
+
Effect.onExit(httpApp, (exit) =>
|
|
18
|
+
exit._tag === "Failure" ?
|
|
19
|
+
Effect.annotateLogs(Effect.log(exit.cause), {
|
|
20
20
|
"http.method": request.method,
|
|
21
21
|
"http.url": request.url,
|
|
22
22
|
"http.status": 500
|
|
23
|
-
})
|
|
24
|
-
(response) =>
|
|
23
|
+
}) :
|
|
25
24
|
Effect.annotateLogs(Effect.log(""), {
|
|
26
25
|
"http.method": request.method,
|
|
27
26
|
"http.url": request.url,
|
|
28
|
-
"http.status":
|
|
29
|
-
})
|
|
30
|
-
),
|
|
27
|
+
"http.status": exit.value.status
|
|
28
|
+
})),
|
|
31
29
|
`http.span.${++counter}`
|
|
32
30
|
)
|
|
33
31
|
)
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import * as Context from "@effect/data/Context"
|
|
2
|
+
import { pipe } from "@effect/data/Function"
|
|
3
|
+
import * as Effect from "@effect/io/Effect"
|
|
4
|
+
import * as FileSystem from "@effect/platform/FileSystem"
|
|
5
|
+
import type * as Body from "@effect/platform/Http/Body"
|
|
6
|
+
import * as Etag from "@effect/platform/Http/Etag"
|
|
7
|
+
import type * as Platform from "@effect/platform/Http/Platform"
|
|
8
|
+
import type * as ServerResponse from "@effect/platform/Http/ServerResponse"
|
|
9
|
+
|
|
10
|
+
/** @internal */
|
|
11
|
+
export const TypeId: Platform.TypeId = Symbol.for("@effect/platform/Http/Platform") as Platform.TypeId
|
|
12
|
+
|
|
13
|
+
/** @internal */
|
|
14
|
+
export const tag = Context.Tag<Platform.Platform>(TypeId)
|
|
15
|
+
|
|
16
|
+
/** @internal */
|
|
17
|
+
export const make = (impl: {
|
|
18
|
+
readonly fileResponse: (
|
|
19
|
+
path: string,
|
|
20
|
+
status: number,
|
|
21
|
+
statusText: string | undefined,
|
|
22
|
+
headers: Record<string, string>,
|
|
23
|
+
start: number,
|
|
24
|
+
end: number | undefined,
|
|
25
|
+
contentLength: number
|
|
26
|
+
) => ServerResponse.ServerResponse
|
|
27
|
+
readonly fileWebResponse: (
|
|
28
|
+
file: Body.Body.FileLike,
|
|
29
|
+
status: number,
|
|
30
|
+
statusText: string | undefined,
|
|
31
|
+
headers: Record<string, string>,
|
|
32
|
+
options?: FileSystem.StreamOptions
|
|
33
|
+
) => ServerResponse.ServerResponse
|
|
34
|
+
}): Effect.Effect<FileSystem.FileSystem | Etag.Generator, never, Platform.Platform> =>
|
|
35
|
+
Effect.gen(function*(_) {
|
|
36
|
+
const fs = yield* _(FileSystem.FileSystem)
|
|
37
|
+
const etagGen = yield* _(Etag.Generator)
|
|
38
|
+
|
|
39
|
+
return tag.of({
|
|
40
|
+
[TypeId]: TypeId,
|
|
41
|
+
fileResponse(path, options) {
|
|
42
|
+
return pipe(
|
|
43
|
+
Effect.bindTo(fs.stat(path), "info"),
|
|
44
|
+
Effect.bind("etag", ({ info }) => etagGen.fromFileInfo(info)),
|
|
45
|
+
Effect.map(({ etag, info }) => {
|
|
46
|
+
const start = Number(options?.offset ?? 0)
|
|
47
|
+
const end = options?.bytesToRead !== undefined ? start + Number(options.bytesToRead) : undefined
|
|
48
|
+
const headers: Record<string, string> = {
|
|
49
|
+
...(options?.headers ?? {}),
|
|
50
|
+
etag: Etag.toString(etag)
|
|
51
|
+
}
|
|
52
|
+
if (info.mtime._tag === "Some") {
|
|
53
|
+
headers["last-modified"] = info.mtime.value.toUTCString()
|
|
54
|
+
}
|
|
55
|
+
const contentLength = end !== undefined ? end - start : Number(info.size) - start
|
|
56
|
+
return impl.fileResponse(
|
|
57
|
+
path,
|
|
58
|
+
options?.status ?? 200,
|
|
59
|
+
options?.statusText,
|
|
60
|
+
headers,
|
|
61
|
+
start,
|
|
62
|
+
end,
|
|
63
|
+
contentLength
|
|
64
|
+
)
|
|
65
|
+
})
|
|
66
|
+
)
|
|
67
|
+
},
|
|
68
|
+
fileWebResponse(file, options) {
|
|
69
|
+
return Effect.map(etagGen.fromFileWeb(file), (etag) => {
|
|
70
|
+
const headers: Record<string, string> = {
|
|
71
|
+
...(options?.headers ?? {}),
|
|
72
|
+
etag: Etag.toString(etag),
|
|
73
|
+
"last-modified": new Date(file.lastModified).toUTCString()
|
|
74
|
+
}
|
|
75
|
+
return impl.fileWebResponse(
|
|
76
|
+
file,
|
|
77
|
+
options?.status ?? 200,
|
|
78
|
+
options?.statusText,
|
|
79
|
+
headers,
|
|
80
|
+
options
|
|
81
|
+
)
|
|
82
|
+
})
|
|
83
|
+
}
|
|
84
|
+
})
|
|
85
|
+
})
|
|
@@ -125,7 +125,10 @@ const toHttpApp = <R, E>(
|
|
|
125
125
|
}
|
|
126
126
|
}
|
|
127
127
|
|
|
128
|
-
|
|
128
|
+
let result = router.find(request.method as HTTPMethod, request.url)
|
|
129
|
+
if (result === null && request.method === "HEAD") {
|
|
130
|
+
result = router.find("GET", request.url)
|
|
131
|
+
}
|
|
129
132
|
if (result === null) {
|
|
130
133
|
return Effect.fail(Error.RouteNotFound({ request }))
|
|
131
134
|
}
|
|
@@ -139,7 +142,7 @@ const toHttpApp = <R, E>(
|
|
|
139
142
|
Context.add(
|
|
140
143
|
Context.add(context, ServerRequest.ServerRequest, request),
|
|
141
144
|
RouteContext,
|
|
142
|
-
new RouteContextImpl(result
|
|
145
|
+
new RouteContextImpl(result!.params, result!.searchParams)
|
|
143
146
|
) as Context.Context<R>
|
|
144
147
|
)
|
|
145
148
|
}
|