From 26105034da4fcce7ac883c899d781f016559310d Mon Sep 17 00:00:00 2001 From: ruki Date: Thu, 8 Nov 2018 00:38:48 +0800 Subject: switch to vuepress --- node_modules/load-script/.npmignore | 3 ++ node_modules/load-script/.zuul.yml | 12 +++++ node_modules/load-script/Makefile | 7 +++ node_modules/load-script/Readme.md | 58 +++++++++++++++++++++ node_modules/load-script/component.json | 11 ++++ node_modules/load-script/index.js | 65 ++++++++++++++++++++++++ node_modules/load-script/package.json | 22 ++++++++ node_modules/load-script/test/hello.js | 1 + node_modules/load-script/test/index.js | 90 +++++++++++++++++++++++++++++++++ node_modules/load-script/test/throw.js | 1 + 10 files changed, 270 insertions(+) create mode 100644 node_modules/load-script/.npmignore create mode 100644 node_modules/load-script/.zuul.yml create mode 100644 node_modules/load-script/Makefile create mode 100644 node_modules/load-script/Readme.md create mode 100644 node_modules/load-script/component.json create mode 100644 node_modules/load-script/index.js create mode 100644 node_modules/load-script/package.json create mode 100644 node_modules/load-script/test/hello.js create mode 100644 node_modules/load-script/test/index.js create mode 100644 node_modules/load-script/test/throw.js (limited to 'node_modules/load-script') diff --git a/node_modules/load-script/.npmignore b/node_modules/load-script/.npmignore new file mode 100644 index 00000000..665aa219 --- /dev/null +++ b/node_modules/load-script/.npmignore @@ -0,0 +1,3 @@ +components +build +node_modules diff --git a/node_modules/load-script/.zuul.yml b/node_modules/load-script/.zuul.yml new file mode 100644 index 00000000..46c25540 --- /dev/null +++ b/node_modules/load-script/.zuul.yml @@ -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 diff --git a/node_modules/load-script/Makefile b/node_modules/load-script/Makefile new file mode 100644 index 00000000..154bf785 --- /dev/null +++ b/node_modules/load-script/Makefile @@ -0,0 +1,7 @@ +build: index.js + @component build --dev + +clean: + rm -fr build + +.PHONY: clean diff --git a/node_modules/load-script/Readme.md b/node_modules/load-script/Readme.md new file mode 100644 index 00000000..86411052 --- /dev/null +++ b/node_modules/load-script/Readme.md @@ -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 `` 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 diff --git a/node_modules/load-script/component.json b/node_modules/load-script/component.json new file mode 100644 index 00000000..ee7f5612 --- /dev/null +++ b/node_modules/load-script/component.json @@ -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" + ] +} diff --git a/node_modules/load-script/index.js b/node_modules/load-script/index.js new file mode 100644 index 00000000..667b9193 --- /dev/null +++ b/node_modules/load-script/index.js @@ -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 + } +} diff --git a/node_modules/load-script/package.json b/node_modules/load-script/package.json new file mode 100644 index 00000000..fccaf3b4 --- /dev/null +++ b/node_modules/load-script/package.json @@ -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" +} diff --git a/node_modules/load-script/test/hello.js b/node_modules/load-script/test/hello.js new file mode 100644 index 00000000..77a64c6b --- /dev/null +++ b/node_modules/load-script/test/hello.js @@ -0,0 +1 @@ +log('Hello world') diff --git a/node_modules/load-script/test/index.js b/node_modules/load-script/test/index.js new file mode 100644 index 00000000..a620764b --- /dev/null +++ b/node_modules/load-script/test/index.js @@ -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(); + }) +}); + diff --git a/node_modules/load-script/test/throw.js b/node_modules/load-script/test/throw.js new file mode 100644 index 00000000..a42d606f --- /dev/null +++ b/node_modules/load-script/test/throw.js @@ -0,0 +1 @@ +throw new Error('Hello error') -- cgit v1.2.3