Initial commit
This commit is contained in:
3
themes/keepit/node_modules/load-script/.npmignore
generated
vendored
Normal file
3
themes/keepit/node_modules/load-script/.npmignore
generated
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
components
|
||||
build
|
||||
node_modules
|
||||
12
themes/keepit/node_modules/load-script/.zuul.yml
generated
vendored
Normal file
12
themes/keepit/node_modules/load-script/.zuul.yml
generated
vendored
Normal file
@@ -0,0 +1,12 @@
|
||||
ui: mocha-qunit
|
||||
browsers:
|
||||
- name: chrome
|
||||
version: [oldest, latest]
|
||||
- name: firefox
|
||||
version: [oldest, latest]
|
||||
- name: opera
|
||||
version: latest
|
||||
- name: safari
|
||||
version: oldest..latest
|
||||
- name: ie
|
||||
version: oldest..latest
|
||||
7
themes/keepit/node_modules/load-script/Makefile
generated
vendored
Normal file
7
themes/keepit/node_modules/load-script/Makefile
generated
vendored
Normal file
@@ -0,0 +1,7 @@
|
||||
build: index.js
|
||||
@component build --dev
|
||||
|
||||
clean:
|
||||
rm -fr build
|
||||
|
||||
.PHONY: clean
|
||||
58
themes/keepit/node_modules/load-script/Readme.md
generated
vendored
Normal file
58
themes/keepit/node_modules/load-script/Readme.md
generated
vendored
Normal file
@@ -0,0 +1,58 @@
|
||||
# load-script
|
||||
|
||||
Dynamic script loading.
|
||||
|
||||
## Installation
|
||||
|
||||
via component
|
||||
|
||||
```
|
||||
$ component install eldargab/load-script
|
||||
```
|
||||
|
||||
via npm
|
||||
|
||||
```
|
||||
$ npm install load-script
|
||||
```
|
||||
|
||||
## API
|
||||
`load-script` appends a `script` node to the `<head>` element in the dom.
|
||||
|
||||
`require('load-script')` returns a function of the following interface: `function(url[, opts][, cb]) {}`
|
||||
|
||||
### url
|
||||
Any url that you would like to load. May be absolute or relative.
|
||||
|
||||
### [, opts]
|
||||
A map of options. Here are the currently supported options:
|
||||
|
||||
* `async` - A boolean value used for `script.async`. By default this is `true`.
|
||||
* `attrs` - A map of attributes to set on the `script` node before appending it to the DOM. By default this is empty.
|
||||
* `charset` - A string value used for `script.charset`. By default this is `utf8`.
|
||||
* `text` - A string of text to append to the `script` node before it is appended to the DOM. By default this is empty.
|
||||
* `type` - A string used for `script.type`. By default this is `text/javascript`.
|
||||
|
||||
### [, cb]
|
||||
A callback function of the following interface: `function(err, script) {}` where `err` is an error if any occurred and `script` is the `script` node that was appended to the DOM.
|
||||
|
||||
## Example Usage
|
||||
|
||||
```javascript
|
||||
var load = require('load-script')
|
||||
|
||||
load('foo.js', function (err, script) {
|
||||
if (err) {
|
||||
// print useful message
|
||||
}
|
||||
else {
|
||||
console.log(script.src);// Prints 'foo'.js'
|
||||
// use script
|
||||
// note that in IE8 and below loading error wouldn't be reported
|
||||
}
|
||||
})
|
||||
```
|
||||
|
||||
## License
|
||||
|
||||
MIT
|
||||
11
themes/keepit/node_modules/load-script/component.json
generated
vendored
Normal file
11
themes/keepit/node_modules/load-script/component.json
generated
vendored
Normal file
@@ -0,0 +1,11 @@
|
||||
{
|
||||
"name": "load-script",
|
||||
"repo": "eldargab/load-script",
|
||||
"description": "Dynamic script loading",
|
||||
"version": "0.0.5",
|
||||
"keywords": ["script", "load"],
|
||||
"license": "MIT",
|
||||
"scripts": [
|
||||
"index.js"
|
||||
]
|
||||
}
|
||||
65
themes/keepit/node_modules/load-script/index.js
generated
vendored
Normal file
65
themes/keepit/node_modules/load-script/index.js
generated
vendored
Normal file
@@ -0,0 +1,65 @@
|
||||
|
||||
module.exports = function load (src, opts, cb) {
|
||||
var head = document.head || document.getElementsByTagName('head')[0]
|
||||
var script = document.createElement('script')
|
||||
|
||||
if (typeof opts === 'function') {
|
||||
cb = opts
|
||||
opts = {}
|
||||
}
|
||||
|
||||
opts = opts || {}
|
||||
cb = cb || function() {}
|
||||
|
||||
script.type = opts.type || 'text/javascript'
|
||||
script.charset = opts.charset || 'utf8';
|
||||
script.async = 'async' in opts ? !!opts.async : true
|
||||
script.src = src
|
||||
|
||||
if (opts.attrs) {
|
||||
setAttributes(script, opts.attrs)
|
||||
}
|
||||
|
||||
if (opts.text) {
|
||||
script.text = '' + opts.text
|
||||
}
|
||||
|
||||
var onend = 'onload' in script ? stdOnEnd : ieOnEnd
|
||||
onend(script, cb)
|
||||
|
||||
// some good legacy browsers (firefox) fail the 'in' detection above
|
||||
// so as a fallback we always set onload
|
||||
// old IE will ignore this and new IE will set onload
|
||||
if (!script.onload) {
|
||||
stdOnEnd(script, cb);
|
||||
}
|
||||
|
||||
head.appendChild(script)
|
||||
}
|
||||
|
||||
function setAttributes(script, attrs) {
|
||||
for (var attr in attrs) {
|
||||
script.setAttribute(attr, attrs[attr]);
|
||||
}
|
||||
}
|
||||
|
||||
function stdOnEnd (script, cb) {
|
||||
script.onload = function () {
|
||||
this.onerror = this.onload = null
|
||||
cb(null, script)
|
||||
}
|
||||
script.onerror = function () {
|
||||
// this.onload = null here is necessary
|
||||
// because even IE9 works not like others
|
||||
this.onerror = this.onload = null
|
||||
cb(new Error('Failed to load ' + this.src), script)
|
||||
}
|
||||
}
|
||||
|
||||
function ieOnEnd (script, cb) {
|
||||
script.onreadystatechange = function () {
|
||||
if (this.readyState != 'complete' && this.readyState != 'loaded') return
|
||||
this.onreadystatechange = null
|
||||
cb(null, script) // there is no way to catch loading errors in IE8
|
||||
}
|
||||
}
|
||||
22
themes/keepit/node_modules/load-script/package.json
generated
vendored
Normal file
22
themes/keepit/node_modules/load-script/package.json
generated
vendored
Normal file
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"name": "load-script",
|
||||
"description": "Dynamic script loading for browser",
|
||||
"version": "1.0.0",
|
||||
"keywords": [
|
||||
"browser",
|
||||
"script",
|
||||
"load"
|
||||
],
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "git://github.com/eldargab/load-script"
|
||||
},
|
||||
"scripts": {
|
||||
"test": "zuul -- test/index.js",
|
||||
"test-local": "zuul --local 9005 -- test/index.js"
|
||||
},
|
||||
"devDependencies": {
|
||||
"zuul": "~2.1.0"
|
||||
},
|
||||
"license": "MIT"
|
||||
}
|
||||
1
themes/keepit/node_modules/load-script/test/hello.js
generated
vendored
Normal file
1
themes/keepit/node_modules/load-script/test/hello.js
generated
vendored
Normal file
@@ -0,0 +1 @@
|
||||
log('Hello world')
|
||||
90
themes/keepit/node_modules/load-script/test/index.js
generated
vendored
Normal file
90
themes/keepit/node_modules/load-script/test/index.js
generated
vendored
Normal file
@@ -0,0 +1,90 @@
|
||||
var assert = require('assert');
|
||||
var load = require('../')
|
||||
|
||||
var last_msg = undefined;
|
||||
log = function(msg) {
|
||||
last_msg = msg;
|
||||
}
|
||||
|
||||
test('success', function(done) {
|
||||
load('test/hello.js', function (err) {
|
||||
assert.ifError(err);
|
||||
assert.equal(last_msg, 'Hello world');
|
||||
last_msg = undefined;
|
||||
done();
|
||||
})
|
||||
});
|
||||
|
||||
test('opts.async', function(done) {
|
||||
load('test/hello.js', {async: false}, function(err, script) {
|
||||
assert.ifError(err);
|
||||
assert.equal(script.async, false);
|
||||
done();
|
||||
})
|
||||
});
|
||||
|
||||
test('opts.attrs', function(done) {
|
||||
load('test/hello.js', {attrs: {foo: 'boo'}}, function(err, script) {
|
||||
assert.ifError(err);
|
||||
assert.equal(script.getAttribute('foo'), 'boo');
|
||||
done();
|
||||
})
|
||||
});
|
||||
|
||||
test('opts.charset', function(done) {
|
||||
load('test/hello.js', {charset: 'iso-8859-1'}, function(err, script) {
|
||||
assert.ifError(err);
|
||||
assert.equal(script.charset, 'iso-8859-1');
|
||||
done();
|
||||
})
|
||||
});
|
||||
|
||||
test('opts.text', function(done) {
|
||||
load('test/hello.js', {text: 'foo=5;'}, function(err, script) {
|
||||
assert.ifError(err);
|
||||
done();
|
||||
})
|
||||
});
|
||||
|
||||
test('opts.type', function(done) {
|
||||
load('test/hello.js', {type: 'text/ecmascript'}, function(err, script) {
|
||||
assert.ifError(err);
|
||||
assert.equal(script.type, 'text/ecmascript');
|
||||
done();
|
||||
})
|
||||
});
|
||||
|
||||
test('no exist', function(done) {
|
||||
load('unexistent.js', function (err, legacy) {
|
||||
if (!legacy) {
|
||||
assert.ok(err);
|
||||
}
|
||||
|
||||
var tid = setTimeout(function() {
|
||||
done();
|
||||
}, 200);
|
||||
|
||||
// some browsers will also throw as well as report erro
|
||||
var old = window.onerror;
|
||||
window.onerror = function(msg, file, line) {
|
||||
if (msg !== 'Error loading script') {
|
||||
assert(false);
|
||||
}
|
||||
window.onerror = old;
|
||||
clearTimeout(tid);
|
||||
done();
|
||||
};
|
||||
})
|
||||
});
|
||||
|
||||
test('throw', function(done) {
|
||||
var old = window.onerror;
|
||||
// silence the script error
|
||||
window.onerror = function() {};
|
||||
load('test/throw.js', function (err) {
|
||||
assert.ifError(err);
|
||||
window.onerror = old;
|
||||
done();
|
||||
})
|
||||
});
|
||||
|
||||
1
themes/keepit/node_modules/load-script/test/throw.js
generated
vendored
Normal file
1
themes/keepit/node_modules/load-script/test/throw.js
generated
vendored
Normal file
@@ -0,0 +1 @@
|
||||
throw new Error('Hello error')
|
||||
Reference in New Issue
Block a user