dopant 2.0.2 → 2.1.1
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 -28
- package/dist/index.js +24 -16
- package/package.json +13 -15
- package/src/index.mjs +22 -15
package/README.md
CHANGED
|
@@ -1,28 +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
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
dopant('//somewhe.re/assets/js/
|
|
27
|
-
.
|
|
28
|
-
|
|
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
|
+
```
|
package/dist/index.js
CHANGED
|
@@ -1,41 +1,44 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
exports.__esModule = true;
|
|
4
|
-
exports
|
|
4
|
+
exports.default = void 0;
|
|
5
5
|
|
|
6
|
-
var _default = function _default(
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
} else {
|
|
10
|
-
deps = Array.isArray(deps) ? deps : [deps];
|
|
6
|
+
var _default = function _default() {
|
|
7
|
+
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
8
|
+
args[_key] = arguments[_key];
|
|
11
9
|
}
|
|
12
10
|
|
|
11
|
+
if (!args.length) {
|
|
12
|
+
throw new TypeError('Missing required arguments');
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
args = args.flat();
|
|
13
16
|
var _document = document,
|
|
14
17
|
head = _document.head;
|
|
15
18
|
|
|
16
19
|
var _loop = function _loop(i, j) {
|
|
17
|
-
var ext =
|
|
20
|
+
var ext = args[i].split('?')[0].substr((~-args[i].lastIndexOf('.') >>> 0) + 2).toLowerCase();
|
|
18
21
|
var el = void 0;
|
|
19
22
|
|
|
20
23
|
if (ext === 'css') {
|
|
21
24
|
el = document.createElement('link');
|
|
22
|
-
el.href =
|
|
25
|
+
el.href = args[i];
|
|
23
26
|
el.rel = 'stylesheet';
|
|
24
27
|
} else if (ext.match(/^c?js/)) {
|
|
25
28
|
el = document.createElement('script');
|
|
26
29
|
el.async = true;
|
|
27
|
-
el.src =
|
|
30
|
+
el.src = args[i];
|
|
28
31
|
} else if (ext === 'mjs') {
|
|
29
32
|
el = document.createElement('script');
|
|
30
33
|
el.async = true;
|
|
31
|
-
el.src =
|
|
34
|
+
el.src = args[i];
|
|
32
35
|
el.type = 'module';
|
|
33
36
|
} else {
|
|
34
|
-
|
|
35
|
-
console.warn(
|
|
37
|
+
args[i] = "Unsupported file type or extension: " + args[i];
|
|
38
|
+
console.warn(args[i]);
|
|
36
39
|
}
|
|
37
40
|
|
|
38
|
-
|
|
41
|
+
args[i] = el && new Promise(function (resolve, reject) {
|
|
39
42
|
el.onerror = function (ev) {
|
|
40
43
|
reject((head.removeChild(ev.target), ev));
|
|
41
44
|
};
|
|
@@ -48,11 +51,16 @@ var _default = function _default(deps) {
|
|
|
48
51
|
});
|
|
49
52
|
};
|
|
50
53
|
|
|
51
|
-
for (var i = 0, j =
|
|
54
|
+
for (var i = 0, j = args.length - 1; i <= j; i++) {
|
|
52
55
|
_loop(i, j);
|
|
53
56
|
}
|
|
54
57
|
|
|
55
|
-
return Promise.
|
|
58
|
+
return Promise.allSettled(args).then(function (results) {
|
|
59
|
+
return results.reduce(function (acc, val) {
|
|
60
|
+
val.status === 'rejected' ? console.error(val.reason) : acc.push(val.value);
|
|
61
|
+
return acc;
|
|
62
|
+
}, []);
|
|
63
|
+
});
|
|
56
64
|
};
|
|
57
65
|
|
|
58
|
-
exports
|
|
66
|
+
exports.default = _default;
|
package/package.json
CHANGED
|
@@ -2,24 +2,22 @@
|
|
|
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.12
|
|
14
|
-
"@babel/eslint-parser": "^7.
|
|
15
|
-
"@babel/
|
|
16
|
-
"
|
|
17
|
-
"
|
|
18
|
-
"
|
|
19
|
-
"
|
|
20
|
-
"
|
|
21
|
-
"mocha": "^8.2.0",
|
|
22
|
-
"playwright-chromium": "^1.5.2"
|
|
12
|
+
"@babel/cli": "^7.16.8",
|
|
13
|
+
"@babel/core": "^7.16.12",
|
|
14
|
+
"@babel/eslint-parser": "^7.16.5",
|
|
15
|
+
"@babel/preset-env": "^7.16.11",
|
|
16
|
+
"c8": "^7.11.0",
|
|
17
|
+
"eslint": "^8.7.0",
|
|
18
|
+
"eslint-config-ultra-refined": "^2.3.0",
|
|
19
|
+
"mocha": "^9.2.0",
|
|
20
|
+
"playwright-chromium": "^1.18.0"
|
|
23
21
|
},
|
|
24
22
|
"engines": {
|
|
25
23
|
"node": ">=14.x"
|
|
@@ -47,11 +45,11 @@
|
|
|
47
45
|
},
|
|
48
46
|
"scripts": {
|
|
49
47
|
"build": "rm -rf dist && npx babel src -d dist",
|
|
50
|
-
"lint": "eslint
|
|
48
|
+
"lint": "eslint . --ext .cjs,.js,.mjs",
|
|
51
49
|
"prepack": "npm run build",
|
|
52
50
|
"pretest": "rm -rf coverage",
|
|
53
|
-
"test": "mocha --exit",
|
|
51
|
+
"test": "mocha --exit --recursive",
|
|
54
52
|
"test:cover": "npm test && c8 report --reporter=lcov --reporter=text"
|
|
55
53
|
},
|
|
56
|
-
"version": "2.
|
|
54
|
+
"version": "2.1.1"
|
|
57
55
|
}
|
package/src/index.mjs
CHANGED
|
@@ -1,38 +1,38 @@
|
|
|
1
|
-
export default (
|
|
2
|
-
if (!
|
|
3
|
-
throw new
|
|
4
|
-
} else {
|
|
5
|
-
deps = Array.isArray(deps) ? deps : [deps];
|
|
1
|
+
export default (...args) => {
|
|
2
|
+
if (!args.length) {
|
|
3
|
+
throw new TypeError('Missing required arguments');
|
|
6
4
|
}
|
|
7
5
|
|
|
6
|
+
args = args.flat();
|
|
7
|
+
|
|
8
8
|
const { head } = document;
|
|
9
9
|
|
|
10
|
-
for (let i = 0, j =
|
|
11
|
-
const ext =
|
|
10
|
+
for (let i = 0, j = args.length - 1; i <= j; i++) {
|
|
11
|
+
const ext = args[i]
|
|
12
12
|
.split('?')[0]
|
|
13
|
-
.substr((~-
|
|
13
|
+
.substr((~-args[i].lastIndexOf('.') >>> 0) + 2)
|
|
14
14
|
.toLowerCase();
|
|
15
15
|
let el;
|
|
16
16
|
|
|
17
17
|
if (ext === 'css') {
|
|
18
18
|
el = document.createElement('link');
|
|
19
|
-
el.href =
|
|
19
|
+
el.href = args[i];
|
|
20
20
|
el.rel = 'stylesheet';
|
|
21
21
|
} else if (ext.match(/^c?js/)) {
|
|
22
22
|
el = document.createElement('script');
|
|
23
23
|
el.async = true;
|
|
24
|
-
el.src =
|
|
24
|
+
el.src = args[i];
|
|
25
25
|
} else if (ext === 'mjs') {
|
|
26
26
|
el = document.createElement('script');
|
|
27
27
|
el.async = true;
|
|
28
|
-
el.src =
|
|
28
|
+
el.src = args[i];
|
|
29
29
|
el.type = 'module';
|
|
30
30
|
} else {
|
|
31
|
-
|
|
32
|
-
console.warn(
|
|
31
|
+
args[i] = `Unsupported file type or extension: ${ args[i] }`;
|
|
32
|
+
console.warn(args[i]);
|
|
33
33
|
}
|
|
34
34
|
|
|
35
|
-
|
|
35
|
+
args[i] = el && new Promise((resolve, reject) => {
|
|
36
36
|
el.onerror = (ev) => {
|
|
37
37
|
reject((head.removeChild(ev.target), ev));
|
|
38
38
|
};
|
|
@@ -45,5 +45,12 @@ export default (deps) => {
|
|
|
45
45
|
});
|
|
46
46
|
}
|
|
47
47
|
|
|
48
|
-
return Promise.
|
|
48
|
+
return Promise.allSettled(args)
|
|
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
|
+
}, []));
|
|
49
56
|
};
|