0.1.11 #14
@@ -5,7 +5,7 @@ import { Layer } from "effect"
|
|||||||
import { StrictMode } from "react"
|
import { StrictMode } from "react"
|
||||||
import { createRoot } from "react-dom/client"
|
import { createRoot } from "react-dom/client"
|
||||||
import { ReffuseRuntime } from "reffuse"
|
import { ReffuseRuntime } from "reffuse"
|
||||||
import { AppQueryClientLive, AppQueryErrorHandlerLive } from "./query"
|
import { AppQueryClient, AppQueryErrorHandlerLive } from "./query"
|
||||||
import { GlobalContext } from "./reffuse"
|
import { GlobalContext } from "./reffuse"
|
||||||
import { routeTree } from "./routeTree.gen"
|
import { routeTree } from "./routeTree.gen"
|
||||||
|
|
||||||
@@ -15,7 +15,7 @@ const layer = Layer.empty.pipe(
|
|||||||
Layer.provideMerge(Geolocation.layer),
|
Layer.provideMerge(Geolocation.layer),
|
||||||
Layer.provideMerge(Permissions.layer),
|
Layer.provideMerge(Permissions.layer),
|
||||||
Layer.provideMerge(FetchHttpClient.layer),
|
Layer.provideMerge(FetchHttpClient.layer),
|
||||||
Layer.provideMerge(AppQueryClientLive),
|
Layer.provideMerge(AppQueryClient.Live),
|
||||||
Layer.provideMerge(AppQueryErrorHandlerLive),
|
Layer.provideMerge(AppQueryErrorHandlerLive),
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
@@ -7,4 +7,5 @@ export class AppQueryErrorHandler extends ErrorHandler.Tag("AppQueryErrorHandler
|
|||||||
>() {}
|
>() {}
|
||||||
export const AppQueryErrorHandlerLive = ErrorHandler.layer(AppQueryErrorHandler)
|
export const AppQueryErrorHandlerLive = ErrorHandler.layer(AppQueryErrorHandler)
|
||||||
|
|
||||||
export const [AppQueryClient, AppQueryClientLive] = QueryClient.make({ ErrorHandler: AppQueryErrorHandler })
|
|
||||||
|
export class AppQueryClient extends QueryClient.Service({ ErrorHandler: AppQueryErrorHandler })<AppQueryClient>() {}
|
||||||
|
|||||||
@@ -2,7 +2,6 @@ import { HttpClient } from "@effect/platform"
|
|||||||
import { Clipboard, Geolocation, Permissions } from "@effect/platform-browser"
|
import { Clipboard, Geolocation, Permissions } from "@effect/platform-browser"
|
||||||
import { LazyRefExtension } from "@reffuse/extension-lazyref"
|
import { LazyRefExtension } from "@reffuse/extension-lazyref"
|
||||||
import { QueryExtension } from "@reffuse/extension-query"
|
import { QueryExtension } from "@reffuse/extension-query"
|
||||||
import { Context } from "effect"
|
|
||||||
import { Reffuse, ReffuseContext } from "reffuse"
|
import { Reffuse, ReffuseContext } from "reffuse"
|
||||||
import { AppQueryClient, AppQueryErrorHandler } from "./query"
|
import { AppQueryClient, AppQueryErrorHandler } from "./query"
|
||||||
|
|
||||||
@@ -12,7 +11,7 @@ export const GlobalContext = ReffuseContext.make<
|
|||||||
| Geolocation.Geolocation
|
| Geolocation.Geolocation
|
||||||
| Permissions.Permissions
|
| Permissions.Permissions
|
||||||
| HttpClient.HttpClient
|
| HttpClient.HttpClient
|
||||||
| Context.Tag.Service<typeof AppQueryClient>
|
| AppQueryClient
|
||||||
| AppQueryErrorHandler
|
| AppQueryErrorHandler
|
||||||
>()
|
>()
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
import { Context, Effect, Layer } from "effect"
|
import { Context, Effect, Layer } from "effect"
|
||||||
|
import type { Mutable } from "effect/Types"
|
||||||
import * as ErrorHandler from "./ErrorHandler.js"
|
import * as ErrorHandler from "./ErrorHandler.js"
|
||||||
|
|
||||||
|
|
||||||
@@ -18,71 +19,35 @@ export interface ServiceProps<EH, HandledE> {
|
|||||||
readonly ErrorHandler?: Context.Tag<EH, ErrorHandler.ErrorHandler<HandledE>>
|
readonly ErrorHandler?: Context.Tag<EH, ErrorHandler.ErrorHandler<HandledE>>
|
||||||
}
|
}
|
||||||
|
|
||||||
export const Service: <
|
export interface ServiceResult<Self, EH, HandledE> extends Context.TagClass<Self, typeof Id, QueryClient<EH, HandledE>> {
|
||||||
|
readonly Live: Layer.Layer<
|
||||||
|
| Self
|
||||||
|
| (EH extends ErrorHandler.DefaultErrorHandler
|
||||||
|
? ErrorHandler.DefaultErrorHandler
|
||||||
|
: never)
|
||||||
|
>
|
||||||
|
}
|
||||||
|
|
||||||
|
export const Service = <
|
||||||
EH = ErrorHandler.DefaultErrorHandler,
|
EH = ErrorHandler.DefaultErrorHandler,
|
||||||
HandledE = never,
|
HandledE = never,
|
||||||
>(
|
>(
|
||||||
props?: ServiceProps<EH, HandledE>
|
props?: ServiceProps<EH, HandledE>
|
||||||
) =>
|
) => (
|
||||||
<Self>() =>
|
<Self>(): ServiceResult<Self, EH, HandledE> => {
|
||||||
& Context.TagClass<Self, typeof Id, QueryClient<EH, HandledE>>
|
const TagClass = Context.Tag(Id)() as ServiceResult<Self, EH, HandledE>
|
||||||
& { readonly Live: Layer.Layer<
|
(TagClass as Mutable<typeof TagClass>).Live = Layer.empty.pipe(
|
||||||
| QueryClient<EH, HandledE>
|
Layer.provideMerge(
|
||||||
| (EH extends ErrorHandler.DefaultErrorHandler
|
Layer.effect(TagClass, Effect.succeed({
|
||||||
? ErrorHandler.DefaultErrorHandler
|
ErrorHandler: (props?.ErrorHandler ?? ErrorHandler.DefaultErrorHandler) as Context.Tag<EH, ErrorHandler.ErrorHandler<HandledE>>
|
||||||
: never)
|
}))
|
||||||
> }
|
),
|
||||||
= props => () => {
|
|
||||||
const TagClass = Context.Tag(Id)() as any
|
|
||||||
TagClass.Live = Layer.empty.pipe(
|
|
||||||
Layer.provideMerge(
|
|
||||||
Layer.effect(TagClass, Effect.succeed({
|
|
||||||
ErrorHandler: props?.ErrorHandler ?? ErrorHandler.DefaultErrorHandler
|
|
||||||
}))
|
|
||||||
),
|
|
||||||
|
|
||||||
Layer.provideMerge((props?.ErrorHandler
|
Layer.provideMerge((props?.ErrorHandler
|
||||||
? Layer.empty
|
? Layer.empty
|
||||||
: ErrorHandler.DefaultErrorHandlerLive
|
: ErrorHandler.DefaultErrorHandlerLive
|
||||||
),
|
) as Layer.Layer<ErrorHandler.DefaultErrorHandler>),
|
||||||
))
|
)
|
||||||
|
return TagClass
|
||||||
return TagClass
|
}
|
||||||
}
|
)
|
||||||
|
|
||||||
|
|
||||||
// export interface MakeProps<EH, HandledE> {
|
|
||||||
// readonly ErrorHandler?: Context.Tag<EH, ErrorHandler.ErrorHandler<HandledE>>
|
|
||||||
// }
|
|
||||||
|
|
||||||
// export type MakeResult<EH, HandledE> = [
|
|
||||||
// tag: Tag<EH, HandledE>,
|
|
||||||
// layer: Layer.Layer<
|
|
||||||
// | QueryClient<EH, HandledE>
|
|
||||||
// | (EH extends ErrorHandler.DefaultErrorHandler
|
|
||||||
// ? ErrorHandler.DefaultErrorHandler
|
|
||||||
// : never)
|
|
||||||
// >,
|
|
||||||
// ]
|
|
||||||
|
|
||||||
// export const make = <
|
|
||||||
// EH = ErrorHandler.DefaultErrorHandler,
|
|
||||||
// HandledE = never,
|
|
||||||
// >(
|
|
||||||
// props?: MakeProps<EH, HandledE>
|
|
||||||
// ): MakeResult<EH, HandledE> => [
|
|
||||||
// makeTag(),
|
|
||||||
|
|
||||||
// Layer.empty.pipe(
|
|
||||||
// Layer.provideMerge(
|
|
||||||
// Layer.effect(makeTag<EH, HandledE>(), Effect.succeed({
|
|
||||||
// ErrorHandler: (props?.ErrorHandler ?? ErrorHandler.DefaultErrorHandler) as Context.Tag<EH, ErrorHandler.ErrorHandler<HandledE>>
|
|
||||||
// }))
|
|
||||||
// ),
|
|
||||||
|
|
||||||
// Layer.provideMerge((props?.ErrorHandler
|
|
||||||
// ? Layer.empty
|
|
||||||
// : ErrorHandler.DefaultErrorHandlerLive
|
|
||||||
// ) as Layer.Layer<ErrorHandler.DefaultErrorHandler>),
|
|
||||||
// ),
|
|
||||||
// ]
|
|
||||||
|
|||||||
Reference in New Issue
Block a user