@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
@@ -0,0 +1,169 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.renderToHtml = renderToHtml;
7
+ exports.renderToHtmlString = renderToHtmlString;
8
+ var Fx = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@typed/fx/Fx"));
9
+ var _Sink = /*#__PURE__*/require("@typed/fx/Sink");
10
+ var _TypeId = /*#__PURE__*/require("@typed/fx/TypeId");
11
+ var _effect = /*#__PURE__*/require("effect");
12
+ var _ReadonlyArray = /*#__PURE__*/require("effect/ReadonlyArray");
13
+ var _Directive = /*#__PURE__*/require("./Directive");
14
+ var ElementRef = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("./ElementRef"));
15
+ var _HtmlChunk = /*#__PURE__*/require("./HtmlChunk");
16
+ var _parser = /*#__PURE__*/require("./internal/parser");
17
+ var _server = /*#__PURE__*/require("./internal/server");
18
+ var _Meta = /*#__PURE__*/require("./Meta");
19
+ var _RenderContext = /*#__PURE__*/require("./RenderContext");
20
+ var _RenderEvent = /*#__PURE__*/require("./RenderEvent");
21
+ var _RenderTemplate = /*#__PURE__*/require("./RenderTemplate");
22
+ var _TemplateInstance = /*#__PURE__*/require("./TemplateInstance");
23
+ 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); }
24
+ 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; }
25
+ /**
26
+ * @since 1.0.0
27
+ */
28
+
29
+ const toHtml = r => r.html;
30
+ /**
31
+ * @since 1.0.0
32
+ */
33
+ function renderToHtml(fx) {
34
+ return Fx.fromFxEffect(_RenderContext.RenderContext.with(ctx => fx.pipe(Fx.provide(_RenderTemplate.RenderTemplate.layer(renderHtml(ctx))), Fx.map(toHtml), Fx.startWith(_Meta.TYPED_START), Fx.endWith(_Meta.TYPED_END))));
35
+ }
36
+ /**
37
+ * @since 1.0.0
38
+ */
39
+ function renderToHtmlString(fx) {
40
+ return _effect.Effect.map(Fx.toReadonlyArray(renderToHtml(fx)), (0, _ReadonlyArray.join)(""));
41
+ }
42
+ function renderHtml(ctx) {
43
+ return (templateStrings, values, providedRef) => {
44
+ return _effect.Effect.gen(function* (_) {
45
+ const ref = providedRef || (yield* _(ElementRef.make()));
46
+ const entry = getServerEntry(templateStrings, ctx.templateCache);
47
+ if (values.length === 0) {
48
+ return (0, _TemplateInstance.TemplateInstance)(Fx.succeed((0, _RenderEvent.HtmlRenderEvent)(entry.chunks[0].value)), ref);
49
+ } else {
50
+ return (0, _TemplateInstance.TemplateInstance)(Fx.filter(Fx.mergeBuffer(entry.chunks.map(chunk => renderChunk(chunk, values))), x => x.valueOf().length > 0), ref);
51
+ }
52
+ });
53
+ };
54
+ }
55
+ function renderChunk(chunk, values) {
56
+ if (chunk._tag === "text") {
57
+ return Fx.succeed((0, _RenderEvent.HtmlRenderEvent)(chunk.value));
58
+ } else if (chunk._tag === "part") {
59
+ return renderPart(chunk, values);
60
+ } else {
61
+ return renderSparsePart(chunk, values);
62
+ }
63
+ }
64
+ function renderNode(renderable) {
65
+ switch (typeof renderable) {
66
+ case "string":
67
+ case "number":
68
+ case "boolean":
69
+ case "bigint":
70
+ return Fx.succeed((0, _RenderEvent.HtmlRenderEvent)(_Meta.TEXT_START + renderable.toString()));
71
+ case "undefined":
72
+ case "object":
73
+ return renderObject(renderable);
74
+ default:
75
+ return Fx.empty;
76
+ }
77
+ }
78
+ function renderObject(renderable) {
79
+ if (renderable === null || renderable === undefined) {
80
+ return Fx.succeed((0, _RenderEvent.HtmlRenderEvent)(_Meta.TEXT_START));
81
+ } else if (Array.isArray(renderable)) {
82
+ return Fx.mergeBuffer(renderable.map(renderNode));
83
+ } else if (Fx.isFx(renderable)) {
84
+ return Fx.concatMap(takeOneIfNotRenderEvent(renderable), renderNode);
85
+ } else if (_effect.Effect.isEffect(renderable)) {
86
+ return Fx.switchMap(Fx.fromEffect(renderable), renderNode);
87
+ } else if ((0, _RenderEvent.isRenderEvent)(renderable)) {
88
+ return Fx.succeed(renderable);
89
+ } else {
90
+ return Fx.empty;
91
+ }
92
+ }
93
+ function renderPart(chunk, values) {
94
+ const {
95
+ node,
96
+ render
97
+ } = chunk;
98
+ const renderable = values[node.index];
99
+ // Refs and events are not rendered into HTML
100
+ if ((0, _Directive.isDirective)(renderable)) {
101
+ return Fx.fromSink(sink => {
102
+ const part = (0, _server.partNodeToPart)(node, value => sink.onSuccess((0, _RenderEvent.HtmlRenderEvent)(render(value))));
103
+ return _effect.Effect.catchAllCause(renderable(part), sink.onFailure);
104
+ });
105
+ } else if (node._tag === "node") {
106
+ return Fx.endWith(renderNode(renderable), (0, _RenderEvent.HtmlRenderEvent)((0, _Meta.TYPED_HOLE)(node.index)));
107
+ } else {
108
+ const html = Fx.filterMap(Fx.take(unwrapRenderable(renderable), 1), value => {
109
+ const s = render(value);
110
+ return s ? _effect.Option.some((0, _RenderEvent.HtmlRenderEvent)(s)) : _effect.Option.none();
111
+ });
112
+ if (node._tag === "text-part") {
113
+ return Fx.endWith(Fx.startWith(html, (0, _RenderEvent.HtmlRenderEvent)(_Meta.TEXT_START)), (0, _RenderEvent.HtmlRenderEvent)((0, _Meta.TYPED_HOLE)(node.index)));
114
+ }
115
+ return html;
116
+ }
117
+ }
118
+ function renderSparsePart(chunk, values) {
119
+ const {
120
+ node,
121
+ render
122
+ } = chunk;
123
+ return Fx.map(Fx.take(Fx.combine(node.nodes.map(node => {
124
+ if (node._tag === "text") return Fx.succeed(node.value);
125
+ const renderable = values[node.index];
126
+ if ((0, _Directive.isDirective)(renderable)) {
127
+ return Fx.fromSink(sink => _effect.Effect.catchAllCause(renderable((0, _server.partNodeToPart)(node, value => sink.onSuccess(value))), sink.onFailure));
128
+ }
129
+ return unwrapRenderable(renderable);
130
+ })), 1), value => (0, _RenderEvent.HtmlRenderEvent)(render(value)));
131
+ }
132
+ function takeOneIfNotRenderEvent(fx) {
133
+ return Fx.withEarlyExit(({
134
+ fork,
135
+ sink
136
+ }) => Fx.run(fx, (0, _Sink.Sink)(sink.onFailure, event => (0, _RenderEvent.isRenderEvent)(event) ? sink.onSuccess(event) : _effect.Effect.zipRight(sink.onSuccess(event), sink.earlyExit))).pipe(fork, _effect.Effect.fromFiberEffect));
137
+ }
138
+ function getServerEntry(templateStrings, templateCache) {
139
+ const cached = templateCache.get(templateStrings);
140
+ if (cached === undefined || cached._tag === "Browser") {
141
+ const template = (0, _parser.parse)(templateStrings);
142
+ const entry = {
143
+ _tag: "Server",
144
+ template,
145
+ chunks: (0, _HtmlChunk.templateToHtmlChunks)(template)
146
+ };
147
+ return entry;
148
+ } else {
149
+ return cached;
150
+ }
151
+ }
152
+ function unwrapRenderable(renderable) {
153
+ switch (typeof renderable) {
154
+ case "undefined":
155
+ case "object":
156
+ {
157
+ if (renderable === null || renderable === undefined) return Fx.succeed(null);else if (Array.isArray(renderable)) {
158
+ return Fx.combine(renderable.map(unwrapRenderable));
159
+ } else if (_TypeId.TypeId in renderable) {
160
+ return renderable;
161
+ } else if (_effect.Effect.EffectTypeId in renderable) {
162
+ return Fx.fromFxEffect(_effect.Effect.map(renderable, unwrapRenderable));
163
+ } else return Fx.succeed(renderable);
164
+ }
165
+ default:
166
+ return Fx.succeed(renderable);
167
+ }
168
+ }
169
+ //# sourceMappingURL=Html.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Html.js","names":["Fx","_interopRequireWildcard","require","_Sink","_TypeId","_effect","_ReadonlyArray","_Directive","ElementRef","_HtmlChunk","_parser","_server","_Meta","_RenderContext","_RenderEvent","_RenderTemplate","_TemplateInstance","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","prototype","hasOwnProperty","call","i","set","toHtml","html","renderToHtml","fx","fromFxEffect","RenderContext","with","ctx","pipe","provide","RenderTemplate","layer","renderHtml","map","startWith","TYPED_START","endWith","TYPED_END","renderToHtmlString","Effect","toReadonlyArray","join","templateStrings","values","providedRef","gen","_","ref","make","entry","getServerEntry","templateCache","length","TemplateInstance","succeed","HtmlRenderEvent","chunks","value","filter","mergeBuffer","chunk","renderChunk","x","valueOf","_tag","renderPart","renderSparsePart","renderNode","renderable","TEXT_START","toString","renderObject","empty","undefined","Array","isArray","isFx","concatMap","takeOneIfNotRenderEvent","isEffect","switchMap","fromEffect","isRenderEvent","node","render","index","isDirective","fromSink","sink","part","partNodeToPart","onSuccess","catchAllCause","onFailure","TYPED_HOLE","filterMap","take","unwrapRenderable","s","Option","some","none","combine","nodes","withEarlyExit","fork","run","Sink","event","zipRight","earlyExit","fromFiberEffect","cached","template","parse","templateToHtmlChunks","TypeId","EffectTypeId"],"sources":["../../src/Html.ts"],"sourcesContent":[null],"mappings":"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"}
@@ -0,0 +1,257 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.TextChunk = exports.SparsePartChunk = exports.PartChunk = void 0;
7
+ exports.escape = escape;
8
+ exports.escapeHtml = escapeHtml;
9
+ exports.templateToHtmlChunks = templateToHtmlChunks;
10
+ exports.unescape = unescape;
11
+ exports.unescapeHtml = unescapeHtml;
12
+ var _Meta = /*#__PURE__*/require("./Meta");
13
+ /**
14
+ * @since 1.0.0
15
+ */
16
+
17
+ /**
18
+ * @since 1.0.0
19
+ */
20
+ class TextChunk {
21
+ value;
22
+ _tag = "text";
23
+ constructor(value) {
24
+ this.value = value;
25
+ }
26
+ }
27
+ /**
28
+ * @since 1.0.0
29
+ */
30
+ exports.TextChunk = TextChunk;
31
+ class PartChunk {
32
+ node;
33
+ render;
34
+ _tag = "part";
35
+ constructor(node, render) {
36
+ this.node = node;
37
+ this.render = render;
38
+ }
39
+ }
40
+ /**
41
+ * @since 1.0.0
42
+ */
43
+ exports.PartChunk = PartChunk;
44
+ class SparsePartChunk {
45
+ node;
46
+ render;
47
+ _tag = "sparse-part";
48
+ constructor(node, render) {
49
+ this.node = node;
50
+ this.render = render;
51
+ }
52
+ }
53
+ // TODO: Should we escape more things?
54
+ // TODO: We should manually optimize the text fusion
55
+ /**
56
+ * @since 1.0.0
57
+ */
58
+ exports.SparsePartChunk = SparsePartChunk;
59
+ function templateToHtmlChunks({
60
+ hash,
61
+ nodes
62
+ }) {
63
+ return fuseTextChunks(nodes.flatMap(node => nodeToHtmlChunk(node, hash)));
64
+ }
65
+ function fuseTextChunks(chunks) {
66
+ const output = [];
67
+ for (let i = 0; i < chunks.length; i++) {
68
+ if (i > 0) {
69
+ const prevIndex = output.length - 1;
70
+ const prev = output[prevIndex];
71
+ const curr = chunks[i];
72
+ if (prev._tag === "text" && curr._tag === "text") {
73
+ output[prevIndex] = new TextChunk(prev.value + curr.value);
74
+ } else {
75
+ output.push(curr);
76
+ }
77
+ } else {
78
+ output.push(chunks[i]);
79
+ }
80
+ }
81
+ return output;
82
+ }
83
+ const nodeMap = {
84
+ element: elementToHtmlChunks,
85
+ node: node => [new PartChunk(node, String)],
86
+ "self-closing-element": selfClosingElementToHtmlChunks,
87
+ text: node => [textToHtmlChunks(node)],
88
+ "text-only-element": textOnlyElementToHtmlChunks,
89
+ comment: node => [new TextChunk(`<!--${node.value}-->`)],
90
+ "comment-part": node => [new PartChunk(node, value => `<!--${value}-->`)],
91
+ "sparse-comment": node => [new TextChunk("<!--"), ...node.nodes.map(node => {
92
+ if (node._tag === "text") {
93
+ return textToHtmlChunks(node);
94
+ } else {
95
+ return new PartChunk(node, value => `${value}`);
96
+ }
97
+ }), new TextChunk("-->")]
98
+ };
99
+ function nodeToHtmlChunk(node, hash) {
100
+ return nodeMap[node._tag](node, hash);
101
+ }
102
+ function elementToHtmlChunks({
103
+ attributes,
104
+ children,
105
+ tagName
106
+ }, hash) {
107
+ if (attributes.length === 0) {
108
+ return [new TextChunk(openTag(tagName, hash) + ">"), ...children.flatMap(c => nodeToHtmlChunk(c)), new TextChunk(closeTag(tagName))];
109
+ }
110
+ const chunks = [new TextChunk(openTag(tagName, hash)), ...attributes.map(a => attributeToHtmlChunk(a)), new TextChunk(">"), ...children.flatMap(c => nodeToHtmlChunk(c)), new TextChunk(closeTag(tagName))];
111
+ return chunks;
112
+ }
113
+ function selfClosingElementToHtmlChunks({
114
+ attributes,
115
+ tagName
116
+ }, hash) {
117
+ if (attributes.length === 0) {
118
+ return [new TextChunk(openTag(tagName, hash) + "/>")];
119
+ }
120
+ const chunks = [new TextChunk(openTag(tagName, hash)), ...attributes.map(a => attributeToHtmlChunk(a)), new TextChunk(`/>`)];
121
+ return chunks;
122
+ }
123
+ function textToHtmlChunks(text) {
124
+ return text._tag === "text" ? new TextChunk(text.value) : new PartChunk(text, String);
125
+ }
126
+ function textOnlyElementToHtmlChunks({
127
+ attributes,
128
+ children,
129
+ tagName
130
+ }, hash) {
131
+ if (attributes.length === 0) {
132
+ return [new TextChunk(openTag(tagName, hash) + ">"), ...children.map(c => textToHtmlChunks(c)), new TextChunk(closeTag(tagName))];
133
+ }
134
+ const chunks = [new TextChunk(openTag(tagName, hash)), ...attributes.map(a => attributeToHtmlChunk(a)), new TextChunk(">"), ...children.map(c => textToHtmlChunks(c)), new TextChunk(closeTag(tagName))];
135
+ return chunks;
136
+ }
137
+ const attrMap = {
138
+ attribute: attr => new TextChunk(` ${attr.name}="${attr.value}"`),
139
+ attr: attr => new PartChunk(attr, value => value == null ? `` : ` ${attr.name}="${value}"`),
140
+ boolean: attr => new TextChunk(" " + attr.name),
141
+ "boolean-part": attr => new PartChunk(attr, value => value ? ` ${attr.name}` : ""),
142
+ "className-part": attr => new PartChunk(attr, value => value ? ` class="${value}"` : ""),
143
+ data: attr => new PartChunk(attr, value => value == null ? `` : datasetToString(value)),
144
+ event: () => new TextChunk(""),
145
+ property: attr => new PartChunk(attr, value => value == null ? `` : ` ${attr.name}="${escape(value)}"`),
146
+ ref: () => new TextChunk(""),
147
+ "sparse-attr": attr => new SparsePartChunk(attr, values => {
148
+ return values == null ? `` : ` ${attr.name}="${Array.isArray(values) ? values.filter(isString).join("") : values}"`;
149
+ }),
150
+ "sparse-class-name": attr => new SparsePartChunk(attr, values => {
151
+ return values == null ? `` : ` class="${Array.isArray(values) ? values.filter(isString).join(" ") : values}"`;
152
+ }),
153
+ text: attr => new TextChunk(attr.value)
154
+ };
155
+ function attributeToHtmlChunk(attr) {
156
+ return attrMap[attr._tag](attr);
157
+ }
158
+ function isString(value) {
159
+ return typeof value === "string";
160
+ }
161
+ function datasetToString(dataset) {
162
+ const s = Object.entries(dataset).map(([key, value]) => value === undefined ? `data-${key}` : `data-${key}="${value}"`).join(" ");
163
+ return s.length === 0 ? "" : " " + s;
164
+ }
165
+ function openTag(tagName, hash) {
166
+ if (hash === undefined) return `<${tagName}`;
167
+ return `<${tagName} ${(0, _Meta.TYPED_HASH)(hash)}`;
168
+ }
169
+ function closeTag(tagName) {
170
+ return `</${tagName}>`;
171
+ }
172
+ /**
173
+ * @since 1.0.0
174
+ */
175
+ function escape(s) {
176
+ switch (typeof s) {
177
+ case "string":
178
+ case "number":
179
+ case "boolean":
180
+ return escapeHtml(String(s));
181
+ default:
182
+ return escapeHtml(JSON.stringify(s));
183
+ }
184
+ }
185
+ /**
186
+ * @since 1.0.0
187
+ */
188
+ function unescape(s) {
189
+ const unescaped = unescapeHtml(s);
190
+ const couldBeJson = unescaped[0] === "[" || unescaped === "{";
191
+ if (couldBeJson) {
192
+ try {
193
+ return JSON.parse(unescaped);
194
+ } catch {
195
+ return unescaped;
196
+ }
197
+ } else {
198
+ return unescaped;
199
+ }
200
+ }
201
+ const unescapeHtmlRules = [[/&quot;/g, "\""], [/&#39;/g, "'"], [/&#x3A;/g, ":"], [/&lt;/g, "<"], [/&gt;/g, ">"], [/&amp;/g, "&"]];
202
+ const matchHtmlRegExp = /["'&<>]/;
203
+ /**
204
+ * @since 1.0.0
205
+ */
206
+ function escapeHtml(str) {
207
+ const match = matchHtmlRegExp.exec(str);
208
+ if (!match) {
209
+ return str;
210
+ }
211
+ let escape;
212
+ let html = "";
213
+ let index = 0;
214
+ let lastIndex = 0;
215
+ for (index = match.index; index < str.length; index++) {
216
+ switch (str.charCodeAt(index)) {
217
+ case 34:
218
+ // "
219
+ escape = "&quot;";
220
+ break;
221
+ case 38:
222
+ // &
223
+ escape = "&amp;";
224
+ break;
225
+ case 39:
226
+ // '
227
+ escape = "&#39;";
228
+ break;
229
+ case 60:
230
+ // <
231
+ escape = "&lt;";
232
+ break;
233
+ case 62:
234
+ // >
235
+ escape = "&gt;";
236
+ break;
237
+ default:
238
+ continue;
239
+ }
240
+ if (lastIndex !== index) {
241
+ html += str.substring(lastIndex, index);
242
+ }
243
+ lastIndex = index + 1;
244
+ html += escape;
245
+ }
246
+ return lastIndex !== index ? html + str.substring(lastIndex, index) : html;
247
+ }
248
+ /**
249
+ * @since 1.0.0
250
+ */
251
+ function unescapeHtml(html) {
252
+ for (const [from, to] of unescapeHtmlRules) {
253
+ html = html.replace(from, to);
254
+ }
255
+ return html;
256
+ }
257
+ //# sourceMappingURL=HtmlChunk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HtmlChunk.js","names":["_Meta","require","TextChunk","value","_tag","constructor","exports","PartChunk","node","render","SparsePartChunk","templateToHtmlChunks","hash","nodes","fuseTextChunks","flatMap","nodeToHtmlChunk","chunks","output","i","length","prevIndex","prev","curr","push","nodeMap","element","elementToHtmlChunks","String","selfClosingElementToHtmlChunks","text","textToHtmlChunks","textOnlyElementToHtmlChunks","comment","map","attributes","children","tagName","openTag","c","closeTag","a","attributeToHtmlChunk","attrMap","attribute","attr","name","boolean","data","datasetToString","event","property","escape","ref","values","Array","isArray","filter","isString","join","dataset","s","Object","entries","key","undefined","TYPED_HASH","escapeHtml","JSON","stringify","unescape","unescaped","unescapeHtml","couldBeJson","parse","unescapeHtmlRules","matchHtmlRegExp","str","match","exec","html","index","lastIndex","charCodeAt","substring","from","to","replace"],"sources":["../../src/HtmlChunk.ts"],"sourcesContent":[null],"mappings":";;;;;;;;;;;AAGA,IAAAA,KAAA,gBAAAC,OAAA;AAHA;;;;AAsBA;;;AAGM,MAAOC,SAAS;EAECC,KAAA;EADZC,IAAI,GAAG,MAAM;EACtBC,YAAqBF,KAAa;IAAb,KAAAA,KAAK,GAALA,KAAK;EAAW;;AAGvC;;;AAAAG,OAAA,CAAAJ,SAAA,GAAAA,SAAA;AAGM,MAAOK,SAAS;EAITC,IAAA;EACAC,MAAA;EAJFL,IAAI,GAAG,MAAM;EAEtBC,YACWG,IAAc,EACdC,MAAkC;IADlC,KAAAD,IAAI,GAAJA,IAAI;IACJ,KAAAC,MAAM,GAANA,MAAM;EACd;;AAGL;;;AAAAH,OAAA,CAAAC,SAAA,GAAAA,SAAA;AAGM,MAAOG,eAAe;EAIfF,IAAA;EACAC,MAAA;EAJFL,IAAI,GAAG,aAAa;EAE7BC,YACWG,IAA0C,EAC1CC,MAAoC;IADpC,KAAAD,IAAI,GAAJA,IAAI;IACJ,KAAAC,MAAM,GAANA,MAAM;EACd;;AAQL;AACA;AAEA;;;AAAAH,OAAA,CAAAI,eAAA,GAAAA,eAAA;AAGM,SAAUC,oBAAoBA,CAAC;EAAEC,IAAI;EAAEC;AAAK,CAAY;EAC5D,OAAOC,cAAc,CAACD,KAAK,CAACE,OAAO,CAAEP,IAAI,IAAKQ,eAAe,CAACR,IAAI,EAAEI,IAAI,CAAC,CAAC,CAAC;AAC7E;AAEA,SAASE,cAAcA,CAACG,MAAwB;EAC9C,MAAMC,MAAM,GAAqB,EAAE;EAEnC,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGF,MAAM,CAACG,MAAM,EAAED,CAAC,EAAE,EAAE;IACtC,IAAIA,CAAC,GAAG,CAAC,EAAE;MACT,MAAME,SAAS,GAAGH,MAAM,CAACE,MAAM,GAAG,CAAC;MACnC,MAAME,IAAI,GAAGJ,MAAM,CAACG,SAAS,CAAC;MAC9B,MAAME,IAAI,GAAGN,MAAM,CAACE,CAAC,CAAC;MAEtB,IAAIG,IAAI,CAAClB,IAAI,KAAK,MAAM,IAAImB,IAAI,CAACnB,IAAI,KAAK,MAAM,EAAE;QAChDc,MAAM,CAACG,SAAS,CAAC,GAAG,IAAInB,SAAS,CAACoB,IAAI,CAACnB,KAAK,GAAGoB,IAAI,CAACpB,KAAK,CAAC;MAC5D,CAAC,MAAM;QACLe,MAAM,CAACM,IAAI,CAACD,IAAI,CAAC;MACnB;IACF,CAAC,MAAM;MACLL,MAAM,CAACM,IAAI,CAACP,MAAM,CAACE,CAAC,CAAC,CAAC;IACxB;EACF;EAEA,OAAOD,MAAM;AACf;AAMA,MAAMO,OAAO,GAAY;EACvBC,OAAO,EAAEC,mBAAmB;EAC5BnB,IAAI,EAAGA,IAAI,IAAK,CAAC,IAAID,SAAS,CAACC,IAAI,EAAEoB,MAAM,CAAC,CAAC;EAC7C,sBAAsB,EAAEC,8BAA8B;EACtDC,IAAI,EAAGtB,IAAI,IAAK,CAACuB,gBAAgB,CAACvB,IAAI,CAAC,CAAC;EACxC,mBAAmB,EAAEwB,2BAA2B;EAChDC,OAAO,EAAGzB,IAAI,IAAK,CAAC,IAAIN,SAAS,CAAC,OAAOM,IAAI,CAACL,KAAK,KAAK,CAAC,CAAC;EAC1D,cAAc,EAAGK,IAAI,IAAK,CACxB,IAAID,SAAS,CAACC,IAAI,EAAGL,KAAK,IAAK,OAAOA,KAAK,KAAK,CAAC,CAClD;EACD,gBAAgB,EAAGK,IAAI,IAAK,CAC1B,IAAIN,SAAS,CAAC,MAAM,CAAC,EACrB,GAAGM,IAAI,CAACK,KAAK,CAACqB,GAAG,CAAE1B,IAAI,IAAI;IACzB,IAAIA,IAAI,CAACJ,IAAI,KAAK,MAAM,EAAE;MACxB,OAAO2B,gBAAgB,CAACvB,IAAI,CAAC;IAC/B,CAAC,MAAM;MACL,OAAO,IAAID,SAAS,CAACC,IAAI,EAAGL,KAAK,IAAK,GAAGA,KAAK,EAAE,CAAC;IACnD;EACF,CAAC,CAAC,EACF,IAAID,SAAS,CAAC,KAAK,CAAC;CAEvB;AAED,SAASc,eAAeA,CAACR,IAAU,EAAEI,IAAa;EAChD,OAAOa,OAAO,CAACjB,IAAI,CAACJ,IAAI,CAAC,CAACI,IAAW,EAAEI,IAAI,CAAC;AAC9C;AAEA,SAASe,mBAAmBA,CAC1B;EAAEQ,UAAU;EAAEC,QAAQ;EAAEC;AAAO,CAAe,EAC9CzB,IAAa;EAEb,IAAIuB,UAAU,CAACf,MAAM,KAAK,CAAC,EAAE;IAC3B,OAAO,CACL,IAAIlB,SAAS,CAACoC,OAAO,CAACD,OAAO,EAAEzB,IAAI,CAAC,GAAG,GAAG,CAAC,EAC3C,GAAGwB,QAAQ,CAACrB,OAAO,CAAEwB,CAAC,IAAKvB,eAAe,CAACuB,CAAC,CAAC,CAAC,EAC9C,IAAIrC,SAAS,CAACsC,QAAQ,CAACH,OAAO,CAAC,CAAC,CACjC;EACH;EAEA,MAAMpB,MAAM,GAAqB,CAC/B,IAAIf,SAAS,CAACoC,OAAO,CAACD,OAAO,EAAEzB,IAAI,CAAC,CAAC,EACrC,GAAGuB,UAAU,CAACD,GAAG,CAAEO,CAAC,IAAKC,oBAAoB,CAACD,CAAC,CAAC,CAAC,EACjD,IAAIvC,SAAS,CAAC,GAAG,CAAC,EAClB,GAAGkC,QAAQ,CAACrB,OAAO,CAAEwB,CAAC,IAAKvB,eAAe,CAACuB,CAAC,CAAC,CAAC,EAC9C,IAAIrC,SAAS,CAACsC,QAAQ,CAACH,OAAO,CAAC,CAAC,CACjC;EAED,OAAOpB,MAAM;AACf;AAEA,SAASY,8BAA8BA,CACrC;EAAEM,UAAU;EAAEE;AAAO,CAA0B,EAC/CzB,IAAa;EAEb,IAAIuB,UAAU,CAACf,MAAM,KAAK,CAAC,EAAE;IAC3B,OAAO,CAAC,IAAIlB,SAAS,CAACoC,OAAO,CAACD,OAAO,EAAEzB,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;EACvD;EAEA,MAAMK,MAAM,GAAqB,CAC/B,IAAIf,SAAS,CAACoC,OAAO,CAACD,OAAO,EAAEzB,IAAI,CAAC,CAAC,EACrC,GAAGuB,UAAU,CAACD,GAAG,CAAEO,CAAC,IAAKC,oBAAoB,CAACD,CAAC,CAAC,CAAC,EACjD,IAAIvC,SAAS,CAAC,IAAI,CAAC,CACpB;EAED,OAAOe,MAAM;AACf;AAEA,SAASc,gBAAgBA,CAACD,IAAU;EAClC,OAAOA,IAAI,CAAC1B,IAAI,KAAK,MAAM,GAAG,IAAIF,SAAS,CAAC4B,IAAI,CAAC3B,KAAK,CAAC,GAAG,IAAII,SAAS,CAACuB,IAAI,EAAEF,MAAM,CAAC;AACvF;AAEA,SAASI,2BAA2BA,CAClC;EAAEG,UAAU;EAAEC,QAAQ;EAAEC;AAAO,CAAmB,EAClDzB,IAAa;EAEb,IAAIuB,UAAU,CAACf,MAAM,KAAK,CAAC,EAAE;IAC3B,OAAO,CACL,IAAIlB,SAAS,CAACoC,OAAO,CAACD,OAAO,EAAEzB,IAAI,CAAC,GAAG,GAAG,CAAC,EAC3C,GAAGwB,QAAQ,CAACF,GAAG,CAAEK,CAAC,IAAKR,gBAAgB,CAACQ,CAAC,CAAC,CAAC,EAC3C,IAAIrC,SAAS,CAACsC,QAAQ,CAACH,OAAO,CAAC,CAAC,CACjC;EACH;EAEA,MAAMpB,MAAM,GAAqB,CAC/B,IAAIf,SAAS,CAACoC,OAAO,CAACD,OAAO,EAAEzB,IAAI,CAAC,CAAC,EACrC,GAAGuB,UAAU,CAACD,GAAG,CAAEO,CAAC,IAAKC,oBAAoB,CAACD,CAAC,CAAC,CAAC,EACjD,IAAIvC,SAAS,CAAC,GAAG,CAAC,EAClB,GAAGkC,QAAQ,CAACF,GAAG,CAAEK,CAAC,IAAKR,gBAAgB,CAACQ,CAAC,CAAC,CAAC,EAC3C,IAAIrC,SAAS,CAACsC,QAAQ,CAACH,OAAO,CAAC,CAAC,CACjC;EAED,OAAOpB,MAAM;AACf;AAMA,MAAM0B,OAAO,GAAY;EACvBC,SAAS,EAAGC,IAAI,IAAK,IAAI3C,SAAS,CAAC,IAAI2C,IAAI,CAACC,IAAI,KAAKD,IAAI,CAAC1C,KAAK,GAAG,CAAC;EACnE0C,IAAI,EAAGA,IAAI,IAAK,IAAItC,SAAS,CAACsC,IAAI,EAAG1C,KAAK,IAAMA,KAAK,IAAI,IAAI,GAAG,EAAE,GAAG,IAAI0C,IAAI,CAACC,IAAI,KAAK3C,KAAK,GAAI,CAAC;EACjG4C,OAAO,EAAGF,IAAI,IAAK,IAAI3C,SAAS,CAAC,GAAG,GAAG2C,IAAI,CAACC,IAAI,CAAC;EACjD,cAAc,EAAGD,IAAI,IAAK,IAAItC,SAAS,CAACsC,IAAI,EAAG1C,KAAK,IAAMA,KAAK,GAAG,IAAI0C,IAAI,CAACC,IAAI,EAAE,GAAG,EAAG,CAAC;EACxF,gBAAgB,EAAGD,IAAI,IAAK,IAAItC,SAAS,CAACsC,IAAI,EAAG1C,KAAK,IAAMA,KAAK,GAAG,WAAWA,KAAK,GAAG,GAAG,EAAG,CAAC;EAC9F6C,IAAI,EAAGH,IAAI,IACT,IAAItC,SAAS,CAACsC,IAAI,EAAG1C,KAAK,IAAKA,KAAK,IAAI,IAAI,GAAG,EAAE,GAAG8C,eAAe,CAAC9C,KAAyC,CAAC,CAAC;EACjH+C,KAAK,EAAEA,CAAA,KAAM,IAAIhD,SAAS,CAAC,EAAE,CAAC;EAC9BiD,QAAQ,EAAGN,IAAI,IAAK,IAAItC,SAAS,CAACsC,IAAI,EAAG1C,KAAK,IAAMA,KAAK,IAAI,IAAI,GAAG,EAAE,GAAG,IAAI0C,IAAI,CAACC,IAAI,KAAKM,MAAM,CAACjD,KAAK,CAAC,GAAI,CAAC;EAC7GkD,GAAG,EAAEA,CAAA,KAAM,IAAInD,SAAS,CAAC,EAAE,CAAC;EAC5B,aAAa,EAAG2C,IAAI,IAClB,IAAInC,eAAe,CAACmC,IAAI,EAAGS,MAAM,IAAI;IACnC,OAAOA,MAAM,IAAI,IAAI,GACjB,EAAE,GACF,IAAIT,IAAI,CAACC,IAAI,KAAKS,KAAK,CAACC,OAAO,CAACF,MAAM,CAAC,GAAGA,MAAM,CAACG,MAAM,CAACC,QAAQ,CAAC,CAACC,IAAI,CAAC,EAAE,CAAC,GAAGL,MAAM,GAAG;EAC5F,CAAC,CAAC;EACJ,mBAAmB,EAAGT,IAAI,IACxB,IAAInC,eAAe,CAACmC,IAAI,EAAGS,MAAM,IAAI;IACnC,OAAOA,MAAM,IAAI,IAAI,GACjB,EAAE,GACF,WAAWC,KAAK,CAACC,OAAO,CAACF,MAAM,CAAC,GAAGA,MAAM,CAACG,MAAM,CAACC,QAAQ,CAAC,CAACC,IAAI,CAAC,GAAG,CAAC,GAAGL,MAAM,GAAG;EACtF,CAAC,CAAC;EACJxB,IAAI,EAAGe,IAAI,IAAK,IAAI3C,SAAS,CAAC2C,IAAI,CAAC1C,KAAK;CACzC;AAED,SAASuC,oBAAoBA,CAACG,IAAe;EAC3C,OAAOF,OAAO,CAACE,IAAI,CAACzC,IAAI,CAAC,CAACyC,IAAW,CAAC;AACxC;AAEA,SAASa,QAAQA,CAACvD,KAAc;EAC9B,OAAO,OAAOA,KAAK,KAAK,QAAQ;AAClC;AAEA,SAAS8C,eAAeA,CAACW,OAAqD;EAC5E,MAAMC,CAAC,GAAGC,MAAM,CAACC,OAAO,CAACH,OAAO,CAAC,CAC9B1B,GAAG,CAAC,CAAC,CAAC8B,GAAG,EAAE7D,KAAK,CAAC,KAAMA,KAAK,KAAK8D,SAAS,GAAG,QAAQD,GAAG,EAAE,GAAG,QAAQA,GAAG,KAAK7D,KAAK,GAAI,CAAC,CACvFwD,IAAI,CAAC,GAAG,CAAC;EAEZ,OAAOE,CAAC,CAACzC,MAAM,KAAK,CAAC,GAAG,EAAE,GAAG,GAAG,GAAGyC,CAAC;AACtC;AAEA,SAASvB,OAAOA,CAACD,OAAe,EAAEzB,IAAa;EAC7C,IAAIA,IAAI,KAAKqD,SAAS,EAAE,OAAO,IAAI5B,OAAO,EAAE;EAE5C,OAAO,IAAIA,OAAO,IAAI,IAAA6B,gBAAU,EAACtD,IAAI,CAAC,EAAE;AAC1C;AAEA,SAAS4B,QAAQA,CAACH,OAAe;EAC/B,OAAO,KAAKA,OAAO,GAAG;AACxB;AAEA;;;AAGM,SAAUe,MAAMA,CAACS,CAAU;EAC/B,QAAQ,OAAOA,CAAC;IACd,KAAK,QAAQ;IACb,KAAK,QAAQ;IACb,KAAK,SAAS;MACZ,OAAOM,UAAU,CAACvC,MAAM,CAACiC,CAAC,CAAC,CAAC;IAC9B;MACE,OAAOM,UAAU,CAACC,IAAI,CAACC,SAAS,CAACR,CAAC,CAAC,CAAC;EACxC;AACF;AAEA;;;AAGM,SAAUS,QAAQA,CAACT,CAAS;EAChC,MAAMU,SAAS,GAAGC,YAAY,CAACX,CAAC,CAAC;EACjC,MAAMY,WAAW,GAAGF,SAAS,CAAC,CAAC,CAAC,KAAK,GAAG,IAAIA,SAAS,KAAK,GAAG;EAC7D,IAAIE,WAAW,EAAE;IACf,IAAI;MACF,OAAOL,IAAI,CAACM,KAAK,CAACH,SAAS,CAAC;IAC9B,CAAC,CAAC,MAAM;MACN,OAAOA,SAAS;IAClB;EACF,CAAC,MAAM;IACL,OAAOA,SAAS;EAClB;AACF;AAEA,MAAMI,iBAAiB,GAAG,CACxB,CAAC,SAAS,EAAE,IAAI,CAAC,EACjB,CAAC,QAAQ,EAAE,GAAG,CAAC,EACf,CAAC,SAAS,EAAE,GAAG,CAAC,EAChB,CAAC,OAAO,EAAE,GAAG,CAAC,EACd,CAAC,OAAO,EAAE,GAAG,CAAC,EACd,CAAC,QAAQ,EAAE,GAAG,CAAC,CACP;AAEV,MAAMC,eAAe,GAAG,SAAS;AAEjC;;;AAGM,SAAUT,UAAUA,CAACU,GAAW;EACpC,MAAMC,KAAK,GAAGF,eAAe,CAACG,IAAI,CAACF,GAAG,CAAC;EAEvC,IAAI,CAACC,KAAK,EAAE;IACV,OAAOD,GAAG;EACZ;EAEA,IAAIzB,MAAM;EACV,IAAI4B,IAAI,GAAG,EAAE;EACb,IAAIC,KAAK,GAAG,CAAC;EACb,IAAIC,SAAS,GAAG,CAAC;EAEjB,KAAKD,KAAK,GAAGH,KAAK,CAACG,KAAK,EAAEA,KAAK,GAAGJ,GAAG,CAACzD,MAAM,EAAE6D,KAAK,EAAE,EAAE;IACrD,QAAQJ,GAAG,CAACM,UAAU,CAACF,KAAK,CAAC;MAC3B,KAAK,EAAE;QAAE;QACP7B,MAAM,GAAG,QAAQ;QACjB;MACF,KAAK,EAAE;QAAE;QACPA,MAAM,GAAG,OAAO;QAChB;MACF,KAAK,EAAE;QAAE;QACPA,MAAM,GAAG,OAAO;QAChB;MACF,KAAK,EAAE;QAAE;QACPA,MAAM,GAAG,MAAM;QACf;MACF,KAAK,EAAE;QAAE;QACPA,MAAM,GAAG,MAAM;QACf;MACF;QACE;IACJ;IAEA,IAAI8B,SAAS,KAAKD,KAAK,EAAE;MACvBD,IAAI,IAAIH,GAAG,CAACO,SAAS,CAACF,SAAS,EAAED,KAAK,CAAC;IACzC;IAEAC,SAAS,GAAGD,KAAK,GAAG,CAAC;IACrBD,IAAI,IAAI5B,MAAM;EAChB;EAEA,OAAO8B,SAAS,KAAKD,KAAK,GACtBD,IAAI,GAAGH,GAAG,CAACO,SAAS,CAACF,SAAS,EAAED,KAAK,CAAC,GACtCD,IAAI;AACV;AAEA;;;AAGM,SAAUR,YAAYA,CAACQ,IAAY;EACvC,KAAK,MAAM,CAACK,IAAI,EAAEC,EAAE,CAAC,IAAIX,iBAAiB,EAAE;IAC1CK,IAAI,GAAGA,IAAI,CAACO,OAAO,CAACF,IAAI,EAAEC,EAAE,CAAC;EAC/B;EAEA,OAAON,IAAI;AACb"}
@@ -0,0 +1,49 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.hydrate = hydrate;
7
+ exports.hydrateLayer = hydrateLayer;
8
+ var Context = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@typed/context"));
9
+ var _Document = /*#__PURE__*/require("@typed/dom/Document");
10
+ var _RootElement = /*#__PURE__*/require("@typed/dom/RootElement");
11
+ var Fx = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@typed/fx/Fx"));
12
+ var Effect = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("effect/Effect"));
13
+ var Layer = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("effect/Layer"));
14
+ var _hydrate = /*#__PURE__*/require("./internal/hydrate");
15
+ var _HydrateContext = /*#__PURE__*/require("./internal/HydrateContext");
16
+ var _render = /*#__PURE__*/require("./internal/render");
17
+ var _RenderContext = /*#__PURE__*/require("./RenderContext");
18
+ var _RenderTemplate = /*#__PURE__*/require("./RenderTemplate");
19
+ 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); }
20
+ 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; }
21
+ /**
22
+ * @since 1.0.0
23
+ */
24
+
25
+ /**
26
+ * @since 1.0.0
27
+ */
28
+ function hydrate(rendered) {
29
+ return Fx.fromFxEffect(Effect.contextWith(context => {
30
+ const [document, renderContext, {
31
+ rootElement
32
+ }] = Context.getMany(context, _Document.Document, _RenderContext.RenderContext, _RootElement.RootElement);
33
+ const ctx = {
34
+ where: (0, _hydrate.findRootParentChildNodes)(rootElement),
35
+ rootIndex: -1,
36
+ parentTemplate: null,
37
+ hydrate: true
38
+ };
39
+ const layer = Layer.provideMerge(_HydrateContext.HydrateContext.layer(ctx), _RenderTemplate.RenderTemplate.layer((0, _hydrate.hydrateTemplate)(document, renderContext)));
40
+ return Fx.provide(Fx.mapEffect(rendered, what => (0, _render.attachRoot)(renderContext.renderCache, rootElement, what)), layer);
41
+ }));
42
+ }
43
+ /**
44
+ * @since 1.0.0
45
+ */
46
+ function hydrateLayer(rendered) {
47
+ return Fx.drainLayer(Fx.switchMapCause(hydrate(rendered), Effect.logError));
48
+ }
49
+ //# sourceMappingURL=Hydrate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Hydrate.js","names":["Context","_interopRequireWildcard","require","_Document","_RootElement","Fx","Effect","Layer","_hydrate","_HydrateContext","_render","_RenderContext","_RenderTemplate","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","prototype","hasOwnProperty","call","i","set","hydrate","rendered","fromFxEffect","contextWith","context","document","renderContext","rootElement","getMany","Document","RenderContext","RootElement","ctx","where","findRootParentChildNodes","rootIndex","parentTemplate","layer","provideMerge","HydrateContext","RenderTemplate","hydrateTemplate","provide","mapEffect","what","attachRoot","renderCache","hydrateLayer","drainLayer","switchMapCause","logError"],"sources":["../../src/Hydrate.ts"],"sourcesContent":[null],"mappings":"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"}
@@ -0,0 +1,45 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.many = many;
7
+ exports.manyAsyncData = void 0;
8
+ var Fx = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@typed/fx/Fx"));
9
+ var _coreSubject = /*#__PURE__*/require("@typed/fx/internal/core-subject");
10
+ var RefAsyncData = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@typed/fx/RefAsyncData"));
11
+ var RefSubject = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@typed/fx/RefSubject"));
12
+ var Effect = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("effect/Effect"));
13
+ var _Function = /*#__PURE__*/require("effect/Function");
14
+ var _RenderContext = /*#__PURE__*/require("./RenderContext");
15
+ 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); }
16
+ 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; }
17
+ /**
18
+ * @since 1.0.0
19
+ */
20
+ function many(values, getKey, f) {
21
+ return Fx.fromFxEffect(_RenderContext.RenderContext.with(ctx => {
22
+ if (ctx.environment === "browser") {
23
+ return Fx.keyed(values, getKey, f);
24
+ }
25
+ return Fx.fromFxEffect(Effect.map(Fx.first(values), values => values._tag === "None" ? Fx.empty : Fx.mergeBuffer(values.value.map(value => {
26
+ const ref = RefSubject.unsafeMake(Effect.succeed(value), (0, _coreSubject.makeHoldSubject)());
27
+ return f({
28
+ ...ref,
29
+ ...Fx.take(ref, 1)
30
+ }, getKey(value));
31
+ }))));
32
+ }));
33
+ }
34
+ /**
35
+ * @since 1.0.0
36
+ */
37
+ const manyAsyncData = exports.manyAsyncData = /*#__PURE__*/(0, _Function.dual)(3, (fx, matchers, getKey) => {
38
+ return RefAsyncData.matchKeyed(fx, {
39
+ NoData: matchers.NoData,
40
+ Loading: matchers.Loading,
41
+ Failure: matchers.Failure,
42
+ Success: (ref, computed) => many(ref, getKey, ref => matchers.Success(ref, computed))
43
+ });
44
+ });
45
+ //# sourceMappingURL=Many.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Many.js","names":["Fx","_interopRequireWildcard","require","_coreSubject","RefAsyncData","RefSubject","Effect","_Function","_RenderContext","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","prototype","hasOwnProperty","call","i","set","many","values","getKey","f","fromFxEffect","RenderContext","with","ctx","environment","keyed","map","first","_tag","empty","mergeBuffer","value","ref","unsafeMake","succeed","makeHoldSubject","take","manyAsyncData","exports","dual","fx","matchers","matchKeyed","NoData","Loading","Failure","Success","computed"],"sources":["../../src/Many.ts"],"sourcesContent":[null],"mappings":"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"}
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.TYPED_START = exports.TYPED_HOLE = exports.TYPED_HASH = exports.TYPED_END = exports.TEXT_START = void 0;
7
+ /**
8
+ * @since 1.0.0
9
+ */
10
+ // Used to mark where the typed templates are in the html.
11
+ /**
12
+ * @since 1.0.0
13
+ */
14
+ const TYPED_START = exports.TYPED_START = `<!--typed-start-->`;
15
+ /**
16
+ * @since 1.0.0
17
+ */
18
+ const TYPED_END = exports.TYPED_END = `<!--typed-end-->`;
19
+ /**
20
+ * @since 1.0.0
21
+ */
22
+ const TYPED_HASH = hash => `data-typed="${hash}"`;
23
+ // Inserted into the html to mark where the text starts and ensure separate
24
+ // text nodes are created.
25
+ /**
26
+ * @since 1.0.0
27
+ */
28
+ exports.TYPED_HASH = TYPED_HASH;
29
+ const TEXT_START = exports.TEXT_START = "<!--text-->";
30
+ // Used to mark where a NodePart is in the DOM. It can be found directly after the
31
+ // elements or text nodes it is managing.
32
+ /**
33
+ * @since 1.0.0
34
+ */
35
+ const TYPED_HOLE = index => `<!--hole${index}-->`;
36
+ exports.TYPED_HOLE = TYPED_HOLE;
37
+ //# sourceMappingURL=Meta.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Meta.js","names":["TYPED_START","exports","TYPED_END","TYPED_HASH","hash","TEXT_START","TYPED_HOLE","index"],"sources":["../../src/Meta.ts"],"sourcesContent":[null],"mappings":";;;;;;AAAA;;;AAIA;AACA;;;AAGO,MAAMA,WAAW,GAAAC,OAAA,CAAAD,WAAA,GAAG,oBAAoB;AAC/C;;;AAGO,MAAME,SAAS,GAAAD,OAAA,CAAAC,SAAA,GAAG,kBAAkB;AAE3C;;;AAGO,MAAMC,UAAU,GAAIC,IAAY,IAAK,eAAeA,IAAI,GAAG;AAElE;AACA;AACA;;;AAAAH,OAAA,CAAAE,UAAA,GAAAA,UAAA;AAGO,MAAME,UAAU,GAAAJ,OAAA,CAAAI,UAAA,GAAG,aAAa;AAEvC;AACA;AACA;;;AAGO,MAAMC,UAAU,GAAIC,KAAa,IAAK,WAAWA,KAAK,KAAK;AAAAN,OAAA,CAAAK,UAAA,GAAAA,UAAA"}