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 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
- * Node.js `>= 14.13.x`
7
-
8
- ## Installation
9
- ```shell
10
- npm install dopant --save
11
- ```
12
-
13
- ### Usage
14
- ```javascript
15
- dopant('//somewhe.re/assets/js/augment.js')
16
- .then(dopant.bind(null, '//somewhe.re/assets/js/main.js'))
17
- .then(function() {
18
- console.log('POW!');
19
- });
20
-
21
- dopant([
22
- '//somewhe.re/assets/css/layout.css',
23
- '//somewhe.re/assets/js/main.js'
24
- ]).then(function() {
25
- console.log('POW!');
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 === 'js') {
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
- console.warn('Unsupported file type or extension:', deps[i]);
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.all(deps);
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": "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.11.6",
13
- "@babel/core": "^7.11.6",
14
- "@babel/eslint-parser": "^7.11.5",
15
- "@babel/plugin-transform-modules-commonjs": "^7.10.4",
16
- "@babel/plugin-transform-runtime": "^7.11.5",
17
- "@babel/preset-env": "^7.11.5",
18
- "eslint": "^7.10.0",
19
- "eslint-config-ultra-refined": "^1.0.27"
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.13.0"
24
+ "node": ">=14.x"
23
25
  },
24
26
  "exports": {
25
- "import": "./src/dopant.mjs",
26
- "require": "./dist/dopant.js"
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/dopant.js",
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 ./src --ext .cjs,.js,.mjs",
48
+ "build": "rm -rf dist && npx babel src -d dist",
49
+ "lint": "eslint . --ext .cjs,.js,.mjs",
48
50
  "prepack": "npm run build",
49
- "test": "echo \"Error: no test specified\" && exit 1"
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.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 === 'js') {
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
- console.warn('Unsupported file type or extension:', deps[i]);
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.all(deps);
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