1{"version":3,"sources":["../../node_modules/codemirror/mode/powershell/powershell.js"],"names":["mod","exports","module","require","define","amd","window","CodeMirror","defineMode","buildRegexp","patterns","options","prefix","undefined","suffix","i","length","RegExp","source","replace","join","notCharacterOrDash","varNames","keywords","punctuation","wordOperators","symbolOperators","operators","numbers","identifiers","symbolBuiltins","namedBuiltins","variableBuiltins","builtins","grammar","keyword","number","operator","builtin","identifier","tokenBase","stream","state","parent","returnStack","shouldReturnFrom","tokenize","pop","eatSpace","eat","bracketNesting","key","match","ch","next","tokenSingleQuoteString","tokenVariable","tokenDoubleQuoteString","tokenComment","skipToEnd","quoteMatch","eol","tokenMultiString","startQuote","peek","tokenStringInterpolation","tokenInterpolation","tokenMultiStringReturn","tokenHereStringInterpolation","parentTokenize","savedBracketNesting","push","maybeEnd","tokenVariableWithBraces","eatWhile","quote","sol","external","startState","token","blockCommentStart","blockCommentEnd","lineComment","fold","defineMIME"],"mappings":"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","file":"powershell.min.js","sourcesContent":["// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/LICENSE\n\n(function(mod) {\n  'use strict';\n  if (typeof exports == 'object' && typeof module == 'object') // CommonJS\n    mod(require('../../lib/codemirror'));\n  else if (typeof define == 'function' && define.amd) // AMD\n    define(['../../lib/codemirror'], mod);\n  else // Plain browser env\n    mod(window.CodeMirror);\n})(function(CodeMirror) {\n'use strict';\n\nCodeMirror.defineMode('powershell', function() {\n  function buildRegexp(patterns, options) {\n    options = options || {};\n    var prefix = options.prefix !== undefined ? options.prefix : '^';\n    var suffix = options.suffix !== undefined ? options.suffix : '\\\\b';\n\n    for (var i = 0; i < patterns.length; i++) {\n      if (patterns[i] instanceof RegExp) {\n        patterns[i] = patterns[i].source;\n      }\n      else {\n        patterns[i] = patterns[i].replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n      }\n    }\n\n    return new RegExp(prefix + '(' + patterns.join('|') + ')' + suffix, 'i');\n  }\n\n  var notCharacterOrDash = '(?=[^A-Za-z\\\\d\\\\-_]|$)';\n  var varNames = /[\\w\\-:]/\n  var keywords = buildRegexp([\n    /begin|break|catch|continue|data|default|do|dynamicparam/,\n    /else|elseif|end|exit|filter|finally|for|foreach|from|function|if|in/,\n    /param|process|return|switch|throw|trap|try|until|where|while/\n  ], { suffix: notCharacterOrDash });\n\n  var punctuation = /[\\[\\]{},;`\\\\\\.]|@[({]/;\n  var wordOperators = buildRegexp([\n    'f',\n    /b?not/,\n    /[ic]?split/, 'join',\n    /is(not)?/, 'as',\n    /[ic]?(eq|ne|[gl][te])/,\n    /[ic]?(not)?(like|match|contains)/,\n    /[ic]?replace/,\n    /b?(and|or|xor)/\n  ], { prefix: '-' });\n  var symbolOperators = /[+\\-*\\/%]=|\\+\\+|--|\\.\\.|[+\\-*&^%:=!|\\/]|<(?!#)|(?!#)>/;\n  var operators = buildRegexp([wordOperators, symbolOperators], { suffix: '' });\n\n  var numbers = /^((0x[\\da-f]+)|((\\d+\\.\\d+|\\d\\.|\\.\\d+|\\d+)(e[\\+\\-]?\\d+)?))[ld]?([kmgtp]b)?/i;\n\n  var identifiers = /^[A-Za-z\\_][A-Za-z\\-\\_\\d]*\\b/;\n\n  var symbolBuiltins = /[A-Z]:|%|\\?/i;\n  var namedBuiltins = buildRegexp([\n    /Add-(Computer|Content|History|Member|PSSnapin|Type)/,\n    /Checkpoint-Computer/,\n    /Clear-(Content|EventLog|History|Host|Item(Property)?|Variable)/,\n    /Compare-Object/,\n    /Complete-Transaction/,\n    /Connect-PSSession/,\n    /ConvertFrom-(Csv|Json|SecureString|StringData)/,\n    /Convert-Path/,\n    /ConvertTo-(Csv|Html|Json|SecureString|Xml)/,\n    /Copy-Item(Property)?/,\n    /Debug-Process/,\n    /Disable-(ComputerRestore|PSBreakpoint|PSRemoting|PSSessionConfiguration)/,\n    /Disconnect-PSSession/,\n    /Enable-(ComputerRestore|PSBreakpoint|PSRemoting|PSSessionConfiguration)/,\n    /(Enter|Exit)-PSSession/,\n    /Export-(Alias|Clixml|Console|Counter|Csv|FormatData|ModuleMember|PSSession)/,\n    /ForEach-Object/,\n    /Format-(Custom|List|Table|Wide)/,\n    new RegExp('Get-(Acl|Alias|AuthenticodeSignature|ChildItem|Command|ComputerRestorePoint|Content|ControlPanelItem|Counter|Credential'\n      + '|Culture|Date|Event|EventLog|EventSubscriber|ExecutionPolicy|FormatData|Help|History|Host|HotFix|Item|ItemProperty|Job'\n      + '|Location|Member|Module|PfxCertificate|Process|PSBreakpoint|PSCallStack|PSDrive|PSProvider|PSSession|PSSessionConfiguration'\n      + '|PSSnapin|Random|Service|TraceSource|Transaction|TypeData|UICulture|Unique|Variable|Verb|WinEvent|WmiObject)'),\n    /Group-Object/,\n    /Import-(Alias|Clixml|Counter|Csv|LocalizedData|Module|PSSession)/,\n    /ImportSystemModules/,\n    /Invoke-(Command|Expression|History|Item|RestMethod|WebRequest|WmiMethod)/,\n    /Join-Path/,\n    /Limit-EventLog/,\n    /Measure-(Command|Object)/,\n    /Move-Item(Property)?/,\n    new RegExp('New-(Alias|Event|EventLog|Item(Property)?|Module|ModuleManifest|Object|PSDrive|PSSession|PSSessionConfigurationFile'\n      + '|PSSessionOption|PSTransportOption|Service|TimeSpan|Variable|WebServiceProxy|WinEvent)'),\n    /Out-(Default|File|GridView|Host|Null|Printer|String)/,\n    /Pause/,\n    /(Pop|Push)-Location/,\n    /Read-Host/,\n    /Receive-(Job|PSSession)/,\n    /Register-(EngineEvent|ObjectEvent|PSSessionConfiguration|WmiEvent)/,\n    /Remove-(Computer|Event|EventLog|Item(Property)?|Job|Module|PSBreakpoint|PSDrive|PSSession|PSSnapin|TypeData|Variable|WmiObject)/,\n    /Rename-(Computer|Item(Property)?)/,\n    /Reset-ComputerMachinePassword/,\n    /Resolve-Path/,\n    /Restart-(Computer|Service)/,\n    /Restore-Computer/,\n    /Resume-(Job|Service)/,\n    /Save-Help/,\n    /Select-(Object|String|Xml)/,\n    /Send-MailMessage/,\n    new RegExp('Set-(Acl|Alias|AuthenticodeSignature|Content|Date|ExecutionPolicy|Item(Property)?|Location|PSBreakpoint|PSDebug' +\n               '|PSSessionConfiguration|Service|StrictMode|TraceSource|Variable|WmiInstance)'),\n    /Show-(Command|ControlPanelItem|EventLog)/,\n    /Sort-Object/,\n    /Split-Path/,\n    /Start-(Job|Process|Service|Sleep|Transaction|Transcript)/,\n    /Stop-(Computer|Job|Process|Service|Transcript)/,\n    /Suspend-(Job|Service)/,\n    /TabExpansion2/,\n    /Tee-Object/,\n    /Test-(ComputerSecureChannel|Connection|ModuleManifest|Path|PSSessionConfigurationFile)/,\n    /Trace-Command/,\n    /Unblock-File/,\n    /Undo-Transaction/,\n    /Unregister-(Event|PSSessionConfiguration)/,\n    /Update-(FormatData|Help|List|TypeData)/,\n    /Use-Transaction/,\n    /Wait-(Event|Job|Process)/,\n    /Where-Object/,\n    /Write-(Debug|Error|EventLog|Host|Output|Progress|Verbose|Warning)/,\n    /cd|help|mkdir|more|oss|prompt/,\n    /ac|asnp|cat|cd|chdir|clc|clear|clhy|cli|clp|cls|clv|cnsn|compare|copy|cp|cpi|cpp|cvpa|dbp|del|diff|dir|dnsn|ebp/,\n    /echo|epal|epcsv|epsn|erase|etsn|exsn|fc|fl|foreach|ft|fw|gal|gbp|gc|gci|gcm|gcs|gdr|ghy|gi|gjb|gl|gm|gmo|gp|gps/,\n    /group|gsn|gsnp|gsv|gu|gv|gwmi|h|history|icm|iex|ihy|ii|ipal|ipcsv|ipmo|ipsn|irm|ise|iwmi|iwr|kill|lp|ls|man|md/,\n    /measure|mi|mount|move|mp|mv|nal|ndr|ni|nmo|npssc|nsn|nv|ogv|oh|popd|ps|pushd|pwd|r|rbp|rcjb|rcsn|rd|rdr|ren|ri/,\n    /rjb|rm|rmdir|rmo|rni|rnp|rp|rsn|rsnp|rujb|rv|rvpa|rwmi|sajb|sal|saps|sasv|sbp|sc|select|set|shcm|si|sl|sleep|sls/,\n    /sort|sp|spjb|spps|spsv|start|sujb|sv|swmi|tee|trcm|type|where|wjb|write/\n  ], { prefix: '', suffix: '' });\n  var variableBuiltins = buildRegexp([\n    /[$?^_]|Args|ConfirmPreference|ConsoleFileName|DebugPreference|Error|ErrorActionPreference|ErrorView|ExecutionContext/,\n    /FormatEnumerationLimit|Home|Host|Input|MaximumAliasCount|MaximumDriveCount|MaximumErrorCount|MaximumFunctionCount/,\n    /MaximumHistoryCount|MaximumVariableCount|MyInvocation|NestedPromptLevel|OutputEncoding|Pid|Profile|ProgressPreference/,\n    /PSBoundParameters|PSCommandPath|PSCulture|PSDefaultParameterValues|PSEmailServer|PSHome|PSScriptRoot|PSSessionApplicationName/,\n    /PSSessionConfigurationName|PSSessionOption|PSUICulture|PSVersionTable|Pwd|ShellId|StackTrace|VerbosePreference/,\n    /WarningPreference|WhatIfPreference/,\n\n    /Event|EventArgs|EventSubscriber|Sender/,\n    /Matches|Ofs|ForEach|LastExitCode|PSCmdlet|PSItem|PSSenderInfo|This/,\n    /true|false|null/\n  ], { prefix: '\\\\$', suffix: '' });\n\n  var builtins = buildRegexp([symbolBuiltins, namedBuiltins, variableBuiltins], { suffix: notCharacterOrDash });\n\n  var grammar = {\n    keyword: keywords,\n    number: numbers,\n    operator: operators,\n    builtin: builtins,\n    punctuation: punctuation,\n    identifier: identifiers\n  };\n\n  // tokenizers\n  function tokenBase(stream, state) {\n    // Handle Comments\n    //var ch = stream.peek();\n\n    var parent = state.returnStack[state.returnStack.length - 1];\n    if (parent && parent.shouldReturnFrom(state)) {\n      state.tokenize = parent.tokenize;\n      state.returnStack.pop();\n      return state.tokenize(stream, state);\n    }\n\n    if (stream.eatSpace()) {\n      return null;\n    }\n\n    if (stream.eat('(')) {\n      state.bracketNesting += 1;\n      return 'punctuation';\n    }\n\n    if (stream.eat(')')) {\n      state.bracketNesting -= 1;\n      return 'punctuation';\n    }\n\n    for (var key in grammar) {\n      if (stream.match(grammar[key])) {\n        return key;\n      }\n    }\n\n    var ch = stream.next();\n\n    // single-quote string\n    if (ch === \"'\") {\n      return tokenSingleQuoteString(stream, state);\n    }\n\n    if (ch === '$') {\n      return tokenVariable(stream, state);\n    }\n\n    // double-quote string\n    if (ch === '\"') {\n      return tokenDoubleQuoteString(stream, state);\n    }\n\n    if (ch === '<' && stream.eat('#')) {\n      state.tokenize = tokenComment;\n      return tokenComment(stream, state);\n    }\n\n    if (ch === '#') {\n      stream.skipToEnd();\n      return 'comment';\n    }\n\n    if (ch === '@') {\n      var quoteMatch = stream.eat(/[\"']/);\n      if (quoteMatch && stream.eol()) {\n        state.tokenize = tokenMultiString;\n        state.startQuote = quoteMatch[0];\n        return tokenMultiString(stream, state);\n      } else if (stream.eol()) {\n        return 'error';\n      } else if (stream.peek().match(/[({]/)) {\n        return 'punctuation';\n      } else if (stream.peek().match(varNames)) {\n        // splatted variable\n        return tokenVariable(stream, state);\n      }\n    }\n    return 'error';\n  }\n\n  function tokenSingleQuoteString(stream, state) {\n    var ch;\n    while ((ch = stream.peek()) != null) {\n      stream.next();\n\n      if (ch === \"'\" && !stream.eat(\"'\")) {\n        state.tokenize = tokenBase;\n        return 'string';\n      }\n    }\n\n    return 'error';\n  }\n\n  function tokenDoubleQuoteString(stream, state) {\n    var ch;\n    while ((ch = stream.peek()) != null) {\n      if (ch === '$') {\n        state.tokenize = tokenStringInterpolation;\n        return 'string';\n      }\n\n      stream.next();\n      if (ch === '`') {\n        stream.next();\n        continue;\n      }\n\n      if (ch === '\"' && !stream.eat('\"')) {\n        state.tokenize = tokenBase;\n        return 'string';\n      }\n    }\n\n    return 'error';\n  }\n\n  function tokenStringInterpolation(stream, state) {\n    return tokenInterpolation(stream, state, tokenDoubleQuoteString);\n  }\n\n  function tokenMultiStringReturn(stream, state) {\n    state.tokenize = tokenMultiString;\n    state.startQuote = '\"'\n    return tokenMultiString(stream, state);\n  }\n\n  function tokenHereStringInterpolation(stream, state) {\n    return tokenInterpolation(stream, state, tokenMultiStringReturn);\n  }\n\n  function tokenInterpolation(stream, state, parentTokenize) {\n    if (stream.match('$(')) {\n      var savedBracketNesting = state.bracketNesting;\n      state.returnStack.push({\n        /*jshint loopfunc:true */\n        shouldReturnFrom: function(state) {\n          return state.bracketNesting === savedBracketNesting;\n        },\n        tokenize: parentTokenize\n      });\n      state.tokenize = tokenBase;\n      state.bracketNesting += 1;\n      return 'punctuation';\n    } else {\n      stream.next();\n      state.returnStack.push({\n        shouldReturnFrom: function() { return true; },\n        tokenize: parentTokenize\n      });\n      state.tokenize = tokenVariable;\n      return state.tokenize(stream, state);\n    }\n  }\n\n  function tokenComment(stream, state) {\n    var maybeEnd = false, ch;\n    while ((ch = stream.next()) != null) {\n      if (maybeEnd && ch == '>') {\n          state.tokenize = tokenBase;\n          break;\n      }\n      maybeEnd = (ch === '#');\n    }\n    return 'comment';\n  }\n\n  function tokenVariable(stream, state) {\n    var ch = stream.peek();\n    if (stream.eat('{')) {\n      state.tokenize = tokenVariableWithBraces;\n      return tokenVariableWithBraces(stream, state);\n    } else if (ch != undefined && ch.match(varNames)) {\n      stream.eatWhile(varNames);\n      state.tokenize = tokenBase;\n      return 'variable-2';\n    } else {\n      state.tokenize = tokenBase;\n      return 'error';\n    }\n  }\n\n  function tokenVariableWithBraces(stream, state) {\n    var ch;\n    while ((ch = stream.next()) != null) {\n      if (ch === '}') {\n        state.tokenize = tokenBase;\n        break;\n      }\n    }\n    return 'variable-2';\n  }\n\n  function tokenMultiString(stream, state) {\n    var quote = state.startQuote;\n    if (stream.sol() && stream.match(new RegExp(quote + '@'))) {\n      state.tokenize = tokenBase;\n    }\n    else if (quote === '\"') {\n      while (!stream.eol()) {\n        var ch = stream.peek();\n        if (ch === '$') {\n          state.tokenize = tokenHereStringInterpolation;\n          return 'string';\n        }\n\n        stream.next();\n        if (ch === '`') {\n          stream.next();\n        }\n      }\n    }\n    else {\n      stream.skipToEnd();\n    }\n\n    return 'string';\n  }\n\n  var external = {\n    startState: function() {\n      return {\n        returnStack: [],\n        bracketNesting: 0,\n        tokenize: tokenBase\n      };\n    },\n\n    token: function(stream, state) {\n      return state.tokenize(stream, state);\n    },\n\n    blockCommentStart: '<#',\n    blockCommentEnd: '#>',\n    lineComment: '#',\n    fold: 'brace'\n  };\n  return external;\n});\n\nCodeMirror.defineMIME('application/x-powershell', 'powershell');\n});\n"]}