|
2 | 2 | $js - asynchronous module definition framework
|
3 | 3 | or just simple lightweight javascript dependencies manager
|
4 | 4 |
|
5 |
| - @version 4.2 |
| 5 | + @version 4.3 |
6 | 6 | @link http://github.com/redcatphp/js/
|
7 | 7 | @author Jo Surikat <jo@surikat.pro>
|
8 | 8 | @website http://redcatphp.com
|
|
189 | 189 | }
|
190 | 190 | }
|
191 | 191 | }
|
192 |
| - } |
| 192 | + } |
193 | 193 | return deps;
|
194 | 194 | };
|
195 | 195 | var resolveDepCalls = function(u){
|
|
302 | 302 | }
|
303 | 303 | }
|
304 | 304 | if(ok){
|
305 |
| - $js(dp,(function(){ |
| 305 | + js(dp,(function(){ |
306 | 306 | var dpz = dp.toString();
|
307 | 307 | return function(){
|
308 | 308 | r(dpz,depTree,depMap,rio,arrSrc,c);
|
|
387 | 387 | u.push(getSrc(uo[k]));
|
388 | 388 | }
|
389 | 389 | u = u.sort().toString();
|
390 |
| - $js(s,function(){ |
| 390 | + js(s,function(){ |
391 | 391 | requiredGroups[i].push(getSrc(s));
|
392 | 392 | if(requiredGroups[i].sort().toString()==u){
|
393 | 393 | if(typeof(c)=='function')
|
|
396 | 396 | },false,deps);
|
397 | 397 | };
|
398 | 398 | var asyncJsObject = function(u,c){
|
| 399 | + |
399 | 400 | requiredGroups.push([]);
|
400 | 401 | var arr = resolveAsyncArr(u);
|
401 | 402 | var deps = resolveDeps(u,arr);
|
|
445 | 446 | }
|
446 | 447 | if(typeof(u[g])=='function')
|
447 | 448 | ev = 'u["'+g+'"]();'+ev;
|
448 |
| - ev = '$js("'+g+'",function(){r("'+g+'",t,o,'+rio+',h,b);'+ev+'},false);'; |
| 449 | + ev = 'js("'+g+'",function(){r("'+g+'",t,o,'+rio+',h,b);'+ev+'},false);'; |
449 | 450 | }
|
450 |
| - eval(ev); |
| 451 | + if(ev) eval(ev); |
451 | 452 | };
|
452 | 453 | var syncJsObject = function(u,c){
|
453 | 454 | var tops = depsToTops(resolveDeps(u));
|
|
480 | 481 | }
|
481 | 482 | if(typeof(u[d])=='function')
|
482 | 483 | ev = 'u["'+d+'"]();'+ev;
|
483 |
| - ev = '$js("'+d+'",function(){'+ev+'});'; |
| 484 | + ev = 'js("'+d+'",function(){'+ev+'});'; |
484 | 485 | }
|
485 | 486 | }
|
486 | 487 | eval(ev);
|
|
498 | 499 | sync = sync?true:false;
|
499 | 500 | if(s instanceof Array){
|
500 | 501 | s.reverse();
|
501 |
| - var ev = '$js(s'+(sync?',true':'')+',y);'; |
| 502 | + var ev = 'js(s'+(sync?',true':'')+',y);'; |
502 | 503 | for(var i = 0; i < s.length; i++){
|
503 | 504 | ev = '$js.onExists("'+s[i]+'",function(){'+ev+'},n);';
|
504 | 505 | }
|
|
530 | 531 | if(httpRequest.readyState==4){
|
531 | 532 | if(httpRequest.status!=404){
|
532 | 533 | existsRegistry[s] = true;
|
533 |
| - $js(s,sync,y); |
| 534 | + js(s,sync,y); |
534 | 535 | }
|
535 | 536 | else{
|
536 | 537 | existsRegistry[s] = false;
|
|
540 | 541 | };
|
541 | 542 | httpRequest.send();
|
542 | 543 | };
|
543 |
| - $js = (function(){ |
| 544 | + |
| 545 | + var js = function(){ |
| 546 | + //mixed args |
| 547 | + var u,c,sync,deps = true; |
| 548 | + for(var i = 0; i < arguments.length; i++){ |
| 549 | + switch(typeof(arguments[i])){ |
| 550 | + case 'boolean': |
| 551 | + if(typeof(sync)=='undefined') |
| 552 | + sync = arguments[i]; |
| 553 | + else |
| 554 | + deps = arguments[i]; |
| 555 | + break; |
| 556 | + case 'function': |
| 557 | + c = arguments[i]; |
| 558 | + break; |
| 559 | + case 'string': |
| 560 | + case 'object': |
| 561 | + u = arguments[i]; |
| 562 | + break; |
| 563 | + } |
| 564 | + } |
| 565 | + if(typeof(sync)=='undefined') |
| 566 | + sync = !$js.async; |
544 | 567 |
|
545 |
| - //invoker |
546 |
| - var js = function(){ |
547 |
| - //mixed args |
548 |
| - var u,c,sync,deps = true; |
549 |
| - for(var i = 0; i < arguments.length; i++){ |
550 |
| - switch(typeof(arguments[i])){ |
551 |
| - case 'boolean': |
552 |
| - if(typeof(sync)=='undefined') |
553 |
| - sync = arguments[i]; |
554 |
| - else |
555 |
| - deps = arguments[i]; |
556 |
| - break; |
557 |
| - case 'function': |
558 |
| - c = arguments[i]; |
559 |
| - break; |
560 |
| - case 'string': |
561 |
| - case 'object': |
562 |
| - u = arguments[i]; |
563 |
| - break; |
564 |
| - } |
| 568 | + //alias |
| 569 | + u = resolveAlias(u); |
| 570 | + |
| 571 | + //handle |
| 572 | + if(typeof(u)=='object'){ |
| 573 | + if(sync) |
| 574 | + syncJsObject(u,c); |
| 575 | + else |
| 576 | + asyncJsObject(u,c); |
| 577 | + } |
| 578 | + else{ |
| 579 | + if(typeof(u)=='function'){ |
| 580 | + c = u; |
| 581 | + u = 0; |
565 | 582 | }
|
566 |
| - if(typeof(sync)=='undefined') |
567 |
| - sync = !$js.async; |
568 |
| - |
569 |
| - if(!windowLoaded&&typeof(u)=='string'&&!deps) |
570 |
| - u = [u]; |
571 |
| - |
572 |
| - //alias |
573 |
| - u = resolveAlias(u); |
574 |
| - |
575 |
| - //handle |
576 |
| - if(typeof(u)=='object'){ |
577 |
| - if(sync) |
578 |
| - syncJsObject(u,c); |
579 |
| - else |
580 |
| - asyncJsObject(u,c); |
| 583 | + if(deps&&typeof($js.dependenciesMap[u])!='undefined'){ |
| 584 | + asyncJsObject($js.dependenciesMap[u],function(){ |
| 585 | + apt(u,c,!sync); |
| 586 | + }); |
581 | 587 | }
|
582 | 588 | else{
|
583 |
| - if(typeof(u)=='function'){ |
584 |
| - c = u; |
585 |
| - u = 0; |
586 |
| - } |
587 |
| - if(deps&&typeof($js.dependenciesMap[u])!='undefined'){ |
588 |
| - asyncJsObject($js.dependenciesMap[u],function(){ |
589 |
| - $js(u,c,sync,false); |
590 |
| - }); |
591 |
| - } |
592 |
| - else{ |
593 |
| - apt(u,c,!sync); |
594 |
| - } |
| 589 | + apt(u,c,!sync); |
595 | 590 | }
|
596 |
| - |
597 |
| - //chainable |
598 |
| - return function(){ |
599 |
| - var a = arguments; |
600 |
| - return $js(u,function(){ |
601 |
| - $js.apply(null,a); |
602 |
| - }); |
603 |
| - }; |
| 591 | + } |
| 592 | + |
| 593 | + //chainable |
| 594 | + return function(){ |
| 595 | + var a = arguments; |
| 596 | + return js(u,function(){ |
| 597 | + js.apply(null,a); |
| 598 | + }); |
| 599 | + }; |
| 600 | + }; |
| 601 | + $js = (function(j){ |
| 602 | + |
| 603 | + //invoker |
| 604 | + var js = function(){ |
| 605 | + if(typeof(arguments[0])=='string') |
| 606 | + arguments[0] = [arguments[0]]; |
| 607 | + j.apply(null,arguments); |
604 | 608 | };
|
605 | 609 |
|
606 | 610 | //vars init
|
|
638 | 642 | }
|
639 | 643 | var interceptor = {};
|
640 | 644 | intercepting = interceptor;
|
641 |
| - $js(obj,sync,function(){ |
| 645 | + js(obj,sync,function(){ |
642 | 646 | if(!interceptor.callback){
|
643 | 647 | intercepting = false;
|
644 | 648 | }
|
|
681 | 685 | if(obj){
|
682 | 686 | var interceptor = {};
|
683 | 687 | intercepting = interceptor;
|
684 |
| - var when = $js(obj,sync,function(){ |
| 688 | + var when = js(obj,sync,function(){ |
685 | 689 | if(id){
|
686 | 690 | js.modules[getSrc(id)] = mod;
|
687 | 691 | delete(waitingModule[id]);
|
|
734 | 738 | }
|
735 | 739 | };
|
736 | 740 | js.invokeArray = function(mod,args){
|
737 |
| - return $js(mod,function(){ |
| 741 | + return js(mod,function(){ |
738 | 742 | $js.module(mod).apply(null,args);
|
739 | 743 | });
|
740 | 744 | };
|
|
750 | 754 | if(o.dependencies)
|
751 | 755 | $js.dependencies(o.dependencies);
|
752 | 756 | if(o.call)
|
753 |
| - $js(o.call); |
| 757 | + js(o.call); |
754 | 758 | };
|
755 | 759 | js.intercept = function(){
|
756 | 760 | var interceptor = {};
|
|
765 | 769 | };
|
766 | 770 | };
|
767 | 771 | return js;
|
768 |
| - })(); |
| 772 | + })(js); |
| 773 | + |
769 | 774 | var y = {};
|
770 | 775 | var keysOf = function(o){
|
771 | 776 | var a = [];
|
|
825 | 830 | }
|
826 | 831 | }
|
827 | 832 |
|
828 |
| - var windowLoaded = false; |
829 | 833 | var loadAsync = function(k,s){
|
830 | 834 | x(k,function(){
|
831 | 835 | for(var i = 0; i < s.length; i++){
|
|
835 | 839 | });
|
836 | 840 | };
|
837 | 841 | var y = {};
|
838 |
| - var load = function(){ |
839 |
| - windowLoaded = true; |
| 842 | + var load = function(){ |
840 | 843 | apt = x;
|
841 | 844 | for(var k in scripts[0]){
|
842 | 845 | if(!scripts[0].hasOwnProperty(k)) continue;
|
|
0 commit comments