@timberio/browser
Advanced tools
Comparing version 0.16.0 to 0.17.0
@@ -17,11 +17,17 @@ "use strict"; | ||
// yet... dev only! | ||
await cross_fetch_1.default("https://logs.timber.io/frames", { | ||
const res = await cross_fetch_1.default("https://logs.timber.io/frames", { | ||
method: "POST", | ||
headers: { | ||
"Content-Type": "text/plain", | ||
Authorization: `Basic ${btoa(this._apiKey)}` | ||
Authorization: `Basic ${btoa(this._apiKey)}`, | ||
}, | ||
body: logs.map(log => `${log.level}: ${log.message}`).join("\n") | ||
}); | ||
return logs; | ||
if (res.ok) { | ||
return logs; | ||
} | ||
/** | ||
* TODO: if status is 50x throw custom ServerError | ||
* to be used in retry logic | ||
*/ | ||
throw new Error(res.statusText); | ||
}; | ||
@@ -28,0 +34,0 @@ // Set the throttled sync function |
@@ -12,11 +12,17 @@ import fetch from "cross-fetch"; | ||
// yet... dev only! | ||
await fetch("https://logs.timber.io/frames", { | ||
const res = await fetch("https://logs.timber.io/frames", { | ||
method: "POST", | ||
headers: { | ||
"Content-Type": "text/plain", | ||
Authorization: `Basic ${btoa(this._apiKey)}` | ||
Authorization: `Basic ${btoa(this._apiKey)}`, | ||
}, | ||
body: logs.map(log => `${log.level}: ${log.message}`).join("\n") | ||
}); | ||
return logs; | ||
if (res.ok) { | ||
return logs; | ||
} | ||
/** | ||
* TODO: if status is 50x throw custom ServerError | ||
* to be used in retry logic | ||
*/ | ||
throw new Error(res.statusText); | ||
}; | ||
@@ -23,0 +29,0 @@ // Set the throttled sync function |
@@ -1,1 +0,1 @@ | ||
!function(t,e){if("object"==typeof exports&&"object"==typeof module)module.exports=e();else if("function"==typeof define&&define.amd)define([],e);else{var r=e();for(var n in r)("object"==typeof exports?exports:t)[n]=r[n]}}(window,function(){return function(t){var e={};function r(n){if(e[n])return e[n].exports;var o=e[n]={i:n,l:!1,exports:{}};return t[n].call(o.exports,o,o.exports,r),o.l=!0,o.exports}return r.m=t,r.c=e,r.d=function(t,e,n){r.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:n})},r.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},r.t=function(t,e){if(1&e&&(t=r(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var o in t)r.d(n,o,function(e){return t[e]}.bind(null,o));return n},r.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return r.d(e,"a",e),e},r.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},r.p="",r(r.s=1)}([function(t,e,r){var n=function(t){function e(){this.fetch=!1}return e.prototype=t,new e}("undefined"!=typeof self?self:this);(function(t){!function(t){if(!t.fetch){var e={searchParams:"URLSearchParams"in t,iterable:"Symbol"in t&&"iterator"in Symbol,blob:"FileReader"in t&&"Blob"in t&&function(){try{return new Blob,!0}catch(t){return!1}}(),formData:"FormData"in t,arrayBuffer:"ArrayBuffer"in t};if(e.arrayBuffer)var r=["[object Int8Array]","[object Uint8Array]","[object Uint8ClampedArray]","[object Int16Array]","[object Uint16Array]","[object Int32Array]","[object Uint32Array]","[object Float32Array]","[object Float64Array]"],n=function(t){return t&&DataView.prototype.isPrototypeOf(t)},o=ArrayBuffer.isView||function(t){return t&&r.indexOf(Object.prototype.toString.call(t))>-1};c.prototype.append=function(t,e){t=a(t),e=u(e);var r=this.map[t];this.map[t]=r?r+","+e:e},c.prototype.delete=function(t){delete this.map[a(t)]},c.prototype.get=function(t){return t=a(t),this.has(t)?this.map[t]:null},c.prototype.has=function(t){return this.map.hasOwnProperty(a(t))},c.prototype.set=function(t,e){this.map[a(t)]=u(e)},c.prototype.forEach=function(t,e){for(var r in this.map)this.map.hasOwnProperty(r)&&t.call(e,this.map[r],r,this)},c.prototype.keys=function(){var t=[];return this.forEach(function(e,r){t.push(r)}),f(t)},c.prototype.values=function(){var t=[];return this.forEach(function(e){t.push(e)}),f(t)},c.prototype.entries=function(){var t=[];return this.forEach(function(e,r){t.push([r,e])}),f(t)},e.iterable&&(c.prototype[Symbol.iterator]=c.prototype.entries);var i=["DELETE","GET","HEAD","OPTIONS","POST","PUT"];b.prototype.clone=function(){return new b(this,{body:this._bodyInit})},p.call(b.prototype),p.call(w.prototype),w.prototype.clone=function(){return new w(this._bodyInit,{status:this.status,statusText:this.statusText,headers:new c(this.headers),url:this.url})},w.error=function(){var t=new w(null,{status:0,statusText:""});return t.type="error",t};var s=[301,302,303,307,308];w.redirect=function(t,e){if(-1===s.indexOf(e))throw new RangeError("Invalid status code");return new w(null,{status:e,headers:{location:t}})},t.Headers=c,t.Request=b,t.Response=w,t.fetch=function(t,r){return new Promise(function(n,o){var i=new b(t,r),s=new XMLHttpRequest;s.onload=function(){var t,e,r={status:s.status,statusText:s.statusText,headers:(t=s.getAllResponseHeaders()||"",e=new c,t.replace(/\r?\n[\t ]+/g," ").split(/\r?\n/).forEach(function(t){var r=t.split(":"),n=r.shift().trim();if(n){var o=r.join(":").trim();e.append(n,o)}}),e)};r.url="responseURL"in s?s.responseURL:r.headers.get("X-Request-URL");var o="response"in s?s.response:s.responseText;n(new w(o,r))},s.onerror=function(){o(new TypeError("Network request failed"))},s.ontimeout=function(){o(new TypeError("Network request failed"))},s.open(i.method,i.url,!0),"include"===i.credentials?s.withCredentials=!0:"omit"===i.credentials&&(s.withCredentials=!1),"responseType"in s&&e.blob&&(s.responseType="blob"),i.headers.forEach(function(t,e){s.setRequestHeader(e,t)}),s.send(void 0===i._bodyInit?null:i._bodyInit)})},t.fetch.polyfill=!0}function a(t){if("string"!=typeof t&&(t=String(t)),/[^a-z0-9\-#$%&'*+.\^_`|~]/i.test(t))throw new TypeError("Invalid character in header field name");return t.toLowerCase()}function u(t){return"string"!=typeof t&&(t=String(t)),t}function f(t){var r={next:function(){var e=t.shift();return{done:void 0===e,value:e}}};return e.iterable&&(r[Symbol.iterator]=function(){return r}),r}function c(t){this.map={},t instanceof c?t.forEach(function(t,e){this.append(e,t)},this):Array.isArray(t)?t.forEach(function(t){this.append(t[0],t[1])},this):t&&Object.getOwnPropertyNames(t).forEach(function(e){this.append(e,t[e])},this)}function h(t){if(t.bodyUsed)return Promise.reject(new TypeError("Already read"));t.bodyUsed=!0}function l(t){return new Promise(function(e,r){t.onload=function(){e(t.result)},t.onerror=function(){r(t.error)}})}function d(t){var e=new FileReader,r=l(e);return e.readAsArrayBuffer(t),r}function y(t){if(t.slice)return t.slice(0);var e=new Uint8Array(t.byteLength);return e.set(new Uint8Array(t)),e.buffer}function p(){return this.bodyUsed=!1,this._initBody=function(t){if(this._bodyInit=t,t)if("string"==typeof t)this._bodyText=t;else if(e.blob&&Blob.prototype.isPrototypeOf(t))this._bodyBlob=t;else if(e.formData&&FormData.prototype.isPrototypeOf(t))this._bodyFormData=t;else if(e.searchParams&&URLSearchParams.prototype.isPrototypeOf(t))this._bodyText=t.toString();else if(e.arrayBuffer&&e.blob&&n(t))this._bodyArrayBuffer=y(t.buffer),this._bodyInit=new Blob([this._bodyArrayBuffer]);else{if(!e.arrayBuffer||!ArrayBuffer.prototype.isPrototypeOf(t)&&!o(t))throw new Error("unsupported BodyInit type");this._bodyArrayBuffer=y(t)}else this._bodyText="";this.headers.get("content-type")||("string"==typeof t?this.headers.set("content-type","text/plain;charset=UTF-8"):this._bodyBlob&&this._bodyBlob.type?this.headers.set("content-type",this._bodyBlob.type):e.searchParams&&URLSearchParams.prototype.isPrototypeOf(t)&&this.headers.set("content-type","application/x-www-form-urlencoded;charset=UTF-8"))},e.blob&&(this.blob=function(){var t=h(this);if(t)return t;if(this._bodyBlob)return Promise.resolve(this._bodyBlob);if(this._bodyArrayBuffer)return Promise.resolve(new Blob([this._bodyArrayBuffer]));if(this._bodyFormData)throw new Error("could not read FormData body as blob");return Promise.resolve(new Blob([this._bodyText]))},this.arrayBuffer=function(){return this._bodyArrayBuffer?h(this)||Promise.resolve(this._bodyArrayBuffer):this.blob().then(d)}),this.text=function(){var t,e,r,n=h(this);if(n)return n;if(this._bodyBlob)return t=this._bodyBlob,e=new FileReader,r=l(e),e.readAsText(t),r;if(this._bodyArrayBuffer)return Promise.resolve(function(t){for(var e=new Uint8Array(t),r=new Array(e.length),n=0;n<e.length;n++)r[n]=String.fromCharCode(e[n]);return r.join("")}(this._bodyArrayBuffer));if(this._bodyFormData)throw new Error("could not read FormData body as text");return Promise.resolve(this._bodyText)},e.formData&&(this.formData=function(){return this.text().then(m)}),this.json=function(){return this.text().then(JSON.parse)},this}function b(t,e){var r,n,o=(e=e||{}).body;if(t instanceof b){if(t.bodyUsed)throw new TypeError("Already read");this.url=t.url,this.credentials=t.credentials,e.headers||(this.headers=new c(t.headers)),this.method=t.method,this.mode=t.mode,o||null==t._bodyInit||(o=t._bodyInit,t.bodyUsed=!0)}else this.url=String(t);if(this.credentials=e.credentials||this.credentials||"omit",!e.headers&&this.headers||(this.headers=new c(e.headers)),this.method=(r=e.method||this.method||"GET",n=r.toUpperCase(),i.indexOf(n)>-1?n:r),this.mode=e.mode||this.mode||null,this.referrer=null,("GET"===this.method||"HEAD"===this.method)&&o)throw new TypeError("Body not allowed for GET or HEAD requests");this._initBody(o)}function m(t){var e=new FormData;return t.trim().split("&").forEach(function(t){if(t){var r=t.split("="),n=r.shift().replace(/\+/g," "),o=r.join("=").replace(/\+/g," ");e.append(decodeURIComponent(n),decodeURIComponent(o))}}),e}function w(t,e){e||(e={}),this.type="default",this.status=void 0===e.status?200:e.status,this.ok=this.status>=200&&this.status<300,this.statusText="statusText"in e?e.statusText:"OK",this.headers=new c(e.headers),this.url=e.url||"",this._initBody(t)}}(void 0!==t?t:this)}).call(n,void 0);var o=n.fetch;o.Response=n.Response,o.Request=n.Request,o.Headers=n.Headers;t.exports&&(t.exports=o,t.exports.default=o)},function(t,e,r){"use strict";r.r(e);var n,o=r(0),i=r.n(o);!function(t){t.Debug="debug",t.Info="info",t.Warn="warn",t.Error="error"}(n||(n={}));class s{constructor(){this.length=0}push(t){const e={value:t};this.last=this.last?this.last.next=e:this.first=e,this.length++}shift(){if(this.first){const{value:t}=this.first;return this.first=this.first.next,--this.length||(this.last=void 0),t}}}const a=5,u=100,f=1e3;function c(t=a,e=f){let r,n;t<a&&(console.warn(`warning: Gracefully fixing bad value of batch size to default ${a}`),t=a),e<f&&(console.warn(`warning: Gracefully fixing bad value of timeout to default ${f}`),e=f);let o=[];async function i(){r&&clearTimeout(r),r=null;const t=o;o=[];try{await n(t.map(t=>t.log)),t.forEach(t=>t.resolve(t.log))}catch(e){t.map(t=>t.reject(e))}}return function(s){return n=s,async function(n){return new Promise(async(s,a)=>(o.push({log:n,resolve:s,reject:a}),o.length>=t||o.length===u-1?await i():await async function(){r||(r=setTimeout(async function(){await i()},e))}(),s))}}}const h={batchSize:1e3,batchInterval:1e3,syncMax:5};var l,d=(l=function(t,e){return(l=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])})(t,e)},function(t,e){function r(){this.constructor=t}l(t,e),t.prototype=null===e?Object.create(e):(r.prototype=e.prototype,new r)}),y=function(t,e,r,n){return new(r||(r=Promise))(function(o,i){function s(t){try{u(n.next(t))}catch(t){i(t)}}function a(t){try{u(n.throw(t))}catch(t){i(t)}}function u(t){t.done?o(t.value):new r(function(e){e(t.value)}).then(s,a)}u((n=n.apply(t,e||[])).next())})},p=function(t,e){var r,n,o,i,s={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:a(0),throw:a(1),return:a(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function a(i){return function(a){return function(i){if(r)throw new TypeError("Generator is already executing.");for(;s;)try{if(r=1,n&&(o=2&i[0]?n.return:i[0]?n.throw||((o=n.return)&&o.call(n),0):n.next)&&!(o=o.call(n,i[1])).done)return o;switch(n=0,o&&(i=[2&i[0],o.value]),i[0]){case 0:case 1:o=i;break;case 4:return s.label++,{value:i[1],done:!1};case 5:s.label++,n=i[1],i=[0];continue;case 7:i=s.ops.pop(),s.trys.pop();continue;default:if(!(o=(o=s.trys).length>0&&o[o.length-1])&&(6===i[0]||2===i[0])){s=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]<o[3])){s.label=i[1];break}if(6===i[0]&&s.label<o[1]){s.label=o[1],o=i;break}if(o&&s.label<o[2]){s.label=o[2],s.ops.push(i);break}o[2]&&s.ops.pop(),s.trys.pop();continue}i=e.call(t,s)}catch(t){i=[6,t],n=0}finally{r=o=0}if(5&i[0])throw i[1];return{value:i[0]?i[1]:void 0,done:!0}}([i,a])}}},b=function(t){function e(e,r){var n=t.call(this,e,r)||this;console.log("Hello from the browser!");return n.setSync(function(t){return y(n,void 0,Promise,function(){return p(this,function(e){switch(e.label){case 0:return[4,i()("https://logs.timber.io/frames",{method:"POST",headers:{"Content-Type":"text/plain",Authorization:"Basic "+btoa(this._apiKey)},body:t.map(function(t){return t.level+": "+t.message}).join("\n")})];case 1:return e.sent(),[2,t]}})})}),n}return d(e,t),e}(class{constructor(t,e){if(this._middleware=[],this._countLogged=0,this._countSynced=0,"string"!=typeof t||""===t)throw new Error("Timber API key missing");this._apiKey=t,this._options=Object.assign({},h,e);const r=function(t){let e=0;const r=new s;return function(n){return async(...o)=>new Promise((i,s)=>(async function a(){if(e<t){e++;try{i(await n(...o))}catch(t){s(t)}e--,r.length>0&&r.shift()()}else r.push(a)})())}}(this._options.syncMax)(t=>this._sync(t)),n=c(this._options.batchSize,this._options.batchInterval);this._batch=n(t=>r(t))}get logged(){return this._countLogged}get synced(){return this._countSynced}async log(t,e=n.Info,r={}){if("function"!=typeof this._sync)throw new Error("No Timber logger sync function provided");this._countLogged++;const o=Object.assign({dt:new Date,level:e,message:t},r),i=await this._middleware.reduceRight((t,e)=>t.then(e),Promise.resolve(o));return await this._batch(i),this._countSynced++,i}async debug(t,e={}){return this.log(t,n.Debug,e)}async info(t,e={}){return this.log(t,n.Info,e)}async warn(t,e={}){return this.log(t,n.Warn,e)}async error(t,e={}){return this.log(t,n.Error,e)}setSync(t){this._sync=t}use(t){this._middleware.push(t)}remove(t){this._middleware=this._middleware.filter(e=>e!==t)}});window.Timber=b}])}); | ||
!function(t,e){if("object"==typeof exports&&"object"==typeof module)module.exports=e();else if("function"==typeof define&&define.amd)define([],e);else{var r=e();for(var n in r)("object"==typeof exports?exports:t)[n]=r[n]}}(window,function(){return function(t){var e={};function r(n){if(e[n])return e[n].exports;var o=e[n]={i:n,l:!1,exports:{}};return t[n].call(o.exports,o,o.exports,r),o.l=!0,o.exports}return r.m=t,r.c=e,r.d=function(t,e,n){r.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:n})},r.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},r.t=function(t,e){if(1&e&&(t=r(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var o in t)r.d(n,o,function(e){return t[e]}.bind(null,o));return n},r.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return r.d(e,"a",e),e},r.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},r.p="",r(r.s=1)}([function(t,e,r){var n=function(t){function e(){this.fetch=!1}return e.prototype=t,new e}("undefined"!=typeof self?self:this);(function(t){!function(t){if(!t.fetch){var e={searchParams:"URLSearchParams"in t,iterable:"Symbol"in t&&"iterator"in Symbol,blob:"FileReader"in t&&"Blob"in t&&function(){try{return new Blob,!0}catch(t){return!1}}(),formData:"FormData"in t,arrayBuffer:"ArrayBuffer"in t};if(e.arrayBuffer)var r=["[object Int8Array]","[object Uint8Array]","[object Uint8ClampedArray]","[object Int16Array]","[object Uint16Array]","[object Int32Array]","[object Uint32Array]","[object Float32Array]","[object Float64Array]"],n=function(t){return t&&DataView.prototype.isPrototypeOf(t)},o=ArrayBuffer.isView||function(t){return t&&r.indexOf(Object.prototype.toString.call(t))>-1};f.prototype.append=function(t,e){t=a(t),e=u(e);var r=this.map[t];this.map[t]=r?r+","+e:e},f.prototype.delete=function(t){delete this.map[a(t)]},f.prototype.get=function(t){return t=a(t),this.has(t)?this.map[t]:null},f.prototype.has=function(t){return this.map.hasOwnProperty(a(t))},f.prototype.set=function(t,e){this.map[a(t)]=u(e)},f.prototype.forEach=function(t,e){for(var r in this.map)this.map.hasOwnProperty(r)&&t.call(e,this.map[r],r,this)},f.prototype.keys=function(){var t=[];return this.forEach(function(e,r){t.push(r)}),c(t)},f.prototype.values=function(){var t=[];return this.forEach(function(e){t.push(e)}),c(t)},f.prototype.entries=function(){var t=[];return this.forEach(function(e,r){t.push([r,e])}),c(t)},e.iterable&&(f.prototype[Symbol.iterator]=f.prototype.entries);var i=["DELETE","GET","HEAD","OPTIONS","POST","PUT"];b.prototype.clone=function(){return new b(this,{body:this._bodyInit})},p.call(b.prototype),p.call(w.prototype),w.prototype.clone=function(){return new w(this._bodyInit,{status:this.status,statusText:this.statusText,headers:new f(this.headers),url:this.url})},w.error=function(){var t=new w(null,{status:0,statusText:""});return t.type="error",t};var s=[301,302,303,307,308];w.redirect=function(t,e){if(-1===s.indexOf(e))throw new RangeError("Invalid status code");return new w(null,{status:e,headers:{location:t}})},t.Headers=f,t.Request=b,t.Response=w,t.fetch=function(t,r){return new Promise(function(n,o){var i=new b(t,r),s=new XMLHttpRequest;s.onload=function(){var t,e,r={status:s.status,statusText:s.statusText,headers:(t=s.getAllResponseHeaders()||"",e=new f,t.replace(/\r?\n[\t ]+/g," ").split(/\r?\n/).forEach(function(t){var r=t.split(":"),n=r.shift().trim();if(n){var o=r.join(":").trim();e.append(n,o)}}),e)};r.url="responseURL"in s?s.responseURL:r.headers.get("X-Request-URL");var o="response"in s?s.response:s.responseText;n(new w(o,r))},s.onerror=function(){o(new TypeError("Network request failed"))},s.ontimeout=function(){o(new TypeError("Network request failed"))},s.open(i.method,i.url,!0),"include"===i.credentials?s.withCredentials=!0:"omit"===i.credentials&&(s.withCredentials=!1),"responseType"in s&&e.blob&&(s.responseType="blob"),i.headers.forEach(function(t,e){s.setRequestHeader(e,t)}),s.send(void 0===i._bodyInit?null:i._bodyInit)})},t.fetch.polyfill=!0}function a(t){if("string"!=typeof t&&(t=String(t)),/[^a-z0-9\-#$%&'*+.\^_`|~]/i.test(t))throw new TypeError("Invalid character in header field name");return t.toLowerCase()}function u(t){return"string"!=typeof t&&(t=String(t)),t}function c(t){var r={next:function(){var e=t.shift();return{done:void 0===e,value:e}}};return e.iterable&&(r[Symbol.iterator]=function(){return r}),r}function f(t){this.map={},t instanceof f?t.forEach(function(t,e){this.append(e,t)},this):Array.isArray(t)?t.forEach(function(t){this.append(t[0],t[1])},this):t&&Object.getOwnPropertyNames(t).forEach(function(e){this.append(e,t[e])},this)}function h(t){if(t.bodyUsed)return Promise.reject(new TypeError("Already read"));t.bodyUsed=!0}function l(t){return new Promise(function(e,r){t.onload=function(){e(t.result)},t.onerror=function(){r(t.error)}})}function d(t){var e=new FileReader,r=l(e);return e.readAsArrayBuffer(t),r}function y(t){if(t.slice)return t.slice(0);var e=new Uint8Array(t.byteLength);return e.set(new Uint8Array(t)),e.buffer}function p(){return this.bodyUsed=!1,this._initBody=function(t){if(this._bodyInit=t,t)if("string"==typeof t)this._bodyText=t;else if(e.blob&&Blob.prototype.isPrototypeOf(t))this._bodyBlob=t;else if(e.formData&&FormData.prototype.isPrototypeOf(t))this._bodyFormData=t;else if(e.searchParams&&URLSearchParams.prototype.isPrototypeOf(t))this._bodyText=t.toString();else if(e.arrayBuffer&&e.blob&&n(t))this._bodyArrayBuffer=y(t.buffer),this._bodyInit=new Blob([this._bodyArrayBuffer]);else{if(!e.arrayBuffer||!ArrayBuffer.prototype.isPrototypeOf(t)&&!o(t))throw new Error("unsupported BodyInit type");this._bodyArrayBuffer=y(t)}else this._bodyText="";this.headers.get("content-type")||("string"==typeof t?this.headers.set("content-type","text/plain;charset=UTF-8"):this._bodyBlob&&this._bodyBlob.type?this.headers.set("content-type",this._bodyBlob.type):e.searchParams&&URLSearchParams.prototype.isPrototypeOf(t)&&this.headers.set("content-type","application/x-www-form-urlencoded;charset=UTF-8"))},e.blob&&(this.blob=function(){var t=h(this);if(t)return t;if(this._bodyBlob)return Promise.resolve(this._bodyBlob);if(this._bodyArrayBuffer)return Promise.resolve(new Blob([this._bodyArrayBuffer]));if(this._bodyFormData)throw new Error("could not read FormData body as blob");return Promise.resolve(new Blob([this._bodyText]))},this.arrayBuffer=function(){return this._bodyArrayBuffer?h(this)||Promise.resolve(this._bodyArrayBuffer):this.blob().then(d)}),this.text=function(){var t,e,r,n=h(this);if(n)return n;if(this._bodyBlob)return t=this._bodyBlob,e=new FileReader,r=l(e),e.readAsText(t),r;if(this._bodyArrayBuffer)return Promise.resolve(function(t){for(var e=new Uint8Array(t),r=new Array(e.length),n=0;n<e.length;n++)r[n]=String.fromCharCode(e[n]);return r.join("")}(this._bodyArrayBuffer));if(this._bodyFormData)throw new Error("could not read FormData body as text");return Promise.resolve(this._bodyText)},e.formData&&(this.formData=function(){return this.text().then(m)}),this.json=function(){return this.text().then(JSON.parse)},this}function b(t,e){var r,n,o=(e=e||{}).body;if(t instanceof b){if(t.bodyUsed)throw new TypeError("Already read");this.url=t.url,this.credentials=t.credentials,e.headers||(this.headers=new f(t.headers)),this.method=t.method,this.mode=t.mode,o||null==t._bodyInit||(o=t._bodyInit,t.bodyUsed=!0)}else this.url=String(t);if(this.credentials=e.credentials||this.credentials||"omit",!e.headers&&this.headers||(this.headers=new f(e.headers)),this.method=(r=e.method||this.method||"GET",n=r.toUpperCase(),i.indexOf(n)>-1?n:r),this.mode=e.mode||this.mode||null,this.referrer=null,("GET"===this.method||"HEAD"===this.method)&&o)throw new TypeError("Body not allowed for GET or HEAD requests");this._initBody(o)}function m(t){var e=new FormData;return t.trim().split("&").forEach(function(t){if(t){var r=t.split("="),n=r.shift().replace(/\+/g," "),o=r.join("=").replace(/\+/g," ");e.append(decodeURIComponent(n),decodeURIComponent(o))}}),e}function w(t,e){e||(e={}),this.type="default",this.status=void 0===e.status?200:e.status,this.ok=this.status>=200&&this.status<300,this.statusText="statusText"in e?e.statusText:"OK",this.headers=new f(e.headers),this.url=e.url||"",this._initBody(t)}}(void 0!==t?t:this)}).call(n,void 0);var o=n.fetch;o.Response=n.Response,o.Request=n.Request,o.Headers=n.Headers;t.exports&&(t.exports=o,t.exports.default=o)},function(t,e,r){"use strict";r.r(e);var n,o=r(0),i=r.n(o);!function(t){t.Debug="debug",t.Info="info",t.Warn="warn",t.Error="error"}(n||(n={}));class s{constructor(){this.length=0}push(t){const e={value:t};this.last=this.last?this.last.next=e:this.first=e,this.length++}shift(){if(this.first){const{value:t}=this.first;return this.first=this.first.next,--this.length||(this.last=void 0),t}}}const a=5,u=100,c=1e3;function f(t=a,e=c){let r,n;t<a&&(console.warn(`warning: Gracefully fixing bad value of batch size to default ${a}`),t=a),e<c&&(console.warn(`warning: Gracefully fixing bad value of timeout to default ${c}`),e=c);let o=[];async function i(){r&&clearTimeout(r),r=null;const t=o;o=[];try{await n(t.map(t=>t.log)),t.forEach(t=>t.resolve(t.log))}catch(e){t.map(t=>t.reject(e))}}return function(s){return n=s,async function(n){return new Promise(async(s,a)=>(o.push({log:n,resolve:s,reject:a}),o.length>=t||o.length===u-1?await i():await async function(){r||(r=setTimeout(async function(){await i()},e))}(),s))}}}const h={batchSize:1e3,batchInterval:1e3,syncMax:5};var l,d=(l=function(t,e){return(l=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r])})(t,e)},function(t,e){function r(){this.constructor=t}l(t,e),t.prototype=null===e?Object.create(e):(r.prototype=e.prototype,new r)}),y=function(t,e,r,n){return new(r||(r=Promise))(function(o,i){function s(t){try{u(n.next(t))}catch(t){i(t)}}function a(t){try{u(n.throw(t))}catch(t){i(t)}}function u(t){t.done?o(t.value):new r(function(e){e(t.value)}).then(s,a)}u((n=n.apply(t,e||[])).next())})},p=function(t,e){var r,n,o,i,s={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:a(0),throw:a(1),return:a(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function a(i){return function(a){return function(i){if(r)throw new TypeError("Generator is already executing.");for(;s;)try{if(r=1,n&&(o=2&i[0]?n.return:i[0]?n.throw||((o=n.return)&&o.call(n),0):n.next)&&!(o=o.call(n,i[1])).done)return o;switch(n=0,o&&(i=[2&i[0],o.value]),i[0]){case 0:case 1:o=i;break;case 4:return s.label++,{value:i[1],done:!1};case 5:s.label++,n=i[1],i=[0];continue;case 7:i=s.ops.pop(),s.trys.pop();continue;default:if(!(o=(o=s.trys).length>0&&o[o.length-1])&&(6===i[0]||2===i[0])){s=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]<o[3])){s.label=i[1];break}if(6===i[0]&&s.label<o[1]){s.label=o[1],o=i;break}if(o&&s.label<o[2]){s.label=o[2],s.ops.push(i);break}o[2]&&s.ops.pop(),s.trys.pop();continue}i=e.call(t,s)}catch(t){i=[6,t],n=0}finally{r=o=0}if(5&i[0])throw i[1];return{value:i[0]?i[1]:void 0,done:!0}}([i,a])}}},b=function(t){function e(e,r){var n=t.call(this,e,r)||this;console.log("Hello from the browser!");return n.setSync(function(t){return y(n,void 0,Promise,function(){var e;return p(this,function(r){switch(r.label){case 0:return[4,i()("https://logs.timber.io/frames",{method:"POST",headers:{"Content-Type":"text/plain",Authorization:"Basic "+btoa(this._apiKey)}})];case 1:if((e=r.sent()).ok)return[2,t];throw new Error(e.statusText)}})})}),n}return d(e,t),e}(class{constructor(t,e){if(this._middleware=[],this._countLogged=0,this._countSynced=0,"string"!=typeof t||""===t)throw new Error("Timber API key missing");this._apiKey=t,this._options=Object.assign({},h,e);const r=function(t){let e=0;const r=new s;return function(n){return async(...o)=>new Promise((i,s)=>(async function a(){if(e<t){e++;try{i(await n(...o))}catch(t){s(t)}e--,r.length>0&&r.shift()()}else r.push(a)})())}}(this._options.syncMax)(t=>this._sync(t)),n=f(this._options.batchSize,this._options.batchInterval);this._batch=n(t=>r(t))}get logged(){return this._countLogged}get synced(){return this._countSynced}async log(t,e=n.Info,r={}){if("function"!=typeof this._sync)throw new Error("No Timber logger sync function provided");this._countLogged++;const o=Object.assign({dt:new Date},r,{level:e,message:t,$schema:"https://raw.githubusercontent.com/timberio/log-event-json-schema/v4.1.0/schema.json"}),i=await this._middleware.reduceRight((t,e)=>t.then(e),Promise.resolve(o));return await this._batch(i),this._countSynced++,i}async debug(t,e={}){return this.log(t,n.Debug,e)}async info(t,e={}){return this.log(t,n.Info,e)}async warn(t,e={}){return this.log(t,n.Warn,e)}async error(t,e={}){return this.log(t,n.Error,e)}setSync(t){this._sync=t}use(t){this._middleware.push(t)}remove(t){this._middleware=this._middleware.filter(e=>e!==t)}});window.Timber=b}])}); |
{ | ||
"name": "@timberio/browser", | ||
"version": "0.16.0", | ||
"version": "0.17.0", | ||
"description": "Timber.io browser logging", | ||
@@ -38,5 +38,7 @@ "keywords": [ | ||
"devDependencies": { | ||
"@timberio/types": "^0.16.0", | ||
"@timberio/types": "^0.17.0", | ||
"@types/nock": "^9.3.0", | ||
"@types/node": "^10.12.12", | ||
"@types/webpack": "^4.4.20", | ||
"nock": "^10.0.4", | ||
"npm-run-all": "^4.1.5", | ||
@@ -50,7 +52,7 @@ "ts-loader": "^5.3.1", | ||
"dependencies": { | ||
"@timberio/core": "^0.16.0", | ||
"@timberio/tools": "^0.16.0", | ||
"@timberio/core": "^0.17.0", | ||
"@timberio/tools": "^0.17.0", | ||
"cross-fetch": "^2.2.3" | ||
}, | ||
"gitHead": "13fe691283afc3d96d5bc1ff7b13173f55389621" | ||
"gitHead": "4e067b488fd87e43621d053b58e665bf55632bd8" | ||
} |
@@ -38,3 +38,3 @@ # 🌲 Timber - Browser logging | ||
``` | ||
<script src="https://unpkg.com/@timberio/browser@0.9.2/dist/umd/timber.js"></script> | ||
<script src="https://unpkg.com/@timberio/browser@0.16.0/dist/umd/timber.js"></script> | ||
``` | ||
@@ -41,0 +41,0 @@ |
@@ -18,12 +18,20 @@ import fetch from "cross-fetch"; | ||
// yet... dev only! | ||
await fetch("https://logs.timber.io/frames", { | ||
const res = await fetch("https://logs.timber.io/frames", { | ||
method: "POST", | ||
headers: { | ||
"Content-Type": "text/plain", | ||
Authorization: `Basic ${btoa(this._apiKey)}` | ||
Authorization: `Basic ${btoa(this._apiKey)}`, | ||
}, | ||
body: logs.map(log => `${log.level}: ${log.message}`).join("\n") | ||
// body: logs.map(log => `${log.level}: ${log.message}`).join("\n") | ||
}); | ||
return logs; | ||
if (res.ok) { | ||
return logs; | ||
} | ||
/** | ||
* TODO: if status is 50x throw custom ServerError | ||
* to be used in retry logic | ||
*/ | ||
throw new Error(res.statusText); | ||
}; | ||
@@ -30,0 +38,0 @@ |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
44860
34
255
11
4
+ Added@timberio/core@0.17.0(transitive)
+ Added@timberio/tools@0.17.0(transitive)
+ Added@timberio/types@0.17.0(transitive)
- Removed@timberio/core@0.16.0(transitive)
- Removed@timberio/tools@0.16.0(transitive)
- Removed@timberio/types@0.16.0(transitive)
Updated@timberio/core@^0.17.0
Updated@timberio/tools@^0.17.0