@marko/compiler 5.20.5 → 5.20.8

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.
@@ -229,16 +229,21 @@ function getMarkoFile(code, fileOpts, markoOpts) {
229
229
  }
230
230
  }
231
231
 
232
- if (translator.analyze) {
233
- traverseAll(file, translator.analyze);
234
- }
235
-
236
232
  compileCache.set(cacheKey, {
237
233
  time: Date.now(),
238
234
  file,
239
235
  contentHash });
240
236
 
241
237
 
238
+ if (translator.analyze) {
239
+ try {
240
+ traverseAll(file, translator.analyze);
241
+ } catch (e) {
242
+ compileCache.delete(cacheKey);
243
+ throw e;
244
+ }
245
+ }
246
+
242
247
  return file;
243
248
  }
244
249
 
@@ -1 +1 @@
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","start","end","length","loc","line","column","scope","crawl","rootMigrators","migrator","migrators","migrate","rootTransformers","transformer","transformers","transform","taglibId","filePath","endsWith","analyze","Date","now","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":"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","sourcesContent":["import path from \"path\";\nimport { createHash } from \"crypto\";\nimport * as t from \"../babel-types\";\nimport { getLoc, 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 file.ast.start = file.ast.program.start = 0;\n file.ast.end = file.ast.program.end = code.length - 1;\n file.ast.loc = file.ast.program.loc = {\n start: { line: 0, column: 0 },\n end: getLoc(file, file.ast.end)\n };\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 if (translator.analyze) {\n traverseAll(file, translator.analyze);\n }\n\n compileCache.set(cacheKey, {\n time: Date.now(),\n file,\n contentHash\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"}
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","start","end","length","loc","line","column","scope","crawl","rootMigrators","migrator","migrators","migrate","rootTransformers","transformer","transformers","transform","taglibId","filePath","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":"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","sourcesContent":["import path from \"path\";\nimport { createHash } from \"crypto\";\nimport * as t from \"../babel-types\";\nimport { getLoc, 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 file.ast.start = file.ast.program.start = 0;\n file.ast.end = file.ast.program.end = code.length - 1;\n file.ast.loc = file.ast.program.loc = {\n start: { line: 0, column: 0 },\n end: getLoc(file, file.ast.end)\n };\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"}
package/dist/config.js CHANGED
@@ -151,7 +151,7 @@ var _lassoPackageRoot = require("lasso-package-root");
151
151
 
152
152
  var _fs2 = require("./taglib/fs");let config;const globalThis = typeof window === "undefined" ? global : window;const MARKO_CONFIG_KEY = Symbol("Default Marko Compiler Config");if (globalThis[MARKO_CONFIG_KEY]) {config = globalThis[MARKO_CONFIG_KEY];} else {config = globalThis[MARKO_CONFIG_KEY] = { // The default output mode for compiled templates
153
153
  output: "html", // Override the runtimeid used when calling `marko/components.init` in the `hydrate` output.
154
- runtimeId: undefined, // Have Marko provide the final AST in the compile result.
154
+ runtimeId: null, // Have Marko provide the final AST in the compile result.
155
155
  ast: false, // Set the false to have Marko not generate the final code string, useful if just reading metadata or AST.
156
156
  code: true, /**
157
157
  * Whether the version should be written to the template as a comment e.g.
@@ -184,7 +184,7 @@ var _fs2 = require("./taglib/fs");let config;const globalThis = typeof window ==
184
184
  * This option should be set if `hydrate` output is specified.
185
185
  * Maps a virtual dependency to a resolved file which can be implemented
186
186
  * for specific bundlers.
187
- */resolveVirtualDependency: undefined, /**
187
+ */resolveVirtualDependency: null, /**
188
188
  * Compiling a Marko template may require other (used) Marko templates to compile.
189
189
  * To prevent compiling templates more than once, most of the compilation is cached.
190
190
  *
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/config.js"],"names":["config","globalThis","window","global","MARKO_CONFIG_KEY","Symbol","output","runtimeId","undefined","ast","code","writeVersionComment","ignoreUnrecognizedTags","sourceMaps","meta","translator","translatorReg","pkg","process","cwd","name","dependencies","test","peerDependencies","devDependencies","fileSystem","fs","modules","optimize","resolveVirtualDependency","cache","Map","hydrateIncludeImports","hot","env","MARKO_CONFIG","Object","assign","JSON","parse"],"mappings":"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","sourcesContent":["import fs from \"fs\";\nimport { getRootPackage } from \"lasso-package-root\";\n\nlet config;\nconst globalThis = typeof window === \"undefined\" ? global : window;\nconst MARKO_CONFIG_KEY = Symbol(\"Default Marko Compiler Config\");\n\nif (globalThis[MARKO_CONFIG_KEY]) {\n config = globalThis[MARKO_CONFIG_KEY];\n} else {\n config = globalThis[MARKO_CONFIG_KEY] = {\n // The default output mode for compiled templates\n output: \"html\",\n\n // Override the runtimeid used when calling `marko/components.init` in the `hydrate` output.\n runtimeId: undefined,\n\n // Have Marko provide the final AST in the compile result.\n ast: false,\n\n // Set the false to have Marko not generate the final code string, useful if just reading metadata or AST.\n code: true,\n\n /**\n * Whether the version should be written to the template as a comment e.g.\n * // Compiled using marko@x.x.x - DO NOT EDIT\n */\n writeVersionComment: true,\n\n /**\n * Whether unrecognized tags should be ignored or not. This flag will\n * be enabled by default when compiling XML.\n */\n ignoreUnrecognizedTags: false,\n\n /**\n * Whether source maps should be output with the compiled templates.\n * When `true` a `map` property will be available on the compile result.\n * When `\"inline\"` the sourcemap will be inlined as a comment in the output code.\n * When `\"both\"` both of the above will be used.\n */\n sourceMaps: false,\n\n /**\n * This option inlines all of the meta data in the template.\n * You can also access this metadata via `compile(...).meta`.\n * This API is sticking around for compatibility purposes.\n */\n meta: false,\n\n /**\n * Allows configuring Marko to compile to different runtimes.\n */\n translator: (() => {\n const translatorReg = /^(@marko\\/|marko-)translator-/;\n let translator;\n let pkg;\n\n try {\n pkg = getRootPackage(process.cwd());\n // eslint-disable-next-line no-empty\n } catch {}\n\n if (pkg) {\n for (const name in pkg.dependencies) {\n if (translatorReg.test(name)) {\n if (translator && translator !== name) {\n return;\n }\n\n translator = name;\n }\n }\n\n for (const name in pkg.peerDependencies) {\n if (translatorReg.test(name)) {\n if (translator && translator !== name) {\n return;\n }\n\n translator = name;\n }\n }\n\n for (const name in pkg.devDependencies) {\n if (translatorReg.test(name)) {\n if (translator && translator !== name) {\n return;\n }\n\n translator = name;\n }\n }\n }\n\n return translator || \"@marko/translator-default\";\n })(),\n\n /**\n * Use a different file system object, eg webpacks CachedInputFileSystem or lasso-caching-fs\n */\n fileSystem: fs,\n /**\n * By default Marko 5 outputs esm, you can optionally specify commonjs.\n *\n * Valid options: esm | cjs\n */\n modules: \"esm\",\n\n /**\n * Enables production mode optimizations if true, or not if false.\n * If left as undefined checks for env === \"production\".\n */\n optimize: undefined,\n\n /**\n * This option should be set if `hydrate` output is specified.\n * Maps a virtual dependency to a resolved file which can be implemented\n * for specific bundlers.\n */\n resolveVirtualDependency: undefined,\n\n /**\n * Compiling a Marko template may require other (used) Marko templates to compile.\n * To prevent compiling templates more than once, most of the compilation is cached.\n *\n * The default cache strategy is to clear the cache on every macrotask.\n * If the default cache is overwritten it is up to the user to determine when the\n * cache is cleared.\n */\n cache: new Map(),\n\n /**\n * A regexp or function that receives an import path that matches file types known to be client side assets.\n */\n hydrateIncludeImports:\n /\\.(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)$/,\n\n /**\n * Set to true in order to bring in the hot module replacement runtime.\n */\n hot: false\n };\n\n if (process.env.MARKO_CONFIG) {\n Object.assign(config, JSON.parse(process.env.MARKO_CONFIG));\n }\n}\n\nexport default config;\n\nimport { setFS } from \"./taglib/fs\";\nsetFS(config.fileSystem);\n"],"file":"config.js"}
1
+ {"version":3,"sources":["../src/config.js"],"names":["config","globalThis","window","global","MARKO_CONFIG_KEY","Symbol","output","runtimeId","ast","code","writeVersionComment","ignoreUnrecognizedTags","sourceMaps","meta","translator","translatorReg","pkg","process","cwd","name","dependencies","test","peerDependencies","devDependencies","fileSystem","fs","modules","optimize","undefined","resolveVirtualDependency","cache","Map","hydrateIncludeImports","hot","env","MARKO_CONFIG","Object","assign","JSON","parse"],"mappings":"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","sourcesContent":["import fs from \"fs\";\nimport { getRootPackage } from \"lasso-package-root\";\n\nlet config;\nconst globalThis = typeof window === \"undefined\" ? global : window;\nconst MARKO_CONFIG_KEY = Symbol(\"Default Marko Compiler Config\");\n\nif (globalThis[MARKO_CONFIG_KEY]) {\n config = globalThis[MARKO_CONFIG_KEY];\n} else {\n config = globalThis[MARKO_CONFIG_KEY] = {\n // The default output mode for compiled templates\n output: \"html\",\n\n // Override the runtimeid used when calling `marko/components.init` in the `hydrate` output.\n runtimeId: null,\n\n // Have Marko provide the final AST in the compile result.\n ast: false,\n\n // Set the false to have Marko not generate the final code string, useful if just reading metadata or AST.\n code: true,\n\n /**\n * Whether the version should be written to the template as a comment e.g.\n * // Compiled using marko@x.x.x - DO NOT EDIT\n */\n writeVersionComment: true,\n\n /**\n * Whether unrecognized tags should be ignored or not. This flag will\n * be enabled by default when compiling XML.\n */\n ignoreUnrecognizedTags: false,\n\n /**\n * Whether source maps should be output with the compiled templates.\n * When `true` a `map` property will be available on the compile result.\n * When `\"inline\"` the sourcemap will be inlined as a comment in the output code.\n * When `\"both\"` both of the above will be used.\n */\n sourceMaps: false,\n\n /**\n * This option inlines all of the meta data in the template.\n * You can also access this metadata via `compile(...).meta`.\n * This API is sticking around for compatibility purposes.\n */\n meta: false,\n\n /**\n * Allows configuring Marko to compile to different runtimes.\n */\n translator: (() => {\n const translatorReg = /^(@marko\\/|marko-)translator-/;\n let translator;\n let pkg;\n\n try {\n pkg = getRootPackage(process.cwd());\n // eslint-disable-next-line no-empty\n } catch {}\n\n if (pkg) {\n for (const name in pkg.dependencies) {\n if (translatorReg.test(name)) {\n if (translator && translator !== name) {\n return;\n }\n\n translator = name;\n }\n }\n\n for (const name in pkg.peerDependencies) {\n if (translatorReg.test(name)) {\n if (translator && translator !== name) {\n return;\n }\n\n translator = name;\n }\n }\n\n for (const name in pkg.devDependencies) {\n if (translatorReg.test(name)) {\n if (translator && translator !== name) {\n return;\n }\n\n translator = name;\n }\n }\n }\n\n return translator || \"@marko/translator-default\";\n })(),\n\n /**\n * Use a different file system object, eg webpacks CachedInputFileSystem or lasso-caching-fs\n */\n fileSystem: fs,\n /**\n * By default Marko 5 outputs esm, you can optionally specify commonjs.\n *\n * Valid options: esm | cjs\n */\n modules: \"esm\",\n\n /**\n * Enables production mode optimizations if true, or not if false.\n * If left as undefined checks for env === \"production\".\n */\n optimize: undefined,\n\n /**\n * This option should be set if `hydrate` output is specified.\n * Maps a virtual dependency to a resolved file which can be implemented\n * for specific bundlers.\n */\n resolveVirtualDependency: null,\n\n /**\n * Compiling a Marko template may require other (used) Marko templates to compile.\n * To prevent compiling templates more than once, most of the compilation is cached.\n *\n * The default cache strategy is to clear the cache on every macrotask.\n * If the default cache is overwritten it is up to the user to determine when the\n * cache is cleared.\n */\n cache: new Map(),\n\n /**\n * A regexp or function that receives an import path that matches file types known to be client side assets.\n */\n hydrateIncludeImports:\n /\\.(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)$/,\n\n /**\n * Set to true in order to bring in the hot module replacement runtime.\n */\n hot: false\n };\n\n if (process.env.MARKO_CONFIG) {\n Object.assign(config, JSON.parse(process.env.MARKO_CONFIG));\n }\n}\n\nexport default config;\n\nimport { setFS } from \"./taglib/fs\";\nsetFS(config.fileSystem);\n"],"file":"config.js"}
@@ -1183,16 +1183,11 @@ export interface BabelFile {
1183
1183
  marko: {
1184
1184
  id: string,
1185
1185
  tags: string[],
1186
- deps: Array<string | { type: string, code: string, path: string, virtualPath: string }>,
1186
+ deps: Array<string | { type: string, code: string, path: string, virtualPath: string, [x:string]: unknown }>,
1187
1187
  watchFiles: string[]
1188
1188
  }
1189
1189
  },
1190
- markoOpts: {
1191
- output: "html" | "dom",
1192
- optimize: boolean,
1193
- fileSystem: typeof import("fs"),
1194
- cache: Map<unknown, unknown>
1195
- }
1190
+ markoOpts: Required<import('@marko/compiler').Config>
1196
1191
  }
1197
1192
 
1198
1193
  export interface HubInterface {
package/index.d.ts CHANGED
@@ -16,20 +16,22 @@ type Dep = {
16
16
 
17
17
  export type Config = {
18
18
  output?: "html" | "dom" | "hydrate" | "migrate" | "source";
19
- runtimeId?: string;
19
+ runtimeId?: string | null;
20
20
  ast?: boolean;
21
21
  code?: boolean;
22
22
  writeVersionComment?: boolean;
23
23
  ignoreUnrecognizedTags?: boolean;
24
24
  sourceMaps?: boolean | "inline" | "both";
25
- translator?: string;
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;
28
+ resolveVirtualDependency?: ((filename: string, dep: { virtualPath: string, code: string, map?: SourceMap }) => string) | null;
29
29
  hydrateIncludeImports?: RegExp | ((request: string) => boolean);
30
30
  optimize?: boolean;
31
31
  cache?: Map<unknown, unknown>;
32
32
  hot?: boolean;
33
+ /** @deprecated */
34
+ meta?: boolean;
33
35
  babelConfig?: {
34
36
  ast?: boolean | null;
35
37
  code?: boolean | null;
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.5",
4
+ "version": "5.20.8",
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.5",
16
+ "@marko/babel-utils": "^5.20.8",
17
17
  "complain": "^1.6.0",
18
18
  "he": "^1.2.0",
19
19
  "htmljs-parser": "^2.11.1",
@@ -28,7 +28,7 @@
28
28
  "strip-json-comments": "^3.1.1"
29
29
  },
30
30
  "devDependencies": {
31
- "@marko/translator-default": "^5.20.5"
31
+ "@marko/translator-default": "^5.20.8"
32
32
  },
33
33
  "files": [
34
34
  "dist",
@@ -59,5 +59,5 @@
59
59
  "url": "https://github.com/marko-js/marko/tree/master/packages/compiler"
60
60
  },
61
61
  "types": "index.d.ts",
62
- "gitHead": "f7df1bcd4e65aa384733952139280f698ba7a9c9"
62
+ "gitHead": "8d1abfa37468bd28d781c2a26d49a582acba66d2"
63
63
  }