markdecl 0.1.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 (63) hide show
  1. package/LICENSE +45 -0
  2. package/README.md +11 -0
  3. package/dist/index.d.ts +95 -0
  4. package/dist/index.d.ts.map +1 -0
  5. package/dist/index.js +3368 -0
  6. package/dist/index.js.map +1 -0
  7. package/dist/src/ast/base.d.ts +7 -0
  8. package/dist/src/ast/base.d.ts.map +1 -0
  9. package/dist/src/ast/function.d.ts +9 -0
  10. package/dist/src/ast/function.d.ts.map +1 -0
  11. package/dist/src/ast/index.d.ts +18 -0
  12. package/dist/src/ast/index.d.ts.map +1 -0
  13. package/dist/src/ast/node.d.ts +23 -0
  14. package/dist/src/ast/node.d.ts.map +1 -0
  15. package/dist/src/ast/variable.d.ts +8 -0
  16. package/dist/src/ast/variable.d.ts.map +1 -0
  17. package/dist/src/formatter.d.ts +11 -0
  18. package/dist/src/formatter.d.ts.map +1 -0
  19. package/dist/src/functions/index.d.ts +11 -0
  20. package/dist/src/functions/index.d.ts.map +1 -0
  21. package/dist/src/parser.d.ts +4 -0
  22. package/dist/src/parser.d.ts.map +1 -0
  23. package/dist/src/renderers/html.d.ts +3 -0
  24. package/dist/src/renderers/html.d.ts.map +1 -0
  25. package/dist/src/renderers/index.d.ts +6 -0
  26. package/dist/src/renderers/index.d.ts.map +1 -0
  27. package/dist/src/schema-types/conditional.d.ts +13 -0
  28. package/dist/src/schema-types/conditional.d.ts.map +1 -0
  29. package/dist/src/schema.d.ts +36 -0
  30. package/dist/src/schema.d.ts.map +1 -0
  31. package/dist/src/tag.d.ts +10 -0
  32. package/dist/src/tag.d.ts.map +1 -0
  33. package/dist/src/tags/conditional.d.ts +5 -0
  34. package/dist/src/tags/conditional.d.ts.map +1 -0
  35. package/dist/src/tags/index.d.ts +9 -0
  36. package/dist/src/tags/index.d.ts.map +1 -0
  37. package/dist/src/tags/partial.d.ts +3 -0
  38. package/dist/src/tags/partial.d.ts.map +1 -0
  39. package/dist/src/tags/slot.d.ts +3 -0
  40. package/dist/src/tags/slot.d.ts.map +1 -0
  41. package/dist/src/tags/table.d.ts +3 -0
  42. package/dist/src/tags/table.d.ts.map +1 -0
  43. package/dist/src/tokenizer/index.d.ts +11 -0
  44. package/dist/src/tokenizer/index.d.ts.map +1 -0
  45. package/dist/src/tokenizer/plugins/annotations.d.ts +3 -0
  46. package/dist/src/tokenizer/plugins/annotations.d.ts.map +1 -0
  47. package/dist/src/tokenizer/plugins/comments.d.ts +3 -0
  48. package/dist/src/tokenizer/plugins/comments.d.ts.map +1 -0
  49. package/dist/src/tokenizer/plugins/frontmatter.d.ts +3 -0
  50. package/dist/src/tokenizer/plugins/frontmatter.d.ts.map +1 -0
  51. package/dist/src/transformer.d.ts +4 -0
  52. package/dist/src/transformer.d.ts.map +1 -0
  53. package/dist/src/transforms/index.d.ts +4 -0
  54. package/dist/src/transforms/index.d.ts.map +1 -0
  55. package/dist/src/transforms/table.d.ts +3 -0
  56. package/dist/src/transforms/table.d.ts.map +1 -0
  57. package/dist/src/types.d.ts +134 -0
  58. package/dist/src/types.d.ts.map +1 -0
  59. package/dist/src/utils.d.ts +9 -0
  60. package/dist/src/utils.d.ts.map +1 -0
  61. package/dist/src/validator.d.ts +28 -0
  62. package/dist/src/validator.d.ts.map +1 -0
  63. package/package.json +62 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../src/ast/base.ts","../src/tag.ts","../src/grammar/tag.js","../src/ast/variable.ts","../src/ast/function.ts","../src/utils.ts","../src/transformer.ts","../src/ast/node.ts","../src/ast/index.ts","../src/formatter.ts","../src/schema-types/conditional.ts","../src/tags/conditional.ts","../src/functions/index.ts","../src/transforms/table.ts","../src/transforms/index.ts","../src/parser.ts","../src/schema.ts","../src/renderers/html.ts","../src/renderers/index.ts","../src/tags/partial.ts","../src/tags/table.ts","../src/tags/slot.ts","../src/tags/index.ts","../src/tokenizer/plugins/annotations.ts","../src/tokenizer/plugins/frontmatter.ts","../src/tokenizer/plugins/comments.ts","../src/tokenizer/index.ts","../src/validator.ts","../index.ts"],"sourcesContent":["import type {\n AstType,\n Config,\n Function as AstFunction,\n Scalar,\n Variable as AstVariable,\n} from '../types';\n\nexport function isAst(value?: any): value is AstType {\n return !!value?.$$mdtype;\n}\n\nexport function isFunction(value?: any): value is AstFunction {\n return !!(value?.$$mdtype === 'Function');\n}\n\nexport function isVariable(value?: any): value is AstVariable {\n return !!(value?.$$mdtype === 'Variable');\n}\n\nexport function* getAstValues(value: any): Generator<AstType, void, unknown> {\n if (value == null || typeof value !== 'object') return;\n\n if (Array.isArray(value)) for (const v of value) yield* getAstValues(v);\n\n if (isAst(value)) yield value;\n\n if (Object.getPrototypeOf(value) !== Object.prototype) return;\n\n for (const v of Object.values(value)) yield* getAstValues(v);\n}\n\nexport function resolve(value: any, config: Config = {}): any {\n if (value == null || typeof value !== 'object') return value;\n\n if (Array.isArray(value)) return value.map((item) => resolve(item, config));\n\n if (isAst(value) && value?.resolve instanceof Function) return value.resolve(config);\n\n if (Object.getPrototypeOf(value) !== Object.prototype) return value;\n\n const output: Record<string, Scalar> = {};\n for (const [k, v] of Object.entries(value)) output[k] = resolve(v, config);\n return output;\n}\n","import type { RenderableTreeNode } from './types';\n\nexport default class Tag<\n N extends string = string,\n A extends Record<string, any> = Record<string, any>,\n> {\n readonly $$mdtype = 'Tag' as const;\n\n static isTag = (tag: any): tag is Tag => {\n return !!(tag?.$$mdtype === 'Tag');\n };\n\n name: N;\n attributes: A;\n children: RenderableTreeNode[];\n\n constructor(name = 'div' as N, attributes = {} as A, children: RenderableTreeNode[] = []) {\n this.name = name;\n this.attributes = attributes;\n this.children = children;\n }\n}\n","// @generated by Peggy 5.0.6.\n//\n// https://peggyjs.org/\n\nclass peg$SyntaxError extends SyntaxError {\n constructor(message, expected, found, location) {\n super(message);\n this.expected = expected;\n this.found = found;\n this.location = location;\n this.name = 'SyntaxError';\n }\n\n format(sources) {\n let str = 'Error: ' + this.message;\n if (this.location) {\n let src = null;\n const st = sources.find((s) => s.source === this.location.source);\n if (st) {\n src = st.text.split(/\\r\\n|\\n|\\r/g);\n }\n const s = this.location.start;\n const offset_s =\n this.location.source && typeof this.location.source.offset === 'function'\n ? this.location.source.offset(s)\n : s;\n const loc = this.location.source + ':' + offset_s.line + ':' + offset_s.column;\n if (src) {\n const e = this.location.end;\n const filler = ''.padEnd(offset_s.line.toString().length, ' ');\n const line = src[s.line - 1];\n const last = s.line === e.line ? e.column : line.length + 1;\n const hatLen = last - s.column || 1;\n str +=\n '\\n --> ' +\n loc +\n '\\n' +\n filler +\n ' |\\n' +\n offset_s.line +\n ' | ' +\n line +\n '\\n' +\n filler +\n ' | ' +\n ''.padEnd(s.column - 1, ' ') +\n ''.padEnd(hatLen, '^');\n } else {\n str += '\\n at ' + loc;\n }\n }\n return str;\n }\n\n static buildMessage(expected, found) {\n function hex(ch) {\n return ch.codePointAt(0).toString(16).toUpperCase();\n }\n\n const nonPrintable = Object.prototype.hasOwnProperty.call(RegExp.prototype, 'unicode')\n ? new RegExp('[\\\\p{C}\\\\p{Mn}\\\\p{Mc}]', 'gu')\n : null;\n function unicodeEscape(s) {\n if (nonPrintable) {\n return s.replace(nonPrintable, (ch) => '\\\\u{' + hex(ch) + '}');\n }\n return s;\n }\n\n function literalEscape(s) {\n return unicodeEscape(\n s\n .replace(/\\\\/g, '\\\\\\\\')\n .replace(/\"/g, '\\\\\"')\n .replace(/\\0/g, '\\\\0')\n .replace(/\\t/g, '\\\\t')\n .replace(/\\n/g, '\\\\n')\n .replace(/\\r/g, '\\\\r')\n .replace(/[\\x00-\\x0F]/g, (ch) => '\\\\x0' + hex(ch))\n .replace(/[\\x10-\\x1F\\x7F-\\x9F]/g, (ch) => '\\\\x' + hex(ch)),\n );\n }\n\n function classEscape(s) {\n return unicodeEscape(\n s\n .replace(/\\\\/g, '\\\\\\\\')\n .replace(/\\]/g, '\\\\]')\n .replace(/\\^/g, '\\\\^')\n .replace(/-/g, '\\\\-')\n .replace(/\\0/g, '\\\\0')\n .replace(/\\t/g, '\\\\t')\n .replace(/\\n/g, '\\\\n')\n .replace(/\\r/g, '\\\\r')\n .replace(/[\\x00-\\x0F]/g, (ch) => '\\\\x0' + hex(ch))\n .replace(/[\\x10-\\x1F\\x7F-\\x9F]/g, (ch) => '\\\\x' + hex(ch)),\n );\n }\n\n const DESCRIBE_EXPECTATION_FNS = {\n literal(expectation) {\n return '\"' + literalEscape(expectation.text) + '\"';\n },\n\n class(expectation) {\n const escapedParts = expectation.parts.map((part) =>\n Array.isArray(part)\n ? classEscape(part[0]) + '-' + classEscape(part[1])\n : classEscape(part),\n );\n\n return (\n '[' +\n (expectation.inverted ? '^' : '') +\n escapedParts.join('') +\n ']' +\n (expectation.unicode ? 'u' : '')\n );\n },\n\n any() {\n return 'any character';\n },\n\n end() {\n return 'end of input';\n },\n\n other(expectation) {\n return expectation.description;\n },\n };\n\n function describeExpectation(expectation) {\n return DESCRIBE_EXPECTATION_FNS[expectation.type](expectation);\n }\n\n function describeExpected(expected) {\n const descriptions = expected.map(describeExpectation);\n descriptions.sort();\n\n if (descriptions.length > 0) {\n let j = 1;\n for (let i = 1; i < descriptions.length; i++) {\n if (descriptions[i - 1] !== descriptions[i]) {\n descriptions[j] = descriptions[i];\n j++;\n }\n }\n descriptions.length = j;\n }\n\n switch (descriptions.length) {\n case 1:\n return descriptions[0];\n\n case 2:\n return descriptions[0] + ' or ' + descriptions[1];\n\n default:\n return (\n descriptions.slice(0, -1).join(', ') + ', or ' + descriptions[descriptions.length - 1]\n );\n }\n }\n\n function describeFound(found) {\n return found ? '\"' + literalEscape(found) + '\"' : 'end of input';\n }\n\n return 'Expected ' + describeExpected(expected) + ' but ' + describeFound(found) + ' found.';\n }\n}\n\nfunction peg$parse(input, options) {\n options = options !== undefined ? options : {};\n\n const peg$FAILED = {};\n const peg$source = options.grammarSource;\n\n const peg$startRuleFunctions = {\n Top: peg$parseTop,\n };\n let peg$startRuleFunction = peg$parseTop;\n\n const peg$c0 = '/';\n const peg$c1 = '=';\n const peg$c2 = '(';\n const peg$c3 = ')';\n const peg$c4 = ',';\n const peg$c5 = '.';\n const peg$c6 = '[';\n const peg$c7 = ']';\n const peg$c8 = 'null';\n const peg$c9 = 'true';\n const peg$c10 = 'false';\n const peg$c11 = '{';\n const peg$c12 = '}';\n const peg$c13 = ':';\n const peg$c14 = '-';\n const peg$c15 = '\"';\n const peg$c16 = '\\\\';\n const peg$c17 = 'n';\n const peg$c18 = 'r';\n const peg$c19 = 't';\n\n const peg$r0 = /^[$@]/;\n const peg$r1 = /^[0-9]/;\n const peg$r2 = /^[^\\0-\\x1F\"\\\\]/;\n const peg$r3 = /^[\"\\\\]/;\n const peg$r4 = /^[a-zA-Z0-9_\\-]/;\n const peg$r5 = /^[ \\n\\t]/;\n\n const peg$e0 = peg$literalExpectation('/', false);\n const peg$e1 = peg$otherExpectation('tag name');\n const peg$e2 = peg$literalExpectation('=', false);\n const peg$e3 = peg$literalExpectation('(', false);\n const peg$e4 = peg$literalExpectation(')', false);\n const peg$e5 = peg$literalExpectation(',', false);\n const peg$e6 = peg$otherExpectation('variable');\n const peg$e7 = peg$classExpectation(['$', '@'], false, false, false);\n const peg$e8 = peg$literalExpectation('.', false);\n const peg$e9 = peg$literalExpectation('[', false);\n const peg$e10 = peg$literalExpectation(']', false);\n const peg$e11 = peg$otherExpectation('null');\n const peg$e12 = peg$literalExpectation('null', false);\n const peg$e13 = peg$otherExpectation('boolean');\n const peg$e14 = peg$literalExpectation('true', false);\n const peg$e15 = peg$literalExpectation('false', false);\n const peg$e16 = peg$literalExpectation('{', false);\n const peg$e17 = peg$literalExpectation('}', false);\n const peg$e18 = peg$literalExpectation(':', false);\n const peg$e19 = peg$otherExpectation('number');\n const peg$e20 = peg$literalExpectation('-', false);\n const peg$e21 = peg$classExpectation([['0', '9']], false, false, false);\n const peg$e22 = peg$otherExpectation('string');\n const peg$e23 = peg$literalExpectation('\"', false);\n const peg$e24 = peg$classExpectation([['\\0', '\\x1F'], '\"', '\\\\'], true, false, false);\n const peg$e25 = peg$literalExpectation('\\\\', false);\n const peg$e26 = peg$classExpectation(['\"', '\\\\'], false, false, false);\n const peg$e27 = peg$literalExpectation('n', false);\n const peg$e28 = peg$literalExpectation('r', false);\n const peg$e29 = peg$literalExpectation('t', false);\n const peg$e30 = peg$otherExpectation('identifier');\n const peg$e31 = peg$classExpectation(\n [['a', 'z'], ['A', 'Z'], ['0', '9'], '_', '-'],\n false,\n false,\n false,\n );\n const peg$e32 = peg$otherExpectation('whitespace');\n const peg$e33 = peg$classExpectation([' ', '\\n', '\\t'], false, false, false);\n\n function peg$f0(variable) {\n return { type: 'variable', meta: { variable } };\n }\n function peg$f1(attributes) {\n return { type: 'annotation', meta: { attributes } };\n }\n function peg$f2(tag, value) {\n return value;\n }\n function peg$f3(tag, primary, attributes, close) {\n if (primary) {\n attributes = attributes || [];\n attributes.unshift({ type: 'attribute', name: 'primary', value: primary });\n }\n\n const [type, nesting] = close ? ['tag', 0] : ['tag_open', 1];\n return { type, nesting, meta: { tag, attributes } };\n }\n function peg$f4(tag) {\n return { type: 'tag_close', nesting: -1, meta: { tag } };\n }\n function peg$f5(head, tail) {\n return !head ? [] : [head, ...tail];\n }\n function peg$f6(item) {\n return item;\n }\n function peg$f7(attribute) {\n return attribute;\n }\n function peg$f8(name, value) {\n return { type: 'attribute', name, value };\n }\n function peg$f9(name, head, tail) {\n return head ? [head, ...tail] : [];\n }\n function peg$f10(name, params) {\n let parameters = {};\n for (let [index, { name, value }] of params.entries()) parameters[name || index] = value;\n return new Function(name, parameters);\n }\n function peg$f11(name) {\n return name;\n }\n function peg$f12(name, value) {\n return { name, value };\n }\n function peg$f13(value) {\n return value;\n }\n function peg$f14(prefix, head, tail) {\n if (prefix === '@') return [head, ...tail];\n return new Variable([head, ...tail]);\n }\n function peg$f15(name) {\n return name;\n }\n function peg$f16(value) {\n return value;\n }\n function peg$f17() {\n return null;\n }\n function peg$f18() {\n return true;\n }\n function peg$f19() {\n return false;\n }\n function peg$f20(head, tail) {\n return [head, ...tail];\n }\n function peg$f21(value) {\n return value || [];\n }\n function peg$f22(value) {\n return value;\n }\n function peg$f23(head, tail) {\n return Object.assign(head, ...tail);\n }\n function peg$f24(value) {\n return value || {};\n }\n function peg$f25(item) {\n return item;\n }\n function peg$f26(key, value) {\n return key === '$$mdtype' ? {} : { [key]: value };\n }\n function peg$f27() {\n return parseFloat(text());\n }\n function peg$f28(value) {\n return value.join('');\n }\n function peg$f29() {\n return '\\n';\n }\n function peg$f30() {\n return '\\r';\n }\n function peg$f31() {\n return '\\t';\n }\n function peg$f32(sequence) {\n return sequence;\n }\n let peg$currPos = options.peg$currPos | 0;\n let peg$savedPos = peg$currPos;\n const peg$posDetailsCache = [{ line: 1, column: 1 }];\n let peg$maxFailPos = peg$currPos;\n let peg$maxFailExpected = options.peg$maxFailExpected || [];\n let peg$silentFails = options.peg$silentFails | 0;\n\n let peg$result;\n\n if (options.startRule) {\n if (!(options.startRule in peg$startRuleFunctions)) {\n throw new Error('Can\\'t start parsing from rule \"' + options.startRule + '\".');\n }\n\n peg$startRuleFunction = peg$startRuleFunctions[options.startRule];\n }\n\n function text() {\n return input.substring(peg$savedPos, peg$currPos);\n }\n\n function offset() {\n return peg$savedPos;\n }\n\n function range() {\n return {\n source: peg$source,\n start: peg$savedPos,\n end: peg$currPos,\n };\n }\n\n function location() {\n return peg$computeLocation(peg$savedPos, peg$currPos);\n }\n\n function expected(description, location) {\n location = location !== undefined ? location : peg$computeLocation(peg$savedPos, peg$currPos);\n\n throw peg$buildStructuredError(\n [peg$otherExpectation(description)],\n input.substring(peg$savedPos, peg$currPos),\n location,\n );\n }\n\n function error(message, location) {\n location = location !== undefined ? location : peg$computeLocation(peg$savedPos, peg$currPos);\n\n throw peg$buildSimpleError(message, location);\n }\n\n function peg$getUnicode(pos = peg$currPos) {\n const cp = input.codePointAt(pos);\n if (cp === undefined) {\n return '';\n }\n return String.fromCodePoint(cp);\n }\n\n function peg$literalExpectation(text, ignoreCase) {\n return { type: 'literal', text, ignoreCase };\n }\n\n function peg$classExpectation(parts, inverted, ignoreCase, unicode) {\n return { type: 'class', parts, inverted, ignoreCase, unicode };\n }\n\n function peg$anyExpectation() {\n return { type: 'any' };\n }\n\n function peg$endExpectation() {\n return { type: 'end' };\n }\n\n function peg$otherExpectation(description) {\n return { type: 'other', description };\n }\n\n function peg$computePosDetails(pos) {\n let details = peg$posDetailsCache[pos];\n let p;\n\n if (details) {\n return details;\n } else {\n if (pos >= peg$posDetailsCache.length) {\n p = peg$posDetailsCache.length - 1;\n } else {\n p = pos;\n while (!peg$posDetailsCache[--p]) {}\n }\n\n details = peg$posDetailsCache[p];\n details = {\n line: details.line,\n column: details.column,\n };\n\n while (p < pos) {\n if (input.charCodeAt(p) === 10) {\n details.line++;\n details.column = 1;\n } else {\n details.column++;\n }\n\n p++;\n }\n\n peg$posDetailsCache[pos] = details;\n\n return details;\n }\n }\n\n function peg$computeLocation(startPos, endPos, offset) {\n const startPosDetails = peg$computePosDetails(startPos);\n const endPosDetails = peg$computePosDetails(endPos);\n\n const res = {\n source: peg$source,\n start: {\n offset: startPos,\n line: startPosDetails.line,\n column: startPosDetails.column,\n },\n end: {\n offset: endPos,\n line: endPosDetails.line,\n column: endPosDetails.column,\n },\n };\n if (offset && peg$source && typeof peg$source.offset === 'function') {\n res.start = peg$source.offset(res.start);\n res.end = peg$source.offset(res.end);\n }\n return res;\n }\n\n function peg$fail(expected) {\n if (peg$currPos < peg$maxFailPos) {\n return;\n }\n\n if (peg$currPos > peg$maxFailPos) {\n peg$maxFailPos = peg$currPos;\n peg$maxFailExpected = [];\n }\n\n peg$maxFailExpected.push(expected);\n }\n\n function peg$buildSimpleError(message, location) {\n return new peg$SyntaxError(message, null, null, location);\n }\n\n function peg$buildStructuredError(expected, found, location) {\n return new peg$SyntaxError(\n peg$SyntaxError.buildMessage(expected, found),\n expected,\n found,\n location,\n );\n }\n\n function peg$parseTop() {\n let s0;\n\n s0 = peg$parseTopLevelValue();\n if (s0 === peg$FAILED) {\n s0 = peg$parseAnnotation();\n if (s0 === peg$FAILED) {\n s0 = peg$parseTagOpen();\n if (s0 === peg$FAILED) {\n s0 = peg$parseTagClose();\n }\n }\n }\n\n return s0;\n }\n\n function peg$parseTopLevelValue() {\n let s0, s1;\n\n s0 = peg$currPos;\n s1 = peg$parseVariable();\n if (s1 === peg$FAILED) {\n s1 = peg$parseFunction();\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$f0(s1);\n }\n s0 = s1;\n\n return s0;\n }\n\n function peg$parseAnnotation() {\n let s0, s1, s2, s3;\n\n s0 = peg$currPos;\n s1 = peg$parseTagAttributes();\n if (s1 !== peg$FAILED) {\n s2 = [];\n s3 = peg$parse_();\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n s3 = peg$parse_();\n }\n peg$savedPos = s0;\n s0 = peg$f1(s1);\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseTagOpen() {\n let s0, s1, s2, s3, s4, s5, s6;\n\n s0 = peg$currPos;\n s1 = peg$parseTagName();\n if (s1 !== peg$FAILED) {\n s2 = [];\n s3 = peg$parse_();\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n s3 = peg$parse_();\n }\n s3 = peg$currPos;\n s4 = peg$parseValue();\n if (s4 !== peg$FAILED) {\n s5 = peg$parse_();\n if (s5 === peg$FAILED) {\n s5 = null;\n }\n peg$savedPos = s3;\n s3 = peg$f2(s1, s4);\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n if (s3 === peg$FAILED) {\n s3 = null;\n }\n s4 = peg$parseTagAttributes();\n if (s4 === peg$FAILED) {\n s4 = null;\n }\n s5 = [];\n s6 = peg$parse_();\n while (s6 !== peg$FAILED) {\n s5.push(s6);\n s6 = peg$parse_();\n }\n if (input.charCodeAt(peg$currPos) === 47) {\n s6 = peg$c0;\n peg$currPos++;\n } else {\n s6 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$e0);\n }\n }\n if (s6 === peg$FAILED) {\n s6 = null;\n }\n peg$savedPos = s0;\n s0 = peg$f3(s1, s3, s4, s6);\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseTagClose() {\n let s0, s1, s2;\n\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 47) {\n s1 = peg$c0;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$e0);\n }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parseTagName();\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s0 = peg$f4(s2);\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseTagName() {\n let s0, s1;\n\n peg$silentFails++;\n s0 = peg$parseIdentifier();\n peg$silentFails--;\n if (s0 === peg$FAILED) {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$e1);\n }\n }\n\n return s0;\n }\n\n function peg$parseTagAttributes() {\n let s0, s1, s2, s3;\n\n s0 = peg$currPos;\n s1 = peg$parseTagAttributesItem();\n if (s1 !== peg$FAILED) {\n s2 = [];\n s3 = peg$parseTagAttributesTail();\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n s3 = peg$parseTagAttributesTail();\n }\n peg$savedPos = s0;\n s0 = peg$f5(s1, s2);\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseTagAttributesTail() {\n let s0, s1, s2;\n\n s0 = peg$currPos;\n s1 = [];\n s2 = peg$parse_();\n if (s2 !== peg$FAILED) {\n while (s2 !== peg$FAILED) {\n s1.push(s2);\n s2 = peg$parse_();\n }\n } else {\n s1 = peg$FAILED;\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parseTagAttributesItem();\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s0 = peg$f6(s2);\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseTagAttributesItem() {\n let s0, s1;\n\n s0 = peg$currPos;\n s1 = peg$parseTagAttribute();\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$f7(s1);\n }\n s0 = s1;\n\n return s0;\n }\n\n function peg$parseTagAttribute() {\n let s0, s1, s2, s3;\n\n s0 = peg$currPos;\n s1 = peg$parseIdentifier();\n if (s1 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 61) {\n s2 = peg$c1;\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$e2);\n }\n }\n if (s2 !== peg$FAILED) {\n s3 = peg$parseValue();\n if (s3 !== peg$FAILED) {\n peg$savedPos = s0;\n s0 = peg$f8(s1, s3);\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseFunction() {\n let s0, s1, s2, s3, s4, s5, s6, s7;\n\n s0 = peg$currPos;\n s1 = peg$parseIdentifier();\n if (s1 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 40) {\n s2 = peg$c2;\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$e3);\n }\n }\n if (s2 !== peg$FAILED) {\n s3 = [];\n s4 = peg$parse_();\n while (s4 !== peg$FAILED) {\n s3.push(s4);\n s4 = peg$parse_();\n }\n s4 = peg$currPos;\n s5 = peg$parseFunctionParameter();\n if (s5 === peg$FAILED) {\n s5 = null;\n }\n s6 = [];\n s7 = peg$parseFunctionParameterTail();\n while (s7 !== peg$FAILED) {\n s6.push(s7);\n s7 = peg$parseFunctionParameterTail();\n }\n peg$savedPos = s4;\n s4 = peg$f9(s1, s5, s6);\n if (input.charCodeAt(peg$currPos) === 41) {\n s5 = peg$c3;\n peg$currPos++;\n } else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$e4);\n }\n }\n if (s5 !== peg$FAILED) {\n peg$savedPos = s0;\n s0 = peg$f10(s1, s4);\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseFunctionParameter() {\n let s0, s1, s2, s3;\n\n s0 = peg$currPos;\n s1 = peg$currPos;\n s2 = peg$parseIdentifier();\n if (s2 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 61) {\n s3 = peg$c1;\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$e2);\n }\n }\n if (s3 !== peg$FAILED) {\n peg$savedPos = s1;\n s1 = peg$f11(s2);\n } else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n } else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n if (s1 === peg$FAILED) {\n s1 = null;\n }\n s2 = peg$parseValue();\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s0 = peg$f12(s1, s2);\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseFunctionParameterTail() {\n let s0, s1, s2, s3, s4;\n\n s0 = peg$currPos;\n s1 = [];\n s2 = peg$parse_();\n while (s2 !== peg$FAILED) {\n s1.push(s2);\n s2 = peg$parse_();\n }\n if (input.charCodeAt(peg$currPos) === 44) {\n s2 = peg$c4;\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$e5);\n }\n }\n if (s2 !== peg$FAILED) {\n s3 = [];\n s4 = peg$parse_();\n while (s4 !== peg$FAILED) {\n s3.push(s4);\n s4 = peg$parse_();\n }\n s4 = peg$parseFunctionParameter();\n if (s4 !== peg$FAILED) {\n peg$savedPos = s0;\n s0 = peg$f13(s4);\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseTrailingComma() {\n let s0, s1, s2;\n\n s0 = peg$currPos;\n s1 = [];\n s2 = peg$parse_();\n while (s2 !== peg$FAILED) {\n s1.push(s2);\n s2 = peg$parse_();\n }\n if (input.charCodeAt(peg$currPos) === 44) {\n s2 = peg$c4;\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$e5);\n }\n }\n if (s2 !== peg$FAILED) {\n s1 = [s1, s2];\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n if (s0 === peg$FAILED) {\n s0 = null;\n }\n\n return s0;\n }\n\n function peg$parseVariable() {\n let s0, s1, s2, s3, s4;\n\n peg$silentFails++;\n s0 = peg$currPos;\n s1 = input.charAt(peg$currPos);\n if (peg$r0.test(s1)) {\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$e7);\n }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parseIdentifier();\n if (s2 !== peg$FAILED) {\n s3 = [];\n s4 = peg$parseVariableTail();\n while (s4 !== peg$FAILED) {\n s3.push(s4);\n s4 = peg$parseVariableTail();\n }\n peg$savedPos = s0;\n s0 = peg$f14(s1, s2, s3);\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n peg$silentFails--;\n if (s0 === peg$FAILED) {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$e6);\n }\n }\n\n return s0;\n }\n\n function peg$parseVariableTail() {\n let s0, s1, s2, s3;\n\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 46) {\n s1 = peg$c5;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$e8);\n }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parseIdentifier();\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s0 = peg$f15(s2);\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 91) {\n s1 = peg$c6;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$e9);\n }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parseValueNumber();\n if (s2 === peg$FAILED) {\n s2 = peg$parseValueString();\n }\n if (s2 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 93) {\n s3 = peg$c7;\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$e10);\n }\n }\n if (s3 !== peg$FAILED) {\n peg$savedPos = s0;\n s0 = peg$f16(s2);\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n\n return s0;\n }\n\n function peg$parseValue() {\n let s0;\n\n s0 = peg$parseValueNull();\n if (s0 === peg$FAILED) {\n s0 = peg$parseValueBoolean();\n if (s0 === peg$FAILED) {\n s0 = peg$parseValueString();\n if (s0 === peg$FAILED) {\n s0 = peg$parseValueNumber();\n if (s0 === peg$FAILED) {\n s0 = peg$parseValueArray();\n if (s0 === peg$FAILED) {\n s0 = peg$parseValueHash();\n if (s0 === peg$FAILED) {\n s0 = peg$parseFunction();\n if (s0 === peg$FAILED) {\n s0 = peg$parseVariable();\n }\n }\n }\n }\n }\n }\n }\n\n return s0;\n }\n\n function peg$parseValueNull() {\n let s0, s1;\n\n peg$silentFails++;\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 4) === peg$c8) {\n s1 = peg$c8;\n peg$currPos += 4;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$e12);\n }\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$f17();\n }\n s0 = s1;\n peg$silentFails--;\n if (s0 === peg$FAILED) {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$e11);\n }\n }\n\n return s0;\n }\n\n function peg$parseValueBoolean() {\n let s0, s1;\n\n peg$silentFails++;\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 4) === peg$c9) {\n s1 = peg$c9;\n peg$currPos += 4;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$e14);\n }\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$f18();\n }\n s0 = s1;\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 5) === peg$c10) {\n s1 = peg$c10;\n peg$currPos += 5;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$e15);\n }\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$f19();\n }\n s0 = s1;\n }\n peg$silentFails--;\n if (s0 === peg$FAILED) {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$e13);\n }\n }\n\n return s0;\n }\n\n function peg$parseValueArray() {\n let s0, s1, s2, s3, s4, s5, s6;\n\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 91) {\n s1 = peg$c6;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$e9);\n }\n }\n if (s1 !== peg$FAILED) {\n s2 = [];\n s3 = peg$parse_();\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n s3 = peg$parse_();\n }\n s3 = peg$currPos;\n s4 = peg$parseValue();\n if (s4 !== peg$FAILED) {\n s5 = [];\n s6 = peg$parseValueArrayTail();\n while (s6 !== peg$FAILED) {\n s5.push(s6);\n s6 = peg$parseValueArrayTail();\n }\n s6 = peg$parseTrailingComma();\n peg$savedPos = s3;\n s3 = peg$f20(s4, s5);\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n if (s3 === peg$FAILED) {\n s3 = null;\n }\n s4 = [];\n s5 = peg$parse_();\n while (s5 !== peg$FAILED) {\n s4.push(s5);\n s5 = peg$parse_();\n }\n if (input.charCodeAt(peg$currPos) === 93) {\n s5 = peg$c7;\n peg$currPos++;\n } else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$e10);\n }\n }\n if (s5 !== peg$FAILED) {\n peg$savedPos = s0;\n s0 = peg$f21(s3);\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseValueArrayTail() {\n let s0, s1, s2, s3, s4;\n\n s0 = peg$currPos;\n s1 = [];\n s2 = peg$parse_();\n while (s2 !== peg$FAILED) {\n s1.push(s2);\n s2 = peg$parse_();\n }\n if (input.charCodeAt(peg$currPos) === 44) {\n s2 = peg$c4;\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$e5);\n }\n }\n if (s2 !== peg$FAILED) {\n s3 = [];\n s4 = peg$parse_();\n while (s4 !== peg$FAILED) {\n s3.push(s4);\n s4 = peg$parse_();\n }\n s4 = peg$parseValue();\n if (s4 !== peg$FAILED) {\n peg$savedPos = s0;\n s0 = peg$f22(s4);\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseValueHash() {\n let s0, s1, s2, s3, s4, s5, s6;\n\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 123) {\n s1 = peg$c11;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$e16);\n }\n }\n if (s1 !== peg$FAILED) {\n s2 = [];\n s3 = peg$parse_();\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n s3 = peg$parse_();\n }\n s3 = peg$currPos;\n s4 = peg$parseValueHashItem();\n if (s4 !== peg$FAILED) {\n s5 = [];\n s6 = peg$parseValueHashTail();\n while (s6 !== peg$FAILED) {\n s5.push(s6);\n s6 = peg$parseValueHashTail();\n }\n s6 = peg$parseTrailingComma();\n peg$savedPos = s3;\n s3 = peg$f23(s4, s5);\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n if (s3 === peg$FAILED) {\n s3 = null;\n }\n s4 = [];\n s5 = peg$parse_();\n while (s5 !== peg$FAILED) {\n s4.push(s5);\n s5 = peg$parse_();\n }\n if (input.charCodeAt(peg$currPos) === 125) {\n s5 = peg$c12;\n peg$currPos++;\n } else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$e17);\n }\n }\n if (s5 !== peg$FAILED) {\n peg$savedPos = s0;\n s0 = peg$f24(s3);\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseValueHashTail() {\n let s0, s1, s2, s3, s4;\n\n s0 = peg$currPos;\n s1 = [];\n s2 = peg$parse_();\n while (s2 !== peg$FAILED) {\n s1.push(s2);\n s2 = peg$parse_();\n }\n if (input.charCodeAt(peg$currPos) === 44) {\n s2 = peg$c4;\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$e5);\n }\n }\n if (s2 !== peg$FAILED) {\n s3 = [];\n s4 = peg$parse_();\n while (s4 !== peg$FAILED) {\n s3.push(s4);\n s4 = peg$parse_();\n }\n s4 = peg$parseValueHashItem();\n if (s4 !== peg$FAILED) {\n peg$savedPos = s0;\n s0 = peg$f25(s4);\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseValueHashItem() {\n let s0, s1, s2, s3, s4;\n\n s0 = peg$currPos;\n s1 = peg$parseIdentifier();\n if (s1 === peg$FAILED) {\n s1 = peg$parseValueString();\n }\n if (s1 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 58) {\n s2 = peg$c13;\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$e18);\n }\n }\n if (s2 !== peg$FAILED) {\n s3 = [];\n s4 = peg$parse_();\n while (s4 !== peg$FAILED) {\n s3.push(s4);\n s4 = peg$parse_();\n }\n s4 = peg$parseValue();\n if (s4 !== peg$FAILED) {\n peg$savedPos = s0;\n s0 = peg$f26(s1, s4);\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseValueNumber() {\n let s0, s1, s2, s3, s4, s5, s6;\n\n peg$silentFails++;\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 45) {\n s1 = peg$c14;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$e20);\n }\n }\n if (s1 === peg$FAILED) {\n s1 = null;\n }\n s2 = [];\n s3 = input.charAt(peg$currPos);\n if (peg$r1.test(s3)) {\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$e21);\n }\n }\n if (s3 !== peg$FAILED) {\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n s3 = input.charAt(peg$currPos);\n if (peg$r1.test(s3)) {\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$e21);\n }\n }\n }\n } else {\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n s3 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 46) {\n s4 = peg$c5;\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$e8);\n }\n }\n if (s4 !== peg$FAILED) {\n s5 = [];\n s6 = input.charAt(peg$currPos);\n if (peg$r1.test(s6)) {\n peg$currPos++;\n } else {\n s6 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$e21);\n }\n }\n if (s6 !== peg$FAILED) {\n while (s6 !== peg$FAILED) {\n s5.push(s6);\n s6 = input.charAt(peg$currPos);\n if (peg$r1.test(s6)) {\n peg$currPos++;\n } else {\n s6 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$e21);\n }\n }\n }\n } else {\n s5 = peg$FAILED;\n }\n if (s5 !== peg$FAILED) {\n s4 = [s4, s5];\n s3 = s4;\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n if (s3 === peg$FAILED) {\n s3 = null;\n }\n peg$savedPos = s0;\n s0 = peg$f27();\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n peg$silentFails--;\n if (s0 === peg$FAILED) {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$e19);\n }\n }\n\n return s0;\n }\n\n function peg$parseValueString() {\n let s0, s1, s2, s3;\n\n peg$silentFails++;\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 34) {\n s1 = peg$c15;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$e23);\n }\n }\n if (s1 !== peg$FAILED) {\n s2 = [];\n s3 = peg$parseValueStringChars();\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n s3 = peg$parseValueStringChars();\n }\n if (input.charCodeAt(peg$currPos) === 34) {\n s3 = peg$c15;\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$e23);\n }\n }\n if (s3 !== peg$FAILED) {\n peg$savedPos = s0;\n s0 = peg$f28(s2);\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n peg$silentFails--;\n if (s0 === peg$FAILED) {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$e22);\n }\n }\n\n return s0;\n }\n\n function peg$parseValueStringChars() {\n let s0;\n\n s0 = input.charAt(peg$currPos);\n if (peg$r2.test(s0)) {\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$e24);\n }\n }\n if (s0 === peg$FAILED) {\n s0 = peg$parseValueStringEscapes();\n }\n\n return s0;\n }\n\n function peg$parseValueStringEscapes() {\n let s0, s1, s2, s3;\n\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 92) {\n s1 = peg$c16;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$e25);\n }\n }\n if (s1 !== peg$FAILED) {\n s2 = input.charAt(peg$currPos);\n if (peg$r3.test(s2)) {\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$e26);\n }\n }\n if (s2 === peg$FAILED) {\n s2 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 110) {\n s3 = peg$c17;\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$e27);\n }\n }\n if (s3 !== peg$FAILED) {\n peg$savedPos = s2;\n s3 = peg$f29();\n }\n s2 = s3;\n if (s2 === peg$FAILED) {\n s2 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 114) {\n s3 = peg$c18;\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$e28);\n }\n }\n if (s3 !== peg$FAILED) {\n peg$savedPos = s2;\n s3 = peg$f30();\n }\n s2 = s3;\n if (s2 === peg$FAILED) {\n s2 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 116) {\n s3 = peg$c19;\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$e29);\n }\n }\n if (s3 !== peg$FAILED) {\n peg$savedPos = s2;\n s3 = peg$f31();\n }\n s2 = s3;\n }\n }\n }\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s0 = peg$f32(s2);\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseIdentifier() {\n let s0, s1, s2;\n\n peg$silentFails++;\n s0 = peg$currPos;\n s1 = [];\n s2 = input.charAt(peg$currPos);\n if (peg$r4.test(s2)) {\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$e31);\n }\n }\n if (s2 !== peg$FAILED) {\n while (s2 !== peg$FAILED) {\n s1.push(s2);\n s2 = input.charAt(peg$currPos);\n if (peg$r4.test(s2)) {\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$e31);\n }\n }\n }\n } else {\n s1 = peg$FAILED;\n }\n if (s1 !== peg$FAILED) {\n s0 = input.substring(s0, peg$currPos);\n } else {\n s0 = s1;\n }\n peg$silentFails--;\n if (s0 === peg$FAILED) {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$e30);\n }\n }\n\n return s0;\n }\n\n function peg$parse_() {\n let s0, s1;\n\n peg$silentFails++;\n s0 = input.charAt(peg$currPos);\n if (peg$r5.test(s0)) {\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$e33);\n }\n }\n peg$silentFails--;\n if (s0 === peg$FAILED) {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) {\n peg$fail(peg$e32);\n }\n }\n\n return s0;\n }\n\n const { Variable, Function } = options;\n\n peg$result = peg$startRuleFunction();\n\n const peg$success = peg$result !== peg$FAILED && peg$currPos === input.length;\n function peg$throw() {\n if (peg$result !== peg$FAILED && peg$currPos < input.length) {\n peg$fail(peg$endExpectation());\n }\n\n throw peg$buildStructuredError(\n peg$maxFailExpected,\n peg$maxFailPos < input.length ? peg$getUnicode(peg$maxFailPos) : null,\n peg$maxFailPos < input.length\n ? peg$computeLocation(peg$maxFailPos, peg$maxFailPos + 1)\n : peg$computeLocation(peg$maxFailPos, peg$maxFailPos),\n );\n }\n if (options.peg$library) {\n return /** @type {any} */ ({\n peg$result,\n peg$currPos,\n peg$FAILED,\n peg$maxFailExpected,\n peg$maxFailPos,\n peg$success,\n peg$throw: peg$success ? undefined : peg$throw,\n });\n }\n if (peg$success) {\n return peg$result;\n } else {\n peg$throw();\n }\n}\n\nconst peg$allowedStartRules = ['Top'];\n\nexport { peg$allowedStartRules as StartRules, peg$SyntaxError as SyntaxError, peg$parse as parse };\n","import type { Config, AstType } from '../types';\n\nexport default class Variable implements AstType {\n readonly $$mdtype = 'Variable';\n\n path;\n\n constructor(path: (string | number)[] = []) {\n this.path = path;\n }\n\n resolve({ variables }: Config = {}) {\n return variables instanceof Function\n ? variables(this.path)\n : this.path.reduce((obj = {}, key) => obj[key], variables);\n }\n}\n","import { resolve } from './base';\nimport type { Config, AstType } from '../types';\n\nexport default class Function implements AstType {\n readonly $$mdtype = 'Function';\n\n name;\n parameters;\n\n constructor(name: string, parameters: Record<string, any>) {\n this.name = name;\n this.parameters = parameters;\n }\n\n resolve(config: Config = {}) {\n const fn = config?.functions?.[this.name];\n if (!fn) return null;\n\n const parameters = resolve(this.parameters, config);\n return fn.transform?.(parameters, config);\n }\n}\n","import { parse, SyntaxError } from './grammar/tag';\nimport Variable from './ast/variable';\nimport Function from './ast/function';\n\nimport type { ParserToken } from './types';\n\nenum STATES {\n normal,\n string,\n escape,\n}\n\nexport const OPEN = '{%';\nexport const CLOSE = '%}';\n\nexport const IDENTIFIER_REGEX = /^[a-zA-Z0-9_-]+$/;\n\nexport function isIdentifier(s: any): s is string {\n return typeof s === 'string' && IDENTIFIER_REGEX.test(s);\n}\n\nexport function isPromise(a: any): a is Promise<any> {\n return a && typeof a === 'object' && typeof a.then === 'function';\n}\n\nexport function findTagEnd(content: string, start = 0) {\n let state = STATES.normal;\n for (let pos = start; pos < content.length; pos++) {\n const char = content[pos];\n\n switch (state) {\n case STATES.string:\n switch (char) {\n case '\"':\n state = STATES.normal;\n break;\n case '\\\\':\n state = STATES.escape;\n break;\n }\n break;\n case STATES.escape:\n state = STATES.string;\n break;\n case STATES.normal:\n if (char === '\"') state = STATES.string;\n else if (content.startsWith(CLOSE, pos)) return pos;\n }\n }\n\n return null;\n}\n\nfunction parseTag(content: string, line: number, contentStart: number) {\n try {\n return parse(content, { Variable, Function });\n } catch (error) {\n if (!(error instanceof SyntaxError)) throw error;\n const {\n message,\n location: { start, end },\n } = error as SyntaxError;\n const location = {\n start: { line, character: start.offset + contentStart },\n end: { line: line + 1, character: end.offset + contentStart },\n };\n\n return { type: 'error', meta: { error: { message, location } } };\n }\n}\n\nexport function parseTags(content: string, firstLine = 0): ParserToken[] {\n let line = firstLine + 1;\n const output = [];\n let start = 0;\n\n for (let pos = 0; pos < content.length; pos++) {\n if (content[pos] === '\\n') {\n line++;\n continue;\n }\n\n if (!content.startsWith(OPEN, pos)) continue;\n\n const end = findTagEnd(content, pos);\n\n if (end == null) {\n // If we cannot find the closing tag, we skip over it\n pos = pos + OPEN.length;\n continue;\n }\n\n const text = content.slice(pos, end + CLOSE.length);\n const inner = content.slice(pos + OPEN.length, end);\n const lineStart = content.lastIndexOf('\\n', pos);\n const lineEnd = content.indexOf('\\n', end);\n const lineContent = content.slice(lineStart, lineEnd);\n const tag = parseTag(inner.trim(), line, pos - lineStart);\n\n // Throw away excess whitespace introduced by block-level tags\n const precedingTextEnd = lineContent.trim() === text ? lineStart : pos;\n const precedingText = content.slice(start, precedingTextEnd);\n\n output.push({\n type: 'text',\n start,\n end: pos - 1,\n content: precedingText,\n });\n\n output.push({\n map: [line, line + 1] as [number, number],\n position: {\n start: pos - lineStart,\n end: pos - lineStart + text.length,\n },\n start: pos,\n end: pos + text.length - 1,\n info: text,\n ...tag,\n });\n\n start = end + CLOSE.length;\n pos = start - 1;\n }\n\n output.push({\n type: 'text',\n start,\n end: content.length - 1,\n content: content.slice(start),\n });\n\n return output;\n}\n","import Tag from './tag';\nimport { isPromise } from './utils';\nimport type {\n Config,\n MaybePromise,\n Node,\n NodeType,\n RenderableTreeNodes,\n Transformer,\n} from './types';\n\nexport default {\n findSchema(node: Node, { nodes = {}, tags = {} }: Config = {}) {\n return node.tag ? tags[node.tag] : nodes[node.type as NodeType];\n },\n\n attributes(node: Node, config: Config = {}) {\n const schema = this.findSchema(node, config) ?? {};\n const output: Record<string, any> = {};\n\n const attrs = { ...schema.attributes };\n for (const [key, attr] of Object.entries(attrs)) {\n if (attr.render == false) continue;\n\n const name = typeof attr.render === 'string' ? attr.render : key;\n\n let value = node.attributes[key];\n if (typeof attr.type === 'function') {\n const instance: any = new attr.type();\n if (instance.transform) {\n value = instance.transform(value, config);\n }\n }\n value = value === undefined ? attr.default : value;\n\n if (value === undefined) continue;\n output[name] = value;\n }\n\n if (schema.slots) {\n for (const [key, slot] of Object.entries(schema.slots)) {\n if (slot.render === false) continue;\n const name = typeof slot.render === 'string' ? slot.render : key;\n if (node.slots[key]) output[name] = this.node(node.slots[key], config);\n }\n }\n\n return output;\n },\n\n children(node: Node, config: Config = {}) {\n const children = node.children.flatMap<MaybePromise<RenderableTreeNodes>>((child) =>\n this.node(child, config),\n );\n if (children.some(isPromise)) {\n return Promise.all(children);\n }\n return children;\n },\n\n node(node: Node, config: Config = {}) {\n const schema = this.findSchema(node, config) ?? {};\n if (schema && schema.transform instanceof Function) return schema.transform(node, config);\n\n const children = this.children(node, config);\n if (!schema || !schema.render) return children;\n\n const attributes = this.attributes(node, config);\n\n if (isPromise(attributes) || isPromise(children)) {\n return Promise.all([attributes, children]).then(\n (values) => new Tag(schema.render, ...values),\n );\n }\n\n return new Tag(schema.render, attributes, children);\n },\n} as Transformer;\n","import { resolve } from './base';\nimport transformer from '../transformer';\nimport type {\n AstType,\n AttributeValue,\n Config,\n Location,\n MaybePromise,\n NodeType,\n RenderableTreeNode,\n RenderableTreeNodes,\n Schema,\n ValidationError,\n} from '../types';\n\nexport default class Node implements AstType {\n readonly $$mdtype = 'Node';\n\n attributes: Record<string, any>;\n slots: Record<string, Node>;\n children: Node[];\n errors: ValidationError[] = [];\n lines: number[] = [];\n type: NodeType;\n tag?: string;\n annotations: AttributeValue[];\n\n inline = false;\n location?: Location;\n\n constructor(\n type: NodeType = 'node',\n attributes: Record<string, any> = {},\n children: Node[] = [],\n tag?: string,\n ) {\n this.attributes = attributes;\n this.children = children;\n this.type = type;\n this.tag = tag;\n this.annotations = [];\n this.slots = {};\n }\n\n *walk(): Generator<Node, void, unknown> {\n for (const child of [...Object.values(this.slots), ...this.children]) {\n yield child;\n yield* child.walk();\n }\n }\n\n push(node: Node) {\n this.children.push(node);\n }\n\n resolve(config: Config = {}): Node {\n return Object.assign(new Node(), this, {\n children: this.children.map((child) => child.resolve(config)),\n attributes: resolve(this.attributes, config),\n slots: Object.fromEntries(\n Object.entries(this.slots).map(([name, slot]) => [name, slot.resolve(config)]),\n ),\n });\n }\n\n findSchema(config: Config = {}): Schema | undefined {\n return transformer.findSchema(this, config);\n }\n\n transformAttributes(config: Config = {}) {\n return transformer.attributes(this, config);\n }\n\n transformChildren(config: Config): RenderableTreeNode[] {\n return transformer.children(this, config);\n }\n\n transform(config: Config): MaybePromise<RenderableTreeNodes> {\n return transformer.node(this, config);\n }\n}\n","import Node from './node';\nimport Function from './function';\nimport Variable from './variable';\nimport * as base from './base';\n\nimport type { AstType } from '../types';\n\nconst AstTypes = {\n Function,\n Node,\n Variable,\n};\n\nfunction reviver(_: string, value: AstType): any {\n if (!value) return value;\n const klass = AstTypes[value.$$mdtype] as any;\n return klass ? Object.assign(new klass(), value) : value;\n}\n\nfunction fromJSON(text: string): Node | Node[] {\n return JSON.parse(text, reviver);\n}\n\nexport default {\n ...AstTypes,\n ...base,\n fromJSON,\n};\n","import Ast from './ast';\nimport { OPEN, CLOSE, isIdentifier } from './utils';\nimport type { AttributeValue, Function, Node, Value, Variable } from './types';\n\ntype Options = {\n allowIndentation?: boolean;\n maxTagOpeningWidth?: number;\n orderedListMode?: 'increment' | 'repeat';\n parent?: Node;\n indent?: number;\n};\n\nconst SPACE = ' ';\nconst SEP = ', '; // Value separator\nconst NL = '\\n'; // Newline\nconst OL = '.'; // Ordered list\nconst UL = '-'; // Unordered list\n\nconst MAX_TAG_OPENING_WIDTH = 80;\n\nconst WRAPPING_TYPES = ['strong', 'em', 's'];\n\nconst max = (a: number, b: number) => Math.max(a, b);\nconst increment = (o: Options, n = 2) => ({\n ...o,\n indent: (o.indent || 0) + n,\n});\n\nfunction* formatChildren(a: Node, options: Options) {\n for (const child of a.children) {\n yield* formatValue(child, options);\n }\n}\n\nfunction* formatInline(g: Generator<string>) {\n yield [...g].join('').trim();\n}\n\nfunction* formatTableRow(items: Array<string>) {\n yield `| ${items.join(' | ')} |`;\n}\n\nfunction formatScalar(v: Value): string | undefined {\n if (v === undefined) {\n return undefined;\n }\n if (Ast.isAst(v)) {\n return format(v);\n }\n if (v === null) {\n return 'null';\n }\n if (Array.isArray(v)) {\n return '[' + v.map(formatScalar).join(SEP) + ']';\n }\n if (typeof v === 'object') {\n return (\n '{' +\n Object.entries(v)\n .map(([key, value]) => `${isIdentifier(key) ? key : `\"${key}\"`}: ${formatScalar(value)}`)\n .join(SEP) +\n '}'\n );\n }\n return JSON.stringify(v);\n}\n\nfunction formatAnnotationValue(a: AttributeValue): string | undefined {\n const formattedValue = formatScalar(a.value);\n\n if (formattedValue === undefined) return undefined;\n if (a.name === 'primary') return formattedValue;\n\n return `${a.name}=${formattedValue}`;\n}\n\nfunction* formatAttributes(n: Node) {\n for (const [key, value] of Object.entries(n.attributes)) {\n yield formatAnnotationValue({ type: 'attribute', name: key, value });\n }\n}\n\nfunction* formatAnnotations(n: Node) {\n if (n.annotations.length) {\n yield OPEN + SPACE;\n yield n.annotations.map(formatAnnotationValue).join(SPACE);\n yield SPACE + CLOSE;\n }\n}\n\nfunction* formatVariable(v: Variable) {\n yield '$';\n yield v.path\n .map((p, i) => {\n if (i === 0) return p;\n if (isIdentifier(p)) return '.' + p;\n if (typeof p === 'number') return `[${p}]`;\n return `[\"${p}\"]`;\n })\n .join('');\n}\n\nfunction* formatFunction(f: Function) {\n yield f.name;\n yield '(';\n yield Object.values(f.parameters).map(formatScalar).join(SEP);\n yield ')';\n}\n\nfunction* trimStart(g: Generator<string>) {\n let n;\n do {\n const { value, done } = g.next();\n if (done) return;\n n = value.trimStart();\n } while (!n.length);\n yield n;\n yield* g;\n}\n\nfunction* escapeMarkdownCharacters(s: string, characters: RegExp) {\n yield s\n .replace(characters, '\\\\$&')\n // TODO keep &nbsp; as entity in the AST?\n // Non-breaking space (0xA0)\n .replace(new RegExp('\\xa0', 'g'), '&nbsp;');\n}\n\nfunction* formatNode(n: Node, o: Options = {}) {\n const no = { ...o, parent: n };\n const indent = SPACE.repeat(no.indent || 0);\n\n switch (n.type) {\n case 'document': {\n if (n.attributes.frontmatter && n.attributes.frontmatter.length) {\n yield '---' + NL + n.attributes.frontmatter + NL + '---' + NL + NL;\n }\n yield* trimStart(formatChildren(n, no));\n break;\n }\n case 'heading': {\n yield NL;\n yield indent;\n yield '#'.repeat(n.attributes.level || 1);\n yield SPACE;\n yield* trimStart(formatChildren(n, no));\n yield* formatAnnotations(n);\n yield NL;\n break;\n }\n case 'paragraph': {\n yield NL;\n yield* formatChildren(n, no);\n yield* formatAnnotations(n);\n yield NL;\n break;\n }\n case 'inline': {\n yield indent;\n yield* formatChildren(n, no);\n break;\n }\n case 'image': {\n yield '!';\n yield '[';\n yield* formatValue(n.attributes.alt, no);\n yield ']';\n yield '(';\n yield* typeof n.attributes.src === 'string'\n ? escapeMarkdownCharacters(n.attributes.src, /[()]/g)\n : formatValue(n.attributes.src, no);\n if (n.attributes.title) {\n yield SPACE + `\"${n.attributes.title}\"`;\n }\n yield ')';\n break;\n }\n case 'link': {\n const children = [...formatChildren(n, no)].join('');\n\n // https://spec.commonmark.org/0.31.2/#autolinks\n if (children === n.attributes.href && !n.attributes.title) {\n yield `<${n.attributes.href}>`;\n break;\n }\n\n yield '[';\n yield children;\n yield ']';\n yield '(';\n yield* typeof n.attributes.href === 'string'\n ? escapeMarkdownCharacters(n.attributes.href, /[()]/g)\n : formatValue(n.attributes.href, no);\n if (n.attributes.title) {\n yield SPACE + `\"${n.attributes.title}\"`;\n }\n yield ')';\n break;\n }\n case 'text': {\n const { content } = n.attributes;\n\n if (Ast.isAst(content)) {\n yield OPEN + SPACE;\n yield* formatValue(content, no);\n yield SPACE + CLOSE;\n } else {\n if (o.parent && WRAPPING_TYPES.includes(o.parent.type)) {\n // Escape **strong**, _em_, and ~~s~~\n yield* escapeMarkdownCharacters(content, /[*_~]/g);\n } else {\n // Escape > blockquote, * list item, and heading\n yield* escapeMarkdownCharacters(content, /^\\*|#+\\s|^>/);\n }\n }\n\n break;\n }\n case 'blockquote': {\n const prefix = '>' + SPACE;\n yield n.children\n .map((child) => format(child, no).trimStart())\n .map((d) => NL + indent + prefix + d)\n .join(indent + prefix);\n break;\n }\n case 'hr': {\n yield NL;\n yield indent;\n yield '---';\n yield NL;\n break;\n }\n case 'fence': {\n yield NL;\n yield indent;\n\n const innerFence = n.attributes.content.match(/`{3,}/g) || [];\n\n const innerFenceLength = innerFence.map((s: string) => s.length).reduce(max, 0);\n\n const boundary = '`'.repeat(innerFenceLength ? innerFenceLength + 1 : 3);\n const needsNlBeforeEndBoundary = !n.attributes.content.endsWith(NL);\n\n yield boundary;\n if (n.attributes.language) yield n.attributes.language;\n if (n.annotations.length) yield SPACE;\n yield* formatAnnotations(n);\n yield NL;\n yield indent;\n yield n.attributes.content.split(NL).join(NL + indent); // yield* formatChildren(n, no);\n if (needsNlBeforeEndBoundary) {\n yield NL;\n }\n yield boundary;\n yield NL;\n break;\n }\n case 'tag': {\n if (!n.inline) {\n yield NL;\n yield indent;\n }\n const open = OPEN + SPACE;\n const attributes = [...formatAttributes(n)].filter((v) => v !== undefined);\n const tag = [open + n.tag, ...attributes];\n const inlineTag = tag.join(SPACE);\n\n const isLongTagOpening =\n inlineTag.length + open.length * 2 > (o.maxTagOpeningWidth || MAX_TAG_OPENING_WIDTH);\n\n // {% tag attributes={...} %}\n yield (\n (!n.inline && isLongTagOpening\n ? tag.join(NL + SPACE.repeat(open.length) + indent)\n : inlineTag) +\n SPACE +\n (n.children.length ? '' : '/') +\n CLOSE\n );\n\n if (n.children.length) {\n yield* formatChildren(n, no.allowIndentation ? increment(no) : no);\n if (!n.inline) {\n yield indent;\n }\n // {% /tag %}\n yield OPEN + SPACE + '/' + n.tag + SPACE + CLOSE;\n }\n if (!n.inline) {\n yield NL;\n }\n break;\n }\n case 'list': {\n const isLoose = n.children.some((n) => n.children.some((c) => c.type === 'paragraph'));\n\n for (let i = 0; i < n.children.length; i++) {\n const prefix = (() => {\n if (!n.attributes.ordered) return n.attributes.marker ?? UL;\n\n // Must be an ordered list now\n let number = '1';\n const startNumber = n.attributes.start ?? 1;\n if (i === 0) number = startNumber.toString();\n\n if (o.orderedListMode === 'increment') {\n number = (parseInt(startNumber) + i).toString();\n }\n\n return `${number}${n.attributes.marker ?? OL}`;\n })();\n let d = format(n.children[i], increment(no, prefix.length + 1));\n\n if (!isLoose || i === n.children.length - 1) {\n d = d.trim();\n }\n\n yield NL + indent + prefix + ' ' + d;\n }\n yield NL;\n break;\n }\n case 'item': {\n for (let i = 0; i < n.children.length; i++) {\n yield* formatValue(n.children[i], no);\n if (i === 0) yield* formatAnnotations(n);\n }\n break;\n }\n case 'strong': {\n yield n.attributes.marker ?? '**';\n yield* formatInline(formatChildren(n, no));\n yield n.attributes.marker ?? '**';\n break;\n }\n case 'em': {\n yield n.attributes.marker ?? '*';\n yield* formatInline(formatChildren(n, no));\n yield n.attributes.marker ?? '*';\n break;\n }\n case 'code': {\n yield '`';\n yield* formatInline(formatValue(n.attributes.content, no));\n yield '`';\n break;\n }\n case 's': {\n yield '~~';\n yield* formatInline(formatChildren(n, no));\n yield '~~';\n break;\n }\n case 'hardbreak': {\n yield '\\\\' + NL;\n yield indent;\n break;\n }\n case 'softbreak': {\n yield NL;\n yield indent;\n break;\n }\n case 'table': {\n const table = [...formatChildren(n, increment(no))] as any as any[];\n if (o.parent && o.parent.type === 'tag' && o.parent.tag === 'table') {\n for (let i = 0; i < table.length; i++) {\n const row = table[i];\n // format tags like \"if\" in the middle of a table list\n if (typeof row === 'string') {\n if (row.trim().length) {\n yield NL;\n yield row;\n }\n } else {\n if (i !== 0) {\n yield NL;\n yield indent + '---';\n }\n for (const d of row) {\n yield NL + indent + UL + ' ' + d;\n }\n }\n }\n yield NL;\n } else {\n const widths: number[] = [];\n\n for (const row of table) {\n for (let i = 0; i < row.length; i++) {\n widths[i] = widths[i] ? Math.max(widths[i], row[i].length) : row[i].length;\n }\n }\n\n const [head, ...rows] = table as string[][];\n\n yield NL;\n yield* formatTableRow(head.map((cell, i) => cell + SPACE.repeat(widths[i] - cell.length)));\n yield NL;\n yield* formatTableRow(head.map((cell, i) => '-'.repeat(widths[i])));\n yield NL;\n for (const row of rows) {\n yield* formatTableRow(row.map((cell, i) => cell + SPACE.repeat(widths[i] - cell.length)));\n yield NL;\n }\n }\n break;\n }\n case 'thead': {\n const [head] = [...formatChildren(n, no)];\n yield head || [];\n break;\n }\n case 'tr': {\n yield [...formatChildren(n, no)];\n break;\n }\n case 'td':\n case 'th': {\n yield [...formatChildren(n, no), ...formatAnnotations(n)].join('').trim();\n break;\n }\n case 'tbody': {\n yield* formatChildren(n, no);\n break;\n }\n case 'comment': {\n yield '<!-- ' + n.attributes.content + ' -->\\n';\n break;\n }\n case 'error':\n case 'node':\n break;\n }\n}\n\nfunction* formatValue(v: Value | Value[], o: Options = {}): Generator<string, void, unknown> {\n switch (typeof v) {\n case 'undefined':\n break;\n case 'boolean':\n case 'number':\n case 'string': {\n yield v.toString();\n break;\n }\n case 'object': {\n if (v === null) break;\n if (Array.isArray(v)) {\n for (const n of v) yield* formatValue(n, o);\n break;\n }\n switch (v.$$mdtype) {\n case 'Function': {\n yield* formatFunction(v as Function);\n break;\n }\n case 'Node':\n yield* formatNode(v as Node, o);\n break;\n case 'Variable': {\n yield* formatVariable(v as Variable);\n break;\n }\n default:\n throw new Error(`Unimplemented: \"${v.$$mdtype}\"`);\n }\n break;\n }\n }\n}\n\nexport default function format(v: Value | Value[], options?: Options): string {\n let doc = '';\n for (const s of formatValue(v, options)) doc += s;\n return doc.trimStart();\n}\n","import { Config, CustomAttributeTypeInterface, ValidationError } from '../types';\n\n/**\n * Conditional attribute type for Markdoc {% if /%} and {% else /%} tags.\n *\n * Acceptable values are:\n * - `boolean` (true or false)\n * - `null` or `undefined` (in case of using variable that's not defined)\n * - `object`\n */\nexport class ConditionalAttributeType implements CustomAttributeTypeInterface {\n validate(value: any, _config: Config, key: string): ValidationError[] {\n if (\n typeof value === 'boolean' ||\n value === null ||\n value === undefined ||\n typeof value === 'object'\n ) {\n return [];\n }\n\n return [\n {\n id: 'attribute-type-invalid',\n level: 'error',\n message: `Attribute '${key}' must be type 'boolean | object' (null or undefined are also allowed)`,\n },\n ];\n }\n}\n","import { isPromise } from '../utils';\n\nimport {\n MaybePromise,\n Node,\n RenderableTreeNode,\n RenderableTreeNodes,\n Schema,\n Value,\n} from '../types';\nimport { ConditionalAttributeType } from '../schema-types/conditional';\n\ntype Condition = { condition: Value; children: Node[] };\n\nexport function truthy(value: any) {\n return value !== false && value !== undefined && value !== null;\n}\n\nfunction renderConditions(node: Node) {\n const conditions: Condition[] = [{ condition: node.attributes.primary, children: [] }];\n for (const child of node.children) {\n if (child.type === 'tag' && child.tag === 'else')\n conditions.push({\n condition: 'primary' in child.attributes ? child.attributes.primary : true,\n children: [],\n });\n else conditions[conditions.length - 1].children.push(child);\n }\n\n return conditions;\n}\n\nexport const tagIf: Schema = {\n attributes: {\n primary: { type: ConditionalAttributeType, render: false },\n },\n\n transform(node, config) {\n const conditions = renderConditions(node);\n for (const { condition, children } of conditions)\n if (truthy(condition)) {\n const nodes = children.flatMap<MaybePromise<RenderableTreeNodes>>((child) =>\n child.transform(config),\n );\n if (nodes.some(isPromise)) {\n return Promise.all(nodes).then((nodes) => nodes.flat());\n }\n return nodes as RenderableTreeNode[];\n }\n return [];\n },\n};\n\nexport const tagElse: Schema = {\n selfClosing: true,\n attributes: {\n primary: { type: ConditionalAttributeType, render: false },\n },\n};\n","import type { ConfigFunction } from '../types';\nimport { truthy } from '../tags/conditional';\n\nconst and: ConfigFunction = {\n transform(parameters) {\n return Object.values(parameters).every((x) => truthy(x));\n },\n};\n\nconst or: ConfigFunction = {\n transform(parameters) {\n return Object.values(parameters).find((x) => truthy(x)) !== undefined;\n },\n};\n\nconst not: ConfigFunction = {\n parameters: {\n 0: { required: true },\n },\n\n transform(parameters) {\n return !truthy(parameters[0]);\n },\n};\n\nconst equals: ConfigFunction = {\n transform(parameters) {\n const values = Object.values(parameters);\n return values.every((v) => v === values[0]);\n },\n};\n\nconst debug: ConfigFunction = {\n transform(parameters) {\n return JSON.stringify(parameters[0], null, 2);\n },\n};\n\nconst defaultFn: ConfigFunction = {\n transform(parameters) {\n return parameters[0] === undefined ? parameters[1] : parameters[0];\n },\n};\n\nexport default { and, or, not, equals, default: defaultFn, debug };\n","import Ast from '../ast/index';\n\nimport type { Node, NodeType } from '../types';\n\nfunction convertToRow(node: Node, cellType: NodeType = 'td') {\n node.type = 'tr';\n node.attributes = {};\n\n for (const cell of node.children) cell.type = cellType;\n\n return node;\n}\n\nexport default function transform(document: Node) {\n for (const node of document.walk()) {\n if (node.type !== 'tag' || node.tag !== 'table') continue;\n\n const [first, ...rest] = node.children;\n if (!first || first.type === 'table') continue;\n\n const table = new Ast.Node('table', node.attributes, [\n new Ast.Node('thead'),\n new Ast.Node('tbody'),\n ]);\n\n const [thead, tbody] = table.children;\n\n if (first.type === 'list') thead.push(convertToRow(first, 'th'));\n\n for (const row of rest) {\n // Convert lists to rows with special-case support for conditionals\n // When a conditional is encountered, convert all of its top-level lists to rows\n if (row.type === 'list') convertToRow(row);\n else if (row.type === 'tag' && row.tag === 'if') {\n const children = [];\n\n for (const child of row.children) {\n // Replace children and skip HRs in order to support conditionals with multiple rows\n if (child.type === 'hr') continue;\n if (child.type === 'list') convertToRow(child);\n children.push(child);\n }\n\n row.children = children;\n } else continue;\n tbody.push(row);\n }\n\n node.children = [table];\n }\n}\n","import table from './table';\nexport default [table];\n","import Node from './ast/node';\nimport transforms from './transforms/index';\nimport { OPEN } from './utils';\n\nimport type { AttributeValue, NodeType, ParserArgs, ParserToken } from './types';\n\nconst mappings: Record<string, string> = {\n ordered_list: 'list',\n bullet_list: 'list',\n code_inline: 'code',\n list_item: 'item',\n variable: 'text',\n};\n\nfunction annotate(node: Node, attributes: AttributeValue[]) {\n for (const attribute of attributes) {\n node.annotations.push(attribute);\n\n const { name, value, type } = attribute;\n if (type === 'attribute') {\n if (node.attributes[name] !== undefined)\n node.errors.push({\n id: 'duplicate-attribute',\n level: 'warning',\n message: `Attribute '${name}' already set`,\n });\n node.attributes[name] = value;\n }\n }\n}\n\nfunction handleAttrs(token: ParserToken, type: string) {\n switch (type) {\n case 'heading':\n return { level: Number((token.tag || '').replace('h', '')) };\n case 'list': {\n const attrs = token.attrs ? Object.fromEntries(token.attrs) : undefined;\n const ordered = token.type.startsWith('ordered');\n return ordered && attrs?.start\n ? { ordered: true, start: attrs.start, marker: token.markup || '' }\n : { ordered, marker: token.markup || '' };\n }\n case 'link': {\n const attrs = Object.fromEntries(token.attrs || []);\n return attrs.title ? { href: attrs.href, title: attrs.title } : { href: attrs.href };\n }\n case 'image': {\n const attrs = Object.fromEntries(token.attrs || []);\n return attrs.title\n ? { alt: token.content || '', src: attrs.src, title: attrs.title }\n : { alt: token.content || '', src: attrs.src };\n }\n case 'em':\n case 'strong':\n return { marker: token.markup };\n case 'text':\n case 'code':\n case 'comment':\n return { content: (token.meta || {}).variable || token.content || '' };\n case 'fence': {\n const [language] = (token.info || '').split(' ', 1);\n return language === '' || language === OPEN\n ? { content: token.content || '' }\n : { content: token.content || '', language };\n }\n case 'td':\n case 'th': {\n if (token.attrs) {\n const attrs = Object.fromEntries(token.attrs);\n\n let align;\n if (attrs.style) {\n if (attrs.style.includes('left')) {\n align = 'left';\n } else if (attrs.style.includes('center')) {\n align = 'center';\n } else if (attrs.style.includes('right')) {\n align = 'right';\n }\n }\n\n if (align) {\n return { align };\n }\n }\n return {};\n }\n default:\n return {};\n }\n}\n\nfunction handleToken(\n token: ParserToken,\n nodes: Node[],\n file?: string,\n handleSlots?: boolean,\n addLocation?: boolean,\n inlineParent?: Node,\n) {\n if (token.type === 'frontmatter') {\n nodes[0].attributes.frontmatter = token.content;\n return;\n }\n\n if (token.hidden || (token.type === 'text' && (token.content || '') === '')) return;\n\n const errors = token.errors || [];\n const parent = nodes[nodes.length - 1];\n const { tag, attributes, error } = token.meta || {};\n\n if (token.type === 'annotation') {\n if (inlineParent) return annotate(inlineParent, attributes);\n\n return parent.errors.push({\n id: 'no-inline-annotations',\n level: 'error',\n message: `Can't apply inline annotations to '${parent.type}'`,\n });\n }\n\n let typeName = token.type.replace(/_(open|close)$/, '');\n if (mappings[typeName]) typeName = mappings[typeName];\n\n if (typeName === 'error') {\n const { message, location } = error;\n errors.push({ id: 'parse-error', level: 'critical', message, location });\n }\n\n if ((token.nesting || 0) < 0) {\n if (parent.type === typeName && parent.tag === tag) {\n if (parent.lines && token.map) parent.lines.push(...token.map);\n return nodes.pop();\n }\n\n errors.push({\n id: 'missing-opening',\n level: 'critical',\n message: `Node '${typeName}' is missing opening`,\n });\n }\n\n const attrs = handleAttrs(token, typeName);\n const node = new Node(typeName as NodeType, attrs, undefined, tag || undefined);\n const { position = {} } = token;\n\n node.errors = errors;\n if (addLocation !== false) {\n node.lines = token.map || parent.lines || [];\n node.location = {\n file,\n start: {\n line: node.lines[0],\n character: position.start,\n },\n end: {\n line: node.lines[1],\n character: position.end,\n },\n };\n }\n\n if (inlineParent) node.inline = true;\n\n if (attributes && ['tag', 'fence', 'image'].includes(typeName)) annotate(node, attributes);\n\n if (handleSlots && tag === 'slot' && typeof node.attributes.primary === 'string')\n parent.slots[node.attributes.primary] = node;\n else parent.push(node);\n\n if ((token.nesting || 0) > 0) nodes.push(node);\n\n if (!Array.isArray(token.children)) return;\n\n if (node.type === 'inline') inlineParent = parent;\n\n nodes.push(node);\n\n const isLeafNode = typeName === 'image';\n if (!isLeafNode) {\n for (const child of token.children)\n handleToken(child, nodes, file, handleSlots, addLocation, inlineParent);\n }\n\n nodes.pop();\n}\n\nexport default function parser(tokens: ParserToken[], args?: string | ParserArgs) {\n const doc = new Node('document');\n const nodes = [doc];\n\n if (typeof args === 'string') args = { file: args };\n\n for (const token of tokens) handleToken(token, nodes, args?.file, args?.slots, args?.location);\n\n if (nodes.length > 1)\n for (const node of nodes.slice(1))\n node.errors.push({\n id: 'missing-closing',\n level: 'critical',\n message: `Node '${node.tag || node.type}' is missing closing`,\n });\n\n for (const transform of transforms) transform(doc);\n\n return doc;\n}\n","import type { Schema } from './types';\nimport Tag from './tag';\n\nexport const document: Schema = {\n render: 'article',\n children: [\n 'heading',\n 'paragraph',\n 'image',\n 'table',\n 'tag',\n 'fence',\n 'blockquote',\n 'comment',\n 'list',\n 'hr',\n ],\n attributes: {\n frontmatter: { render: false },\n },\n};\n\nexport const heading: Schema = {\n children: ['inline'],\n attributes: {\n level: { type: Number, render: false, required: true },\n },\n transform(node, config) {\n return new Tag(\n `h${node.attributes['level']}`,\n node.transformAttributes(config),\n node.transformChildren(config),\n );\n },\n};\n\nexport const paragraph: Schema = {\n render: 'p',\n children: ['inline'],\n};\n\nexport const image: Schema = {\n render: 'img',\n attributes: {\n src: { type: String, required: true },\n alt: { type: String },\n title: { type: String },\n // width/height attributes will need to be to be implemented as an extension to markdown-it\n },\n};\n\nexport const fence: Schema = {\n render: 'pre',\n attributes: {\n content: { type: String, render: false, required: true },\n language: { type: String, render: 'data-language' },\n process: { type: Boolean, render: false, default: true },\n },\n transform(node, config) {\n const attributes = node.transformAttributes(config);\n const children = node.children.length\n ? node.transformChildren(config)\n : [node.attributes.content];\n\n return new Tag('pre', attributes, children);\n },\n};\n\nexport const blockquote: Schema = {\n render: 'blockquote',\n children: ['heading', 'paragraph', 'image', 'table', 'tag', 'fence', 'blockquote', 'list', 'hr'],\n};\n\nexport const item: Schema = {\n render: 'li',\n children: [\n 'inline',\n 'heading',\n 'paragraph',\n 'image',\n 'table',\n 'tag',\n 'fence',\n 'blockquote',\n 'list',\n 'hr',\n ],\n};\n\nexport const list: Schema = {\n children: ['item'],\n attributes: {\n ordered: { type: Boolean, render: false, required: true },\n start: { type: Number },\n marker: { type: String, render: false },\n },\n transform(node, config) {\n return new Tag(\n node.attributes.ordered ? 'ol' : 'ul',\n node.transformAttributes(config),\n node.transformChildren(config),\n );\n },\n};\n\nexport const hr: Schema = {\n render: 'hr',\n};\n\nexport const table: Schema = {\n render: 'table',\n};\n\nexport const td: Schema = {\n render: 'td',\n children: [\n 'inline',\n 'heading',\n 'paragraph',\n 'image',\n 'table',\n 'tag',\n 'fence',\n 'blockquote',\n 'list',\n 'hr',\n ],\n attributes: {\n align: { type: String },\n colspan: { type: Number, render: 'colSpan' },\n rowspan: { type: Number, render: 'rowSpan' },\n },\n};\n\nexport const th: Schema = {\n render: 'th',\n attributes: {\n width: { type: String },\n align: { type: String },\n colspan: { type: Number, render: 'colSpan' },\n rowspan: { type: Number, render: 'rowSpan' },\n },\n};\n\nexport const tr: Schema = {\n render: 'tr',\n children: ['th', 'td'],\n};\n\nexport const tbody: Schema = {\n render: 'tbody',\n children: ['tr', 'tag'],\n};\n\nexport const thead: Schema = {\n render: 'thead',\n children: ['tr'],\n};\n\nexport const strong: Schema = {\n render: 'strong',\n children: ['em', 's', 'link', 'code', 'text', 'tag'],\n attributes: {\n marker: { type: String, render: false },\n },\n};\n\nexport const em: Schema = {\n render: 'em',\n children: ['strong', 's', 'link', 'code', 'text', 'tag'],\n attributes: {\n marker: { type: String, render: false },\n },\n};\n\nexport const s: Schema = {\n render: 's',\n children: ['strong', 'em', 'link', 'code', 'text', 'tag'],\n};\n\nexport const inline: Schema = {\n children: [\n 'strong',\n 'em',\n 's',\n 'code',\n 'text',\n 'tag',\n 'link',\n 'image',\n 'hardbreak',\n 'softbreak',\n 'comment',\n ],\n};\n\nexport const link: Schema = {\n render: 'a',\n children: ['strong', 'em', 's', 'code', 'text', 'tag'],\n attributes: {\n href: { type: String, required: true },\n title: { type: String },\n },\n};\n\nexport const code: Schema = {\n render: 'code',\n attributes: {\n content: { type: String, render: false, required: true },\n },\n transform(node, config) {\n const attributes = node.transformAttributes(config);\n return new Tag('code', attributes, [node.attributes.content]);\n },\n};\n\nexport const text: Schema = {\n attributes: {\n content: { type: String, required: true },\n },\n transform(node) {\n return node.attributes.content;\n },\n};\n\nexport const hardbreak: Schema = {\n render: 'br',\n};\n\nexport const softbreak: Schema = {\n transform() {\n return ' ';\n },\n};\n\nexport const comment = {\n attributes: {\n content: { type: String, required: true },\n },\n};\n\nexport const error = {};\nexport const node = {};\n","import MarkdownIt from 'markdown-it';\nimport Tag from '../tag';\nimport type { RenderableTreeNodes } from '../types';\nconst { escapeHtml } = MarkdownIt().utils;\n\n// HTML elements that do not have a matching close tag\n// Defined in the HTML standard: https://html.spec.whatwg.org/#void-elements\nconst voidElements = new Set([\n 'area',\n 'base',\n 'br',\n 'col',\n 'embed',\n 'hr',\n 'img',\n 'input',\n 'link',\n 'meta',\n 'param',\n 'source',\n 'track',\n 'wbr',\n]);\n\nexport default function render(node: RenderableTreeNodes): string {\n if (typeof node === 'string' || typeof node === 'number') return escapeHtml(String(node));\n\n if (Array.isArray(node)) return node.map(render).join('');\n\n if (node === null || typeof node !== 'object' || !Tag.isTag(node)) return '';\n\n const { name, attributes, children = [] } = node;\n\n if (!name) return render(children);\n\n let output = `<${name}`;\n for (const [k, v] of Object.entries(attributes ?? {}))\n output += ` ${k.toLowerCase()}=\"${escapeHtml(String(v))}\"`;\n output += '>';\n\n if (voidElements.has(name)) return output;\n\n if (children.length) output += render(children);\n output += `</${name}>`;\n\n return output;\n}\n","import html from './html';\n\nexport default { html };\n","import type { Node, Config, Schema, ValidationError } from '../types';\n\nclass PartialFile {\n validate(file: any, config: Config): ValidationError[] {\n const { partials = {} } = config;\n const partial = partials[file];\n\n if (!partial)\n return [\n {\n id: 'attribute-value-invalid',\n level: 'error',\n message: `Partial \\`${file}\\` not found. The 'file' attribute must be set in \\`config.partials\\``,\n },\n ];\n\n return [];\n }\n}\n\nexport const partial: Schema = {\n inline: false,\n selfClosing: true,\n attributes: {\n file: { type: PartialFile, render: false, required: true },\n variables: { type: Object, render: false },\n },\n transform(node: Node, config: Config) {\n const { partials = {} } = config;\n const { file, variables } = node.attributes;\n const partial: Node | Node[] = partials[file];\n\n if (!partial) return null;\n\n const scopedConfig = {\n ...config,\n variables: {\n ...config.variables,\n ...variables,\n ['$$partial:filename']: file,\n },\n };\n\n const transformChildren = (part: Node) =>\n part.resolve(scopedConfig).transformChildren(scopedConfig);\n\n return Array.isArray(partial) ? partial.flatMap(transformChildren) : transformChildren(partial);\n },\n};\n","import type { Schema } from '../types';\n\nexport const table: Schema = {\n children: ['table'],\n inline: false,\n};\n","import type { Schema } from '../types';\n\nexport const slot: Schema = {\n attributes: {\n primary: { type: String, required: true },\n },\n};\n","import { tagIf, tagElse } from './conditional';\nimport { partial } from './partial';\nimport { table } from './table';\nimport { slot } from './slot';\n\nexport default {\n else: tagElse,\n if: tagIf,\n partial,\n slot,\n table,\n};\n","import { findTagEnd, parseTags } from '../../utils';\nimport { parse, SyntaxError } from '../../grammar/tag';\nimport Variable from '../../ast/variable';\nimport Function from '../../ast/function';\n\nimport type { AttributeValue, ParserToken } from '../../types';\nimport type MarkdownIt from 'markdown-it/lib/index.mjs';\nimport type StateCore from 'markdown-it/lib/rules_core/state_core.mjs';\nimport type StateInline from 'markdown-it/lib/rules_inline/state_inline.mjs';\nimport type StateBlock from 'markdown-it/lib/rules_block/state_block.mjs';\n\nimport { OPEN, CLOSE } from '../../utils';\n\nfunction createToken(\n state: StateBlock | StateInline,\n content: string,\n contentStart?: number,\n): ParserToken {\n try {\n const { type, meta, nesting = 0 } = parse(content, { Variable, Function });\n const token = state.push(type, '', nesting) as ParserToken;\n token.info = content;\n token.meta = meta;\n\n if ('delimiters' in state && !state.delimiters) {\n state.delimiters = [];\n }\n\n return token;\n } catch (error) {\n if (!(error instanceof SyntaxError)) throw error;\n\n const {\n message,\n location: { start, end },\n } = error as SyntaxError;\n const location = contentStart\n ? {\n start: { offset: start.offset + contentStart },\n end: { offset: end.offset + contentStart },\n }\n : null;\n\n const token = state.push('error', '', 0) as ParserToken;\n token.meta = { error: { message, location } };\n return token;\n }\n}\n\nfunction block(state: StateBlock, startLine: number, endLine: number, silent: boolean): boolean {\n const start = state.bMarks[startLine] + state.tShift[startLine];\n const finish = state.eMarks[startLine];\n\n if (!state.src.startsWith(OPEN, start)) return false;\n\n const tagEnd = findTagEnd(state.src, start);\n const lastPossible = state.src.slice(0, finish).trim().length;\n\n if (!tagEnd || tagEnd < lastPossible - CLOSE.length) return false;\n\n const contentStart = start + OPEN.length;\n const content = state.src.slice(contentStart, tagEnd).trim();\n const lines = state.src.slice(start, tagEnd + CLOSE.length).split('\\n').length;\n\n if (content[0] === '$') return false;\n\n if (silent) return true;\n\n const token = createToken(state, content, contentStart);\n token.map = [startLine, startLine + lines];\n state.line += lines;\n return true;\n}\n\nfunction inline(state: StateInline, silent: boolean): boolean {\n if (!state.src.startsWith(OPEN, state.pos)) return false;\n\n const tagEnd = findTagEnd(state.src, state.pos);\n if (!tagEnd) return false;\n\n const content = state.src.slice(state.pos + OPEN.length, tagEnd);\n if (!silent) createToken(state, content.trim());\n\n state.pos = tagEnd + CLOSE.length;\n return true;\n}\n\nfunction core(state: StateCore) {\n let token: ParserToken;\n for (token of state.tokens) {\n if (token.type !== 'fence') continue;\n const info = token.info || '';\n\n if (info.includes(OPEN)) {\n const start = info.indexOf(OPEN);\n const end = findTagEnd(info, start);\n if (end == null) continue;\n const content = info.slice(start + OPEN.length, end);\n\n try {\n const { meta } = parse(content.trim(), { Variable, Function });\n token.meta = meta;\n } catch (error) {\n if (!(error instanceof SyntaxError)) throw error;\n if (!token.errors) token.errors = [];\n token.errors.push({\n id: 'fence-tag-error',\n level: 'error',\n message: `Syntax error in fence tag: ${(error as SyntaxError).message}`,\n });\n }\n }\n\n if (\n token?.meta?.attributes?.find(\n (attr: AttributeValue) => attr.name === 'process' && !attr.value,\n )\n )\n continue;\n\n token.children = parseTags(token.content || '', token.map?.[0] || 0);\n }\n}\n\nexport default function plugin(md: MarkdownIt /* options */) {\n md.block.ruler.before('paragraph', 'annotations', block, {\n alt: ['paragraph', 'blockquote'],\n });\n md.inline.ruler.push('containers', inline);\n md.core.ruler.push('annotations', core);\n}\n","import type MarkdownIt from 'markdown-it/lib/index.mjs';\nimport type StateBlock from 'markdown-it/lib/rules_block/state_block.mjs';\n\nconst fence = '---';\n\nfunction getLine(state: StateBlock, n: number) {\n return state.src.slice(state.bMarks[n], state.eMarks[n]).trim();\n}\n\nfunction findClose(state: StateBlock, endLine: number) {\n for (let line = 1; line < endLine; line++) if (getLine(state, line) === fence) return line;\n}\n\nfunction block(state: StateBlock, startLine: number, endLine: number, silent: boolean): boolean {\n if (startLine != 0 || getLine(state, 0) != fence) return false;\n\n const close = findClose(state, endLine);\n\n if (!close) return false;\n if (silent) return true;\n\n const token = state.push('frontmatter', '', 0);\n token.content = state.src.slice(state.eMarks[0], state.bMarks[close]).trim();\n token.map = [0, close];\n token.hidden = true;\n\n state.line = close + 1;\n return true;\n}\n\nexport default function plugin(md: MarkdownIt /* options */) {\n md.block.ruler.before('hr', 'frontmatter', block);\n}\n","import type MarkdownIt from 'markdown-it/lib/index.mjs';\nimport type StateBlock from 'markdown-it/lib/rules_block/state_block.mjs';\nimport type StateInline from 'markdown-it/lib/rules_inline/state_inline.mjs';\n\nconst OPEN = '<!--';\nconst CLOSE = '-->';\n\nfunction block(state: StateBlock, startLine: number, endLine: number, silent: boolean): boolean {\n const start = state.bMarks[startLine] + state.tShift[startLine];\n if (!state.src.startsWith(OPEN, start)) return false;\n\n const close = state.src.indexOf(CLOSE, start);\n\n if (close === -1) return false;\n if (silent) return true;\n\n const content = state.src.slice(start + OPEN.length, close);\n const lines = content.split('\\n').length;\n const token = state.push('comment', '', 0);\n token.content = content.trim();\n token.map = [startLine, startLine + lines];\n state.line += lines;\n\n return true;\n}\n\nfunction inline(state: StateInline, silent: boolean): boolean {\n if (!state.src.startsWith(OPEN, state.pos)) return false;\n\n const close = state.src.indexOf(CLOSE, state.pos);\n\n if (close === -1) return false;\n if (silent) return true;\n\n const content = state.src.slice(state.pos + OPEN.length, close);\n const token = state.push('comment', '', 0);\n token.content = content.trim();\n state.pos = close + CLOSE.length;\n\n return true;\n}\n\nexport default function plugin(md: MarkdownIt) {\n md.block.ruler.before('table', 'comment', block, { alt: ['paragraph'] });\n md.inline.ruler.push('comment', inline);\n}\n","import MarkdownIt, { type Options as MarkdownItOptions } from 'markdown-it/lib/index.mjs';\nimport annotations from './plugins/annotations';\nimport frontmatter from './plugins/frontmatter';\nimport comments from './plugins/comments';\nimport type Token from 'markdown-it/lib/token.mjs';\n\nexport default class Tokenizer {\n private parser: MarkdownIt;\n\n constructor(\n config: MarkdownItOptions & {\n allowIndentation?: boolean;\n allowComments?: boolean;\n } = {},\n ) {\n this.parser = new MarkdownIt(config);\n this.parser.use(annotations, 'annotations', {});\n this.parser.use(frontmatter, 'frontmatter', {});\n this.parser.disable([\n 'lheading',\n // Disable indented `code_block` support https://spec.commonmark.org/0.30/#indented-code-block\n 'code',\n ]);\n\n if (config.allowComments) this.parser.use(comments, 'comments', {});\n }\n\n tokenize(content: string): Token[] {\n return this.parser.parse(content.toString(), {});\n }\n}\n","import Ast from './ast/index';\nimport { isPromise } from './utils';\n\nimport type { Node, Function, Config, SchemaAttribute, ValidationError, Value } from './types';\n\nconst TypeMappings = {\n String: String,\n Number: Number,\n Array: Array,\n Object: Object,\n Boolean: Boolean,\n} as const;\n\ntype TypeParam = NonNullable<SchemaAttribute['type']>;\n\nexport function validateType(\n type: TypeParam,\n value: Value,\n config: Config,\n key: string,\n): boolean | ValidationError[] {\n if (!type) return true;\n\n if (Ast.isFunction(value) && config.validation?.validateFunctions) {\n const schema = config.functions?.[value.name];\n return !schema?.returns\n ? true\n : Array.isArray(schema.returns)\n ? schema.returns.find((t) => t === type) !== undefined\n : schema.returns === type;\n }\n\n if (Ast.isAst(value)) return true;\n\n if (Array.isArray(type)) return type.some((t) => validateType(t, value, config, key));\n\n if (typeof type === 'string') type = TypeMappings[type];\n\n if (typeof type === 'function') {\n const instance: any = new type();\n if (instance.validate) {\n return instance.validate(value, config, key);\n }\n }\n\n return value != null && value.constructor === type;\n}\n\nfunction typeToString(type: TypeParam): string {\n if (typeof type === 'string') return type;\n\n if (Array.isArray(type)) return type.map(typeToString).join(' | ');\n\n return type.name;\n}\n\nfunction validateFunction(fn: Function, config: Config): ValidationError[] {\n const schema = config.functions?.[fn.name];\n const errors: ValidationError[] = [];\n\n if (!schema)\n return [\n {\n id: 'function-undefined',\n level: 'critical',\n message: `Undefined function: '${fn.name}'`,\n },\n ];\n\n if (schema.validate) errors.push(...schema.validate(fn, config));\n\n if (schema.parameters) {\n for (const [key, value] of Object.entries(fn.parameters)) {\n const param = schema.parameters?.[key];\n\n if (!param) {\n errors.push({\n id: 'parameter-undefined',\n level: 'error',\n message: `Invalid parameter: '${key}'`,\n });\n\n continue;\n }\n\n if (Ast.isAst(value) && !Ast.isFunction(value)) continue;\n\n if (param.type) {\n const valid = validateType(param.type, value, config, key);\n if (valid === false) {\n errors.push({\n id: 'parameter-type-invalid',\n level: 'error',\n message: `Parameter '${key}' of '${\n fn.name\n }' must be type of '${typeToString(param.type)}'`,\n });\n } else if (Array.isArray(valid)) {\n errors.push(...valid);\n }\n }\n }\n }\n\n for (const [key, { required }] of Object.entries(schema.parameters ?? {}))\n if (required && fn.parameters[key] === undefined)\n errors.push({\n id: 'parameter-missing-required',\n level: 'error',\n message: `Missing required parameter: '${key}'`,\n });\n\n return errors;\n}\n\nfunction displayMatches(matches: any[], n: number) {\n if (matches.length <= n) return JSON.stringify(matches);\n const items = matches.slice(0, n).map((item) => JSON.stringify(item));\n return `[${items.join(',')}, ... ${matches.length - n} more]`;\n}\n\nexport default function validator(node: Node, config: Config) {\n const schema = node.findSchema(config);\n const errors: ValidationError[] = [...(node.errors || [])];\n\n if (!schema) {\n errors.push({\n id: node.tag ? 'tag-undefined' : 'node-undefined',\n level: 'critical',\n message: node.tag ? `Undefined tag: '${node.tag}'` : `Undefined node: '${node.type}'`,\n });\n\n return errors;\n }\n\n if (schema.inline != undefined && node.inline !== schema.inline)\n errors.push({\n id: 'tag-placement-invalid',\n level: 'critical',\n message: `'${node.tag}' tag should be ${schema.inline ? 'inline' : 'block'}`,\n });\n\n if (schema.selfClosing && node.children.length > 0)\n errors.push({\n id: 'tag-selfclosing-has-children',\n level: 'critical',\n message: `'${node.tag}' tag should be self-closing`,\n });\n\n const attributes = {\n ...schema.attributes,\n };\n\n for (const key of Object.keys(node.slots)) {\n const slot = schema.slots?.[key];\n if (!slot)\n errors.push({\n id: 'slot-undefined',\n level: 'error',\n message: `Invalid slot: '${key}'`,\n });\n }\n\n for (let [key, value] of Object.entries(node.attributes)) {\n const attrib = attributes[key];\n\n if (!attrib) {\n errors.push({\n id: 'attribute-undefined',\n level: 'error',\n message: `Invalid attribute: '${key}'`,\n });\n\n continue;\n }\n\n let { type, matches, errorLevel } = attrib;\n\n if (Ast.isAst(value)) {\n if (Ast.isFunction(value) && config.validation?.validateFunctions)\n errors.push(...validateFunction(value, config));\n else if (Ast.isVariable(value) && config.variables) {\n let missing = false;\n let variables = config.variables;\n\n for (const key of value.path) {\n if (!Object.prototype.hasOwnProperty.call(variables, key)) {\n missing = true;\n break;\n }\n variables = variables[key];\n }\n\n if (missing) {\n errors.push({\n id: 'variable-undefined',\n level: 'error',\n message: `Undefined variable: '${value.path.join('.')}'`,\n });\n }\n } else continue;\n }\n\n value = value as string;\n\n if (type) {\n const valid = validateType(type, value, config, key);\n if (valid === false) {\n errors.push({\n id: 'attribute-type-invalid',\n level: errorLevel || 'error',\n message: `Attribute '${key}' must be type of '${typeToString(type)}'`,\n });\n }\n if (Array.isArray(valid)) {\n errors.push(...valid);\n }\n }\n\n if (typeof matches === 'function') matches = matches(config);\n\n if (Array.isArray(matches) && !matches.includes(value))\n errors.push({\n id: 'attribute-value-invalid',\n level: errorLevel || 'error',\n message: `Attribute '${key}' must match one of ${displayMatches(\n matches,\n 8,\n )}. Got '${value}' instead.`,\n });\n\n if (matches instanceof RegExp && !matches.test(value))\n errors.push({\n id: 'attribute-value-invalid',\n level: errorLevel || 'error',\n message: `Attribute '${key}' must match ${matches}. Got '${value}' instead.`,\n });\n\n if (typeof attrib.validate === 'function') {\n const attribErrors = attrib.validate(value, config, key);\n if (Array.isArray(attribErrors)) errors.push(...attribErrors);\n }\n }\n\n for (const [key, { required }] of Object.entries(attributes))\n if (required && node.attributes[key] === undefined)\n errors.push({\n id: 'attribute-missing-required',\n level: 'error',\n message: `Missing required attribute: '${key}'`,\n });\n\n if (schema.slots)\n for (const [key, { required }] of Object.entries(schema.slots))\n if (required && node.slots[key] === undefined)\n errors.push({\n id: 'slot-missing-required',\n level: 'error',\n message: `Missing required slot: '${key}'`,\n });\n\n for (const { type } of node.children) {\n if (schema.children && type !== 'error' && !schema.children.includes(type))\n errors.push({\n id: 'child-invalid',\n level: 'warning',\n message: `Can't nest '${type}' in '${node.tag || node.type}'`,\n });\n }\n\n if (schema.validate) {\n const schemaErrors = schema.validate(node, config);\n if (isPromise(schemaErrors)) {\n return schemaErrors.then((e) => errors.concat(e));\n }\n\n errors.push(...schemaErrors);\n }\n\n return errors;\n}\n\nexport function* walkWithParents(node: Node, parents: Node[] = []): Generator<[Node, Node[]]> {\n yield [node, parents];\n for (const child of [...Object.values(node.slots), ...node.children])\n yield* walkWithParents(child, [...parents, node]);\n}\n\nexport function validateTree(content: Node, config: Config) {\n const output = [...walkWithParents(content)].map(([node, parents]) => {\n const { type, lines, location } = node;\n const updatedConfig = {\n ...config,\n validation: { ...config.validation, parents },\n };\n const errors = validator(node, updatedConfig);\n\n if (isPromise(errors)) {\n return errors.then((e) => e.map((error) => ({ type, lines, location, error })));\n }\n\n return errors.map((error) => ({ type, lines, location, error }));\n });\n\n if (output.some(isPromise)) {\n return Promise.all(output).then((o) => o.flat());\n }\n\n return output.flat();\n}\n","import Ast from './src/ast';\nimport Node from './src/ast/node';\nimport format from './src/formatter';\nimport functions from './src/functions';\nimport parser from './src/parser';\nimport * as nodes from './src/schema';\nimport renderers from './src/renderers';\nimport Tag from './src/tag';\nimport tags from './src/tags';\nimport { truthy } from './src/tags/conditional';\nimport Tokenizer from './src/tokenizer';\nimport transformer from './src/transformer';\nimport transforms from './src/transforms';\nimport { parseTags } from './src/utils';\nimport validator, { validateTree } from './src/validator';\n\nimport type { ParserArgs } from './src/types';\nimport type Token from 'markdown-it/lib/token.mjs';\nimport type { Config, RenderableTreeNode, ValidateError } from './src/types';\n\nexport * from './src/types';\n\nconst tokenizer = new Tokenizer();\n\nfunction mergeConfig(config: Config = {}): Config {\n return {\n ...config,\n tags: {\n ...tags,\n ...config.tags,\n },\n nodes: {\n ...nodes,\n ...config.nodes,\n },\n functions: {\n ...functions,\n ...config.functions,\n },\n };\n}\n\nexport function parse(content: string | Token[], args?: string | ParserArgs): Node {\n if (typeof content === 'string') content = tokenizer.tokenize(content);\n return parser(content, args);\n}\n\nexport function resolve<C extends Config = Config>(content: Node, config: C): Node;\nexport function resolve<C extends Config = Config>(content: Node[], config: C): Node[];\nexport function resolve<C extends Config = Config>(content: any, config: C): any {\n if (Array.isArray(content)) return content.flatMap((child) => child.resolve(config));\n\n return content.resolve(config);\n}\n\nexport function transform<C extends Config = Config>(node: Node, config?: C): RenderableTreeNode;\nexport function transform<C extends Config = Config>(\n nodes: Node[],\n config?: C,\n): RenderableTreeNode[];\nexport function transform<C extends Config = Config>(nodes: any, options?: C): any {\n const config = mergeConfig(options);\n const content = resolve(nodes, config);\n\n if (Array.isArray(content)) return content.flatMap((child) => child.transform(config));\n return content.transform(config);\n}\n\nexport function validate<C extends Config = Config>(node: Node, options?: C): ValidateError[];\nexport function validate<C extends Config = Config>(content: any, options?: C): any {\n const config = mergeConfig(options);\n return validateTree(content, config);\n}\n\nexport function createElement(\n name: string | { key?: string | number },\n attributes = {},\n ...children: any[]\n) {\n return { name, attributes, children };\n}\n\nexport {\n nodes,\n tags,\n functions,\n transforms,\n renderers,\n Ast,\n Node,\n Tag,\n Tokenizer,\n parseTags,\n transformer,\n validator,\n truthy,\n format,\n};\n\nexport default class Markdoc {\n static nodes = nodes;\n static tags = tags;\n static functions = functions;\n static renderers = renderers;\n static transforms = transforms;\n static Ast = Ast;\n static Tag = Tag;\n static Tokenizer = Tokenizer;\n static parseTags = parseTags;\n static transformer = transformer;\n static validator = validator;\n static parse = parse;\n static transform = transform;\n static validate = validate;\n static createElement = createElement;\n static truthy = truthy;\n static format = format;\n\n config;\n constructor(config: Config) {\n this.config = config;\n }\n\n parse = parse;\n resolve = (content: Parameters<typeof resolve>[0]) => resolve(content, this.config);\n transform = (content: Parameters<typeof transform>[0]) => transform(content, this.config);\n validate = (content: Parameters<typeof validate>[0]) => validate(content, this.config);\n}\n"],"names":["resolve","item","s","expected","found","name","Function","Variable","text","OPEN","CLOSE","parse","error","SyntaxError","node","nodes","tags","slot","n","table","transform","document","thead","tbody","fence","inline","html","partial","block","plugin","MarkdownIt","annotations","frontmatter","comments","key"],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import { AstType, Config, Function as AstFunction, Variable as AstVariable } from '../types';
2
+ export declare function isAst(value?: any): value is AstType;
3
+ export declare function isFunction(value?: any): value is AstFunction;
4
+ export declare function isVariable(value?: any): value is AstVariable;
5
+ export declare function getAstValues(value: any): Generator<AstType, void, unknown>;
6
+ export declare function resolve(value: any, config?: Config): any;
7
+ //# sourceMappingURL=base.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../../src/ast/base.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,OAAO,EACP,MAAM,EACN,QAAQ,IAAI,WAAW,EAEvB,QAAQ,IAAI,WAAW,EACxB,MAAM,UAAU,CAAC;AAElB,wBAAgB,KAAK,CAAC,KAAK,CAAC,EAAE,GAAG,GAAG,KAAK,IAAI,OAAO,CAEnD;AAED,wBAAgB,UAAU,CAAC,KAAK,CAAC,EAAE,GAAG,GAAG,KAAK,IAAI,WAAW,CAE5D;AAED,wBAAgB,UAAU,CAAC,KAAK,CAAC,EAAE,GAAG,GAAG,KAAK,IAAI,WAAW,CAE5D;AAED,wBAAiB,YAAY,CAAC,KAAK,EAAE,GAAG,GAAG,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,CAU3E;AAED,wBAAgB,OAAO,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,GAAE,MAAW,GAAG,GAAG,CAY5D"}
@@ -0,0 +1,9 @@
1
+ import { Config, AstType } from '../types';
2
+ export default class Function implements AstType {
3
+ readonly $$mdtype = "Function";
4
+ name: string;
5
+ parameters: Record<string, any>;
6
+ constructor(name: string, parameters: Record<string, any>);
7
+ resolve(config?: Config): any;
8
+ }
9
+ //# sourceMappingURL=function.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"function.d.ts","sourceRoot":"","sources":["../../../src/ast/function.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAEhD,MAAM,CAAC,OAAO,OAAO,QAAS,YAAW,OAAO;IAC9C,QAAQ,CAAC,QAAQ,cAAc;IAE/B,IAAI,SAAC;IACL,UAAU,sBAAC;gBAEC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IAKzD,OAAO,CAAC,MAAM,GAAE,MAAW;CAO5B"}
@@ -0,0 +1,18 @@
1
+ import { default as Node } from './node';
2
+ import { default as Function } from './function';
3
+ import { default as Variable } from './variable';
4
+ import { AstType } from '../types';
5
+ declare function fromJSON(text: string): Node | Node[];
6
+ declare const _default: {
7
+ fromJSON: typeof fromJSON;
8
+ isAst(value?: any): value is AstType;
9
+ isFunction(value?: any): value is import('../types').Function;
10
+ isVariable(value?: any): value is import('../types').Variable;
11
+ getAstValues(value: any): Generator<AstType, void, unknown>;
12
+ resolve(value: any, config?: import('../types').Config): any;
13
+ Function: typeof Function;
14
+ Node: typeof Node;
15
+ Variable: typeof Variable;
16
+ };
17
+ export default _default;
18
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/ast/index.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,QAAQ,CAAC;AAC1B,OAAO,QAAQ,MAAM,YAAY,CAAC;AAClC,OAAO,QAAQ,MAAM,YAAY,CAAC;AAGlC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAcxC,iBAAS,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,EAAE,CAE7C;;;;;;;;;;;;AAED,wBAIE"}
@@ -0,0 +1,23 @@
1
+ import { AstType, AttributeValue, Config, Location, MaybePromise, NodeType, RenderableTreeNode, RenderableTreeNodes, Schema, ValidationError } from '../types';
2
+ export default class Node implements AstType {
3
+ readonly $$mdtype = "Node";
4
+ attributes: Record<string, any>;
5
+ slots: Record<string, Node>;
6
+ children: Node[];
7
+ errors: ValidationError[];
8
+ lines: number[];
9
+ type: NodeType;
10
+ tag?: string;
11
+ annotations: AttributeValue[];
12
+ inline: boolean;
13
+ location?: Location;
14
+ constructor(type?: NodeType, attributes?: Record<string, any>, children?: Node[], tag?: string);
15
+ walk(): Generator<Node, void, unknown>;
16
+ push(node: Node): void;
17
+ resolve(config?: Config): Node;
18
+ findSchema(config?: Config): Schema | undefined;
19
+ transformAttributes(config?: Config): Record<string, any>;
20
+ transformChildren(config: Config): RenderableTreeNode[];
21
+ transform(config: Config): MaybePromise<RenderableTreeNodes>;
22
+ }
23
+ //# sourceMappingURL=node.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../../../src/ast/node.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,OAAO,EACP,cAAc,EACd,MAAM,EACN,QAAQ,EACR,YAAY,EACZ,QAAQ,EACR,kBAAkB,EAClB,mBAAmB,EACnB,MAAM,EACN,eAAe,EAChB,MAAM,UAAU,CAAC;AAElB,MAAM,CAAC,OAAO,OAAO,IAAK,YAAW,OAAO;IAC1C,QAAQ,CAAC,QAAQ,UAAU;IAE3B,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAChC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAC5B,QAAQ,EAAE,IAAI,EAAE,CAAC;IACjB,MAAM,EAAE,eAAe,EAAE,CAAM;IAC/B,KAAK,EAAE,MAAM,EAAE,CAAM;IACrB,IAAI,EAAE,QAAQ,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,cAAc,EAAE,CAAC;IAE9B,MAAM,UAAS;IACf,QAAQ,CAAC,EAAE,QAAQ,CAAC;gBAGlB,IAAI,GAAE,QAAiB,EACvB,UAAU,GAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAM,EACpC,QAAQ,GAAE,IAAI,EAAO,EACrB,GAAG,CAAC,EAAE,MAAM;IAUb,IAAI,IAAI,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC;IAOvC,IAAI,CAAC,IAAI,EAAE,IAAI;IAIf,OAAO,CAAC,MAAM,GAAE,MAAW,GAAG,IAAI;IAUlC,UAAU,CAAC,MAAM,GAAE,MAAW,GAAG,MAAM,GAAG,SAAS;IAInD,mBAAmB,CAAC,MAAM,GAAE,MAAW;IAIvC,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,kBAAkB,EAAE;IAIvD,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY,CAAC,mBAAmB,CAAC;CAG7D"}
@@ -0,0 +1,8 @@
1
+ import { Config, AstType } from '../types';
2
+ export default class Variable implements AstType {
3
+ readonly $$mdtype = "Variable";
4
+ path: (string | number)[];
5
+ constructor(path?: (string | number)[]);
6
+ resolve({ variables }?: Config): any;
7
+ }
8
+ //# sourceMappingURL=variable.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"variable.d.ts","sourceRoot":"","sources":["../../../src/ast/variable.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAEhD,MAAM,CAAC,OAAO,OAAO,QAAS,YAAW,OAAO;IAC9C,QAAQ,CAAC,QAAQ,cAAc;IAE/B,IAAI,sBAAC;gBAEO,IAAI,GAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAO;IAI1C,OAAO,CAAC,EAAE,SAAS,EAAE,GAAE,MAAW;CAKnC"}
@@ -0,0 +1,11 @@
1
+ import { Node, Value } from './types';
2
+ type Options = {
3
+ allowIndentation?: boolean;
4
+ maxTagOpeningWidth?: number;
5
+ orderedListMode?: 'increment' | 'repeat';
6
+ parent?: Node;
7
+ indent?: number;
8
+ };
9
+ export default function format(v: Value | Value[], options?: Options): string;
10
+ export {};
11
+ //# sourceMappingURL=formatter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"formatter.d.ts","sourceRoot":"","sources":["../../src/formatter.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAA4B,IAAI,EAAE,KAAK,EAAY,MAAM,SAAS,CAAC;AAE/E,KAAK,OAAO,GAAG;IACb,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,eAAe,CAAC,EAAE,WAAW,GAAG,QAAQ,CAAC;IACzC,MAAM,CAAC,EAAE,IAAI,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AA+cF,MAAM,CAAC,OAAO,UAAU,MAAM,CAAC,CAAC,EAAE,KAAK,GAAG,KAAK,EAAE,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,MAAM,CAI5E"}
@@ -0,0 +1,11 @@
1
+ import { ConfigFunction } from '../types';
2
+ declare const _default: {
3
+ and: ConfigFunction;
4
+ or: ConfigFunction;
5
+ not: ConfigFunction;
6
+ equals: ConfigFunction;
7
+ default: ConfigFunction;
8
+ debug: ConfigFunction;
9
+ };
10
+ export default _default;
11
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/functions/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;;;;;;;;;AA4C/C,wBAAmE"}
@@ -0,0 +1,4 @@
1
+ import { default as Node } from './ast/node';
2
+ import { ParserArgs, ParserToken } from './types';
3
+ export default function parser(tokens: ParserToken[], args?: string | ParserArgs): Node;
4
+ //# sourceMappingURL=parser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../src/parser.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,YAAY,CAAC;AAI9B,OAAO,KAAK,EAA4B,UAAU,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAuLjF,MAAM,CAAC,OAAO,UAAU,MAAM,CAAC,MAAM,EAAE,WAAW,EAAE,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,UAAU,QAmB/E"}
@@ -0,0 +1,3 @@
1
+ import { RenderableTreeNodes } from '../types';
2
+ export default function render(node: RenderableTreeNodes): string;
3
+ //# sourceMappingURL=html.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"html.d.ts","sourceRoot":"","sources":["../../../src/renderers/html.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAsBpD,MAAM,CAAC,OAAO,UAAU,MAAM,CAAC,IAAI,EAAE,mBAAmB,GAAG,MAAM,CAsBhE"}
@@ -0,0 +1,6 @@
1
+ import { default as html } from './html';
2
+ declare const _default: {
3
+ html: typeof html;
4
+ };
5
+ export default _default;
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/renderers/index.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,QAAQ,CAAC;;;;AAE1B,wBAAwB"}