Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 10 additions & 9 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,15 +4,16 @@ Monorepo of utilities for integrating [Effect](https://effect.website/) with dif

## Packages

| Package | Version | Documentation | Description |
| -------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------- | ---------------------------------------------------------------------------- |
| [@effectify/solid-query](https://www.npmjs.com/package/@effectify/solid-query) | [![npm version](https://img.shields.io/npm/v/@effectify/solid-query.svg)](https://www.npmjs.com/package/@effectify/solid-query) | [Docs](./packages/solid/query/README.md) | Integration of Effect with TanStack Query for Solid.js |
| [@effectify/react-query](https://www.npmjs.com/package/@effectify/react-query) | [![npm version](https://img.shields.io/npm/v/@effectify/react-query.svg)](https://www.npmjs.com/package/@effectify/react-query) | [Docs](./packages/react/query/README.md) | Integration of Effect with TanStack Query for React |
| [@effectify/react-router](https://www.npmjs.com/package/@effectify/react-router) | [![npm version](https://img.shields.io/npm/v/@effectify/react-router.svg)](https://www.npmjs.com/package/@effectify/react-router) | [Docs](./packages/react/router/README.md) | Integration of React Router with Effect for React applications |
| [@effectify/react-remix](https://www.npmjs.com/package/@effectify/react-remix) | [![npm version](https://img.shields.io/npm/v/@effectify/react-remix.svg)](https://www.npmjs.com/package/@effectify/react-remix) | [Docs](./packages/react/remix/README.md) | Integration of Remix with Effect for React applications |
| [@effectify/node-better-auth](https://www.npmjs.com/package/@effectify/node-better-auth) | [![npm version](https://img.shields.io/npm/v/@effectify/node-better-auth.svg)](https://www.npmjs.com/package/@effectify/node-better-auth) | [Docs](./packages/node/better-auth/README.md) | Integration of better-auth with Effect for Node.js applications |
| [@effectify/react-router-better-auth](https://www.npmjs.com/package/@effectify/react-router-better-auth) | [![npm version](https://img.shields.io/npm/v/@effectify/react-router-better-auth.svg)](https://www.npmjs.com/package/@effectify/react-router-better-auth) | [Docs](./packages/react/router-better-auth/) | Integration of React Router + better-auth with Effect for React applications |
| [@effectify/prisma](https://www.npmjs.com/package/@effectify/prisma) | [![npm version](https://img.shields.io/npm/v/@effectify/prisma.svg)](https://www.npmjs.com/package/@effectify/prisma) | [Docs](./packages/prisma/README.md) | Prisma generator and runtime utilities for Effect |
| Package | Version | Documentation | Description |
| -------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------- | ---------------------------------------------------------------------------- |
| [@effectify/solid-query](https://www.npmjs.com/package/@effectify/solid-query) | [![npm version](https://img.shields.io/npm/v/@effectify/solid-query.svg)](https://www.npmjs.com/package/@effectify/solid-query) | [Docs](./packages/solid/query/README.md) | Integration of Effect with TanStack Query for Solid.js |
| [@effectify/react-query](https://www.npmjs.com/package/@effectify/react-query) | [![npm version](https://img.shields.io/npm/v/@effectify/react-query.svg)](https://www.npmjs.com/package/@effectify/react-query) | [Docs](./packages/react/query/README.md) | Integration of Effect with TanStack Query for React |
| [@effectify/react-router](https://www.npmjs.com/package/@effectify/react-router) | [![npm version](https://img.shields.io/npm/v/@effectify/react-router.svg)](https://www.npmjs.com/package/@effectify/react-router) | [Docs](./packages/react/router/README.md) | Integration of React Router with Effect for React applications |
| [@effectify/react-remix](https://www.npmjs.com/package/@effectify/react-remix) | [![npm version](https://img.shields.io/npm/v/@effectify/react-remix.svg)](https://www.npmjs.com/package/@effectify/react-remix) | [Docs](./packages/react/remix/README.md) | Integration of Remix with Effect for React applications |
| [@effectify/node-better-auth](https://www.npmjs.com/package/@effectify/node-better-auth) | [![npm version](https://img.shields.io/npm/v/@effectify/node-better-auth.svg)](https://www.npmjs.com/package/@effectify/node-better-auth) | [Docs](./packages/node/better-auth/README.md) | Integration of better-auth with Effect for Node.js applications |
| [@effectify/react-router-better-auth](https://www.npmjs.com/package/@effectify/react-router-better-auth) | [![npm version](https://img.shields.io/npm/v/@effectify/react-router-better-auth.svg)](https://www.npmjs.com/package/@effectify/react-router-better-auth) | [Docs](./packages/react/router-better-auth/) | Integration of React Router + better-auth with Effect for React applications |
| [@effectify/prisma](https://www.npmjs.com/package/@effectify/prisma) | [![npm version](https://img.shields.io/npm/v/@effectify/prisma.svg)](https://www.npmjs.com/package/@effectify/prisma) | [Docs](./packages/prisma/README.md) | Prisma generator and runtime utilities for Effect |
| [@effectify/solid-effect-atom](https://www.npmjs.com/package/@effectify/solid-effect-atom) | [![npm version](https://img.shields.io/npm/v/@effectify/solid-effect-atom.svg)](https://www.npmjs.com/package/@effectify/solid-effect-atom) | [Docs](./packages/solid/effect-atom/README.md) | Reactive toolkit for Effect with SolidJS |

## Development

Expand Down
6 changes: 3 additions & 3 deletions packages/solid/effect-atom/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@
},
"sideEffects": [],
"devDependencies": {
"@effect-atom/atom": "catalog:",
"@solidjs/testing-library": "catalog:",
"@testing-library/jest-dom": "catalog:",
"@types/node": "catalog:",
Expand All @@ -45,12 +46,11 @@
"vite-plugin-solid": "catalog:"
},
"peerDependencies": {
"@effect-atom/atom": "^0.5.0",
"effect": "^3.19.16",
"solid-js": "^1.9.11"
},
"dependencies": {
"@effect-atom/atom": "catalog:"
},
"dependencies": {},
"packageManager": "pnpm@10.14.0",
"optionalDependencies": {}
}
4 changes: 2 additions & 2 deletions packages/solid/effect-atom/src/solid-hydration.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ import { useRegistry } from "./context.js"
* @since 1.0.0
* @category utils
*/
function isHydrationDataNewer(existingNode: any, dehydratedAtom: Hydration.DehydratedAtom): boolean {
function isHydrationDataNewer(existingNode: any, dehydratedAtom: Hydration.DehydratedAtomValue): boolean {
try {
const currentValue = existingNode.value()

Expand Down Expand Up @@ -74,7 +74,7 @@ export function HydrationBoundary(props: HydrationBoundaryProps) {
const hydrationQueue = createMemo(() => {
const state = props.state
if (state) {
const dehydratedAtoms = Array.from(state)
const dehydratedAtoms = Hydration.toValues(Array.from(state))
const nodes = registry.getNodes()

const newDehydratedAtoms: Array<Hydration.DehydratedAtom> = []
Expand Down
9 changes: 5 additions & 4 deletions packages/solid/effect-atom/src/ssr-utils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -127,12 +127,13 @@ export const preloadAtoms = (
yield* Effect.all(preloadEffects, { concurrency: "unbounded" })

// Dehydrate the registry state
const dehydratedState = Array.from(Hydration.dehydrate(registry))
const dehydratedStateRaw = Array.from(Hydration.dehydrate(registry))
const dehydratedStateValues = Hydration.toValues(dehydratedStateRaw)

// Filter out errors if not including them
const finalDehydratedState = includeErrors
? dehydratedState
: dehydratedState.filter((atom) => !errors.some((error) => error.atomKey === atom.key))
? dehydratedStateValues
: dehydratedStateValues.filter((atom) => !errors.some((error) => error.atomKey === atom.key))

return {
dehydratedState: finalDehydratedState,
Expand Down Expand Up @@ -183,7 +184,7 @@ export const createServerRegistry = (
key,
value,
dehydratedAt: Date.now(),
}))
})) as unknown as Array<Hydration.DehydratedAtom>

Hydration.hydrate(registry, dehydratedAtoms)
}
Expand Down
23 changes: 11 additions & 12 deletions pnpm-lock.yaml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion pnpm-workspace.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ catalog:
"@corvu/drawer": 0.2.4
"@dprint/formatter": ^0.5.1
"@dprint/typescript": ^0.95.15
"@effect-atom/atom": 0.4.3
"@effect-atom/atom": 0.5.0
"@effect/build-utils": 0.8.9
"@effect/cli": 0.73.2
"@effect/experimental": 0.58.0
Expand Down