@fernandomg/streak-counter
Version:
This is a basic streak counter - inspired by Duolingo - written in TypeScript and ment for the browser (uses `localStorage`).
3 lines (2 loc) • 935 B
JavaScript
function t(){return t=Object.assign?Object.assign.bind():function(t){for(var r=1;r<arguments.length;r++){var e=arguments[r];for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])}return t},t.apply(this,arguments)}var r="streak";function e(t){return t.toLocaleDateString("en-US")}function n(r,n){return t({},{currentCount:1,startDate:e(r),lastLoginDate:e(r)},n)}function a(t,e){t.setItem(r,JSON.stringify(e))}exports.streakCounter=function(t,e){var o,i,s,c,u=t.getItem(r);if(u)try{var f=JSON.parse(u),l=(o=e,i=new Date(f.lastLoginDate),s=Math.abs(o.getTime()-i.getTime()),0===(c=Math.ceil(s/864e5))?"none":1===c?"increment":"reset"),g="reset"===l;if("increment"===l){var v=n(e,{currentCount:f.currentCount+1,startDate:f.startDate});return a(t,v),v}if(g){var p=n(e);return a(t,p),p}return f}catch(t){console.error("Failed to parse streak from localStorage")}var m=n(e);return a(t,m),m};
//# sourceMappingURL=index.cjs.map