UNPKG

oboe

Version:

Oboe.js reads json, giving you the objects as they are found without waiting for the stream to finish

1 lines 11.9 kB
!function(a,b,c,d,e,f){function g(a,b){return function(){return a.call(this,b.apply(this,arguments))}}function h(a){return function(b){return b[a]}}function i(a,b){return b.apply(f,a)}function j(a){var b=a.length-1,d=c.prototype.slice;if(0==b)return function(){return a.call(this,d.call(arguments))};if(1==b)return function(){return a.call(this,arguments[0],d.call(arguments,1))};var e=c(a.length);return function(){for(var c=0;b>c;c++)e[c]=arguments[c];return e[b]=d.call(arguments,b),a.apply(this,e)}}function k(a){return function(b,c){return a(c,b)}}function l(a,b){return function(c){return a(c)&&b(c)}}function m(){}function n(){return!0}function o(a){return function(){return a}}function p(a,b){return b&&b.constructor===a}function q(a){return a!==f}function r(a,c){return c instanceof b&&y(function(a){return a in c},a)}function s(a,b){return[a,b]}function t(a){return A(a.reduce(k(s),X))}function u(a){return w(function(a,b){return a.unshift(b),a},[],a)}function v(a,b){return b?s(a(Y(b)),v(a,Z(b))):X}function w(a,b,c){return c?a(w(a,b,Z(c)),Y(c)):b}function x(a,b,c){function d(a,c){return a?b(Y(a))?(c(Y(a)),Z(a)):s(Y(a),d(Z(a),c)):X}return d(a,c||m)}function y(a,b){return!b||a(Y(b))&&y(a,Z(b))}function z(a,b){a&&(Y(a).apply(null,b),z(Z(a),b))}function A(a){function b(a,c){return a?b(Z(a),s(Y(a),c)):c}return b(a,X)}function B(a,b){return b&&(a(Y(b))?Y(b):B(a,Z(b)))}function C(a){"use strict";function b(){var a=0;S.length>s&&(c("Max buffer length exceeded: textNode"),a=Math.max(a,S.length)),T.length>s&&(c("Max buffer length exceeded: numberNode"),a=Math.max(a,T.length)),R=s-a+_}function c(a){S&&(q(S),S=""),i=d(a+"\nLn: "+bb+"\nCol: "+ab+"\nChr: "+j),r(N(f,f,i))}function e(){(W!==w||0!==$)&&c("Unexpected end"),S&&(q(S),S=""),V=!0}function g(a){return"\r"==a||"\n"==a||" "==a||" "==a}function h(a){if(!i){if(V)return c("Cannot write after close");var d=0;for(j=a[0];j&&(k=j,j=a[d++]);)switch(_++,"\n"==j?(bb++,ab=0):ab++,W){case v:if("{"===j)W=x;else if("["===j)W=z;else if(!g(j))return c("Non-whitespace before {[.");continue;case C:case x:if(g(j))continue;if(W===C)X.push(D);else{if("}"===j){l(),m(),W=X.pop()||w;continue}X.push(y)}if('"'!==j)return c('Malformed object key should start with " ');W=B;continue;case D:case y:if(g(j))continue;if(":"===j)W===y?(X.push(y),S&&(l(),p(S),S=""),$++):S&&(p(S),S=""),W=w;else if("}"===j)S&&(q(S),S=""),m(),$--,W=X.pop()||w;else{if(","!==j)return c("Bad object");W===y&&X.push(y),S&&(q(S),S=""),W=C}continue;case z:case w:if(g(j))continue;if(W===z){if(n(),$++,W=w,"]"===j){o(),$--,W=X.pop()||w;continue}X.push(A)}if('"'===j)W=B;else if("{"===j)W=x;else if("["===j)W=z;else if("t"===j)W=E;else if("f"===j)W=H;else if("n"===j)W=L;else if("-"===j)T+=j;else if("0"===j)T+=j,W=Q;else{if(-1==="123456789".indexOf(j))return c("Bad value");T+=j,W=Q}continue;case A:if(","===j)X.push(A),S&&(q(S),S=""),W=w;else{if("]"!==j){if(g(j))continue;return c("Bad array")}S&&(q(S),S=""),o(),$--,W=X.pop()||w}continue;case B:var e=d-1;a:for(;;){for(;Z>0;)if(Y+=j,j=a.charAt(d++),4===Z?(S+=String.fromCharCode(parseInt(Y,16)),Z=0,e=d-1):Z++,!j)break a;if('"'===j&&!U){W=X.pop()||w,S+=a.substring(e,d-1),S||q("");break}if("\\"===j&&!U&&(U=!0,S+=a.substring(e,d-1),j=a.charAt(d++),!j))break;if(U){if(U=!1,"n"===j?S+="\n":"r"===j?S+="\r":"t"===j?S+=" ":"f"===j?S+="\f":"b"===j?S+="\b":"u"===j?(Z=1,Y=""):S+=j,j=a.charAt(d++),e=d-1,j)continue;break}t.lastIndex=d;var f=t.exec(a);if(!f){d=a.length+1,S+=a.substring(e,d-1);break}if(d=f.index+1,j=a.charAt(f.index),!j){S+=a.substring(e,d-1);break}}continue;case E:if(!j)continue;if("r"!==j)return c("Invalid true started with t"+j);W=F;continue;case F:if(!j)continue;if("u"!==j)return c("Invalid true started with tr"+j);W=G;continue;case G:if(!j)continue;if("e"!==j)return c("Invalid true started with tru"+j);q(!0),W=X.pop()||w;continue;case H:if(!j)continue;if("a"!==j)return c("Invalid false started with f"+j);W=I;continue;case I:if(!j)continue;if("l"!==j)return c("Invalid false started with fa"+j);W=J;continue;case J:if(!j)continue;if("s"!==j)return c("Invalid false started with fal"+j);W=K;continue;case K:if(!j)continue;if("e"!==j)return c("Invalid false started with fals"+j);q(!1),W=X.pop()||w;continue;case L:if(!j)continue;if("u"!==j)return c("Invalid null started with n"+j);W=M;continue;case M:if(!j)continue;if("l"!==j)return c("Invalid null started with nu"+j);W=O;continue;case O:if(!j)continue;if("l"!==j)return c("Invalid null started with nul"+j);q(null),W=X.pop()||w;continue;case P:if("."!==j)return c("Leading zero not followed by .");T+=j,W=Q;continue;case Q:if(-1!=="0123456789".indexOf(j))T+=j;else if("."===j){if(-1!==T.indexOf("."))return c("Invalid number has two dots");T+=j}else if("e"===j||"E"===j){if(-1!==T.indexOf("e")||-1!==T.indexOf("E"))return c("Invalid number has two exponential");T+=j}else if("+"===j||"-"===j){if("e"!==k&&"E"!==k)return c("Invalid symbol in number");T+=j}else T&&(q(parseFloat(T)),T=""),d--,W=X.pop()||w;continue;default:return c("Unknown state: "+W)}_>=R&&b()}}var i,j,k,l=a(qb).emit,m=a(rb).emit,n=a(sb).emit,o=a(tb).emit,p=a(pb).emit,q=a(ob).emit,r=a(hb).emit,s=65536,t=/[\\"\n]/g,u=0,v=u++,w=u++,x=u++,y=u++,z=u++,A=u++,B=u++,C=u++,D=u++,E=u++,F=u++,G=u++,H=u++,I=u++,J=u++,K=u++,L=u++,M=u++,O=u++,P=u++,Q=u,R=s,S="",T="",U=!1,V=!1,W=v,X=[],Y=null,Z=0,$=0,_=0,ab=0,bb=1;a(lb).on(h),a(mb).on(e)}function D(a,b){"use strict";function c(a){return function(b){d=a(d,b)}}var d,e={};for(var f in b)a(f).on(c(b[f]),e);a(nb).on(function(){for(var c in b)a(c).un(e)})}function E(a){var b={};return a&&a.split("\r\n").forEach(function(a){var c=a.indexOf(": ");b[a.substring(0,c)]=a.substring(c+2)}),b}function F(a,b){function c(a){return{"http:":80,"https:":443}[a]}function d(b){return b.port||c(b.protocol||a.protocol)}return!!(b.protocol&&b.protocol!=a.protocol||b.host&&b.host!=a.host||b.host&&d(b)!=d(a))}function G(a){var b=/(\w+:)?(?:\/\/)([\w.-]+)?(?::(\d+))?\/?/,c=b.exec(a)||[];return{protocol:c[1]||"",host:c[2]||"",port:c[3]||""}}function H(){return new XMLHttpRequest}function I(b,c,d,e,g,h,i){"use strict";function j(){var a=c.responseText,b=a.substr(m);b&&k(b),m=V(a)}var k=b(lb).emit,l=b(hb).emit,m=0,n=!0;b(nb).on(function(){c.onreadystatechange=null,c.abort()}),"onprogress"in c&&(c.onprogress=j),c.onreadystatechange=function(){function a(){try{n&&b(kb).emit(c.status,E(c.getAllResponseHeaders())),n=!1}catch(a){}}switch(c.readyState){case 2:case 3:return a();case 4:a();var d=2==String(c.status)[0];d?(j(),b(mb).emit()):l(N(c.status,c.responseText))}};try{c.open(d,e,!0);for(var o in h)c.setRequestHeader(o,h[o]);F(a.location,G(e))||c.setRequestHeader("X-Requested-With","XMLHttpRequest"),c.withCredentials=i,c.send(g)}catch(p){console.log("error making request",p),a.setTimeout(T(l,N(f,f,p)),0)}}function J(a,b){return{key:a,node:b}}function K(a){function b(a,b){var d=bb(Y(a));return p(c,d)?f(a,V(d),b):a}function d(a,c){if(!a)return k(c),f(a,cb,c);var d=b(a,c),g=Z(d),h=ab(Y(d));return e(g,h,c),s(J(h,c),g)}function e(a,b,c){bb(Y(a))[b]=c}function f(a,b,c){a&&e(a,b,c);var d=s(J(b,c),a);return i(d),d}function h(a){return j(a),Z(a)||l(bb(Y(a)))}var i=a(fb).emit,j=a(gb).emit,k=a(jb).emit,l=a(ib).emit,m={};return m[qb]=function(a){return d(a,{})},m[sb]=function(a){return d(a,[])},m[pb]=f,m[ob]=g(h,d),m[rb]=h,m[tb]=h,m}function L(a,b,c){function d(a){return function(b){return b.id==a}}var e,f;return{on:function(c,d){var g={listener:c,id:d||c};return b&&b.emit(a,c,g.id),e=s(g,e),f=s(c,f),this},emit:function(){z(f,arguments)},un:function(b){var g;e=x(e,d(b),function(a){g=a}),g&&(f=x(f,function(a){return a==g.listener}),c&&c.emit(a,g.listener,g.id))},listeners:function(){return f},hasListener:function(a){var b=a?d(a):n;return q(B(b,e))}}}function M(){function a(a){return c[a]=L(a,d,e)}function b(b){return c[b]||a(b)}var c={},d=a("newListener"),e=a("removeListener");return["emit","on","un"].forEach(function(a){b[a]=j(function(c,d){i(d,b(c)[a])})}),b}function N(a,b,c){try{var d=e.parse(b)}catch(f){}return{statusCode:a,body:b,jsonBody:d,thrown:c}}function O(a,b){function c(a,b,c){var d=A(c);a(b,u(Z(v(ab,d))),u(v(bb,d)))}function d(b,d,e){var f=a(b).emit;d.on(function(a){var b=e(a);b!==!1&&c(f,bb(b),a)},b),a("removeListener").on(function(c){c==b&&(a(c).listeners()||d.un(b))})}var e={node:a(gb),path:a(fb)};a("newListener").on(function(a){var c=/(node|path):(.*)/.exec(a);if(c){var f=e[c[1]];f.hasListener(a)||d(a,f,b(c[2]))}})}function P(a){function b(b,c){return a(b).on(d(c),c),k}function c(a,b){var c=d(b);return a.on(function(){var d=!1;k.forget=function(){d=!0},i(arguments,c),delete k.forget,d&&a.un(b)},b),k}function d(b){return function(){try{b.apply(k,arguments)}catch(c){a(hb).emit(N(f,f,c))}}}function e(b,c){return a(b+":"+c)}function g(a,b){for(var d in b)c(e(a,d),b[d])}function h(a,b,d){return W(b)?c(e(a,b),d):g(a,b),k}var k,l=/^(node|path):./,n=a(ib),p=j(function(b,d){if(k[b])i(d,k[b]);else{var e=a(b),f=d[0];l.test(b)?c(e,f):e.on(f)}return k}),q=function(b,c,d){if("done"==b)n.un(c);else if("node"==b||"path"==b)a.un(b+":"+c,d);else{var e=c;a(b).un(e)}return k};return a(jb).on(function(a){k.root=o(a)}),a(kb).on(function(a,b){k.header=function(a){return a?b[a]:b}}),k={on:p,addListener:p,removeListener:q,emit:a.emit,node:T(h,"node"),path:T(h,"path"),done:T(c,n),start:T(b,kb),fail:a(hb).on,abort:a(nb).emit,header:m,root:m}}function Q(a,b,c,d,e){var f=M();return b&&I(f,H(),a,b,c,d,e),C(f),D(f,K(f)),O(f,db),new P(f)}function R(a,b,c,d,f,g,h){function i(a,b){return b===!1&&(a+=-1==a.indexOf("?")?"?":"&",a+="_="+(new Date).getTime()),a}return f=f?e.parse(e.stringify(f)):{},d?W(d)||(d=e.stringify(d),f["Content-Type"]=f["Content-Type"]||"application/json"):d=null,a(c||"GET",i(b,h),d,f,g||!1)}function S(a){return a?a.url?R(Q,a.url,a.method,a.body,a.headers,a.withCredentials,a.cached):R(Q,a):Q()}var T=j(function(a,b){var c=b.length;return j(function(d){for(var e=0;e<d.length;e++)b[c+e]=d[e];return b.length=c+d.length,a.apply(this,b)})}),U=(j(function(a){function b(a,b){return[i(a,b)]}var c=t(a);return j(function(a){return w(b,a,c)[0]})}),j(function(a){return j(function(b){for(var c,d=0;d<V(a);d++)if(c=i(b,a[d]))return c})})),V=h("length"),W=T(p,String),X=null,Y=h(0),Z=h(1),$=j(t),_=function(){var a=function(a){return a.exec.bind(a)},b=j(function(b){return b.unshift(/^/),a(RegExp(b.map(h("source")).join("")))}),c=/(\$?)/,d=/([\w-_]+|\*)/,e=/()/,f=/\["([^"]+)"\]/,g=/\[(\d+|\*)\]/,i=/{([\w ]*?)}/,k=/(?:{([\w ]*?)})?/,l=b(c,d,k),m=b(c,f,k),n=b(c,g,k),o=b(c,e,i),p=b(/\.\./),q=b(/\./),r=b(c,/!/),s=b(/$/);return function(a){return a(U(l,m,n,o),p,q,r,s)}}(),ab=h("key"),bb=h("node"),cb={},db=_(function(a,b,c,e,f){function h(a,b){var c=b[z],d=c&&"*"!=c?function(a){return B(a)==c}:n;return l(d,a)}function i(a,b){var c=b[A];if(!c)return a;var d=T(r,t(c.split(/\W+/))),e=g(d,C);return l(e,a)}function j(a,b){var c=!!b[y];return c?l(a,Y):a}function k(a){function b(a){return B(a)!=cb}return a==n?n:l(b,g(a,Z))}function m(a){function b(a){return a?f(a):!1}if(a==n)return n;var c=o(),d=a,e=k(b),f=U(c,d,e);return b}function o(){return function(a){return B(a)==cb}}function p(a){return function(b){var c=a(b);return c===!0?Y(b):c}}function q(a,b,c){return w(function(a,b){return b(a,c)},b,a)}function s(a,b,c,d,e){var f=a(c);if(f){var g=q(b,d,f),h=c.substr(V(f[0]));return e(h,g)}}function u(a,b){return T(s,a,b)}function v(a,b){return b}function x(a,b){var c=a?x:v;return D(a,b,c)}var y=1,z=2,A=3,B=g(ab,Y),C=g(bb,Y),D=U(u(a,$(j,i,h,k)),u(b,$(m)),u(c,$()),u(e,$(j,o)),u(f,$(p)),function(a){throw d('"'+a+'" could not be tokenised')});return function(a){try{return x(a,n)}catch(b){throw d('Could not compile "'+a+'" because '+b.message)}}}),eb=1,fb=eb++,gb=eb++,hb="fail",ib=eb++,jb=eb++,kb="start",lb="data",mb="end",nb=eb++,ob=eb++,pb=eb++,qb=eb++,rb=eb++,sb=eb++,tb=eb++;"function"==typeof define&&define.amd?define("oboe",[],function(){return S}):a.oboe=S}(window,Object,Array,Error,JSON);