{"ast":null,"code":"\"use strict\";\n\nconst pathUtil = require(\"path\");\n\nconst fs = require(\"./utils/fs\");\n\nconst validate = require(\"./utils/validate\");\n\nconst dir = require(\"./dir\");\n\nconst validateInput = (methodName, symlinkValue, path) => {\n  const methodSignature = `${methodName}(symlinkValue, path)`;\n  validate.argument(methodSignature, \"symlinkValue\", symlinkValue, [\"string\"]);\n  validate.argument(methodSignature, \"path\", path, [\"string\"]);\n}; // ---------------------------------------------------------\n// Sync\n// ---------------------------------------------------------\n\n\nconst symlinkSync = (symlinkValue, path) => {\n  try {\n    fs.symlinkSync(symlinkValue, path);\n  } catch (err) {\n    if (err.code === \"ENOENT\") {\n      // Parent directories don't exist. Just create them and retry.\n      dir.createSync(pathUtil.dirname(path));\n      fs.symlinkSync(symlinkValue, path);\n    } else {\n      throw err;\n    }\n  }\n}; // ---------------------------------------------------------\n// Async\n// ---------------------------------------------------------\n\n\nconst symlinkAsync = (symlinkValue, path) => {\n  return new Promise((resolve, reject) => {\n    fs.symlink(symlinkValue, path).then(resolve).catch(err => {\n      if (err.code === \"ENOENT\") {\n        // Parent directories don't exist. Just create them and retry.\n        dir.createAsync(pathUtil.dirname(path)).then(() => {\n          return fs.symlink(symlinkValue, path);\n        }).then(resolve, reject);\n      } else {\n        reject(err);\n      }\n    });\n  });\n}; // ---------------------------------------------------------\n// API\n// ---------------------------------------------------------\n\n\nexports.validateInput = validateInput;\nexports.sync = symlinkSync;\nexports.async = symlinkAsync;","map":{"version":3,"sources":["D:/Development/Work/CENOS/cenos-ui/node_modules/fs-jetpack/lib/symlink.js"],"names":["pathUtil","require","fs","validate","dir","validateInput","methodName","symlinkValue","path","methodSignature","argument","symlinkSync","err","code","createSync","dirname","symlinkAsync","Promise","resolve","reject","symlink","then","catch","createAsync","exports","sync","async"],"mappings":"AAAA;;AAEA,MAAMA,QAAQ,GAAGC,OAAO,CAAC,MAAD,CAAxB;;AACA,MAAMC,EAAE,GAAGD,OAAO,CAAC,YAAD,CAAlB;;AACA,MAAME,QAAQ,GAAGF,OAAO,CAAC,kBAAD,CAAxB;;AACA,MAAMG,GAAG,GAAGH,OAAO,CAAC,OAAD,CAAnB;;AAEA,MAAMI,aAAa,GAAG,CAACC,UAAD,EAAaC,YAAb,EAA2BC,IAA3B,KAAoC;AACxD,QAAMC,eAAe,GAAI,GAAEH,UAAW,sBAAtC;AACAH,EAAAA,QAAQ,CAACO,QAAT,CAAkBD,eAAlB,EAAmC,cAAnC,EAAmDF,YAAnD,EAAiE,CAAC,QAAD,CAAjE;AACAJ,EAAAA,QAAQ,CAACO,QAAT,CAAkBD,eAAlB,EAAmC,MAAnC,EAA2CD,IAA3C,EAAiD,CAAC,QAAD,CAAjD;AACD,CAJD,C,CAMA;AACA;AACA;;;AAEA,MAAMG,WAAW,GAAG,CAACJ,YAAD,EAAeC,IAAf,KAAwB;AAC1C,MAAI;AACFN,IAAAA,EAAE,CAACS,WAAH,CAAeJ,YAAf,EAA6BC,IAA7B;AACD,GAFD,CAEE,OAAOI,GAAP,EAAY;AACZ,QAAIA,GAAG,CAACC,IAAJ,KAAa,QAAjB,EAA2B;AACzB;AACAT,MAAAA,GAAG,CAACU,UAAJ,CAAed,QAAQ,CAACe,OAAT,CAAiBP,IAAjB,CAAf;AACAN,MAAAA,EAAE,CAACS,WAAH,CAAeJ,YAAf,EAA6BC,IAA7B;AACD,KAJD,MAIO;AACL,YAAMI,GAAN;AACD;AACF;AACF,CAZD,C,CAcA;AACA;AACA;;;AAEA,MAAMI,YAAY,GAAG,CAACT,YAAD,EAAeC,IAAf,KAAwB;AAC3C,SAAO,IAAIS,OAAJ,CAAY,CAACC,OAAD,EAAUC,MAAV,KAAqB;AACtCjB,IAAAA,EAAE,CAACkB,OAAH,CAAWb,YAAX,EAAyBC,IAAzB,EACGa,IADH,CACQH,OADR,EAEGI,KAFH,CAESV,GAAG,IAAI;AACZ,UAAIA,GAAG,CAACC,IAAJ,KAAa,QAAjB,EAA2B;AACzB;AACAT,QAAAA,GAAG,CACAmB,WADH,CACevB,QAAQ,CAACe,OAAT,CAAiBP,IAAjB,CADf,EAEGa,IAFH,CAEQ,MAAM;AACV,iBAAOnB,EAAE,CAACkB,OAAH,CAAWb,YAAX,EAAyBC,IAAzB,CAAP;AACD,SAJH,EAKGa,IALH,CAKQH,OALR,EAKiBC,MALjB;AAMD,OARD,MAQO;AACLA,QAAAA,MAAM,CAACP,GAAD,CAAN;AACD;AACF,KAdH;AAeD,GAhBM,CAAP;AAiBD,CAlBD,C,CAoBA;AACA;AACA;;;AAEAY,OAAO,CAACnB,aAAR,GAAwBA,aAAxB;AACAmB,OAAO,CAACC,IAAR,GAAed,WAAf;AACAa,OAAO,CAACE,KAAR,GAAgBV,YAAhB","sourcesContent":["\"use strict\";\n\nconst pathUtil = require(\"path\");\nconst fs = require(\"./utils/fs\");\nconst validate = require(\"./utils/validate\");\nconst dir = require(\"./dir\");\n\nconst validateInput = (methodName, symlinkValue, path) => {\n  const methodSignature = `${methodName}(symlinkValue, path)`;\n  validate.argument(methodSignature, \"symlinkValue\", symlinkValue, [\"string\"]);\n  validate.argument(methodSignature, \"path\", path, [\"string\"]);\n};\n\n// ---------------------------------------------------------\n// Sync\n// ---------------------------------------------------------\n\nconst symlinkSync = (symlinkValue, path) => {\n  try {\n    fs.symlinkSync(symlinkValue, path);\n  } catch (err) {\n    if (err.code === \"ENOENT\") {\n      // Parent directories don't exist. Just create them and retry.\n      dir.createSync(pathUtil.dirname(path));\n      fs.symlinkSync(symlinkValue, path);\n    } else {\n      throw err;\n    }\n  }\n};\n\n// ---------------------------------------------------------\n// Async\n// ---------------------------------------------------------\n\nconst symlinkAsync = (symlinkValue, path) => {\n  return new Promise((resolve, reject) => {\n    fs.symlink(symlinkValue, path)\n      .then(resolve)\n      .catch(err => {\n        if (err.code === \"ENOENT\") {\n          // Parent directories don't exist. Just create them and retry.\n          dir\n            .createAsync(pathUtil.dirname(path))\n            .then(() => {\n              return fs.symlink(symlinkValue, path);\n            })\n            .then(resolve, reject);\n        } else {\n          reject(err);\n        }\n      });\n  });\n};\n\n// ---------------------------------------------------------\n// API\n// ---------------------------------------------------------\n\nexports.validateInput = validateInput;\nexports.sync = symlinkSync;\nexports.async = symlinkAsync;\n"]},"metadata":{},"sourceType":"script"}