@typed/template 0.9.5 → 0.10.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.
Files changed (300) hide show
  1. package/RenderQueue/package.json +6 -0
  2. package/dist/cjs/Directive.js +1 -1
  3. package/dist/cjs/Directive.js.map +1 -1
  4. package/dist/cjs/ElementRef.js +1 -1
  5. package/dist/cjs/ElementRef.js.map +1 -1
  6. package/dist/cjs/ElementSource.js +1 -1
  7. package/dist/cjs/ElementSource.js.map +1 -1
  8. package/dist/cjs/EventHandler.js +11 -4
  9. package/dist/cjs/EventHandler.js.map +1 -1
  10. package/dist/cjs/Html.js +84 -44
  11. package/dist/cjs/Html.js.map +1 -1
  12. package/dist/cjs/HtmlChunk.js +67 -21
  13. package/dist/cjs/HtmlChunk.js.map +1 -1
  14. package/dist/cjs/Hydrate.js +6 -6
  15. package/dist/cjs/Hydrate.js.map +1 -1
  16. package/dist/cjs/Many.js +4 -4
  17. package/dist/cjs/Many.js.map +1 -1
  18. package/dist/cjs/Meta.js +10 -3
  19. package/dist/cjs/Meta.js.map +1 -1
  20. package/dist/cjs/Parser.js +1 -1
  21. package/dist/cjs/Placeholder.js +5 -9
  22. package/dist/cjs/Placeholder.js.map +1 -1
  23. package/dist/cjs/Platform.js +7 -5
  24. package/dist/cjs/Platform.js.map +1 -1
  25. package/dist/cjs/Render.js +8 -7
  26. package/dist/cjs/Render.js.map +1 -1
  27. package/dist/cjs/RenderContext.js +8 -92
  28. package/dist/cjs/RenderContext.js.map +1 -1
  29. package/dist/cjs/RenderEvent.js +9 -1
  30. package/dist/cjs/RenderEvent.js.map +1 -1
  31. package/dist/cjs/RenderQueue.js +341 -0
  32. package/dist/cjs/RenderQueue.js.map +1 -0
  33. package/dist/cjs/RenderTemplate.js +1 -1
  34. package/dist/cjs/RenderTemplate.js.map +1 -1
  35. package/dist/cjs/Template.js +12 -0
  36. package/dist/cjs/Template.js.map +1 -1
  37. package/dist/cjs/Test.js +64 -33
  38. package/dist/cjs/Test.js.map +1 -1
  39. package/dist/cjs/Vitest.js +12 -20
  40. package/dist/cjs/Vitest.js.map +1 -1
  41. package/dist/cjs/index.js +6 -3
  42. package/dist/cjs/index.js.map +1 -1
  43. package/dist/cjs/internal/EventSource.js +16 -9
  44. package/dist/cjs/internal/EventSource.js.map +1 -1
  45. package/dist/cjs/internal/HydrateContext.js.map +1 -1
  46. package/dist/cjs/internal/browser.js +11 -10
  47. package/dist/cjs/internal/browser.js.map +1 -1
  48. package/dist/cjs/internal/character-entities.js +2141 -0
  49. package/dist/cjs/internal/character-entities.js.map +1 -0
  50. package/dist/cjs/internal/errors.js +19 -2
  51. package/dist/cjs/internal/errors.js.map +1 -1
  52. package/dist/cjs/internal/indexRefCounter.js +36 -63
  53. package/dist/cjs/internal/indexRefCounter.js.map +1 -1
  54. package/dist/cjs/internal/parser.js +18 -17
  55. package/dist/cjs/internal/parser.js.map +1 -1
  56. package/dist/cjs/internal/parser2.js +382 -0
  57. package/dist/cjs/internal/parser2.js.map +1 -0
  58. package/dist/cjs/internal/server-parts.js +124 -0
  59. package/dist/cjs/internal/server-parts.js.map +1 -0
  60. package/dist/cjs/internal/server.js +15 -185
  61. package/dist/cjs/internal/server.js.map +1 -1
  62. package/dist/cjs/internal/utils.js +73 -9
  63. package/dist/cjs/internal/utils.js.map +1 -1
  64. package/dist/cjs/internal/v2/SyncPart.js +6 -0
  65. package/dist/cjs/internal/v2/SyncPart.js.map +1 -0
  66. package/dist/cjs/internal/v2/helpers.js +15 -0
  67. package/dist/cjs/internal/v2/helpers.js.map +1 -0
  68. package/dist/cjs/internal/v2/hydrate.js +202 -0
  69. package/dist/cjs/internal/v2/hydrate.js.map +1 -0
  70. package/dist/cjs/internal/v2/hydration-template.js +269 -0
  71. package/dist/cjs/internal/v2/hydration-template.js.map +1 -0
  72. package/dist/cjs/internal/v2/parts.js +169 -0
  73. package/dist/cjs/internal/v2/parts.js.map +1 -0
  74. package/dist/cjs/internal/v2/render-entry.js +110 -0
  75. package/dist/cjs/internal/v2/render-entry.js.map +1 -0
  76. package/dist/cjs/internal/v2/render-sync-parts.js +318 -0
  77. package/dist/cjs/internal/v2/render-sync-parts.js.map +1 -0
  78. package/dist/cjs/internal/v2/render.js +417 -0
  79. package/dist/cjs/internal/v2/render.js.map +1 -0
  80. package/dist/cjs/internal/v2/sync-parts.js +115 -0
  81. package/dist/cjs/internal/v2/sync-parts.js.map +1 -0
  82. package/dist/dts/ElementRef.d.ts +1 -1
  83. package/dist/dts/ElementRef.d.ts.map +1 -1
  84. package/dist/dts/ElementSource.d.ts +1 -1
  85. package/dist/dts/ElementSource.d.ts.map +1 -1
  86. package/dist/dts/EventHandler.d.ts +12 -8
  87. package/dist/dts/EventHandler.d.ts.map +1 -1
  88. package/dist/dts/Html.d.ts +6 -5
  89. package/dist/dts/Html.d.ts.map +1 -1
  90. package/dist/dts/HtmlChunk.d.ts.map +1 -1
  91. package/dist/dts/Hydrate.d.ts +1 -3
  92. package/dist/dts/Hydrate.d.ts.map +1 -1
  93. package/dist/dts/Many.d.ts +9 -11
  94. package/dist/dts/Many.d.ts.map +1 -1
  95. package/dist/dts/Meta.d.ts +5 -1
  96. package/dist/dts/Meta.d.ts.map +1 -1
  97. package/dist/dts/Parser.d.ts +1 -1
  98. package/dist/dts/Parser.d.ts.map +1 -1
  99. package/dist/dts/Part.d.ts +20 -56
  100. package/dist/dts/Part.d.ts.map +1 -1
  101. package/dist/dts/Placeholder.d.ts +6 -10
  102. package/dist/dts/Placeholder.d.ts.map +1 -1
  103. package/dist/dts/Platform.d.ts +2 -4
  104. package/dist/dts/Platform.d.ts.map +1 -1
  105. package/dist/dts/Render.d.ts +4 -8
  106. package/dist/dts/Render.d.ts.map +1 -1
  107. package/dist/dts/RenderContext.d.ts +3 -22
  108. package/dist/dts/RenderContext.d.ts.map +1 -1
  109. package/dist/dts/RenderEvent.d.ts +6 -1
  110. package/dist/dts/RenderEvent.d.ts.map +1 -1
  111. package/dist/dts/RenderQueue.d.ts +103 -0
  112. package/dist/dts/RenderQueue.d.ts.map +1 -0
  113. package/dist/dts/RenderTemplate.d.ts +3 -2
  114. package/dist/dts/RenderTemplate.d.ts.map +1 -1
  115. package/dist/dts/Renderable.d.ts +1 -1
  116. package/dist/dts/Template.d.ts +14 -1
  117. package/dist/dts/Template.d.ts.map +1 -1
  118. package/dist/dts/Test.d.ts +14 -1
  119. package/dist/dts/Test.d.ts.map +1 -1
  120. package/dist/dts/Vitest.d.ts +11 -8
  121. package/dist/dts/Vitest.d.ts.map +1 -1
  122. package/dist/dts/index.d.ts +4 -0
  123. package/dist/dts/index.d.ts.map +1 -1
  124. package/dist/dts/internal/EventSource.d.ts +2 -1
  125. package/dist/dts/internal/EventSource.d.ts.map +1 -1
  126. package/dist/dts/internal/browser.d.ts +3 -3
  127. package/dist/dts/internal/browser.d.ts.map +1 -1
  128. package/dist/dts/internal/character-entities.d.ts +2133 -0
  129. package/dist/dts/internal/character-entities.d.ts.map +1 -0
  130. package/dist/dts/internal/errors.d.ts +9 -1
  131. package/dist/dts/internal/errors.d.ts.map +1 -1
  132. package/dist/dts/internal/indexRefCounter.d.ts +0 -4
  133. package/dist/dts/internal/indexRefCounter.d.ts.map +1 -1
  134. package/dist/dts/internal/parser.d.ts +13 -0
  135. package/dist/dts/internal/parser.d.ts.map +1 -1
  136. package/dist/dts/internal/parser2.d.ts +12 -0
  137. package/dist/dts/internal/parser2.d.ts.map +1 -0
  138. package/dist/dts/internal/server-parts.d.ts +223 -0
  139. package/dist/dts/internal/server-parts.d.ts.map +1 -0
  140. package/dist/dts/internal/server.d.ts +2 -28
  141. package/dist/dts/internal/server.d.ts.map +1 -1
  142. package/dist/dts/internal/utils.d.ts +4 -1
  143. package/dist/dts/internal/utils.d.ts.map +1 -1
  144. package/dist/dts/internal/v2/SyncPart.d.ts +87 -0
  145. package/dist/dts/internal/v2/SyncPart.d.ts.map +1 -0
  146. package/dist/dts/internal/v2/helpers.d.ts +3 -0
  147. package/dist/dts/internal/v2/helpers.d.ts.map +1 -0
  148. package/dist/dts/internal/v2/hydrate.d.ts +7 -0
  149. package/dist/dts/internal/v2/hydrate.d.ts.map +1 -0
  150. package/dist/dts/internal/v2/hydration-template.d.ts +54 -0
  151. package/dist/dts/internal/v2/hydration-template.d.ts.map +1 -0
  152. package/dist/dts/internal/v2/parts.d.ts +245 -0
  153. package/dist/dts/internal/v2/parts.d.ts.map +1 -0
  154. package/dist/dts/internal/v2/render-entry.d.ts +6 -0
  155. package/dist/dts/internal/v2/render-entry.d.ts.map +1 -0
  156. package/dist/dts/internal/v2/render-sync-parts.d.ts +22 -0
  157. package/dist/dts/internal/v2/render-sync-parts.d.ts.map +1 -0
  158. package/dist/dts/internal/v2/render.d.ts +62 -0
  159. package/dist/dts/internal/v2/render.d.ts.map +1 -0
  160. package/dist/dts/internal/v2/sync-parts.d.ts +129 -0
  161. package/dist/dts/internal/v2/sync-parts.d.ts.map +1 -0
  162. package/dist/esm/ElementRef.js.map +1 -1
  163. package/dist/esm/EventHandler.js +14 -4
  164. package/dist/esm/EventHandler.js.map +1 -1
  165. package/dist/esm/Html.js +91 -50
  166. package/dist/esm/Html.js.map +1 -1
  167. package/dist/esm/HtmlChunk.js +75 -24
  168. package/dist/esm/HtmlChunk.js.map +1 -1
  169. package/dist/esm/Hydrate.js +5 -5
  170. package/dist/esm/Hydrate.js.map +1 -1
  171. package/dist/esm/Many.js +3 -3
  172. package/dist/esm/Many.js.map +1 -1
  173. package/dist/esm/Meta.js +7 -1
  174. package/dist/esm/Meta.js.map +1 -1
  175. package/dist/esm/Parser.js +1 -1
  176. package/dist/esm/Parser.js.map +1 -1
  177. package/dist/esm/Placeholder.js +4 -8
  178. package/dist/esm/Placeholder.js.map +1 -1
  179. package/dist/esm/Platform.js +3 -1
  180. package/dist/esm/Platform.js.map +1 -1
  181. package/dist/esm/Render.js +6 -5
  182. package/dist/esm/Render.js.map +1 -1
  183. package/dist/esm/RenderContext.js +5 -85
  184. package/dist/esm/RenderContext.js.map +1 -1
  185. package/dist/esm/RenderEvent.js +8 -1
  186. package/dist/esm/RenderEvent.js.map +1 -1
  187. package/dist/esm/RenderQueue.js +336 -0
  188. package/dist/esm/RenderQueue.js.map +1 -0
  189. package/dist/esm/RenderTemplate.js.map +1 -1
  190. package/dist/esm/Template.js +12 -0
  191. package/dist/esm/Template.js.map +1 -1
  192. package/dist/esm/Test.js +71 -30
  193. package/dist/esm/Test.js.map +1 -1
  194. package/dist/esm/Vitest.js +11 -8
  195. package/dist/esm/Vitest.js.map +1 -1
  196. package/dist/esm/index.js +4 -0
  197. package/dist/esm/index.js.map +1 -1
  198. package/dist/esm/internal/EventSource.js +12 -7
  199. package/dist/esm/internal/EventSource.js.map +1 -1
  200. package/dist/esm/internal/HydrateContext.js.map +1 -1
  201. package/dist/esm/internal/browser.js +10 -9
  202. package/dist/esm/internal/browser.js.map +1 -1
  203. package/dist/esm/internal/character-entities.js +2134 -0
  204. package/dist/esm/internal/character-entities.js.map +1 -0
  205. package/dist/esm/internal/errors.js +22 -2
  206. package/dist/esm/internal/errors.js.map +1 -1
  207. package/dist/esm/internal/indexRefCounter.js +36 -61
  208. package/dist/esm/internal/indexRefCounter.js.map +1 -1
  209. package/dist/esm/internal/parser.js +18 -18
  210. package/dist/esm/internal/parser.js.map +1 -1
  211. package/dist/esm/internal/parser2.js +393 -0
  212. package/dist/esm/internal/parser2.js.map +1 -0
  213. package/dist/esm/internal/server-parts.js +109 -0
  214. package/dist/esm/internal/server-parts.js.map +1 -0
  215. package/dist/esm/internal/server.js +12 -161
  216. package/dist/esm/internal/server.js.map +1 -1
  217. package/dist/esm/internal/utils.js +71 -7
  218. package/dist/esm/internal/utils.js.map +1 -1
  219. package/dist/esm/internal/v2/SyncPart.js +5 -0
  220. package/dist/esm/internal/v2/SyncPart.js.map +1 -0
  221. package/dist/esm/internal/v2/helpers.js +12 -0
  222. package/dist/esm/internal/v2/helpers.js.map +1 -0
  223. package/dist/esm/internal/v2/hydrate.js +195 -0
  224. package/dist/esm/internal/v2/hydrate.js.map +1 -0
  225. package/dist/esm/internal/v2/hydration-template.js +265 -0
  226. package/dist/esm/internal/v2/hydration-template.js.map +1 -0
  227. package/dist/esm/internal/v2/parts.js +150 -0
  228. package/dist/esm/internal/v2/parts.js.map +1 -0
  229. package/dist/esm/internal/v2/render-entry.js +102 -0
  230. package/dist/esm/internal/v2/render-entry.js.map +1 -0
  231. package/dist/esm/internal/v2/render-sync-parts.js +265 -0
  232. package/dist/esm/internal/v2/render-sync-parts.js.map +1 -0
  233. package/dist/esm/internal/v2/render.js +353 -0
  234. package/dist/esm/internal/v2/render.js.map +1 -0
  235. package/dist/esm/internal/v2/sync-parts.js +102 -0
  236. package/dist/esm/internal/v2/sync-parts.js.map +1 -0
  237. package/package.json +20 -13
  238. package/src/ElementRef.ts +1 -1
  239. package/src/ElementSource.ts +1 -1
  240. package/src/EventHandler.ts +29 -11
  241. package/src/Html.ts +199 -90
  242. package/src/HtmlChunk.ts +77 -30
  243. package/src/Hydrate.ts +20 -14
  244. package/src/Many.ts +17 -14
  245. package/src/Meta.ts +8 -1
  246. package/src/Parser.ts +1 -1
  247. package/src/Part.ts +22 -66
  248. package/src/Placeholder.ts +17 -15
  249. package/src/Platform.ts +5 -5
  250. package/src/Render.ts +23 -26
  251. package/src/RenderContext.ts +14 -142
  252. package/src/RenderEvent.ts +10 -1
  253. package/src/RenderQueue.ts +445 -0
  254. package/src/RenderTemplate.ts +7 -2
  255. package/src/Renderable.ts +1 -1
  256. package/src/Template.ts +15 -1
  257. package/src/Test.ts +122 -38
  258. package/src/Vitest.ts +20 -10
  259. package/src/index.ts +4 -0
  260. package/src/internal/EventSource.ts +14 -8
  261. package/src/internal/HydrateContext.ts +3 -4
  262. package/src/internal/browser.ts +26 -21
  263. package/src/internal/character-entities.ts +2136 -0
  264. package/src/internal/errors.ts +30 -3
  265. package/src/internal/indexRefCounter.ts +38 -70
  266. package/src/internal/parser.ts +19 -19
  267. package/src/internal/parser2.ts +468 -0
  268. package/src/internal/server-parts.ts +161 -0
  269. package/src/internal/server.ts +16 -272
  270. package/src/internal/utils.ts +83 -7
  271. package/src/internal/v2/SyncPart.ts +112 -0
  272. package/src/internal/v2/helpers.ts +13 -0
  273. package/src/internal/v2/hydrate.ts +289 -0
  274. package/src/internal/v2/hydration-template.ts +308 -0
  275. package/src/internal/v2/parts.ts +254 -0
  276. package/src/internal/v2/render-entry.ts +131 -0
  277. package/src/internal/v2/render-sync-parts.ts +440 -0
  278. package/src/internal/v2/render.ts +588 -0
  279. package/src/internal/v2/sync-parts.ts +133 -0
  280. package/dist/cjs/internal/hydrate.js +0 -274
  281. package/dist/cjs/internal/hydrate.js.map +0 -1
  282. package/dist/cjs/internal/parts.js +0 -451
  283. package/dist/cjs/internal/parts.js.map +0 -1
  284. package/dist/cjs/internal/render.js +0 -704
  285. package/dist/cjs/internal/render.js.map +0 -1
  286. package/dist/dts/internal/hydrate.d.ts +0 -33
  287. package/dist/dts/internal/hydrate.d.ts.map +0 -1
  288. package/dist/dts/internal/parts.d.ts +0 -314
  289. package/dist/dts/internal/parts.d.ts.map +0 -1
  290. package/dist/dts/internal/render.d.ts +0 -16
  291. package/dist/dts/internal/render.d.ts.map +0 -1
  292. package/dist/esm/internal/hydrate.js +0 -239
  293. package/dist/esm/internal/hydrate.js.map +0 -1
  294. package/dist/esm/internal/parts.js +0 -373
  295. package/dist/esm/internal/parts.js.map +0 -1
  296. package/dist/esm/internal/render.js +0 -689
  297. package/dist/esm/internal/render.js.map +0 -1
  298. package/src/internal/hydrate.ts +0 -366
  299. package/src/internal/parts.ts +0 -609
  300. package/src/internal/render.ts +0 -971
@@ -0,0 +1,133 @@
1
+ import { equals } from "effect/Equal"
2
+ import * as Equivalence from "effect/Equivalence"
3
+ import { isNullOrUndefined, renderToString } from "./helpers.js"
4
+ import type * as SyncPart from "./SyncPart.js"
5
+
6
+ const strictEq = Equivalence.strict<any>()
7
+
8
+ type CommitParams<T extends SyncPart.SyncPart["_tag"]> = {
9
+ previous: PartValue<T>
10
+ value: PartValue<T>
11
+ }
12
+
13
+ type PartValue<T extends SyncPart.SyncPart["_tag"]> = Extract<SyncPart.SyncPart, { readonly _tag: T }>["value"]
14
+
15
+ const base = <T extends SyncPart.SyncPart["_tag"]>(tag: T) => (class Base {
16
+ readonly _tag: T = tag
17
+
18
+ constructor(
19
+ readonly index: number,
20
+ readonly commit: (params: CommitParams<T>) => void,
21
+ public value: PartValue<T>,
22
+ readonly eq: Equivalence.Equivalence<PartValue<T>> = equals
23
+ ) {
24
+ this.update = this.update.bind(this)
25
+ }
26
+
27
+ update(input: this["value"]) {
28
+ const previous = this.value as any
29
+ const value = this.getValue(input) as any
30
+
31
+ if (this.eq(previous as any, value as any)) {
32
+ return false
33
+ }
34
+
35
+ this.value = value
36
+
37
+ this.commit.call(this, {
38
+ previous,
39
+ value
40
+ })
41
+ return true
42
+ }
43
+
44
+ getValue(value: unknown) {
45
+ return value
46
+ }
47
+ })
48
+
49
+ export class AttributePartImpl extends base("attribute") implements SyncPart.AttributeSyncPart {
50
+ constructor(
51
+ readonly name: string,
52
+ index: number,
53
+ commit: (params: CommitParams<"attribute">) => void,
54
+ value: PartValue<"attribute">
55
+ ) {
56
+ super(index, commit, value, strictEq)
57
+ }
58
+
59
+ getValue(value: unknown): string | null | undefined {
60
+ return isNullOrUndefined(value) ? value : renderToString(value)
61
+ }
62
+ }
63
+
64
+ export class BooleanPartImpl extends base("boolean") implements SyncPart.BooleanSyncPart {
65
+ constructor(
66
+ readonly name: string,
67
+ index: number,
68
+ commit: (params: CommitParams<"boolean">) => void,
69
+ value: PartValue<"boolean">
70
+ ) {
71
+ super(index, commit, value, strictEq)
72
+ }
73
+
74
+ getValue(value: unknown): boolean {
75
+ return !!value
76
+ }
77
+ }
78
+
79
+ export class ClassNamePartImpl extends base("className") implements SyncPart.ClassNameSyncPart {
80
+ constructor(index: number, commit: (params: CommitParams<"className">) => void, value: PartValue<"className">) {
81
+ super(index, commit, value, strictEq)
82
+ }
83
+
84
+ getValue(value: unknown): ReadonlyArray<string> {
85
+ if (isNullOrUndefined(value)) {
86
+ return []
87
+ } else if (Array.isArray(value)) {
88
+ return value.flatMap(splitClassNames)
89
+ } else {
90
+ return splitClassNames(renderToString(value))
91
+ }
92
+ }
93
+ }
94
+
95
+ const SPACE_REGEXP = /\s+/g
96
+
97
+ export function splitClassNames(value: string) {
98
+ return value.split(SPACE_REGEXP).flatMap((a) => {
99
+ const trimmed = a.trim()
100
+ return trimmed.length > 0 ? [trimmed] : []
101
+ })
102
+ }
103
+
104
+ export class CommentPartImpl extends base("comment") implements SyncPart.CommentSyncPart {
105
+ getValue(value: unknown) {
106
+ return isNullOrUndefined(value) ? value : renderToString(value)
107
+ }
108
+ }
109
+
110
+ export class DataPartImpl extends base("data") implements SyncPart.DataSyncPart {}
111
+
112
+ export class NodePartImpl extends base("node") implements SyncPart.NodeSyncPart {}
113
+
114
+ export class PropertyPartImpl extends base("property") implements SyncPart.PropertySyncPart {
115
+ constructor(
116
+ readonly name: string,
117
+ index: number,
118
+ commit: (params: CommitParams<"property">) => void,
119
+ value: PartValue<"property">
120
+ ) {
121
+ super(index, commit, value, strictEq)
122
+ }
123
+ }
124
+
125
+ export class TextPartImpl extends base("text") implements SyncPart.TextSyncPart {
126
+ constructor(index: number, commit: (params: CommitParams<"text">) => void, value: PartValue<"text">) {
127
+ super(index, commit, value, strictEq)
128
+ }
129
+
130
+ getValue(value: unknown) {
131
+ return isNullOrUndefined(value) ? value : renderToString(value)
132
+ }
133
+ }
@@ -1,274 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.findManyChildNodes = findManyChildNodes;
7
- exports.findManyComment = findManyComment;
8
- exports.findPartChildNodes = findPartChildNodes;
9
- exports.findPartComment = findPartComment;
10
- exports.findPreviousManyComment = findPreviousManyComment;
11
- exports.findRootChildNodes = findRootChildNodes;
12
- exports.findRootParentChildNodes = findRootParentChildNodes;
13
- exports.findTemplateResultPartChildNodes = findTemplateResultPartChildNodes;
14
- exports.getHydrateEntry = getHydrateEntry;
15
- exports.hydrateTemplate = void 0;
16
- var Fx = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@typed/fx/Fx"));
17
- var Effect = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("effect/Effect"));
18
- var _RenderEvent = /*#__PURE__*/require("../RenderEvent.js");
19
- var _indexRefCounter = /*#__PURE__*/require("./indexRefCounter.js");
20
- var _context = /*#__PURE__*/require("@typed/context");
21
- var _effect = /*#__PURE__*/require("effect");
22
- var Scope = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("effect/Scope"));
23
- var _errors = /*#__PURE__*/require("./errors.js");
24
- var _EventSource = /*#__PURE__*/require("./EventSource.js");
25
- var _HydrateContext = /*#__PURE__*/require("./HydrateContext.js");
26
- var _render = /*#__PURE__*/require("./render.js");
27
- var _utils = /*#__PURE__*/require("./utils.js");
28
- function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
29
- function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
30
- /**
31
- * Here for "standard" browser rendering, a TemplateInstance is effectively a live
32
- * view into the contents rendered by the Template.
33
- */
34
- const hydrateTemplate = (document, renderContext) => {
35
- const render_ = (0, _render.renderTemplate)(document, renderContext);
36
- return (templateStrings, values) => {
37
- return Fx.make(sink => Effect.gen(function* (_) {
38
- const runtime = yield* _(Effect.runtime());
39
- const runFork = _effect.Runtime.runFork(runtime);
40
- const hydrateCtx = (0, _context.unsafeGet)(runtime.context, _HydrateContext.HydrateContext);
41
- const parentScope = (0, _context.unsafeGet)(runtime.context, Scope.Scope);
42
- const scope = yield* _(Scope.fork(parentScope, _effect.ExecutionStrategy.sequential));
43
- // If we're not longer hydrating, just render normally
44
- if (hydrateCtx.hydrate === false) {
45
- return render_(templateStrings, values);
46
- }
47
- const either = getHydrateEntry({
48
- ...hydrateCtx,
49
- document,
50
- renderContext,
51
- strings: templateStrings
52
- });
53
- if (_effect.Either.isLeft(either)) {
54
- hydrateCtx.hydrate = false;
55
- return render_(templateStrings, values);
56
- }
57
- const {
58
- template,
59
- where,
60
- wire
61
- } = either.right;
62
- if (values.length === 0) return yield* _(sink.onSuccess((0, _RenderEvent.DomRenderEvent)(wire)), Effect.zipRight(Effect.never));
63
- const makeHydrateContext = index => ({
64
- where,
65
- rootIndex: index,
66
- parentTemplate: template,
67
- hydrate: true
68
- });
69
- const refCounter = yield* _((0, _indexRefCounter.indexRefCounter2)());
70
- const ctx = {
71
- context: runtime.context,
72
- document,
73
- eventSource: (0, _EventSource.makeEventSource)(),
74
- expected: 0,
75
- refCounter,
76
- renderContext,
77
- onCause: sink.onFailure,
78
- values,
79
- makeHydrateContext,
80
- spreadIndex: values.length
81
- };
82
- // Connect our interpolated values to our template parts
83
- const effects = [];
84
- for (const [part, path] of template.parts) {
85
- const eff = (0, _render.renderPart2)(part, where, path, ctx);
86
- if (eff !== null) {
87
- effects.push(...(Array.isArray(eff) ? eff : [eff]));
88
- }
89
- }
90
- // Fork any effects necessary
91
- if (effects.length > 0) {
92
- for (let i = 0; i < effects.length; i++) {
93
- runFork(effects[i], {
94
- scope
95
- });
96
- }
97
- }
98
- // Set the element when it is ready
99
- yield* _(ctx.eventSource.setup(wire, scope));
100
- // Emit our DomRenderEvent
101
- yield* _(sink.onSuccess((0, _RenderEvent.DomRenderEvent)(wire)));
102
- // Stop hydrating
103
- hydrateCtx.hydrate = false;
104
- yield* _(
105
- // Ensure our templates last forever in the DOM environment
106
- // so event listeners are kept attached to the current Scope.
107
- Effect.never,
108
- // Close our scope whenever the current Fiber is interrupted
109
- Effect.ensuring(Scope.close(scope, _effect.Exit.unit)));
110
- }));
111
- };
112
- };
113
- exports.hydrateTemplate = hydrateTemplate;
114
- function findRootParentChildNodes(where) {
115
- const childNodes = findRootChildNodes(where);
116
- return {
117
- parentNode: where,
118
- childNodes
119
- };
120
- }
121
- const START = "typed-start";
122
- const END = "typed-end";
123
- // Finds all of the childNodes between the "typed-start" and "typed-end" comments
124
- function findRootChildNodes(where) {
125
- let start = -1;
126
- let end = -1;
127
- const {
128
- childNodes
129
- } = where;
130
- const length = childNodes.length;
131
- for (let i = 0; i < length; i++) {
132
- const node = childNodes[i];
133
- if (node.nodeType === node.COMMENT_NODE && node.nodeValue === START) {
134
- start = i;
135
- break;
136
- }
137
- }
138
- for (let i = length - 1; i >= Math.max(start, 0); i--) {
139
- const node = childNodes[i];
140
- if (node.nodeType === node.COMMENT_NODE && node.nodeValue === END) {
141
- end = i;
142
- break;
143
- }
144
- }
145
- // If we can't find the start and end comments, just return all childNodes
146
- if (start === -1 && end === -1) {
147
- return Array.from(childNodes);
148
- }
149
- start = start === -1 ? 0 : start;
150
- end = end === -1 ? length - 1 : end;
151
- const rootChildNodes = Array(end - start);
152
- for (let i = start + 1, j = 0; i <= end; i++) {
153
- rootChildNodes[j++] = childNodes[i];
154
- }
155
- return rootChildNodes;
156
- }
157
- function findTemplateResultPartChildNodes(where, parentTemplate, childTemplate, partIndex, manyIndex) {
158
- const [, path] = parentTemplate.parts[partIndex];
159
- const parentNode = (0, _utils.findPath)(where, path);
160
- const childNodesEither = findPartChildNodes(parentNode, childTemplate.hash, partIndex);
161
- if (_effect.Either.isLeft(childNodesEither)) return _effect.Either.left(childNodesEither.left);
162
- const childNodes = childNodesEither.right;
163
- if (manyIndex) {
164
- const manyChildNodes = findManyChildNodes(childNodes, manyIndex);
165
- if (_effect.Either.isLeft(manyChildNodes)) return _effect.Either.left(manyChildNodes.left);
166
- return _effect.Either.right({
167
- parentNode,
168
- childNodes: manyChildNodes.right
169
- });
170
- }
171
- return _effect.Either.right({
172
- parentNode,
173
- childNodes
174
- });
175
- }
176
- function findManyChildNodes(childNodes, manyIndex) {
177
- const either = findManyComment(childNodes, manyIndex);
178
- if (_effect.Either.isLeft(either)) return _effect.Either.left(either.left);
179
- const [, index] = either.right;
180
- return _effect.Either.right(findPreviousManyComment(childNodes.slice(0, index)));
181
- }
182
- function findPartChildNodes({
183
- childNodes
184
- }, hash, partIndex) {
185
- const either = findPartComment(childNodes, partIndex);
186
- if (_effect.Either.isLeft(either)) return _effect.Either.left(either.left);
187
- const [comment, index] = either.right;
188
- const nodes = [];
189
- const previousHoleValue = `hole${partIndex - 1}`;
190
- if (hash) {
191
- for (let i = index; i > -1; --i) {
192
- const node = childNodes[i];
193
- if (partIndex > 0 && (0, _utils.isCommentWithValue)(node, previousHoleValue)) {
194
- break;
195
- }
196
- nodes.unshift(node);
197
- }
198
- } else {
199
- return _effect.Either.right([...(0, _utils.getPreviousNodes)(comment, partIndex), comment]);
200
- }
201
- if (nodes.length === 0) {
202
- return _effect.Either.left(new _errors.CouldNotFindRootElement(partIndex));
203
- }
204
- nodes.push(comment);
205
- return _effect.Either.right(nodes);
206
- }
207
- function findPartComment(childNodes, partIndex) {
208
- const search = partIndex === -1 ? `typed-end` : `hole${partIndex}`;
209
- for (let i = 0; i < childNodes.length; ++i) {
210
- const node = childNodes[i];
211
- if ((0, _utils.isCommentWithValue)(node, search)) {
212
- return _effect.Either.right([node, i]);
213
- }
214
- }
215
- return _effect.Either.left(new _errors.CouldNotFindCommentError(partIndex));
216
- }
217
- function findManyComment(childNodes, manyIndex) {
218
- const search = `many${manyIndex}`;
219
- for (let i = 0; i < childNodes.length; ++i) {
220
- const node = childNodes[i];
221
- if ((0, _utils.isCommentWithValue)(node, search)) {
222
- return _effect.Either.right([node, i]);
223
- }
224
- }
225
- return _effect.Either.left(new _errors.CouldNotFindManyCommentError(manyIndex));
226
- }
227
- function findPreviousManyComment(childNodes) {
228
- for (let i = childNodes.length - 1; i > -1; --i) {
229
- const node = childNodes[i];
230
- if ((0, _utils.isCommentStartingWithValue)(node, "many")) {
231
- return childNodes.slice(i + 1);
232
- }
233
- }
234
- return childNodes;
235
- }
236
- function getHydrateEntry({
237
- document,
238
- manyIndex,
239
- parentTemplate,
240
- renderContext,
241
- rootIndex,
242
- strings,
243
- where
244
- }) {
245
- const {
246
- template
247
- } = (0, _render.getBrowserEntry)(document, renderContext, strings);
248
- if (parentTemplate) {
249
- const either = findTemplateResultPartChildNodes(where, parentTemplate, template, rootIndex, manyIndex);
250
- if (_effect.Either.isLeft(either)) {
251
- return _effect.Either.left(either.left);
252
- }
253
- where = either.right;
254
- }
255
- const wire = (() => {
256
- if (!parentTemplate) {
257
- const childNodes = Array.from(where.childNodes).filter(node => (0, _utils.isComment)(node) ? !(0, _utils.isCommentWithValue)(node, END) : true);
258
- if (childNodes.length === 1) {
259
- return childNodes[0];
260
- }
261
- return childNodes;
262
- }
263
- if (where.childNodes.length === 1) {
264
- return where.childNodes[0];
265
- }
266
- return Array.from(where.childNodes).filter(node => !(0, _utils.isCommentWithValue)(node, `hole${rootIndex}`));
267
- })();
268
- return _effect.Either.right({
269
- template,
270
- wire,
271
- where
272
- });
273
- }
274
- //# sourceMappingURL=hydrate.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"hydrate.js","names":["Fx","_interopRequireWildcard","require","Effect","_RenderEvent","_indexRefCounter","_context","_effect","Scope","_errors","_EventSource","_HydrateContext","_render","_utils","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","prototype","hasOwnProperty","call","i","set","hydrateTemplate","document","renderContext","render_","renderTemplate","templateStrings","values","make","sink","gen","_","runtime","runFork","Runtime","hydrateCtx","unsafeGet","context","HydrateContext","parentScope","scope","fork","ExecutionStrategy","sequential","hydrate","either","getHydrateEntry","strings","Either","isLeft","template","where","wire","right","length","onSuccess","DomRenderEvent","zipRight","never","makeHydrateContext","index","rootIndex","parentTemplate","refCounter","indexRefCounter2","ctx","eventSource","makeEventSource","expected","onCause","onFailure","spreadIndex","effects","part","path","parts","eff","renderPart2","push","Array","isArray","setup","ensuring","close","Exit","unit","exports","findRootParentChildNodes","childNodes","findRootChildNodes","parentNode","START","END","start","end","node","nodeType","COMMENT_NODE","nodeValue","Math","max","from","rootChildNodes","j","findTemplateResultPartChildNodes","childTemplate","partIndex","manyIndex","findPath","childNodesEither","findPartChildNodes","hash","left","manyChildNodes","findManyChildNodes","findManyComment","findPreviousManyComment","slice","findPartComment","comment","nodes","previousHoleValue","isCommentWithValue","unshift","getPreviousNodes","CouldNotFindRootElement","search","CouldNotFindCommentError","CouldNotFindManyCommentError","isCommentStartingWithValue","getBrowserEntry","filter","isComment"],"sources":["../../../src/internal/hydrate.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}