@typed/template 0.2.0 → 0.3.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 (213) hide show
  1. package/dist/cjs/Directive.js +1 -1
  2. package/dist/cjs/Directive.js.map +1 -1
  3. package/dist/cjs/ElementRef.js +23 -13
  4. package/dist/cjs/ElementRef.js.map +1 -1
  5. package/dist/cjs/ElementSource.js +16 -18
  6. package/dist/cjs/ElementSource.js.map +1 -1
  7. package/dist/cjs/EventHandler.js +1 -1
  8. package/dist/cjs/EventHandler.js.map +1 -1
  9. package/dist/cjs/Html.js +31 -32
  10. package/dist/cjs/Html.js.map +1 -1
  11. package/dist/cjs/HtmlChunk.js +4 -1
  12. package/dist/cjs/HtmlChunk.js.map +1 -1
  13. package/dist/cjs/Hydrate.js +1 -1
  14. package/dist/cjs/Hydrate.js.map +1 -1
  15. package/dist/cjs/Many.js +14 -13
  16. package/dist/cjs/Many.js.map +1 -1
  17. package/dist/cjs/Parser.js +11 -323
  18. package/dist/cjs/Parser.js.map +1 -1
  19. package/dist/cjs/Placeholder.js +3 -3
  20. package/dist/cjs/Placeholder.js.map +1 -1
  21. package/dist/cjs/Platform.js +4 -4
  22. package/dist/cjs/Platform.js.map +1 -1
  23. package/dist/cjs/Render.js +1 -1
  24. package/dist/cjs/Render.js.map +1 -1
  25. package/dist/cjs/RenderContext.js +48 -27
  26. package/dist/cjs/RenderContext.js.map +1 -1
  27. package/dist/cjs/RenderTemplate.js +2 -17
  28. package/dist/cjs/RenderTemplate.js.map +1 -1
  29. package/dist/cjs/Template.js +27 -1
  30. package/dist/cjs/Template.js.map +1 -1
  31. package/dist/cjs/TemplateInstance.js +2 -2
  32. package/dist/cjs/TemplateInstance.js.map +1 -1
  33. package/dist/cjs/Test.js +20 -7
  34. package/dist/cjs/Test.js.map +1 -1
  35. package/dist/cjs/index.js +0 -12
  36. package/dist/cjs/index.js.map +1 -1
  37. package/dist/cjs/internal/EventSource.js +95 -0
  38. package/dist/cjs/internal/EventSource.js.map +1 -0
  39. package/dist/cjs/internal/browser.js +11 -11
  40. package/dist/cjs/internal/browser.js.map +1 -1
  41. package/dist/cjs/internal/hydrate.js +49 -50
  42. package/dist/cjs/internal/hydrate.js.map +1 -1
  43. package/dist/cjs/internal/indexRefCounter.js +49 -2
  44. package/dist/cjs/internal/indexRefCounter.js.map +1 -1
  45. package/dist/cjs/internal/parser.js +60 -17
  46. package/dist/cjs/internal/parser.js.map +1 -1
  47. package/dist/cjs/internal/parts.js +128 -28
  48. package/dist/cjs/internal/parts.js.map +1 -1
  49. package/dist/cjs/internal/render.js +486 -53
  50. package/dist/cjs/internal/render.js.map +1 -1
  51. package/dist/cjs/internal/server.js +5 -2
  52. package/dist/cjs/internal/server.js.map +1 -1
  53. package/dist/dts/Directive.d.ts.map +1 -1
  54. package/dist/dts/ElementRef.d.ts +4 -2
  55. package/dist/dts/ElementRef.d.ts.map +1 -1
  56. package/dist/dts/ElementSource.d.ts +10 -5
  57. package/dist/dts/ElementSource.d.ts.map +1 -1
  58. package/dist/dts/EventHandler.d.ts.map +1 -1
  59. package/dist/dts/Html.d.ts +1 -1
  60. package/dist/dts/Html.d.ts.map +1 -1
  61. package/dist/dts/HtmlChunk.d.ts.map +1 -1
  62. package/dist/dts/Many.d.ts +13 -11
  63. package/dist/dts/Many.d.ts.map +1 -1
  64. package/dist/dts/Parser.d.ts +3 -6
  65. package/dist/dts/Parser.d.ts.map +1 -1
  66. package/dist/dts/Part.d.ts +13 -3
  67. package/dist/dts/Part.d.ts.map +1 -1
  68. package/dist/dts/Placeholder.d.ts +2 -2
  69. package/dist/dts/Placeholder.d.ts.map +1 -1
  70. package/dist/dts/Render.d.ts +2 -1
  71. package/dist/dts/Render.d.ts.map +1 -1
  72. package/dist/dts/RenderContext.d.ts +5 -4
  73. package/dist/dts/RenderContext.d.ts.map +1 -1
  74. package/dist/dts/RenderTemplate.d.ts +2 -16
  75. package/dist/dts/RenderTemplate.d.ts.map +1 -1
  76. package/dist/dts/Renderable.d.ts +2 -2
  77. package/dist/dts/Renderable.d.ts.map +1 -1
  78. package/dist/dts/Template.d.ts +21 -3
  79. package/dist/dts/Template.d.ts.map +1 -1
  80. package/dist/dts/TemplateInstance.d.ts +3 -2
  81. package/dist/dts/TemplateInstance.d.ts.map +1 -1
  82. package/dist/dts/Test.d.ts +4 -6
  83. package/dist/dts/Test.d.ts.map +1 -1
  84. package/dist/dts/index.d.ts +0 -4
  85. package/dist/dts/index.d.ts.map +1 -1
  86. package/dist/dts/internal/EventSource.d.ts +12 -0
  87. package/dist/dts/internal/EventSource.d.ts.map +1 -0
  88. package/dist/dts/internal/browser.d.ts.map +1 -1
  89. package/dist/dts/internal/hydrate.d.ts +5 -5
  90. package/dist/dts/internal/hydrate.d.ts.map +1 -1
  91. package/dist/dts/internal/indexRefCounter.d.ts +5 -0
  92. package/dist/dts/internal/indexRefCounter.d.ts.map +1 -1
  93. package/dist/dts/internal/module-augmentation.d.ts +0 -4
  94. package/dist/dts/internal/module-augmentation.d.ts.map +1 -1
  95. package/dist/dts/internal/parser.d.ts +8 -0
  96. package/dist/dts/internal/parser.d.ts.map +1 -1
  97. package/dist/dts/internal/parts.d.ts +66 -56
  98. package/dist/dts/internal/parts.d.ts.map +1 -1
  99. package/dist/dts/internal/render.d.ts +7 -7
  100. package/dist/dts/internal/render.d.ts.map +1 -1
  101. package/dist/dts/internal/server.d.ts.map +1 -1
  102. package/dist/esm/Directive.js +1 -1
  103. package/dist/esm/Directive.js.map +1 -1
  104. package/dist/esm/ElementRef.js +12 -7
  105. package/dist/esm/ElementRef.js.map +1 -1
  106. package/dist/esm/ElementSource.js +16 -13
  107. package/dist/esm/ElementSource.js.map +1 -1
  108. package/dist/esm/EventHandler.js +1 -1
  109. package/dist/esm/EventHandler.js.map +1 -1
  110. package/dist/esm/Html.js +29 -24
  111. package/dist/esm/Html.js.map +1 -1
  112. package/dist/esm/HtmlChunk.js +6 -1
  113. package/dist/esm/HtmlChunk.js.map +1 -1
  114. package/dist/esm/Hydrate.js +1 -1
  115. package/dist/esm/Hydrate.js.map +1 -1
  116. package/dist/esm/Many.js +14 -10
  117. package/dist/esm/Many.js.map +1 -1
  118. package/dist/esm/Parser.js +6 -335
  119. package/dist/esm/Parser.js.map +1 -1
  120. package/dist/esm/Placeholder.js +2 -2
  121. package/dist/esm/Placeholder.js.map +1 -1
  122. package/dist/esm/Platform.js +2 -2
  123. package/dist/esm/Platform.js.map +1 -1
  124. package/dist/esm/Render.js +1 -1
  125. package/dist/esm/Render.js.map +1 -1
  126. package/dist/esm/RenderContext.js +38 -17
  127. package/dist/esm/RenderContext.js.map +1 -1
  128. package/dist/esm/RenderTemplate.js +2 -12
  129. package/dist/esm/RenderTemplate.js.map +1 -1
  130. package/dist/esm/Template.js +24 -0
  131. package/dist/esm/Template.js.map +1 -1
  132. package/dist/esm/TemplateInstance.js +2 -2
  133. package/dist/esm/TemplateInstance.js.map +1 -1
  134. package/dist/esm/Test.js +20 -7
  135. package/dist/esm/Test.js.map +1 -1
  136. package/dist/esm/index.js +0 -4
  137. package/dist/esm/index.js.map +1 -1
  138. package/dist/esm/internal/EventSource.js +91 -0
  139. package/dist/esm/internal/EventSource.js.map +1 -0
  140. package/dist/esm/internal/browser.js +12 -12
  141. package/dist/esm/internal/browser.js.map +1 -1
  142. package/dist/esm/internal/hydrate.js +45 -46
  143. package/dist/esm/internal/hydrate.js.map +1 -1
  144. package/dist/esm/internal/indexRefCounter.js +50 -2
  145. package/dist/esm/internal/indexRefCounter.js.map +1 -1
  146. package/dist/esm/internal/parser.js +84 -17
  147. package/dist/esm/internal/parser.js.map +1 -1
  148. package/dist/esm/internal/parts.js +110 -27
  149. package/dist/esm/internal/parts.js.map +1 -1
  150. package/dist/esm/internal/render.js +476 -58
  151. package/dist/esm/internal/render.js.map +1 -1
  152. package/dist/esm/internal/server.js +5 -4
  153. package/dist/esm/internal/server.js.map +1 -1
  154. package/package.json +10 -26
  155. package/src/Directive.ts +1 -1
  156. package/src/ElementRef.ts +18 -14
  157. package/src/ElementSource.ts +62 -47
  158. package/src/EventHandler.ts +1 -1
  159. package/src/Html.ts +58 -57
  160. package/src/HtmlChunk.ts +15 -1
  161. package/src/Hydrate.ts +1 -1
  162. package/src/Many.ts +53 -43
  163. package/src/Parser.ts +10 -453
  164. package/src/Part.ts +15 -3
  165. package/src/Placeholder.ts +4 -4
  166. package/src/Platform.ts +2 -2
  167. package/src/Render.ts +7 -2
  168. package/src/RenderContext.ts +47 -19
  169. package/src/RenderTemplate.ts +9 -54
  170. package/src/Renderable.ts +2 -1
  171. package/src/Template.ts +26 -0
  172. package/src/TemplateInstance.ts +9 -9
  173. package/src/Test.ts +40 -21
  174. package/src/index.ts +0 -4
  175. package/src/internal/EventSource.ts +153 -0
  176. package/src/internal/browser.ts +26 -25
  177. package/src/internal/hydrate.ts +68 -61
  178. package/src/internal/indexRefCounter.ts +63 -2
  179. package/src/internal/module-augmentation.ts +0 -4
  180. package/src/internal/parser.ts +92 -19
  181. package/src/internal/parts.ts +158 -73
  182. package/src/internal/render.ts +701 -89
  183. package/src/internal/server.ts +5 -3
  184. package/Token/package.json +0 -6
  185. package/Tokenizer/package.json +0 -6
  186. package/dist/cjs/Token.js +0 -270
  187. package/dist/cjs/Token.js.map +0 -1
  188. package/dist/cjs/Tokenizer.js +0 -18
  189. package/dist/cjs/Tokenizer.js.map +0 -1
  190. package/dist/cjs/internal/readAttribute.js +0 -34
  191. package/dist/cjs/internal/readAttribute.js.map +0 -1
  192. package/dist/cjs/internal/tokenizer.js +0 -264
  193. package/dist/cjs/internal/tokenizer.js.map +0 -1
  194. package/dist/dts/Token.d.ts +0 -202
  195. package/dist/dts/Token.d.ts.map +0 -1
  196. package/dist/dts/Tokenizer.d.ts +0 -6
  197. package/dist/dts/Tokenizer.d.ts.map +0 -1
  198. package/dist/dts/internal/readAttribute.d.ts +0 -9
  199. package/dist/dts/internal/readAttribute.d.ts.map +0 -1
  200. package/dist/dts/internal/tokenizer.d.ts +0 -3
  201. package/dist/dts/internal/tokenizer.d.ts.map +0 -1
  202. package/dist/esm/Token.js +0 -264
  203. package/dist/esm/Token.js.map +0 -1
  204. package/dist/esm/Tokenizer.js +0 -9
  205. package/dist/esm/Tokenizer.js.map +0 -1
  206. package/dist/esm/internal/readAttribute.js +0 -24
  207. package/dist/esm/internal/readAttribute.js.map +0 -1
  208. package/dist/esm/internal/tokenizer.js +0 -296
  209. package/dist/esm/internal/tokenizer.js.map +0 -1
  210. package/src/Token.ts +0 -269
  211. package/src/Tokenizer.ts +0 -10
  212. package/src/internal/readAttribute.ts +0 -28
  213. package/src/internal/tokenizer.ts +0 -338
@@ -20,6 +20,7 @@ import {
20
20
  CommentPartImpl,
21
21
  DataPartImpl,
22
22
  NodePartImpl,
23
+ PropertiesPartImpl,
23
24
  PropertyPartImpl,
24
25
  SparseAttributePartImpl,
25
26
  SparseClassNamePartImpl,
@@ -89,7 +90,7 @@ const renderChunkMap: RenderChunkMap = {
89
90
  index,
90
91
  chunk,
91
92
  sparsePartNodeToPart(chunk.node, (v) => onChunk(index, chunk.render(v))),
92
- // @ts-expect-error
93
+ // @ts-ignore Type Instantiation is excessively deep and possibly infinite
93
94
  chunk.node.nodes.map((n) => (n._tag === "text" ? n.value : values[n.index]))
94
95
  )
95
96
  }
@@ -102,7 +103,7 @@ export function htmlChunksToRenderChunks<R, E>(
102
103
  const output: Array<RenderChunk<R, E>> = Array(chunks.length)
103
104
 
104
105
  for (let i = 0; i < chunks.length; i++) {
105
- // @ts-expect-error
106
+ // @ts-ignore Type Instantiation is excessively deep and possibly infinite
106
107
  output[i] = renderChunkMap[chunks[i]._tag](chunks[i] as any, i, values, onChunk)
107
108
  }
108
109
 
@@ -130,7 +131,8 @@ const partNodeMap: PartNodeMap = {
130
131
  "ref": () => {
131
132
  throw new Error("Refs are not utilized on the server")
132
133
  },
133
- "text-part": (node, onChunk) => new TextPartImpl(node.index, ({ value }) => onChunk(value), null)
134
+ "text-part": (node, onChunk) => new TextPartImpl(node.index, ({ value }) => onChunk(value), null),
135
+ "properties": (node, onChunk) => new PropertiesPartImpl(node.index, ({ value }) => onChunk(value), null)
134
136
  }
135
137
 
136
138
  export function partNodeToPart(
@@ -1,6 +0,0 @@
1
- {
2
- "main": "../dist/cjs/Token.js",
3
- "module": "../dist/esm/Token.js",
4
- "types": "../dist/dts/Token.d.ts",
5
- "sideEffects": []
6
- }
@@ -1,6 +0,0 @@
1
- {
2
- "main": "../dist/cjs/Tokenizer.js",
3
- "module": "../dist/esm/Tokenizer.js",
4
- "types": "../dist/dts/Tokenizer.d.ts",
5
- "sideEffects": []
6
- }
package/dist/cjs/Token.js DELETED
@@ -1,270 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.TextToken = exports.TEXT_ONLY_NODES_REGEX = exports.SELF_CLOSING_TAGS = exports.RefAttributeStartToken = exports.RefAttributeEndToken = exports.PropertyAttributeStartToken = exports.PropertyAttributeEndToken = exports.PartToken = exports.OpeningTagToken = exports.OpeningTagEndToken = exports.EventAttributeStartToken = exports.EventAttributeEndToken = exports.DataAttributeStartToken = exports.DataAttributeEndToken = exports.CommentToken = exports.CommentStartToken = exports.CommentEndToken = exports.ClosingTagToken = exports.ClassNameAttributeStartToken = exports.ClassNameAttributeEndToken = exports.BooleanAttributeToken = exports.BooleanAttributeStartToken = exports.BooleanAttributeEndToken = exports.AttributeToken = exports.AttributeStartToken = exports.AttributeEndToken = void 0;
7
- /**
8
- * @since 1.0.0
9
- */
10
- /**
11
- * @since 1.0.0
12
- */
13
- class OpeningTagToken {
14
- name;
15
- isSelfClosing;
16
- textOnly;
17
- _tag = "opening-tag";
18
- constructor(name, isSelfClosing = SELF_CLOSING_TAGS.has(name), textOnly = TEXT_ONLY_NODES_REGEX.has(name)) {
19
- this.name = name;
20
- this.isSelfClosing = isSelfClosing;
21
- this.textOnly = textOnly;
22
- }
23
- }
24
- /**
25
- * @since 1.0.0
26
- */
27
- exports.OpeningTagToken = OpeningTagToken;
28
- class AttributeStartToken {
29
- name;
30
- _tag = "attribute-start";
31
- constructor(name) {
32
- this.name = name;
33
- }
34
- }
35
- /**
36
- * @since 1.0.0
37
- */
38
- exports.AttributeStartToken = AttributeStartToken;
39
- class AttributeEndToken {
40
- name;
41
- _tag = "attribute-end";
42
- constructor(name) {
43
- this.name = name;
44
- }
45
- }
46
- /**
47
- * @since 1.0.0
48
- */
49
- exports.AttributeEndToken = AttributeEndToken;
50
- class BooleanAttributeStartToken {
51
- name;
52
- _tag = "boolean-attribute-start";
53
- constructor(name) {
54
- this.name = name;
55
- }
56
- }
57
- /**
58
- * @since 1.0.0
59
- */
60
- exports.BooleanAttributeStartToken = BooleanAttributeStartToken;
61
- class BooleanAttributeEndToken {
62
- name;
63
- _tag = "boolean-attribute-end";
64
- constructor(name) {
65
- this.name = name;
66
- }
67
- }
68
- /**
69
- * @since 1.0.0
70
- */
71
- exports.BooleanAttributeEndToken = BooleanAttributeEndToken;
72
- class ClassNameAttributeStartToken {
73
- _tag = "className-attribute-start";
74
- }
75
- /**
76
- * @since 1.0.0
77
- */
78
- exports.ClassNameAttributeStartToken = ClassNameAttributeStartToken;
79
- class ClassNameAttributeEndToken {
80
- _tag = "className-attribute-end";
81
- }
82
- /**
83
- * @since 1.0.0
84
- */
85
- exports.ClassNameAttributeEndToken = ClassNameAttributeEndToken;
86
- class DataAttributeStartToken {
87
- _tag = "data-attribute-start";
88
- }
89
- /**
90
- * @since 1.0.0
91
- */
92
- exports.DataAttributeStartToken = DataAttributeStartToken;
93
- class DataAttributeEndToken {
94
- _tag = "data-attribute-end";
95
- }
96
- /**
97
- * @since 1.0.0
98
- */
99
- exports.DataAttributeEndToken = DataAttributeEndToken;
100
- class EventAttributeStartToken {
101
- name;
102
- _tag = "event-attribute-start";
103
- constructor(name) {
104
- this.name = name;
105
- }
106
- }
107
- /**
108
- * @since 1.0.0
109
- */
110
- exports.EventAttributeStartToken = EventAttributeStartToken;
111
- class EventAttributeEndToken {
112
- name;
113
- _tag = "event-attribute-end";
114
- constructor(name) {
115
- this.name = name;
116
- }
117
- }
118
- /**
119
- * @since 1.0.0
120
- */
121
- exports.EventAttributeEndToken = EventAttributeEndToken;
122
- class PropertyAttributeStartToken {
123
- name;
124
- _tag = "property-attribute-start";
125
- constructor(name) {
126
- this.name = name;
127
- }
128
- }
129
- /**
130
- * @since 1.0.0
131
- */
132
- exports.PropertyAttributeStartToken = PropertyAttributeStartToken;
133
- class PropertyAttributeEndToken {
134
- name;
135
- _tag = "property-attribute-end";
136
- constructor(name) {
137
- this.name = name;
138
- }
139
- }
140
- /**
141
- * @since 1.0.0
142
- */
143
- exports.PropertyAttributeEndToken = PropertyAttributeEndToken;
144
- class RefAttributeStartToken {
145
- _tag = "ref-attribute-start";
146
- }
147
- /**
148
- * @since 1.0.0
149
- */
150
- exports.RefAttributeStartToken = RefAttributeStartToken;
151
- class RefAttributeEndToken {
152
- _tag = "ref-attribute-end";
153
- }
154
- /**
155
- * @since 1.0.0
156
- */
157
- exports.RefAttributeEndToken = RefAttributeEndToken;
158
- class AttributeToken {
159
- name;
160
- value;
161
- _tag = "attribute";
162
- constructor(name, value) {
163
- this.name = name;
164
- this.value = value;
165
- }
166
- }
167
- /**
168
- * @since 1.0.0
169
- */
170
- exports.AttributeToken = AttributeToken;
171
- class BooleanAttributeToken {
172
- name;
173
- _tag = "boolean-attribute";
174
- constructor(name) {
175
- this.name = name;
176
- }
177
- }
178
- /**
179
- * @since 1.0.0
180
- */
181
- exports.BooleanAttributeToken = BooleanAttributeToken;
182
- class OpeningTagEndToken {
183
- name;
184
- selfClosing;
185
- textOnly;
186
- _tag = "opening-tag-end";
187
- constructor(name, selfClosing = SELF_CLOSING_TAGS.has(name), textOnly = TEXT_ONLY_NODES_REGEX.has(name)) {
188
- this.name = name;
189
- this.selfClosing = selfClosing;
190
- this.textOnly = textOnly;
191
- }
192
- }
193
- /**
194
- * @since 1.0.0
195
- */
196
- exports.OpeningTagEndToken = OpeningTagEndToken;
197
- class ClosingTagToken {
198
- name;
199
- textOnly;
200
- _tag = "closing-tag";
201
- constructor(name, textOnly = TEXT_ONLY_NODES_REGEX.has(name)) {
202
- this.name = name;
203
- this.textOnly = textOnly;
204
- }
205
- }
206
- /**
207
- * @since 1.0.0
208
- */
209
- exports.ClosingTagToken = ClosingTagToken;
210
- class CommentToken {
211
- value;
212
- _tag = "comment";
213
- constructor(value) {
214
- this.value = value;
215
- }
216
- }
217
- /**
218
- * @since 1.0.0
219
- */
220
- exports.CommentToken = CommentToken;
221
- class CommentStartToken {
222
- value;
223
- _tag = "comment-start";
224
- constructor(value) {
225
- this.value = value;
226
- }
227
- }
228
- /**
229
- * @since 1.0.0
230
- */
231
- exports.CommentStartToken = CommentStartToken;
232
- class CommentEndToken {
233
- value;
234
- _tag = "comment-end";
235
- constructor(value) {
236
- this.value = value;
237
- }
238
- }
239
- /**
240
- * @since 1.0.0
241
- */
242
- exports.CommentEndToken = CommentEndToken;
243
- class TextToken {
244
- value;
245
- _tag = "text";
246
- constructor(value) {
247
- this.value = value;
248
- }
249
- }
250
- /**
251
- * @since 1.0.0
252
- */
253
- exports.TextToken = TextToken;
254
- class PartToken {
255
- index;
256
- _tag = "part-token";
257
- constructor(index) {
258
- this.index = index;
259
- }
260
- }
261
- /**
262
- * @since 1.0.0
263
- */
264
- exports.PartToken = PartToken;
265
- const TEXT_ONLY_NODES_REGEX = exports.TEXT_ONLY_NODES_REGEX = /*#__PURE__*/new Set(["textarea", "script", "style", "title", "plaintext", "xmp"]);
266
- /**
267
- * @since 1.0.0
268
- */
269
- const SELF_CLOSING_TAGS = exports.SELF_CLOSING_TAGS = /*#__PURE__*/new Set(["area", "base", "br", "col", "command", "embed", "hr", "img", "input", "keygen", "link", "meta", "param", "source", "track", "wbr"]);
270
- //# sourceMappingURL=Token.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Token.js","names":["OpeningTagToken","name","isSelfClosing","textOnly","_tag","constructor","SELF_CLOSING_TAGS","has","TEXT_ONLY_NODES_REGEX","exports","AttributeStartToken","AttributeEndToken","BooleanAttributeStartToken","BooleanAttributeEndToken","ClassNameAttributeStartToken","ClassNameAttributeEndToken","DataAttributeStartToken","DataAttributeEndToken","EventAttributeStartToken","EventAttributeEndToken","PropertyAttributeStartToken","PropertyAttributeEndToken","RefAttributeStartToken","RefAttributeEndToken","AttributeToken","value","BooleanAttributeToken","OpeningTagEndToken","selfClosing","ClosingTagToken","CommentToken","CommentStartToken","CommentEndToken","TextToken","PartToken","index","Set"],"sources":["../../src/Token.ts"],"sourcesContent":[null],"mappings":"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"}
@@ -1,18 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.tokenize = void 0;
7
- var tokenizer = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("./internal/tokenizer.js"));
8
- 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); }
9
- 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; }
10
- /**
11
- * @since 1.0.0
12
- */
13
-
14
- /**
15
- * @since 1.0.0
16
- */
17
- const tokenize = exports.tokenize = tokenizer.tokenize;
18
- //# sourceMappingURL=Tokenizer.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Tokenizer.js","names":["tokenizer","_interopRequireWildcard","require","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","prototype","hasOwnProperty","call","i","set","tokenize","exports"],"sources":["../../src/Tokenizer.ts"],"sourcesContent":[null],"mappings":";;;;;;AAGA,IAAAA,SAAA,gBAAAC,uBAAA,eAAAC,OAAA;AAAoD,SAAAC,yBAAAC,CAAA,6BAAAC,OAAA,mBAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAF,wBAAA,YAAAA,CAAAC,CAAA,WAAAA,CAAA,GAAAG,CAAA,GAAAD,CAAA,KAAAF,CAAA;AAAA,SAAAH,wBAAAG,CAAA,EAAAE,CAAA,SAAAA,CAAA,IAAAF,CAAA,IAAAA,CAAA,CAAAI,UAAA,SAAAJ,CAAA,eAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,WAAAK,OAAA,EAAAL,CAAA,QAAAG,CAAA,GAAAJ,wBAAA,CAAAG,CAAA,OAAAC,CAAA,IAAAA,CAAA,CAAAG,GAAA,CAAAN,CAAA,UAAAG,CAAA,CAAAI,GAAA,CAAAP,CAAA,OAAAQ,CAAA,KAAAC,SAAA,UAAAC,CAAA,GAAAC,MAAA,CAAAC,cAAA,IAAAD,MAAA,CAAAE,wBAAA,WAAAC,CAAA,IAAAd,CAAA,oBAAAc,CAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAjB,CAAA,EAAAc,CAAA,SAAAI,CAAA,GAAAR,CAAA,GAAAC,MAAA,CAAAE,wBAAA,CAAAb,CAAA,EAAAc,CAAA,UAAAI,CAAA,KAAAA,CAAA,CAAAX,GAAA,IAAAW,CAAA,CAAAC,GAAA,IAAAR,MAAA,CAAAC,cAAA,CAAAJ,CAAA,EAAAM,CAAA,EAAAI,CAAA,IAAAV,CAAA,CAAAM,CAAA,IAAAd,CAAA,CAAAc,CAAA,YAAAN,CAAA,CAAAH,OAAA,GAAAL,CAAA,EAAAG,CAAA,IAAAA,CAAA,CAAAgB,GAAA,CAAAnB,CAAA,EAAAQ,CAAA,GAAAA,CAAA;AAHpD;;;;AAMA;;;AAGO,MAAMY,QAAQ,GAAAC,OAAA,CAAAD,QAAA,GAAyDxB,SAAS,CAACwB,QAAQ"}
@@ -1,34 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = readAttribute;
7
- const PATTERN = /(\s*([^>\s]*))/g;
8
- const QUOTES = /*#__PURE__*/new Set(`"'`);
9
- /**
10
- * Extract an attribute from a chunk of text.
11
- */
12
- function readAttribute(text, pos) {
13
- const quote = text.charAt(pos);
14
- const pos1 = pos + 1;
15
- if (QUOTES.has(quote)) {
16
- const nextQuote = text.indexOf(quote, pos1);
17
- if (nextQuote === -1) {
18
- return null;
19
- } else {
20
- return {
21
- length: nextQuote - pos + 1,
22
- value: text.substring(pos1, nextQuote)
23
- };
24
- }
25
- } else {
26
- PATTERN.lastIndex = pos;
27
- const match = PATTERN.exec(text) || [];
28
- return {
29
- length: match[1].length,
30
- value: match[2]
31
- };
32
- }
33
- }
34
- //# sourceMappingURL=readAttribute.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"readAttribute.js","names":["PATTERN","QUOTES","Set","readAttribute","text","pos","quote","charAt","pos1","has","nextQuote","indexOf","length","value","substring","lastIndex","match","exec"],"sources":["../../../src/internal/readAttribute.ts"],"sourcesContent":[null],"mappings":";;;;;;AAAA,MAAMA,OAAO,GAAG,iBAAiB;AACjC,MAAMC,MAAM,gBAAG,IAAIC,GAAG,CAAC,IAAI,CAAC;AAO5B;;;AAGc,SAAUC,aAAaA,CAACC,IAAY,EAAEC,GAAW;EAC7D,MAAMC,KAAK,GAAGF,IAAI,CAACG,MAAM,CAACF,GAAG,CAAC;EAC9B,MAAMG,IAAI,GAAGH,GAAG,GAAG,CAAC;EAEpB,IAAIJ,MAAM,CAACQ,GAAG,CAACH,KAAK,CAAC,EAAE;IACrB,MAAMI,SAAS,GAAGN,IAAI,CAACO,OAAO,CAACL,KAAK,EAAEE,IAAI,CAAC;IAC3C,IAAIE,SAAS,KAAK,CAAC,CAAC,EAAE;MACpB,OAAO,IAAI;IACb,CAAC,MAAM;MACL,OAAO;QAAEE,MAAM,EAAEF,SAAS,GAAGL,GAAG,GAAG,CAAC;QAAEQ,KAAK,EAAET,IAAI,CAACU,SAAS,CAACN,IAAI,EAAEE,SAAS;MAAC,CAAE;IAChF;EACF,CAAC,MAAM;IACLV,OAAO,CAACe,SAAS,GAAGV,GAAG;IACvB,MAAMW,KAAK,GAAGhB,OAAO,CAACiB,IAAI,CAACb,IAAI,CAAC,IAAI,EAAE;IACtC,OAAO;MAAEQ,MAAM,EAAEI,KAAK,CAAC,CAAC,CAAC,CAACJ,MAAM;MAAEC,KAAK,EAAEG,KAAK,CAAC,CAAC;IAAC,CAAE;EACrD;AACF"}
@@ -1,264 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.tokenize = tokenize;
7
- var Token = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("../Token.js"));
8
- var _chunks = /*#__PURE__*/require("./chunks.js");
9
- 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); }
10
- 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; }
11
- function tokenize(template) {
12
- return new Tokenizer(template);
13
- }
14
- function templateWithParts(template) {
15
- const length = template.length;
16
- const lastIndex = length - 1;
17
- let output = "";
18
- for (let i = 0; i < length; i++) {
19
- const str = template[i];
20
- if (i === lastIndex) {
21
- output += str;
22
- } else {
23
- output += str + (0, _chunks.PART_STRING)(i);
24
- }
25
- }
26
- return output;
27
- }
28
- class Tokenizer {
29
- template;
30
- input = "";
31
- pos = 0;
32
- context = "text";
33
- currentTag = null;
34
- constructor(template) {
35
- this.template = template;
36
- }
37
- *[Symbol.iterator]() {
38
- this.init();
39
- // eslint-disable-next-line no-constant-condition
40
- while (this.pos < this.input.length) {
41
- switch (this.context) {
42
- case "element":
43
- yield* this.nextElementToken();
44
- break;
45
- case "self-closing":
46
- yield* this.nextSelfClosingToken();
47
- break;
48
- case "text-only":
49
- yield* this.nextTextOnlyToken();
50
- break;
51
- default:
52
- yield* this.nextTextToken();
53
- }
54
- }
55
- }
56
- init() {
57
- // Convert our template into a string for easier tokenization
58
- // Remove any whitespace at the beginning or end of the template since we don't care about it.
59
- this.input = this.template.length === 1 ? this.template[0] : templateWithParts(this.template);
60
- }
61
- *nextTextToken() {
62
- const char = this.nextChar();
63
- const isOpenBracket = char === "<";
64
- let next;
65
- if (isOpenBracket && (next = this.chunk(_chunks.getOpeningTag))) {
66
- const name = next.match[2];
67
- this.pushTag(name);
68
- this.context = Token.SELF_CLOSING_TAGS.has(name) ? "self-closing" : Token.TEXT_ONLY_NODES_REGEX.has(name) ? "text-only" : "element";
69
- yield new Token.OpeningTagToken(name);
70
- } else if (isOpenBracket && (next = this.chunk(_chunks.getClosingTag))) {
71
- yield new Token.ClosingTagToken(next.match[3]);
72
- this.popTag();
73
- } else if (isOpenBracket && (next = this.chunk(_chunks.getComment))) {
74
- yield* this.parseComment(next.match[2]);
75
- } else if (next = this.chunk(_chunks.getPart)) {
76
- yield new Token.PartToken(parseInt(next.match[2], 10));
77
- } else if (next = this.chunk(_chunks.getWhitespace)) {
78
- yield new Token.TextToken(next.match[1]);
79
- } else if (next = this.chunk(_chunks.getTextUntilCloseBrace)) {
80
- yield* parseTextAndParts(next.match[1]);
81
- } else {
82
- yield new Token.TextToken(this.takeNextChar());
83
- }
84
- }
85
- *nextElementToken() {
86
- let next;
87
- if (next = this.chunk(_chunks.getAttributeWithQuotes)) {
88
- yield* this.parseAttribute(next.match[2], next.match[4]);
89
- } else if (next = this.chunk(_chunks.getAttributeWithoutQuotes)) {
90
- yield* this.parseAttribute(next.match[2], next.match[4]);
91
- } else if (next = this.chunk(_chunks.getOpeningTagEnd)) {
92
- this.context = "text";
93
- yield new Token.OpeningTagEndToken(this.currentTag.value);
94
- } else if (next = this.chunk(_chunks.getSelfClosingTagEnd)) {
95
- yield new Token.OpeningTagEndToken(this.currentTag.value, false);
96
- yield new Token.ClosingTagToken(this.currentTag.value);
97
- this.popTag();
98
- this.context = "text";
99
- } else if (next = this.chunk(_chunks.getBooleanAttribute)) {
100
- yield new Token.BooleanAttributeToken(next.match[2]);
101
- } else if (next = this.chunk(_chunks.getWhitespace)) {
102
- // Continue
103
- } else {
104
- this.invalidTemplate();
105
- }
106
- }
107
- *nextSelfClosingToken() {
108
- let next;
109
- if (next = this.chunk(_chunks.getAttributeWithQuotes)) {
110
- yield* this.parseAttribute(next.match[2], next.match[4]);
111
- } else if (next = this.chunk(_chunks.getAttributeWithoutQuotes)) {
112
- yield* this.parseAttribute(next.match[2], next.match[4]);
113
- } else if (next = this.chunk(_chunks.getSelfClosingTagEnd)) {
114
- yield new Token.OpeningTagEndToken(this.currentTag.value, true);
115
- this.popTag();
116
- this.context = "text";
117
- } else if (next = this.chunk(_chunks.getBooleanAttribute)) {
118
- yield new Token.BooleanAttributeToken(next.match[2]);
119
- } else {
120
- this.invalidTemplate();
121
- }
122
- }
123
- *nextTextOnlyToken() {
124
- let next;
125
- if (next = this.chunk(_chunks.getAttributeWithQuotes)) {
126
- yield* this.parseAttribute(next.match[2], next.match[4]);
127
- } else if (next = this.chunk(_chunks.getAttributeWithoutQuotes)) {
128
- yield* this.parseAttribute(next.match[2], next.match[4]);
129
- } else if (next = this.chunk(_chunks.getOpeningTagEnd)) {
130
- yield new Token.OpeningTagEndToken(this.currentTag.value);
131
- } else if (next = this.chunk(_chunks.getClosingTag)) {
132
- yield new Token.ClosingTagToken(next.match[3]);
133
- this.context = "text";
134
- } else if (next = this.chunk((0, _chunks.getAllTextUntilElementClose)(this.currentTag.value))) {
135
- const text = next.match[1];
136
- if (_chunks.PART_REGEX.test(text)) {
137
- yield* parseTextAndParts(text);
138
- } else {
139
- yield new Token.TextToken(text);
140
- }
141
- this.context = "text";
142
- } else {
143
- this.invalidTemplate();
144
- }
145
- }
146
- *parseComment(comment) {
147
- const parts = Array.from(parseTextAndParts(comment));
148
- if (parts.length === 1 && parts[0]._tag === "text") {
149
- yield new Token.CommentToken(parts[0].value);
150
- return;
151
- }
152
- yield new Token.CommentStartToken("<!--");
153
- for (const part of parts) {
154
- yield part;
155
- }
156
- yield new Token.CommentEndToken("-->");
157
- }
158
- *parseAttribute(name, value) {
159
- const parts = Array.from(parseTextAndParts(value));
160
- if (value === "") {
161
- yield new Token.BooleanAttributeToken(name);
162
- return;
163
- }
164
- if (parts.length === 1 && parts[0]._tag === "text") {
165
- yield getAttributeToken(name, value);
166
- return;
167
- }
168
- yield getAttributeTokenPartial(name, "start");
169
- for (const part of parts) {
170
- yield part;
171
- }
172
- yield getAttributeTokenPartial(name, "end");
173
- }
174
- nextChar() {
175
- return this.input.charAt(this.pos);
176
- }
177
- takeNextChar() {
178
- const text = this.input.substring(this.pos, this.pos + 1);
179
- this.pos += 1;
180
- return text;
181
- }
182
- chunk(f) {
183
- const chunk = f(this.input, this.pos);
184
- if (chunk) {
185
- this.pos += chunk.length;
186
- }
187
- return chunk;
188
- }
189
- pushTag(name) {
190
- this.currentTag = new Stack(name, this.currentTag);
191
- }
192
- popTag() {
193
- if (this.currentTag) {
194
- this.currentTag = this.currentTag.previous;
195
- }
196
- }
197
- invalidTemplate() {
198
- let message = `Invalid template ${this.input}`;
199
- message += "\n\nFrom:\n\n";
200
- message += this.input.substring(this.pos);
201
- throw new SyntaxError(message);
202
- }
203
- }
204
- class Stack {
205
- value;
206
- previous;
207
- constructor(value, previous) {
208
- this.value = value;
209
- this.previous = previous;
210
- }
211
- }
212
- function* parseTextAndParts(s) {
213
- let next;
214
- let pos = 0;
215
- while (pos < s.length) {
216
- if (next = (0, _chunks.getPart)(s, pos)) {
217
- yield new Token.PartToken(parseInt(next.match[2], 10));
218
- pos += next.length;
219
- } else if (next = (0, _chunks.getTextUntilPart)(s, pos)) {
220
- yield new Token.TextToken(next.match[1]);
221
- pos += next.length;
222
- } else {
223
- yield new Token.TextToken(s.substring(pos));
224
- break;
225
- }
226
- }
227
- }
228
- function getAttributeTokenPartial(name, ctx) {
229
- switch (name[0]) {
230
- case "?":
231
- return ctx === "start" ? new Token.BooleanAttributeStartToken(name.substring(1)) : new Token.BooleanAttributeEndToken(name.substring(1));
232
- case ".":
233
- {
234
- const propertyName = name.substring(1);
235
- switch (propertyName) {
236
- case "data":
237
- return ctx === "start" ? new Token.DataAttributeStartToken() : new Token.DataAttributeEndToken();
238
- default:
239
- return ctx === "start" ? new Token.PropertyAttributeStartToken(propertyName) : new Token.PropertyAttributeEndToken(propertyName);
240
- }
241
- }
242
- case "@":
243
- return ctx === "start" ? new Token.EventAttributeStartToken(name.substring(1)) : new Token.EventAttributeEndToken(name.substring(1));
244
- case "o":
245
- if (name[1] === "n") {
246
- return ctx === "start" ? new Token.EventAttributeStartToken(name.substring(2)) : new Token.EventAttributeEndToken(name.substring(2));
247
- }
248
- }
249
- switch (name.toLowerCase()) {
250
- case "class":
251
- case "classname":
252
- return ctx === "start" ? new Token.ClassNameAttributeStartToken() : new Token.ClassNameAttributeEndToken();
253
- case "ref":
254
- return ctx === "start" ? new Token.RefAttributeStartToken() : new Token.RefAttributeEndToken();
255
- }
256
- return ctx === "start" ? new Token.AttributeStartToken(name) : new Token.AttributeEndToken(name);
257
- }
258
- function getAttributeToken(name, value) {
259
- if (name[0] === "?") {
260
- return new Token.BooleanAttributeToken(name.substring(1));
261
- }
262
- return new Token.AttributeToken(name, value);
263
- }
264
- //# sourceMappingURL=tokenizer.js.map