{"version":3,"sources":["jsdelivr-header.js","/npm/code-tokenizer@1.0.6/lib/tokenizer.js"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA,ACLA,IAAI,cAAe,UAAW,EAE9B,EAAI,QAAQ,UAEZ,cAAgB,QAAQ,YAExB,UAAY,WACV,IAAgB,EAAqB,EAAsB,EAA0B,EAA2B,EAAqB,EAAiB,EAEtJ,SAAS,IAAa,CAuHtB,OAnHA,EAAuB,CAAC,KAAM,IAAK,KAEnC,EAAsB,CAAC,CAAC,KAAM,MAAO,CAAC,UAAQ,UAAQ,CAAC,KAAM,MAAO,CAAC,KAAM,MAAO,CAAC,MAAO,QAE1F,OAAO,OAAS,SAAS,GACvB,OAAO,OAAO,GAAK,QAAQ,8BAA+B,OAC5D,EAEA,EAA4B,IAAI,OAAO,EAAE,IAAI,GAAsB,SAAS,GAC1E,MAAO,KAAS,OAAO,OAAO,GAAM,GACtC,IAAG,KAAK,MAER,EAA2B,IAAI,OAAO,EAAE,IAAI,GAAqB,SAAS,GACxE,OAAO,OAAO,OAAO,EAAE,GACzB,IAAG,KAAK,MAER,EAAU,UAAU,SAAW,SAAS,GACtC,OAAO,EAAe,EACxB,EAEA,EAAiB,SAAS,GACxB,IAAI,EAA0B,EAAa,EAAmB,EAAM,EAAG,EAAO,EAG9E,IAFA,EAAI,IAAI,cAAc,GACtB,EAAS,KACD,EAAE,iBACJ,EAAE,KA3BG,OA8BL,EAAQ,EAAE,KAAK,aACb,EAAO,EAAgB,KACzB,EAAO,KAAK,YAAc,GAEnB,EAAE,UAAY,EAAQ,EAAE,KAAK,IACtC,EAAE,UAAU,SACH,EAAQ,EAAE,KAAK,KAExB,GADA,EAA2B,EAAE,QAAQ,IACE,EAAE,QAAQ,EAA0B,GAAS,GACpF,EAAoB,IAAI,OAAO,OAAO,OAAO,IAC7C,EAAE,UAAU,IACH,EAAE,KAAK,KACE,MAAd,EAAE,KAAK,GACT,EAAE,WAEE,EAAE,UAAU,UAET,EAAE,KAAK,KACE,MAAd,EAAE,KAAK,GACT,EAAE,WAEF,EAAE,UAAU,UAEL,EAAE,KAAK,sBAEP,EAAQ,EAAE,KAAK,oBACxB,EAAE,QAAQ,EAAoB,IAAQ,SAAS,GAC7C,OAAO,EAAO,KAAK,EACrB,KACS,EAAQ,EAAE,KAAK,0BAEf,EAAQ,EAAE,KAAK,oBAEf,EAAQ,EAAE,KAAK,gCAHxB,EAAO,KAAK,GAMZ,EAAE,YAGN,OAAO,CACT,EAEA,EAAkB,SAAS,GACzB,IAAI,EAAG,EAAQ,EAEf,OAAI,GADJ,EAAI,IAAI,cAAc,IACH,KAAK,eAEP,SADf,EAAS,EAAE,KAAK,EAAW,MAAM,SAE/B,EAAE,KAAK,OACP,EAAS,EAAE,KAAK,QAEd,IACF,EAAS,EAAO,MAAM,WAEjB,GAEA,IAEX,EAEA,EAAsB,SAAS,GAC7B,IAAI,EAAG,EAAO,EAGd,IAFA,EAAI,IAAI,cAAc,GACtB,EAAS,IACD,EAAE,kBACJ,EAAQ,EAAE,KAAK,gBACjB,EAAO,KAAU,EAAQ,MAChB,EAAQ,EAAE,KAAK,UACxB,EAAO,KAAK,GACR,EAAE,KAAK,KACT,EAAE,UAAU,UACH,EAAE,KAAK,KAChB,EAAE,UAAU,UAEZ,EAAE,UAAU,SAEL,EAAQ,EAAE,KAAK,QACxB,EAAO,KAAK,GACH,EAAE,KAAK,KAChB,EAAE,YAEF,EAAE,WAGN,OAAO,CACT,EAEO,CAER,CA5HW,GA8HZ,OAAO,QAAU,IAAI","file":"/npm/code-tokenizer@1.0.6/lib/tokenizer.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/code-tokenizer@1.0.6/lib/tokenizer.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","// Generated by CoffeeScript 1.7.1\nvar StringScanner, Tokenizer, _;\n\n_ = require('lodash');\n\nStringScanner = require('pstrscan');\n\nTokenizer = (function() {\n  var BYTE_LIMIT, MULTI_LINE_COMMENTS, SINGLE_LINE_COMMENTS, START_MULTI_LINE_COMMENT, START_SINGLE_LINE_COMMENT, extract_sgml_tokens, extract_shebang, extract_tokens;\n\n  function Tokenizer() {}\n\n  BYTE_LIMIT = 100000;\n\n  SINGLE_LINE_COMMENTS = ['//', '#', '%'];\n\n  MULTI_LINE_COMMENTS = [['/*', '*/'], ['<!--', '-->'], ['{-', '-}'], ['(*', '*)'], ['\"\"\"', '\"\"\"']];\n\n  RegExp.escape = function(str) {\n    return String(str).replace(/([.*+?^=!:${}()|\\[\\]\\/\\\\])/g, \"\\\\$1\");\n  };\n\n  START_SINGLE_LINE_COMMENT = new RegExp(_.map(SINGLE_LINE_COMMENTS, function(c) {\n    return \"\\s*\" + (RegExp.escape(c)) + \" \";\n  }).join('|'));\n\n  START_MULTI_LINE_COMMENT = new RegExp(_.map(MULTI_LINE_COMMENTS, function(c) {\n    return RegExp.escape(c[0]);\n  }).join('|'));\n\n  Tokenizer.prototype.tokenize = function(data) {\n    return extract_tokens(data);\n  };\n\n  extract_tokens = function(data) {\n    var MULTI_LINE_COMMENTS_flat, close_token, close_token_regex, name, s, token, tokens, w;\n    s = new StringScanner(data);\n    tokens = [];\n    while (!s.hasTerminated()) {\n      if (s.pos >= BYTE_LIMIT) {\n        break;\n      }\n      if (token = s.scan(/^#!.+$/m)) {\n        if (name = extract_shebang(token)) {\n          tokens.push(\"SHEBANG#!\" + name);\n        }\n      } else if (s.atBOL() && (token = s.scan(START_SINGLE_LINE_COMMENT))) {\n        s.skipUntil(/\\n|$/);\n      } else if (token = s.scan(START_MULTI_LINE_COMMENT)) {\n        MULTI_LINE_COMMENTS_flat = _.flatten(MULTI_LINE_COMMENTS);\n        close_token = MULTI_LINE_COMMENTS_flat[_.indexOf(MULTI_LINE_COMMENTS_flat, token) + 1];\n        close_token_regex = new RegExp(RegExp.escape(close_token));\n        s.skipUntil(close_token_regex);\n      } else if (s.scan(/\"/)) {\n        if (s.peek(1) === \"\\\"\") {\n          s.scanChar();\n        } else {\n          w = s.skipUntil(/[^\\\\]\"/);\n        }\n      } else if (s.scan(/'/)) {\n        if (s.peek(1) === \"'\") {\n          s.scanChar();\n        } else {\n          s.skipUntil(/[^\\\\]'/);\n        }\n      } else if (s.scan(/(0x)?\\d(\\d|\\.)*/)) {\n\n      } else if (token = s.scan(/<[^\\s<>][^<>]*>/)) {\n        _.forEach(extract_sgml_tokens(token), function(t) {\n          return tokens.push(t);\n        });\n      } else if (token = s.scan(/;|\\{|\\}|\\(|\\)|\\[|\\]/)) {\n        tokens.push(token);\n      } else if (token = s.scan(/[\\w\\.@#\\/\\*]+/)) {\n        tokens.push(token);\n      } else if (token = s.scan(/<<?|\\+|\\-|\\*|\\/|%|&&?|\\|\\|?/)) {\n        tokens.push(token);\n      } else {\n        s.scanChar();\n      }\n    }\n    return tokens;\n  };\n\n  extract_shebang = function(data) {\n    var s, script, scriptPath;\n    s = new StringScanner(data);\n    if (scriptPath = s.scan(/^#!\\s*\\S+/)) {\n      script = _.last(scriptPath.split('/'));\n      if (script === 'env') {\n        s.scan(/\\s+/);\n        script = s.scan(/\\S+/);\n      }\n      if (script) {\n        script = script.match(/[^\\d]+/);\n      }\n      return script;\n    } else {\n      return null;\n    }\n  };\n\n  extract_sgml_tokens = function(data) {\n    var s, token, tokens;\n    s = new StringScanner(data);\n    tokens = [];\n    while (!s.hasTerminated()) {\n      if (token = s.scan(/<\\/?[^\\s>]+/)) {\n        tokens.push(\"\" + token + \">\");\n      } else if (token = s.scan(/\\w+=/)) {\n        tokens.push(token);\n        if (s.scan(/\"/)) {\n          s.skipUntil(/[^\\\\]\"/);\n        } else if (s.scan(/'/)) {\n          s.skipUntil(/[^\\\\]'/);\n        } else {\n          s.skipUntil(/\\w+/);\n        }\n      } else if (token = s.scan(/\\w+/)) {\n        tokens.push(token);\n      } else if (s.scan(/>/)) {\n        s.terminate();\n      } else {\n        s.scanChar();\n      }\n    }\n    return tokens;\n  };\n\n  return Tokenizer;\n\n})();\n\nmodule.exports = new Tokenizer();\n"]}