@b9g/crank 0.4.3 → 0.5.0-beta.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.
- package/README.md +15 -50
- package/crank.cjs +192 -171
- package/crank.cjs.map +1 -1
- package/crank.d.ts +3 -3
- package/crank.js +192 -172
- package/crank.js.map +1 -1
- package/dom.cjs.map +1 -1
- package/dom.js.map +1 -1
- package/html.cjs.map +1 -1
- package/html.js.map +1 -1
- package/index.cjs +3 -1
- package/index.cjs.map +1 -1
- package/index.d.ts +1 -1
- package/index.js +2 -1
- package/index.js.map +1 -1
- package/package.json +32 -24
- package/umd.js +192 -171
- package/umd.js.map +1 -1
- package/xm.cjs +431 -0
- package/xm.cjs.map +1 -0
- package/xm.d.ts +2 -0
- package/xm.js +428 -0
- package/xm.js.map +1 -0
package/xm.cjs
ADDED
|
@@ -0,0 +1,431 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var crank = require('./crank.cjs');
|
|
6
|
+
|
|
7
|
+
const cache = new Map();
|
|
8
|
+
function xm(spans, ...expressions) {
|
|
9
|
+
const key = JSON.stringify(spans.raw);
|
|
10
|
+
let parseResult = cache.get(key);
|
|
11
|
+
if (parseResult == null) {
|
|
12
|
+
parseResult = parse(spans.raw);
|
|
13
|
+
cache.set(key, parseResult);
|
|
14
|
+
}
|
|
15
|
+
const { element, targets } = parseResult;
|
|
16
|
+
for (let i = 0; i < expressions.length; i++) {
|
|
17
|
+
const exp = expressions[i];
|
|
18
|
+
const target = targets[i];
|
|
19
|
+
if (target) {
|
|
20
|
+
if (target.type === "error") {
|
|
21
|
+
throw new SyntaxError(target.message.replace("${}", formatTagForError(exp)));
|
|
22
|
+
}
|
|
23
|
+
target.value = exp;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
return build(element);
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Matches first significant character in children mode.
|
|
30
|
+
*
|
|
31
|
+
* Group 1: newline
|
|
32
|
+
* Group 2: comment
|
|
33
|
+
* Group 3: tag
|
|
34
|
+
* Group 4: closing slash
|
|
35
|
+
* Group 5: tag name
|
|
36
|
+
*
|
|
37
|
+
* The comment group must appear first because the tag group can potentially
|
|
38
|
+
* match a comment, so that we can handle tag expressions where we’ve reached
|
|
39
|
+
* the end of a span.
|
|
40
|
+
*/
|
|
41
|
+
const CHILDREN_RE = /((?:\r|\n|\r\n)\s*)|(<!--[\S\s]*?(?:-->|$))|(<\s*(\/{0,2})\s*([-_$\w]*))/g;
|
|
42
|
+
/**
|
|
43
|
+
* Matches props after element tags.
|
|
44
|
+
*
|
|
45
|
+
* Group 1: tag end
|
|
46
|
+
* Group 2: spread props
|
|
47
|
+
* Group 3: prop name
|
|
48
|
+
* Group 4: equals
|
|
49
|
+
* Group 5: prop value string
|
|
50
|
+
*/
|
|
51
|
+
const PROPS_RE = /\s*(?:(\/?\s*>)|(\.\.\.\s*)|(?:([-_$\w]+)\s*(=)?\s*(?:("(\\"|[\S\s])*?(?:"|$)|'(?:\\'|[\S\s])*?(?:'|$)))?))/g;
|
|
52
|
+
const CLOSING_BRACKET_RE = />/g;
|
|
53
|
+
const CLOSING_SINGLE_QUOTE_RE = /[^\\]?'/g;
|
|
54
|
+
const CLOSING_DOUBLE_QUOTE_RE = /[^\\]?"/g;
|
|
55
|
+
const CLOSING_COMMENT_RE = /-->/g;
|
|
56
|
+
function parse(spans) {
|
|
57
|
+
let matcher = CHILDREN_RE;
|
|
58
|
+
const stack = [];
|
|
59
|
+
let element = {
|
|
60
|
+
type: "element",
|
|
61
|
+
open: { type: "tag", slash: "", value: "" },
|
|
62
|
+
close: null,
|
|
63
|
+
props: [],
|
|
64
|
+
children: [],
|
|
65
|
+
};
|
|
66
|
+
const targets = [];
|
|
67
|
+
let lineStart = true;
|
|
68
|
+
for (let s = 0; s < spans.length; s++) {
|
|
69
|
+
const span = spans[s];
|
|
70
|
+
// Whether or not an expression is upcoming. Used to provide better errors.
|
|
71
|
+
const expressing = s < spans.length - 1;
|
|
72
|
+
let expressionTarget = null;
|
|
73
|
+
for (let i = 0, end = i; i < span.length; i = end) {
|
|
74
|
+
matcher.lastIndex = i;
|
|
75
|
+
const match = matcher.exec(span);
|
|
76
|
+
end = match ? match.index + match[0].length : span.length;
|
|
77
|
+
switch (matcher) {
|
|
78
|
+
case CHILDREN_RE: {
|
|
79
|
+
if (match) {
|
|
80
|
+
const [, newline, comment, tag, closingSlash, tagName] = match;
|
|
81
|
+
if (i < match.index) {
|
|
82
|
+
let before = span.slice(i, match.index);
|
|
83
|
+
if (lineStart) {
|
|
84
|
+
before = before.replace(/^\s*/, "");
|
|
85
|
+
}
|
|
86
|
+
if (newline) {
|
|
87
|
+
if (span[Math.max(0, match.index - 1)] === "\\") {
|
|
88
|
+
// We preserve whitespace before escaped newlines.
|
|
89
|
+
// xm` \
|
|
90
|
+
// `
|
|
91
|
+
// remove the backslash from output
|
|
92
|
+
before = before.slice(0, -1);
|
|
93
|
+
}
|
|
94
|
+
else {
|
|
95
|
+
before = before.replace(/\s*$/, "");
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
if (before) {
|
|
99
|
+
element.children.push({ type: "value", value: before });
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
lineStart = !!newline;
|
|
103
|
+
if (comment) {
|
|
104
|
+
if (end === span.length) {
|
|
105
|
+
// Expression in a comment:
|
|
106
|
+
// xm`<!-- ${exp} -->`
|
|
107
|
+
matcher = CLOSING_COMMENT_RE;
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
else if (tag) {
|
|
111
|
+
if (closingSlash) {
|
|
112
|
+
element.close = {
|
|
113
|
+
type: "tag",
|
|
114
|
+
slash: closingSlash,
|
|
115
|
+
value: tagName,
|
|
116
|
+
};
|
|
117
|
+
if (!stack.length) {
|
|
118
|
+
if (end !== span.length) {
|
|
119
|
+
throw new SyntaxError(`Unmatched closing tag "${tagName}"`);
|
|
120
|
+
}
|
|
121
|
+
// ERROR EXPRESSION
|
|
122
|
+
expressionTarget = {
|
|
123
|
+
type: "error",
|
|
124
|
+
message: "Unmatched closing tag ${}",
|
|
125
|
+
value: null,
|
|
126
|
+
};
|
|
127
|
+
}
|
|
128
|
+
else {
|
|
129
|
+
if (end === span.length) {
|
|
130
|
+
// TAG EXPRESSION
|
|
131
|
+
expressionTarget = element.close;
|
|
132
|
+
}
|
|
133
|
+
element = stack.pop();
|
|
134
|
+
matcher = CLOSING_BRACKET_RE;
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
else {
|
|
138
|
+
const next = {
|
|
139
|
+
type: "element",
|
|
140
|
+
open: {
|
|
141
|
+
type: "tag",
|
|
142
|
+
slash: "",
|
|
143
|
+
value: tagName,
|
|
144
|
+
},
|
|
145
|
+
close: null,
|
|
146
|
+
props: [],
|
|
147
|
+
children: [],
|
|
148
|
+
};
|
|
149
|
+
element.children.push(next);
|
|
150
|
+
stack.push(element);
|
|
151
|
+
element = next;
|
|
152
|
+
matcher = PROPS_RE;
|
|
153
|
+
if (end === span.length) {
|
|
154
|
+
// TAG EXPRESSION
|
|
155
|
+
expressionTarget = element.open;
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
else {
|
|
161
|
+
if (i < span.length) {
|
|
162
|
+
let after = span.slice(i);
|
|
163
|
+
if (!expressing) {
|
|
164
|
+
// trim trailing whitespace
|
|
165
|
+
after = after.replace(/\s*$/, "");
|
|
166
|
+
}
|
|
167
|
+
if (after) {
|
|
168
|
+
element.children.push({ type: "value", value: after });
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
break;
|
|
173
|
+
}
|
|
174
|
+
case PROPS_RE: {
|
|
175
|
+
if (match) {
|
|
176
|
+
const [, tagEnd, spread, name, equals, string] = match;
|
|
177
|
+
if (i < match.index) {
|
|
178
|
+
throw new SyntaxError(`Unexpected text \`${span.slice(i, match.index).trim()}\``);
|
|
179
|
+
}
|
|
180
|
+
if (tagEnd) {
|
|
181
|
+
if (tagEnd[0] === "/") {
|
|
182
|
+
// This is a self-closing element, so there will always be a
|
|
183
|
+
// result on the stack.
|
|
184
|
+
element = stack.pop();
|
|
185
|
+
}
|
|
186
|
+
matcher = CHILDREN_RE;
|
|
187
|
+
}
|
|
188
|
+
else if (spread) {
|
|
189
|
+
const value = {
|
|
190
|
+
type: "value",
|
|
191
|
+
value: null,
|
|
192
|
+
};
|
|
193
|
+
element.props.push(value);
|
|
194
|
+
// SPREAD PROP EXPRESSION
|
|
195
|
+
expressionTarget = value;
|
|
196
|
+
if (!(expressing && end === span.length)) {
|
|
197
|
+
throw new SyntaxError('Expression expected after "..."');
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
else if (name) {
|
|
201
|
+
let value;
|
|
202
|
+
if (string == null) {
|
|
203
|
+
if (!equals) {
|
|
204
|
+
value = { type: "value", value: true };
|
|
205
|
+
}
|
|
206
|
+
else if (end < span.length) {
|
|
207
|
+
throw new SyntaxError(`Unexpected text \`${span.slice(end, end + 20)}\``);
|
|
208
|
+
}
|
|
209
|
+
else {
|
|
210
|
+
value = { type: "value", value: null };
|
|
211
|
+
// PROP EXPRESSION
|
|
212
|
+
expressionTarget = value;
|
|
213
|
+
if (!(expressing && end === span.length)) {
|
|
214
|
+
throw new SyntaxError(`Expression expected for prop "${name}"`);
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
else {
|
|
219
|
+
const quote = string[0];
|
|
220
|
+
value = { type: "propString", parts: [] };
|
|
221
|
+
value.parts.push(string);
|
|
222
|
+
if (end === span.length) {
|
|
223
|
+
matcher =
|
|
224
|
+
quote === "'"
|
|
225
|
+
? CLOSING_SINGLE_QUOTE_RE
|
|
226
|
+
: CLOSING_DOUBLE_QUOTE_RE;
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
const prop = {
|
|
230
|
+
type: "prop",
|
|
231
|
+
name,
|
|
232
|
+
value,
|
|
233
|
+
};
|
|
234
|
+
element.props.push(prop);
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
else {
|
|
238
|
+
if (!expressing) {
|
|
239
|
+
if (i === span.length) {
|
|
240
|
+
throw new SyntaxError(`Expected props but reached end of document`);
|
|
241
|
+
}
|
|
242
|
+
else {
|
|
243
|
+
throw new SyntaxError(`Unexpected text \`${span.slice(i, i + 20).trim()}\``);
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
// Unexpected expression errors are handled in the outer loop.
|
|
247
|
+
//
|
|
248
|
+
// This would most likely be the starting point for the logic of
|
|
249
|
+
// prop name expressions.
|
|
250
|
+
// xm`<p ${name}=${value}>`
|
|
251
|
+
}
|
|
252
|
+
break;
|
|
253
|
+
}
|
|
254
|
+
case CLOSING_BRACKET_RE: {
|
|
255
|
+
// We’re in a closing tag and looking for the >.
|
|
256
|
+
if (match) {
|
|
257
|
+
if (i < match.index) {
|
|
258
|
+
throw new SyntaxError(`Unexpected text \`${span.slice(i, match.index).trim()}\``);
|
|
259
|
+
}
|
|
260
|
+
matcher = CHILDREN_RE;
|
|
261
|
+
}
|
|
262
|
+
else {
|
|
263
|
+
if (!expressing) {
|
|
264
|
+
throw new SyntaxError(`Unexpected text \`${span.slice(i, i + 20).trim()}\``);
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
break;
|
|
268
|
+
}
|
|
269
|
+
case CLOSING_SINGLE_QUOTE_RE:
|
|
270
|
+
case CLOSING_DOUBLE_QUOTE_RE: {
|
|
271
|
+
const string = span.slice(i, end);
|
|
272
|
+
const prop = element.props[element.props.length - 1];
|
|
273
|
+
const propString = prop.value;
|
|
274
|
+
propString.parts.push(string);
|
|
275
|
+
if (match) {
|
|
276
|
+
matcher = PROPS_RE;
|
|
277
|
+
}
|
|
278
|
+
else {
|
|
279
|
+
if (!expressing) {
|
|
280
|
+
throw new SyntaxError(`Missing \`${matcher === CLOSING_SINGLE_QUOTE_RE ? "'" : '"'}\``);
|
|
281
|
+
}
|
|
282
|
+
}
|
|
283
|
+
break;
|
|
284
|
+
}
|
|
285
|
+
case CLOSING_COMMENT_RE: {
|
|
286
|
+
if (match) {
|
|
287
|
+
matcher = CHILDREN_RE;
|
|
288
|
+
}
|
|
289
|
+
else {
|
|
290
|
+
if (!expressing) {
|
|
291
|
+
throw new SyntaxError("Expected `-->` but reached end of template");
|
|
292
|
+
}
|
|
293
|
+
}
|
|
294
|
+
break;
|
|
295
|
+
}
|
|
296
|
+
}
|
|
297
|
+
}
|
|
298
|
+
if (expressing) {
|
|
299
|
+
if (expressionTarget) {
|
|
300
|
+
targets.push(expressionTarget);
|
|
301
|
+
if (expressionTarget.type === "error") {
|
|
302
|
+
break;
|
|
303
|
+
}
|
|
304
|
+
continue;
|
|
305
|
+
}
|
|
306
|
+
switch (matcher) {
|
|
307
|
+
case CHILDREN_RE: {
|
|
308
|
+
const target = { type: "value", value: null };
|
|
309
|
+
element.children.push(target);
|
|
310
|
+
targets.push(target);
|
|
311
|
+
break;
|
|
312
|
+
}
|
|
313
|
+
case CLOSING_SINGLE_QUOTE_RE:
|
|
314
|
+
case CLOSING_DOUBLE_QUOTE_RE: {
|
|
315
|
+
const prop = element.props[element.props.length - 1];
|
|
316
|
+
const target = { type: "value", value: null };
|
|
317
|
+
prop.value.parts.push(target);
|
|
318
|
+
targets.push(target);
|
|
319
|
+
break;
|
|
320
|
+
}
|
|
321
|
+
case CLOSING_COMMENT_RE:
|
|
322
|
+
targets.push(null);
|
|
323
|
+
break;
|
|
324
|
+
default:
|
|
325
|
+
throw new SyntaxError("Unexpected expression");
|
|
326
|
+
}
|
|
327
|
+
}
|
|
328
|
+
else if (expressionTarget) {
|
|
329
|
+
throw new SyntaxError("Expression expected");
|
|
330
|
+
}
|
|
331
|
+
lineStart = false;
|
|
332
|
+
}
|
|
333
|
+
if (stack.length) {
|
|
334
|
+
const ti = targets.indexOf(element.open);
|
|
335
|
+
if (ti === -1) {
|
|
336
|
+
throw new SyntaxError(`Unmatched opening tag "${element.open.value}"`);
|
|
337
|
+
}
|
|
338
|
+
targets[ti] = {
|
|
339
|
+
type: "error",
|
|
340
|
+
message: "Unmatched opening tag ${}",
|
|
341
|
+
value: null,
|
|
342
|
+
};
|
|
343
|
+
}
|
|
344
|
+
if (element.children.length === 1 && element.children[0].type === "element") {
|
|
345
|
+
element = element.children[0];
|
|
346
|
+
}
|
|
347
|
+
return { element, targets };
|
|
348
|
+
}
|
|
349
|
+
function build(parsed) {
|
|
350
|
+
if (parsed.close !== null &&
|
|
351
|
+
parsed.close.slash !== "//" &&
|
|
352
|
+
parsed.open.value !== parsed.close.value) {
|
|
353
|
+
throw new SyntaxError(`Unmatched closing tag ${formatTagForError(parsed.close.value)}, expected ${formatTagForError(parsed.open.value)}`);
|
|
354
|
+
}
|
|
355
|
+
const children = [];
|
|
356
|
+
for (let i = 0; i < parsed.children.length; i++) {
|
|
357
|
+
const child = parsed.children[i];
|
|
358
|
+
children.push(child.type === "element" ? build(child) : child.value);
|
|
359
|
+
}
|
|
360
|
+
let props = parsed.props.length ? {} : null;
|
|
361
|
+
for (let i = 0; i < parsed.props.length; i++) {
|
|
362
|
+
const prop = parsed.props[i];
|
|
363
|
+
if (prop.type === "prop") {
|
|
364
|
+
let value;
|
|
365
|
+
if (prop.value.type === "value") {
|
|
366
|
+
value = prop.value.value;
|
|
367
|
+
}
|
|
368
|
+
else {
|
|
369
|
+
let string = "";
|
|
370
|
+
for (let i = 0; i < prop.value.parts.length; i++) {
|
|
371
|
+
const part = prop.value.parts[i];
|
|
372
|
+
if (typeof part === "string") {
|
|
373
|
+
string += part;
|
|
374
|
+
}
|
|
375
|
+
else if (typeof part.value !== "boolean" && part.value != null) {
|
|
376
|
+
string +=
|
|
377
|
+
typeof part.value === "string" ? part.value : String(part.value);
|
|
378
|
+
}
|
|
379
|
+
}
|
|
380
|
+
value = string
|
|
381
|
+
// remove quotes
|
|
382
|
+
.slice(1, -1)
|
|
383
|
+
// unescape things
|
|
384
|
+
// adapted from https://stackoverflow.com/a/57330383/1825413
|
|
385
|
+
.replace(/\\x[0-9a-f]{2}|\\u[0-9a-f]{4}|\\u\{[0-9a-f]+\}|\\./gi, (match) => {
|
|
386
|
+
switch (match[1]) {
|
|
387
|
+
case "b":
|
|
388
|
+
return "\b";
|
|
389
|
+
case "f":
|
|
390
|
+
return "\f";
|
|
391
|
+
case "n":
|
|
392
|
+
return "\n";
|
|
393
|
+
case "r":
|
|
394
|
+
return "\r";
|
|
395
|
+
case "t":
|
|
396
|
+
return "\t";
|
|
397
|
+
case "v":
|
|
398
|
+
return "\v";
|
|
399
|
+
case "x":
|
|
400
|
+
return String.fromCharCode(parseInt(match.slice(2), 16));
|
|
401
|
+
case "u":
|
|
402
|
+
if (match[2] === "{") {
|
|
403
|
+
return String.fromCodePoint(parseInt(match.slice(3, -1), 16));
|
|
404
|
+
}
|
|
405
|
+
return String.fromCharCode(parseInt(match.slice(2), 16));
|
|
406
|
+
case "0":
|
|
407
|
+
return "\0";
|
|
408
|
+
default:
|
|
409
|
+
return match.slice(1);
|
|
410
|
+
}
|
|
411
|
+
});
|
|
412
|
+
}
|
|
413
|
+
props[prop.name] = value;
|
|
414
|
+
}
|
|
415
|
+
else {
|
|
416
|
+
// spread prop
|
|
417
|
+
props = { ...props, ...prop.value };
|
|
418
|
+
}
|
|
419
|
+
}
|
|
420
|
+
return crank.c(parsed.open.value, props, ...children);
|
|
421
|
+
}
|
|
422
|
+
function formatTagForError(tag) {
|
|
423
|
+
return typeof tag === "function"
|
|
424
|
+
? tag.name + "()"
|
|
425
|
+
: typeof tag === "string"
|
|
426
|
+
? `"${tag}"`
|
|
427
|
+
: JSON.stringify(tag);
|
|
428
|
+
}
|
|
429
|
+
|
|
430
|
+
exports.xm = xm;
|
|
431
|
+
//# sourceMappingURL=xm.cjs.map
|
package/xm.cjs.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"xm.cjs","sources":["../src/xm.ts"],"sourcesContent":["import {c} from \"./crank.js\";\nimport type {Element} from \"./crank.js\";\n\nconst cache = new Map<string, ParseResult>();\nexport function xm(\n\tspans: TemplateStringsArray,\n\t...expressions: Array<unknown>\n): Element {\n\tconst key = JSON.stringify(spans.raw);\n\tlet parseResult = cache.get(key);\n\tif (parseResult == null) {\n\t\tparseResult = parse(spans.raw);\n\t\tcache.set(key, parseResult);\n\t}\n\n\tconst {element, targets} = parseResult;\n\tfor (let i = 0; i < expressions.length; i++) {\n\t\tconst exp = expressions[i];\n\t\tconst target = targets[i];\n\t\tif (target) {\n\t\t\tif (target.type === \"error\") {\n\t\t\t\tthrow new SyntaxError(\n\t\t\t\t\ttarget.message.replace(\"${}\", formatTagForError(exp)),\n\t\t\t\t);\n\t\t\t}\n\n\t\t\ttarget.value = exp;\n\t\t}\n\t}\n\n\treturn build(element);\n}\n\n// Type definitions for a bare-bones AST\ninterface ParseElement {\n\ttype: \"element\";\n\topen: ParseTag;\n\tclose: ParseTag | null;\n\t// ParseValue is used to represent spread props.\n\tprops: Array<ParseProp | ParseValue>;\n\tchildren: Array<ParseElement | ParseValue>;\n}\n\ninterface ParseValue {\n\ttype: \"value\";\n\tvalue: any;\n}\n\ninterface ParseTag {\n\ttype: \"tag\";\n\tslash: string;\n\tvalue: any;\n}\n\ninterface ParseProp {\n\ttype: \"prop\";\n\tname: string;\n\tvalue: ParseValue | ParsePropString;\n}\n\ninterface ParsePropString {\n\ttype: \"propString\";\n\tparts: Array<string | ParseValue>;\n}\n\ninterface ParseError {\n\ttype: \"error\";\n\tmessage: string;\n\tvalue: any;\n}\n\n// The parse result includes an array of targets, references to objects in the\n// parse tree whose `value` property is overwritten with expressions when the\n// template function is called. By separating the logic of parsing static\n// template spans from the handling of dynamic expressions, we can cache parse\n// results for successive calls.\ntype ExpressionTarget = ParseValue | ParseTag | ParseProp | ParseError;\n\ninterface ParseResult {\n\telement: ParseElement;\n\ttargets: Array<ExpressionTarget | null>;\n}\n\n/**\n * Matches first significant character in children mode.\n *\n * Group 1: newline\n * Group 2: comment\n * Group 3: tag\n * Group 4: closing slash\n * Group 5: tag name\n *\n * The comment group must appear first because the tag group can potentially\n * match a comment, so that we can handle tag expressions where we’ve reached\n * the end of a span.\n */\nconst CHILDREN_RE =\n\t/((?:\\r|\\n|\\r\\n)\\s*)|(<!--[\\S\\s]*?(?:-->|$))|(<\\s*(\\/{0,2})\\s*([-_$\\w]*))/g;\n\n/**\n * Matches props after element tags.\n *\n * Group 1: tag end\n * Group 2: spread props\n * Group 3: prop name\n * Group 4: equals\n * Group 5: prop value string\n */\nconst PROPS_RE =\n\t/\\s*(?:(\\/?\\s*>)|(\\.\\.\\.\\s*)|(?:([-_$\\w]+)\\s*(=)?\\s*(?:(\"(\\\\\"|[\\S\\s])*?(?:\"|$)|'(?:\\\\'|[\\S\\s])*?(?:'|$)))?))/g;\n\nconst CLOSING_BRACKET_RE = />/g;\n\nconst CLOSING_SINGLE_QUOTE_RE = /[^\\\\]?'/g;\n\nconst CLOSING_DOUBLE_QUOTE_RE = /[^\\\\]?\"/g;\n\nconst CLOSING_COMMENT_RE = /-->/g;\n\nfunction parse(spans: ArrayLike<string>): ParseResult {\n\tlet matcher = CHILDREN_RE;\n\tconst stack: Array<ParseElement> = [];\n\tlet element: ParseElement = {\n\t\ttype: \"element\",\n\t\topen: {type: \"tag\", slash: \"\", value: \"\"},\n\t\tclose: null,\n\t\tprops: [],\n\t\tchildren: [],\n\t};\n\n\tconst targets: Array<ExpressionTarget | null> = [];\n\tlet lineStart = true;\n\tfor (let s = 0; s < spans.length; s++) {\n\t\tconst span = spans[s];\n\t\t// Whether or not an expression is upcoming. Used to provide better errors.\n\t\tconst expressing = s < spans.length - 1;\n\t\tlet expressionTarget: ExpressionTarget | null = null;\n\t\tfor (let i = 0, end = i; i < span.length; i = end) {\n\t\t\tmatcher.lastIndex = i;\n\t\t\tconst match = matcher.exec(span);\n\t\t\tend = match ? match.index + match[0].length : span.length;\n\t\t\tswitch (matcher) {\n\t\t\t\tcase CHILDREN_RE: {\n\t\t\t\t\tif (match) {\n\t\t\t\t\t\tconst [, newline, comment, tag, closingSlash, tagName] = match;\n\t\t\t\t\t\tif (i < match.index) {\n\t\t\t\t\t\t\tlet before = span.slice(i, match.index);\n\t\t\t\t\t\t\tif (lineStart) {\n\t\t\t\t\t\t\t\tbefore = before.replace(/^\\s*/, \"\");\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (newline) {\n\t\t\t\t\t\t\t\tif (span[Math.max(0, match.index - 1)] === \"\\\\\") {\n\t\t\t\t\t\t\t\t\t// We preserve whitespace before escaped newlines.\n\t\t\t\t\t\t\t\t\t// xm` \\\n\t\t\t\t\t\t\t\t\t// `\n\t\t\t\t\t\t\t\t\t// remove the backslash from output\n\t\t\t\t\t\t\t\t\tbefore = before.slice(0, -1);\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tbefore = before.replace(/\\s*$/, \"\");\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (before) {\n\t\t\t\t\t\t\t\telement.children.push({type: \"value\", value: before});\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tlineStart = !!newline;\n\t\t\t\t\t\tif (comment) {\n\t\t\t\t\t\t\tif (end === span.length) {\n\t\t\t\t\t\t\t\t// Expression in a comment:\n\t\t\t\t\t\t\t\t// xm`<!-- ${exp} -->`\n\t\t\t\t\t\t\t\tmatcher = CLOSING_COMMENT_RE;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else if (tag) {\n\t\t\t\t\t\t\tif (closingSlash) {\n\t\t\t\t\t\t\t\telement.close = {\n\t\t\t\t\t\t\t\t\ttype: \"tag\",\n\t\t\t\t\t\t\t\t\tslash: closingSlash,\n\t\t\t\t\t\t\t\t\tvalue: tagName,\n\t\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\t\tif (!stack.length) {\n\t\t\t\t\t\t\t\t\tif (end !== span.length) {\n\t\t\t\t\t\t\t\t\t\tthrow new SyntaxError(`Unmatched closing tag \"${tagName}\"`);\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// ERROR EXPRESSION\n\t\t\t\t\t\t\t\t\texpressionTarget = {\n\t\t\t\t\t\t\t\t\t\ttype: \"error\",\n\t\t\t\t\t\t\t\t\t\tmessage: \"Unmatched closing tag ${}\",\n\t\t\t\t\t\t\t\t\t\tvalue: null,\n\t\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tif (end === span.length) {\n\t\t\t\t\t\t\t\t\t\t// TAG EXPRESSION\n\t\t\t\t\t\t\t\t\t\texpressionTarget = element.close;\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\telement = stack.pop()!;\n\t\t\t\t\t\t\t\t\tmatcher = CLOSING_BRACKET_RE;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tconst next: ParseElement = {\n\t\t\t\t\t\t\t\t\ttype: \"element\",\n\t\t\t\t\t\t\t\t\topen: {\n\t\t\t\t\t\t\t\t\t\ttype: \"tag\",\n\t\t\t\t\t\t\t\t\t\tslash: \"\",\n\t\t\t\t\t\t\t\t\t\tvalue: tagName,\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tclose: null,\n\t\t\t\t\t\t\t\t\tprops: [],\n\t\t\t\t\t\t\t\t\tchildren: [],\n\t\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\t\telement.children.push(next);\n\t\t\t\t\t\t\t\tstack.push(element);\n\t\t\t\t\t\t\t\telement = next;\n\t\t\t\t\t\t\t\tmatcher = PROPS_RE;\n\t\t\t\t\t\t\t\tif (end === span.length) {\n\t\t\t\t\t\t\t\t\t// TAG EXPRESSION\n\t\t\t\t\t\t\t\t\texpressionTarget = element.open;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif (i < span.length) {\n\t\t\t\t\t\t\tlet after = span.slice(i);\n\t\t\t\t\t\t\tif (!expressing) {\n\t\t\t\t\t\t\t\t// trim trailing whitespace\n\t\t\t\t\t\t\t\tafter = after.replace(/\\s*$/, \"\");\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (after) {\n\t\t\t\t\t\t\t\telement.children.push({type: \"value\", value: after});\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tcase PROPS_RE: {\n\t\t\t\t\tif (match) {\n\t\t\t\t\t\tconst [, tagEnd, spread, name, equals, string] = match;\n\t\t\t\t\t\tif (i < match.index) {\n\t\t\t\t\t\t\tthrow new SyntaxError(\n\t\t\t\t\t\t\t\t`Unexpected text \\`${span.slice(i, match.index).trim()}\\``,\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (tagEnd) {\n\t\t\t\t\t\t\tif (tagEnd[0] === \"/\") {\n\t\t\t\t\t\t\t\t// This is a self-closing element, so there will always be a\n\t\t\t\t\t\t\t\t// result on the stack.\n\t\t\t\t\t\t\t\telement = stack.pop()!;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tmatcher = CHILDREN_RE;\n\t\t\t\t\t\t} else if (spread) {\n\t\t\t\t\t\t\tconst value = {\n\t\t\t\t\t\t\t\ttype: \"value\" as const,\n\t\t\t\t\t\t\t\tvalue: null,\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\telement.props.push(value);\n\t\t\t\t\t\t\t// SPREAD PROP EXPRESSION\n\t\t\t\t\t\t\texpressionTarget = value;\n\t\t\t\t\t\t\tif (!(expressing && end === span.length)) {\n\t\t\t\t\t\t\t\tthrow new SyntaxError('Expression expected after \"...\"');\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else if (name) {\n\t\t\t\t\t\t\tlet value: ParseValue | ParsePropString;\n\t\t\t\t\t\t\tif (string == null) {\n\t\t\t\t\t\t\t\tif (!equals) {\n\t\t\t\t\t\t\t\t\tvalue = {type: \"value\", value: true};\n\t\t\t\t\t\t\t\t} else if (end < span.length) {\n\t\t\t\t\t\t\t\t\tthrow new SyntaxError(\n\t\t\t\t\t\t\t\t\t\t`Unexpected text \\`${span.slice(end, end + 20)}\\``,\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tvalue = {type: \"value\" as const, value: null};\n\t\t\t\t\t\t\t\t\t// PROP EXPRESSION\n\t\t\t\t\t\t\t\t\texpressionTarget = value;\n\t\t\t\t\t\t\t\t\tif (!(expressing && end === span.length)) {\n\t\t\t\t\t\t\t\t\t\tthrow new SyntaxError(\n\t\t\t\t\t\t\t\t\t\t\t`Expression expected for prop \"${name}\"`,\n\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tconst quote = string[0];\n\t\t\t\t\t\t\t\tvalue = {type: \"propString\", parts: []};\n\t\t\t\t\t\t\t\tvalue.parts.push(string);\n\t\t\t\t\t\t\t\tif (end === span.length) {\n\t\t\t\t\t\t\t\t\tmatcher =\n\t\t\t\t\t\t\t\t\t\tquote === \"'\"\n\t\t\t\t\t\t\t\t\t\t\t? CLOSING_SINGLE_QUOTE_RE\n\t\t\t\t\t\t\t\t\t\t\t: CLOSING_DOUBLE_QUOTE_RE;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tconst prop = {\n\t\t\t\t\t\t\t\ttype: \"prop\" as const,\n\t\t\t\t\t\t\t\tname,\n\t\t\t\t\t\t\t\tvalue,\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\telement.props.push(prop);\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif (!expressing) {\n\t\t\t\t\t\t\tif (i === span.length) {\n\t\t\t\t\t\t\t\tthrow new SyntaxError(\n\t\t\t\t\t\t\t\t\t`Expected props but reached end of document`,\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthrow new SyntaxError(\n\t\t\t\t\t\t\t\t\t`Unexpected text \\`${span.slice(i, i + 20).trim()}\\``,\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Unexpected expression errors are handled in the outer loop.\n\t\t\t\t\t\t//\n\t\t\t\t\t\t// This would most likely be the starting point for the logic of\n\t\t\t\t\t\t// prop name expressions.\n\t\t\t\t\t\t// xm`<p ${name}=${value}>`\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tcase CLOSING_BRACKET_RE: {\n\t\t\t\t\t// We’re in a closing tag and looking for the >.\n\t\t\t\t\tif (match) {\n\t\t\t\t\t\tif (i < match.index) {\n\t\t\t\t\t\t\tthrow new SyntaxError(\n\t\t\t\t\t\t\t\t`Unexpected text \\`${span.slice(i, match.index).trim()}\\``,\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tmatcher = CHILDREN_RE;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif (!expressing) {\n\t\t\t\t\t\t\tthrow new SyntaxError(\n\t\t\t\t\t\t\t\t`Unexpected text \\`${span.slice(i, i + 20).trim()}\\``,\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tcase CLOSING_SINGLE_QUOTE_RE:\n\t\t\t\tcase CLOSING_DOUBLE_QUOTE_RE: {\n\t\t\t\t\tconst string = span.slice(i, end);\n\t\t\t\t\tconst prop = element.props[element.props.length - 1] as ParseProp;\n\t\t\t\t\tconst propString = prop.value as ParsePropString;\n\t\t\t\t\tpropString.parts.push(string);\n\t\t\t\t\tif (match) {\n\t\t\t\t\t\tmatcher = PROPS_RE;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif (!expressing) {\n\t\t\t\t\t\t\tthrow new SyntaxError(\n\t\t\t\t\t\t\t\t`Missing \\`${\n\t\t\t\t\t\t\t\t\tmatcher === CLOSING_SINGLE_QUOTE_RE ? \"'\" : '\"'\n\t\t\t\t\t\t\t\t}\\``,\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tcase CLOSING_COMMENT_RE: {\n\t\t\t\t\tif (match) {\n\t\t\t\t\t\tmatcher = CHILDREN_RE;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif (!expressing) {\n\t\t\t\t\t\t\tthrow new SyntaxError(\n\t\t\t\t\t\t\t\t\"Expected `-->` but reached end of template\",\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (expressing) {\n\t\t\tif (expressionTarget) {\n\t\t\t\ttargets.push(expressionTarget);\n\t\t\t\tif (expressionTarget.type === \"error\") {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tswitch (matcher) {\n\t\t\t\tcase CHILDREN_RE: {\n\t\t\t\t\tconst target = {type: \"value\" as const, value: null};\n\t\t\t\t\telement.children.push(target);\n\t\t\t\t\ttargets.push(target);\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tcase CLOSING_SINGLE_QUOTE_RE:\n\t\t\t\tcase CLOSING_DOUBLE_QUOTE_RE: {\n\t\t\t\t\tconst prop = element.props[element.props.length - 1] as ParseProp;\n\t\t\t\t\tconst target = {type: \"value\" as const, value: null};\n\t\t\t\t\t(prop.value as ParsePropString).parts.push(target);\n\t\t\t\t\ttargets.push(target);\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tcase CLOSING_COMMENT_RE:\n\t\t\t\t\ttargets.push(null);\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\t\t\t\t\tthrow new SyntaxError(\"Unexpected expression\");\n\t\t\t}\n\t\t} else if (expressionTarget) {\n\t\t\tthrow new SyntaxError(\"Expression expected\");\n\t\t}\n\n\t\tlineStart = false;\n\t}\n\n\tif (stack.length) {\n\t\tconst ti = targets.indexOf(element.open);\n\t\tif (ti === -1) {\n\t\t\tthrow new SyntaxError(`Unmatched opening tag \"${element.open.value}\"`);\n\t\t}\n\n\t\ttargets[ti] = {\n\t\t\ttype: \"error\",\n\t\t\tmessage: \"Unmatched opening tag ${}\",\n\t\t\tvalue: null,\n\t\t};\n\t}\n\n\tif (element.children.length === 1 && element.children[0].type === \"element\") {\n\t\telement = element.children[0];\n\t}\n\n\treturn {element, targets};\n}\n\nfunction build(parsed: ParseElement): Element {\n\tif (\n\t\tparsed.close !== null &&\n\t\tparsed.close.slash !== \"//\" &&\n\t\tparsed.open.value !== parsed.close.value\n\t) {\n\t\tthrow new SyntaxError(\n\t\t\t`Unmatched closing tag ${formatTagForError(\n\t\t\t\tparsed.close.value,\n\t\t\t)}, expected ${formatTagForError(parsed.open.value)}`,\n\t\t);\n\t}\n\n\tconst children: Array<unknown> = [];\n\tfor (let i = 0; i < parsed.children.length; i++) {\n\t\tconst child = parsed.children[i];\n\t\tchildren.push(child.type === \"element\" ? build(child) : child.value);\n\t}\n\n\tlet props = parsed.props.length ? ({} as Record<string, unknown>) : null;\n\tfor (let i = 0; i < parsed.props.length; i++) {\n\t\tconst prop = parsed.props[i];\n\t\tif (prop.type === \"prop\") {\n\t\t\tlet value: any;\n\t\t\tif (prop.value.type === \"value\") {\n\t\t\t\tvalue = prop.value.value;\n\t\t\t} else {\n\t\t\t\tlet string = \"\";\n\t\t\t\tfor (let i = 0; i < prop.value.parts.length; i++) {\n\t\t\t\t\tconst part = prop.value.parts[i];\n\t\t\t\t\tif (typeof part === \"string\") {\n\t\t\t\t\t\tstring += part;\n\t\t\t\t\t} else if (typeof part.value !== \"boolean\" && part.value != null) {\n\t\t\t\t\t\tstring +=\n\t\t\t\t\t\t\ttypeof part.value === \"string\" ? part.value : String(part.value);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tvalue = string\n\t\t\t\t\t// remove quotes\n\t\t\t\t\t.slice(1, -1)\n\t\t\t\t\t// unescape things\n\t\t\t\t\t// adapted from https://stackoverflow.com/a/57330383/1825413\n\t\t\t\t\t.replace(\n\t\t\t\t\t\t/\\\\x[0-9a-f]{2}|\\\\u[0-9a-f]{4}|\\\\u\\{[0-9a-f]+\\}|\\\\./gi,\n\t\t\t\t\t\t(match) => {\n\t\t\t\t\t\t\tswitch (match[1]) {\n\t\t\t\t\t\t\t\tcase \"b\":\n\t\t\t\t\t\t\t\t\treturn \"\\b\";\n\t\t\t\t\t\t\t\tcase \"f\":\n\t\t\t\t\t\t\t\t\treturn \"\\f\";\n\t\t\t\t\t\t\t\tcase \"n\":\n\t\t\t\t\t\t\t\t\treturn \"\\n\";\n\t\t\t\t\t\t\t\tcase \"r\":\n\t\t\t\t\t\t\t\t\treturn \"\\r\";\n\t\t\t\t\t\t\t\tcase \"t\":\n\t\t\t\t\t\t\t\t\treturn \"\\t\";\n\t\t\t\t\t\t\t\tcase \"v\":\n\t\t\t\t\t\t\t\t\treturn \"\\v\";\n\t\t\t\t\t\t\t\tcase \"x\":\n\t\t\t\t\t\t\t\t\treturn String.fromCharCode(parseInt(match.slice(2), 16));\n\t\t\t\t\t\t\t\tcase \"u\":\n\t\t\t\t\t\t\t\t\tif (match[2] === \"{\") {\n\t\t\t\t\t\t\t\t\t\treturn String.fromCodePoint(\n\t\t\t\t\t\t\t\t\t\t\tparseInt(match.slice(3, -1), 16),\n\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\treturn String.fromCharCode(parseInt(match.slice(2), 16));\n\t\t\t\t\t\t\t\tcase \"0\":\n\t\t\t\t\t\t\t\t\treturn \"\\0\";\n\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\treturn match.slice(1);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t},\n\t\t\t\t\t);\n\t\t\t}\n\n\t\t\tprops![prop.name] = value;\n\t\t} else {\n\t\t\t// spread prop\n\t\t\tprops = {...props, ...(prop.value as any)};\n\t\t}\n\t}\n\n\treturn c(parsed.open.value, props, ...children);\n}\n\nfunction formatTagForError(tag: unknown): string {\n\treturn typeof tag === \"function\"\n\t\t? tag.name + \"()\"\n\t\t: typeof tag === \"string\"\n\t\t? `\"${tag}\"`\n\t\t: JSON.stringify(tag);\n}\n"],"names":["c"],"mappings":"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"}
|
package/xm.d.ts
ADDED