0.1.0 #1
8
packages/example/src/domain/Post.ts
Normal file
8
packages/example/src/domain/Post.ts
Normal file
@@ -0,0 +1,8 @@
|
||||
import { Schema } from "effect"
|
||||
|
||||
|
||||
export class Post extends Schema.Class<Post>("Post")({
|
||||
id: Schema.String,
|
||||
title: Schema.String,
|
||||
content: Schema.String,
|
||||
}) {}
|
||||
1
packages/example/src/domain/index.ts
Normal file
1
packages/example/src/domain/index.ts
Normal file
@@ -0,0 +1 @@
|
||||
export * as Post from "./Post"
|
||||
@@ -5,9 +5,12 @@ import { createRoot } from "react-dom/client"
|
||||
import "./index.css"
|
||||
import { Reffuse } from "./reffuse"
|
||||
import { routeTree } from "./routeTree.gen"
|
||||
import { FetchData } from "./services"
|
||||
|
||||
|
||||
const layer = Layer.empty
|
||||
const layer = Layer.empty.pipe(
|
||||
Layer.provideMerge(FetchData.mockLayer)
|
||||
)
|
||||
|
||||
const router = createRouter({ routeTree })
|
||||
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
import { make } from "@thilawyn/reffuse/Reffuse"
|
||||
import { FetchData } from "./services"
|
||||
|
||||
|
||||
export const Reffuse = make()
|
||||
export const Reffuse = make<FetchData.FetchData>()
|
||||
|
||||
18
packages/example/src/services/FetchData.ts
Normal file
18
packages/example/src/services/FetchData.ts
Normal file
@@ -0,0 +1,18 @@
|
||||
import { Post } from "@/domain"
|
||||
import { Context, Effect, Layer } from "effect"
|
||||
|
||||
|
||||
export class FetchData extends Context.Tag("FetchData")<FetchData, {
|
||||
readonly fetchPosts: Effect.Effect<Post.Post[]>
|
||||
}>() {}
|
||||
|
||||
|
||||
export const mockLayer = Layer.succeed(FetchData, {
|
||||
fetchPosts: Effect.succeed([
|
||||
Post.Post.make({
|
||||
id: "1",
|
||||
title: "Lorem ipsum",
|
||||
content: "Lorem ipsum",
|
||||
})
|
||||
])
|
||||
})
|
||||
7
packages/example/src/services/PostState.ts
Normal file
7
packages/example/src/services/PostState.ts
Normal file
@@ -0,0 +1,7 @@
|
||||
import { Post } from "@/domain"
|
||||
import { Context, SubscriptionRef } from "effect"
|
||||
|
||||
|
||||
export class PostState extends Context.Tag("PostState")<PostState, {
|
||||
post: SubscriptionRef.SubscriptionRef<Post.Post>
|
||||
}>() {}
|
||||
2
packages/example/src/services/index.ts
Normal file
2
packages/example/src/services/index.ts
Normal file
@@ -0,0 +1,2 @@
|
||||
export * as FetchData from "./FetchData"
|
||||
export * as PostState from "./PostState"
|
||||
7
packages/example/src/views/post/VPost.tsx
Normal file
7
packages/example/src/views/post/VPost.tsx
Normal file
@@ -0,0 +1,7 @@
|
||||
|
||||
|
||||
export function VPost() {
|
||||
|
||||
|
||||
|
||||
}
|
||||
5
packages/example/src/views/post/reffuse.ts
Normal file
5
packages/example/src/views/post/reffuse.ts
Normal file
@@ -0,0 +1,5 @@
|
||||
import { Reffuse as RootReffuse } from "@/reffuse"
|
||||
import { PostState } from "@/services"
|
||||
|
||||
|
||||
export const Reffuse = RootReffuse.extend<PostState.PostState>()
|
||||
Reference in New Issue
Block a user