@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.
@@ -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
- "@marko/compiler: Invalid translator provided to buildLookup(dir, translator)");
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
- translator,
37
- taglibsForDir = registeredTaglibs.concat(
38
- translator.taglibs.map(([id, props]) => loadTaglib(id, props))));
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
- "Invalid attribute: " + require("util").inspect(attribute));
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
- tag,
31
- tagProps,
32
- new DependencyChain(filePath ? [filePath] : []));
33
-
30
+ tag,
31
+ tagProps,
32
+ new DependencyChain(filePath ? [filePath] : [])
33
+ );
34
34
  return tag;
35
35
  }
36
36
 
@@ -10,7 +10,7 @@ exports.readFileSync = function (path) {
10
10
  return taglibProps;
11
11
  } catch (e) {
12
12
  throw new Error(
13
- 'Unable to parse JSON file at path "' + path + '". Error: ' + e);
14
-
13
+ 'Unable to parse JSON file at path "' + path + '". Error: ' + e
14
+ );
15
15
  }
16
16
  };
@@ -223,14 +223,14 @@ function loadAttributeFromProps(attrName, attrProps, dependencyChain) {
223
223
  attrLoader.load(attrProps);
224
224
  } catch (err) {
225
225
  throw createError(
226
- 'Unable to load attribute "' +
227
- attrName +
228
- '" (' +
229
- dependencyChain +
230
- "): " +
231
- err,
232
- err);
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
- attrName,
12
- attrProps,
13
- dependencyChain.append("@" + attrName));
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
- value,
99
- {
100
- name: function (value) {
101
- nestedVariable.name = value;
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
- nameFromAttribute: function (value) {
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
- 'The "name" or "name-from-attribute" attribute is required for a nested variable (' +
114
- dependencyChain +
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
- "Unsupported properties of [" + Object.keys(value).join(", ") + "]");
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
- attrName,
242
- attrProps,
243
- dependencyChain.append(part));
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
- nestedTag.targetProperty,
273
- { type: "object" },
274
- dependencyChain.append(part));
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 = resolveRelative(this.dirname, value);
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
- value,
351
- tag,
352
- this.dependencyChain.append("attributes"));
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
- `nestedTags["${nestedTagName}"]`);
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
- if (!nestedTag.isRepeated) {
487
- let attr = loaders.loadAttributeFromProps(
488
- nestedTag.targetProperty,
489
- { type: "object" },
490
- dependencyChain);
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
- "Unable to load tag (" + dependencyChain + "): " + err,
559
- err);
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
- componentsPath,
22
- dir,
23
- "components",
24
- taglib,
25
- new DependencyChain([componentsPath]));
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
- dependencyChain instanceof DependencyChain,
47
- '"dependencyChain" is not valid');
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
- 'Tag at path "' +
105
- tagFilePath +
106
- '" does not exist. (' +
107
- dependencyChain +
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
- attrKey,
144
- value,
145
- this.dependencyChain.append("@" + attrKey));
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
- attrName,
178
- attrDef,
179
- this.dependencyChain.append("@" + attrName));
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
- tagName,
207
- tags[tagName],
208
- this.dependencyChain.append("tags." + tagName));
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
- path,
237
- dirname,
238
- dir[i],
239
- taglib,
240
- this.dependencyChain.append(`tags-dir[${i}]`));
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
- path,
246
- dirname,
247
- dir,
248
- taglib,
249
- this.dependencyChain.append(`tags-dir`));
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
- packageDir,
285
- nodePath.join(dependencyName, "marko.json"));
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
- "Import not found: " + curImport + " (from " + dirname + ")");
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
- attrName,
383
- rawAttrDef,
384
- attrGroupDependencyChain.append("@" + attrName));
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
- "Unable to load taglib (" + dependencyChain + "): " + err,
409
- err);
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
- "Invalid option of " +
58
- badProperty +
59
- ". Allowed: " +
60
- Object.keys(handlers).join(", "));
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
- "Invalid tag file: " +
180
- tagJsonPath +
181
- ". Neither a renderer or a template was found for tag. " +
182
- JSON.stringify(tagDef, null, 2));
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;