diff --git a/.gitignore b/.gitignore index 837291b..844bfdb 100644 --- a/.gitignore +++ b/.gitignore @@ -2,6 +2,7 @@ logs *.log npm-debug.log* +.DS_Store # Runtime data pids diff --git a/example/index.html b/example/index.html index 744fee8..f542155 100644 --- a/example/index.html +++ b/example/index.html @@ -2,9 +2,8 @@ - + -
diff --git a/example/js/topojson.min.js b/example/js/topojson.min.js new file mode 100644 index 0000000..4554c42 --- /dev/null +++ b/example/js/topojson.min.js @@ -0,0 +1,2 @@ +// https://github.com/topojson/topojson Version 3.0.0. Copyright 2017 Mike Bostock. +(function(r,n){"object"==typeof exports&&"undefined"!=typeof module?n(exports):"function"==typeof define&&define.amd?define(["exports"],n):n(r.topojson=r.topojson||{})})(this,function(r){"use strict";function n(r,n){var e=n.id,o=n.bbox,a=null==n.properties?{}:n.properties,i=t(r,n);return null==e&&null==o?{type:"Feature",properties:a,geometry:i}:null==o?{type:"Feature",id:e,properties:a,geometry:i}:{type:"Feature",id:e,bbox:o,properties:a,geometry:i}}function t(r,n){function t(r,n){n.length&&n.pop();for(var t=f[r<0?~r:r],e=0,o=t.length;e1)e=o(r,n,t);else for(a=0,e=new Array(i=r.arcs.length);a1)for(var o,a,c=1,f=i(e[0]);cf&&(a=e[0],e[0]=e[c],e[c]=a,f=o);return e})}}function u(r,n,t,e){c(r,n,t),c(r,n,n+e),c(r,n+e,t)}function c(r,n,t){for(var e,o=n+(t---n>>1);n=1)return r[t-1];var t,e=(t-1)*n,o=Math.floor(e),a=r[o];return a+(r[o+1]-a)*(e-o)}}function P(r,n){return n-r}function w(r,n){for(var t,e,o,a=0,i=r.length,u=0,c=r[n?a++:i-1],f=c[0]*pr,l=c[1]*pr/2+hr,s=yr(l),h=vr(l);a=0?1:-1,y=g*p,v=o*h,b=e*s+v*yr(y),m=v*g*vr(y);u+=gr(m,b)}return u}function k(r,n){var t=w(r,!0);return n&&(t*=-1),2*(t<0?sr+t:t)}function A(r){var n=w(r,!1);return 2*(n<0?sr+n:n)}var L=function(r){return r},C=function(r){if(null==r)return L;var n,t,e=r.scale[0],o=r.scale[1],a=r.translate[0],i=r.translate[1];return function(r,u){u||(n=t=0);var c=2,f=r.length,l=new Array(f);for(l[0]=(n+=r[0])*e+a,l[1]=(t+=r[1])*o+i;cu&&(u=r[0]),r[1]c&&(c=r[1])}function t(r){switch(r.type){case"GeometryCollection":r.geometries.forEach(t);break;case"Point":n(r.coordinates);break;case"MultiPoint":r.coordinates.forEach(n)}}var e,o=C(r.transform),a=1/0,i=a,u=-a,c=-a;r.arcs.forEach(function(r){for(var n,t=-1,e=r.length;++tu&&(u=n[0]),n[1]c&&(c=n[1])});for(e in r.objects)t(r.objects[e]);return[a,i,u,c]},j=function(r,n){for(var t,e=r.length,o=e-n;o<--e;)t=r[o],r[o++]=r[e],r[e]=t},G=function(r,t){return"GeometryCollection"===t.type?{type:"FeatureCollection",features:t.geometries.map(function(t){return n(r,t)})}:n(r,t)},_=function(r,n){function t(n){var t,e=r.arcs[n<0?~n:n],o=e[0];return r.transform?(t=[0,0],e.forEach(function(r){t[0]+=r[0],t[1]+=r[1]})):t=e[e.length-1],n<0?[t,o]:[o,t]}function e(r,n){for(var t in r){var e=r[t];delete n[e.start],delete e.start,delete e.end,e.forEach(function(r){o[r<0?~r:r]=1}),u.push(e)}}var o={},a={},i={},u=[],c=-1;return n.forEach(function(t,e){var o,a=r.arcs[t<0?~t:t];a.length<3&&!a[1][0]&&!a[1][1]&&(o=n[++c],n[c]=t,n[e]=o)}),n.forEach(function(r){var n,e,o=t(r),u=o[0],c=o[1];if(n=i[u])if(delete i[n.end],n.push(r),n.end=c,e=a[c]){delete a[e.start];var f=e===n?n:n.concat(e);a[f.start=n.start]=i[f.end=e.end]=f}else a[n.start]=i[n.end]=n;else if(n=a[c])if(delete a[n.start],n.unshift(r),n.start=u,e=i[u]){delete i[e.end];var l=e===n?n:e.concat(n);a[l.start=e.start]=i[l.end=n.end]=l}else a[n.start]=i[n.end]=n;else n=[r],a[n.start=u]=i[n.end=c]=n}),e(i,a),e(a,i),n.forEach(function(r){o[r<0?~r:r]||u.push([r])}),u},I=function(r){return t(r,e.apply(this,arguments))},F=function(r){return t(r,i.apply(this,arguments))},T=function(r,n){for(var t=0,e=r.length;t>>1;r[o]=2))throw new Error("n must be ≥2");l=r.bbox||S(r);var a,i=l[0],u=l[1],c=l[2],f=l[3];n={scale:[c-i?(c-i)/(a-1):1,f-u?(f-u)/(a-1):1],translate:[i,u]}}var l,s,h=O(n),p=r.objects,g={};for(s in p)g[s]=e(p[s]);return{type:"Topology",bbox:l,transform:n,objects:g,arcs:r.arcs.map(o)}},U=function(r){function n(r){null!=r&&f.hasOwnProperty(r.type)&&f[r.type](r)}function t(r){var n=r[0],t=r[1];nu&&(u=n),tc&&(c=t)}function e(r){r.forEach(t)}function o(r){r.forEach(e)}var a=1/0,i=1/0,u=-1/0,c=-1/0,f={GeometryCollection:function(r){r.geometries.forEach(n)},Point:function(r){t(r.coordinates)},MultiPoint:function(r){r.coordinates.forEach(t)},LineString:function(r){e(r.arcs)},MultiLineString:function(r){r.arcs.forEach(e)},Polygon:function(r){r.arcs.forEach(e)},MultiPolygon:function(r){r.arcs.forEach(o)}};for(var l in r)n(r[l]);return u>=a&&c>=i?[a,i,u,c]:void 0},z=function(r,n,t,e,o){function a(e){for(var a=n(e)&f,i=c[a],u=0;i!=o;){if(t(i,e))return!0;if(++u>=r)throw new Error("full hashset");i=c[a=a+1&f]}return c[a]=e,!0}function i(e){for(var a=n(e)&f,i=c[a],u=0;i!=o;){if(t(i,e))return!0;if(++u>=r)break;i=c[a=a+1&f]}return!1}function u(){for(var r=[],n=0,t=c.length;n=r)throw new Error("full hashmap");u=l[i=i+1&h]}return l[i]=e,s[i]=a,a}function u(e,a){for(var i=n(e)&h,u=l[i],c=0;u!=o;){if(t(u,e))return s[i];if(++c>=r)throw new Error("full hashmap");u=l[i=i+1&h]}return l[i]=e,s[i]=a,a}function c(e,a){for(var i=n(e)&h,u=l[i],c=0;u!=o;){if(t(u,e))return s[i];if(++c>=r)break;u=l[i=i+1&h]}return a}function f(){for(var r=[],n=0,t=l.length;n>7^D[2]^D[3])},J=function(r){function n(r,n,t,e){if(p[t]!==r){p[t]=r;var o=g[t];if(o>=0){var a=y[t];o===n&&a===e||o===e&&a===n||(++b,v[t]=1)}else g[t]=n,y[t]=e}}function t(r){return H(f[r])}function e(r,n){return V(f[r],f[n])}var o,a,i,u,c,f=r.coordinates,l=r.lines,s=r.rings,h=function(){for(var r=R(1.4*f.length,t,e,Int32Array,-1,Int32Array),n=new Int32Array(f.length),o=0,a=f.length;o0&&a&&$(r,a,n),u=Q(K(Y(r))),c=u.coordinates,f=R(1.4*u.arcs.length,p,g);r=u.objects,u.bbox=a,u.arcs=u.arcs.map(function(r,n){return f.set(r,n),c.slice(r[0],r[1]+1)}),delete u.coordinates,c=null;var l={GeometryCollection:function(r){r.geometries.forEach(t)},LineString:function(r){r.arcs=e(r.arcs)},MultiLineString:function(r){r.arcs=r.arcs.map(e)},Polygon:function(r){r.arcs=r.arcs.map(e)},MultiPolygon:function(r){r.arcs=r.arcs.map(o)}};for(var s in r)t(r[s]);return i&&(u.transform=i,u.arcs=X(u.arcs)),u},nr=function(r){function n(r){var t;switch(r.type){case"GeometryCollection":t={type:"GeometryCollection",geometries:r.geometries.map(n)};break;case"LineString":t={type:"LineString",arcs:e(r.arcs)};break;case"MultiLineString":t={type:"MultiLineString",arcs:r.arcs.map(e)};break;case"Polygon":t={type:"Polygon",arcs:r.arcs.map(e)};break;case"MultiPolygon":t={type:"MultiPolygon",arcs:r.arcs.map(o)};break;default:return r}return null!=r.id&&(t.id=r.id),null!=r.bbox&&(t.bbox=r.bbox),null!=r.properties&&(t.properties=r.properties),t}function t(r){var n,t=r<0&&(r=~r,!0);return null==(n=s[r])&&(s[r]=n=++l,f[n]=c[r]),t?~n:n}function e(r){return r.map(t)}function o(r){return r.map(e)}var a,i=r.objects,u={},c=r.arcs,f=[],l=-1,s=new Array(c.length);for(a in i)u[a]=n(i[a]);return{type:"Topology",bbox:r.bbox,transform:r.transform,objects:u,arcs:f}},tr=function(r,n){function t(r){var n,o;switch(r.type){case"Polygon":o=e(r.arcs),n=o?{type:"Polygon",arcs:o}:{type:null};break;case"MultiPolygon":o=r.arcs.map(e).filter(v),n=o.length?{type:"MultiPolygon",arcs:o}:{type:null};break;case"GeometryCollection":o=r.geometries.map(t).filter(b),n=o.length?{type:"GeometryCollection",geometries:o}:{type:null};break;default:return r}return null!=r.id&&(n.id=r.id),null!=r.bbox&&(n.bbox=r.bbox),null!=r.properties&&(n.properties=r.properties),n}function e(r){return r.length&&o(r[0])?[r[0]].concat(r.slice(1).filter(a)):null}function o(r){return n(r,!1)}function a(r){return n(r,!0)}var i,u=r.objects,c={};null==n&&(n=y);for(i in u)c[i]=t(u[i]);return nr({type:"Topology",bbox:r.bbox,transform:r.transform,objects:c,arcs:r.arcs})},er=function(r){function n(r){switch(r.type){case"GeometryCollection":r.geometries.forEach(n);break;case"Polygon":t(r.arcs);break;case"MultiPolygon":r.arcs.forEach(t)}}function t(r){for(var n=0,t=r.length;n=0&&f!==a?-1:a}}var e,o={},a=0;for(e in r.objects)n(r.objects[e]);return function(r){for(var n,t=0,e=r.length;t=n}},ar=function(r,n,t){var e=er(r),o=or(r,n,t);return function(r,n){return e(r,n)||o(r,n)}},ir=function(){function r(r,n){for(;n>0;){var t=(n+1>>1)-1,o=e[t];if(M(r,o)>=0)break;e[o._=n]=o,e[r._=n=t]=r}}function n(r,n){for(;;){var t=n+1<<1,a=t-1,i=n,u=e[i];if(a0&&(r=e[o],n(e[r._=0]=r,0)),t}},t.remove=function(t){var a,i=t._;if(e[i]===t)return i!==--o&&(a=e[o],(M(a,t)<0?r:n)(e[a._=i]=a,i)),i},t},ur=function(r,n){function t(r){o.remove(r),r[1][2]=n(r),o.push(r)}var e=r.transform?C(r.transform):E,o=ir();null==n&&(n=m);var a=r.arcs.map(function(r){var a,i,u,c=[],f=0;for(r=r.map(e),i=1,u=r.length-1;i=n&&(i[o++]=[t[0],t[1]]);return i.length=o,i});return{type:"Topology",transform:r.transform,bbox:r.bbox,objects:r.objects,arcs:t}},lr=Math.PI,sr=2*lr,hr=lr/4,pr=lr/180,gr=Math.atan2,yr=Math.cos,vr=Math.sin;r.bbox=S,r.feature=G,r.mesh=I,r.meshArcs=e,r.merge=F,r.mergeArcs=i,r.neighbors=N,r.quantize=q,r.transform=C,r.untransform=O,r.topology=rr,r.filter=tr,r.filterAttached=er,r.filterAttachedWeight=ar,r.filterWeight=or,r.planarRingArea=d,r.planarTriangleArea=m,r.presimplify=ur,r.quantile=cr,r.simplify=fr,r.sphericalRingArea=k,r.sphericalTriangleArea=A,Object.defineProperty(r,"__esModule",{value:!0})}); \ No newline at end of file diff --git a/example/js/topojson.v1.min.js b/example/js/topojson.v1.min.js deleted file mode 100644 index f33d1dc..0000000 --- a/example/js/topojson.v1.min.js +++ /dev/null @@ -1 +0,0 @@ -topojson=function(){function e(e,n){function t(n){var t=e.arcs[n],r=t[0],o=[0,0];return t.forEach(function(e){o[0]+=e[0],o[1]+=e[1]}),[r,o]}var r={},o={};n.forEach(function(e){var n,a,i=t(e),u=i[0],c=i[1];if(n=o[u])if(delete o[n.end],n.push(e),n.end=c,a=r[c]){delete r[a.start];var s=a===n?n:n.concat(a);r[s.start=n.start]=o[s.end=a.end]=s}else if(a=o[c]){delete r[a.start],delete o[a.end];var s=n.concat(a.map(function(e){return~e}).reverse());r[s.start=n.start]=o[s.end=a.start]=s}else r[n.start]=o[n.end]=n;else if(n=r[c])if(delete r[n.start],n.unshift(e),n.start=u,a=o[u]){delete o[a.end];var f=a===n?n:a.concat(n);r[f.start=a.start]=o[f.end=n.end]=f}else if(a=r[u]){delete r[a.start],delete o[a.end];var f=a.map(function(e){return~e}).reverse().concat(n);r[f.start=a.end]=o[f.end=n.end]=f}else r[n.start]=o[n.end]=n;else if(n=r[u])if(delete r[n.start],n.unshift(~e),n.start=c,a=o[c]){delete o[a.end];var f=a===n?n:a.concat(n);r[f.start=a.start]=o[f.end=n.end]=f}else if(a=r[c]){delete r[a.start],delete o[a.end];var f=a.map(function(e){return~e}).reverse().concat(n);r[f.start=a.end]=o[f.end=n.end]=f}else r[n.start]=o[n.end]=n;else if(n=o[c])if(delete o[n.end],n.push(~e),n.end=u,a=o[u]){delete r[a.start];var s=a===n?n:n.concat(a);r[s.start=n.start]=o[s.end=a.end]=s}else if(a=r[u]){delete r[a.start],delete o[a.end];var s=n.concat(a.map(function(e){return~e}).reverse());r[s.start=n.start]=o[s.end=a.start]=s}else r[n.start]=o[n.end]=n;else n=[e],r[n.start=u]=o[n.end=c]=n});var a=[];for(var i in o)a.push(o[i]);return a}function n(n,t,r){function a(e){0>e&&(e=~e),(l[e]||(l[e]=[])).push(f)}function i(e){e.forEach(a)}function u(e){e.forEach(i)}function c(e){"GeometryCollection"===e.type?e.geometries.forEach(c):e.type in d&&(f=e,d[e.type](e.arcs))}var s=[];if(arguments.length>1){var f,l=[],d={LineString:i,MultiLineString:u,Polygon:u,MultiPolygon:function(e){e.forEach(u)}};c(t),l.forEach(arguments.length<3?function(e,n){s.push(n)}:function(e,n){r(e[0],e[e.length-1])&&s.push(n)})}else for(var p=0,v=n.arcs.length;v>p;++p)s.push(p);return o(n,{type:"MultiLineString",arcs:e(n,s)})}function t(e,n){return"GeometryCollection"===n.type?{type:"FeatureCollection",features:n.geometries.map(function(n){return r(e,n)})}:r(e,n)}function r(e,n){var t={type:"Feature",id:n.id,properties:n.properties||{},geometry:o(e,n)};return null==n.id&&delete t.id,t}function o(e,n){function t(e,n){n.length&&n.pop();for(var t,r=f[0>e?~e:e],o=0,i=r.length;i>o;++o)n.push(t=r[o].slice()),s(t,o);0>e&&a(n,i)}function r(e){return e=e.slice(),s(e,0),e}function o(e){for(var n=[],r=0,o=e.length;o>r;++r)t(e[r],n);return n.length<2&&n.push(n[0].slice()),n}function i(e){for(var n=o(e);n.length<4;)n.push(n[0].slice());return n}function u(e){return e.map(i)}function c(e){var n=e.type;return"GeometryCollection"===n?{type:n,geometries:e.geometries.map(c)}:n in l?{type:n,coordinates:l[n](e)}:null}var s=d(e.transform),f=e.arcs,l={Point:function(e){return r(e.coordinates)},MultiPoint:function(e){return e.coordinates.map(r)},LineString:function(e){return o(e.arcs)},MultiLineString:function(e){return e.arcs.map(o)},Polygon:function(e){return u(e.arcs)},MultiPolygon:function(e){return e.arcs.map(u)}};return c(n)}function a(e,n){for(var t,r=e.length,o=r-n;o<--r;)t=e[o],e[o++]=e[r],e[r]=t}function i(e,n){for(var t=0,r=e.length;r>t;){var o=t+r>>>1;e[o]e&&(e=~e);var t=o[e];t?t.push(n):o[e]=[n]})}function t(e,t){e.forEach(function(e){n(e,t)})}function r(e,n){"GeometryCollection"===e.type?e.geometries.forEach(function(e){r(e,n)}):e.type in u&&u[e.type](e.arcs,n)}var o={},a=e.map(function(){return[]}),u={LineString:n,MultiLineString:t,Polygon:t,MultiPolygon:function(e,n){e.forEach(function(e){t(e,n)})}};e.forEach(r);for(var c in o)for(var s=o[c],f=s.length,l=0;f>l;++l)for(var d=l+1;f>d;++d){var p,v=s[l],h=s[d];(p=a[v])[c=i(p,h)]!==h&&p.splice(c,0,h),(p=a[h])[c=i(p,v)]!==v&&p.splice(c,0,v)}return a}function c(e,n){function t(e){i.remove(e),e[1][2]=n(e),i.push(e)}var r,o=d(e.transform),a=p(e.transform),i=l(f),u=0;for(n||(n=s),e.arcs.forEach(function(e){var t=[];e.forEach(o);for(var a=1,u=e.length-1;u>a;++a)r=e.slice(a-1,a+2),r[1][2]=n(r),t.push(r),i.push(r);e[0][2]=e[u][2]=1/0;for(var a=0,u=t.length;u>a;++a)r=t[a],r.previous=t[a-1],r.next=t[a+1]});r=i.pop();){var c=r.previous,v=r.next;r[1][2]0;){var r=(n+1>>1)-1,a=o[r];if(e(t,a)>=0)break;o[a.index=n]=a,o[t.index=n=r]=t}}function t(n){for(var t=o[n];;){var r=n+1<<1,a=r-1,i=n,u=o[i];if(ae;++e){var r=arguments[e];n(r.index=o.push(r)-1)}return o.length},r.pop=function(){var e=o[0],n=o.pop();return o.length&&(o[n.index=0]=n,t(0)),e},r.remove=function(r){var a=r.index,i=o.pop();return a!==o.length&&(o[i.index=a]=i,(e(i,r)<0?n:t)(a)),a},r}function d(e){if(!e)return v;var n,t,r=e.scale[0],o=e.scale[1],a=e.translate[0],i=e.translate[1];return function(e,u){u||(n=t=0),e[0]=(n+=e[0])*r+a,e[1]=(t+=e[1])*o+i}}function p(e){if(!e)return v;var n,t,r=e.scale[0],o=e.scale[1],a=e.translate[0],i=e.translate[1];return function(e,u){u||(n=t=0);var c=0|(e[0]-a)/r,s=0|(e[1]-i)/o;e[0]=c-n,e[1]=s-t,n=c,t=s}}function v(){}return{version:"1.4.5",mesh:n,feature:t,neighbors:u,presimplify:c}}(); diff --git a/example/js/versor.js b/example/js/versor.js deleted file mode 100644 index 7ce6b72..0000000 --- a/example/js/versor.js +++ /dev/null @@ -1,79 +0,0 @@ -// Version 0.0.0. Copyright 2017 Mike Bostock. -(function(global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : - typeof define === 'function' && define.amd ? define(factory) : - (global.versor = factory()); -}(this, (function() {'use strict'; - -var acos = Math.acos, - asin = Math.asin, - atan2 = Math.atan2, - cos = Math.cos, - max = Math.max, - min = Math.min, - PI = Math.PI, - sin = Math.sin, - sqrt = Math.sqrt, - radians = PI / 180, - degrees = 180 / PI; - -// Returns the unit quaternion for the given Euler rotation angles [λ, φ, γ]. -function versor(e) { - var l = e[0] / 2 * radians, sl = sin(l), cl = cos(l), // λ / 2 - p = e[1] / 2 * radians, sp = sin(p), cp = cos(p), // φ / 2 - g = e[2] / 2 * radians, sg = sin(g), cg = cos(g); // γ / 2 - return [ - cl * cp * cg + sl * sp * sg, - sl * cp * cg - cl * sp * sg, - cl * sp * cg + sl * cp * sg, - cl * cp * sg - sl * sp * cg - ]; -} - -// Returns Cartesian coordinates [x, y, z] given spherical coordinates [λ, φ]. -versor.cartesian = function(e) { - var l = e[0] * radians, p = e[1] * radians, cp = cos(p); - return [cp * cos(l), cp * sin(l), sin(p)]; -}; - -// Returns the Euler rotation angles [λ, φ, γ] for the given quaternion. -versor.rotation = function(q) { - return [ - atan2(2 * (q[0] * q[1] + q[2] * q[3]), 1 - 2 * (q[1] * q[1] + q[2] * q[2])) * degrees, - asin(max(-1, min(1, 2 * (q[0] * q[2] - q[3] * q[1])))) * degrees, - atan2(2 * (q[0] * q[3] + q[1] * q[2]), 1 - 2 * (q[2] * q[2] + q[3] * q[3])) * degrees - ]; -}; - -// Returns the quaternion to rotate between two cartesian points on the sphere. -versor.delta = function(v0, v1) { - var w = cross(v0, v1), l = sqrt(dot(w, w)); - if (!l) return [1, 0, 0, 0]; - var t = acos(max(-1, min(1, dot(v0, v1)))) / 2, s = sin(t); // t = θ / 2 - return [cos(t), w[2] / l * s, -w[1] / l * s, w[0] / l * s]; -}; - -// Returns the quaternion that represents q0 * q1. -versor.multiply = function(q0, q1) { - return [ - q0[0] * q1[0] - q0[1] * q1[1] - q0[2] * q1[2] - q0[3] * q1[3], - q0[0] * q1[1] + q0[1] * q1[0] + q0[2] * q1[3] - q0[3] * q1[2], - q0[0] * q1[2] - q0[1] * q1[3] + q0[2] * q1[0] + q0[3] * q1[1], - q0[0] * q1[3] + q0[1] * q1[2] - q0[2] * q1[1] + q0[3] * q1[0] - ]; -}; - -function cross(v0, v1) { - return [ - v0[1] * v1[2] - v0[2] * v1[1], - v0[2] * v1[0] - v0[0] * v1[2], - v0[0] * v1[1] - v0[1] * v1[0] - ]; -} - -function dot(v0, v1) { - return v0[0] * v1[0] + v0[1] * v1[1] + v0[2] * v1[2]; -} - -return versor; -}))); diff --git a/package.json b/package.json index f1c190a..103f7f5 100644 --- a/package.json +++ b/package.json @@ -1,8 +1,8 @@ { "name": "earthjs", - "version": "0.3.0", + "version": "0.3.1", "description": "D3 Earth JS using SVG, build with plugins.", - "main": "earthjs.js", + "main": "index.js", "scripts": { "test": "tape 'test/**/*-test.js' && mkdir -p test/output && eslint src", "build": "rollup -c && uglifyjs dist/earthjs.js -c -m -o dist/earthjs.min.js" @@ -29,5 +29,9 @@ "rollup-plugin-node-resolve": "^3.0.0", "tape": "^4.6.3", "uglify-js": "github:mishoo/UglifyJS2#harmony" + }, + "dependencies": { + "d3": "^4.8.0", + "topojson": "^3.0.0" } }