@marko/compiler 5.33.0 → 5.33.2
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/dist/babel-plugin/index.js +21 -21
- package/dist/babel-plugin/parser.js +125 -125
- package/dist/babel-types/traverse/patch.js +32 -32
- package/dist/babel-types/types/definitions.js +15 -13
- package/dist/babel-types/types/patch.js +8 -8
- package/dist/register.js +12 -12
- package/dist/taglib/finder/index.js +3 -3
- package/dist/taglib/index.js +9 -9
- package/dist/taglib/loader/Taglib.js +2 -2
- package/dist/taglib/loader/index.js +4 -4
- package/dist/taglib/loader/json-file-reader.js +2 -2
- package/dist/taglib/loader/loadAttributeFromProps.js +8 -8
- package/dist/taglib/loader/loadAttributes.js +4 -4
- package/dist/taglib/loader/loadTagFromProps.js +60 -45
- package/dist/taglib/loader/loadTaglibFromDir.js +6 -6
- package/dist/taglib/loader/loadTaglibFromProps.js +45 -45
- package/dist/taglib/loader/property-handlers.js +5 -5
- package/dist/taglib/loader/scanTagsDir.js +5 -5
- package/dist/traverse.d.ts +940 -658
- package/dist/util/build-code-frame.js +18 -18
- package/dist/util/merge-errors.js +2 -2
- package/package.json +2 -2
package/dist/taglib/index.js
CHANGED
|
@@ -25,19 +25,19 @@ function buildLookup(dirname, requestedTranslator, onError) {
|
|
|
25
25
|
const translator = (0, _tryLoadTranslator.default)(requestedTranslator);
|
|
26
26
|
if (!translator || !Array.isArray(translator.taglibs)) {
|
|
27
27
|
throw new Error(
|
|
28
|
-
|
|
29
|
-
|
|
28
|
+
"@marko/compiler: Invalid translator provided to buildLookup(dir, translator)"
|
|
29
|
+
);
|
|
30
30
|
}
|
|
31
31
|
|
|
32
32
|
let taglibsForDir = loadedTranslatorsTaglibs.get(translator);
|
|
33
33
|
|
|
34
34
|
if (!taglibsForDir) {
|
|
35
35
|
loadedTranslatorsTaglibs.set(
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
36
|
+
translator,
|
|
37
|
+
taglibsForDir = registeredTaglibs.concat(
|
|
38
|
+
translator.taglibs.map(([id, props]) => loadTaglib(id, props))
|
|
39
|
+
)
|
|
40
|
+
);
|
|
41
41
|
}
|
|
42
42
|
|
|
43
43
|
if (onError) {
|
|
@@ -89,8 +89,8 @@ function register(id, props) {
|
|
|
89
89
|
if (!id.endsWith(".json")) {
|
|
90
90
|
id = _path.default.join(id, "marko.json");
|
|
91
91
|
}
|
|
92
|
-
break;
|
|
93
|
-
|
|
92
|
+
break;
|
|
93
|
+
}
|
|
94
94
|
id = _modules.default.require.resolve(id);
|
|
95
95
|
props = _modules.default.require(id);
|
|
96
96
|
}
|
|
@@ -47,8 +47,8 @@ class Taglib {
|
|
|
47
47
|
|
|
48
48
|
if (!attribute.pattern && !attribute.name) {
|
|
49
49
|
throw new Error(
|
|
50
|
-
|
|
51
|
-
|
|
50
|
+
"Invalid attribute: " + require("util").inspect(attribute)
|
|
51
|
+
);
|
|
52
52
|
}
|
|
53
53
|
|
|
54
54
|
this.attributes[attribute.key] = attribute;
|
|
@@ -27,10 +27,10 @@ function createTaglib(filePath) {
|
|
|
27
27
|
function loadTag(tagProps, filePath) {
|
|
28
28
|
var tag = new types.Tag(filePath);
|
|
29
29
|
loaders.loadTagFromProps(
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
30
|
+
tag,
|
|
31
|
+
tagProps,
|
|
32
|
+
new DependencyChain(filePath ? [filePath] : [])
|
|
33
|
+
);
|
|
34
34
|
return tag;
|
|
35
35
|
}
|
|
36
36
|
|
|
@@ -223,14 +223,14 @@ function loadAttributeFromProps(attrName, attrProps, dependencyChain) {
|
|
|
223
223
|
attrLoader.load(attrProps);
|
|
224
224
|
} catch (err) {
|
|
225
225
|
throw createError(
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
226
|
+
'Unable to load attribute "' +
|
|
227
|
+
attrName +
|
|
228
|
+
'" (' +
|
|
229
|
+
dependencyChain +
|
|
230
|
+
"): " +
|
|
231
|
+
err,
|
|
232
|
+
err
|
|
233
|
+
);
|
|
234
234
|
}
|
|
235
235
|
|
|
236
236
|
return attr;
|
|
@@ -8,10 +8,10 @@ module.exports = function loadAttributes(value, parent, dependencyChain) {
|
|
|
8
8
|
for (const attrName in value) {
|
|
9
9
|
const attrProps = value[attrName];
|
|
10
10
|
var attr = loaders.loadAttributeFromProps(
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
11
|
+
attrName,
|
|
12
|
+
attrProps,
|
|
13
|
+
dependencyChain.append("@" + attrName)
|
|
14
|
+
);
|
|
15
15
|
|
|
16
16
|
parent.addAttribute(attr);
|
|
17
17
|
}
|
|
@@ -16,6 +16,24 @@ function resolveRelative(dirname, value) {
|
|
|
16
16
|
return value[0] === "." ? resolveFrom(dirname, value) : value;
|
|
17
17
|
}
|
|
18
18
|
|
|
19
|
+
function resolveWithMarkoExt(dirname, value) {
|
|
20
|
+
if (value[0] !== ".") return value;
|
|
21
|
+
|
|
22
|
+
if (
|
|
23
|
+
markoModules.require.extensions &&
|
|
24
|
+
!(".marko" in markoModules.require.extensions))
|
|
25
|
+
{
|
|
26
|
+
markoModules.require.extensions[".marko"] = undefined;
|
|
27
|
+
try {
|
|
28
|
+
return resolveFrom(dirname, value);
|
|
29
|
+
} finally {
|
|
30
|
+
delete markoModules.require.extensions[".marko"];
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
return resolveFrom(dirname, value);
|
|
35
|
+
}
|
|
36
|
+
|
|
19
37
|
function removeDashes(str) {
|
|
20
38
|
return str.replace(/-([a-z])/g, function (match, lower) {
|
|
21
39
|
return lower.toUpperCase();
|
|
@@ -95,25 +113,25 @@ class TagLoader {
|
|
|
95
113
|
nestedVariable = {};
|
|
96
114
|
|
|
97
115
|
propertyHandlers(
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
116
|
+
value,
|
|
117
|
+
{
|
|
118
|
+
name: function (value) {
|
|
119
|
+
nestedVariable.name = value;
|
|
120
|
+
},
|
|
121
|
+
|
|
122
|
+
nameFromAttribute: function (value) {
|
|
123
|
+
nestedVariable.nameFromAttribute = value;
|
|
124
|
+
}
|
|
102
125
|
},
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
nestedVariable.nameFromAttribute = value;
|
|
106
|
-
}
|
|
107
|
-
},
|
|
108
|
-
dependencyChain.toString());
|
|
109
|
-
|
|
126
|
+
dependencyChain.toString()
|
|
127
|
+
);
|
|
110
128
|
|
|
111
129
|
if (!nestedVariable.name && !nestedVariable.nameFromAttribute) {
|
|
112
130
|
throw new Error(
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
131
|
+
'The "name" or "name-from-attribute" attribute is required for a nested variable (' +
|
|
132
|
+
dependencyChain +
|
|
133
|
+
")"
|
|
134
|
+
);
|
|
117
135
|
}
|
|
118
136
|
}
|
|
119
137
|
|
|
@@ -203,8 +221,8 @@ class TagLoader {
|
|
|
203
221
|
// with the user's taglib.
|
|
204
222
|
if (!isObjectEmpty(value)) {
|
|
205
223
|
throw new Error(
|
|
206
|
-
|
|
207
|
-
|
|
224
|
+
"Unsupported properties of [" + Object.keys(value).join(", ") + "]"
|
|
225
|
+
);
|
|
208
226
|
}
|
|
209
227
|
|
|
210
228
|
var type = attrProps.type;
|
|
@@ -238,10 +256,10 @@ class TagLoader {
|
|
|
238
256
|
var attrName = part.substring(1);
|
|
239
257
|
|
|
240
258
|
var attr = loaders.loadAttributeFromProps(
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
259
|
+
attrName,
|
|
260
|
+
attrProps,
|
|
261
|
+
dependencyChain.append(part)
|
|
262
|
+
);
|
|
245
263
|
|
|
246
264
|
tag.addAttribute(attr);
|
|
247
265
|
} else if (part.startsWith("<")) {
|
|
@@ -269,10 +287,10 @@ class TagLoader {
|
|
|
269
287
|
|
|
270
288
|
if (!nestedTag.isRepeated) {
|
|
271
289
|
let attr = loaders.loadAttributeFromProps(
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
290
|
+
nestedTag.targetProperty,
|
|
291
|
+
{ type: "object" },
|
|
292
|
+
dependencyChain.append(part)
|
|
293
|
+
);
|
|
276
294
|
|
|
277
295
|
tag.addAttribute(attr);
|
|
278
296
|
}
|
|
@@ -300,7 +318,7 @@ class TagLoader {
|
|
|
300
318
|
* @param {String} value The renderer path
|
|
301
319
|
*/
|
|
302
320
|
renderer(value) {
|
|
303
|
-
this.tag.renderer =
|
|
321
|
+
this.tag.renderer = resolveWithMarkoExt(this.dirname, value);
|
|
304
322
|
}
|
|
305
323
|
|
|
306
324
|
/**
|
|
@@ -347,10 +365,10 @@ class TagLoader {
|
|
|
347
365
|
var tag = this.tag;
|
|
348
366
|
|
|
349
367
|
loaders.loadAttributes(
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
368
|
+
value,
|
|
369
|
+
tag,
|
|
370
|
+
this.dependencyChain.append("attributes")
|
|
371
|
+
);
|
|
354
372
|
}
|
|
355
373
|
|
|
356
374
|
/**
|
|
@@ -474,24 +492,21 @@ class TagLoader {
|
|
|
474
492
|
for (const nestedTagName in value) {
|
|
475
493
|
const nestedTagDef = value[nestedTagName];
|
|
476
494
|
var dependencyChain = this.dependencyChain.append(
|
|
477
|
-
|
|
478
|
-
|
|
495
|
+
`nestedTags["${nestedTagName}"]`
|
|
496
|
+
);
|
|
479
497
|
var nestedTag = new types.Tag(filePath);
|
|
480
498
|
|
|
481
499
|
loadTagFromProps(nestedTag, nestedTagDef, dependencyChain);
|
|
482
500
|
|
|
483
501
|
nestedTag.name = nestedTagName;
|
|
484
502
|
tag.addNestedTag(nestedTag);
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
tag.addAttribute(attr);
|
|
494
|
-
}
|
|
503
|
+
tag.addAttribute(
|
|
504
|
+
loaders.loadAttributeFromProps(
|
|
505
|
+
nestedTag.targetProperty,
|
|
506
|
+
{ type: "expression" },
|
|
507
|
+
dependencyChain
|
|
508
|
+
)
|
|
509
|
+
);
|
|
495
510
|
}
|
|
496
511
|
}
|
|
497
512
|
|
|
@@ -555,9 +570,9 @@ function loadTagFromProps(tag, tagProps, dependencyChain) {
|
|
|
555
570
|
tagLoader.load(tagProps);
|
|
556
571
|
} catch (err) {
|
|
557
572
|
throw createError(
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
573
|
+
"Unable to load tag (" + dependencyChain + "): " + err,
|
|
574
|
+
err
|
|
575
|
+
);
|
|
561
576
|
}
|
|
562
577
|
|
|
563
578
|
return tag;
|
|
@@ -18,12 +18,12 @@ function loadFromDir(dir) {
|
|
|
18
18
|
taglib = new types.Taglib(componentsPath);
|
|
19
19
|
cache.put(componentsPath, taglib);
|
|
20
20
|
scanTagsDir(
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
21
|
+
componentsPath,
|
|
22
|
+
dir,
|
|
23
|
+
"components",
|
|
24
|
+
taglib,
|
|
25
|
+
new DependencyChain([componentsPath])
|
|
26
|
+
);
|
|
27
27
|
}
|
|
28
28
|
|
|
29
29
|
return taglib;
|
|
@@ -43,9 +43,9 @@ function normalizeHook(dirname, value) {
|
|
|
43
43
|
class TaglibLoader {
|
|
44
44
|
constructor(taglib, dependencyChain) {
|
|
45
45
|
ok(
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
46
|
+
dependencyChain instanceof DependencyChain,
|
|
47
|
+
'"dependencyChain" is not valid'
|
|
48
|
+
);
|
|
49
49
|
|
|
50
50
|
this.dependencyChain = dependencyChain;
|
|
51
51
|
|
|
@@ -101,12 +101,12 @@ class TaglibLoader {
|
|
|
101
101
|
taglibFS.fs.statSync(tagFilePath);
|
|
102
102
|
} catch (_) {
|
|
103
103
|
throw new Error(
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
104
|
+
'Tag at path "' +
|
|
105
|
+
tagFilePath +
|
|
106
|
+
'" does not exist. (' +
|
|
107
|
+
dependencyChain +
|
|
108
|
+
")"
|
|
109
|
+
);
|
|
110
110
|
}
|
|
111
111
|
|
|
112
112
|
tag = new types.Tag(tagFilePath);
|
|
@@ -140,10 +140,10 @@ class TaglibLoader {
|
|
|
140
140
|
var attrKey = name.substring(1);
|
|
141
141
|
|
|
142
142
|
var attr = loaders.loadAttributeFromProps(
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
143
|
+
attrKey,
|
|
144
|
+
value,
|
|
145
|
+
this.dependencyChain.append("@" + attrKey)
|
|
146
|
+
);
|
|
147
147
|
|
|
148
148
|
attr.filePath = filePath;
|
|
149
149
|
attr.key = attrKey;
|
|
@@ -174,10 +174,10 @@ class TaglibLoader {
|
|
|
174
174
|
var attrDef = value[attrName];
|
|
175
175
|
|
|
176
176
|
var attr = loaders.loadAttributeFromProps(
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
177
|
+
attrName,
|
|
178
|
+
attrDef,
|
|
179
|
+
this.dependencyChain.append("@" + attrName)
|
|
180
|
+
);
|
|
181
181
|
|
|
182
182
|
attr.key = attrName;
|
|
183
183
|
|
|
@@ -203,10 +203,10 @@ class TaglibLoader {
|
|
|
203
203
|
for (var tagName in tags) {
|
|
204
204
|
if (hasOwnProperty.call(tags, tagName)) {
|
|
205
205
|
this._handleTag(
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
206
|
+
tagName,
|
|
207
|
+
tags[tagName],
|
|
208
|
+
this.dependencyChain.append("tags." + tagName)
|
|
209
|
+
);
|
|
210
210
|
}
|
|
211
211
|
}
|
|
212
212
|
}
|
|
@@ -233,21 +233,21 @@ class TaglibLoader {
|
|
|
233
233
|
if (Array.isArray(dir)) {
|
|
234
234
|
for (var i = 0; i < dir.length; i++) {
|
|
235
235
|
scanTagsDir(
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
236
|
+
path,
|
|
237
|
+
dirname,
|
|
238
|
+
dir[i],
|
|
239
|
+
taglib,
|
|
240
|
+
this.dependencyChain.append(`tags-dir[${i}]`)
|
|
241
|
+
);
|
|
242
242
|
}
|
|
243
243
|
} else {
|
|
244
244
|
scanTagsDir(
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
245
|
+
path,
|
|
246
|
+
dirname,
|
|
247
|
+
dir,
|
|
248
|
+
taglib,
|
|
249
|
+
this.dependencyChain.append(`tags-dir`)
|
|
250
|
+
);
|
|
251
251
|
}
|
|
252
252
|
}
|
|
253
253
|
}
|
|
@@ -281,9 +281,9 @@ class TaglibLoader {
|
|
|
281
281
|
var dependencyName = dependencyNames[j];
|
|
282
282
|
|
|
283
283
|
importPath = resolveFrom(
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
284
|
+
packageDir,
|
|
285
|
+
nodePath.join(dependencyName, "marko.json")
|
|
286
|
+
);
|
|
287
287
|
|
|
288
288
|
if (importPath) {
|
|
289
289
|
taglib.addImport(importPath);
|
|
@@ -296,8 +296,8 @@ class TaglibLoader {
|
|
|
296
296
|
taglib.addImport(importPath);
|
|
297
297
|
} else {
|
|
298
298
|
throw new Error(
|
|
299
|
-
|
|
300
|
-
|
|
299
|
+
"Import not found: " + curImport + " (from " + dirname + ")"
|
|
300
|
+
);
|
|
301
301
|
}
|
|
302
302
|
}
|
|
303
303
|
}
|
|
@@ -379,10 +379,10 @@ class TaglibLoader {
|
|
|
379
379
|
var rawAttrDef = rawAttrGroup[attrName];
|
|
380
380
|
|
|
381
381
|
let attr = loaders.loadAttributeFromProps(
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
382
|
+
attrName,
|
|
383
|
+
rawAttrDef,
|
|
384
|
+
attrGroupDependencyChain.append("@" + attrName)
|
|
385
|
+
);
|
|
386
386
|
|
|
387
387
|
attrGroup[attrName] = attr;
|
|
388
388
|
});
|
|
@@ -405,9 +405,9 @@ function loadTaglibFromProps(taglib, taglibProps, dependencyChain) {
|
|
|
405
405
|
taglibLoader.load(taglibProps);
|
|
406
406
|
} catch (err) {
|
|
407
407
|
throw createError(
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
408
|
+
"Unable to load taglib (" + dependencyChain + "): " + err,
|
|
409
|
+
err
|
|
410
|
+
);
|
|
411
411
|
}
|
|
412
412
|
|
|
413
413
|
return taglib;
|
|
@@ -54,11 +54,11 @@ module.exports = function invokeHandlers(config, handlers, path) {
|
|
|
54
54
|
badProperty += "/" + JSON.stringify(keyNoDashes);
|
|
55
55
|
}
|
|
56
56
|
error(
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
57
|
+
"Invalid option of " +
|
|
58
|
+
badProperty +
|
|
59
|
+
". Allowed: " +
|
|
60
|
+
Object.keys(handlers).join(", ")
|
|
61
|
+
);
|
|
62
62
|
}
|
|
63
63
|
|
|
64
64
|
try {
|
|
@@ -176,11 +176,11 @@ dependencyChain)
|
|
|
176
176
|
if (!fileWasSet) {
|
|
177
177
|
if (hasTagJson) {
|
|
178
178
|
throw new Error(
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
179
|
+
"Invalid tag file: " +
|
|
180
|
+
tagJsonPath +
|
|
181
|
+
". Neither a renderer or a template was found for tag. " +
|
|
182
|
+
JSON.stringify(tagDef, null, 2)
|
|
183
|
+
);
|
|
184
184
|
} else {
|
|
185
185
|
// Skip this directory... there doesn't appear to be anything in it
|
|
186
186
|
continue;
|