{"version":3,"file":"dockerfile-D72m9Krh.cjs","sources":["../../../node_modules/@codemirror/legacy-modes/mode/dockerfile.js"],"sourcesContent":["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":["from","fromRegex","RegExp","shells","shellsAsArrayRegex","join","expose","exposeRegex","instructionRegex","concat","instructionOnlyLine","instructionWithArguments","dockerFile","simpleMode","start","regex","sol","token","next","single","pop","double","array","arguments","push","languageData","commentTokens","line"],"mappings":"8HAEA,IAAIA,EAAO,OACPC,EAAY,IAAIC,OAAO,cAAgBF,EAAO,OAAQ,KAEtDG,EAAS,CAAC,MAAO,MAAO,aAAc,SACtCC,EAAqB,IAAIF,OAAO,WAAaC,EAAOE,KAAK,KAAO,aAAc,KAE9EC,EAAS,SACTC,EAAc,IAAIL,OAAO,WAAaI,EAAS,UAAW,KAU1DE,EAAmB,IADJ,CAACR,EAAMM,GAAQG,OAAON,GAAQM,OAPpC,CACX,MAAO,OAAQ,aAAc,QAAS,MACtC,MAAO,OAAQ,SAAU,OACzB,UAAW,UAAW,aAAc,cAAe,UAKXJ,KAAK,KAAO,IAClDK,EAAsB,IAAIR,OAAO,UAAYM,EAAmB,gBAAiB,KACjFG,EAA2B,IAAIT,OAAO,UAAYM,EAAmB,SAAU,KAEvE,MAACI,EAAaC,EAAAA,WAAW,CACnCC,MAAO,CAEL,CACEC,MAAO,WACPC,KAAK,EACLC,MAAO,WAET,CACEF,MAAOd,EACPgB,MAAO,CAAC,KAAM,WACdD,KAAK,EACLE,KAAM,QAGR,CACEH,MAAOL,EACPO,MAAO,CAAC,KAAM,UAAW,KAAM,SAC/BD,KAAK,GAEP,CACED,MAAOX,EACPa,MAAO,CAAC,KAAM,UAAW,MACzBD,KAAK,EACLE,KAAM,SAER,CACEH,MAAOR,EACPU,MAAO,CAAC,KAAM,UAAW,MACzBD,KAAK,EACLE,KAAM,UAGR,CACEH,MAAOJ,EACPM,MAAO,CAAC,KAAM,UAAW,MACzBD,KAAK,EACLE,KAAM,aAER,CACEH,MAAO,IACPE,MAAO,OAGXjB,KAAM,CACJ,CACEe,MAAO,OACPE,MAAO,KACPC,KAAM,SAER,CAEEH,MAAO,cACPE,MAAO,CAAC,KAAM,SACdC,KAAM,SAER,CACEH,MAAO,mBACPE,MAAO,CAAC,KAAM,WACdC,KAAM,SAGR,CACED,MAAO,KACPC,KAAM,UAGVC,OAAQ,CACN,CACEJ,MAAO,iBACPE,MAAO,UAET,CACEF,MAAO,IACPE,MAAO,SACPG,KAAK,IAGTC,OAAQ,CACN,CACEN,MAAO,iBACPE,MAAO,UAET,CACEF,MAAO,IACPE,MAAO,SACPG,KAAK,IAGTE,MAAO,CACL,CACEP,MAAO,KACPE,MAAO,KACPC,KAAM,SAER,CACEH,MAAO,qBACPE,MAAO,WAGXX,OAAQ,CACN,CACES,MAAO,OACPE,MAAO,SACPC,KAAM,SAER,CACEH,MAAO,UACPE,MAAO,KACPC,KAAM,SAER,CACEH,MAAO,MACPE,MAAO,UAET,CACEF,MAAO,SACPE,MAAO,MAGT,CACEA,MAAO,KACPC,KAAM,UAGVK,UAAW,CACT,CACER,MAAO,WACPC,KAAK,EACLC,MAAO,WAET,CACEF,MAAO,sBACPE,MAAO,SACPC,KAAM,SAER,CACEH,MAAO,IACPE,MAAO,SACPO,KAAM,UAER,CACET,MAAO,sBACPE,MAAO,SACPC,KAAM,SAER,CACEH,MAAO,IACPE,MAAO,SACPO,KAAM,UAER,CACET,MAAO,gBACPE,MAAO,MAET,CACEF,MAAO,WACPE,MAAO,KACPC,KAAM,SAER,CACEH,MAAO,UACPE,MAAO,MAGT,CACEA,MAAO,KACPC,KAAM,UAGVO,aAAc,CACZC,cAAe,CAACC,KAAM","x_google_ignoreList":[0]}