dopant 2.0.0 → 2.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +31 -27
- package/dist/{dopant.js → index.js} +19 -8
- package/package.json +21 -17
- package/src/{dopant.mjs → index.mjs} +21 -8
- package/src/.keep +0 -0
package/README.md
CHANGED
|
@@ -1,27 +1,31 @@
|
|
|
1
|
-
The aerogel-weight & dead-simple resource loader 🚚
|
|
2
|
-
|
|
3
|
-
This package provides **lightweight** dynamic resource loader for the web browsers.
|
|
4
|
-
|
|
5
|
-
## Prerequisites
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
```
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
'//somewhe.re/assets/
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
1
|
+
The aerogel-weight & dead-simple resource loader 🚚
|
|
2
|
+
---
|
|
3
|
+
This package provides **lightweight** dynamic resource loader for the web browsers.
|
|
4
|
+
|
|
5
|
+
## Prerequisites
|
|
6
|
+
|
|
7
|
+
* Node.js `>= 14.x`
|
|
8
|
+
|
|
9
|
+
## Installation
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
npm install dopant --save
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
### Usage
|
|
16
|
+
|
|
17
|
+
```javascript
|
|
18
|
+
import dopant from 'dopant';
|
|
19
|
+
|
|
20
|
+
dopant([
|
|
21
|
+
'//somewhe.re/assets/css/layout.css',
|
|
22
|
+
'//somewhe.re/assets/js/main.cjs',
|
|
23
|
+
]).then(() => console.log('pow!'));
|
|
24
|
+
|
|
25
|
+
dopant('//somewhe.re/assets/js/lib.js')
|
|
26
|
+
.then(() => dopant('//somewhe.re/assets/js/main.js'))
|
|
27
|
+
.finally(() => console.log('pow!'));
|
|
28
|
+
|
|
29
|
+
dopant('//somewhe.re/assets/js/index.mjs')
|
|
30
|
+
.then(() => console.log('pow!'));
|
|
31
|
+
```
|
|
@@ -21,23 +21,29 @@ var _default = function _default(deps) {
|
|
|
21
21
|
el = document.createElement('link');
|
|
22
22
|
el.href = deps[i];
|
|
23
23
|
el.rel = 'stylesheet';
|
|
24
|
-
} else if (ext
|
|
24
|
+
} else if (ext.match(/^c?js/)) {
|
|
25
25
|
el = document.createElement('script');
|
|
26
26
|
el.async = true;
|
|
27
27
|
el.src = deps[i];
|
|
28
|
+
} else if (ext === 'mjs') {
|
|
29
|
+
el = document.createElement('script');
|
|
30
|
+
el.async = true;
|
|
31
|
+
el.src = deps[i];
|
|
32
|
+
el.type = 'module';
|
|
28
33
|
} else {
|
|
29
|
-
|
|
34
|
+
deps[i] = "Unsupported file type or extension: " + deps[i];
|
|
35
|
+
console.warn(deps[i]);
|
|
30
36
|
}
|
|
31
37
|
|
|
32
|
-
deps[i] = new Promise(function (resolve, reject) {
|
|
33
|
-
el.onload = function (ev) {
|
|
34
|
-
resolve((ev.target.onload = ev.target.onerror = undefined, ev));
|
|
35
|
-
};
|
|
36
|
-
|
|
38
|
+
deps[i] = el && new Promise(function (resolve, reject) {
|
|
37
39
|
el.onerror = function (ev) {
|
|
38
40
|
reject((head.removeChild(ev.target), ev));
|
|
39
41
|
};
|
|
40
42
|
|
|
43
|
+
el.onload = function (ev) {
|
|
44
|
+
resolve((ev.target.onload = ev.target.onerror = void 0, ev));
|
|
45
|
+
};
|
|
46
|
+
|
|
41
47
|
head.appendChild(el);
|
|
42
48
|
});
|
|
43
49
|
};
|
|
@@ -46,7 +52,12 @@ var _default = function _default(deps) {
|
|
|
46
52
|
_loop(i, j);
|
|
47
53
|
}
|
|
48
54
|
|
|
49
|
-
return Promise.
|
|
55
|
+
return Promise.allSettled(deps).then(function (results) {
|
|
56
|
+
return results.reduce(function (acc, val) {
|
|
57
|
+
val.status === 'rejected' ? console.error(val.reason) : acc.push(val.value);
|
|
58
|
+
return acc;
|
|
59
|
+
}, []);
|
|
60
|
+
});
|
|
50
61
|
};
|
|
51
62
|
|
|
52
63
|
exports["default"] = _default;
|
package/package.json
CHANGED
|
@@ -2,28 +2,30 @@
|
|
|
2
2
|
"author": {
|
|
3
3
|
"name": "Yehor Sergeenko",
|
|
4
4
|
"email": "yehor.sergeenko@gmail.com",
|
|
5
|
-
"url": "
|
|
5
|
+
"url": "https://github.com/bricss"
|
|
6
6
|
},
|
|
7
7
|
"bugs": {
|
|
8
8
|
"url": "https://github.com/bricss/dopant/issues"
|
|
9
9
|
},
|
|
10
10
|
"description": "The aerogel-weight & dead-simple resource loader 🚚",
|
|
11
11
|
"devDependencies": {
|
|
12
|
-
"@babel/cli": "^7.
|
|
13
|
-
"@babel/core": "^7.
|
|
14
|
-
"@babel/eslint-parser": "^7.
|
|
15
|
-
"@babel/plugin-transform-
|
|
16
|
-
"@babel/
|
|
17
|
-
"
|
|
18
|
-
"eslint": "^
|
|
19
|
-
"eslint-config-ultra-refined": "^1.0
|
|
12
|
+
"@babel/cli": "^7.15.7",
|
|
13
|
+
"@babel/core": "^7.15.8",
|
|
14
|
+
"@babel/eslint-parser": "^7.15.8",
|
|
15
|
+
"@babel/plugin-transform-runtime": "^7.15.8",
|
|
16
|
+
"@babel/preset-env": "^7.15.8",
|
|
17
|
+
"c8": "^7.10.0",
|
|
18
|
+
"eslint": "^8.1.0",
|
|
19
|
+
"eslint-config-ultra-refined": "^2.1.0",
|
|
20
|
+
"mocha": "^9.1.3",
|
|
21
|
+
"playwright-chromium": "^1.16.1"
|
|
20
22
|
},
|
|
21
23
|
"engines": {
|
|
22
|
-
"node": ">=14.
|
|
24
|
+
"node": ">=14.x"
|
|
23
25
|
},
|
|
24
26
|
"exports": {
|
|
25
|
-
"import": "./src/
|
|
26
|
-
"require": "./dist/
|
|
27
|
+
"import": "./src/index.mjs",
|
|
28
|
+
"require": "./dist/index.js"
|
|
27
29
|
},
|
|
28
30
|
"files": [
|
|
29
31
|
"dist",
|
|
@@ -36,17 +38,19 @@
|
|
|
36
38
|
"resource"
|
|
37
39
|
],
|
|
38
40
|
"license": "MIT",
|
|
39
|
-
"main": "dist/
|
|
41
|
+
"main": "./dist/index.js",
|
|
40
42
|
"name": "dopant",
|
|
41
43
|
"repository": {
|
|
42
44
|
"type": "git",
|
|
43
45
|
"url": "https://github.com/bricss/dopant.git"
|
|
44
46
|
},
|
|
45
47
|
"scripts": {
|
|
46
|
-
"build": "npx babel src -d dist",
|
|
47
|
-
"lint": "eslint
|
|
48
|
+
"build": "rm -rf dist && npx babel src -d dist",
|
|
49
|
+
"lint": "eslint . --ext .cjs,.js,.mjs",
|
|
48
50
|
"prepack": "npm run build",
|
|
49
|
-
"
|
|
51
|
+
"pretest": "rm -rf coverage",
|
|
52
|
+
"test": "mocha --exit --recursive",
|
|
53
|
+
"test:cover": "npm test && c8 report --reporter=lcov --reporter=text"
|
|
50
54
|
},
|
|
51
|
-
"version": "2.0.
|
|
55
|
+
"version": "2.0.4"
|
|
52
56
|
}
|
|
@@ -18,26 +18,39 @@ export default (deps) => {
|
|
|
18
18
|
el = document.createElement('link');
|
|
19
19
|
el.href = deps[i];
|
|
20
20
|
el.rel = 'stylesheet';
|
|
21
|
-
} else if (ext
|
|
21
|
+
} else if (ext.match(/^c?js/)) {
|
|
22
22
|
el = document.createElement('script');
|
|
23
23
|
el.async = true;
|
|
24
24
|
el.src = deps[i];
|
|
25
|
+
} else if (ext === 'mjs') {
|
|
26
|
+
el = document.createElement('script');
|
|
27
|
+
el.async = true;
|
|
28
|
+
el.src = deps[i];
|
|
29
|
+
el.type = 'module';
|
|
25
30
|
} else {
|
|
26
|
-
|
|
31
|
+
deps[i] = `Unsupported file type or extension: ${ deps[i] }`;
|
|
32
|
+
console.warn(deps[i]);
|
|
27
33
|
}
|
|
28
34
|
|
|
29
|
-
deps[i] = new Promise((resolve, reject) => {
|
|
30
|
-
el.onload = (ev) => {
|
|
31
|
-
resolve((ev.target.onload = ev.target.onerror = undefined, ev));
|
|
32
|
-
};
|
|
33
|
-
|
|
35
|
+
deps[i] = el && new Promise((resolve, reject) => {
|
|
34
36
|
el.onerror = (ev) => {
|
|
35
37
|
reject((head.removeChild(ev.target), ev));
|
|
36
38
|
};
|
|
37
39
|
|
|
40
|
+
el.onload = (ev) => {
|
|
41
|
+
resolve((ev.target.onload = ev.target.onerror = void 0, ev));
|
|
42
|
+
};
|
|
43
|
+
|
|
38
44
|
head.appendChild(el);
|
|
39
45
|
});
|
|
40
46
|
}
|
|
41
47
|
|
|
42
|
-
return Promise.
|
|
48
|
+
return Promise.allSettled(deps)
|
|
49
|
+
.then((results) => results.reduce((acc, val) => {
|
|
50
|
+
val.status === 'rejected'
|
|
51
|
+
? console.error(val.reason)
|
|
52
|
+
: acc.push(val.value);
|
|
53
|
+
|
|
54
|
+
return acc;
|
|
55
|
+
}, []));
|
|
43
56
|
};
|
package/src/.keep
DELETED
|
File without changes
|