@quintal/environment 0.1.0 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,2 +0,0 @@
1
- /* eslint-disable */
2
- window.PR_SHOULD_USE_CONTINUATION=true;(function(){var h=["break,continue,do,else,for,if,return,while"];var u=[h,"auto,case,char,const,default,double,enum,extern,float,goto,int,long,register,short,signed,sizeof,static,struct,switch,typedef,union,unsigned,void,volatile"];var p=[u,"catch,class,delete,false,import,new,operator,private,protected,public,this,throw,true,try,typeof"];var l=[p,"alignof,align_union,asm,axiom,bool,concept,concept_map,const_cast,constexpr,decltype,dynamic_cast,explicit,export,friend,inline,late_check,mutable,namespace,nullptr,reinterpret_cast,static_assert,static_cast,template,typeid,typename,using,virtual,where"];var x=[p,"abstract,boolean,byte,extends,final,finally,implements,import,instanceof,null,native,package,strictfp,super,synchronized,throws,transient"];var R=[x,"as,base,by,checked,decimal,delegate,descending,dynamic,event,fixed,foreach,from,group,implicit,in,interface,internal,into,is,lock,object,out,override,orderby,params,partial,readonly,ref,sbyte,sealed,stackalloc,string,select,uint,ulong,unchecked,unsafe,ushort,var"];var r="all,and,by,catch,class,else,extends,false,finally,for,if,in,is,isnt,loop,new,no,not,null,of,off,on,or,return,super,then,true,try,unless,until,when,while,yes";var w=[p,"debugger,eval,export,function,get,null,set,undefined,var,with,Infinity,NaN"];var s="caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END";var I=[h,"and,as,assert,class,def,del,elif,except,exec,finally,from,global,import,in,is,lambda,nonlocal,not,or,pass,print,raise,try,with,yield,False,True,None"];var f=[h,"alias,and,begin,case,class,def,defined,elsif,end,ensure,false,in,module,next,nil,not,or,redo,rescue,retry,self,super,then,true,undef,unless,until,when,yield,BEGIN,END"];var H=[h,"case,done,elif,esac,eval,fi,function,in,local,set,then,until"];var A=[l,R,w,s+I,f,H];var e=/^(DIR|FILE|vector|(de|priority_)?queue|list|stack|(const_)?iterator|(multi)?(set|map)|bitset|u?(int|float)\d*)/;var C="str";var z="kwd";var j="com";var O="typ";var G="lit";var L="pun";var F="pln";var m="tag";var E="dec";var J="src";var P="atn";var n="atv";var N="nocode";var M="(?:^^\\.?|[+-]|\\!|\\!=|\\!==|\\#|\\%|\\%=|&|&&|&&=|&=|\\(|\\*|\\*=|\\+=|\\,|\\-=|\\->|\\/|\\/=|:|::|\\;|<|<<|<<=|<=|=|==|===|>|>=|>>|>>=|>>>|>>>=|\\?|\\@|\\[|\\^|\\^=|\\^\\^|\\^\\^=|\\{|\\||\\|=|\\|\\||\\|\\|=|\\~|break|case|continue|delete|do|else|finally|instanceof|return|throw|try|typeof)\\s*";function k(Z){var ad=0;var S=false;var ac=false;for(var V=0,U=Z.length;V<U;++V){var ae=Z[V];if(ae.ignoreCase){ac=true}else{if(/[a-z]/i.test(ae.source.replace(/\\u[0-9a-f]{4}|\\x[0-9a-f]{2}|\\[^ux]/gi,""))){S=true;ac=false;break}}}var Y={b:8,t:9,n:10,v:11,f:12,r:13};function ab(ah){var ag=ah.charCodeAt(0);if(ag!==92){return ag}var af=ah.charAt(1);ag=Y[af];if(ag){return ag}else{if("0"<=af&&af<="7"){return parseInt(ah.substring(1),8)}else{if(af==="u"||af==="x"){return parseInt(ah.substring(2),16)}else{return ah.charCodeAt(1)}}}}function T(af){if(af<32){return(af<16?"\\x0":"\\x")+af.toString(16)}var ag=String.fromCharCode(af);if(ag==="\\"||ag==="-"||ag==="["||ag==="]"){ag="\\"+ag}return ag}function X(am){var aq=am.substring(1,am.length-1).match(new RegExp("\\\\u[0-9A-Fa-f]{4}|\\\\x[0-9A-Fa-f]{2}|\\\\[0-3][0-7]{0,2}|\\\\[0-7]{1,2}|\\\\[\\s\\S]|-|[^-\\\\]","g"));var ak=[];var af=[];var ao=aq[0]==="^";for(var ar=ao?1:0,aj=aq.length;ar<aj;++ar){var ah=aq[ar];if(/\\[bdsw]/i.test(ah)){ak.push(ah)}else{var ag=ab(ah);var al;if(ar+2<aj&&"-"===aq[ar+1]){al=ab(aq[ar+2]);ar+=2}else{al=ag}af.push([ag,al]);if(!(al<65||ag>122)){if(!(al<65||ag>90)){af.push([Math.max(65,ag)|32,Math.min(al,90)|32])}if(!(al<97||ag>122)){af.push([Math.max(97,ag)&~32,Math.min(al,122)&~32])}}}}af.sort(function(av,au){return(av[0]-au[0])||(au[1]-av[1])});var ai=[];var ap=[NaN,NaN];for(var ar=0;ar<af.length;++ar){var at=af[ar];if(at[0]<=ap[1]+1){ap[1]=Math.max(ap[1],at[1])}else{ai.push(ap=at)}}var an=["["];if(ao){an.push("^")}an.push.apply(an,ak);for(var ar=0;ar<ai.length;++ar){var at=ai[ar];an.push(T(at[0]));if(at[1]>at[0]){if(at[1]+1>at[0]){an.push("-")}an.push(T(at[1]))}}an.push("]");return an.join("")}function W(al){var aj=al.source.match(new RegExp("(?:\\[(?:[^\\x5C\\x5D]|\\\\[\\s\\S])*\\]|\\\\u[A-Fa-f0-9]{4}|\\\\x[A-Fa-f0-9]{2}|\\\\[0-9]+|\\\\[^ux0-9]|\\(\\?[:!=]|[\\(\\)\\^]|[^\\x5B\\x5C\\(\\)\\^]+)","g"));var ah=aj.length;var an=[];for(var ak=0,am=0;ak<ah;++ak){var ag=aj[ak];if(ag==="("){++am}else{if("\\"===ag.charAt(0)){var af=+ag.substring(1);if(af&&af<=am){an[af]=-1}}}}for(var ak=1;ak<an.length;++ak){if(-1===an[ak]){an[ak]=++ad}}for(var ak=0,am=0;ak<ah;++ak){var ag=aj[ak];if(ag==="("){++am;if(an[am]===undefined){aj[ak]="(?:"}}else{if("\\"===ag.charAt(0)){var af=+ag.substring(1);if(af&&af<=am){aj[ak]="\\"+an[am]}}}}for(var ak=0,am=0;ak<ah;++ak){if("^"===aj[ak]&&"^"!==aj[ak+1]){aj[ak]=""}}if(al.ignoreCase&&S){for(var ak=0;ak<ah;++ak){var ag=aj[ak];var ai=ag.charAt(0);if(ag.length>=2&&ai==="["){aj[ak]=X(ag)}else{if(ai!=="\\"){aj[ak]=ag.replace(/[a-zA-Z]/g,function(ao){var ap=ao.charCodeAt(0);return"["+String.fromCharCode(ap&~32,ap|32)+"]"})}}}}return aj.join("")}var aa=[];for(var V=0,U=Z.length;V<U;++V){var ae=Z[V];if(ae.global||ae.multiline){throw new Error(""+ae)}aa.push("(?:"+W(ae)+")")}return new RegExp(aa.join("|"),ac?"gi":"g")}function a(V){var U=/(?:^|\s)nocode(?:\s|$)/;var X=[];var T=0;var Z=[];var W=0;var S;if(V.currentStyle){S=V.currentStyle.whiteSpace}else{if(window.getComputedStyle){S=document.defaultView.getComputedStyle(V,null).getPropertyValue("white-space")}}var Y=S&&"pre"===S.substring(0,3);function aa(ab){switch(ab.nodeType){case 1:if(U.test(ab.className)){return}for(var ae=ab.firstChild;ae;ae=ae.nextSibling){aa(ae)}var ad=ab.nodeName;if("BR"===ad||"LI"===ad){X[W]="\n";Z[W<<1]=T++;Z[(W++<<1)|1]=ab}break;case 3:case 4:var ac=ab.nodeValue;if(ac.length){if(!Y){ac=ac.replace(/[ \t\r\n]+/g," ")}else{ac=ac.replace(/\r\n?/g,"\n")}X[W]=ac;Z[W<<1]=T;T+=ac.length;Z[(W++<<1)|1]=ab}break}}aa(V);return{sourceCode:X.join("").replace(/\n$/,""),spans:Z}}function B(S,U,W,T){if(!U){return}var V={sourceCode:U,basePos:S};W(V);T.push.apply(T,V.decorations)}var v=/\S/;function o(S){var V=undefined;for(var U=S.firstChild;U;U=U.nextSibling){var T=U.nodeType;V=(T===1)?(V?S:U):(T===3)?(v.test(U.nodeValue)?S:V):V}return V===S?undefined:V}function g(U,T){var S={};var V;(function(){var ad=U.concat(T);var ah=[];var ag={};for(var ab=0,Z=ad.length;ab<Z;++ab){var Y=ad[ab];var ac=Y[3];if(ac){for(var ae=ac.length;--ae>=0;){S[ac.charAt(ae)]=Y}}var af=Y[1];var aa=""+af;if(!ag.hasOwnProperty(aa)){ah.push(af);ag[aa]=null}}ah.push(/[\0-\uffff]/);V=k(ah)})();var X=T.length;var W=function(ah){var Z=ah.sourceCode,Y=ah.basePos;var ad=[Y,F];var af=0;var an=Z.match(V)||[];var aj={};for(var ae=0,aq=an.length;ae<aq;++ae){var ag=an[ae];var ap=aj[ag];var ai=void 0;var am;if(typeof ap==="string"){am=false}else{var aa=S[ag.charAt(0)];if(aa){ai=ag.match(aa[1]);ap=aa[0]}else{for(var ao=0;ao<X;++ao){aa=T[ao];ai=ag.match(aa[1]);if(ai){ap=aa[0];break}}if(!ai){ap=F}}am=ap.length>=5&&"lang-"===ap.substring(0,5);if(am&&!(ai&&typeof ai[1]==="string")){am=false;ap=J}if(!am){aj[ag]=ap}}var ab=af;af+=ag.length;if(!am){ad.push(Y+ab,ap)}else{var al=ai[1];var ak=ag.indexOf(al);var ac=ak+al.length;if(ai[2]){ac=ag.length-ai[2].length;ak=ac-al.length}var ar=ap.substring(5);B(Y+ab,ag.substring(0,ak),W,ad);B(Y+ab+ak,al,q(ar,al),ad);B(Y+ab+ac,ag.substring(ac),W,ad)}}ah.decorations=ad};return W}function i(T){var W=[],S=[];if(T.tripleQuotedStrings){W.push([C,/^(?:\'\'\'(?:[^\'\\]|\\[\s\S]|\'{1,2}(?=[^\']))*(?:\'\'\'|$)|\"\"\"(?:[^\"\\]|\\[\s\S]|\"{1,2}(?=[^\"]))*(?:\"\"\"|$)|\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$))/,null,"'\""])}else{if(T.multiLineStrings){W.push([C,/^(?:\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$)|\`(?:[^\\\`]|\\[\s\S])*(?:\`|$))/,null,"'\"`"])}else{W.push([C,/^(?:\'(?:[^\\\'\r\n]|\\.)*(?:\'|$)|\"(?:[^\\\"\r\n]|\\.)*(?:\"|$))/,null,"\"'"])}}if(T.verbatimStrings){S.push([C,/^@\"(?:[^\"]|\"\")*(?:\"|$)/,null])}var Y=T.hashComments;if(Y){if(T.cStyleComments){if(Y>1){W.push([j,/^#(?:##(?:[^#]|#(?!##))*(?:###|$)|.*)/,null,"#"])}else{W.push([j,/^#(?:(?:define|elif|else|endif|error|ifdef|include|ifndef|line|pragma|undef|warning)\b|[^\r\n]*)/,null,"#"])}S.push([C,/^<(?:(?:(?:\.\.\/)*|\/?)(?:[\w-]+(?:\/[\w-]+)+)?[\w-]+\.h|[a-z]\w*)>/,null])}else{W.push([j,/^#[^\r\n]*/,null,"#"])}}if(T.cStyleComments){S.push([j,/^\/\/[^\r\n]*/,null]);S.push([j,/^\/\*[\s\S]*?(?:\*\/|$)/,null])}if(T.regexLiterals){var X=("/(?=[^/*])(?:[^/\\x5B\\x5C]|\\x5C[\\s\\S]|\\x5B(?:[^\\x5C\\x5D]|\\x5C[\\s\\S])*(?:\\x5D|$))+/");S.push(["lang-regex",new RegExp("^"+M+"("+X+")")])}var V=T.types;if(V){S.push([O,V])}var U=(""+T.keywords).replace(/^ | $/g,"");if(U.length){S.push([z,new RegExp("^(?:"+U.replace(/[\s,]+/g,"|")+")\\b"),null])}W.push([F,/^\s+/,null," \r\n\t\xA0"]);S.push([G,/^@[a-z_$][a-z_$@0-9]*/i,null],[O,/^(?:[@_]?[A-Z]+[a-z][A-Za-z_$@0-9]*|\w+_t\b)/,null],[F,/^[a-z_$][a-z_$@0-9]*/i,null],[G,new RegExp("^(?:0x[a-f0-9]+|(?:\\d(?:_\\d+)*\\d*(?:\\.\\d*)?|\\.\\d\\+)(?:e[+\\-]?\\d+)?)[a-z]*","i"),null,"0123456789"],[F,/^\\[\s\S]?/,null],[L,/^.[^\s\w\.$@\'\"\`\/\#\\]*/,null]);return g(W,S)}var K=i({keywords:A,hashComments:true,cStyleComments:true,multiLineStrings:true,regexLiterals:true});function Q(V,ag){var U=/(?:^|\s)nocode(?:\s|$)/;var ab=/\r\n?|\n/;var ac=V.ownerDocument;var S;if(V.currentStyle){S=V.currentStyle.whiteSpace}else{if(window.getComputedStyle){S=ac.defaultView.getComputedStyle(V,null).getPropertyValue("white-space")}}var Z=S&&"pre"===S.substring(0,3);var af=ac.createElement("LI");while(V.firstChild){af.appendChild(V.firstChild)}var W=[af];function ae(al){switch(al.nodeType){case 1:if(U.test(al.className)){break}if("BR"===al.nodeName){ad(al);if(al.parentNode){al.parentNode.removeChild(al)}}else{for(var an=al.firstChild;an;an=an.nextSibling){ae(an)}}break;case 3:case 4:if(Z){var am=al.nodeValue;var aj=am.match(ab);if(aj){var ai=am.substring(0,aj.index);al.nodeValue=ai;var ah=am.substring(aj.index+aj[0].length);if(ah){var ak=al.parentNode;ak.insertBefore(ac.createTextNode(ah),al.nextSibling)}ad(al);if(!ai){al.parentNode.removeChild(al)}}}break}}function ad(ak){while(!ak.nextSibling){ak=ak.parentNode;if(!ak){return}}function ai(al,ar){var aq=ar?al.cloneNode(false):al;var ao=al.parentNode;if(ao){var ap=ai(ao,1);var an=al.nextSibling;ap.appendChild(aq);for(var am=an;am;am=an){an=am.nextSibling;ap.appendChild(am)}}return aq}var ah=ai(ak.nextSibling,0);for(var aj;(aj=ah.parentNode)&&aj.nodeType===1;){ah=aj}W.push(ah)}for(var Y=0;Y<W.length;++Y){ae(W[Y])}if(ag===(ag|0)){W[0].setAttribute("value",ag)}var aa=ac.createElement("OL");aa.className="linenums";var X=Math.max(0,((ag-1))|0)||0;for(var Y=0,T=W.length;Y<T;++Y){af=W[Y];af.className="L"+((Y+X)%10);if(!af.firstChild){af.appendChild(ac.createTextNode("\xA0"))}aa.appendChild(af)}V.appendChild(aa)}function D(ac){var aj=/\bMSIE\b/.test(navigator.userAgent);var am=/\n/g;var al=ac.sourceCode;var an=al.length;var V=0;var aa=ac.spans;var T=aa.length;var ah=0;var X=ac.decorations;var Y=X.length;var Z=0;X[Y]=an;var ar,aq;for(aq=ar=0;aq<Y;){if(X[aq]!==X[aq+2]){X[ar++]=X[aq++];X[ar++]=X[aq++]}else{aq+=2}}Y=ar;for(aq=ar=0;aq<Y;){var at=X[aq];var ab=X[aq+1];var W=aq+2;while(W+2<=Y&&X[W+1]===ab){W+=2}X[ar++]=at;X[ar++]=ab;aq=W}Y=X.length=ar;var ae=null;while(ah<T){var af=aa[ah];var S=aa[ah+2]||an;var ag=X[Z];var ap=X[Z+2]||an;var W=Math.min(S,ap);var ak=aa[ah+1];var U;if(ak.nodeType!==1&&(U=al.substring(V,W))){if(aj){U=U.replace(am,"\r")}ak.nodeValue=U;var ai=ak.ownerDocument;var ao=ai.createElement("SPAN");ao.className=X[Z+1];var ad=ak.parentNode;ad.replaceChild(ao,ak);ao.appendChild(ak);if(V<S){aa[ah+1]=ak=ai.createTextNode(al.substring(W,S));ad.insertBefore(ak,ao.nextSibling)}}V=W;if(V>=S){ah+=2}if(V>=ap){Z+=2}}}var t={};function c(U,V){for(var S=V.length;--S>=0;){var T=V[S];if(!t.hasOwnProperty(T)){t[T]=U}else{if(window.console){console.warn("cannot override language handler %s",T)}}}}function q(T,S){if(!(T&&t.hasOwnProperty(T))){T=/^\s*</.test(S)?"default-markup":"default-code"}return t[T]}c(K,["default-code"]);c(g([],[[F,/^[^<?]+/],[E,/^<!\w[^>]*(?:>|$)/],[j,/^<\!--[\s\S]*?(?:-\->|$)/],["lang-",/^<\?([\s\S]+?)(?:\?>|$)/],["lang-",/^<%([\s\S]+?)(?:%>|$)/],[L,/^(?:<[%?]|[%?]>)/],["lang-",/^<xmp\b[^>]*>([\s\S]+?)<\/xmp\b[^>]*>/i],["lang-js",/^<script\b[^>]*>([\s\S]*?)(<\/script\b[^>]*>)/i],["lang-css",/^<style\b[^>]*>([\s\S]*?)(<\/style\b[^>]*>)/i],["lang-in.tag",/^(<\/?[a-z][^<>]*>)/i]]),["default-markup","htm","html","mxml","xhtml","xml","xsl"]);c(g([[F,/^[\s]+/,null," \t\r\n"],[n,/^(?:\"[^\"]*\"?|\'[^\']*\'?)/,null,"\"'"]],[[m,/^^<\/?[a-z](?:[\w.:-]*\w)?|\/?>$/i],[P,/^(?!style[\s=]|on)[a-z](?:[\w:-]*\w)?/i],["lang-uq.val",/^=\s*([^>\'\"\s]*(?:[^>\'\"\s\/]|\/(?=\s)))/],[L,/^[=<>\/]+/],["lang-js",/^on\w+\s*=\s*\"([^\"]+)\"/i],["lang-js",/^on\w+\s*=\s*\'([^\']+)\'/i],["lang-js",/^on\w+\s*=\s*([^\"\'>\s]+)/i],["lang-css",/^style\s*=\s*\"([^\"]+)\"/i],["lang-css",/^style\s*=\s*\'([^\']+)\'/i],["lang-css",/^style\s*=\s*([^\"\'>\s]+)/i]]),["in.tag"]);c(g([],[[n,/^[\s\S]+/]]),["uq.val"]);c(i({keywords:l,hashComments:true,cStyleComments:true,types:e}),["c","cc","cpp","cxx","cyc","m"]);c(i({keywords:"null,true,false"}),["json"]);c(i({keywords:R,hashComments:true,cStyleComments:true,verbatimStrings:true,types:e}),["cs"]);c(i({keywords:x,cStyleComments:true}),["java"]);c(i({keywords:H,hashComments:true,multiLineStrings:true}),["bsh","csh","sh"]);c(i({keywords:I,hashComments:true,multiLineStrings:true,tripleQuotedStrings:true}),["cv","py"]);c(i({keywords:s,hashComments:true,multiLineStrings:true,regexLiterals:true}),["perl","pl","pm"]);c(i({keywords:f,hashComments:true,multiLineStrings:true,regexLiterals:true}),["rb"]);c(i({keywords:w,cStyleComments:true,regexLiterals:true}),["js"]);c(i({keywords:r,hashComments:3,cStyleComments:true,multilineStrings:true,tripleQuotedStrings:true,regexLiterals:true}),["coffee"]);c(g([],[[C,/^[\s\S]+/]]),["regex"]);function d(V){var U=V.langExtension;try{var S=a(V.sourceNode);var T=S.sourceCode;V.sourceCode=T;V.spans=S.spans;V.basePos=0;q(U,T)(V);D(V)}catch(W){if("console" in window){console.log(W&&W.stack?W.stack:W)}}}function y(W,V,U){var S=document.createElement("PRE");S.innerHTML=W;if(U){Q(S,U)}var T={langExtension:V,numberLines:U,sourceNode:S};d(T);return S.innerHTML}function b(ad){function Y(af){return document.getElementsByTagName(af)}var ac=[Y("pre"),Y("code"),Y("xmp")];var T=[];for(var aa=0;aa<ac.length;++aa){for(var Z=0,V=ac[aa].length;Z<V;++Z){T.push(ac[aa][Z])}}ac=null;var W=Date;if(!W.now){W={now:function(){return +(new Date)}}}var X=0;var S;var ab=/\blang(?:uage)?-([\w.]+)(?!\S)/;var ae=/\bprettyprint\b/;function U(){var ag=(window.PR_SHOULD_USE_CONTINUATION?W.now()+250:Infinity);for(;X<T.length&&W.now()<ag;X++){var aj=T[X];var ai=aj.className;if(ai.indexOf("prettyprint")>=0){var ah=ai.match(ab);var am;if(!ah&&(am=o(aj))&&"CODE"===am.tagName){ah=am.className.match(ab)}if(ah){ah=ah[1]}var al=false;for(var ak=aj.parentNode;ak;ak=ak.parentNode){if((ak.tagName==="pre"||ak.tagName==="code"||ak.tagName==="xmp")&&ak.className&&ak.className.indexOf("prettyprint")>=0){al=true;break}}if(!al){var af=aj.className.match(/\blinenums\b(?::(\d+))?/);af=af?af[1]&&af[1].length?+af[1]:true:false;if(af){Q(aj,af)}S={langExtension:ah,sourceNode:aj,numberLines:af};d(S)}}}if(X<T.length){setTimeout(U,250)}else{if(ad){ad()}}}U()}window.prettyPrintOne=y;window.prettyPrint=b;window.PR={createSimpleLexer:g,registerLangHandler:c,sourceDecorator:i,PR_ATTRIB_NAME:P,PR_ATTRIB_VALUE:n,PR_COMMENT:j,PR_DECLARATION:E,PR_KEYWORD:z,PR_LITERAL:G,PR_NOCODE:N,PR_PLAIN:F,PR_PUNCTUATION:L,PR_SOURCE:J,PR_STRING:C,PR_TAG:m,PR_TYPE:O}})();PR.registerLangHandler(PR.createSimpleLexer([],[[PR.PR_DECLARATION,/^<!\w[^>]*(?:>|$)/],[PR.PR_COMMENT,/^<\!--[\s\S]*?(?:-\->|$)/],[PR.PR_PUNCTUATION,/^(?:<[%?]|[%?]>)/],["lang-",/^<\?([\s\S]+?)(?:\?>|$)/],["lang-",/^<%([\s\S]+?)(?:%>|$)/],["lang-",/^<xmp\b[^>]*>([\s\S]+?)<\/xmp\b[^>]*>/i],["lang-handlebars",/^<script\b[^>]*type\s*=\s*['"]?text\/x-handlebars-template['"]?\b[^>]*>([\s\S]*?)(<\/script\b[^>]*>)/i],["lang-js",/^<script\b[^>]*>([\s\S]*?)(<\/script\b[^>]*>)/i],["lang-css",/^<style\b[^>]*>([\s\S]*?)(<\/style\b[^>]*>)/i],["lang-in.tag",/^(<\/?[a-z][^<>]*>)/i],[PR.PR_DECLARATION,/^{{[#^>/]?\s*[\w.][^}]*}}/],[PR.PR_DECLARATION,/^{{&?\s*[\w.][^}]*}}/],[PR.PR_DECLARATION,/^{{{>?\s*[\w.][^}]*}}}/],[PR.PR_COMMENT,/^{{![^}]*}}/]]),["handlebars","hbs"]);PR.registerLangHandler(PR.createSimpleLexer([[PR.PR_PLAIN,/^[ \t\r\n\f]+/,null," \t\r\n\f"]],[[PR.PR_STRING,/^\"(?:[^\n\r\f\\\"]|\\(?:\r\n?|\n|\f)|\\[\s\S])*\"/,null],[PR.PR_STRING,/^\'(?:[^\n\r\f\\\']|\\(?:\r\n?|\n|\f)|\\[\s\S])*\'/,null],["lang-css-str",/^url\(([^\)\"\']*)\)/i],[PR.PR_KEYWORD,/^(?:url|rgb|\!important|@import|@page|@media|@charset|inherit)(?=[^\-\w]|$)/i,null],["lang-css-kw",/^(-?(?:[_a-z]|(?:\\[0-9a-f]+ ?))(?:[_a-z0-9\-]|\\(?:\\[0-9a-f]+ ?))*)\s*:/i],[PR.PR_COMMENT,/^\/\*[^*]*\*+(?:[^\/*][^*]*\*+)*\//],[PR.PR_COMMENT,/^(?:<!--|-->)/],[PR.PR_LITERAL,/^(?:\d+|\d*\.\d+)(?:%|[a-z]+)?/i],[PR.PR_LITERAL,/^#(?:[0-9a-f]{3}){1,2}/i],[PR.PR_PLAIN,/^-?(?:[_a-z]|(?:\\[\da-f]+ ?))(?:[_a-z\d\-]|\\(?:\\[\da-f]+ ?))*/i],[PR.PR_PUNCTUATION,/^[^\s\w\'\"]+/]]),["css"]);PR.registerLangHandler(PR.createSimpleLexer([],[[PR.PR_KEYWORD,/^-?(?:[_a-z]|(?:\\[\da-f]+ ?))(?:[_a-z\d\-]|\\(?:\\[\da-f]+ ?))*/i]]),["css-kw"]);PR.registerLangHandler(PR.createSimpleLexer([],[[PR.PR_STRING,/^[^\)\"\']+/]]),["css-str"]);
Binary file
@@ -1,196 +0,0 @@
1
- /* eslint-disable */
2
- var addSorting = (function() {
3
- 'use strict';
4
- var cols,
5
- currentSort = {
6
- index: 0,
7
- desc: false
8
- };
9
-
10
- // returns the summary table element
11
- function getTable() {
12
- return document.querySelector('.coverage-summary');
13
- }
14
- // returns the thead element of the summary table
15
- function getTableHeader() {
16
- return getTable().querySelector('thead tr');
17
- }
18
- // returns the tbody element of the summary table
19
- function getTableBody() {
20
- return getTable().querySelector('tbody');
21
- }
22
- // returns the th element for nth column
23
- function getNthColumn(n) {
24
- return getTableHeader().querySelectorAll('th')[n];
25
- }
26
-
27
- function onFilterInput() {
28
- const searchValue = document.getElementById('fileSearch').value;
29
- const rows = document.getElementsByTagName('tbody')[0].children;
30
- for (let i = 0; i < rows.length; i++) {
31
- const row = rows[i];
32
- if (
33
- row.textContent
34
- .toLowerCase()
35
- .includes(searchValue.toLowerCase())
36
- ) {
37
- row.style.display = '';
38
- } else {
39
- row.style.display = 'none';
40
- }
41
- }
42
- }
43
-
44
- // loads the search box
45
- function addSearchBox() {
46
- var template = document.getElementById('filterTemplate');
47
- var templateClone = template.content.cloneNode(true);
48
- templateClone.getElementById('fileSearch').oninput = onFilterInput;
49
- template.parentElement.appendChild(templateClone);
50
- }
51
-
52
- // loads all columns
53
- function loadColumns() {
54
- var colNodes = getTableHeader().querySelectorAll('th'),
55
- colNode,
56
- cols = [],
57
- col,
58
- i;
59
-
60
- for (i = 0; i < colNodes.length; i += 1) {
61
- colNode = colNodes[i];
62
- col = {
63
- key: colNode.getAttribute('data-col'),
64
- sortable: !colNode.getAttribute('data-nosort'),
65
- type: colNode.getAttribute('data-type') || 'string'
66
- };
67
- cols.push(col);
68
- if (col.sortable) {
69
- col.defaultDescSort = col.type === 'number';
70
- colNode.innerHTML =
71
- colNode.innerHTML + '<span class="sorter"></span>';
72
- }
73
- }
74
- return cols;
75
- }
76
- // attaches a data attribute to every tr element with an object
77
- // of data values keyed by column name
78
- function loadRowData(tableRow) {
79
- var tableCols = tableRow.querySelectorAll('td'),
80
- colNode,
81
- col,
82
- data = {},
83
- i,
84
- val;
85
- for (i = 0; i < tableCols.length; i += 1) {
86
- colNode = tableCols[i];
87
- col = cols[i];
88
- val = colNode.getAttribute('data-value');
89
- if (col.type === 'number') {
90
- val = Number(val);
91
- }
92
- data[col.key] = val;
93
- }
94
- return data;
95
- }
96
- // loads all row data
97
- function loadData() {
98
- var rows = getTableBody().querySelectorAll('tr'),
99
- i;
100
-
101
- for (i = 0; i < rows.length; i += 1) {
102
- rows[i].data = loadRowData(rows[i]);
103
- }
104
- }
105
- // sorts the table using the data for the ith column
106
- function sortByIndex(index, desc) {
107
- var key = cols[index].key,
108
- sorter = function(a, b) {
109
- a = a.data[key];
110
- b = b.data[key];
111
- return a < b ? -1 : a > b ? 1 : 0;
112
- },
113
- finalSorter = sorter,
114
- tableBody = document.querySelector('.coverage-summary tbody'),
115
- rowNodes = tableBody.querySelectorAll('tr'),
116
- rows = [],
117
- i;
118
-
119
- if (desc) {
120
- finalSorter = function(a, b) {
121
- return -1 * sorter(a, b);
122
- };
123
- }
124
-
125
- for (i = 0; i < rowNodes.length; i += 1) {
126
- rows.push(rowNodes[i]);
127
- tableBody.removeChild(rowNodes[i]);
128
- }
129
-
130
- rows.sort(finalSorter);
131
-
132
- for (i = 0; i < rows.length; i += 1) {
133
- tableBody.appendChild(rows[i]);
134
- }
135
- }
136
- // removes sort indicators for current column being sorted
137
- function removeSortIndicators() {
138
- var col = getNthColumn(currentSort.index),
139
- cls = col.className;
140
-
141
- cls = cls.replace(/ sorted$/, '').replace(/ sorted-desc$/, '');
142
- col.className = cls;
143
- }
144
- // adds sort indicators for current column being sorted
145
- function addSortIndicators() {
146
- getNthColumn(currentSort.index).className += currentSort.desc
147
- ? ' sorted-desc'
148
- : ' sorted';
149
- }
150
- // adds event listeners for all sorter widgets
151
- function enableUI() {
152
- var i,
153
- el,
154
- ithSorter = function ithSorter(i) {
155
- var col = cols[i];
156
-
157
- return function() {
158
- var desc = col.defaultDescSort;
159
-
160
- if (currentSort.index === i) {
161
- desc = !currentSort.desc;
162
- }
163
- sortByIndex(i, desc);
164
- removeSortIndicators();
165
- currentSort.index = i;
166
- currentSort.desc = desc;
167
- addSortIndicators();
168
- };
169
- };
170
- for (i = 0; i < cols.length; i += 1) {
171
- if (cols[i].sortable) {
172
- // add the click event handler on the th so users
173
- // dont have to click on those tiny arrows
174
- el = getNthColumn(i).querySelector('.sorter').parentElement;
175
- if (el.addEventListener) {
176
- el.addEventListener('click', ithSorter(i));
177
- } else {
178
- el.attachEvent('onclick', ithSorter(i));
179
- }
180
- }
181
- }
182
- }
183
- // adds sorting functionality to the UI
184
- return function() {
185
- if (!getTable()) {
186
- return;
187
- }
188
- cols = loadColumns();
189
- loadData();
190
- addSearchBox();
191
- addSortIndicators();
192
- enableUI();
193
- };
194
- })();
195
-
196
- window.addEventListener('load', addSorting);
package/.eslintrc.js DELETED
@@ -1 +0,0 @@
1
- module.exports = require('@quintal/config/eslint');
package/.prettierrc.js DELETED
@@ -1 +0,0 @@
1
- module.exports = require('@quintal/config/prettier');
@@ -1,28 +0,0 @@
1
-
2
- > @quintal/environment@0.1.0 build /home/runner/work/quintal-oss/quintal-oss/packages/environment
3
- > run-s build:*
4
-
5
-
6
- > @quintal/environment@0.1.0 build:clean /home/runner/work/quintal-oss/quintal-oss/packages/environment
7
- > shx rm -rf dist
8
-
9
-
10
- > @quintal/environment@0.1.0 build:code /home/runner/work/quintal-oss/quintal-oss/packages/environment
11
- > vite build
12
-
13
- The CJS build of Vite's Node API is deprecated. See https://vitejs.dev/guide/troubleshooting.html#vite-cjs-node-api-deprecated for more details.
14
- vite v5.0.4 building for production...
15
- transforming...
16
- ✓ 2 modules transformed.
17
- rendering chunks...
18
- 
19
- [vite:dts] Start generate declaration files...
20
- computing gzip size...
21
- dist/index.mjs 78.44 kB │ gzip: 16.07 kB
22
- [vite:dts] Start rollup declaration files...
23
- Analysis will use the bundled TypeScript version 5.0.4
24
- *** The target project appears to use TypeScript 5.3.2 which is newer than the bundled compiler engine; consider upgrading API Extractor.
25
- [vite:dts] Declaration files built in 4739ms.
26
- 
27
- dist/index.cjs 54.46 kB │ gzip: 13.27 kB
28
- ✓ built in 5.02s
@@ -1,6 +0,0 @@
1
-
2
- > @quintal/environment@0.1.0 lint:check /home/runner/work/quintal-oss/quintal-oss/packages/environment
3
- > eslint .
4
-
5
- Pages directory cannot be found at /home/runner/work/quintal-oss/quintal-oss/packages/environment/pages or /home/runner/work/quintal-oss/quintal-oss/packages/environment/src/pages. If using a custom path, please configure with the `no-html-link-for-pages` rule in your eslint config file.
6
- Warning: React version was set to "detect" in eslint-plugin-react settings, but the "react" package is not installed. Assuming latest React version for linting.
@@ -1,23 +0,0 @@
1
-
2
- > @quintal/environment@0.1.0 test /home/runner/work/quintal-oss/quintal-oss/packages/environment
3
- > vitest
4
-
5
- The CJS build of Vite's Node API is deprecated. See https://vitejs.dev/guide/troubleshooting.html#vite-cjs-node-api-deprecated for more details.
6
-
7
-  RUN  v0.34.6 /home/runner/work/quintal-oss/quintal-oss/packages/environment
8
-  Coverage enabled with v8
9
-
10
- ✓ test/index.spec.ts  (5 tests) 11ms
11
-
12
-  Test Files  1 passed (1)
13
-  Tests  5 passed (5)
14
-  Start at  20:34:57
15
-  Duration  624ms (transform 50ms, setup 1ms, collect 52ms, tests 11ms, environment 184ms, prepare 94ms)
16
-
17
-  % Coverage report from v8
18
- ----------|---------|----------|---------|---------|-------------------
19
- File | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s
20
- ----------|---------|----------|---------|---------|-------------------
21
- All files | 100 | 100 | 100 | 100 |
22
- index.ts | 100 | 100 | 100 | 100 |
23
- ----------|---------|----------|---------|---------|-------------------
package/CHANGELOG.md DELETED
@@ -1,7 +0,0 @@
1
- # @quintal/environment
2
-
3
- ## 0.1.0
4
-
5
- ### Minor Changes
6
-
7
- - a9eac34: Init package
package/src/index.ts DELETED
@@ -1,152 +0,0 @@
1
- import { z } from 'zod';
2
- import type { ZodError, ZodType } from 'zod';
3
-
4
- type EnvValue = {
5
- /**
6
- * The value
7
- * @example process.env.NODE_ENV
8
- * @example process.env.DATABASE_URL
9
- * @example process.env.NEXT_PUBLIC_ENVIRONMENT
10
- */
11
- value: string | undefined;
12
- /**
13
- * Zod schema that validates the value of the environment variable.
14
- * @defaultValue z.string()
15
- */
16
- schema?: ZodType;
17
- /**
18
- * Only make environment variable available to server usages.
19
- * @defaultValue false
20
- */
21
- isServerOnly?: boolean;
22
- };
23
-
24
- type EnvValues = { [key: string]: EnvValue | EnvValues };
25
-
26
- type UnwrapEnvValue<T> = T extends EnvValue
27
- ? T extends Required<Pick<EnvValue, 'schema'>>
28
- ? ReturnType<T['schema']['parse']>
29
- : string
30
- : T extends Record<string, unknown>
31
- ? { [TKey in keyof T]: UnwrapEnvValue<T[TKey]> }
32
- : never;
33
-
34
- type UnwrapEnvValues<TEnvValues extends EnvValues> = {
35
- [TKey in keyof TEnvValues]: UnwrapEnvValue<TEnvValues[TKey]>;
36
- // eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents -- This needs to be here for "prettify" effect
37
- } & unknown;
38
-
39
- type CreateEnvironmentOptions<TEnvValues extends EnvValues> = {
40
- /**
41
- * Whether or not the application is running on the server.
42
- * @defaultValue typeof window === 'undefined'
43
- */
44
- isServer?: boolean;
45
- /**
46
- * Called when validation fails.
47
- * Default behaviour: throw Error
48
- */
49
- onValidationError?: (error: ZodError) => never;
50
- /**
51
- * Called when a server-side environment variable is accessed on the client.
52
- * Default behaviour: throw Error
53
- */
54
- onAccessError?: (variableName: string) => never;
55
- /**
56
- * The values in the typed environment object.
57
- */
58
- values: TEnvValues;
59
- };
60
-
61
- function makeValues(values: EnvValues): Record<string, unknown> {
62
- return Object.entries(values).reduce(
63
- (prev, [name, obj]) => {
64
- if ('value' in obj) prev[name] = obj.value || undefined;
65
- else prev[name] = makeValues(obj);
66
- return prev;
67
- },
68
- {} as Record<string, unknown>,
69
- );
70
- }
71
-
72
- function makeSchema(values: EnvValues, isServer: boolean): ZodType {
73
- const o = Object.entries(values).reduce(
74
- (prev, [name, obj]) => {
75
- if ('value' in obj) {
76
- if (!obj.isServerOnly || isServer)
77
- prev[name] = (obj.schema as ZodType | undefined) ?? z.string();
78
- } else prev[name] = makeSchema(obj, isServer);
79
- return prev;
80
- },
81
- {} as Record<string, ZodType>,
82
- );
83
- return z.object(o);
84
- }
85
-
86
- function createProxy<TEnvValues extends EnvValues>(
87
- values: UnwrapEnvValues<TEnvValues>,
88
- originalValues: EnvValues,
89
- isServer: boolean,
90
- onAccessError: (variableName: string) => never,
91
- prefix?: string,
92
- ): UnwrapEnvValues<TEnvValues> {
93
- return new Proxy(values, {
94
- get(target, prop: string) {
95
- const targetValue = originalValues[prop];
96
- if (!targetValue) return undefined;
97
-
98
- const variableName = prefix ? `${prefix}.${prop}` : prop;
99
-
100
- if (!('value' in targetValue))
101
- return createProxy(
102
- values[prop] as UnwrapEnvValues<TEnvValues>,
103
- originalValues[prop] as EnvValues,
104
- isServer,
105
- onAccessError,
106
- variableName,
107
- );
108
-
109
- if (targetValue.isServerOnly && !isServer)
110
- return onAccessError(variableName);
111
-
112
- return target[prop];
113
- },
114
- });
115
- }
116
-
117
- export function createEnvironment<TEnvValues extends EnvValues>(
118
- opts: CreateEnvironmentOptions<TEnvValues>,
119
- ): UnwrapEnvValues<TEnvValues> {
120
- const isServer = opts.isServer ?? typeof window === 'undefined';
121
-
122
- const onValidationError =
123
- opts.onValidationError ??
124
- ((error: ZodError) => {
125
- throw new Error(
126
- `❌ Invalid environment variables: ${error.issues
127
- .map(({ path, message }) => `${path.join('.')}: ${message}`)
128
- .join(', ')}`,
129
- );
130
- });
131
-
132
- const onAccessError =
133
- opts.onAccessError ??
134
- ((variableName: string) => {
135
- throw new Error(
136
- `❌ Attempted to access server-side environment variable '${variableName}' on the client`,
137
- );
138
- });
139
-
140
- const schema = makeSchema(opts.values, isServer);
141
- const values = makeValues(opts.values);
142
-
143
- const parsed = schema.safeParse(values);
144
- if (!parsed.success) return onValidationError(parsed.error);
145
-
146
- return createProxy(
147
- parsed.data as UnwrapEnvValues<TEnvValues>,
148
- opts.values,
149
- isServer,
150
- onAccessError,
151
- );
152
- }
@@ -1,162 +0,0 @@
1
- import { z } from 'zod';
2
- import { describe, expect, expectTypeOf, it } from 'vitest';
3
- import { createEnvironment } from '../src';
4
-
5
- describe('environment', () => {
6
- it('returns a strongly-typed environment object', () => {
7
- if (false as boolean) {
8
- const environment = createEnvironment({
9
- values: {
10
- environment: {
11
- value: process.env.NEXT_PUBLIC_ENVIRONMENT,
12
- schema: z
13
- .enum(['DEVELOPMENT', 'PREVIEW', 'PRODUCTION'])
14
- .default('DEVELOPMENT'),
15
- },
16
- port: {
17
- value: process.env.PORT,
18
- schema: z.coerce.number().int().default(4000),
19
- isServerOnly: true,
20
- },
21
- isFeatureEnabled: {
22
- value: process.env.NEXT_PUBLIC_IS_FEATURE_ENABLED,
23
- schema: z.enum(['true', 'false']).transform((s) => s === 'true'),
24
- },
25
- baseUrl: {
26
- self: {
27
- value: process.env.NEXT_PUBLIC_BASE_URL_SELF,
28
- schema: z.string().url().default('http://localhost:3000'),
29
- },
30
- api: {
31
- value: process.env.NEXT_PUBLIC_BASE_URL_API,
32
- schema: z.string().url().default('http://localhost:4000'),
33
- },
34
- },
35
- database: {
36
- url: {
37
- value: process.env.DATABASE_URL,
38
- schema: z.string().url(),
39
- isServerOnly: true,
40
- },
41
- token: {
42
- value: process.env.DATABASE_TOKEN,
43
- isServerOnly: true,
44
- },
45
- },
46
- },
47
- });
48
-
49
- expectTypeOf(environment).toEqualTypeOf<{
50
- environment: 'DEVELOPMENT' | 'PREVIEW' | 'PRODUCTION';
51
- port: number;
52
- isFeatureEnabled: boolean;
53
- baseUrl: {
54
- self: string;
55
- api: string;
56
- };
57
- database: {
58
- url: string;
59
- token: string;
60
- };
61
- }>();
62
- }
63
- });
64
-
65
- it('throws when an environment variable is incorrect', () => {
66
- expect(() =>
67
- createEnvironment({
68
- values: {
69
- undefined: { value: undefined },
70
- nestedUndefined: { undefined: { value: undefined } },
71
- emptyString: { value: '' },
72
- emptyStringToNumber: { value: '', schema: z.number() },
73
- emptyStringWithDefault: {
74
- value: '',
75
- schema: z.string().default('test'),
76
- },
77
- emptyStringToNumberWithDefault: {
78
- value: '',
79
- schema: z.number().default(42),
80
- },
81
- },
82
- }),
83
- ).toThrowErrorMatchingInlineSnapshot(
84
- '"❌ Invalid environment variables: undefined: Required, nestedUndefined.undefined: Required, emptyString: Required, emptyStringToNumber: Required"',
85
- );
86
- });
87
-
88
- it('does not throw when accessing a client environment variable and server variables are missing', () => {
89
- const environment = createEnvironment({
90
- isServer: false,
91
- values: {
92
- correct: { value: 'hello world' },
93
- incorrect: { value: undefined, isServerOnly: true },
94
- },
95
- });
96
-
97
- expect(environment.correct).toBe('hello world');
98
- });
99
-
100
- it('throws when trying to access server-only variables from the client', () => {
101
- const values = {
102
- serverOnly: { value: 'hello', isServerOnly: true },
103
- notServerOnly: { value: 'world', isServerOnly: false },
104
- nested: {
105
- serverOnly: { value: 'helloNested', isServerOnly: true },
106
- notServerOnly: { value: 'worldNested', isServerOnly: false },
107
- },
108
- };
109
-
110
- const clientEnvironment = createEnvironment({ isServer: false, values });
111
- expect(
112
- () => clientEnvironment.serverOnly,
113
- ).toThrowErrorMatchingInlineSnapshot(
114
- '"❌ Attempted to access server-side environment variable \'serverOnly\' on the client"',
115
- );
116
- expect(clientEnvironment.notServerOnly).toBe('world');
117
- expect(
118
- () => clientEnvironment.nested.serverOnly,
119
- ).toThrowErrorMatchingInlineSnapshot(
120
- '"❌ Attempted to access server-side environment variable \'nested.serverOnly\' on the client"',
121
- );
122
- expect(clientEnvironment.nested.notServerOnly).toBe('worldNested');
123
-
124
- const serverEnvironment = createEnvironment({ isServer: true, values });
125
- expect(serverEnvironment.serverOnly).toBe('hello');
126
- expect(serverEnvironment.notServerOnly).toBe('world');
127
- expect(serverEnvironment.nested.serverOnly).toBe('helloNested');
128
- expect(serverEnvironment.nested.notServerOnly).toBe('worldNested');
129
- });
130
-
131
- it('parses (nested) environment variables to be in the correct datatype', () => {
132
- const environment = createEnvironment({
133
- values: {
134
- string: { value: 'hello world', schema: z.string() },
135
- number: { value: '42', schema: z.coerce.number().int() },
136
- boolean: {
137
- value: 'true',
138
- schema: z.enum(['true', 'false']).transform((s) => s === 'true'),
139
- },
140
- nested: {
141
- string: { value: 'nested hello world', schema: z.string() },
142
- number: { value: '4242', schema: z.coerce.number().int() },
143
- boolean: {
144
- value: 'false',
145
- schema: z.enum(['true', 'false']).transform((s) => s === 'true'),
146
- },
147
- },
148
- },
149
- });
150
-
151
- expect(environment.string).toBe('hello world');
152
- expect(environment.number).toBe(42);
153
- expect(environment.boolean).toBe(true);
154
- expect(
155
- // @ts-expect-error -- testing invalid access
156
- environment.never,
157
- ).toBe(undefined);
158
- expect(environment.nested.string).toBe('nested hello world');
159
- expect(environment.nested.number).toBe(4242);
160
- expect(environment.nested.boolean).toBe(false);
161
- });
162
- });
package/tsconfig.json DELETED
@@ -1,8 +0,0 @@
1
- {
2
- "extends": "@quintal/config/tsconfig/base.json",
3
- "compilerOptions": {
4
- "rootDir": "."
5
- },
6
- "include": ["**/*.ts", "vite.config.js"],
7
- "exclude": ["node_modules", "dist"]
8
- }
package/vite.config.js DELETED
@@ -1 +0,0 @@
1
- module.exports = require('@quintal/config/vite');