From 8ade41b2704442ff68649c2b7d5db4358e952fcd Mon Sep 17 00:00:00 2001 From: John-David Dalton Date: Thu, 9 Jan 2014 08:10:51 -0800 Subject: [PATCH] Update vendors. --- vendor/benchmark.js/benchmark.js | 2 +- vendor/curl/dist/curl-kitchen-sink/curl.js | 90 ++++----- vendor/requirejs/LICENSE | 4 +- vendor/requirejs/require.js | 204 +++++++++++---------- 4 files changed, 157 insertions(+), 143 deletions(-) diff --git a/vendor/benchmark.js/benchmark.js b/vendor/benchmark.js/benchmark.js index 21c964993..32f3b6bc1 100644 --- a/vendor/benchmark.js/benchmark.js +++ b/vendor/benchmark.js/benchmark.js @@ -230,7 +230,7 @@ /** * Detect if `Array#unshift` returns the new length of the array (all but IE < 8). * - * @memberOf _.support + * @memberOf Benchmark.support * @type boolean */ support.unshiftResult = !![].unshift(1); diff --git a/vendor/curl/dist/curl-kitchen-sink/curl.js b/vendor/curl/dist/curl-kitchen-sink/curl.js index 9d5a756f6..5f411f2c7 100644 --- a/vendor/curl/dist/curl-kitchen-sink/curl.js +++ b/vendor/curl/dist/curl-kitchen-sink/curl.js @@ -1,48 +1,48 @@ (function(){/* MIT License (c) copyright 2010-2013 B Cavalier & J Hann MIT (c) copyright 2010-2013 B Cavalier & J Hann */ -(function(f){function k(){}function g(a,e){return 0==T.call(a).indexOf("[object "+e)}function n(a){return a&&"/"==a.charAt(a.length-1)?a.substr(0,a.length-1):a}function d(a,e){var l,h,D,m;l=1;h=a;"."==h.charAt(0)&&(D=!0,h=h.replace(U,function(a,e,h,D){h&&l++;return D||""}));if(D){D=e.split("/");m=D.length-l;if(0>m)return a;D.splice(m,l);return D.concat(h||[]).join("/")}return h}function s(a){var e=a.indexOf("!");return{g:a.substr(e+1),d:0<=e&&a.substr(0,e)}}function v(){}function q(a,e){v.prototype= -a||Q;var l=new v;v.prototype=Q;for(var h in e)l[h]=e[h];return l}function y(){function a(a,e,l){h.push([a,e,l])}function e(a,e){for(var l,D=0;l=h[D++];)(l=l[a])&&l(e)}var l,h,D;l=this;h=[];D=function(l,m){a=l?function(a){a&&a(m)}:function(a,e){e&&e(m)};D=k;e(l?0:1,m);e=k;h=G};this.l=function(e,h,D){a(e,h,D);return l};this.k=function(a){l.H=a;D(!0,a)};this.e=function(a){l.Ba=a;D(!1,a)};this.F=function(a){e(2,a)}}function x(a){return a instanceof y||a instanceof u}function r(a,e,l,h){x(a)?a.l(e,l,h): -e(a)}function w(a,e,l){var h;return function(){0<=--a&&e&&(h=e.apply(G,arguments));0==a&&l&&l(h);return h}}function b(){var a,e;p="";a=[].slice.call(arguments);g(a[0],"Object")&&(e=a.shift(),e=c(e));return new u(a[0],a[1],a[2],e)}function c(a,e,l){var h;p="";if(a&&(t.V(a),E=t.b(a),"preloads"in a&&(h=new u(a.preloads,G,l,J,!0),t.n(function(){J=h})),a=a.main))return new u(a,e,l)}function u(a,e,l,h,D){var m;m=t.i(E,G,[].concat(a),D);this.then=this.l=a=function(a,e){r(m,function(e){a&&a.apply(G,e)},function(a){if(e)e(a); -else throw a;});return this};this.next=function(a,e,h){return new u(a,e,h,m)};this.config=c;(e||l)&&a(e,l);t.n(function(){r(D||J,function(){r(h,function(){t.A(m)},l)})})}function z(a){var e,l;e=a.id;e==G&&(K!==G?K={L:"Multiple anonymous defines encountered"}:(e=t.ja())||(K=a));if(e!=G){l=F[e];e in F||(l=t.o(e,E),l=t.I(l.b,e),F[e]=l);if(!x(l))throw Error("duplicate define: "+e);l.oa=!1;t.J(l,a)}}function A(){var a=t.ga(arguments);z(a)}var p,E,C,H,B=f.document,L=B&&(B.head||B.getElementsByTagName("head")[0]), -N=L&&L.getElementsByTagName("base")[0]||null,M={},I={},m={},V="addEventListener"in f?{}:{loaded:1,complete:1},Q={},T=Q.toString,G,F={},O={},J=!1,K,S=/^\/|^[^:]+:\/\//,U=/(\.)(\.?)(?:$|\/([^\.\/]+.*)?)/g,W=/\/\*[\s\S]*?\*\/|\/\/.*?[\n\r]/g,X=/require\s*\(\s*(["'])(.*?[^\\])\1\s*\)|[^\\]?(["'])/g,Y=/\s*,\s*/,R,t;t={t:function(a,e,l){var h;a=d(a,e);if("."==a.charAt(0))return a;h=s(a);a=(e=h.d)||h.g;a in l.c&&(a=l.c[a].Q||a);e&&(0>e.indexOf("/")&&!(e in l.c)&&(a=n(l.T)+"/"+e),a=a+"!"+h.g);return a},i:function(a, -e,l,h){function m(e,h){var l,c;l=t.t(e,b.id,a);if(!h)return l;c=s(l);if(!c.d)return l;l=F[c.d];c.g="normalize"in l?l.normalize(c.g,m,b.b)||"":m(c.g);return c.d+"!"+c.g}function c(e,l,d){var s;s=l&&function(a){l.apply(G,a)};if(g(e,"String")){if(s)throw Error("require(id, callback) not allowed");d=m(e,!0);e=F[d];if(!(d in F))throw Error("Module not resolved: "+d);return(d=x(e)&&e.a)||e}r(t.A(t.i(a,b.id,e,h)),s,d)}var b;b=new y;b.id=e||"";b.ka=h;b.K=l;b.b=a;b.s=c;c.toUrl=function(e){return t.o(m(e,!0), -a).url};b.t=m;return b},I:function(a,e,l){var h,m,c;h=t.i(a,e,G,l);m=h.k;c=w(1,function(a){h.w=a;try{return t.ba(h)}catch(e){h.e(e)}});h.k=function(a){r(l||J,function(){m(F[h.id]=O[h.url]=c(a))})};h.M=function(a){r(l||J,function(){h.a&&(c(a),h.F(I))})};return h},$:function(a,e,l,h){return t.i(a,l,G,h)},ia:function(a){return a.s},O:function(a){return a.a||(a.a={})},ha:function(a){var e=a.B;e||(e=a.B={id:a.id,uri:t.P(a),exports:t.O(a),config:function(){return a.b}},e.a=e.exports);return e},P:function(a){return a.url|| -(a.url=t.u(a.s.toUrl(a.id),a.b))},V:function(a){var e,l,h,m,c;e="curl";l="define";h=m=f;if(a&&(c=a.overwriteApi||a.ya,e=a.apiName||a.qa||e,h=a.apiContext||a.pa||h,l=a.defineName||a.ua||l,m=a.defineContext||a.ta||m,C&&g(C,"Function")&&(f.curl=C),C=null,H&&g(H,"Function")&&(f.define=H),H=null,!c)){if(h[e]&&h[e]!=b)throw Error(e+" already exists");if(m[l]&&m[l]!=A)throw Error(l+" already exists");}h[e]=b;m[l]=A},b:function(a){function e(a,e){var l,h,b,p,f;for(f in a){b=a[f];g(b,"String")&&(b={path:a[f]}); -b.name=b.name||f;p=m;h=s(n(b.name));l=h.g;if(h=h.d)p=c[h],p||(p=c[h]=q(m),p.c=q(m.c),p.f=[]),delete a[f];h=b;var k=e,r=void 0;h.path=n(h.path||h.location||"");k&&(r=h.main||"./main","."==r.charAt(0)||(r="./"+r),h.Q=d(r,h.name+"/"));h.b=h.config;h.b&&(h.b=q(m,h.b));h.W=l.split("/").length;l?(p.c[l]=h,p.f.push(l)):p.p=t.U(b.path,m)}}function l(a){var e=a.c;a.S=RegExp("^("+a.f.sort(function(a,h){return e[h].W-e[a].W}).join("|").replace(/\/|\./g,"\\$&")+")(?=\\/|$)");delete a.f}var h,m,c,b;"baseUrl"in -a&&(a.p=a.baseUrl);"main"in a&&(a.Q=a.main);"preloads"in a&&(a.za=a.preloads);"pluginPath"in a&&(a.T=a.pluginPath);if("dontAddFileExt"in a||a.j)a.j=RegExp(a.dontAddFileExt||a.j);h=E;m=q(h,a);m.c=q(h.c);c=a.plugins||{};m.plugins=q(h.plugins);m.D=q(h.D,a.D);m.C=q(h.C,a.C);m.f=[];e(a.packages,!0);e(a.paths,!1);for(b in c)a=t.t(b+"!","",m),m.plugins[a.substr(0,a.length-1)]=c[b];c=m.plugins;for(b in c)if(c[b]=q(m,c[b]),a=c[b].f)c[b].f=a.concat(m.f),l(c[b]);for(b in h.c)m.c.hasOwnProperty(b)||m.f.push(b); -l(m);return m},o:function(a,e){var m,h,b,c;m=e.c;b=S.test(a)?a:a.replace(e.S,function(a){h=m[a]||{};c=h.b;return h.path||""});return{b:c||E,url:t.U(b,e)}},U:function(a,e){var m=e.p;return m&&!S.test(a)?n(m)+"/"+a:a},u:function(a,e){return a+((e||E).j.test(a)?"":".js")},m:function(a,e,l){var h=B.createElement("script");h.onload=h.onreadystatechange=function(l){l=l||f.event;if("load"==l.type||V[h.readyState])delete m[a.id],h.onload=h.onreadystatechange=h.onerror="",e()};h.onerror=function(){l(Error("Syntax or http error: "+ -a.url))};h.type=a.r||"text/javascript";h.charset="utf-8";h.async=!a.R;h.src=a.url;m[a.id]=h;L.insertBefore(h,N);return h},N:function(a){var e=[],m;("string"==typeof a?a:a.toSource?a.toSource():a.toString()).replace(W,"").replace(X,function(a,b,c,d){d?m=m==d?G:m:m||e.push(c);return""});return e},ga:function(a){var e,m,h,b,c,d;c=a.length;h=a[c-1];b=g(h,"Function")?h.length:-1;2==c?g(a[0],"Array")?m=a[0]:e=a[0]:3==c&&(e=a[0],m=a[1]);!m&&0s.status?k(s.responseText):d(Error("fetchText() failed. status: "+s.statusText)))};s.send(null)}});define("curl/plugin/text",["./_fetchText"],function(f){function k(f){throw f;}return{load:function(g,n,d){f(n.toUrl(g),d,d.error||k)},cramPlugin:"../cram/text"}}); -define("curl/plugin/async",function(){return{load:function(f,k,g){function n(d){"function"==typeof g.error&&g.error(d)}k([f],function(d){"function"==typeof d.l?d.l(function(f){0==arguments.length&&(f=d);g(f)},n):g(d)},g.error||function(d){throw d;})},analyze:function(f,k,g){g(f)}}}); -(function(f){function k(){var b;b=p[z]("link");b.rel="stylesheet";b.type="text/css";return b}function g(b,c){b.onload=function(){I.load=I.load||!0;c()}}function n(b,c){b.onerror=function(){I.error=I.error||!0;c()}}function d(b,c,d){B.push({url:b,Y:c,aa:function(){d(Error(M))}});(b=v())&&s(b)}function s(b){var c,d;c=B.shift();d=b.styleSheet;c?(b.onload=function(){c.Y(c.ma);s(b)},b.onerror=function(){c.aa();s(b)},c.ma=d.imports[d.addImport(c.url)]):(b.onload=b.onerror=u,H.push(b))}function v(){var b; -b=H.shift();!b&&C.lengthp)return a;D.splice(p,k);return D.concat(h||[]).join("/")}return h}function r(a){var e=a.indexOf("!");return{g:a.substr(e+1),d:0<=e&&a.substr(0,e)}}function t(){}function q(a,e){t.prototype= +a||Q;var k=new t;t.prototype=Q;for(var h in e)k[h]=e[h];return k}function z(){function a(a,e,k){h.push([a,e,k])}function e(a,e){for(var k,D=0;k=h[D++];)(k=k[a])&&k(e)}var k,h,D;k=this;h=[];D=function(k,p){a=k?function(a){a&&a(p)}:function(a,e){e&&e(p)};D=g;e(k?0:1,p);e=g;h=G};this.l=function(e,h,D){a(e,h,D);return k};this.k=function(a){k.G=a;D(!0,a)};this.e=function(a){k.Ba=a;D(!1,a)};this.D=function(a){e(2,a)}}function w(a){return a instanceof z||a instanceof v}function s(a,e,k,h){w(a)?a.l(e,k,h): +e(a)}function y(a,e,k){var h;return function(){0<=--a&&e&&(h=e.apply(G,arguments));0==a&&k&&k(h);return h}}function c(){var a,e;m="";a=[].slice.call(arguments);n(a[0],"Object")&&(e=a.shift(),e=b(e));return new v(a[0],a[1],a[2],e)}function b(a,e,k){var h;m="";if(a&&(u.U(a),x=u.b(a),"preloads"in a&&(h=new v(a.preloads,G,k,J,!0),u.n(function(){J=h})),a=a.main))return new v(a,e,k)}function v(a,e,k,h,D){var p;p=u.i(x,G,[].concat(a),D);this.then=this.l=a=function(a,e){s(p,function(e){a&&a.apply(G,e)},function(a){if(e)e(a); +else throw a;});return this};this.next=function(a,e,h){return new v(a,e,h,p)};this.config=b;(e||k)&&a(e,k);u.n(function(){s(D||J,function(){s(h,function(){u.w(p)},k)})})}function A(a){var e,k;e=a.id;e==G&&(K!==G?K={K:"Multiple anonymous defines encountered"}:(e=u.ia())||(K=a));if(e!=G){k=E[e];e in E||(k=u.o(e,x),k=u.H(k.b,e),E[e]=k);if(!w(k))throw Error("duplicate define: "+e);k.na=!1;u.I(k,a)}}function C(){var a=u.fa(arguments);A(a)}var m,x,F,H,B=f.document,L=B&&(B.head||B.getElementsByTagName("head")[0]), +N=L&&L.getElementsByTagName("base")[0]||null,M={},I={},p={},V="addEventListener"in f?{}:{loaded:1,complete:1},Q={},T=Q.toString,G,E={},O={},J=!1,K,S=/^\/|^[^:]+:\/\//,U=/(\.)(\.?)(?:$|\/([^\.\/]+.*)?)/g,W=/\/\*[\s\S]*?\*\/|\/\/.*?[\n\r]/g,X=/require\s*\(\s*(["'])(.*?[^\\])\1\s*\)|[^\\]?(["'])/g,Y=/\s*,\s*/,R,u;u={s:function(a,e,k){var h;a=d(a,e);if("."==a.charAt(0))return a;h=r(a);a=(e=h.d)||h.g;a in k.c&&(a=k.c[a].P||a);e&&(0>e.indexOf("/")&&!(e in k.c)&&(a=l(k.S)+"/"+e),a=a+"!"+h.g);return a},i:function(a, +e,k,h){function p(e,h){var k,c;k=u.s(e,b.id,a);if(!h)return k;c=r(k);if(!c.d)return k;k=E[c.d];c.g="normalize"in k?k.normalize(c.g,p,b.b)||"":p(c.g);return c.d+"!"+c.g}function c(e,k,d){var r;r=k&&function(a){k.apply(G,a)};if(n(e,"String")){if(r)throw Error("require(id, callback) not allowed");d=p(e,!0);e=E[d];if(!(d in E))throw Error("Module not resolved: "+d);return(d=w(e)&&e.a)||e}s(u.w(u.i(a,b.id,e,h)),r,d)}var b;b=new z;b.id=e||"";b.ja=h;b.J=k;b.b=a;b.r=c;c.toUrl=function(e){return u.o(p(e,!0), +a).url};b.s=p;return b},H:function(a,e,k){var h,p,c;h=u.i(a,e,G,k);p=h.k;c=y(1,function(a){h.v=a;try{return u.aa(h)}catch(e){h.e(e)}});h.k=function(a){s(k||J,function(){p(E[h.id]=O[h.url]=c(a))})};h.L=function(a){s(k||J,function(){h.a&&(c(a),h.D(I))})};return h},Z:function(a,e,k,h){return u.i(a,k,G,h)},ha:function(a){return a.r},N:function(a){return a.a||(a.a={})},ga:function(a){var e=a.A;e||(e=a.A={id:a.id,uri:u.O(a),exports:u.N(a),config:function(){return a.b}},e.a=e.exports);return e},O:function(a){return a.url|| +(a.url=u.t(a.r.toUrl(a.id),a.b))},U:function(a){var e,k,h,p,b;e="curl";k="define";h=p=f;if(a&&(b=a.overwriteApi||a.ya,e=a.apiName||a.pa||e,h=a.apiContext||a.oa||h,k=a.defineName||a.ua||k,p=a.defineContext||a.ta||p,F&&n(F,"Function")&&(f.curl=F),F=null,H&&n(H,"Function")&&(f.define=H),H=null,!b)){if(h[e]&&h[e]!=c)throw Error(e+" already exists");if(p[k]&&p[k]!=C)throw Error(k+" already exists");}h[e]=c;p[k]=C},b:function(a){function e(a,e){var k,h,b,m,f;for(f in a){b=a[f];n(b,"String")&&(b={path:a[f]}); +b.name=b.name||f;m=p;h=r(l(b.name));k=h.g;if(h=h.d)m=c[h],m||(m=c[h]=q(p),m.c=q(p.c),m.f=[]),delete a[f];h=b;var g=e,x=void 0;h.path=l(h.path||h.location||"");g&&(x=h.main||"./main","."==x.charAt(0)||(x="./"+x),h.P=d(x,h.name+"/"));h.b=h.config;h.b&&(h.b=q(p,h.b));h.V=k.split("/").length;k?(m.c[k]=h,m.f.push(k)):m.p=u.T(b.path,p)}}function k(a){var e=a.c;a.R=RegExp("^("+a.f.sort(function(a,h){return e[h].V-e[a].V}).join("|").replace(/\/|\./g,"\\$&")+")(?=\\/|$)");delete a.f}var h,p,c,b;"baseUrl"in +a&&(a.p=a.baseUrl);"main"in a&&(a.P=a.main);"preloads"in a&&(a.za=a.preloads);"pluginPath"in a&&(a.S=a.pluginPath);if("dontAddFileExt"in a||a.j)a.j=RegExp(a.dontAddFileExt||a.j);h=x;p=q(h,a);p.c=q(h.c);c=a.plugins||{};p.plugins=q(h.plugins);p.C=q(h.C,a.C);p.B=q(h.B,a.B);p.f=[];e(a.packages,!0);e(a.paths,!1);for(b in c)a=u.s(b+"!","",p),p.plugins[a.substr(0,a.length-1)]=c[b];c=p.plugins;for(b in c)if(c[b]=q(p,c[b]),a=c[b].f)c[b].f=a.concat(p.f),k(c[b]);for(b in h.c)p.c.hasOwnProperty(b)||p.f.push(b); +k(p);return p},o:function(a,e){var p,h,b,c;p=e.c;b=S.test(a)?a:a.replace(e.R,function(a){h=p[a]||{};c=h.b;return h.path||""});return{b:c||x,url:u.T(b,e)}},T:function(a,e){var p=e.p;return p&&!S.test(a)?l(p)+"/"+a:a},t:function(a,e){return a+((e||x).j.test(a)?"":".js")},m:function(a,e,k){var h=B.createElement("script");h.onload=h.onreadystatechange=function(k){k=k||f.event;if("load"==k.type||V[h.readyState])delete p[a.id],h.onload=h.onreadystatechange=h.onerror="",e()};h.onerror=function(){k(Error("Syntax or http error: "+ +a.url))};h.type=a.q||"text/javascript";h.charset="utf-8";h.async=!a.Q;h.src=a.url;p[a.id]=h;L.insertBefore(h,N);return h},M:function(a){var e=[],p;("string"==typeof a?a:a.toSource?a.toSource():a.toString()).replace(W,"").replace(X,function(a,b,c,d){d?p=p==d?G:p:p||e.push(c);return""});return e},fa:function(a){var e,p,h,b,c,d;c=a.length;h=a[c-1];b=n(h,"Function")?h.length:-1;2==c?n(a[0],"Array")?p=a[0]:e=a[0]:3==c&&(e=a[0],p=a[1]);!p&&0r.status?l(r.responseText):d(Error("fetchText() failed. status: "+r.statusText)))};r.send(null)}});define("curl/plugin/text",["./_fetchText"],function(f){function g(f){throw f;}return{load:function(n,l,d){f(l.toUrl(n),d,d.error||g)},cramPlugin:"../cram/text"}}); +define("curl/plugin/async",function(){return{load:function(f,g,n){function l(d){"function"==typeof n.error&&n.error(d)}g([f],function(d){"function"==typeof d.l?d.l(function(f){0==arguments.length&&(f=d);n(f)},l):n(d)},n.error||function(d){throw d;})},analyze:function(f,g,n){n(f)}}}); +(function(f){function g(){var b;b=m[A]("link");b.rel="stylesheet";b.type="text/css";return b}function n(b,c){b.onload=function(){I.load=I.load||!0;c()}}function l(b,c){b.onerror=function(){I.error=I.error||!0;c()}}function d(b,c,d){B.push({url:b,X:c,$:function(){d(Error(M))}});(b=t())&&r(b)}function r(b){var c,d;c=B.shift();d=b.styleSheet;c?(b.onload=function(){c.X(c.la);r(b)},b.onerror=function(){c.$();r(b)},c.la=d.imports[d.addImport(c.url)]):(b.onload=b.onerror=v,H.push(b))}function t(){var b; +b=H.shift();!b&&F.length 0; i -= 1) { + outerLoop: for (i = nameParts.length; i > 0; i -= 1) { nameSegment = nameParts.slice(0, i).join('/'); if (baseParts) { @@ -325,16 +327,12 @@ var requirejs, require, define; //Match, update name to the new value. foundMap = mapValue; foundI = i; - break; + break outerLoop; } } } } - if (foundMap) { - break; - } - //Check for a star map match, but just hold on to it, //if there is a shorter segment match later in a matching //config, then favor over this star map. @@ -355,7 +353,11 @@ var requirejs, require, define; } } - return name; + // If the name points to a package's name, use + // the package main instead. + pkgMain = getOwn(config.pkgs, name); + + return pkgMain ? pkgMain : name; } function removeScript(name) { @@ -548,7 +550,7 @@ var requirejs, require, define; //local var ref to defQueue, so cannot just reassign the one //on context. apsp.apply(defQueue, - [defQueue.length - 1, 0].concat(globalDefQueue)); + [defQueue.length, 0].concat(globalDefQueue)); globalDefQueue = []; } } @@ -579,15 +581,9 @@ var requirejs, require, define; id: mod.map.id, uri: mod.map.url, config: function () { - var c, - pkg = getOwn(config.pkgs, mod.map.id); - // For packages, only support config targeted - // at the main module. - c = pkg ? getOwn(config.config, mod.map.id + '/' + pkg.main) : - getOwn(config.config, mod.map.id); - return c || {}; + return getOwn(config.config, mod.map.id) || {}; }, - exports: defined[mod.map.id] + exports: handlers.exports(mod) }); } } @@ -628,7 +624,7 @@ var requirejs, require, define; } function checkLoaded() { - var map, modId, err, usingPathFallback, + var err, usingPathFallback, waitInterval = config.waitSeconds * 1000, //It is possible to disable the wait interval by using waitSeconds of 0. expired = waitInterval && (context.startTime + waitInterval) < new Date().getTime(), @@ -646,8 +642,8 @@ var requirejs, require, define; //Figure out the state of all the modules. eachProp(enabledRegistry, function (mod) { - map = mod.map; - modId = map.id; + var map = mod.map, + modId = map.id; //Skip things that are not enabled or in error state. if (!mod.enabled) { @@ -870,17 +866,14 @@ var requirejs, require, define; exports = context.execCb(id, factory, depExports, exports); } - if (this.map.isDefine) { - //If setting exports via 'module' is in play, - //favor that over return value and exports. After that, - //favor a non-undefined return value over exports use. + // Favor return value over exports. If node/cjs in play, + // then will not have a return value anyway. Favor + // module.exports assignment over exports object. + if (this.map.isDefine && exports === undefined) { cjsModule = this.module; - if (cjsModule && - cjsModule.exports !== undefined && - //Make sure it is not already the exports value - cjsModule.exports !== this.exports) { + if (cjsModule) { exports = cjsModule.exports; - } else if (exports === undefined && this.usingExports) { + } else if (this.usingExports) { //exports already set the defined value. exports = this.exports; } @@ -940,6 +933,7 @@ var requirejs, require, define; on(pluginMap, 'defined', bind(this, function (plugin) { var load, normalizedMap, normalizedMod, + bundleId = getOwn(bundlesMap, this.map.id), name = this.map.name, parentName = this.map.parentMap ? this.map.parentMap.name : null, localRequire = context.makeRequire(map.parentMap, { @@ -985,6 +979,14 @@ var requirejs, require, define; return; } + //If a paths config, then just load that file instead to + //resolve the plugin, as it is built into that paths layer. + if (bundleId) { + this.map.url = context.nameToUrl(bundleId); + this.load(); + return; + } + load = bind(this, function (value) { this.init([], function () { return value; }, null, { enabled: true @@ -1249,31 +1251,38 @@ var requirejs, require, define; } } - //Save off the paths and packages since they require special processing, + //Save off the paths since they require special processing, //they are additive. - var pkgs = config.pkgs, - shim = config.shim, + var shim = config.shim, objs = { paths: true, + bundles: true, config: true, map: true }; eachProp(cfg, function (value, prop) { if (objs[prop]) { - if (prop === 'map') { - if (!config.map) { - config.map = {}; - } - mixin(config[prop], value, true, true); - } else { - mixin(config[prop], value, true); + if (!config[prop]) { + config[prop] = {}; } + mixin(config[prop], value, true, true); } else { config[prop] = value; } }); + //Reverse map the bundles + if (cfg.bundles) { + eachProp(cfg.bundles, function (value, prop) { + each(value, function (v) { + if (v !== prop) { + bundlesMap[v] = prop; + } + }); + }); + } + //Merge shim if (cfg.shim) { eachProp(cfg.shim, function (value, id) { @@ -1294,29 +1303,25 @@ var requirejs, require, define; //Adjust packages if necessary. if (cfg.packages) { each(cfg.packages, function (pkgObj) { - var location; + var location, name; pkgObj = typeof pkgObj === 'string' ? { name: pkgObj } : pkgObj; + + name = pkgObj.name; location = pkgObj.location; + if (location) { + config.paths[name] = pkgObj.location; + } - //Create a brand new object on pkgs, since currentPackages can - //be passed in again, and config.pkgs is the internal transformed - //state for all package configs. - pkgs[pkgObj.name] = { - name: pkgObj.name, - location: location || pkgObj.name, - //Remove leading dot in main, so main paths are normalized, - //and remove any trailing .js, since different package - //envs have different conventions: some use a module name, - //some use a file name. - main: (pkgObj.main || 'main') - .replace(currDirRegExp, '') - .replace(jsSuffixRegExp, '') - }; + //Save pointer to main module ID for pkg name. + //Remove leading dot in main, so main paths are normalized, + //and remove any trailing .js, since different package + //envs have different conventions: some use a module name, + //some use a file name. + config.pkgs[name] = pkgObj.name + '/' + (pkgObj.main || 'main') + .replace(currDirRegExp, '') + .replace(jsSuffixRegExp, ''); }); - - //Done with modifications, assing packages back to context config - config.pkgs = pkgs; } //If there are any "waiting to execute" modules in the registry, @@ -1469,6 +1474,15 @@ var requirejs, require, define; delete urlFetched[map.url]; delete undefEvents[id]; + //Clean queued defines too. Go backwards + //in array so that the splices do not + //mess up the iteration. + eachReverse(defQueue, function(args, i) { + if(args[0] === id) { + defQueue.splice(i, 1); + } + }); + if (mod) { //Hold on to listeners in case the //module will be attempted to be reloaded @@ -1562,8 +1576,19 @@ var requirejs, require, define; * internal API, not a public one. Use toUrl for the public API. */ nameToUrl: function (moduleName, ext, skipExt) { - var paths, pkgs, pkg, pkgPath, syms, i, parentModule, url, - parentPath; + var paths, syms, i, parentModule, url, + parentPath, bundleId, + pkgMain = getOwn(config.pkgs, moduleName); + + if (pkgMain) { + moduleName = pkgMain; + } + + bundleId = getOwn(bundlesMap, moduleName); + + if (bundleId) { + return context.nameToUrl(bundleId, ext, skipExt); + } //If a colon is in the URL, it indicates a protocol is used and it is just //an URL to a file, or if it starts with a slash, contains a query arg (i.e. ?) @@ -1577,7 +1602,6 @@ var requirejs, require, define; } else { //A module that needs to be converted to a path. paths = config.paths; - pkgs = config.pkgs; syms = moduleName.split('/'); //For each module name segment, see if there is a path @@ -1585,7 +1609,7 @@ var requirejs, require, define; //and work up from it. for (i = syms.length; i > 0; i -= 1) { parentModule = syms.slice(0, i).join('/'); - pkg = getOwn(pkgs, parentModule); + parentPath = getOwn(paths, parentModule); if (parentPath) { //If an array, it means there are a few choices, @@ -1595,16 +1619,6 @@ var requirejs, require, define; } syms.splice(0, i, parentPath); break; - } else if (pkg) { - //If module name is just the package name, then looking - //for the main module. - if (moduleName === pkg.name) { - pkgPath = pkg.location + '/' + pkg.main; - } else { - pkgPath = pkg.location; - } - syms.splice(0, i, pkgPath); - break; } }