UNPKG

1.11 kBJavaScriptView Raw
1// Original source [partition-bundle](https://github.com/arian/partition-bundle/blob/master/lib/loadScript.js)
2export default function load(file) {
3 return new Promise((resolve, reject) => {
4 if (typeof file === 'undefined') {
5 return resolve()
6 }
7
8 const resource = document.createElement('script')
9 let done = false
10
11 function ready(err) {
12 done = true
13 resource.onload = resource.onerror = resource.onreadystatechange = null
14 clearTimeout(timer)
15 err ? reject(err) : resolve()
16 }
17
18 resource.onload = resource.onreadystatechange = e => {
19 if (
20 !(done &&
21 (!this.readyState ||
22 this.readyState === 'complete' ||
23 this.readyState === 'loaded'))
24 ) {
25 ready(null)
26 }
27 }
28
29 resource.onerror = error => {
30 if (!done) {
31 ready(error || new Error('Could not load file'))
32 }
33 }
34
35 const timer = setTimeout(() => {
36 ready(new Error(`Resource ${file} loading timed-out`))
37 }, 3e4)
38
39 resource.src = file
40 document.getElementsByTagName('head')[0].appendChild(resource)
41 })
42}