{"version":3,"file":"index.cjs","sources":["../code/jsy/utils.jsy","../code/jsy/jsy_lambda_operators.jsy","../code/jsy/jsy_func_operators.jsy","../code/jsy/jsy_prefix_operators.jsy","../code/jsy/jsy_operators.jsy","../code/jsy/regexp.jsy","../code/scanner/inject_dedent.jsy","../code/scanner/_location.jsy","../code/scanner/basic_offside.jsy","../code/scanner/context_scanner.jsy","../code/scanner/basic_contexts.jsy","../code/scanner/basic_offside_contexts.jsy","../code/scanner/scan_clike.jsy","../code/scanner/scan_javascript.jsy","../code/scanner/scan_jsx_javascript.jsy","../code/jsy/scan.jsy","../code/jsy/preprocess.jsy","../code/jsy/preprocess_visitor.jsy","../code/jsy/optional_comma.jsy","../code/jsy/jsy_visitor.jsy","../code/jsy/transpile.jsy","../node_modules/tiny-source-map/esm/tiny-source-map.mjs","../code/jsy/with_srcmap.jsy"],"sourcesContent":["\nconst rx_escape_offside_ops = /[?|+*@:.\\/\\\\\\(\\)\\{\\}\\[\\]\\=\\>]/g ;\nconst re_space_prefix = /(?:^|[ \\t]+)/.source ; // spaces or start of line\nconst re_space_suffix = /(?=$|[ \\t]+)/.source ; // spaces or end of line\n\nexport function regexp_from_jsy_op(jsy_op, with_spacing) ::\n  if 'string' === typeof jsy_op ::\n    // escape Offside operator chars to RegExp\n    jsy_op = jsy_op.replace @ rx_escape_offside_ops, '\\\\$&'\n    // surrounded by newlines or spacees\n    if with_spacing ::\n      jsy_op = re_space_prefix + jsy_op + re_space_suffix\n    return `(?:${jsy_op})` // using a non-matching group\n\n  if jsy_op instanceof RegExp ::\n    return jsy_op.source\n\n\nexport function sourcemap_comment(srcmap_json, newline='\\n') ::\n  if 'string' !== typeof srcmap_json ::\n    srcmap_json = JSON.stringify(srcmap_json)\n\n  let b64 = 'undefined' !== typeof Buffer\n    ? Buffer.from(srcmap_json).toString('base64')\n    : globalThis.btoa @ unescape @ encodeURIComponent @ srcmap_json\n\n  // break up the source mapping url trigger string to prevent false positives on the following line\n  return `${newline}//# ${'sourceMapping'}URL=data:application/json;charset=utf-8;base64,${b64}${newline}`\n\n\n","\n\n// @::   @::>   @::>*   @::*\nconst lambda_block_tbl = @{}\n  '': a => @: pre: `((${a}) => {`, post: '})'\n  '>': a => @: pre: `(async (${a}) => {`, post: '})'\n  '>*': a => @: pre: `((async function * (${a}) {`, post: '}).bind(this))'\n  '*': a => @: pre: `((function * (${a}) {`, post: '}).bind(this))'\n\n// @=>   @=>>\nconst lambda_arrow_tbl = @{}\n  __proto__: lambda_block_tbl\n  '': a => @: pre: `((${a}) =>`, post: ')'\n  '>': a => @: pre: `(async (${a}) =>`, post: ')'\n\n\n// @!::   @!::>   @!::>*   @!::*\nconst iife_expr_tbl = @{}\n  '': a => @: pre: `(((${a}) => {`, post: '})())'\n  '>': a => @: pre: `((async (${a}) => {`, post: '})())'\n  '>*': a => @: pre: `((async function * (${a}) {`, post: '}).call(this))'\n  '*': a => @: pre: `((function * (${a}) {`, post: '}).call(this))'\n\n\n// @!=>   @!=>>\nconst iife_arrow_tbl = @{}\n  __proto__: iife_expr_tbl\n  '': a => @: pre: `(((${a}) =>`, post: ')())'\n  '>': a => @: pre: `((async (${a}) =>`, post: ')())'\n\n\nconst bindLambdaOpZero = table =>\n  function opResolveLambdaZero(p) ::\n    let [_, suffix] = p.content.match(this.jsy_op)\n    let entry = table[suffix || '']\n    if undefined === entry ::\n      throw new SyntaxError @ `JSY lambda expression unrecognized specifier (\"${suffix}\")`\n    return entry('')\n\n\nconst fmt_arg_kw = args => `{${args}}`\nconst fmt_arg_vec = args => `[${args}]`\nconst bindLambdaOpResolve = (table, as_args=(v=>v)) =>\n  function opResolveLambda(p) ::\n    let [_, args, suffix] = p.content.match(this.jsy_op)\n    let entry = table[suffix || '']\n    if undefined === entry ::\n      throw new SyntaxError @ `JSY lambda with args expression unrecognized specifier (\"${suffix}\")`\n    return entry(as_args(args) || '')\n\n\n\nexport const at_lambda_offside = @[]\n  // object unpack all args\n  @{} jsy_op0: '@\\\\:=>', jsy_op: /@\\\\:(.*?)=>(>?\\*?)/,\n      pre: '(()=>', post: ')'\n      opResolve: bindLambdaOpResolve @ lambda_arrow_tbl, fmt_arg_kw\n  @{} jsy_op0: '@\\\\:::', jsy_op: /@\\\\:(.*?)::(>?\\*?)/,\n      pre: '(()=>{', post: '})',\n      opResolve: bindLambdaOpResolve @ lambda_block_tbl, fmt_arg_kw\n\n  // array unpack all args\n  @{} jsy_op0: '@\\\\#=>', jsy_op: /@\\\\#(.*?)=>(>?\\*?)/,\n      pre: '(()=>', post: ')'\n      opResolve: bindLambdaOpResolve @ lambda_arrow_tbl, fmt_arg_vec\n  @{} jsy_op0: '@\\\\#::', jsy_op: /@\\\\#(.*?)::(>?\\*?)/,\n      pre: '(()=>{', post: '})',\n      opResolve: bindLambdaOpResolve @ lambda_block_tbl, fmt_arg_vec\n\n  // normal args\n  @{} jsy_op0: '@\\\\=>', jsy_op: /@\\\\(.*?)=>(>?\\*?)/,\n      pre: '(()=>', post: ')'\n      opResolve: bindLambdaOpResolve @ lambda_arrow_tbl\n  @{} jsy_op0: '@\\\\::', jsy_op: /@\\\\(.*?)::(>?\\*?)/,\n      pre: '(()=>{', post: '})',\n      opResolve: bindLambdaOpResolve @ lambda_block_tbl\n\n  // zero args\n  @{} jsy_op0: '@=>', jsy_op: /@=>(>?\\*?)/,\n      pre: '(()=>', post: ')',\n      opResolve: bindLambdaOpZero @ lambda_arrow_tbl\n  @{} jsy_op0: '@::', jsy_op: /@::(>?\\*?)/,\n      pre: '(()=>{', post: '})',\n      opResolve: bindLambdaOpZero @ lambda_block_tbl\n\n\nexport const at_lambda_iife_offside = @[]\n  @{} jsy_op: '::!', pre: '{(()=>{', post: '})()}', is_kw_close: true\n  @{} jsy_op: '::!>', pre: '{(async ()=>{', post: '})()}', is_kw_close: true\n\n  @{} jsy_op0: '@!*>', jsy_op: /@!\\*>/, pre: '((async function *(){', post: '}).call(this))'\n  @{} jsy_op0: '@!*[]', jsy_op: /@!\\*\\[\\]/, pre: '[... (function *(){', post: '}).call(this)]'\n  @{} jsy_op0: '@!*#', jsy_op: /@!\\*#/, pre: '([... (function *(){', post: '}).call(this)])'\n  @{} jsy_op0: '@!*', jsy_op: /@!\\*/, pre: '((function *(){', post: '}).call(this))'\n\n  @{} jsy_op0: '@!=>', jsy_op: /@!=>(>?\\*?)/,\n      pre: '((()=>', post: ')())',\n      opResolve: bindLambdaOpZero @ iife_arrow_tbl\n\n  @{} jsy_op0: '@!::', jsy_op: /@!::(>?\\*?)/,\n      pre: '((()=>{', post: '})())',\n      opResolve: bindLambdaOpZero @ iife_expr_tbl\n\n  @{} jsy_op0: '@!', jsy_op: /@!(>?\\*?)(?!=>)/,\n      pre: '((()=>{', post: '})())',\n      opResolve: bindLambdaOpZero @ iife_expr_tbl\n\n\nexport const at_lambda_offside_all = [].concat @\n  at_lambda_offside\n  at_lambda_iife_offside\n\n\n","\n// Like lambdas without closing over `this`\n// @~::   @~::>   @~::>*   @~::*\nconst func_block_tbl = @{}\n  '': a => @: pre: `(function (${a}) {`, post: '})'\n  '>': a => @: pre: `(async function(${a}) {`, post: '})'\n  '>*': a => @: pre: `(async function * (${a}) {`, post: '})'\n  '*': a => @: pre: `(function * (${a}) {`, post: '})'\n\n\nexport const at_func_offside = @[]\n  @{} jsy_op0: '@~::', jsy_op: /@~(.*?)::(>?\\*?)/,\n      pre: '(function () {', post: '})',\n      opResolve(p) ::\n        let [_, args, suffix] = p.content.match(this.jsy_op)\n        let entry = func_block_tbl[suffix]\n        if undefined === entry ::\n          throw new SyntaxError @ `JSY function expression unrecognized specifier (\"${suffix}\")`\n        return entry(args || '')\n\n","import {regexp_from_jsy_op} from './utils.jsy'\n\n\nexport const as_op_prefix = (rx, sep=rx.source, inject_sep=sep) => @:\n  prefix: sep, rx_prefix: rx\n  opPrefixResolve(p, at_op) ::\n    let at_res = at_op.opResolve ? at_op.opResolve(p) : at_op\n    let pre = inject_sep + (at_res.pre || '')\n    return @{} ... at_res, pre\n\n\nexport const jsy_prefix_operators = @[]\n  as_op_prefix(/;/)\n  as_op_prefix(/,/)\n  as_op_prefix(/\\?(\\.?)/, '?', '?.')\n\n\nfunction * at_op_for_prefix(at_op, jsy_prefix_operators) ::\n  let {jsy_op0, jsy_op} = at_op\n  if ! /^[@?]/.test @ jsy_op0 || jsy_op ::\n    return\n\n  if undefined === jsy_op0 ::\n    jsy_op0 = jsy_op\n    jsy_op = new RegExp @ regexp_from_jsy_op(jsy_op, false)\n\n  else if 'string' === typeof jsy_op ::\n    jsy_op = new RegExp @ regexp_from_jsy_op(jsy_op, false)\n\n  else if 'function' !== typeof jsy_op.exec ::\n    throw new Error @ 'Unexpected jsy_op type'\n\n  for let jsy_prefix_op of jsy_prefix_operators ::\n    yield @{} ...at_op,\n      jsy_op0: jsy_prefix_op.prefix + jsy_op0\n      jsy_op: new RegExp @ `${jsy_prefix_op.rx_prefix.source}${jsy_op.source}`, jsy_op.flags\n      foldTop: true\n      opResolve: p => jsy_prefix_op.opPrefixResolve @ p, at_op\n\n\nexport function apply_prefix_operators(at_inner_operators, jsy_prefix_operators) ::\n  let res = []\n  for let at_op of at_inner_operators ::\n    res.push @ ... at_op_for_prefix(at_op, jsy_prefix_operators)\n  res.push(... at_inner_operators)\n  return res\n\n","import { at_lambda_offside, at_lambda_iife_offside } from './jsy_lambda_operators.jsy'\nimport { at_func_offside } from './jsy_func_operators.jsy'\nimport { apply_prefix_operators, jsy_prefix_operators } from './jsy_prefix_operators.jsy'\n\n// Order matters here -- list more specific matchers higher (first) in the order\nexport const at_outer_offside = @[]\n  @{} jsy_op: '::()', pre: '(', post: ')', nestBreak: true\n  @{} jsy_op: '::{}', pre: '{', post: '}', nestBreak: true\n  @{} jsy_op: '::[]', pre: '[', post: ']', nestBreak: true\n  @{} jsy_op: '::', pre: ' {', post: '}', nestBreak: true, is_kw_close: true\n\nexport const at_inner_offside_basic = @[]\n  @{} jsy_op: '@:', pre: '({', post: '})', implicitSep: ',', isFoldable: true\n  @{} jsy_op: '@#', pre: '([', post: '])', implicitSep: ',', isFoldable: true\n  @{} jsy_op: '@()', pre: '(', post: ')', implicitSep: ',', isFoldable: true\n  @{} jsy_op: '@{}', pre: '{', post: '}', implicitSep: ',', isFoldable: true\n  @{} jsy_op: '@[]', pre: '[', post: ']', implicitSep: ',', isFoldable: true\n  @{} jsy_op: '@', pre: '(', post: ')', implicitSep: ',', isFoldable: true\n\n\nexport const at_inner_offside_core = [].concat @\n  at_func_offside\n  at_lambda_offside\n  at_lambda_iife_offside\n  at_inner_offside_basic\n\n\nexport const at_experimental = @[]\n  /* experimental ideas; may be removed at any time */\n\n\nexport const at_unknown_ops = @[]\n  @{} jsy_op0: '?@', jsy_op: /\\?@[^\\w\\s]+/,\n  @{} jsy_op0: ';@', jsy_op: /;@[^\\w\\s]+/,\n  @{} jsy_op0: ',@', jsy_op: /,@[^\\w\\s]+/,\n  @{} jsy_op0: '::', jsy_op: /::[^\\w\\s]+/,\n  @{} jsy_op0: '@', jsy_op: /@[^\\w\\s]+/,\n\n\nexport const at_inner_offside = \n  apply_prefix_operators @\n    at_inner_offside_core.flat()\n    jsy_prefix_operators\n\n\nexport const op_template_str = @{} nestBreak: true\n\nexport const at_offside = [].concat @\n  at_outer_offside\n  at_inner_offside\n  at_experimental\n\n\nexport const at_offside_map = at_offside.reduce @\n  (m, ea) => ::\n    if ea.jsy_op0 ::\n      m[ea.jsy_op0] = ea\n\n    if 'string' === typeof ea.jsy_op ::\n      m[ea.jsy_op] = ea\n    return m\n  {}\n\n\nfunction kwExpandOp(p) ::\n  return @{} __proto__: this, pre: p.kw + this.pre\n\nexport const extra_jsy_ops = @{}\n  kw_normal: @{} jsy_op: 'kw', pre: ' (', post: ')', kwExpandOp, in_nested_block: true\n  kw_explicit: @{} jsy_op: 'kw', pre: '', post: '', kwExpandOp, in_nested_block: true\n  tmpl_param: @{} jsy_op: 'tmpl_param', pre: '', post: '', in_nested_block: true\n  jsx_param: @{} jsy_op: 'jsx_param', pre: '', post: '', in_nested_block: true\n\nexport const keywords_with_args = @[] 'if', 'while', 'for await', 'for', 'switch'\nexport const keywords_zero_args = @[] 'catch'\n\nexport const keywords_locator_parts = [].concat @\n  keywords_with_args.map @ e => `else ${e}`\n  keywords_with_args\n  keywords_zero_args\n","import { regexp_from_jsy_op } from './utils.jsy'\nimport { at_offside, at_unknown_ops, keywords_locator_parts } from './jsy_operators.jsy'\n\nconst regexp_keyword = sz => ::\n  sz = sz.replace(/[ ]+/g, '[ ]+') // allow one or more spaces\n  return `(?:${sz})` // using a non-matching group\n\nconst re_keyword_space_prefix = /^(?:[ \\t]*)/.source ; // start of line and indent\nconst re_keyword_trailer = /(?:[ \\t]*(?=[^\\w,:;=]|$))/.source ;\n\nexport const rx_keyword_ops = new RegExp @\n  re_keyword_space_prefix\n    + `(?:${keywords_locator_parts.map(regexp_keyword).join('|')})`\n    + re_keyword_trailer\n  , 'g' // global regexp for lastIndex support\n\nconst regexp_from_offside_op = offside_op =>\n  regexp_from_jsy_op @ offside_op.jsy_op, true\n\nexport const rx_offside_ops = new RegExp @\n  at_offside\n    .map(regexp_from_offside_op)\n    .filter(Boolean)\n    .join('|')\n  'g' // global regexp\n\nexport const rx_unknown_ops = new RegExp @\n  at_unknown_ops\n    .map(regexp_from_offside_op)\n    .filter(Boolean)\n    .join('|')\n  'g' // global regexp\n\n","\nexport function inject_dedent(offside_lines, trailing_types) ::\n  if 'function' !== typeof trailing_types ::\n    const s_trailing_types = new Set @\n      trailing_types || ['comment_eol']\n    trailing_types = k => s_trailing_types.has(k)\n\n  for const ln of offside_lines ::\n    if ln.is_blank :: continue\n\n    const {len_dedent, len_indent, len_inner} = ln\n\n    const offside_dedent = @{}\n      type: 'offside_dedent'\n      len_dedent, len_indent\n\n    if len_inner ::\n      offside_dedent.len_inner = len_inner\n\n    const last = ln.content.pop()\n    if last.multiline || trailing_types(last.type) ::\n      ln.content.push @ offside_dedent, last\n    else ::\n      ln.content.push @ last, offside_dedent\n\n","\nconst SourceLocation = @{}\n  __proto__: null\n\n  get [Symbol.toStringTag]() :: return '«SourceLocation»'\n  toString() :: return `«${this.line}:${this.column}»`\n  get column() :: return this.pos - this.line_pos\n\n  create(source, file) ::\n    const root = @{}\n      line:0, pos:0, line_pos:0\n      __proto__: SourceLocation\n\n    if null != file ::\n      root.file = file\n\n    Object.defineProperties @ root, @{}\n      __root__: @{} value: root\n      source: @{} value: source\n    return Object.freeze @ root\n\n  nextLine() ::\n    let {line, pos} = this\n    line += 1\n    return Object.freeze @:\n      line, pos, line_pos: pos,\n      __proto__: this.__root__\n\n  move(char_len) ::\n    if 'string' === typeof char_len ::\n      char_len = char_len.length\n    else if 'number' === typeof char_len ::\n      char_len |= 0\n    else throw new TypeError('Expected move to be a string or number')\n\n    let {line, pos, line_pos} = this\n    pos += char_len\n    return Object.freeze @:\n      line, pos, line_pos,\n      __proto__: this.__root__\n\n  distance(other) ::\n    const lines = this.line - other.line\n    const chars = this.pos - other.pos\n    return @{} lines, chars\n\n  slice(other) ::\n    if this.source !== other.source ::\n      throw new Error @ `Locations from different sources`\n    return this.source.slice @ this.pos, other.pos\n\n  syntaxError(message) ::\n    const err = new SyntaxError(message)\n    err.src_loc = this\n    return err\n\nexport default SourceLocation.create\n","export const rx_lines = /(\\r\\n|\\r|\\n)/ ;\nexport const rx_indent = /^([ \\t]*)(.*)$/ ;\nexport const rx_indent_order = /^[\\t]*[ ]*$/ ;\n\nimport createLoc from './_location.jsy'\n\nexport function basic_offside_scanner(source, feedback) ::\n  if null == feedback ::\n    feedback = @{}\n      warn(msg, ...args) :: console.warn @ `[Offside Warning]:: ${msg}`, ...args\n\n  const all_lines = []\n  const q_raw_lines = source.split(rx_lines)\n\n  const offside_line_proto = @{}\n    __proto__: null\n    get source() ::\n      const {start, end} = this.loc\n      return start.slice(end)\n\n  let loc_tip = createLoc(source, feedback.file)\n  let rx_indent_choice = null\n\n  while 0 !== q_raw_lines.length ::\n    const loc = @{} start: loc_tip = loc_tip.nextLine()\n\n    const src_line = q_raw_lines.shift() || ''\n    loc.end = loc_tip = loc_tip.move(src_line)\n\n    const src_line_end = q_raw_lines.shift() || ''\n    loc_tip = loc_tip.move(src_line_end)\n\n\n    const match = rx_indent.exec(src_line)\n    const loc_indent = loc.start.move(match[1])\n    const is_blank = 0 === match[2].length\n\n    if ! rx_indent_order.test(match[1]) ::\n      throw loc.start.syntaxError @ `Mixed tab and space indent (${loc_indent})`, \n\n    const raw = @{}\n      line: src_line\n      line_end: src_line_end\n      indent: match[1]\n      content: match[2]\n\n    let node\n    if is_blank ::\n      node = @{}\n        type: 'offside_blank_line', loc\n        is_blank\n\n    else ::\n      const indent_node = @{}\n        type: 'offside_indent',\n        loc: @{}\n          start: loc.start\n          end: loc_indent\n        len_indent: match[1].length\n        indent: match[1]\n\n      const conent_node = @{}\n        type: 'offside_content',\n        loc: @{}\n          start: loc_indent\n          end: loc.end\n        len_indent: match[1].length\n        indent: match[1]\n        content: match[2]\n\n      node = @{}\n        __proto__: offside_line_proto\n        type: 'offside_line', loc\n        indent: indent_node\n        content: conent_node\n        len_indent: match[1].length\n\n    Object.defineProperties @ node, @{} raw: {value: raw}\n    all_lines.push @ node\n\n  add_indent_info(all_lines)\n  return all_lines\n\n\nfunction add_indent_info(all_lines) ::\n  let len_dedent = 0 // how far to dedent to next outer level\n  let len_stack = [0]\n  // work backwards from the file end\n  for let i = all_lines.length-1 ; i>=0 ; i-- ::\n    let ln = all_lines[i]\n    if ln.is_blank :: continue\n\n    ln.len_dedent = len_dedent\n\n    // how many indent prefix chars per line\n    let len_indent = ln.len_indent\n\n    let len_inner\n    while len_stack[0] > len_indent ::\n      len_inner = len_stack.shift()\n\n    if len_stack[0] < len_indent ::\n      // len_indent is the new stack tip\n      len_stack.unshift @ len_indent\n\n    if len_inner ::\n      ln.len_inner = len_inner\n\n    len_dedent = len_indent\n","\nexport function ensure_indent(ctx, scanner) ::\n  const ln_first = scanner.ln_first\n  if undefined === ln_first :: return true\n  const len_first_indent = ln_first.len_indent\n\n  const d_dedent = ctx.ln.len_indent - len_first_indent\n  if d_dedent < 0 ::\n    throw ctx.ln.indent.loc.end.syntaxError @\n      `Invalid indent level in ${scanner.description}. (${ctx.ln.indent.loc.end})  --  current indent: ${ctx.ln.len_indent}  start indent: ${len_first_indent} from (${ln_first.loc.start})`\n  else return true\n\n\nexport function ensure_progress(loc0, loc1) ::\n  if loc0.pos == loc1.pos ::\n    throw new Error @ `Scanner failed to make progress (${loc1})`\n\n  if loc0.pos > loc1.pos ::\n    throw new Error @ `Scanner went backward (${loc1} from ${loc0})`\n\n\n// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\n\nexport class DispatchScanner ::\n  constructor(disp_name) ::\n    this.disp_name = disp_name || 'root'\n    this.by_kind = {}\n    this.by_op = {}\n\n  startCompile() ::\n    Object.defineProperties @ this, @{}\n      rx_list: @{} value: (this.rx_list || []).slice()\n    this.by_kind = Object.assign @ {}, this.by_kind\n    this.by_op = Object.assign @ {}, this.by_op\n    return this\n\n  addScannerList(scannerList) ::\n    for const scanner of scannerList ::\n      if scanner ::\n        this.addScanner(scanner)\n    return this\n\n  addScanner(scanner) ::\n    if scanner.withDispatch ::\n      scanner = scanner.withDispatch(this)\n\n    if scanner.is_body ::\n      this.ds_body = scanner\n\n    this.by_op[scanner.op] = scanner\n\n  addRegExpScanner(scanner, kind, re_disp) ::\n    if kind ::\n      this.by_kind[kind] = scanner.op\n      this.rx_list.push @ new RegExp(re_disp, 'g')\n    return this\n\n  finishCompile(ds_body) ::\n    if undefined === ds_body ::\n      ds_body = this.ds_body\n    return Object.defineProperties @ this, @{}\n      ds_body: @{} value: ds_body, writable: true\n\n\n  clone0() ::\n    if undefined !== this.level ::\n      throw new Error @ `Invalid clone0`\n    return this.cloneWithScanner()\n\n  cloneWithScanner(...scanners) ::\n    return this.cloneWithScannerList(scanners)\n  cloneWithScannerList(scanners) ::\n    const self = Object.create(this)\n    self.level = 1 + 0|self.level\n    self.description = self.description.replace @\n      /\\(\\d+\\)/, `(${self.level})`\n\n    self.startCompile()\n    self.addScannerList(scanners)\n    self.finishCompile()\n    return self\n\n\n  get_active_dispatch(ctx) ::\n    return ctx[`dispatch_${this.disp_name}`]\n  set_active_dispatch(ctx) ::\n    ctx.dispatch = ctx[`dispatch_${this.disp_name}`] = this\n\n\n  newline(ctx, is_blank) ::\n\n  scan(ctx, idx0) ::\n    const loc0 = ctx.loc_tip\n    const res = this._scan(ctx, idx0)\n    ensure_progress @ loc0, ctx.loc_tip\n    return res\n\n  _scan(ctx, idx0) ::\n    this.set_active_dispatch(ctx)\n\n    if undefined === this.ln_first ::\n      if undefined === this.level ::\n        throw new Error('Scanner with level: undefined')\n\n      this.ln_first = ctx.ln\n\n    ensure_indent(ctx, this)\n\n    const source = ctx.ln_source // slice is done by setting lastIndex\n    let match=null, idx1 = Infinity\n\n    for const rx of this.rx_list ::\n      rx.lastIndex = idx0 // regexp powered source.slice()\n\n      const m = rx.exec(source)\n      if null !== m && m.index < idx1 ::\n        idx1 = m.index\n        match = m\n\n    if null === match ::\n      return this.ds_body.scan(ctx, idx0)\n\n    if idx0 !== idx1 ::\n      return this.ds_body.scan_fragment @\n        ctx, source.slice(idx0, idx1)\n\n    const kind = match.filter(Boolean)[1]\n    const op = this.by_kind[kind]\n    const op_scanner = this.by_op[op]\n    if ! op_scanner ::\n      throw new Error @ `No scanner registered for « ${kind} »`\n\n    return op_scanner.scan(ctx, idx1)\n\n  scan_fragment(ctx, content) ::\n    throw new Error @ `${this.description} does not support fragments`\n\n\n// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\n\nexport class DispatchFirstlineScanner extends DispatchScanner ::\n  clone0() ::\n    const self = super.clone0()\n    self.ds_body = self.ds_body.clone0()\n    return self\n  scan(ctx, idx0) ::\n    ctx.scanner = this.ds_body\n    return super.scan(ctx, idx0)\n\n\n// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\n\nexport class EmbeddedDispatchScanner extends DispatchScanner ::\n  constructor(options) ::\n    super @ options.disp_name\n    Object.assign(this, options)\n    this._compileForInit()\n\n  _compileForInit() ::\n    this.startCompile()\n    this.addScannerList(this.scannerList)\n    this.finishCompile()\n\n\n// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\n\nexport class BaseSourceScanner ::\n  constructor(options) ::\n    Object.assign(this, options)\n    this._compileForInit()\n\n  _compileForInit() ::\n\n  withDispatch(ds) :: return this\n\n  emit_ast(ctx, content, ast_type) ::\n    const start = ctx.loc_tip\n    const end = ctx.loc_tip = start.move(content || 0)\n    const ast = @{} type: ast_type || this.op, loc: {start, end}, content\n    this.ast_extend(ctx, ast)\n    ctx.parts.push @ ast\n    return ast\n\n  ast_extend(ctx, ast) ::\n\n  newline(ctx, is_blank) ::\n  scan_fragment(ctx, content) ::\n    throw new Error @ `Scanner (${this.description}) does not support fragments`\n  scan(ctx, idx0) ::\n    throw new Error @ `Scanner (${this.description}) does not support scans`\n\n\n// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\n\nexport class SourceCodeScanner extends BaseSourceScanner ::\n  get is_body() :: return true\n\n  scan_fragment(ctx, content) ::\n    this.scan_content @ ctx, content\n\n  scan(ctx, idx0) ::\n    this.scan_content @ ctx, ctx.ln_source.slice(idx0)\n\n  scan_content(ctx, content) ::\n    if content ::\n      this.emit_ast @ ctx, content\n\n\n// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\n\nexport class NestedCodeScanner extends SourceCodeScanner ::\n  constructor(options) ::\n    super(options)\n    if ! this.char_pairs ::\n      throw new Error @ 'Missing required char_pairs mapping'\n\n    const chars = Object.keys(this.char_pairs).join('\\\\')\n    this.rx = new RegExp(`([${chars}])`)\n\n  withOuter(options) ::\n    const scanner = options.scanner\n    if 'function' !== typeof scanner.scan ::\n      throw new Error @ `Expected valid outer scanner`\n    delete options.scanner\n\n    const self = Object.create @ this, @{}\n      restore_scanner: @{} value: scanner\n    Object.assign @ self, options\n    return self\n\n  scan_content(ctx, nested_content) ::\n    const {stack, char_pairs} = this\n\n    let content = ''\n    for const tok of nested_content.split(this.rx) ::\n      const p = 1 === tok.length ? char_pairs[tok] : undefined\n\n      if undefined === p ::\n        content += tok\n        continue\n\n      if true === p ::\n        content += tok\n        stack.push @ tok\n        continue\n\n      const tip = stack.pop()\n      if tip !== p ::\n        const loc = ctx.loc_tip.move(content)\n        throw loc.syntaxError @\n          `Mismatched nesting in ${this.description} (${loc})`\n\n      if 0 !== stack.length ::\n        content += tok\n        continue\n\n      if content ::\n        this.emit_ast @ ctx, content\n      this.emit_ast @ ctx, tok, this.ast_end || 'nested_end'\n      ctx.scanner = this.restore_scanner\n      return\n\n    // all tokens with non-zero stack\n    if content ::\n      this.emit_ast @ ctx, content\n\n\n// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\n\nexport class RegExpScanner extends BaseSourceScanner ::\n\n  _compileForInit() ::\n    const {rx_open, rx_close} = this\n    const rx_disp = new RegExp @\n      (rx_open ? rx_open.source : '') + rx_close.source\n\n    const rx_resume = new RegExp @\n      '^' + rx_close.source\n\n    Object.defineProperties @ this, @{}\n      rx_disp: @{} value: rx_disp\n      rx_resume: @{} value: rx_resume\n\n  withDispatch(ds) ::\n    this.compileForDispatch(ds)\n    return this\n\n  compileForDispatch(ds) ::\n    if undefined === this.kind :: return\n\n    const match = this.rx_disp.exec @ this.example\n    if null === match || this.kind !== match[1] || null == match[2] ::\n      throw new Error @ `Invalid scanner regexp and/or example (${this.description})`\n\n    ds.addRegExpScanner @ this, this.kind, this.rx_disp.source\n\n\n\n  newline(ctx, is_blank) ::\n    if ! this.multiline && ! this.allow_blank_close ::\n      throw ctx.ln.loc.end.syntaxError @\n        `Newline in ${this.description} (${ctx.ln.loc.end})`\n\n  ast_extend(ctx, ast) ::\n    const ln = this.ln_first || ctx.ln\n    if undefined !== ln.len_inner ::\n      ast.block_indent = ln.len_inner\n    return ast\n\n  scan(ctx, idx0) ::\n    const match = this.rx_disp.exec @ ctx.ln_source.slice(idx0)\n    if null === match ::\n      throw ctx.loc_tip.syntaxError @\n        `Invalid scan ${this.description}. (${ctx.loc_tip})`\n\n    const [content, open, close] = match\n\n    const t_content = this.nestTrim(content, close, false)\n    if null != t_content ::\n      this.ast_scan_match @ {open, close},\n        this.emit_ast @ ctx, t_content,\n    return this.post_scan(ctx, close)\n\n  scan_continue(ctx, idx0) ::\n    ensure_indent(ctx, this)\n\n    const match = this.rx_resume.exec @ ctx.ln_source.slice(idx0)\n    if null === match ::\n      throw ctx.loc_tip.syntaxError @\n        `Invalid scan continue ${this.description}. (${ctx.loc_tip})`\n\n    const [content, close] = match\n\n    const t_content = this.nestTrim(content, close, true)\n    if null != t_content ::\n      this.ast_scan_match @ {close},\n        this.emit_ast @ ctx, t_content,\n    return this.post_scan(ctx, close)\n\n  ast_scan_match(match, ast) ::\n\n  nestTrim(content, close, isContinue) :: return content\n\n  post_scan(ctx, close) ::\n    if ! close ::\n      if this.invert_close ::\n        // e.g. no '\\' continuations at end of line\n        return true\n\n      if ! this.allow_blank_close ::\n        ctx.scanner = this.continueScanner(ctx)\n      return\n\n    else if this.invert_close ::\n      // e.g. '\\' continuations at end of line\n      ctx.scanner = this.continueScanner(ctx)\n\n    return this.nestMatch @ close,\n      ctx, this.hostScanner || this\n\n  nestMatch(close, ctx, hostScanner) ::\n    const nesting = this.nesting\n    if undefined !== nesting ::\n      return this.nestWith @\n        nesting[close],\n        ctx, hostScanner\n    return true // pop ctx.scanner\n\n  nestWith(nested, ctx, hostScanner) ::\n    if true === nested || undefined === nested || null === nested ::\n      return true // pop ctx.scanner\n\n    else if hostScanner === nested || 'host' === nested ::\n      ctx.scanner = hostScanner.continueScanner(ctx)\n      return\n\n    else if 'function' === typeof nested.nestedScanner ::\n      ctx.scanner = nested.nestedScanner(ctx)\n      return\n\n    else if 'function' === typeof nested ::\n      return nested @ ctx, hostScanner\n\n    return nested\n\n\n  nestedScanner(ctx) ::\n    return this._asNestedScanner @ ctx, 'nest', @{}\n\n  continueScanner(ctx) ::\n    return this._asNestedScanner @ ctx, 'cont', @{}\n      op: this.op_continue || this.op\n      continueScanner(ctx) :: return this\n      scan(ctx, idx0) ::\n        this.scan_continue(ctx, idx0)\n\n  _asNestedScanner(ctx, desc, body) ::\n    const restore_scanner = ctx.scanner\n    const self = @{}\n      __proto__: this\n      description: `${this.description} (${desc})`\n      ln_first: ctx.ln_first || ctx.ln\n\n      _pop_scanner(ctx) ::\n        if this.op_pop ::\n          this.emit_ast @ ctx, '', this.op_pop\n        ctx.scanner = restore_scanner\n\n      scan(ctx, idx0) ::\n        if true === super.scan(ctx, idx0) ::\n          this._pop_scanner(ctx)\n\n      scan_continue(ctx, idx0) ::\n        if true === super.scan_continue(ctx, idx0) ::\n          this._pop_scanner(ctx)\n\n    return Object.assign @ self, body\n\n\n// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\n\nexport class MultiLineScanner extends RegExpScanner ::\n  newline(ctx, is_blank) ::\n  get multiline() :: return true\n\n  ast_extend(ctx, ast) ::\n    //let ln = this.ln_first || ctx.ln\n    let col = ast.loc.start.column\n    let mlctx = this.mlctx ??= {col}\n\n    if col < mlctx.col ::\n      mlctx.col = col\n\n    ast.mlctx = mlctx\n    return ast\n\n\n// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\n\nexport class TaggedRegExpScanner extends RegExpScanner ::\n  withTag(ctx, tag, hostScanner) ::\n    const rx_replace = this.rx_replace || /tag/g\n\n    const re_open = this.rx_open.source\n      .replace @ rx_replace, tag\n    const re_close = this.rx_close.source\n      .replace @ rx_replace, tag\n\n    const rx_open = new RegExp @ re_open\n    const rx_close = new RegExp @ re_close\n    const rx_disp = new RegExp @ re_open + rx_close.source\n    const rx_resume = new RegExp @ '^' + re_close\n\n    const self = @{} __proto__: this, hostScanner,\n      rx_open, rx_close, rx_resume, rx_disp,\n      tag, ln_first: ctx.ln\n      compileForDispatch(ds) ::\n        // skip testing example for second pass of this object\n        ds.addRegExpScanner @ this, this.kind, this.rx_disp.source\n\n    self.tagScanner(ctx, tag, hostScanner)\n    return self\n\n  tagScanner(ctx, tag, hostScanner) ::\n\n\n// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\n\nexport class DynamicScanner extends MultiLineScanner ::\n  scan(ctx, idx0) ::\n    const leader_match = this.rx_disp.exec @ ctx.ln_source.slice(idx0)\n\n    const self = this.withLeaderTag @ ctx, leader_match[2]\n    return self._leader.scan(ctx, idx0)\n\n  withLeaderTag(ctx, tag) ::\n    const self = @{}\n      __proto__: this\n      __root__: this.__root__ || this\n      ln_first: ctx.ln\n\n    self._trailer = this.trailer && this.trailer.withTag @ ctx, tag, self\n    self._leader = this.leader.withTag @ ctx, tag, self\n    return self\n\n\n// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\n\nexport class EmbeddedDynamicScanner extends DynamicScanner ::\n  continueScanner(ctx) ::\n    ensure_indent(ctx, this)\n    const ds_body = this.ds_body.cloneWithScanner @ this._trailer\n\n    // inherit ln_first\n    ds_body.ln_first = \n      ds_body.disp_name === ctx.dispatch.disp_name\n        ? ctx.dispatch.ln_first\n        : this.ln_first || ctx.ln\n\n    return ds_body\n\n  andDispatchWith(options) ::\n    options.scannerList = @[] ... options.scannerList, this\n    const ds_body = new EmbeddedDispatchScanner(options)\n    this.ds_body = ds_body\n    return ds_body\n\n","import { DispatchScanner, DispatchFirstlineScanner } from './context_scanner.jsy'\n\nexport function bind_context_scanner(context_scanners) ::\n  if ! Object.isFrozen(context_scanners) || ! Array.isArray(context_scanners) ::\n    throw new TypeError @ `Expected a frozen array of context scanners`\n\n  const cache = bind_context_scanner.cache || new WeakMap()\n  if cache !== bind_context_scanner.cache ::\n    bind_context_scanner.cache = cache\n\n  let res = cache.get(context_scanners)\n  if undefined === res ::\n    res = compile_context_scanner(context_scanners)\n    cache.set(context_scanners, res)\n  return res\n\n\nfunction compile_context_scanner(context_scanners) ::\n  const ds_first = build_composite_scanner(context_scanners)\n  return context_scanner\n\n  function context_scanner(offside_lines) ::\n    const ctx = @{} scanner: ds_first.clone0()\n\n    for const ln of offside_lines ::\n      if ln.is_blank ::\n        delete ln.content\n        ctx.scanner.newline(ctx, true)\n        continue\n\n\n      ctx.parts = []\n      ctx.ln = ln\n\n      scan_source(ctx, ln.content)\n\n      if 0 === ctx.parts.length ::\n        throw new Error @ `No parts generated by context scanner`\n\n      ln.content = ctx.parts\n      ctx.scanner.newline(ctx, false)\n\n    ctx.scanner.newline(ctx, true)\n    return offside_lines\n\n\n  function scan_source(ctx, ln_content) ::\n    const ln_source = ctx.ln_source = ln_content.content\n    const loc_start = ctx.loc_tip = ctx.loc_start = ln_content.loc.start\n    const pos0 = loc_start.pos\n\n    while true ::\n      const idx0 = ctx.loc_tip.pos - pos0\n      if idx0 >= ln_source.length ::\n        return // done with this line\n\n      ctx.scanner.scan @ ctx, idx0\n\n\n  function build_composite_scanner() ::\n    const ds_body = new DispatchScanner().startCompile()\n    ds_body.description = 'JSY Dispatch scanner (0)'\n    const ds_first = new DispatchFirstlineScanner().startCompile()\n    ds_first.description = 'Firstline JSY Dispatch scanner (0)'\n\n    for const scanner of context_scanners ::\n      if ! scanner :: continue\n\n      const ds = scanner.firstline ? ds_first : ds_body\n      ds.addScanner(scanner)\n\n    ds_body.finishCompile()\n    return ds_first.finishCompile(ds_body)\n\n","import { basic_offside_scanner } from './basic_offside.jsy'\nimport { bind_context_scanner } from './basic_contexts.jsy'\n\nexport function scan_offside_contexts(source, feedback, disp_name, context_scanners) ::\n  // see scan_javascript and scan_clike for good context_scanners\n  const context_scanner = bind_context_scanner(disp_name, context_scanners)\n  return context_scanner @ basic_offside_scanner(source, feedback)\n\n","import { SourceCodeScanner, NestedCodeScanner, RegExpScanner, MultiLineScanner } from './context_scanner.jsy'\nimport { scan_offside_contexts } from './basic_offside_contexts.jsy'\n\nexport const scanner_source =\n  new SourceCodeScanner @:\n      description: 'Source Code Scanner'\n      op: 'src'\n\nexport const scanner_nestedSrc =\n  new NestedCodeScanner @:\n    op: 'src', description: 'Template parameter source'\n    char_pairs: @{}\n      '{': true, '}': '{'\n      '(': true, ')': '('\n      '[': true, ']': '['\n\nexport const scanner_hashbangDirective =\n  new RegExpScanner @:\n      description: 'Hashbang directive'\n      example: '#!/usr/bin/env node'\n      op: 'hashbang', kind:'#!'\n      rx_open: /^(#!)/, rx_close: /.*($)/,\n      firstline: true\n      allow_blank_close: true\n\nexport const scanner_commentEOL =\n  new RegExpScanner @:\n      description: 'Comment to end of line'\n      example: '// comment'\n      op: 'comment_eol', kind:'//'\n      rx_open: /(\\/\\/)/, rx_close: /.*($)/,\n      allow_blank_close: true\n\nexport const scanner_commentMultiLine =\n  new MultiLineScanner @:\n      description: 'Multi-line comment'\n      example: '/* comment */'\n      op: 'comment_multi', kind:'/*'\n      rx_open: /(\\/\\*)/, rx_close: /.*?(\\*\\/|$)/,\n\nexport const scanner_strSingle =\n  new RegExpScanner @:\n      description: 'Single quote string literal'\n      example: \"'single quote'\"\n      op: 'str1', kind:\"'\"\n      rx_open: /(')/, rx_close: /(?:\\\\.|[^'])*('|$)/,\n\nexport const scanner_strDouble =\n  new RegExpScanner @:\n      description: 'Double quote string literal'\n      example: '\"double quote\"'\n      op: 'str2', kind:'\"'\n      rx_open: /(\")/, rx_close: /(?:\\\\.|[^\"])*(\"|$)/,\n\nexport const scanner_preprocessor =\n  new RegExpScanner @:\n      description: 'Preprocessor directive'\n      example: '# IF platform === \"web\"'\n      op: 'preprocessor', kind:'#'\n      rx_open: /^\\s*(#)/, rx_close: /.*?([\\\\]?)\\s*$/,\n      invert_close: true // preprocessor uses '\\' continuations\n      allow_blank_close: true\n\n\nexport const clike_context_scanners = Object.freeze @#\n  scanner_source\n  scanner_hashbangDirective\n  scanner_commentEOL\n  scanner_commentMultiLine\n  scanner_strSingle\n  scanner_strDouble\n  scanner_preprocessor\n\n\nexport function scan_clike(source, feedback) ::\n  return scan_offside_contexts(source, feedback, clike_context_scanners)\n\n","import { scan_offside_contexts } from './basic_offside_contexts.jsy'\nimport { RegExpScanner, MultiLineScanner } from './context_scanner.jsy'\nimport { scanner_source, clike_context_scanners, scanner_nestedSrc } from './scan_clike.jsy'\n\nexport const scanner_regexp =\n  new RegExpScanner @:\n      description: 'RegExp literal'\n      example: '/regexp/'\n      op: 'regexp'\n      kind: '/'\n\n      /*\n      rx_open: rx_or_parts @:\n        opts: @[]\n          /(\\/)(?![\\/\\*])/    // start of a potential regexp literal, but not a comment\n\n          @{}                 // ...complex regexp grammar...\n            pre: ''\n            opts: @[]\n              /\\\\./           // ...any escaped character...\n              /[^\\\\\\/\\[]/     // ...or any non-special character...\n\n              @{}             // ... or a bracket [] expression...\n                pre: '\\\\['        // started with a '[' character\n                opts: @[]\n                  /\\\\./           // ...with any escaped character\n                  /[^\\]]/         // ...or any non-escaped non-ending ']' character\n                post: '*\\\\]'      // ended with an ending ']' character\n\n            post: '+'         // one or more interior expressions\n\n          /(?=\\/)/            // (lookahead) end of a regexp literal\n      */\n\n      rx_open: new RegExp @\n        /(\\/)(?![\\/\\*])/ .source + // a RegExp start but not a comment\n        /(?:\\\\.|[^\\\\\\/\\[]|\\[(?:\\\\.|[^\\]])*\\])+/ .source\n\n      rx_close: /(\\/[a-z]*)\\s*(?=[;.,)\\]}]|$)/  // inspired by vim's syntax highlighting end\n\n      //multiline: false // spec https://tc39.es/ecma262/#sec-literals-regular-expression-literals\n\n\nexport const scanner_strTemplate =\n  new MultiLineScanner @:\n      description: 'Template quote string literal'\n      example: '`template string`'\n      op: 'str_template'\n      kind: '`'\n      rx_open: /(`)\\\\?/\n      rx_close: /(?:\\\\.|\\$(?!{)|[^\\$`\\\\])*(`|\\${|$)/\n      nesting: @{}\n        '${': templateArgNesting\n\n      ast_scan_match(scan, ast) ::\n        if '`' == scan.open ::\n          ast.tmpl_opened = true\n        if '`' == scan.close ::\n          ast.tmpl_closed = true\n\nfunction templateArgNesting(ctx, hostScanner) ::\n  const src = scanner_nestedSrc.withOuter @:\n    scanner: hostScanner.continueScanner(ctx)\n    stack: @[] '{' // from the template parameter opening\n    ast_end: 'template_param_end'\n\n  src.emit_ast @ ctx, '', 'template_param'\n\n  ctx.scanner = ctx.dispatch_root.cloneWithScanner(src)\n\n\n\nexport const js_context_scanners = Object.freeze @#\n  scanner_regexp\n  scanner_strTemplate\n  ... clike_context_scanners\n\nexport function scan_javascript(source, feedback) ::\n  return scan_offside_contexts(source, feedback, js_context_scanners)\n\n","import { scan_offside_contexts } from './basic_offside_contexts.jsy'\nimport { js_context_scanners } from './scan_javascript.jsy'\nimport { scanner_nestedSrc } from './scan_clike.jsy'\nimport { SourceCodeScanner, RegExpScanner } from './context_scanner.jsy'\nimport { EmbeddedDynamicScanner, TaggedRegExpScanner } from './context_scanner.jsy'\n\n\nexport const scanner_jsxContent =\n  new SourceCodeScanner @:\n      description: 'JSX Content Scanner'\n      op: 'jsx_content'\n\nexport const scanner_jsxContentExpr =\n  new RegExpScanner @:\n      description: 'JSX Content Expression'\n      example: '{ param }'\n      op: 'jsx_content_expr'\n      kind: '{'\n      rx_open: /\\s*({)/,\n      rx_close: /()/,\n\n      nestTrim(content, close, isContinue) ::\n      post_scan(ctx) :: jsxArgNesting @ ctx, null\n\nexport const scanner_jsxAttrNameValue =\n  new RegExpScanner @:\n      description: 'JSX attribute name value'\n      op: 'jsx_attr_name'\n      rx_open: /\\s*([a-zA-Z0-9_:.\\-]+)/,\n      rx_close: /\\s*(=)\\s*/,\n\nexport const scanner_jsxAttrNameOnly =\n  new RegExpScanner @:\n      description: 'JSX attribute name only'\n      op: 'jsx_attr_name_only'\n      rx_open: /\\s*([a-zA-Z0-9_:.\\-]+)/,\n      rx_close: /()/,\n\n      post_scan(ctx, close) ::\n        return this.nestMatch @ close,\n          ctx, this.hostScanner || this\n\nexport const scanner_jsxAttrSingle =\n  new RegExpScanner @:\n      description: 'JSX Single quote attribute literal'\n      multiline: true\n      op: 'jsx_attr_str1'\n      rx_open: /\\s*(')/,\n      rx_close: /(?:\\\\.|[^'])*(')\\s*/,\n\nexport const scanner_jsxAttrDouble =\n  new RegExpScanner @:\n      description: 'JSX Double quote attribute literal'\n      multiline: true\n      op: 'jsx_attr_str2'\n      rx_open: /\\s*(\")/,\n      rx_close: /(?:\\\\.|[^\"])*(\")\\s*/,\n\nexport const scanner_jsxTagClose =\n  new TaggedRegExpScanner @:\n      description: 'JSX Close Tag'\n      example: '</tag>'\n      op: 'jsx_tag_close'\n      kind: '</'\n      multiline: true\n      rx_open: /(<\\/)\\s*/\n      rx_close: /([a-zA-Z0-9_:.\\-]+)\\s*>/\n\n      tagScanner(ctx) ::\n        this.restore_scanner = ctx.scanner\n\n      post_scan(ctx, close) ::\n        if close !== this.tag ::\n          throw ctx.loc_tip.syntaxError @\n            `Mismatched JSX close tag \"</${close}>\", expected \"</${this.tag}>\". (${ctx.loc_tip})`\n\n        ctx.scanner = this.restore_scanner\n\n\n\nexport const scanner_jsxTag =\n  new TaggedRegExpScanner @:\n      description: 'JSX Tag'\n      multiline: true\n      op: 'jsx_tag'\n      op_continue: 'jsx_tag_part'\n\n      rx_open: /(<)tag\\b\\s*/\n      rx_close: /\\s*?($|\\/>|[{'\">]|[a-zA-Z0-9_:.\\-]+=?)/\n\n      nesting: @{}\n        '>': 'host' // use hostScanner\n        '/>': true // pop ctx.scanner\n\n      nestingEnd: @{}\n        '{': jsxArgNesting\n        '=': scanner_jsxAttrNameValue\n        \"'\": scanner_jsxAttrSingle\n        '\"': scanner_jsxAttrDouble\n\n      nestTrim(content, close, isContinue) ::\n        if ! this.nesting[close] ::\n          content = content.slice(0, - close.length)\n        return content || null\n\n      nestMatch(close, ctx, hostScanner) ::\n        let inner = this.nesting[close]\n        if undefined === inner ::\n          inner = this.nestingEnd[close.slice(-1)]\n            || scanner_jsxAttrNameOnly\n\n        if true !== inner && 'host' !== inner ::\n          // we're actually pushign two scanners onto the stack\n          // the first for this context, the second for the attribute\n          ctx.scanner = hostScanner = this.continueScanner(ctx)\n\n        return this.nestWith @ inner, ctx, hostScanner\n\nfunction jsxArgNesting(ctx, hostScanner) ::\n  const src = scanner_nestedSrc.withOuter @:\n    scanner: null !== hostScanner\n      ? hostScanner.continueScanner(ctx)\n      : ctx.scanner\n    stack: @[] '{' // from the jsx parameter opening\n    ast_end: 'jsx_param_end'\n\n  src.emit_ast @ ctx, '{', 'jsx_param'\n\n  ctx.scanner = ctx.dispatch_root.cloneWithScanner(src)\n\n\n\n\nexport const scanner_jsx =\n  new EmbeddedDynamicScanner @:\n      description: 'Embedded JSX expression'\n      example: '<section>content</section>'\n      kind:'<'\n      disp_name: 'jsx'\n      op: 'jsx'\n\n      // recognize by '<tag' followed by 'attr=' or '/>' or '>'\n      rx_open: /(<)([a-zA-Z0-9_:.\\-]+)(?=\\s*?(?:$|\\/>|>|\\s{|\\s[a-zA-Z0-9_:\\-]+=?))/\n      rx_close: /.*$/\n\n      leader: scanner_jsxTag\n      trailer: scanner_jsxTagClose\n\n\nexport const scanner_embedded_jsx =\n  scanner_jsx.andDispatchWith @:\n    description: 'JSX Dispatch Scanner (0)'\n    disp_name: 'jsx'\n\n    scannerList: @[]\n      scanner_jsxContent\n      scanner_jsxContentExpr\n\nexport const scanner_jsx_close_fragment =\n  new RegExpScanner @:\n      description: 'Embedded JSX fragment close expression'\n      example: '</>'\n      op: 'jsx_frag_close'\n      kind: '</'\n      allow_blank_close: true\n\n      rx_open: /(<\\/)\\s*/\n      rx_close: /([a-zA-Z0-9_:.\\-]*)\\s*>/\n\n      post_scan(ctx, close) ::\n        if close ::\n          throw ctx.loc_tip.syntaxError @\n            `Mismatched JSX fragment close tag \"</${close}>\", expected \"</$>\". (${ctx.loc_tip})`\n\n        ctx.scanner = this.restore_scanner\n\nexport const scanner_jsx_fragment =\n  new RegExpScanner @:\n      description: 'Embedded JSX fragment expression'\n      example: '<></>'\n      op: 'jsx_frag'\n      kind: '<>'\n\n      rx_open: /(<>)/\n      rx_close: /.*($|<\\/>)/\n\n      nestTrim(content, close, isContinue) ::\n        return '<>'\n\n      post_scan(ctx) ::\n        const jsx_frag_close = @{}\n          __proto__: scanner_jsx_close_fragment\n          restore_scanner: ctx.scanner\n\n        const ds_body = \n          scanner_embedded_jsx.cloneWithScanner @\n            jsx_frag_close\n\n        ds_body.description = 'Fragment' + ds_body.description\n        const disp = ds_body.get_active_dispatch(ctx)\n        ds_body.ln_first = disp && disp.ln_first || ctx.ln\n\n        ctx.scanner = ds_body\n\n\n\n\nexport const jsx_context_scanners = Object.freeze @#\n  scanner_jsx_fragment\n  scanner_jsx\n  ... js_context_scanners\n\nexport function scan_javascript_with_jsx(source, feedback) ::\n  return scan_offside_contexts(source, feedback, jsx_context_scanners)\n\n\n","import { rx_offside_ops, rx_keyword_ops, rx_unknown_ops } from './regexp.jsy'\nimport { inject_dedent } from '../scanner/inject_dedent.jsy'\nimport { scan_javascript_with_jsx } from '../scanner/scan_jsx_javascript.jsy'\n\nexport * from '../scanner/ast_debug.jsy'\n\nconst _is_offside_dedent = part => 'offside_dedent' === part.type\nexport function jsy_scan(source, feedback) ::\n  const jsy_ast = scan_javascript_with_jsx(source, feedback)\n\n  inject_dedent @ jsy_ast, @[] 'comment_eol'\n\n  for let ln of jsy_ast ::\n    if ln.is_blank :: continue\n\n    let ln_parts = ln.content = transform_jsy_ops(ln.content, ln)\n\n    let idx_tail = ln_parts.findIndex @ _is_offside_dedent\n    let dedent = ln_parts[idx_tail--]\n\n    while idx_tail >= 0 ::\n      let tail = ln_parts[idx_tail--]\n      if undefined === tail ::\n        continue\n\n      if /^jsy_op/.test(tail.type) ::\n        dedent.ends_with_jsy_op = true\n        tail.ending_jsy_op = true\n      else if 'src' !== tail.type || tail.content.trim() ::\n        break\n\n  return jsy_ast\n\n\n\nfunction transform_jsy_ops(ln_parts, ln) ::\n  const res = []\n\n  for let p, i=0; undefined !== (p = ln_parts[i]) ; i++ ::\n    if 'src' === p.type ::\n      transform_jsy_part(res, p, ln)\n    else res.push(p)\n\n\n  // allow keywords at the start and in code blocks after \"::\"\n  let kw_allowed = 'src' === res[0].type\n  for let idx=0 ; undefined !== res[idx] ; idx ++ ::\n    if kw_allowed ::\n      transform_jsy_keyword(res, idx, ln)\n      kw_allowed = false\n\n    else if 'jsy_op' === res[idx].type ::\n      kw_allowed = '::' === res[idx].op\n\n  return res\n\n\n\nfunction transform_jsy_keyword(res, idx, ln) ::\n  const first = res[idx]\n\n  rx_keyword_ops.lastIndex = 0\n  const kw_match = rx_keyword_ops.exec(first.content)\n  if ! kw_match :: return false\n\n  const rest = kw_match.input.slice @ rx_keyword_ops.lastIndex\n  if '(' === rest[0] ::\n    return res // explicit keyword arguments\n\n  const kw_start = first.loc.start\n  const kw_end = kw_start.move @ kw_match[0]\n  const kw = kw_match[0].split(' ').filter(Boolean).join(' ')\n\n  const after = rest ? null : res[1+idx]\n  const explicit = after && 'jsy_op' === after.type && '@' === after.op\n\n  const kw_node = @{}\n    type: 'jsy_kw', kw, \n    loc: @{} start: kw_start, end: kw_end\n    len_indent: ln.len_indent\n    explicit\n\n  const post_node = as_src_ast @ rest, kw_end, first.loc.end\n\n  res.splice @ idx, 1, kw_node, post_node\n  return true\n\n\nfunction transform_jsy_part(res, part, ln) ::\n  ::\n    rx_offside_ops.lastIndex = 0\n\n    let loc_tip = part.loc.start\n    while true ::\n      let start = loc_tip, idx0 = rx_offside_ops.lastIndex\n      const op_match = rx_offside_ops.exec(part.content)\n\n      if ! op_match ::\n        _tail(loc_tip, idx0)\n        return res\n\n      if idx0 < op_match.index ::\n        start = loc_tip = _inner(loc_tip, idx0, op_match.index)\n        idx0 = rx_offside_ops.lastIndex\n\n\n      const op = op_match[0].trim()\n      const end = loc_tip = loc_tip.move(op_match[0])\n\n      const op_part = @{}\n        type: 'jsy_op', op\n        loc: @{} start, end\n        len_indent: ln.len_indent\n        content: op_match[0]\n\n      const op_args = op_match.slice(1).filter(Boolean)\n      if op_args.length ::\n        op_part.type = 'jsy_op_args'\n        op_part.op_args = op_args\n        op_part.op = op_args.reduce @\n          (op, p) => op.replace(p, ''), op\n\n      res.push @ op_part\n\n  function _unknown_ops(content, loc_tip, idx0) ::\n    rx_unknown_ops.lastIndex = idx0\n    const op_unknown = rx_unknown_ops.exec(content)\n    if op_unknown ::\n      const op = op_unknown[0].trim()\n      const start = loc_tip\n      const end = loc_tip = loc_tip.move(op_unknown[0])\n      res.push @:\n        type: 'jsy_unknown', op\n        loc: @{} start, end\n        len_indent: ln.len_indent\n        content: op_unknown[0]\n\n  function _inner(loc_tip, idx0, idx_content) ::\n    const pre = part.content.slice(idx0, idx_content)\n    _unknown_ops(pre, loc_tip, idx0)\n\n    const start = loc_tip\n    const end = loc_tip.move(pre)\n    res.push @ as_src_ast @ pre, start, end\n    return end\n\n  function _tail(loc_tip, idx0) ::\n    const rest = part.content.slice(idx0)\n    if rest ::\n      _unknown_ops(rest, loc_tip, idx0)\n\n      const start = loc_tip\n      const end = start.move(rest)\n      res.push @ as_src_ast @ rest, start, end\n\nfunction as_src_ast(content, start, end) ::\n  return @{} type: 'src', loc: {start, end}, content\n\n\nexport { jsy_scan as scan_jsy, jsy_scan as default }\n","\nconst pp_sym = Symbol('#IF?')\nconst basic_preprocessor_proto = @{}\n  bind() ::\n    const rx = /^#\\s*([A-Z]+\\b)(.*)$/\n    return @\\ part, stacktop ::\n      let [,directive,arg] = rx.exec(part.content) || []\n      if ! this['v$'+directive] ::\n        throw this.syntaxError(part)\n\n      return this['v$'+directive] @\n        part, (arg||'').trim(), stacktop\n\n  syntaxError: part => part.loc.start.syntaxError @ `Preprocessor Invalid: \"${part.content}\"`\n\n  v$IF(part, arg, stacktop) ::\n    if ! arg :: throw this.syntaxError(part)\n    let ans = !! this.answerFor(arg)\n    return stacktop[pp_sym] = ans\n\n  v$ELIF(part, arg, stacktop) ::\n    if ! arg || 'boolean' !== typeof stacktop[pp_sym] ::\n      throw this.syntaxError(part)\n\n    if ! stacktop[pp_sym] ::\n      let ans = !! this.answerFor(arg)\n      return stacktop[pp_sym] = ans\n    return false\n\n  v$ELSE(part, arg, stacktop) ::\n    if arg || 'boolean' !== typeof stacktop[pp_sym] ::\n      throw this.syntaxError(part)\n\n    if ! stacktop[pp_sym] ::\n      stacktop[pp_sym] = null\n      return true\n    return false\n\n\nexport function basic_preprocessor(answerFor) ::\n  if null == answerFor ::\n    return // defines is null -- disable preprocessor\n\n  if 'object' === typeof answerFor ::\n    answerFor = shunting_yard(answerFor)\n  else if 'function' !== typeof answerFor ::\n    throw new TypeError @ `Expected a function or object for basic_preprocessor`\n\n  return {__proto__: basic_preprocessor_proto, answerFor}.bind()\n\n\nexport function shunting_yard(defines) ::\n  ::\n    let _op_ = (order, op_fn) => (op_fn.order=order, op_fn)\n    let NOT = v => ! v\n    let AND = (a, b) => a && b\n    let OR = (a, b) => a || b\n\n    let ops = @{}\n      __proto__: null\n      false: false, FALSE: false,\n      true: true, TRUE: true\n      NOT, '!': _op_(0, NOT),\n      AND, '&&': _op_(10, AND),\n      OR, '||': _op_(20, OR),\n\n    var lut_expr = key => ops[key] ?? defines[key]\n\n  function eval_op(fn_op, args) ::\n    args.push @\n      fn_op.length\n        ? fn_op(... args.splice(-fn_op.length))\n        : fn_op()\n\n  return function eval_shunting_yard(expr_src) ::\n    // see https://en.wikipedia.org/wiki/Shunting-yard_algorithm\n    let args=[], ops=[]\n\n    let expr = expr_src.split(/\\s+/).map(lut_expr)\n    for let tip of expr ::\n      if 'function' !== typeof tip ::\n        args.push(tip)\n        continue\n\n      // eval all lesser order operations\n      while ops[0] && (0 | ops[0].order) <= (0 | tip.order) ::\n        eval_op(ops.shift(), args)\n\n      // push this operator on the stack\n      ops.unshift(tip)\n\n    // evaluate all operations\n    while ops[0] ::\n      eval_op(ops.shift(), args)\n\n    if 1 !== args.length ::\n      throw new SyntaxError @\n        `Invalid preprocessor expression: \"${expr_src}\"`\n\n    return args[0]\n\n","\nexport const preprocess_visitor = @{}\n  __proto__: null\n\n  *ast_iter(ast) ::\n    let ln, state = this.start()\n\n    for ln of ast ::\n      ln = ln.is_blank\n        ? this.blank_line(ln)\n        : this.ast_line(ln, state)\n\n      if null != ln ::\n        yield ln\n\n    ln = this.finish(state)\n    if null != ln ::\n      yield ln\n\n  start() :: return @{} tip: {}\n  finish(state) ::\n\n  blank_line(ln) :: return ln\n\n  indent_state(ln, state) ::\n    let tip = state.tip\n    while ln.len_indent < (tip.len|0) ::\n      tip = tip.tail\n\n    return state.tip = tip\n\n  _dbg_ln(ln) :: return ln.indent.indent + ln.content.map(v=>v.content||'').join('')\n\n  ast_line(ln, state) ::\n    let tip = this.indent_state(ln, state)\n\n    if 'exclude' === tip.op ::\n      this.exclude_line(ln, state)\n      return ln\n\n    //if tip.dedent > 0  ::\n    //  ln.indent.indent = ln.indent.indent.slice(0, -tip.dedent)\n\n    for let part of ln.content ::\n      this[`v$${part.type}`]?.( part, ln, state )\n    return ln\n\n  preprocess(p, stacktop) ::\n  v$preprocessor(p, ln, state) ::\n    let tail = state.tip\n    let ans = p.ans = this.preprocess(p, tail)\n\n    if false === ans ::\n      p.type += '_exc'\n      state.tip = @{}\n        op: 'exclude'\n        len: ln.len_inner\n        tail\n\n    else if true === ans ::\n      p.type += '_inc'\n      state.tip = @{}\n        len: ln.len_inner\n        //dedent: (tail.dedent|0) + ln.len_inner - ln.len_indent\n        tail\n\n    else if 'string' === typeof ans ::\n      p.type += '_sz'\n\n\n  exclude_line(ln, state) ::\n    let content = @[]\n      @{} type: 'exclude_line', content: '//~ '\n\n    for let part of ln.content ::\n      if 'offside_dedent' === part.type ::\n        content.unshift(part)\n      else ::\n        part.type = 'exclude_part'\n        content.push(part)\n\n    ln.content = content\n    return ln\n\n","const rx_punct = /[,.;:?]/\nconst rx_binary_ops = /\\&\\&|\\|\\||\\?\\?/\nconst rx_add_sub_ops = /(?<![+-])[+-]/ // but exclude increment and decrement ops\n\nconst rx_disrupt_comma_tail = \n  _regexp_join('', [ rx_punct, /=>/, rx_add_sub_ops, rx_binary_ops ], '\\\\s*$')\n\nconst rx_disrupt_comma_head = \n  _regexp_join('^\\\\s*', [ rx_punct, rx_binary_ops ], '')\n\nconst rx_rescue_comma_head = \n  _regexp_join('^\\\\s*', [ /\\.\\.\\./ ], '')\n\nconst rx_last_bits = /[()\\[\\]{}]|<\\/?\\w*>/ ;\nconst rx_dict_as_name = /\\s+as\\s+\\w+/g\n\nexport function checkOptionalComma(op, pre_body, post_body) ::\n  let pre_end = pre_body.split(rx_last_bits).pop()\n  if rx_disrupt_comma_tail.test(pre_end) ::\n    return false\n\n  let post_start = post_body.split(rx_last_bits).shift()\n  if rx_disrupt_comma_head.test(post_start) ::\n    if ! rx_rescue_comma_head.test(post_start) ::\n      return false\n\n  if op.pre.includes('{') ::\n    // support for blocks like:\n    //   import {name as othername} from 'file' blocks\n    //   export {name as othername}\n    pre_body = pre_body.replace(rx_dict_as_name, '')\n    post_body = post_body.replace(rx_dict_as_name, '')\n\n  if checkSyntax @ `${op.pre} ${pre_body} , post_body ${op.post}` ::\n    return true\n\n  if checkSyntax @ `${op.pre} pre_body , ${post_body} ${op.post}` ::\n    return true\n\n  return false\n\n\nconst fn_flavors = @[]\n  (function(){}).constructor\n  (function *(){}).constructor\n  (async function(){}).constructor\n  (async function *(){}).constructor\n\nfunction checkSyntax(expr) ::\n  for let FuncKind of fn_flavors ::\n    try ::\n      new FuncKind @ `return ${expr}`\n      return true\n    catch err ::\n\n  return false\n\n\nfunction _regexp_join(pre, rx_options, post) ::\n  rx_options = [... rx_options]\n    .flatMap @ rx => rx ? [rx.source] : []\n  return new RegExp(`${pre}(?:${rx_options.join('|')})${post}`)\n\n","import { at_offside_map, extra_jsy_ops, op_template_str } from './jsy_operators.jsy'\nimport { checkOptionalComma } from './optional_comma.jsy'\n\nconst rx_leading_space = /^[ \\t]+/ ;\n\nconst root_head = Object.freeze @: __proto__: null\n\nexport const transpile_visitor = @{}\n  __proto__: null\n\n  *ast_iter(jsy_ast) ::\n    this.start()\n\n    let ln, fin\n    for ln of jsy_ast ::\n      fin = this.ast_line(ln)\n      yield `${fin?.join('') ?? fin ?? ''}\\n`\n\n    fin = this.finish()\n    yield `${fin?.join('') ?? fin ?? ''}\\n`\n\n\n  ast_line(ln) ::\n    if ln.is_blank ::\n      return this.blank_line(ln)\n\n    this.start_line(ln)\n    this.v$offside_indent(ln.indent)\n\n    let prev = ln.indent\n    for let part of ln.content ::\n      let fn_visit = `v$${part.type}`\n      if undefined === this[fn_visit] ::\n        throw new Error @ `JSY transpile function \"${fn_visit}\" not found`\n\n      this[fn_visit]( part, ln, prev )\n      prev = part\n\n    return this.finish_line(ln)\n\n  start() ::\n    this.lineno = 0\n    this.head = root_head\n\n  finish() ::\n    if root_head !== this.head ::\n      throw new Error @ 'Excess stack at finish'\n\n  blank_line(ln) ::\n    this.lineno ++\n\n  start_line(ln) ::\n    this.lineno ++\n    this.cur_ln = ln\n    let line_src = this._cur = []\n    line_src.finish_ops = []\n\n  finish_line(ln) ::\n    let line_src = this._cur\n    for let fn of line_src.finish_ops || [] ::\n      line_src = fn(line_src, ln)\n\n    let comma_body = this.head.comma_body\n    if undefined !== comma_body ::\n      comma_body.push @ '\\n'\n\n    return line_src\n\n  emit_raw(src) ::\n    if src :: this._cur.push @ src\n\n  emit(src, loc_start) ::\n    if loc_start && this.addSourceMapping ::\n      const column = this._cur.join('').length\n      this.addSourceMapping @:\n        generated: @{} line: this.lineno, column\n        original: @{} line: loc_start.line, column: loc_start.column\n\n    const comma_body = this.head.comma_body\n    if undefined !== comma_body ::\n      comma_body.push @ src\n\n    this._cur.push @ src\n\n  emit_indent(indent) ::\n    const cur = this._cur\n    if 0 !== cur.length ::\n      throw new Error @ `Indent must be first element of cur list`\n\n    const comma_body = this.head.comma_body\n    if undefined === comma_body ::\n      cur.push @ indent\n      return\n\n    comma_body.splice @ 0, comma_body.length,\n      comma_body.join('').trimLeft()\n\n    if comma_body.len_inner != this.cur_ln.len_indent ::\n      cur.push @ indent\n      return\n\n    cur.push @ indent || ' '\n\n    let finish_commas = (cur) => ::\n      const pre = comma_body[0]\n      if ! pre :: return cur\n\n      const post = comma_body.slice(1).join('')\n      const opt_comma = this.checkOptionalComma @ comma_body.op, pre, post\n      if opt_comma ::\n        if cur[0].length > 1 ::\n          cur[0] = cur[0].replace(/\\s\\s$/, ', ')\n        else cur[0] = ','\n        comma_body.shift()\n      return cur\n\n    cur.finish_ops.push @ finish_commas\n\n  _checkOptionalComma: checkOptionalComma\n  checkOptionalComma\n\n  stack_push(op, p) ::\n    if op.foldTop && this.head.isFoldable ::\n      this.stack_pop()\n\n    if null === op.post ::\n      if op.pre :: this.emit @ op.pre\n      return\n\n    const {len_indent, loc} = p\n    const head = @{} __proto__: this.head\n      op, len_indent, loc\n      isFoldable: op.isFoldable\n      nestBreak: op.nestBreak\n\n    if ',' == op.implicitSep ::\n      const comma_body = head.comma_body = []\n      comma_body.op = op\n      comma_body.len_inner = this.cur_ln.len_inner\n    else head.comma_body = undefined\n\n    if op.in_nested_block ::\n      head.in_nested_block = true\n      head.nested_block_indent = len_indent\n\n    head.tail = [this.head].concat(head.tail || [])\n\n    let src_pre = head.op.pre\n    if src_pre :: this.emit @ src_pre\n\n    this.head = head\n\n  stack_pop(c) ::\n    let head = this.head\n    let next = head.tail[0]\n    this.head = next\n\n    if next.comma_body ::\n      let substitute = head.op.substitute ?? @ // explicit substution\n        ',' == head.op.implicitSep ? 'expr' // is a comma-based expression\n        : /[\\)\\]]\\s*$/.test(head.op.post) ? 'expr' // ends as call or index expr\n        : null\n\n      if null != substitute ::\n        // internal op was an expression; simplify for comma_body\n        next.comma_body.push(` ${substitute} `)\n\n    let src_post = head.op.post\n    if src_post ::\n      this.emit @ c ? ' '+src_post : src_post\n\n  v$jsy_unknown(p) ::\n    throw p.loc.start.syntaxError @\n      `JSY unknown operator \"${p.op}\"`\n\n  v$jsy_kw(p) ::\n    const kw_op = p.explicit\n      ? extra_jsy_ops.kw_explicit\n      : extra_jsy_ops.kw_normal\n\n    this.stack_push @ kw_op.kwExpandOp(p), p\n\n  v$jsy_op(p) ::\n    this._jsy_op @ at_offside_map[p.op], p\n\n  v$jsy_op_args(p) ::\n    this._jsy_op @ at_offside_map[p.op], p\n\n  _jsy_op(jsy_op, p) ::\n    if ! jsy_op ::\n      throw new Error @ `JSY op handler not found for \"${p.op}\"`\n\n    if jsy_op.warn :: jsy_op.warn(p)\n\n    if jsy_op.opResolve ::\n      jsy_op = validate_jsy_op_item @ jsy_op.opResolve(p)\n      if jsy_op.warn :: jsy_op.warn(p)\n\n    this._jsy_op_exec(jsy_op, p)\n\n  _jsy_op_exec(jsy_op, p) ::\n    if jsy_op.is_kw_close ::\n      this._dedent_nested_block(p)\n\n    this.stack_push @ jsy_op, p\n\n\n  _dedent_nested_block(p) ::\n    if ! this.head.in_nested_block :: return\n\n    if null != p ::\n      p.len_indent = this.head.nested_block_indent\n\n    let c = 0, done=false\n    while this.head && this.head.in_nested_block && ! done ::\n      done = this.head.op.in_nested_block\n      this.stack_pop @ c++\n\n  _dedent_multi_ops() ::\n    if ! this.head.loc :: return\n\n    const line = this.cur_ln.loc.start.line\n    const t = this.head.tail\n      .filter @ t => t.loc && line === t.loc.start.line\n      .pop()\n\n    if undefined === t :: return\n\n    let c = 0\n    while t !== this.head && !this.head.nestBreak ::\n      this.stack_pop @ c++\n\n  v$offside_dedent(p) ::\n    if ! p.ends_with_jsy_op ::\n      this._dedent_multi_ops()\n\n    let c = 0\n    while this.head.len_indent >= p.len_dedent ::\n      this.stack_pop @ c++\n\n\n  v$offside_indent(p) ::\n    this.emit_indent @ p.indent\n\n\n  v$template_param(p) :: this._param @ extra_jsy_ops.tmpl_param, p\n  v$template_param_end(p) :: this._param_end @ p\n\n  v$jsx_param(p) :: this._param @ extra_jsy_ops.jsx_param, p\n  v$jsx_param_end(p) :: this._param_end @ p\n\n  _param(op, p) ::\n    this.stack_push @ op, p\n    this.emit_raw @ p.content\n\n  _param_end(p) ::\n    this._dedent_nested_block(p)\n    this.emit_raw @ p.content\n\n    let comma_body = this.head.comma_body\n    if undefined !== comma_body ::\n      // fixup comma_body with simplified template param\n      comma_body.push @ 'null }'\n\n\n  v$str_template(p, ln, p0) ::\n    if p.tmpl_opened ::\n      this.stack_push @ op_template_str, p\n\n    if p0 === ln.indent && p.mlctx ::\n      let indent = this._cur.pop()\n      this._cur.push @ indent.slice(p.mlctx.col)\n\n    this.emit @ p.content, p.loc.start\n\n    if p.tmpl_closed ::\n      this.stack_pop()\n      let comma_body = this.head.comma_body\n      if undefined !== comma_body ::\n        // fixup comma_body with simplified template param\n        comma_body.push @ '`tmpl_expr`'\n\n  v$src(p, ln, p0) ::\n    let content = p.content\n    if {jsy_op:1, jsy_kw:1}[p0.type] && rx_leading_space.test(content) ::\n      content = content.replace(rx_leading_space, '')\n\n    this.emit @ content, p.loc.start\n\n\n  v$preprocessor(p, ln) :: this.emit(p.content)\n  v$preprocessor_sz(p, ln) :: this.emit(p.ans)\n  v$preprocessor_inc(p, ln) ::\n    if this.inc_preprocessor ::\n      this.emit @ `//+~${p.content}`\n  v$preprocessor_exc(p, ln) ::\n    if this.inc_preprocessor ::\n      this.emit @ `//-~${p.content}`\n  v$exclude_line(p, ln) ::\n    if this.inc_preprocessor ::\n      this.emit(p.content)\n  v$exclude_part(p, ln) ::\n    if this.inc_preprocessor ::\n      this.emit(p.content)\n\n  v$str: direct_src\n  v$str1: direct_src\n  v$str2: direct_src\n\n  v$regexp: direct_src\n\n  v$jsx_frag: direct_src\n  v$jsx_frag_close: direct_src\n  v$jsx_tag: direct_src\n  v$jsx_tag_part: direct_src\n  v$jsx_tag_close: direct_src\n  v$jsx_attr_name: direct_src\n  v$jsx_attr_name_only: direct_src\n  v$jsx_attr_str1: direct_src\n  v$jsx_attr_str2: direct_src\n  v$jsx_content: direct_src\n  v$jsx_content_expr: direct_src\n\n  v$hashbang: raw_src\n  v$comment_eol: raw_src\n  v$comment_multi: raw_src\n\n\nfunction raw_src(p) :: this.emit_raw @ p.content\nfunction direct_src(p) :: this.emit @ p.content, p.loc.start\n\nfunction validate_jsy_op_item(jsy_op_item) ::\n  let {pre, post} = jsy_op_item\n\n  if null !== pre && 'string' !== typeof pre ::\n    throw new Error @ 'Invalid resolved jsy_op_item.pre result'\n  if null !== post && 'string' !== typeof post ::\n    throw new Error @ 'Invalid resolved jsy_op_item.post result'\n\n  return jsy_op_item\n\n","import { jsy_scan } from './scan.jsy'\nimport { basic_preprocessor } from './preprocess.jsy'\nimport { preprocess_visitor } from './preprocess_visitor.jsy'\nimport { transpile_visitor } from './jsy_visitor.jsy'\nimport { sourcemap_comment } from './utils.jsy'\n\n\nexport function jsy_transpile(ast, feedback) ::\n  return [... jsy_iter_transpile(ast, feedback)]\n    .join('') // join the stream that has embedded newlines\n    .replace(/\\s+$/, '\\n') // trimming excess whitespace at end into single newline\n\nexport function * jsy_iter_transpile(ast, feedback) ::\n  if ! feedback :: feedback = {}\n\n  if 'string' === typeof ast ::\n    ast = jsy_scan(ast, feedback)\n\n\n  let preprocess = feedback.preprocessor?.()\n    ?? basic_preprocessor(feedback.defines)\n\n  if preprocess :: // preprocessor pass\n    let pp_visitor = @{}\n      __proto__: preprocess_visitor\n      ... feedback.preprocess_visitor\n      preprocess\n\n    ast = pp_visitor.ast_iter(ast)\n\n\n  :: // transpile pass\n    let jsy_visitor = @{}\n      __proto__: transpile_visitor\n      ... feedback.visitor\n\n    if feedback.checkOptionalComma ::\n      jsy_visitor.checkOptionalComma = feedback.checkOptionalComma\n\n    if feedback.addSourceMapping ::\n      jsy_visitor.addSourceMapping = feedback.addSourceMapping\n\n\n    yield * jsy_visitor.ast_iter(ast)\n\n\n  :: // sourcemap output\n    let srcmap = feedback.inlineSourceMap?.()\n    if srcmap ::\n      yield sourcemap_comment(srcmap, '\\n')\n    \n\nexport { version } from './version.js'\nexport @{}\n  jsy_transpile as default\n\n","/* A tiny implementation of SourceMapGenerator usable in ES Module, CommonJS, and Browser friendly formats\n\nAPI:\n\n    {\n      addMapping({generated:{line, column}, original:{line, column}, source, name}) {},\n      setSourceContent(source, content) {},\n\n      toString() {},\n      toJSON() {},\n    }\n\nInspired and extracted from\n  require('source-map/lib/source-map-generator.js')\n\n*/\n\nfunction tiny_source_map_generator(src_map) {\n  src_map = {version: 3, ... (src_map || {}) };\n\n  const sources = [];\n  const names = [];\n  const mappings = [];\n  const contents = new Map();\n\n  return {\n    toJSON, toString: () => JSON.stringify(toJSON()),\n\n    setSourceContent(source, source_content) {\n      if (null != source_content)\n        contents.set(`${source}`, source_content);\n      else contents.delete(`${source}`);\n    },\n\n    addMapping({generated, original, source, name}) {\n      const m = {\n        gl: generated.line,\n        gc: generated.column,\n        ol: original != null && original.line,\n        oc: original != null && original.column, };\n\n      if (null != source) {\n        m.source = source = `${source}`;\n        if (! sources.includes(source))\n          sources.push(source);\n      }\n\n      if (null != name) {\n        m.name = name = `${name}`;\n        if (! names.includes(name))\n          names.push(name);\n      }\n\n      mappings.push(m);\n    },\n  }\n\n\n  function toJSON() {\n    const res_src_map = {\n      ... src_map,\n      sources: [... sources],\n      names: [... names]};\n\n    res_src_map.mappings =\n      _serializeMappings(\n        mappings, res_src_map);\n\n    if (0 !== contents.size)\n      res_src_map.sourcesContent =\n        res_src_map.sources.map(\n          key => contents.get(key) || null);\n\n    return res_src_map\n  }\n}\n\n\nfunction _serializeMappings(mappings, src_map) {\n  const vlq_gen_column = _vlq_state(0);\n  const vlq_orig_column = _vlq_state(0);\n  const vlq_orig_line = _vlq_state(0);\n  const vlq_name = _vlq_state(0);\n  const vlq_source = _vlq_state(0);\n\n  let line=1, result = '', prev_tip;\n  for (const tip of mappings) {\n    let sz = '';\n\n    if (tip.gl !== line) {\n      vlq_gen_column(0);\n      while (tip.gl !== line) {\n        sz += ';';\n        line++;\n      }\n    } else if (undefined !== prev_tip) {\n      if (0 === cmp_srcmappings(tip, prev_tip))\n        continue // if we didn't move forward, ignore it!\n\n      sz += ',';\n    }\n\n    sz += vlq_gen_column(tip.gc);\n\n    if (tip.source != null) {\n      sz += vlq_source(src_map.sources.indexOf(tip.source));\n      sz += vlq_orig_line(tip.ol - 1);\n      sz += vlq_orig_column(tip.oc);\n\n      if (tip.name != null) {\n        sz += vlq_name(src_map.names.indexOf(tip.name));\n      }\n    }\n\n    // success; move forward\n    result += sz;\n    prev_tip = tip;\n  }\n\n  return result\n}\n\nfunction _vlq_state(v0) {\n  const vlq = v => {\n    const res = _b64_vlq(v - v0);\n    vlq.value = v0 = v;\n    return res\n  };\n\n  vlq.value = v0;\n  return vlq\n}\n\n\nconst strcmp = (a, b) =>\n  a == b ? 0\n    : null == a ? 1\n    : null == b ? -1\n    : a > b ? 1 : -1;\n\nconst cmp_srcmappings = (a,b) => (\n     a.gl - b.gl\n  || a.gc - b.gc\n  || strcmp(a.source, b.source)\n  || a.ol - b.ol\n  || a.oc - b.oc\n  || strcmp(a.name, b.name) );\n\n\nconst _vlq_low = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdef';\nconst _vlq_high = 'ghijklmnopqrstuvwxyz0123456789+/';\nfunction _b64_vlq(v) {\n  // move sign to LSB for VLQ encoding\n  v = v >= 0\n    ? (v << 1)\n    : 1 | ( -v << 1 );\n\n  let res = '';\n  while (true) {\n    // use lower 5 bits to generate a b64 symbol\n    let d = v & 0x1f;\n    v >>>= 5;\n    if (0 === v) {\n      res += _vlq_low[d];\n      return res\n    }\n\n    res += _vlq_high[d];\n  }\n}\n\nexport default tiny_source_map_generator;\n","import tiny_sourcemap from 'tiny-source-map'\nimport { jsy_transpile, version } from './transpile.jsy'\n\nconst _jsy_srcmap_ctx = @{}\n  i: 1, ts: Date.now().toString(36)\n\nexport function jsy_transpile_srcmap(jsy_src, ... args) ::\n  let source_ref = null == args[0] || 'object' !== typeof args[0] ? args.shift() : null\n  let opt = args.pop() || {}\n\n  if null == source_ref ::\n    source_ref = `<jsy-${_jsy_srcmap_ctx.i++}-${_jsy_srcmap_ctx.ts}>.jsy`\n\n  const srcmap = !opt.sourcemap ? null\n    : opt.create_sourcemap\n      ? opt.create_sourcemap()\n      : tiny_sourcemap()\n\n  if null !== srcmap ::\n    srcmap.setSourceContent @ source_ref, jsy_src\n\n  let code = jsy_transpile @ jsy_src, @{}\n    addSourceMapping(arg) ::\n      if null == srcmap :: return\n      if source_ref ::\n        arg.source = source_ref\n      srcmap.addMapping(arg)\n\n    inlineSourceMap() ::\n      if srcmap && 'inline' == opt.sourcemap ::\n        return srcmap.toString()\n\n    ... opt\n\n  return opt.as_rec ? {code, srcmap} : code\n\nexport { version, jsy_transpile_srcmap as default }\n"],"names":["tiny_sourcemap"],"mappings":"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","x_google_ignoreList":[21]}