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 "./index.css"
|
||||||
import { Reffuse } from "./reffuse"
|
import { Reffuse } from "./reffuse"
|
||||||
import { routeTree } from "./routeTree.gen"
|
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 })
|
const router = createRouter({ routeTree })
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
import { make } from "@thilawyn/reffuse/Reffuse"
|
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