@effect/platform 0.13.3 → 0.13.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (68) hide show
  1. package/Http/Body.d.ts +8 -1
  2. package/Http/Body.d.ts.map +1 -1
  3. package/Http/Body.js +7 -1
  4. package/Http/Body.js.map +1 -1
  5. package/Http/Client.d.ts +11 -0
  6. package/Http/Client.d.ts.map +1 -1
  7. package/Http/Client.js +7 -1
  8. package/Http/Client.js.map +1 -1
  9. package/Http/Etag.d.ts +56 -0
  10. package/Http/Etag.d.ts.map +1 -0
  11. package/Http/Etag.js +28 -0
  12. package/Http/Etag.js.map +1 -0
  13. package/Http/Router.d.ts +1 -1
  14. package/Http/Router.d.ts.map +1 -1
  15. package/Http/Router.js +3 -3
  16. package/Http/Router.js.map +1 -1
  17. package/Http/ServerResponse.d.ts +2 -1
  18. package/Http/ServerResponse.d.ts.map +1 -1
  19. package/Http/ServerResponse.js.map +1 -1
  20. package/internal/http/body.js +6 -2
  21. package/internal/http/body.js.map +1 -1
  22. package/internal/http/client.d.ts.map +1 -1
  23. package/internal/http/client.js +6 -2
  24. package/internal/http/client.js.map +1 -1
  25. package/internal/http/etag.d.ts +2 -0
  26. package/internal/http/etag.d.ts.map +1 -0
  27. package/internal/http/etag.js +26 -0
  28. package/internal/http/etag.js.map +1 -0
  29. package/internal/http/router.d.ts.map +1 -1
  30. package/internal/http/router.js +9 -9
  31. package/internal/http/router.js.map +1 -1
  32. package/internal/http/server.js +1 -1
  33. package/internal/http/server.js.map +1 -1
  34. package/internal/http/serverResponse.js +20 -1
  35. package/internal/http/serverResponse.js.map +1 -1
  36. package/mjs/Http/Body.mjs +5 -0
  37. package/mjs/Http/Body.mjs.map +1 -1
  38. package/mjs/Http/Client.mjs +5 -0
  39. package/mjs/Http/Client.mjs.map +1 -1
  40. package/mjs/Http/Etag.mjs +17 -0
  41. package/mjs/Http/Etag.mjs.map +1 -0
  42. package/mjs/Http/Router.mjs +1 -1
  43. package/mjs/Http/Router.mjs.map +1 -1
  44. package/mjs/Http/ServerResponse.mjs.map +1 -1
  45. package/mjs/internal/http/body.mjs +4 -1
  46. package/mjs/internal/http/body.mjs.map +1 -1
  47. package/mjs/internal/http/client.mjs +4 -1
  48. package/mjs/internal/http/client.mjs.map +1 -1
  49. package/mjs/internal/http/etag.mjs +15 -0
  50. package/mjs/internal/http/etag.mjs.map +1 -0
  51. package/mjs/internal/http/router.mjs +7 -7
  52. package/mjs/internal/http/router.mjs.map +1 -1
  53. package/mjs/internal/http/server.mjs +1 -1
  54. package/mjs/internal/http/server.mjs.map +1 -1
  55. package/mjs/internal/http/serverResponse.mjs +20 -1
  56. package/mjs/internal/http/serverResponse.mjs.map +1 -1
  57. package/package.json +2 -1
  58. package/src/Http/Body.ts +16 -1
  59. package/src/Http/Client.ts +13 -0
  60. package/src/Http/Etag.ts +64 -0
  61. package/src/Http/Router.ts +52 -22
  62. package/src/Http/ServerResponse.ts +2 -1
  63. package/src/internal/http/body.ts +22 -3
  64. package/src/internal/http/client.ts +5 -1
  65. package/src/internal/http/etag.ts +20 -0
  66. package/src/internal/http/router.ts +7 -7
  67. package/src/internal/http/server.ts +1 -1
  68. package/src/internal/http/serverResponse.ts +32 -10
@@ -154,16 +154,16 @@ export const head = /*#__PURE__*/route("HEAD");
154
154
  /** @internal */
155
155
  export const options = /*#__PURE__*/route("OPTIONS");
156
156
  /** @internal */
157
- export const transform = /*#__PURE__*/dual(2, (self, f) => new RouterImpl(Chunk.map(self.routes, route => new RouteImpl(route.method, route.path, f(route.handler), route.prefix)), Chunk.map(self.mounts, ([path, app]) => [path, f(app)])));
157
+ export const use = /*#__PURE__*/dual(2, (self, f) => new RouterImpl(Chunk.map(self.routes, route => new RouteImpl(route.method, route.path, f(route.handler), route.prefix)), Chunk.map(self.mounts, ([path, app]) => [path, f(app)])));
158
158
  /** @internal */
159
- export const catchAll = /*#__PURE__*/dual(2, (self, f) => transform(self, Effect.catchAll(f)));
159
+ export const catchAll = /*#__PURE__*/dual(2, (self, f) => use(self, Effect.catchAll(f)));
160
160
  /** @internal */
161
- export const catchAllCause = /*#__PURE__*/dual(2, (self, f) => transform(self, Effect.catchAllCause(f)));
161
+ export const catchAllCause = /*#__PURE__*/dual(2, (self, f) => use(self, Effect.catchAllCause(f)));
162
162
  /** @internal */
163
- export const catchTag = /*#__PURE__*/dual(3, (self, k, f) => transform(self, Effect.catchTag(k, f)));
163
+ export const catchTag = /*#__PURE__*/dual(3, (self, k, f) => use(self, Effect.catchTag(k, f)));
164
164
  /** @internal */
165
- export const catchTags = /*#__PURE__*/dual(2, (self, cases) => transform(self, Effect.catchTags(cases)));
166
- export const provideService = /*#__PURE__*/dual(3, (self, tag, service) => transform(self, Effect.provideService(tag, service)));
165
+ export const catchTags = /*#__PURE__*/dual(2, (self, cases) => use(self, Effect.catchTags(cases)));
166
+ export const provideService = /*#__PURE__*/dual(3, (self, tag, service) => use(self, Effect.provideService(tag, service)));
167
167
  /* @internal */
168
- export const provideServiceEffect = /*#__PURE__*/dual(3, (self, tag, effect) => transform(self, Effect.provideServiceEffect(tag, effect)));
168
+ export const provideServiceEffect = /*#__PURE__*/dual(3, (self, tag, effect) => use(self, Effect.provideServiceEffect(tag, effect)));
169
169
  //# sourceMappingURL=router.mjs.map
@@ -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","transform","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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"}
@@ -4,7 +4,7 @@ import * as Effect from "@effect/io/Effect";
4
4
  /** @internal */
5
5
  export const TypeId = /*#__PURE__*/Symbol.for("@effect/platform/Http/Server");
6
6
  /** @internal */
7
- export const serverTag = /*#__PURE__*/Context.Tag("@effect/platform/Http/Server");
7
+ export const serverTag = /*#__PURE__*/Context.Tag(TypeId);
8
8
  const serverProto = {
9
9
  [TypeId]: TypeId
10
10
  };
@@ -1 +1 @@
1
- {"version":3,"file":"server.mjs","names":["Context","dual","Effect","TypeId","Symbol","for","serverTag","Tag","serverProto","isServer","u","make","options","Object","assign","create","serve","args","isEffect","httpApp","middleware","flatMap","server"],"sources":["../../../src/internal/http/server.ts"],"sourcesContent":[null],"mappings":"AAAA,OAAO,KAAKA,OAAO,MAAM,sBAAsB;AAC/C,SAASC,IAAI,QAAQ,uBAAuB;AAC5C,OAAO,KAAKC,MAAM,MAAM,mBAAmB;AAQ3C;AACA,OAAO,MAAMC,MAAM,gBAAkBC,MAAM,CAACC,GAAG,CAAC,8BAA8B,CAAkB;AAEhG;AACA,OAAO,MAAMC,SAAS,gBAAGN,OAAO,CAACO,GAAG,CAAgB,8BAA8B,CAAC;AAEnF,MAAMC,WAAW,GAAG;EAClB,CAACL,MAAM,GAAGA;CACX;AAED;AACA,OAAO,MAAMM,QAAQ,GAAIC,CAAU,IAAyB,OAAOA,CAAC,KAAK,QAAQ,IAAIA,CAAC,KAAK,IAAI,IAAIP,MAAM,IAAIO,CAAC;AAE9G;AACA,OAAO,MAAMC,IAAI,GACfC,OAMC,IACiBC,MAAM,CAACC,MAAM,CAACD,MAAM,CAACE,MAAM,CAACP,WAAW,CAAC,EAAEI,OAAO,CAAC;AAEtE;AACA,OAAO,MAAMI,KAAK,gBAAGf,IAAI,CA+BtBgB,IAAI,IAAKf,MAAM,CAACgB,QAAQ,CAACD,IAAI,CAAC,CAAC,CAAC,CAAC,EACjC,CACCE,OAA0B,EAC1BC,UAAoD,KAMpDlB,MAAM,CAACmB,OAAO,CACZf,SAAS,EACRgB,MAAM,IAAKA,MAAM,CAACN,KAAK,CAACG,OAAO,EAAEC,UAAU,CAAC,CACtC,CACZ"}
1
+ {"version":3,"file":"server.mjs","names":["Context","dual","Effect","TypeId","Symbol","for","serverTag","Tag","serverProto","isServer","u","make","options","Object","assign","create","serve","args","isEffect","httpApp","middleware","flatMap","server"],"sources":["../../../src/internal/http/server.ts"],"sourcesContent":[null],"mappings":"AAAA,OAAO,KAAKA,OAAO,MAAM,sBAAsB;AAC/C,SAASC,IAAI,QAAQ,uBAAuB;AAC5C,OAAO,KAAKC,MAAM,MAAM,mBAAmB;AAQ3C;AACA,OAAO,MAAMC,MAAM,gBAAkBC,MAAM,CAACC,GAAG,CAAC,8BAA8B,CAAkB;AAEhG;AACA,OAAO,MAAMC,SAAS,gBAAGN,OAAO,CAACO,GAAG,CAAgBJ,MAAM,CAAC;AAE3D,MAAMK,WAAW,GAAG;EAClB,CAACL,MAAM,GAAGA;CACX;AAED;AACA,OAAO,MAAMM,QAAQ,GAAIC,CAAU,IAAyB,OAAOA,CAAC,KAAK,QAAQ,IAAIA,CAAC,KAAK,IAAI,IAAIP,MAAM,IAAIO,CAAC;AAE9G;AACA,OAAO,MAAMC,IAAI,GACfC,OAMC,IACiBC,MAAM,CAACC,MAAM,CAACD,MAAM,CAACE,MAAM,CAACP,WAAW,CAAC,EAAEI,OAAO,CAAC;AAEtE;AACA,OAAO,MAAMI,KAAK,gBAAGf,IAAI,CA+BtBgB,IAAI,IAAKf,MAAM,CAACgB,QAAQ,CAACD,IAAI,CAAC,CAAC,CAAC,CAAC,EACjC,CACCE,OAA0B,EAC1BC,UAAoD,KAMpDlB,MAAM,CAACmB,OAAO,CACZf,SAAS,EACRgB,MAAM,IAAKA,MAAM,CAACN,KAAK,CAACG,OAAO,EAAEC,UAAU,CAAC,CACtC,CACZ"}
@@ -1,6 +1,8 @@
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";
4
6
  import * as Headers from "@effect/platform/Http/Headers";
5
7
  import * as ServerRequest from "@effect/platform/Http/ServerRequest";
6
8
  import * as UrlParams from "@effect/platform/Http/UrlParams";
@@ -58,7 +60,24 @@ export const schemaJson = schema => {
58
60
  return (body, options) => new ServerResponseImpl(options?.status ?? 200, options?.statusText, options?.headers ?? Headers.empty, encode(body));
59
61
  };
60
62
  /** @internal */
61
- export const file = (path, options) => Effect.map(internalBody.file(path, options), body => new ServerResponseImpl(options?.status ?? 200, options?.statusText, options?.headers ?? Headers.empty, body));
63
+ export const file = (path, options) => Effect.map(({
64
+ body,
65
+ etag,
66
+ info
67
+ }) => {
68
+ const headers = {
69
+ ...(options?.headers ?? {}),
70
+ etag: Etag.toString(etag)
71
+ };
72
+ if (info.mtime._tag === "Some") {
73
+ headers["last-modified"] = info.mtime.value.toUTCString();
74
+ }
75
+ return new ServerResponseImpl(options?.status ?? 200, options?.statusText, headers, body);
76
+ })(Effect.bind("body", ({
77
+ info
78
+ }) => internalBody.fileInfo(path, info, options))(Effect.bind("etag", ({
79
+ info
80
+ }) => Effect.flatMap(Etag.Generator, generator => generator.fromFileInfo(info)))(Effect.bindTo(Effect.flatMap(FileSystem.FileSystem, fs => fs.stat(path)), "info"))));
62
81
  /** @internal */
63
82
  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"));
64
83
  /** @internal */
@@ -1 +1 @@
1
- {"version":3,"file":"serverResponse.mjs","names":["dual","pipeArguments","Effect","Headers","ServerRequest","UrlParams","internalBody","internalError","TypeId","Symbol","for","ServerResponseImpl","constructor","status","statusText","headers","body","contentType","contentLength","newHeaders","toString","pipe","arguments","isServerResponse","u","toNonEffectBody","self","_tag","map","catchAll","effect","error","flatMap","request","fail","responseError","reason","response","setBody","succeed","empty","options","uint8Array","getContentType","text","json","unsafeJson","schemaJson","schema","encode","jsonSchema","file","path","urlParams","fromInput","raw","formData","stream","setHeader","key","value","set","setHeaders","input","setAll","setStatus","args","remove"],"sources":["../../../src/internal/http/serverResponse.ts"],"sourcesContent":[null],"mappings":"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"}
1
+ {"version":3,"file":"serverResponse.mjs","names":["dual","pipeArguments","Effect","FileSystem","Etag","Headers","ServerRequest","UrlParams","internalBody","internalError","TypeId","Symbol","for","ServerResponseImpl","constructor","status","statusText","headers","body","contentType","contentLength","newHeaders","toString","pipe","arguments","isServerResponse","u","toNonEffectBody","self","_tag","map","catchAll","effect","error","flatMap","request","fail","responseError","reason","response","setBody","succeed","empty","options","uint8Array","getContentType","text","json","unsafeJson","schemaJson","schema","encode","jsonSchema","file","path","etag","info","mtime","value","toUTCString","bind","fileInfo","Generator","generator","fromFileInfo","bindTo","fs","stat","urlParams","fromInput","raw","formData","stream","setHeader","key","set","setHeaders","input","setAll","setStatus","args","remove"],"sources":["../../../src/internal/http/serverResponse.ts"],"sourcesContent":[null],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@effect/platform",
3
- "version": "0.13.3",
3
+ "version": "0.13.4",
4
4
  "description": "Unified interfaces for common platform-specific services",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -26,6 +26,7 @@
26
26
  "author": "Effect contributors",
27
27
  "dependencies": {
28
28
  "find-my-way": "^7.6.2",
29
+ "mime": "^3.0.0",
29
30
  "path-browserify": "^1.0.1"
30
31
  },
31
32
  "peerDependencies": {
package/src/Http/Body.ts CHANGED
@@ -163,7 +163,12 @@ export interface Stream extends Body.Proto {
163
163
  * @since 1.0.0
164
164
  * @category constructors
165
165
  */
166
- export const stream: (body: Stream_.Stream<never, unknown, globalThis.Uint8Array>) => Stream = internal.stream
166
+ export const stream: (
167
+ body: Stream_.Stream<never, unknown, globalThis.Uint8Array>,
168
+ contentType?: string,
169
+ contentLength?: number,
170
+ etag?: string
171
+ ) => Stream = internal.stream
167
172
 
168
173
  /**
169
174
  * @since 1.0.0
@@ -173,3 +178,13 @@ export const file: (
173
178
  path: string,
174
179
  options?: FileSystem.StreamOptions & { readonly contentType?: string }
175
180
  ) => Effect.Effect<FileSystem.FileSystem, PlatformError.PlatformError, Stream> = internal.file
181
+
182
+ /**
183
+ * @since 1.0.0
184
+ * @category constructors
185
+ */
186
+ export const fileInfo: (
187
+ path: string,
188
+ info: FileSystem.File.Info,
189
+ options?: FileSystem.StreamOptions & { readonly contentType?: string }
190
+ ) => Effect.Effect<FileSystem.FileSystem, PlatformError.PlatformError, Stream> = internal.fileInfo
@@ -14,11 +14,24 @@ import * as internal from "@effect/platform/internal/http/client"
14
14
  import type * as ParseResult from "@effect/schema/ParseResult"
15
15
  import type * as Schema from "@effect/schema/Schema"
16
16
 
17
+ /**
18
+ * @since 1.0.0
19
+ * @category type ids
20
+ */
21
+ export const TypeId: unique symbol = internal.TypeId
22
+
23
+ /**
24
+ * @since 1.0.0
25
+ * @category type ids
26
+ */
27
+ export type TypeId = typeof TypeId
28
+
17
29
  /**
18
30
  * @since 1.0.0
19
31
  * @category models
20
32
  */
21
33
  export interface Client<R, E, A> extends Pipeable {
34
+ readonly [TypeId]: TypeId
22
35
  (request: ClientRequest.ClientRequest): Effect.Effect<R, E, A>
23
36
  }
24
37
 
@@ -0,0 +1,64 @@
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 FileSystem from "@effect/platform/FileSystem"
7
+ import * as internal from "@effect/platform/internal/http/etag"
8
+
9
+ /**
10
+ * @since 1.0.0
11
+ * @category models
12
+ */
13
+ export type Etag = Weak | Strong
14
+
15
+ /**
16
+ * @since 1.0.0
17
+ * @category models
18
+ */
19
+ export interface Weak {
20
+ readonly _tag: "Weak"
21
+ readonly value: string
22
+ }
23
+
24
+ /**
25
+ * @since 1.0.0
26
+ * @category models
27
+ */
28
+ export interface Strong {
29
+ readonly _tag: "Strong"
30
+ readonly value: string
31
+ }
32
+
33
+ /**
34
+ * @since 1.0.0
35
+ * @category convertions
36
+ */
37
+ export const toString: (self: Etag) => string = internal.toString
38
+
39
+ /**
40
+ * @since 1.0.0
41
+ * @category type ids
42
+ */
43
+ export const GeneratorTypeId: unique symbol = internal.GeneratorTypeId
44
+
45
+ /**
46
+ * @since 1.0.0
47
+ * @category type ids
48
+ */
49
+ export type GeneratorTypeId = typeof GeneratorTypeId
50
+
51
+ /**
52
+ * @since 1.0.0
53
+ * @category models
54
+ */
55
+ export interface Generator {
56
+ readonly [GeneratorTypeId]: GeneratorTypeId
57
+ readonly fromFileInfo: (info: FileSystem.File.Info) => Effect.Effect<never, never, Etag>
58
+ }
59
+
60
+ /**
61
+ * @since 1.0.0
62
+ * @category tags
63
+ */
64
+ export const Generator: Context.Tag<Generator, Generator> = internal.tag
@@ -346,15 +346,20 @@ export const options: {
346
346
  * @since 1.0.0
347
347
  * @category combinators
348
348
  */
349
- export const transform = internal.transform
349
+ export const use = internal.use
350
350
 
351
351
  /**
352
352
  * @since 1.0.0
353
353
  * @category combinators
354
354
  */
355
355
  export const catchAll: {
356
- <E, R2, E2>(f: (e: E) => Route.Handler<R2, E2>): <R>(self: Router<R, E>) => Router<R2 | R, E2>
357
- <R, E, R2, E2>(self: Router<R, E>, f: (e: E) => Route.Handler<R2, E2>): Router<R | R2, E2>
356
+ <E, R2, E2>(f: (e: E) => Route.Handler<R2, E2>): <R>(
357
+ self: Router<R, E>
358
+ ) => Router<R2 | R, E2>
359
+ <R, E, R2, E2>(
360
+ self: Router<R, E>,
361
+ f: (e: E) => Route.Handler<R2, E2>
362
+ ): Router<R | R2, E2>
358
363
  } = internal.catchAll
359
364
 
360
365
  /**
@@ -362,8 +367,13 @@ export const catchAll: {
362
367
  * @category combinators
363
368
  */
364
369
  export const catchAllCause: {
365
- <E, R2, E2>(f: (e: Cause.Cause<E>) => Route.Handler<R2, E2>): <R>(self: Router<R, E>) => Router<R2 | R, E2>
366
- <R, E, R2, E2>(self: Router<R, E>, f: (e: Cause.Cause<E>) => Route.Handler<R2, E2>): Router<R | R2, E2>
370
+ <E, R2, E2>(f: (e: Cause.Cause<E>) => Route.Handler<R2, E2>): <R>(
371
+ self: Router<R, E>
372
+ ) => Router<R2 | R, E2>
373
+ <R, E, R2, E2>(
374
+ self: Router<R, E>,
375
+ f: (e: Cause.Cause<E>) => Route.Handler<R2, E2>
376
+ ): Router<R | R2, E2>
367
377
  } = internal.catchAllCause
368
378
 
369
379
  /**
@@ -389,40 +399,56 @@ export const catchTag: {
389
399
  export const catchTags: {
390
400
  <
391
401
  E,
392
- Cases extends E extends { _tag: string }
393
- ? { [K in E["_tag"]]+?: ((error: Extract<E, { _tag: K }>) => Route.Handler<any, any>) | undefined }
402
+ Cases extends E extends { _tag: string } ? {
403
+ [K in E["_tag"]]+?:
404
+ | ((error: Extract<E, { _tag: K }>) => Route.Handler<any, any>)
405
+ | undefined
406
+ }
394
407
  : {}
395
408
  >(
396
409
  cases: Cases
397
- ): <R>(
398
- self: Router<R, E>
399
- ) => Router<
410
+ ): <R>(self: Router<R, E>) => Router<
400
411
  | R
401
412
  | {
402
- [K in keyof Cases]: Cases[K] extends (...args: Array<any>) => Effect.Effect<infer R, any, any> ? R : never
413
+ [K in keyof Cases]: Cases[K] extends (
414
+ ...args: Array<any>
415
+ ) => Effect.Effect<infer R, any, any> ? R
416
+ : never
403
417
  }[keyof Cases],
404
418
  | Exclude<E, { _tag: keyof Cases }>
405
419
  | {
406
- [K in keyof Cases]: Cases[K] extends (...args: Array<any>) => Effect.Effect<any, infer E, any> ? E : never
420
+ [K in keyof Cases]: Cases[K] extends (
421
+ ...args: Array<any>
422
+ ) => Effect.Effect<any, infer E, any> ? E
423
+ : never
407
424
  }[keyof Cases]
408
425
  >
409
426
  <
410
427
  R,
411
428
  E,
412
- Cases extends E extends { _tag: string }
413
- ? { [K in E["_tag"]]+?: ((error: Extract<E, { _tag: K }>) => Route.Handler<any, any>) | undefined } :
414
- {}
429
+ Cases extends E extends { _tag: string } ? {
430
+ [K in E["_tag"]]+?:
431
+ | ((error: Extract<E, { _tag: K }>) => Route.Handler<any, any>)
432
+ | undefined
433
+ }
434
+ : {}
415
435
  >(
416
436
  self: Router<R, E>,
417
437
  cases: Cases
418
438
  ): Router<
419
439
  | R
420
440
  | {
421
- [K in keyof Cases]: Cases[K] extends (...args: Array<any>) => Effect.Effect<infer R, any, any> ? R : never
441
+ [K in keyof Cases]: Cases[K] extends (
442
+ ...args: Array<any>
443
+ ) => Effect.Effect<infer R, any, any> ? R
444
+ : never
422
445
  }[keyof Cases],
423
446
  | Exclude<E, { _tag: keyof Cases }>
424
447
  | {
425
- [K in keyof Cases]: Cases[K] extends (...args: Array<any>) => Effect.Effect<any, infer E, any> ? E : never
448
+ [K in keyof Cases]: Cases[K] extends (
449
+ ...args: Array<any>
450
+ ) => Effect.Effect<any, infer E, any> ? E
451
+ : never
426
452
  }[keyof Cases]
427
453
  >
428
454
  } = internal.catchTags
@@ -432,10 +458,12 @@ export const catchTags: {
432
458
  * @category combinators
433
459
  */
434
460
  export const provideService: {
435
- <T extends Context.Tag<any, any>>(
436
- tag: T,
437
- service: Context.Tag.Service<T>
438
- ): <R, E>(self: Router<R, E>) => Router<Exclude<R, Context.Tag.Identifier<T>>, E>
461
+ <T extends Context.Tag<any, any>>(tag: T, service: Context.Tag.Service<T>): <
462
+ R,
463
+ E
464
+ >(
465
+ self: Router<R, E>
466
+ ) => Router<Exclude<R, Context.Tag.Identifier<T>>, E>
439
467
  <R, E, T extends Context.Tag<any, any>>(
440
468
  self: Router<R, E>,
441
469
  tag: T,
@@ -451,7 +479,9 @@ export const provideServiceEffect: {
451
479
  <T extends Context.Tag<any, any>, R1, E1>(
452
480
  tag: T,
453
481
  effect: Effect.Effect<R1, E1, Context.Tag.Service<T>>
454
- ): <R, E>(self: Router<R, E>) => Router<R1 | Exclude<R, Context.Tag.Identifier<T>>, E1 | E>
482
+ ): <R, E>(
483
+ self: Router<R, E>
484
+ ) => Router<R1 | Exclude<R, Context.Tag.Identifier<T>>, E1 | E>
455
485
  <R, E, T extends Context.Tag<any, any>, R1, E1>(
456
486
  self: Router<R, E>,
457
487
  tag: T,
@@ -6,6 +6,7 @@ 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"
9
10
  import type * as Headers from "@effect/platform/Http/Headers"
10
11
  import type * as Error from "@effect/platform/Http/ServerError"
11
12
  import type * as ServerRequest from "@effect/platform/Http/ServerRequest"
@@ -172,7 +173,7 @@ export const stream: (body: Stream.Stream<never, unknown, Uint8Array>, options?:
172
173
  export const file: (
173
174
  path: string,
174
175
  options?: Options & FileSystem.StreamOptions
175
- ) => Effect.Effect<FileSystem.FileSystem, PlatformError.PlatformError, ServerResponse> = internal.file
176
+ ) => Effect.Effect<FileSystem.FileSystem | Etag.Generator, PlatformError.PlatformError, ServerResponse> = internal.file
176
177
 
177
178
  /**
178
179
  * @since 1.0.0
@@ -4,6 +4,7 @@ import * as FileSystem from "@effect/platform/FileSystem"
4
4
  import type * as Body from "@effect/platform/Http/Body"
5
5
  import * as Schema from "@effect/schema/Schema"
6
6
  import type * as Stream_ from "@effect/stream/Stream"
7
+ import * as Mime from "mime/lite"
7
8
 
8
9
  /** @internal */
9
10
  export const TypeId: Body.TypeId = Symbol.for(
@@ -100,9 +101,27 @@ export const file = (
100
101
  Effect.flatMap(
101
102
  FileSystem.FileSystem,
102
103
  (fs) =>
103
- Effect.map(
104
- fs.stat(path),
105
- (stat) => stream(fs.stream(path, options), options?.contentType, Number(stat.size))
104
+ Effect.map(fs.stat(path), (info) =>
105
+ stream(
106
+ fs.stream(path, options),
107
+ options?.contentType ?? Mime.getType(path) ?? undefined,
108
+ Number(info.size)
109
+ ))
110
+ )
111
+
112
+ /** @internal */
113
+ export const fileInfo = (
114
+ path: string,
115
+ info: FileSystem.File.Info,
116
+ options?: FileSystem.StreamOptions & { readonly contentType?: string }
117
+ ): Effect.Effect<FileSystem.FileSystem, PlatformError.PlatformError, Body.Stream> =>
118
+ Effect.map(
119
+ FileSystem.FileSystem,
120
+ (fs) =>
121
+ stream(
122
+ fs.stream(path, options),
123
+ options?.contentType ?? Mime.getType(path) ?? undefined,
124
+ Number(info.size)
106
125
  )
107
126
  )
108
127
 
@@ -21,9 +21,13 @@ import * as Schema from "@effect/schema/Schema"
21
21
  import * as Stream from "@effect/stream/Stream"
22
22
 
23
23
  /** @internal */
24
- export const tag = Context.Tag<Client.Client.Default>("@effect/platform/Http/Client")
24
+ export const TypeId: Client.TypeId = Symbol.for("@effect/platform/Http/Client") as Client.TypeId
25
+
26
+ /** @internal */
27
+ export const tag = Context.Tag<Client.Client.Default>(TypeId)
25
28
 
26
29
  const clientProto = {
30
+ [TypeId]: TypeId,
27
31
  pipe() {
28
32
  return pipeArguments(this, arguments)
29
33
  }
@@ -0,0 +1,20 @@
1
+ import * as Context from "@effect/data/Context"
2
+ import type * as Etag from "@effect/platform/Http/Etag"
3
+
4
+ /** @internal */
5
+ export const GeneratorTypeId: Etag.GeneratorTypeId = Symbol.for(
6
+ "@effect/platform/Http/Etag/Generator"
7
+ ) as Etag.GeneratorTypeId
8
+
9
+ /** @internal */
10
+ export const tag = Context.Tag<Etag.Generator>(GeneratorTypeId)
11
+
12
+ /** @internal */
13
+ export const toString = (self: Etag.Etag): string => {
14
+ switch (self._tag) {
15
+ case "Weak":
16
+ return `W/"${self.value}"`
17
+ case "Strong":
18
+ return `"${self.value}"`
19
+ }
20
+ }
@@ -305,7 +305,7 @@ export const head = route("HEAD")
305
305
  export const options = route("OPTIONS")
306
306
 
307
307
  /** @internal */
308
- export const transform = dual<
308
+ export const use = dual<
309
309
  <R, E, R1, E1>(
310
310
  f: (self: Router.Route.Handler<R, E>) => Router.Route.Handler<R1, E1>
311
311
  ) => (self: Router.Router<R, E>) => Router.Router<R1, E1>,
@@ -334,7 +334,7 @@ export const catchAll = dual<
334
334
  self: Router.Router<R, E>,
335
335
  f: (e: E) => Router.Route.Handler<R2, E2>
336
336
  ) => Router.Router<R2 | R, E2>
337
- >(2, (self, f) => transform(self, Effect.catchAll(f)))
337
+ >(2, (self, f) => use(self, Effect.catchAll(f)))
338
338
 
339
339
  /** @internal */
340
340
  export const catchAllCause = dual<
@@ -345,7 +345,7 @@ export const catchAllCause = dual<
345
345
  self: Router.Router<R, E>,
346
346
  f: (e: Cause.Cause<E>) => Router.Route.Handler<R2, E2>
347
347
  ) => Router.Router<R2 | R, E2>
348
- >(2, (self, f) => transform(self, Effect.catchAllCause(f)))
348
+ >(2, (self, f) => use(self, Effect.catchAllCause(f)))
349
349
 
350
350
  /** @internal */
351
351
  export const catchTag = dual<
@@ -358,7 +358,7 @@ export const catchTag = dual<
358
358
  k: K,
359
359
  f: (e: Extract<E, { _tag: K }>) => Router.Route.Handler<R1, E1>
360
360
  ) => Router.Router<R | R1, Exclude<E, { _tag: K }> | E1>
361
- >(3, (self, k, f) => transform(self, Effect.catchTag(k, f)))
361
+ >(3, (self, k, f) => use(self, Effect.catchTag(k, f)))
362
362
 
363
363
  /** @internal */
364
364
  export const catchTags: {
@@ -400,7 +400,7 @@ export const catchTags: {
400
400
  [K in keyof Cases]: Cases[K] extends ((...args: Array<any>) => Effect.Effect<any, infer E, any>) ? E : never
401
401
  }[keyof Cases]
402
402
  >
403
- } = dual(2, (self: Router.Router<any, any>, cases: {}) => transform(self, Effect.catchTags(cases)))
403
+ } = dual(2, (self: Router.Router<any, any>, cases: {}) => use(self, Effect.catchTags(cases)))
404
404
 
405
405
  export const provideService = dual<
406
406
  <T extends Context.Tag<any, any>>(
@@ -412,7 +412,7 @@ export const provideService = dual<
412
412
  tag: T,
413
413
  service: Context.Tag.Service<T>
414
414
  ) => Router.Router<Exclude<R, Context.Tag.Identifier<T>>, E>
415
- >(3, (self, tag, service) => transform(self, Effect.provideService(tag, service)))
415
+ >(3, (self, tag, service) => use(self, Effect.provideService(tag, service)))
416
416
 
417
417
  /* @internal */
418
418
  export const provideServiceEffect = dual<
@@ -429,4 +429,4 @@ export const provideServiceEffect = dual<
429
429
  self: Router.Router<R, E>,
430
430
  tag: T,
431
431
  effect: Effect.Effect<R1, E1, Context.Tag.Service<T>>
432
- ) => transform(self, Effect.provideServiceEffect(tag, effect)))
432
+ ) => use(self, Effect.provideServiceEffect(tag, effect)))
@@ -12,7 +12,7 @@ import type * as ServerRequest from "@effect/platform/Http/ServerRequest"
12
12
  export const TypeId: Server.TypeId = Symbol.for("@effect/platform/Http/Server") as Server.TypeId
13
13
 
14
14
  /** @internal */
15
- export const serverTag = Context.Tag<Server.Server>("@effect/platform/Http/Server")
15
+ export const serverTag = Context.Tag<Server.Server>(TypeId)
16
16
 
17
17
  const serverProto = {
18
18
  [TypeId]: TypeId