4b712de788
## Summary - Rename `effect-fc-next` to `effect-view` and update package metadata, internal symbols, imports, and repository references. - Promote the Effect 4 example to `packages/example` and move the legacy Effect 3 example to `packages/effect-fc-example`. - Add `effect-view` to the npm publishing workflow. - Update the Vite Fast Refresh plugin for `effect-view` and rename `effectViewPlugin()` to `effectView()`. - Upgrade Effect, React, TypeScript, build tooling, and related dependencies. - Refresh the documentation and homepage. ## Documentation - Add a dedicated Async guide covering: - Suspense fallbacks - Hook ordering - Memoization - Structural prop equality - Clarify synchronous and asynchronous component behavior. - Document runner scope and service requirements. - Explain stable construction of Query, Mutation, and Form instances. - Expand focused Lens and Form examples, including curried focus helpers. - Document the optional `@effect/platform-browser` dependency for window-focus query refresh. - Improve the Forms guide structure and examples. - Fix responsive homepage headline wrapping and update homepage copy. ## Notable API changes - Package rename: ```diff - effect-fc-next + effect-view --------- Co-authored-by: Julien Valverdé <julien.valverde@mailo.com> Reviewed-on: #59
39 lines
1.2 KiB
TypeScript
39 lines
1.2 KiB
TypeScript
import { DateTime, Effect, Option, ParseResult, Schema } from "effect"
|
|
|
|
|
|
export class DateTimeUtcFromZoned extends Schema.transformOrFail(
|
|
Schema.DateTimeZonedFromSelf,
|
|
Schema.DateTimeUtcFromSelf,
|
|
{
|
|
strict: true,
|
|
encode: DateTime.setZoneCurrent,
|
|
decode: i => ParseResult.succeed(DateTime.toUtc(i)),
|
|
},
|
|
) {}
|
|
|
|
export class DateTimeZonedFromUtc extends Schema.transformOrFail(
|
|
Schema.DateTimeUtcFromSelf,
|
|
Schema.DateTimeZonedFromSelf,
|
|
{
|
|
strict: true,
|
|
encode: a => ParseResult.succeed(DateTime.toUtc(a)),
|
|
decode: DateTime.setZoneCurrent,
|
|
},
|
|
) {}
|
|
|
|
export class DateTimeUtcFromZonedInput extends Schema.transformOrFail(
|
|
Schema.String,
|
|
DateTimeUtcFromZoned,
|
|
{
|
|
strict: true,
|
|
encode: a => ParseResult.succeed(DateTime.formatIsoZoned(a).slice(0, 16)),
|
|
decode: (i, _, ast) => Effect.flatMap(
|
|
DateTime.CurrentTimeZone,
|
|
timeZone => Option.match(DateTime.makeZoned(i, { timeZone, adjustForTimeZone: true }), {
|
|
onSome: ParseResult.succeed,
|
|
onNone: () => ParseResult.fail(new ParseResult.Type(ast, i, `Unable to decode ${JSON.stringify(i)} into a DateTime.Zoned`)),
|
|
}),
|
|
),
|
|
},
|
|
) {}
|