diff --git a/.changeset/mighty-trees-wait.md b/.changeset/mighty-trees-wait.md new file mode 100644 index 0000000000..48ef0aaa2b --- /dev/null +++ b/.changeset/mighty-trees-wait.md @@ -0,0 +1,15 @@ +--- +"@effect/platform": minor +"@effect/platform-browser": minor +"@effect/platform-bun": minor +"@effect/platform-node": minor +"@effect/platform-node-shared": minor +--- + +Swap type parameters in /platform data types + +A codemod has been released to make migration easier: + +``` +npx @effect/codemod platform-0.49 src/**/* +``` diff --git a/packages/platform-node/src/Http/Server.ts b/packages/platform-node/src/Http/Server.ts index 0d94c7f74a..c42e6381fd 100644 --- a/packages/platform-node/src/Http/Server.ts +++ b/packages/platform-node/src/Http/Server.ts @@ -38,15 +38,15 @@ export const make: ( */ export const makeHandler: { ( - httpApp: App.Default + httpApp: App.Default ): Effect.Effect< (nodeRequest: Http.IncomingMessage, nodeResponse: Http.ServerResponse) => void, never, Exclude > >( - httpApp: App.Default, - middleware: Middleware.Middleware.Applied + httpApp: App.Default, + middleware: Middleware.Middleware.Applied ): Effect.Effect< (nodeRequest: Http.IncomingMessage, nodeResponse: Http.ServerResponse) => void, never, diff --git a/packages/platform-node/src/internal/http/server.ts b/packages/platform-node/src/internal/http/server.ts index 99a55ac86a..f3ee962bb9 100644 --- a/packages/platform-node/src/internal/http/server.ts +++ b/packages/platform-node/src/internal/http/server.ts @@ -114,20 +114,20 @@ export const make = ( /** @internal */ export const makeHandler: { - (httpApp: App.Default): Effect.Effect< + (httpApp: App.Default): Effect.Effect< (nodeRequest: Http.IncomingMessage, nodeResponse: Http.ServerResponse) => void, never, Exclude > >( - httpApp: App.Default, - middleware: Middleware.Middleware.Applied + httpApp: App.Default, + middleware: Middleware.Middleware.Applied ): Effect.Effect< (nodeRequest: Http.IncomingMessage, nodeResponse: Http.ServerResponse) => void, never, Exclude, ServerRequest.ServerRequest | Scope.Scope> > -} = (httpApp: App.Default, middleware?: Middleware.Middleware) => { +} = (httpApp: App.Default, middleware?: Middleware.Middleware) => { const handledApp = App.toHandled(httpApp, (request, exit) => { if (exit._tag === "Success") { return Effect.catchAllCause( @@ -164,7 +164,7 @@ export const makeHandler: { /** @internal */ export const makeUpgradeHandler = ( lazyWss: Effect.Effect, - httpApp: App.Default, + httpApp: App.Default, middleware?: Middleware.Middleware ) => { const handledApp = App.toHandled(httpApp, (request, exit) => { diff --git a/packages/platform/src/Http/App.ts b/packages/platform/src/Http/App.ts index dadbc66b52..f48da35f07 100644 --- a/packages/platform/src/Http/App.ts +++ b/packages/platform/src/Http/App.ts @@ -22,26 +22,28 @@ import * as ServerResponse from "./ServerResponse.js" * @since 1.0.0 * @category models */ -export interface HttpApp extends Effect.Effect {} +export interface HttpApp + extends Effect.Effect +{} /** * @since 1.0.0 * @category models */ -export type Default = HttpApp +export type Default = HttpApp /** * @since 1.0.0 * @category combinators */ -export const toHandled = ( - self: Default, +export const toHandled = ( + self: Default, handleResponse: ( request: ServerRequest.ServerRequest, exit: Exit.Exit ) => Effect.Effect<_, never, RH>, middleware?: Middleware | undefined -): Default, E | ServerError.ResponseError> => { +): Default> => { const withTracer = internalMiddleware.tracer(self) const responded = Effect.withFiberRuntime< ServerResponse.ServerResponse, @@ -110,8 +112,8 @@ export const appendPreResponseHandler: (handler: PreResponseHandler) => Effect.E * @category fiber refs */ export const withPreResponseHandler = dual< - (handler: PreResponseHandler) => (self: HttpApp) => HttpApp, - (self: HttpApp, handler: PreResponseHandler) => HttpApp + (handler: PreResponseHandler) => (self: HttpApp) => HttpApp, + (self: HttpApp, handler: PreResponseHandler) => HttpApp >(2, (self, handler) => Effect.locallyWith( self, @@ -131,23 +133,25 @@ export const withPreResponseHandler = dual< */ export const toWebHandlerRuntime = (runtime: Runtime.Runtime) => { const run = Runtime.runFork(runtime) - return (self: Default) => { + const resolveSymbol = Symbol() + const rejectSymbol = Symbol() + return (self: Default) => { const handled = Effect.scoped(toHandled(self, (request, exit) => { const webRequest = request.source as Request if (Exit.isSuccess(exit)) { - ;(request as any)._resolve(ServerResponse.toWeb(exit.value, request.method === "HEAD")) + ;(request as any)[resolveSymbol](ServerResponse.toWeb(exit.value, request.method === "HEAD")) } else if (Cause.isInterruptedOnly(exit.cause)) { - ;(request as any)._resolve(new Response(null, { status: webRequest.signal.aborted ? 499 : 503 })) + ;(request as any)[resolveSymbol](new Response(null, { status: webRequest.signal.aborted ? 499 : 503 })) } else { - ;(request as any)._reject(Cause.pretty(exit.cause)) + ;(request as any)[rejectSymbol](Cause.pretty(exit.cause)) } return Effect.unit })) return (request: Request): Promise => new Promise((resolve, reject) => { const req = ServerRequest.fromWeb(request) - ;(req as any)._resolve = resolve - ;(req as any)._reject = reject + ;(req as any)[resolveSymbol] = resolve + ;(req as any)[rejectSymbol] = reject const fiber = run( Effect.provideService(handled, ServerRequest.ServerRequest, req) ) @@ -162,7 +166,7 @@ export const toWebHandlerRuntime = (runtime: Runtime.Runtime) => { * @since 1.0.0 * @category conversions */ -export const toWebHandler: (self: Default) => (request: Request) => Promise = +export const toWebHandler: (self: Default) => (request: Request) => Promise = toWebHandlerRuntime(Runtime.defaultRuntime) /** @@ -170,7 +174,7 @@ export const toWebHandler: (self: Default) => (request: Reque * @category conversions */ export const toWebHandlerLayer = ( - self: Default, + self: Default, layer: Layer.Layer ): { readonly close: () => Promise diff --git a/packages/platform/src/Http/Client.ts b/packages/platform/src/Http/Client.ts index 360df1bf0c..1374e0a212 100644 --- a/packages/platform/src/Http/Client.ts +++ b/packages/platform/src/Http/Client.ts @@ -37,11 +37,11 @@ export type TypeId = typeof TypeId * @since 1.0.0 * @category models */ -export interface Client extends Pipeable, Inspectable { +export interface Client extends Pipeable, Inspectable { (request: ClientRequest.ClientRequest): Effect.Effect readonly [TypeId]: TypeId - readonly preprocess: Client.Preprocess - readonly execute: Client.Execute + readonly preprocess: Client.Preprocess + readonly execute: Client.Execute } /** @@ -52,7 +52,7 @@ export declare namespace Client { * @since 1.0.0 * @category models */ - export type Preprocess = ( + export type Preprocess = ( request: ClientRequest.ClientRequest ) => Effect.Effect @@ -60,7 +60,7 @@ export declare namespace Client { * @since 1.0.0 * @category models */ - export type Execute = ( + export type Execute = ( request: Effect.Effect ) => Effect.Effect @@ -68,13 +68,13 @@ export declare namespace Client { * @since 1.0.0 * @category models */ - export type WithResponse = Client + export type WithResponse = Client /** * @since 1.0.0 * @category models */ - export type Default = WithResponse + export type Default = WithResponse } /** @@ -120,8 +120,8 @@ export const fetchOk: (options?: RequestInit) => Client.Default = internal.fetch * @category error handling */ export const catchAll: { - (f: (e: E) => Effect.Effect): (self: Client) => Client - (self: Client, f: (e: E) => Effect.Effect): Client + (f: (e: E) => Effect.Effect): (self: Client) => Client + (self: Client, f: (e: E) => Effect.Effect): Client } = internal.catchAll /** @@ -132,12 +132,12 @@ export const catchTag: { ( tag: K, f: (e: Extract) => Effect.Effect - ): (self: Client) => Client, A1 | A> + ): (self: Client) => Client, R1 | R> ( - self: Client, + self: Client, tag: K, f: (e: Extract) => Effect.Effect - ): Client, A | A1> + ): Client, R | R1> } = internal.catchTag /** @@ -150,42 +150,42 @@ export const catchTags: { Cases extends { [K in E["_tag"]]+?: ((error: Extract) => Effect.Effect) | undefined } >( cases: Cases - ): ( - self: Client + ): ( + self: Client ) => Client< - | R + | A | { - [K in keyof Cases]: Cases[K] extends (...args: Array) => Effect.Effect ? R : never + [K in keyof Cases]: Cases[K] extends (...args: Array) => Effect.Effect ? A : never }[keyof Cases], | Exclude | { [K in keyof Cases]: Cases[K] extends (...args: Array) => Effect.Effect ? E : never }[keyof Cases], - | A + | R | { - [K in keyof Cases]: Cases[K] extends (...args: Array) => Effect.Effect ? A : never + [K in keyof Cases]: Cases[K] extends (...args: Array) => Effect.Effect ? R : never }[keyof Cases] > < - R, - E extends { _tag: string }, A, + E extends { _tag: string }, + R, Cases extends { [K in E["_tag"]]+?: ((error: Extract) => Effect.Effect) | undefined } >( - self: Client, + self: Client, cases: Cases ): Client< - | R + | A | { - [K in keyof Cases]: Cases[K] extends (...args: Array) => Effect.Effect ? R : never + [K in keyof Cases]: Cases[K] extends (...args: Array) => Effect.Effect ? A : never }[keyof Cases], | Exclude | { [K in keyof Cases]: Cases[K] extends (...args: Array) => Effect.Effect ? E : never }[keyof Cases], - | A + | R | { - [K in keyof Cases]: Cases[K] extends (...args: Array) => Effect.Effect ? A : never + [K in keyof Cases]: Cases[K] extends (...args: Array) => Effect.Effect ? R : never }[keyof Cases] > } = internal.catchTags @@ -198,12 +198,12 @@ export const filterOrElse: { ( f: Predicate.Predicate, orElse: (a: A) => Effect.Effect - ): (self: Client) => Client - ( - self: Client, + ): (self: Client) => Client + ( + self: Client, f: Predicate.Predicate, orElse: (a: A) => Effect.Effect - ): Client + ): Client } = internal.filterOrElse /** @@ -211,8 +211,8 @@ export const filterOrElse: { * @category filters */ export const filterOrFail: { - (f: Predicate.Predicate, orFailWith: (a: A) => E2): (self: Client) => Client - (self: Client, f: Predicate.Predicate, orFailWith: (a: A) => E2): Client + (f: Predicate.Predicate, orFailWith: (a: A) => E2): (self: Client) => Client + (self: Client, f: Predicate.Predicate, orFailWith: (a: A) => E2): Client } = internal.filterOrFail /** @@ -222,29 +222,29 @@ export const filterOrFail: { export const filterStatus: { ( f: (status: number) => boolean - ): (self: Client.WithResponse) => Client.WithResponse - ( - self: Client.WithResponse, + ): (self: Client.WithResponse) => Client.WithResponse + ( + self: Client.WithResponse, f: (status: number) => boolean - ): Client.WithResponse + ): Client.WithResponse } = internal.filterStatus /** * @since 1.0.0 * @category filters */ -export const filterStatusOk: ( - self: Client.WithResponse -) => Client.WithResponse = internal.filterStatusOk +export const filterStatusOk: ( + self: Client.WithResponse +) => Client.WithResponse = internal.filterStatusOk /** * @since 1.0.0 * @category constructors */ -export const make: ( +export const make: ( execute: (request: Effect.Effect) => Effect.Effect, - preprocess: Client.Preprocess -) => Client = internal.make + preprocess: Client.Preprocess +) => Client = internal.make /** * @since 1.0.0 @@ -262,13 +262,13 @@ export const makeDefault: ( * @category mapping & sequencing */ export const transform: { - ( + ( f: (effect: Effect.Effect, request: ClientRequest.ClientRequest) => Effect.Effect - ): (self: Client) => Client - ( - self: Client, + ): (self: Client) => Client + ( + self: Client, f: (effect: Effect.Effect, request: ClientRequest.ClientRequest) => Effect.Effect - ): Client + ): Client } = internal.transform /** @@ -276,13 +276,13 @@ export const transform: { * @category mapping & sequencing */ export const transformResponse: { - ( + ( f: (effect: Effect.Effect) => Effect.Effect - ): (self: Client) => Client - ( - self: Client, + ): (self: Client) => Client + ( + self: Client, f: (effect: Effect.Effect) => Effect.Effect - ): Client + ): Client } = internal.transformResponse /** @@ -290,8 +290,8 @@ export const transformResponse: { * @category mapping & sequencing */ export const map: { - (f: (a: A) => B): (self: Client) => Client - (self: Client, f: (a: A) => B): Client + (f: (a: A) => B): (self: Client) => Client + (self: Client, f: (a: A) => B): Client } = internal.map /** @@ -299,8 +299,8 @@ export const map: { * @category mapping & sequencing */ export const mapEffect: { - (f: (a: A) => Effect.Effect): (self: Client) => Client - (self: Client, f: (a: A) => Effect.Effect): Client + (f: (a: A) => Effect.Effect): (self: Client) => Client + (self: Client, f: (a: A) => Effect.Effect): Client } = internal.mapEffect /** @@ -310,11 +310,11 @@ export const mapEffect: { export const mapEffectScoped: { ( f: (a: A) => Effect.Effect - ): (self: Client) => Client | Exclude, E2 | E, B> - ( - self: Client, + ): (self: Client) => Client | Exclude> + ( + self: Client, f: (a: A) => Effect.Effect - ): Client | Exclude, E | E2, B> + ): Client | Exclude> } = internal.mapEffectScoped /** @@ -324,8 +324,8 @@ export const mapEffectScoped: { export const mapRequest: { ( f: (a: ClientRequest.ClientRequest) => ClientRequest.ClientRequest - ): (self: Client) => Client - (self: Client, f: (a: ClientRequest.ClientRequest) => ClientRequest.ClientRequest): Client + ): (self: Client) => Client + (self: Client, f: (a: ClientRequest.ClientRequest) => ClientRequest.ClientRequest): Client } = internal.mapRequest /** @@ -335,11 +335,11 @@ export const mapRequest: { export const mapRequestEffect: { ( f: (a: ClientRequest.ClientRequest) => Effect.Effect - ): (self: Client) => Client - ( - self: Client, + ): (self: Client) => Client + ( + self: Client, f: (a: ClientRequest.ClientRequest) => Effect.Effect - ): Client + ): Client } = internal.mapRequestEffect /** @@ -349,8 +349,8 @@ export const mapRequestEffect: { export const mapInputRequest: { ( f: (a: ClientRequest.ClientRequest) => ClientRequest.ClientRequest - ): (self: Client) => Client - (self: Client, f: (a: ClientRequest.ClientRequest) => ClientRequest.ClientRequest): Client + ): (self: Client) => Client + (self: Client, f: (a: ClientRequest.ClientRequest) => ClientRequest.ClientRequest): Client } = internal.mapInputRequest /** @@ -360,11 +360,11 @@ export const mapInputRequest: { export const mapInputRequestEffect: { ( f: (a: ClientRequest.ClientRequest) => Effect.Effect - ): (self: Client) => Client - ( - self: Client, + ): (self: Client) => Client + ( + self: Client, f: (a: ClientRequest.ClientRequest) => Effect.Effect - ): Client + ): Client } = internal.mapInputRequestEffect /** @@ -372,15 +372,15 @@ export const mapInputRequestEffect: { * @category error handling */ export const retry: { - (policy: Schedule.Schedule): (self: Client) => Client - (self: Client, policy: Schedule.Schedule): Client + (policy: Schedule.Schedule): (self: Client) => Client + (self: Client, policy: Schedule.Schedule): Client } = internal.retry /** * @since 1.0.0 * @category resources & finalizers */ -export const scoped: (self: Client) => Client, E, A> = internal.scoped +export const scoped: (self: Client) => Client> = internal.scoped /** * @since 1.0.0 @@ -390,13 +390,13 @@ export const schemaFunction: { ( schema: Schema.Schema, options?: ParseOptions | undefined - ): ( - self: Client + ): ( + self: Client ) => ( request: ClientRequest.ClientRequest ) => (a: SA) => Effect.Effect - ( - self: Client, + ( + self: Client, schema: Schema.Schema, options?: ParseOptions | undefined ): ( @@ -409,8 +409,8 @@ export const schemaFunction: { * @category mapping & sequencing */ export const tap: { - (f: (a: A) => Effect.Effect<_, E2, R2>): (self: Client) => Client - (self: Client, f: (a: A) => Effect.Effect<_, E2, R2>): Client + (f: (a: A) => Effect.Effect<_, E2, R2>): (self: Client) => Client + (self: Client, f: (a: A) => Effect.Effect<_, E2, R2>): Client } = internal.tap /** @@ -420,11 +420,11 @@ export const tap: { export const tapRequest: { ( f: (a: ClientRequest.ClientRequest) => Effect.Effect<_, E2, R2> - ): (self: Client) => Client - ( - self: Client, + ): (self: Client) => Client + ( + self: Client, f: (a: ClientRequest.ClientRequest) => Effect.Effect<_, E2, R2> - ): Client + ): Client } = internal.tapRequest /** @@ -432,8 +432,8 @@ export const tapRequest: { * @category cookies */ export const withCookiesRef: { - (ref: Ref): (self: Client.WithResponse) => Client.WithResponse - (self: Client.WithResponse, ref: Ref): Client.WithResponse + (ref: Ref): (self: Client.WithResponse) => Client.WithResponse + (self: Client.WithResponse, ref: Ref): Client.WithResponse } = internal.withCookiesRef /** diff --git a/packages/platform/src/Http/Middleware.ts b/packages/platform/src/Http/Middleware.ts index 81623e1aa5..ed2c56d2e8 100644 --- a/packages/platform/src/Http/Middleware.ts +++ b/packages/platform/src/Http/Middleware.ts @@ -13,7 +13,7 @@ import type * as ServerRequest from "./ServerRequest.js" * @category models */ export interface Middleware { - (self: App.Default): App.Default + (self: App.Default): App.Default } /** @@ -23,8 +23,8 @@ export declare namespace Middleware { /** * @since 1.0.0 */ - export interface Applied> { - (self: App.Default): A + export interface Applied, E, R> { + (self: App.Default): A } } @@ -38,7 +38,7 @@ export const make: (middleware: M) => M = internal.make * @since 1.0.0 * @category constructors */ -export const logger: (httpApp: App.Default) => App.Default = internal.logger +export const logger: (httpApp: App.Default) => App.Default = internal.logger /** * @since 1.0.0 @@ -78,4 +78,4 @@ export const withTracerDisabledWhen: { * @since 1.0.0 * @category constructors */ -export const xForwardedHeaders: (httpApp: App.Default) => App.Default = internal.xForwardedHeaders +export const xForwardedHeaders: (httpApp: App.Default) => App.Default = internal.xForwardedHeaders diff --git a/packages/platform/src/Http/Multiplex.ts b/packages/platform/src/Http/Multiplex.ts index 4bcc8d10a7..8393ac2498 100644 --- a/packages/platform/src/Http/Multiplex.ts +++ b/packages/platform/src/Http/Multiplex.ts @@ -24,12 +24,12 @@ export type TypeId = typeof TypeId * @since 1.0.0 * @category models */ -export interface Multiplex extends App.Default, Inspectable { +export interface Multiplex extends App.Default, Inspectable { readonly [TypeId]: TypeId readonly apps: ReadonlyArray< readonly [ predicate: (request: ServerRequest.ServerRequest) => Effect.Effect, - app: App.Default + app: App.Default ] > } @@ -38,7 +38,7 @@ export interface Multiplex extends App.Default * @since 1.0.0 * @category constructors */ -export const empty: Multiplex = internal.empty +export const empty: Multiplex = internal.empty /** * @since 1.0.0 @@ -46,9 +46,9 @@ export const empty: Multiplex = internal.empty */ export const make: ( apps: Iterable< - readonly [predicate: (request: ServerRequest.ServerRequest) => Effect.Effect, app: App.Default] + readonly [predicate: (request: ServerRequest.ServerRequest) => Effect.Effect, app: App.Default] > -) => Multiplex = internal.make +) => Multiplex = internal.make /** * @since 1.0.0 @@ -57,13 +57,13 @@ export const make: ( export const add: { ( predicate: (request: ServerRequest.ServerRequest) => Effect.Effect, - app: App.Default - ): (self: Multiplex) => Multiplex + app: App.Default + ): (self: Multiplex) => Multiplex ( - self: Multiplex, + self: Multiplex, predicate: (request: ServerRequest.ServerRequest) => Effect.Effect, - app: App.Default - ): Multiplex + app: App.Default + ): Multiplex } = internal.add /** @@ -74,14 +74,14 @@ export const headerExact: { ( header: string, value: string, - app: App.Default - ): (self: Multiplex) => Multiplex + app: App.Default + ): (self: Multiplex) => Multiplex ( - self: Multiplex, + self: Multiplex, header: string, value: string, - app: App.Default - ): Multiplex + app: App.Default + ): Multiplex } = internal.headerExact /** @@ -92,14 +92,14 @@ export const headerRegex: { ( header: string, regex: RegExp, - app: App.Default - ): (self: Multiplex) => Multiplex + app: App.Default + ): (self: Multiplex) => Multiplex ( - self: Multiplex, + self: Multiplex, header: string, regex: RegExp, - app: App.Default - ): Multiplex + app: App.Default + ): Multiplex } = internal.headerRegex /** @@ -110,14 +110,14 @@ export const headerStartsWith: { ( header: string, prefix: string, - app: App.Default - ): (self: Multiplex) => Multiplex + app: App.Default + ): (self: Multiplex) => Multiplex ( - self: Multiplex, + self: Multiplex, header: string, prefix: string, - app: App.Default - ): Multiplex + app: App.Default + ): Multiplex } = internal.headerStartsWith /** @@ -128,14 +128,14 @@ export const headerEndsWith: { ( header: string, suffix: string, - app: App.Default - ): (self: Multiplex) => Multiplex + app: App.Default + ): (self: Multiplex) => Multiplex ( - self: Multiplex, + self: Multiplex, header: string, suffix: string, - app: App.Default - ): Multiplex + app: App.Default + ): Multiplex } = internal.headerEndsWith /** @@ -143,8 +143,8 @@ export const headerEndsWith: { * @category combinators */ export const hostExact: { - (host: string, app: App.Default): (self: Multiplex) => Multiplex - (self: Multiplex, host: string, app: App.Default): Multiplex + (host: string, app: App.Default): (self: Multiplex) => Multiplex + (self: Multiplex, host: string, app: App.Default): Multiplex } = internal.hostExact /** @@ -152,8 +152,8 @@ export const hostExact: { * @category combinators */ export const hostRegex: { - (regex: RegExp, app: App.Default): (self: Multiplex) => Multiplex - (self: Multiplex, regex: RegExp, app: App.Default): Multiplex + (regex: RegExp, app: App.Default): (self: Multiplex) => Multiplex + (self: Multiplex, regex: RegExp, app: App.Default): Multiplex } = internal.hostRegex /** @@ -161,8 +161,8 @@ export const hostRegex: { * @category combinators */ export const hostStartsWith: { - (prefix: string, app: App.Default): (self: Multiplex) => Multiplex - (self: Multiplex, prefix: string, app: App.Default): Multiplex + (prefix: string, app: App.Default): (self: Multiplex) => Multiplex + (self: Multiplex, prefix: string, app: App.Default): Multiplex } = internal.hostStartsWith /** @@ -170,6 +170,6 @@ export const hostStartsWith: { * @category combinators */ export const hostEndsWith: { - (suffix: string, app: App.Default): (self: Multiplex) => Multiplex - (self: Multiplex, suffix: string, app: App.Default): Multiplex + (suffix: string, app: App.Default): (self: Multiplex) => Multiplex + (self: Multiplex, suffix: string, app: App.Default): Multiplex } = internal.hostEndsWith diff --git a/packages/platform/src/Http/Router.ts b/packages/platform/src/Http/Router.ts index 7613996a54..01728dce05 100644 --- a/packages/platform/src/Http/Router.ts +++ b/packages/platform/src/Http/Router.ts @@ -34,13 +34,15 @@ export type TypeId = typeof TypeId * @since 1.0.0 * @category models */ -export interface Router extends App.Default, E | Error.RouteNotFound>, Inspectable { +export interface Router + extends App.Default>, Inspectable +{ readonly [TypeId]: TypeId - readonly routes: Chunk.Chunk> + readonly routes: Chunk.Chunk> readonly mounts: Chunk.Chunk< readonly [ prefix: string, - httpApp: App.Default, + httpApp: App.Default, options?: { readonly includePrefix?: boolean | undefined } | undefined ] > @@ -78,7 +80,7 @@ export type PathInput = `/${string}` | "*" * @since 1.0.0 * @category models */ -export interface Route extends Inspectable { +export interface Route extends Inspectable { readonly [RouteTypeId]: RouteTypeId readonly method: Method.Method | "*" readonly path: PathInput @@ -225,7 +227,7 @@ export const schemaSearchParams: >, * @since 1.0.0 * @category constructors */ -export const empty: Router = internal.empty +export const empty: Router = internal.empty /** * @since 1.0.0 @@ -233,7 +235,7 @@ export const empty: Router = internal.empty */ export const fromIterable: >( routes: Iterable -) => Router ? Env : never, R extends Route ? E : never> = +) => Router ? E : never, R extends Route ? Env : never> = internal.fromIterable /** @@ -246,15 +248,15 @@ export const makeRoute: ( handler: Route.Handler, prefix?: Option.Option, uninterruptible?: boolean -) => Route, E> = internal.makeRoute +) => Route> = internal.makeRoute /** * @since 1.0.0 * @category combinators */ export const prefixAll: { - (prefix: PathInput): (self: Router) => Router - (self: Router, prefix: PathInput): Router + (prefix: PathInput): (self: Router) => Router + (self: Router, prefix: PathInput): Router } = internal.prefixAll /** @@ -262,12 +264,12 @@ export const prefixAll: { * @category combinators */ export const concat: { - (that: Router): ( - self: Router - ) => Router - (self: Router, that: Router): Router< - R | R1, - E | E1 + (that: Router): ( + self: Router + ) => Router + (self: Router, that: Router): Router< + E | E1, + R | R1 > } = internal.concat @@ -276,8 +278,8 @@ export const concat: { * @category routing */ export const mount: { - (path: `/${string}`, that: Router): (self: Router) => Router - (self: Router, path: `/${string}`, that: Router): Router + (path: `/${string}`, that: Router): (self: Router) => Router + (self: Router, path: `/${string}`, that: Router): Router } = internal.mount /** @@ -287,24 +289,24 @@ export const mount: { export const mountApp: { ( path: `/${string}`, - that: App.Default, + that: App.Default, options?: { readonly includePrefix?: boolean | undefined } | undefined ): ( - self: Router + self: Router ) => Router< + E1 | E, | Exclude - | Exclude, - E1 | E + | Exclude > ( - self: Router, + self: Router, path: `/${string}`, - that: App.Default, + that: App.Default, options?: { readonly includePrefix?: boolean | undefined } | undefined ): Router< + E | E1, | Exclude - | Exclude, - E | E1 + | Exclude > } = internal.mountApp @@ -313,21 +315,21 @@ export const mountApp: { * @category routing */ export const route: ( - method: "*" | Method.Method + method: Method.Method | "*" ) => { ( path: PathInput, - handler: Route.Handler, + handler: Route.Handler, options?: { readonly uninterruptible?: boolean | undefined } | undefined ): ( - self: Router - ) => Router, E1 | E> + self: Router + ) => Router> ( - self: Router, + self: Router, path: PathInput, - handler: Route.Handler, + handler: Route.Handler, options?: { readonly uninterruptible?: boolean | undefined } | undefined - ): Router, E | E1> + ): Router> } = internal.route /** @@ -337,17 +339,17 @@ export const route: ( export const all: { ( path: PathInput, - handler: Route.Handler, + handler: Route.Handler, options?: { readonly uninterruptible?: boolean | undefined } | undefined ): ( - self: Router - ) => Router, E1 | E> + self: Router + ) => Router> ( - self: Router, + self: Router, path: PathInput, - handler: Route.Handler, + handler: Route.Handler, options?: { readonly uninterruptible?: boolean | undefined } | undefined - ): Router, E | E1> + ): Router> } = internal.all /** @@ -357,17 +359,17 @@ export const all: { export const get: { ( path: PathInput, - handler: Route.Handler, + handler: Route.Handler, options?: { readonly uninterruptible?: boolean | undefined } | undefined ): ( - self: Router - ) => Router, E1 | E> + self: Router + ) => Router> ( - self: Router, + self: Router, path: PathInput, - handler: Route.Handler, + handler: Route.Handler, options?: { readonly uninterruptible?: boolean | undefined } | undefined - ): Router, E | E1> + ): Router> } = internal.get /** @@ -377,17 +379,17 @@ export const get: { export const post: { ( path: PathInput, - handler: Route.Handler, + handler: Route.Handler, options?: { readonly uninterruptible?: boolean | undefined } | undefined ): ( - self: Router - ) => Router, E1 | E> + self: Router + ) => Router> ( - self: Router, + self: Router, path: PathInput, - handler: Route.Handler, + handler: Route.Handler, options?: { readonly uninterruptible?: boolean | undefined } | undefined - ): Router, E | E1> + ): Router> } = internal.post /** @@ -397,17 +399,17 @@ export const post: { export const patch: { ( path: PathInput, - handler: Route.Handler, + handler: Route.Handler, options?: { readonly uninterruptible?: boolean | undefined } | undefined ): ( - self: Router - ) => Router, E1 | E> + self: Router + ) => Router> ( - self: Router, + self: Router, path: PathInput, - handler: Route.Handler, + handler: Route.Handler, options?: { readonly uninterruptible?: boolean | undefined } | undefined - ): Router, E | E1> + ): Router> } = internal.patch /** @@ -417,17 +419,17 @@ export const patch: { export const put: { ( path: PathInput, - handler: Route.Handler, + handler: Route.Handler, options?: { readonly uninterruptible?: boolean | undefined } | undefined ): ( - self: Router - ) => Router, E1 | E> + self: Router + ) => Router> ( - self: Router, + self: Router, path: PathInput, - handler: Route.Handler, + handler: Route.Handler, options?: { readonly uninterruptible?: boolean | undefined } | undefined - ): Router, E | E1> + ): Router> } = internal.put /** @@ -437,17 +439,17 @@ export const put: { export const del: { ( path: PathInput, - handler: Route.Handler, + handler: Route.Handler, options?: { readonly uninterruptible?: boolean | undefined } | undefined ): ( - self: Router - ) => Router, E1 | E> + self: Router + ) => Router> ( - self: Router, + self: Router, path: PathInput, - handler: Route.Handler, + handler: Route.Handler, options?: { readonly uninterruptible?: boolean | undefined } | undefined - ): Router, E | E1> + ): Router> } = internal.del /** @@ -457,17 +459,17 @@ export const del: { export const head: { ( path: PathInput, - handler: Route.Handler, + handler: Route.Handler, options?: { readonly uninterruptible?: boolean | undefined } | undefined ): ( - self: Router - ) => Router, E1 | E> + self: Router + ) => Router> ( - self: Router, + self: Router, path: PathInput, - handler: Route.Handler, + handler: Route.Handler, options?: { readonly uninterruptible?: boolean | undefined } | undefined - ): Router, E | E1> + ): Router> } = internal.head /** @@ -477,17 +479,17 @@ export const head: { export const options: { ( path: PathInput, - handler: Route.Handler, + handler: Route.Handler, options?: { readonly uninterruptible?: boolean | undefined } | undefined ): ( - self: Router - ) => Router, E1 | E> + self: Router + ) => Router> ( - self: Router, + self: Router, path: PathInput, - handler: Route.Handler, + handler: Route.Handler, options?: { readonly uninterruptible?: boolean | undefined } | undefined - ): Router, E | E1> + ): Router> } = internal.options /** @@ -496,12 +498,12 @@ export const options: { */ export const use: { ( - f: (self: Route.Handler) => App.Default - ): (self: Router) => Router, E1> + f: (self: Route.Handler) => App.Default + ): (self: Router) => Router> ( - self: Router, - f: (self: Route.Handler) => App.Default - ): Router, E1> + self: Router, + f: (self: Route.Handler) => App.Default + ): Router> } = internal.use /** @@ -511,11 +513,11 @@ export const use: { export const catchAll: { ( f: (e: E) => Route.Handler - ): (self: Router) => Router, E2> + ): (self: Router) => Router> ( - self: Router, + self: Router, f: (e: E) => Route.Handler - ): Router, E2> + ): Router> } = internal.catchAll /** @@ -525,11 +527,11 @@ export const catchAll: { export const catchAllCause: { ( f: (e: Cause.Cause) => Route.Handler - ): (self: Router) => Router, E2> + ): (self: Router) => Router> ( - self: Router, + self: Router, f: (e: Cause.Cause) => Route.Handler - ): Router, E2> + ): Router> } = internal.catchAllCause /** @@ -541,13 +543,13 @@ export const catchTag: { k: K, f: (e: Extract) => Route.Handler ): ( - self: Router - ) => Router, E1 | Exclude> + self: Router + ) => Router, R | Exclude> ( - self: Router, + self: Router, k: K, f: (e: Extract) => Route.Handler - ): Router, E1 | Exclude> + ): Router, R | Exclude> } = internal.catchTag /** @@ -563,19 +565,19 @@ export const catchTags: { >( cases: Cases ): ( - self: Router + self: Router ) => Router< + | Exclude + | { + [K in keyof Cases]: Cases[K] extends (...args: Array) => Effect.Effect ? E : never + }[keyof Cases], | R | Exclude< { [K in keyof Cases]: Cases[K] extends (...args: Array) => Effect.Effect ? R : never }[keyof Cases], RouteContext | ServerRequest.ServerRequest | Scope.Scope - >, - | Exclude - | { - [K in keyof Cases]: Cases[K] extends (...args: Array) => Effect.Effect ? E : never - }[keyof Cases] + > > < R, @@ -584,20 +586,20 @@ export const catchTags: { ? { [K in E["_tag"]]+?: ((error: Extract) => Route.Handler) | undefined } : {} >( - self: Router, + self: Router, cases: Cases ): Router< + | Exclude + | { + [K in keyof Cases]: Cases[K] extends (...args: Array) => Effect.Effect ? E : never + }[keyof Cases], | R | Exclude< { [K in keyof Cases]: Cases[K] extends (...args: Array) => Effect.Effect ? R : never }[keyof Cases], RouteContext | ServerRequest.ServerRequest | Scope.Scope - >, - | Exclude - | { - [K in keyof Cases]: Cases[K] extends (...args: Array) => Effect.Effect ? E : never - }[keyof Cases] + > > } = internal.catchTags @@ -609,12 +611,12 @@ export const provideService: { >( tag: T, service: Context.Tag.Service - ): (self: Router) => Router>, E> + ): (self: Router) => Router>> >( - self: Router, + self: Router, tag: T, service: Context.Tag.Service - ): Router>, E> + ): Router>> } = internal.provideService /** @@ -626,19 +628,19 @@ export const provideServiceEffect: { tag: T, effect: Effect.Effect, E1, R1> ): ( - self: Router + self: Router ) => Router< + E1 | E, | Exclude> - | Exclude, Context.Tag.Identifier>, - E1 | E + | Exclude, Context.Tag.Identifier> > , R1, E1>( - self: Router, + self: Router, tag: T, effect: Effect.Effect, E1, R1> ): Router< + E | E1, | Exclude> - | Exclude, Context.Tag.Identifier>, - E | E1 + | Exclude, Context.Tag.Identifier> > } = internal.provideServiceEffect diff --git a/packages/platform/src/Http/Server.ts b/packages/platform/src/Http/Server.ts index c2995c053b..53fc0dcbe5 100644 --- a/packages/platform/src/Http/Server.ts +++ b/packages/platform/src/Http/Server.ts @@ -29,14 +29,14 @@ export type TypeId = typeof TypeId export interface Server { readonly [TypeId]: TypeId readonly serve: { - (httpApp: App.Default): Effect.Effect< + (httpApp: App.Default): Effect.Effect< void, never, Exclude | Scope.Scope > >( - httpApp: App.Default, - middleware: Middleware.Middleware.Applied + httpApp: App.Default, + middleware: Middleware.Middleware.Applied ): Effect.Effect< void, never, @@ -92,7 +92,7 @@ export const Server: Context.Tag = internal.serverTag export const make: ( options: { readonly serve: ( - httpApp: App.Default, + httpApp: App.Default, middleware?: Middleware.Middleware ) => Effect.Effect readonly address: Address @@ -105,23 +105,23 @@ export const make: ( */ export const serve: { (): ( - httpApp: App.Default + httpApp: App.Default ) => Layer.Layer> >( - middleware: Middleware.Middleware.Applied + middleware: Middleware.Middleware.Applied ): ( - httpApp: App.Default + httpApp: App.Default ) => Layer.Layer< never, never, Server | Exclude, ServerRequest.ServerRequest | Scope.Scope> > ( - httpApp: App.Default + httpApp: App.Default ): Layer.Layer> >( - httpApp: App.Default, - middleware: Middleware.Middleware.Applied + httpApp: App.Default, + middleware: Middleware.Middleware.Applied ): Layer.Layer, ServerRequest.ServerRequest | Scope.Scope>> } = internal.serve @@ -131,23 +131,23 @@ export const serve: { */ export const serveEffect: { (): ( - httpApp: App.Default + httpApp: App.Default ) => Effect.Effect> >( - middleware: Middleware.Middleware.Applied + middleware: Middleware.Middleware.Applied ): ( - httpApp: App.Default + httpApp: App.Default ) => Effect.Effect< void, never, Scope.Scope | Server | Exclude, ServerRequest.ServerRequest> > ( - httpApp: App.Default + httpApp: App.Default ): Effect.Effect> >( - httpApp: App.Default, - middleware: Middleware.Middleware.Applied + httpApp: App.Default, + middleware: Middleware.Middleware.Applied ): Effect.Effect, ServerRequest.ServerRequest>> } = internal.serveEffect diff --git a/packages/platform/src/Worker.ts b/packages/platform/src/Worker.ts index fdadcf0630..4e0ff5d44c 100644 --- a/packages/platform/src/Worker.ts +++ b/packages/platform/src/Worker.ts @@ -72,7 +72,7 @@ export const PlatformWorker: Context.Tag = inter * @since 1.0.0 * @category models */ -export interface Worker { +export interface Worker { readonly id: number readonly execute: (message: I) => Stream.Stream readonly executeEffect: (message: I) => Effect.Effect @@ -141,8 +141,8 @@ export declare namespace Worker { * @since 1.0.0 * @category models */ -export interface WorkerPool { - readonly backing: Pool.Pool, WorkerError> +export interface WorkerPool { + readonly backing: Pool.Pool, WorkerError> readonly broadcast: (message: I) => Effect.Effect readonly execute: (message: I) => Stream.Stream readonly executeEffect: (message: I) => Effect.Effect @@ -198,9 +198,9 @@ export type WorkerManagerTypeId = typeof WorkerManagerTypeId */ export interface WorkerManager { readonly [WorkerManagerTypeId]: WorkerManagerTypeId - readonly spawn: ( + readonly spawn: ( options: Worker.Options - ) => Effect.Effect, WorkerError, Scope.Scope | Spawner> + ) => Effect.Effect, WorkerError, Scope.Scope | Spawner> } /** @@ -225,16 +225,16 @@ export const layerManager: Layer.Layer = i * @since 1.0.0 * @category constructors */ -export const makePool: ( +export const makePool: ( options: WorkerPool.Options -) => Effect.Effect, never, WorkerManager | Spawner | Scope.Scope> = internal.makePool +) => Effect.Effect, never, WorkerManager | Spawner | Scope.Scope> = internal.makePool /** * @since 1.0.0 * @category constructors */ -export const makePoolLayer: ( - tag: Context.Tag>, +export const makePoolLayer: ( + tag: Context.Tag>, options: WorkerPool.Options ) => Layer.Layer = internal.makePoolLayer diff --git a/packages/platform/src/WorkerRunner.ts b/packages/platform/src/WorkerRunner.ts index abc17d3b1f..d8d7e559f1 100644 --- a/packages/platform/src/WorkerRunner.ts +++ b/packages/platform/src/WorkerRunner.ts @@ -74,7 +74,7 @@ export declare namespace Runner { * @since 1.0.0 * @category models */ - export interface Options { + export interface Options { readonly decode?: ( message: unknown ) => Effect.Effect @@ -96,7 +96,7 @@ export declare namespace Runner { */ export const make: ( process: (request: I) => Stream.Stream | Effect.Effect, - options?: Runner.Options | undefined + options?: Runner.Options | undefined ) => Effect.Effect = internal.make /** @@ -105,7 +105,7 @@ export const make: ( */ export const layer: ( process: (request: I) => Stream.Stream | Effect.Effect, - options?: Runner.Options | undefined + options?: Runner.Options | undefined ) => Layer.Layer = internal.layer /** diff --git a/packages/platform/src/internal/http/client.ts b/packages/platform/src/internal/http/client.ts index f06fd5ac6f..4b605422bd 100644 --- a/packages/platform/src/internal/http/client.ts +++ b/packages/platform/src/internal/http/client.ts @@ -62,12 +62,12 @@ const clientProto = { const isClient = (u: unknown): u is Client.Client => Predicate.hasProperty(u, TypeId) /** @internal */ -export const make = ( +export const make = ( execute: ( request: Effect.Effect ) => Effect.Effect, - preprocess: Client.Client.Preprocess -): Client.Client => { + preprocess: Client.Client.Preprocess +): Client.Client => { function client(request: ClientRequest.ClientRequest) { return execute(preprocess(request)) } @@ -187,19 +187,19 @@ export const layer = Layer.succeed(tag, fetch()) /** @internal */ export const transform = dual< - ( + ( f: ( effect: Effect.Effect, request: ClientRequest.ClientRequest ) => Effect.Effect - ) => (self: Client.Client) => Client.Client, - ( - self: Client.Client, + ) => (self: Client.Client) => Client.Client, + ( + self: Client.Client, f: ( effect: Effect.Effect, request: ClientRequest.ClientRequest ) => Effect.Effect - ) => Client.Client + ) => Client.Client >(2, (self, f) => make( Effect.flatMap((request) => f(self.execute(Effect.succeed(request)), request)), @@ -208,13 +208,13 @@ export const transform = dual< /** @internal */ export const transformResponse = dual< - ( + ( f: (effect: Effect.Effect) => Effect.Effect - ) => (self: Client.Client) => Client.Client, - ( - self: Client.Client, + ) => (self: Client.Client) => Client.Client, + ( + self: Client.Client, f: (effect: Effect.Effect) => Effect.Effect - ) => Client.Client + ) => Client.Client >(2, (self, f) => make((request) => f(self.execute(request)), self.preprocess)) /** @internal */ @@ -222,9 +222,9 @@ export const catchTag: { ( tag: K, f: (e: Extract) => Effect.Effect - ): ( - self: Client.Client - ) => Client.Client, A1 | A> + ): ( + self: Client.Client + ) => Client.Client, R1 | R> < R, E, @@ -234,10 +234,10 @@ export const catchTag: { E1, A1 >( - self: Client.Client, + self: Client.Client, tag: K, f: (e: Extract) => Effect.Effect - ): Client.Client, A1 | A> + ): Client.Client, R1 | R> } = dual( 3, < @@ -249,10 +249,10 @@ export const catchTag: { E1, A1 >( - self: Client.Client, + self: Client.Client, tag: K, f: (e: Extract) => Effect.Effect - ): Client.Client, A1 | A> => transformResponse(self, Effect.catchTag(tag, f)) + ): Client.Client, R1 | R> => transformResponse(self, Effect.catchTag(tag, f)) ) /** @internal */ @@ -276,14 +276,14 @@ export const catchTags: { }) >( cases: Cases - ): ( - self: Client.Client + ): ( + self: Client.Client ) => Client.Client< - | R + | A | { [K in keyof Cases]: Cases[K] extends ( ...args: Array - ) => Effect.Effect ? R + ) => Effect.Effect ? A : never }[keyof Cases], | Exclude @@ -293,18 +293,18 @@ export const catchTags: { ) => Effect.Effect ? E : never }[keyof Cases], - | A + | R | { [K in keyof Cases]: Cases[K] extends ( ...args: Array - ) => Effect.Effect ? A + ) => Effect.Effect ? R : never }[keyof Cases] > < - R, - E extends { _tag: string }, A, + E extends { _tag: string }, + R, Cases extends & { [K in Extract["_tag"]]+?: ( @@ -321,14 +321,14 @@ export const catchTags: { ]: never }) >( - self: Client.Client, + self: Client.Client, cases: Cases ): Client.Client< - | R + | A | { [K in keyof Cases]: Cases[K] extends ( ...args: Array - ) => Effect.Effect ? R + ) => Effect.Effect ? A : never }[keyof Cases], | Exclude @@ -338,20 +338,20 @@ export const catchTags: { ) => Effect.Effect ? E : never }[keyof Cases], - | A + | R | { [K in keyof Cases]: Cases[K] extends ( ...args: Array - ) => Effect.Effect ? A + ) => Effect.Effect ? R : never }[keyof Cases] > } = dual( 2, < - R, - E extends { _tag: string }, A, + E extends { _tag: string }, + R, Cases extends & { [K in Extract["_tag"]]+?: ( @@ -368,14 +368,14 @@ export const catchTags: { ]: never }) >( - self: Client.Client, + self: Client.Client, cases: Cases ): Client.Client< - | R + | A | { [K in keyof Cases]: Cases[K] extends ( ...args: Array - ) => Effect.Effect ? R + ) => Effect.Effect ? A : never }[keyof Cases], | Exclude @@ -385,11 +385,11 @@ export const catchTags: { ) => Effect.Effect ? E : never }[keyof Cases], - | A + | R | { [K in keyof Cases]: Cases[K] extends ( ...args: Array - ) => Effect.Effect ? A + ) => Effect.Effect ? R : never }[keyof Cases] > => transformResponse(self, Effect.catchTags(cases)) @@ -399,17 +399,17 @@ export const catchTags: { export const catchAll: { ( f: (e: E) => Effect.Effect - ): (self: Client.Client) => Client.Client - ( - self: Client.Client, + ): (self: Client.Client) => Client.Client + ( + self: Client.Client, f: (e: E) => Effect.Effect - ): Client.Client + ): Client.Client } = dual( 2, - ( - self: Client.Client, + ( + self: Client.Client, f: (e: E) => Effect.Effect - ): Client.Client => transformResponse(self, Effect.catchAll(f)) + ): Client.Client => transformResponse(self, Effect.catchAll(f)) ) /** @internal */ @@ -417,14 +417,14 @@ export const filterOrElse = dual< ( f: Predicate.Predicate, orElse: (a: A) => Effect.Effect - ) => ( - self: Client.Client - ) => Client.Client, - ( - self: Client.Client, + ) => ( + self: Client.Client + ) => Client.Client, + ( + self: Client.Client, f: Predicate.Predicate, orElse: (a: A) => Effect.Effect - ) => Client.Client + ) => Client.Client >(3, (self, f, orElse) => transformResponse(self, Effect.filterOrElse(f, orElse))) /** @internal */ @@ -432,25 +432,25 @@ export const filterOrFail = dual< ( f: Predicate.Predicate, orFailWith: (a: A) => E2 - ) => (self: Client.Client) => Client.Client, - ( - self: Client.Client, + ) => (self: Client.Client) => Client.Client, + ( + self: Client.Client, f: Predicate.Predicate, orFailWith: (a: A) => E2 - ) => Client.Client + ) => Client.Client >(3, (self, f, orFailWith) => transformResponse(self, Effect.filterOrFail(f, orFailWith))) /** @internal */ export const filterStatus = dual< ( f: (status: number) => boolean - ) => ( - self: Client.Client.WithResponse - ) => Client.Client.WithResponse, - ( - self: Client.Client.WithResponse, + ) => ( + self: Client.Client.WithResponse + ) => Client.Client.WithResponse, + ( + self: Client.Client.WithResponse, f: (status: number) => boolean - ) => Client.Client.WithResponse + ) => Client.Client.WithResponse >(2, (self, f) => transform(self, (effect, request) => Effect.filterOrFail( @@ -466,9 +466,9 @@ export const filterStatus = dual< ))) /** @internal */ -export const filterStatusOk: ( - self: Client.Client.WithResponse -) => Client.Client.WithResponse = filterStatus( +export const filterStatusOk: ( + self: Client.Client.WithResponse +) => Client.Client.WithResponse = filterStatus( (status) => status >= 200 && status < 300 ) @@ -476,49 +476,49 @@ export const filterStatusOk: ( export const map = dual< ( f: (a: A) => B - ) => (self: Client.Client) => Client.Client, - ( - self: Client.Client, + ) => (self: Client.Client) => Client.Client, + ( + self: Client.Client, f: (a: A) => B - ) => Client.Client + ) => Client.Client >(2, (self, f) => transformResponse(self, Effect.map(f))) /** @internal */ export const mapEffect = dual< ( f: (a: A) => Effect.Effect - ) => (self: Client.Client) => Client.Client, - ( - self: Client.Client, + ) => (self: Client.Client) => Client.Client, + ( + self: Client.Client, f: (a: A) => Effect.Effect - ) => Client.Client + ) => Client.Client >(2, (self, f) => transformResponse(self, Effect.flatMap(f))) /** @internal */ -export const scoped = ( - self: Client.Client -): Client.Client, E, A> => transformResponse(self, Effect.scoped) +export const scoped = ( + self: Client.Client +): Client.Client> => transformResponse(self, Effect.scoped) /** @internal */ export const mapEffectScoped = dual< ( f: (a: A) => Effect.Effect - ) => (self: Client.Client) => Client.Client, E | E2, B>, - ( - self: Client.Client, + ) => (self: Client.Client) => Client.Client>, + ( + self: Client.Client, f: (a: A) => Effect.Effect - ) => Client.Client, E | E2, B> + ) => Client.Client> >(2, (self, f) => scoped(mapEffect(self, f))) /** @internal */ export const mapRequest = dual< ( f: (a: ClientRequest.ClientRequest) => ClientRequest.ClientRequest - ) => (self: Client.Client) => Client.Client, - ( - self: Client.Client, + ) => (self: Client.Client) => Client.Client, + ( + self: Client.Client, f: (a: ClientRequest.ClientRequest) => ClientRequest.ClientRequest - ) => Client.Client + ) => Client.Client >(2, (self, f) => make(self.execute, (request) => Effect.map(self.preprocess(request), f))) /** @internal */ @@ -527,26 +527,26 @@ export const mapRequestEffect = dual< f: ( a: ClientRequest.ClientRequest ) => Effect.Effect - ) => ( - self: Client.Client - ) => Client.Client, - ( - self: Client.Client, + ) => ( + self: Client.Client + ) => Client.Client, + ( + self: Client.Client, f: ( a: ClientRequest.ClientRequest ) => Effect.Effect - ) => Client.Client + ) => Client.Client >(2, (self, f) => make(self.execute as any, (request) => Effect.flatMap(self.preprocess(request), f))) /** @internal */ export const mapInputRequest = dual< ( f: (a: ClientRequest.ClientRequest) => ClientRequest.ClientRequest - ) => (self: Client.Client) => Client.Client, - ( - self: Client.Client, + ) => (self: Client.Client) => Client.Client, + ( + self: Client.Client, f: (a: ClientRequest.ClientRequest) => ClientRequest.ClientRequest - ) => Client.Client + ) => Client.Client >(2, (self, f) => make(self.execute, (request) => self.preprocess(f(request)))) /** @internal */ @@ -555,32 +555,32 @@ export const mapInputRequestEffect = dual< f: ( a: ClientRequest.ClientRequest ) => Effect.Effect - ) => ( - self: Client.Client - ) => Client.Client, - ( - self: Client.Client, + ) => ( + self: Client.Client + ) => Client.Client, + ( + self: Client.Client, f: ( a: ClientRequest.ClientRequest ) => Effect.Effect - ) => Client.Client + ) => Client.Client >(2, (self, f) => make(self.execute as any, (request) => Effect.flatMap(f(request), self.preprocess))) /** @internal */ export const retry: { ( policy: Schedule.Schedule - ): (self: Client.Client) => Client.Client - ( - self: Client.Client, + ): (self: Client.Client) => Client.Client + ( + self: Client.Client, policy: Schedule.Schedule - ): Client.Client + ): Client.Client } = dual( 2, - ( - self: Client.Client, + ( + self: Client.Client, policy: Schedule.Schedule - ): Client.Client => transformResponse(self, Effect.retry(policy)) + ): Client.Client => transformResponse(self, Effect.retry(policy)) ) /** @internal */ @@ -588,15 +588,15 @@ export const schemaFunction = dual< ( schema: Schema.Schema, options?: ParseOptions | undefined - ) => ( - self: Client.Client + ) => ( + self: Client.Client ) => ( request: ClientRequest.ClientRequest ) => ( a: SA ) => Effect.Effect, - ( - self: Client.Client, + ( + self: Client.Client, schema: Schema.Schema, options?: ParseOptions | undefined ) => ( @@ -631,41 +631,41 @@ export const schemaFunction = dual< export const tap = dual< ( f: (a: A) => Effect.Effect<_, E2, R2> - ) => (self: Client.Client) => Client.Client, - ( - self: Client.Client, + ) => (self: Client.Client) => Client.Client, + ( + self: Client.Client, f: (a: A) => Effect.Effect<_, E2, R2> - ) => Client.Client + ) => Client.Client >(2, (self, f) => transformResponse(self, Effect.tap(f))) /** @internal */ export const tapRequest = dual< ( f: (a: ClientRequest.ClientRequest) => Effect.Effect<_, E2, R2> - ) => ( - self: Client.Client - ) => Client.Client, - ( - self: Client.Client, + ) => ( + self: Client.Client + ) => Client.Client, + ( + self: Client.Client, f: (a: ClientRequest.ClientRequest) => Effect.Effect<_, E2, R2> - ) => Client.Client + ) => Client.Client >(2, (self, f) => make(self.execute as any, (request) => Effect.tap(self.preprocess(request), f))) /** @internal */ export const withCookiesRef = dual< ( ref: Ref.Ref - ) => (self: Client.Client.WithResponse) => Client.Client.WithResponse, - ( - self: Client.Client.WithResponse, + ) => (self: Client.Client.WithResponse) => Client.Client.WithResponse, + ( + self: Client.Client.WithResponse, ref: Ref.Ref - ) => Client.Client.WithResponse + ) => Client.Client.WithResponse >( 2, - ( - self: Client.Client.WithResponse, + ( + self: Client.Client.WithResponse, ref: Ref.Ref - ): Client.Client.WithResponse => + ): Client.Client.WithResponse => make( (request: Effect.Effect) => Effect.tap( diff --git a/packages/platform/src/internal/http/multiplex.ts b/packages/platform/src/internal/http/multiplex.ts index 24853759b1..b318870efd 100644 --- a/packages/platform/src/internal/http/multiplex.ts +++ b/packages/platform/src/internal/http/multiplex.ts @@ -12,9 +12,9 @@ import type * as ServerResponse from "../../Http/ServerResponse.js" /** @internal */ export const TypeId: Multiplex.TypeId = Symbol.for("@effect/platform/Http/Multiplex") as Multiplex.TypeId -class MultiplexImpl +class MultiplexImpl extends Effectable.Class - implements Multiplex.Multiplex + implements Multiplex.Multiplex { readonly [TypeId]: Multiplex.TypeId @@ -22,14 +22,14 @@ class MultiplexImpl readonly apps: ReadonlyArray< readonly [ predicate: (request: ServerRequest.ServerRequest) => Effect.Effect, - app: App.Default + app: App.Default ] > ) { super() this[TypeId] = TypeId - let execute: (request: ServerRequest.ServerRequest) => App.Default = (request) => + let execute: (request: ServerRequest.ServerRequest) => App.Default = (request) => Effect.fail(new Error.RouteNotFound({ request })) for (let i = apps.length - 1; i >= 0; i--) { @@ -45,7 +45,7 @@ class MultiplexImpl this.execute = Effect.flatMap(ServerRequest.ServerRequest, execute) } - execute: App.Default + execute: App.Default commit() { return this.execute @@ -65,26 +65,26 @@ class MultiplexImpl } /** @internal */ -export const empty: Multiplex.Multiplex = new MultiplexImpl([]) +export const empty: Multiplex.Multiplex = new MultiplexImpl([]) /** @internal */ export const make = ( apps: Iterable< - readonly [predicate: (request: ServerRequest.ServerRequest) => Effect.Effect, app: App.Default] + readonly [predicate: (request: ServerRequest.ServerRequest) => Effect.Effect, app: App.Default] > -): Multiplex.Multiplex => new MultiplexImpl(ReadonlyArray.fromIterable(apps)) +): Multiplex.Multiplex => new MultiplexImpl(ReadonlyArray.fromIterable(apps)) /** @internal */ export const add = dual< ( predicate: (request: ServerRequest.ServerRequest) => Effect.Effect, - app: App.Default - ) => (self: Multiplex.Multiplex) => Multiplex.Multiplex, + app: App.Default + ) => (self: Multiplex.Multiplex) => Multiplex.Multiplex, ( - self: Multiplex.Multiplex, + self: Multiplex.Multiplex, predicate: (request: ServerRequest.ServerRequest) => Effect.Effect, - app: App.Default - ) => Multiplex.Multiplex + app: App.Default + ) => Multiplex.Multiplex >( 3, (self, predicate, app) => @@ -99,14 +99,14 @@ export const headerExact = dual< ( header: string, value: string, - app: App.Default - ) => (self: Multiplex.Multiplex) => Multiplex.Multiplex, + app: App.Default + ) => (self: Multiplex.Multiplex) => Multiplex.Multiplex, ( - self: Multiplex.Multiplex, + self: Multiplex.Multiplex, header: string, value: string, - app: App.Default - ) => Multiplex.Multiplex + app: App.Default + ) => Multiplex.Multiplex >( 4, (self, header, value, app) => @@ -121,14 +121,14 @@ export const headerRegex = dual< ( header: string, regex: RegExp, - app: App.Default - ) => (self: Multiplex.Multiplex) => Multiplex.Multiplex, + app: App.Default + ) => (self: Multiplex.Multiplex) => Multiplex.Multiplex, ( - self: Multiplex.Multiplex, + self: Multiplex.Multiplex, header: string, regex: RegExp, - app: App.Default - ) => Multiplex.Multiplex + app: App.Default + ) => Multiplex.Multiplex >( 4, (self, header, regex, app) => @@ -143,14 +143,14 @@ export const headerStartsWith = dual< ( header: string, prefix: string, - app: App.Default - ) => (self: Multiplex.Multiplex) => Multiplex.Multiplex, + app: App.Default + ) => (self: Multiplex.Multiplex) => Multiplex.Multiplex, ( - self: Multiplex.Multiplex, + self: Multiplex.Multiplex, header: string, prefix: string, - app: App.Default - ) => Multiplex.Multiplex + app: App.Default + ) => Multiplex.Multiplex >( 4, (self, header, prefix, app) => @@ -165,14 +165,14 @@ export const headerEndsWith = dual< ( header: string, suffix: string, - app: App.Default - ) => (self: Multiplex.Multiplex) => Multiplex.Multiplex, + app: App.Default + ) => (self: Multiplex.Multiplex) => Multiplex.Multiplex, ( - self: Multiplex.Multiplex, + self: Multiplex.Multiplex, header: string, suffix: string, - app: App.Default - ) => Multiplex.Multiplex + app: App.Default + ) => Multiplex.Multiplex >( 4, (self, header, suffix, app) => @@ -186,50 +186,50 @@ export const headerEndsWith = dual< export const hostRegex = dual< ( regex: RegExp, - app: App.Default - ) => (self: Multiplex.Multiplex) => Multiplex.Multiplex, + app: App.Default + ) => (self: Multiplex.Multiplex) => Multiplex.Multiplex, ( - self: Multiplex.Multiplex, + self: Multiplex.Multiplex, regex: RegExp, - app: App.Default - ) => Multiplex.Multiplex + app: App.Default + ) => Multiplex.Multiplex >(3, (self, regex, app) => headerRegex(self, "host", regex, app)) /** @internal */ export const hostStartsWith = dual< ( prefix: string, - app: App.Default - ) => (self: Multiplex.Multiplex) => Multiplex.Multiplex, + app: App.Default + ) => (self: Multiplex.Multiplex) => Multiplex.Multiplex, ( - self: Multiplex.Multiplex, + self: Multiplex.Multiplex, prefix: string, - app: App.Default - ) => Multiplex.Multiplex + app: App.Default + ) => Multiplex.Multiplex >(3, (self, prefix, app) => headerStartsWith(self, "host", prefix, app)) /** @internal */ export const hostEndsWith = dual< ( suffix: string, - app: App.Default - ) => (self: Multiplex.Multiplex) => Multiplex.Multiplex, + app: App.Default + ) => (self: Multiplex.Multiplex) => Multiplex.Multiplex, ( - self: Multiplex.Multiplex, + self: Multiplex.Multiplex, suffix: string, - app: App.Default - ) => Multiplex.Multiplex + app: App.Default + ) => Multiplex.Multiplex >(3, (self, suffix, app) => headerEndsWith(self, "host", suffix, app)) /** @internal */ export const hostExact = dual< ( host: string, - app: App.Default - ) => (self: Multiplex.Multiplex) => Multiplex.Multiplex, + app: App.Default + ) => (self: Multiplex.Multiplex) => Multiplex.Multiplex, ( - self: Multiplex.Multiplex, + self: Multiplex.Multiplex, host: string, - app: App.Default - ) => Multiplex.Multiplex + app: App.Default + ) => Multiplex.Multiplex >(3, (self, host, app) => headerExact(self, "host", host, app)) diff --git a/packages/platform/src/internal/http/router.ts b/packages/platform/src/internal/http/router.ts index 2104e4eaf8..fea4ee162a 100644 --- a/packages/platform/src/internal/http/router.ts +++ b/packages/platform/src/internal/http/router.ts @@ -131,18 +131,18 @@ export const schemaSearchParams = > return Effect.flatMap(RouteContext, (_) => parse(_.searchParams)) } -class RouterImpl extends Effectable.StructuralClass< +class RouterImpl extends Effectable.StructuralClass< ServerResponse.ServerResponse, E | Error.RouteNotFound, Exclude -> implements Router.Router { +> implements Router.Router { readonly [TypeId]: Router.TypeId constructor( - readonly routes: Chunk.Chunk>, + readonly routes: Chunk.Chunk>, readonly mounts: Chunk.Chunk< readonly [ prefix: string, - httpApp: App.Default, + httpApp: App.Default, options?: { readonly includePrefix?: boolean | undefined } | undefined ] > @@ -176,9 +176,9 @@ class RouterImpl extends Effectable.StructuralClass< } const toHttpApp = ( - self: Router.Router -): App.Default => { - const router = FindMyWay.make>() + self: Router.Router +): App.Default => { + const router = FindMyWay.make>() const mounts = Chunk.toReadonlyArray(self.mounts).map(([path, app, options]) => [ path, @@ -220,7 +220,7 @@ const toHttpApp = ( context = Context.add(context, ServerRequest.ServerRequest, sliceRequestUrl(request, path)) } return Effect.locally( - routeContext.route.handler as App.Default, + routeContext.route.handler as App.Default, FiberRef.currentContext, context ) @@ -259,7 +259,7 @@ function sliceRequestUrl(request: ServerRequest.ServerRequest, prefix: string) { return request.modify({ url: request.url.length <= prefexLen ? "/" : request.url.slice(prefexLen) }) } -class RouteImpl extends Inspectable.Class implements Router.Route { +class RouteImpl extends Inspectable.Class implements Router.Route { readonly [RouteTypeId]: Router.RouteTypeId constructor( readonly method: Method.Method | "*", @@ -293,14 +293,14 @@ class RouteContextImpl implements Router.RouteContext { } /** @internal */ -export const empty: Router.Router = new RouterImpl(Chunk.empty(), Chunk.empty()) +export const empty: Router.Router = new RouterImpl(Chunk.empty(), Chunk.empty()) /** @internal */ export const fromIterable = >( routes: Iterable ): Router.Router< - R extends Router.Route ? Env : never, - R extends Router.Route ? E : never + R extends Router.Route ? E : never, + R extends Router.Route ? Env : never > => new RouterImpl(Chunk.fromIterable(routes), Chunk.empty()) as any /** @internal */ @@ -310,13 +310,19 @@ export const makeRoute = ( handler: Router.Route.Handler, prefix: Option.Option = Option.none(), uninterruptible = false -): Router.Route, E> => - new RouteImpl(method, path, handler, prefix, uninterruptible) as any +): Router.Route> => + new RouteImpl( + method, + path, + handler, + prefix, + uninterruptible + ) as any /** @internal */ export const concat = dual< - (that: Router.Router) => (self: Router.Router) => Router.Router, - (self: Router.Router, that: Router.Router) => Router.Router + (that: Router.Router) => (self: Router.Router) => Router.Router, + (self: Router.Router, that: Router.Router) => Router.Router >(2, (self, that) => new RouterImpl(Chunk.appendAll(self.routes, that.routes) as any, self.mounts)) const removeTrailingSlash = ( @@ -325,8 +331,8 @@ const removeTrailingSlash = ( /** @internal */ export const prefixAll = dual< - (prefix: Router.PathInput) => (self: Router.Router) => Router.Router, - (self: Router.Router, prefix: Router.PathInput) => Router.Router + (prefix: Router.PathInput) => (self: Router.Router) => Router.Router, + (self: Router.Router, prefix: Router.PathInput) => Router.Router >( 2, (self, prefix) => { @@ -352,13 +358,13 @@ export const prefixAll = dual< export const mount = dual< ( path: `/${string}`, - that: Router.Router - ) => (self: Router.Router) => Router.Router, + that: Router.Router + ) => (self: Router.Router) => Router.Router, ( - self: Router.Router, + self: Router.Router, path: `/${string}`, - that: Router.Router - ) => Router.Router + that: Router.Router + ) => Router.Router >( 3, (self, path, that) => concat(self, prefixAll(that, path)) @@ -368,31 +374,31 @@ export const mount = dual< export const mountApp = dual< ( path: `/${string}`, - that: App.Default, + that: App.Default, options?: { readonly includePrefix?: boolean | undefined } | undefined ) => ( - self: Router.Router - ) => Router.Router, E | E1>, + self: Router.Router + ) => Router.Router>, ( - self: Router.Router, + self: Router.Router, path: `/${string}`, - that: App.Default, + that: App.Default, options?: { readonly includePrefix?: boolean | undefined } | undefined - ) => Router.Router, E | E1> + ) => Router.Router> >( (args) => Predicate.hasProperty(args[0], TypeId), ( - self: Router.Router, + self: Router.Router, path: `/${string}`, - that: App.Default, + that: App.Default, options?: { readonly includePrefix?: boolean | undefined } | undefined - ): Router.Router, E | E1> => + ): Router.Router> => new RouterImpl(self.routes, Chunk.append(self.mounts, [removeTrailingSlash(path), that, options])) as any ) @@ -400,40 +406,49 @@ export const mountApp = dual< export const route = (method: Method.Method | "*"): { ( path: Router.PathInput, - handler: Router.Route.Handler, + handler: Router.Route.Handler, options?: { readonly uninterruptible?: boolean | undefined } | undefined ): ( - self: Router.Router - ) => Router.Router, E1 | E> + self: Router.Router + ) => Router.Router> ( - self: Router.Router, + self: Router.Router, path: Router.PathInput, - handler: Router.Route.Handler, + handler: Router.Route.Handler, options?: { readonly uninterruptible?: boolean | undefined } | undefined - ): Router.Router, E1 | E> + ): Router.Router> } => dual< ( path: Router.PathInput, handler: Router.Route.Handler ) => ( - self: Router.Router - ) => Router.Router, E | E1>, + self: Router.Router + ) => Router.Router>, ( - self: Router.Router, + self: Router.Router, path: Router.PathInput, - handler: Router.Route.Handler, + handler: Router.Route.Handler, options?: { readonly uninterruptible?: boolean | undefined } | undefined - ) => Router.Router, E | E1> - >((args) => Predicate.hasProperty(args[0], TypeId), (self, path, handler, options) => + ) => Router.Router> + >(3, (self, path, handler, options) => new RouterImpl( - Chunk.append(self.routes, new RouteImpl(method, path, handler, Option.none(), options?.uninterruptible ?? false)), + Chunk.append( + self.routes, + new RouteImpl( + method, + path, + handler, + Option.none(), + options?.uninterruptible ?? false + ) + ), self.mounts )) @@ -464,12 +479,12 @@ export const options = route("OPTIONS") /** @internal */ export const use = dual< ( - f: (self: Router.Route.Handler) => App.Default - ) => (self: Router.Router) => Router.Router, E1>, + f: (self: Router.Route.Handler) => App.Default + ) => (self: Router.Router) => Router.Router>, ( - self: Router.Router, - f: (self: Router.Route.Handler) => App.Default - ) => Router.Router, E1> + self: Router.Router, + f: (self: Router.Route.Handler) => App.Default + ) => Router.Router> >(2, (self, f) => new RouterImpl( Chunk.map( @@ -486,22 +501,22 @@ export const use = dual< export const catchAll = dual< ( f: (e: E) => Router.Route.Handler - ) => (self: Router.Router) => Router.Router, E2>, + ) => (self: Router.Router) => Router.Router>, ( - self: Router.Router, + self: Router.Router, f: (e: E) => Router.Route.Handler - ) => Router.Router, E2> + ) => Router.Router> >(2, (self, f) => use(self, Effect.catchAll(f))) /** @internal */ export const catchAllCause = dual< ( f: (e: Cause.Cause) => Router.Route.Handler - ) => (self: Router.Router) => Router.Router, E2>, + ) => (self: Router.Router) => Router.Router>, ( - self: Router.Router, + self: Router.Router, f: (e: Cause.Cause) => Router.Route.Handler - ) => Router.Router, E2> + ) => Router.Router> >(2, (self, f) => use(self, Effect.catchAllCause(f))) /** @internal */ @@ -510,13 +525,13 @@ export const catchTag = dual< k: K, f: (e: Extract) => Router.Route.Handler ) => ( - self: Router.Router - ) => Router.Router, Exclude | E1>, + self: Router.Router + ) => Router.Router | E1, R | Router.Router.ExcludeProvided>, ( - self: Router.Router, + self: Router.Router, k: K, f: (e: Extract) => Router.Route.Handler - ) => Router.Router, Exclude | E1> + ) => Router.Router | E1, R | Router.Router.ExcludeProvided> >(3, (self, k, f) => use(self, Effect.catchTag(k, f))) /** @internal */ @@ -529,17 +544,17 @@ export const catchTags: { {}) >( cases: Cases - ): (self: Router.Router) => Router.Router< + ): (self: Router.Router) => Router.Router< + | Exclude + | { + [K in keyof Cases]: Cases[K] extends ((...args: Array) => Effect.Effect) ? E : never + }[keyof Cases], | R | Router.Router.ExcludeProvided< { [K in keyof Cases]: Cases[K] extends ((...args: Array) => Effect.Effect) ? R : never }[keyof Cases] - >, - | Exclude - | { - [K in keyof Cases]: Cases[K] extends ((...args: Array) => Effect.Effect) ? E : never - }[keyof Cases] + > > < R, @@ -549,19 +564,19 @@ export const catchTags: { } : {}) >( - self: Router.Router, + self: Router.Router, cases: Cases ): Router.Router< + | Exclude + | { + [K in keyof Cases]: Cases[K] extends ((...args: Array) => Effect.Effect) ? E : never + }[keyof Cases], | R | Router.Router.ExcludeProvided< { [K in keyof Cases]: Cases[K] extends ((...args: Array) => Effect.Effect) ? R : never }[keyof Cases] - >, - | Exclude - | { - [K in keyof Cases]: Cases[K] extends ((...args: Array) => Effect.Effect) ? E : never - }[keyof Cases] + > > } = dual(2, (self: Router.Router, cases: {}) => use(self, Effect.catchTags(cases))) @@ -570,18 +585,18 @@ export const provideService = dual< tag: T, service: Context.Tag.Service ) => ( - self: Router.Router - ) => Router.Router>, E>, + self: Router.Router + ) => Router.Router>>, >( - self: Router.Router, + self: Router.Router, tag: T, service: Context.Tag.Service - ) => Router.Router>, E> + ) => Router.Router>> >(3, >( - self: Router.Router, + self: Router.Router, tag: T, service: Context.Tag.Service -): Router.Router>, E> => use(self, Effect.provideService(tag, service))) +): Router.Router>> => use(self, Effect.provideService(tag, service))) /* @internal */ export const provideServiceEffect = dual< @@ -589,33 +604,33 @@ export const provideServiceEffect = dual< tag: T, effect: Effect.Effect, E1, R1> ) => ( - self: Router.Router + self: Router.Router ) => Router.Router< + E | E1, Exclude< R | Router.Router.ExcludeProvided, Context.Tag.Identifier - >, - E | E1 + > >, , R1, E1>( - self: Router.Router, + self: Router.Router, tag: T, effect: Effect.Effect, E1, R1> ) => Router.Router< + E | E1, Exclude< R | Router.Router.ExcludeProvided, Context.Tag.Identifier - >, - E | E1 + > > >(3, , R1, E1>( - self: Router.Router, + self: Router.Router, tag: T, effect: Effect.Effect, E1, R1> ): Router.Router< + E | E1, Exclude< R | Router.Router.ExcludeProvided, Context.Tag.Identifier - >, - E | E1 + > > => use(self, Effect.provideServiceEffect(tag, effect)) as any) diff --git a/packages/platform/src/internal/http/server.ts b/packages/platform/src/internal/http/server.ts index 0d3d2b2d77..756f927ee6 100644 --- a/packages/platform/src/internal/http/server.ts +++ b/packages/platform/src/internal/http/server.ts @@ -25,7 +25,7 @@ export const isServer = (u: unknown): u is Server.Server => typeof u === "object export const make = ( options: { readonly serve: ( - httpApp: App.Default, + httpApp: App.Default, middleware?: Middleware.Middleware ) => Effect.Effect readonly address: Server.Address @@ -36,10 +36,10 @@ export const make = ( export const serve = dual< { (): ( - httpApp: App.Default + httpApp: App.Default ) => Layer.Layer> - >(middleware: Middleware.Middleware.Applied): ( - httpApp: App.Default + >(middleware: Middleware.Middleware.Applied): ( + httpApp: App.Default ) => Layer.Layer< never, never, @@ -48,11 +48,11 @@ export const serve = dual< }, { ( - httpApp: App.Default + httpApp: App.Default ): Layer.Layer> >( - httpApp: App.Default, - middleware: Middleware.Middleware.Applied + httpApp: App.Default, + middleware: Middleware.Middleware.Applied ): Layer.Layer< never, never, @@ -62,8 +62,8 @@ export const serve = dual< >( (args) => Effect.isEffect(args[0]), >( - httpApp: App.Default, - middleware?: Middleware.Middleware.Applied + httpApp: App.Default, + middleware?: Middleware.Middleware.Applied ): Layer.Layer< never, never, @@ -81,14 +81,14 @@ export const serve = dual< export const serveEffect = dual< { (): ( - httpApp: App.Default + httpApp: App.Default ) => Effect.Effect< void, never, Server.Server | Scope.Scope | Exclude > - >(middleware: Middleware.Middleware.Applied): ( - httpApp: App.Default + >(middleware: Middleware.Middleware.Applied): ( + httpApp: App.Default ) => Effect.Effect< void, never, @@ -97,11 +97,11 @@ export const serveEffect = dual< }, { ( - httpApp: App.Default + httpApp: App.Default ): Effect.Effect> >( - httpApp: App.Default, - middleware: Middleware.Middleware.Applied + httpApp: App.Default, + middleware: Middleware.Middleware.Applied ): Effect.Effect< void, never, @@ -111,8 +111,8 @@ export const serveEffect = dual< >( (args) => Effect.isEffect(args[0]), (>( - httpApp: App.Default, - middleware: Middleware.Middleware.Applied + httpApp: App.Default, + middleware: Middleware.Middleware.Applied ): Effect.Effect< void, never, diff --git a/packages/platform/src/internal/worker.ts b/packages/platform/src/internal/worker.ts index 9db47f79fe..00d51dd69f 100644 --- a/packages/platform/src/internal/worker.ts +++ b/packages/platform/src/internal/worker.ts @@ -64,7 +64,7 @@ export const makeManager = Effect.gen(function*(_) { let idCounter = 0 return WorkerManager.of({ [WorkerManagerTypeId]: WorkerManagerTypeId, - spawn({ + spawn({ encode, initialMessage, permits = 1, @@ -296,14 +296,14 @@ export const makeManager = Effect.gen(function*(_) { export const layerManager = Layer.effect(WorkerManager, makeManager) /** @internal */ -export const makePool = ( +export const makePool = ( options: Worker.WorkerPool.Options ) => Effect.gen(function*(_) { const manager = yield* _(WorkerManager) - const workers = new Set>() + const workers = new Set>() const acquire = pipe( - manager.spawn(options), + manager.spawn(options), Effect.tap((worker) => Effect.sync(() => workers.add(worker))), Effect.tap((worker) => Effect.addFinalizer(() => Effect.sync(() => workers.delete(worker)))), options.onCreate ? Effect.tap(options.onCreate) : identity @@ -321,7 +321,7 @@ export const makePool = ( size: options.size }) ) - const pool: Worker.WorkerPool = { + const pool: Worker.WorkerPool = { backing, broadcast: (message: I) => Effect.forEach(workers, (worker) => worker.executeEffect(message), { @@ -346,8 +346,8 @@ export const makePool = ( }) /** @internal */ -export const makePoolLayer = ( - tag: Context.Tag>, +export const makePoolLayer = ( + tag: Context.Tag>, options: Worker.WorkerPool.Options ) => Layer.scoped(tag, makePool(options)) diff --git a/packages/platform/src/internal/workerRunner.ts b/packages/platform/src/internal/workerRunner.ts index e3fdd8c281..e6c898d1d2 100644 --- a/packages/platform/src/internal/workerRunner.ts +++ b/packages/platform/src/internal/workerRunner.ts @@ -32,7 +32,7 @@ export const PlatformRunner = Context.GenericTag( /** @internal */ export const make = ( process: (request: I) => Stream.Stream | Effect.Effect, - options?: WorkerRunner.Runner.Options + options?: WorkerRunner.Runner.Options ) => Effect.gen(function*(_) { const scope = yield* _(Scope.fork(yield* _(Effect.scope), ExecutionStrategy.parallel)) @@ -170,7 +170,7 @@ export const make = ( /** @internal */ export const layer = ( process: (request: I) => Stream.Stream | Effect.Effect, - options?: WorkerRunner.Runner.Options + options?: WorkerRunner.Runner.Options ): Layer.Layer => Layer.scopedDiscard(make(process, options)) /** @internal */ diff --git a/packages/rpc-http/src/HttpRouter.ts b/packages/rpc-http/src/HttpRouter.ts index 11bceed470..af3e00f778 100644 --- a/packages/rpc-http/src/HttpRouter.ts +++ b/packages/rpc-http/src/HttpRouter.ts @@ -17,8 +17,8 @@ import * as Stream from "effect/Stream" * @category conversions */ export const toHttpApp = >(self: R): App.Default< - Router.Router.Context, - ServerError.RequestError + ServerError.RequestError, + Router.Router.Context > => { const handler = Router.toHandler(self) return Effect.withFiberRuntime((fiber) => {