UNPKG

bragit

Version:

Show off your Github repository buttons with elegance.

2 lines (1 loc) 10.5 kB
(function(root){var freeExports=typeof exports=="object"&&exports;var freeModule=typeof module=="object"&&module&&module.exports==freeExports&&module;var freeGlobal=typeof global=="object"&&global;if(freeGlobal.global===freeGlobal||freeGlobal.window===freeGlobal){root=freeGlobal}var InvalidCharacterError=function(message){this.message=message};InvalidCharacterError.prototype=new Error;InvalidCharacterError.prototype.name="InvalidCharacterError";var error=function(message){throw new InvalidCharacterError(message)};var TABLE="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";var REGEX_SPACE_CHARACTERS=/[\t\n\f\r ]/g;var decode=function(input){input=String(input).replace(REGEX_SPACE_CHARACTERS,"");var length=input.length;if(length%4==0){input=input.replace(/==?$/,"");length=input.length}if(length%4==1||/[^+a-zA-Z0-9\/]/.test(input)){error("Invalid character: the string to be decoded is not correctly encoded.")}var bitCounter=0;var bitStorage;var buffer;var output="";var position=-1;while(++position<length){buffer=TABLE.indexOf(input.charAt(position));bitStorage=bitCounter%4?bitStorage*64+buffer:buffer;if(bitCounter++%4){output+=String.fromCharCode(255&bitStorage>>(-2*bitCounter&6))}}return output};var encode=function(input){input=String(input);if(/[^\0-\xFF]/.test(input)){error("The string to be encoded contains characters outside of the "+"Latin1 range.")}var padding=input.length%3;var output="";var position=-1;var a;var b;var c;var d;var buffer;var length=input.length-padding;while(++position<length){a=input.charCodeAt(position)<<16;b=input.charCodeAt(++position)<<8;c=input.charCodeAt(++position);buffer=a+b+c;output+=TABLE.charAt(buffer>>18&63)+TABLE.charAt(buffer>>12&63)+TABLE.charAt(buffer>>6&63)+TABLE.charAt(buffer&63)}if(padding==2){a=input.charCodeAt(position)<<8;b=input.charCodeAt(++position);buffer=a+b;output+=TABLE.charAt(buffer>>10)+TABLE.charAt(buffer>>4&63)+TABLE.charAt(buffer<<2&63)+"="}else if(padding==1){buffer=input.charCodeAt(position);output+=TABLE.charAt(buffer>>2)+TABLE.charAt(buffer<<4&63)+"=="}return output};var base64={encode:encode,decode:decode,version:"0.1.0"};if(typeof define=="function"&&typeof define.amd=="object"&&define.amd){define(function(){return base64})}else if(freeExports&&!freeExports.nodeType){if(freeModule){freeModule.exports=base64}else{for(var key in base64){base64.hasOwnProperty(key)&&(freeExports[key]=base64[key])}}}else{root.base64=base64}})(this);(function(root,factory){if(typeof define==="function"&&define.amd){define([],function(){return root.Larder=factory()})}else if(typeof module==="object"&&module.exports){module.exports=factory()}else{root.Larder=factory()}})(this,function(){var root=this||global;var me={VERSION:"1.0.2"};var init=false;var defaults={debug:true,id:"larder",expires:60,useCookie:true};me.defaults=function(opts){var key;for(key in opts||{}){if(defaults[key]){defaults[key]=opts[key]}}};me.fetch=function(key){var data=JSON.parse(localStorage.getItem(defaults.id)||"{}");var item=key&&data[key]?data[key]:null;var current=(new Date).getTime()/6e4;if(item&&item.timestamp){if(item.timestamp>current){log("Item ({{id}}) has been retrieved successfully (expires in {{minutes}} minutes)",{id:key,minutes:Math.floor(item.timestamp-current)});return item.value?item.value:null}else{me.remove(key);log("Item ({{key}}) has expired ({{minutes}}) minute(s) ago and removed from the cache",{key:key,minutes:Math.floor(current-item.timestamp)})}}return null};me.save=function(key,value,expires){var data=JSON.parse(localStorage.getItem(defaults.id)||"{}");if(typeof key==="string"&&typeof value!=="undefined"){data[key]={value:value,timestamp:(new Date).getTime()/6e4+(expires||defaults.expires)};localStorage.setItem(defaults.id,JSON.stringify(data));log("Item ({{key}}) has been stored successfully",{key:key})}return value};me.remove=function(key){var data=JSON.parse(localStorage.getItem(defaults.id)||"{}");if(typeof key==="string"&&data[key]){delete data[key];localStorage.setItem(defaults.id,JSON.stringify(data))}};me.clear=function(){localStorage.removeItem(defaults.id);log("Cache ({{id}}) has been cleared",{id:defaults.id})};function compile(template,context){for(var name in context){template=template.replace("{{"+name+"}}",context[name])}return template}function log(message,context){if(defaults.debug){console.log(typeof context==="object"?compile(message,context):message)}}return me});(function(root,factory){if(typeof define==="function"&&define.amd){define(["jQuery","larder","base-64"],function(jQuery,Larder,Base64){return root.Gitters=factory(jQuery,Larder,Base64)})}else if(typeof module==="object"&&module.exports){module.exports=factory(require("jquery"),require("larder"),require("base-64"))}else{root.Gitters=factory(root.jQuery,root.Larder,root.base64)}})(this,function($,cache,Base64){var me={VERSION:"1.0.6"};var baseUrl="https://api.github.com/repos/{{repo}}/contents/{{path}}?ref={{branch}}";var defaults={};me.defaults=function(opts){var ret=$.extend(true,defaults,opts);cache.defaults({expires:defaults.expires,debug:defaults.debug});return ret};me.fetch=function(repo,paths,branch,cb,bubbleError){if(typeof paths==="function"){cb=paths;bubbleError=branch;get(compile(baseUrl.substring(0,baseUrl.indexOf("/contents")),{repo:repo}),bubbleError).then(function(data){cb.call(null,data)})}else{if(typeof branch==="function"){bubbleError=cb;cb=branch;branch="master"}paths=typeof paths==="object"||typeof paths==="object"?paths:[paths];$.when.apply($,paths.map(function(path){return get(path.indexOf("github.com")!==-1?path:compile(baseUrl,{repo:repo,path:path,branch:branch}),bubbleError)})).then(function(){cb.call(null,paths.length>1?arguments:arguments[0])}).fail(function(err){log(err&&err.responseJSON?err.responseJSON["message"]:"There has been an error")})}};init=function(){if(defaults.clearOnStart){cache.clear()}};function get(url,bubbleError){var value=cache.fetch(url);var defer=$.Deferred();if(value){return defer.resolve(value)}else{try{$.get(url).done(function(value){defer.resolve(cache.save(url,decode(value)))}).fail(function(err){log(err.error)})}catch(err){if(bubbleError){throw new Error(err)}else{log(err.error)}}}return defer}function decode(object){if(defaults.decodeBase64&&object&&object.content>""&&object.encoding&&object.encoding==="base64"){object.content=b64decode(object.content)}return object}function b64encode(string){return Base64.encode(string.toString())}function b64decode(data){return Base64.decode(data.toString())}function compile(template,context){for(var name in context){template=template.replace("{{"+name+"}}",context[name])}return template}function log(message,context){if(defaults.debug){console.log(typeof context==="object"?compile(message,context):message)}}if(typeof $==="undefined"){console.error("Please install the latest jQuery library")}else if(typeof cache==="undefined"){console.error("Please install the latest Larder library")}else if(typeof Base64==="undefined"){console.error("Please install the latest Base64 library")}else{$(function(){init()})}me.defaults({debug:false,clearOnStart:true,decodeBase64:true,expires:60});return me});(function(root,factory){if(typeof define==="function"&&define.amd){define(["jQuery","gitters"],function(jQuery,Gitters){return root.Bragit=factory(jQuery,Gitters)})}else if(typeof module==="object"&&module.exports){module.exports=factory(require("jquery"),require("gitters"))}else{root.Bragit=factory(root.jQuery,root.Gitters)}})(this,function($,Gitters){var root=this||global;var doc=root.document;var me={VERSION:"1.0.6"};var semantic=["semantic.min.css","semantic.css"];var defaults={};me.defaults=function(opts){var ret=$.extend(true,defaults,opts);Gitters.defaults({clearOnStart:defaults.clearOnStart,debug:defaults.debug,expires:defaults.expires});return ret};me.init=function(){var loaded=false;var href=null;for(var i in doc.styleSheets){if(href=doc.styleSheets[i].href?doc.styleSheets[i].href:null){var filename=href.substring(href.lastIndexOf("/")+1,href.length);if(semantic.indexOf(filename)>-1){loaded=true;break}}}if(!defaults.css.ignore&&(!loaded||defaults.css.inject)){log("Injecting semantic-ui buttons ...");for(var i in defaults.css.modules){$("head").append('<link rel="stylesheet" href="'+compile(defaults.css.uri,{version:defaults.css.version,module:defaults.css.modules[i]})+'" type="text/css" />')}if(defaults.css.custom){$("head").append('<link rel="stylesheet" href="'+defaults.css.custom+'" type="text/css" />')}}var repos={};var selector=defaults.cls+defaults.delimiter;$("a[class*="+selector).each(function(index,elem){var cls=$(elem).attr("class");var parts=cls.slice(cls.indexOf(selector),cls.length).split(" ")[0].split(defaults.delimiter);var action=parts.pop();if(defaults.actions[action]&&parts.length>2){parts.shift();var username=parts.shift();var repo=parts.join(defaults.delimiter);repos[username+defaults.delimiter+repo]={username:username,repo:repo}}});for(var i in repos){get(repos[i],function(repo,data){if(data){for(var action in defaults.actions){var cls=[defaults.cls,repo.username,repo.repo,action].join(defaults.delimiter);$("."+cls).attr("href",data["html_url"]+defaults.actions[action].uri);if(defaults.actions[action].property){$("."+cls+" .label").text(data[defaults.actions[action].property]||0)}}}})}};function get(repo,cb){try{Gitters.fetch(repo.username+"/"+repo.repo,function(data){cb.call(null,repo,data)},true)}catch(err){log(err.message)}}function compile(template,data){for(var name in data){template=template.replace("{{"+name+"}}",data[name])}return template}function log(message){if(defaults.debug){console.log(message)}}if(typeof $==="undefined"){console.error("Please install the latest jQuery library")}else if(typeof Gitters==="undefined"){console.error("Please install the latest Gitters library")}else{$(function(){me.init()})}me.defaults({clearOnStart:false,expires:60,debug:false,delimiter:"-",cls:"github",actions:{forks:{uri:"/network",property:"forks_count"},stars:{uri:"/stargazers",property:"stargazers_count"},watchers:{uri:"/watchers",property:"subscribers_count"},issues:{uri:"/issues",property:"open_issues_count"},download:{uri:"/archive/master.zip",property:null},github:{uri:"",property:null},contributors:{uri:"/contributors",property:null}},css:{version:"2.1.8",ignore:false,inject:false,uri:"https://cdnjs.cloudflare.com/ajax/libs/semantic-ui/{{version}}/components/{{module}}.min.css",modules:["button","icon","label"],custom:null}});return me});