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 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
- * Node.js `>= 14.x`
7
-
8
- ## Installation
9
- ```shell
10
- npm install dopant --save
11
- ```
12
-
13
- ### Usage
14
- ```javascript
15
- import dopant from 'dopant';
16
-
17
- dopant([
18
- '//somewhe.re/assets/css/layout.css',
19
- '//somewhe.re/assets/js/main.cjs',
20
- ]).then(() => console.log('pow!'));
21
-
22
- dopant('//somewhe.re/assets/js/lib.js')
23
- .then(() => dopant('//somewhe.re/assets/js/main.js'))
24
- .finally(() => console.log('pow!'));
25
-
26
- dopant('//somewhe.re/assets/js/index.mjs')
27
- .then(() => console.log('pow!'));
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["default"] = void 0;
4
+ exports.default = void 0;
5
5
 
6
- var _default = function _default(deps) {
7
- if (!deps) {
8
- throw new Error('Oops! Missing arguments');
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 = deps[i].split('?')[0].substr((~-deps[i].lastIndexOf('.') >>> 0) + 2).toLowerCase();
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 = deps[i];
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 = deps[i];
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 = deps[i];
34
+ el.src = args[i];
32
35
  el.type = 'module';
33
36
  } else {
34
- deps[i] = "Unsupported file type or extension: " + deps[i];
35
- console.warn(deps[i]);
37
+ args[i] = "Unsupported file type or extension: " + args[i];
38
+ console.warn(args[i]);
36
39
  }
37
40
 
38
- deps[i] = el && new Promise(function (resolve, reject) {
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 = deps.length - 1; i <= j; i++) {
54
+ for (var i = 0, j = args.length - 1; i <= j; i++) {
52
55
  _loop(i, j);
53
56
  }
54
57
 
55
- return Promise.all(deps);
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["default"] = _default;
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": "http://github.com/bricss"
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.12.1",
13
- "@babel/core": "^7.12.3",
14
- "@babel/eslint-parser": "^7.12.1",
15
- "@babel/plugin-syntax-top-level-await": "^7.12.1",
16
- "@babel/plugin-transform-runtime": "^7.12.1",
17
- "@babel/preset-env": "^7.12.1",
18
- "c8": "^7.3.5",
19
- "eslint": "^7.12.0",
20
- "eslint-config-ultra-refined": "^1.0.28",
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 src --ext .cjs,.js,.mjs",
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.0.2"
54
+ "version": "2.1.1"
57
55
  }
package/src/index.mjs CHANGED
@@ -1,38 +1,38 @@
1
- export default (deps) => {
2
- if (!deps) {
3
- throw new Error('Oops! Missing arguments');
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 = deps.length - 1; i <= j; i++) {
11
- const ext = deps[i]
10
+ for (let i = 0, j = args.length - 1; i <= j; i++) {
11
+ const ext = args[i]
12
12
  .split('?')[0]
13
- .substr((~-deps[i].lastIndexOf('.') >>> 0) + 2)
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 = deps[i];
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 = deps[i];
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 = deps[i];
28
+ el.src = args[i];
29
29
  el.type = 'module';
30
30
  } else {
31
- deps[i] = `Unsupported file type or extension: ${ deps[i] }`;
32
- console.warn(deps[i]);
31
+ args[i] = `Unsupported file type or extension: ${ args[i] }`;
32
+ console.warn(args[i]);
33
33
  }
34
34
 
35
- deps[i] = el && new Promise((resolve, reject) => {
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.all(deps);
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
  };