@typed/template 0.1.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 (285) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +5 -0
  3. package/dist/cjs/Directive.js +76 -0
  4. package/dist/cjs/Directive.js.map +1 -0
  5. package/dist/cjs/ElementRef.js +83 -0
  6. package/dist/cjs/ElementRef.js.map +1 -0
  7. package/dist/cjs/ElementSource.js +244 -0
  8. package/dist/cjs/ElementSource.js.map +1 -0
  9. package/dist/cjs/Entry.js +6 -0
  10. package/dist/cjs/Entry.js.map +1 -0
  11. package/dist/cjs/EventHandler.js +65 -0
  12. package/dist/cjs/EventHandler.js.map +1 -0
  13. package/dist/cjs/Html.js +169 -0
  14. package/dist/cjs/Html.js.map +1 -0
  15. package/dist/cjs/HtmlChunk.js +257 -0
  16. package/dist/cjs/HtmlChunk.js.map +1 -0
  17. package/dist/cjs/Hydrate.js +49 -0
  18. package/dist/cjs/Hydrate.js.map +1 -0
  19. package/dist/cjs/Many.js +45 -0
  20. package/dist/cjs/Many.js.map +1 -0
  21. package/dist/cjs/Meta.js +37 -0
  22. package/dist/cjs/Meta.js.map +1 -0
  23. package/dist/cjs/Parser.js +331 -0
  24. package/dist/cjs/Parser.js.map +1 -0
  25. package/dist/cjs/Part.js +6 -0
  26. package/dist/cjs/Part.js.map +1 -0
  27. package/dist/cjs/Placeholder.js +38 -0
  28. package/dist/cjs/Placeholder.js.map +1 -0
  29. package/dist/cjs/Platform.js +64 -0
  30. package/dist/cjs/Platform.js.map +1 -0
  31. package/dist/cjs/Render.js +39 -0
  32. package/dist/cjs/Render.js.map +1 -0
  33. package/dist/cjs/RenderContext.js +130 -0
  34. package/dist/cjs/RenderContext.js.map +1 -0
  35. package/dist/cjs/RenderEvent.js +44 -0
  36. package/dist/cjs/RenderEvent.js.map +1 -0
  37. package/dist/cjs/RenderTemplate.js +41 -0
  38. package/dist/cjs/RenderTemplate.js.map +1 -0
  39. package/dist/cjs/Renderable.js +6 -0
  40. package/dist/cjs/Renderable.js.map +1 -0
  41. package/dist/cjs/Template.js +266 -0
  42. package/dist/cjs/Template.js.map +1 -0
  43. package/dist/cjs/TemplateInstance.js +51 -0
  44. package/dist/cjs/TemplateInstance.js.map +1 -0
  45. package/dist/cjs/Test.js +90 -0
  46. package/dist/cjs/Test.js.map +1 -0
  47. package/dist/cjs/Token.js +270 -0
  48. package/dist/cjs/Token.js.map +1 -0
  49. package/dist/cjs/Tokenizer.js +18 -0
  50. package/dist/cjs/Tokenizer.js.map +1 -0
  51. package/dist/cjs/Vitest.js +44 -0
  52. package/dist/cjs/Vitest.js.map +1 -0
  53. package/dist/cjs/index.js +147 -0
  54. package/dist/cjs/index.js.map +1 -0
  55. package/dist/cjs/internal/HydrateContext.js +13 -0
  56. package/dist/cjs/internal/HydrateContext.js.map +1 -0
  57. package/dist/cjs/internal/browser.js +109 -0
  58. package/dist/cjs/internal/browser.js.map +1 -0
  59. package/dist/cjs/internal/chunks.js +54 -0
  60. package/dist/cjs/internal/chunks.js.map +1 -0
  61. package/dist/cjs/internal/errors.js +23 -0
  62. package/dist/cjs/internal/errors.js.map +1 -0
  63. package/dist/cjs/internal/hydrate.js +197 -0
  64. package/dist/cjs/internal/hydrate.js.map +1 -0
  65. package/dist/cjs/internal/indexRefCounter.js +32 -0
  66. package/dist/cjs/internal/indexRefCounter.js.map +1 -0
  67. package/dist/cjs/internal/module-augmentation.js +6 -0
  68. package/dist/cjs/internal/module-augmentation.js.map +1 -0
  69. package/dist/cjs/internal/parser.js +492 -0
  70. package/dist/cjs/internal/parser.js.map +1 -0
  71. package/dist/cjs/internal/parts.js +350 -0
  72. package/dist/cjs/internal/parts.js.map +1 -0
  73. package/dist/cjs/internal/readAttribute.js +34 -0
  74. package/dist/cjs/internal/readAttribute.js.map +1 -0
  75. package/dist/cjs/internal/render.js +332 -0
  76. package/dist/cjs/internal/render.js.map +1 -0
  77. package/dist/cjs/internal/server.js +219 -0
  78. package/dist/cjs/internal/server.js.map +1 -0
  79. package/dist/cjs/internal/tokenizer.js +264 -0
  80. package/dist/cjs/internal/tokenizer.js.map +1 -0
  81. package/dist/cjs/internal/utils.js +68 -0
  82. package/dist/cjs/internal/utils.js.map +1 -0
  83. package/dist/dts/Directive.d.ts +70 -0
  84. package/dist/dts/Directive.d.ts.map +1 -0
  85. package/dist/dts/ElementRef.d.ts +40 -0
  86. package/dist/dts/ElementRef.d.ts.map +1 -0
  87. package/dist/dts/ElementSource.d.ts +72 -0
  88. package/dist/dts/ElementSource.d.ts.map +1 -0
  89. package/dist/dts/Entry.d.ts +26 -0
  90. package/dist/dts/Entry.d.ts.map +1 -0
  91. package/dist/dts/EventHandler.d.ts +61 -0
  92. package/dist/dts/EventHandler.d.ts.map +1 -0
  93. package/dist/dts/Html.d.ts +17 -0
  94. package/dist/dts/Html.d.ts.map +1 -0
  95. package/dist/dts/HtmlChunk.d.ts +56 -0
  96. package/dist/dts/HtmlChunk.d.ts.map +1 -0
  97. package/dist/dts/Hydrate.d.ts +20 -0
  98. package/dist/dts/Hydrate.d.ts.map +1 -0
  99. package/dist/dts/Many.d.ts +32 -0
  100. package/dist/dts/Many.d.ts.map +1 -0
  101. package/dist/dts/Meta.d.ts +24 -0
  102. package/dist/dts/Meta.d.ts.map +1 -0
  103. package/dist/dts/Parser.d.ts +16 -0
  104. package/dist/dts/Parser.d.ts.map +1 -0
  105. package/dist/dts/Part.d.ts +147 -0
  106. package/dist/dts/Part.d.ts.map +1 -0
  107. package/dist/dts/Placeholder.d.ts +51 -0
  108. package/dist/dts/Placeholder.d.ts.map +1 -0
  109. package/dist/dts/Platform.d.ts +23 -0
  110. package/dist/dts/Platform.d.ts.map +1 -0
  111. package/dist/dts/Render.d.ts +23 -0
  112. package/dist/dts/Render.d.ts.map +1 -0
  113. package/dist/dts/RenderContext.d.ts +88 -0
  114. package/dist/dts/RenderContext.d.ts.map +1 -0
  115. package/dist/dts/RenderEvent.d.ts +37 -0
  116. package/dist/dts/RenderEvent.d.ts.map +1 -0
  117. package/dist/dts/RenderTemplate.d.ts +38 -0
  118. package/dist/dts/RenderTemplate.d.ts.map +1 -0
  119. package/dist/dts/Renderable.d.ts +28 -0
  120. package/dist/dts/Renderable.d.ts.map +1 -0
  121. package/dist/dts/Template.d.ts +218 -0
  122. package/dist/dts/Template.d.ts.map +1 -0
  123. package/dist/dts/TemplateInstance.d.ts +32 -0
  124. package/dist/dts/TemplateInstance.d.ts.map +1 -0
  125. package/dist/dts/Test.d.ts +58 -0
  126. package/dist/dts/Test.d.ts.map +1 -0
  127. package/dist/dts/Token.d.ts +202 -0
  128. package/dist/dts/Token.d.ts.map +1 -0
  129. package/dist/dts/Tokenizer.d.ts +6 -0
  130. package/dist/dts/Tokenizer.d.ts.map +1 -0
  131. package/dist/dts/Vitest.d.ts +28 -0
  132. package/dist/dts/Vitest.d.ts.map +1 -0
  133. package/dist/dts/index.d.ts +65 -0
  134. package/dist/dts/index.d.ts.map +1 -0
  135. package/dist/dts/internal/HydrateContext.d.ts +2 -0
  136. package/dist/dts/internal/HydrateContext.d.ts.map +1 -0
  137. package/dist/dts/internal/browser.d.ts +8 -0
  138. package/dist/dts/internal/browser.d.ts.map +1 -0
  139. package/dist/dts/internal/chunks.d.ts +22 -0
  140. package/dist/dts/internal/chunks.d.ts.map +1 -0
  141. package/dist/dts/internal/errors.d.ts +9 -0
  142. package/dist/dts/internal/errors.d.ts.map +1 -0
  143. package/dist/dts/internal/hydrate.d.ts +37 -0
  144. package/dist/dts/internal/hydrate.d.ts.map +1 -0
  145. package/dist/dts/internal/indexRefCounter.d.ts +6 -0
  146. package/dist/dts/internal/indexRefCounter.d.ts.map +1 -0
  147. package/dist/dts/internal/module-augmentation.d.ts +36 -0
  148. package/dist/dts/internal/module-augmentation.d.ts.map +1 -0
  149. package/dist/dts/internal/parser.d.ts +12 -0
  150. package/dist/dts/internal/parser.d.ts.map +1 -0
  151. package/dist/dts/internal/parts.d.ts +304 -0
  152. package/dist/dts/internal/parts.d.ts.map +1 -0
  153. package/dist/dts/internal/readAttribute.d.ts +9 -0
  154. package/dist/dts/internal/readAttribute.d.ts.map +1 -0
  155. package/dist/dts/internal/render.d.ts +30 -0
  156. package/dist/dts/internal/render.d.ts.map +1 -0
  157. package/dist/dts/internal/server.d.ts +31 -0
  158. package/dist/dts/internal/server.d.ts.map +1 -0
  159. package/dist/dts/internal/tokenizer.d.ts +3 -0
  160. package/dist/dts/internal/tokenizer.d.ts.map +1 -0
  161. package/dist/dts/internal/utils.d.ts +15 -0
  162. package/dist/dts/internal/utils.d.ts.map +1 -0
  163. package/dist/esm/Directive.js +64 -0
  164. package/dist/esm/Directive.js.map +1 -0
  165. package/dist/esm/ElementRef.js +72 -0
  166. package/dist/esm/ElementRef.js.map +1 -0
  167. package/dist/esm/ElementSource.js +237 -0
  168. package/dist/esm/ElementSource.js.map +1 -0
  169. package/dist/esm/Entry.js +2 -0
  170. package/dist/esm/Entry.js.map +1 -0
  171. package/dist/esm/EventHandler.js +52 -0
  172. package/dist/esm/EventHandler.js.map +1 -0
  173. package/dist/esm/Html.js +167 -0
  174. package/dist/esm/Html.js.map +1 -0
  175. package/dist/esm/HtmlChunk.js +274 -0
  176. package/dist/esm/HtmlChunk.js.map +1 -0
  177. package/dist/esm/Hydrate.js +37 -0
  178. package/dist/esm/Hydrate.js.map +1 -0
  179. package/dist/esm/Many.js +33 -0
  180. package/dist/esm/Many.js.map +1 -0
  181. package/dist/esm/Meta.js +29 -0
  182. package/dist/esm/Meta.js.map +1 -0
  183. package/dist/esm/Parser.js +342 -0
  184. package/dist/esm/Parser.js.map +1 -0
  185. package/dist/esm/Part.js +5 -0
  186. package/dist/esm/Part.js.map +1 -0
  187. package/dist/esm/Placeholder.js +30 -0
  188. package/dist/esm/Placeholder.js.map +1 -0
  189. package/dist/esm/Platform.js +41 -0
  190. package/dist/esm/Platform.js.map +1 -0
  191. package/dist/esm/Render.js +27 -0
  192. package/dist/esm/Render.js.map +1 -0
  193. package/dist/esm/RenderContext.js +113 -0
  194. package/dist/esm/RenderContext.js.map +1 -0
  195. package/dist/esm/RenderEvent.js +36 -0
  196. package/dist/esm/RenderEvent.js.map +1 -0
  197. package/dist/esm/RenderTemplate.js +26 -0
  198. package/dist/esm/RenderTemplate.js.map +1 -0
  199. package/dist/esm/Renderable.js +2 -0
  200. package/dist/esm/Renderable.js.map +1 -0
  201. package/dist/esm/Template.js +239 -0
  202. package/dist/esm/Template.js.map +1 -0
  203. package/dist/esm/TemplateInstance.js +43 -0
  204. package/dist/esm/TemplateInstance.js.map +1 -0
  205. package/dist/esm/Test.js +68 -0
  206. package/dist/esm/Test.js.map +1 -0
  207. package/dist/esm/Token.js +264 -0
  208. package/dist/esm/Token.js.map +1 -0
  209. package/dist/esm/Tokenizer.js +9 -0
  210. package/dist/esm/Tokenizer.js.map +1 -0
  211. package/dist/esm/Vitest.js +29 -0
  212. package/dist/esm/Vitest.js.map +1 -0
  213. package/dist/esm/index.js +65 -0
  214. package/dist/esm/index.js.map +1 -0
  215. package/dist/esm/internal/HydrateContext.js +7 -0
  216. package/dist/esm/internal/HydrateContext.js.map +1 -0
  217. package/dist/esm/internal/browser.js +102 -0
  218. package/dist/esm/internal/browser.js.map +1 -0
  219. package/dist/esm/internal/chunks.js +47 -0
  220. package/dist/esm/internal/chunks.js.map +1 -0
  221. package/dist/esm/internal/errors.js +15 -0
  222. package/dist/esm/internal/errors.js.map +1 -0
  223. package/dist/esm/internal/hydrate.js +165 -0
  224. package/dist/esm/internal/hydrate.js.map +1 -0
  225. package/dist/esm/internal/indexRefCounter.js +24 -0
  226. package/dist/esm/internal/indexRefCounter.js.map +1 -0
  227. package/dist/esm/internal/module-augmentation.js +2 -0
  228. package/dist/esm/internal/module-augmentation.js.map +1 -0
  229. package/dist/esm/internal/parser.js +493 -0
  230. package/dist/esm/internal/parser.js.map +1 -0
  231. package/dist/esm/internal/parts.js +291 -0
  232. package/dist/esm/internal/parts.js.map +1 -0
  233. package/dist/esm/internal/readAttribute.js +24 -0
  234. package/dist/esm/internal/readAttribute.js.map +1 -0
  235. package/dist/esm/internal/render.js +329 -0
  236. package/dist/esm/internal/render.js.map +1 -0
  237. package/dist/esm/internal/server.js +174 -0
  238. package/dist/esm/internal/server.js.map +1 -0
  239. package/dist/esm/internal/tokenizer.js +296 -0
  240. package/dist/esm/internal/tokenizer.js.map +1 -0
  241. package/dist/esm/internal/utils.js +52 -0
  242. package/dist/esm/internal/utils.js.map +1 -0
  243. package/dist/esm/package.json +4 -0
  244. package/package.json +242 -0
  245. package/src/Directive.ts +114 -0
  246. package/src/ElementRef.ts +123 -0
  247. package/src/ElementSource.ts +417 -0
  248. package/src/Entry.ts +28 -0
  249. package/src/EventHandler.ts +104 -0
  250. package/src/Html.ts +258 -0
  251. package/src/HtmlChunk.ts +346 -0
  252. package/src/Hydrate.ts +53 -0
  253. package/src/Many.ts +128 -0
  254. package/src/Meta.ts +32 -0
  255. package/src/Parser.ts +457 -0
  256. package/src/Part.ts +186 -0
  257. package/src/Placeholder.ts +70 -0
  258. package/src/Platform.ts +71 -0
  259. package/src/Render.ts +45 -0
  260. package/src/RenderContext.ts +221 -0
  261. package/src/RenderEvent.ts +67 -0
  262. package/src/RenderTemplate.ts +88 -0
  263. package/src/Renderable.ts +34 -0
  264. package/src/Template.ts +284 -0
  265. package/src/TemplateInstance.ts +83 -0
  266. package/src/Test.ts +151 -0
  267. package/src/Token.ts +269 -0
  268. package/src/Tokenizer.ts +10 -0
  269. package/src/Vitest.ts +61 -0
  270. package/src/index.ts +66 -0
  271. package/src/internal/HydrateContext.ts +23 -0
  272. package/src/internal/browser.ts +132 -0
  273. package/src/internal/chunks.ts +73 -0
  274. package/src/internal/errors.ts +11 -0
  275. package/src/internal/external.d.ts +11 -0
  276. package/src/internal/hydrate.ts +262 -0
  277. package/src/internal/indexRefCounter.ts +33 -0
  278. package/src/internal/module-augmentation.ts +48 -0
  279. package/src/internal/parser.ts +637 -0
  280. package/src/internal/parts.ts +527 -0
  281. package/src/internal/readAttribute.ts +28 -0
  282. package/src/internal/render.ts +529 -0
  283. package/src/internal/server.ts +293 -0
  284. package/src/internal/tokenizer.ts +338 -0
  285. package/src/internal/utils.ts +73 -0
package/package.json ADDED
@@ -0,0 +1,242 @@
1
+ {
2
+ "name": "@typed/template",
3
+ "version": "0.1.0",
4
+ "description": "",
5
+ "license": "MIT",
6
+ "repository": {
7
+ "type": "git",
8
+ "url": "https://github.com/tylors/typed.git"
9
+ },
10
+ "sideEffects": [],
11
+ "author": "Typed contributors",
12
+ "dependencies": {
13
+ "@effect/platform": "^0.31.1",
14
+ "@effect/schema": "0.49.4",
15
+ "effect": "2.0.0-next.56",
16
+ "typed-query-selector": "^2.11.0",
17
+ "udomdiff": "^1.1.0",
18
+ "@typed/context": "0.1.0",
19
+ "@typed/environment": "0.1.0",
20
+ "@typed/dom": "0.1.0",
21
+ "@typed/fx": "1.18.0",
22
+ "@typed/wire": "0.2.0"
23
+ },
24
+ "peerDependencies": {
25
+ "effect": "2.0.0-next.56"
26
+ },
27
+ "main": "./dist/cjs/index.js",
28
+ "module": "./dist/esm/index.js",
29
+ "types": "./dist/dts/index.d.ts",
30
+ "exports": {
31
+ "./package.json": "./package.json",
32
+ ".": {
33
+ "types": "./dist/dts/index.d.ts",
34
+ "import": "./dist/esm/index.js",
35
+ "default": "./dist/cjs/index.js"
36
+ },
37
+ "./Directive": {
38
+ "types": "./dist/dts/Directive.d.ts",
39
+ "import": "./dist/esm/Directive.js",
40
+ "default": "./dist/cjs/Directive.js"
41
+ },
42
+ "./ElementRef": {
43
+ "types": "./dist/dts/ElementRef.d.ts",
44
+ "import": "./dist/esm/ElementRef.js",
45
+ "default": "./dist/cjs/ElementRef.js"
46
+ },
47
+ "./ElementSource": {
48
+ "types": "./dist/dts/ElementSource.d.ts",
49
+ "import": "./dist/esm/ElementSource.js",
50
+ "default": "./dist/cjs/ElementSource.js"
51
+ },
52
+ "./Entry": {
53
+ "types": "./dist/dts/Entry.d.ts",
54
+ "import": "./dist/esm/Entry.js",
55
+ "default": "./dist/cjs/Entry.js"
56
+ },
57
+ "./EventHandler": {
58
+ "types": "./dist/dts/EventHandler.d.ts",
59
+ "import": "./dist/esm/EventHandler.js",
60
+ "default": "./dist/cjs/EventHandler.js"
61
+ },
62
+ "./Html": {
63
+ "types": "./dist/dts/Html.d.ts",
64
+ "import": "./dist/esm/Html.js",
65
+ "default": "./dist/cjs/Html.js"
66
+ },
67
+ "./HtmlChunk": {
68
+ "types": "./dist/dts/HtmlChunk.d.ts",
69
+ "import": "./dist/esm/HtmlChunk.js",
70
+ "default": "./dist/cjs/HtmlChunk.js"
71
+ },
72
+ "./Hydrate": {
73
+ "types": "./dist/dts/Hydrate.d.ts",
74
+ "import": "./dist/esm/Hydrate.js",
75
+ "default": "./dist/cjs/Hydrate.js"
76
+ },
77
+ "./Many": {
78
+ "types": "./dist/dts/Many.d.ts",
79
+ "import": "./dist/esm/Many.js",
80
+ "default": "./dist/cjs/Many.js"
81
+ },
82
+ "./Meta": {
83
+ "types": "./dist/dts/Meta.d.ts",
84
+ "import": "./dist/esm/Meta.js",
85
+ "default": "./dist/cjs/Meta.js"
86
+ },
87
+ "./Parser": {
88
+ "types": "./dist/dts/Parser.d.ts",
89
+ "import": "./dist/esm/Parser.js",
90
+ "default": "./dist/cjs/Parser.js"
91
+ },
92
+ "./Part": {
93
+ "types": "./dist/dts/Part.d.ts",
94
+ "import": "./dist/esm/Part.js",
95
+ "default": "./dist/cjs/Part.js"
96
+ },
97
+ "./Placeholder": {
98
+ "types": "./dist/dts/Placeholder.d.ts",
99
+ "import": "./dist/esm/Placeholder.js",
100
+ "default": "./dist/cjs/Placeholder.js"
101
+ },
102
+ "./Platform": {
103
+ "types": "./dist/dts/Platform.d.ts",
104
+ "import": "./dist/esm/Platform.js",
105
+ "default": "./dist/cjs/Platform.js"
106
+ },
107
+ "./Render": {
108
+ "types": "./dist/dts/Render.d.ts",
109
+ "import": "./dist/esm/Render.js",
110
+ "default": "./dist/cjs/Render.js"
111
+ },
112
+ "./RenderContext": {
113
+ "types": "./dist/dts/RenderContext.d.ts",
114
+ "import": "./dist/esm/RenderContext.js",
115
+ "default": "./dist/cjs/RenderContext.js"
116
+ },
117
+ "./RenderEvent": {
118
+ "types": "./dist/dts/RenderEvent.d.ts",
119
+ "import": "./dist/esm/RenderEvent.js",
120
+ "default": "./dist/cjs/RenderEvent.js"
121
+ },
122
+ "./RenderTemplate": {
123
+ "types": "./dist/dts/RenderTemplate.d.ts",
124
+ "import": "./dist/esm/RenderTemplate.js",
125
+ "default": "./dist/cjs/RenderTemplate.js"
126
+ },
127
+ "./Renderable": {
128
+ "types": "./dist/dts/Renderable.d.ts",
129
+ "import": "./dist/esm/Renderable.js",
130
+ "default": "./dist/cjs/Renderable.js"
131
+ },
132
+ "./Template": {
133
+ "types": "./dist/dts/Template.d.ts",
134
+ "import": "./dist/esm/Template.js",
135
+ "default": "./dist/cjs/Template.js"
136
+ },
137
+ "./TemplateInstance": {
138
+ "types": "./dist/dts/TemplateInstance.d.ts",
139
+ "import": "./dist/esm/TemplateInstance.js",
140
+ "default": "./dist/cjs/TemplateInstance.js"
141
+ },
142
+ "./Test": {
143
+ "types": "./dist/dts/Test.d.ts",
144
+ "import": "./dist/esm/Test.js",
145
+ "default": "./dist/cjs/Test.js"
146
+ },
147
+ "./Token": {
148
+ "types": "./dist/dts/Token.d.ts",
149
+ "import": "./dist/esm/Token.js",
150
+ "default": "./dist/cjs/Token.js"
151
+ },
152
+ "./Tokenizer": {
153
+ "types": "./dist/dts/Tokenizer.d.ts",
154
+ "import": "./dist/esm/Tokenizer.js",
155
+ "default": "./dist/cjs/Tokenizer.js"
156
+ },
157
+ "./Vitest": {
158
+ "types": "./dist/dts/Vitest.d.ts",
159
+ "import": "./dist/esm/Vitest.js",
160
+ "default": "./dist/cjs/Vitest.js"
161
+ }
162
+ },
163
+ "typesVersions": {
164
+ "*": {
165
+ "Directive": [
166
+ "./dist/dts/Directive.d.ts"
167
+ ],
168
+ "ElementRef": [
169
+ "./dist/dts/ElementRef.d.ts"
170
+ ],
171
+ "ElementSource": [
172
+ "./dist/dts/ElementSource.d.ts"
173
+ ],
174
+ "Entry": [
175
+ "./dist/dts/Entry.d.ts"
176
+ ],
177
+ "EventHandler": [
178
+ "./dist/dts/EventHandler.d.ts"
179
+ ],
180
+ "Html": [
181
+ "./dist/dts/Html.d.ts"
182
+ ],
183
+ "HtmlChunk": [
184
+ "./dist/dts/HtmlChunk.d.ts"
185
+ ],
186
+ "Hydrate": [
187
+ "./dist/dts/Hydrate.d.ts"
188
+ ],
189
+ "Many": [
190
+ "./dist/dts/Many.d.ts"
191
+ ],
192
+ "Meta": [
193
+ "./dist/dts/Meta.d.ts"
194
+ ],
195
+ "Parser": [
196
+ "./dist/dts/Parser.d.ts"
197
+ ],
198
+ "Part": [
199
+ "./dist/dts/Part.d.ts"
200
+ ],
201
+ "Placeholder": [
202
+ "./dist/dts/Placeholder.d.ts"
203
+ ],
204
+ "Platform": [
205
+ "./dist/dts/Platform.d.ts"
206
+ ],
207
+ "Render": [
208
+ "./dist/dts/Render.d.ts"
209
+ ],
210
+ "RenderContext": [
211
+ "./dist/dts/RenderContext.d.ts"
212
+ ],
213
+ "RenderEvent": [
214
+ "./dist/dts/RenderEvent.d.ts"
215
+ ],
216
+ "RenderTemplate": [
217
+ "./dist/dts/RenderTemplate.d.ts"
218
+ ],
219
+ "Renderable": [
220
+ "./dist/dts/Renderable.d.ts"
221
+ ],
222
+ "Template": [
223
+ "./dist/dts/Template.d.ts"
224
+ ],
225
+ "TemplateInstance": [
226
+ "./dist/dts/TemplateInstance.d.ts"
227
+ ],
228
+ "Test": [
229
+ "./dist/dts/Test.d.ts"
230
+ ],
231
+ "Token": [
232
+ "./dist/dts/Token.d.ts"
233
+ ],
234
+ "Tokenizer": [
235
+ "./dist/dts/Tokenizer.d.ts"
236
+ ],
237
+ "Vitest": [
238
+ "./dist/dts/Vitest.d.ts"
239
+ ]
240
+ }
241
+ }
242
+ }
@@ -0,0 +1,114 @@
1
+ /**
2
+ * @since 1.0.0
3
+ */
4
+
5
+ import * as Effect from "effect/Effect"
6
+ import type * as Part from "./Part"
7
+ import type { Placeholder } from "./Placeholder"
8
+
9
+ /**
10
+ * @since 1.0.0
11
+ */
12
+ export const DirectiveTypeId = Symbol.for(".Directive")
13
+ /**
14
+ * @since 1.0.0
15
+ */
16
+ export type DirectiveTypeId = typeof DirectiveTypeId
17
+
18
+ /**
19
+ * @since 1.0.0
20
+ */
21
+ export interface Directive<R, E> extends Placeholder<R, E, unknown> {
22
+ readonly [DirectiveTypeId]: DirectiveTypeId
23
+
24
+ (part: Part.Part): Effect.Effect<R, E, unknown>
25
+ }
26
+
27
+ /**
28
+ * @since 1.0.0
29
+ */
30
+ export function Directive<R, E>(
31
+ directive: (part: Part.Part) => Effect.Effect<R, E, unknown>
32
+ ): Directive<R, E> {
33
+ return Object.assign((p: Part.Part) => directive(p), {
34
+ [DirectiveTypeId]: DirectiveTypeId
35
+ }) as Directive<R, E>
36
+ }
37
+
38
+ const withTag = <T extends Part.Part["_tag"]>(tag: T) =>
39
+ <R, E>(
40
+ directive: (part: Extract<Part.Part, { readonly _tag: T }>) => Effect.Effect<R, E, unknown>
41
+ ): Directive<R, E> =>
42
+ Directive((part) =>
43
+ part._tag === tag ? directive(part as any) : Effect.logDebug(`Expected ${tag} Part but received ${part._tag}`)
44
+ )
45
+
46
+ /**
47
+ * @since 1.0.0
48
+ */
49
+ export const attribute: <R, E>(
50
+ directive: (part: Part.AttributePart) => Effect.Effect<R, E, unknown>
51
+ ) => Directive<R, E> = withTag("attribute")
52
+
53
+ /**
54
+ * @since 1.0.0
55
+ */
56
+ export const boolean: <R, E>(directive: (part: Part.BooleanPart) => Effect.Effect<R, E, unknown>) => Directive<R, E> =
57
+ withTag("boolean")
58
+
59
+ /**
60
+ * @since 1.0.0
61
+ */
62
+ export const className: <R, E>(
63
+ directive: (part: Part.ClassNamePart) => Effect.Effect<R, E, unknown>
64
+ ) => Directive<R, E> = withTag("className")
65
+
66
+ /**
67
+ * @since 1.0.0
68
+ */
69
+ export const data: <R, E>(directive: (part: Part.DataPart) => Effect.Effect<R, E, unknown>) => Directive<R, E> =
70
+ withTag("data")
71
+
72
+ /**
73
+ * @since 1.0.0
74
+ */
75
+ export const event: <R, E>(directive: (part: Part.EventPart) => Effect.Effect<R, E, unknown>) => Directive<R, E> =
76
+ withTag("event")
77
+
78
+ /**
79
+ * @since 1.0.0
80
+ */
81
+ export const property: <R, E>(directive: (part: Part.PropertyPart) => Effect.Effect<R, E, unknown>) => Directive<R, E> =
82
+ withTag("property")
83
+
84
+ /**
85
+ * @since 1.0.0
86
+ */
87
+ export const ref: <R, E>(directive: (part: Part.RefPart) => Effect.Effect<R, E, unknown>) => Directive<R, E> = withTag(
88
+ "ref"
89
+ )
90
+
91
+ /**
92
+ * @since 1.0.0
93
+ */
94
+ export const comment: <R, E>(directive: (part: Part.CommentPart) => Effect.Effect<R, E, unknown>) => Directive<R, E> =
95
+ withTag("comment")
96
+
97
+ /**
98
+ * @since 1.0.0
99
+ */
100
+ export const text: <R, E>(directive: (part: Part.TextPart) => Effect.Effect<R, E, unknown>) => Directive<R, E> =
101
+ withTag("text")
102
+
103
+ /**
104
+ * @since 1.0.0
105
+ */
106
+ export const node: <R, E>(directive: (part: Part.NodePart) => Effect.Effect<R, E, unknown>) => Directive<R, E> =
107
+ withTag("node")
108
+
109
+ /**
110
+ * @since 1.0.0
111
+ */
112
+ export function isDirective<R, E>(renderable: unknown): renderable is Directive<R, E> {
113
+ return typeof renderable === "function" && DirectiveTypeId in (renderable as any)
114
+ }
@@ -0,0 +1,123 @@
1
+ /**
2
+ * @since 1.0.0
3
+ */
4
+ import type { Fx } from "@typed/fx/Fx"
5
+ import { compact } from "@typed/fx/Fx"
6
+ import { FxEffectBase } from "@typed/fx/internal/protos"
7
+ import * as RefSubject from "@typed/fx/RefSubject"
8
+ import type { Versioned } from "@typed/fx/Versioned"
9
+ import { type Rendered } from "@typed/wire"
10
+ import type { Scope } from "effect"
11
+ import { Effect, Option } from "effect"
12
+ import type { NoSuchElementException } from "effect/Cause"
13
+ import { dual } from "effect/Function"
14
+ import type { DefaultEventMap } from "./ElementSource"
15
+ import { ElementSource, getElements } from "./ElementSource"
16
+ import { adjustTime } from "./internal/utils"
17
+ import type { Placeholder } from "./Placeholder"
18
+
19
+ export const ElementRefTypeId = Symbol.for("./ElementRef")
20
+ export type ElementRefTypeId = typeof ElementRefTypeId
21
+
22
+ /**
23
+ * A reference to a rendered element.
24
+ * @since 1.0.0
25
+ */
26
+ export interface ElementRef<T extends Rendered = Rendered>
27
+ extends Versioned<never, never, never, never, T, never, NoSuchElementException, T>
28
+ {
29
+ readonly [ElementRefTypeId]: RefSubject.RefSubject<never, never, Option.Option<T>>
30
+
31
+ readonly query: ElementSource<T>["query"]
32
+ readonly events: ElementSource<T>["events"]
33
+ readonly elements: ElementSource<T>["elements"]
34
+ readonly dispatchEvent: ElementSource<T>["dispatchEvent"]
35
+ }
36
+
37
+ const strictEqual = Option.getEquivalence((a, b) => a === b)
38
+
39
+ /**
40
+ * @since 1.0.0
41
+ */
42
+ export function make<T extends Rendered = Rendered>(): Effect.Effect<Scope.Scope, never, ElementRef<T>> {
43
+ return Effect.map(
44
+ RefSubject.of(Option.none<T>(), strictEqual),
45
+ (ref) => new ElementRefImpl(ref) as any as ElementRef<T>
46
+ )
47
+ }
48
+
49
+ /**
50
+ * @since 1.0.0
51
+ */
52
+ export function of<T extends Rendered>(rendered: T): Effect.Effect<Scope.Scope, never, ElementRef<T>> {
53
+ return Effect.map(
54
+ RefSubject.of(Option.some<T>(rendered), strictEqual),
55
+ (ref) => new ElementRefImpl(ref) as any as ElementRef<T>
56
+ )
57
+ }
58
+
59
+ // @ts-expect-error placeholder issues
60
+ class ElementRefImpl<T extends Rendered> extends FxEffectBase<never, never, T, never, NoSuchElementException, T>
61
+ implements
62
+ Omit<ElementRef<T>, keyof Placeholder<never, never, T> | keyof Placeholder<never, NoSuchElementException, T>>
63
+ {
64
+ readonly [ElementRefTypeId]: RefSubject.RefSubject<never, never, Option.Option<T>>
65
+
66
+ private source: ElementSource<
67
+ T,
68
+ DefaultEventMap<T>
69
+ >
70
+
71
+ readonly query: ElementRef<T>["query"]
72
+ readonly events: ElementRef<T>["events"]
73
+ readonly elements: ElementRef<T>["elements"]
74
+ readonly version: ElementRef<T>["version"]
75
+ readonly dispatchEvent: ElementRef<T>["dispatchEvent"]
76
+
77
+ constructor(readonly ref: RefSubject.RefSubject<never, never, Option.Option<T>>) {
78
+ super()
79
+ this[ElementRefTypeId] = ref
80
+ this.source = ElementSource(RefSubject.compact(ref))
81
+ this.query = this.source.query
82
+ this.events = this.source.events
83
+ this.elements = this.source.elements
84
+ this.dispatchEvent = this.source.dispatchEvent
85
+ this.version = ref.version
86
+ }
87
+
88
+ protected toFx(): Fx<never, never, T> {
89
+ return compact(this.ref)
90
+ }
91
+
92
+ protected toEffect(): Effect.Effect<never, NoSuchElementException, T> {
93
+ return Effect.flatten(this.ref.get)
94
+ }
95
+ }
96
+
97
+ /**
98
+ * @since 1.0.0
99
+ */
100
+ export const set: {
101
+ <A extends Rendered>(value: A): (elementRef: ElementRef<A>) => Effect.Effect<never, never, A>
102
+ <A extends Rendered>(elementRef: ElementRef<A>, value: A): Effect.Effect<never, never, A>
103
+ } = dual(2, function set<A extends Rendered>(elementRef: ElementRef<A>, value: A) {
104
+ return Effect.as(elementRef[ElementRefTypeId].set(Option.some(value)), value)
105
+ })
106
+
107
+ /**
108
+ * @since 1.0.0
109
+ */
110
+ export function dispatchEvent<T extends Rendered>(ref: ElementRef<T>, event: Event) {
111
+ return ref.pipe(
112
+ Effect.flatMap((rendered) => {
113
+ const elements = getElements(rendered)
114
+ if (elements.length === 0) return Option.none()
115
+ // TODO: How should we manage multiple elements?
116
+ return Effect.sync(() => elements[0].dispatchEvent(event))
117
+ }),
118
+ // Allow changes to take place
119
+ Effect.zipRight(adjustTime(1)),
120
+ // Allow additional fibers to start
121
+ Effect.zipRight(adjustTime(1))
122
+ )
123
+ }