@edools/bamboo-linter
Version:
Edools theme quality assurance tool
2 lines • 4.04 kB
JavaScript
function _slicedToArray(e,n){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e)){var r=[],t=!0,o=!1,i=void 0;try{for(var u,a=e[Symbol.iterator]();!(t=(u=a.next()).done)&&(r.push(u.value),!n||r.length!==n);t=!0);}catch(c){o=!0,i=c}finally{try{!t&&a["return"]&&a["return"]()}finally{if(o)throw i}}return r}throw new TypeError("Invalid attempt to destructure non-iterable instance")}!function(e,n){"object"==typeof exports&&"undefined"!=typeof module?n(exports,require("fs"),require("ramda"),require("rx"),require("bluebird"),require("chalk"),require("node-fetch"),require("cheerio")):"function"==typeof define&&define.amd?define(["exports","fs","ramda","rx","bluebird","chalk","node-fetch","cheerio"],n):n(e.ThemeQA={},e.fs,e.R,e.rx,e.bluebird,e.chalk,e.fetch,e.cheerio)}(this,function(e,n,r,t,o,i,u,a){"use strict";function c(e){return D(e,{encoding:"utf8"}).then(function(e){return JSON.parse(e)}).then(function(e){return m(e)})["catch"](function(){return E("Your Appfile doesn't exist")})}function f(e){var n=e.name,r=e.version;return s().then(function(e){return u("https://api.myedools.com/apps/"+n+"/releases/"+r,l(e))}).then(function(e){return e.json()})}function s(){return D("theme-config.json",{encoding:"utf8"}).then(function(e){return JSON.parse(e)})["catch"](function(e){return E("There is something wrong with your theme config file!",e)})}function l(e){return{headers:{Authorization:"Token token="+e.token}}}function m(e){return r.map(function(n){return{name:n,version:e[n]}},r.keys(e))}function d(e,n){var r=a.load(e);return P(j.map(function(e){return b(r,e)},n))}function p(e,n){var r=n.name,t=n.value,o=e("["+r+"]"),i=new RegExp(v(t)),u=function(e){return i.test(e.attribs[r])};return j.any(u,o)}function h(e,n){var r=n.name,t=n.attributes,o=e(""+r),i=function(e){var n=j.keys(e.attribs),r=function(n){var r=new RegExp(v(t[n]));return!t[n]||r.test(e.attribs[n])};return j.all(r,n)};return j.any(i,o)}function v(){var e=void 0===arguments[0]?"":arguments[0];return e.replace(/\(/g,"\\(").replace(/\)/g,"\\)")}function b(e,n){var r="A"===n.type?p:h;return r(e,n)?!0:y(n)}function y(e){var n="A"===e.type?g(e.name,e.value):x(e),r=e.message.split("{{ value }}"),t=_slicedToArray(r,2),o=t[0],i=t[1];return[o,n,i]}function g(e,n){return e+'="'+n+'"'}function x(e){var n=e.name,r=e.attributes,t=j.join(" "),o=j.map(function(e){return g(e,r[e])},j.keys(r));return"<"+n+" "+t(o)+"></"+n+">"}function k(e,n){n&&n.length>0&&(M(e+" :"),r.forEach(function(e){var n=_slicedToArray(e,3),r=n[0],t=n[1],o=n[2];E(r),Y(" "+t),E(o,"\n")},n))}function A(e){try{return n.lstatSync(e)}catch(r){E("Your template folder doesn't exist")}}function O(e){return _(e,{encoding:"utf8"})}function w(e,n){var r=e.expectations,o=Object.keys(r);return t.Observable.from(o).flatMap(function(e){var o=e+".html";return t.Observable.fromPromise(O(n+"/"+o)).map(function(n){return{name:o,html:n,expectations:r[e]}})})}function T(e){return e.messages=d(e.html,e.expectations),e}function q(e){console.log("Linting your Edools theme..."),A(e.templatesDir)&&t.Observable.fromPromise(c(e.appfileDir)).flatMap(function(e){return t.Observable.from(e)}).filter(function(e){var n=e.name;return"bamboo"!==n}).flatMap(function(e){return t.Observable.fromPromise(f(e))}).flatMap(function(n){return w(n,e.templatesDir)}).map(function(e){return T(e)}).reduce(function(e,n){return e=e.concat(n)},[]).subscribe(function(e){var n=r.any(function(e){var n=e.messages;return n.length>0},e);n?(r.forEach(function(e){var n=e.name,r=e.messages;return R(n,r)},e),E("Your theme isn't valid"),process.exit(1)):S("Your theme is valid!")})}n="default"in n?n["default"]:n;var j="default"in r?r["default"]:r;i="default"in i?i["default"]:i,u="default"in u?u["default"]:u;var E=r.compose(console.log,i.bold.red),S=r.compose(console.log,i.bold.green),M=r.compose(console.log,i.underline),Y=r.compose(console.log,i.bold.yellow),D=o.promisify(n.readFile),P=j.filter(j.compose(j.not,j.is(Boolean))),R=k,_=o.promisify(n.readFile);e.validateTheme=q});
//# sourceMappingURL=index.min.js.map