{"version":3,"file":"routeros.mjs","sources":["../../../../../../node_modules/highlight.js/lib/languages/routeros.js"],"sourcesContent":["/*\nLanguage: MikroTik RouterOS script\nAuthor: Ivan Dementev <ivan_div@mail.ru>\nDescription: Scripting host provides a way to automate some router maintenance tasks by means of executing user-defined scripts bounded to some event occurrence\nWebsite: https://wiki.mikrotik.com/wiki/Manual:Scripting\nCategory: scripting\n*/\n\n// Colors from RouterOS terminal:\n//   green        - #0E9A00\n//   teal         - #0C9A9A\n//   purple       - #99069A\n//   light-brown  - #9A9900\n\nfunction routeros(hljs) {\n  const STATEMENTS = 'foreach do while for if from to step else on-error and or not in';\n\n  // Global commands: Every global command should start with \":\" token, otherwise it will be treated as variable.\n  const GLOBAL_COMMANDS = 'global local beep delay put len typeof pick log time set find environment terminal error execute parse resolve toarray tobool toid toip toip6 tonum tostr totime';\n\n  // Common commands: Following commands available from most sub-menus:\n  const COMMON_COMMANDS = 'add remove enable disable set get print export edit find run debug error info warning';\n\n  const LITERALS = 'true false yes no nothing nil null';\n\n  const OBJECTS = 'traffic-flow traffic-generator firewall scheduler aaa accounting address-list address align area bandwidth-server bfd bgp bridge client clock community config connection console customer default dhcp-client dhcp-server discovery dns e-mail ethernet filter firmware gps graphing group hardware health hotspot identity igmp-proxy incoming instance interface ip ipsec ipv6 irq l2tp-server lcd ldp logging mac-server mac-winbox mangle manual mirror mme mpls nat nd neighbor network note ntp ospf ospf-v3 ovpn-server page peer pim ping policy pool port ppp pppoe-client pptp-server prefix profile proposal proxy queue radius resource rip ripng route routing screen script security-profiles server service service-port settings shares smb sms sniffer snmp snooper socks sstp-server system tool tracking type upgrade upnp user-manager users user vlan secret vrrp watchdog web-access wireless pptp pppoe lan wan layer7-protocol lease simple raw';\n\n  const VAR = {\n    className: 'variable',\n    variants: [\n      { begin: /\\$[\\w\\d#@][\\w\\d_]*/ },\n      { begin: /\\$\\{(.*?)\\}/ }\n    ]\n  };\n\n  const QUOTE_STRING = {\n    className: 'string',\n    begin: /\"/,\n    end: /\"/,\n    contains: [\n      hljs.BACKSLASH_ESCAPE,\n      VAR,\n      {\n        className: 'variable',\n        begin: /\\$\\(/,\n        end: /\\)/,\n        contains: [ hljs.BACKSLASH_ESCAPE ]\n      }\n    ]\n  };\n\n  const APOS_STRING = {\n    className: 'string',\n    begin: /'/,\n    end: /'/\n  };\n\n  return {\n    name: 'MikroTik RouterOS script',\n    aliases: [ 'mikrotik' ],\n    case_insensitive: true,\n    keywords: {\n      $pattern: /:?[\\w-]+/,\n      literal: LITERALS,\n      keyword: STATEMENTS + ' :' + STATEMENTS.split(' ').join(' :') + ' :' + GLOBAL_COMMANDS.split(' ').join(' :')\n    },\n    contains: [\n      { // illegal syntax\n        variants: [\n          { // -- comment\n            begin: /\\/\\*/,\n            end: /\\*\\//\n          },\n          { // Stan comment\n            begin: /\\/\\//,\n            end: /$/\n          },\n          { // HTML tags\n            begin: /<\\//,\n            end: />/\n          }\n        ],\n        illegal: /./\n      },\n      hljs.COMMENT('^#', '$'),\n      QUOTE_STRING,\n      APOS_STRING,\n      VAR,\n      // attribute=value\n      {\n        // > is to avoid matches with => in other grammars\n        begin: /[\\w-]+=([^\\s{}[\\]()>]+)/,\n        relevance: 0,\n        returnBegin: true,\n        contains: [\n          {\n            className: 'attribute',\n            begin: /[^=]+/\n          },\n          {\n            begin: /=/,\n            endsWithParent: true,\n            relevance: 0,\n            contains: [\n              QUOTE_STRING,\n              APOS_STRING,\n              VAR,\n              {\n                className: 'literal',\n                begin: '\\\\b(' + LITERALS.split(' ').join('|') + ')\\\\b'\n              },\n              {\n                // Do not format unclassified values. Needed to exclude highlighting of values as built_in.\n                begin: /(\"[^\"]*\"|[^\\s{}[\\]]+)/ }\n              /*\n              {\n                // IPv4 addresses and subnets\n                className: 'number',\n                variants: [\n                  {begin: IPADDR_wBITMASK+'(,'+IPADDR_wBITMASK+')*'}, //192.168.0.0/24,1.2.3.0/24\n                  {begin: IPADDR+'-'+IPADDR},       // 192.168.0.1-192.168.0.3\n                  {begin: IPADDR+'(,'+IPADDR+')*'}, // 192.168.0.1,192.168.0.34,192.168.24.1,192.168.0.1\n                ]\n              },\n              {\n                // MAC addresses and DHCP Client IDs\n                className: 'number',\n                begin: /\\b(1:)?([0-9A-Fa-f]{1,2}[:-]){5}([0-9A-Fa-f]){1,2}\\b/,\n              },\n              */\n            ]\n          }\n        ]\n      },\n      {\n        // HEX values\n        className: 'number',\n        begin: /\\*[0-9a-fA-F]+/\n      },\n      {\n        begin: '\\\\b(' + COMMON_COMMANDS.split(' ').join('|') + ')([\\\\s[(\\\\]|])',\n        returnBegin: true,\n        contains: [\n          {\n            className: 'built_in', // 'function',\n            begin: /\\w+/\n          }\n        ]\n      },\n      {\n        className: 'built_in',\n        variants: [\n          { begin: '(\\\\.\\\\./|/|\\\\s)((' + OBJECTS.split(' ').join('|') + ');?\\\\s)+' },\n          {\n            begin: /\\.\\./,\n            relevance: 0\n          }\n        ]\n      }\n    ]\n  };\n}\n\nmodule.exports = routeros;\n"],"names":["routeros","hljs","STATEMENTS","GLOBAL_COMMANDS","COMMON_COMMANDS","LITERALS","OBJECTS","VAR","QUOTE_STRING","APOS_STRING","routeros_1"],"mappings":";;;;AAcA,WAASA,EAASC,GAAM;AACtB,UAAMC,IAAa,oEAGbC,IAAkB,oKAGlBC,IAAkB,yFAElBC,IAAW,sCAEXC,IAAU,46BAEVC,IAAM;AAAA,MACV,WAAW;AAAA,MACX,UAAU;AAAA,QACR,EAAE,OAAO,qBAAoB;AAAA,QAC7B,EAAE,OAAO,cAAa;AAAA;IAE5B,GAEQC,IAAe;AAAA,MACnB,WAAW;AAAA,MACX,OAAO;AAAA,MACP,KAAK;AAAA,MACL,UAAU;AAAA,QACRP,EAAK;AAAA,QACLM;AAAA,QACA;AAAA,UACE,WAAW;AAAA,UACX,OAAO;AAAA,UACP,KAAK;AAAA,UACL,UAAU,CAAEN,EAAK,gBAAgB;AAAA;;IAGzC,GAEQQ,IAAc;AAAA,MAClB,WAAW;AAAA,MACX,OAAO;AAAA,MACP,KAAK;AAAA,IACT;AAEE,WAAO;AAAA,MACL,MAAM;AAAA,MACN,SAAS,CAAE,UAAU;AAAA,MACrB,kBAAkB;AAAA,MAClB,UAAU;AAAA,QACR,UAAU;AAAA,QACV,SAASJ;AAAA,QACT,SAASH,IAAa,OAAOA,EAAW,MAAM,GAAG,EAAE,KAAK,IAAI,IAAI,OAAOC,EAAgB,MAAM,GAAG,EAAE,KAAK,IAAI;AAAA;MAE7G,UAAU;AAAA,QACR;AAAA;AAAA,UACE,UAAU;AAAA,YACR;AAAA;AAAA,cACE,OAAO;AAAA,cACP,KAAK;AAAA;YAEP;AAAA;AAAA,cACE,OAAO;AAAA,cACP,KAAK;AAAA;YAEP;AAAA;AAAA,cACE,OAAO;AAAA,cACP,KAAK;AAAA;;UAGT,SAAS;AAAA;QAEXF,EAAK,QAAQ,MAAM,GAAG;AAAA,QACtBO;AAAA,QACAC;AAAA,QACAF;AAAA;AAAA,QAEA;AAAA;AAAA,UAEE,OAAO;AAAA,UACP,WAAW;AAAA,UACX,aAAa;AAAA,UACb,UAAU;AAAA,YACR;AAAA,cACE,WAAW;AAAA,cACX,OAAO;AAAA;YAET;AAAA,cACE,OAAO;AAAA,cACP,gBAAgB;AAAA,cAChB,WAAW;AAAA,cACX,UAAU;AAAA,gBACRC;AAAA,gBACAC;AAAA,gBACAF;AAAA,gBACA;AAAA,kBACE,WAAW;AAAA,kBACX,OAAO,SAASF,EAAS,MAAM,GAAG,EAAE,KAAK,GAAG,IAAI;AAAA;gBAElD;AAAA;AAAA,kBAEE,OAAO;AAAA,gBAAuB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;QAqBxC;AAAA;AAAA,UAEE,WAAW;AAAA,UACX,OAAO;AAAA;QAET;AAAA,UACE,OAAO,SAASD,EAAgB,MAAM,GAAG,EAAE,KAAK,GAAG,IAAI;AAAA,UACvD,aAAa;AAAA,UACb,UAAU;AAAA,YACR;AAAA,cACE,WAAW;AAAA;AAAA,cACX,OAAO;AAAA;;;QAIb;AAAA,UACE,WAAW;AAAA,UACX,UAAU;AAAA,YACR,EAAE,OAAO,sBAAsBE,EAAQ,MAAM,GAAG,EAAE,KAAK,GAAG,IAAI,WAAU;AAAA,YACxE;AAAA,cACE,OAAO;AAAA,cACP,WAAW;AAAA;;;;IAKvB;AAAA,EACA;AAEA,SAAAI,IAAiBV;;","x_google_ignoreList":[0]}