@marko/compiler 5.20.4 → 5.20.7
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"}
|
|
@@ -182,24 +182,39 @@ function parseMarko(file) {
|
|
|
182
182
|
|
|
183
183
|
}
|
|
184
184
|
|
|
185
|
-
|
|
186
|
-
file,
|
|
187
|
-
t.markoTag(
|
|
188
|
-
tagNameExpression ?
|
|
189
|
-
(0, _babelUtils.parseExpression)(
|
|
190
|
-
file,
|
|
191
|
-
tagNameExpression,
|
|
192
|
-
tagNameStartPos + 2 /* ${ */) :
|
|
185
|
+
let tagNameNode;
|
|
193
186
|
|
|
194
|
-
(
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
187
|
+
if (tagNameExpression) {
|
|
188
|
+
tagNameNode = (0, _babelUtils.parseExpression)(
|
|
189
|
+
file,
|
|
190
|
+
tagNameExpression,
|
|
191
|
+
tagNameStartPos + 2 /* ${ */);
|
|
192
|
+
|
|
193
|
+
|
|
194
|
+
if (t.isStringLiteral(tagNameNode)) {
|
|
195
|
+
// convert to template literal just so that we don't mistake it for a native tag.
|
|
196
|
+
tagNameNode = t.templateLiteral(
|
|
197
|
+
[
|
|
198
|
+
t.templateElement({
|
|
199
|
+
raw: tagNameNode.value,
|
|
200
|
+
cooked: tagNameNode.value })],
|
|
199
201
|
|
|
200
|
-
[],
|
|
201
|
-
t.markoTagBody()),
|
|
202
202
|
|
|
203
|
+
[]);
|
|
204
|
+
|
|
205
|
+
}
|
|
206
|
+
} else {
|
|
207
|
+
tagNameNode = (0, _babelUtils.withLoc)(
|
|
208
|
+
file,
|
|
209
|
+
t.stringLiteral(tagName),
|
|
210
|
+
tagNameStartPos,
|
|
211
|
+
tagNameStartPos + tagName.length);
|
|
212
|
+
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
const node = (0, _babelUtils.withLoc)(
|
|
216
|
+
file,
|
|
217
|
+
t.markoTag(tagNameNode, [], t.markoTagBody()),
|
|
203
218
|
pos,
|
|
204
219
|
endPos);
|
|
205
220
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/babel-plugin/parser.js"],"names":["EMPTY_OBJECT","EMPTY_ARRAY","htmlTrimStart","t","replace","htmlTrimEnd","htmlTrim","isAttributeTag","node","isStringLiteral","name","value","parseMarko","file","code","htmlParseOptions","markoOpts","watchFiles","metadata","marko","pushTagBody","getTagBody","pushContainer","currentTag","isProgram","get","preserveWhitespace","path","preservingWhitespaceUntil","wasSelfClosing","handledTagName","onNext","handlers","onDocumentType","pos","endPos","markoDocumentType","onDeclaration","markoDeclaration","onComment","markoComment","onCDATA","markoCDATA","onText","parser","shouldTrim","body","length","prev","prevIndex","isMarkoClass","isMarkoComment","isMarkoScriptlet","undefined","originalValue","indexOf","isMarkoText","test","markoText","prevBody","next","onPlaceholder","escape","withinBody","markoPlaceholder","onScriptlet","line","block","buildCodeFrameError","loc","markoScriptlet","onOpenTagName","event","tagName","tagNameExpression","exec","tagDef","tagNameStartPos","concise","markoTag","stringLiteral","markoTagBody","parseOptions","setParseOptions","rootOnly","onOpenTag","tagNameEndPos","selfClosed","state","enterParsedTextContentState","enterStaticTextContentState","rawOpenTag","set","substring","ignoreAttributes","var","params","argument","shorthandId","shorthandClassNames","attributes","onCloseTag","tag","isConcise","start","end","push","hook","default","parentPath","onfinish","onError","message","includes","isOpenTagOnly","openTagOnly","ignoreNonstandardStringPlaceholders","parse","opts","filename"],"mappings":"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","sourcesContent":["import { createParser } from \"htmljs-parser\";\nimport parseAttributes from \"./util/parse-attributes\";\nimport parseArguments from \"./util/parse-arguments\";\nimport parseParams from \"./util/parse-params\";\nimport parseVar from \"./util/parse-var\";\nimport parseIDShorthand from \"./util/parse-id-shorthand\";\nimport parseClassnameShorthand from \"./util/parse-classname-shorthand\";\nimport * as t from \"../babel-types\";\nimport {\n withLoc,\n getLoc,\n getLocRange,\n parseScript,\n parseExpression,\n getTagDefForTagName\n} from \"@marko/babel-utils\";\n\nconst EMPTY_OBJECT = {};\nconst EMPTY_ARRAY = [];\nconst htmlTrimStart = t => t.replace(/^[\\n\\r]\\s*/, \"\");\nconst htmlTrimEnd = t => t.replace(/[\\n\\r]\\s*$/, \"\");\nconst htmlTrim = t => htmlTrimStart(htmlTrimEnd(t));\nconst isAttributeTag = node =>\n t.isStringLiteral(node.name) && node.name.value[0] === \"@\";\n\nexport function parseMarko(file) {\n const { code } = file;\n const { htmlParseOptions = {} } = file.markoOpts;\n const { watchFiles } = file.metadata.marko;\n const pushTagBody = node => getTagBody().pushContainer(\"body\", node);\n const getTagBody = () =>\n currentTag.isProgram() ? currentTag : currentTag.get(\"body\");\n let { preserveWhitespace } = htmlParseOptions;\n let currentTag = file.path;\n let preservingWhitespaceUntil = preserveWhitespace;\n let wasSelfClosing = false;\n let handledTagName = false;\n let onNext;\n\n const handlers = {\n onDocumentType({ value, pos, endPos }) {\n const node = withLoc(file, t.markoDocumentType(value), pos, endPos);\n pushTagBody(node);\n /* istanbul ignore next */\n onNext = onNext && onNext(node);\n },\n\n onDeclaration({ value, pos, endPos }) {\n const node = withLoc(file, t.markoDeclaration(value), pos, endPos);\n pushTagBody(node);\n /* istanbul ignore next */\n onNext = onNext && onNext(node);\n },\n\n onComment({ value, pos, endPos }) {\n const node = withLoc(file, t.markoComment(value), pos, endPos);\n pushTagBody(node);\n onNext = onNext && onNext(node);\n },\n\n onCDATA({ value, pos, endPos }) {\n const node = withLoc(file, t.markoCDATA(value), pos, endPos);\n pushTagBody(node);\n onNext = onNext && onNext(node);\n },\n\n onText({ value }, parser) {\n const shouldTrim = !preservingWhitespaceUntil;\n const { body } = getTagBody().node;\n let pos = parser.pos - value.length;\n\n if (shouldTrim) {\n if (htmlTrim(value) === \"\") {\n return;\n }\n\n // Find previous non-scriptlet/@tag.\n let prev;\n let prevIndex = body.length;\n while (prevIndex > 0) {\n prev = body[--prevIndex];\n\n if (\n t.isMarkoClass(prev) ||\n t.isMarkoComment(prev) ||\n t.isMarkoScriptlet(prev) ||\n isAttributeTag(prev)\n ) {\n prev = undefined;\n } else {\n break;\n }\n }\n\n if (!prev) {\n const originalValue = value;\n value = htmlTrimStart(value);\n pos += originalValue.indexOf(value);\n } else if (\n t.isMarkoText(prev) &&\n /\\s/.test(prev.value[prev.value.length - 1])\n ) {\n const originalValue = value;\n value = value.replace(/^\\s+/, \"\");\n pos += originalValue.indexOf(value);\n }\n }\n\n const endPos = pos + value.length;\n const node = withLoc(file, t.markoText(value), pos, endPos);\n const prevBody = getTagBody().node.body;\n pushTagBody(node);\n onNext && onNext(node);\n onNext =\n shouldTrim &&\n (next => {\n if (!next || prevBody.indexOf(next) === -1) {\n node.value = htmlTrimEnd(node.value);\n }\n\n node.value = node.value.replace(/\\s+/g, \" \");\n });\n },\n\n onPlaceholder({ escape, value, withinBody, pos, endPos }) {\n if (withinBody) {\n const node = withLoc(\n file,\n t.markoPlaceholder(\n parseExpression(\n file,\n value,\n pos + (escape ? 2 /* ${ */ : 3) /* $!{ */\n ),\n escape\n ),\n pos,\n endPos\n );\n\n pushTagBody(node);\n onNext = onNext && onNext(node);\n }\n },\n\n onScriptlet({ value, line, block, pos, endPos }) {\n if (!line && !block) {\n throw file.buildCodeFrameError(\n { loc: getLocRange(file, pos, endPos) },\n \"<% scriptlets %> are no longer supported.\"\n );\n }\n\n pos -= 1; // Include $.\n // Scriptlets are ignored as content and don't call `onNext`.\n pushTagBody(\n withLoc(\n file,\n t.markoScriptlet(\n parseScript(file, value, pos + 2 /** Ignores leading `$ ` */).body\n ),\n pos,\n endPos\n )\n );\n },\n\n onOpenTagName(event) {\n const { pos, endPos } = event;\n const tagName = event.tagName || \"div\";\n const [, tagNameExpression] =\n /^\\$\\{([\\s\\S]*)\\}/.exec(tagName) || EMPTY_ARRAY;\n const tagDef = !tagNameExpression && getTagDefForTagName(file, tagName);\n const tagNameStartPos = pos + (event.concise ? 0 : 1); // Account for leading `<`.\n\n handledTagName = true;\n\n if (tagNameExpression === \"\") {\n throw file.buildCodeFrameError(\n { loc: getLocRange(file, tagNameStartPos + 1, tagNameStartPos + 3) },\n \"Missing expression for <${dynamic}> tag.\"\n );\n }\n\n const node = withLoc(\n file,\n t.markoTag(\n tagNameExpression\n ? parseExpression(\n file,\n tagNameExpression,\n tagNameStartPos + 2 /* ${ */\n )\n : withLoc(\n file,\n t.stringLiteral(tagName),\n tagNameStartPos,\n tagNameStartPos + tagName.length\n ),\n [],\n t.markoTagBody()\n ),\n pos,\n endPos\n );\n\n if (tagDef) {\n node.tagDef = tagDef;\n\n const { parseOptions } = tagDef;\n if (parseOptions) {\n event.setParseOptions(parseOptions);\n\n if (parseOptions.rootOnly && !currentTag.isProgram()) {\n throw file.buildCodeFrameError(\n { loc: getLocRange(file, pos, endPos) },\n `\"${tagName}\" tags must be at the root of your Marko template.`\n );\n }\n }\n }\n\n [currentTag] = pushTagBody(node);\n\n // @tags are not treated as content and do not call next.\n if (!isAttributeTag(node)) {\n onNext = onNext && onNext(node);\n }\n },\n\n onOpenTag(event, parser) {\n if (!handledTagName) {\n // There is a bug in htmljs parser where a single top level concise mode tag with nothing else\n // does not emit the openTagNameEvent.\n handlers.onOpenTagName(event);\n }\n\n handledTagName = false;\n const { pos, endPos, tagNameEndPos } = event;\n const { tagDef } = currentTag.node;\n const parseOptions = (tagDef && tagDef.parseOptions) || EMPTY_OBJECT;\n wasSelfClosing = event.selfClosed;\n\n if (parseOptions.state === \"parsed-text\") {\n parser.enterParsedTextContentState();\n } else if (parseOptions.state === \"static-text\") {\n parser.enterStaticTextContentState();\n }\n\n if (parseOptions.rawOpenTag) {\n currentTag.set(\n \"rawValue\",\n parser.substring(pos, endPos).replace(/^<|\\/>$|>$/g, \"\")\n );\n }\n\n if (!parseOptions.ignoreAttributes) {\n currentTag.set(\"var\", parseVar(file, event.var));\n currentTag.get(\"body\").set(\"params\", parseParams(file, event.params));\n currentTag.set(\"arguments\", parseArguments(file, event.argument));\n currentTag.set(\n \"attributes\",\n parseIDShorthand(\n file,\n event.shorthandId,\n parseClassnameShorthand(\n file,\n event.shorthandClassNames,\n parseAttributes(file, event.attributes, tagNameEndPos)\n )\n )\n );\n }\n\n if (!preservingWhitespaceUntil && parseOptions.preserveWhitespace) {\n preservingWhitespaceUntil = currentTag;\n }\n },\n\n onCloseTag(event, parser) {\n let { pos, endPos } = event;\n const tag = currentTag;\n const { node } = tag;\n const { tagDef } = node;\n const isConcise = code[node.start - 1] !== \"<\";\n\n if (preservingWhitespaceUntil === currentTag) {\n preservingWhitespaceUntil = undefined;\n }\n\n if (!pos) {\n pos = parser.pos;\n }\n\n if (!endPos) {\n endPos = pos;\n\n if (wasSelfClosing && !isConcise) {\n endPos += 2; // account for \"/>\"\n }\n }\n\n node.end = endPos;\n node.loc.end = getLoc(file, endPos);\n\n if (\n !isConcise &&\n !wasSelfClosing &&\n code[pos + 1] !== \"/\" &&\n !currentTag.get(\"name\").isStringLiteral()\n ) {\n throw file.buildCodeFrameError(\n { loc: getLocRange(file, pos, endPos) },\n `Invalid ending for dynamic tag, expected \"</>\".`\n );\n }\n\n if (tagDef && tagDef.parser) {\n if (tagDef.parser.path) {\n watchFiles.push(tagDef.parser.path);\n }\n /* istanbul ignore next */\n (tagDef.parser.hook.default || tagDef.parser.hook)(tag, t);\n }\n\n currentTag = currentTag.parentPath.parentPath || file.path;\n },\n\n onfinish() {\n onNext = onNext && onNext();\n },\n\n onError({ message, pos, endPos }) {\n if (message.includes(\"EOF\")) endPos = pos;\n throw file.buildCodeFrameError(\n { loc: getLocRange(file, pos, endPos) },\n message\n );\n }\n };\n\n createParser(handlers, {\n isOpenTagOnly(name) {\n const { parseOptions = EMPTY_OBJECT } =\n getTagDefForTagName(file, name) || EMPTY_OBJECT;\n return parseOptions.openTagOnly;\n },\n ignoreNonstandardStringPlaceholders: true,\n ...htmlParseOptions\n }).parse(code, file.opts.filename);\n}\n"],"file":"parser.js"}
|
|
1
|
+
{"version":3,"sources":["../../src/babel-plugin/parser.js"],"names":["EMPTY_OBJECT","EMPTY_ARRAY","htmlTrimStart","t","replace","htmlTrimEnd","htmlTrim","isAttributeTag","node","isStringLiteral","name","value","parseMarko","file","code","htmlParseOptions","markoOpts","watchFiles","metadata","marko","pushTagBody","getTagBody","pushContainer","currentTag","isProgram","get","preserveWhitespace","path","preservingWhitespaceUntil","wasSelfClosing","handledTagName","onNext","handlers","onDocumentType","pos","endPos","markoDocumentType","onDeclaration","markoDeclaration","onComment","markoComment","onCDATA","markoCDATA","onText","parser","shouldTrim","body","length","prev","prevIndex","isMarkoClass","isMarkoComment","isMarkoScriptlet","undefined","originalValue","indexOf","isMarkoText","test","markoText","prevBody","next","onPlaceholder","escape","withinBody","markoPlaceholder","onScriptlet","line","block","buildCodeFrameError","loc","markoScriptlet","onOpenTagName","event","tagName","tagNameExpression","exec","tagDef","tagNameStartPos","concise","tagNameNode","templateLiteral","templateElement","raw","cooked","stringLiteral","markoTag","markoTagBody","parseOptions","setParseOptions","rootOnly","onOpenTag","tagNameEndPos","selfClosed","state","enterParsedTextContentState","enterStaticTextContentState","rawOpenTag","set","substring","ignoreAttributes","var","params","argument","shorthandId","shorthandClassNames","attributes","onCloseTag","tag","isConcise","start","end","push","hook","default","parentPath","onfinish","onError","message","includes","isOpenTagOnly","openTagOnly","ignoreNonstandardStringPlaceholders","parse","opts","filename"],"mappings":"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","sourcesContent":["import { createParser } from \"htmljs-parser\";\nimport parseAttributes from \"./util/parse-attributes\";\nimport parseArguments from \"./util/parse-arguments\";\nimport parseParams from \"./util/parse-params\";\nimport parseVar from \"./util/parse-var\";\nimport parseIDShorthand from \"./util/parse-id-shorthand\";\nimport parseClassnameShorthand from \"./util/parse-classname-shorthand\";\nimport * as t from \"../babel-types\";\nimport {\n withLoc,\n getLoc,\n getLocRange,\n parseScript,\n parseExpression,\n getTagDefForTagName\n} from \"@marko/babel-utils\";\n\nconst EMPTY_OBJECT = {};\nconst EMPTY_ARRAY = [];\nconst htmlTrimStart = t => t.replace(/^[\\n\\r]\\s*/, \"\");\nconst htmlTrimEnd = t => t.replace(/[\\n\\r]\\s*$/, \"\");\nconst htmlTrim = t => htmlTrimStart(htmlTrimEnd(t));\nconst isAttributeTag = node =>\n t.isStringLiteral(node.name) && node.name.value[0] === \"@\";\n\nexport function parseMarko(file) {\n const { code } = file;\n const { htmlParseOptions = {} } = file.markoOpts;\n const { watchFiles } = file.metadata.marko;\n const pushTagBody = node => getTagBody().pushContainer(\"body\", node);\n const getTagBody = () =>\n currentTag.isProgram() ? currentTag : currentTag.get(\"body\");\n let { preserveWhitespace } = htmlParseOptions;\n let currentTag = file.path;\n let preservingWhitespaceUntil = preserveWhitespace;\n let wasSelfClosing = false;\n let handledTagName = false;\n let onNext;\n\n const handlers = {\n onDocumentType({ value, pos, endPos }) {\n const node = withLoc(file, t.markoDocumentType(value), pos, endPos);\n pushTagBody(node);\n /* istanbul ignore next */\n onNext = onNext && onNext(node);\n },\n\n onDeclaration({ value, pos, endPos }) {\n const node = withLoc(file, t.markoDeclaration(value), pos, endPos);\n pushTagBody(node);\n /* istanbul ignore next */\n onNext = onNext && onNext(node);\n },\n\n onComment({ value, pos, endPos }) {\n const node = withLoc(file, t.markoComment(value), pos, endPos);\n pushTagBody(node);\n onNext = onNext && onNext(node);\n },\n\n onCDATA({ value, pos, endPos }) {\n const node = withLoc(file, t.markoCDATA(value), pos, endPos);\n pushTagBody(node);\n onNext = onNext && onNext(node);\n },\n\n onText({ value }, parser) {\n const shouldTrim = !preservingWhitespaceUntil;\n const { body } = getTagBody().node;\n let pos = parser.pos - value.length;\n\n if (shouldTrim) {\n if (htmlTrim(value) === \"\") {\n return;\n }\n\n // Find previous non-scriptlet/@tag.\n let prev;\n let prevIndex = body.length;\n while (prevIndex > 0) {\n prev = body[--prevIndex];\n\n if (\n t.isMarkoClass(prev) ||\n t.isMarkoComment(prev) ||\n t.isMarkoScriptlet(prev) ||\n isAttributeTag(prev)\n ) {\n prev = undefined;\n } else {\n break;\n }\n }\n\n if (!prev) {\n const originalValue = value;\n value = htmlTrimStart(value);\n pos += originalValue.indexOf(value);\n } else if (\n t.isMarkoText(prev) &&\n /\\s/.test(prev.value[prev.value.length - 1])\n ) {\n const originalValue = value;\n value = value.replace(/^\\s+/, \"\");\n pos += originalValue.indexOf(value);\n }\n }\n\n const endPos = pos + value.length;\n const node = withLoc(file, t.markoText(value), pos, endPos);\n const prevBody = getTagBody().node.body;\n pushTagBody(node);\n onNext && onNext(node);\n onNext =\n shouldTrim &&\n (next => {\n if (!next || prevBody.indexOf(next) === -1) {\n node.value = htmlTrimEnd(node.value);\n }\n\n node.value = node.value.replace(/\\s+/g, \" \");\n });\n },\n\n onPlaceholder({ escape, value, withinBody, pos, endPos }) {\n if (withinBody) {\n const node = withLoc(\n file,\n t.markoPlaceholder(\n parseExpression(\n file,\n value,\n pos + (escape ? 2 /* ${ */ : 3) /* $!{ */\n ),\n escape\n ),\n pos,\n endPos\n );\n\n pushTagBody(node);\n onNext = onNext && onNext(node);\n }\n },\n\n onScriptlet({ value, line, block, pos, endPos }) {\n if (!line && !block) {\n throw file.buildCodeFrameError(\n { loc: getLocRange(file, pos, endPos) },\n \"<% scriptlets %> are no longer supported.\"\n );\n }\n\n pos -= 1; // Include $.\n // Scriptlets are ignored as content and don't call `onNext`.\n pushTagBody(\n withLoc(\n file,\n t.markoScriptlet(\n parseScript(file, value, pos + 2 /** Ignores leading `$ ` */).body\n ),\n pos,\n endPos\n )\n );\n },\n\n onOpenTagName(event) {\n const { pos, endPos } = event;\n const tagName = event.tagName || \"div\";\n const [, tagNameExpression] =\n /^\\$\\{([\\s\\S]*)\\}/.exec(tagName) || EMPTY_ARRAY;\n const tagDef = !tagNameExpression && getTagDefForTagName(file, tagName);\n const tagNameStartPos = pos + (event.concise ? 0 : 1); // Account for leading `<`.\n\n handledTagName = true;\n\n if (tagNameExpression === \"\") {\n throw file.buildCodeFrameError(\n { loc: getLocRange(file, tagNameStartPos + 1, tagNameStartPos + 3) },\n \"Missing expression for <${dynamic}> tag.\"\n );\n }\n\n let tagNameNode;\n\n if (tagNameExpression) {\n tagNameNode = parseExpression(\n file,\n tagNameExpression,\n tagNameStartPos + 2 /* ${ */\n );\n\n if (t.isStringLiteral(tagNameNode)) {\n // convert to template literal just so that we don't mistake it for a native tag.\n tagNameNode = t.templateLiteral(\n [\n t.templateElement({\n raw: tagNameNode.value,\n cooked: tagNameNode.value\n })\n ],\n []\n );\n }\n } else {\n tagNameNode = withLoc(\n file,\n t.stringLiteral(tagName),\n tagNameStartPos,\n tagNameStartPos + tagName.length\n );\n }\n\n const node = withLoc(\n file,\n t.markoTag(tagNameNode, [], t.markoTagBody()),\n pos,\n endPos\n );\n\n if (tagDef) {\n node.tagDef = tagDef;\n\n const { parseOptions } = tagDef;\n if (parseOptions) {\n event.setParseOptions(parseOptions);\n\n if (parseOptions.rootOnly && !currentTag.isProgram()) {\n throw file.buildCodeFrameError(\n { loc: getLocRange(file, pos, endPos) },\n `\"${tagName}\" tags must be at the root of your Marko template.`\n );\n }\n }\n }\n\n [currentTag] = pushTagBody(node);\n\n // @tags are not treated as content and do not call next.\n if (!isAttributeTag(node)) {\n onNext = onNext && onNext(node);\n }\n },\n\n onOpenTag(event, parser) {\n if (!handledTagName) {\n // There is a bug in htmljs parser where a single top level concise mode tag with nothing else\n // does not emit the openTagNameEvent.\n handlers.onOpenTagName(event);\n }\n\n handledTagName = false;\n const { pos, endPos, tagNameEndPos } = event;\n const { tagDef } = currentTag.node;\n const parseOptions = (tagDef && tagDef.parseOptions) || EMPTY_OBJECT;\n wasSelfClosing = event.selfClosed;\n\n if (parseOptions.state === \"parsed-text\") {\n parser.enterParsedTextContentState();\n } else if (parseOptions.state === \"static-text\") {\n parser.enterStaticTextContentState();\n }\n\n if (parseOptions.rawOpenTag) {\n currentTag.set(\n \"rawValue\",\n parser.substring(pos, endPos).replace(/^<|\\/>$|>$/g, \"\")\n );\n }\n\n if (!parseOptions.ignoreAttributes) {\n currentTag.set(\"var\", parseVar(file, event.var));\n currentTag.get(\"body\").set(\"params\", parseParams(file, event.params));\n currentTag.set(\"arguments\", parseArguments(file, event.argument));\n currentTag.set(\n \"attributes\",\n parseIDShorthand(\n file,\n event.shorthandId,\n parseClassnameShorthand(\n file,\n event.shorthandClassNames,\n parseAttributes(file, event.attributes, tagNameEndPos)\n )\n )\n );\n }\n\n if (!preservingWhitespaceUntil && parseOptions.preserveWhitespace) {\n preservingWhitespaceUntil = currentTag;\n }\n },\n\n onCloseTag(event, parser) {\n let { pos, endPos } = event;\n const tag = currentTag;\n const { node } = tag;\n const { tagDef } = node;\n const isConcise = code[node.start - 1] !== \"<\";\n\n if (preservingWhitespaceUntil === currentTag) {\n preservingWhitespaceUntil = undefined;\n }\n\n if (!pos) {\n pos = parser.pos;\n }\n\n if (!endPos) {\n endPos = pos;\n\n if (wasSelfClosing && !isConcise) {\n endPos += 2; // account for \"/>\"\n }\n }\n\n node.end = endPos;\n node.loc.end = getLoc(file, endPos);\n\n if (\n !isConcise &&\n !wasSelfClosing &&\n code[pos + 1] !== \"/\" &&\n !currentTag.get(\"name\").isStringLiteral()\n ) {\n throw file.buildCodeFrameError(\n { loc: getLocRange(file, pos, endPos) },\n `Invalid ending for dynamic tag, expected \"</>\".`\n );\n }\n\n if (tagDef && tagDef.parser) {\n if (tagDef.parser.path) {\n watchFiles.push(tagDef.parser.path);\n }\n /* istanbul ignore next */\n (tagDef.parser.hook.default || tagDef.parser.hook)(tag, t);\n }\n\n currentTag = currentTag.parentPath.parentPath || file.path;\n },\n\n onfinish() {\n onNext = onNext && onNext();\n },\n\n onError({ message, pos, endPos }) {\n if (message.includes(\"EOF\")) endPos = pos;\n throw file.buildCodeFrameError(\n { loc: getLocRange(file, pos, endPos) },\n message\n );\n }\n };\n\n createParser(handlers, {\n isOpenTagOnly(name) {\n const { parseOptions = EMPTY_OBJECT } =\n getTagDefForTagName(file, name) || EMPTY_OBJECT;\n return parseOptions.openTagOnly;\n },\n ignoreNonstandardStringPlaceholders: true,\n ...htmlParseOptions\n }).parse(code, file.opts.filename);\n}\n"],"file":"parser.js"}
|
package/dist/traverse.d.ts
CHANGED
|
@@ -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: import('@marko/compiler').Config
|
|
1196
1191
|
}
|
|
1197
1192
|
|
|
1198
1193
|
export interface HubInterface {
|
package/index.d.ts
CHANGED
|
@@ -22,7 +22,7 @@ export type Config = {
|
|
|
22
22
|
writeVersionComment?: boolean;
|
|
23
23
|
ignoreUnrecognizedTags?: boolean;
|
|
24
24
|
sourceMaps?: boolean | "inline" | "both";
|
|
25
|
-
translator?:
|
|
25
|
+
translator?: any;
|
|
26
26
|
fileSystem?: typeof import("fs");
|
|
27
27
|
modules?: "esm" | "cjs";
|
|
28
28
|
resolveVirtualDependency?(filename: string, dep: { virtualPath: string, code: string, map?: SourceMap }): string;
|
|
@@ -30,6 +30,8 @@ export type Config = {
|
|
|
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.
|
|
4
|
+
"version": "5.20.7",
|
|
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.
|
|
16
|
+
"@marko/babel-utils": "^5.20.7",
|
|
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.
|
|
31
|
+
"@marko/translator-default": "^5.20.7"
|
|
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": "
|
|
62
|
+
"gitHead": "e980c3a4d2dc5cc37b75b98f07ef2e7856c892fb"
|
|
63
63
|
}
|