File size: 13,652 Bytes
11b6e82
1
{"version":3,"file":"dockerfile.088eba71.js","sources":["../../../../ui/node_modules/.pnpm/@codemirror+legacy-modes@6.3.1/node_modules/@codemirror/legacy-modes/mode/simple-mode.js","../../../../ui/node_modules/.pnpm/@codemirror+legacy-modes@6.3.1/node_modules/@codemirror/legacy-modes/mode/dockerfile.js"],"sourcesContent":["export function simpleMode(states) {\n  ensureState(states, \"start\");\n  var states_ = {}, meta = states.languageData || {}, hasIndentation = false;\n  for (var state in states) if (state != meta && states.hasOwnProperty(state)) {\n    var list = states_[state] = [], orig = states[state];\n    for (var i = 0; i < orig.length; i++) {\n      var data = orig[i];\n      list.push(new Rule(data, states));\n      if (data.indent || data.dedent) hasIndentation = true;\n    }\n  }\n  return {\n    name: meta.name,\n    startState: function() {\n      return {state: \"start\", pending: null, indent: hasIndentation ? [] : null};\n    },\n    copyState: function(state) {\n      var s = {state: state.state, pending: state.pending, indent: state.indent && state.indent.slice(0)};\n      if (state.stack)\n        s.stack = state.stack.slice(0);\n      return s;\n    },\n    token: tokenFunction(states_),\n    indent: indentFunction(states_, meta),\n    languageData: meta\n  }\n};\n\nfunction ensureState(states, name) {\n  if (!states.hasOwnProperty(name))\n    throw new Error(\"Undefined state \" + name + \" in simple mode\");\n}\n\nfunction toRegex(val, caret) {\n  if (!val) return /(?:)/;\n  var flags = \"\";\n  if (val instanceof RegExp) {\n    if (val.ignoreCase) flags = \"i\";\n    val = val.source;\n  } else {\n    val = String(val);\n  }\n  return new RegExp((caret === false ? \"\" : \"^\") + \"(?:\" + val + \")\", flags);\n}\n\nfunction asToken(val) {\n  if (!val) return null;\n  if (val.apply) return val\n  if (typeof val == \"string\") return val.replace(/\\./g, \" \");\n  var result = [];\n  for (var i = 0; i < val.length; i++)\n    result.push(val[i] && val[i].replace(/\\./g, \" \"));\n  return result;\n}\n\nfunction Rule(data, states) {\n  if (data.next || data.push) ensureState(states, data.next || data.push);\n  this.regex = toRegex(data.regex);\n  this.token = asToken(data.token);\n  this.data = data;\n}\n\nfunction tokenFunction(states) {\n  return function(stream, state) {\n    if (state.pending) {\n      var pend = state.pending.shift();\n      if (state.pending.length == 0) state.pending = null;\n      stream.pos += pend.text.length;\n      return pend.token;\n    }\n\n    var curState = states[state.state];\n    for (var i = 0; i < curState.length; i++) {\n      var rule = curState[i];\n      var matches = (!rule.data.sol || stream.sol()) && stream.match(rule.regex);\n      if (matches) {\n        if (rule.data.next) {\n          state.state = rule.data.next;\n        } else if (rule.data.push) {\n          (state.stack || (state.stack = [])).push(state.state);\n          state.state = rule.data.push;\n        } else if (rule.data.pop && state.stack && state.stack.length) {\n          state.state = state.stack.pop();\n        }\n\n        if (rule.data.indent)\n          state.indent.push(stream.indentation() + stream.indentUnit);\n        if (rule.data.dedent)\n          state.indent.pop();\n        var token = rule.token\n        if (token && token.apply) token = token(matches)\n        if (matches.length > 2 && rule.token && typeof rule.token != \"string\") {\n          state.pending = [];\n          for (var j = 2; j < matches.length; j++)\n            if (matches[j])\n              state.pending.push({text: matches[j], token: rule.token[j - 1]});\n          stream.backUp(matches[0].length - (matches[1] ? matches[1].length : 0));\n          return token[0];\n        } else if (token && token.join) {\n          return token[0];\n        } else {\n          return token;\n        }\n      }\n    }\n    stream.next();\n    return null;\n  };\n}\n\nfunction indentFunction(states, meta) {\n  return function(state, textAfter) {\n    if (state.indent == null || meta.dontIndentStates && meta.doneIndentState.indexOf(state.state) > -1)\n      return null\n\n    var pos = state.indent.length - 1, rules = states[state.state];\n    scan: for (;;) {\n      for (var i = 0; i < rules.length; i++) {\n        var rule = rules[i];\n        if (rule.data.dedent && rule.data.dedentIfLineStart !== false) {\n          var m = rule.regex.exec(textAfter);\n          if (m && m[0]) {\n            pos--;\n            if (rule.next || rule.push) rules = states[rule.next || rule.push];\n            textAfter = textAfter.slice(m[0].length);\n            continue scan;\n          }\n        }\n      }\n      break;\n    }\n    return pos < 0 ? 0 : state.indent[pos];\n  };\n}\n","import {simpleMode} from \"./simple-mode.js\"\n\nvar from = \"from\";\nvar fromRegex = new RegExp(\"^(\\\\s*)\\\\b(\" + from + \")\\\\b\", \"i\");\n\nvar shells = [\"run\", \"cmd\", \"entrypoint\", \"shell\"];\nvar shellsAsArrayRegex = new RegExp(\"^(\\\\s*)(\" + shells.join('|') + \")(\\\\s+\\\\[)\", \"i\");\n\nvar expose = \"expose\";\nvar exposeRegex = new RegExp(\"^(\\\\s*)(\" + expose + \")(\\\\s+)\", \"i\");\n\nvar others = [\n  \"arg\", \"from\", \"maintainer\", \"label\", \"env\",\n  \"add\", \"copy\", \"volume\", \"user\",\n  \"workdir\", \"onbuild\", \"stopsignal\", \"healthcheck\", \"shell\"\n];\n\n// Collect all Dockerfile directives\nvar instructions = [from, expose].concat(shells).concat(others),\n    instructionRegex = \"(\" + instructions.join('|') + \")\",\n    instructionOnlyLine = new RegExp(\"^(\\\\s*)\" + instructionRegex + \"(\\\\s*)(#.*)?$\", \"i\"),\n    instructionWithArguments = new RegExp(\"^(\\\\s*)\" + instructionRegex + \"(\\\\s+)\", \"i\");\n\nexport const dockerFile = simpleMode({\n  start: [\n    // Block comment: This is a line starting with a comment\n    {\n      regex: /^\\s*#.*$/,\n      sol: true,\n      token: \"comment\"\n    },\n    {\n      regex: fromRegex,\n      token: [null, \"keyword\"],\n      sol: true,\n      next: \"from\"\n    },\n    // Highlight an instruction without any arguments (for convenience)\n    {\n      regex: instructionOnlyLine,\n      token: [null, \"keyword\", null, \"error\"],\n      sol: true\n    },\n    {\n      regex: shellsAsArrayRegex,\n      token: [null, \"keyword\", null],\n      sol: true,\n      next: \"array\"\n    },\n    {\n      regex: exposeRegex,\n      token: [null, \"keyword\", null],\n      sol: true,\n      next: \"expose\"\n    },\n    // Highlight an instruction followed by arguments\n    {\n      regex: instructionWithArguments,\n      token: [null, \"keyword\", null],\n      sol: true,\n      next: \"arguments\"\n    },\n    {\n      regex: /./,\n      token: null\n    }\n  ],\n  from: [\n    {\n      regex: /\\s*$/,\n      token: null,\n      next: \"start\"\n    },\n    {\n      // Line comment without instruction arguments is an error\n      regex: /(\\s*)(#.*)$/,\n      token: [null, \"error\"],\n      next: \"start\"\n    },\n    {\n      regex: /(\\s*\\S+\\s+)(as)/i,\n      token: [null, \"keyword\"],\n      next: \"start\"\n    },\n    // Fail safe return to start\n    {\n      token: null,\n      next: \"start\"\n    }\n  ],\n  single: [\n    {\n      regex: /(?:[^\\\\']|\\\\.)/,\n      token: \"string\"\n    },\n    {\n      regex: /'/,\n      token: \"string\",\n      pop: true\n    }\n  ],\n  double: [\n    {\n      regex: /(?:[^\\\\\"]|\\\\.)/,\n      token: \"string\"\n    },\n    {\n      regex: /\"/,\n      token: \"string\",\n      pop: true\n    }\n  ],\n  array: [\n    {\n      regex: /\\]/,\n      token: null,\n      next: \"start\"\n    },\n    {\n      regex: /\"(?:[^\\\\\"]|\\\\.)*\"?/,\n      token: \"string\"\n    }\n  ],\n  expose: [\n    {\n      regex: /\\d+$/,\n      token: \"number\",\n      next: \"start\"\n    },\n    {\n      regex: /[^\\d]+$/,\n      token: null,\n      next: \"start\"\n    },\n    {\n      regex: /\\d+/,\n      token: \"number\"\n    },\n    {\n      regex: /[^\\d]+/,\n      token: null\n    },\n    // Fail safe return to start\n    {\n      token: null,\n      next: \"start\"\n    }\n  ],\n  arguments: [\n    {\n      regex: /^\\s*#.*$/,\n      sol: true,\n      token: \"comment\"\n    },\n    {\n      regex: /\"(?:[^\\\\\"]|\\\\.)*\"?$/,\n      token: \"string\",\n      next: \"start\"\n    },\n    {\n      regex: /\"/,\n      token: \"string\",\n      push: \"double\"\n    },\n    {\n      regex: /'(?:[^\\\\']|\\\\.)*'?$/,\n      token: \"string\",\n      next: \"start\"\n    },\n    {\n      regex: /'/,\n      token: \"string\",\n      push: \"single\"\n    },\n    {\n      regex: /[^#\"']+[\\\\`]$/,\n      token: null\n    },\n    {\n      regex: /[^#\"']+$/,\n      token: null,\n      next: \"start\"\n    },\n    {\n      regex: /[^#\"']+/,\n      token: null\n    },\n    // Fail safe return to start\n    {\n      token: null,\n      next: \"start\"\n    }\n  ],\n  languageData: {\n    commentTokens: {line: \"#\"}\n  }\n});\n\n"],"names":[],"mappings":"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"}