From 3c378081311308cc5468850693362a408dc49b1e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julien=20Valverd=C3=A9?= Date: Thu, 16 Jan 2025 18:07:28 +0100 Subject: [PATCH] Cleanup --- packages/example/src/domain/Post.ts | 8 ----- packages/example/src/domain/index.ts | 1 - packages/example/src/reffuse.ts | 8 ++--- packages/example/src/routes/count.tsx | 8 ++--- packages/example/src/routes/index.tsx | 4 +-- packages/example/src/routes/time.tsx | 8 ++--- packages/example/src/services/FetchData.ts | 24 ------------- packages/example/src/services/index.ts | 2 +- packages/example/src/todos/reffuse.ts | 5 ++- packages/example/src/todos/views/VNewTodo.tsx | 8 ++--- packages/example/src/todos/views/VTodo.tsx | 4 +-- packages/example/src/todos/views/VTodos.tsx | 8 ++--- packages/example/src/views/post/VPost.tsx | 34 ------------------- packages/example/src/views/post/reffuse.ts | 1 - packages/example/src/views/posts/VPosts.tsx | 25 -------------- packages/example/src/views/posts/reffuse.ts | 8 ----- .../src/views/posts/services/PostsState.ts | 15 -------- .../example/src/views/posts/services/index.ts | 1 - packages/reffuse/src/Reffuse.ts | 2 +- 19 files changed, 27 insertions(+), 147 deletions(-) delete mode 100644 packages/example/src/domain/Post.ts delete mode 100644 packages/example/src/services/FetchData.ts delete mode 100644 packages/example/src/views/post/VPost.tsx delete mode 100644 packages/example/src/views/post/reffuse.ts delete mode 100644 packages/example/src/views/posts/VPosts.tsx delete mode 100644 packages/example/src/views/posts/reffuse.ts delete mode 100644 packages/example/src/views/posts/services/PostsState.ts delete mode 100644 packages/example/src/views/posts/services/index.ts diff --git a/packages/example/src/domain/Post.ts b/packages/example/src/domain/Post.ts deleted file mode 100644 index d89a6fb..0000000 --- a/packages/example/src/domain/Post.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { Schema } from "effect" - - -export class Post extends Schema.Class("Post")({ - id: Schema.String, - title: Schema.String, - content: Schema.String, -}) {} diff --git a/packages/example/src/domain/index.ts b/packages/example/src/domain/index.ts index 4bf1f83..8d70c13 100644 --- a/packages/example/src/domain/index.ts +++ b/packages/example/src/domain/index.ts @@ -1,2 +1 @@ -export * as Post from "./Post" export * as Todo from "./Todo" diff --git a/packages/example/src/reffuse.ts b/packages/example/src/reffuse.ts index 9b1b65e..73a5c09 100644 --- a/packages/example/src/reffuse.ts +++ b/packages/example/src/reffuse.ts @@ -1,7 +1,5 @@ -import { ReffuseContext } from "@thilawyn/reffuse" -import { make } from "@thilawyn/reffuse/Reffuse" -import { FetchData } from "./services" +import { Reffuse, ReffuseContext } from "@thilawyn/reffuse" -export const GlobalContext = ReffuseContext.make() -export const Reffuse = make(GlobalContext) +export const GlobalContext = ReffuseContext.make() +export const R = Reffuse.make(GlobalContext) diff --git a/packages/example/src/routes/count.tsx b/packages/example/src/routes/count.tsx index 081162b..77aedc7 100644 --- a/packages/example/src/routes/count.tsx +++ b/packages/example/src/routes/count.tsx @@ -1,4 +1,4 @@ -import { Reffuse } from "@/reffuse" +import { R } from "@/reffuse" import { createFileRoute } from "@tanstack/react-router" import { Ref } from "effect" @@ -9,10 +9,10 @@ export const Route = createFileRoute("/count")({ function Count() { - const runSync = Reffuse.useRunSync() + const runSync = R.useRunSync() - const countRef = Reffuse.useRef(0) - const [count] = Reffuse.useRefState(countRef) + const countRef = R.useRef(0) + const [count] = R.useRefState(countRef) return ( diff --git a/packages/example/src/routes/index.tsx b/packages/example/src/routes/index.tsx index 91f6a3e..c4caacd 100644 --- a/packages/example/src/routes/index.tsx +++ b/packages/example/src/routes/index.tsx @@ -1,4 +1,4 @@ -import { Reffuse } from "@/reffuse" +import { R } from "@/reffuse" import { TodosContext } from "@/todos/reffuse" import { TodosState } from "@/todos/services" import { VTodos } from "@/todos/views/VTodos" @@ -18,7 +18,7 @@ function Index() { Layer.provideMerge(TodosState.make("todos")) ), []) - Reffuse.useEffect(Effect.addFinalizer(() => Console.log("Effect cleanup")).pipe( + R.useEffect(Effect.addFinalizer(() => Console.log("Effect cleanup")).pipe( Effect.flatMap(() => Console.log("Effect recalculated")) )) diff --git a/packages/example/src/routes/time.tsx b/packages/example/src/routes/time.tsx index 1f01ec6..e2ba3d8 100644 --- a/packages/example/src/routes/time.tsx +++ b/packages/example/src/routes/time.tsx @@ -1,4 +1,4 @@ -import { Reffuse } from "@/reffuse" +import { R } from "@/reffuse" import { createFileRoute } from "@tanstack/react-router" import { Console, DateTime, Effect, Ref, Schedule, Stream } from "effect" @@ -15,9 +15,9 @@ export const Route = createFileRoute("/time")({ function Time() { - const timeRef = Reffuse.useRefFromEffect(DateTime.now) + const timeRef = R.useRefFromEffect(DateTime.now) - Reffuse.useFork(Effect.addFinalizer(() => Console.log("Cleanup")).pipe( + R.useFork(Effect.addFinalizer(() => Console.log("Cleanup")).pipe( Effect.flatMap(() => Stream.runForEach(timeEverySecond, v => Ref.set(timeRef, v)) ) @@ -31,7 +31,7 @@ function Time() { // )), // ), [timeRef]) - const [time] = Reffuse.useRefState(timeRef) + const [time] = R.useRefState(timeRef) return ( diff --git a/packages/example/src/services/FetchData.ts b/packages/example/src/services/FetchData.ts deleted file mode 100644 index fa8f555..0000000 --- a/packages/example/src/services/FetchData.ts +++ /dev/null @@ -1,24 +0,0 @@ -import { Post } from "@/domain" -import { Chunk, Context, Effect, Layer } from "effect" - - -export class FetchData extends Context.Tag("FetchData")> -}>() {} - - -export const mockLayer = Layer.succeed(FetchData, { - fetchPosts: Effect.succeed(Chunk.make( - Post.Post.make({ - id: "1", - title: "Lorem ipsum dolor sit amet", - content: "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam eget lacus sit amet diam suscipit porttitor non at felis. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nulla risus ligula, elementum nec scelerisque eget, volutpat vel sapien. Phasellus aliquam ac neque vitae sodales. Nunc sodales congue odio. Nulla eget nisl cursus, convallis lorem at, varius lectus. Aliquam vitae mauris vel mi dignissim condimentum. Proin sed dignissim sapien, ut cursus ex. Donec eget sapien sagittis, auctor metus vitae, fringilla lacus. Donec ut elit a quam aliquet consectetur interdum eu nisl. Etiam nec convallis purus, eu venenatis nulla. Phasellus non metus id mauris tincidunt cursus. Cras varius aliquet diam eu blandit. In hac habitasse platea dictumst.", - }), - - Post.Post.make({ - id: "2", - title: "Vestibulum non bibendum ligula", - content: "Vestibulum non bibendum ligula. Integer pellentesque, diam ac faucibus volutpat, nulla libero porttitor nunc, ac pulvinar tortor diam id ipsum. Sed id enim at odio euismod imperdiet et ac purus. Etiam tempus ipsum semper scelerisque mollis. Integer auctor, magna et tristique tempus, nisi mi euismod est, nec finibus quam nunc nec libero. Maecenas aliquet viverra magna, vitae blandit ligula pharetra id. Vestibulum vel lacus at nibh placerat tincidunt. Sed suscipit tellus vel felis euismod, et sollicitudin neque cursus. Curabitur dapibus eros vitae ligula suscipit, at facilisis risus venenatis. Sed pharetra blandit pulvinar. Vivamus vestibulum at ligula pulvinar fringilla. Suspendisse vel mattis libero, eget vulputate massa. Vivamus vehicula, lectus id tempor maximus, erat tortor blandit purus, at scelerisque nunc urna faucibus sapien.", - }), - )) -}) diff --git a/packages/example/src/services/index.ts b/packages/example/src/services/index.ts index d677cf1..336ce12 100644 --- a/packages/example/src/services/index.ts +++ b/packages/example/src/services/index.ts @@ -1 +1 @@ -export * as FetchData from "./FetchData" +export {} diff --git a/packages/example/src/todos/reffuse.ts b/packages/example/src/todos/reffuse.ts index 47b83d1..a6d5b86 100644 --- a/packages/example/src/todos/reffuse.ts +++ b/packages/example/src/todos/reffuse.ts @@ -1,8 +1,7 @@ import { GlobalContext } from "@/reffuse" -import { ReffuseContext } from "@thilawyn/reffuse" -import { make } from "@thilawyn/reffuse/Reffuse" +import { Reffuse, ReffuseContext } from "@thilawyn/reffuse" import { TodosState } from "./services" export const TodosContext = ReffuseContext.make() -export const Reffuse = make(GlobalContext, TodosContext) +export const R = Reffuse.make(GlobalContext, TodosContext) diff --git a/packages/example/src/todos/views/VNewTodo.tsx b/packages/example/src/todos/views/VNewTodo.tsx index c454ff0..d8ff530 100644 --- a/packages/example/src/todos/views/VNewTodo.tsx +++ b/packages/example/src/todos/views/VNewTodo.tsx @@ -1,13 +1,13 @@ import { Todo } from "@/domain" import { Box, Button, Card, Flex, TextArea } from "@radix-ui/themes" import { Effect, Option } from "effect" -import { Reffuse } from "../reffuse" +import { R } from "../reffuse" import { TodosState } from "../services" export function VNewTodo() { - const runSync = Reffuse.useRunSync() + const runSync = R.useRunSync() const createEmptyTodo = Todo.generateUniqueID.pipe( Effect.map(id => Todo.Todo.make({ @@ -17,8 +17,8 @@ export function VNewTodo() { }, true)) ) - const todoRef = Reffuse.useRefFromEffect(createEmptyTodo) - const [todo, setTodo] = Reffuse.useRefState(todoRef) + const todoRef = R.useRefFromEffect(createEmptyTodo) + const [todo, setTodo] = R.useRefState(todoRef) return ( diff --git a/packages/example/src/todos/views/VTodo.tsx b/packages/example/src/todos/views/VTodo.tsx index dda7e06..4a442bc 100644 --- a/packages/example/src/todos/views/VTodo.tsx +++ b/packages/example/src/todos/views/VTodo.tsx @@ -3,7 +3,7 @@ import { Box, Card, Flex, IconButton, TextArea } from "@radix-ui/themes" import { Effect } from "effect" import { Delete } from "lucide-react" import { useState } from "react" -import { Reffuse } from "../reffuse" +import { R } from "../reffuse" import { TodosState } from "../services" @@ -14,7 +14,7 @@ export interface VTodoProps { export function VTodo({ index, todo }: VTodoProps) { - const runSync = Reffuse.useRunSync() + const runSync = R.useRunSync() const editorMode = useState(false) diff --git a/packages/example/src/todos/views/VTodos.tsx b/packages/example/src/todos/views/VTodos.tsx index d0c848c..c747afa 100644 --- a/packages/example/src/todos/views/VTodos.tsx +++ b/packages/example/src/todos/views/VTodos.tsx @@ -1,6 +1,6 @@ import { Box, Flex } from "@radix-ui/themes" import { Chunk, Effect, Stream } from "effect" -import { Reffuse } from "../reffuse" +import { R } from "../reffuse" import { TodosState } from "../services" import { VNewTodo } from "./VNewTodo" import { VTodo } from "./VTodo" @@ -9,14 +9,14 @@ import { VTodo } from "./VTodo" export function VTodos() { // Sync changes to the todos with the local storage - Reffuse.useFork(TodosState.TodosState.pipe( + R.useFork(TodosState.TodosState.pipe( Effect.flatMap(state => Stream.runForEach(state.todos.changes, () => state.saveToLocalStorage) ) )) - const todosRef = Reffuse.useMemo(TodosState.TodosState.pipe(Effect.map(state => state.todos))) - const [todos] = Reffuse.useRefState(todosRef) + const todosRef = R.useMemo(TodosState.TodosState.pipe(Effect.map(state => state.todos))) + const [todos] = R.useRefState(todosRef) return ( diff --git a/packages/example/src/views/post/VPost.tsx b/packages/example/src/views/post/VPost.tsx deleted file mode 100644 index 6fceed6..0000000 --- a/packages/example/src/views/post/VPost.tsx +++ /dev/null @@ -1,34 +0,0 @@ -import { Post } from "@/domain" -import { Effect } from "effect" -import { PostsState } from "../posts/services" -import { Reffuse } from "./reffuse" - - -export interface VPostProps { - readonly index: number - readonly post: Post.Post -} - - -export function VPost({ post, index }: VPostProps) { - - const runSync = Reffuse.useRunSync() - - - return ( -
-

{post.title}

-

{post.content}

- - -
- ) - -} diff --git a/packages/example/src/views/post/reffuse.ts b/packages/example/src/views/post/reffuse.ts deleted file mode 100644 index 25017fe..0000000 --- a/packages/example/src/views/post/reffuse.ts +++ /dev/null @@ -1 +0,0 @@ -export { Reffuse } from "../posts/reffuse" diff --git a/packages/example/src/views/posts/VPosts.tsx b/packages/example/src/views/posts/VPosts.tsx deleted file mode 100644 index 23fedcb..0000000 --- a/packages/example/src/views/posts/VPosts.tsx +++ /dev/null @@ -1,25 +0,0 @@ -import { Chunk } from "effect" -import { VPost } from "../post/VPost" -import { Reffuse } from "./reffuse" -import { PostsState } from "./services" - - -export function VPosts() { - - const state = Reffuse.useMemo(PostsState.PostsState) - const [posts] = Reffuse.useRefState(state.posts) - - - return ( -
- {Chunk.map(posts, (post, index) => ( - - ))} -
- ) - -} diff --git a/packages/example/src/views/posts/reffuse.ts b/packages/example/src/views/posts/reffuse.ts deleted file mode 100644 index 4b0eb28..0000000 --- a/packages/example/src/views/posts/reffuse.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { GlobalContext } from "@/reffuse" -import { ReffuseContext } from "@thilawyn/reffuse" -import { make } from "@thilawyn/reffuse/Reffuse" -import { PostsState } from "./services" - - -export const PostsContext = ReffuseContext.make() -export const Reffuse = make(GlobalContext, PostsContext) diff --git a/packages/example/src/views/posts/services/PostsState.ts b/packages/example/src/views/posts/services/PostsState.ts deleted file mode 100644 index e7fbdc2..0000000 --- a/packages/example/src/views/posts/services/PostsState.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { Post } from "@/domain" -import { Chunk, Context, Effect, Layer, Ref, SubscriptionRef } from "effect" - - -export class PostsState extends Context.Tag("PostsState")> - readonly remove: (index: number) => Effect.Effect -}>() {} - -export const make = (posts: Chunk.Chunk) => Layer.effect(PostsState, SubscriptionRef.make(posts).pipe( - Effect.map(posts => ({ - posts, - remove: (index: number) => Ref.update(posts, Chunk.remove(index)), - })) -)) diff --git a/packages/example/src/views/posts/services/index.ts b/packages/example/src/views/posts/services/index.ts deleted file mode 100644 index e8a8ec6..0000000 --- a/packages/example/src/views/posts/services/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * as PostsState from "./PostsState" diff --git a/packages/reffuse/src/Reffuse.ts b/packages/reffuse/src/Reffuse.ts index 2561a4d..6a98c06 100644 --- a/packages/reffuse/src/Reffuse.ts +++ b/packages/reffuse/src/Reffuse.ts @@ -198,7 +198,7 @@ export interface ScopeOptions { export const make = < - const Contexts extends readonly ReffuseContext.ReffuseContext[] + const Contexts extends readonly (ReffuseContext.ReffuseContext | ReffuseContext.ReffuseContext)[] >( ...contexts: Contexts ): Reffuse<{ [K in keyof Contexts]: ReffuseContext.R }[number]> =>