@effect/platform 0.45.2 → 0.45.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 (37) hide show
  1. package/Template/package.json +6 -0
  2. package/dist/cjs/Http/Client.js.map +1 -1
  3. package/dist/cjs/Http/ServerResponse.js +11 -1
  4. package/dist/cjs/Http/ServerResponse.js.map +1 -1
  5. package/dist/cjs/Template.js +133 -0
  6. package/dist/cjs/Template.js.map +1 -0
  7. package/dist/cjs/index.js +3 -1
  8. package/dist/cjs/internal/http/client.js +2 -2
  9. package/dist/cjs/internal/http/client.js.map +1 -1
  10. package/dist/cjs/internal/http/serverResponse.js +19 -1
  11. package/dist/cjs/internal/http/serverResponse.js.map +1 -1
  12. package/dist/dts/Http/Client.d.ts +2 -2
  13. package/dist/dts/Http/Client.d.ts.map +1 -1
  14. package/dist/dts/Http/ServerResponse.d.ts +14 -0
  15. package/dist/dts/Http/ServerResponse.d.ts.map +1 -1
  16. package/dist/dts/Template.d.ts +48 -0
  17. package/dist/dts/Template.d.ts.map +1 -0
  18. package/dist/dts/index.d.ts +4 -0
  19. package/dist/dts/index.d.ts.map +1 -1
  20. package/dist/esm/Http/Client.js.map +1 -1
  21. package/dist/esm/Http/ServerResponse.js +10 -0
  22. package/dist/esm/Http/ServerResponse.js.map +1 -1
  23. package/dist/esm/Template.js +100 -0
  24. package/dist/esm/Template.js.map +1 -0
  25. package/dist/esm/index.js +4 -0
  26. package/dist/esm/index.js.map +1 -1
  27. package/dist/esm/internal/http/client.js +2 -2
  28. package/dist/esm/internal/http/client.js.map +1 -1
  29. package/dist/esm/internal/http/serverResponse.js +16 -0
  30. package/dist/esm/internal/http/serverResponse.js.map +1 -1
  31. package/package.json +11 -3
  32. package/src/Http/Client.ts +2 -14
  33. package/src/Http/ServerResponse.ts +22 -0
  34. package/src/Template.ts +180 -0
  35. package/src/index.ts +5 -0
  36. package/src/internal/http/client.ts +18 -20
  37. package/src/internal/http/serverResponse.ts +47 -0
@@ -555,7 +555,7 @@ export const schemaFunction = dual<
555
555
  request: ClientRequest.ClientRequest
556
556
  ) => (
557
557
  a: SA
558
- ) => Effect.Effect<A, E | ParseResult.ParseError | Error.RequestError, Exclude<SR | R, Scope.Scope>>,
558
+ ) => Effect.Effect<A, E | ParseResult.ParseError | Error.RequestError, SR | R>,
559
559
  <R, E, A, SA, SI, SR>(
560
560
  self: Client.Client<R, E, A>,
561
561
  schema: Schema.Schema<SA, SI, SR>
@@ -563,29 +563,27 @@ export const schemaFunction = dual<
563
563
  request: ClientRequest.ClientRequest
564
564
  ) => (
565
565
  a: SA
566
- ) => Effect.Effect<A, E | ParseResult.ParseError | Error.RequestError, Exclude<SR | R, Scope.Scope>>
566
+ ) => Effect.Effect<A, E | ParseResult.ParseError | Error.RequestError, SR | R>
567
567
  >(2, (self, schema) => {
568
568
  const encode = Schema.encode(schema)
569
569
  return (request) => (a) =>
570
- Effect.scoped(
571
- Effect.flatMap(
572
- Effect.tryMap(encode(a), {
573
- try: (body) => new TextEncoder().encode(JSON.stringify(body)),
574
- catch: (error) =>
575
- internalError.requestError({
576
- request,
577
- reason: "Encode",
578
- error
579
- })
580
- }),
581
- (body) =>
582
- self(
583
- internalRequest.setBody(
584
- request,
585
- internalBody.uint8Array(body, "application/json")
586
- )
570
+ Effect.flatMap(
571
+ Effect.tryMap(encode(a), {
572
+ try: (body) => new TextEncoder().encode(JSON.stringify(body)),
573
+ catch: (error) =>
574
+ internalError.requestError({
575
+ request,
576
+ reason: "Encode",
577
+ error
578
+ })
579
+ }),
580
+ (body) =>
581
+ self(
582
+ internalRequest.setBody(
583
+ request,
584
+ internalBody.uint8Array(body, "application/json")
587
585
  )
588
- )
586
+ )
589
587
  )
590
588
  })
591
589
 
@@ -10,6 +10,7 @@ import * as Headers from "../../Http/Headers.js"
10
10
  import * as Platform from "../../Http/Platform.js"
11
11
  import type * as ServerResponse from "../../Http/ServerResponse.js"
12
12
  import * as UrlParams from "../../Http/UrlParams.js"
13
+ import * as Template from "../../Template.js"
13
14
  import * as internalBody from "./body.js"
14
15
 
15
16
  /** @internal */
@@ -91,6 +92,52 @@ export const text = (body: string, options?: ServerResponse.Options.WithContentT
91
92
  internalBody.text(body, getContentType(options))
92
93
  )
93
94
 
95
+ /** @internal */
96
+ export const html: {
97
+ <A extends ReadonlyArray<Template.Interpolated>>(
98
+ strings: TemplateStringsArray,
99
+ ...args: A
100
+ ): Effect.Effect<
101
+ ServerResponse.ServerResponse,
102
+ Template.Interpolated.Error<A[number]>,
103
+ Template.Interpolated.Context<A[number]>
104
+ >
105
+ (html: string): ServerResponse.ServerResponse
106
+ } = (
107
+ strings: TemplateStringsArray | string,
108
+ ...args: ReadonlyArray<Template.Interpolated>
109
+ ) => {
110
+ if (typeof strings === "string") {
111
+ return text(strings, { contentType: "text/html" })
112
+ }
113
+
114
+ return Effect.map(
115
+ Template.make(strings, ...args),
116
+ (_) => text(_, { contentType: "text/html" })
117
+ ) as any
118
+ }
119
+
120
+ /** @internal */
121
+ export const htmlStream = <A extends ReadonlyArray<Template.InterpolatedWithStream>>(
122
+ strings: TemplateStringsArray,
123
+ ...args: A
124
+ ): Effect.Effect<
125
+ ServerResponse.ServerResponse,
126
+ never,
127
+ Template.Interpolated.Context<A[number]>
128
+ > =>
129
+ Effect.map(
130
+ Effect.context<any>(),
131
+ (context) =>
132
+ stream(
133
+ Stream.provideContext(
134
+ Stream.encodeText(Template.stream(strings, ...args)),
135
+ context
136
+ ),
137
+ { contentType: "text/html" }
138
+ )
139
+ )
140
+
94
141
  /** @internal */
95
142
  export const json = (
96
143
  body: unknown,