@typed/template 0.3.0 → 0.3.2

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.
Files changed (41) hide show
  1. package/dist/cjs/internal/EventSource.js +46 -19
  2. package/dist/cjs/internal/EventSource.js.map +1 -1
  3. package/dist/cjs/internal/chunks.js +15 -1
  4. package/dist/cjs/internal/chunks.js.map +1 -1
  5. package/dist/cjs/internal/errors.js +4 -0
  6. package/dist/cjs/internal/errors.js.map +1 -1
  7. package/dist/cjs/internal/hydrate.js +92 -58
  8. package/dist/cjs/internal/hydrate.js.map +1 -1
  9. package/dist/cjs/internal/parser.js +14 -6
  10. package/dist/cjs/internal/parser.js.map +1 -1
  11. package/dist/cjs/internal/render.js +17 -151
  12. package/dist/cjs/internal/render.js.map +1 -1
  13. package/dist/dts/internal/EventSource.d.ts.map +1 -1
  14. package/dist/dts/internal/chunks.d.ts +1 -0
  15. package/dist/dts/internal/chunks.d.ts.map +1 -1
  16. package/dist/dts/internal/errors.d.ts +1 -0
  17. package/dist/dts/internal/errors.d.ts.map +1 -1
  18. package/dist/dts/internal/hydrate.d.ts +9 -16
  19. package/dist/dts/internal/hydrate.d.ts.map +1 -1
  20. package/dist/dts/internal/parser.d.ts.map +1 -1
  21. package/dist/dts/internal/render.d.ts +0 -14
  22. package/dist/dts/internal/render.d.ts.map +1 -1
  23. package/dist/esm/internal/EventSource.js +51 -21
  24. package/dist/esm/internal/EventSource.js.map +1 -1
  25. package/dist/esm/internal/chunks.js +13 -0
  26. package/dist/esm/internal/chunks.js.map +1 -1
  27. package/dist/esm/internal/errors.js +3 -0
  28. package/dist/esm/internal/errors.js.map +1 -1
  29. package/dist/esm/internal/hydrate.js +94 -56
  30. package/dist/esm/internal/hydrate.js.map +1 -1
  31. package/dist/esm/internal/parser.js +16 -7
  32. package/dist/esm/internal/parser.js.map +1 -1
  33. package/dist/esm/internal/render.js +18 -147
  34. package/dist/esm/internal/render.js.map +1 -1
  35. package/package.json +2 -2
  36. package/src/internal/EventSource.ts +63 -34
  37. package/src/internal/chunks.ts +16 -0
  38. package/src/internal/errors.ts +4 -0
  39. package/src/internal/hydrate.ts +124 -77
  40. package/src/internal/parser.ts +17 -8
  41. package/src/internal/render.ts +30 -293
@@ -1 +1 @@
1
- {"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../../src/internal/parser.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAA;AAc1C;;GAEG;AACH,eAAO,MAAM,qBAAqB,aAOhC,CAAA;AAEF;;GAEG;AACH,eAAO,MAAM,iBAAiB,aAiB5B,CAAA;AAEF,MAAM,WAAW,MAAM;IACrB,KAAK,CAAC,eAAe,EAAE,aAAa,CAAC,MAAM,CAAC,GAAG,QAAQ,CAAC,QAAQ,CAAA;CACjE;AAED,wBAAgB,KAAK,CAAC,eAAe,EAAE,aAAa,CAAC,MAAM,CAAC,GAAG,QAAQ,CAAC,QAAQ,CAE/E;AA2nBD,eAAO,MAAM,MAAM,EAAE,MAAmF,CAAA;AAMxG;;;GAGG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,aAAa,CAAC,MAAM,CAAC,UAc1D"}
1
+ {"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../../src/internal/parser.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAA;AAe1C;;GAEG;AACH,eAAO,MAAM,qBAAqB,aAOhC,CAAA;AAEF;;GAEG;AACH,eAAO,MAAM,iBAAiB,aAiB5B,CAAA;AAEF,MAAM,WAAW,MAAM;IACrB,KAAK,CAAC,eAAe,EAAE,aAAa,CAAC,MAAM,CAAC,GAAG,QAAQ,CAAC,QAAQ,CAAA;CACjE;AAED,wBAAgB,KAAK,CAAC,eAAe,EAAE,aAAa,CAAC,MAAM,CAAC,GAAG,QAAQ,CAAC,QAAQ,CAE/E;AAmoBD,eAAO,MAAM,MAAM,EAAE,MAAmF,CAAA;AAMxG;;;GAGG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,aAAa,CAAC,MAAM,CAAC,UAc1D"}
@@ -1,30 +1,16 @@
1
1
  import { Effect } from "effect";
2
- import type { Cause } from "effect/Cause";
3
- import * as Context from "effect/Context";
4
- import { Scope } from "effect/Scope";
5
2
  import type { BrowserEntry } from "../Entry.js";
6
- import type { Part, Parts, SparsePart } from "../Part.js";
7
- import type { Placeholder } from "../Placeholder.js";
8
3
  import type { ToRendered } from "../Render.js";
9
- import type { Renderable } from "../Renderable.js";
10
4
  import type { RenderContext } from "../RenderContext.js";
11
5
  import type { RenderEvent } from "../RenderEvent.js";
12
6
  import type { RenderTemplate } from "../RenderTemplate.js";
13
7
  import type * as Template from "../Template.js";
14
- import { type EventSource } from "./EventSource.js";
15
- import { HydrateContext } from "./HydrateContext.js";
16
- import type { IndexRefCounter } from "./indexRefCounter.js";
17
- import type { ParentChildNodes } from "./utils.js";
18
8
  /**
19
9
  * Here for "standard" browser rendering, a TemplateInstance is effectively a live
20
10
  * view into the contents rendered by the Template.
21
11
  */
22
12
  export declare const renderTemplate: (document: Document, renderContext: RenderContext) => RenderTemplate;
23
- export declare function renderValues<Values extends ReadonlyArray<Renderable<any, any>>>(values: Values, parts: Parts, refCounter: IndexRefCounter, ctx: Context.Context<any> | Context.Context<never>, makeHydrateContext?: (index: number) => HydrateContext): Effect.Effect<Placeholder.Context<Values[number]> | Scope, never, void>;
24
- export declare function renderSparsePart(values: ReadonlyArray<Renderable<any, any>>, part: SparsePart, refCounter: IndexRefCounter): Effect.Effect<unknown, never, import("effect/Fiber").RuntimeFiber<unknown, void>>;
25
- export declare function renderPart<Values extends ReadonlyArray<Renderable<any, any>>>(values: Values, part: Part, refCounter: IndexRefCounter, ctx: Context.Context<any> | Context.Context<never>, hydrateCtx?: () => HydrateContext): Effect.Effect<any, never, void>;
26
13
  export declare function attachRoot<T extends RenderEvent | null>(cache: RenderContext["renderCache"], where: HTMLElement, what: RenderEvent | null): Effect.Effect<never, never, ToRendered<T>>;
27
14
  export declare function getBrowserEntry(document: Document, ctx: RenderContext, templateStrings: TemplateStringsArray): BrowserEntry;
28
- export declare function buildParts<E>(document: Document, ctx: RenderContext, template: Template.Template, content: ParentChildNodes, eventSource: EventSource, onCause: (cause: Cause<E>) => Effect.Effect<never, never, void>, isHydrating: boolean): Parts;
29
15
  export declare function buildTemplate(document: Document, { nodes }: Template.Template): DocumentFragment;
30
16
  //# sourceMappingURL=render.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"render.d.ts","sourceRoot":"","sources":["../../../src/internal/render.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"render.d.ts","sourceRoot":"","sources":["../../../src/internal/render.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAS/B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAI/C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAE9C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AACxD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAEpD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAC1D,OAAO,KAAK,KAAK,QAAQ,MAAM,gBAAgB,CAAA;AAsf/C;;;GAGG;AACH,eAAO,MAAM,cAAc,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,aAAa,EAAE,aAAa,KAAK,cAmEhF,CAAA;AAkEH,wBAAgB,UAAU,CAAC,CAAC,SAAS,WAAW,GAAG,IAAI,EACrD,KAAK,EAAE,aAAa,CAAC,aAAa,CAAC,EACnC,KAAK,EAAE,WAAW,EAClB,IAAI,EAAE,WAAW,GAAG,IAAI,GACvB,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,CAiB5C;AAiBD,wBAAgB,eAAe,CAC7B,QAAQ,EAAE,QAAQ,EAClB,GAAG,EAAE,aAAa,EAClB,eAAe,EAAE,oBAAoB,GACpC,YAAY,CAkBd;AAED,wBAAgB,aAAa,CAAC,QAAQ,EAAE,QAAQ,EAAE,EAAE,KAAK,EAAE,EAAE,QAAQ,CAAC,QAAQ,GAAG,gBAAgB,CAQhG"}
@@ -1,21 +1,36 @@
1
1
  import { Effect, Scope } from "effect";
2
+ import * as Fiber from "effect/Fiber";
2
3
  import * as Runtime from "effect/Runtime";
3
4
  import { getElements } from "../ElementSource";
4
5
  const disposable = (f) => ({
5
6
  [Symbol.dispose]: f
6
7
  });
8
+ const dispose = (d) => d[Symbol.dispose]();
7
9
  export function makeEventSource() {
8
10
  const bubbleListeners = new Map();
9
11
  const captureListeners = new Map();
10
12
  function addListener(listeners, event, entry) {
11
- const set = listeners.get(event);
12
- if (set === undefined) {
13
- const set = new Set();
14
- set.add(entry);
15
- listeners.set(event, set);
13
+ const sets = listeners.get(event);
14
+ const isOnce = entry[1].options?.once === true;
15
+ if (sets === undefined) {
16
+ const normal = new Set();
17
+ const once = new Set();
18
+ if (isOnce) {
19
+ once.add(entry);
20
+ }
21
+ else {
22
+ normal.add(entry);
23
+ }
24
+ listeners.set(event, [normal, once]);
16
25
  }
17
26
  else {
18
- set.add(entry);
27
+ const [normal, once] = sets;
28
+ if (isOnce) {
29
+ once.add(entry);
30
+ }
31
+ else {
32
+ normal.add(entry);
33
+ }
19
34
  }
20
35
  }
21
36
  function addEventListener(element, event, handler) {
@@ -28,35 +43,45 @@ export function makeEventSource() {
28
43
  }
29
44
  function setupBubbleListeners(element, run) {
30
45
  const disposables = [];
31
- for (const [event, handlers] of bubbleListeners) {
32
- const listener = (ev) => run(Effect.forEach(handlers, ([el, handler]) => ev.target === el || el.contains(ev.target) ? handler.handler(ev) : Effect.unit));
33
- element.addEventListener(event, listener, getDerivedAddEventListenerOptions(handlers));
34
- disposables.push(disposable(() => element.removeEventListener(event, listener)));
46
+ for (const [event, sets] of bubbleListeners) {
47
+ for (const handlers of sets) {
48
+ const listener = (ev) => run(Effect.forEach(handlers, ([el, handler]) => ev.target === el || el.contains(ev.target) ? handler.handler(ev) : Effect.unit));
49
+ element.addEventListener(event, listener, getDerivedAddEventListenerOptions(handlers));
50
+ disposables.push(disposable(() => element.removeEventListener(event, listener)));
51
+ }
35
52
  }
36
53
  return disposables;
37
54
  }
38
55
  function setupCaptureListeners(element, run) {
39
56
  const disposables = [];
40
- for (const [event, handlers] of captureListeners) {
41
- const listener = (ev) => run(Effect.forEach(handlers, ([el, handler]) => ev.target === el || el.contains(ev.target)
42
- ? handler.handler(proxyCurrentTargetForCaptureEvents(ev, el))
43
- : Effect.unit));
44
- element.addEventListener(event, listener, getDerivedAddEventListenerOptions(handlers));
45
- disposables.push(disposable(() => element.removeEventListener(event, listener)));
57
+ for (const [event, sets] of captureListeners) {
58
+ for (const handlers of sets) {
59
+ const listener = (ev) => run(Effect.forEach(handlers, ([el, handler]) => ev.target === el || el.contains(ev.target)
60
+ ? handler.handler(proxyCurrentTargetForCaptureEvents(ev, el))
61
+ : Effect.unit));
62
+ element.addEventListener(event, listener, getDerivedAddEventListenerOptions(handlers));
63
+ disposables.push(disposable(() => element.removeEventListener(event, listener)));
64
+ }
46
65
  }
47
66
  return disposables;
48
67
  }
49
68
  function setup(rendered, scope) {
50
69
  const hasBubbleListeners = bubbleListeners.size > 0;
51
70
  const hasCaptureListeners = captureListeners.size > 0;
52
- if (!hasBubbleListeners && !hasCaptureListeners) {
71
+ const elements = getElements(rendered);
72
+ if (elements.length === 0 || (!hasBubbleListeners && !hasCaptureListeners)) {
53
73
  return Effect.unit;
54
74
  }
55
75
  return Effect.flatMap(Effect.runtime(), (runtime) => {
56
- const elements = getElements(rendered);
57
76
  const disposables = [];
77
+ const fibers = new Map();
58
78
  const runFork = Runtime.runFork(runtime);
59
- const run = (effect) => runFork(Effect.fromFiberEffect(Effect.forkIn(effect, scope)));
79
+ const run = (effect) => {
80
+ const id = Symbol();
81
+ const fiber = runFork(Effect.onExit(effect, () => Effect.sync(() => fibers.delete(id))));
82
+ fibers.set(id, fiber);
83
+ return fiber;
84
+ };
60
85
  for (const element of elements) {
61
86
  if (hasBubbleListeners) {
62
87
  disposables.push(...setupBubbleListeners(element, run));
@@ -65,7 +90,12 @@ export function makeEventSource() {
65
90
  disposables.push(...setupCaptureListeners(element, run));
66
91
  }
67
92
  }
68
- return Scope.addFinalizer(scope, Effect.sync(() => disposables.forEach((d) => d[Symbol.dispose]())));
93
+ return Scope.addFinalizer(scope, Effect.suspend(() => {
94
+ disposables.forEach(dispose);
95
+ if (fibers.size === 0)
96
+ return Effect.unit;
97
+ return Fiber.interruptAll(fibers.values());
98
+ }));
69
99
  });
70
100
  }
71
101
  return {
@@ -84,7 +114,7 @@ function proxyCurrentTargetForCaptureEvents(event, currentTarget) {
84
114
  function getDerivedAddEventListenerOptions(entries) {
85
115
  const hs = Array.from(entries);
86
116
  return {
87
- once: hs.some((h) => h[1].options?.once === true),
117
+ once: hs.every((h) => h[1].options?.once === true),
88
118
  passive: hs.every((h) => h[1].options?.passive === true)
89
119
  };
90
120
  }
@@ -1 +1 @@
1
- {"version":3,"file":"EventSource.js","sourceRoot":"","sources":["../../../src/internal/EventSource.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"EventSource.js","sourceRoot":"","sources":["../../../src/internal/EventSource.ts"],"names":[],"mappings":"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"}
@@ -28,6 +28,19 @@ export const getAllTextUntilElementClose = (tagName) => {
28
28
  return chunker(new RegExp(`([^<]+)(\\s*<\\/${tagName}\\s*>)`, "gi"));
29
29
  };
30
30
  export const getWhitespace = chunker(/(\s+)/g);
31
+ const tagNameRegexCache = new Map();
32
+ const tagNameRegex = (tagName) => {
33
+ return `(<\\/\\s*${tagName}\\s*>)`;
34
+ };
35
+ export const getClosingTagName = (tagName) => {
36
+ const current = tagNameRegexCache.get(tagName);
37
+ if (current !== undefined) {
38
+ return current;
39
+ }
40
+ const matcher = chunker(new RegExp(tagNameRegex(tagName), "gi"));
41
+ tagNameRegexCache.set(tagName, matcher);
42
+ return matcher;
43
+ };
31
44
  function chunker(regex) {
32
45
  return (str, pos) => {
33
46
  regex.lastIndex = pos;
@@ -1 +1 @@
1
- {"version":3,"file":"chunks.js","sourceRoot":"","sources":["../../../src/internal/chunks.ts"],"names":[],"mappings":"AAKA,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,WAAW,CAAC,MAAM,CAAA;AAE5D,MAAM,CAAC,MAAM,UAAU,GAAG,0BAA0B,CAAA;AAEpD,MAAM,CAAC,MAAM,OAAO,GAAG,OAAO,CAAC,UAAU,CAAC,CAAA;AAE1C,MAAM,CAAC,MAAM,iBAAiB,GAAG,4BAA4B,CAAA;AAE7D,MAAM,CAAC,MAAM,aAAa,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAA;AAEvD,MAAM,CAAC,MAAM,aAAa,GAAG,OAAO,CAAC,uCAAuC,CAAC,CAAA;AAE7E,MAAM,CAAC,MAAM,gBAAgB,GAAG,OAAO,CAAC,aAAa,CAAC,CAAA;AAEtD,+BAA+B;AAC/B,sEAAsE;AACtE,6BAA6B;AAC7B,MAAM,CAAC,MAAM,aAAa,GAAG,OAAO,CAAC,mDAAmD,CAAC,CAAA;AAEzF,MAAM,CAAC,MAAM,oBAAoB,GAAG,OAAO,CAAC,YAAY,CAAC,CAAA;AAEzD,MAAM,CAAC,MAAM,UAAU,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAA;AAEpD,gDAAgD;AAChD,qFAAqF;AACrF,MAAM,CAAC,MAAM,gBAAgB,GAAG,OAAO,CAAC,+BAA+B,CAAC,CAAA;AAExE,gDAAgD;AAChD,sFAAsF;AACtF,MAAM,CAAC,MAAM,sBAAsB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAA;AAEhE,+CAA+C;AAC/C,MAAM,CAAC,MAAM,sBAAsB,GAAG,OAAO,CAC3C,uDAAuD,CACxD,CAAA;AAED,0EAA0E;AAC1E,MAAM,CAAC,MAAM,yBAAyB,GAAG,OAAO,CAC9C,uDAAuD,CACxD,CAAA;AAED,oDAAoD;AAEpD,MAAM,CAAC,MAAM,mBAAmB,GAAG,OAAO,CAAC,sDAAsD,CAAC,CAAA;AAElG,qEAAqE;AACrE,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,OAAe,EAAE,EAAE;IAC7D,OAAO,OAAO,CAAC,IAAI,MAAM,CAAC,mBAAmB,OAAO,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAA;AACtE,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,aAAa,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAA;AAE9C,SAAS,OAAO,CAAC,KAAa;IAC5B,OAAO,CAAC,GAAW,EAAE,GAAW,EAAyB,EAAE;QACzD,KAAK,CAAC,SAAS,GAAG,GAAG,CAAA;QACrB,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QAC7B,KAAK,CAAC,SAAS,GAAG,CAAC,CAAA;QAEnB,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,KAAK,GAAG,EAAE,CAAC;YAClC,OAAM;QACR,CAAC;aAAM,CAAC;YACN,OAAO;gBACL,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM;gBACvB,KAAK;aACG,CAAA;QACZ,CAAC;IACH,CAAC,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"chunks.js","sourceRoot":"","sources":["../../../src/internal/chunks.ts"],"names":[],"mappings":"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"}
@@ -12,4 +12,7 @@ export class CouldNotFindRootElement extends Error {
12
12
  this.partIndex = partIndex;
13
13
  }
14
14
  }
15
+ export function isHydrationError(e) {
16
+ return e instanceof CouldNotFindCommentError || e instanceof CouldNotFindRootElement;
17
+ }
15
18
  //# sourceMappingURL=errors.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../../src/internal/errors.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,wBAAyB,SAAQ,KAAK;IAC5B;IAArB,YAAqB,SAAiB;QACpC,KAAK,CAAC,mCAAmC,SAAS,EAAE,CAAC,CAAA;QADlC,cAAS,GAAT,SAAS,CAAQ;IAEtC,CAAC;CACF;AAED,MAAM,OAAO,uBAAwB,SAAQ,KAAK;IAC3B;IAArB,YAAqB,SAAiB;QACpC,KAAK,CAAC,yCAAyC,SAAS,EAAE,CAAC,CAAA;QADxC,cAAS,GAAT,SAAS,CAAQ;IAEtC,CAAC;CACF"}
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../../src/internal/errors.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,wBAAyB,SAAQ,KAAK;IAC5B;IAArB,YAAqB,SAAiB;QACpC,KAAK,CAAC,mCAAmC,SAAS,EAAE,CAAC,CAAA;QADlC,cAAS,GAAT,SAAS,CAAQ;IAEtC,CAAC;CACF;AAED,MAAM,OAAO,uBAAwB,SAAQ,KAAK;IAC3B;IAArB,YAAqB,SAAiB;QACpC,KAAK,CAAC,yCAAyC,SAAS,EAAE,CAAC,CAAA;QADxC,cAAS,GAAT,SAAS,CAAQ;IAEtC,CAAC;CACF;AAED,MAAM,UAAU,gBAAgB,CAAC,CAAU;IACzC,OAAO,CAAC,YAAY,wBAAwB,IAAI,CAAC,YAAY,uBAAuB,CAAA;AACtF,CAAC"}
@@ -1,15 +1,15 @@
1
1
  import * as Fx from "@typed/fx/Fx";
2
2
  import * as Effect from "effect/Effect";
3
3
  import { DomRenderEvent } from "../RenderEvent.js";
4
- import { indexRefCounter } from "./indexRefCounter.js";
4
+ import { indexRefCounter2 } from "./indexRefCounter.js";
5
5
  import { unsafeGet } from "@typed/context";
6
+ import { Either } from "effect";
6
7
  import { Scope } from "effect/Scope";
7
8
  import { CouldNotFindCommentError, CouldNotFindRootElement } from "./errors.js";
8
9
  import { makeEventSource } from "./EventSource.js";
9
10
  import { HydrateContext } from "./HydrateContext.js";
10
- import { buildParts, getBrowserEntry, renderTemplate, renderValues } from "./render.js";
11
+ import { getBrowserEntry, renderPart2, renderTemplate } from "./render.js";
11
12
  import { findPath, getPreviousNodes, isComment, isCommentWithValue, isHtmlElement } from "./utils.js";
12
- // TODO: Handle missing comment errors
13
13
  /**
14
14
  * Here for "standard" browser rendering, a TemplateInstance is effectively a live
15
15
  * view into the contents rendered by the Template.
@@ -18,7 +18,6 @@ export const hydrateTemplate = (document, renderContext) => {
18
18
  const render_ = renderTemplate(document, renderContext);
19
19
  return (templateStrings, values) => {
20
20
  return Fx.make((sink) => Effect.gen(function* (_) {
21
- const eventSource = makeEventSource();
22
21
  const context = yield* _(Effect.context());
23
22
  const hydrateCtx = unsafeGet(context, HydrateContext);
24
23
  const scope = unsafeGet(context, Scope);
@@ -26,30 +25,57 @@ export const hydrateTemplate = (document, renderContext) => {
26
25
  if (hydrateCtx.hydrate === false) {
27
26
  return render_(templateStrings, values);
28
27
  }
29
- const { parts, template, where, wire } = getHydrateEntry({
28
+ const either = getHydrateEntry({
30
29
  ...hydrateCtx,
31
30
  document,
32
31
  renderContext,
33
- eventSource,
34
- strings: templateStrings,
35
- onCause: sink.onFailure
32
+ strings: templateStrings
36
33
  });
37
- // If there are parts we need to render them before constructing our Wire
38
- if (parts.length > 0) {
39
- const refCounter = yield* _(indexRefCounter(parts.length));
40
- // Do the work
41
- yield* _(renderValues(values, parts, refCounter, context, (index) => ({
42
- where,
43
- rootIndex: index,
44
- parentTemplate: template,
45
- hydrate: true
46
- })));
47
- // Wait for initial work to be completed
48
- yield* _(refCounter.wait);
34
+ if (Either.isLeft(either)) {
35
+ hydrateCtx.hydrate = false;
36
+ return render_(templateStrings, values);
49
37
  }
50
- hydrateCtx.hydrate = false;
51
- yield* _(eventSource.setup(wire, scope));
38
+ const { template, where, wire } = either.right;
39
+ if (values.length === 0)
40
+ return yield* _(sink.onSuccess(DomRenderEvent(wire)), Effect.zipRight(Effect.never));
41
+ const makeHydrateContext = (index) => ({
42
+ where,
43
+ rootIndex: index,
44
+ parentTemplate: template,
45
+ hydrate: true
46
+ });
47
+ const refCounter = yield* _(indexRefCounter2());
48
+ const ctx = {
49
+ context,
50
+ document,
51
+ eventSource: makeEventSource(),
52
+ expected: 0,
53
+ refCounter,
54
+ renderContext,
55
+ onCause: sink.onFailure,
56
+ values,
57
+ makeHydrateContext
58
+ };
59
+ // Connect our interpolated values to our template parts
60
+ const effects = [];
61
+ for (const [part, path] of template.parts) {
62
+ const eff = renderPart2(part, where, path, ctx);
63
+ if (eff !== null) {
64
+ effects.push(...(Array.isArray(eff) ? eff : [eff]));
65
+ }
66
+ }
67
+ // Fork any effects necessary
68
+ if (effects.length > 0) {
69
+ yield* _(Effect.forkAll(effects));
70
+ }
71
+ // Set the element when it is ready
72
+ yield* _(ctx.eventSource.setup(wire, scope));
73
+ // Emit our DomRenderEvent
52
74
  yield* _(sink.onSuccess(DomRenderEvent(wire)));
75
+ // Stop hydrating
76
+ hydrateCtx.hydrate = false;
77
+ // Ensure our templates last forever in the DOM environment
78
+ // so event listeners are kept attached to the current Scope.
53
79
  yield* _(Effect.never);
54
80
  }));
55
81
  };
@@ -65,44 +91,54 @@ const START = "typed-start";
65
91
  const END = "typed-end";
66
92
  // Finds all of the childNodes between the "typed-start" and "typed-end" comments
67
93
  export function findRootChildNodes(where) {
68
- const childNodes = [];
69
- let start = 0;
70
- let end = childNodes.length;
71
- for (let i = 0; i < where.childNodes.length; i++) {
72
- const node = where.childNodes[i];
73
- if (node.nodeType === node.COMMENT_NODE) {
74
- if (node.nodeValue === START) {
75
- start = i;
76
- break;
77
- }
94
+ let start = -1;
95
+ let end = -1;
96
+ const { childNodes } = where;
97
+ const length = childNodes.length;
98
+ for (let i = 0; i < length; i++) {
99
+ const node = childNodes[i];
100
+ if (node.nodeType === node.COMMENT_NODE && node.nodeValue === START) {
101
+ start = i;
102
+ break;
78
103
  }
79
104
  }
80
- for (let i = where.childNodes.length - 1; i >= start; i--) {
81
- const node = where.childNodes[i];
82
- if (node.nodeType === node.COMMENT_NODE) {
83
- if (node.nodeValue === END) {
84
- end = i;
85
- break;
86
- }
105
+ for (let i = length - 1; i >= start; i--) {
106
+ const node = childNodes[i];
107
+ if (node.nodeType === node.COMMENT_NODE && node.nodeValue === END) {
108
+ end = i;
109
+ break;
87
110
  }
88
111
  }
89
- for (let i = start + 1; i <= end; i++) {
90
- childNodes.push(where.childNodes[i]);
112
+ // If we can't find the start and end comments, just return all childNodes
113
+ if (start === -1 && end === -1) {
114
+ return Array.from(childNodes);
91
115
  }
92
- return childNodes;
116
+ start = start === -1 ? 0 : start;
117
+ end = end === -1 ? length - 1 : end;
118
+ const rootChildNodes = Array(end - start);
119
+ for (let i = start + 1, j = 0; i <= end; i++) {
120
+ rootChildNodes[j++] = childNodes[i];
121
+ }
122
+ return rootChildNodes;
93
123
  }
94
124
  export function findTemplateResultPartChildNodes(where, parentTemplate, childTemplate, partIndex, childIndex) {
95
125
  const [, path] = parentTemplate.parts[partIndex];
96
126
  const parentNode = findPath(where, path);
97
- const childNodes = findPartChildNodes(parentNode, childTemplate?.hash, partIndex);
127
+ const childNodesEither = findPartChildNodes(parentNode, childTemplate.hash, partIndex);
128
+ if (Either.isLeft(childNodesEither))
129
+ return Either.left(childNodesEither.left);
130
+ const childNodes = childNodesEither.right;
98
131
  const parentChildNodes = {
99
132
  parentNode,
100
133
  childNodes: childIndex !== undefined ? [childNodes[childIndex]] : childNodes
101
134
  };
102
- return parentChildNodes;
135
+ return Either.right(parentChildNodes);
103
136
  }
104
137
  export function findPartChildNodes({ childNodes }, hash, partIndex) {
105
- const [comment, index] = findPartComment(childNodes, partIndex);
138
+ const either = findPartComment(childNodes, partIndex);
139
+ if (Either.isLeft(either))
140
+ return Either.left(either.left);
141
+ const [comment, index] = either.right;
106
142
  const nodes = [];
107
143
  const previousHoleValue = `hole${partIndex - 1}`;
108
144
  if (hash) {
@@ -117,30 +153,33 @@ export function findPartChildNodes({ childNodes }, hash, partIndex) {
117
153
  }
118
154
  }
119
155
  else {
120
- return [...getPreviousNodes(comment, partIndex), comment];
156
+ return Either.right([...getPreviousNodes(comment, partIndex), comment]);
121
157
  }
122
158
  if (nodes.length === 0) {
123
- throw new CouldNotFindRootElement(partIndex);
159
+ return Either.left(new CouldNotFindRootElement(partIndex));
124
160
  }
125
161
  nodes.push(comment);
126
- return nodes;
162
+ return Either.right(nodes);
127
163
  }
128
164
  export function findPartComment(childNodes, partIndex) {
129
165
  const search = partIndex === -1 ? `typed-end` : `hole${partIndex}`;
130
166
  for (let i = 0; i < childNodes.length; ++i) {
131
167
  const node = childNodes[i];
132
168
  if (isCommentWithValue(node, search)) {
133
- return [node, i];
169
+ return Either.right([node, i]);
134
170
  }
135
171
  }
136
- throw new CouldNotFindCommentError(partIndex);
172
+ return Either.left(new CouldNotFindCommentError(partIndex));
137
173
  }
138
- export function getHydrateEntry({ childIndex, document, eventSource, onCause, parentTemplate, renderContext, rootIndex, strings, where }) {
174
+ export function getHydrateEntry({ childIndex, document, parentTemplate, renderContext, rootIndex, strings, where }) {
139
175
  const { template } = getBrowserEntry(document, renderContext, strings);
140
176
  if (parentTemplate) {
141
- where = findTemplateResultPartChildNodes(where, parentTemplate, template, rootIndex, childIndex);
177
+ const either = findTemplateResultPartChildNodes(where, parentTemplate, template, rootIndex, childIndex);
178
+ if (Either.isLeft(either)) {
179
+ return Either.left(either.left);
180
+ }
181
+ where = either.right;
142
182
  }
143
- const parts = buildParts(document, renderContext, template, where, eventSource, onCause, true);
144
183
  const wire = (() => {
145
184
  if (!parentTemplate) {
146
185
  const childNodes = Array.from(where.childNodes).filter((node) => isComment(node) ? !isCommentWithValue(node, END) : true);
@@ -154,11 +193,10 @@ export function getHydrateEntry({ childIndex, document, eventSource, onCause, pa
154
193
  }
155
194
  return Array.from(where.childNodes).filter((node) => !isCommentWithValue(node, `hole${rootIndex}`));
156
195
  })();
157
- return {
196
+ return Either.right({
158
197
  template,
159
198
  wire,
160
- parts,
161
199
  where
162
- };
200
+ });
163
201
  }
164
202
  //# sourceMappingURL=hydrate.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"hydrate.js","sourceRoot":"","sources":["../../../src/internal/hydrate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"hydrate.js","sourceRoot":"","sources":["../../../src/internal/hydrate.ts"],"names":[],"mappings":"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"}
@@ -2,7 +2,7 @@ import * as Chunk from "effect/Chunk";
2
2
  import { globalValue } from "effect/GlobalValue";
3
3
  import * as Option from "effect/Option";
4
4
  import * as Template from "../Template.js";
5
- import { getPart, getStrictPart, getTextUntilCloseBrace, getTextUntilPart, getWhitespace, PART_STRING } from "./chunks.js";
5
+ import { getClosingTagName, getPart, getStrictPart, getTextUntilCloseBrace, getTextUntilPart, getWhitespace, PART_STRING } from "./chunks.js";
6
6
  // TODO: Consider ways to surface useful errors and warnings.
7
7
  // TODO: Profile for performance optimization
8
8
  /**
@@ -66,6 +66,7 @@ const isWhitespaceToken = (input, pos) => SPACE_REGEX.test(input[pos]);
66
66
  const isOpenTagEndToken = (input, pos) => input[pos] === chars.greaterThan;
67
67
  const isSelfClosingTagEndToken = (input, pos) => input[pos] === chars.slash && input[pos + 1] === chars.greaterThan;
68
68
  const isCommentEndToken = (input, pos) => input[pos] === chars.hypen && input[pos + 1] === chars.hypen && input[pos + 2] === chars.greaterThan;
69
+ const isGreaterThanToken = (input, pos) => input[pos] === chars.greaterThan;
69
70
  const Continue = (a) => ["continue", a];
70
71
  const Break = (a) => ["break", Option.fromNullable(a)];
71
72
  const Skip = ["skip"];
@@ -182,9 +183,12 @@ class ParserImpl {
182
183
  this.consumeAmount(2);
183
184
  return [this.parseComment()];
184
185
  }
185
- else {
186
+ else if (nextChar.toLowerCase() === "d") {
186
187
  return [this.parseDocType()];
187
188
  }
189
+ else {
190
+ throw new SyntaxError(`Unknown comment type ${nextChar}`);
191
+ }
188
192
  }
189
193
  else if (nextChar === "/") { // Self-closing tag
190
194
  return this.selfClosingTagEnd();
@@ -242,9 +246,14 @@ class ParserImpl {
242
246
  const children = this.parseTemplateChildren();
243
247
  this.path.pop();
244
248
  const element = new Template.ElementNode(tagName, attributes, children);
249
+ this.skipWhitespace();
250
+ this.consumeClosingTag(tagName);
245
251
  return element;
246
252
  }
247
253
  }
254
+ consumeClosingTag(tagName) {
255
+ this.chunk(getClosingTagName(tagName));
256
+ }
248
257
  parseSelfClosingElement(tagName) {
249
258
  const attributes = this.parseAttributes();
250
259
  return new Template.SelfClosingElementNode(tagName, attributes);
@@ -272,7 +281,7 @@ class ParserImpl {
272
281
  return this.addPart(new Template.SparseCommentNode(textAndParts));
273
282
  }
274
283
  parseDocType() {
275
- this.parseTextUntil((char) => char === chars.greaterThan);
284
+ this.parseTextUntil(isGreaterThanToken);
276
285
  this.consumeAmount(1);
277
286
  this.skipWhitespace();
278
287
  return new Template.DocType("html");
@@ -406,16 +415,16 @@ class ParserImpl {
406
415
  return f(index);
407
416
  }
408
417
  parseTextUntil(predicate) {
409
- let text = "";
418
+ const start = this.pos;
419
+ let i = 0;
410
420
  while (this.pos < this.length) {
411
- const char = this.nextChar();
412
421
  if (predicate(this.input, this.pos)) {
413
422
  break;
414
423
  }
415
- text += char;
424
+ i++;
416
425
  this.consumeAmount(1);
417
426
  }
418
- return text;
427
+ return this.input.slice(start, start + i);
419
428
  }
420
429
  parseTextUntilMany(predicates) {
421
430
  const [keys, length] = getPredicatesCache(predicates);