Comparing version 3.4.0 to 3.5.0
{ | ||
"name": "loadjs", | ||
"version": "3.4.0", | ||
"version": "3.5.0", | ||
"license": "MIT", | ||
@@ -5,0 +5,0 @@ "authors": [ |
# LoadJS Changelog | ||
## 3.5.0 - March 28, 2017 | ||
* Added support for "css!" prefix to force treating file as stylesheet | ||
* Added support for DOM insertion bypass if `before` callback returns `false` | ||
## 3.4.0 - February 23, 2017 | ||
@@ -4,0 +9,0 @@ |
@@ -96,3 +96,3 @@ loadjs = (function () { | ||
if (/\.css$/.test(path)) { | ||
if (/(^css!|\.css$)/.test(path)) { | ||
isCss = true; | ||
@@ -103,3 +103,3 @@ | ||
e.rel = 'stylesheet'; | ||
e.href = path; | ||
e.href = path.replace(/^css!/, ''); // remove "css!" prefix | ||
} else { | ||
@@ -142,7 +142,4 @@ // javascript | ||
// execute before callback | ||
beforeCallbackFn(path, e); | ||
// add to document | ||
doc.head.appendChild(e); | ||
// add to document (unless callback returns `false`) | ||
if (beforeCallbackFn(path, e) !== false) doc.head.appendChild(e); | ||
} | ||
@@ -149,0 +146,0 @@ |
@@ -1,1 +0,1 @@ | ||
loadjs=function(){function n(n,e){n=n.push?n:[n];var t,r,i,o,c=[],s=n.length,h=s;for(t=function(n,t){t.length&&c.push(n),h--,h||e(c)};s--;)r=n[s],i=u[r],i?t(r,i):(o=f[r]=f[r]||[],o.push(t))}function e(n,e){if(n){var t=f[n];if(u[n]=e,t)for(;t.length;)t[0](n,e),t.splice(0,1)}}function t(n,e,r,i){var c,u,f=document,s=r.async,h=(r.numRetries||0)+1,a=r.before||o;i=i||0,/\.css$/.test(n)?(c=!0,u=f.createElement("link"),u.rel="stylesheet",u.href=n):(u=f.createElement("script"),u.src=n,u.async=void 0===s||s),u.onload=u.onerror=u.onbeforeload=function(o){var f=o.type[0];if(c&&"hideFocus"in u)try{u.sheet.cssText.length||(f="e")}catch(n){f="e"}return"e"==f&&(i+=1,i<h)?t(n,e,r,i):void e(n,f,o.defaultPrevented)},a(n,u),f.head.appendChild(u)}function r(n,e,r){n=n.push?n:[n];var i,o,c=n.length,u=c,f=[];for(i=function(n,t,r){if("e"==t&&f.push(n),"b"==t){if(!r)return;f.push(n)}c--,c||e(f)},o=0;o<u;o++)t(n[o],i,r)}function i(n,t,i){var u,f;if(t&&t.trim&&(u=t),f=(u?i:t)||{},u){if(u in c)throw"LoadJS";c[u]=!0}r(n,function(n){n.length?(f.error||o)(n):(f.success||o)(),e(u,n)},f)}var o=function(){},c={},u={},f={};return i.ready=function(e,t){return n(e,function(n){n.length?(t.error||o)(n):(t.success||o)()}),i},i.done=function(n){e(n,[])},i.reset=function(){c={},u={},f={}},i.isDefined=function(n){return n in c},i}(); | ||
loadjs=function(){function e(e,n){e=e.push?e:[e];var t,r,i,c,o=[],f=e.length,a=f;for(t=function(e,t){t.length&&o.push(e),--a||n(o)};f--;)r=e[f],i=s[r],i?t(r,i):(c=u[r]=u[r]||[],c.push(t))}function n(e,n){if(e){var t=u[e];if(s[e]=n,t)for(;t.length;)t[0](e,n),t.splice(0,1)}}function t(e,n,r,i){var o,s,u=document,f=r.async,a=(r.numRetries||0)+1,h=r.before||c;i=i||0,/(^css!|\.css$)/.test(e)?(o=!0,s=u.createElement("link"),s.rel="stylesheet",s.href=e.replace(/^css!/,"")):(s=u.createElement("script"),s.src=e,s.async=void 0===f||f),s.onload=s.onerror=s.onbeforeload=function(c){var u=c.type[0];if(o&&"hideFocus"in s)try{s.sheet.cssText.length||(u="e")}catch(e){u="e"}if("e"==u&&(i+=1)<a)return t(e,n,r,i);n(e,u,c.defaultPrevented)},h(e,s)!==!1&&u.head.appendChild(s)}function r(e,n,r){e=e.push?e:[e];var i,c,o=e.length,s=o,u=[];for(i=function(e,t,r){if("e"==t&&u.push(e),"b"==t){if(!r)return;u.push(e)}--o||n(u)},c=0;c<s;c++)t(e[c],i,r)}function i(e,t,i){var s,u;if(t&&t.trim&&(s=t),u=(s?i:t)||{},s){if(s in o)throw"LoadJS";o[s]=!0}r(e,function(e){e.length?(u.error||c)(e):(u.success||c)(),n(s,e)},u)}var c=function(){},o={},s={},u={};return i.ready=function(n,t){return e(n,function(e){e.length?(t.error||c)(e):(t.success||c)()}),i},i.done=function(e){n(e,[])},i.reset=function(){o={},s={},u={}},i.isDefined=function(e){return e in o},i}(); |
@@ -104,3 +104,3 @@ (function(root, factory) { | ||
if (/\.css$/.test(path)) { | ||
if (/(^css!|\.css$)/.test(path)) { | ||
isCss = true; | ||
@@ -111,3 +111,3 @@ | ||
e.rel = 'stylesheet'; | ||
e.href = path; | ||
e.href = path.replace(/^css!/, ''); // remove "css!" prefix | ||
} else { | ||
@@ -150,7 +150,4 @@ // javascript | ||
// execute before callback | ||
beforeCallbackFn(path, e); | ||
// add to document | ||
doc.head.appendChild(e); | ||
// add to document (unless callback returns `false`) | ||
if (beforeCallbackFn(path, e) !== false) doc.head.appendChild(e); | ||
} | ||
@@ -157,0 +154,0 @@ |
@@ -96,3 +96,3 @@ loadjs = (function () { | ||
if (/\.css$/.test(path)) { | ||
if (/(^css!|\.css$)/.test(path)) { | ||
isCss = true; | ||
@@ -103,3 +103,3 @@ | ||
e.rel = 'stylesheet'; | ||
e.href = path; | ||
e.href = path.replace(/^css!/, ''); // remove "css!" prefix | ||
} else { | ||
@@ -142,7 +142,4 @@ // javascript | ||
// execute before callback | ||
beforeCallbackFn(path, e); | ||
// add to document | ||
doc.head.appendChild(e); | ||
// add to document (unless callback returns `false`) | ||
if (beforeCallbackFn(path, e) !== false) doc.head.appendChild(e); | ||
} | ||
@@ -149,0 +146,0 @@ |
@@ -1,1 +0,1 @@ | ||
loadjs=function(){function n(n,e){n=n.push?n:[n];var t,r,i,o,c=[],s=n.length,h=s;for(t=function(n,t){t.length&&c.push(n),h--,h||e(c)};s--;)r=n[s],i=u[r],i?t(r,i):(o=f[r]=f[r]||[],o.push(t))}function e(n,e){if(n){var t=f[n];if(u[n]=e,t)for(;t.length;)t[0](n,e),t.splice(0,1)}}function t(n,e,r,i){var c,u,f=document,s=r.async,h=(r.numRetries||0)+1,a=r.before||o;i=i||0,/\.css$/.test(n)?(c=!0,u=f.createElement("link"),u.rel="stylesheet",u.href=n):(u=f.createElement("script"),u.src=n,u.async=void 0===s||s),u.onload=u.onerror=u.onbeforeload=function(o){var f=o.type[0];if(c&&"hideFocus"in u)try{u.sheet.cssText.length||(f="e")}catch(n){f="e"}return"e"==f&&(i+=1,i<h)?t(n,e,r,i):void e(n,f,o.defaultPrevented)},a(n,u),f.head.appendChild(u)}function r(n,e,r){n=n.push?n:[n];var i,o,c=n.length,u=c,f=[];for(i=function(n,t,r){if("e"==t&&f.push(n),"b"==t){if(!r)return;f.push(n)}c--,c||e(f)},o=0;o<u;o++)t(n[o],i,r)}function i(n,t,i){var u,f;if(t&&t.trim&&(u=t),f=(u?i:t)||{},u){if(u in c)throw"LoadJS";c[u]=!0}r(n,function(n){n.length?(f.error||o)(n):(f.success||o)(),e(u,n)},f)}var o=function(){},c={},u={},f={};return i.ready=function(e,t){return n(e,function(n){n.length?(t.error||o)(n):(t.success||o)()}),i},i.done=function(n){e(n,[])},i.reset=function(){c={},u={},f={}},i.isDefined=function(n){return n in c},i}(); | ||
loadjs=function(){function e(e,n){e=e.push?e:[e];var t,r,i,c,o=[],f=e.length,a=f;for(t=function(e,t){t.length&&o.push(e),--a||n(o)};f--;)r=e[f],i=s[r],i?t(r,i):(c=u[r]=u[r]||[],c.push(t))}function n(e,n){if(e){var t=u[e];if(s[e]=n,t)for(;t.length;)t[0](e,n),t.splice(0,1)}}function t(e,n,r,i){var o,s,u=document,f=r.async,a=(r.numRetries||0)+1,h=r.before||c;i=i||0,/(^css!|\.css$)/.test(e)?(o=!0,s=u.createElement("link"),s.rel="stylesheet",s.href=e.replace(/^css!/,"")):(s=u.createElement("script"),s.src=e,s.async=void 0===f||f),s.onload=s.onerror=s.onbeforeload=function(c){var u=c.type[0];if(o&&"hideFocus"in s)try{s.sheet.cssText.length||(u="e")}catch(e){u="e"}if("e"==u&&(i+=1)<a)return t(e,n,r,i);n(e,u,c.defaultPrevented)},h(e,s)!==!1&&u.head.appendChild(s)}function r(e,n,r){e=e.push?e:[e];var i,c,o=e.length,s=o,u=[];for(i=function(e,t,r){if("e"==t&&u.push(e),"b"==t){if(!r)return;u.push(e)}--o||n(u)},c=0;c<s;c++)t(e[c],i,r)}function i(e,t,i){var s,u;if(t&&t.trim&&(s=t),u=(s?i:t)||{},s){if(s in o)throw"LoadJS";o[s]=!0}r(e,function(e){e.length?(u.error||c)(e):(u.success||c)(),n(s,e)},u)}var c=function(){},o={},s={},u={};return i.ready=function(n,t){return e(n,function(e){e.length?(t.error||c)(e):(t.success||c)()}),i},i.done=function(e){n(e,[])},i.reset=function(){o={},s={},u={}},i.isDefined=function(e){return e in o},i}(); |
{ | ||
"name": "loadjs", | ||
"version": "3.4.0", | ||
"version": "3.5.0", | ||
"license": "MIT", | ||
@@ -34,6 +34,6 @@ "description": "Tiny async loader for modern browsers", | ||
"gulp-rename": "1.2.2", | ||
"gulp-uglify": "2.0.1", | ||
"gulp-umd": "^0.2.0", | ||
"gulp-uglify": "2.1.2", | ||
"gulp-umd": "^0.2.1", | ||
"jshint": "^2.9.4" | ||
} | ||
} |
@@ -5,3 +5,3 @@ # LoadJS | ||
LoadJS is a tiny async loader for modern browsers (724 bytes). | ||
LoadJS is a tiny async loader for modern browsers (738 bytes). | ||
@@ -15,3 +15,3 @@ [![Dependency Status](https://david-dm.org/muicss/loadjs.svg)](https://david-dm.org/muicss/loadjs) | ||
LoadJS is based on the excellent [$script](https://github.com/ded/script.js) library by [Dustin Diaz](https://github.com/ded). We kept the behavior of the library the same but we re-wrote the code from scratch to add support for success/error callbacks and to optimize the library for modern browsers. LoadJS is 724 bytes (minified + gzipped). | ||
LoadJS is based on the excellent [$script](https://github.com/ded/script.js) library by [Dustin Diaz](https://github.com/ded). We kept the behavior of the library the same but we re-wrote the code from scratch to add support for success/error callbacks and to optimize the library for modern browsers. LoadJS is 738 bytes (minified + gzipped). | ||
@@ -104,2 +104,10 @@ Here's an example of what you can do with LoadJS: | ||
1. Force treating file as CSS stylesheet | ||
```javascript | ||
loadjs(['css!/path/to/cssfile.custom'], { | ||
success: function() { /* cssfile.custom loaded as stylesheet */ } | ||
}); | ||
``` | ||
1. Add a bundle id | ||
@@ -155,2 +163,17 @@ | ||
1. Bypass LoadJS default DOM insertion mechanism (DOM `<head>`) | ||
```javascript | ||
loadjs(['/path/to/foo.js'], { | ||
success: function() {}, | ||
error: function(pathsNotFound) {}, | ||
before: function(path, scriptEl) { | ||
document.body.appendChild(scriptEl); | ||
/* return `false` to bypass default DOM insertion mechanism */ | ||
return false; | ||
} | ||
}); | ||
``` | ||
1. Execute a callback after bundle finishes loading | ||
@@ -157,0 +180,0 @@ |
@@ -95,3 +95,3 @@ /** | ||
if (/\.css$/.test(path)) { | ||
if (/(^css!|\.css$)/.test(path)) { | ||
isCss = true; | ||
@@ -102,3 +102,3 @@ | ||
e.rel = 'stylesheet'; | ||
e.href = path; | ||
e.href = path.replace(/^css!/, ''); // remove "css!" prefix | ||
} else { | ||
@@ -141,7 +141,4 @@ // javascript | ||
// execute before callback | ||
beforeCallbackFn(path, e); | ||
// add to document | ||
doc.head.appendChild(e); | ||
// add to document (unless callback returns `false`) | ||
if (beforeCallbackFn(path, e) !== false) doc.head.appendChild(e); | ||
} | ||
@@ -148,0 +145,0 @@ |
@@ -96,3 +96,3 @@ loadjs = (function () { | ||
if (/\.css$/.test(path)) { | ||
if (/(^css!|\.css$)/.test(path)) { | ||
isCss = true; | ||
@@ -103,3 +103,3 @@ | ||
e.rel = 'stylesheet'; | ||
e.href = path; | ||
e.href = path.replace(/^css!/, ''); // remove "css!" prefix | ||
} else { | ||
@@ -142,7 +142,4 @@ // javascript | ||
// execute before callback | ||
beforeCallbackFn(path, e); | ||
// add to document | ||
doc.head.appendChild(e); | ||
// add to document (unless callback returns `false`) | ||
if (beforeCallbackFn(path, e) !== false) doc.head.appendChild(e); | ||
} | ||
@@ -149,0 +146,0 @@ |
@@ -1,1 +0,1 @@ | ||
loadjs=function(){function n(n,e){n=n.push?n:[n];var t,r,i,o,c=[],s=n.length,h=s;for(t=function(n,t){t.length&&c.push(n),h--,h||e(c)};s--;)r=n[s],i=u[r],i?t(r,i):(o=f[r]=f[r]||[],o.push(t))}function e(n,e){if(n){var t=f[n];if(u[n]=e,t)for(;t.length;)t[0](n,e),t.splice(0,1)}}function t(n,e,r,i){var c,u,f=document,s=r.async,h=(r.numRetries||0)+1,a=r.before||o;i=i||0,/\.css$/.test(n)?(c=!0,u=f.createElement("link"),u.rel="stylesheet",u.href=n):(u=f.createElement("script"),u.src=n,u.async=void 0===s||s),u.onload=u.onerror=u.onbeforeload=function(o){var f=o.type[0];if(c&&"hideFocus"in u)try{u.sheet.cssText.length||(f="e")}catch(n){f="e"}return"e"==f&&(i+=1,i<h)?t(n,e,r,i):void e(n,f,o.defaultPrevented)},a(n,u),f.head.appendChild(u)}function r(n,e,r){n=n.push?n:[n];var i,o,c=n.length,u=c,f=[];for(i=function(n,t,r){if("e"==t&&f.push(n),"b"==t){if(!r)return;f.push(n)}c--,c||e(f)},o=0;o<u;o++)t(n[o],i,r)}function i(n,t,i){var u,f;if(t&&t.trim&&(u=t),f=(u?i:t)||{},u){if(u in c)throw"LoadJS";c[u]=!0}r(n,function(n){n.length?(f.error||o)(n):(f.success||o)(),e(u,n)},f)}var o=function(){},c={},u={},f={};return i.ready=function(e,t){return n(e,function(n){n.length?(t.error||o)(n):(t.success||o)()}),i},i.done=function(n){e(n,[])},i.reset=function(){c={},u={},f={}},i.isDefined=function(n){return n in c},i}(); | ||
loadjs=function(){function e(e,n){e=e.push?e:[e];var t,r,i,c,o=[],f=e.length,a=f;for(t=function(e,t){t.length&&o.push(e),--a||n(o)};f--;)r=e[f],i=s[r],i?t(r,i):(c=u[r]=u[r]||[],c.push(t))}function n(e,n){if(e){var t=u[e];if(s[e]=n,t)for(;t.length;)t[0](e,n),t.splice(0,1)}}function t(e,n,r,i){var o,s,u=document,f=r.async,a=(r.numRetries||0)+1,h=r.before||c;i=i||0,/(^css!|\.css$)/.test(e)?(o=!0,s=u.createElement("link"),s.rel="stylesheet",s.href=e.replace(/^css!/,"")):(s=u.createElement("script"),s.src=e,s.async=void 0===f||f),s.onload=s.onerror=s.onbeforeload=function(c){var u=c.type[0];if(o&&"hideFocus"in s)try{s.sheet.cssText.length||(u="e")}catch(e){u="e"}if("e"==u&&(i+=1)<a)return t(e,n,r,i);n(e,u,c.defaultPrevented)},h(e,s)!==!1&&u.head.appendChild(s)}function r(e,n,r){e=e.push?e:[e];var i,c,o=e.length,s=o,u=[];for(i=function(e,t,r){if("e"==t&&u.push(e),"b"==t){if(!r)return;u.push(e)}--o||n(u)},c=0;c<s;c++)t(e[c],i,r)}function i(e,t,i){var s,u;if(t&&t.trim&&(s=t),u=(s?i:t)||{},s){if(s in o)throw"LoadJS";o[s]=!0}r(e,function(e){e.length?(u.error||c)(e):(u.success||c)(),n(s,e)},u)}var c=function(){},o={},s={},u={};return i.ready=function(n,t){return e(n,function(e){e.length?(t.error||c)(e):(t.success||c)()}),i},i.done=function(e){n(e,[])},i.reset=function(){o={},s={},u={}},i.isDefined=function(e){return e in o},i}(); |
@@ -67,3 +67,3 @@ /** | ||
}, | ||
success: function () { | ||
success: function() { | ||
assert.equal(scriptTags[0].path, 'assets/file1.js'); | ||
@@ -81,2 +81,23 @@ assert.equal(scriptTags[1].path, 'assets/file2.js'); | ||
it('should bypass insertion if before returns `false`', function(done) { | ||
loadjs(['assets/file1.js'], { | ||
before: function(path, el) { | ||
// append to body (instead of head) | ||
document.body.appendChild(el); | ||
// return `false` to bypass default DOM insertion | ||
return false; | ||
}, | ||
success: function() { | ||
assert.equal(pathsLoaded['file1.js'], true); | ||
// verify that file was added to body | ||
document.body.querySelectorAll('script').forEach(function(el) { | ||
if (el.src.indexOf('assets/file1.js') !== -1) done(); | ||
}); | ||
} | ||
}); | ||
}); | ||
it('should call success callback on two valid paths', function(done) { | ||
@@ -267,2 +288,20 @@ loadjs(['assets/file1.js', 'assets/file2.js'], { | ||
it('should support forced "css!" files', function(done) { | ||
this.timeout(0); | ||
loadjs(['css!assets/cssfile.custom'], { | ||
success: function() { | ||
// loop through files | ||
var els = document.getElementsByTagName('link'), | ||
i = els.length, | ||
el; | ||
while (i--) { | ||
if (els[i].href.indexOf('cssfile.custom') !== -1) done(); | ||
} | ||
} | ||
}); | ||
}); | ||
it('should load external css files', function(done) { | ||
@@ -269,0 +308,0 @@ this.timeout(0); |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
354965
40
11980
324