@marko/compiler 5.20.9 → 5.21.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 (83) hide show
  1. package/dist/babel-plugin/file.js +1 -2
  2. package/dist/babel-plugin/index.js +1 -2
  3. package/dist/babel-plugin/parser.js +1 -2
  4. package/dist/babel-plugin/plugins/migrate.js +1 -2
  5. package/dist/babel-plugin/plugins/transform.js +1 -2
  6. package/dist/babel-plugin/util/plugin-hooks.js +1 -2
  7. package/dist/babel-types/generator/patch.js +1 -2
  8. package/dist/babel-types/index.js +1 -2
  9. package/dist/babel-types/traverse/patch.js +1 -2
  10. package/dist/babel-types/types/definitions.js +1 -2
  11. package/dist/babel-types/types/patch.js +1 -2
  12. package/dist/config.js +1 -2
  13. package/dist/index.js +1 -2
  14. package/dist/register.js +1 -2
  15. package/dist/taglib/finder/index.js +1 -2
  16. package/dist/taglib/fs.js +1 -2
  17. package/dist/taglib/index.js +1 -2
  18. package/dist/taglib/loader/Attribute.js +1 -2
  19. package/dist/taglib/loader/DependencyChain.js +1 -2
  20. package/dist/taglib/loader/Property.js +1 -2
  21. package/dist/taglib/loader/Tag.js +1 -2
  22. package/dist/taglib/loader/Taglib.js +1 -2
  23. package/dist/taglib/loader/Transformer.js +1 -2
  24. package/dist/taglib/loader/cache.js +1 -2
  25. package/dist/taglib/loader/index.js +1 -2
  26. package/dist/taglib/loader/json-file-reader.js +1 -2
  27. package/dist/taglib/loader/loadAttributeFromProps.js +1 -2
  28. package/dist/taglib/loader/loadAttributes.js +1 -2
  29. package/dist/taglib/loader/loadTagFromFile.js +1 -2
  30. package/dist/taglib/loader/loadTagFromProps.js +1 -2
  31. package/dist/taglib/loader/loadTaglibFromFile.js +1 -2
  32. package/dist/taglib/loader/loadTaglibFromProps.js +1 -2
  33. package/dist/taglib/loader/loaders.js +1 -2
  34. package/dist/taglib/loader/scanTagsDir.js +1 -2
  35. package/dist/taglib/loader/tag-def-from-code.js +1 -2
  36. package/dist/taglib/loader/types.js +1 -2
  37. package/dist/taglib/lookup/index.js +1 -2
  38. package/dist/traverse.d.ts +2 -0
  39. package/dist/util/should-optimize.js +1 -2
  40. package/dist/util/try-load-translator.js +1 -2
  41. package/index.d.ts +16 -8
  42. package/package.json +5 -6
  43. package/src/index.js +117 -0
  44. package/LICENSE +0 -21
  45. package/dist/babel-plugin/file.js.map +0 -1
  46. package/dist/babel-plugin/index.js.map +0 -1
  47. package/dist/babel-plugin/parser.js.map +0 -1
  48. package/dist/babel-plugin/plugins/migrate.js.map +0 -1
  49. package/dist/babel-plugin/plugins/transform.js.map +0 -1
  50. package/dist/babel-plugin/util/plugin-hooks.js.map +0 -1
  51. package/dist/babel-types/generator/patch.js.map +0 -1
  52. package/dist/babel-types/index.js.map +0 -1
  53. package/dist/babel-types/traverse/patch.js.map +0 -1
  54. package/dist/babel-types/types/definitions.js.map +0 -1
  55. package/dist/babel-types/types/patch.js.map +0 -1
  56. package/dist/config.js.map +0 -1
  57. package/dist/index.js.map +0 -1
  58. package/dist/register.js.map +0 -1
  59. package/dist/taglib/finder/index.js.map +0 -1
  60. package/dist/taglib/fs.js.map +0 -1
  61. package/dist/taglib/index.js.map +0 -1
  62. package/dist/taglib/loader/Attribute.js.map +0 -1
  63. package/dist/taglib/loader/DependencyChain.js.map +0 -1
  64. package/dist/taglib/loader/Property.js.map +0 -1
  65. package/dist/taglib/loader/Tag.js.map +0 -1
  66. package/dist/taglib/loader/Taglib.js.map +0 -1
  67. package/dist/taglib/loader/Transformer.js.map +0 -1
  68. package/dist/taglib/loader/cache.js.map +0 -1
  69. package/dist/taglib/loader/index.js.map +0 -1
  70. package/dist/taglib/loader/json-file-reader.js.map +0 -1
  71. package/dist/taglib/loader/loadAttributeFromProps.js.map +0 -1
  72. package/dist/taglib/loader/loadAttributes.js.map +0 -1
  73. package/dist/taglib/loader/loadTagFromFile.js.map +0 -1
  74. package/dist/taglib/loader/loadTagFromProps.js.map +0 -1
  75. package/dist/taglib/loader/loadTaglibFromFile.js.map +0 -1
  76. package/dist/taglib/loader/loadTaglibFromProps.js.map +0 -1
  77. package/dist/taglib/loader/loaders.js.map +0 -1
  78. package/dist/taglib/loader/scanTagsDir.js.map +0 -1
  79. package/dist/taglib/loader/tag-def-from-code.js.map +0 -1
  80. package/dist/taglib/loader/types.js.map +0 -1
  81. package/dist/taglib/lookup/index.js.map +0 -1
  82. package/dist/util/should-optimize.js.map +0 -1
  83. package/dist/util/try-load-translator.js.map +0 -1
@@ -44,5 +44,4 @@ class MarkoFile extends _core.File {
44
44
  set() {} });
45
45
 
46
46
  return err;
47
- }}exports.MarkoFile = MarkoFile;
48
- //# sourceMappingURL=file.js.map
47
+ }}exports.MarkoFile = MarkoFile;
@@ -323,5 +323,4 @@ function addPlugin(meta, arr, plugin) {
323
323
 
324
324
  function unique(item, i, list) {
325
325
  return list.indexOf(item) === i;
326
- }
327
- //# sourceMappingURL=index.js.map
326
+ }
@@ -476,5 +476,4 @@ function parseMarko(file) {
476
476
  start: { line: 1, column: 0 },
477
477
  end: positionAt(ast.end) };
478
478
 
479
- }
480
- //# sourceMappingURL=parser.js.map
479
+ }
@@ -58,5 +58,4 @@ function getMigratorsForTag(path) {
58
58
  }
59
59
 
60
60
  return migrators;
61
- }
62
- //# sourceMappingURL=migrate.js.map
61
+ }
@@ -60,5 +60,4 @@ function getTransformersForTag(path) {
60
60
  }
61
61
 
62
62
  return transformers;
63
- }
64
- //# sourceMappingURL=transform.js.map
63
+ }
@@ -19,5 +19,4 @@ function exit(plugin, ...args) {
19
19
  if (typeof fn === "function") {
20
20
  fn(...args);
21
21
  }
22
- }
23
- //# sourceMappingURL=plugin-hooks.js.map
22
+ }
@@ -236,5 +236,4 @@ function printWithParansIfNeeded(value, parent) {
236
236
 
237
237
  function hasUnenclosedWhitespace(node) {
238
238
  return UNENCLOSED_WHITESPACE_TYPES.includes(node.type);
239
- }
240
- //# sourceMappingURL=patch.js.map
239
+ }
@@ -2,5 +2,4 @@
2
2
  require("./traverse/patch");
3
3
  require("./generator/patch");
4
4
  var _types = require("@babel/types");Object.keys(_types).forEach(function (key) {if (key === "default" || key === "__esModule") return;if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;if (key in exports && exports[key] === _types[key]) return;exports[key] = _types[key];});
5
- var _definitions = require("./types/definitions");exports.MARKO_TYPES = _definitions.MARKO_TYPES;
6
- //# sourceMappingURL=index.js.map
5
+ var _definitions = require("./types/definitions");exports.MARKO_TYPES = _definitions.MARKO_TYPES;
@@ -125,5 +125,4 @@ function getScopeDepth(scope) {
125
125
  let cur = scope;
126
126
  while (cur = cur.parent) depth++;
127
127
  return depth;
128
- }
129
- //# sourceMappingURL=patch.js.map
128
+ }
@@ -190,5 +190,4 @@ MarkoDefinitions;exports.default = _default;
190
190
  const MARKO_TYPES = Object.keys(MarkoDefinitions);exports.MARKO_TYPES = MARKO_TYPES;
191
191
  const MARKO_ALIAS_TYPES = Array.from(
192
192
  new Set(
193
- MARKO_TYPES.reduce((all, t) => all.concat(MarkoDefinitions[t].aliases), [])));exports.MARKO_ALIAS_TYPES = MARKO_ALIAS_TYPES;
194
- //# sourceMappingURL=definitions.js.map
193
+ MARKO_TYPES.reduce((all, t) => all.concat(MarkoDefinitions[t].aliases), [])));exports.MARKO_ALIAS_TYPES = MARKO_ALIAS_TYPES;
@@ -68,5 +68,4 @@ function assert(typeName, node, opts) {
68
68
  }, but instead got "${node.type}".`);
69
69
 
70
70
  }
71
- }
72
- //# sourceMappingURL=patch.js.map
71
+ }
package/dist/config.js CHANGED
@@ -195,5 +195,4 @@ var _fs2 = require("./taglib/fs");let config;const globalThis = typeof window ==
195
195
  * A regexp or function that receives an import path that matches file types known to be client side assets.
196
196
  */hydrateIncludeImports: /\.(css|less|s[ac]ss|styl|png|jpe?g|gif|svg|ico|webp|avif|mp4|webm|ogg|mp3|wav|flac|aac|woff2?|eot|ttf|otf)$/, /**
197
197
  * Set to true in order to bring in the hot module replacement runtime.
198
- */hot: false };if (process.env.MARKO_CONFIG) {Object.assign(config, JSON.parse(process.env.MARKO_CONFIG));}}var _default = config;exports.default = _default;(0, _fs2.setFS)(config.fileSystem);
199
- //# sourceMappingURL=config.js.map
198
+ */hot: false };if (process.env.MARKO_CONFIG) {Object.assign(config, JSON.parse(process.env.MARKO_CONFIG));}}var _default = config;exports.default = _default;(0, _fs2.setFS)(config.fileSystem);
package/dist/index.js CHANGED
@@ -114,5 +114,4 @@ function isDefaultCache(config) {
114
114
 
115
115
  function getFs(config) {
116
116
  return config.fileSystem || globalConfig.fileSystem;
117
- }
118
- //# sourceMappingURL=index.js.map
117
+ }
package/dist/register.js CHANGED
@@ -21,5 +21,4 @@ function register({ extensions = require.extensions, ...options } = {}) {
21
21
  filename);
22
22
 
23
23
  return extensions;
24
- }
25
- //# sourceMappingURL=register.js.map
24
+ }
@@ -178,5 +178,4 @@ exports.reset = reset;
178
178
  exports.find = find;
179
179
  exports.clearCache = clearCache;
180
180
  exports.excludeDir = excludeDir;
181
- exports.excludePackage = excludePackage;
182
- //# sourceMappingURL=index.js.map
181
+ exports.excludePackage = excludePackage;
package/dist/taglib/fs.js CHANGED
@@ -1,5 +1,4 @@
1
1
  "use strict";exports.__esModule = true;exports.curFS = void 0;exports.setFS = setFS;let curFS;exports.curFS = curFS;
2
2
  function setFS(fs) {
3
3
  exports.curFS = curFS = fs;
4
- }
5
- //# sourceMappingURL=fs.js.map
4
+ }
@@ -75,5 +75,4 @@ const _finder = _finder2.default;exports._finder = _finder;
75
75
 
76
76
  function loadTaglib(id, props) {
77
77
  return _loader2.default.loadTaglibFromProps(_loader2.default.createTaglib(id), props);
78
- }
79
- //# sourceMappingURL=index.js.map
78
+ }
@@ -12,5 +12,4 @@ class Attribute {
12
12
  }}
13
13
 
14
14
 
15
- module.exports = Attribute;
16
- //# sourceMappingURL=Attribute.js.map
15
+ module.exports = Attribute;
@@ -14,5 +14,4 @@ class DependencyChain {
14
14
  }}
15
15
 
16
16
 
17
- module.exports = DependencyChain;
18
- //# sourceMappingURL=DependencyChain.js.map
17
+ module.exports = DependencyChain;
@@ -8,5 +8,4 @@ class Property {
8
8
  }}
9
9
 
10
10
 
11
- module.exports = Property;
12
- //# sourceMappingURL=Property.js.map
11
+ module.exports = Property;
@@ -97,5 +97,4 @@ class Tag {
97
97
  }}
98
98
 
99
99
 
100
- module.exports = Tag;
101
- //# sourceMappingURL=Tag.js.map
100
+ module.exports = Tag;
@@ -89,5 +89,4 @@ class Taglib {
89
89
  }}
90
90
 
91
91
 
92
- module.exports = Taglib;
93
- //# sourceMappingURL=Taglib.js.map
92
+ module.exports = Taglib;
@@ -15,5 +15,4 @@ class Transformer {
15
15
  }}
16
16
 
17
17
 
18
- module.exports = Transformer;
19
- //# sourceMappingURL=Transformer.js.map
18
+ module.exports = Transformer;
@@ -14,5 +14,4 @@ function clear() {
14
14
 
15
15
  exports.get = get;
16
16
  exports.put = put;
17
- exports.clear = clear;
18
- //# sourceMappingURL=cache.js.map
17
+ exports.clear = clear;
@@ -34,5 +34,4 @@ exports.clearCache = clearCache;
34
34
  exports.createTaglib = createTaglib;
35
35
  exports.loadTaglibFromProps = loadTaglibFromProps;
36
36
  exports.loadTaglibFromFile = loadTaglibFromFile;
37
- exports.loadTag = loadTag;
38
- //# sourceMappingURL=index.js.map
37
+ exports.loadTag = loadTag;
@@ -13,5 +13,4 @@ exports.readFileSync = function (path) {
13
13
  'Unable to parse JSON file at path "' + path + '". Error: ' + e);
14
14
 
15
15
  }
16
- };
17
- //# sourceMappingURL=json-file-reader.js.map
16
+ };
@@ -240,5 +240,4 @@ loadAttributeFromProps.isSupportedProperty = function (name) {
240
240
  return hasOwnProperty.call(AttrLoader.prototype, name);
241
241
  };
242
242
 
243
- module.exports = loadAttributeFromProps;
244
- //# sourceMappingURL=loadAttributeFromProps.js.map
243
+ module.exports = loadAttributeFromProps;
@@ -15,5 +15,4 @@ module.exports = function loadAttributes(value, parent, dependencyChain) {
15
15
 
16
16
  parent.addAttribute(attr);
17
17
  }
18
- };
19
- //# sourceMappingURL=loadAttributes.js.map
18
+ };
@@ -23,5 +23,4 @@ function loadTagFromFile(filePath) {
23
23
  return tag;
24
24
  }
25
25
 
26
- module.exports = loadTagFromFile;
27
- //# sourceMappingURL=loadTagFromFile.js.map
26
+ module.exports = loadTagFromFile;
@@ -555,5 +555,4 @@ function loadTagFromProps(tag, tagProps, dependencyChain) {
555
555
 
556
556
  module.exports = loadTagFromProps;
557
557
 
558
- loadTagFromProps.isSupportedProperty = isSupportedProperty;
559
- //# sourceMappingURL=loadTagFromProps.js.map
558
+ loadTagFromProps.isSupportedProperty = isSupportedProperty;
@@ -23,5 +23,4 @@ function loadFromFile(filePath) {
23
23
  return taglib;
24
24
  }
25
25
 
26
- module.exports = loadFromFile;
27
- //# sourceMappingURL=loadTaglibFromFile.js.map
26
+ module.exports = loadFromFile;
@@ -407,5 +407,4 @@ function loadTaglibFromProps(taglib, taglibProps, dependencyChain) {
407
407
  return taglib;
408
408
  }
409
409
 
410
- module.exports = loadTaglibFromProps;
411
- //# sourceMappingURL=loadTaglibFromProps.js.map
410
+ module.exports = loadTaglibFromProps;
@@ -20,5 +20,4 @@ exports.loadTaglibFromProps = require("./loadTaglibFromProps");
20
20
  exports.loadTaglibFromFile = require("./loadTaglibFromFile");
21
21
  exports.loadAttributes = require("./loadAttributes");
22
22
  exports.isSupportedAttributeProperty = isSupportedAttributeProperty;
23
- exports.isSupportedTagProperty = isSupportedTagProperty;
24
- //# sourceMappingURL=loaders.js.map
23
+ exports.isSupportedTagProperty = isSupportedTagProperty;
@@ -216,5 +216,4 @@ dependencyChain)
216
216
  tag.name = tag.name || tagName;
217
217
  taglib.addTag(tag);
218
218
  }
219
- };
220
- //# sourceMappingURL=scanTagsDir.js.map
219
+ };
@@ -55,5 +55,4 @@ function extractTagDef(code) {
55
55
  }
56
56
  }
57
57
 
58
- exports.extractTagDef = extractTagDef;
59
- //# sourceMappingURL=tag-def-from-code.js.map
58
+ exports.extractTagDef = extractTagDef;
@@ -2,5 +2,4 @@
2
2
  exports.Tag = require("./Tag");
3
3
  exports.Attribute = require("./Attribute");
4
4
  exports.Property = require("./Property");
5
- exports.Transformer = require("./Transformer");
6
- //# sourceMappingURL=types.js.map
5
+ exports.Transformer = require("./Transformer");
@@ -274,5 +274,4 @@ class TaglibLookup {
274
274
  }}
275
275
 
276
276
 
277
- module.exports = TaglibLookup;
278
- //# sourceMappingURL=index.js.map
277
+ module.exports = TaglibLookup;
@@ -553,6 +553,8 @@ export class NodePath<T = Node> {
553
553
  context?: boolean | TraversalContext,
554
554
  ): T[K] extends Array<Node | null | undefined>
555
555
  ? Array<NodePath<T[K][number]>>
556
+ : T[K] extends Array<Node | null | undefined> | null | undefined
557
+ ? Array<NodePath<NonNullable<T[K]>[number]>> | NodePath<null | undefined>
556
558
  : T[K] extends Node | null | undefined
557
559
  ? NodePath<T[K]>
558
560
  : never;
@@ -2,5 +2,4 @@
2
2
  return process.env.MARKO_DEBUG ?
3
3
  process.env.MARKO_DEBUG === "false" || process.env.MARKO_DEBUG === "0" :
4
4
  process.env.NODE_ENV && process.env.NODE_ENV !== "development";
5
- }
6
- //# sourceMappingURL=should-optimize.js.map
5
+ }
@@ -29,5 +29,4 @@ function _default(requested = _config.default.translator) {
29
29
  }
30
30
 
31
31
  return requested;
32
- }
33
- //# sourceMappingURL=try-load-translator.js.map
32
+ }
package/index.d.ts CHANGED
@@ -25,7 +25,12 @@ export type Config = {
25
25
  translator?: any;
26
26
  fileSystem?: typeof import("fs");
27
27
  modules?: "esm" | "cjs";
28
- resolveVirtualDependency?: ((filename: string, dep: { virtualPath: string, code: string, map?: SourceMap }) => string) | null;
28
+ resolveVirtualDependency?:
29
+ | ((
30
+ filename: string,
31
+ dep: { virtualPath: string; code: string; map?: SourceMap }
32
+ ) => string)
33
+ | null;
29
34
  hydrateIncludeImports?: RegExp | ((request: string) => boolean);
30
35
  optimize?: boolean;
31
36
  cache?: Map<unknown, unknown>;
@@ -48,10 +53,7 @@ export type MarkoMeta = {
48
53
  component?: string;
49
54
  watchFiles: string[];
50
55
  tags?: string[];
51
- deps: Array<
52
- | string
53
- | Dep
54
- >;
56
+ deps: Array<string | Dep>;
55
57
  };
56
58
 
57
59
  export type CompileResult = {
@@ -85,12 +87,18 @@ export function compileFileSync(
85
87
  config?: Config
86
88
  ): CompileResult;
87
89
 
88
- export function getRuntimeEntryFiles(output: string, translator?: string | undefined): string[];
90
+ export function getRuntimeEntryFiles(
91
+ output: string,
92
+ translator?: string | undefined
93
+ ): string[];
89
94
 
90
95
  export namespace taglib {
91
96
  export function excludeDir(dirname: string): void;
92
97
  export function excludePackage(packageName: string): void;
93
- export function register(id: string, props: { [x:string]: unknown }): void;
94
- export function buildLookup(dirname: string, translator?: unknown): TaglibLookup
98
+ export function register(id: string, props: { [x: string]: unknown }): void;
99
+ export function buildLookup(
100
+ dirname: string,
101
+ translator?: unknown
102
+ ): TaglibLookup;
95
103
  export function clearCaches(): void;
96
104
  }
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@marko/compiler",
3
3
  "description": "Marko template to JS compiler.",
4
- "version": "5.20.9",
4
+ "version": "5.21.0",
5
5
  "author": "Dylan Piercey <dpiercey@ebay.com>",
6
6
  "bugs": "https://github.com/marko-js/marko/issues/new?template=Bug_report.md",
7
7
  "dependencies": {
@@ -13,7 +13,7 @@
13
13
  "@babel/runtime": "^7.16.0",
14
14
  "@babel/traverse": "^7.16.0",
15
15
  "@babel/types": "^7.16.0",
16
- "@marko/babel-utils": "^5.20.9",
16
+ "@marko/babel-utils": "^5.21.0",
17
17
  "complain": "^1.6.0",
18
18
  "he": "^1.2.0",
19
19
  "htmljs-parser": "^3.3.1",
@@ -28,7 +28,7 @@
28
28
  "strip-json-comments": "^3.1.1"
29
29
  },
30
30
  "devDependencies": {
31
- "@marko/translator-default": "^5.20.9"
31
+ "@marko/translator-default": "^5.21.0"
32
32
  },
33
33
  "files": [
34
34
  "dist",
@@ -48,7 +48,7 @@
48
48
  "plugin"
49
49
  ],
50
50
  "license": "MIT",
51
- "main": "dist/index.js",
51
+ "main": "src/index.js",
52
52
  "main:dev": "src/index.js",
53
53
  "main:npm": "dist/index.js",
54
54
  "publishConfig": {
@@ -58,6 +58,5 @@
58
58
  "type": "git",
59
59
  "url": "https://github.com/marko-js/marko/tree/master/packages/compiler"
60
60
  },
61
- "types": "index.d.ts",
62
- "gitHead": "637f064c6c8c5c9767d2f6e8a645937eca874a49"
61
+ "types": "index.d.ts"
63
62
  }
package/src/index.js ADDED
@@ -0,0 +1,117 @@
1
+ export * as types from "./babel-types";
2
+ import path from "path";
3
+ import * as babel from "@babel/core";
4
+ import corePlugin from "./babel-plugin";
5
+ import defaultConfig from "./config";
6
+ import * as taglib from "./taglib";
7
+ import shouldOptimize from "./util/should-optimize";
8
+ import tryLoadTranslator from "./util/try-load-translator";
9
+ export { taglib };
10
+
11
+ let globalConfig = { ...defaultConfig };
12
+ export function configure(newConfig) {
13
+ globalConfig = { ...defaultConfig, ...newConfig };
14
+ }
15
+
16
+ export async function compile(src, filename, config) {
17
+ const babelConfig = loadBabelConfig(filename, config);
18
+ const babelResult = await babel.transformAsync(src, babelConfig);
19
+ scheduleDefaultClear(config);
20
+ return buildResult(babelResult);
21
+ }
22
+
23
+ export function compileSync(src, filename, config) {
24
+ const babelConfig = loadBabelConfig(filename, config);
25
+ const babelResult = babel.transformSync(src, babelConfig);
26
+ scheduleDefaultClear(config);
27
+ return buildResult(babelResult);
28
+ }
29
+
30
+ export async function compileFile(filename, config) {
31
+ return new Promise((resolve, reject) => {
32
+ getFs(config).readFile(filename, "utf-8", (err, src) => {
33
+ if (err) {
34
+ return reject(err);
35
+ }
36
+
37
+ return resolve(compile(src, filename, config));
38
+ });
39
+ });
40
+ }
41
+
42
+ export function compileFileSync(filename, config) {
43
+ const src = getFs(config).readFileSync(filename, "utf-8");
44
+ return compileSync(src, filename, config);
45
+ }
46
+
47
+ export function getRuntimeEntryFiles(output, requestedTranslator) {
48
+ const translator = tryLoadTranslator(requestedTranslator);
49
+ if (translator && translator.getRuntimeEntryFiles) {
50
+ return translator.getRuntimeEntryFiles(output, shouldOptimize());
51
+ }
52
+
53
+ return [];
54
+ }
55
+
56
+ function loadBabelConfig(filename, config) {
57
+ const markoConfig = { ...globalConfig, ...config, babelConfig: undefined };
58
+ const requiredPlugins = [[corePlugin, markoConfig]];
59
+ const baseBabelConfig = {
60
+ filenameRelative: filename
61
+ ? path.relative(process.cwd(), filename)
62
+ : undefined,
63
+ sourceFileName: filename ? path.basename(filename) : undefined,
64
+ ...(config && config.babelConfig),
65
+ filename,
66
+ sourceType: "module",
67
+ sourceMaps: markoConfig.sourceMaps,
68
+ code: markoConfig.code,
69
+ ast: markoConfig.ast
70
+ };
71
+
72
+ if (markoConfig.modules === "cjs") {
73
+ requiredPlugins.push([
74
+ require.resolve("@babel/plugin-transform-modules-commonjs"),
75
+ { loose: true }
76
+ ]);
77
+ }
78
+
79
+ baseBabelConfig.plugins = requiredPlugins.concat(
80
+ baseBabelConfig.plugins || []
81
+ );
82
+
83
+ return babel.loadPartialConfig(baseBabelConfig).options;
84
+ }
85
+
86
+ function buildResult(babelResult) {
87
+ const {
88
+ ast,
89
+ map,
90
+ code,
91
+ metadata: { marko: meta }
92
+ } = babelResult;
93
+ return { ast, map, code, meta };
94
+ }
95
+
96
+ let clearingDefaultCache = false;
97
+ function scheduleDefaultClear(config) {
98
+ if (
99
+ !clearingDefaultCache &&
100
+ (clearingDefaultCache = isDefaultCache(config))
101
+ ) {
102
+ setImmediate(_clearDefaults);
103
+ }
104
+ }
105
+
106
+ export function _clearDefaults() {
107
+ clearingDefaultCache = false;
108
+ globalConfig.cache.clear();
109
+ }
110
+
111
+ function isDefaultCache(config) {
112
+ return !config.cache || config.cache === globalConfig.cache;
113
+ }
114
+
115
+ function getFs(config) {
116
+ return config.fileSystem || globalConfig.fileSystem;
117
+ }
package/LICENSE DELETED
@@ -1,21 +0,0 @@
1
- The MIT License (MIT)
2
-
3
- Copyright 2020 eBay Inc. and contributors
4
-
5
- Permission is hereby granted, free of charge, to any person obtaining a copy
6
- of this software and associated documentation files (the "Software"), to deal
7
- in the Software without restriction, including without limitation the rights
8
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
- copies of the Software, and to permit persons to whom the Software is
10
- furnished to do so, subject to the following conditions:
11
-
12
- The above copyright notice and this permission notice shall be included in
13
- all copies or substantial portions of the Software.
14
-
15
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21
- THE SOFTWARE.
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/babel-plugin/file.js"],"names":["CWD","process","cwd","MarkoFile","File","addHelper","Error","buildCodeFrameError","node","msg","SyntaxError","loc","frame","code","start","line","column","end","undefined","highlightCode","finalMsg","path","relative","opts","filename","err","Object","defineProperty","get","set"],"mappings":"uJAAA;AACA;AACA;AACA,MAAMA,GAAG,GAAGC,OAAO,CAACC,GAAR,EAAZ;;AAEO,MAAMC,SAAN,SAAwBC,UAAxB,CAA6B;AAClCC,EAAAA,SAAS,GAAG;AACV,UAAM,IAAIC,KAAJ,CAAU,qDAAV,CAAN;AACD;;AAEDC,EAAAA,mBAAmB,CAACC,IAAD,EAAOC,GAAP,EAAYH,KAAK,GAAGI,WAApB,EAAiC;AAClD,UAAM,EAAEC,GAAF,KAAUH,IAAhB;AACA,UAAMI,KAAK;AACTD,IAAAA,GAAG;AACH;AACE,SAAKE,IADP;AAEE;AACEC,MAAAA,KAAK,EAAE;AACLC,QAAAA,IAAI,EAAEJ,GAAG,CAACG,KAAJ,CAAUC,IADX;AAELC,QAAAA,MAAM,EAAEL,GAAG,CAACG,KAAJ,CAAUE,MAAV,GAAmB,CAFtB,EADT;;AAKEC,MAAAA,GAAG;AACDN,MAAAA,GAAG,CAACM,GAAJ,IAAWN,GAAG,CAACG,KAAJ,CAAUC,IAAV,KAAmBJ,GAAG,CAACM,GAAJ,CAAQF,IAAtC;AACI;AACEA,QAAAA,IAAI,EAAEJ,GAAG,CAACM,GAAJ,CAAQF,IADhB;AAEEC,QAAAA,MAAM,EAAEL,GAAG,CAACM,GAAJ,CAAQD,MAAR,GAAiB,CAF3B,EADJ;;AAKIE,MAAAA,SAXR,EAFF;;AAeE,MAAEC,aAAa,EAAE,IAAjB,EAfF,CAFF;;;AAoBA,UAAMC,QAAQ,GAAI,GAAEC,cAAKC,QAAL,CAActB,GAAd,EAAmB,KAAKuB,IAAL,CAAUC,QAA7B,CAAuC;AACzDb,IAAAA,GAAG,GAAI,IAAGA,GAAG,CAACG,KAAJ,CAAUC,IAAK,IAAGJ,GAAG,CAACG,KAAJ,CAAUE,MAAV,GAAmB,CAAE,GAA9C,GAAmD;AACvD,SAAIP,GAAI,KAAIG,KAAK,IAAI,EAAG,EAFzB;;AAIA,UAAMa,GAAG,GAAG,IAAInB,KAAJ,EAAZ;;AAEA;AACAoB,IAAAA,MAAM,CAACC,cAAP,CAAsBF,GAAtB,EAA2B,SAA3B,EAAsC;AACpCG,MAAAA,GAAG,GAAG;AACJ,eAAOR,QAAP;AACD,OAHmC;AAIpCS,MAAAA,GAAG,GAAG,CAAE,CAJ4B,EAAtC;;AAMA,WAAOJ,GAAP;AACD,GAzCiC,C","sourcesContent":["import path from \"path\";\nimport { File } from \"@babel/core\";\nimport { codeFrameColumns } from \"@babel/code-frame\";\nconst CWD = process.cwd();\n\nexport class MarkoFile extends File {\n addHelper() {\n throw new Error(\"addHelper is not supported during a Marko transform\");\n }\n\n buildCodeFrameError(node, msg, Error = SyntaxError) {\n const { loc } = node;\n const frame =\n loc &&\n codeFrameColumns(\n this.code,\n {\n start: {\n line: loc.start.line,\n column: loc.start.column + 1\n },\n end:\n loc.end && loc.start.line === loc.end.line\n ? {\n line: loc.end.line,\n column: loc.end.column + 1\n }\n : undefined\n },\n { highlightCode: true }\n );\n\n const finalMsg = `${path.relative(CWD, this.opts.filename)}${\n loc ? `(${loc.start.line},${loc.start.column + 1})` : \"\"\n }: ${msg}\\n${frame || \"\"}`;\n\n const err = new Error();\n\n // Prevent babel from changing our error message.\n Object.defineProperty(err, \"message\", {\n get() {\n return finalMsg;\n },\n set() {}\n });\n return err;\n }\n}\n"],"file":"file.js"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/babel-plugin/index.js"],"names":["SOURCE_FILES","WeakMap","api","markoOpts","assertVersion","translator","output","optimize","undefined","cache","using","shouldOptimize","translate","Error","resolveVirtualDependency","curOpts","name","manipulateOptions","opts","parserOverride","code","prevFS","curFS","fileSystem","file","getMarkoFile","finalAst","t","cloneNode","ast","set","pre","metadata","sourceFile","get","taglibLookup","___taglibLookup","rootTranslators","buildCodeFrameError","buildError","hub","marko","shallowClone","MarkoFile","prototype","bind","___getMarkoFile","id","taglibsById","addPlugin","push","traverseAll","watchFiles","filter","unique","fileOpts","compileCache","Map","filename","isSource","isMigrate","canCache","contentHash","update","digest","cacheKey","cached","watchFile","mtime","Infinity","statSync","time","path","dirname","type","program","sourceType","body","directives","meta","macros","deps","tags","scope","crawl","rootMigrators","migrator","migrators","migrate","rootTransformers","transformer","transformers","transform","taglibId","filePath","length","endsWith","Date","now","analyze","e","delete","data","clone","key","v","Ctor","constructor","Array","Object","Set","RegExp","mergeVisitors","all","isArray","visitors","merge","explode","Program","mergedVisitors","state","enter","_call","traverse","exit","arr","plugin","hook","default","item","i","list","indexOf"],"mappings":"yLAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iF;;AAEA,MAAMA,YAAY,GAAG,IAAIC,OAAJ,EAArB,C;;AAEe,CAACC,GAAD,EAAMC,SAAN,KAAoB;AACjCD,EAAAA,GAAG,CAACE,aAAJ,CAAkB,CAAlB;AACA,QAAMC,UAAU,GAAIF,SAAS,CAACE,UAAV,GAAuB;AACzCF,EAAAA,SAAS,CAACE,UAD+B,CAA3C;;AAGAF,EAAAA,SAAS,CAACG,MAAV,GAAmBH,SAAS,CAACG,MAAV,IAAoB,MAAvC;;AAEA,MAAIH,SAAS,CAACI,QAAV,KAAuBC,SAA3B,EAAsC;AACpCN,IAAAA,GAAG,CAACO,KAAJ,CAAUC,KAAV,CAAgBC,uBAAhB;AACAR,IAAAA,SAAS,CAACI,QAAV,GAAqB,8BAArB;AACD;;AAED,MAAI,CAACF,UAAD,IAAe,CAACA,UAAU,CAACO,SAA/B,EAA0C;AACxC,UAAM,IAAIC,KAAJ;AACJ,yEADI,CAAN;;AAGD;;AAED;AACEV,EAAAA,SAAS,CAACG,MAAV,KAAqB,SAArB;AACA,SAAOH,SAAS,CAACW,wBAAjB,KAA8C,UAFhD;AAGE;AACA,UAAM,IAAID,KAAJ;AACH,uGADG,CAAN;;AAGD;;AAED,MAAIE,OAAJ;;AAEA,SAAO;AACLC,IAAAA,IAAI,EAAE,OADD;AAELC,IAAAA,iBAAiB,CAACC,IAAD,EAAO;AACtBH,MAAAA,OAAO,GAAGG,IAAV;AACD,KAJI;AAKLC,IAAAA,cAAc,CAACC,IAAD,EAAO;AACnB,UAAIC,MAAM,GAAGC,SAAb;AACA,qBAAMnB,SAAS,CAACoB,UAAhB;AACA,UAAI;AACF,cAAMC,IAAI,GAAGC,YAAY,CAACL,IAAD,EAAOL,OAAP,EAAgBZ,SAAhB,CAAzB;AACA,cAAMuB,QAAQ,GAAGC,CAAC,CAACC,SAAF,CAAYJ,IAAI,CAACK,GAAjB,EAAsB,IAAtB,CAAjB;AACA7B,QAAAA,YAAY,CAAC8B,GAAb,CAAiBJ,QAAjB,EAA2BF,IAA3B;AACA,eAAOE,QAAP;AACD,OALD,SAKU;AACR,uBAAML,MAAN;AACD;AACF,KAhBI;AAiBLU,IAAAA,GAAG,CAACP,IAAD,EAAO;AACR,UAAIH,MAAM,GAAGC,SAAb;AACAP,MAAAA,OAAO,GAAGP,SAAV;AACA,qBAAML,SAAS,CAACoB,UAAhB;AACA,UAAI;AACF,YAAIpB,SAAS,CAACG,MAAV,KAAqB,QAArB,IAAiCH,SAAS,CAACG,MAAV,KAAqB,SAA1D,EAAqE;AACnE,iBAAOkB,IAAP;AACD;;AAED,cAAM,EAAEK,GAAF,EAAOG,QAAP,KAAoBR,IAA1B;AACA,cAAMS,UAAU,GAAGjC,YAAY,CAACkC,GAAb,CAAiBL,GAAjB,CAAnB;AACA,cAAMM,YAAY,GAAGF,UAAU,CAACG,eAAhC;AACA,cAAMC,eAAe,GAAG,EAAxB;AACA,cAAM,EAAEC,mBAAF,KAA0Bd,IAAhC;AACA,cAAM,EAAEe,UAAF,KAAiBf,IAAI,CAACgB,GAA5B;AACAR,QAAAA,QAAQ,CAACS,KAAT,GAAiBC,YAAY,CAACT,UAAU,CAACD,QAAX,CAAoBS,KAArB,CAA7B;AACAjB,QAAAA,IAAI,CAACc,mBAAL,GAA2BK,gBAAUC,SAAV,CAAoBN,mBAA/C;AACAd,QAAAA,IAAI,CAACgB,GAAL,CAASD,UAAT,GAAsBf,IAAI,CAACc,mBAAL,CAAyBO,IAAzB,CAA8BrB,IAA9B,CAAtB;AACAA,QAAAA,IAAI,CAACrB,SAAL,GAAiBA,SAAjB;AACAqB,QAAAA,IAAI,CAACY,eAAL,GAAuBD,YAAvB;AACAX,QAAAA,IAAI,CAACsB,eAAL,GAAuBrB,YAAvB;;AAEA,YAAItB,SAAS,CAACG,MAAV,KAAqB,SAAzB,EAAoC;AAClC,eAAK,MAAMyC,EAAX,IAAiBZ,YAAY,CAACa,WAA9B,EAA2C;AACzCC,YAAAA,SAAS;AACPjB,YAAAA,QAAQ,CAACS,KADF;AAEPJ,YAAAA,eAFO;AAGPF,YAAAA,YAAY,CAACa,WAAb,CAAyBD,EAAzB,EAA6B1C,UAHtB,CAAT;;AAKD;AACF;;AAEDgC,QAAAA,eAAe,CAACa,IAAhB,CAAqB7C,UAAU,CAACO,SAAhC;AACAuC,QAAAA,WAAW,CAAC3B,IAAD,EAAOa,eAAP,CAAX;AACAb,QAAAA,IAAI,CAACc,mBAAL,GAA2BA,mBAA3B;AACAd,QAAAA,IAAI,CAACgB,GAAL,CAASD,UAAT,GAAsBA,UAAtB;AACAf,QAAAA,IAAI,CAACrB,SAAL;AACEqB,QAAAA,IAAI,CAACY,eAAL;AACAZ,QAAAA,IAAI,CAACsB,eAAL;AACEtC,QAAAA,SAHJ;;AAKAwB,QAAAA,QAAQ,CAACS,KAAT,CAAeW,UAAf,GAA4BpB,QAAQ,CAACS,KAAT,CAAeW,UAAf,CAA0BC,MAA1B,CAAiCC,MAAjC,CAA5B;AACD,OAtCD,SAsCU;AACR,uBAAMjC,MAAN;AACD;AACF,KA9DI,EAAP;;AAgED,C;;AAEM,SAASI,YAAT,CAAsBL,IAAtB,EAA4BmC,QAA5B,EAAsCpD,SAAtC,EAAiD;AACtD,QAAM,EAAEE,UAAF,KAAiBF,SAAvB;AACA,MAAIqD,YAAY,GAAGrD,SAAS,CAACM,KAAV,CAAgByB,GAAhB,CAAoB7B,UAApB,CAAnB;;AAEA,MAAI,CAACmD,YAAL,EAAmB;AACjBrD,IAAAA,SAAS,CAACM,KAAV,CAAgBqB,GAAhB,CAAoBzB,UAApB,EAAiCmD,YAAY,GAAG,IAAIC,GAAJ,EAAhD;AACD;;AAED,QAAM,EAAEC,QAAF,KAAeH,QAArB;AACA,QAAMI,QAAQ,GAAGxD,SAAS,CAACG,MAAV,KAAqB,QAAtC;AACA,QAAMsD,SAAS,GAAGzD,SAAS,CAACG,MAAV,KAAqB,SAAvC;AACA,QAAMuD,QAAQ,GAAG,EAAEF,QAAQ,IAAIC,SAAd,CAAjB;AACA,QAAMb,EAAE,GAAG,+BAAc5C,SAAS,CAACI,QAAxB,EAAkCmD,QAAlC,CAAX;AACA,QAAMI,WAAW,GAAGD,QAAQ,IAAI,wBAAW,KAAX,EAAkBE,MAAlB,CAAyB3C,IAAzB,EAA+B4C,MAA/B,CAAsC,KAAtC,CAAhC;AACA,QAAMC,QAAQ,GAAGJ,QAAQ,IAAI,wBAAW,KAAX,EAAkBE,MAAlB,CAAyBhB,EAAzB,EAA6BiB,MAA7B,CAAoC,KAApC,CAA7B;;AAEA,MAAIE,MAAM,GAAGL,QAAQ,IAAIL,YAAY,CAACtB,GAAb,CAAiB+B,QAAjB,CAAzB;;AAEA,MAAIC,MAAJ,EAAY;AACV,QAAIA,MAAM,CAACJ,WAAP,KAAuBA,WAA3B,EAAwC;AACtC;AACAI,MAAAA,MAAM,GAAG1D,SAAT;AACD,KAHD,MAGO;AACL,WAAK,MAAM2D,SAAX,IAAwBD,MAAM,CAAC1C,IAAP,CAAYQ,QAAZ,CAAqBS,KAArB,CAA2BW,UAAnD,EAA+D;AAC7D,YAAIgB,KAAK,GAAGC,QAAZ;AACA,YAAI;AACFD,UAAAA,KAAK,GAAGjE,SAAS,CAACoB,UAAV,CAAqB+C,QAArB,CAA8BH,SAA9B,EAAyCC,KAAjD;AACA;AACD,SAHD,CAGE,MAAM,CAAE;;AAEV,YAAIA,KAAK,GAAGF,MAAM,CAACK,IAAnB,EAAyB;AACvB;AACAL,UAAAA,MAAM,GAAG1D,SAAT;AACA;AACD;AACF;AACF;AACF;;AAED,MAAI0D,MAAJ,EAAY;AACV,WAAOA,MAAM,CAAC1C,IAAd;AACD;;AAED,QAAMW,YAAY,GAAG,yBAAYqC,cAAKC,OAAL,CAAaf,QAAb,CAAZ,EAAoCrD,UAApC,CAArB;;AAEA,QAAMmB,IAAI,GAAG,IAAImB,eAAJ,CAAcY,QAAd,EAAwB;AACnCnC,IAAAA,IADmC;AAEnCS,IAAAA,GAAG,EAAE;AACH6C,MAAAA,IAAI,EAAE,MADH;AAEHC,MAAAA,OAAO,EAAE;AACPD,QAAAA,IAAI,EAAE,SADC;AAEPE,QAAAA,UAAU,EAAE,QAFL;AAGPC,QAAAA,IAAI,EAAE,EAHC;AAIPC,QAAAA,UAAU,EAAE,EAJL,EAFN,EAF8B,EAAxB,CAAb;;;;;AAaA,QAAMC,IAAI,GAAIvD,IAAI,CAACQ,QAAL,CAAcS,KAAd,GAAsB;AAClCM,IAAAA,EADkC;AAElCiC,IAAAA,MAAM,EAAE,EAF0B;AAGlCC,IAAAA,IAAI,EAAE,EAH4B;AAIlCC,IAAAA,IAAI,EAAE,EAJ4B;AAKlC9B,IAAAA,UAAU,EAAE,EALsB,EAApC;;;AAQA5B,EAAAA,IAAI,CAACrB,SAAL,GAAiBA,SAAjB;AACAqB,EAAAA,IAAI,CAACY,eAAL,GAAuBD,YAAvB;AACAX,EAAAA,IAAI,CAACsB,eAAL,GAAuBrB,YAAvB;;AAEA,0BAAWD,IAAX;;AAEA,MAAImC,QAAJ,EAAc;AACZ,WAAOnC,IAAP;AACD;;AAEDA,EAAAA,IAAI,CAACgD,IAAL,CAAUW,KAAV,CAAgBC,KAAhB,GA5EsD,CA4E7B;;AAEzB,QAAMC,aAAa,GAAG,EAAtB;AACA,OAAK,MAAMtC,EAAX,IAAiBZ,YAAY,CAACa,WAA9B,EAA2C;AACzC,SAAK,MAAMsC,QAAX,IAAuBnD,YAAY,CAACa,WAAb,CAAyBD,EAAzB,EAA6BwC,SAApD,EAA+D;AAC7DtC,MAAAA,SAAS,CAAC8B,IAAD,EAAOM,aAAP,EAAsBC,QAAtB,CAAT;AACD;AACF;;AAEDD,EAAAA,aAAa,CAACnC,IAAd,CAAmBsC,gBAAnB;AACArC,EAAAA,WAAW,CAAC3B,IAAD,EAAO6D,aAAP,CAAX;;AAEA,MAAIzB,SAAJ,EAAe;AACb,WAAOpC,IAAP;AACD;;AAED,QAAMiE,gBAAgB,GAAG,EAAzB;AACA,OAAK,MAAM1C,EAAX,IAAiBZ,YAAY,CAACa,WAA9B,EAA2C;AACzC,SAAK,MAAM0C,WAAX,IAA0BvD,YAAY,CAACa,WAAb,CAAyBD,EAAzB,EAA6B4C,YAAvD,EAAqE;AACnE1C,MAAAA,SAAS,CAAC8B,IAAD,EAAOU,gBAAP,EAAyBC,WAAzB,CAAT;AACD;AACF;;AAEDD,EAAAA,gBAAgB,CAACvC,IAAjB,CAAsB0C,kBAAtB;AACAzC,EAAAA,WAAW,CAAC3B,IAAD,EAAOiE,gBAAP,CAAX;;AAEA,OAAK,MAAMI,QAAX,IAAuB1D,YAAY,CAACa,WAApC,EAAiD;AAC/C,UAAM,EAAE8C,QAAF,KAAe3D,YAAY,CAACa,WAAb,CAAyB6C,QAAzB,CAArB;;AAEA;AACEC,IAAAA,QAAQ,CAACA,QAAQ,CAACC,MAAT,GAAkB,CAAnB,CAAR,KAAkC,GAAlC;AACAD,IAAAA,QAAQ,CAACE,QAAT,CAAkB,YAAlB,CAFF;AAGE;AACAjB,MAAAA,IAAI,CAAC3B,UAAL,CAAgBF,IAAhB,CAAqB4C,QAArB;AACD;AACF;;AAEDtC,EAAAA,YAAY,CAAC1B,GAAb,CAAiBmC,QAAjB,EAA2B;AACzBM,IAAAA,IAAI,EAAE0B,IAAI,CAACC,GAAL,EADmB;AAEzB1E,IAAAA,IAFyB;AAGzBsC,IAAAA,WAHyB,EAA3B;;;AAMA,MAAIzD,UAAU,CAAC8F,OAAf,EAAwB;AACtB,QAAI;AACFhD,MAAAA,WAAW,CAAC3B,IAAD,EAAOnB,UAAU,CAAC8F,OAAlB,CAAX;AACD,KAFD,CAEE,OAAOC,CAAP,EAAU;AACV5C,MAAAA,YAAY,CAAC6C,MAAb,CAAoBpC,QAApB;AACA,YAAMmC,CAAN;AACD;AACF;;AAED,SAAO5E,IAAP;AACD;;AAED,SAASkB,YAAT,CAAsB4D,IAAtB,EAA4B;AAC1B,QAAMC,KAAK,GAAG,EAAd;;AAEA,OAAK,MAAMC,GAAX,IAAkBF,IAAlB,EAAwB;AACtB,UAAMG,CAAC,GAAGH,IAAI,CAACE,GAAD,CAAd;;AAEA,QAAIC,CAAC,KAAKjG,SAAV,EAAqB;AACnB,UAAIiG,CAAC,KAAK,IAAN,IAAc,OAAOA,CAAP,KAAa,QAA/B,EAAyC;AACvCF,QAAAA,KAAK,CAACC,GAAD,CAAL,GAAaC,CAAb;AACD,OAFD,MAEO;AACL,cAAMC,IAAI,GAAGD,CAAC,CAACE,WAAf;;AAEA,gBAAQD,IAAR;AACE,eAAKE,KAAL;AACEL,YAAAA,KAAK,CAACC,GAAD,CAAL,GAAa,CAAC,GAAGC,CAAJ,CAAb;AACA;AACF,eAAKI,MAAL;AACA,eAAK,IAAL;AACEN,YAAAA,KAAK,CAACC,GAAD,CAAL,GAAa,EAAE,GAAGC,CAAL,EAAb;AACA;AACF,eAAKhD,GAAL;AACA,eAAKqD,GAAL;AACA,eAAKb,IAAL;AACA,eAAKc,MAAL;AACER,YAAAA,KAAK,CAACC,GAAD,CAAL,GAAa,IAAIE,IAAJ,CAASD,CAAT,CAAb;AACA;;AAEF;AACE,kBAAM,IAAI5F,KAAJ,CAAW,gCAA+B6F,IAAI,CAAC1F,IAAK,EAApD,CAAN,CAhBJ;;AAkBD;AACF;AACF;;AAED,SAAOuF,KAAP;AACD;;AAED,SAASS,aAAT,CAAuBC,GAAvB,EAA4B;AAC1B,MAAIL,KAAK,CAACM,OAAN,CAAcD,GAAd,CAAJ,EAAwB;AACtB,QAAIA,GAAG,CAAClB,MAAJ,KAAe,CAAnB,EAAsB;AACpBkB,MAAAA,GAAG,GAAGA,GAAG,CAAC,CAAD,CAAT;AACD,KAFD,MAEO;AACL,aAAOE,mBAASC,KAAT,CAAeH,GAAf,CAAP;AACD;AACF;;AAED,SAAOE,mBAASE,OAAT,CAAiBJ,GAAjB,CAAP;AACD;;AAED,SAAS9D,WAAT,CAAqB3B,IAArB,EAA2B2F,QAA3B,EAAqC;AACnC,QAAMxC,OAAO,GAAGnD,IAAI,CAACgD,IAArB;AACA,QAAM,EAAE8C,OAAF,EAAW,GAAGC,cAAd,KAAiCP,aAAa,CAACG,QAAD,CAApD;AACAxC,EAAAA,OAAO,CAAC6C,KAAR,GAAgB,EAAhB;;AAEA;AACA;AACA,MAAI,EAAEF,OAAO,IAAIA,OAAO,CAACG,KAAnB,IAA4B9C,OAAO,CAAC+C,KAAR,CAAcJ,OAAO,CAACG,KAAtB,CAA9B,CAAJ,EAAiE;AAC/D9C,IAAAA,OAAO,CAACgD,QAAR,CAAiBJ,cAAjB,EAAiC5C,OAAO,CAAC6C,KAAzC;;AAEA,QAAIF,OAAO,IAAIA,OAAO,CAACM,IAAvB,EAA6B;AAC3BjD,MAAAA,OAAO,CAAC+C,KAAR,CAAcJ,OAAO,CAACM,IAAtB;AACD;AACF;AACF;;AAED,SAAS3E,SAAT,CAAmB8B,IAAnB,EAAyB8C,GAAzB,EAA8BC,MAA9B,EAAsC;AACpC,MAAIA,MAAJ,EAAY;AACV,UAAMC,IAAI,GAAGD,MAAM,CAACC,IAAP,CAAYC,OAAZ,IAAuBF,MAAM,CAACC,IAA3C;;AAEA,QAAID,MAAM,CAACtD,IAAX,EAAiB;AACfO,MAAAA,IAAI,CAAC3B,UAAL,CAAgBF,IAAhB,CAAqB4E,MAAM,CAACtD,IAA5B;AACD;;AAED,QAAIoC,KAAK,CAACM,OAAN,CAAca,IAAd,CAAJ,EAAyB;AACvBF,MAAAA,GAAG,CAAC3E,IAAJ,CAAS,GAAG6E,IAAZ;AACD,KAFD,MAEO;AACLF,MAAAA,GAAG,CAAC3E,IAAJ,CAAS6E,IAAT;AACD;AACF;AACF;;AAED,SAASzE,MAAT,CAAgB2E,IAAhB,EAAsBC,CAAtB,EAAyBC,IAAzB,EAA+B;AAC7B,SAAOA,IAAI,CAACC,OAAL,CAAaH,IAAb,MAAuBC,CAA9B;AACD","sourcesContent":["import path from \"path\";\nimport { createHash } from \"crypto\";\nimport * as t from \"../babel-types\";\nimport { getTemplateId } from \"@marko/babel-utils\";\nimport { visitors } from \"@babel/traverse\";\nimport { buildLookup } from \"../taglib\";\nimport { parseMarko } from \"./parser\";\nimport { visitor as migrate } from \"./plugins/migrate\";\nimport { visitor as transform } from \"./plugins/transform\";\nimport { MarkoFile } from \"./file\";\nimport { curFS, setFS } from \"../taglib/fs\";\nimport tryLoadTranslator from \"../util/try-load-translator\";\nimport shouldOptimize from \"../util/should-optimize\";\n\nconst SOURCE_FILES = new WeakMap();\n\nexport default (api, markoOpts) => {\n api.assertVersion(7);\n const translator = (markoOpts.translator = tryLoadTranslator(\n markoOpts.translator\n ));\n markoOpts.output = markoOpts.output || \"html\";\n\n if (markoOpts.optimize === undefined) {\n api.cache.using(shouldOptimize);\n markoOpts.optimize = shouldOptimize();\n }\n\n if (!translator || !translator.translate) {\n throw new Error(\n \"@marko/compiler: translator must provide a translate visitor object\"\n );\n }\n\n if (\n markoOpts.output === \"hydrate\" &&\n typeof markoOpts.resolveVirtualDependency !== \"function\"\n ) {\n throw new Error(\n `@marko/compiler: the \"resolveVirtualDependency\" option must be supplied when output is \"hydrate\".`\n );\n }\n\n let curOpts;\n\n return {\n name: \"marko\",\n manipulateOptions(opts) {\n curOpts = opts;\n },\n parserOverride(code) {\n let prevFS = curFS;\n setFS(markoOpts.fileSystem);\n try {\n const file = getMarkoFile(code, curOpts, markoOpts);\n const finalAst = t.cloneNode(file.ast, true);\n SOURCE_FILES.set(finalAst, file);\n return finalAst;\n } finally {\n setFS(prevFS);\n }\n },\n pre(file) {\n let prevFS = curFS;\n curOpts = undefined;\n setFS(markoOpts.fileSystem);\n try {\n if (markoOpts.output === \"source\" || markoOpts.output === \"migrate\") {\n return file;\n }\n\n const { ast, metadata } = file;\n const sourceFile = SOURCE_FILES.get(ast);\n const taglibLookup = sourceFile.___taglibLookup;\n const rootTranslators = [];\n const { buildCodeFrameError } = file;\n const { buildError } = file.hub;\n metadata.marko = shallowClone(sourceFile.metadata.marko);\n file.buildCodeFrameError = MarkoFile.prototype.buildCodeFrameError;\n file.hub.buildError = file.buildCodeFrameError.bind(file);\n file.markoOpts = markoOpts;\n file.___taglibLookup = taglibLookup;\n file.___getMarkoFile = getMarkoFile;\n\n if (markoOpts.output !== \"hydrate\") {\n for (const id in taglibLookup.taglibsById) {\n addPlugin(\n metadata.marko,\n rootTranslators,\n taglibLookup.taglibsById[id].translator\n );\n }\n }\n\n rootTranslators.push(translator.translate);\n traverseAll(file, rootTranslators);\n file.buildCodeFrameError = buildCodeFrameError;\n file.hub.buildError = buildError;\n file.markoOpts =\n file.___taglibLookup =\n file.___getMarkoFile =\n undefined;\n\n metadata.marko.watchFiles = metadata.marko.watchFiles.filter(unique);\n } finally {\n setFS(prevFS);\n }\n }\n };\n};\n\nexport function getMarkoFile(code, fileOpts, markoOpts) {\n const { translator } = markoOpts;\n let compileCache = markoOpts.cache.get(translator);\n\n if (!compileCache) {\n markoOpts.cache.set(translator, (compileCache = new Map()));\n }\n\n const { filename } = fileOpts;\n const isSource = markoOpts.output === \"source\";\n const isMigrate = markoOpts.output === \"migrate\";\n const canCache = !(isSource || isMigrate);\n const id = getTemplateId(markoOpts.optimize, filename);\n const contentHash = canCache && createHash(\"MD5\").update(code).digest(\"hex\");\n const cacheKey = canCache && createHash(\"MD5\").update(id).digest(\"hex\");\n\n let cached = canCache && compileCache.get(cacheKey);\n\n if (cached) {\n if (cached.contentHash !== contentHash) {\n // File content changed, invalidate the cache.\n cached = undefined;\n } else {\n for (const watchFile of cached.file.metadata.marko.watchFiles) {\n let mtime = Infinity;\n try {\n mtime = markoOpts.fileSystem.statSync(watchFile).mtime;\n // eslint-disable-next-line no-empty\n } catch {}\n\n if (mtime > cached.time) {\n // Some dependency changed, invalidate the cache.\n cached = undefined;\n break;\n }\n }\n }\n }\n\n if (cached) {\n return cached.file;\n }\n\n const taglibLookup = buildLookup(path.dirname(filename), translator);\n\n const file = new MarkoFile(fileOpts, {\n code,\n ast: {\n type: \"File\",\n program: {\n type: \"Program\",\n sourceType: \"module\",\n body: [],\n directives: []\n }\n }\n });\n\n const meta = (file.metadata.marko = {\n id,\n macros: {},\n deps: [],\n tags: [],\n watchFiles: []\n });\n\n file.markoOpts = markoOpts;\n file.___taglibLookup = taglibLookup;\n file.___getMarkoFile = getMarkoFile;\n\n parseMarko(file);\n\n if (isSource) {\n return file;\n }\n\n file.path.scope.crawl(); // Initialize bindings.\n\n const rootMigrators = [];\n for (const id in taglibLookup.taglibsById) {\n for (const migrator of taglibLookup.taglibsById[id].migrators) {\n addPlugin(meta, rootMigrators, migrator);\n }\n }\n\n rootMigrators.push(migrate);\n traverseAll(file, rootMigrators);\n\n if (isMigrate) {\n return file;\n }\n\n const rootTransformers = [];\n for (const id in taglibLookup.taglibsById) {\n for (const transformer of taglibLookup.taglibsById[id].transformers) {\n addPlugin(meta, rootTransformers, transformer);\n }\n }\n\n rootTransformers.push(transform);\n traverseAll(file, rootTransformers);\n\n for (const taglibId in taglibLookup.taglibsById) {\n const { filePath } = taglibLookup.taglibsById[taglibId];\n\n if (\n filePath[filePath.length - 5] === \".\" &&\n filePath.endsWith(\"marko.json\")\n ) {\n meta.watchFiles.push(filePath);\n }\n }\n\n compileCache.set(cacheKey, {\n time: Date.now(),\n file,\n contentHash\n });\n\n if (translator.analyze) {\n try {\n traverseAll(file, translator.analyze);\n } catch (e) {\n compileCache.delete(cacheKey);\n throw e;\n }\n }\n\n return file;\n}\n\nfunction shallowClone(data) {\n const clone = {};\n\n for (const key in data) {\n const v = data[key];\n\n if (v !== undefined) {\n if (v === null || typeof v !== \"object\") {\n clone[key] = v;\n } else {\n const Ctor = v.constructor;\n\n switch (Ctor) {\n case Array:\n clone[key] = [...v];\n break;\n case Object:\n case null:\n clone[key] = { ...v };\n break;\n case Map:\n case Set:\n case Date:\n case RegExp:\n clone[key] = new Ctor(v);\n break;\n\n default:\n throw new Error(`Unsupported metadata type of ${Ctor.name}`);\n }\n }\n }\n }\n\n return clone;\n}\n\nfunction mergeVisitors(all) {\n if (Array.isArray(all)) {\n if (all.length === 1) {\n all = all[0];\n } else {\n return visitors.merge(all);\n }\n }\n\n return visitors.explode(all);\n}\n\nfunction traverseAll(file, visitors) {\n const program = file.path;\n const { Program, ...mergedVisitors } = mergeVisitors(visitors);\n program.state = {};\n\n // Traverse only walks into children by default\n // This manually traverses into the Program node as well.\n if (!(Program && Program.enter && program._call(Program.enter))) {\n program.traverse(mergedVisitors, program.state);\n\n if (Program && Program.exit) {\n program._call(Program.exit);\n }\n }\n}\n\nfunction addPlugin(meta, arr, plugin) {\n if (plugin) {\n const hook = plugin.hook.default || plugin.hook;\n\n if (plugin.path) {\n meta.watchFiles.push(plugin.path);\n }\n\n if (Array.isArray(hook)) {\n arr.push(...hook);\n } else {\n arr.push(hook);\n }\n }\n}\n\nfunction unique(item, i, list) {\n return list.indexOf(item) === i;\n}\n"],"file":"index.js"}