Skip to content
This repository was archived by the owner on Jan 24, 2019. It is now read-only.

Commit d485f92

Browse files
committed
refine dev level
1 parent f970fbf commit d485f92

File tree

2 files changed

+44
-19
lines changed

2 files changed

+44
-19
lines changed

js.js

Lines changed: 43 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
$js - asynchronous module definition framework
33
or just simple lightweight javascript dependencies manager
44
5-
@version 4.8
5+
@version 5.0
66
@link http://github.com/redcatphp/js/
77
@author Jo Surikat <jo@surikat.pro>
88
@website http://redcatphp.com
@@ -32,19 +32,35 @@
3232
return true;
3333
};
3434
var ts = (new Date().getTime()).toString();
35-
var cacheFix = function(fileName,dev,min,ext,cdn){
36-
if(dev||min){
37-
var relative = fileName.indexOf('//')<0||(cdn&&fileName.indexOf(cdn)===0);
38-
if(min){
39-
if(relative&&fileName.indexOf('.min.'+ext)<0&&fileName.indexOf('.'+ext)){
40-
var p = fileName.lastIndexOf('.'+ext);
41-
if(p>-1)
42-
fileName = fileName.substr(0,p)+'.min'+fileName.substr(p);
43-
}
35+
var devOverride = function(u,ext){
36+
var ref, dev;
37+
if(ext=='js') ref = $js;
38+
else ref = $css;
39+
dev = ref.dev;
40+
if(dev){
41+
if(ref.inProdFiles.indexOf(u)!==-1){
42+
dev = false;
4443
}
45-
else{
46-
if(relative&&fileName.indexOf('_t=')<0)
47-
fileName += (fileName.indexOf('?')<0?'?':'&')+'_t='+ts;
44+
}
45+
else{
46+
if(ref.inDevFiles.indexOf(u)!==-1){
47+
dev = true;
48+
}
49+
}
50+
return dev;
51+
};
52+
var cacheFix = function(fileName,dev,min,ext,cdn){
53+
if(!min&&!dev) return fileName;
54+
if(!fileName.indexOf('//')<0||(cdn&&fileName.indexOf(cdn)===0)) return; //relative
55+
if(dev){
56+
if(fileName.indexOf('_t=')<0)
57+
fileName += (fileName.indexOf('?')<0?'?':'&')+'_t='+ts;
58+
}
59+
else if(min){
60+
if(fileName.indexOf('.min.'+ext)<0&&fileName.indexOf('.'+ext)){
61+
var p = fileName.lastIndexOf('.'+ext);
62+
if(p>-1)
63+
fileName = fileName.substr(0,p)+'.min'+fileName.substr(p);
4864
}
4965
}
5066
return fileName;
@@ -96,15 +112,15 @@
96112
};
97113
return callback;
98114
};
99-
var createScript = function(u){
115+
var createScript = function(u,dev){
100116
var callback = makeSrcCallback(u);
101117
var s = d.createElement('script');
102118
d.type = 'text/javascript';
103119
d.body.appendChild(s);
104120
s.onload = callback;
105121
s.onreadystatechange = function(){if(callback&&this.readyState==='loaded'){callback();}}; //old browsers
106122
s.setAttribute('async','async');
107-
s.src = cacheFix(u,$js.dev,$js.min,'js',$js.cdn);
123+
s.src = cacheFix(u,dev,$js.min,'js',$js.cdn);
108124
};
109125
var resolve = function(u, c){
110126
if(typeof(c)=='function') c();
@@ -124,10 +140,11 @@
124140
c();
125141
return;
126142
}
143+
var dev = devOverride(u,'js');
127144
u = getSrc(u);
128145
if(!requiring[u]){
129146
requiring[u] = [];
130-
createScript(u);
147+
createScript(u,dev);
131148
}
132149
if(typeof(c)=='function')
133150
requiring[u].push(c);
@@ -542,7 +559,7 @@
542559
httpRequest = new ActiveXObject("Microsoft.XMLHTTP");
543560
}
544561
}
545-
httpRequest.open('HEAD', cacheFix(url,$js.dev,$js.min,'js',$js.cdn), true);
562+
httpRequest.open('HEAD', cacheFix(url,devOverride(s,'js'),$js.min,'js',$js.cdn), true);
546563
httpRequest.onreadystatechange = function(){
547564
if(httpRequest.readyState==4){
548565
if(httpRequest.status!=404){
@@ -640,6 +657,8 @@
640657
js.pathSuffix = '.js';
641658
js.min = false;
642659
js.cdn = false;
660+
js.inProdFiles = [];
661+
js.inDevFiles = [];
643662

644663
//methods
645664
js.alias = function(alias,concrete){
@@ -774,6 +793,10 @@
774793
$js.dependencies(o.dependencies);
775794
if(o.call)
776795
$js(o.call);
796+
if(o.inProdFiles)
797+
$js.inProdFiles = o.inProdFiles;
798+
if(o.inDevFiles)
799+
$js.inDevFiles = o.inDevFiles;
777800
};
778801
js.intercept = function(){
779802
var interceptor = {};
@@ -827,7 +850,7 @@
827850
style.rel = 'stylesheet';
828851
if(media)
829852
style.media = media;
830-
style.href = cacheFix(fileName,$css.dev,$css.min,'css',$css.cdn);
853+
style.href = cacheFix(fileName,devOverride(s,'css'),$css.min,'css',$css.cdn);
831854
d.getElementsByTagName('head')[0].appendChild(style);
832855
}
833856
}
@@ -838,6 +861,8 @@
838861
css.pathSuffix = '.css';
839862
css.min = false;
840863
css.cdn = false;
864+
css.inProdFiles = [];
865+
css.inDevFiles = [];
841866
return css;
842867
})();
843868

0 commit comments

Comments
 (0)