@typed/template 0.6.0 → 0.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/ElementRef.js.map +1 -1
- package/dist/cjs/ElementSource.js.map +1 -1
- package/dist/cjs/Html.js +12 -2
- package/dist/cjs/Html.js.map +1 -1
- package/dist/cjs/Hydrate.js +15 -7
- package/dist/cjs/Hydrate.js.map +1 -1
- package/dist/cjs/Many.js.map +1 -1
- package/dist/cjs/Render.js +17 -7
- package/dist/cjs/Render.js.map +1 -1
- package/dist/cjs/RenderTemplate.js.map +1 -1
- package/dist/cjs/Test.js +10 -5
- package/dist/cjs/Test.js.map +1 -1
- package/dist/cjs/internal/hydrate.js +10 -5
- package/dist/cjs/internal/hydrate.js.map +1 -1
- package/dist/cjs/internal/parts.js.map +1 -1
- package/dist/cjs/internal/render.js +8 -5
- package/dist/cjs/internal/render.js.map +1 -1
- package/dist/cjs/internal/server.js +2 -6
- package/dist/cjs/internal/server.js.map +1 -1
- package/dist/dts/Directive.d.ts +13 -13
- package/dist/dts/Directive.d.ts.map +1 -1
- package/dist/dts/ElementRef.d.ts +2 -2
- package/dist/dts/ElementRef.d.ts.map +1 -1
- package/dist/dts/ElementSource.d.ts +4 -4
- package/dist/dts/ElementSource.d.ts.map +1 -1
- package/dist/dts/EventHandler.d.ts +11 -11
- package/dist/dts/EventHandler.d.ts.map +1 -1
- package/dist/dts/Html.d.ts +13 -3
- package/dist/dts/Html.d.ts.map +1 -1
- package/dist/dts/Hydrate.d.ts +12 -4
- package/dist/dts/Hydrate.d.ts.map +1 -1
- package/dist/dts/Many.d.ts +8 -8
- package/dist/dts/Many.d.ts.map +1 -1
- package/dist/dts/Part.d.ts +1 -1
- package/dist/dts/Part.d.ts.map +1 -1
- package/dist/dts/Placeholder.d.ts +6 -6
- package/dist/dts/Placeholder.d.ts.map +1 -1
- package/dist/dts/Platform.d.ts +1 -1
- package/dist/dts/Platform.d.ts.map +1 -1
- package/dist/dts/Render.d.ts +16 -5
- package/dist/dts/Render.d.ts.map +1 -1
- package/dist/dts/RenderTemplate.d.ts +2 -2
- package/dist/dts/RenderTemplate.d.ts.map +1 -1
- package/dist/dts/Renderable.d.ts +3 -3
- package/dist/dts/Renderable.d.ts.map +1 -1
- package/dist/dts/Test.d.ts +10 -14
- package/dist/dts/Test.d.ts.map +1 -1
- package/dist/dts/internal/EventSource.d.ts +1 -1
- package/dist/dts/internal/EventSource.d.ts.map +1 -1
- package/dist/dts/internal/hydrate.d.ts.map +1 -1
- package/dist/dts/internal/module-augmentation.d.ts +13 -13
- package/dist/dts/internal/module-augmentation.d.ts.map +1 -1
- package/dist/dts/internal/parts.d.ts +2 -2
- package/dist/dts/internal/parts.d.ts.map +1 -1
- package/dist/dts/internal/render.d.ts.map +1 -1
- package/dist/dts/internal/server.d.ts.map +1 -1
- package/dist/esm/ElementRef.js.map +1 -1
- package/dist/esm/ElementSource.js.map +1 -1
- package/dist/esm/Html.js +13 -2
- package/dist/esm/Html.js.map +1 -1
- package/dist/esm/Hydrate.js +11 -5
- package/dist/esm/Hydrate.js.map +1 -1
- package/dist/esm/Many.js.map +1 -1
- package/dist/esm/Render.js +13 -5
- package/dist/esm/Render.js.map +1 -1
- package/dist/esm/RenderTemplate.js.map +1 -1
- package/dist/esm/Test.js +12 -7
- package/dist/esm/Test.js.map +1 -1
- package/dist/esm/internal/hydrate.js +9 -6
- package/dist/esm/internal/hydrate.js.map +1 -1
- package/dist/esm/internal/parts.js.map +1 -1
- package/dist/esm/internal/render.js +7 -6
- package/dist/esm/internal/render.js.map +1 -1
- package/dist/esm/internal/server.js +2 -6
- package/dist/esm/internal/server.js.map +1 -1
- package/package.json +5 -5
- package/src/Directive.ts +19 -19
- package/src/ElementRef.ts +6 -6
- package/src/ElementSource.ts +16 -16
- package/src/EventHandler.ts +11 -11
- package/src/Html.ts +56 -37
- package/src/Hydrate.ts +41 -14
- package/src/Many.ts +26 -26
- package/src/Part.ts +1 -1
- package/src/Placeholder.ts +13 -13
- package/src/Platform.ts +3 -3
- package/src/Render.ts +52 -15
- package/src/RenderTemplate.ts +2 -6
- package/src/Renderable.ts +5 -5
- package/src/Test.ts +30 -20
- package/src/internal/EventSource.ts +1 -1
- package/src/internal/hydrate.ts +10 -11
- package/src/internal/module-augmentation.ts +15 -15
- package/src/internal/parts.ts +1 -1
- package/src/internal/render.ts +15 -16
- package/src/internal/server.ts +0 -2
package/src/Test.ts
CHANGED
|
@@ -2,15 +2,16 @@
|
|
|
2
2
|
* @since 1.0.0
|
|
3
3
|
*/
|
|
4
4
|
import type { Document } from "@typed/dom/Document"
|
|
5
|
-
import type
|
|
6
|
-
import
|
|
7
|
-
import
|
|
5
|
+
import { type DomServices, domServices, type DomServicesElementParams } from "@typed/dom/DomServices"
|
|
6
|
+
import { GlobalThis } from "@typed/dom/GlobalThis"
|
|
7
|
+
import { Window } from "@typed/dom/Window"
|
|
8
8
|
import type { CurrentEnvironment } from "@typed/environment"
|
|
9
9
|
import * as Fx from "@typed/fx/Fx"
|
|
10
10
|
import * as RefArray from "@typed/fx/RefArray"
|
|
11
11
|
import * as RefSubject from "@typed/fx/RefSubject"
|
|
12
12
|
import * as Sink from "@typed/fx/Sink"
|
|
13
13
|
import { type Rendered } from "@typed/wire"
|
|
14
|
+
import { Layer } from "effect"
|
|
14
15
|
import * as Cause from "effect/Cause"
|
|
15
16
|
import * as Effect from "effect/Effect"
|
|
16
17
|
import * as Either from "effect/Either"
|
|
@@ -18,11 +19,11 @@ import * as Fiber from "effect/Fiber"
|
|
|
18
19
|
import type * as Scope from "effect/Scope"
|
|
19
20
|
import * as ElementRef from "./ElementRef.js"
|
|
20
21
|
import { ROOT_CSS_SELECTOR } from "./ElementSource.js"
|
|
21
|
-
import { renderToHtmlString } from "./Html.js"
|
|
22
|
-
import { hydrate } from "./Hydrate.js"
|
|
22
|
+
import { renderToHtmlString, serverLayer } from "./Html.js"
|
|
23
|
+
import { hydrate, hydrateLayer } from "./Hydrate.js"
|
|
23
24
|
import { adjustTime, isCommentWithValue } from "./internal/utils.js"
|
|
24
|
-
import { render } from "./Render.js"
|
|
25
|
-
import * as RenderContext from "./RenderContext.js"
|
|
25
|
+
import { render, renderLayer } from "./Render.js"
|
|
26
|
+
import type * as RenderContext from "./RenderContext.js"
|
|
26
27
|
import type { RenderEvent } from "./RenderEvent.js"
|
|
27
28
|
import type { RenderTemplate } from "./RenderTemplate.js"
|
|
28
29
|
|
|
@@ -42,8 +43,8 @@ export interface TestRender<E> {
|
|
|
42
43
|
readonly window: Window & GlobalThis
|
|
43
44
|
readonly document: Document
|
|
44
45
|
readonly elementRef: ElementRef.ElementRef
|
|
45
|
-
readonly errors: RefSubject.Computed<
|
|
46
|
-
readonly lastError: RefSubject.Filtered<
|
|
46
|
+
readonly errors: RefSubject.Computed<ReadonlyArray<E>>
|
|
47
|
+
readonly lastError: RefSubject.Filtered<E>
|
|
47
48
|
readonly interrupt: Effect.Effect<void>
|
|
48
49
|
readonly makeEvent: (type: string, eventInitDict?: EventInit) => Event
|
|
49
50
|
readonly makeCustomEvent: <A>(type: string, eventInitDict?: CustomEventInit<A>) => CustomEvent<A>
|
|
@@ -54,20 +55,20 @@ export interface TestRender<E> {
|
|
|
54
55
|
/**
|
|
55
56
|
* @since 1.0.0
|
|
56
57
|
*/
|
|
57
|
-
export function testRender<
|
|
58
|
-
fx: Fx.Fx<
|
|
58
|
+
export function testRender<E, R>(
|
|
59
|
+
fx: Fx.Fx<RenderEvent, E, R>,
|
|
59
60
|
options?:
|
|
60
61
|
& HappyDOMOptions
|
|
61
62
|
& { readonly [K in keyof DomServicesElementParams]?: (document: Document) => DomServicesElementParams[K] }
|
|
62
63
|
): Effect.Effect<
|
|
63
64
|
TestRender<E>,
|
|
64
65
|
never,
|
|
65
|
-
Scope.Scope | Exclude<
|
|
66
|
+
Scope.Scope | Exclude<R, RenderTemplate | RenderContext.RenderContext | CurrentEnvironment | DomServices>
|
|
66
67
|
> {
|
|
67
68
|
return Effect.gen(function*(_) {
|
|
68
69
|
const window = yield* _(getOrMakeWindow(options))
|
|
69
70
|
const elementRef = yield* _(ElementRef.make())
|
|
70
|
-
const errors = yield* _(RefSubject.make<
|
|
71
|
+
const errors = yield* _(RefSubject.make<ReadonlyArray<E>>(Effect.succeed([])))
|
|
71
72
|
const fiber = yield* _(
|
|
72
73
|
fx,
|
|
73
74
|
render,
|
|
@@ -83,7 +84,7 @@ export function testRender<R, E>(
|
|
|
83
84
|
(rendered) => ElementRef.set(elementRef, rendered)
|
|
84
85
|
)),
|
|
85
86
|
Effect.forkScoped,
|
|
86
|
-
Effect.provide(
|
|
87
|
+
Effect.provide(renderLayer(window, { skipRenderScheduling: true }))
|
|
87
88
|
)
|
|
88
89
|
|
|
89
90
|
const test: TestRender<E> = {
|
|
@@ -187,19 +188,28 @@ export interface TestHydrate<E, Elements> extends TestRender<E> {
|
|
|
187
188
|
* @since 1.0.0
|
|
188
189
|
*/
|
|
189
190
|
export function testHydrate<R, E, Elements>(
|
|
190
|
-
fx: Fx.Fx<
|
|
191
|
+
fx: Fx.Fx<RenderEvent, E, R>,
|
|
191
192
|
f: (rendered: Rendered, window: Window & GlobalThis) => Elements,
|
|
192
193
|
options?:
|
|
193
194
|
& HappyDOMOptions
|
|
194
195
|
& { readonly [K in keyof DomServicesElementParams]?: (document: Document) => DomServicesElementParams[K] }
|
|
195
|
-
)
|
|
196
|
+
): Effect.Effect<
|
|
197
|
+
TestHydrate<E, Elements>,
|
|
198
|
+
E,
|
|
199
|
+
Scope.Scope | Exclude<R, RenderTemplate | RenderContext.RenderContext | CurrentEnvironment | DomServices>
|
|
200
|
+
> {
|
|
196
201
|
return Effect.gen(function*(_) {
|
|
197
202
|
const window = yield* _(getOrMakeWindow(options))
|
|
198
203
|
const { body } = window.document
|
|
199
204
|
|
|
200
205
|
const html = yield* _(
|
|
201
206
|
renderToHtmlString(fx),
|
|
202
|
-
Effect.provide(
|
|
207
|
+
Effect.provide(serverLayer.pipe(
|
|
208
|
+
// Add DomServices to the layer for the types
|
|
209
|
+
Layer.provideMerge(domServices()),
|
|
210
|
+
Layer.provideMerge(Window.layer(window)),
|
|
211
|
+
Layer.provideMerge(GlobalThis.layer(window))
|
|
212
|
+
))
|
|
203
213
|
)
|
|
204
214
|
|
|
205
215
|
body.innerHTML = html
|
|
@@ -218,7 +228,7 @@ export function testHydrate<R, E, Elements>(
|
|
|
218
228
|
const elements = f(rendered.length === 1 ? rendered[0] : rendered, window)
|
|
219
229
|
|
|
220
230
|
const elementRef = yield* _(ElementRef.make())
|
|
221
|
-
const errors = yield* _(RefSubject.make<
|
|
231
|
+
const errors = yield* _(RefSubject.make<ReadonlyArray<E>>(Effect.succeed([])))
|
|
222
232
|
const fiber = yield* _(
|
|
223
233
|
fx,
|
|
224
234
|
hydrate,
|
|
@@ -233,8 +243,8 @@ export function testHydrate<R, E, Elements>(
|
|
|
233
243
|
),
|
|
234
244
|
(rendered) => ElementRef.set(elementRef, rendered)
|
|
235
245
|
)),
|
|
236
|
-
Effect.
|
|
237
|
-
Effect.
|
|
246
|
+
Effect.provide(hydrateLayer(window, { skipRenderScheduling: true })),
|
|
247
|
+
Effect.forkScoped
|
|
238
248
|
)
|
|
239
249
|
|
|
240
250
|
const test: TestHydrate<E, Elements> = {
|
|
@@ -7,7 +7,7 @@ import type { EventHandler } from "../EventHandler.js"
|
|
|
7
7
|
|
|
8
8
|
type EventName = string
|
|
9
9
|
|
|
10
|
-
type Handler<Ev extends Event> = EventHandler<
|
|
10
|
+
type Handler<Ev extends Event> = EventHandler<Ev>
|
|
11
11
|
|
|
12
12
|
export interface EventSource {
|
|
13
13
|
readonly addEventListener: <Ev extends Event>(
|
package/src/internal/hydrate.ts
CHANGED
|
@@ -10,7 +10,7 @@ import { indexRefCounter2 } from "./indexRefCounter.js"
|
|
|
10
10
|
|
|
11
11
|
import { unsafeGet } from "@typed/context"
|
|
12
12
|
|
|
13
|
-
import { Either, ExecutionStrategy, Exit } from "effect"
|
|
13
|
+
import { Either, ExecutionStrategy, Exit, Runtime } from "effect"
|
|
14
14
|
import * as Scope from "effect/Scope"
|
|
15
15
|
import type { Template } from "../Template.js"
|
|
16
16
|
import { CouldNotFindCommentError, CouldNotFindManyCommentError, CouldNotFindRootElement } from "./errors.js"
|
|
@@ -40,16 +40,13 @@ export const hydrateTemplate: (document: Document, ctx: RenderContext) => Render
|
|
|
40
40
|
return <Values extends ReadonlyArray<Renderable<any, any>>>(
|
|
41
41
|
templateStrings: TemplateStringsArray,
|
|
42
42
|
values: Values
|
|
43
|
-
): Fx.Fx<
|
|
44
|
-
Scope.Scope | Placeholder.Context<Values[number]>,
|
|
45
|
-
Placeholder.Error<Values[number]>,
|
|
46
|
-
RenderEvent
|
|
47
|
-
> => {
|
|
43
|
+
): Fx.Fx<RenderEvent, Placeholder.Error<Values[number]>, Scope.Scope | Placeholder.Context<Values[number]>> => {
|
|
48
44
|
return Fx.make((sink) =>
|
|
49
45
|
Effect.gen(function*(_) {
|
|
50
|
-
const
|
|
51
|
-
const
|
|
52
|
-
const
|
|
46
|
+
const runtime = yield* _(Effect.runtime<Placeholder.Context<Values[number]> | Scope.Scope>())
|
|
47
|
+
const runFork = Runtime.runFork(runtime)
|
|
48
|
+
const hydrateCtx = unsafeGet(runtime.context, HydrateContext)
|
|
49
|
+
const parentScope = unsafeGet(runtime.context, Scope.Scope)
|
|
53
50
|
const scope = yield* _(Scope.fork(parentScope, ExecutionStrategy.sequential))
|
|
54
51
|
|
|
55
52
|
// If we're not longer hydrating, just render normally
|
|
@@ -82,7 +79,7 @@ export const hydrateTemplate: (document: Document, ctx: RenderContext) => Render
|
|
|
82
79
|
|
|
83
80
|
const refCounter = yield* _(indexRefCounter2())
|
|
84
81
|
const ctx: RenderPartContext = {
|
|
85
|
-
context,
|
|
82
|
+
context: runtime.context,
|
|
86
83
|
document,
|
|
87
84
|
eventSource: makeEventSource(),
|
|
88
85
|
expected: 0,
|
|
@@ -109,7 +106,9 @@ export const hydrateTemplate: (document: Document, ctx: RenderContext) => Render
|
|
|
109
106
|
|
|
110
107
|
// Fork any effects necessary
|
|
111
108
|
if (effects.length > 0) {
|
|
112
|
-
|
|
109
|
+
for (let i = 0; i < effects.length; i++) {
|
|
110
|
+
runFork(effects[i], { scope })
|
|
111
|
+
}
|
|
113
112
|
}
|
|
114
113
|
|
|
115
114
|
// Set the element when it is ready
|
|
@@ -1,44 +1,44 @@
|
|
|
1
1
|
import type { Placeholder } from "../Placeholder.js"
|
|
2
2
|
|
|
3
3
|
declare global {
|
|
4
|
-
export interface String extends Placeholder<
|
|
4
|
+
export interface String extends Placeholder<string> {}
|
|
5
5
|
|
|
6
|
-
export interface Number extends Placeholder<
|
|
6
|
+
export interface Number extends Placeholder<number> {}
|
|
7
7
|
|
|
8
|
-
export interface Boolean extends Placeholder<
|
|
8
|
+
export interface Boolean extends Placeholder<boolean> {}
|
|
9
9
|
|
|
10
|
-
export interface Symbol extends Placeholder<
|
|
10
|
+
export interface Symbol extends Placeholder<symbol> {}
|
|
11
11
|
|
|
12
|
-
export interface BigInt extends Placeholder<
|
|
12
|
+
export interface BigInt extends Placeholder<bigint> {}
|
|
13
13
|
|
|
14
14
|
export interface Array<T> extends
|
|
15
15
|
Placeholder<
|
|
16
|
-
Placeholder.
|
|
16
|
+
Array<Placeholder.Success<T>>,
|
|
17
17
|
Placeholder.Error<T>,
|
|
18
|
-
|
|
18
|
+
Placeholder.Context<T>
|
|
19
19
|
>
|
|
20
20
|
{}
|
|
21
21
|
|
|
22
22
|
export interface ReadonlyArray<T> extends
|
|
23
23
|
Placeholder<
|
|
24
|
-
Placeholder.
|
|
24
|
+
ReadonlyArray<Placeholder.Success<T>>,
|
|
25
25
|
Placeholder.Error<T>,
|
|
26
|
-
|
|
26
|
+
Placeholder.Context<T>
|
|
27
27
|
>
|
|
28
28
|
{}
|
|
29
29
|
|
|
30
30
|
// DOM types
|
|
31
|
-
export interface Node extends Placeholder<
|
|
31
|
+
export interface Node extends Placeholder<Node> {}
|
|
32
32
|
|
|
33
|
-
export interface DocumentFragment extends Placeholder<
|
|
33
|
+
export interface DocumentFragment extends Placeholder<DocumentFragment> {}
|
|
34
34
|
|
|
35
|
-
export interface Element extends Placeholder<
|
|
35
|
+
export interface Element extends Placeholder<Element> {}
|
|
36
36
|
|
|
37
|
-
export interface HTMLElement extends Placeholder<
|
|
37
|
+
export interface HTMLElement extends Placeholder<HTMLElement> {}
|
|
38
38
|
|
|
39
|
-
export interface SVGElement extends Placeholder<
|
|
39
|
+
export interface SVGElement extends Placeholder<SVGElement> {}
|
|
40
40
|
}
|
|
41
41
|
|
|
42
42
|
declare module "@typed/fx/Fx" {
|
|
43
|
-
export interface Fx<
|
|
43
|
+
export interface Fx<A, E, R> extends Placeholder<A, E, R> {}
|
|
44
44
|
}
|
package/src/internal/parts.ts
CHANGED
|
@@ -295,7 +295,7 @@ export class EventPartImpl implements EventPart {
|
|
|
295
295
|
readonly index: number,
|
|
296
296
|
readonly source: ElementSource<any>,
|
|
297
297
|
readonly onCause: <E>(cause: Cause<E>) => Effect.Effect<unknown>,
|
|
298
|
-
readonly addEventListener: <Ev extends Event>(handler: EventHandler<
|
|
298
|
+
readonly addEventListener: <Ev extends Event>(handler: EventHandler<Ev>) => void
|
|
299
299
|
) {
|
|
300
300
|
}
|
|
301
301
|
}
|
package/src/internal/render.ts
CHANGED
|
@@ -3,7 +3,7 @@ import * as Sink from "@typed/fx/Sink"
|
|
|
3
3
|
import { TypeId } from "@typed/fx/TypeId"
|
|
4
4
|
import type { Rendered } from "@typed/wire"
|
|
5
5
|
import { persistent } from "@typed/wire"
|
|
6
|
-
import { Effect, ExecutionStrategy, Exit } from "effect"
|
|
6
|
+
import { Effect, ExecutionStrategy, Exit, Runtime } from "effect"
|
|
7
7
|
import type { Cause } from "effect/Cause"
|
|
8
8
|
import type { Chunk } from "effect/Chunk"
|
|
9
9
|
import * as Context from "effect/Context"
|
|
@@ -570,17 +570,18 @@ export const renderTemplate: (document: Document, renderContext: RenderContext)
|
|
|
570
570
|
return Fx.sync(() => DomRenderEvent(persistent(document.importNode(entry.content, true))))
|
|
571
571
|
}
|
|
572
572
|
|
|
573
|
-
return Fx.make<
|
|
573
|
+
return Fx.make<RenderEvent, Placeholder.Error<Values[number]>, Scope.Scope | Placeholder.Context<Values[number]>>((
|
|
574
574
|
sink
|
|
575
575
|
) => {
|
|
576
576
|
return Effect.gen(function*(_) {
|
|
577
|
-
const
|
|
578
|
-
const
|
|
577
|
+
const runtime = yield* _(Effect.runtime<Scope.Scope | Placeholder.Context<Values[number]>>())
|
|
578
|
+
const runFork = Runtime.runFork(runtime)
|
|
579
|
+
const parentScope = Context.get(runtime.context, Scope.Scope)
|
|
579
580
|
const scope = yield* _(Scope.fork(parentScope, ExecutionStrategy.sequential))
|
|
580
581
|
const refCounter = yield* _(indexRefCounter2())
|
|
581
582
|
const content = document.importNode(entry.content, true)
|
|
582
583
|
const ctx: RenderPartContext = {
|
|
583
|
-
context,
|
|
584
|
+
context: runtime.context,
|
|
584
585
|
document,
|
|
585
586
|
eventSource: makeEventSource(),
|
|
586
587
|
expected: 0,
|
|
@@ -606,10 +607,8 @@ export const renderTemplate: (document: Document, renderContext: RenderContext)
|
|
|
606
607
|
|
|
607
608
|
// Fork any effects necessary
|
|
608
609
|
if (effects.length > 0) {
|
|
609
|
-
for (
|
|
610
|
-
|
|
611
|
-
Effect.forkIn(Effect.catchAllCause(eff, ctx.onCause), scope)
|
|
612
|
-
)
|
|
610
|
+
for (let i = 0; i < effects.length; ++i) {
|
|
611
|
+
runFork(effects[i], { scope })
|
|
613
612
|
}
|
|
614
613
|
}
|
|
615
614
|
|
|
@@ -640,7 +639,7 @@ export const renderTemplate: (document: Document, renderContext: RenderContext)
|
|
|
640
639
|
})
|
|
641
640
|
}
|
|
642
641
|
|
|
643
|
-
function getEventHandler<
|
|
642
|
+
function getEventHandler<E, R>(
|
|
644
643
|
renderable: any,
|
|
645
644
|
ctx: Context.Context<any> | Context.Context<never>,
|
|
646
645
|
onCause: (cause: Cause<E>) => Effect.Effect<unknown>
|
|
@@ -650,10 +649,10 @@ function getEventHandler<R, E>(
|
|
|
650
649
|
return EventHandler.make(
|
|
651
650
|
(ev) =>
|
|
652
651
|
Effect.provide(
|
|
653
|
-
Effect.catchAllCause((renderable as EventHandler.EventHandler<
|
|
652
|
+
Effect.catchAllCause((renderable as EventHandler.EventHandler<Event, E, R>).handler(ev), onCause),
|
|
654
653
|
ctx as any
|
|
655
654
|
),
|
|
656
|
-
(renderable as EventHandler.EventHandler<
|
|
655
|
+
(renderable as EventHandler.EventHandler<Event, E, R>).options
|
|
657
656
|
)
|
|
658
657
|
} else if (Effect.EffectTypeId in renderable) {
|
|
659
658
|
return EventHandler.make(() => Effect.provide(Effect.catchAllCause(renderable, onCause), ctx))
|
|
@@ -665,7 +664,7 @@ function getEventHandler<R, E>(
|
|
|
665
664
|
|
|
666
665
|
function handlePart<R, E, R2>(
|
|
667
666
|
renderable: unknown,
|
|
668
|
-
sink: Sink.Sink<
|
|
667
|
+
sink: Sink.Sink<any, any, R2>
|
|
669
668
|
): Effect.Effect<any, never, R | R2 | Scope.Scope> {
|
|
670
669
|
switch (typeof renderable) {
|
|
671
670
|
case "undefined":
|
|
@@ -676,7 +675,7 @@ function handlePart<R, E, R2>(
|
|
|
676
675
|
? sink.onSuccess(null)
|
|
677
676
|
: Fx.tuple(renderable.map(unwrapRenderable)).run(sink) as any
|
|
678
677
|
} else if (TypeId in renderable) {
|
|
679
|
-
return (renderable as Fx.Fx<R | R2
|
|
678
|
+
return (renderable as Fx.Fx<any, any, R | R2>).run(sink)
|
|
680
679
|
} else if (Effect.EffectTypeId in renderable) {
|
|
681
680
|
return Effect.matchCauseEffect(renderable as Effect.Effect<any, E, R>, sink)
|
|
682
681
|
} else return sink.onSuccess(renderable)
|
|
@@ -686,7 +685,7 @@ function handlePart<R, E, R2>(
|
|
|
686
685
|
}
|
|
687
686
|
}
|
|
688
687
|
|
|
689
|
-
function unwrapRenderable<
|
|
688
|
+
function unwrapRenderable<E, R>(renderable: unknown): Fx.Fx<any, E, R> {
|
|
690
689
|
switch (typeof renderable) {
|
|
691
690
|
case "undefined":
|
|
692
691
|
case "object": {
|
|
@@ -698,7 +697,7 @@ function unwrapRenderable<R, E>(renderable: unknown): Fx.Fx<R, E, any> {
|
|
|
698
697
|
} else if (TypeId in renderable) {
|
|
699
698
|
return renderable as any
|
|
700
699
|
} else if (Effect.EffectTypeId in renderable) {
|
|
701
|
-
return Fx.fromFxEffect(Effect.map(renderable as any, unwrapRenderable<
|
|
700
|
+
return Fx.fromFxEffect(Effect.map(renderable as any, unwrapRenderable<E, R>))
|
|
702
701
|
} else return Fx.succeed(renderable as any)
|
|
703
702
|
}
|
|
704
703
|
default:
|
package/src/internal/server.ts
CHANGED
|
@@ -77,7 +77,6 @@ type RenderChunkMap = {
|
|
|
77
77
|
const renderChunkMap: RenderChunkMap = {
|
|
78
78
|
text: (chunk, index) => new TextRenderChunk(index, chunk.value),
|
|
79
79
|
part: (chunk, index, values, onChunk) =>
|
|
80
|
-
// @ts-expect-error
|
|
81
80
|
new PartRenderChunk(
|
|
82
81
|
index,
|
|
83
82
|
chunk,
|
|
@@ -85,7 +84,6 @@ const renderChunkMap: RenderChunkMap = {
|
|
|
85
84
|
values[chunk.node.index]
|
|
86
85
|
),
|
|
87
86
|
"sparse-part": (chunk, index, values, onChunk) =>
|
|
88
|
-
// @ts-expect-error
|
|
89
87
|
new SparsePartRenderChunk(
|
|
90
88
|
index,
|
|
91
89
|
chunk,
|