Tests
All checks were successful
Lint / lint (push) Successful in 14s

This commit is contained in:
Julien Valverdé
2025-06-25 02:40:54 +02:00
parent d81a9fcd91
commit 7d220cb61a
2 changed files with 68 additions and 0 deletions

View File

@@ -16,6 +16,7 @@ import { Route as TimeImport } from './routes/time'
import { Route as TestsImport } from './routes/tests' import { Route as TestsImport } from './routes/tests'
import { Route as PromiseImport } from './routes/promise' import { Route as PromiseImport } from './routes/promise'
import { Route as LazyrefImport } from './routes/lazyref' import { Route as LazyrefImport } from './routes/lazyref'
import { Route as EffectComponentTestsImport } from './routes/effect-component-tests'
import { Route as CountImport } from './routes/count' import { Route as CountImport } from './routes/count'
import { Route as BlankImport } from './routes/blank' import { Route as BlankImport } from './routes/blank'
import { Route as IndexImport } from './routes/index' import { Route as IndexImport } from './routes/index'
@@ -56,6 +57,12 @@ const LazyrefRoute = LazyrefImport.update({
getParentRoute: () => rootRoute, getParentRoute: () => rootRoute,
} as any) } as any)
const EffectComponentTestsRoute = EffectComponentTestsImport.update({
id: '/effect-component-tests',
path: '/effect-component-tests',
getParentRoute: () => rootRoute,
} as any)
const CountRoute = CountImport.update({ const CountRoute = CountImport.update({
id: '/count', id: '/count',
path: '/count', path: '/count',
@@ -123,6 +130,13 @@ declare module '@tanstack/react-router' {
preLoaderRoute: typeof CountImport preLoaderRoute: typeof CountImport
parentRoute: typeof rootRoute parentRoute: typeof rootRoute
} }
'/effect-component-tests': {
id: '/effect-component-tests'
path: '/effect-component-tests'
fullPath: '/effect-component-tests'
preLoaderRoute: typeof EffectComponentTestsImport
parentRoute: typeof rootRoute
}
'/lazyref': { '/lazyref': {
id: '/lazyref' id: '/lazyref'
path: '/lazyref' path: '/lazyref'
@@ -195,6 +209,7 @@ export interface FileRoutesByFullPath {
'/': typeof IndexRoute '/': typeof IndexRoute
'/blank': typeof BlankRoute '/blank': typeof BlankRoute
'/count': typeof CountRoute '/count': typeof CountRoute
'/effect-component-tests': typeof EffectComponentTestsRoute
'/lazyref': typeof LazyrefRoute '/lazyref': typeof LazyrefRoute
'/promise': typeof PromiseRoute '/promise': typeof PromiseRoute
'/tests': typeof TestsRoute '/tests': typeof TestsRoute
@@ -210,6 +225,7 @@ export interface FileRoutesByTo {
'/': typeof IndexRoute '/': typeof IndexRoute
'/blank': typeof BlankRoute '/blank': typeof BlankRoute
'/count': typeof CountRoute '/count': typeof CountRoute
'/effect-component-tests': typeof EffectComponentTestsRoute
'/lazyref': typeof LazyrefRoute '/lazyref': typeof LazyrefRoute
'/promise': typeof PromiseRoute '/promise': typeof PromiseRoute
'/tests': typeof TestsRoute '/tests': typeof TestsRoute
@@ -226,6 +242,7 @@ export interface FileRoutesById {
'/': typeof IndexRoute '/': typeof IndexRoute
'/blank': typeof BlankRoute '/blank': typeof BlankRoute
'/count': typeof CountRoute '/count': typeof CountRoute
'/effect-component-tests': typeof EffectComponentTestsRoute
'/lazyref': typeof LazyrefRoute '/lazyref': typeof LazyrefRoute
'/promise': typeof PromiseRoute '/promise': typeof PromiseRoute
'/tests': typeof TestsRoute '/tests': typeof TestsRoute
@@ -243,6 +260,7 @@ export interface FileRouteTypes {
| '/' | '/'
| '/blank' | '/blank'
| '/count' | '/count'
| '/effect-component-tests'
| '/lazyref' | '/lazyref'
| '/promise' | '/promise'
| '/tests' | '/tests'
@@ -257,6 +275,7 @@ export interface FileRouteTypes {
| '/' | '/'
| '/blank' | '/blank'
| '/count' | '/count'
| '/effect-component-tests'
| '/lazyref' | '/lazyref'
| '/promise' | '/promise'
| '/tests' | '/tests'
@@ -271,6 +290,7 @@ export interface FileRouteTypes {
| '/' | '/'
| '/blank' | '/blank'
| '/count' | '/count'
| '/effect-component-tests'
| '/lazyref' | '/lazyref'
| '/promise' | '/promise'
| '/tests' | '/tests'
@@ -287,6 +307,7 @@ export interface RootRouteChildren {
IndexRoute: typeof IndexRoute IndexRoute: typeof IndexRoute
BlankRoute: typeof BlankRoute BlankRoute: typeof BlankRoute
CountRoute: typeof CountRoute CountRoute: typeof CountRoute
EffectComponentTestsRoute: typeof EffectComponentTestsRoute
LazyrefRoute: typeof LazyrefRoute LazyrefRoute: typeof LazyrefRoute
PromiseRoute: typeof PromiseRoute PromiseRoute: typeof PromiseRoute
TestsRoute: typeof TestsRoute TestsRoute: typeof TestsRoute
@@ -302,6 +323,7 @@ const rootRouteChildren: RootRouteChildren = {
IndexRoute: IndexRoute, IndexRoute: IndexRoute,
BlankRoute: BlankRoute, BlankRoute: BlankRoute,
CountRoute: CountRoute, CountRoute: CountRoute,
EffectComponentTestsRoute: EffectComponentTestsRoute,
LazyrefRoute: LazyrefRoute, LazyrefRoute: LazyrefRoute,
PromiseRoute: PromiseRoute, PromiseRoute: PromiseRoute,
TestsRoute: TestsRoute, TestsRoute: TestsRoute,
@@ -326,6 +348,7 @@ export const routeTree = rootRoute
"/", "/",
"/blank", "/blank",
"/count", "/count",
"/effect-component-tests",
"/lazyref", "/lazyref",
"/promise", "/promise",
"/tests", "/tests",
@@ -346,6 +369,9 @@ export const routeTree = rootRoute
"/count": { "/count": {
"filePath": "count.tsx" "filePath": "count.tsx"
}, },
"/effect-component-tests": {
"filePath": "effect-component-tests.tsx"
},
"/lazyref": { "/lazyref": {
"filePath": "lazyref.tsx" "filePath": "lazyref.tsx"
}, },

View File

@@ -0,0 +1,42 @@
import { Box, Text, TextField } from "@radix-ui/themes"
import { createFileRoute } from "@tanstack/react-router"
import { Console, Effect, Runtime } from "effect"
import * as React from "react"
export const Route = createFileRoute("/effect-component-tests")({
component: RouteComponent,
})
function RouteComponent() {
return Effect.runSync(MyTestComponent)
}
const MyTestComponent = Effect.gen(function*() {
const [state, setState] = React.useState("value")
const effectValue = yield* Effect.succeed(`state: ${ state }`)
yield* useEffect(() => Console.log("ouient"), [state])
return <>
<Text>{effectValue}</Text>
<Box>
<TextField.Root
value={state}
onChange={e => setState(e.target.value)}
/>
</Box>
</>
})
const useEffect = <A, E, R>(
effect: () => Effect.Effect<A, E, R>,
deps?: React.DependencyList,
): Effect.Effect<void, never, R> => Effect.gen(function* useEffect() {
const runtime = yield* Effect.runtime<R>()
React.useEffect(() => Runtime.runSync(runtime)(Effect.asVoid(effect())), deps)
})